; LLVM IR from OpenMathLib/OpenBLAS :: lapack-netlib/SRC (zheevr_2stage)

; 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 [14 x i8], align 1
@c_n1 = external hidden global i32, align 4
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [14 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_2stage_(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 i32, align 4
  %84 = alloca i32, align 4
  %85 = alloca i32, align 4
  %86 = alloca double, align 8
  %87 = alloca double, align 8
  %88 = alloca double, align 8
  %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 i32, align 4
  %98 = alloca i32, align 4
  %99 = alloca i32, align 4
  %100 = alloca double, align 8
  %101 = alloca i32, align 4
  %102 = alloca double, align 8
  %103 = alloca double, align 8
  %104 = alloca double, align 8
  %105 = alloca i32, align 4
  %106 = alloca i32, align 4
  %107 = alloca double, align 8
  %108 = 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 4, ptr %83) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #4
  call void @llvm.lifetime.start.p0(i64 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 4, 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 4, ptr %101) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %105) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %106) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #4
  %109 = load ptr, ptr %29, align 8, !tbaa !5
  %110 = load i32, ptr %109, align 4, !tbaa !9
  store i32 %110, ptr %47, align 4, !tbaa !9
  %111 = load i32, ptr %47, align 4, !tbaa !9
  %112 = mul nsw i32 %111, 1
  %113 = add nsw i32 1, %112
  store i32 %113, ptr %48, align 4, !tbaa !9
  %114 = load i32, ptr %48, align 4, !tbaa !9
  %115 = load ptr, ptr %28, align 8, !tbaa !5
  %116 = sext i32 %114 to i64
  %117 = sub i64 0, %116
  %118 = getelementptr inbounds %struct.doublecomplex, ptr %115, i64 %117
  store ptr %118, ptr %28, align 8, !tbaa !5
  %119 = load ptr, ptr %36, align 8, !tbaa !5
  %120 = getelementptr inbounds double, ptr %119, i32 -1
  store ptr %120, ptr %36, align 8, !tbaa !5
  %121 = load ptr, ptr %38, align 8, !tbaa !5
  %122 = load i32, ptr %121, align 4, !tbaa !9
  store i32 %122, ptr %49, align 4, !tbaa !9
  %123 = load i32, ptr %49, align 4, !tbaa !9
  %124 = mul nsw i32 %123, 1
  %125 = add nsw i32 1, %124
  store i32 %125, ptr %50, align 4, !tbaa !9
  %126 = load i32, ptr %50, align 4, !tbaa !9
  %127 = load ptr, ptr %37, align 8, !tbaa !5
  %128 = sext i32 %126 to i64
  %129 = sub i64 0, %128
  %130 = getelementptr inbounds %struct.doublecomplex, ptr %127, i64 %129
  store ptr %130, ptr %37, align 8, !tbaa !5
  %131 = load ptr, ptr %39, align 8, !tbaa !5
  %132 = getelementptr inbounds i32, ptr %131, i32 -1
  store ptr %132, ptr %39, align 8, !tbaa !5
  %133 = load ptr, ptr %40, align 8, !tbaa !5
  %134 = getelementptr inbounds %struct.doublecomplex, ptr %133, i32 -1
  store ptr %134, ptr %40, align 8, !tbaa !5
  %135 = load ptr, ptr %42, align 8, !tbaa !5
  %136 = getelementptr inbounds double, ptr %135, i32 -1
  store ptr %136, ptr %42, align 8, !tbaa !5
  %137 = load ptr, ptr %44, align 8, !tbaa !5
  %138 = getelementptr inbounds i32, ptr %137, i32 -1
  store ptr %138, ptr %44, align 8, !tbaa !5
  %139 = 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 %139, ptr %80, align 4, !tbaa !9
  %140 = load ptr, ptr %26, align 8, !tbaa !5
  %141 = call i32 @lsame_(ptr noundef %140, ptr noundef @.str.2)
  store i32 %141, ptr %71, align 4, !tbaa !9
  %142 = load ptr, ptr %24, align 8, !tbaa !5
  %143 = call i32 @lsame_(ptr noundef %142, ptr noundef @.str.3)
  store i32 %143, ptr %73, align 4, !tbaa !9
  %144 = load ptr, ptr %25, align 8, !tbaa !5
  %145 = call i32 @lsame_(ptr noundef %144, ptr noundef @.str.4)
  store i32 %145, ptr %77, align 4, !tbaa !9
  %146 = load ptr, ptr %25, align 8, !tbaa !5
  %147 = call i32 @lsame_(ptr noundef %146, ptr noundef @.str.3)
  store i32 %147, ptr %85, align 4, !tbaa !9
  %148 = load ptr, ptr %25, align 8, !tbaa !5
  %149 = call i32 @lsame_(ptr noundef %148, ptr noundef @.str.5)
  store i32 %149, ptr %78, align 4, !tbaa !9
  %150 = load ptr, ptr %41, align 8, !tbaa !5
  %151 = load i32, ptr %150, align 4, !tbaa !9
  %152 = icmp eq i32 %151, -1
  br i1 %152, label %161, label %153

153:                                              ; preds = %23
  %154 = load ptr, ptr %43, align 8, !tbaa !5
  %155 = load i32, ptr %154, align 4, !tbaa !9
  %156 = icmp eq i32 %155, -1
  br i1 %156, label %161, label %157

157:                                              ; preds = %153
  %158 = load ptr, ptr %45, align 8, !tbaa !5
  %159 = load i32, ptr %158, align 4, !tbaa !9
  %160 = icmp eq i32 %159, -1
  br label %161

161:                                              ; preds = %157, %153, %23
  %162 = phi i1 [ true, %153 ], [ true, %23 ], [ %160, %157 ]
  %163 = zext i1 %162 to i32
  store i32 %163, ptr %101, align 4, !tbaa !9
  %164 = load ptr, ptr %24, align 8, !tbaa !5
  %165 = load ptr, ptr %27, align 8, !tbaa !5
  %166 = call i32 @ilaenv2stage_(ptr noundef @c__1, ptr noundef @.str.6, ptr noundef %164, ptr noundef %165, ptr noundef @c_n1, ptr noundef @c_n1, ptr noundef @c_n1)
  store i32 %166, ptr %75, align 4, !tbaa !9
  %167 = load ptr, ptr %24, align 8, !tbaa !5
  %168 = load ptr, ptr %27, align 8, !tbaa !5
  %169 = call i32 @ilaenv2stage_(ptr noundef @c__2, ptr noundef @.str.6, ptr noundef %167, ptr noundef %168, ptr noundef %75, ptr noundef @c_n1, ptr noundef @c_n1)
  store i32 %169, ptr %74, align 4, !tbaa !9
  %170 = load ptr, ptr %24, align 8, !tbaa !5
  %171 = load ptr, ptr %27, align 8, !tbaa !5
  %172 = call i32 @ilaenv2stage_(ptr noundef @c__3, ptr noundef @.str.6, ptr noundef %170, ptr noundef %171, ptr noundef %75, ptr noundef %74, ptr noundef @c_n1)
  store i32 %172, ptr %69, align 4, !tbaa !9
  %173 = load ptr, ptr %24, align 8, !tbaa !5
  %174 = load ptr, ptr %27, align 8, !tbaa !5
  %175 = call i32 @ilaenv2stage_(ptr noundef @c__4, ptr noundef @.str.6, ptr noundef %173, ptr noundef %174, ptr noundef %75, ptr noundef %74, ptr noundef @c_n1)
  store i32 %175, ptr %72, align 4, !tbaa !9
  %176 = load ptr, ptr %27, align 8, !tbaa !5
  %177 = load i32, ptr %176, align 4, !tbaa !9
  %178 = load i32, ptr %69, align 4, !tbaa !9
  %179 = add nsw i32 %177, %178
  %180 = load i32, ptr %72, align 4, !tbaa !9
  %181 = add nsw i32 %179, %180
  store i32 %181, ptr %70, align 4, !tbaa !9
  store i32 1, ptr %51, align 4, !tbaa !9
  %182 = load ptr, ptr %27, align 8, !tbaa !5
  %183 = load i32, ptr %182, align 4, !tbaa !9
  %184 = mul nsw i32 %183, 24
  store i32 %184, ptr %52, align 4, !tbaa !9
  %185 = load i32, ptr %51, align 4, !tbaa !9
  %186 = load i32, ptr %52, align 4, !tbaa !9
  %187 = icmp sge i32 %185, %186
  br i1 %187, label %188, label %190

188:                                              ; preds = %161
  %189 = load i32, ptr %51, align 4, !tbaa !9
  br label %192

190:                                              ; preds = %161
  %191 = load i32, ptr %52, align 4, !tbaa !9
  br label %192

192:                                              ; preds = %190, %188
  %193 = phi i32 [ %189, %188 ], [ %191, %190 ]
  store i32 %193, ptr %96, align 4, !tbaa !9
  store i32 1, ptr %51, align 4, !tbaa !9
  %194 = load ptr, ptr %27, align 8, !tbaa !5
  %195 = load i32, ptr %194, align 4, !tbaa !9
  %196 = mul nsw i32 %195, 10
  store i32 %196, ptr %52, align 4, !tbaa !9
  %197 = load i32, ptr %51, align 4, !tbaa !9
  %198 = load i32, ptr %52, align 4, !tbaa !9
  %199 = icmp sge i32 %197, %198
  br i1 %199, label %200, label %202

200:                                              ; preds = %192
  %201 = load i32, ptr %51, align 4, !tbaa !9
  br label %204

202:                                              ; preds = %192
  %203 = load i32, ptr %52, align 4, !tbaa !9
  br label %204

204:                                              ; preds = %202, %200
  %205 = phi i32 [ %201, %200 ], [ %203, %202 ]
  store i32 %205, ptr %94, align 4, !tbaa !9
  %206 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 0, ptr %206, align 4, !tbaa !9
  %207 = load ptr, ptr %24, align 8, !tbaa !5
  %208 = call i32 @lsame_(ptr noundef %207, ptr noundef @.str.1)
  %209 = icmp ne i32 %208, 0
  br i1 %209, label %212, label %210

210:                                              ; preds = %204
  %211 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -1, ptr %211, align 4, !tbaa !9
  br label %324

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

215:                                              ; preds = %212
  %216 = load i32, ptr %85, align 4, !tbaa !9
  %217 = icmp ne i32 %216, 0
  br i1 %217, label %223, label %218

218:                                              ; preds = %215
  %219 = load i32, ptr %78, align 4, !tbaa !9
  %220 = icmp ne i32 %219, 0
  br i1 %220, label %223, label %221

221:                                              ; preds = %218
  %222 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -2, ptr %222, align 4, !tbaa !9
  br label %323

223:                                              ; preds = %218, %215, %212
  %224 = load i32, ptr %71, align 4, !tbaa !9
  %225 = icmp ne i32 %224, 0
  br i1 %225, label %232, label %226

226:                                              ; preds = %223
  %227 = load ptr, ptr %26, align 8, !tbaa !5
  %228 = call i32 @lsame_(ptr noundef %227, ptr noundef @.str.7)
  %229 = icmp ne i32 %228, 0
  br i1 %229, label %232, label %230

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

232:                                              ; preds = %226, %223
  %233 = load ptr, ptr %27, align 8, !tbaa !5
  %234 = load i32, ptr %233, align 4, !tbaa !9
  %235 = icmp slt i32 %234, 0
  br i1 %235, label %236, label %238

236:                                              ; preds = %232
  %237 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -4, ptr %237, align 4, !tbaa !9
  br label %321

238:                                              ; preds = %232
  %239 = load ptr, ptr %29, align 8, !tbaa !5
  %240 = load i32, ptr %239, align 4, !tbaa !9
  %241 = load ptr, ptr %27, align 8, !tbaa !5
  %242 = load i32, ptr %241, align 4, !tbaa !9
  %243 = icmp sge i32 1, %242
  br i1 %243, label %244, label %245

244:                                              ; preds = %238
  br label %248

245:                                              ; preds = %238
  %246 = load ptr, ptr %27, align 8, !tbaa !5
  %247 = load i32, ptr %246, align 4, !tbaa !9
  br label %248

248:                                              ; preds = %245, %244
  %249 = phi i32 [ 1, %244 ], [ %247, %245 ]
  %250 = icmp slt i32 %240, %249
  br i1 %250, label %251, label %253

251:                                              ; preds = %248
  %252 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -6, ptr %252, align 4, !tbaa !9
  br label %320

253:                                              ; preds = %248
  %254 = load i32, ptr %85, align 4, !tbaa !9
  %255 = icmp ne i32 %254, 0
  br i1 %255, label %256, label %269

256:                                              ; preds = %253
  %257 = load ptr, ptr %27, align 8, !tbaa !5
  %258 = load i32, ptr %257, align 4, !tbaa !9
  %259 = icmp sgt i32 %258, 0
  br i1 %259, label %260, label %268

260:                                              ; preds = %256
  %261 = load ptr, ptr %31, align 8, !tbaa !5
  %262 = load double, ptr %261, align 8, !tbaa !11
  %263 = load ptr, ptr %30, align 8, !tbaa !5
  %264 = load double, ptr %263, align 8, !tbaa !11
  %265 = fcmp ole double %262, %264
  br i1 %265, label %266, label %268

266:                                              ; preds = %260
  %267 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -8, ptr %267, align 4, !tbaa !9
  br label %268

268:                                              ; preds = %266, %260, %256
  br label %319

269:                                              ; preds = %253
  %270 = load i32, ptr %78, align 4, !tbaa !9
  %271 = icmp ne i32 %270, 0
  br i1 %271, label %272, label %318

272:                                              ; preds = %269
  %273 = load ptr, ptr %32, align 8, !tbaa !5
  %274 = load i32, ptr %273, align 4, !tbaa !9
  %275 = icmp slt i32 %274, 1
  br i1 %275, label %289, label %276

276:                                              ; preds = %272
  %277 = load ptr, ptr %32, align 8, !tbaa !5
  %278 = load i32, ptr %277, align 4, !tbaa !9
  %279 = load ptr, ptr %27, align 8, !tbaa !5
  %280 = load i32, ptr %279, align 4, !tbaa !9
  %281 = icmp sge i32 1, %280
  br i1 %281, label %282, label %283

282:                                              ; preds = %276
  br label %286

283:                                              ; preds = %276
  %284 = load ptr, ptr %27, align 8, !tbaa !5
  %285 = load i32, ptr %284, align 4, !tbaa !9
  br label %286

286:                                              ; preds = %283, %282
  %287 = phi i32 [ 1, %282 ], [ %285, %283 ]
  %288 = icmp sgt i32 %278, %287
  br i1 %288, label %289, label %291

289:                                              ; preds = %286, %272
  %290 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -9, ptr %290, align 4, !tbaa !9
  br label %317

291:                                              ; preds = %286
  %292 = load ptr, ptr %33, align 8, !tbaa !5
  %293 = load i32, ptr %292, align 4, !tbaa !9
  %294 = load ptr, ptr %27, align 8, !tbaa !5
  %295 = load i32, ptr %294, align 4, !tbaa !9
  %296 = load ptr, ptr %32, align 8, !tbaa !5
  %297 = load i32, ptr %296, align 4, !tbaa !9
  %298 = icmp sle i32 %295, %297
  br i1 %298, label %299, label %302

299:                                              ; preds = %291
  %300 = load ptr, ptr %27, align 8, !tbaa !5
  %301 = load i32, ptr %300, align 4, !tbaa !9
  br label %305

302:                                              ; preds = %291
  %303 = load ptr, ptr %32, align 8, !tbaa !5
  %304 = load i32, ptr %303, align 4, !tbaa !9
  br label %305

305:                                              ; preds = %302, %299
  %306 = phi i32 [ %301, %299 ], [ %304, %302 ]
  %307 = icmp slt i32 %293, %306
  br i1 %307, label %314, label %308

308:                                              ; preds = %305
  %309 = load ptr, ptr %33, align 8, !tbaa !5
  %310 = load i32, ptr %309, align 4, !tbaa !9
  %311 = load ptr, ptr %27, align 8, !tbaa !5
  %312 = load i32, ptr %311, align 4, !tbaa !9
  %313 = icmp sgt i32 %310, %312
  br i1 %313, label %314, label %316

314:                                              ; preds = %308, %305
  %315 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -10, ptr %315, align 4, !tbaa !9
  br label %316

316:                                              ; preds = %314, %308
  br label %317

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

318:                                              ; preds = %317, %269
  br label %319

319:                                              ; preds = %318, %268
  br label %320

320:                                              ; preds = %319, %251
  br label %321

321:                                              ; preds = %320, %236
  br label %322

322:                                              ; preds = %321, %230
  br label %323

323:                                              ; preds = %322, %221
  br label %324

324:                                              ; preds = %323, %210
  %325 = load ptr, ptr %46, align 8, !tbaa !5
  %326 = load i32, ptr %325, align 4, !tbaa !9
  %327 = icmp eq i32 %326, 0
  br i1 %327, label %328, label %344

328:                                              ; preds = %324
  %329 = load ptr, ptr %38, align 8, !tbaa !5
  %330 = load i32, ptr %329, align 4, !tbaa !9
  %331 = icmp slt i32 %330, 1
  br i1 %331, label %341, label %332

332:                                              ; preds = %328
  %333 = load i32, ptr %73, align 4, !tbaa !9
  %334 = icmp ne i32 %333, 0
  br i1 %334, label %335, label %343

335:                                              ; preds = %332
  %336 = load ptr, ptr %38, align 8, !tbaa !5
  %337 = load i32, ptr %336, align 4, !tbaa !9
  %338 = load ptr, ptr %27, align 8, !tbaa !5
  %339 = load i32, ptr %338, align 4, !tbaa !9
  %340 = icmp slt i32 %337, %339
  br i1 %340, label %341, label %343

341:                                              ; preds = %335, %328
  %342 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -15, ptr %342, align 4, !tbaa !9
  br label %343

343:                                              ; preds = %341, %335, %332
  br label %344

344:                                              ; preds = %343, %324
  %345 = load ptr, ptr %46, align 8, !tbaa !5
  %346 = load i32, ptr %345, align 4, !tbaa !9
  %347 = icmp eq i32 %346, 0
  br i1 %347, label %348, label %396

348:                                              ; preds = %344
  %349 = load i32, ptr %70, align 4, !tbaa !9
  %350 = sitofp i32 %349 to double
  %351 = load ptr, ptr %40, align 8, !tbaa !5
  %352 = getelementptr inbounds %struct.doublecomplex, ptr %351, i64 1
  %353 = getelementptr inbounds %struct.doublecomplex, ptr %352, i32 0, i32 0
  store double %350, ptr %353, align 8, !tbaa !13
  %354 = load ptr, ptr %40, align 8, !tbaa !5
  %355 = getelementptr inbounds %struct.doublecomplex, ptr %354, i64 1
  %356 = getelementptr inbounds %struct.doublecomplex, ptr %355, i32 0, i32 1
  store double 0.000000e+00, ptr %356, align 8, !tbaa !15
  %357 = load i32, ptr %96, align 4, !tbaa !9
  %358 = sitofp i32 %357 to double
  %359 = load ptr, ptr %42, align 8, !tbaa !5
  %360 = getelementptr inbounds double, ptr %359, i64 1
  store double %358, ptr %360, align 8, !tbaa !11
  %361 = load i32, ptr %94, align 4, !tbaa !9
  %362 = load ptr, ptr %44, align 8, !tbaa !5
  %363 = getelementptr inbounds i32, ptr %362, i64 1
  store i32 %361, ptr %363, align 4, !tbaa !9
  %364 = load ptr, ptr %41, align 8, !tbaa !5
  %365 = load i32, ptr %364, align 4, !tbaa !9
  %366 = load i32, ptr %70, align 4, !tbaa !9
  %367 = icmp slt i32 %365, %366
  br i1 %367, label %368, label %373

368:                                              ; preds = %348
  %369 = load i32, ptr %101, align 4, !tbaa !9
  %370 = icmp ne i32 %369, 0
  br i1 %370, label %373, label %371

371:                                              ; preds = %368
  %372 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -18, ptr %372, align 4, !tbaa !9
  br label %395

373:                                              ; preds = %368, %348
  %374 = load ptr, ptr %43, align 8, !tbaa !5
  %375 = load i32, ptr %374, align 4, !tbaa !9
  %376 = load i32, ptr %96, align 4, !tbaa !9
  %377 = icmp slt i32 %375, %376
  br i1 %377, label %378, label %383

378:                                              ; preds = %373
  %379 = load i32, ptr %101, align 4, !tbaa !9
  %380 = icmp ne i32 %379, 0
  br i1 %380, label %383, label %381

381:                                              ; preds = %378
  %382 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -20, ptr %382, align 4, !tbaa !9
  br label %394

383:                                              ; preds = %378, %373
  %384 = load ptr, ptr %45, align 8, !tbaa !5
  %385 = load i32, ptr %384, align 4, !tbaa !9
  %386 = load i32, ptr %94, align 4, !tbaa !9
  %387 = icmp slt i32 %385, %386
  br i1 %387, label %388, label %393

388:                                              ; preds = %383
  %389 = load i32, ptr %101, align 4, !tbaa !9
  %390 = icmp ne i32 %389, 0
  br i1 %390, label %393, label %391

391:                                              ; preds = %388
  %392 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -22, ptr %392, align 4, !tbaa !9
  br label %393

393:                                              ; preds = %391, %388, %383
  br label %394

394:                                              ; preds = %393, %381
  br label %395

395:                                              ; preds = %394, %371
  br label %396

396:                                              ; preds = %395, %344
  %397 = load ptr, ptr %46, align 8, !tbaa !5
  %398 = load i32, ptr %397, align 4, !tbaa !9
  %399 = icmp ne i32 %398, 0
  br i1 %399, label %400, label %405

400:                                              ; preds = %396
  %401 = load ptr, ptr %46, align 8, !tbaa !5
  %402 = load i32, ptr %401, align 4, !tbaa !9
  %403 = sub nsw i32 0, %402
  store i32 %403, ptr %51, align 4, !tbaa !9
  %404 = call i32 @xerbla_(ptr noundef @.str.8, ptr noundef %51, i32 noundef 13)
  store i32 1, ptr %108, align 4
  br label %1140

405:                                              ; preds = %396
  %406 = load i32, ptr %101, align 4, !tbaa !9
  %407 = icmp ne i32 %406, 0
  br i1 %407, label %408, label %409

408:                                              ; preds = %405
  store i32 1, ptr %108, align 4
  br label %1140

409:                                              ; preds = %405
  br label %410

410:                                              ; preds = %409
  %411 = load ptr, ptr %35, align 8, !tbaa !5
  store i32 0, ptr %411, align 4, !tbaa !9
  %412 = load ptr, ptr %27, align 8, !tbaa !5
  %413 = load i32, ptr %412, align 4, !tbaa !9
  %414 = icmp eq i32 %413, 0
  br i1 %414, label %415, label %422

415:                                              ; preds = %410
  %416 = load ptr, ptr %40, align 8, !tbaa !5
  %417 = getelementptr inbounds %struct.doublecomplex, ptr %416, i64 1
  %418 = getelementptr inbounds %struct.doublecomplex, ptr %417, i32 0, i32 0
  store double 1.000000e+00, ptr %418, align 8, !tbaa !13
  %419 = load ptr, ptr %40, align 8, !tbaa !5
  %420 = getelementptr inbounds %struct.doublecomplex, ptr %419, i64 1
  %421 = getelementptr inbounds %struct.doublecomplex, ptr %420, i32 0, i32 1
  store double 0.000000e+00, ptr %421, align 8, !tbaa !15
  store i32 1, ptr %108, align 4
  br label %1140

422:                                              ; preds = %410
  %423 = load ptr, ptr %27, align 8, !tbaa !5
  %424 = load i32, ptr %423, align 4, !tbaa !9
  %425 = icmp eq i32 %424, 1
  br i1 %425, label %426, label %508

426:                                              ; preds = %422
  %427 = load ptr, ptr %40, align 8, !tbaa !5
  %428 = getelementptr inbounds %struct.doublecomplex, ptr %427, i64 1
  %429 = getelementptr inbounds %struct.doublecomplex, ptr %428, i32 0, i32 0
  store double 2.000000e+00, ptr %429, align 8, !tbaa !13
  %430 = load ptr, ptr %40, align 8, !tbaa !5
  %431 = getelementptr inbounds %struct.doublecomplex, ptr %430, i64 1
  %432 = getelementptr inbounds %struct.doublecomplex, ptr %431, i32 0, i32 1
  store double 0.000000e+00, ptr %432, align 8, !tbaa !15
  %433 = load i32, ptr %77, align 4, !tbaa !9
  %434 = icmp ne i32 %433, 0
  br i1 %434, label %438, label %435

435:                                              ; preds = %426
  %436 = load i32, ptr %78, align 4, !tbaa !9
  %437 = icmp ne i32 %436, 0
  br i1 %437, label %438, label %450

438:                                              ; preds = %435, %426
  %439 = load ptr, ptr %35, align 8, !tbaa !5
  store i32 1, ptr %439, align 4, !tbaa !9
  %440 = load i32, ptr %47, align 4, !tbaa !9
  %441 = add nsw i32 %440, 1
  store i32 %441, ptr %51, align 4, !tbaa !9
  %442 = load ptr, ptr %28, align 8, !tbaa !5
  %443 = load i32, ptr %51, align 4, !tbaa !9
  %444 = sext i32 %443 to i64
  %445 = getelementptr inbounds %struct.doublecomplex, ptr %442, i64 %444
  %446 = getelementptr inbounds %struct.doublecomplex, ptr %445, i32 0, i32 0
  %447 = load double, ptr %446, align 8, !tbaa !13
  %448 = load ptr, ptr %36, align 8, !tbaa !5
  %449 = getelementptr inbounds double, ptr %448, i64 1
  store double %447, ptr %449, align 8, !tbaa !11
  br label %487

450:                                              ; preds = %435
  %451 = load i32, ptr %47, align 4, !tbaa !9
  %452 = add nsw i32 %451, 1
  store i32 %452, ptr %51, align 4, !tbaa !9
  %453 = load i32, ptr %47, align 4, !tbaa !9
  %454 = add nsw i32 %453, 1
  store i32 %454, ptr %52, align 4, !tbaa !9
  %455 = load ptr, ptr %30, align 8, !tbaa !5
  %456 = load double, ptr %455, align 8, !tbaa !11
  %457 = load ptr, ptr %28, align 8, !tbaa !5
  %458 = load i32, ptr %51, align 4, !tbaa !9
  %459 = sext i32 %458 to i64
  %460 = getelementptr inbounds %struct.doublecomplex, ptr %457, i64 %459
  %461 = getelementptr inbounds %struct.doublecomplex, ptr %460, i32 0, i32 0
  %462 = load double, ptr %461, align 8, !tbaa !13
  %463 = fcmp olt double %456, %462
  br i1 %463, label %464, label %486

464:                                              ; preds = %450
  %465 = load ptr, ptr %31, align 8, !tbaa !5
  %466 = load double, ptr %465, align 8, !tbaa !11
  %467 = load ptr, ptr %28, align 8, !tbaa !5
  %468 = load i32, ptr %52, align 4, !tbaa !9
  %469 = sext i32 %468 to i64
  %470 = getelementptr inbounds %struct.doublecomplex, ptr %467, i64 %469
  %471 = getelementptr inbounds %struct.doublecomplex, ptr %470, i32 0, i32 0
  %472 = load double, ptr %471, align 8, !tbaa !13
  %473 = fcmp oge double %466, %472
  br i1 %473, label %474, label %486

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

486:                                              ; preds = %474, %464, %450
  br label %487

487:                                              ; preds = %486, %438
  %488 = load i32, ptr %73, align 4, !tbaa !9
  %489 = icmp ne i32 %488, 0
  br i1 %489, label %490, label %507

490:                                              ; preds = %487
  %491 = load i32, ptr %49, align 4, !tbaa !9
  %492 = add nsw i32 %491, 1
  store i32 %492, ptr %51, align 4, !tbaa !9
  %493 = load ptr, ptr %37, align 8, !tbaa !5
  %494 = load i32, ptr %51, align 4, !tbaa !9
  %495 = sext i32 %494 to i64
  %496 = getelementptr inbounds %struct.doublecomplex, ptr %493, i64 %495
  %497 = getelementptr inbounds %struct.doublecomplex, ptr %496, i32 0, i32 0
  store double 1.000000e+00, ptr %497, align 8, !tbaa !13
  %498 = load ptr, ptr %37, align 8, !tbaa !5
  %499 = load i32, ptr %51, align 4, !tbaa !9
  %500 = sext i32 %499 to i64
  %501 = getelementptr inbounds %struct.doublecomplex, ptr %498, i64 %500
  %502 = getelementptr inbounds %struct.doublecomplex, ptr %501, i32 0, i32 1
  store double 0.000000e+00, ptr %502, align 8, !tbaa !15
  %503 = load ptr, ptr %39, align 8, !tbaa !5
  %504 = getelementptr inbounds i32, ptr %503, i64 1
  store i32 1, ptr %504, align 4, !tbaa !9
  %505 = load ptr, ptr %39, align 8, !tbaa !5
  %506 = getelementptr inbounds i32, ptr %505, i64 2
  store i32 1, ptr %506, align 4, !tbaa !9
  br label %507

507:                                              ; preds = %490, %487
  store i32 1, ptr %108, align 4
  br label %1140

508:                                              ; preds = %422
  %509 = call double @dlamch_(ptr noundef @.str.9)
  store double %509, ptr %86, align 8, !tbaa !11
  %510 = call double @dlamch_(ptr noundef @.str.10)
  store double %510, ptr %102, align 8, !tbaa !11
  %511 = load double, ptr %86, align 8, !tbaa !11
  %512 = load double, ptr %102, align 8, !tbaa !11
  %513 = fdiv double %511, %512
  store double %513, ptr %100, align 8, !tbaa !11
  %514 = load double, ptr %100, align 8, !tbaa !11
  %515 = fdiv double 1.000000e+00, %514
  store double %515, ptr %88, align 8, !tbaa !11
  %516 = load double, ptr %100, align 8, !tbaa !11
  %517 = call double @sqrt(double noundef %516) #4
  store double %517, ptr %57, align 8, !tbaa !11
  %518 = load double, ptr %88, align 8, !tbaa !11
  %519 = call double @sqrt(double noundef %518) #4
  store double %519, ptr %53, align 8, !tbaa !11
  %520 = load double, ptr %86, align 8, !tbaa !11
  %521 = call double @sqrt(double noundef %520) #4
  %522 = call double @sqrt(double noundef %521) #4
  %523 = fdiv double 1.000000e+00, %522
  store double %523, ptr %54, align 8, !tbaa !11
  %524 = load double, ptr %53, align 8, !tbaa !11
  %525 = load double, ptr %54, align 8, !tbaa !11
  %526 = fcmp ole double %524, %525
  br i1 %526, label %527, label %529

527:                                              ; preds = %508
  %528 = load double, ptr %53, align 8, !tbaa !11
  br label %531

529:                                              ; preds = %508
  %530 = load double, ptr %54, align 8, !tbaa !11
  br label %531

531:                                              ; preds = %529, %527
  %532 = phi double [ %528, %527 ], [ %530, %529 ]
  store double %532, ptr %58, align 8, !tbaa !11
  store i32 0, ptr %79, align 4, !tbaa !9
  %533 = load ptr, ptr %34, align 8, !tbaa !5
  %534 = load double, ptr %533, align 8, !tbaa !11
  store double %534, ptr %87, align 8, !tbaa !11
  %535 = load i32, ptr %85, align 4, !tbaa !9
  %536 = icmp ne i32 %535, 0
  br i1 %536, label %537, label %542

537:                                              ; preds = %531
  %538 = load ptr, ptr %30, align 8, !tbaa !5
  %539 = load double, ptr %538, align 8, !tbaa !11
  store double %539, ptr %103, align 8, !tbaa !11
  %540 = load ptr, ptr %31, align 8, !tbaa !5
  %541 = load double, ptr %540, align 8, !tbaa !11
  store double %541, ptr %104, align 8, !tbaa !11
  br label %542

542:                                              ; preds = %537, %531
  %543 = load ptr, ptr %26, align 8, !tbaa !5
  %544 = load ptr, ptr %27, align 8, !tbaa !5
  %545 = load ptr, ptr %28, align 8, !tbaa !5
  %546 = load i32, ptr %48, align 4, !tbaa !9
  %547 = sext i32 %546 to i64
  %548 = getelementptr inbounds %struct.doublecomplex, ptr %545, i64 %547
  %549 = load ptr, ptr %29, align 8, !tbaa !5
  %550 = load ptr, ptr %42, align 8, !tbaa !5
  %551 = getelementptr inbounds double, ptr %550, i64 1
  %552 = call double @zlansy_(ptr noundef @.str.11, ptr noundef %543, ptr noundef %544, ptr noundef %548, ptr noundef %549, ptr noundef %551)
  store double %552, ptr %55, align 8, !tbaa !11
  %553 = load double, ptr %55, align 8, !tbaa !11
  %554 = fcmp ogt double %553, 0.000000e+00
  br i1 %554, label %555, label %563

555:                                              ; preds = %542
  %556 = load double, ptr %55, align 8, !tbaa !11
  %557 = load double, ptr %57, align 8, !tbaa !11
  %558 = fcmp olt double %556, %557
  br i1 %558, label %559, label %563

559:                                              ; preds = %555
  store i32 1, ptr %79, align 4, !tbaa !9
  %560 = load double, ptr %57, align 8, !tbaa !11
  %561 = load double, ptr %55, align 8, !tbaa !11
  %562 = fdiv double %560, %561
  store double %562, ptr %65, align 8, !tbaa !11
  br label %572

563:                                              ; preds = %555, %542
  %564 = load double, ptr %55, align 8, !tbaa !11
  %565 = load double, ptr %58, align 8, !tbaa !11
  %566 = fcmp ogt double %564, %565
  br i1 %566, label %567, label %571

567:                                              ; preds = %563
  store i32 1, ptr %79, align 4, !tbaa !9
  %568 = load double, ptr %58, align 8, !tbaa !11
  %569 = load double, ptr %55, align 8, !tbaa !11
  %570 = fdiv double %568, %569
  store double %570, ptr %65, align 8, !tbaa !11
  br label %571

571:                                              ; preds = %567, %563
  br label %572

572:                                              ; preds = %571, %559
  %573 = load i32, ptr %79, align 4, !tbaa !9
  %574 = icmp eq i32 %573, 1
  br i1 %574, label %575, label %644

575:                                              ; preds = %572
  %576 = load i32, ptr %71, align 4, !tbaa !9
  %577 = icmp ne i32 %576, 0
  br i1 %577, label %578, label %603

578:                                              ; preds = %575
  %579 = load ptr, ptr %27, align 8, !tbaa !5
  %580 = load i32, ptr %579, align 4, !tbaa !9
  store i32 %580, ptr %51, align 4, !tbaa !9
  store i32 1, ptr %62, align 4, !tbaa !9
  br label %581

581:                                              ; preds = %599, %578
  %582 = load i32, ptr %62, align 4, !tbaa !9
  %583 = load i32, ptr %51, align 4, !tbaa !9
  %584 = icmp sle i32 %582, %583
  br i1 %584, label %585, label %602

585:                                              ; preds = %581
  %586 = load ptr, ptr %27, align 8, !tbaa !5
  %587 = load i32, ptr %586, align 4, !tbaa !9
  %588 = load i32, ptr %62, align 4, !tbaa !9
  %589 = sub nsw i32 %587, %588
  %590 = add nsw i32 %589, 1
  store i32 %590, ptr %52, align 4, !tbaa !9
  %591 = load ptr, ptr %28, align 8, !tbaa !5
  %592 = load i32, ptr %62, align 4, !tbaa !9
  %593 = load i32, ptr %62, align 4, !tbaa !9
  %594 = load i32, ptr %47, align 4, !tbaa !9
  %595 = mul nsw i32 %593, %594
  %596 = add nsw i32 %592, %595
  %597 = sext i32 %596 to i64
  %598 = getelementptr inbounds %struct.doublecomplex, ptr %591, i64 %597
  call void @zdscal_(ptr noundef %52, ptr noundef %65, ptr noundef %598, ptr noundef @c__1)
  br label %599

599:                                              ; preds = %585
  %600 = load i32, ptr %62, align 4, !tbaa !9
  %601 = add nsw i32 %600, 1
  store i32 %601, ptr %62, align 4, !tbaa !9
  br label %581, !llvm.loop !16

602:                                              ; preds = %581
  br label %622

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

606:                                              ; preds = %618, %603
  %607 = load i32, ptr %62, align 4, !tbaa !9
  %608 = load i32, ptr %51, align 4, !tbaa !9
  %609 = icmp sle i32 %607, %608
  br i1 %609, label %610, label %621

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

618:                                              ; preds = %610
  %619 = load i32, ptr %62, align 4, !tbaa !9
  %620 = add nsw i32 %619, 1
  store i32 %620, ptr %62, align 4, !tbaa !9
  br label %606, !llvm.loop !18

621:                                              ; preds = %606
  br label %622

622:                                              ; preds = %621, %602
  %623 = load ptr, ptr %34, align 8, !tbaa !5
  %624 = load double, ptr %623, align 8, !tbaa !11
  %625 = fcmp ogt double %624, 0.000000e+00
  br i1 %625, label %626, label %631

626:                                              ; preds = %622
  %627 = load ptr, ptr %34, align 8, !tbaa !5
  %628 = load double, ptr %627, align 8, !tbaa !11
  %629 = load double, ptr %65, align 8, !tbaa !11
  %630 = fmul double %628, %629
  store double %630, ptr %87, align 8, !tbaa !11
  br label %631

631:                                              ; preds = %626, %622
  %632 = load i32, ptr %85, align 4, !tbaa !9
  %633 = icmp ne i32 %632, 0
  br i1 %633, label %634, label %643

634:                                              ; preds = %631
  %635 = load ptr, ptr %30, align 8, !tbaa !5
  %636 = load double, ptr %635, align 8, !tbaa !11
  %637 = load double, ptr %65, align 8, !tbaa !11
  %638 = fmul double %636, %637
  store double %638, ptr %103, align 8, !tbaa !11
  %639 = load ptr, ptr %31, align 8, !tbaa !5
  %640 = load double, ptr %639, align 8, !tbaa !11
  %641 = load double, ptr %65, align 8, !tbaa !11
  %642 = fmul double %640, %641
  store double %642, ptr %104, align 8, !tbaa !11
  br label %643

643:                                              ; preds = %634, %631
  br label %644

644:                                              ; preds = %643, %572
  store i32 1, ptr %89, align 4, !tbaa !9
  %645 = load i32, ptr %89, align 4, !tbaa !9
  %646 = load ptr, ptr %27, align 8, !tbaa !5
  %647 = load i32, ptr %646, align 4, !tbaa !9
  %648 = add nsw i32 %645, %647
  store i32 %648, ptr %105, align 4, !tbaa !9
  %649 = load i32, ptr %105, align 4, !tbaa !9
  %650 = load i32, ptr %69, align 4, !tbaa !9
  %651 = add nsw i32 %649, %650
  store i32 %651, ptr %68, align 4, !tbaa !9
  %652 = load ptr, ptr %41, align 8, !tbaa !5
  %653 = load i32, ptr %652, align 4, !tbaa !9
  %654 = load i32, ptr %68, align 4, !tbaa !9
  %655 = sub nsw i32 %653, %654
  %656 = add nsw i32 %655, 1
  store i32 %656, ptr %98, align 4, !tbaa !9
  store i32 1, ptr %63, align 4, !tbaa !9
  %657 = load i32, ptr %63, align 4, !tbaa !9
  %658 = load ptr, ptr %27, align 8, !tbaa !5
  %659 = load i32, ptr %658, align 4, !tbaa !9
  %660 = add nsw i32 %657, %659
  store i32 %660, ptr %64, align 4, !tbaa !9
  %661 = load i32, ptr %64, align 4, !tbaa !9
  %662 = load ptr, ptr %27, align 8, !tbaa !5
  %663 = load i32, ptr %662, align 4, !tbaa !9
  %664 = add nsw i32 %661, %663
  store i32 %664, ptr %82, align 4, !tbaa !9
  %665 = load i32, ptr %82, align 4, !tbaa !9
  %666 = load ptr, ptr %27, align 8, !tbaa !5
  %667 = load i32, ptr %666, align 4, !tbaa !9
  %668 = add nsw i32 %665, %667
  store i32 %668, ptr %84, align 4, !tbaa !9
  %669 = load i32, ptr %84, 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 %93, align 4, !tbaa !9
  %673 = load ptr, ptr %43, align 8, !tbaa !5
  %674 = load i32, ptr %673, align 4, !tbaa !9
  %675 = load i32, ptr %93, align 4, !tbaa !9
  %676 = sub nsw i32 %674, %675
  %677 = add nsw i32 %676, 1
  store i32 %677, ptr %106, align 4, !tbaa !9
  store i32 1, ptr %81, align 4, !tbaa !9
  %678 = load i32, ptr %81, 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 %90, align 4, !tbaa !9
  %682 = load i32, ptr %90, 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 %83, align 4, !tbaa !9
  %686 = load i32, ptr %83, 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 %91, align 4, !tbaa !9
  %690 = load ptr, ptr %24, align 8, !tbaa !5
  %691 = load ptr, ptr %26, align 8, !tbaa !5
  %692 = load ptr, ptr %27, align 8, !tbaa !5
  %693 = load ptr, ptr %28, align 8, !tbaa !5
  %694 = load i32, ptr %48, align 4, !tbaa !9
  %695 = sext i32 %694 to i64
  %696 = getelementptr inbounds %struct.doublecomplex, ptr %693, i64 %695
  %697 = load ptr, ptr %29, align 8, !tbaa !5
  %698 = load ptr, ptr %42, align 8, !tbaa !5
  %699 = load i32, ptr %63, align 4, !tbaa !9
  %700 = sext i32 %699 to i64
  %701 = getelementptr inbounds double, ptr %698, i64 %700
  %702 = load ptr, ptr %42, align 8, !tbaa !5
  %703 = load i32, ptr %64, align 4, !tbaa !9
  %704 = sext i32 %703 to i64
  %705 = getelementptr inbounds double, ptr %702, i64 %704
  %706 = load ptr, ptr %40, align 8, !tbaa !5
  %707 = load i32, ptr %89, align 4, !tbaa !9
  %708 = sext i32 %707 to i64
  %709 = getelementptr inbounds %struct.doublecomplex, ptr %706, i64 %708
  %710 = load ptr, ptr %40, align 8, !tbaa !5
  %711 = load i32, ptr %105, align 4, !tbaa !9
  %712 = sext i32 %711 to i64
  %713 = getelementptr inbounds %struct.doublecomplex, ptr %710, i64 %712
  %714 = load ptr, ptr %40, align 8, !tbaa !5
  %715 = load i32, ptr %68, align 4, !tbaa !9
  %716 = sext i32 %715 to i64
  %717 = getelementptr inbounds %struct.doublecomplex, ptr %714, i64 %716
  call void @zhetrd_2stage_(ptr noundef %690, ptr noundef %691, ptr noundef %692, ptr noundef %696, ptr noundef %697, ptr noundef %701, ptr noundef %705, ptr noundef %709, ptr noundef %713, ptr noundef %69, ptr noundef %717, ptr noundef %98, ptr noundef %66)
  store i32 0, ptr %59, align 4, !tbaa !9
  %718 = load i32, ptr %78, align 4, !tbaa !9
  %719 = icmp ne i32 %718, 0
  br i1 %719, label %720, label %732

720:                                              ; preds = %644
  %721 = load ptr, ptr %32, align 8, !tbaa !5
  %722 = load i32, ptr %721, align 4, !tbaa !9
  %723 = icmp eq i32 %722, 1
  br i1 %723, label %724, label %731

724:                                              ; preds = %720
  %725 = load ptr, ptr %33, align 8, !tbaa !5
  %726 = load i32, ptr %725, align 4, !tbaa !9
  %727 = load ptr, ptr %27, align 8, !tbaa !5
  %728 = load i32, ptr %727, align 4, !tbaa !9
  %729 = icmp eq i32 %726, %728
  br i1 %729, label %730, label %731

730:                                              ; preds = %724
  store i32 1, ptr %59, align 4, !tbaa !9
  br label %731

731:                                              ; preds = %730, %724, %720
  br label %732

732:                                              ; preds = %731, %644
  %733 = load i32, ptr %77, align 4, !tbaa !9
  %734 = icmp ne i32 %733, 0
  br i1 %734, label %738, label %735

735:                                              ; preds = %732
  %736 = load i32, ptr %59, align 4, !tbaa !9
  %737 = icmp ne i32 %736, 0
  br i1 %737, label %738, label %882

738:                                              ; preds = %735, %732
  %739 = load i32, ptr %80, align 4, !tbaa !9
  %740 = icmp eq i32 %739, 1
  br i1 %740, label %741, label %882

741:                                              ; preds = %738
  %742 = load i32, ptr %73, align 4, !tbaa !9
  %743 = icmp ne i32 %742, 0
  br i1 %743, label %771, label %744

744:                                              ; preds = %741
  %745 = load ptr, ptr %27, align 8, !tbaa !5
  %746 = load ptr, ptr %42, align 8, !tbaa !5
  %747 = load i32, ptr %63, align 4, !tbaa !9
  %748 = sext i32 %747 to i64
  %749 = getelementptr inbounds double, ptr %746, i64 %748
  %750 = load ptr, ptr %36, align 8, !tbaa !5
  %751 = getelementptr inbounds double, ptr %750, i64 1
  call void @dcopy_(ptr noundef %745, ptr noundef %749, ptr noundef @c__1, ptr noundef %751, ptr noundef @c__1)
  %752 = load ptr, ptr %27, align 8, !tbaa !5
  %753 = load i32, ptr %752, align 4, !tbaa !9
  %754 = sub nsw i32 %753, 1
  store i32 %754, ptr %51, align 4, !tbaa !9
  %755 = load ptr, ptr %42, align 8, !tbaa !5
  %756 = load i32, ptr %64, align 4, !tbaa !9
  %757 = sext i32 %756 to i64
  %758 = getelementptr inbounds double, ptr %755, i64 %757
  %759 = load ptr, ptr %42, align 8, !tbaa !5
  %760 = load i32, ptr %84, align 4, !tbaa !9
  %761 = sext i32 %760 to i64
  %762 = getelementptr inbounds double, ptr %759, i64 %761
  call void @dcopy_(ptr noundef %51, ptr noundef %758, ptr noundef @c__1, ptr noundef %762, ptr noundef @c__1)
  %763 = load ptr, ptr %27, align 8, !tbaa !5
  %764 = load ptr, ptr %36, align 8, !tbaa !5
  %765 = getelementptr inbounds double, ptr %764, i64 1
  %766 = load ptr, ptr %42, align 8, !tbaa !5
  %767 = load i32, ptr %84, align 4, !tbaa !9
  %768 = sext i32 %767 to i64
  %769 = getelementptr inbounds double, ptr %766, i64 %768
  %770 = load ptr, ptr %46, align 8, !tbaa !5
  call void @dsterf_(ptr noundef %763, ptr noundef %765, ptr noundef %769, ptr noundef %770)
  br label %872

771:                                              ; preds = %741
  %772 = load ptr, ptr %27, align 8, !tbaa !5
  %773 = load i32, ptr %772, align 4, !tbaa !9
  %774 = sub nsw i32 %773, 1
  store i32 %774, ptr %51, align 4, !tbaa !9
  %775 = load ptr, ptr %42, align 8, !tbaa !5
  %776 = load i32, ptr %64, align 4, !tbaa !9
  %777 = sext i32 %776 to i64
  %778 = getelementptr inbounds double, ptr %775, i64 %777
  %779 = load ptr, ptr %42, align 8, !tbaa !5
  %780 = load i32, ptr %84, align 4, !tbaa !9
  %781 = sext i32 %780 to i64
  %782 = getelementptr inbounds double, ptr %779, i64 %781
  call void @dcopy_(ptr noundef %51, ptr noundef %778, ptr noundef @c__1, ptr noundef %782, ptr noundef @c__1)
  %783 = load ptr, ptr %27, align 8, !tbaa !5
  %784 = load ptr, ptr %42, align 8, !tbaa !5
  %785 = load i32, ptr %63, align 4, !tbaa !9
  %786 = sext i32 %785 to i64
  %787 = getelementptr inbounds double, ptr %784, i64 %786
  %788 = load ptr, ptr %42, align 8, !tbaa !5
  %789 = load i32, ptr %82, align 4, !tbaa !9
  %790 = sext i32 %789 to i64
  %791 = getelementptr inbounds double, ptr %788, i64 %790
  call void @dcopy_(ptr noundef %783, ptr noundef %787, ptr noundef @c__1, ptr noundef %791, ptr noundef @c__1)
  %792 = load ptr, ptr %34, align 8, !tbaa !5
  %793 = load double, ptr %792, align 8, !tbaa !11
  %794 = load ptr, ptr %27, align 8, !tbaa !5
  %795 = load i32, ptr %794, align 4, !tbaa !9
  %796 = sitofp i32 %795 to double
  %797 = fmul double %796, 2.000000e+00
  %798 = load double, ptr %102, align 8, !tbaa !11
  %799 = fmul double %797, %798
  %800 = fcmp ole double %793, %799
  br i1 %800, label %801, label %802

801:                                              ; preds = %771
  store i32 1, ptr %95, align 4, !tbaa !9
  br label %803

802:                                              ; preds = %771
  store i32 0, ptr %95, align 4, !tbaa !9
  br label %803

803:                                              ; preds = %802, %801
  %804 = load ptr, ptr %24, align 8, !tbaa !5
  %805 = load ptr, ptr %27, align 8, !tbaa !5
  %806 = load ptr, ptr %42, align 8, !tbaa !5
  %807 = load i32, ptr %82, align 4, !tbaa !9
  %808 = sext i32 %807 to i64
  %809 = getelementptr inbounds double, ptr %806, i64 %808
  %810 = load ptr, ptr %42, align 8, !tbaa !5
  %811 = load i32, ptr %84, align 4, !tbaa !9
  %812 = sext i32 %811 to i64
  %813 = getelementptr inbounds double, ptr %810, i64 %812
  %814 = load ptr, ptr %30, align 8, !tbaa !5
  %815 = load ptr, ptr %31, align 8, !tbaa !5
  %816 = load ptr, ptr %32, align 8, !tbaa !5
  %817 = load ptr, ptr %33, align 8, !tbaa !5
  %818 = load ptr, ptr %35, align 8, !tbaa !5
  %819 = load ptr, ptr %36, align 8, !tbaa !5
  %820 = getelementptr inbounds double, ptr %819, i64 1
  %821 = load ptr, ptr %37, align 8, !tbaa !5
  %822 = load i32, ptr %50, align 4, !tbaa !9
  %823 = sext i32 %822 to i64
  %824 = getelementptr inbounds %struct.doublecomplex, ptr %821, i64 %823
  %825 = load ptr, ptr %38, align 8, !tbaa !5
  %826 = load ptr, ptr %27, align 8, !tbaa !5
  %827 = load ptr, ptr %39, align 8, !tbaa !5
  %828 = getelementptr inbounds i32, ptr %827, i64 1
  %829 = load ptr, ptr %42, align 8, !tbaa !5
  %830 = load i32, ptr %93, align 4, !tbaa !9
  %831 = sext i32 %830 to i64
  %832 = getelementptr inbounds double, ptr %829, i64 %831
  %833 = load ptr, ptr %44, align 8, !tbaa !5
  %834 = getelementptr inbounds i32, ptr %833, i64 1
  %835 = load ptr, ptr %45, align 8, !tbaa !5
  %836 = load ptr, ptr %46, align 8, !tbaa !5
  call void @zstemr_(ptr noundef %804, ptr noundef @.str.4, ptr noundef %805, ptr noundef %809, ptr noundef %813, ptr noundef %814, ptr noundef %815, ptr noundef %816, ptr noundef %817, ptr noundef %818, ptr noundef %820, ptr noundef %824, ptr noundef %825, ptr noundef %826, ptr noundef %828, ptr noundef %95, ptr noundef %832, ptr noundef %106, ptr noundef %834, ptr noundef %835, ptr noundef %836)
  %837 = load i32, ptr %73, align 4, !tbaa !9
  %838 = icmp ne i32 %837, 0
  br i1 %838, label %839, label %871

839:                                              ; preds = %803
  %840 = load ptr, ptr %46, align 8, !tbaa !5
  %841 = load i32, ptr %840, align 4, !tbaa !9
  %842 = icmp eq i32 %841, 0
  br i1 %842, label %843, label %871

843:                                              ; preds = %839
  %844 = load i32, ptr %68, align 4, !tbaa !9
  store i32 %844, ptr %92, align 4, !tbaa !9
  %845 = load ptr, ptr %41, align 8, !tbaa !5
  %846 = load i32, ptr %845, align 4, !tbaa !9
  %847 = load i32, ptr %92, align 4, !tbaa !9
  %848 = sub nsw i32 %846, %847
  %849 = add nsw i32 %848, 1
  store i32 %849, ptr %97, align 4, !tbaa !9
  %850 = load ptr, ptr %26, align 8, !tbaa !5
  %851 = load ptr, ptr %27, align 8, !tbaa !5
  %852 = load ptr, ptr %35, align 8, !tbaa !5
  %853 = load ptr, ptr %28, align 8, !tbaa !5
  %854 = load i32, ptr %48, align 4, !tbaa !9
  %855 = sext i32 %854 to i64
  %856 = getelementptr inbounds %struct.doublecomplex, ptr %853, i64 %855
  %857 = load ptr, ptr %29, align 8, !tbaa !5
  %858 = load ptr, ptr %40, align 8, !tbaa !5
  %859 = load i32, ptr %89, align 4, !tbaa !9
  %860 = sext i32 %859 to i64
  %861 = getelementptr inbounds %struct.doublecomplex, ptr %858, i64 %860
  %862 = load ptr, ptr %37, align 8, !tbaa !5
  %863 = load i32, ptr %50, align 4, !tbaa !9
  %864 = sext i32 %863 to i64
  %865 = getelementptr inbounds %struct.doublecomplex, ptr %862, i64 %864
  %866 = load ptr, ptr %38, align 8, !tbaa !5
  %867 = load ptr, ptr %40, align 8, !tbaa !5
  %868 = load i32, ptr %92, align 4, !tbaa !9
  %869 = sext i32 %868 to i64
  %870 = getelementptr inbounds %struct.doublecomplex, ptr %867, i64 %869
  call void @zunmtr_(ptr noundef @.str.2, ptr noundef %850, ptr noundef @.str.1, ptr noundef %851, ptr noundef %852, ptr noundef %856, ptr noundef %857, ptr noundef %861, ptr noundef %865, ptr noundef %866, ptr noundef %870, ptr noundef %97, ptr noundef %66)
  br label %871

871:                                              ; preds = %843, %839, %803
  br label %872

872:                                              ; preds = %871, %744
  %873 = load ptr, ptr %46, align 8, !tbaa !5
  %874 = load i32, ptr %873, align 4, !tbaa !9
  %875 = icmp eq i32 %874, 0
  br i1 %875, label %876, label %880

876:                                              ; preds = %872
  %877 = load ptr, ptr %27, align 8, !tbaa !5
  %878 = load i32, ptr %877, align 4, !tbaa !9
  %879 = load ptr, ptr %35, align 8, !tbaa !5
  store i32 %878, ptr %879, align 4, !tbaa !9
  br label %992

880:                                              ; preds = %872
  %881 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 0, ptr %881, align 4, !tbaa !9
  br label %882

882:                                              ; preds = %880, %738, %735
  %883 = load i32, ptr %73, align 4, !tbaa !9
  %884 = icmp ne i32 %883, 0
  br i1 %884, label %885, label %887

885:                                              ; preds = %882
  %886 = getelementptr inbounds [1 x i8], ptr %67, i64 0, i64 0
  store i8 66, ptr %886, align 1, !tbaa !19
  br label %889

887:                                              ; preds = %882
  %888 = getelementptr inbounds [1 x i8], ptr %67, i64 0, i64 0
  store i8 69, ptr %888, align 1, !tbaa !19
  br label %889

889:                                              ; preds = %887, %885
  %890 = load ptr, ptr %25, align 8, !tbaa !5
  %891 = getelementptr inbounds [1 x i8], ptr %67, i64 0, i64 0
  %892 = load ptr, ptr %27, align 8, !tbaa !5
  %893 = load ptr, ptr %32, align 8, !tbaa !5
  %894 = load ptr, ptr %33, align 8, !tbaa !5
  %895 = load ptr, ptr %42, align 8, !tbaa !5
  %896 = load i32, ptr %63, align 4, !tbaa !9
  %897 = sext i32 %896 to i64
  %898 = getelementptr inbounds double, ptr %895, i64 %897
  %899 = load ptr, ptr %42, align 8, !tbaa !5
  %900 = load i32, ptr %64, align 4, !tbaa !9
  %901 = sext i32 %900 to i64
  %902 = getelementptr inbounds double, ptr %899, i64 %901
  %903 = load ptr, ptr %35, align 8, !tbaa !5
  %904 = load ptr, ptr %36, align 8, !tbaa !5
  %905 = getelementptr inbounds double, ptr %904, i64 1
  %906 = load ptr, ptr %44, align 8, !tbaa !5
  %907 = load i32, ptr %81, align 4, !tbaa !9
  %908 = sext i32 %907 to i64
  %909 = getelementptr inbounds i32, ptr %906, i64 %908
  %910 = load ptr, ptr %44, align 8, !tbaa !5
  %911 = load i32, ptr %90, align 4, !tbaa !9
  %912 = sext i32 %911 to i64
  %913 = getelementptr inbounds i32, ptr %910, i64 %912
  %914 = load ptr, ptr %42, align 8, !tbaa !5
  %915 = load i32, ptr %93, align 4, !tbaa !9
  %916 = sext i32 %915 to i64
  %917 = getelementptr inbounds double, ptr %914, i64 %916
  %918 = load ptr, ptr %44, align 8, !tbaa !5
  %919 = load i32, ptr %91, align 4, !tbaa !9
  %920 = sext i32 %919 to i64
  %921 = getelementptr inbounds i32, ptr %918, i64 %920
  %922 = load ptr, ptr %46, align 8, !tbaa !5
  call void @dstebz_(ptr noundef %890, ptr noundef %891, ptr noundef %892, ptr noundef %103, ptr noundef %104, ptr noundef %893, ptr noundef %894, ptr noundef %87, ptr noundef %898, ptr noundef %902, ptr noundef %903, ptr noundef %99, ptr noundef %905, ptr noundef %909, ptr noundef %913, ptr noundef %917, ptr noundef %921, ptr noundef %922)
  %923 = load i32, ptr %73, align 4, !tbaa !9
  %924 = icmp ne i32 %923, 0
  br i1 %924, label %925, label %991

925:                                              ; preds = %889
  %926 = load ptr, ptr %27, align 8, !tbaa !5
  %927 = load ptr, ptr %42, align 8, !tbaa !5
  %928 = load i32, ptr %63, align 4, !tbaa !9
  %929 = sext i32 %928 to i64
  %930 = getelementptr inbounds double, ptr %927, i64 %929
  %931 = load ptr, ptr %42, align 8, !tbaa !5
  %932 = load i32, ptr %64, align 4, !tbaa !9
  %933 = sext i32 %932 to i64
  %934 = getelementptr inbounds double, ptr %931, i64 %933
  %935 = load ptr, ptr %35, align 8, !tbaa !5
  %936 = load ptr, ptr %36, align 8, !tbaa !5
  %937 = getelementptr inbounds double, ptr %936, i64 1
  %938 = load ptr, ptr %44, align 8, !tbaa !5
  %939 = load i32, ptr %81, align 4, !tbaa !9
  %940 = sext i32 %939 to i64
  %941 = getelementptr inbounds i32, ptr %938, i64 %940
  %942 = load ptr, ptr %44, align 8, !tbaa !5
  %943 = load i32, ptr %90, align 4, !tbaa !9
  %944 = sext i32 %943 to i64
  %945 = getelementptr inbounds i32, ptr %942, i64 %944
  %946 = load ptr, ptr %37, align 8, !tbaa !5
  %947 = load i32, ptr %50, align 4, !tbaa !9
  %948 = sext i32 %947 to i64
  %949 = getelementptr inbounds %struct.doublecomplex, ptr %946, i64 %948
  %950 = load ptr, ptr %38, align 8, !tbaa !5
  %951 = load ptr, ptr %42, align 8, !tbaa !5
  %952 = load i32, ptr %93, align 4, !tbaa !9
  %953 = sext i32 %952 to i64
  %954 = getelementptr inbounds double, ptr %951, i64 %953
  %955 = load ptr, ptr %44, align 8, !tbaa !5
  %956 = load i32, ptr %91, align 4, !tbaa !9
  %957 = sext i32 %956 to i64
  %958 = getelementptr inbounds i32, ptr %955, i64 %957
  %959 = load ptr, ptr %44, align 8, !tbaa !5
  %960 = load i32, ptr %83, align 4, !tbaa !9
  %961 = sext i32 %960 to i64
  %962 = getelementptr inbounds i32, ptr %959, i64 %961
  %963 = load ptr, ptr %46, align 8, !tbaa !5
  call void @zstein_(ptr noundef %926, ptr noundef %930, ptr noundef %934, ptr noundef %935, ptr noundef %937, ptr noundef %941, ptr noundef %945, ptr noundef %949, ptr noundef %950, ptr noundef %954, ptr noundef %958, ptr noundef %962, ptr noundef %963)
  %964 = load i32, ptr %68, align 4, !tbaa !9
  store i32 %964, ptr %92, align 4, !tbaa !9
  %965 = load ptr, ptr %41, align 8, !tbaa !5
  %966 = load i32, ptr %965, align 4, !tbaa !9
  %967 = load i32, ptr %92, align 4, !tbaa !9
  %968 = sub nsw i32 %966, %967
  %969 = add nsw i32 %968, 1
  store i32 %969, ptr %97, align 4, !tbaa !9
  %970 = load ptr, ptr %26, align 8, !tbaa !5
  %971 = load ptr, ptr %27, align 8, !tbaa !5
  %972 = load ptr, ptr %35, align 8, !tbaa !5
  %973 = load ptr, ptr %28, align 8, !tbaa !5
  %974 = load i32, ptr %48, align 4, !tbaa !9
  %975 = sext i32 %974 to i64
  %976 = getelementptr inbounds %struct.doublecomplex, ptr %973, i64 %975
  %977 = load ptr, ptr %29, align 8, !tbaa !5
  %978 = load ptr, ptr %40, align 8, !tbaa !5
  %979 = load i32, ptr %89, align 4, !tbaa !9
  %980 = sext i32 %979 to i64
  %981 = getelementptr inbounds %struct.doublecomplex, ptr %978, i64 %980
  %982 = load ptr, ptr %37, align 8, !tbaa !5
  %983 = load i32, ptr %50, align 4, !tbaa !9
  %984 = sext i32 %983 to i64
  %985 = getelementptr inbounds %struct.doublecomplex, ptr %982, i64 %984
  %986 = load ptr, ptr %38, align 8, !tbaa !5
  %987 = load ptr, ptr %40, align 8, !tbaa !5
  %988 = load i32, ptr %92, align 4, !tbaa !9
  %989 = sext i32 %988 to i64
  %990 = getelementptr inbounds %struct.doublecomplex, ptr %987, i64 %989
  call void @zunmtr_(ptr noundef @.str.2, ptr noundef %970, ptr noundef @.str.1, ptr noundef %971, ptr noundef %972, ptr noundef %976, ptr noundef %977, ptr noundef %981, ptr noundef %985, ptr noundef %986, ptr noundef %990, ptr noundef %97, ptr noundef %66)
  br label %991

991:                                              ; preds = %925, %889
  br label %992

992:                                              ; preds = %991, %876
  %993 = load i32, ptr %79, align 4, !tbaa !9
  %994 = icmp eq i32 %993, 1
  br i1 %994, label %995, label %1011

995:                                              ; preds = %992
  %996 = load ptr, ptr %46, align 8, !tbaa !5
  %997 = load i32, ptr %996, align 4, !tbaa !9
  %998 = icmp eq i32 %997, 0
  br i1 %998, label %999, label %1002

999:                                              ; preds = %995
  %1000 = load ptr, ptr %35, align 8, !tbaa !5
  %1001 = load i32, ptr %1000, align 4, !tbaa !9
  store i32 %1001, ptr %56, align 4, !tbaa !9
  br label %1006

1002:                                             ; preds = %995
  %1003 = load ptr, ptr %46, align 8, !tbaa !5
  %1004 = load i32, ptr %1003, align 4, !tbaa !9
  %1005 = sub nsw i32 %1004, 1
  store i32 %1005, ptr %56, align 4, !tbaa !9
  br label %1006

1006:                                             ; preds = %1002, %999
  %1007 = load double, ptr %65, align 8, !tbaa !11
  %1008 = fdiv double 1.000000e+00, %1007
  store double %1008, ptr %53, align 8, !tbaa !11
  %1009 = load ptr, ptr %36, align 8, !tbaa !5
  %1010 = getelementptr inbounds double, ptr %1009, i64 1
  call void @dscal_(ptr noundef %56, ptr noundef %53, ptr noundef %1010, ptr noundef @c__1)
  br label %1011

1011:                                             ; preds = %1006, %992
  %1012 = load i32, ptr %73, align 4, !tbaa !9
  %1013 = icmp ne i32 %1012, 0
  br i1 %1013, label %1014, label %1124

1014:                                             ; preds = %1011
  %1015 = load ptr, ptr %35, align 8, !tbaa !5
  %1016 = load i32, ptr %1015, align 4, !tbaa !9
  %1017 = sub nsw i32 %1016, 1
  store i32 %1017, ptr %51, align 4, !tbaa !9
  store i32 1, ptr %62, align 4, !tbaa !9
  br label %1018

1018:                                             ; preds = %1120, %1014
  %1019 = load i32, ptr %62, align 4, !tbaa !9
  %1020 = load i32, ptr %51, align 4, !tbaa !9
  %1021 = icmp sle i32 %1019, %1020
  br i1 %1021, label %1022, label %1123

1022:                                             ; preds = %1018
  store i32 0, ptr %61, align 4, !tbaa !9
  %1023 = load ptr, ptr %36, align 8, !tbaa !5
  %1024 = load i32, ptr %62, align 4, !tbaa !9
  %1025 = sext i32 %1024 to i64
  %1026 = getelementptr inbounds double, ptr %1023, i64 %1025
  %1027 = load double, ptr %1026, align 8, !tbaa !11
  store double %1027, ptr %107, align 8, !tbaa !11
  %1028 = load ptr, ptr %35, align 8, !tbaa !5
  %1029 = load i32, ptr %1028, align 4, !tbaa !9
  store i32 %1029, ptr %52, align 4, !tbaa !9
  %1030 = load i32, ptr %62, align 4, !tbaa !9
  %1031 = add nsw i32 %1030, 1
  store i32 %1031, ptr %76, align 4, !tbaa !9
  br label %1032

1032:                                             ; preds = %1052, %1022
  %1033 = load i32, ptr %76, align 4, !tbaa !9
  %1034 = load i32, ptr %52, align 4, !tbaa !9
  %1035 = icmp sle i32 %1033, %1034
  br i1 %1035, label %1036, label %1055

1036:                                             ; preds = %1032
  %1037 = load ptr, ptr %36, align 8, !tbaa !5
  %1038 = load i32, ptr %76, align 4, !tbaa !9
  %1039 = sext i32 %1038 to i64
  %1040 = getelementptr inbounds double, ptr %1037, i64 %1039
  %1041 = load double, ptr %1040, align 8, !tbaa !11
  %1042 = load double, ptr %107, align 8, !tbaa !11
  %1043 = fcmp olt double %1041, %1042
  br i1 %1043, label %1044, label %1051

1044:                                             ; preds = %1036
  %1045 = load i32, ptr %76, align 4, !tbaa !9
  store i32 %1045, ptr %61, align 4, !tbaa !9
  %1046 = load ptr, ptr %36, align 8, !tbaa !5
  %1047 = load i32, ptr %76, align 4, !tbaa !9
  %1048 = sext i32 %1047 to i64
  %1049 = getelementptr inbounds double, ptr %1046, i64 %1048
  %1050 = load double, ptr %1049, align 8, !tbaa !11
  store double %1050, ptr %107, align 8, !tbaa !11
  br label %1051

1051:                                             ; preds = %1044, %1036
  br label %1052

1052:                                             ; preds = %1051
  %1053 = load i32, ptr %76, align 4, !tbaa !9
  %1054 = add nsw i32 %1053, 1
  store i32 %1054, ptr %76, align 4, !tbaa !9
  br label %1032, !llvm.loop !20

1055:                                             ; preds = %1032
  %1056 = load i32, ptr %61, align 4, !tbaa !9
  %1057 = icmp ne i32 %1056, 0
  br i1 %1057, label %1058, label %1119

1058:                                             ; preds = %1055
  %1059 = load ptr, ptr %44, align 8, !tbaa !5
  %1060 = load i32, ptr %81, align 4, !tbaa !9
  %1061 = load i32, ptr %61, align 4, !tbaa !9
  %1062 = add nsw i32 %1060, %1061
  %1063 = sub nsw i32 %1062, 1
  %1064 = sext i32 %1063 to i64
  %1065 = getelementptr inbounds i32, ptr %1059, i64 %1064
  %1066 = load i32, ptr %1065, align 4, !tbaa !9
  store i32 %1066, ptr %60, align 4, !tbaa !9
  %1067 = load ptr, ptr %36, align 8, !tbaa !5
  %1068 = load i32, ptr %62, align 4, !tbaa !9
  %1069 = sext i32 %1068 to i64
  %1070 = getelementptr inbounds double, ptr %1067, i64 %1069
  %1071 = load double, ptr %1070, align 8, !tbaa !11
  %1072 = load ptr, ptr %36, align 8, !tbaa !5
  %1073 = load i32, ptr %61, align 4, !tbaa !9
  %1074 = sext i32 %1073 to i64
  %1075 = getelementptr inbounds double, ptr %1072, i64 %1074
  store double %1071, ptr %1075, align 8, !tbaa !11
  %1076 = load ptr, ptr %44, align 8, !tbaa !5
  %1077 = load i32, ptr %81, align 4, !tbaa !9
  %1078 = load i32, ptr %62, align 4, !tbaa !9
  %1079 = add nsw i32 %1077, %1078
  %1080 = sub nsw i32 %1079, 1
  %1081 = sext i32 %1080 to i64
  %1082 = getelementptr inbounds i32, ptr %1076, i64 %1081
  %1083 = load i32, ptr %1082, align 4, !tbaa !9
  %1084 = load ptr, ptr %44, align 8, !tbaa !5
  %1085 = load i32, ptr %81, align 4, !tbaa !9
  %1086 = load i32, ptr %61, align 4, !tbaa !9
  %1087 = add nsw i32 %1085, %1086
  %1088 = sub nsw i32 %1087, 1
  %1089 = sext i32 %1088 to i64
  %1090 = getelementptr inbounds i32, ptr %1084, i64 %1089
  store i32 %1083, ptr %1090, align 4, !tbaa !9
  %1091 = load double, ptr %107, align 8, !tbaa !11
  %1092 = load ptr, ptr %36, align 8, !tbaa !5
  %1093 = load i32, ptr %62, align 4, !tbaa !9
  %1094 = sext i32 %1093 to i64
  %1095 = getelementptr inbounds double, ptr %1092, i64 %1094
  store double %1091, ptr %1095, align 8, !tbaa !11
  %1096 = load i32, ptr %60, align 4, !tbaa !9
  %1097 = load ptr, ptr %44, align 8, !tbaa !5
  %1098 = load i32, ptr %81, align 4, !tbaa !9
  %1099 = load i32, ptr %62, align 4, !tbaa !9
  %1100 = add nsw i32 %1098, %1099
  %1101 = sub nsw i32 %1100, 1
  %1102 = sext i32 %1101 to i64
  %1103 = getelementptr inbounds i32, ptr %1097, i64 %1102
  store i32 %1096, ptr %1103, align 4, !tbaa !9
  %1104 = load ptr, ptr %27, align 8, !tbaa !5
  %1105 = load ptr, ptr %37, align 8, !tbaa !5
  %1106 = load i32, ptr %61, align 4, !tbaa !9
  %1107 = load i32, ptr %49, align 4, !tbaa !9
  %1108 = mul nsw i32 %1106, %1107
  %1109 = add nsw i32 %1108, 1
  %1110 = sext i32 %1109 to i64
  %1111 = getelementptr inbounds %struct.doublecomplex, ptr %1105, i64 %1110
  %1112 = load ptr, ptr %37, align 8, !tbaa !5
  %1113 = load i32, ptr %62, align 4, !tbaa !9
  %1114 = load i32, ptr %49, align 4, !tbaa !9
  %1115 = mul nsw i32 %1113, %1114
  %1116 = add nsw i32 %1115, 1
  %1117 = sext i32 %1116 to i64
  %1118 = getelementptr inbounds %struct.doublecomplex, ptr %1112, i64 %1117
  call void @zswap_(ptr noundef %1104, ptr noundef %1111, ptr noundef @c__1, ptr noundef %1118, ptr noundef @c__1)
  br label %1119

1119:                                             ; preds = %1058, %1055
  br label %1120

1120:                                             ; preds = %1119
  %1121 = load i32, ptr %62, align 4, !tbaa !9
  %1122 = add nsw i32 %1121, 1
  store i32 %1122, ptr %62, align 4, !tbaa !9
  br label %1018, !llvm.loop !21

1123:                                             ; preds = %1018
  br label %1124

1124:                                             ; preds = %1123, %1011
  %1125 = load i32, ptr %70, align 4, !tbaa !9
  %1126 = sitofp i32 %1125 to double
  %1127 = load ptr, ptr %40, align 8, !tbaa !5
  %1128 = getelementptr inbounds %struct.doublecomplex, ptr %1127, i64 1
  %1129 = getelementptr inbounds %struct.doublecomplex, ptr %1128, i32 0, i32 0
  store double %1126, ptr %1129, align 8, !tbaa !13
  %1130 = load ptr, ptr %40, align 8, !tbaa !5
  %1131 = getelementptr inbounds %struct.doublecomplex, ptr %1130, i64 1
  %1132 = getelementptr inbounds %struct.doublecomplex, ptr %1131, i32 0, i32 1
  store double 0.000000e+00, ptr %1132, align 8, !tbaa !15
  %1133 = load i32, ptr %96, align 4, !tbaa !9
  %1134 = sitofp i32 %1133 to double
  %1135 = load ptr, ptr %42, align 8, !tbaa !5
  %1136 = getelementptr inbounds double, ptr %1135, i64 1
  store double %1134, ptr %1136, align 8, !tbaa !11
  %1137 = load i32, ptr %94, align 4, !tbaa !9
  %1138 = load ptr, ptr %44, align 8, !tbaa !5
  %1139 = getelementptr inbounds i32, ptr %1138, i64 1
  store i32 %1137, ptr %1139, align 4, !tbaa !9
  store i32 1, ptr %108, align 4
  br label %1140

1140:                                             ; preds = %1124, %507, %415, %408, %400
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %106) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %105) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 4, 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 8, ptr %88) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 @ilaenv2stage_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, 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_2stage_(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 @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 [14 x i8], align 1
@c_n1 = external hidden global i32, align 4
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [14 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_2stage_(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 i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca double, align 8
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca double, align 8
  %41 = alloca double, align 8
  %42 = 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 4, 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 8, ptr nonnull %35) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %36) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %37) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %38) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %39) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %42) #5
  %43 = load i32, ptr %5, align 4, !tbaa !5
  %44 = add i32 %43, 1
  %narrow = xor i32 %43, -1
  %45 = sext i32 %narrow to i64
  %46 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %45
  %47 = getelementptr inbounds i8, ptr %12, i64 -8
  %48 = load i32, ptr %14, align 4, !tbaa !5
  %49 = add nsw i32 %48, 1
  %narrow446 = xor i32 %48, -1
  %50 = sext i32 %narrow446 to i64
  %51 = getelementptr inbounds %struct.doublecomplex, ptr %13, i64 %50
  %52 = getelementptr inbounds i8, ptr %16, i64 -16
  %53 = getelementptr inbounds i8, ptr %18, i64 -8
  %54 = getelementptr inbounds i8, ptr %20, i64 -4
  %55 = 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
  %56 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.2) #5
  %57 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.3) #5
  %58 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #5
  %59 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #5
  %60 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.5) #5
  %61 = load i32, ptr %17, align 4, !tbaa !5
  %62 = icmp eq i32 %61, -1
  br i1 %62, label %69, label %63

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

66:                                               ; preds = %63
  %67 = load i32, ptr %21, align 4, !tbaa !5
  %68 = icmp eq i32 %67, -1
  br label %69

69:                                               ; preds = %66, %63, %23
  %70 = phi i1 [ true, %63 ], [ true, %23 ], [ %68, %66 ]
  %71 = tail call i32 @ilaenv2stage_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.6, ptr noundef %0, ptr noundef %3, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1) #5
  store i32 %71, ptr %34, align 4, !tbaa !5
  %72 = call i32 @ilaenv2stage_(ptr noundef nonnull @c__2, ptr noundef nonnull @.str.6, ptr noundef %0, ptr noundef %3, ptr noundef nonnull %34, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1) #5
  store i32 %72, ptr %33, align 4, !tbaa !5
  %73 = call i32 @ilaenv2stage_(ptr noundef nonnull @c__3, ptr noundef nonnull @.str.6, ptr noundef %0, ptr noundef %3, ptr noundef nonnull %34, ptr noundef nonnull %33, ptr noundef nonnull @c_n1) #5
  store i32 %73, ptr %32, align 4, !tbaa !5
  %74 = call i32 @ilaenv2stage_(ptr noundef nonnull @c__4, ptr noundef nonnull @.str.6, ptr noundef %0, ptr noundef %3, ptr noundef nonnull %34, ptr noundef nonnull %33, ptr noundef nonnull @c_n1) #5
  %75 = load i32, ptr %3, align 4, !tbaa !5
  %76 = add i32 %75, %74
  %77 = add i32 %76, %73
  %78 = mul nsw i32 %75, 24
  %79 = icmp slt i32 %75, 1
  %80 = select i1 %79, i32 1, i32 %78
  store i32 1, ptr %24, align 4, !tbaa !5
  %81 = mul nsw i32 %75, 10
  store i32 %81, ptr %25, align 4, !tbaa !5
  %82 = select i1 %79, i32 1, i32 %81
  store i32 0, ptr %22, align 4, !tbaa !5
  %83 = call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #5
  %.not = icmp eq i32 %83, 0
  br i1 %.not, label %.thread459.sink.split, label %84

84:                                               ; preds = %69
  %85 = icmp ne i32 %58, 0
  %86 = icmp ne i32 %59, 0
  %or.cond = select i1 %85, i1 true, i1 %86
  %87 = icmp ne i32 %60, 0
  %or.cond3 = select i1 %or.cond, i1 true, i1 %87
  br i1 %or.cond3, label %88, label %.thread459.sink.split

88:                                               ; preds = %84
  %.not424 = icmp eq i32 %56, 0
  br i1 %.not424, label %89, label %91

89:                                               ; preds = %88
  %90 = call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.7) #5
  %.not425 = icmp eq i32 %90, 0
  br i1 %.not425, label %.thread459.sink.split, label %91

91:                                               ; preds = %89, %88
  %92 = load i32, ptr %3, align 4, !tbaa !5
  %93 = icmp slt i32 %92, 0
  br i1 %93, label %.thread459.sink.split, label %94

94:                                               ; preds = %91
  %95 = load i32, ptr %5, align 4, !tbaa !5
  %spec.select = call i32 @llvm.umax.i32(i32 %92, i32 1)
  %96 = icmp slt i32 %95, %spec.select
  br i1 %96, label %.thread459.sink.split, label %97

97:                                               ; preds = %94
  br i1 %86, label %98, label %103

98:                                               ; preds = %97
  %.not471 = icmp eq i32 %92, 0
  br i1 %.not471, label %112, label %99

99:                                               ; preds = %98
  %100 = load double, ptr %7, align 8, !tbaa !9
  %101 = load double, ptr %6, align 8, !tbaa !9
  %102 = fcmp ugt double %100, %101
  br i1 %102, label %112, label %.thread459.sink.split

103:                                              ; preds = %97
  br i1 %87, label %104, label %112

104:                                              ; preds = %103
  %105 = load i32, ptr %8, align 4, !tbaa !5
  %106 = icmp slt i32 %105, 1
  %107 = icmp ugt i32 %105, %spec.select
  %or.cond469 = or i1 %106, %107
  br i1 %or.cond469, label %.thread459.sink.split, label %108

108:                                              ; preds = %104
  %109 = load i32, ptr %9, align 4, !tbaa !5
  %. = call i32 @llvm.umin.i32(i32 %92, i32 %105)
  %110 = icmp slt i32 %109, %.
  %111 = icmp ugt i32 %109, %92
  %or.cond470 = or i1 %110, %111
  br i1 %or.cond470, label %.thread459.sink.split, label %112

112:                                              ; preds = %108, %99, %98, %103
  %.pr = load i32, ptr %22, align 4, !tbaa !5
  %113 = icmp eq i32 %.pr, 0
  br i1 %113, label %114, label %.thread459

114:                                              ; preds = %112
  %115 = load i32, ptr %14, align 4, !tbaa !5
  %116 = icmp slt i32 %115, 1
  br i1 %116, label %.thread459.sink.split, label %117

117:                                              ; preds = %114
  %.not427 = icmp ne i32 %57, 0
  %118 = icmp ult i32 %115, %92
  %or.cond506 = and i1 %.not427, %118
  br i1 %or.cond506, label %.thread459.sink.split, label %.thread

.thread:                                          ; preds = %117
  %119 = sitofp i32 %77 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 %80 to double
  store double %121, ptr %18, align 8, !tbaa !9
  store i32 %82, ptr %20, align 4, !tbaa !5
  %122 = load i32, ptr %17, align 4, !tbaa !5
  %123 = icmp sge i32 %122, %77
  %or.cond5 = select i1 %123, i1 true, i1 %70
  br i1 %or.cond5, label %124, label %.thread459.sink.split

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

127:                                              ; preds = %124
  %128 = load i32, ptr %21, align 4, !tbaa !5
  %129 = icmp sge i32 %128, %82
  %or.cond9 = select i1 %129, i1 true, i1 %70
  br i1 %or.cond9, label %.thread455, label %.thread459.sink.split

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

.thread459.sink.split:                            ; preds = %127, %124, %.thread, %114, %117, %108, %104, %99, %94, %91, %89, %84, %69
  %.sink = phi i32 [ -1, %69 ], [ -2, %84 ], [ -3, %89 ], [ -4, %91 ], [ -6, %94 ], [ -8, %99 ], [ -9, %104 ], [ -10, %108 ], [ -15, %117 ], [ -15, %114 ], [ -18, %.thread ], [ -20, %124 ], [ -22, %127 ]
  store i32 %.sink, ptr %22, align 4, !tbaa !5
  br label %.thread459

.thread459:                                       ; preds = %.thread459.sink.split, %112, %.thread455
  %130 = phi i32 [ %.pr457.pr, %.thread455 ], [ %.pr, %112 ], [ %.sink, %.thread459.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.8, ptr noundef nonnull %24, i32 noundef 13) #5
  br label %325

133:                                              ; preds = %.thread455
  br i1 %70, label %325, 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 %325

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 %85, i1 true, i1 %87
  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 %44 to i64
  %143 = getelementptr inbounds %struct.doublecomplex, ptr %46, 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
  %.sink507 = phi double [ %148, %150 ], [ %139, %138 ]
  store double %.sink507, ptr %12, align 8, !tbaa !9
  br label %151

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

152:                                              ; preds = %151
  store double 1.000000e+00, ptr %13, align 8, !tbaa !11
  %153 = sext i32 %49 to i64
  %154 = getelementptr inbounds %struct.doublecomplex, ptr %51, 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 %325

156:                                              ; preds = %134
  %157 = call double @dlamch_(ptr noundef nonnull @.str.9) #5
  %158 = call double @dlamch_(ptr noundef nonnull @.str.10) #5
  %159 = fdiv double %157, %158
  %160 = fdiv double 1.000000e+00, %159
  %161 = call double @sqrt(double noundef %159) #5
  %162 = call double @sqrt(double noundef %160) #5
  store double %162, ptr %26, align 8, !tbaa !9
  %163 = call double @sqrt(double noundef %157) #5
  %164 = 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 %35, align 8, !tbaa !9
  %.not429 = icmp eq i32 %59, 0
  br i1 %.not429, label %172, label %169

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

172:                                              ; preds = %169, %156
  %173 = 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.cond448 = select i1 %174, i1 %175, i1 false
  br i1 %or.cond448, 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 ]
  %storemerge472 = fdiv double %.pn, %173
  store double %storemerge472, 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 %.not424, label %189, label %180

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

.lr.ph:                                           ; preds = %180, %.lr.ph
  %storemerge432477 = phi i32 [ %187, %.lr.ph ], [ 1, %180 ]
  %181 = load i32, ptr %3, align 4, !tbaa !5
  %reass.sub = sub i32 %181, %storemerge432477
  %182 = add i32 %reass.sub, 1
  store i32 %182, ptr %25, align 4, !tbaa !5
  %183 = mul i32 %storemerge432477, %44
  %184 = sext i32 %183 to i64
  %185 = getelementptr inbounds %struct.doublecomplex, ptr %46, 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 %.loopexit474, !llvm.loop !14

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

.lr.ph480:                                        ; preds = %189, %.lr.ph480
  %storemerge479 = phi i32 [ %193, %.lr.ph480 ], [ 1, %189 ]
  %190 = mul nsw i32 %storemerge479, %43
  %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.ph480, label %.loopexit474, !llvm.loop !16

.loopexit474:                                     ; preds = %.lr.ph, %.lr.ph480, %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 = %.loopexit474
  %198 = load double, ptr %29, align 8, !tbaa !9
  %199 = fmul double %195, %198
  store double %199, ptr %35, align 8, !tbaa !9
  br label %200

200:                                              ; preds = %197, %.loopexit474
  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 %40, align 8, !tbaa !9
  %205 = load double, ptr %7, align 8, !tbaa !9
  %206 = fmul double %203, %205
  store double %206, ptr %41, 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 = add nsw i32 %210, %73
  %212 = load i32, ptr %17, align 4, !tbaa !5
  %reass.sub495 = sub i32 %212, %211
  %213 = add i32 %reass.sub495, 1
  store i32 %213, ptr %38, align 4, !tbaa !5
  %214 = add nsw i32 %210, %209
  %215 = add nsw i32 %214, %209
  %216 = add nsw i32 %215, %209
  %217 = load i32, ptr %19, align 4, !tbaa !5
  %reass.sub496 = sub i32 %217, %216
  %218 = add i32 %reass.sub496, 1
  store i32 %218, ptr %42, align 4, !tbaa !5
  %219 = sext i32 %210 to i64
  %220 = getelementptr inbounds double, ptr %53, i64 %219
  %221 = getelementptr inbounds %struct.doublecomplex, ptr %52, i64 %219
  %222 = sext i32 %211 to i64
  %223 = getelementptr inbounds %struct.doublecomplex, ptr %52, i64 %222
  call void @zhetrd_2stage_(ptr noundef %0, 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 %32, ptr noundef nonnull %223, ptr noundef nonnull %38, ptr noundef nonnull %30) #5
  %.not434 = icmp eq i32 %60, 0
  br i1 %.not434, label %231, label %224

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

227:                                              ; preds = %224
  %228 = load i32, ptr %9, align 4, !tbaa !5
  %229 = load i32, ptr %3, align 4, !tbaa !5
  %230 = icmp eq i32 %228, %229
  br label %231

231:                                              ; preds = %227, %224, %207
  %232 = phi i1 [ false, %224 ], [ false, %207 ], [ %230, %227 ]
  %or.cond13 = or i1 %85, %232
  %233 = icmp eq i32 %55, 1
  %or.cond15 = select i1 %or.cond13, i1 %233, i1 false
  br i1 %or.cond15, label %234, label %264

234:                                              ; preds = %231
  br i1 %.not427, label %240, label %235

235:                                              ; preds = %234
  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
  %236 = load i32, ptr %3, align 4, !tbaa !5
  %237 = add nsw i32 %236, -1
  store i32 %237, ptr %24, align 4, !tbaa !5
  %238 = sext i32 %215 to i64
  %239 = getelementptr inbounds double, ptr %53, i64 %238
  call void @dcopy_(ptr noundef nonnull %24, ptr noundef nonnull %220, ptr noundef nonnull @c__1, ptr noundef nonnull %239, ptr noundef nonnull @c__1) #5
  call void @dsterf_(ptr noundef nonnull %3, ptr noundef %12, ptr noundef nonnull %239, ptr noundef nonnull %22) #5
  br label %260

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

257:                                              ; preds = %240
  %258 = load i32, ptr %17, align 4, !tbaa !5
  %reass.sub497 = sub i32 %258, %211
  %259 = add i32 %reass.sub497, 1
  store i32 %259, ptr %37, 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 %223, ptr noundef nonnull %37, ptr noundef nonnull %30) #5
  br label %260

260:                                              ; preds = %257, %235
  %.pr464 = load i32, ptr %22, align 4, !tbaa !5
  %261 = icmp eq i32 %.pr464, 0
  br i1 %261, label %262, label %.thread465

262:                                              ; preds = %260
  %263 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %263, ptr %11, align 4, !tbaa !5
  br label %275

.thread465:                                       ; preds = %240, %260
  store i32 0, ptr %22, align 4, !tbaa !5
  br label %264

264:                                              ; preds = %231, %.thread465
  %.451 = select i1 %.not427, i8 66, i8 69
  store i8 %.451, ptr %31, align 1, !tbaa !17
  %265 = getelementptr inbounds i32, ptr %54, i64 %219
  %266 = sext i32 %216 to i64
  %267 = getelementptr inbounds double, ptr %53, i64 %266
  %268 = sext i32 %215 to i64
  %269 = getelementptr inbounds i32, ptr %54, i64 %268
  call void @dstebz_(ptr noundef %1, ptr noundef nonnull %31, ptr noundef nonnull %3, ptr noundef nonnull %40, ptr noundef nonnull %41, ptr noundef %8, ptr noundef %9, ptr noundef nonnull %35, ptr noundef nonnull %18, ptr noundef nonnull %220, ptr noundef nonnull %11, ptr noundef nonnull %39, ptr noundef %12, ptr noundef nonnull %20, ptr noundef nonnull %265, ptr noundef nonnull %267, ptr noundef nonnull %269, ptr noundef nonnull %22) #5
  br i1 %.not427, label %270, label %275

270:                                              ; preds = %264
  %271 = sext i32 %214 to i64
  %272 = getelementptr inbounds i32, ptr %54, i64 %271
  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 %265, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %267, ptr noundef nonnull %269, ptr noundef nonnull %272, ptr noundef nonnull %22) #5
  %273 = load i32, ptr %17, align 4, !tbaa !5
  %reass.sub498 = sub i32 %273, %211
  %274 = add i32 %reass.sub498, 1
  store i32 %274, ptr %37, 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 %223, ptr noundef nonnull %37, ptr noundef nonnull %30) #5
  br label %275

275:                                              ; preds = %264, %270, %262
  br i1 %208, label %276, label %286

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

279:                                              ; preds = %276
  %280 = load i32, ptr %11, align 4, !tbaa !5
  br label %283

281:                                              ; preds = %276
  %282 = add nsw i32 %277, -1
  br label %283

283:                                              ; preds = %281, %279
  %storemerge439 = phi i32 [ %282, %281 ], [ %280, %279 ]
  store i32 %storemerge439, ptr %27, align 4, !tbaa !5
  %284 = load double, ptr %29, align 8, !tbaa !9
  %285 = fdiv double 1.000000e+00, %284
  store double %285, 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 %286

286:                                              ; preds = %283, %275
  br i1 %.not427, label %287, label %.loopexit

287:                                              ; preds = %286
  %288 = load i32, ptr %11, align 4, !tbaa !5
  %289 = add nsw i32 %288, -1
  store i32 %289, ptr %24, align 4, !tbaa !5
  %invariant.gep487 = getelementptr i8, ptr %51, i64 16
  store i32 1, ptr %28, align 4, !tbaa !5
  %.not442491 = icmp slt i32 %288, 2
  br i1 %.not442491, label %.loopexit, label %.lr.ph494

.lr.ph494:                                        ; preds = %287, %._crit_edge.thread
  %290 = phi i32 [ %322, %._crit_edge.thread ], [ %289, %287 ]
  %storemerge441492 = phi i32 [ %324, %._crit_edge.thread ], [ 1, %287 ]
  %291 = sext i32 %storemerge441492 to i64
  %292 = getelementptr inbounds double, ptr %47, i64 %291
  %293 = load double, ptr %292, align 8, !tbaa !9
  %294 = load i32, ptr %11, align 4, !tbaa !5
  store i32 %294, ptr %25, align 4, !tbaa !5
  %.not443.not481 = icmp slt i32 %storemerge441492, %294
  br i1 %.not443.not481, label %.lr.ph485.preheader, label %._crit_edge.thread

.lr.ph485.preheader:                              ; preds = %.lr.ph494
  %wide.trip.count = sext i32 %294 to i64
  %295 = sub nsw i64 %wide.trip.count, %291
  %xtraiter = and i64 %295, 1
  %296 = add nsw i64 %wide.trip.count, -1
  %297 = icmp eq i64 %296, %291
  br i1 %297, label %._crit_edge.unr-lcssa, label %.lr.ph485.preheader.new

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

.lr.ph485:                                        ; preds = %.lr.ph485, %.lr.ph485.preheader.new
  %indvars.iv = phi i64 [ %291, %.lr.ph485.preheader.new ], [ %indvars.iv.next.1, %.lr.ph485 ]
  %.0484 = phi double [ %293, %.lr.ph485.preheader.new ], [ %.1.1, %.lr.ph485 ]
  %.0403483 = phi i32 [ 0, %.lr.ph485.preheader.new ], [ %.1404.1, %.lr.ph485 ]
  %niter = phi i64 [ 0, %.lr.ph485.preheader.new ], [ %niter.next.1, %.lr.ph485 ]
  %indvars.iv.next = add nsw i64 %indvars.iv, 1
  %298 = getelementptr double, ptr %12, i64 %indvars.iv
  %299 = load double, ptr %298, align 8, !tbaa !9
  %300 = fcmp olt double %299, %.0484
  %301 = trunc nsw i64 %indvars.iv.next to i32
  %.1404 = select i1 %300, i32 %301, i32 %.0403483
  %.1 = select i1 %300, double %299, double %.0484
  %indvars.iv.next.1 = add nsw i64 %indvars.iv, 2
  %302 = getelementptr double, ptr %12, i64 %indvars.iv.next
  %303 = load double, ptr %302, align 8, !tbaa !9
  %304 = fcmp olt double %303, %.1
  %305 = trunc nsw i64 %indvars.iv.next.1 to i32
  %.1404.1 = select i1 %304, i32 %305, i32 %.1404
  %.1.1 = select i1 %304, double %303, 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.ph485, !llvm.loop !18

._crit_edge.unr-lcssa:                            ; preds = %.lr.ph485, %.lr.ph485.preheader
  %.1404.lcssa.ph = phi i32 [ poison, %.lr.ph485.preheader ], [ %.1404.1, %.lr.ph485 ]
  %.1.lcssa.ph = phi double [ poison, %.lr.ph485.preheader ], [ %.1.1, %.lr.ph485 ]
  %indvars.iv.unr = phi i64 [ %291, %.lr.ph485.preheader ], [ %indvars.iv.next.1, %.lr.ph485 ]
  %.0484.unr = phi double [ %293, %.lr.ph485.preheader ], [ %.1.1, %.lr.ph485 ]
  %.0403483.unr = phi i32 [ 0, %.lr.ph485.preheader ], [ %.1404.1, %.lr.ph485 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph485.epil

.lr.ph485.epil:                                   ; preds = %._crit_edge.unr-lcssa
  %306 = getelementptr double, ptr %12, i64 %indvars.iv.unr
  %307 = load double, ptr %306, align 8, !tbaa !9
  %308 = fcmp olt double %307, %.0484.unr
  %309 = trunc i64 %indvars.iv.unr to i32
  %310 = add i32 %309, 1
  %.1404.epil = select i1 %308, i32 %310, i32 %.0403483.unr
  %.1.epil = select i1 %308, double %307, double %.0484.unr
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.unr-lcssa, %.lr.ph485.epil
  %.1404.lcssa = phi i32 [ %.1404.lcssa.ph, %._crit_edge.unr-lcssa ], [ %.1404.epil, %.lr.ph485.epil ]
  %.1.lcssa = phi double [ %.1.lcssa.ph, %._crit_edge.unr-lcssa ], [ %.1.epil, %.lr.ph485.epil ]
  %.not444 = icmp eq i32 %.1404.lcssa, 0
  br i1 %.not444, label %._crit_edge.thread, label %311

311:                                              ; preds = %._crit_edge
  %312 = sext i32 %.1404.lcssa to i64
  %313 = getelementptr inbounds i32, ptr %54, i64 %312
  %314 = load i32, ptr %313, align 4, !tbaa !5
  %315 = getelementptr inbounds double, ptr %47, i64 %312
  store double %293, ptr %315, align 8, !tbaa !9
  %316 = getelementptr inbounds i32, ptr %54, i64 %291
  %317 = load i32, ptr %316, align 4, !tbaa !5
  store i32 %317, ptr %313, align 4, !tbaa !5
  store double %.1.lcssa, ptr %292, align 8, !tbaa !9
  store i32 %314, ptr %316, align 4, !tbaa !5
  %318 = mul nsw i32 %.1404.lcssa, %48
  %319 = sext i32 %318 to i64
  %gep488 = getelementptr %struct.doublecomplex, ptr %invariant.gep487, i64 %319
  %320 = mul nsw i32 %storemerge441492, %48
  %321 = sext i32 %320 to i64
  %gep490 = getelementptr %struct.doublecomplex, ptr %invariant.gep487, i64 %321
  call void @zswap_(ptr noundef nonnull %3, ptr noundef %gep488, ptr noundef nonnull @c__1, ptr noundef %gep490, ptr noundef nonnull @c__1) #5
  %.pre = load i32, ptr %28, align 4, !tbaa !5
  %.pre501 = load i32, ptr %24, align 4, !tbaa !5
  br label %._crit_edge.thread

._crit_edge.thread:                               ; preds = %.lr.ph494, %._crit_edge, %311
  %322 = phi i32 [ %290, %._crit_edge ], [ %.pre501, %311 ], [ %290, %.lr.ph494 ]
  %323 = phi i32 [ %storemerge441492, %._crit_edge ], [ %.pre, %311 ], [ %storemerge441492, %.lr.ph494 ]
  %324 = add nsw i32 %323, 1
  store i32 %324, ptr %28, align 4, !tbaa !5
  %.not442.not = icmp slt i32 %323, %322
  br i1 %.not442.not, label %.lr.ph494, label %.loopexit, !llvm.loop !19

.loopexit:                                        ; preds = %._crit_edge.thread, %287, %286
  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 %82, ptr %20, align 4, !tbaa !5
  br label %325

325:                                              ; preds = %151, %152, %133, %.loopexit, %136, %.thread459
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %42) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %39) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %38) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %37) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %36) #5
  call void @llvm.lifetime.end.p0(i64 8, 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 4, 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 @ilaenv2stage_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, 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_2stage_(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 @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.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