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

150:                                              ; preds = %23
  %151 = load ptr, ptr %43, align 8, !tbaa !5
  %152 = load i32, ptr %151, align 4, !tbaa !9
  %153 = icmp eq i32 %152, -1
  br i1 %153, label %158, label %154

154:                                              ; preds = %150
  %155 = load ptr, ptr %45, align 8, !tbaa !5
  %156 = load i32, ptr %155, align 4, !tbaa !9
  %157 = icmp eq i32 %156, -1
  br label %158

158:                                              ; preds = %154, %150, %23
  %159 = phi i1 [ true, %150 ], [ true, %23 ], [ %157, %154 ]
  %160 = zext i1 %159 to i32
  store i32 %160, ptr %98, align 4, !tbaa !9
  store i32 1, ptr %51, align 4, !tbaa !9
  %161 = load ptr, ptr %27, align 8, !tbaa !5
  %162 = load i32, ptr %161, align 4, !tbaa !9
  %163 = mul nsw i32 %162, 24
  store i32 %163, ptr %52, align 4, !tbaa !9
  %164 = load i32, ptr %51, align 4, !tbaa !9
  %165 = load i32, ptr %52, align 4, !tbaa !9
  %166 = icmp sge i32 %164, %165
  br i1 %166, label %167, label %169

167:                                              ; preds = %158
  %168 = load i32, ptr %51, align 4, !tbaa !9
  br label %171

169:                                              ; preds = %158
  %170 = load i32, ptr %52, align 4, !tbaa !9
  br label %171

171:                                              ; preds = %169, %167
  %172 = phi i32 [ %168, %167 ], [ %170, %169 ]
  store i32 %172, ptr %93, align 4, !tbaa !9
  store i32 1, ptr %51, align 4, !tbaa !9
  %173 = load ptr, ptr %27, align 8, !tbaa !5
  %174 = load i32, ptr %173, align 4, !tbaa !9
  %175 = mul nsw i32 %174, 10
  store i32 %175, ptr %52, align 4, !tbaa !9
  %176 = load i32, ptr %51, align 4, !tbaa !9
  %177 = load i32, ptr %52, align 4, !tbaa !9
  %178 = icmp sge i32 %176, %177
  br i1 %178, label %179, label %181

179:                                              ; preds = %171
  %180 = load i32, ptr %51, align 4, !tbaa !9
  br label %183

181:                                              ; preds = %171
  %182 = load i32, ptr %52, align 4, !tbaa !9
  br label %183

183:                                              ; preds = %181, %179
  %184 = phi i32 [ %180, %179 ], [ %182, %181 ]
  store i32 %184, ptr %91, align 4, !tbaa !9
  store i32 1, ptr %51, align 4, !tbaa !9
  %185 = load ptr, ptr %27, align 8, !tbaa !5
  %186 = load i32, ptr %185, align 4, !tbaa !9
  %187 = shl i32 %186, 1
  store i32 %187, ptr %52, align 4, !tbaa !9
  %188 = load i32, ptr %51, align 4, !tbaa !9
  %189 = load i32, ptr %52, align 4, !tbaa !9
  %190 = icmp sge i32 %188, %189
  br i1 %190, label %191, label %193

191:                                              ; preds = %183
  %192 = load i32, ptr %51, align 4, !tbaa !9
  br label %195

193:                                              ; preds = %183
  %194 = load i32, ptr %52, align 4, !tbaa !9
  br label %195

195:                                              ; preds = %193, %191
  %196 = phi i32 [ %192, %191 ], [ %194, %193 ]
  store i32 %196, ptr %69, align 4, !tbaa !9
  %197 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 0, ptr %197, align 4, !tbaa !9
  %198 = load i32, ptr %71, align 4, !tbaa !9
  %199 = icmp ne i32 %198, 0
  br i1 %199, label %206, label %200

200:                                              ; preds = %195
  %201 = load ptr, ptr %24, align 8, !tbaa !5
  %202 = call i32 @lsame_(ptr noundef %201, ptr noundef @.str.1)
  %203 = icmp ne i32 %202, 0
  br i1 %203, label %206, label %204

204:                                              ; preds = %200
  %205 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -1, ptr %205, align 4, !tbaa !9
  br label %318

206:                                              ; preds = %200, %195
  %207 = load i32, ptr %74, align 4, !tbaa !9
  %208 = icmp ne i32 %207, 0
  br i1 %208, label %217, label %209

209:                                              ; preds = %206
  %210 = load i32, ptr %82, align 4, !tbaa !9
  %211 = icmp ne i32 %210, 0
  br i1 %211, label %217, label %212

212:                                              ; preds = %209
  %213 = load i32, ptr %75, align 4, !tbaa !9
  %214 = icmp ne i32 %213, 0
  br i1 %214, label %217, label %215

215:                                              ; preds = %212
  %216 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -2, ptr %216, align 4, !tbaa !9
  br label %317

217:                                              ; preds = %212, %209, %206
  %218 = load i32, ptr %70, align 4, !tbaa !9
  %219 = icmp ne i32 %218, 0
  br i1 %219, label %226, label %220

220:                                              ; preds = %217
  %221 = load ptr, ptr %26, align 8, !tbaa !5
  %222 = call i32 @lsame_(ptr noundef %221, ptr noundef @.str.6)
  %223 = icmp ne i32 %222, 0
  br i1 %223, label %226, label %224

224:                                              ; preds = %220
  %225 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -3, ptr %225, align 4, !tbaa !9
  br label %316

226:                                              ; preds = %220, %217
  %227 = load ptr, ptr %27, align 8, !tbaa !5
  %228 = load i32, ptr %227, align 4, !tbaa !9
  %229 = icmp slt i32 %228, 0
  br i1 %229, label %230, label %232

230:                                              ; preds = %226
  %231 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -4, ptr %231, align 4, !tbaa !9
  br label %315

232:                                              ; preds = %226
  %233 = load ptr, ptr %29, align 8, !tbaa !5
  %234 = load i32, ptr %233, align 4, !tbaa !9
  %235 = load ptr, ptr %27, align 8, !tbaa !5
  %236 = load i32, ptr %235, align 4, !tbaa !9
  %237 = icmp sge i32 1, %236
  br i1 %237, label %238, label %239

238:                                              ; preds = %232
  br label %242

239:                                              ; preds = %232
  %240 = load ptr, ptr %27, align 8, !tbaa !5
  %241 = load i32, ptr %240, align 4, !tbaa !9
  br label %242

242:                                              ; preds = %239, %238
  %243 = phi i32 [ 1, %238 ], [ %241, %239 ]
  %244 = icmp slt i32 %234, %243
  br i1 %244, label %245, label %247

245:                                              ; preds = %242
  %246 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -6, ptr %246, align 4, !tbaa !9
  br label %314

247:                                              ; preds = %242
  %248 = load i32, ptr %82, align 4, !tbaa !9
  %249 = icmp ne i32 %248, 0
  br i1 %249, label %250, label %263

250:                                              ; preds = %247
  %251 = load ptr, ptr %27, align 8, !tbaa !5
  %252 = load i32, ptr %251, align 4, !tbaa !9
  %253 = icmp sgt i32 %252, 0
  br i1 %253, label %254, label %262

254:                                              ; preds = %250
  %255 = load ptr, ptr %31, align 8, !tbaa !5
  %256 = load double, ptr %255, align 8, !tbaa !11
  %257 = load ptr, ptr %30, align 8, !tbaa !5
  %258 = load double, ptr %257, align 8, !tbaa !11
  %259 = fcmp ole double %256, %258
  br i1 %259, label %260, label %262

260:                                              ; preds = %254
  %261 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -8, ptr %261, align 4, !tbaa !9
  br label %262

262:                                              ; preds = %260, %254, %250
  br label %313

263:                                              ; preds = %247
  %264 = load i32, ptr %75, align 4, !tbaa !9
  %265 = icmp ne i32 %264, 0
  br i1 %265, label %266, label %312

266:                                              ; preds = %263
  %267 = load ptr, ptr %32, align 8, !tbaa !5
  %268 = load i32, ptr %267, align 4, !tbaa !9
  %269 = icmp slt i32 %268, 1
  br i1 %269, label %283, label %270

270:                                              ; preds = %266
  %271 = load ptr, ptr %32, align 8, !tbaa !5
  %272 = load i32, ptr %271, align 4, !tbaa !9
  %273 = load ptr, ptr %27, align 8, !tbaa !5
  %274 = load i32, ptr %273, align 4, !tbaa !9
  %275 = icmp sge i32 1, %274
  br i1 %275, label %276, label %277

276:                                              ; preds = %270
  br label %280

277:                                              ; preds = %270
  %278 = load ptr, ptr %27, align 8, !tbaa !5
  %279 = load i32, ptr %278, align 4, !tbaa !9
  br label %280

280:                                              ; preds = %277, %276
  %281 = phi i32 [ 1, %276 ], [ %279, %277 ]
  %282 = icmp sgt i32 %272, %281
  br i1 %282, label %283, label %285

283:                                              ; preds = %280, %266
  %284 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -9, ptr %284, align 4, !tbaa !9
  br label %311

285:                                              ; preds = %280
  %286 = load ptr, ptr %33, align 8, !tbaa !5
  %287 = load i32, ptr %286, align 4, !tbaa !9
  %288 = load ptr, ptr %27, align 8, !tbaa !5
  %289 = load i32, ptr %288, align 4, !tbaa !9
  %290 = load ptr, ptr %32, align 8, !tbaa !5
  %291 = load i32, ptr %290, align 4, !tbaa !9
  %292 = icmp sle i32 %289, %291
  br i1 %292, label %293, label %296

293:                                              ; preds = %285
  %294 = load ptr, ptr %27, align 8, !tbaa !5
  %295 = load i32, ptr %294, align 4, !tbaa !9
  br label %299

296:                                              ; preds = %285
  %297 = load ptr, ptr %32, align 8, !tbaa !5
  %298 = load i32, ptr %297, align 4, !tbaa !9
  br label %299

299:                                              ; preds = %296, %293
  %300 = phi i32 [ %295, %293 ], [ %298, %296 ]
  %301 = icmp slt i32 %287, %300
  br i1 %301, label %308, label %302

302:                                              ; preds = %299
  %303 = load ptr, ptr %33, align 8, !tbaa !5
  %304 = load i32, ptr %303, align 4, !tbaa !9
  %305 = load ptr, ptr %27, align 8, !tbaa !5
  %306 = load i32, ptr %305, align 4, !tbaa !9
  %307 = icmp sgt i32 %304, %306
  br i1 %307, label %308, label %310

308:                                              ; preds = %302, %299
  %309 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -10, ptr %309, align 4, !tbaa !9
  br label %310

310:                                              ; preds = %308, %302
  br label %311

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

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

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

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

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

316:                                              ; preds = %315, %224
  br label %317

317:                                              ; preds = %316, %215
  br label %318

318:                                              ; preds = %317, %204
  %319 = load ptr, ptr %46, align 8, !tbaa !5
  %320 = load i32, ptr %319, align 4, !tbaa !9
  %321 = icmp eq i32 %320, 0
  br i1 %321, label %322, label %338

322:                                              ; preds = %318
  %323 = load ptr, ptr %38, align 8, !tbaa !5
  %324 = load i32, ptr %323, align 4, !tbaa !9
  %325 = icmp slt i32 %324, 1
  br i1 %325, label %335, label %326

326:                                              ; preds = %322
  %327 = load i32, ptr %71, align 4, !tbaa !9
  %328 = icmp ne i32 %327, 0
  br i1 %328, label %329, label %337

329:                                              ; preds = %326
  %330 = load ptr, ptr %38, align 8, !tbaa !5
  %331 = load i32, ptr %330, align 4, !tbaa !9
  %332 = load ptr, ptr %27, align 8, !tbaa !5
  %333 = load i32, ptr %332, align 4, !tbaa !9
  %334 = icmp slt i32 %331, %333
  br i1 %334, label %335, label %337

335:                                              ; preds = %329, %322
  %336 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -15, ptr %336, align 4, !tbaa !9
  br label %337

337:                                              ; preds = %335, %329, %326
  br label %338

338:                                              ; preds = %337, %318
  %339 = load ptr, ptr %46, align 8, !tbaa !5
  %340 = load i32, ptr %339, align 4, !tbaa !9
  %341 = icmp eq i32 %340, 0
  br i1 %341, label %342, label %420

342:                                              ; preds = %338
  %343 = load ptr, ptr %26, align 8, !tbaa !5
  %344 = load ptr, ptr %27, align 8, !tbaa !5
  %345 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.7, ptr noundef %343, ptr noundef %344, ptr noundef @c_n1, ptr noundef @c_n1, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  store i32 %345, ptr %72, align 4, !tbaa !9
  %346 = load i32, ptr %72, align 4, !tbaa !9
  store i32 %346, ptr %51, align 4, !tbaa !9
  %347 = load ptr, ptr %26, align 8, !tbaa !5
  %348 = load ptr, ptr %27, align 8, !tbaa !5
  %349 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.8, ptr noundef %347, ptr noundef %348, ptr noundef @c_n1, ptr noundef @c_n1, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  store i32 %349, ptr %52, align 4, !tbaa !9
  %350 = load i32, ptr %51, align 4, !tbaa !9
  %351 = load i32, ptr %52, align 4, !tbaa !9
  %352 = icmp sge i32 %350, %351
  br i1 %352, label %353, label %355

353:                                              ; preds = %342
  %354 = load i32, ptr %51, align 4, !tbaa !9
  br label %357

355:                                              ; preds = %342
  %356 = load i32, ptr %52, align 4, !tbaa !9
  br label %357

357:                                              ; preds = %355, %353
  %358 = phi i32 [ %354, %353 ], [ %356, %355 ]
  store i32 %358, ptr %72, align 4, !tbaa !9
  %359 = load i32, ptr %72, align 4, !tbaa !9
  %360 = add nsw i32 %359, 1
  %361 = load ptr, ptr %27, align 8, !tbaa !5
  %362 = load i32, ptr %361, align 4, !tbaa !9
  %363 = mul nsw i32 %360, %362
  store i32 %363, ptr %51, align 4, !tbaa !9
  %364 = load i32, ptr %51, align 4, !tbaa !9
  %365 = load i32, ptr %69, align 4, !tbaa !9
  %366 = icmp sge i32 %364, %365
  br i1 %366, label %367, label %369

367:                                              ; preds = %357
  %368 = load i32, ptr %51, align 4, !tbaa !9
  br label %371

369:                                              ; preds = %357
  %370 = load i32, ptr %69, align 4, !tbaa !9
  br label %371

371:                                              ; preds = %369, %367
  %372 = phi i32 [ %368, %367 ], [ %370, %369 ]
  store i32 %372, ptr %99, align 4, !tbaa !9
  %373 = load i32, ptr %99, align 4, !tbaa !9
  %374 = sitofp i32 %373 to double
  %375 = load ptr, ptr %40, align 8, !tbaa !5
  %376 = getelementptr inbounds %struct.doublecomplex, ptr %375, i64 1
  %377 = getelementptr inbounds %struct.doublecomplex, ptr %376, i32 0, i32 0
  store double %374, ptr %377, align 8, !tbaa !13
  %378 = load ptr, ptr %40, align 8, !tbaa !5
  %379 = getelementptr inbounds %struct.doublecomplex, ptr %378, i64 1
  %380 = getelementptr inbounds %struct.doublecomplex, ptr %379, i32 0, i32 1
  store double 0.000000e+00, ptr %380, align 8, !tbaa !15
  %381 = load i32, ptr %93, align 4, !tbaa !9
  %382 = sitofp i32 %381 to double
  %383 = load ptr, ptr %42, align 8, !tbaa !5
  %384 = getelementptr inbounds double, ptr %383, i64 1
  store double %382, ptr %384, align 8, !tbaa !11
  %385 = load i32, ptr %91, align 4, !tbaa !9
  %386 = load ptr, ptr %44, align 8, !tbaa !5
  %387 = getelementptr inbounds i32, ptr %386, i64 1
  store i32 %385, ptr %387, align 4, !tbaa !9
  %388 = load ptr, ptr %41, align 8, !tbaa !5
  %389 = load i32, ptr %388, align 4, !tbaa !9
  %390 = load i32, ptr %69, align 4, !tbaa !9
  %391 = icmp slt i32 %389, %390
  br i1 %391, label %392, label %397

392:                                              ; preds = %371
  %393 = load i32, ptr %98, align 4, !tbaa !9
  %394 = icmp ne i32 %393, 0
  br i1 %394, label %397, label %395

395:                                              ; preds = %392
  %396 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -18, ptr %396, align 4, !tbaa !9
  br label %419

397:                                              ; preds = %392, %371
  %398 = load ptr, ptr %43, align 8, !tbaa !5
  %399 = load i32, ptr %398, align 4, !tbaa !9
  %400 = load i32, ptr %93, align 4, !tbaa !9
  %401 = icmp slt i32 %399, %400
  br i1 %401, label %402, label %407

402:                                              ; preds = %397
  %403 = load i32, ptr %98, align 4, !tbaa !9
  %404 = icmp ne i32 %403, 0
  br i1 %404, label %407, label %405

405:                                              ; preds = %402
  %406 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -20, ptr %406, align 4, !tbaa !9
  br label %418

407:                                              ; preds = %402, %397
  %408 = load ptr, ptr %45, align 8, !tbaa !5
  %409 = load i32, ptr %408, align 4, !tbaa !9
  %410 = load i32, ptr %91, align 4, !tbaa !9
  %411 = icmp slt i32 %409, %410
  br i1 %411, label %412, label %417

412:                                              ; preds = %407
  %413 = load i32, ptr %98, align 4, !tbaa !9
  %414 = icmp ne i32 %413, 0
  br i1 %414, label %417, label %415

415:                                              ; preds = %412
  %416 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -22, ptr %416, align 4, !tbaa !9
  br label %417

417:                                              ; preds = %415, %412, %407
  br label %418

418:                                              ; preds = %417, %405
  br label %419

419:                                              ; preds = %418, %395
  br label %420

420:                                              ; preds = %419, %338
  %421 = load ptr, ptr %46, align 8, !tbaa !5
  %422 = load i32, ptr %421, align 4, !tbaa !9
  %423 = icmp ne i32 %422, 0
  br i1 %423, label %424, label %429

424:                                              ; preds = %420
  %425 = load ptr, ptr %46, align 8, !tbaa !5
  %426 = load i32, ptr %425, align 4, !tbaa !9
  %427 = sub nsw i32 0, %426
  store i32 %427, ptr %51, align 4, !tbaa !9
  %428 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %51, i32 noundef 6)
  store i32 1, ptr %105, align 4
  br label %1156

429:                                              ; preds = %420
  %430 = load i32, ptr %98, align 4, !tbaa !9
  %431 = icmp ne i32 %430, 0
  br i1 %431, label %432, label %433

432:                                              ; preds = %429
  store i32 1, ptr %105, align 4
  br label %1156

433:                                              ; preds = %429
  br label %434

434:                                              ; preds = %433
  %435 = load ptr, ptr %35, align 8, !tbaa !5
  store i32 0, ptr %435, align 4, !tbaa !9
  %436 = load ptr, ptr %27, align 8, !tbaa !5
  %437 = load i32, ptr %436, align 4, !tbaa !9
  %438 = icmp eq i32 %437, 0
  br i1 %438, label %439, label %446

439:                                              ; preds = %434
  %440 = load ptr, ptr %40, align 8, !tbaa !5
  %441 = getelementptr inbounds %struct.doublecomplex, ptr %440, i64 1
  %442 = getelementptr inbounds %struct.doublecomplex, ptr %441, i32 0, i32 0
  store double 1.000000e+00, ptr %442, align 8, !tbaa !13
  %443 = load ptr, ptr %40, align 8, !tbaa !5
  %444 = getelementptr inbounds %struct.doublecomplex, ptr %443, i64 1
  %445 = getelementptr inbounds %struct.doublecomplex, ptr %444, i32 0, i32 1
  store double 0.000000e+00, ptr %445, align 8, !tbaa !15
  store i32 1, ptr %105, align 4
  br label %1156

446:                                              ; preds = %434
  %447 = load ptr, ptr %27, align 8, !tbaa !5
  %448 = load i32, ptr %447, align 4, !tbaa !9
  %449 = icmp eq i32 %448, 1
  br i1 %449, label %450, label %532

450:                                              ; preds = %446
  %451 = load ptr, ptr %40, align 8, !tbaa !5
  %452 = getelementptr inbounds %struct.doublecomplex, ptr %451, i64 1
  %453 = getelementptr inbounds %struct.doublecomplex, ptr %452, i32 0, i32 0
  store double 2.000000e+00, ptr %453, align 8, !tbaa !13
  %454 = load ptr, ptr %40, align 8, !tbaa !5
  %455 = getelementptr inbounds %struct.doublecomplex, ptr %454, i64 1
  %456 = getelementptr inbounds %struct.doublecomplex, ptr %455, i32 0, i32 1
  store double 0.000000e+00, ptr %456, align 8, !tbaa !15
  %457 = load i32, ptr %74, align 4, !tbaa !9
  %458 = icmp ne i32 %457, 0
  br i1 %458, label %462, label %459

459:                                              ; preds = %450
  %460 = load i32, ptr %75, align 4, !tbaa !9
  %461 = icmp ne i32 %460, 0
  br i1 %461, label %462, label %474

462:                                              ; preds = %459, %450
  %463 = load ptr, ptr %35, align 8, !tbaa !5
  store i32 1, ptr %463, align 4, !tbaa !9
  %464 = load i32, ptr %47, align 4, !tbaa !9
  %465 = add nsw i32 %464, 1
  store i32 %465, ptr %51, align 4, !tbaa !9
  %466 = load ptr, ptr %28, align 8, !tbaa !5
  %467 = load i32, ptr %51, align 4, !tbaa !9
  %468 = sext i32 %467 to i64
  %469 = getelementptr inbounds %struct.doublecomplex, ptr %466, i64 %468
  %470 = getelementptr inbounds %struct.doublecomplex, ptr %469, i32 0, i32 0
  %471 = load double, ptr %470, align 8, !tbaa !13
  %472 = load ptr, ptr %36, align 8, !tbaa !5
  %473 = getelementptr inbounds double, ptr %472, i64 1
  store double %471, ptr %473, align 8, !tbaa !11
  br label %511

474:                                              ; preds = %459
  %475 = load i32, ptr %47, align 4, !tbaa !9
  %476 = add nsw i32 %475, 1
  store i32 %476, ptr %51, align 4, !tbaa !9
  %477 = load i32, ptr %47, align 4, !tbaa !9
  %478 = add nsw i32 %477, 1
  store i32 %478, ptr %52, align 4, !tbaa !9
  %479 = load ptr, ptr %30, align 8, !tbaa !5
  %480 = load double, ptr %479, align 8, !tbaa !11
  %481 = load ptr, ptr %28, align 8, !tbaa !5
  %482 = load i32, ptr %51, align 4, !tbaa !9
  %483 = sext i32 %482 to i64
  %484 = getelementptr inbounds %struct.doublecomplex, ptr %481, i64 %483
  %485 = getelementptr inbounds %struct.doublecomplex, ptr %484, i32 0, i32 0
  %486 = load double, ptr %485, align 8, !tbaa !13
  %487 = fcmp olt double %480, %486
  br i1 %487, label %488, label %510

488:                                              ; preds = %474
  %489 = load ptr, ptr %31, align 8, !tbaa !5
  %490 = load double, ptr %489, align 8, !tbaa !11
  %491 = load ptr, ptr %28, align 8, !tbaa !5
  %492 = load i32, ptr %52, align 4, !tbaa !9
  %493 = sext i32 %492 to i64
  %494 = getelementptr inbounds %struct.doublecomplex, ptr %491, i64 %493
  %495 = getelementptr inbounds %struct.doublecomplex, ptr %494, i32 0, i32 0
  %496 = load double, ptr %495, align 8, !tbaa !13
  %497 = fcmp oge double %490, %496
  br i1 %497, label %498, label %510

498:                                              ; preds = %488
  %499 = load ptr, ptr %35, align 8, !tbaa !5
  store i32 1, ptr %499, align 4, !tbaa !9
  %500 = load i32, ptr %47, align 4, !tbaa !9
  %501 = add nsw i32 %500, 1
  store i32 %501, ptr %51, align 4, !tbaa !9
  %502 = load ptr, ptr %28, align 8, !tbaa !5
  %503 = load i32, ptr %51, align 4, !tbaa !9
  %504 = sext i32 %503 to i64
  %505 = getelementptr inbounds %struct.doublecomplex, ptr %502, i64 %504
  %506 = getelementptr inbounds %struct.doublecomplex, ptr %505, i32 0, i32 0
  %507 = load double, ptr %506, align 8, !tbaa !13
  %508 = load ptr, ptr %36, align 8, !tbaa !5
  %509 = getelementptr inbounds double, ptr %508, i64 1
  store double %507, ptr %509, align 8, !tbaa !11
  br label %510

510:                                              ; preds = %498, %488, %474
  br label %511

511:                                              ; preds = %510, %462
  %512 = load i32, ptr %71, align 4, !tbaa !9
  %513 = icmp ne i32 %512, 0
  br i1 %513, label %514, label %531

514:                                              ; preds = %511
  %515 = load i32, ptr %49, align 4, !tbaa !9
  %516 = add nsw i32 %515, 1
  store i32 %516, ptr %51, align 4, !tbaa !9
  %517 = load ptr, ptr %37, align 8, !tbaa !5
  %518 = load i32, ptr %51, align 4, !tbaa !9
  %519 = sext i32 %518 to i64
  %520 = getelementptr inbounds %struct.doublecomplex, ptr %517, i64 %519
  %521 = getelementptr inbounds %struct.doublecomplex, ptr %520, i32 0, i32 0
  store double 1.000000e+00, ptr %521, align 8, !tbaa !13
  %522 = load ptr, ptr %37, align 8, !tbaa !5
  %523 = load i32, ptr %51, align 4, !tbaa !9
  %524 = sext i32 %523 to i64
  %525 = getelementptr inbounds %struct.doublecomplex, ptr %522, i64 %524
  %526 = getelementptr inbounds %struct.doublecomplex, ptr %525, i32 0, i32 1
  store double 0.000000e+00, ptr %526, align 8, !tbaa !15
  %527 = load ptr, ptr %39, align 8, !tbaa !5
  %528 = getelementptr inbounds i32, ptr %527, i64 1
  store i32 1, ptr %528, align 4, !tbaa !9
  %529 = load ptr, ptr %39, align 8, !tbaa !5
  %530 = getelementptr inbounds i32, ptr %529, i64 2
  store i32 1, ptr %530, align 4, !tbaa !9
  br label %531

531:                                              ; preds = %514, %511
  store i32 1, ptr %105, align 4
  br label %1156

532:                                              ; preds = %446
  %533 = call double @dlamch_(ptr noundef @.str.9)
  store double %533, ptr %83, align 8, !tbaa !11
  %534 = call double @dlamch_(ptr noundef @.str.10)
  store double %534, ptr %100, align 8, !tbaa !11
  %535 = load double, ptr %83, align 8, !tbaa !11
  %536 = load double, ptr %100, align 8, !tbaa !11
  %537 = fdiv double %535, %536
  store double %537, ptr %97, align 8, !tbaa !11
  %538 = load double, ptr %97, align 8, !tbaa !11
  %539 = fdiv double 1.000000e+00, %538
  store double %539, ptr %85, align 8, !tbaa !11
  %540 = load double, ptr %97, align 8, !tbaa !11
  %541 = call double @sqrt(double noundef %540) #4
  store double %541, ptr %57, align 8, !tbaa !11
  %542 = load double, ptr %85, align 8, !tbaa !11
  %543 = call double @sqrt(double noundef %542) #4
  store double %543, ptr %53, align 8, !tbaa !11
  %544 = load double, ptr %83, align 8, !tbaa !11
  %545 = call double @sqrt(double noundef %544) #4
  %546 = call double @sqrt(double noundef %545) #4
  %547 = fdiv double 1.000000e+00, %546
  store double %547, ptr %54, align 8, !tbaa !11
  %548 = load double, ptr %53, align 8, !tbaa !11
  %549 = load double, ptr %54, align 8, !tbaa !11
  %550 = fcmp ole double %548, %549
  br i1 %550, label %551, label %553

551:                                              ; preds = %532
  %552 = load double, ptr %53, align 8, !tbaa !11
  br label %555

553:                                              ; preds = %532
  %554 = load double, ptr %54, align 8, !tbaa !11
  br label %555

555:                                              ; preds = %553, %551
  %556 = phi double [ %552, %551 ], [ %554, %553 ]
  store double %556, ptr %58, align 8, !tbaa !11
  store i32 0, ptr %76, align 4, !tbaa !9
  %557 = load ptr, ptr %34, align 8, !tbaa !5
  %558 = load double, ptr %557, align 8, !tbaa !11
  store double %558, ptr %84, align 8, !tbaa !11
  %559 = load i32, ptr %82, align 4, !tbaa !9
  %560 = icmp ne i32 %559, 0
  br i1 %560, label %561, label %566

561:                                              ; preds = %555
  %562 = load ptr, ptr %30, align 8, !tbaa !5
  %563 = load double, ptr %562, align 8, !tbaa !11
  store double %563, ptr %101, align 8, !tbaa !11
  %564 = load ptr, ptr %31, align 8, !tbaa !5
  %565 = load double, ptr %564, align 8, !tbaa !11
  store double %565, ptr %102, align 8, !tbaa !11
  br label %566

566:                                              ; preds = %561, %555
  %567 = load ptr, ptr %26, align 8, !tbaa !5
  %568 = load ptr, ptr %27, align 8, !tbaa !5
  %569 = load ptr, ptr %28, align 8, !tbaa !5
  %570 = load i32, ptr %48, align 4, !tbaa !9
  %571 = sext i32 %570 to i64
  %572 = getelementptr inbounds %struct.doublecomplex, ptr %569, i64 %571
  %573 = load ptr, ptr %29, align 8, !tbaa !5
  %574 = load ptr, ptr %42, align 8, !tbaa !5
  %575 = getelementptr inbounds double, ptr %574, i64 1
  %576 = call double @zlansy_(ptr noundef @.str.11, ptr noundef %567, ptr noundef %568, ptr noundef %572, ptr noundef %573, ptr noundef %575)
  store double %576, ptr %55, align 8, !tbaa !11
  %577 = load double, ptr %55, align 8, !tbaa !11
  %578 = fcmp ogt double %577, 0.000000e+00
  br i1 %578, label %579, label %587

579:                                              ; preds = %566
  %580 = load double, ptr %55, align 8, !tbaa !11
  %581 = load double, ptr %57, align 8, !tbaa !11
  %582 = fcmp olt double %580, %581
  br i1 %582, label %583, label %587

583:                                              ; preds = %579
  store i32 1, ptr %76, align 4, !tbaa !9
  %584 = load double, ptr %57, align 8, !tbaa !11
  %585 = load double, ptr %55, align 8, !tbaa !11
  %586 = fdiv double %584, %585
  store double %586, ptr %65, align 8, !tbaa !11
  br label %596

587:                                              ; preds = %579, %566
  %588 = load double, ptr %55, align 8, !tbaa !11
  %589 = load double, ptr %58, align 8, !tbaa !11
  %590 = fcmp ogt double %588, %589
  br i1 %590, label %591, label %595

591:                                              ; preds = %587
  store i32 1, ptr %76, align 4, !tbaa !9
  %592 = load double, ptr %58, align 8, !tbaa !11
  %593 = load double, ptr %55, align 8, !tbaa !11
  %594 = fdiv double %592, %593
  store double %594, ptr %65, align 8, !tbaa !11
  br label %595

595:                                              ; preds = %591, %587
  br label %596

596:                                              ; preds = %595, %583
  %597 = load i32, ptr %76, align 4, !tbaa !9
  %598 = icmp eq i32 %597, 1
  br i1 %598, label %599, label %668

599:                                              ; preds = %596
  %600 = load i32, ptr %70, align 4, !tbaa !9
  %601 = icmp ne i32 %600, 0
  br i1 %601, label %602, label %627

602:                                              ; preds = %599
  %603 = load ptr, ptr %27, align 8, !tbaa !5
  %604 = load i32, ptr %603, align 4, !tbaa !9
  store i32 %604, ptr %51, align 4, !tbaa !9
  store i32 1, ptr %62, align 4, !tbaa !9
  br label %605

605:                                              ; preds = %623, %602
  %606 = load i32, ptr %62, align 4, !tbaa !9
  %607 = load i32, ptr %51, align 4, !tbaa !9
  %608 = icmp sle i32 %606, %607
  br i1 %608, label %609, label %626

609:                                              ; preds = %605
  %610 = load ptr, ptr %27, align 8, !tbaa !5
  %611 = load i32, ptr %610, align 4, !tbaa !9
  %612 = load i32, ptr %62, align 4, !tbaa !9
  %613 = sub nsw i32 %611, %612
  %614 = add nsw i32 %613, 1
  store i32 %614, ptr %52, align 4, !tbaa !9
  %615 = load ptr, ptr %28, align 8, !tbaa !5
  %616 = load i32, ptr %62, align 4, !tbaa !9
  %617 = load i32, ptr %62, align 4, !tbaa !9
  %618 = load i32, ptr %47, align 4, !tbaa !9
  %619 = mul nsw i32 %617, %618
  %620 = add nsw i32 %616, %619
  %621 = sext i32 %620 to i64
  %622 = getelementptr inbounds %struct.doublecomplex, ptr %615, i64 %621
  call void @zdscal_(ptr noundef %52, ptr noundef %65, ptr noundef %622, ptr noundef @c__1)
  br label %623

623:                                              ; preds = %609
  %624 = load i32, ptr %62, align 4, !tbaa !9
  %625 = add nsw i32 %624, 1
  store i32 %625, ptr %62, align 4, !tbaa !9
  br label %605, !llvm.loop !16

626:                                              ; preds = %605
  br label %646

627:                                              ; preds = %599
  %628 = load ptr, ptr %27, align 8, !tbaa !5
  %629 = load i32, ptr %628, align 4, !tbaa !9
  store i32 %629, ptr %51, align 4, !tbaa !9
  store i32 1, ptr %62, align 4, !tbaa !9
  br label %630

630:                                              ; preds = %642, %627
  %631 = load i32, ptr %62, align 4, !tbaa !9
  %632 = load i32, ptr %51, align 4, !tbaa !9
  %633 = icmp sle i32 %631, %632
  br i1 %633, label %634, label %645

634:                                              ; preds = %630
  %635 = load ptr, ptr %28, align 8, !tbaa !5
  %636 = load i32, ptr %62, align 4, !tbaa !9
  %637 = load i32, ptr %47, align 4, !tbaa !9
  %638 = mul nsw i32 %636, %637
  %639 = add nsw i32 %638, 1
  %640 = sext i32 %639 to i64
  %641 = getelementptr inbounds %struct.doublecomplex, ptr %635, i64 %640
  call void @zdscal_(ptr noundef %62, ptr noundef %65, ptr noundef %641, ptr noundef @c__1)
  br label %642

642:                                              ; preds = %634
  %643 = load i32, ptr %62, align 4, !tbaa !9
  %644 = add nsw i32 %643, 1
  store i32 %644, ptr %62, align 4, !tbaa !9
  br label %630, !llvm.loop !18

645:                                              ; preds = %630
  br label %646

646:                                              ; preds = %645, %626
  %647 = load ptr, ptr %34, align 8, !tbaa !5
  %648 = load double, ptr %647, align 8, !tbaa !11
  %649 = fcmp ogt double %648, 0.000000e+00
  br i1 %649, label %650, label %655

650:                                              ; preds = %646
  %651 = load ptr, ptr %34, align 8, !tbaa !5
  %652 = load double, ptr %651, align 8, !tbaa !11
  %653 = load double, ptr %65, align 8, !tbaa !11
  %654 = fmul double %652, %653
  store double %654, ptr %84, align 8, !tbaa !11
  br label %655

655:                                              ; preds = %650, %646
  %656 = load i32, ptr %82, align 4, !tbaa !9
  %657 = icmp ne i32 %656, 0
  br i1 %657, label %658, label %667

658:                                              ; preds = %655
  %659 = load ptr, ptr %30, align 8, !tbaa !5
  %660 = load double, ptr %659, align 8, !tbaa !11
  %661 = load double, ptr %65, align 8, !tbaa !11
  %662 = fmul double %660, %661
  store double %662, ptr %101, align 8, !tbaa !11
  %663 = load ptr, ptr %31, align 8, !tbaa !5
  %664 = load double, ptr %663, align 8, !tbaa !11
  %665 = load double, ptr %65, align 8, !tbaa !11
  %666 = fmul double %664, %665
  store double %666, ptr %102, align 8, !tbaa !11
  br label %667

667:                                              ; preds = %658, %655
  br label %668

668:                                              ; preds = %667, %596
  store i32 1, ptr %86, align 4, !tbaa !9
  %669 = load i32, ptr %86, align 4, !tbaa !9
  %670 = load ptr, ptr %27, align 8, !tbaa !5
  %671 = load i32, ptr %670, align 4, !tbaa !9
  %672 = add nsw i32 %669, %671
  store i32 %672, ptr %68, align 4, !tbaa !9
  %673 = load ptr, ptr %41, align 8, !tbaa !5
  %674 = load i32, ptr %673, align 4, !tbaa !9
  %675 = load i32, ptr %68, align 4, !tbaa !9
  %676 = sub nsw i32 %674, %675
  %677 = add nsw i32 %676, 1
  store i32 %677, ptr %95, align 4, !tbaa !9
  store i32 1, ptr %63, align 4, !tbaa !9
  %678 = load i32, ptr %63, align 4, !tbaa !9
  %679 = load ptr, ptr %27, align 8, !tbaa !5
  %680 = load i32, ptr %679, align 4, !tbaa !9
  %681 = add nsw i32 %678, %680
  store i32 %681, ptr %64, align 4, !tbaa !9
  %682 = load i32, ptr %64, align 4, !tbaa !9
  %683 = load ptr, ptr %27, align 8, !tbaa !5
  %684 = load i32, ptr %683, align 4, !tbaa !9
  %685 = add nsw i32 %682, %684
  store i32 %685, ptr %79, align 4, !tbaa !9
  %686 = load i32, ptr %79, align 4, !tbaa !9
  %687 = load ptr, ptr %27, align 8, !tbaa !5
  %688 = load i32, ptr %687, align 4, !tbaa !9
  %689 = add nsw i32 %686, %688
  store i32 %689, ptr %81, align 4, !tbaa !9
  %690 = load i32, ptr %81, align 4, !tbaa !9
  %691 = load ptr, ptr %27, align 8, !tbaa !5
  %692 = load i32, ptr %691, align 4, !tbaa !9
  %693 = add nsw i32 %690, %692
  store i32 %693, ptr %90, align 4, !tbaa !9
  %694 = load ptr, ptr %43, align 8, !tbaa !5
  %695 = load i32, ptr %694, align 4, !tbaa !9
  %696 = load i32, ptr %90, align 4, !tbaa !9
  %697 = sub nsw i32 %695, %696
  %698 = add nsw i32 %697, 1
  store i32 %698, ptr %103, align 4, !tbaa !9
  store i32 1, ptr %78, align 4, !tbaa !9
  %699 = load i32, ptr %78, align 4, !tbaa !9
  %700 = load ptr, ptr %27, align 8, !tbaa !5
  %701 = load i32, ptr %700, align 4, !tbaa !9
  %702 = add nsw i32 %699, %701
  store i32 %702, ptr %87, align 4, !tbaa !9
  %703 = load i32, ptr %87, align 4, !tbaa !9
  %704 = load ptr, ptr %27, align 8, !tbaa !5
  %705 = load i32, ptr %704, align 4, !tbaa !9
  %706 = add nsw i32 %703, %705
  store i32 %706, ptr %80, align 4, !tbaa !9
  %707 = load i32, ptr %80, align 4, !tbaa !9
  %708 = load ptr, ptr %27, align 8, !tbaa !5
  %709 = load i32, ptr %708, align 4, !tbaa !9
  %710 = add nsw i32 %707, %709
  store i32 %710, ptr %88, align 4, !tbaa !9
  %711 = load ptr, ptr %26, align 8, !tbaa !5
  %712 = load ptr, ptr %27, align 8, !tbaa !5
  %713 = load ptr, ptr %28, align 8, !tbaa !5
  %714 = load i32, ptr %48, align 4, !tbaa !9
  %715 = sext i32 %714 to i64
  %716 = getelementptr inbounds %struct.doublecomplex, ptr %713, i64 %715
  %717 = load ptr, ptr %29, align 8, !tbaa !5
  %718 = load ptr, ptr %42, align 8, !tbaa !5
  %719 = load i32, ptr %63, align 4, !tbaa !9
  %720 = sext i32 %719 to i64
  %721 = getelementptr inbounds double, ptr %718, i64 %720
  %722 = load ptr, ptr %42, align 8, !tbaa !5
  %723 = load i32, ptr %64, align 4, !tbaa !9
  %724 = sext i32 %723 to i64
  %725 = getelementptr inbounds double, ptr %722, i64 %724
  %726 = load ptr, ptr %40, align 8, !tbaa !5
  %727 = load i32, ptr %86, align 4, !tbaa !9
  %728 = sext i32 %727 to i64
  %729 = getelementptr inbounds %struct.doublecomplex, ptr %726, i64 %728
  %730 = load ptr, ptr %40, align 8, !tbaa !5
  %731 = load i32, ptr %68, align 4, !tbaa !9
  %732 = sext i32 %731 to i64
  %733 = getelementptr inbounds %struct.doublecomplex, ptr %730, i64 %732
  call void @zhetrd_(ptr noundef %711, ptr noundef %712, ptr noundef %716, ptr noundef %717, ptr noundef %721, ptr noundef %725, ptr noundef %729, ptr noundef %733, ptr noundef %95, ptr noundef %66)
  store i32 0, ptr %59, align 4, !tbaa !9
  %734 = load i32, ptr %75, align 4, !tbaa !9
  %735 = icmp ne i32 %734, 0
  br i1 %735, label %736, label %748

736:                                              ; preds = %668
  %737 = load ptr, ptr %32, align 8, !tbaa !5
  %738 = load i32, ptr %737, align 4, !tbaa !9
  %739 = icmp eq i32 %738, 1
  br i1 %739, label %740, label %747

740:                                              ; preds = %736
  %741 = load ptr, ptr %33, align 8, !tbaa !5
  %742 = load i32, ptr %741, align 4, !tbaa !9
  %743 = load ptr, ptr %27, align 8, !tbaa !5
  %744 = load i32, ptr %743, align 4, !tbaa !9
  %745 = icmp eq i32 %742, %744
  br i1 %745, label %746, label %747

746:                                              ; preds = %740
  store i32 1, ptr %59, align 4, !tbaa !9
  br label %747

747:                                              ; preds = %746, %740, %736
  br label %748

748:                                              ; preds = %747, %668
  %749 = load i32, ptr %74, align 4, !tbaa !9
  %750 = icmp ne i32 %749, 0
  br i1 %750, label %754, label %751

751:                                              ; preds = %748
  %752 = load i32, ptr %59, align 4, !tbaa !9
  %753 = icmp ne i32 %752, 0
  br i1 %753, label %754, label %898

754:                                              ; preds = %751, %748
  %755 = load i32, ptr %77, align 4, !tbaa !9
  %756 = icmp eq i32 %755, 1
  br i1 %756, label %757, label %898

757:                                              ; preds = %754
  %758 = load i32, ptr %71, align 4, !tbaa !9
  %759 = icmp ne i32 %758, 0
  br i1 %759, label %787, label %760

760:                                              ; preds = %757
  %761 = load ptr, ptr %27, align 8, !tbaa !5
  %762 = load ptr, ptr %42, align 8, !tbaa !5
  %763 = load i32, ptr %63, align 4, !tbaa !9
  %764 = sext i32 %763 to i64
  %765 = getelementptr inbounds double, ptr %762, i64 %764
  %766 = load ptr, ptr %36, align 8, !tbaa !5
  %767 = getelementptr inbounds double, ptr %766, i64 1
  call void @dcopy_(ptr noundef %761, ptr noundef %765, ptr noundef @c__1, ptr noundef %767, ptr noundef @c__1)
  %768 = load ptr, ptr %27, align 8, !tbaa !5
  %769 = load i32, ptr %768, align 4, !tbaa !9
  %770 = sub nsw i32 %769, 1
  store i32 %770, ptr %51, align 4, !tbaa !9
  %771 = load ptr, ptr %42, align 8, !tbaa !5
  %772 = load i32, ptr %64, align 4, !tbaa !9
  %773 = sext i32 %772 to i64
  %774 = getelementptr inbounds double, ptr %771, i64 %773
  %775 = load ptr, ptr %42, align 8, !tbaa !5
  %776 = load i32, ptr %81, align 4, !tbaa !9
  %777 = sext i32 %776 to i64
  %778 = getelementptr inbounds double, ptr %775, i64 %777
  call void @dcopy_(ptr noundef %51, ptr noundef %774, ptr noundef @c__1, ptr noundef %778, ptr noundef @c__1)
  %779 = load ptr, ptr %27, align 8, !tbaa !5
  %780 = load ptr, ptr %36, align 8, !tbaa !5
  %781 = getelementptr inbounds double, ptr %780, i64 1
  %782 = load ptr, ptr %42, align 8, !tbaa !5
  %783 = load i32, ptr %81, align 4, !tbaa !9
  %784 = sext i32 %783 to i64
  %785 = getelementptr inbounds double, ptr %782, i64 %784
  %786 = load ptr, ptr %46, align 8, !tbaa !5
  call void @dsterf_(ptr noundef %779, ptr noundef %781, ptr noundef %785, ptr noundef %786)
  br label %888

787:                                              ; preds = %757
  %788 = load ptr, ptr %27, align 8, !tbaa !5
  %789 = load i32, ptr %788, align 4, !tbaa !9
  %790 = sub nsw i32 %789, 1
  store i32 %790, ptr %51, align 4, !tbaa !9
  %791 = load ptr, ptr %42, align 8, !tbaa !5
  %792 = load i32, ptr %64, align 4, !tbaa !9
  %793 = sext i32 %792 to i64
  %794 = getelementptr inbounds double, ptr %791, i64 %793
  %795 = load ptr, ptr %42, align 8, !tbaa !5
  %796 = load i32, ptr %81, align 4, !tbaa !9
  %797 = sext i32 %796 to i64
  %798 = getelementptr inbounds double, ptr %795, i64 %797
  call void @dcopy_(ptr noundef %51, ptr noundef %794, ptr noundef @c__1, ptr noundef %798, ptr noundef @c__1)
  %799 = load ptr, ptr %27, align 8, !tbaa !5
  %800 = load ptr, ptr %42, align 8, !tbaa !5
  %801 = load i32, ptr %63, align 4, !tbaa !9
  %802 = sext i32 %801 to i64
  %803 = getelementptr inbounds double, ptr %800, i64 %802
  %804 = load ptr, ptr %42, align 8, !tbaa !5
  %805 = load i32, ptr %79, align 4, !tbaa !9
  %806 = sext i32 %805 to i64
  %807 = getelementptr inbounds double, ptr %804, i64 %806
  call void @dcopy_(ptr noundef %799, ptr noundef %803, ptr noundef @c__1, ptr noundef %807, ptr noundef @c__1)
  %808 = load ptr, ptr %34, align 8, !tbaa !5
  %809 = load double, ptr %808, align 8, !tbaa !11
  %810 = load ptr, ptr %27, align 8, !tbaa !5
  %811 = load i32, ptr %810, align 4, !tbaa !9
  %812 = sitofp i32 %811 to double
  %813 = fmul double %812, 2.000000e+00
  %814 = load double, ptr %100, align 8, !tbaa !11
  %815 = fmul double %813, %814
  %816 = fcmp ole double %809, %815
  br i1 %816, label %817, label %818

817:                                              ; preds = %787
  store i32 1, ptr %92, align 4, !tbaa !9
  br label %819

818:                                              ; preds = %787
  store i32 0, ptr %92, align 4, !tbaa !9
  br label %819

819:                                              ; preds = %818, %817
  %820 = load ptr, ptr %24, align 8, !tbaa !5
  %821 = load ptr, ptr %27, align 8, !tbaa !5
  %822 = load ptr, ptr %42, align 8, !tbaa !5
  %823 = load i32, ptr %79, align 4, !tbaa !9
  %824 = sext i32 %823 to i64
  %825 = getelementptr inbounds double, ptr %822, i64 %824
  %826 = load ptr, ptr %42, align 8, !tbaa !5
  %827 = load i32, ptr %81, align 4, !tbaa !9
  %828 = sext i32 %827 to i64
  %829 = getelementptr inbounds double, ptr %826, i64 %828
  %830 = load ptr, ptr %30, align 8, !tbaa !5
  %831 = load ptr, ptr %31, align 8, !tbaa !5
  %832 = load ptr, ptr %32, align 8, !tbaa !5
  %833 = load ptr, ptr %33, align 8, !tbaa !5
  %834 = load ptr, ptr %35, align 8, !tbaa !5
  %835 = load ptr, ptr %36, align 8, !tbaa !5
  %836 = getelementptr inbounds double, ptr %835, i64 1
  %837 = load ptr, ptr %37, align 8, !tbaa !5
  %838 = load i32, ptr %50, align 4, !tbaa !9
  %839 = sext i32 %838 to i64
  %840 = getelementptr inbounds %struct.doublecomplex, ptr %837, i64 %839
  %841 = load ptr, ptr %38, align 8, !tbaa !5
  %842 = load ptr, ptr %27, align 8, !tbaa !5
  %843 = load ptr, ptr %39, align 8, !tbaa !5
  %844 = getelementptr inbounds i32, ptr %843, i64 1
  %845 = load ptr, ptr %42, align 8, !tbaa !5
  %846 = load i32, ptr %90, align 4, !tbaa !9
  %847 = sext i32 %846 to i64
  %848 = getelementptr inbounds double, ptr %845, i64 %847
  %849 = load ptr, ptr %44, align 8, !tbaa !5
  %850 = getelementptr inbounds i32, ptr %849, i64 1
  %851 = load ptr, ptr %45, align 8, !tbaa !5
  %852 = load ptr, ptr %46, align 8, !tbaa !5
  call void @zstemr_(ptr noundef %820, ptr noundef @.str.4, ptr noundef %821, ptr noundef %825, ptr noundef %829, ptr noundef %830, ptr noundef %831, ptr noundef %832, ptr noundef %833, ptr noundef %834, ptr noundef %836, ptr noundef %840, ptr noundef %841, ptr noundef %842, ptr noundef %844, ptr noundef %92, ptr noundef %848, ptr noundef %103, ptr noundef %850, ptr noundef %851, ptr noundef %852)
  %853 = load i32, ptr %71, align 4, !tbaa !9
  %854 = icmp ne i32 %853, 0
  br i1 %854, label %855, label %887

855:                                              ; preds = %819
  %856 = load ptr, ptr %46, align 8, !tbaa !5
  %857 = load i32, ptr %856, align 4, !tbaa !9
  %858 = icmp eq i32 %857, 0
  br i1 %858, label %859, label %887

859:                                              ; preds = %855
  %860 = load i32, ptr %68, align 4, !tbaa !9
  store i32 %860, ptr %89, align 4, !tbaa !9
  %861 = load ptr, ptr %41, align 8, !tbaa !5
  %862 = load i32, ptr %861, align 4, !tbaa !9
  %863 = load i32, ptr %89, align 4, !tbaa !9
  %864 = sub nsw i32 %862, %863
  %865 = add nsw i32 %864, 1
  store i32 %865, ptr %94, align 4, !tbaa !9
  %866 = load ptr, ptr %26, align 8, !tbaa !5
  %867 = load ptr, ptr %27, align 8, !tbaa !5
  %868 = load ptr, ptr %35, align 8, !tbaa !5
  %869 = load ptr, ptr %28, align 8, !tbaa !5
  %870 = load i32, ptr %48, align 4, !tbaa !9
  %871 = sext i32 %870 to i64
  %872 = getelementptr inbounds %struct.doublecomplex, ptr %869, i64 %871
  %873 = load ptr, ptr %29, align 8, !tbaa !5
  %874 = load ptr, ptr %40, align 8, !tbaa !5
  %875 = load i32, ptr %86, align 4, !tbaa !9
  %876 = sext i32 %875 to i64
  %877 = getelementptr inbounds %struct.doublecomplex, ptr %874, i64 %876
  %878 = load ptr, ptr %37, align 8, !tbaa !5
  %879 = load i32, ptr %50, align 4, !tbaa !9
  %880 = sext i32 %879 to i64
  %881 = getelementptr inbounds %struct.doublecomplex, ptr %878, i64 %880
  %882 = load ptr, ptr %38, align 8, !tbaa !5
  %883 = load ptr, ptr %40, align 8, !tbaa !5
  %884 = load i32, ptr %89, align 4, !tbaa !9
  %885 = sext i32 %884 to i64
  %886 = getelementptr inbounds %struct.doublecomplex, ptr %883, i64 %885
  call void @zunmtr_(ptr noundef @.str.2, ptr noundef %866, ptr noundef @.str.1, ptr noundef %867, ptr noundef %868, ptr noundef %872, ptr noundef %873, ptr noundef %877, ptr noundef %881, ptr noundef %882, ptr noundef %886, ptr noundef %94, ptr noundef %66)
  br label %887

887:                                              ; preds = %859, %855, %819
  br label %888

888:                                              ; preds = %887, %760
  %889 = load ptr, ptr %46, align 8, !tbaa !5
  %890 = load i32, ptr %889, align 4, !tbaa !9
  %891 = icmp eq i32 %890, 0
  br i1 %891, label %892, label %896

892:                                              ; preds = %888
  %893 = load ptr, ptr %27, align 8, !tbaa !5
  %894 = load i32, ptr %893, align 4, !tbaa !9
  %895 = load ptr, ptr %35, align 8, !tbaa !5
  store i32 %894, ptr %895, align 4, !tbaa !9
  br label %1008

896:                                              ; preds = %888
  %897 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 0, ptr %897, align 4, !tbaa !9
  br label %898

898:                                              ; preds = %896, %754, %751
  %899 = load i32, ptr %71, align 4, !tbaa !9
  %900 = icmp ne i32 %899, 0
  br i1 %900, label %901, label %903

901:                                              ; preds = %898
  %902 = getelementptr inbounds [1 x i8], ptr %67, i64 0, i64 0
  store i8 66, ptr %902, align 1, !tbaa !19
  br label %905

903:                                              ; preds = %898
  %904 = getelementptr inbounds [1 x i8], ptr %67, i64 0, i64 0
  store i8 69, ptr %904, align 1, !tbaa !19
  br label %905

905:                                              ; preds = %903, %901
  %906 = load ptr, ptr %25, align 8, !tbaa !5
  %907 = getelementptr inbounds [1 x i8], ptr %67, i64 0, i64 0
  %908 = load ptr, ptr %27, align 8, !tbaa !5
  %909 = load ptr, ptr %32, align 8, !tbaa !5
  %910 = load ptr, ptr %33, align 8, !tbaa !5
  %911 = load ptr, ptr %42, align 8, !tbaa !5
  %912 = load i32, ptr %63, align 4, !tbaa !9
  %913 = sext i32 %912 to i64
  %914 = getelementptr inbounds double, ptr %911, i64 %913
  %915 = load ptr, ptr %42, align 8, !tbaa !5
  %916 = load i32, ptr %64, align 4, !tbaa !9
  %917 = sext i32 %916 to i64
  %918 = getelementptr inbounds double, ptr %915, i64 %917
  %919 = load ptr, ptr %35, align 8, !tbaa !5
  %920 = load ptr, ptr %36, align 8, !tbaa !5
  %921 = getelementptr inbounds double, ptr %920, i64 1
  %922 = load ptr, ptr %44, align 8, !tbaa !5
  %923 = load i32, ptr %78, align 4, !tbaa !9
  %924 = sext i32 %923 to i64
  %925 = getelementptr inbounds i32, ptr %922, i64 %924
  %926 = load ptr, ptr %44, align 8, !tbaa !5
  %927 = load i32, ptr %87, align 4, !tbaa !9
  %928 = sext i32 %927 to i64
  %929 = getelementptr inbounds i32, ptr %926, i64 %928
  %930 = load ptr, ptr %42, align 8, !tbaa !5
  %931 = load i32, ptr %90, align 4, !tbaa !9
  %932 = sext i32 %931 to i64
  %933 = getelementptr inbounds double, ptr %930, i64 %932
  %934 = load ptr, ptr %44, align 8, !tbaa !5
  %935 = load i32, ptr %88, align 4, !tbaa !9
  %936 = sext i32 %935 to i64
  %937 = getelementptr inbounds i32, ptr %934, i64 %936
  %938 = load ptr, ptr %46, align 8, !tbaa !5
  call void @dstebz_(ptr noundef %906, ptr noundef %907, ptr noundef %908, ptr noundef %101, ptr noundef %102, ptr noundef %909, ptr noundef %910, ptr noundef %84, ptr noundef %914, ptr noundef %918, ptr noundef %919, ptr noundef %96, ptr noundef %921, ptr noundef %925, ptr noundef %929, ptr noundef %933, ptr noundef %937, ptr noundef %938)
  %939 = load i32, ptr %71, align 4, !tbaa !9
  %940 = icmp ne i32 %939, 0
  br i1 %940, label %941, label %1007

941:                                              ; preds = %905
  %942 = load ptr, ptr %27, align 8, !tbaa !5
  %943 = load ptr, ptr %42, align 8, !tbaa !5
  %944 = load i32, ptr %63, align 4, !tbaa !9
  %945 = sext i32 %944 to i64
  %946 = getelementptr inbounds double, ptr %943, i64 %945
  %947 = load ptr, ptr %42, align 8, !tbaa !5
  %948 = load i32, ptr %64, align 4, !tbaa !9
  %949 = sext i32 %948 to i64
  %950 = getelementptr inbounds double, ptr %947, i64 %949
  %951 = load ptr, ptr %35, align 8, !tbaa !5
  %952 = load ptr, ptr %36, align 8, !tbaa !5
  %953 = getelementptr inbounds double, ptr %952, i64 1
  %954 = load ptr, ptr %44, align 8, !tbaa !5
  %955 = load i32, ptr %78, align 4, !tbaa !9
  %956 = sext i32 %955 to i64
  %957 = getelementptr inbounds i32, ptr %954, i64 %956
  %958 = load ptr, ptr %44, align 8, !tbaa !5
  %959 = load i32, ptr %87, align 4, !tbaa !9
  %960 = sext i32 %959 to i64
  %961 = getelementptr inbounds i32, ptr %958, i64 %960
  %962 = load ptr, ptr %37, align 8, !tbaa !5
  %963 = load i32, ptr %50, align 4, !tbaa !9
  %964 = sext i32 %963 to i64
  %965 = getelementptr inbounds %struct.doublecomplex, ptr %962, i64 %964
  %966 = load ptr, ptr %38, align 8, !tbaa !5
  %967 = load ptr, ptr %42, align 8, !tbaa !5
  %968 = load i32, ptr %90, align 4, !tbaa !9
  %969 = sext i32 %968 to i64
  %970 = getelementptr inbounds double, ptr %967, i64 %969
  %971 = load ptr, ptr %44, align 8, !tbaa !5
  %972 = load i32, ptr %88, align 4, !tbaa !9
  %973 = sext i32 %972 to i64
  %974 = getelementptr inbounds i32, ptr %971, i64 %973
  %975 = load ptr, ptr %44, align 8, !tbaa !5
  %976 = load i32, ptr %80, align 4, !tbaa !9
  %977 = sext i32 %976 to i64
  %978 = getelementptr inbounds i32, ptr %975, i64 %977
  %979 = load ptr, ptr %46, align 8, !tbaa !5
  call void @zstein_(ptr noundef %942, ptr noundef %946, ptr noundef %950, ptr noundef %951, ptr noundef %953, ptr noundef %957, ptr noundef %961, ptr noundef %965, ptr noundef %966, ptr noundef %970, ptr noundef %974, ptr noundef %978, ptr noundef %979)
  %980 = load i32, ptr %68, align 4, !tbaa !9
  store i32 %980, ptr %89, align 4, !tbaa !9
  %981 = load ptr, ptr %41, align 8, !tbaa !5
  %982 = load i32, ptr %981, align 4, !tbaa !9
  %983 = load i32, ptr %89, align 4, !tbaa !9
  %984 = sub nsw i32 %982, %983
  %985 = add nsw i32 %984, 1
  store i32 %985, ptr %94, align 4, !tbaa !9
  %986 = load ptr, ptr %26, align 8, !tbaa !5
  %987 = load ptr, ptr %27, align 8, !tbaa !5
  %988 = load ptr, ptr %35, align 8, !tbaa !5
  %989 = load ptr, ptr %28, align 8, !tbaa !5
  %990 = load i32, ptr %48, align 4, !tbaa !9
  %991 = sext i32 %990 to i64
  %992 = getelementptr inbounds %struct.doublecomplex, ptr %989, i64 %991
  %993 = load ptr, ptr %29, align 8, !tbaa !5
  %994 = load ptr, ptr %40, align 8, !tbaa !5
  %995 = load i32, ptr %86, align 4, !tbaa !9
  %996 = sext i32 %995 to i64
  %997 = getelementptr inbounds %struct.doublecomplex, ptr %994, i64 %996
  %998 = load ptr, ptr %37, align 8, !tbaa !5
  %999 = load i32, ptr %50, align 4, !tbaa !9
  %1000 = sext i32 %999 to i64
  %1001 = getelementptr inbounds %struct.doublecomplex, ptr %998, i64 %1000
  %1002 = load ptr, ptr %38, align 8, !tbaa !5
  %1003 = load ptr, ptr %40, align 8, !tbaa !5
  %1004 = load i32, ptr %89, align 4, !tbaa !9
  %1005 = sext i32 %1004 to i64
  %1006 = getelementptr inbounds %struct.doublecomplex, ptr %1003, i64 %1005
  call void @zunmtr_(ptr noundef @.str.2, ptr noundef %986, ptr noundef @.str.1, ptr noundef %987, ptr noundef %988, ptr noundef %992, ptr noundef %993, ptr noundef %997, ptr noundef %1001, ptr noundef %1002, ptr noundef %1006, ptr noundef %94, ptr noundef %66)
  br label %1007

1007:                                             ; preds = %941, %905
  br label %1008

1008:                                             ; preds = %1007, %892
  %1009 = load i32, ptr %76, align 4, !tbaa !9
  %1010 = icmp eq i32 %1009, 1
  br i1 %1010, label %1011, label %1027

1011:                                             ; preds = %1008
  %1012 = load ptr, ptr %46, align 8, !tbaa !5
  %1013 = load i32, ptr %1012, align 4, !tbaa !9
  %1014 = icmp eq i32 %1013, 0
  br i1 %1014, label %1015, label %1018

1015:                                             ; preds = %1011
  %1016 = load ptr, ptr %35, align 8, !tbaa !5
  %1017 = load i32, ptr %1016, align 4, !tbaa !9
  store i32 %1017, ptr %56, align 4, !tbaa !9
  br label %1022

1018:                                             ; preds = %1011
  %1019 = load ptr, ptr %46, align 8, !tbaa !5
  %1020 = load i32, ptr %1019, align 4, !tbaa !9
  %1021 = sub nsw i32 %1020, 1
  store i32 %1021, ptr %56, align 4, !tbaa !9
  br label %1022

1022:                                             ; preds = %1018, %1015
  %1023 = load double, ptr %65, align 8, !tbaa !11
  %1024 = fdiv double 1.000000e+00, %1023
  store double %1024, ptr %53, align 8, !tbaa !11
  %1025 = load ptr, ptr %36, align 8, !tbaa !5
  %1026 = getelementptr inbounds double, ptr %1025, i64 1
  call void @dscal_(ptr noundef %56, ptr noundef %53, ptr noundef %1026, ptr noundef @c__1)
  br label %1027

1027:                                             ; preds = %1022, %1008
  %1028 = load i32, ptr %71, align 4, !tbaa !9
  %1029 = icmp ne i32 %1028, 0
  br i1 %1029, label %1030, label %1140

1030:                                             ; preds = %1027
  %1031 = load ptr, ptr %35, align 8, !tbaa !5
  %1032 = load i32, ptr %1031, align 4, !tbaa !9
  %1033 = sub nsw i32 %1032, 1
  store i32 %1033, ptr %51, align 4, !tbaa !9
  store i32 1, ptr %62, align 4, !tbaa !9
  br label %1034

1034:                                             ; preds = %1136, %1030
  %1035 = load i32, ptr %62, align 4, !tbaa !9
  %1036 = load i32, ptr %51, align 4, !tbaa !9
  %1037 = icmp sle i32 %1035, %1036
  br i1 %1037, label %1038, label %1139

1038:                                             ; preds = %1034
  store i32 0, ptr %61, align 4, !tbaa !9
  %1039 = load ptr, ptr %36, align 8, !tbaa !5
  %1040 = load i32, ptr %62, align 4, !tbaa !9
  %1041 = sext i32 %1040 to i64
  %1042 = getelementptr inbounds double, ptr %1039, i64 %1041
  %1043 = load double, ptr %1042, align 8, !tbaa !11
  store double %1043, ptr %104, align 8, !tbaa !11
  %1044 = load ptr, ptr %35, align 8, !tbaa !5
  %1045 = load i32, ptr %1044, align 4, !tbaa !9
  store i32 %1045, ptr %52, align 4, !tbaa !9
  %1046 = load i32, ptr %62, align 4, !tbaa !9
  %1047 = add nsw i32 %1046, 1
  store i32 %1047, ptr %73, align 4, !tbaa !9
  br label %1048

1048:                                             ; preds = %1068, %1038
  %1049 = load i32, ptr %73, align 4, !tbaa !9
  %1050 = load i32, ptr %52, align 4, !tbaa !9
  %1051 = icmp sle i32 %1049, %1050
  br i1 %1051, label %1052, label %1071

1052:                                             ; preds = %1048
  %1053 = load ptr, ptr %36, align 8, !tbaa !5
  %1054 = load i32, ptr %73, align 4, !tbaa !9
  %1055 = sext i32 %1054 to i64
  %1056 = getelementptr inbounds double, ptr %1053, i64 %1055
  %1057 = load double, ptr %1056, align 8, !tbaa !11
  %1058 = load double, ptr %104, align 8, !tbaa !11
  %1059 = fcmp olt double %1057, %1058
  br i1 %1059, label %1060, label %1067

1060:                                             ; preds = %1052
  %1061 = load i32, ptr %73, align 4, !tbaa !9
  store i32 %1061, ptr %61, align 4, !tbaa !9
  %1062 = load ptr, ptr %36, align 8, !tbaa !5
  %1063 = load i32, ptr %73, align 4, !tbaa !9
  %1064 = sext i32 %1063 to i64
  %1065 = getelementptr inbounds double, ptr %1062, i64 %1064
  %1066 = load double, ptr %1065, align 8, !tbaa !11
  store double %1066, ptr %104, align 8, !tbaa !11
  br label %1067

1067:                                             ; preds = %1060, %1052
  br label %1068

1068:                                             ; preds = %1067
  %1069 = load i32, ptr %73, align 4, !tbaa !9
  %1070 = add nsw i32 %1069, 1
  store i32 %1070, ptr %73, align 4, !tbaa !9
  br label %1048, !llvm.loop !20

1071:                                             ; preds = %1048
  %1072 = load i32, ptr %61, align 4, !tbaa !9
  %1073 = icmp ne i32 %1072, 0
  br i1 %1073, label %1074, label %1135

1074:                                             ; preds = %1071
  %1075 = load ptr, ptr %44, align 8, !tbaa !5
  %1076 = load i32, ptr %78, align 4, !tbaa !9
  %1077 = load i32, ptr %61, align 4, !tbaa !9
  %1078 = add nsw i32 %1076, %1077
  %1079 = sub nsw i32 %1078, 1
  %1080 = sext i32 %1079 to i64
  %1081 = getelementptr inbounds i32, ptr %1075, i64 %1080
  %1082 = load i32, ptr %1081, align 4, !tbaa !9
  store i32 %1082, ptr %60, align 4, !tbaa !9
  %1083 = load ptr, ptr %36, align 8, !tbaa !5
  %1084 = load i32, ptr %62, align 4, !tbaa !9
  %1085 = sext i32 %1084 to i64
  %1086 = getelementptr inbounds double, ptr %1083, i64 %1085
  %1087 = load double, ptr %1086, align 8, !tbaa !11
  %1088 = load ptr, ptr %36, align 8, !tbaa !5
  %1089 = load i32, ptr %61, align 4, !tbaa !9
  %1090 = sext i32 %1089 to i64
  %1091 = getelementptr inbounds double, ptr %1088, i64 %1090
  store double %1087, ptr %1091, align 8, !tbaa !11
  %1092 = load ptr, ptr %44, align 8, !tbaa !5
  %1093 = load i32, ptr %78, align 4, !tbaa !9
  %1094 = load i32, ptr %62, align 4, !tbaa !9
  %1095 = add nsw i32 %1093, %1094
  %1096 = sub nsw i32 %1095, 1
  %1097 = sext i32 %1096 to i64
  %1098 = getelementptr inbounds i32, ptr %1092, i64 %1097
  %1099 = load i32, ptr %1098, align 4, !tbaa !9
  %1100 = load ptr, ptr %44, align 8, !tbaa !5
  %1101 = load i32, ptr %78, align 4, !tbaa !9
  %1102 = load i32, ptr %61, align 4, !tbaa !9
  %1103 = add nsw i32 %1101, %1102
  %1104 = sub nsw i32 %1103, 1
  %1105 = sext i32 %1104 to i64
  %1106 = getelementptr inbounds i32, ptr %1100, i64 %1105
  store i32 %1099, ptr %1106, align 4, !tbaa !9
  %1107 = load double, ptr %104, align 8, !tbaa !11
  %1108 = load ptr, ptr %36, align 8, !tbaa !5
  %1109 = load i32, ptr %62, align 4, !tbaa !9
  %1110 = sext i32 %1109 to i64
  %1111 = getelementptr inbounds double, ptr %1108, i64 %1110
  store double %1107, ptr %1111, align 8, !tbaa !11
  %1112 = load i32, ptr %60, align 4, !tbaa !9
  %1113 = load ptr, ptr %44, align 8, !tbaa !5
  %1114 = load i32, ptr %78, align 4, !tbaa !9
  %1115 = load i32, ptr %62, align 4, !tbaa !9
  %1116 = add nsw i32 %1114, %1115
  %1117 = sub nsw i32 %1116, 1
  %1118 = sext i32 %1117 to i64
  %1119 = getelementptr inbounds i32, ptr %1113, i64 %1118
  store i32 %1112, ptr %1119, align 4, !tbaa !9
  %1120 = load ptr, ptr %27, align 8, !tbaa !5
  %1121 = load ptr, ptr %37, align 8, !tbaa !5
  %1122 = load i32, ptr %61, align 4, !tbaa !9
  %1123 = load i32, ptr %49, align 4, !tbaa !9
  %1124 = mul nsw i32 %1122, %1123
  %1125 = add nsw i32 %1124, 1
  %1126 = sext i32 %1125 to i64
  %1127 = getelementptr inbounds %struct.doublecomplex, ptr %1121, i64 %1126
  %1128 = load ptr, ptr %37, align 8, !tbaa !5
  %1129 = load i32, ptr %62, align 4, !tbaa !9
  %1130 = load i32, ptr %49, align 4, !tbaa !9
  %1131 = mul nsw i32 %1129, %1130
  %1132 = add nsw i32 %1131, 1
  %1133 = sext i32 %1132 to i64
  %1134 = getelementptr inbounds %struct.doublecomplex, ptr %1128, i64 %1133
  call void @zswap_(ptr noundef %1120, ptr noundef %1127, ptr noundef @c__1, ptr noundef %1134, ptr noundef @c__1)
  br label %1135

1135:                                             ; preds = %1074, %1071
  br label %1136

1136:                                             ; preds = %1135
  %1137 = load i32, ptr %62, align 4, !tbaa !9
  %1138 = add nsw i32 %1137, 1
  store i32 %1138, ptr %62, align 4, !tbaa !9
  br label %1034, !llvm.loop !21

1139:                                             ; preds = %1034
  br label %1140

1140:                                             ; preds = %1139, %1027
  %1141 = load i32, ptr %99, align 4, !tbaa !9
  %1142 = sitofp i32 %1141 to double
  %1143 = load ptr, ptr %40, align 8, !tbaa !5
  %1144 = getelementptr inbounds %struct.doublecomplex, ptr %1143, i64 1
  %1145 = getelementptr inbounds %struct.doublecomplex, ptr %1144, i32 0, i32 0
  store double %1142, ptr %1145, align 8, !tbaa !13
  %1146 = load ptr, ptr %40, align 8, !tbaa !5
  %1147 = getelementptr inbounds %struct.doublecomplex, ptr %1146, i64 1
  %1148 = getelementptr inbounds %struct.doublecomplex, ptr %1147, i32 0, i32 1
  store double 0.000000e+00, ptr %1148, align 8, !tbaa !15
  %1149 = load i32, ptr %93, align 4, !tbaa !9
  %1150 = sitofp i32 %1149 to double
  %1151 = load ptr, ptr %42, align 8, !tbaa !5
  %1152 = getelementptr inbounds double, ptr %1151, i64 1
  store double %1150, ptr %1152, align 8, !tbaa !11
  %1153 = load i32, ptr %91, align 4, !tbaa !9
  %1154 = load ptr, ptr %44, align 8, !tbaa !5
  %1155 = getelementptr inbounds i32, ptr %1154, i64 1
  store i32 %1153, ptr %1155, align 4, !tbaa !9
  store i32 1, ptr %105, align 4
  br label %1156

1156:                                             ; preds = %1140, %531, %439, %432, %424
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %99) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 4, 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 4, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #4
  ret void
}

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

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

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

declare i32 @xerbla_(ptr noundef, ptr noundef, i32 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 void @zdscal_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

declare void @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 void @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 void @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 void @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 void @dscal_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @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 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = !{!14, !12, i64 0}
!14 = !{!"", !12, i64 0, !12, i64 8}
!15 = !{!14, !12, i64 8}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}
!18 = distinct !{!18, !17}
!19 = !{!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 i32, align 4
@.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 i32, align 4
@c__2 = external hidden global i32, align 4
@c__3 = external hidden global i32, align 4
@c__4 = external hidden global i32, align 4
@.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 i32, align 4
@.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 void @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 i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca double, align 8
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca double, align 8
  %30 = alloca i32, align 4
  %31 = alloca [1 x i8], align 1
  %32 = alloca double, align 8
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca double, align 8
  %38 = alloca double, align 8
  %39 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %25) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %27) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %28) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %30) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %31) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %33) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %34) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %35) #5
  call void @llvm.lifetime.start.p0(i64 4, 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 4, ptr nonnull %39) #5
  %40 = load i32, ptr %5, align 4, !tbaa !5
  %41 = add i32 %40, 1
  %narrow = xor i32 %40, -1
  %42 = sext i32 %narrow to i64
  %43 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %42
  %44 = getelementptr inbounds i8, ptr %12, i64 -8
  %45 = load i32, ptr %14, align 4, !tbaa !5
  %46 = add nsw i32 %45, 1
  %narrow442 = xor i32 %45, -1
  %47 = sext i32 %narrow442 to i64
  %48 = getelementptr inbounds %struct.doublecomplex, ptr %13, i64 %47
  %49 = getelementptr inbounds i8, ptr %16, i64 -16
  %50 = getelementptr inbounds i8, ptr %18, i64 -8
  %51 = getelementptr inbounds i8, ptr %20, i64 -4
  %52 = tail call i32 @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, i32 noundef 6, i32 noundef 1) #5
  %53 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.2) #5
  %54 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.3) #5
  %55 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #5
  %56 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #5
  %57 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.5) #5
  %58 = load i32, ptr %17, align 4, !tbaa !5
  %59 = icmp eq i32 %58, -1
  br i1 %59, label %66, label %60

60:                                               ; preds = %23
  %61 = load i32, ptr %19, align 4, !tbaa !5
  %62 = icmp eq i32 %61, -1
  br i1 %62, label %66, label %63

63:                                               ; preds = %60
  %64 = load i32, ptr %21, align 4, !tbaa !5
  %65 = icmp eq i32 %64, -1
  br label %66

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

76:                                               ; preds = %66
  %77 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #5
  %.not422 = icmp eq i32 %77, 0
  br i1 %.not422, label %.thread456.sink.split, label %78

78:                                               ; preds = %76, %66
  %79 = icmp ne i32 %55, 0
  %80 = icmp ne i32 %56, 0
  %or.cond = select i1 %79, i1 true, i1 %80
  %81 = icmp ne i32 %57, 0
  %or.cond3 = select i1 %or.cond, i1 true, i1 %81
  br i1 %or.cond3, label %82, label %.thread456.sink.split

82:                                               ; preds = %78
  %.not423 = icmp eq i32 %53, 0
  br i1 %.not423, label %83, label %85

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

85:                                               ; preds = %83, %82
  %86 = load i32, ptr %3, align 4, !tbaa !5
  %87 = icmp slt i32 %86, 0
  br i1 %87, label %.thread456.sink.split, label %88

88:                                               ; preds = %85
  %89 = load i32, ptr %5, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %86, i32 1)
  %90 = icmp slt i32 %89, %spec.select
  br i1 %90, label %.thread456.sink.split, label %91

91:                                               ; preds = %88
  br i1 %80, label %92, label %97

92:                                               ; preds = %91
  %.not470 = icmp eq i32 %86, 0
  br i1 %.not470, label %106, label %93

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

97:                                               ; preds = %91
  br i1 %81, label %98, label %106

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

102:                                              ; preds = %98
  %103 = load i32, ptr %9, align 4, !tbaa !5
  %. = tail call i32 @llvm.umin.i32(i32 %86, i32 %99)
  %104 = icmp slt i32 %103, %.
  %105 = icmp ugt i32 %103, %86
  %or.cond469 = or i1 %104, %105
  br i1 %or.cond469, label %.thread456.sink.split, label %106

106:                                              ; preds = %102, %93, %92, %97
  %.pr = load i32, ptr %22, align 4, !tbaa !5
  %107 = icmp eq i32 %.pr, 0
  br i1 %107, label %108, label %.thread456

108:                                              ; preds = %106
  %109 = load i32, ptr %14, align 4, !tbaa !5
  %110 = icmp slt i32 %109, 1
  %111 = icmp ult i32 %109, %86
  %or.cond501 = and i1 %.not, %111
  %or.cond504 = or i1 %110, %or.cond501
  br i1 %or.cond504, label %.thread456.sink.split, label %.thread

.thread:                                          ; preds = %108
  %112 = tail call i32 @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, i32 noundef 6, i32 noundef 1) #5
  %113 = tail call i32 @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, i32 noundef 6, i32 noundef 1) #5
  store i32 %113, ptr %25, align 4, !tbaa !5
  %114 = tail call i32 @llvm.smax.i32(i32 %112, i32 %113)
  %115 = add nsw i32 %114, 1
  %116 = load i32, ptr %3, align 4, !tbaa !5
  %117 = mul nsw i32 %115, %116
  store i32 %117, ptr %24, align 4, !tbaa !5
  %118 = tail call i32 @llvm.smax.i32(i32 %117, i32 %75)
  %119 = uitofp nneg i32 %118 to double
  store double %119, ptr %16, align 8, !tbaa !11
  %120 = getelementptr inbounds i8, ptr %16, i64 8
  store double 0.000000e+00, ptr %120, align 8, !tbaa !13
  %121 = sitofp i32 %71 to double
  store double %121, ptr %18, align 8, !tbaa !9
  store i32 %73, ptr %20, align 4, !tbaa !5
  %122 = load i32, ptr %17, align 4, !tbaa !5
  %123 = icmp sge i32 %122, %75
  %or.cond5 = select i1 %123, i1 true, i1 %67
  br i1 %or.cond5, label %124, label %.thread456.sink.split

124:                                              ; preds = %.thread
  %125 = load i32, ptr %19, align 4, !tbaa !5
  %126 = icmp sge i32 %125, %71
  %or.cond7 = select i1 %126, i1 true, i1 %67
  br i1 %or.cond7, label %127, label %.thread456.sink.split

127:                                              ; preds = %124
  %128 = load i32, ptr %21, align 4, !tbaa !5
  %129 = icmp sge i32 %128, %73
  %or.cond9 = select i1 %129, i1 true, i1 %67
  br i1 %or.cond9, label %.thread451, label %.thread456.sink.split

.thread451:                                       ; preds = %127
  %.pr453.pr = load i32, ptr %22, align 4, !tbaa !5
  %.not428 = icmp eq i32 %.pr453.pr, 0
  br i1 %.not428, label %133, label %.thread456

.thread456.sink.split:                            ; preds = %127, %124, %.thread, %108, %102, %98, %93, %88, %85, %83, %78, %76
  %.sink = phi i32 [ -1, %76 ], [ -2, %78 ], [ -3, %83 ], [ -4, %85 ], [ -6, %88 ], [ -8, %93 ], [ -9, %98 ], [ -10, %102 ], [ -15, %108 ], [ -18, %.thread ], [ -20, %124 ], [ -22, %127 ]
  store i32 %.sink, ptr %22, align 4, !tbaa !5
  br label %.thread456

.thread456:                                       ; preds = %.thread456.sink.split, %106, %.thread451
  %130 = phi i32 [ %.pr453.pr, %.thread451 ], [ %.pr, %106 ], [ %.sink, %.thread456.sink.split ]
  %131 = sub nsw i32 0, %130
  store i32 %131, ptr %24, align 4, !tbaa !5
  %132 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %24, i32 noundef 6) #5
  br label %323

133:                                              ; preds = %.thread451
  br i1 %67, label %323, label %134

134:                                              ; preds = %133
  store i32 0, ptr %11, align 4, !tbaa !5
  %135 = load i32, ptr %3, align 4, !tbaa !5
  switch i32 %135, label %156 [
    i32 0, label %136
    i32 1, label %137
  ]

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

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

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

140:                                              ; preds = %137
  %141 = load double, ptr %6, align 8, !tbaa !9
  %142 = sext i32 %41 to i64
  %143 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %142
  %144 = load double, ptr %143, align 8, !tbaa !11
  %145 = fcmp olt double %141, %144
  br i1 %145, label %146, label %151

146:                                              ; preds = %140
  %147 = load double, ptr %7, align 8, !tbaa !9
  %148 = load double, ptr %4, align 8, !tbaa !11
  %149 = fcmp ult double %147, %148
  br i1 %149, label %151, label %150

150:                                              ; preds = %146
  store i32 1, ptr %11, align 4, !tbaa !5
  br label %.sink.split

.sink.split:                                      ; preds = %138, %150
  %.sink502 = phi double [ %148, %150 ], [ %139, %138 ]
  store double %.sink502, ptr %12, align 8, !tbaa !9
  br label %151

151:                                              ; preds = %.sink.split, %140, %146
  br i1 %.not, label %152, label %323

152:                                              ; preds = %151
  store double 1.000000e+00, ptr %13, align 8, !tbaa !11
  %153 = sext i32 %46 to i64
  %154 = getelementptr inbounds %struct.doublecomplex, ptr %48, i64 %153, i32 1
  store double 0.000000e+00, ptr %154, align 8, !tbaa !13
  store i32 1, ptr %15, align 4, !tbaa !5
  %155 = getelementptr inbounds i8, ptr %15, i64 4
  store i32 1, ptr %155, align 4, !tbaa !5
  br label %323

156:                                              ; preds = %134
  %157 = tail call double @dlamch_(ptr noundef nonnull @.str.9) #5
  %158 = tail call double @dlamch_(ptr noundef nonnull @.str.10) #5
  %159 = fdiv double %157, %158
  %160 = fdiv double 1.000000e+00, %159
  %161 = tail call double @sqrt(double noundef %159) #5
  %162 = tail call double @sqrt(double noundef %160) #5
  store double %162, ptr %26, align 8, !tbaa !9
  %163 = tail call double @sqrt(double noundef %157) #5
  %164 = tail call double @sqrt(double noundef %163) #5
  %165 = fdiv double 1.000000e+00, %164
  %166 = fcmp ole double %162, %165
  %167 = select i1 %166, double %162, double %165
  %168 = load double, ptr %10, align 8, !tbaa !9
  store double %168, ptr %32, align 8, !tbaa !9
  %.not429 = icmp eq i32 %56, 0
  br i1 %.not429, label %172, label %169

169:                                              ; preds = %156
  %170 = load double, ptr %6, align 8, !tbaa !9
  store double %170, ptr %37, align 8, !tbaa !9
  %171 = load double, ptr %7, align 8, !tbaa !9
  store double %171, ptr %38, align 8, !tbaa !9
  br label %172

172:                                              ; preds = %169, %156
  %173 = 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
  %174 = fcmp ogt double %173, 0.000000e+00
  %175 = fcmp olt double %173, %161
  %or.cond444 = select i1 %174, i1 %175, i1 false
  br i1 %or.cond444, label %178, label %176

176:                                              ; preds = %172
  %177 = fcmp ogt double %173, %167
  br i1 %177, label %178, label %207

178:                                              ; preds = %176, %172
  %.pn = phi double [ %161, %172 ], [ %167, %176 ]
  %storemerge471 = fdiv double %.pn, %173
  store double %storemerge471, ptr %29, align 8, !tbaa !9
  %179 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %179, ptr %24, align 4, !tbaa !5
  br i1 %.not423, label %189, label %180

180:                                              ; preds = %178
  store i32 1, ptr %28, align 4, !tbaa !5
  %.not433475 = icmp slt i32 %179, 1
  br i1 %.not433475, label %.loopexit473, label %.lr.ph

.lr.ph:                                           ; preds = %180, %.lr.ph
  %storemerge432476 = phi i32 [ %187, %.lr.ph ], [ 1, %180 ]
  %181 = load i32, ptr %3, align 4, !tbaa !5
  %reass.sub = sub i32 %181, %storemerge432476
  %182 = add i32 %reass.sub, 1
  store i32 %182, ptr %25, align 4, !tbaa !5
  %183 = mul i32 %storemerge432476, %41
  %184 = sext i32 %183 to i64
  %185 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %184
  call void @zdscal_(ptr noundef nonnull %25, ptr noundef nonnull %29, ptr noundef %185, ptr noundef nonnull @c__1) #5
  %186 = load i32, ptr %28, align 4, !tbaa !5
  %187 = add nsw i32 %186, 1
  store i32 %187, ptr %28, align 4, !tbaa !5
  %188 = load i32, ptr %24, align 4, !tbaa !5
  %.not433.not = icmp slt i32 %186, %188
  br i1 %.not433.not, label %.lr.ph, label %.loopexit473, !llvm.loop !14

189:                                              ; preds = %178
  %invariant.gep = getelementptr i8, ptr %43, i64 16
  store i32 1, ptr %28, align 4, !tbaa !5
  %.not431477 = icmp slt i32 %179, 1
  br i1 %.not431477, label %.loopexit473, label %.lr.ph479

.lr.ph479:                                        ; preds = %189, %.lr.ph479
  %storemerge478 = phi i32 [ %193, %.lr.ph479 ], [ 1, %189 ]
  %190 = mul nsw i32 %storemerge478, %40
  %191 = sext i32 %190 to i64
  %gep = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %191
  call void @zdscal_(ptr noundef nonnull %28, ptr noundef nonnull %29, ptr noundef %gep, ptr noundef nonnull @c__1) #5
  %192 = load i32, ptr %28, align 4, !tbaa !5
  %193 = add nsw i32 %192, 1
  store i32 %193, ptr %28, align 4, !tbaa !5
  %194 = load i32, ptr %24, align 4, !tbaa !5
  %.not431.not = icmp slt i32 %192, %194
  br i1 %.not431.not, label %.lr.ph479, label %.loopexit473, !llvm.loop !16

.loopexit473:                                     ; preds = %.lr.ph, %.lr.ph479, %180, %189
  %195 = load double, ptr %10, align 8, !tbaa !9
  %196 = fcmp ogt double %195, 0.000000e+00
  br i1 %196, label %197, label %200

197:                                              ; preds = %.loopexit473
  %198 = load double, ptr %29, align 8, !tbaa !9
  %199 = fmul double %195, %198
  store double %199, ptr %32, align 8, !tbaa !9
  br label %200

200:                                              ; preds = %197, %.loopexit473
  br i1 %.not429, label %207, label %201

201:                                              ; preds = %200
  %202 = load double, ptr %6, align 8, !tbaa !9
  %203 = load double, ptr %29, align 8, !tbaa !9
  %204 = fmul double %202, %203
  store double %204, ptr %37, align 8, !tbaa !9
  %205 = load double, ptr %7, align 8, !tbaa !9
  %206 = fmul double %203, %205
  store double %206, ptr %38, align 8, !tbaa !9
  br label %207

207:                                              ; preds = %176, %200, %201
  %208 = phi i1 [ true, %200 ], [ true, %201 ], [ false, %176 ]
  %209 = load i32, ptr %3, align 4, !tbaa !5
  %210 = add nsw i32 %209, 1
  %211 = load i32, ptr %17, align 4, !tbaa !5
  %212 = sub i32 %211, %209
  store i32 %212, ptr %35, align 4, !tbaa !5
  %213 = add nsw i32 %210, %209
  %214 = add nsw i32 %213, %209
  %215 = add nsw i32 %214, %209
  %216 = load i32, ptr %19, align 4, !tbaa !5
  %217 = add i32 %216, 1
  %218 = sub i32 %217, %215
  store i32 %218, ptr %39, align 4, !tbaa !5
  %219 = sext i32 %210 to i64
  %220 = getelementptr inbounds double, ptr %50, i64 %219
  %221 = getelementptr inbounds %struct.doublecomplex, ptr %49, i64 %219
  call void @zhetrd_(ptr noundef %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef nonnull %18, ptr noundef nonnull %220, ptr noundef nonnull %16, ptr noundef nonnull %221, ptr noundef nonnull %35, ptr noundef nonnull %30) #5
  %.not434 = icmp eq i32 %57, 0
  br i1 %.not434, label %229, label %222

222:                                              ; preds = %207
  %223 = load i32, ptr %8, align 4, !tbaa !5
  %224 = icmp eq i32 %223, 1
  br i1 %224, label %225, label %229

225:                                              ; preds = %222
  %226 = load i32, ptr %9, align 4, !tbaa !5
  %227 = load i32, ptr %3, align 4, !tbaa !5
  %228 = icmp eq i32 %226, %227
  br label %229

229:                                              ; preds = %225, %222, %207
  %230 = phi i1 [ false, %222 ], [ false, %207 ], [ %228, %225 ]
  %or.cond13 = or i1 %79, %230
  %231 = icmp eq i32 %52, 1
  %or.cond15 = select i1 %or.cond13, i1 %231, i1 false
  br i1 %or.cond15, label %232, label %262

232:                                              ; preds = %229
  br i1 %.not, label %238, label %233

233:                                              ; preds = %232
  call void @dcopy_(ptr noundef nonnull %3, ptr noundef nonnull %18, ptr noundef nonnull @c__1, ptr noundef %12, ptr noundef nonnull @c__1) #5
  %234 = load i32, ptr %3, align 4, !tbaa !5
  %235 = add nsw i32 %234, -1
  store i32 %235, ptr %24, align 4, !tbaa !5
  %236 = sext i32 %214 to i64
  %237 = getelementptr inbounds double, ptr %50, i64 %236
  call void @dcopy_(ptr noundef nonnull %24, ptr noundef nonnull %220, ptr noundef nonnull @c__1, ptr noundef nonnull %237, ptr noundef nonnull @c__1) #5
  call void @dsterf_(ptr noundef nonnull %3, ptr noundef %12, ptr noundef nonnull %237, ptr noundef nonnull %22) #5
  br label %258

238:                                              ; preds = %232
  %239 = load i32, ptr %3, align 4, !tbaa !5
  %240 = add nsw i32 %239, -1
  store i32 %240, ptr %24, align 4, !tbaa !5
  %241 = sext i32 %214 to i64
  %242 = getelementptr inbounds double, ptr %50, i64 %241
  call void @dcopy_(ptr noundef nonnull %24, ptr noundef nonnull %220, ptr noundef nonnull @c__1, ptr noundef nonnull %242, ptr noundef nonnull @c__1) #5
  %243 = sext i32 %213 to i64
  %244 = getelementptr inbounds double, ptr %50, i64 %243
  call void @dcopy_(ptr noundef nonnull %3, ptr noundef nonnull %18, ptr noundef nonnull @c__1, ptr noundef nonnull %244, ptr noundef nonnull @c__1) #5
  %245 = load double, ptr %10, align 8, !tbaa !9
  %246 = load i32, ptr %3, align 4, !tbaa !5
  %247 = sitofp i32 %246 to double
  %248 = fmul double %247, 2.000000e+00
  %249 = fmul double %158, %248
  %250 = fcmp ole double %245, %249
  %.446 = zext i1 %250 to i32
  store i32 %.446, ptr %33, align 4, !tbaa !5
  %251 = sext i32 %215 to i64
  %252 = getelementptr inbounds double, ptr %50, i64 %251
  call void @zstemr_(ptr noundef %0, ptr noundef nonnull @.str.4, ptr noundef nonnull %3, ptr noundef nonnull %244, ptr noundef nonnull %242, 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 %33, ptr noundef nonnull %252, ptr noundef nonnull %39, ptr noundef nonnull %20, ptr noundef nonnull %21, ptr noundef nonnull %22) #5
  %253 = load i32, ptr %22, align 4, !tbaa !5
  %254 = icmp eq i32 %253, 0
  br i1 %254, label %255, label %.thread463

255:                                              ; preds = %238
  %256 = load i32, ptr %17, align 4, !tbaa !5
  %257 = sub i32 %256, %209
  store i32 %257, ptr %34, align 4, !tbaa !5
  call void @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 nonnull %221, ptr noundef nonnull %34, ptr noundef nonnull %30) #5
  br label %258

258:                                              ; preds = %255, %233
  %.pr462 = load i32, ptr %22, align 4, !tbaa !5
  %259 = icmp eq i32 %.pr462, 0
  br i1 %259, label %260, label %.thread463

260:                                              ; preds = %258
  %261 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %261, ptr %11, align 4, !tbaa !5
  br label %273

.thread463:                                       ; preds = %238, %258
  store i32 0, ptr %22, align 4, !tbaa !5
  br label %262

262:                                              ; preds = %229, %.thread463
  %.447 = select i1 %.not, i8 66, i8 69
  store i8 %.447, ptr %31, align 1, !tbaa !17
  %263 = getelementptr inbounds i32, ptr %51, i64 %219
  %264 = sext i32 %215 to i64
  %265 = getelementptr inbounds double, ptr %50, i64 %264
  %266 = sext i32 %214 to i64
  %267 = getelementptr inbounds i32, ptr %51, i64 %266
  call void @dstebz_(ptr noundef %1, ptr noundef nonnull %31, ptr noundef nonnull %3, ptr noundef nonnull %37, ptr noundef nonnull %38, ptr noundef %8, ptr noundef %9, ptr noundef nonnull %32, ptr noundef nonnull %18, ptr noundef nonnull %220, ptr noundef nonnull %11, ptr noundef nonnull %36, ptr noundef %12, ptr noundef nonnull %20, ptr noundef nonnull %263, ptr noundef nonnull %265, ptr noundef nonnull %267, ptr noundef nonnull %22) #5
  br i1 %.not, label %268, label %273

268:                                              ; preds = %262
  %269 = sext i32 %213 to i64
  %270 = getelementptr inbounds i32, ptr %51, i64 %269
  call void @zstein_(ptr noundef nonnull %3, ptr noundef nonnull %18, ptr noundef nonnull %220, ptr noundef nonnull %11, ptr noundef %12, ptr noundef nonnull %20, ptr noundef nonnull %263, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %265, ptr noundef nonnull %267, ptr noundef nonnull %270, ptr noundef nonnull %22) #5
  %271 = load i32, ptr %17, align 4, !tbaa !5
  %272 = sub i32 %271, %209
  store i32 %272, ptr %34, align 4, !tbaa !5
  call void @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 nonnull %221, ptr noundef nonnull %34, ptr noundef nonnull %30) #5
  br label %273

273:                                              ; preds = %262, %268, %260
  br i1 %208, label %274, label %284

274:                                              ; preds = %273
  %275 = load i32, ptr %22, align 4, !tbaa !5
  %276 = icmp eq i32 %275, 0
  br i1 %276, label %277, label %279

277:                                              ; preds = %274
  %278 = load i32, ptr %11, align 4, !tbaa !5
  br label %281

279:                                              ; preds = %274
  %280 = add nsw i32 %275, -1
  br label %281

281:                                              ; preds = %279, %277
  %storemerge437 = phi i32 [ %280, %279 ], [ %278, %277 ]
  store i32 %storemerge437, ptr %27, align 4, !tbaa !5
  %282 = load double, ptr %29, align 8, !tbaa !9
  %283 = fdiv double 1.000000e+00, %282
  store double %283, ptr %26, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %27, ptr noundef nonnull %26, ptr noundef %12, ptr noundef nonnull @c__1) #5
  br label %284

284:                                              ; preds = %281, %273
  br i1 %.not, label %285, label %.loopexit

285:                                              ; preds = %284
  %286 = load i32, ptr %11, align 4, !tbaa !5
  %287 = add nsw i32 %286, -1
  store i32 %287, ptr %24, align 4, !tbaa !5
  %invariant.gep486 = getelementptr i8, ptr %48, i64 16
  store i32 1, ptr %28, align 4, !tbaa !5
  %.not439490 = icmp slt i32 %286, 2
  br i1 %.not439490, label %.loopexit, label %.lr.ph493

.lr.ph493:                                        ; preds = %285, %._crit_edge.thread
  %288 = phi i32 [ %320, %._crit_edge.thread ], [ %287, %285 ]
  %storemerge438491 = phi i32 [ %322, %._crit_edge.thread ], [ 1, %285 ]
  %289 = sext i32 %storemerge438491 to i64
  %290 = getelementptr inbounds double, ptr %44, i64 %289
  %291 = load double, ptr %290, align 8, !tbaa !9
  %292 = load i32, ptr %11, align 4, !tbaa !5
  store i32 %292, ptr %25, align 4, !tbaa !5
  %.not440.not480 = icmp slt i32 %storemerge438491, %292
  br i1 %.not440.not480, label %.lr.ph484.preheader, label %._crit_edge.thread

.lr.ph484.preheader:                              ; preds = %.lr.ph493
  %wide.trip.count = sext i32 %292 to i64
  %293 = sub nsw i64 %wide.trip.count, %289
  %xtraiter = and i64 %293, 1
  %294 = add nsw i64 %wide.trip.count, -1
  %295 = icmp eq i64 %294, %289
  br i1 %295, label %._crit_edge.unr-lcssa, label %.lr.ph484.preheader.new

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

.lr.ph484:                                        ; preds = %.lr.ph484, %.lr.ph484.preheader.new
  %indvars.iv = phi i64 [ %289, %.lr.ph484.preheader.new ], [ %indvars.iv.next.1, %.lr.ph484 ]
  %.0483 = phi double [ %291, %.lr.ph484.preheader.new ], [ %.1.1, %.lr.ph484 ]
  %.0401482 = phi i32 [ 0, %.lr.ph484.preheader.new ], [ %.1402.1, %.lr.ph484 ]
  %niter = phi i64 [ 0, %.lr.ph484.preheader.new ], [ %niter.next.1, %.lr.ph484 ]
  %indvars.iv.next = add nsw i64 %indvars.iv, 1
  %296 = getelementptr double, ptr %12, i64 %indvars.iv
  %297 = load double, ptr %296, align 8, !tbaa !9
  %298 = fcmp olt double %297, %.0483
  %299 = trunc nsw i64 %indvars.iv.next to i32
  %.1402 = select i1 %298, i32 %299, i32 %.0401482
  %.1 = select i1 %298, double %297, double %.0483
  %indvars.iv.next.1 = add nsw i64 %indvars.iv, 2
  %300 = getelementptr double, ptr %12, i64 %indvars.iv.next
  %301 = load double, ptr %300, align 8, !tbaa !9
  %302 = fcmp olt double %301, %.1
  %303 = trunc nsw i64 %indvars.iv.next.1 to i32
  %.1402.1 = select i1 %302, i32 %303, i32 %.1402
  %.1.1 = select i1 %302, double %301, double %.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 i32 [ poison, %.lr.ph484.preheader ], [ %.1402.1, %.lr.ph484 ]
  %.1.lcssa.ph = phi double [ poison, %.lr.ph484.preheader ], [ %.1.1, %.lr.ph484 ]
  %indvars.iv.unr = phi i64 [ %289, %.lr.ph484.preheader ], [ %indvars.iv.next.1, %.lr.ph484 ]
  %.0483.unr = phi double [ %291, %.lr.ph484.preheader ], [ %.1.1, %.lr.ph484 ]
  %.0401482.unr = phi i32 [ 0, %.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
  %304 = getelementptr double, ptr %12, i64 %indvars.iv.unr
  %305 = load double, ptr %304, align 8, !tbaa !9
  %306 = fcmp olt double %305, %.0483.unr
  %307 = trunc i64 %indvars.iv.unr to i32
  %308 = add i32 %307, 1
  %.1402.epil = select i1 %306, i32 %308, i32 %.0401482.unr
  %.1.epil = select i1 %306, double %305, double %.0483.unr
  br label %._crit_edge

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

309:                                              ; preds = %._crit_edge
  %310 = sext i32 %.1402.lcssa to i64
  %311 = getelementptr inbounds i32, ptr %51, i64 %310
  %312 = load i32, ptr %311, align 4, !tbaa !5
  %313 = getelementptr inbounds double, ptr %44, i64 %310
  store double %291, ptr %313, align 8, !tbaa !9
  %314 = getelementptr inbounds i32, ptr %51, i64 %289
  %315 = load i32, ptr %314, align 4, !tbaa !5
  store i32 %315, ptr %311, align 4, !tbaa !5
  store double %.1.lcssa, ptr %290, align 8, !tbaa !9
  store i32 %312, ptr %314, align 4, !tbaa !5
  %316 = mul nsw i32 %.1402.lcssa, %45
  %317 = sext i32 %316 to i64
  %gep487 = getelementptr %struct.doublecomplex, ptr %invariant.gep486, i64 %317
  %318 = mul nsw i32 %storemerge438491, %45
  %319 = sext i32 %318 to i64
  %gep489 = getelementptr %struct.doublecomplex, ptr %invariant.gep486, i64 %319
  call void @zswap_(ptr noundef nonnull %3, ptr noundef %gep487, ptr noundef nonnull @c__1, ptr noundef %gep489, ptr noundef nonnull @c__1) #5
  %.pre = load i32, ptr %28, align 4, !tbaa !5
  %.pre496 = load i32, ptr %24, align 4, !tbaa !5
  br label %._crit_edge.thread

._crit_edge.thread:                               ; preds = %.lr.ph493, %._crit_edge, %309
  %320 = phi i32 [ %288, %._crit_edge ], [ %.pre496, %309 ], [ %288, %.lr.ph493 ]
  %321 = phi i32 [ %storemerge438491, %._crit_edge ], [ %.pre, %309 ], [ %storemerge438491, %.lr.ph493 ]
  %322 = add nsw i32 %321, 1
  store i32 %322, ptr %28, align 4, !tbaa !5
  %.not439.not = icmp slt i32 %321, %320
  br i1 %.not439.not, label %.lr.ph493, label %.loopexit, !llvm.loop !19

.loopexit:                                        ; preds = %._crit_edge.thread, %285, %284
  store double %119, ptr %16, align 8, !tbaa !11
  store double 0.000000e+00, ptr %120, align 8, !tbaa !13
  store double %121, ptr %18, align 8, !tbaa !9
  store i32 %73, ptr %20, align 4, !tbaa !5
  br label %323

323:                                              ; preds = %151, %152, %133, %.loopexit, %136, %.thread456
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr nonnull %36) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %35) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %34) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %33) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #5
  ret void
}

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

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

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

declare i32 @xerbla_(ptr noundef, ptr noundef, i32 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 void @zdscal_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @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 void @dcopy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare void @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 void @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 void @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 void @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 void @dscal_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.umin.i32(i32, i32) #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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = !{!12, !10, i64 0}
!12 = !{!"", !10, i64 0, !10, i64 8}
!13 = !{!12, !10, i64 8}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = distinct !{!16, !15}
!17 = !{!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