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

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

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i32, align 4
@.str.2 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c__0 = external hidden global i32, align 4
@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1
@c_n1 = external hidden global i32, align 4
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [2 x i8], align 1

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

117:                                              ; preds = %14
  %118 = load ptr, ptr %15, align 8, !tbaa !5
  %119 = call i32 @lsame_(ptr noundef %118, ptr noundef @.str.1)
  %120 = icmp ne i32 %119, 0
  br i1 %120, label %123, label %121

121:                                              ; preds = %117
  %122 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -1, ptr %122, align 4, !tbaa !9
  br label %188

123:                                              ; preds = %117, %14
  %124 = load i32, ptr %62, align 4, !tbaa !9
  %125 = icmp ne i32 %124, 0
  br i1 %125, label %132, label %126

126:                                              ; preds = %123
  %127 = load ptr, ptr %16, align 8, !tbaa !5
  %128 = call i32 @lsame_(ptr noundef %127, ptr noundef @.str.1)
  %129 = icmp ne i32 %128, 0
  br i1 %129, label %132, label %130

130:                                              ; preds = %126
  %131 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -2, ptr %131, align 4, !tbaa !9
  br label %187

132:                                              ; preds = %126, %123
  %133 = load ptr, ptr %17, align 8, !tbaa !5
  %134 = load i32, ptr %133, align 4, !tbaa !9
  %135 = icmp slt i32 %134, 0
  br i1 %135, label %136, label %138

136:                                              ; preds = %132
  %137 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -3, ptr %137, align 4, !tbaa !9
  br label %186

138:                                              ; preds = %132
  %139 = load ptr, ptr %19, align 8, !tbaa !5
  %140 = load i32, ptr %139, align 4, !tbaa !9
  %141 = load ptr, ptr %17, align 8, !tbaa !5
  %142 = load i32, ptr %141, align 4, !tbaa !9
  %143 = icmp sge i32 1, %142
  br i1 %143, label %144, label %145

144:                                              ; preds = %138
  br label %148

145:                                              ; preds = %138
  %146 = load ptr, ptr %17, align 8, !tbaa !5
  %147 = load i32, ptr %146, align 4, !tbaa !9
  br label %148

148:                                              ; preds = %145, %144
  %149 = phi i32 [ 1, %144 ], [ %147, %145 ]
  %150 = icmp slt i32 %140, %149
  br i1 %150, label %151, label %153

151:                                              ; preds = %148
  %152 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -5, ptr %152, align 4, !tbaa !9
  br label %185

153:                                              ; preds = %148
  %154 = load ptr, ptr %23, align 8, !tbaa !5
  %155 = load i32, ptr %154, align 4, !tbaa !9
  %156 = icmp slt i32 %155, 1
  br i1 %156, label %166, label %157

157:                                              ; preds = %153
  %158 = load i32, ptr %58, align 4, !tbaa !9
  %159 = icmp ne i32 %158, 0
  br i1 %159, label %160, label %168

160:                                              ; preds = %157
  %161 = load ptr, ptr %23, align 8, !tbaa !5
  %162 = load i32, ptr %161, align 4, !tbaa !9
  %163 = load ptr, ptr %17, align 8, !tbaa !5
  %164 = load i32, ptr %163, align 4, !tbaa !9
  %165 = icmp slt i32 %162, %164
  br i1 %165, label %166, label %168

166:                                              ; preds = %160, %153
  %167 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -9, ptr %167, align 4, !tbaa !9
  br label %184

168:                                              ; preds = %160, %157
  %169 = load ptr, ptr %25, align 8, !tbaa !5
  %170 = load i32, ptr %169, align 4, !tbaa !9
  %171 = icmp slt i32 %170, 1
  br i1 %171, label %181, label %172

172:                                              ; preds = %168
  %173 = load i32, ptr %62, align 4, !tbaa !9
  %174 = icmp ne i32 %173, 0
  br i1 %174, label %175, label %183

175:                                              ; preds = %172
  %176 = load ptr, ptr %25, align 8, !tbaa !5
  %177 = load i32, ptr %176, align 4, !tbaa !9
  %178 = load ptr, ptr %17, align 8, !tbaa !5
  %179 = load i32, ptr %178, align 4, !tbaa !9
  %180 = icmp slt i32 %177, %179
  br i1 %180, label %181, label %183

181:                                              ; preds = %175, %168
  %182 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -11, ptr %182, align 4, !tbaa !9
  br label %183

183:                                              ; preds = %181, %175, %172
  br label %184

184:                                              ; preds = %183, %166
  br label %185

185:                                              ; preds = %184, %151
  br label %186

186:                                              ; preds = %185, %136
  br label %187

187:                                              ; preds = %186, %130
  br label %188

188:                                              ; preds = %187, %121
  %189 = load ptr, ptr %28, align 8, !tbaa !5
  %190 = load i32, ptr %189, align 4, !tbaa !9
  %191 = icmp eq i32 %190, 0
  br i1 %191, label %192, label %542

192:                                              ; preds = %188
  %193 = load ptr, ptr %17, align 8, !tbaa !5
  %194 = load i32, ptr %193, align 4, !tbaa !9
  %195 = icmp eq i32 %194, 0
  br i1 %195, label %196, label %197

196:                                              ; preds = %192
  store i32 1, ptr %56, align 4, !tbaa !9
  store i32 1, ptr %57, align 4, !tbaa !9
  br label %527

197:                                              ; preds = %192
  %198 = load ptr, ptr %17, align 8, !tbaa !5
  %199 = load i32, ptr %198, align 4, !tbaa !9
  %200 = shl i32 %199, 1
  %201 = load ptr, ptr %17, align 8, !tbaa !5
  %202 = load i32, ptr %201, align 4, !tbaa !9
  %203 = load ptr, ptr %17, align 8, !tbaa !5
  %204 = load ptr, ptr %17, align 8, !tbaa !5
  %205 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef %203, ptr noundef @c__1, ptr noundef %204, ptr noundef @c__0, i32 noundef 6, i32 noundef 1)
  %206 = mul nsw i32 %202, %205
  %207 = add nsw i32 %200, %206
  store i32 %207, ptr %57, align 4, !tbaa !9
  %208 = load i32, ptr %58, align 4, !tbaa !9
  %209 = icmp ne i32 %208, 0
  br i1 %209, label %210, label %335

210:                                              ; preds = %197
  %211 = load ptr, ptr %17, align 8, !tbaa !5
  %212 = load i32, ptr %211, align 4, !tbaa !9
  %213 = shl i32 %212, 2
  store i32 %213, ptr %56, align 4, !tbaa !9
  %214 = load i32, ptr %57, align 4, !tbaa !9
  store i32 %214, ptr %35, align 4, !tbaa !9
  %215 = load ptr, ptr %17, align 8, !tbaa !5
  %216 = load i32, ptr %215, align 4, !tbaa !9
  %217 = shl i32 %216, 1
  %218 = load ptr, ptr %17, align 8, !tbaa !5
  %219 = load i32, ptr %218, align 4, !tbaa !9
  %220 = sub nsw i32 %219, 1
  %221 = load ptr, ptr %17, align 8, !tbaa !5
  %222 = load ptr, ptr %17, align 8, !tbaa !5
  %223 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.4, ptr noundef @.str.3, ptr noundef %221, ptr noundef @c__1, ptr noundef %222, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  %224 = mul nsw i32 %220, %223
  %225 = add nsw i32 %217, %224
  store i32 %225, ptr %36, align 4, !tbaa !9
  %226 = load i32, ptr %35, align 4, !tbaa !9
  %227 = load i32, ptr %36, align 4, !tbaa !9
  %228 = icmp sge i32 %226, %227
  br i1 %228, label %229, label %231

229:                                              ; preds = %210
  %230 = load i32, ptr %35, align 4, !tbaa !9
  br label %233

231:                                              ; preds = %210
  %232 = load i32, ptr %36, align 4, !tbaa !9
  br label %233

233:                                              ; preds = %231, %229
  %234 = phi i32 [ %230, %229 ], [ %232, %231 ]
  store i32 %234, ptr %57, align 4, !tbaa !9
  %235 = load ptr, ptr %17, align 8, !tbaa !5
  %236 = load ptr, ptr %17, align 8, !tbaa !5
  %237 = load ptr, ptr %18, align 8, !tbaa !5
  %238 = load i32, ptr %30, align 4, !tbaa !9
  %239 = sext i32 %238 to i64
  %240 = getelementptr inbounds double, ptr %237, i64 %239
  %241 = load ptr, ptr %19, align 8, !tbaa !5
  %242 = load ptr, ptr %20, align 8, !tbaa !5
  %243 = getelementptr inbounds double, ptr %242, i64 1
  %244 = load ptr, ptr %21, align 8, !tbaa !5
  %245 = getelementptr inbounds double, ptr %244, i64 1
  %246 = load ptr, ptr %22, align 8, !tbaa !5
  %247 = load i32, ptr %32, align 4, !tbaa !9
  %248 = sext i32 %247 to i64
  %249 = getelementptr inbounds double, ptr %246, i64 %248
  %250 = load ptr, ptr %23, align 8, !tbaa !5
  %251 = load ptr, ptr %26, align 8, !tbaa !5
  %252 = getelementptr inbounds double, ptr %251, i64 1
  %253 = load ptr, ptr %28, align 8, !tbaa !5
  call void @dhseqr_(ptr noundef @.str.5, ptr noundef @.str, ptr noundef %235, ptr noundef @c__1, ptr noundef %236, ptr noundef %240, ptr noundef %241, ptr noundef %243, ptr noundef %245, ptr noundef %249, ptr noundef %250, ptr noundef %252, ptr noundef @c_n1, ptr noundef %253)
  %254 = load ptr, ptr %26, align 8, !tbaa !5
  %255 = getelementptr inbounds double, ptr %254, i64 1
  %256 = load double, ptr %255, align 8, !tbaa !11
  %257 = fptosi double %256 to i32
  store i32 %257, ptr %60, align 4, !tbaa !9
  %258 = load i32, ptr %57, align 4, !tbaa !9
  store i32 %258, ptr %35, align 4, !tbaa !9
  %259 = load ptr, ptr %17, align 8, !tbaa !5
  %260 = load i32, ptr %259, align 4, !tbaa !9
  %261 = add nsw i32 %260, 1
  store i32 %261, ptr %36, align 4, !tbaa !9
  %262 = load i32, ptr %35, align 4, !tbaa !9
  %263 = load i32, ptr %36, align 4, !tbaa !9
  %264 = icmp sge i32 %262, %263
  br i1 %264, label %265, label %267

265:                                              ; preds = %233
  %266 = load i32, ptr %35, align 4, !tbaa !9
  br label %269

267:                                              ; preds = %233
  %268 = load i32, ptr %36, align 4, !tbaa !9
  br label %269

269:                                              ; preds = %267, %265
  %270 = phi i32 [ %266, %265 ], [ %268, %267 ]
  store i32 %270, ptr %35, align 4, !tbaa !9
  %271 = load ptr, ptr %17, align 8, !tbaa !5
  %272 = load i32, ptr %271, align 4, !tbaa !9
  %273 = load i32, ptr %60, align 4, !tbaa !9
  %274 = add nsw i32 %272, %273
  store i32 %274, ptr %36, align 4, !tbaa !9
  %275 = load i32, ptr %35, align 4, !tbaa !9
  %276 = load i32, ptr %36, align 4, !tbaa !9
  %277 = icmp sge i32 %275, %276
  br i1 %277, label %278, label %280

278:                                              ; preds = %269
  %279 = load i32, ptr %35, align 4, !tbaa !9
  br label %282

280:                                              ; preds = %269
  %281 = load i32, ptr %36, align 4, !tbaa !9
  br label %282

282:                                              ; preds = %280, %278
  %283 = phi i32 [ %279, %278 ], [ %281, %280 ]
  store i32 %283, ptr %57, align 4, !tbaa !9
  %284 = getelementptr inbounds [1 x i32], ptr %54, i64 0, i64 0
  %285 = load ptr, ptr %17, align 8, !tbaa !5
  %286 = load ptr, ptr %18, align 8, !tbaa !5
  %287 = load i32, ptr %30, align 4, !tbaa !9
  %288 = sext i32 %287 to i64
  %289 = getelementptr inbounds double, ptr %286, i64 %288
  %290 = load ptr, ptr %19, align 8, !tbaa !5
  %291 = load ptr, ptr %22, align 8, !tbaa !5
  %292 = load i32, ptr %32, align 4, !tbaa !9
  %293 = sext i32 %292 to i64
  %294 = getelementptr inbounds double, ptr %291, i64 %293
  %295 = load ptr, ptr %23, align 8, !tbaa !5
  %296 = load ptr, ptr %24, align 8, !tbaa !5
  %297 = load i32, ptr %34, align 4, !tbaa !9
  %298 = sext i32 %297 to i64
  %299 = getelementptr inbounds double, ptr %296, i64 %298
  %300 = load ptr, ptr %25, align 8, !tbaa !5
  %301 = load ptr, ptr %17, align 8, !tbaa !5
  %302 = load ptr, ptr %26, align 8, !tbaa !5
  %303 = getelementptr inbounds double, ptr %302, i64 1
  call void @dtrevc3_(ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %284, ptr noundef %285, ptr noundef %289, ptr noundef %290, ptr noundef %294, ptr noundef %295, ptr noundef %299, ptr noundef %300, ptr noundef %301, ptr noundef %46, ptr noundef %303, ptr noundef @c_n1, ptr noundef %43)
  %304 = load ptr, ptr %26, align 8, !tbaa !5
  %305 = getelementptr inbounds double, ptr %304, i64 1
  %306 = load double, ptr %305, align 8, !tbaa !11
  %307 = fptosi double %306 to i32
  store i32 %307, ptr %68, align 4, !tbaa !9
  %308 = load i32, ptr %57, align 4, !tbaa !9
  store i32 %308, ptr %35, align 4, !tbaa !9
  %309 = load ptr, ptr %17, align 8, !tbaa !5
  %310 = load i32, ptr %309, align 4, !tbaa !9
  %311 = load i32, ptr %68, align 4, !tbaa !9
  %312 = add nsw i32 %310, %311
  store i32 %312, ptr %36, align 4, !tbaa !9
  %313 = load i32, ptr %35, align 4, !tbaa !9
  %314 = load i32, ptr %36, align 4, !tbaa !9
  %315 = icmp sge i32 %313, %314
  br i1 %315, label %316, label %318

316:                                              ; preds = %282
  %317 = load i32, ptr %35, align 4, !tbaa !9
  br label %320

318:                                              ; preds = %282
  %319 = load i32, ptr %36, align 4, !tbaa !9
  br label %320

320:                                              ; preds = %318, %316
  %321 = phi i32 [ %317, %316 ], [ %319, %318 ]
  store i32 %321, ptr %57, align 4, !tbaa !9
  %322 = load i32, ptr %57, align 4, !tbaa !9
  store i32 %322, ptr %35, align 4, !tbaa !9
  %323 = load ptr, ptr %17, align 8, !tbaa !5
  %324 = load i32, ptr %323, align 4, !tbaa !9
  %325 = shl i32 %324, 2
  store i32 %325, ptr %36, align 4, !tbaa !9
  %326 = load i32, ptr %35, align 4, !tbaa !9
  %327 = load i32, ptr %36, align 4, !tbaa !9
  %328 = icmp sge i32 %326, %327
  br i1 %328, label %329, label %331

329:                                              ; preds = %320
  %330 = load i32, ptr %35, align 4, !tbaa !9
  br label %333

331:                                              ; preds = %320
  %332 = load i32, ptr %36, align 4, !tbaa !9
  br label %333

333:                                              ; preds = %331, %329
  %334 = phi i32 [ %330, %329 ], [ %332, %331 ]
  store i32 %334, ptr %57, align 4, !tbaa !9
  br label %517

335:                                              ; preds = %197
  %336 = load i32, ptr %62, align 4, !tbaa !9
  %337 = icmp ne i32 %336, 0
  br i1 %337, label %338, label %463

338:                                              ; preds = %335
  %339 = load ptr, ptr %17, align 8, !tbaa !5
  %340 = load i32, ptr %339, align 4, !tbaa !9
  %341 = shl i32 %340, 2
  store i32 %341, ptr %56, align 4, !tbaa !9
  %342 = load i32, ptr %57, align 4, !tbaa !9
  store i32 %342, ptr %35, align 4, !tbaa !9
  %343 = load ptr, ptr %17, align 8, !tbaa !5
  %344 = load i32, ptr %343, align 4, !tbaa !9
  %345 = shl i32 %344, 1
  %346 = load ptr, ptr %17, align 8, !tbaa !5
  %347 = load i32, ptr %346, align 4, !tbaa !9
  %348 = sub nsw i32 %347, 1
  %349 = load ptr, ptr %17, align 8, !tbaa !5
  %350 = load ptr, ptr %17, align 8, !tbaa !5
  %351 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.4, ptr noundef @.str.3, ptr noundef %349, ptr noundef @c__1, ptr noundef %350, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  %352 = mul nsw i32 %348, %351
  %353 = add nsw i32 %345, %352
  store i32 %353, ptr %36, align 4, !tbaa !9
  %354 = load i32, ptr %35, align 4, !tbaa !9
  %355 = load i32, ptr %36, align 4, !tbaa !9
  %356 = icmp sge i32 %354, %355
  br i1 %356, label %357, label %359

357:                                              ; preds = %338
  %358 = load i32, ptr %35, align 4, !tbaa !9
  br label %361

359:                                              ; preds = %338
  %360 = load i32, ptr %36, align 4, !tbaa !9
  br label %361

361:                                              ; preds = %359, %357
  %362 = phi i32 [ %358, %357 ], [ %360, %359 ]
  store i32 %362, ptr %57, align 4, !tbaa !9
  %363 = load ptr, ptr %17, align 8, !tbaa !5
  %364 = load ptr, ptr %17, align 8, !tbaa !5
  %365 = load ptr, ptr %18, align 8, !tbaa !5
  %366 = load i32, ptr %30, align 4, !tbaa !9
  %367 = sext i32 %366 to i64
  %368 = getelementptr inbounds double, ptr %365, i64 %367
  %369 = load ptr, ptr %19, align 8, !tbaa !5
  %370 = load ptr, ptr %20, align 8, !tbaa !5
  %371 = getelementptr inbounds double, ptr %370, i64 1
  %372 = load ptr, ptr %21, align 8, !tbaa !5
  %373 = getelementptr inbounds double, ptr %372, i64 1
  %374 = load ptr, ptr %24, align 8, !tbaa !5
  %375 = load i32, ptr %34, align 4, !tbaa !9
  %376 = sext i32 %375 to i64
  %377 = getelementptr inbounds double, ptr %374, i64 %376
  %378 = load ptr, ptr %25, align 8, !tbaa !5
  %379 = load ptr, ptr %26, align 8, !tbaa !5
  %380 = getelementptr inbounds double, ptr %379, i64 1
  %381 = load ptr, ptr %28, align 8, !tbaa !5
  call void @dhseqr_(ptr noundef @.str.5, ptr noundef @.str, ptr noundef %363, ptr noundef @c__1, ptr noundef %364, ptr noundef %368, ptr noundef %369, ptr noundef %371, ptr noundef %373, ptr noundef %377, ptr noundef %378, ptr noundef %380, ptr noundef @c_n1, ptr noundef %381)
  %382 = load ptr, ptr %26, align 8, !tbaa !5
  %383 = getelementptr inbounds double, ptr %382, i64 1
  %384 = load double, ptr %383, align 8, !tbaa !11
  %385 = fptosi double %384 to i32
  store i32 %385, ptr %60, align 4, !tbaa !9
  %386 = load i32, ptr %57, align 4, !tbaa !9
  store i32 %386, ptr %35, align 4, !tbaa !9
  %387 = load ptr, ptr %17, align 8, !tbaa !5
  %388 = load i32, ptr %387, align 4, !tbaa !9
  %389 = add nsw i32 %388, 1
  store i32 %389, ptr %36, align 4, !tbaa !9
  %390 = load i32, ptr %35, align 4, !tbaa !9
  %391 = load i32, ptr %36, align 4, !tbaa !9
  %392 = icmp sge i32 %390, %391
  br i1 %392, label %393, label %395

393:                                              ; preds = %361
  %394 = load i32, ptr %35, align 4, !tbaa !9
  br label %397

395:                                              ; preds = %361
  %396 = load i32, ptr %36, align 4, !tbaa !9
  br label %397

397:                                              ; preds = %395, %393
  %398 = phi i32 [ %394, %393 ], [ %396, %395 ]
  store i32 %398, ptr %35, align 4, !tbaa !9
  %399 = load ptr, ptr %17, align 8, !tbaa !5
  %400 = load i32, ptr %399, align 4, !tbaa !9
  %401 = load i32, ptr %60, align 4, !tbaa !9
  %402 = add nsw i32 %400, %401
  store i32 %402, ptr %36, align 4, !tbaa !9
  %403 = load i32, ptr %35, align 4, !tbaa !9
  %404 = load i32, ptr %36, align 4, !tbaa !9
  %405 = icmp sge i32 %403, %404
  br i1 %405, label %406, label %408

406:                                              ; preds = %397
  %407 = load i32, ptr %35, align 4, !tbaa !9
  br label %410

408:                                              ; preds = %397
  %409 = load i32, ptr %36, align 4, !tbaa !9
  br label %410

410:                                              ; preds = %408, %406
  %411 = phi i32 [ %407, %406 ], [ %409, %408 ]
  store i32 %411, ptr %57, align 4, !tbaa !9
  %412 = getelementptr inbounds [1 x i32], ptr %54, i64 0, i64 0
  %413 = load ptr, ptr %17, align 8, !tbaa !5
  %414 = load ptr, ptr %18, align 8, !tbaa !5
  %415 = load i32, ptr %30, align 4, !tbaa !9
  %416 = sext i32 %415 to i64
  %417 = getelementptr inbounds double, ptr %414, i64 %416
  %418 = load ptr, ptr %19, align 8, !tbaa !5
  %419 = load ptr, ptr %22, align 8, !tbaa !5
  %420 = load i32, ptr %32, align 4, !tbaa !9
  %421 = sext i32 %420 to i64
  %422 = getelementptr inbounds double, ptr %419, i64 %421
  %423 = load ptr, ptr %23, align 8, !tbaa !5
  %424 = load ptr, ptr %24, align 8, !tbaa !5
  %425 = load i32, ptr %34, align 4, !tbaa !9
  %426 = sext i32 %425 to i64
  %427 = getelementptr inbounds double, ptr %424, i64 %426
  %428 = load ptr, ptr %25, align 8, !tbaa !5
  %429 = load ptr, ptr %17, align 8, !tbaa !5
  %430 = load ptr, ptr %26, align 8, !tbaa !5
  %431 = getelementptr inbounds double, ptr %430, i64 1
  call void @dtrevc3_(ptr noundef @.str.8, ptr noundef @.str.7, ptr noundef %412, ptr noundef %413, ptr noundef %417, ptr noundef %418, ptr noundef %422, ptr noundef %423, ptr noundef %427, ptr noundef %428, ptr noundef %429, ptr noundef %46, ptr noundef %431, ptr noundef @c_n1, ptr noundef %43)
  %432 = load ptr, ptr %26, align 8, !tbaa !5
  %433 = getelementptr inbounds double, ptr %432, i64 1
  %434 = load double, ptr %433, align 8, !tbaa !11
  %435 = fptosi double %434 to i32
  store i32 %435, ptr %68, align 4, !tbaa !9
  %436 = load i32, ptr %57, align 4, !tbaa !9
  store i32 %436, ptr %35, align 4, !tbaa !9
  %437 = load ptr, ptr %17, align 8, !tbaa !5
  %438 = load i32, ptr %437, align 4, !tbaa !9
  %439 = load i32, ptr %68, align 4, !tbaa !9
  %440 = add nsw i32 %438, %439
  store i32 %440, ptr %36, align 4, !tbaa !9
  %441 = load i32, ptr %35, align 4, !tbaa !9
  %442 = load i32, ptr %36, align 4, !tbaa !9
  %443 = icmp sge i32 %441, %442
  br i1 %443, label %444, label %446

444:                                              ; preds = %410
  %445 = load i32, ptr %35, align 4, !tbaa !9
  br label %448

446:                                              ; preds = %410
  %447 = load i32, ptr %36, align 4, !tbaa !9
  br label %448

448:                                              ; preds = %446, %444
  %449 = phi i32 [ %445, %444 ], [ %447, %446 ]
  store i32 %449, ptr %57, align 4, !tbaa !9
  %450 = load i32, ptr %57, align 4, !tbaa !9
  store i32 %450, ptr %35, align 4, !tbaa !9
  %451 = load ptr, ptr %17, align 8, !tbaa !5
  %452 = load i32, ptr %451, align 4, !tbaa !9
  %453 = shl i32 %452, 2
  store i32 %453, ptr %36, align 4, !tbaa !9
  %454 = load i32, ptr %35, align 4, !tbaa !9
  %455 = load i32, ptr %36, align 4, !tbaa !9
  %456 = icmp sge i32 %454, %455
  br i1 %456, label %457, label %459

457:                                              ; preds = %448
  %458 = load i32, ptr %35, align 4, !tbaa !9
  br label %461

459:                                              ; preds = %448
  %460 = load i32, ptr %36, align 4, !tbaa !9
  br label %461

461:                                              ; preds = %459, %457
  %462 = phi i32 [ %458, %457 ], [ %460, %459 ]
  store i32 %462, ptr %57, align 4, !tbaa !9
  br label %516

463:                                              ; preds = %335
  %464 = load ptr, ptr %17, align 8, !tbaa !5
  %465 = load i32, ptr %464, align 4, !tbaa !9
  %466 = mul nsw i32 %465, 3
  store i32 %466, ptr %56, align 4, !tbaa !9
  %467 = load ptr, ptr %17, align 8, !tbaa !5
  %468 = load ptr, ptr %17, align 8, !tbaa !5
  %469 = load ptr, ptr %18, align 8, !tbaa !5
  %470 = load i32, ptr %30, align 4, !tbaa !9
  %471 = sext i32 %470 to i64
  %472 = getelementptr inbounds double, ptr %469, i64 %471
  %473 = load ptr, ptr %19, align 8, !tbaa !5
  %474 = load ptr, ptr %20, align 8, !tbaa !5
  %475 = getelementptr inbounds double, ptr %474, i64 1
  %476 = load ptr, ptr %21, align 8, !tbaa !5
  %477 = getelementptr inbounds double, ptr %476, i64 1
  %478 = load ptr, ptr %24, align 8, !tbaa !5
  %479 = load i32, ptr %34, align 4, !tbaa !9
  %480 = sext i32 %479 to i64
  %481 = getelementptr inbounds double, ptr %478, i64 %480
  %482 = load ptr, ptr %25, align 8, !tbaa !5
  %483 = load ptr, ptr %26, align 8, !tbaa !5
  %484 = getelementptr inbounds double, ptr %483, i64 1
  %485 = load ptr, ptr %28, align 8, !tbaa !5
  call void @dhseqr_(ptr noundef @.str.9, ptr noundef @.str.1, ptr noundef %467, ptr noundef @c__1, ptr noundef %468, ptr noundef %472, ptr noundef %473, ptr noundef %475, ptr noundef %477, ptr noundef %481, ptr noundef %482, ptr noundef %484, ptr noundef @c_n1, ptr noundef %485)
  %486 = load ptr, ptr %26, align 8, !tbaa !5
  %487 = getelementptr inbounds double, ptr %486, i64 1
  %488 = load double, ptr %487, align 8, !tbaa !11
  %489 = fptosi double %488 to i32
  store i32 %489, ptr %60, align 4, !tbaa !9
  %490 = load i32, ptr %57, align 4, !tbaa !9
  store i32 %490, ptr %35, align 4, !tbaa !9
  %491 = load ptr, ptr %17, align 8, !tbaa !5
  %492 = load i32, ptr %491, align 4, !tbaa !9
  %493 = add nsw i32 %492, 1
  store i32 %493, ptr %36, align 4, !tbaa !9
  %494 = load i32, ptr %35, align 4, !tbaa !9
  %495 = load i32, ptr %36, align 4, !tbaa !9
  %496 = icmp sge i32 %494, %495
  br i1 %496, label %497, label %499

497:                                              ; preds = %463
  %498 = load i32, ptr %35, align 4, !tbaa !9
  br label %501

499:                                              ; preds = %463
  %500 = load i32, ptr %36, align 4, !tbaa !9
  br label %501

501:                                              ; preds = %499, %497
  %502 = phi i32 [ %498, %497 ], [ %500, %499 ]
  store i32 %502, ptr %35, align 4, !tbaa !9
  %503 = load ptr, ptr %17, align 8, !tbaa !5
  %504 = load i32, ptr %503, align 4, !tbaa !9
  %505 = load i32, ptr %60, align 4, !tbaa !9
  %506 = add nsw i32 %504, %505
  store i32 %506, ptr %36, align 4, !tbaa !9
  %507 = load i32, ptr %35, align 4, !tbaa !9
  %508 = load i32, ptr %36, align 4, !tbaa !9
  %509 = icmp sge i32 %507, %508
  br i1 %509, label %510, label %512

510:                                              ; preds = %501
  %511 = load i32, ptr %35, align 4, !tbaa !9
  br label %514

512:                                              ; preds = %501
  %513 = load i32, ptr %36, align 4, !tbaa !9
  br label %514

514:                                              ; preds = %512, %510
  %515 = phi i32 [ %511, %510 ], [ %513, %512 ]
  store i32 %515, ptr %57, align 4, !tbaa !9
  br label %516

516:                                              ; preds = %514, %461
  br label %517

517:                                              ; preds = %516, %333
  %518 = load i32, ptr %57, align 4, !tbaa !9
  %519 = load i32, ptr %56, align 4, !tbaa !9
  %520 = icmp sge i32 %518, %519
  br i1 %520, label %521, label %523

521:                                              ; preds = %517
  %522 = load i32, ptr %57, align 4, !tbaa !9
  br label %525

523:                                              ; preds = %517
  %524 = load i32, ptr %56, align 4, !tbaa !9
  br label %525

525:                                              ; preds = %523, %521
  %526 = phi i32 [ %522, %521 ], [ %524, %523 ]
  store i32 %526, ptr %57, align 4, !tbaa !9
  br label %527

527:                                              ; preds = %525, %196
  %528 = load i32, ptr %57, align 4, !tbaa !9
  %529 = sitofp i32 %528 to double
  %530 = load ptr, ptr %26, align 8, !tbaa !5
  %531 = getelementptr inbounds double, ptr %530, i64 1
  store double %529, ptr %531, align 8, !tbaa !11
  %532 = load ptr, ptr %27, align 8, !tbaa !5
  %533 = load i32, ptr %532, align 4, !tbaa !9
  %534 = load i32, ptr %56, align 4, !tbaa !9
  %535 = icmp slt i32 %533, %534
  br i1 %535, label %536, label %541

536:                                              ; preds = %527
  %537 = load i32, ptr %61, align 4, !tbaa !9
  %538 = icmp ne i32 %537, 0
  br i1 %538, label %541, label %539

539:                                              ; preds = %536
  %540 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -13, ptr %540, align 4, !tbaa !9
  br label %541

541:                                              ; preds = %539, %536, %527
  br label %542

542:                                              ; preds = %541, %188
  %543 = load ptr, ptr %28, align 8, !tbaa !5
  %544 = load i32, ptr %543, align 4, !tbaa !9
  %545 = icmp ne i32 %544, 0
  br i1 %545, label %546, label %551

546:                                              ; preds = %542
  %547 = load ptr, ptr %28, align 8, !tbaa !5
  %548 = load i32, ptr %547, align 4, !tbaa !9
  %549 = sub nsw i32 0, %548
  store i32 %549, ptr %35, align 4, !tbaa !9
  %550 = call i32 @xerbla_(ptr noundef @.str.10, ptr noundef %35, i32 noundef 6)
  store i32 1, ptr %69, align 4
  br label %1304

551:                                              ; preds = %542
  %552 = load i32, ptr %61, align 4, !tbaa !9
  %553 = icmp ne i32 %552, 0
  br i1 %553, label %554, label %555

554:                                              ; preds = %551
  store i32 1, ptr %69, align 4
  br label %1304

555:                                              ; preds = %551
  br label %556

556:                                              ; preds = %555
  %557 = load ptr, ptr %17, align 8, !tbaa !5
  %558 = load i32, ptr %557, align 4, !tbaa !9
  %559 = icmp eq i32 %558, 0
  br i1 %559, label %560, label %561

560:                                              ; preds = %556
  store i32 1, ptr %69, align 4
  br label %1304

561:                                              ; preds = %556
  %562 = call double @dlamch_(ptr noundef @.str.11)
  store double %562, ptr %67, align 8, !tbaa !11
  %563 = call double @dlamch_(ptr noundef @.str.5)
  store double %563, ptr %59, align 8, !tbaa !11
  %564 = load double, ptr %59, align 8, !tbaa !11
  %565 = fdiv double 1.000000e+00, %564
  store double %565, ptr %55, align 8, !tbaa !11
  call void @dlabad_(ptr noundef %59, ptr noundef %55)
  %566 = load double, ptr %59, align 8, !tbaa !11
  %567 = call double @sqrt(double noundef %566) #5
  %568 = load double, ptr %67, align 8, !tbaa !11
  %569 = fdiv double %567, %568
  store double %569, ptr %59, align 8, !tbaa !11
  %570 = load double, ptr %59, align 8, !tbaa !11
  %571 = fdiv double 1.000000e+00, %570
  store double %571, ptr %55, align 8, !tbaa !11
  %572 = load ptr, ptr %17, align 8, !tbaa !5
  %573 = load ptr, ptr %17, align 8, !tbaa !5
  %574 = load ptr, ptr %18, align 8, !tbaa !5
  %575 = load i32, ptr %30, align 4, !tbaa !9
  %576 = sext i32 %575 to i64
  %577 = getelementptr inbounds double, ptr %574, i64 %576
  %578 = load ptr, ptr %19, align 8, !tbaa !5
  %579 = getelementptr inbounds [1 x double], ptr %66, i64 0, i64 0
  %580 = call double @dlange_(ptr noundef @.str.12, ptr noundef %572, ptr noundef %573, ptr noundef %577, ptr noundef %578, ptr noundef %579)
  store double %580, ptr %42, align 8, !tbaa !11
  store i32 0, ptr %51, align 4, !tbaa !9
  %581 = load double, ptr %42, align 8, !tbaa !11
  %582 = fcmp ogt double %581, 0.000000e+00
  br i1 %582, label %583, label %589

583:                                              ; preds = %561
  %584 = load double, ptr %42, align 8, !tbaa !11
  %585 = load double, ptr %59, align 8, !tbaa !11
  %586 = fcmp olt double %584, %585
  br i1 %586, label %587, label %589

587:                                              ; preds = %583
  store i32 1, ptr %51, align 4, !tbaa !9
  %588 = load double, ptr %59, align 8, !tbaa !11
  store double %588, ptr %52, align 8, !tbaa !11
  br label %596

589:                                              ; preds = %583, %561
  %590 = load double, ptr %42, align 8, !tbaa !11
  %591 = load double, ptr %55, align 8, !tbaa !11
  %592 = fcmp ogt double %590, %591
  br i1 %592, label %593, label %595

593:                                              ; preds = %589
  store i32 1, ptr %51, align 4, !tbaa !9
  %594 = load double, ptr %55, align 8, !tbaa !11
  store double %594, ptr %52, align 8, !tbaa !11
  br label %595

595:                                              ; preds = %593, %589
  br label %596

596:                                              ; preds = %595, %587
  %597 = load i32, ptr %51, align 4, !tbaa !9
  %598 = icmp ne i32 %597, 0
  br i1 %598, label %599, label %607

599:                                              ; preds = %596
  %600 = load ptr, ptr %17, align 8, !tbaa !5
  %601 = load ptr, ptr %17, align 8, !tbaa !5
  %602 = load ptr, ptr %18, align 8, !tbaa !5
  %603 = load i32, ptr %30, align 4, !tbaa !9
  %604 = sext i32 %603 to i64
  %605 = getelementptr inbounds double, ptr %602, i64 %604
  %606 = load ptr, ptr %19, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.13, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %42, ptr noundef %52, ptr noundef %600, ptr noundef %601, ptr noundef %605, ptr noundef %606, ptr noundef %43)
  br label %607

607:                                              ; preds = %599, %596
  store i32 1, ptr %40, align 4, !tbaa !9
  %608 = load ptr, ptr %17, align 8, !tbaa !5
  %609 = load ptr, ptr %18, align 8, !tbaa !5
  %610 = load i32, ptr %30, align 4, !tbaa !9
  %611 = sext i32 %610 to i64
  %612 = getelementptr inbounds double, ptr %609, i64 %611
  %613 = load ptr, ptr %19, align 8, !tbaa !5
  %614 = load ptr, ptr %26, align 8, !tbaa !5
  %615 = load i32, ptr %40, align 4, !tbaa !9
  %616 = sext i32 %615 to i64
  %617 = getelementptr inbounds double, ptr %614, i64 %616
  call void @dgebal_(ptr noundef @.str.7, ptr noundef %608, ptr noundef %612, ptr noundef %613, ptr noundef %65, ptr noundef %63, ptr noundef %617, ptr noundef %43)
  %618 = load i32, ptr %40, align 4, !tbaa !9
  %619 = load ptr, ptr %17, align 8, !tbaa !5
  %620 = load i32, ptr %619, align 4, !tbaa !9
  %621 = add nsw i32 %618, %620
  store i32 %621, ptr %44, align 4, !tbaa !9
  %622 = load i32, ptr %44, align 4, !tbaa !9
  %623 = load ptr, ptr %17, align 8, !tbaa !5
  %624 = load i32, ptr %623, align 4, !tbaa !9
  %625 = add nsw i32 %622, %624
  store i32 %625, ptr %45, align 4, !tbaa !9
  %626 = load ptr, ptr %27, align 8, !tbaa !5
  %627 = load i32, ptr %626, align 4, !tbaa !9
  %628 = load i32, ptr %45, align 4, !tbaa !9
  %629 = sub nsw i32 %627, %628
  %630 = add nsw i32 %629, 1
  store i32 %630, ptr %35, align 4, !tbaa !9
  %631 = load ptr, ptr %17, align 8, !tbaa !5
  %632 = load ptr, ptr %18, align 8, !tbaa !5
  %633 = load i32, ptr %30, align 4, !tbaa !9
  %634 = sext i32 %633 to i64
  %635 = getelementptr inbounds double, ptr %632, i64 %634
  %636 = load ptr, ptr %19, align 8, !tbaa !5
  %637 = load ptr, ptr %26, align 8, !tbaa !5
  %638 = load i32, ptr %44, align 4, !tbaa !9
  %639 = sext i32 %638 to i64
  %640 = getelementptr inbounds double, ptr %637, i64 %639
  %641 = load ptr, ptr %26, align 8, !tbaa !5
  %642 = load i32, ptr %45, align 4, !tbaa !9
  %643 = sext i32 %642 to i64
  %644 = getelementptr inbounds double, ptr %641, i64 %643
  call void @dgehrd_(ptr noundef %631, ptr noundef %65, ptr noundef %63, ptr noundef %635, ptr noundef %636, ptr noundef %640, ptr noundef %644, ptr noundef %35, ptr noundef %43)
  %645 = load i32, ptr %58, align 4, !tbaa !9
  %646 = icmp ne i32 %645, 0
  br i1 %646, label %647, label %723

647:                                              ; preds = %607
  %648 = getelementptr inbounds [1 x i8], ptr %41, i64 0, i64 0
  store i8 76, ptr %648, align 1, !tbaa !13
  %649 = load ptr, ptr %17, align 8, !tbaa !5
  %650 = load ptr, ptr %17, align 8, !tbaa !5
  %651 = load ptr, ptr %18, align 8, !tbaa !5
  %652 = load i32, ptr %30, align 4, !tbaa !9
  %653 = sext i32 %652 to i64
  %654 = getelementptr inbounds double, ptr %651, i64 %653
  %655 = load ptr, ptr %19, align 8, !tbaa !5
  %656 = load ptr, ptr %22, align 8, !tbaa !5
  %657 = load i32, ptr %32, align 4, !tbaa !9
  %658 = sext i32 %657 to i64
  %659 = getelementptr inbounds double, ptr %656, i64 %658
  %660 = load ptr, ptr %23, align 8, !tbaa !5
  call void @dlacpy_(ptr noundef @.str.6, ptr noundef %649, ptr noundef %650, ptr noundef %654, ptr noundef %655, ptr noundef %659, ptr noundef %660)
  %661 = load ptr, ptr %27, align 8, !tbaa !5
  %662 = load i32, ptr %661, align 4, !tbaa !9
  %663 = load i32, ptr %45, align 4, !tbaa !9
  %664 = sub nsw i32 %662, %663
  %665 = add nsw i32 %664, 1
  store i32 %665, ptr %35, align 4, !tbaa !9
  %666 = load ptr, ptr %17, align 8, !tbaa !5
  %667 = load ptr, ptr %22, align 8, !tbaa !5
  %668 = load i32, ptr %32, align 4, !tbaa !9
  %669 = sext i32 %668 to i64
  %670 = getelementptr inbounds double, ptr %667, i64 %669
  %671 = load ptr, ptr %23, align 8, !tbaa !5
  %672 = load ptr, ptr %26, align 8, !tbaa !5
  %673 = load i32, ptr %44, align 4, !tbaa !9
  %674 = sext i32 %673 to i64
  %675 = getelementptr inbounds double, ptr %672, i64 %674
  %676 = load ptr, ptr %26, align 8, !tbaa !5
  %677 = load i32, ptr %45, align 4, !tbaa !9
  %678 = sext i32 %677 to i64
  %679 = getelementptr inbounds double, ptr %676, i64 %678
  call void @dorghr_(ptr noundef %666, ptr noundef %65, ptr noundef %63, ptr noundef %670, ptr noundef %671, ptr noundef %675, ptr noundef %679, ptr noundef %35, ptr noundef %43)
  %680 = load i32, ptr %44, align 4, !tbaa !9
  store i32 %680, ptr %45, align 4, !tbaa !9
  %681 = load ptr, ptr %27, align 8, !tbaa !5
  %682 = load i32, ptr %681, align 4, !tbaa !9
  %683 = load i32, ptr %45, align 4, !tbaa !9
  %684 = sub nsw i32 %682, %683
  %685 = add nsw i32 %684, 1
  store i32 %685, ptr %35, align 4, !tbaa !9
  %686 = load ptr, ptr %17, align 8, !tbaa !5
  %687 = load ptr, ptr %18, align 8, !tbaa !5
  %688 = load i32, ptr %30, align 4, !tbaa !9
  %689 = sext i32 %688 to i64
  %690 = getelementptr inbounds double, ptr %687, i64 %689
  %691 = load ptr, ptr %19, align 8, !tbaa !5
  %692 = load ptr, ptr %20, align 8, !tbaa !5
  %693 = getelementptr inbounds double, ptr %692, i64 1
  %694 = load ptr, ptr %21, align 8, !tbaa !5
  %695 = getelementptr inbounds double, ptr %694, i64 1
  %696 = load ptr, ptr %22, align 8, !tbaa !5
  %697 = load i32, ptr %32, align 4, !tbaa !9
  %698 = sext i32 %697 to i64
  %699 = getelementptr inbounds double, ptr %696, i64 %698
  %700 = load ptr, ptr %23, align 8, !tbaa !5
  %701 = load ptr, ptr %26, align 8, !tbaa !5
  %702 = load i32, ptr %45, align 4, !tbaa !9
  %703 = sext i32 %702 to i64
  %704 = getelementptr inbounds double, ptr %701, i64 %703
  %705 = load ptr, ptr %28, align 8, !tbaa !5
  call void @dhseqr_(ptr noundef @.str.5, ptr noundef @.str, ptr noundef %686, ptr noundef %65, ptr noundef %63, ptr noundef %690, ptr noundef %691, ptr noundef %693, ptr noundef %695, ptr noundef %699, ptr noundef %700, ptr noundef %704, ptr noundef %35, ptr noundef %705)
  %706 = load i32, ptr %62, align 4, !tbaa !9
  %707 = icmp ne i32 %706, 0
  br i1 %707, label %708, label %722

708:                                              ; preds = %647
  %709 = getelementptr inbounds [1 x i8], ptr %41, i64 0, i64 0
  store i8 66, ptr %709, align 1, !tbaa !13
  %710 = load ptr, ptr %17, align 8, !tbaa !5
  %711 = load ptr, ptr %17, align 8, !tbaa !5
  %712 = load ptr, ptr %22, align 8, !tbaa !5
  %713 = load i32, ptr %32, align 4, !tbaa !9
  %714 = sext i32 %713 to i64
  %715 = getelementptr inbounds double, ptr %712, i64 %714
  %716 = load ptr, ptr %23, align 8, !tbaa !5
  %717 = load ptr, ptr %24, align 8, !tbaa !5
  %718 = load i32, ptr %34, align 4, !tbaa !9
  %719 = sext i32 %718 to i64
  %720 = getelementptr inbounds double, ptr %717, i64 %719
  %721 = load ptr, ptr %25, align 8, !tbaa !5
  call void @dlacpy_(ptr noundef @.str.14, ptr noundef %710, ptr noundef %711, ptr noundef %715, ptr noundef %716, ptr noundef %720, ptr noundef %721)
  br label %722

722:                                              ; preds = %708, %647
  br label %813

723:                                              ; preds = %607
  %724 = load i32, ptr %62, align 4, !tbaa !9
  %725 = icmp ne i32 %724, 0
  br i1 %725, label %726, label %785

726:                                              ; preds = %723
  %727 = getelementptr inbounds [1 x i8], ptr %41, i64 0, i64 0
  store i8 82, ptr %727, align 1, !tbaa !13
  %728 = load ptr, ptr %17, align 8, !tbaa !5
  %729 = load ptr, ptr %17, align 8, !tbaa !5
  %730 = load ptr, ptr %18, align 8, !tbaa !5
  %731 = load i32, ptr %30, align 4, !tbaa !9
  %732 = sext i32 %731 to i64
  %733 = getelementptr inbounds double, ptr %730, i64 %732
  %734 = load ptr, ptr %19, align 8, !tbaa !5
  %735 = load ptr, ptr %24, align 8, !tbaa !5
  %736 = load i32, ptr %34, align 4, !tbaa !9
  %737 = sext i32 %736 to i64
  %738 = getelementptr inbounds double, ptr %735, i64 %737
  %739 = load ptr, ptr %25, align 8, !tbaa !5
  call void @dlacpy_(ptr noundef @.str.6, ptr noundef %728, ptr noundef %729, ptr noundef %733, ptr noundef %734, ptr noundef %738, ptr noundef %739)
  %740 = load ptr, ptr %27, align 8, !tbaa !5
  %741 = load i32, ptr %740, align 4, !tbaa !9
  %742 = load i32, ptr %45, align 4, !tbaa !9
  %743 = sub nsw i32 %741, %742
  %744 = add nsw i32 %743, 1
  store i32 %744, ptr %35, align 4, !tbaa !9
  %745 = load ptr, ptr %17, align 8, !tbaa !5
  %746 = load ptr, ptr %24, align 8, !tbaa !5
  %747 = load i32, ptr %34, align 4, !tbaa !9
  %748 = sext i32 %747 to i64
  %749 = getelementptr inbounds double, ptr %746, i64 %748
  %750 = load ptr, ptr %25, align 8, !tbaa !5
  %751 = load ptr, ptr %26, align 8, !tbaa !5
  %752 = load i32, ptr %44, align 4, !tbaa !9
  %753 = sext i32 %752 to i64
  %754 = getelementptr inbounds double, ptr %751, i64 %753
  %755 = load ptr, ptr %26, align 8, !tbaa !5
  %756 = load i32, ptr %45, align 4, !tbaa !9
  %757 = sext i32 %756 to i64
  %758 = getelementptr inbounds double, ptr %755, i64 %757
  call void @dorghr_(ptr noundef %745, ptr noundef %65, ptr noundef %63, ptr noundef %749, ptr noundef %750, ptr noundef %754, ptr noundef %758, ptr noundef %35, ptr noundef %43)
  %759 = load i32, ptr %44, align 4, !tbaa !9
  store i32 %759, ptr %45, align 4, !tbaa !9
  %760 = load ptr, ptr %27, align 8, !tbaa !5
  %761 = load i32, ptr %760, align 4, !tbaa !9
  %762 = load i32, ptr %45, align 4, !tbaa !9
  %763 = sub nsw i32 %761, %762
  %764 = add nsw i32 %763, 1
  store i32 %764, ptr %35, align 4, !tbaa !9
  %765 = load ptr, ptr %17, align 8, !tbaa !5
  %766 = load ptr, ptr %18, align 8, !tbaa !5
  %767 = load i32, ptr %30, align 4, !tbaa !9
  %768 = sext i32 %767 to i64
  %769 = getelementptr inbounds double, ptr %766, i64 %768
  %770 = load ptr, ptr %19, align 8, !tbaa !5
  %771 = load ptr, ptr %20, align 8, !tbaa !5
  %772 = getelementptr inbounds double, ptr %771, i64 1
  %773 = load ptr, ptr %21, align 8, !tbaa !5
  %774 = getelementptr inbounds double, ptr %773, i64 1
  %775 = load ptr, ptr %24, align 8, !tbaa !5
  %776 = load i32, ptr %34, align 4, !tbaa !9
  %777 = sext i32 %776 to i64
  %778 = getelementptr inbounds double, ptr %775, i64 %777
  %779 = load ptr, ptr %25, align 8, !tbaa !5
  %780 = load ptr, ptr %26, align 8, !tbaa !5
  %781 = load i32, ptr %45, align 4, !tbaa !9
  %782 = sext i32 %781 to i64
  %783 = getelementptr inbounds double, ptr %780, i64 %782
  %784 = load ptr, ptr %28, align 8, !tbaa !5
  call void @dhseqr_(ptr noundef @.str.5, ptr noundef @.str, ptr noundef %765, ptr noundef %65, ptr noundef %63, ptr noundef %769, ptr noundef %770, ptr noundef %772, ptr noundef %774, ptr noundef %778, ptr noundef %779, ptr noundef %783, ptr noundef %35, ptr noundef %784)
  br label %812

785:                                              ; preds = %723
  %786 = load i32, ptr %44, align 4, !tbaa !9
  store i32 %786, ptr %45, align 4, !tbaa !9
  %787 = load ptr, ptr %27, align 8, !tbaa !5
  %788 = load i32, ptr %787, align 4, !tbaa !9
  %789 = load i32, ptr %45, align 4, !tbaa !9
  %790 = sub nsw i32 %788, %789
  %791 = add nsw i32 %790, 1
  store i32 %791, ptr %35, align 4, !tbaa !9
  %792 = load ptr, ptr %17, align 8, !tbaa !5
  %793 = load ptr, ptr %18, align 8, !tbaa !5
  %794 = load i32, ptr %30, align 4, !tbaa !9
  %795 = sext i32 %794 to i64
  %796 = getelementptr inbounds double, ptr %793, i64 %795
  %797 = load ptr, ptr %19, align 8, !tbaa !5
  %798 = load ptr, ptr %20, align 8, !tbaa !5
  %799 = getelementptr inbounds double, ptr %798, i64 1
  %800 = load ptr, ptr %21, align 8, !tbaa !5
  %801 = getelementptr inbounds double, ptr %800, i64 1
  %802 = load ptr, ptr %24, align 8, !tbaa !5
  %803 = load i32, ptr %34, align 4, !tbaa !9
  %804 = sext i32 %803 to i64
  %805 = getelementptr inbounds double, ptr %802, i64 %804
  %806 = load ptr, ptr %25, align 8, !tbaa !5
  %807 = load ptr, ptr %26, align 8, !tbaa !5
  %808 = load i32, ptr %45, align 4, !tbaa !9
  %809 = sext i32 %808 to i64
  %810 = getelementptr inbounds double, ptr %807, i64 %809
  %811 = load ptr, ptr %28, align 8, !tbaa !5
  call void @dhseqr_(ptr noundef @.str.9, ptr noundef @.str.1, ptr noundef %792, ptr noundef %65, ptr noundef %63, ptr noundef %796, ptr noundef %797, ptr noundef %799, ptr noundef %801, ptr noundef %805, ptr noundef %806, ptr noundef %810, ptr noundef %35, ptr noundef %811)
  br label %812

812:                                              ; preds = %785, %726
  br label %813

813:                                              ; preds = %812, %722
  %814 = load ptr, ptr %28, align 8, !tbaa !5
  %815 = load i32, ptr %814, align 4, !tbaa !9
  %816 = icmp ne i32 %815, 0
  br i1 %816, label %817, label %818

817:                                              ; preds = %813
  br label %1234

818:                                              ; preds = %813
  %819 = load i32, ptr %58, align 4, !tbaa !9
  %820 = icmp ne i32 %819, 0
  br i1 %820, label %824, label %821

821:                                              ; preds = %818
  %822 = load i32, ptr %62, align 4, !tbaa !9
  %823 = icmp ne i32 %822, 0
  br i1 %823, label %824, label %853

824:                                              ; preds = %821, %818
  %825 = load ptr, ptr %27, align 8, !tbaa !5
  %826 = load i32, ptr %825, align 4, !tbaa !9
  %827 = load i32, ptr %45, align 4, !tbaa !9
  %828 = sub nsw i32 %826, %827
  %829 = add nsw i32 %828, 1
  store i32 %829, ptr %35, align 4, !tbaa !9
  %830 = getelementptr inbounds [1 x i8], ptr %41, i64 0, i64 0
  %831 = getelementptr inbounds [1 x i32], ptr %54, i64 0, i64 0
  %832 = load ptr, ptr %17, align 8, !tbaa !5
  %833 = load ptr, ptr %18, align 8, !tbaa !5
  %834 = load i32, ptr %30, align 4, !tbaa !9
  %835 = sext i32 %834 to i64
  %836 = getelementptr inbounds double, ptr %833, i64 %835
  %837 = load ptr, ptr %19, align 8, !tbaa !5
  %838 = load ptr, ptr %22, align 8, !tbaa !5
  %839 = load i32, ptr %32, align 4, !tbaa !9
  %840 = sext i32 %839 to i64
  %841 = getelementptr inbounds double, ptr %838, i64 %840
  %842 = load ptr, ptr %23, align 8, !tbaa !5
  %843 = load ptr, ptr %24, align 8, !tbaa !5
  %844 = load i32, ptr %34, align 4, !tbaa !9
  %845 = sext i32 %844 to i64
  %846 = getelementptr inbounds double, ptr %843, i64 %845
  %847 = load ptr, ptr %25, align 8, !tbaa !5
  %848 = load ptr, ptr %17, align 8, !tbaa !5
  %849 = load ptr, ptr %26, align 8, !tbaa !5
  %850 = load i32, ptr %45, align 4, !tbaa !9
  %851 = sext i32 %850 to i64
  %852 = getelementptr inbounds double, ptr %849, i64 %851
  call void @dtrevc3_(ptr noundef %830, ptr noundef @.str.7, ptr noundef %831, ptr noundef %832, ptr noundef %836, ptr noundef %837, ptr noundef %841, ptr noundef %842, ptr noundef %846, ptr noundef %847, ptr noundef %848, ptr noundef %46, ptr noundef %852, ptr noundef %35, ptr noundef %43)
  br label %853

853:                                              ; preds = %824, %821
  %854 = load i32, ptr %58, align 4, !tbaa !9
  %855 = icmp ne i32 %854, 0
  br i1 %855, label %856, label %1043

856:                                              ; preds = %853
  %857 = load ptr, ptr %17, align 8, !tbaa !5
  %858 = load ptr, ptr %26, align 8, !tbaa !5
  %859 = load i32, ptr %40, align 4, !tbaa !9
  %860 = sext i32 %859 to i64
  %861 = getelementptr inbounds double, ptr %858, i64 %860
  %862 = load ptr, ptr %17, align 8, !tbaa !5
  %863 = load ptr, ptr %22, align 8, !tbaa !5
  %864 = load i32, ptr %32, align 4, !tbaa !9
  %865 = sext i32 %864 to i64
  %866 = getelementptr inbounds double, ptr %863, i64 %865
  %867 = load ptr, ptr %23, align 8, !tbaa !5
  call void @dgebak_(ptr noundef @.str.7, ptr noundef @.str.6, ptr noundef %857, ptr noundef %65, ptr noundef %63, ptr noundef %861, ptr noundef %862, ptr noundef %866, ptr noundef %867, ptr noundef %43)
  %868 = load ptr, ptr %17, align 8, !tbaa !5
  %869 = load i32, ptr %868, align 4, !tbaa !9
  store i32 %869, ptr %35, align 4, !tbaa !9
  store i32 1, ptr %47, align 4, !tbaa !9
  br label %870

870:                                              ; preds = %1039, %856
  %871 = load i32, ptr %47, align 4, !tbaa !9
  %872 = load i32, ptr %35, align 4, !tbaa !9
  %873 = icmp sle i32 %871, %872
  br i1 %873, label %874, label %1042

874:                                              ; preds = %870
  %875 = load ptr, ptr %21, align 8, !tbaa !5
  %876 = load i32, ptr %47, align 4, !tbaa !9
  %877 = sext i32 %876 to i64
  %878 = getelementptr inbounds double, ptr %875, i64 %877
  %879 = load double, ptr %878, align 8, !tbaa !11
  %880 = fcmp oeq double %879, 0.000000e+00
  br i1 %880, label %881, label %900

881:                                              ; preds = %874
  %882 = load ptr, ptr %17, align 8, !tbaa !5
  %883 = load ptr, ptr %22, align 8, !tbaa !5
  %884 = load i32, ptr %47, align 4, !tbaa !9
  %885 = load i32, ptr %31, align 4, !tbaa !9
  %886 = mul nsw i32 %884, %885
  %887 = add nsw i32 %886, 1
  %888 = sext i32 %887 to i64
  %889 = getelementptr inbounds double, ptr %883, i64 %888
  %890 = call double @dnrm2_(ptr noundef %882, ptr noundef %889, ptr noundef @c__1)
  %891 = fdiv double 1.000000e+00, %890
  store double %891, ptr %64, align 8, !tbaa !11
  %892 = load ptr, ptr %17, align 8, !tbaa !5
  %893 = load ptr, ptr %22, align 8, !tbaa !5
  %894 = load i32, ptr %47, align 4, !tbaa !9
  %895 = load i32, ptr %31, align 4, !tbaa !9
  %896 = mul nsw i32 %894, %895
  %897 = add nsw i32 %896, 1
  %898 = sext i32 %897 to i64
  %899 = getelementptr inbounds double, ptr %893, i64 %898
  call void @dscal_(ptr noundef %892, ptr noundef %64, ptr noundef %899, ptr noundef @c__1)
  br label %1038

900:                                              ; preds = %874
  %901 = load ptr, ptr %21, align 8, !tbaa !5
  %902 = load i32, ptr %47, align 4, !tbaa !9
  %903 = sext i32 %902 to i64
  %904 = getelementptr inbounds double, ptr %901, i64 %903
  %905 = load double, ptr %904, align 8, !tbaa !11
  %906 = fcmp ogt double %905, 0.000000e+00
  br i1 %906, label %907, label %1037

907:                                              ; preds = %900
  %908 = load ptr, ptr %17, align 8, !tbaa !5
  %909 = load ptr, ptr %22, align 8, !tbaa !5
  %910 = load i32, ptr %47, align 4, !tbaa !9
  %911 = load i32, ptr %31, align 4, !tbaa !9
  %912 = mul nsw i32 %910, %911
  %913 = add nsw i32 %912, 1
  %914 = sext i32 %913 to i64
  %915 = getelementptr inbounds double, ptr %909, i64 %914
  %916 = call double @dnrm2_(ptr noundef %908, ptr noundef %915, ptr noundef @c__1)
  store double %916, ptr %38, align 8, !tbaa !11
  %917 = load ptr, ptr %17, align 8, !tbaa !5
  %918 = load ptr, ptr %22, align 8, !tbaa !5
  %919 = load i32, ptr %47, align 4, !tbaa !9
  %920 = add nsw i32 %919, 1
  %921 = load i32, ptr %31, align 4, !tbaa !9
  %922 = mul nsw i32 %920, %921
  %923 = add nsw i32 %922, 1
  %924 = sext i32 %923 to i64
  %925 = getelementptr inbounds double, ptr %918, i64 %924
  %926 = call double @dnrm2_(ptr noundef %917, ptr noundef %925, ptr noundef @c__1)
  store double %926, ptr %39, align 8, !tbaa !11
  %927 = call double @dlapy2_(ptr noundef %38, ptr noundef %39)
  %928 = fdiv double 1.000000e+00, %927
  store double %928, ptr %64, align 8, !tbaa !11
  %929 = load ptr, ptr %17, align 8, !tbaa !5
  %930 = load ptr, ptr %22, align 8, !tbaa !5
  %931 = load i32, ptr %47, align 4, !tbaa !9
  %932 = load i32, ptr %31, align 4, !tbaa !9
  %933 = mul nsw i32 %931, %932
  %934 = add nsw i32 %933, 1
  %935 = sext i32 %934 to i64
  %936 = getelementptr inbounds double, ptr %930, i64 %935
  call void @dscal_(ptr noundef %929, ptr noundef %64, ptr noundef %936, ptr noundef @c__1)
  %937 = load ptr, ptr %17, align 8, !tbaa !5
  %938 = load ptr, ptr %22, align 8, !tbaa !5
  %939 = load i32, ptr %47, align 4, !tbaa !9
  %940 = add nsw i32 %939, 1
  %941 = load i32, ptr %31, align 4, !tbaa !9
  %942 = mul nsw i32 %940, %941
  %943 = add nsw i32 %942, 1
  %944 = sext i32 %943 to i64
  %945 = getelementptr inbounds double, ptr %938, i64 %944
  call void @dscal_(ptr noundef %937, ptr noundef %64, ptr noundef %945, ptr noundef @c__1)
  %946 = load ptr, ptr %17, align 8, !tbaa !5
  %947 = load i32, ptr %946, align 4, !tbaa !9
  store i32 %947, ptr %36, align 4, !tbaa !9
  store i32 1, ptr %48, align 4, !tbaa !9
  br label %948

948:                                              ; preds = %985, %907
  %949 = load i32, ptr %48, align 4, !tbaa !9
  %950 = load i32, ptr %36, align 4, !tbaa !9
  %951 = icmp sle i32 %949, %950
  br i1 %951, label %952, label %988

952:                                              ; preds = %948
  %953 = load ptr, ptr %22, align 8, !tbaa !5
  %954 = load i32, ptr %48, align 4, !tbaa !9
  %955 = load i32, ptr %47, align 4, !tbaa !9
  %956 = load i32, ptr %31, align 4, !tbaa !9
  %957 = mul nsw i32 %955, %956
  %958 = add nsw i32 %954, %957
  %959 = sext i32 %958 to i64
  %960 = getelementptr inbounds double, ptr %953, i64 %959
  %961 = load double, ptr %960, align 8, !tbaa !11
  store double %961, ptr %38, align 8, !tbaa !11
  %962 = load ptr, ptr %22, align 8, !tbaa !5
  %963 = load i32, ptr %48, align 4, !tbaa !9
  %964 = load i32, ptr %47, align 4, !tbaa !9
  %965 = add nsw i32 %964, 1
  %966 = load i32, ptr %31, align 4, !tbaa !9
  %967 = mul nsw i32 %965, %966
  %968 = add nsw i32 %963, %967
  %969 = sext i32 %968 to i64
  %970 = getelementptr inbounds double, ptr %962, i64 %969
  %971 = load double, ptr %970, align 8, !tbaa !11
  store double %971, ptr %39, align 8, !tbaa !11
  %972 = load double, ptr %38, align 8, !tbaa !11
  %973 = load double, ptr %38, align 8, !tbaa !11
  %974 = load double, ptr %39, align 8, !tbaa !11
  %975 = load double, ptr %39, align 8, !tbaa !11
  %976 = fmul double %974, %975
  %977 = call double @llvm.fmuladd.f64(double %972, double %973, double %976)
  %978 = load ptr, ptr %26, align 8, !tbaa !5
  %979 = load i32, ptr %45, align 4, !tbaa !9
  %980 = load i32, ptr %48, align 4, !tbaa !9
  %981 = add nsw i32 %979, %980
  %982 = sub nsw i32 %981, 1
  %983 = sext i32 %982 to i64
  %984 = getelementptr inbounds double, ptr %978, i64 %983
  store double %977, ptr %984, align 8, !tbaa !11
  br label %985

985:                                              ; preds = %952
  %986 = load i32, ptr %48, align 4, !tbaa !9
  %987 = add nsw i32 %986, 1
  store i32 %987, ptr %48, align 4, !tbaa !9
  br label %948, !llvm.loop !14

988:                                              ; preds = %948
  %989 = load ptr, ptr %17, align 8, !tbaa !5
  %990 = load ptr, ptr %26, align 8, !tbaa !5
  %991 = load i32, ptr %45, align 4, !tbaa !9
  %992 = sext i32 %991 to i64
  %993 = getelementptr inbounds double, ptr %990, i64 %992
  %994 = call i32 @idamax_(ptr noundef %989, ptr noundef %993, ptr noundef @c__1)
  store i32 %994, ptr %48, align 4, !tbaa !9
  %995 = load ptr, ptr %22, align 8, !tbaa !5
  %996 = load i32, ptr %48, align 4, !tbaa !9
  %997 = load i32, ptr %47, align 4, !tbaa !9
  %998 = load i32, ptr %31, align 4, !tbaa !9
  %999 = mul nsw i32 %997, %998
  %1000 = add nsw i32 %996, %999
  %1001 = sext i32 %1000 to i64
  %1002 = getelementptr inbounds double, ptr %995, i64 %1001
  %1003 = load ptr, ptr %22, align 8, !tbaa !5
  %1004 = load i32, ptr %48, align 4, !tbaa !9
  %1005 = load i32, ptr %47, align 4, !tbaa !9
  %1006 = add nsw i32 %1005, 1
  %1007 = load i32, ptr %31, align 4, !tbaa !9
  %1008 = mul nsw i32 %1006, %1007
  %1009 = add nsw i32 %1004, %1008
  %1010 = sext i32 %1009 to i64
  %1011 = getelementptr inbounds double, ptr %1003, i64 %1010
  call void @dlartg_(ptr noundef %1002, ptr noundef %1011, ptr noundef %50, ptr noundef %53, ptr noundef %49)
  %1012 = load ptr, ptr %17, align 8, !tbaa !5
  %1013 = load ptr, ptr %22, align 8, !tbaa !5
  %1014 = load i32, ptr %47, align 4, !tbaa !9
  %1015 = load i32, ptr %31, align 4, !tbaa !9
  %1016 = mul nsw i32 %1014, %1015
  %1017 = add nsw i32 %1016, 1
  %1018 = sext i32 %1017 to i64
  %1019 = getelementptr inbounds double, ptr %1013, i64 %1018
  %1020 = load ptr, ptr %22, align 8, !tbaa !5
  %1021 = load i32, ptr %47, align 4, !tbaa !9
  %1022 = add nsw i32 %1021, 1
  %1023 = load i32, ptr %31, align 4, !tbaa !9
  %1024 = mul nsw i32 %1022, %1023
  %1025 = add nsw i32 %1024, 1
  %1026 = sext i32 %1025 to i64
  %1027 = getelementptr inbounds double, ptr %1020, i64 %1026
  call void @drot_(ptr noundef %1012, ptr noundef %1019, ptr noundef @c__1, ptr noundef %1027, ptr noundef @c__1, ptr noundef %50, ptr noundef %53)
  %1028 = load ptr, ptr %22, align 8, !tbaa !5
  %1029 = load i32, ptr %48, align 4, !tbaa !9
  %1030 = load i32, ptr %47, align 4, !tbaa !9
  %1031 = add nsw i32 %1030, 1
  %1032 = load i32, ptr %31, align 4, !tbaa !9
  %1033 = mul nsw i32 %1031, %1032
  %1034 = add nsw i32 %1029, %1033
  %1035 = sext i32 %1034 to i64
  %1036 = getelementptr inbounds double, ptr %1028, i64 %1035
  store double 0.000000e+00, ptr %1036, align 8, !tbaa !11
  br label %1037

1037:                                             ; preds = %988, %900
  br label %1038

1038:                                             ; preds = %1037, %881
  br label %1039

1039:                                             ; preds = %1038
  %1040 = load i32, ptr %47, align 4, !tbaa !9
  %1041 = add nsw i32 %1040, 1
  store i32 %1041, ptr %47, align 4, !tbaa !9
  br label %870, !llvm.loop !16

1042:                                             ; preds = %870
  br label %1043

1043:                                             ; preds = %1042, %853
  %1044 = load i32, ptr %62, align 4, !tbaa !9
  %1045 = icmp ne i32 %1044, 0
  br i1 %1045, label %1046, label %1233

1046:                                             ; preds = %1043
  %1047 = load ptr, ptr %17, align 8, !tbaa !5
  %1048 = load ptr, ptr %26, align 8, !tbaa !5
  %1049 = load i32, ptr %40, align 4, !tbaa !9
  %1050 = sext i32 %1049 to i64
  %1051 = getelementptr inbounds double, ptr %1048, i64 %1050
  %1052 = load ptr, ptr %17, align 8, !tbaa !5
  %1053 = load ptr, ptr %24, align 8, !tbaa !5
  %1054 = load i32, ptr %34, align 4, !tbaa !9
  %1055 = sext i32 %1054 to i64
  %1056 = getelementptr inbounds double, ptr %1053, i64 %1055
  %1057 = load ptr, ptr %25, align 8, !tbaa !5
  call void @dgebak_(ptr noundef @.str.7, ptr noundef @.str.8, ptr noundef %1047, ptr noundef %65, ptr noundef %63, ptr noundef %1051, ptr noundef %1052, ptr noundef %1056, ptr noundef %1057, ptr noundef %43)
  %1058 = load ptr, ptr %17, align 8, !tbaa !5
  %1059 = load i32, ptr %1058, align 4, !tbaa !9
  store i32 %1059, ptr %35, align 4, !tbaa !9
  store i32 1, ptr %47, align 4, !tbaa !9
  br label %1060

1060:                                             ; preds = %1229, %1046
  %1061 = load i32, ptr %47, align 4, !tbaa !9
  %1062 = load i32, ptr %35, align 4, !tbaa !9
  %1063 = icmp sle i32 %1061, %1062
  br i1 %1063, label %1064, label %1232

1064:                                             ; preds = %1060
  %1065 = load ptr, ptr %21, align 8, !tbaa !5
  %1066 = load i32, ptr %47, align 4, !tbaa !9
  %1067 = sext i32 %1066 to i64
  %1068 = getelementptr inbounds double, ptr %1065, i64 %1067
  %1069 = load double, ptr %1068, align 8, !tbaa !11
  %1070 = fcmp oeq double %1069, 0.000000e+00
  br i1 %1070, label %1071, label %1090

1071:                                             ; preds = %1064
  %1072 = load ptr, ptr %17, align 8, !tbaa !5
  %1073 = load ptr, ptr %24, align 8, !tbaa !5
  %1074 = load i32, ptr %47, align 4, !tbaa !9
  %1075 = load i32, ptr %33, align 4, !tbaa !9
  %1076 = mul nsw i32 %1074, %1075
  %1077 = add nsw i32 %1076, 1
  %1078 = sext i32 %1077 to i64
  %1079 = getelementptr inbounds double, ptr %1073, i64 %1078
  %1080 = call double @dnrm2_(ptr noundef %1072, ptr noundef %1079, ptr noundef @c__1)
  %1081 = fdiv double 1.000000e+00, %1080
  store double %1081, ptr %64, align 8, !tbaa !11
  %1082 = load ptr, ptr %17, align 8, !tbaa !5
  %1083 = load ptr, ptr %24, align 8, !tbaa !5
  %1084 = load i32, ptr %47, align 4, !tbaa !9
  %1085 = load i32, ptr %33, align 4, !tbaa !9
  %1086 = mul nsw i32 %1084, %1085
  %1087 = add nsw i32 %1086, 1
  %1088 = sext i32 %1087 to i64
  %1089 = getelementptr inbounds double, ptr %1083, i64 %1088
  call void @dscal_(ptr noundef %1082, ptr noundef %64, ptr noundef %1089, ptr noundef @c__1)
  br label %1228

1090:                                             ; preds = %1064
  %1091 = load ptr, ptr %21, align 8, !tbaa !5
  %1092 = load i32, ptr %47, align 4, !tbaa !9
  %1093 = sext i32 %1092 to i64
  %1094 = getelementptr inbounds double, ptr %1091, i64 %1093
  %1095 = load double, ptr %1094, align 8, !tbaa !11
  %1096 = fcmp ogt double %1095, 0.000000e+00
  br i1 %1096, label %1097, label %1227

1097:                                             ; preds = %1090
  %1098 = load ptr, ptr %17, align 8, !tbaa !5
  %1099 = load ptr, ptr %24, align 8, !tbaa !5
  %1100 = load i32, ptr %47, align 4, !tbaa !9
  %1101 = load i32, ptr %33, align 4, !tbaa !9
  %1102 = mul nsw i32 %1100, %1101
  %1103 = add nsw i32 %1102, 1
  %1104 = sext i32 %1103 to i64
  %1105 = getelementptr inbounds double, ptr %1099, i64 %1104
  %1106 = call double @dnrm2_(ptr noundef %1098, ptr noundef %1105, ptr noundef @c__1)
  store double %1106, ptr %38, align 8, !tbaa !11
  %1107 = load ptr, ptr %17, align 8, !tbaa !5
  %1108 = load ptr, ptr %24, align 8, !tbaa !5
  %1109 = load i32, ptr %47, align 4, !tbaa !9
  %1110 = add nsw i32 %1109, 1
  %1111 = load i32, ptr %33, align 4, !tbaa !9
  %1112 = mul nsw i32 %1110, %1111
  %1113 = add nsw i32 %1112, 1
  %1114 = sext i32 %1113 to i64
  %1115 = getelementptr inbounds double, ptr %1108, i64 %1114
  %1116 = call double @dnrm2_(ptr noundef %1107, ptr noundef %1115, ptr noundef @c__1)
  store double %1116, ptr %39, align 8, !tbaa !11
  %1117 = call double @dlapy2_(ptr noundef %38, ptr noundef %39)
  %1118 = fdiv double 1.000000e+00, %1117
  store double %1118, ptr %64, align 8, !tbaa !11
  %1119 = load ptr, ptr %17, align 8, !tbaa !5
  %1120 = load ptr, ptr %24, align 8, !tbaa !5
  %1121 = load i32, ptr %47, align 4, !tbaa !9
  %1122 = load i32, ptr %33, align 4, !tbaa !9
  %1123 = mul nsw i32 %1121, %1122
  %1124 = add nsw i32 %1123, 1
  %1125 = sext i32 %1124 to i64
  %1126 = getelementptr inbounds double, ptr %1120, i64 %1125
  call void @dscal_(ptr noundef %1119, ptr noundef %64, ptr noundef %1126, ptr noundef @c__1)
  %1127 = load ptr, ptr %17, align 8, !tbaa !5
  %1128 = load ptr, ptr %24, align 8, !tbaa !5
  %1129 = load i32, ptr %47, align 4, !tbaa !9
  %1130 = add nsw i32 %1129, 1
  %1131 = load i32, ptr %33, align 4, !tbaa !9
  %1132 = mul nsw i32 %1130, %1131
  %1133 = add nsw i32 %1132, 1
  %1134 = sext i32 %1133 to i64
  %1135 = getelementptr inbounds double, ptr %1128, i64 %1134
  call void @dscal_(ptr noundef %1127, ptr noundef %64, ptr noundef %1135, ptr noundef @c__1)
  %1136 = load ptr, ptr %17, align 8, !tbaa !5
  %1137 = load i32, ptr %1136, align 4, !tbaa !9
  store i32 %1137, ptr %36, align 4, !tbaa !9
  store i32 1, ptr %48, align 4, !tbaa !9
  br label %1138

1138:                                             ; preds = %1175, %1097
  %1139 = load i32, ptr %48, align 4, !tbaa !9
  %1140 = load i32, ptr %36, align 4, !tbaa !9
  %1141 = icmp sle i32 %1139, %1140
  br i1 %1141, label %1142, label %1178

1142:                                             ; preds = %1138
  %1143 = load ptr, ptr %24, align 8, !tbaa !5
  %1144 = load i32, ptr %48, align 4, !tbaa !9
  %1145 = load i32, ptr %47, align 4, !tbaa !9
  %1146 = load i32, ptr %33, align 4, !tbaa !9
  %1147 = mul nsw i32 %1145, %1146
  %1148 = add nsw i32 %1144, %1147
  %1149 = sext i32 %1148 to i64
  %1150 = getelementptr inbounds double, ptr %1143, i64 %1149
  %1151 = load double, ptr %1150, align 8, !tbaa !11
  store double %1151, ptr %38, align 8, !tbaa !11
  %1152 = load ptr, ptr %24, align 8, !tbaa !5
  %1153 = load i32, ptr %48, align 4, !tbaa !9
  %1154 = load i32, ptr %47, align 4, !tbaa !9
  %1155 = add nsw i32 %1154, 1
  %1156 = load i32, ptr %33, align 4, !tbaa !9
  %1157 = mul nsw i32 %1155, %1156
  %1158 = add nsw i32 %1153, %1157
  %1159 = sext i32 %1158 to i64
  %1160 = getelementptr inbounds double, ptr %1152, i64 %1159
  %1161 = load double, ptr %1160, align 8, !tbaa !11
  store double %1161, ptr %39, align 8, !tbaa !11
  %1162 = load double, ptr %38, align 8, !tbaa !11
  %1163 = load double, ptr %38, align 8, !tbaa !11
  %1164 = load double, ptr %39, align 8, !tbaa !11
  %1165 = load double, ptr %39, align 8, !tbaa !11
  %1166 = fmul double %1164, %1165
  %1167 = call double @llvm.fmuladd.f64(double %1162, double %1163, double %1166)
  %1168 = load ptr, ptr %26, align 8, !tbaa !5
  %1169 = load i32, ptr %45, align 4, !tbaa !9
  %1170 = load i32, ptr %48, align 4, !tbaa !9
  %1171 = add nsw i32 %1169, %1170
  %1172 = sub nsw i32 %1171, 1
  %1173 = sext i32 %1172 to i64
  %1174 = getelementptr inbounds double, ptr %1168, i64 %1173
  store double %1167, ptr %1174, align 8, !tbaa !11
  br label %1175

1175:                                             ; preds = %1142
  %1176 = load i32, ptr %48, align 4, !tbaa !9
  %1177 = add nsw i32 %1176, 1
  store i32 %1177, ptr %48, align 4, !tbaa !9
  br label %1138, !llvm.loop !17

1178:                                             ; preds = %1138
  %1179 = load ptr, ptr %17, align 8, !tbaa !5
  %1180 = load ptr, ptr %26, align 8, !tbaa !5
  %1181 = load i32, ptr %45, align 4, !tbaa !9
  %1182 = sext i32 %1181 to i64
  %1183 = getelementptr inbounds double, ptr %1180, i64 %1182
  %1184 = call i32 @idamax_(ptr noundef %1179, ptr noundef %1183, ptr noundef @c__1)
  store i32 %1184, ptr %48, align 4, !tbaa !9
  %1185 = load ptr, ptr %24, align 8, !tbaa !5
  %1186 = load i32, ptr %48, align 4, !tbaa !9
  %1187 = load i32, ptr %47, align 4, !tbaa !9
  %1188 = load i32, ptr %33, align 4, !tbaa !9
  %1189 = mul nsw i32 %1187, %1188
  %1190 = add nsw i32 %1186, %1189
  %1191 = sext i32 %1190 to i64
  %1192 = getelementptr inbounds double, ptr %1185, i64 %1191
  %1193 = load ptr, ptr %24, align 8, !tbaa !5
  %1194 = load i32, ptr %48, align 4, !tbaa !9
  %1195 = load i32, ptr %47, align 4, !tbaa !9
  %1196 = add nsw i32 %1195, 1
  %1197 = load i32, ptr %33, align 4, !tbaa !9
  %1198 = mul nsw i32 %1196, %1197
  %1199 = add nsw i32 %1194, %1198
  %1200 = sext i32 %1199 to i64
  %1201 = getelementptr inbounds double, ptr %1193, i64 %1200
  call void @dlartg_(ptr noundef %1192, ptr noundef %1201, ptr noundef %50, ptr noundef %53, ptr noundef %49)
  %1202 = load ptr, ptr %17, align 8, !tbaa !5
  %1203 = load ptr, ptr %24, align 8, !tbaa !5
  %1204 = load i32, ptr %47, align 4, !tbaa !9
  %1205 = load i32, ptr %33, align 4, !tbaa !9
  %1206 = mul nsw i32 %1204, %1205
  %1207 = add nsw i32 %1206, 1
  %1208 = sext i32 %1207 to i64
  %1209 = getelementptr inbounds double, ptr %1203, i64 %1208
  %1210 = load ptr, ptr %24, align 8, !tbaa !5
  %1211 = load i32, ptr %47, align 4, !tbaa !9
  %1212 = add nsw i32 %1211, 1
  %1213 = load i32, ptr %33, align 4, !tbaa !9
  %1214 = mul nsw i32 %1212, %1213
  %1215 = add nsw i32 %1214, 1
  %1216 = sext i32 %1215 to i64
  %1217 = getelementptr inbounds double, ptr %1210, i64 %1216
  call void @drot_(ptr noundef %1202, ptr noundef %1209, ptr noundef @c__1, ptr noundef %1217, ptr noundef @c__1, ptr noundef %50, ptr noundef %53)
  %1218 = load ptr, ptr %24, align 8, !tbaa !5
  %1219 = load i32, ptr %48, align 4, !tbaa !9
  %1220 = load i32, ptr %47, align 4, !tbaa !9
  %1221 = add nsw i32 %1220, 1
  %1222 = load i32, ptr %33, align 4, !tbaa !9
  %1223 = mul nsw i32 %1221, %1222
  %1224 = add nsw i32 %1219, %1223
  %1225 = sext i32 %1224 to i64
  %1226 = getelementptr inbounds double, ptr %1218, i64 %1225
  store double 0.000000e+00, ptr %1226, align 8, !tbaa !11
  br label %1227

1227:                                             ; preds = %1178, %1090
  br label %1228

1228:                                             ; preds = %1227, %1071
  br label %1229

1229:                                             ; preds = %1228
  %1230 = load i32, ptr %47, align 4, !tbaa !9
  %1231 = add nsw i32 %1230, 1
  store i32 %1231, ptr %47, align 4, !tbaa !9
  br label %1060, !llvm.loop !18

1232:                                             ; preds = %1060
  br label %1233

1233:                                             ; preds = %1232, %1043
  br label %1234

1234:                                             ; preds = %1233, %817
  %1235 = load i32, ptr %51, align 4, !tbaa !9
  %1236 = icmp ne i32 %1235, 0
  br i1 %1236, label %1237, label %1299

1237:                                             ; preds = %1234
  %1238 = load ptr, ptr %17, align 8, !tbaa !5
  %1239 = load i32, ptr %1238, align 4, !tbaa !9
  %1240 = load ptr, ptr %28, align 8, !tbaa !5
  %1241 = load i32, ptr %1240, align 4, !tbaa !9
  %1242 = sub nsw i32 %1239, %1241
  store i32 %1242, ptr %35, align 4, !tbaa !9
  %1243 = load ptr, ptr %17, align 8, !tbaa !5
  %1244 = load i32, ptr %1243, align 4, !tbaa !9
  %1245 = load ptr, ptr %28, align 8, !tbaa !5
  %1246 = load i32, ptr %1245, align 4, !tbaa !9
  %1247 = sub nsw i32 %1244, %1246
  store i32 %1247, ptr %37, align 4, !tbaa !9
  %1248 = load i32, ptr %37, align 4, !tbaa !9
  %1249 = icmp sge i32 %1248, 1
  br i1 %1249, label %1250, label %1252

1250:                                             ; preds = %1237
  %1251 = load i32, ptr %37, align 4, !tbaa !9
  br label %1253

1252:                                             ; preds = %1237
  br label %1253

1253:                                             ; preds = %1252, %1250
  %1254 = phi i32 [ %1251, %1250 ], [ 1, %1252 ]
  store i32 %1254, ptr %36, align 4, !tbaa !9
  %1255 = load ptr, ptr %20, align 8, !tbaa !5
  %1256 = load ptr, ptr %28, align 8, !tbaa !5
  %1257 = load i32, ptr %1256, align 4, !tbaa !9
  %1258 = add nsw i32 %1257, 1
  %1259 = sext i32 %1258 to i64
  %1260 = getelementptr inbounds double, ptr %1255, i64 %1259
  call void @dlascl_(ptr noundef @.str.13, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %52, ptr noundef %42, ptr noundef %35, ptr noundef @c__1, ptr noundef %1260, ptr noundef %36, ptr noundef %43)
  %1261 = load ptr, ptr %17, align 8, !tbaa !5
  %1262 = load i32, ptr %1261, align 4, !tbaa !9
  %1263 = load ptr, ptr %28, align 8, !tbaa !5
  %1264 = load i32, ptr %1263, align 4, !tbaa !9
  %1265 = sub nsw i32 %1262, %1264
  store i32 %1265, ptr %35, align 4, !tbaa !9
  %1266 = load ptr, ptr %17, align 8, !tbaa !5
  %1267 = load i32, ptr %1266, align 4, !tbaa !9
  %1268 = load ptr, ptr %28, align 8, !tbaa !5
  %1269 = load i32, ptr %1268, align 4, !tbaa !9
  %1270 = sub nsw i32 %1267, %1269
  store i32 %1270, ptr %37, align 4, !tbaa !9
  %1271 = load i32, ptr %37, align 4, !tbaa !9
  %1272 = icmp sge i32 %1271, 1
  br i1 %1272, label %1273, label %1275

1273:                                             ; preds = %1253
  %1274 = load i32, ptr %37, align 4, !tbaa !9
  br label %1276

1275:                                             ; preds = %1253
  br label %1276

1276:                                             ; preds = %1275, %1273
  %1277 = phi i32 [ %1274, %1273 ], [ 1, %1275 ]
  store i32 %1277, ptr %36, align 4, !tbaa !9
  %1278 = load ptr, ptr %21, align 8, !tbaa !5
  %1279 = load ptr, ptr %28, align 8, !tbaa !5
  %1280 = load i32, ptr %1279, align 4, !tbaa !9
  %1281 = add nsw i32 %1280, 1
  %1282 = sext i32 %1281 to i64
  %1283 = getelementptr inbounds double, ptr %1278, i64 %1282
  call void @dlascl_(ptr noundef @.str.13, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %52, ptr noundef %42, ptr noundef %35, ptr noundef @c__1, ptr noundef %1283, ptr noundef %36, ptr noundef %43)
  %1284 = load ptr, ptr %28, align 8, !tbaa !5
  %1285 = load i32, ptr %1284, align 4, !tbaa !9
  %1286 = icmp sgt i32 %1285, 0
  br i1 %1286, label %1287, label %1298

1287:                                             ; preds = %1276
  %1288 = load i32, ptr %65, align 4, !tbaa !9
  %1289 = sub nsw i32 %1288, 1
  store i32 %1289, ptr %35, align 4, !tbaa !9
  %1290 = load ptr, ptr %20, align 8, !tbaa !5
  %1291 = getelementptr inbounds double, ptr %1290, i64 1
  %1292 = load ptr, ptr %17, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.13, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %52, ptr noundef %42, ptr noundef %35, ptr noundef @c__1, ptr noundef %1291, ptr noundef %1292, ptr noundef %43)
  %1293 = load i32, ptr %65, align 4, !tbaa !9
  %1294 = sub nsw i32 %1293, 1
  store i32 %1294, ptr %35, align 4, !tbaa !9
  %1295 = load ptr, ptr %21, align 8, !tbaa !5
  %1296 = getelementptr inbounds double, ptr %1295, i64 1
  %1297 = load ptr, ptr %17, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.13, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %52, ptr noundef %42, ptr noundef %35, ptr noundef @c__1, ptr noundef %1296, ptr noundef %1297, ptr noundef %43)
  br label %1298

1298:                                             ; preds = %1287, %1276
  br label %1299

1299:                                             ; preds = %1298, %1234
  %1300 = load i32, ptr %57, align 4, !tbaa !9
  %1301 = sitofp i32 %1300 to double
  %1302 = load ptr, ptr %26, align 8, !tbaa !5
  %1303 = getelementptr inbounds double, ptr %1302, i64 1
  store double %1301, ptr %1303, align 8, !tbaa !11
  store i32 1, ptr %69, align 4
  br label %1304

1304:                                             ; preds = %1299, %560, %554, %546
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #5
  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 @lsame_(ptr noundef, ptr noundef) #2

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

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

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare void @drot_(ptr noundef, ptr noundef, 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 = { 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 = !{!"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 = !{!7, !7, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = distinct !{!16, !15}
!17 = distinct !{!17, !15}
!18 = distinct !{!18, !15}


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

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i32, align 4
@.str.2 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c__0 = external hidden global i32, align 4
@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1
@c_n1 = external hidden global i32, align 4
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @dgeev_(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 nocapture noundef readonly %12, ptr noundef %13) local_unnamed_addr #0 {
  %15 = ptrtoint ptr %9 to i64
  %16 = ptrtoint ptr %11 to i64
  %17 = ptrtoint ptr %7 to i64
  %18 = ptrtoint ptr %11 to i64
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca double, align 8
  %22 = alloca double, align 8
  %23 = alloca [1 x i8], align 1
  %24 = alloca double, align 8
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca double, align 8
  %28 = alloca double, align 8
  %29 = alloca double, align 8
  %30 = alloca double, align 8
  %31 = alloca [1 x i32], align 4
  %32 = alloca double, align 8
  %33 = alloca double, align 8
  %34 = alloca i32, align 4
  %35 = alloca double, align 8
  %36 = alloca i32, align 4
  %37 = alloca [1 x double], align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %23) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %25) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %31) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %34) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %36) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #6
  %38 = getelementptr inbounds i8, ptr %5, i64 -8
  %39 = getelementptr inbounds i8, ptr %6, i64 -8
  %40 = load i32, ptr %8, align 4, !tbaa !5
  %narrow = xor i32 %40, -1
  %41 = sext i32 %narrow to i64
  %42 = getelementptr inbounds double, ptr %7, i64 %41
  %43 = load i32, ptr %10, align 4, !tbaa !5
  %narrow521 = xor i32 %43, -1
  %44 = sext i32 %narrow521 to i64
  %45 = getelementptr inbounds double, ptr %9, i64 %44
  %46 = getelementptr inbounds i8, ptr %11, i64 -8
  store i32 0, ptr %13, align 4, !tbaa !5
  %47 = load i32, ptr %12, align 4, !tbaa !5
  %48 = icmp eq i32 %47, -1
  %49 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #6
  %50 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #6
  %51 = icmp ne i32 %49, 0
  br i1 %51, label %54, label %52

52:                                               ; preds = %14
  %53 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #6
  %.not = icmp eq i32 %53, 0
  br i1 %.not, label %.thread529.sink.split, label %54

54:                                               ; preds = %52, %14
  %.not499 = icmp ne i32 %50, 0
  br i1 %.not499, label %57, label %55

55:                                               ; preds = %54
  %56 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  %.not500 = icmp eq i32 %56, 0
  br i1 %.not500, label %.thread529.sink.split, label %57

57:                                               ; preds = %55, %54
  %58 = load i32, ptr %2, align 4, !tbaa !5
  %59 = icmp slt i32 %58, 0
  br i1 %59, label %.thread529.sink.split, label %60

60:                                               ; preds = %57
  %61 = load i32, ptr %4, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %58, i32 1)
  %62 = icmp slt i32 %61, %spec.select
  br i1 %62, label %.thread529.sink.split, label %63

63:                                               ; preds = %60
  %64 = load i32, ptr %8, align 4, !tbaa !5
  %65 = icmp slt i32 %64, 1
  %66 = icmp ult i32 %64, %58
  %or.cond542 = and i1 %51, %66
  %or.cond544 = or i1 %65, %or.cond542
  br i1 %or.cond544, label %.thread529.sink.split, label %67

67:                                               ; preds = %63
  %68 = load i32, ptr %10, align 4, !tbaa !5
  %69 = icmp slt i32 %68, 1
  %70 = icmp ult i32 %68, %58
  %or.cond543 = and i1 %.not499, %70
  %or.cond545 = or i1 %69, %or.cond543
  br i1 %or.cond545, label %.thread529.sink.split, label %71

71:                                               ; preds = %67
  %.pr = load i32, ptr %13, align 4, !tbaa !5
  %72 = icmp eq i32 %.pr, 0
  br i1 %72, label %73, label %.thread529

73:                                               ; preds = %71
  %74 = icmp eq i32 %58, 0
  br i1 %74, label %140, label %75

75:                                               ; preds = %73
  %76 = tail call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef nonnull %2, ptr noundef nonnull @c__0, i32 noundef 6, i32 noundef 1) #6
  %77 = add i32 %76, 2
  %78 = mul i32 %77, %58
  br i1 %51, label %79, label %102

79:                                               ; preds = %75
  %80 = load i32, ptr %2, align 4, !tbaa !5
  %81 = shl i32 %80, 2
  %82 = shl i32 %80, 1
  %83 = add nsw i32 %80, -1
  %84 = tail call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef nonnull %2, ptr noundef nonnull @c_n1, i32 noundef 6, i32 noundef 1) #6
  %85 = mul nsw i32 %84, %83
  %86 = add nsw i32 %85, %82
  %87 = tail call i32 @llvm.smax.i32(i32 %78, i32 %86)
  tail call void @dhseqr_(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %11, ptr noundef nonnull @c_n1, ptr noundef nonnull %13) #6
  %88 = load double, ptr %11, align 8, !tbaa !9
  %89 = fptosi double %88 to i32
  %90 = load i32, ptr %2, align 4, !tbaa !5
  %91 = add nsw i32 %90, 1
  %92 = tail call i32 @llvm.smax.i32(i32 %87, i32 %91)
  store i32 %92, ptr %19, align 4, !tbaa !5
  %93 = add nsw i32 %90, %89
  %94 = tail call i32 @llvm.smax.i32(i32 %92, i32 %93)
  call void @dtrevc3_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %31, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %2, ptr noundef nonnull %26, ptr noundef nonnull %11, ptr noundef nonnull @c_n1, ptr noundef nonnull %25) #6
  %95 = load double, ptr %11, align 8, !tbaa !9
  %96 = fptosi double %95 to i32
  %97 = load i32, ptr %2, align 4, !tbaa !5
  %98 = add nsw i32 %97, %96
  %99 = call i32 @llvm.smax.i32(i32 %94, i32 %98)
  store i32 %99, ptr %19, align 4, !tbaa !5
  %100 = shl i32 %97, 2
  store i32 %100, ptr %20, align 4, !tbaa !5
  %101 = call i32 @llvm.smax.i32(i32 %99, i32 %100)
  br label %135

102:                                              ; preds = %75
  %.not501 = icmp eq i32 %50, 0
  %103 = load i32, ptr %2, align 4, !tbaa !5
  br i1 %.not501, label %126, label %104

104:                                              ; preds = %102
  %105 = shl i32 %103, 2
  %106 = shl i32 %103, 1
  %107 = add nsw i32 %103, -1
  %108 = tail call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef nonnull %2, ptr noundef nonnull @c_n1, i32 noundef 6, i32 noundef 1) #6
  %109 = mul nsw i32 %108, %107
  %110 = add nsw i32 %109, %106
  %111 = tail call i32 @llvm.smax.i32(i32 %78, i32 %110)
  tail call void @dhseqr_(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef %6, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull @c_n1, ptr noundef nonnull %13) #6
  %112 = load double, ptr %11, align 8, !tbaa !9
  %113 = fptosi double %112 to i32
  %114 = load i32, ptr %2, align 4, !tbaa !5
  %115 = add nsw i32 %114, 1
  %116 = tail call i32 @llvm.smax.i32(i32 %111, i32 %115)
  store i32 %116, ptr %19, align 4, !tbaa !5
  %117 = add nsw i32 %114, %113
  %118 = tail call i32 @llvm.smax.i32(i32 %116, i32 %117)
  call void @dtrevc3_(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.7, ptr noundef nonnull %31, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %2, ptr noundef nonnull %26, ptr noundef nonnull %11, ptr noundef nonnull @c_n1, ptr noundef nonnull %25) #6
  %119 = load double, ptr %11, align 8, !tbaa !9
  %120 = fptosi double %119 to i32
  %121 = load i32, ptr %2, align 4, !tbaa !5
  %122 = add nsw i32 %121, %120
  %123 = call i32 @llvm.smax.i32(i32 %118, i32 %122)
  store i32 %123, ptr %19, align 4, !tbaa !5
  %124 = shl i32 %121, 2
  store i32 %124, ptr %20, align 4, !tbaa !5
  %125 = call i32 @llvm.smax.i32(i32 %123, i32 %124)
  br label %135

126:                                              ; preds = %102
  %127 = mul nsw i32 %103, 3
  tail call void @dhseqr_(ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.1, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef %6, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull @c_n1, ptr noundef nonnull %13) #6
  %128 = load double, ptr %11, align 8, !tbaa !9
  %129 = fptosi double %128 to i32
  %130 = load i32, ptr %2, align 4, !tbaa !5
  %131 = add nsw i32 %130, 1
  %132 = tail call i32 @llvm.smax.i32(i32 %78, i32 %131)
  store i32 %132, ptr %19, align 4, !tbaa !5
  %133 = add nsw i32 %130, %129
  store i32 %133, ptr %20, align 4, !tbaa !5
  %134 = tail call i32 @llvm.smax.i32(i32 %132, i32 %133)
  br label %135

135:                                              ; preds = %104, %126, %79
  %136 = phi i32 [ %97, %79 ], [ %121, %104 ], [ %130, %126 ]
  %.0481 = phi i32 [ %81, %79 ], [ %105, %104 ], [ %127, %126 ]
  %.0 = phi i32 [ %101, %79 ], [ %125, %104 ], [ %134, %126 ]
  %137 = call i32 @llvm.smax.i32(i32 %.0, i32 %.0481)
  %138 = sitofp i32 %137 to double
  %139 = icmp eq i32 %136, 0
  br label %140

140:                                              ; preds = %73, %135
  %141 = phi i1 [ %139, %135 ], [ true, %73 ]
  %.1482 = phi i32 [ %.0481, %135 ], [ 1, %73 ]
  %.1 = phi double [ %138, %135 ], [ 1.000000e+00, %73 ]
  store double %.1, ptr %11, align 8, !tbaa !9
  %142 = load i32, ptr %12, align 4, !tbaa !5
  %143 = icmp sge i32 %142, %.1482
  %or.cond = select i1 %143, i1 true, i1 %48
  br i1 %or.cond, label %.thread, label %.thread529.sink.split

.thread:                                          ; preds = %140
  %.pr526.pr = load i32, ptr %13, align 4, !tbaa !5
  %.not515 = icmp eq i32 %.pr526.pr, 0
  br i1 %.not515, label %147, label %.thread529

.thread529.sink.split:                            ; preds = %140, %67, %63, %60, %57, %55, %52
  %.sink = phi i32 [ -1, %52 ], [ -2, %55 ], [ -3, %57 ], [ -5, %60 ], [ -9, %63 ], [ -11, %67 ], [ -13, %140 ]
  store i32 %.sink, ptr %13, align 4, !tbaa !5
  br label %.thread529

.thread529:                                       ; preds = %.thread529.sink.split, %71, %.thread
  %144 = phi i32 [ %.pr526.pr, %.thread ], [ %.pr, %71 ], [ %.sink, %.thread529.sink.split ]
  %145 = sub nsw i32 0, %144
  store i32 %145, ptr %19, align 4, !tbaa !5
  %146 = call i32 @xerbla_(ptr noundef nonnull @.str.10, ptr noundef nonnull %19, i32 noundef 6) #6
  br label %425

147:                                              ; preds = %.thread
  %or.cond604 = select i1 %48, i1 true, i1 %141
  br i1 %or.cond604, label %425, label %148

148:                                              ; preds = %147
  %149 = call double @dlamch_(ptr noundef nonnull @.str.11) #6
  %150 = call double @dlamch_(ptr noundef nonnull @.str.5) #6
  store double %150, ptr %33, align 8, !tbaa !9
  %151 = fdiv double 1.000000e+00, %150
  store double %151, ptr %32, align 8, !tbaa !9
  call void @dlabad_(ptr noundef nonnull %33, ptr noundef nonnull %32) #6
  %152 = load double, ptr %33, align 8, !tbaa !9
  %153 = call double @sqrt(double noundef %152) #6
  %154 = fdiv double %153, %149
  store double %154, ptr %33, align 8, !tbaa !9
  %155 = fdiv double 1.000000e+00, %154
  store double %155, ptr %32, align 8, !tbaa !9
  %156 = call double @dlange_(ptr noundef nonnull @.str.12, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef nonnull %37) #6
  store double %156, ptr %24, align 8, !tbaa !9
  %157 = fcmp ogt double %156, 0.000000e+00
  %158 = load double, ptr %33, align 8
  %159 = fcmp olt double %156, %158
  %or.cond547 = select i1 %157, i1 %159, i1 false
  br i1 %or.cond547, label %163, label %160

160:                                              ; preds = %148
  %161 = load double, ptr %32, align 8, !tbaa !9
  %162 = fcmp ogt double %156, %161
  br i1 %162, label %163, label %164

163:                                              ; preds = %148, %160
  %storemerge = phi double [ %161, %160 ], [ %158, %148 ]
  store double %storemerge, ptr %29, align 8, !tbaa !9
  call void @dlascl_(ptr noundef nonnull @.str.13, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %24, ptr noundef nonnull %29, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef nonnull %25) #6
  br label %164

164:                                              ; preds = %160, %163
  %.not516536 = phi i1 [ false, %163 ], [ true, %160 ]
  call void @dgebal_(ptr noundef nonnull @.str.7, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef nonnull %36, ptr noundef nonnull %34, ptr noundef nonnull %11, ptr noundef nonnull %25) #6
  %165 = load i32, ptr %2, align 4, !tbaa !5
  %166 = add nsw i32 %165, 1
  %167 = add nsw i32 %166, %165
  %168 = load i32, ptr %12, align 4, !tbaa !5
  %169 = add i32 %168, 1
  %170 = sub i32 %169, %167
  store i32 %170, ptr %19, align 4, !tbaa !5
  %171 = sext i32 %166 to i64
  %172 = getelementptr inbounds double, ptr %46, i64 %171
  %173 = sext i32 %167 to i64
  %174 = getelementptr inbounds double, ptr %46, i64 %173
  call void @dgehrd_(ptr noundef nonnull %2, ptr noundef nonnull %36, ptr noundef nonnull %34, ptr noundef %3, ptr noundef nonnull %4, ptr noundef nonnull %172, ptr noundef nonnull %174, ptr noundef nonnull %19, ptr noundef nonnull %25) #6
  br i1 %51, label %175, label %181

175:                                              ; preds = %164
  store i8 76, ptr %23, align 1, !tbaa !11
  call void @dlacpy_(ptr noundef nonnull @.str.6, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %7, ptr noundef nonnull %8) #6
  %176 = load i32, ptr %12, align 4, !tbaa !5
  %reass.sub577 = sub i32 %176, %167
  %177 = add i32 %reass.sub577, 1
  store i32 %177, ptr %19, align 4, !tbaa !5
  call void @dorghr_(ptr noundef nonnull %2, ptr noundef nonnull %36, ptr noundef nonnull %34, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull %172, ptr noundef nonnull %174, ptr noundef nonnull %19, ptr noundef nonnull %25) #6
  %178 = load i32, ptr %12, align 4, !tbaa !5
  %179 = sub i32 %178, %165
  store i32 %179, ptr %19, align 4, !tbaa !5
  call void @dhseqr_(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str, ptr noundef nonnull %2, ptr noundef nonnull %36, ptr noundef nonnull %34, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull %172, ptr noundef nonnull %19, ptr noundef nonnull %13) #6
  %.not518 = icmp eq i32 %50, 0
  br i1 %.not518, label %190, label %180

180:                                              ; preds = %175
  store i8 66, ptr %23, align 1, !tbaa !11
  call void @dlacpy_(ptr noundef nonnull @.str.14, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %9, ptr noundef nonnull %10) #6
  br label %190

181:                                              ; preds = %164
  %.not517 = icmp eq i32 %50, 0
  br i1 %.not517, label %187, label %182

182:                                              ; preds = %181
  store i8 82, ptr %23, align 1, !tbaa !11
  call void @dlacpy_(ptr noundef nonnull @.str.6, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %9, ptr noundef nonnull %10) #6
  %183 = load i32, ptr %12, align 4, !tbaa !5
  %reass.sub = sub i32 %183, %167
  %184 = add i32 %reass.sub, 1
  store i32 %184, ptr %19, align 4, !tbaa !5
  call void @dorghr_(ptr noundef nonnull %2, ptr noundef nonnull %36, ptr noundef nonnull %34, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %172, ptr noundef nonnull %174, ptr noundef nonnull %19, ptr noundef nonnull %25) #6
  %185 = load i32, ptr %12, align 4, !tbaa !5
  %186 = sub i32 %185, %165
  store i32 %186, ptr %19, align 4, !tbaa !5
  call void @dhseqr_(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str, ptr noundef nonnull %2, ptr noundef nonnull %36, ptr noundef nonnull %34, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef %6, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %172, ptr noundef nonnull %19, ptr noundef nonnull %13) #6
  br label %190

187:                                              ; preds = %181
  %188 = load i32, ptr %12, align 4, !tbaa !5
  %189 = sub i32 %188, %165
  store i32 %189, ptr %19, align 4, !tbaa !5
  call void @dhseqr_(ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.1, ptr noundef nonnull %2, ptr noundef nonnull %36, ptr noundef nonnull %34, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef %6, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %172, ptr noundef nonnull %19, ptr noundef nonnull %13) #6
  br label %190

190:                                              ; preds = %182, %187, %175, %180
  %191 = load i32, ptr %13, align 4, !tbaa !5
  %.not519 = icmp ne i32 %191, 0
  %192 = or i32 %49, %50
  %or.cond3.not = icmp eq i32 %192, 0
  %or.cond605 = select i1 %.not519, i1 true, i1 %or.cond3.not
  br i1 %or.cond605, label %.thread538, label %193

193:                                              ; preds = %190
  %194 = load i32, ptr %12, align 4, !tbaa !5
  %195 = sub i32 %194, %165
  store i32 %195, ptr %19, align 4, !tbaa !5
  call void @dtrevc3_(ptr noundef nonnull %23, ptr noundef nonnull @.str.7, ptr noundef nonnull %31, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %2, ptr noundef nonnull %26, ptr noundef nonnull %172, ptr noundef nonnull %19, ptr noundef nonnull %25) #6
  br i1 %51, label %196, label %.loopexit

196:                                              ; preds = %193
  call void @dgebak_(ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.6, ptr noundef nonnull %2, ptr noundef nonnull %36, ptr noundef nonnull %34, ptr noundef nonnull %11, ptr noundef nonnull %2, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull %25) #6
  %197 = load i32, ptr %2, align 4, !tbaa !5
  store i32 %197, ptr %19, align 4, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %42, i64 8
  %.not520556 = icmp slt i32 %197, 1
  br i1 %.not520556, label %.loopexit, label %.lr.ph559.preheader

.lr.ph559.preheader:                              ; preds = %196
  %198 = sext i32 %40 to i64
  %199 = add i32 %165, 1
  %200 = sext i32 %199 to i64
  %201 = shl nsw i64 %200, 3
  %202 = add i64 %201, %18
  %203 = add i64 %202, -16
  %204 = shl nsw i64 %41, 3
  %205 = add i64 %204, %17
  %206 = shl nsw i64 %198, 4
  %207 = add i64 %205, %206
  %208 = sub i64 %203, %207
  %209 = mul nsw i64 %198, -8
  %210 = add i64 %201, %18
  %211 = add i64 %210, -16
  %212 = shl nsw i64 %198, 3
  %213 = add i64 %212, %17
  %214 = add i64 %213, %204
  %215 = sub i64 %211, %214
  br label %.lr.ph559

.lr.ph559:                                        ; preds = %.lr.ph559.preheader, %296
  %indvar = phi i64 [ 0, %.lr.ph559.preheader ], [ %indvar.next, %296 ]
  %indvars.iv582 = phi i64 [ 1, %.lr.ph559.preheader ], [ %indvars.iv.next583, %296 ]
  %216 = mul i64 %209, %indvar
  %217 = add i64 %208, %216
  %218 = add i64 %215, %216
  %219 = getelementptr inbounds double, ptr %39, i64 %indvars.iv582
  %220 = load double, ptr %219, align 8, !tbaa !9
  %221 = fcmp oeq double %220, 0.000000e+00
  br i1 %221, label %222, label %226

222:                                              ; preds = %.lr.ph559
  %223 = mul nsw i64 %indvars.iv582, %198
  %gep555 = getelementptr double, ptr %invariant.gep, i64 %223
  %224 = call double @dnrm2_(ptr noundef nonnull %2, ptr noundef %gep555, ptr noundef nonnull @c__1) #6
  %225 = fdiv double 1.000000e+00, %224
  store double %225, ptr %35, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %2, ptr noundef nonnull %35, ptr noundef %gep555, ptr noundef nonnull @c__1) #6
  br label %296

226:                                              ; preds = %.lr.ph559
  %227 = fcmp ogt double %220, 0.000000e+00
  br i1 %227, label %228, label %296

228:                                              ; preds = %226
  %229 = mul nsw i64 %indvars.iv582, %198
  %gep = getelementptr double, ptr %invariant.gep, i64 %229
  %230 = call double @dnrm2_(ptr noundef nonnull %2, ptr noundef %gep, ptr noundef nonnull @c__1) #6
  store double %230, ptr %21, align 8, !tbaa !9
  %231 = add nuw nsw i64 %indvars.iv582, 1
  %232 = mul nsw i64 %231, %198
  %gep553 = getelementptr double, ptr %invariant.gep, i64 %232
  %233 = call double @dnrm2_(ptr noundef nonnull %2, ptr noundef %gep553, ptr noundef nonnull @c__1) #6
  store double %233, ptr %22, align 8, !tbaa !9
  %234 = call double @dlapy2_(ptr noundef nonnull %21, ptr noundef nonnull %22) #6
  %235 = fdiv double 1.000000e+00, %234
  store double %235, ptr %35, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %2, ptr noundef nonnull %35, ptr noundef %gep, ptr noundef nonnull @c__1) #6
  call void @dscal_(ptr noundef nonnull %2, ptr noundef nonnull %35, ptr noundef %gep553, ptr noundef nonnull @c__1) #6
  %236 = load i32, ptr %2, align 4, !tbaa !5
  store i32 %236, ptr %20, align 4, !tbaa !5
  %.not524549 = icmp slt i32 %236, 1
  br i1 %.not524549, label %289, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %228
  %237 = add nuw i32 %236, 1
  %wide.trip.count = zext i32 %237 to i64
  %invariant.gep596 = getelementptr double, ptr %42, i64 %229
  %invariant.gep598 = getelementptr double, ptr %42, i64 %232
  %238 = zext nneg i32 %236 to i64
  %min.iters.check = icmp ult i32 %236, 6
  br i1 %min.iters.check, label %.lr.ph.preheader642, label %vector.scevcheck

vector.scevcheck:                                 ; preds = %.lr.ph.preheader
  %239 = add nsw i64 %wide.trip.count, -2
  %240 = trunc i64 %239 to i32
  %241 = add i32 %199, %240
  %242 = icmp slt i32 %241, %199
  %243 = icmp ugt i64 %239, 4294967295
  %244 = or i1 %242, %243
  br i1 %244, label %.lr.ph.preheader642, label %vector.memcheck

vector.memcheck:                                  ; preds = %vector.scevcheck
  %diff.check = icmp ult i64 %217, 32
  %diff.check609 = icmp ult i64 %218, 32
  %conflict.rdx = or i1 %diff.check, %diff.check609
  br i1 %conflict.rdx, label %.lr.ph.preheader642, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %238, 2147483644
  %ind.end = or disjoint i64 %n.vec, 1
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = or disjoint i64 %index, 1
  %245 = trunc i64 %index to i32
  %246 = or disjoint i32 %245, 1
  %247 = getelementptr double, ptr %invariant.gep596, i64 %offset.idx
  %248 = getelementptr i8, ptr %247, i64 16
  %wide.load = load <2 x double>, ptr %247, align 8, !tbaa !9
  %wide.load611 = load <2 x double>, ptr %248, align 8, !tbaa !9
  %249 = getelementptr double, ptr %invariant.gep598, i64 %offset.idx
  %250 = getelementptr i8, ptr %249, i64 16
  %wide.load612 = load <2 x double>, ptr %249, align 8, !tbaa !9
  %wide.load613 = load <2 x double>, ptr %250, align 8, !tbaa !9
  %251 = fmul <2 x double> %wide.load612, %wide.load612
  %252 = fmul <2 x double> %wide.load613, %wide.load613
  %253 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %wide.load, <2 x double> %wide.load, <2 x double> %251)
  %254 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %wide.load611, <2 x double> %wide.load611, <2 x double> %252)
  %255 = add i32 %165, %246
  %256 = sext i32 %255 to i64
  %257 = getelementptr inbounds double, ptr %46, i64 %256
  %258 = getelementptr inbounds i8, ptr %257, i64 16
  store <2 x double> %253, ptr %257, align 8, !tbaa !9
  store <2 x double> %254, ptr %258, align 8, !tbaa !9
  %index.next = add nuw i64 %index, 4
  %259 = icmp eq i64 %index.next, %n.vec
  br i1 %259, label %middle.block, label %vector.body, !llvm.loop !12

middle.block:                                     ; preds = %vector.body
  %260 = extractelement <2 x double> %wide.load613, i64 1
  %261 = extractelement <2 x double> %wide.load611, i64 1
  %cmp.n = icmp eq i64 %n.vec, %238
  br i1 %cmp.n, label %._crit_edge, label %.lr.ph.preheader642

.lr.ph.preheader642:                              ; preds = %middle.block, %vector.memcheck, %vector.scevcheck, %.lr.ph.preheader
  %indvars.iv.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %vector.scevcheck ], [ 1, %.lr.ph.preheader ], [ %ind.end, %middle.block ]
  %262 = zext nneg i32 %236 to i64
  %263 = and i32 %236, 1
  %lcmp.mod.not = icmp eq i32 %263, 0
  br i1 %lcmp.mod.not, label %.lr.ph.prol.loopexit, label %.lr.ph.prol

.lr.ph.prol:                                      ; preds = %.lr.ph.preheader642
  %gep597.prol = getelementptr double, ptr %invariant.gep596, i64 %indvars.iv.ph
  %264 = load double, ptr %gep597.prol, align 8, !tbaa !9
  %gep599.prol = getelementptr double, ptr %invariant.gep598, i64 %indvars.iv.ph
  %265 = load double, ptr %gep599.prol, align 8, !tbaa !9
  %266 = fmul double %265, %265
  %267 = call double @llvm.fmuladd.f64(double %264, double %264, double %266)
  %268 = trunc nuw nsw i64 %indvars.iv.ph to i32
  %269 = add i32 %165, %268
  %270 = sext i32 %269 to i64
  %271 = getelementptr inbounds double, ptr %46, i64 %270
  store double %267, ptr %271, align 8, !tbaa !9
  %indvars.iv.next.prol = add nuw nsw i64 %indvars.iv.ph, 1
  br label %.lr.ph.prol.loopexit

.lr.ph.prol.loopexit:                             ; preds = %.lr.ph.prol, %.lr.ph.preheader642
  %.lcssa644.unr = phi double [ poison, %.lr.ph.preheader642 ], [ %264, %.lr.ph.prol ]
  %.lcssa643.unr = phi double [ poison, %.lr.ph.preheader642 ], [ %265, %.lr.ph.prol ]
  %indvars.iv.unr = phi i64 [ %indvars.iv.ph, %.lr.ph.preheader642 ], [ %indvars.iv.next.prol, %.lr.ph.prol ]
  %272 = icmp eq i64 %indvars.iv.ph, %262
  br i1 %272, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.prol.loopexit, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next.1, %.lr.ph ], [ %indvars.iv.unr, %.lr.ph.prol.loopexit ]
  %gep597 = getelementptr double, ptr %invariant.gep596, i64 %indvars.iv
  %273 = load double, ptr %gep597, align 8, !tbaa !9
  %gep599 = getelementptr double, ptr %invariant.gep598, i64 %indvars.iv
  %274 = load double, ptr %gep599, align 8, !tbaa !9
  %275 = fmul double %274, %274
  %276 = call double @llvm.fmuladd.f64(double %273, double %273, double %275)
  %277 = trunc nuw nsw i64 %indvars.iv to i32
  %278 = add i32 %165, %277
  %279 = sext i32 %278 to i64
  %280 = getelementptr inbounds double, ptr %46, i64 %279
  store double %276, ptr %280, align 8, !tbaa !9
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %gep597.1 = getelementptr double, ptr %invariant.gep596, i64 %indvars.iv.next
  %281 = load double, ptr %gep597.1, align 8, !tbaa !9
  %gep599.1 = getelementptr double, ptr %invariant.gep598, i64 %indvars.iv.next
  %282 = load double, ptr %gep599.1, align 8, !tbaa !9
  %283 = fmul double %282, %282
  %284 = call double @llvm.fmuladd.f64(double %281, double %281, double %283)
  %285 = trunc nuw nsw i64 %indvars.iv.next to i32
  %286 = add i32 %165, %285
  %287 = sext i32 %286 to i64
  %288 = getelementptr inbounds double, ptr %46, i64 %287
  store double %284, ptr %288, align 8, !tbaa !9
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %exitcond.not.1 = icmp eq i64 %indvars.iv.next.1, %wide.trip.count
  br i1 %exitcond.not.1, label %._crit_edge, label %.lr.ph, !llvm.loop !16

._crit_edge:                                      ; preds = %.lr.ph.prol.loopexit, %.lr.ph, %middle.block
  %.lcssa608 = phi double [ %261, %middle.block ], [ %.lcssa644.unr, %.lr.ph.prol.loopexit ], [ %281, %.lr.ph ]
  %.lcssa607 = phi double [ %260, %middle.block ], [ %.lcssa643.unr, %.lr.ph.prol.loopexit ], [ %282, %.lr.ph ]
  store double %.lcssa608, ptr %21, align 8, !tbaa !9
  store double %.lcssa607, ptr %22, align 8, !tbaa !9
  br label %289

289:                                              ; preds = %._crit_edge, %228
  %290 = call i32 @idamax_(ptr noundef nonnull %2, ptr noundef nonnull %172, ptr noundef nonnull @c__1) #6
  %291 = sext i32 %290 to i64
  %292 = getelementptr double, ptr %42, i64 %229
  %293 = getelementptr double, ptr %292, i64 %291
  %294 = getelementptr double, ptr %42, i64 %232
  %295 = getelementptr double, ptr %294, i64 %291
  call void @dlartg_(ptr noundef %293, ptr noundef %295, ptr noundef nonnull %28, ptr noundef nonnull %30, ptr noundef nonnull %27) #6
  call void @drot_(ptr noundef nonnull %2, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %gep553, ptr noundef nonnull @c__1, ptr noundef nonnull %28, ptr noundef nonnull %30) #6
  store double 0.000000e+00, ptr %295, align 8, !tbaa !9
  br label %296

296:                                              ; preds = %222, %289, %226
  %indvars.iv.next583 = add nuw nsw i64 %indvars.iv582, 1
  %297 = load i32, ptr %19, align 4, !tbaa !5
  %298 = sext i32 %297 to i64
  %.not520.not = icmp slt i64 %indvars.iv582, %298
  %indvar.next = add i64 %indvar, 1
  br i1 %.not520.not, label %.lr.ph559, label %.loopexit, !llvm.loop !17

.loopexit:                                        ; preds = %296, %196, %193
  br i1 %.not499, label %299, label %.thread538

299:                                              ; preds = %.loopexit
  call void @dgebak_(ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.8, ptr noundef nonnull %2, ptr noundef nonnull %36, ptr noundef nonnull %34, ptr noundef nonnull %11, ptr noundef nonnull %2, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %25) #6
  %300 = load i32, ptr %2, align 4, !tbaa !5
  store i32 %300, ptr %19, align 4, !tbaa !5
  %invariant.gep567 = getelementptr i8, ptr %45, i64 8
  %.not522573 = icmp slt i32 %300, 1
  br i1 %.not522573, label %.thread538, label %.lr.ph576.preheader

.lr.ph576.preheader:                              ; preds = %299
  %301 = sext i32 %43 to i64
  %302 = add i32 %165, 1
  %303 = sext i32 %302 to i64
  %304 = shl nsw i64 %303, 3
  %305 = add i64 %304, %16
  %306 = add i64 %305, -16
  %307 = shl nsw i64 %44, 3
  %308 = add i64 %307, %15
  %309 = shl nsw i64 %301, 4
  %310 = add i64 %308, %309
  %311 = sub i64 %306, %310
  %312 = mul nsw i64 %301, -8
  %313 = add i64 %304, %16
  %314 = add i64 %313, -16
  %315 = shl nsw i64 %301, 3
  %316 = add i64 %315, %15
  %317 = add i64 %316, %307
  %318 = sub i64 %314, %317
  br label %.lr.ph576

.lr.ph576:                                        ; preds = %.lr.ph576.preheader, %399
  %indvar616 = phi i64 [ 0, %.lr.ph576.preheader ], [ %indvar.next617, %399 ]
  %indvars.iv590 = phi i64 [ 1, %.lr.ph576.preheader ], [ %indvars.iv.next591, %399 ]
  %319 = mul i64 %312, %indvar616
  %320 = add i64 %311, %319
  %321 = add i64 %318, %319
  %322 = getelementptr inbounds double, ptr %39, i64 %indvars.iv590
  %323 = load double, ptr %322, align 8, !tbaa !9
  %324 = fcmp oeq double %323, 0.000000e+00
  br i1 %324, label %325, label %329

325:                                              ; preds = %.lr.ph576
  %326 = mul nsw i64 %indvars.iv590, %301
  %gep572 = getelementptr double, ptr %invariant.gep567, i64 %326
  %327 = call double @dnrm2_(ptr noundef nonnull %2, ptr noundef %gep572, ptr noundef nonnull @c__1) #6
  %328 = fdiv double 1.000000e+00, %327
  store double %328, ptr %35, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %2, ptr noundef nonnull %35, ptr noundef %gep572, ptr noundef nonnull @c__1) #6
  br label %399

329:                                              ; preds = %.lr.ph576
  %330 = fcmp ogt double %323, 0.000000e+00
  br i1 %330, label %331, label %399

331:                                              ; preds = %329
  %332 = mul nsw i64 %indvars.iv590, %301
  %gep568 = getelementptr double, ptr %invariant.gep567, i64 %332
  %333 = call double @dnrm2_(ptr noundef nonnull %2, ptr noundef %gep568, ptr noundef nonnull @c__1) #6
  store double %333, ptr %21, align 8, !tbaa !9
  %334 = add nuw nsw i64 %indvars.iv590, 1
  %335 = mul nsw i64 %334, %301
  %gep570 = getelementptr double, ptr %invariant.gep567, i64 %335
  %336 = call double @dnrm2_(ptr noundef nonnull %2, ptr noundef %gep570, ptr noundef nonnull @c__1) #6
  store double %336, ptr %22, align 8, !tbaa !9
  %337 = call double @dlapy2_(ptr noundef nonnull %21, ptr noundef nonnull %22) #6
  %338 = fdiv double 1.000000e+00, %337
  store double %338, ptr %35, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %2, ptr noundef nonnull %35, ptr noundef %gep568, ptr noundef nonnull @c__1) #6
  call void @dscal_(ptr noundef nonnull %2, ptr noundef nonnull %35, ptr noundef %gep570, ptr noundef nonnull @c__1) #6
  %339 = load i32, ptr %2, align 4, !tbaa !5
  store i32 %339, ptr %20, align 4, !tbaa !5
  %.not523560 = icmp slt i32 %339, 1
  br i1 %.not523560, label %392, label %.lr.ph563.preheader

.lr.ph563.preheader:                              ; preds = %331
  %340 = add nuw i32 %339, 1
  %wide.trip.count588 = zext i32 %340 to i64
  %invariant.gep600 = getelementptr double, ptr %45, i64 %332
  %invariant.gep602 = getelementptr double, ptr %45, i64 %335
  %341 = zext nneg i32 %339 to i64
  %min.iters.check623 = icmp ult i32 %339, 6
  br i1 %min.iters.check623, label %.lr.ph563.preheader639, label %vector.scevcheck614

vector.scevcheck614:                              ; preds = %.lr.ph563.preheader
  %342 = add nsw i64 %wide.trip.count588, -2
  %343 = trunc i64 %342 to i32
  %344 = add i32 %302, %343
  %345 = icmp slt i32 %344, %302
  %346 = icmp ugt i64 %342, 4294967295
  %347 = or i1 %345, %346
  br i1 %347, label %.lr.ph563.preheader639, label %vector.memcheck615

vector.memcheck615:                               ; preds = %vector.scevcheck614
  %diff.check618 = icmp ult i64 %320, 32
  %diff.check619 = icmp ult i64 %321, 32
  %conflict.rdx620 = or i1 %diff.check618, %diff.check619
  br i1 %conflict.rdx620, label %.lr.ph563.preheader639, label %vector.ph624

vector.ph624:                                     ; preds = %vector.memcheck615
  %n.vec626 = and i64 %341, 2147483644
  %ind.end627 = or disjoint i64 %n.vec626, 1
  br label %vector.body629

vector.body629:                                   ; preds = %vector.body629, %vector.ph624
  %index630 = phi i64 [ 0, %vector.ph624 ], [ %index.next637, %vector.body629 ]
  %offset.idx631 = or disjoint i64 %index630, 1
  %348 = trunc i64 %index630 to i32
  %349 = or disjoint i32 %348, 1
  %350 = getelementptr double, ptr %invariant.gep600, i64 %offset.idx631
  %351 = getelementptr i8, ptr %350, i64 16
  %wide.load633 = load <2 x double>, ptr %350, align 8, !tbaa !9
  %wide.load634 = load <2 x double>, ptr %351, align 8, !tbaa !9
  %352 = getelementptr double, ptr %invariant.gep602, i64 %offset.idx631
  %353 = getelementptr i8, ptr %352, i64 16
  %wide.load635 = load <2 x double>, ptr %352, align 8, !tbaa !9
  %wide.load636 = load <2 x double>, ptr %353, align 8, !tbaa !9
  %354 = fmul <2 x double> %wide.load635, %wide.load635
  %355 = fmul <2 x double> %wide.load636, %wide.load636
  %356 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %wide.load633, <2 x double> %wide.load633, <2 x double> %354)
  %357 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %wide.load634, <2 x double> %wide.load634, <2 x double> %355)
  %358 = add i32 %165, %349
  %359 = sext i32 %358 to i64
  %360 = getelementptr inbounds double, ptr %46, i64 %359
  %361 = getelementptr inbounds i8, ptr %360, i64 16
  store <2 x double> %356, ptr %360, align 8, !tbaa !9
  store <2 x double> %357, ptr %361, align 8, !tbaa !9
  %index.next637 = add nuw i64 %index630, 4
  %362 = icmp eq i64 %index.next637, %n.vec626
  br i1 %362, label %middle.block621, label %vector.body629, !llvm.loop !18

middle.block621:                                  ; preds = %vector.body629
  %363 = extractelement <2 x double> %wide.load636, i64 1
  %364 = extractelement <2 x double> %wide.load634, i64 1
  %cmp.n638 = icmp eq i64 %n.vec626, %341
  br i1 %cmp.n638, label %._crit_edge564, label %.lr.ph563.preheader639

.lr.ph563.preheader639:                           ; preds = %middle.block621, %vector.memcheck615, %vector.scevcheck614, %.lr.ph563.preheader
  %indvars.iv585.ph = phi i64 [ 1, %vector.memcheck615 ], [ 1, %vector.scevcheck614 ], [ 1, %.lr.ph563.preheader ], [ %ind.end627, %middle.block621 ]
  %365 = zext nneg i32 %339 to i64
  %366 = and i32 %339, 1
  %lcmp.mod646.not = icmp eq i32 %366, 0
  br i1 %lcmp.mod646.not, label %.lr.ph563.prol.loopexit, label %.lr.ph563.prol

.lr.ph563.prol:                                   ; preds = %.lr.ph563.preheader639
  %gep601.prol = getelementptr double, ptr %invariant.gep600, i64 %indvars.iv585.ph
  %367 = load double, ptr %gep601.prol, align 8, !tbaa !9
  %gep603.prol = getelementptr double, ptr %invariant.gep602, i64 %indvars.iv585.ph
  %368 = load double, ptr %gep603.prol, align 8, !tbaa !9
  %369 = fmul double %368, %368
  %370 = call double @llvm.fmuladd.f64(double %367, double %367, double %369)
  %371 = trunc nuw nsw i64 %indvars.iv585.ph to i32
  %372 = add i32 %165, %371
  %373 = sext i32 %372 to i64
  %374 = getelementptr inbounds double, ptr %46, i64 %373
  store double %370, ptr %374, align 8, !tbaa !9
  %indvars.iv.next586.prol = add nuw nsw i64 %indvars.iv585.ph, 1
  br label %.lr.ph563.prol.loopexit

.lr.ph563.prol.loopexit:                          ; preds = %.lr.ph563.prol, %.lr.ph563.preheader639
  %.lcssa641.unr = phi double [ poison, %.lr.ph563.preheader639 ], [ %367, %.lr.ph563.prol ]
  %.lcssa640.unr = phi double [ poison, %.lr.ph563.preheader639 ], [ %368, %.lr.ph563.prol ]
  %indvars.iv585.unr = phi i64 [ %indvars.iv585.ph, %.lr.ph563.preheader639 ], [ %indvars.iv.next586.prol, %.lr.ph563.prol ]
  %375 = icmp eq i64 %indvars.iv585.ph, %365
  br i1 %375, label %._crit_edge564, label %.lr.ph563

.lr.ph563:                                        ; preds = %.lr.ph563.prol.loopexit, %.lr.ph563
  %indvars.iv585 = phi i64 [ %indvars.iv.next586.1, %.lr.ph563 ], [ %indvars.iv585.unr, %.lr.ph563.prol.loopexit ]
  %gep601 = getelementptr double, ptr %invariant.gep600, i64 %indvars.iv585
  %376 = load double, ptr %gep601, align 8, !tbaa !9
  %gep603 = getelementptr double, ptr %invariant.gep602, i64 %indvars.iv585
  %377 = load double, ptr %gep603, align 8, !tbaa !9
  %378 = fmul double %377, %377
  %379 = call double @llvm.fmuladd.f64(double %376, double %376, double %378)
  %380 = trunc nuw nsw i64 %indvars.iv585 to i32
  %381 = add i32 %165, %380
  %382 = sext i32 %381 to i64
  %383 = getelementptr inbounds double, ptr %46, i64 %382
  store double %379, ptr %383, align 8, !tbaa !9
  %indvars.iv.next586 = add nuw nsw i64 %indvars.iv585, 1
  %gep601.1 = getelementptr double, ptr %invariant.gep600, i64 %indvars.iv.next586
  %384 = load double, ptr %gep601.1, align 8, !tbaa !9
  %gep603.1 = getelementptr double, ptr %invariant.gep602, i64 %indvars.iv.next586
  %385 = load double, ptr %gep603.1, align 8, !tbaa !9
  %386 = fmul double %385, %385
  %387 = call double @llvm.fmuladd.f64(double %384, double %384, double %386)
  %388 = trunc nuw nsw i64 %indvars.iv.next586 to i32
  %389 = add i32 %165, %388
  %390 = sext i32 %389 to i64
  %391 = getelementptr inbounds double, ptr %46, i64 %390
  store double %387, ptr %391, align 8, !tbaa !9
  %indvars.iv.next586.1 = add nuw nsw i64 %indvars.iv585, 2
  %exitcond589.not.1 = icmp eq i64 %indvars.iv.next586.1, %wide.trip.count588
  br i1 %exitcond589.not.1, label %._crit_edge564, label %.lr.ph563, !llvm.loop !19

._crit_edge564:                                   ; preds = %.lr.ph563.prol.loopexit, %.lr.ph563, %middle.block621
  %.lcssa606 = phi double [ %364, %middle.block621 ], [ %.lcssa641.unr, %.lr.ph563.prol.loopexit ], [ %384, %.lr.ph563 ]
  %.lcssa = phi double [ %363, %middle.block621 ], [ %.lcssa640.unr, %.lr.ph563.prol.loopexit ], [ %385, %.lr.ph563 ]
  store double %.lcssa606, ptr %21, align 8, !tbaa !9
  store double %.lcssa, ptr %22, align 8, !tbaa !9
  br label %392

392:                                              ; preds = %._crit_edge564, %331
  %393 = call i32 @idamax_(ptr noundef nonnull %2, ptr noundef nonnull %172, ptr noundef nonnull @c__1) #6
  %394 = sext i32 %393 to i64
  %395 = getelementptr double, ptr %45, i64 %332
  %396 = getelementptr double, ptr %395, i64 %394
  %397 = getelementptr double, ptr %45, i64 %335
  %398 = getelementptr double, ptr %397, i64 %394
  call void @dlartg_(ptr noundef %396, ptr noundef %398, ptr noundef nonnull %28, ptr noundef nonnull %30, ptr noundef nonnull %27) #6
  call void @drot_(ptr noundef nonnull %2, ptr noundef %gep568, ptr noundef nonnull @c__1, ptr noundef %gep570, ptr noundef nonnull @c__1, ptr noundef nonnull %28, ptr noundef nonnull %30) #6
  store double 0.000000e+00, ptr %398, align 8, !tbaa !9
  br label %399

399:                                              ; preds = %325, %392, %329
  %indvars.iv.next591 = add nuw nsw i64 %indvars.iv590, 1
  %400 = load i32, ptr %19, align 4, !tbaa !5
  %401 = sext i32 %400 to i64
  %.not522.not = icmp slt i64 %indvars.iv590, %401
  %indvar.next617 = add i64 %indvar616, 1
  br i1 %.not522.not, label %.lr.ph576, label %.thread538, !llvm.loop !20

.thread538:                                       ; preds = %399, %299, %.loopexit, %190
  br i1 %.not516536, label %424, label %402

402:                                              ; preds = %.thread538
  %403 = load i32, ptr %2, align 4, !tbaa !5
  %404 = load i32, ptr %13, align 4, !tbaa !5
  %405 = sub nsw i32 %403, %404
  store i32 %405, ptr %19, align 4, !tbaa !5
  %406 = call i32 @llvm.smax.i32(i32 %405, i32 1)
  store i32 %406, ptr %20, align 4, !tbaa !5
  %407 = sext i32 %404 to i64
  %408 = getelementptr double, ptr %38, i64 %407
  %409 = getelementptr i8, ptr %408, i64 8
  call void @dlascl_(ptr noundef nonnull @.str.13, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %29, ptr noundef nonnull %24, ptr noundef nonnull %19, ptr noundef nonnull @c__1, ptr noundef %409, ptr noundef nonnull %20, ptr noundef nonnull %25) #6
  %410 = load i32, ptr %2, align 4, !tbaa !5
  %411 = load i32, ptr %13, align 4, !tbaa !5
  %412 = sub nsw i32 %410, %411
  store i32 %412, ptr %19, align 4, !tbaa !5
  %413 = call i32 @llvm.smax.i32(i32 %412, i32 1)
  store i32 %413, ptr %20, align 4, !tbaa !5
  %414 = sext i32 %411 to i64
  %415 = getelementptr double, ptr %39, i64 %414
  %416 = getelementptr i8, ptr %415, i64 8
  call void @dlascl_(ptr noundef nonnull @.str.13, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %29, ptr noundef nonnull %24, ptr noundef nonnull %19, ptr noundef nonnull @c__1, ptr noundef %416, ptr noundef nonnull %20, ptr noundef nonnull %25) #6
  %417 = load i32, ptr %13, align 4, !tbaa !5
  %418 = icmp sgt i32 %417, 0
  br i1 %418, label %419, label %424

419:                                              ; preds = %402
  %420 = load i32, ptr %36, align 4, !tbaa !5
  %421 = add nsw i32 %420, -1
  store i32 %421, ptr %19, align 4, !tbaa !5
  call void @dlascl_(ptr noundef nonnull @.str.13, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %29, ptr noundef nonnull %24, ptr noundef nonnull %19, ptr noundef nonnull @c__1, ptr noundef %5, ptr noundef nonnull %2, ptr noundef nonnull %25) #6
  %422 = load i32, ptr %36, align 4, !tbaa !5
  %423 = add nsw i32 %422, -1
  store i32 %423, ptr %19, align 4, !tbaa !5
  call void @dlascl_(ptr noundef nonnull @.str.13, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %29, ptr noundef nonnull %24, ptr noundef nonnull %19, ptr noundef nonnull @c__1, ptr noundef %6, ptr noundef nonnull %2, ptr noundef nonnull %25) #6
  br label %424

424:                                              ; preds = %402, %419, %.thread538
  store double %.1, ptr %11, align 8, !tbaa !9
  br label %425

425:                                              ; preds = %147, %424, %.thread529
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %36) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %34) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #6
  ret void
}

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

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

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

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

declare void @dgebak_(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 double @dnrm2_(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 double @dlapy2_(ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"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 = !{!7, !7, i64 0}
!12 = distinct !{!12, !13, !14, !15}
!13 = !{!"llvm.loop.mustprogress"}
!14 = !{!"llvm.loop.isvectorized", i32 1}
!15 = !{!"llvm.loop.unroll.runtime.disable"}
!16 = distinct !{!16, !13, !14}
!17 = distinct !{!17, !13}
!18 = distinct !{!18, !13, !14, !15}
!19 = distinct !{!19, !13, !14}
!20 = distinct !{!20, !13}


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