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

; 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
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.3 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@c__0 = external hidden global i64, align 8
@c_n1 = external hidden global i64, align 8
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [7 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 [2 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

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

108:                                              ; preds = %15
  %109 = load ptr, ptr %17, align 8, !tbaa !5
  %110 = call i64 @lsame_(ptr noundef %109, ptr noundef @.str.2)
  %111 = icmp ne i64 %110, 0
  br i1 %111, label %114, label %112

112:                                              ; preds = %108
  %113 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 -1, ptr %113, align 8, !tbaa !9
  br label %163

114:                                              ; preds = %108, %15
  %115 = load i64, ptr %68, align 8, !tbaa !9
  %116 = icmp ne i64 %115, 0
  br i1 %116, label %123, label %117

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

121:                                              ; preds = %117
  %122 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 -2, ptr %122, align 8, !tbaa !9
  br label %162

123:                                              ; preds = %117, %114
  %124 = load ptr, ptr %20, align 8, !tbaa !5
  %125 = load i64, ptr %124, align 8, !tbaa !9
  %126 = icmp slt i64 %125, 0
  br i1 %126, label %127, label %129

127:                                              ; preds = %123
  %128 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 -4, ptr %128, align 8, !tbaa !9
  br label %161

129:                                              ; preds = %123
  %130 = load ptr, ptr %22, align 8, !tbaa !5
  %131 = load i64, ptr %130, align 8, !tbaa !9
  %132 = load ptr, ptr %20, align 8, !tbaa !5
  %133 = load i64, ptr %132, align 8, !tbaa !9
  %134 = icmp sge i64 1, %133
  br i1 %134, label %135, label %136

135:                                              ; preds = %129
  br label %139

136:                                              ; preds = %129
  %137 = load ptr, ptr %20, align 8, !tbaa !5
  %138 = load i64, ptr %137, align 8, !tbaa !9
  br label %139

139:                                              ; preds = %136, %135
  %140 = phi i64 [ 1, %135 ], [ %138, %136 ]
  %141 = icmp slt i64 %131, %140
  br i1 %141, label %142, label %144

142:                                              ; preds = %139
  %143 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 -6, ptr %143, align 8, !tbaa !9
  br label %160

144:                                              ; preds = %139
  %145 = load ptr, ptr %27, align 8, !tbaa !5
  %146 = load i64, ptr %145, align 8, !tbaa !9
  %147 = icmp slt i64 %146, 1
  br i1 %147, label %157, label %148

148:                                              ; preds = %144
  %149 = load i64, ptr %70, align 8, !tbaa !9
  %150 = icmp ne i64 %149, 0
  br i1 %150, label %151, label %159

151:                                              ; preds = %148
  %152 = load ptr, ptr %27, align 8, !tbaa !5
  %153 = load i64, ptr %152, align 8, !tbaa !9
  %154 = load ptr, ptr %20, align 8, !tbaa !5
  %155 = load i64, ptr %154, align 8, !tbaa !9
  %156 = icmp slt i64 %153, %155
  br i1 %156, label %157, label %159

157:                                              ; preds = %151, %144
  %158 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 -11, ptr %158, align 8, !tbaa !9
  br label %159

159:                                              ; preds = %157, %151, %148
  br label %160

160:                                              ; preds = %159, %142
  br label %161

161:                                              ; preds = %160, %127
  br label %162

162:                                              ; preds = %161, %121
  br label %163

163:                                              ; preds = %162, %112
  %164 = load ptr, ptr %31, align 8, !tbaa !5
  %165 = load i64, ptr %164, align 8, !tbaa !9
  %166 = icmp eq i64 %165, 0
  br i1 %166, label %167, label %277

167:                                              ; preds = %163
  %168 = load ptr, ptr %20, align 8, !tbaa !5
  %169 = load i64, ptr %168, align 8, !tbaa !9
  %170 = icmp eq i64 %169, 0
  br i1 %170, label %171, label %172

171:                                              ; preds = %167
  store i64 1, ptr %64, align 8, !tbaa !9
  store i64 1, ptr %65, align 8, !tbaa !9
  br label %262

172:                                              ; preds = %167
  %173 = load ptr, ptr %20, align 8, !tbaa !5
  %174 = load i64, ptr %173, align 8, !tbaa !9
  %175 = shl i64 %174, 1
  %176 = load ptr, ptr %20, align 8, !tbaa !5
  %177 = load i64, ptr %176, align 8, !tbaa !9
  %178 = load ptr, ptr %20, align 8, !tbaa !5
  %179 = load ptr, ptr %20, align 8, !tbaa !5
  %180 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef %178, ptr noundef @c__1, ptr noundef %179, ptr noundef @c__0)
  %181 = mul nsw i64 %177, %180
  %182 = add nsw i64 %175, %181
  store i64 %182, ptr %65, align 8, !tbaa !9
  %183 = load ptr, ptr %20, align 8, !tbaa !5
  %184 = load i64, ptr %183, align 8, !tbaa !9
  %185 = mul nsw i64 %184, 3
  store i64 %185, ptr %64, align 8, !tbaa !9
  %186 = load ptr, ptr %17, align 8, !tbaa !5
  %187 = load ptr, ptr %20, align 8, !tbaa !5
  %188 = load ptr, ptr %20, align 8, !tbaa !5
  %189 = load ptr, ptr %21, align 8, !tbaa !5
  %190 = load i64, ptr %33, align 8, !tbaa !9
  %191 = getelementptr inbounds double, ptr %189, i64 %190
  %192 = load ptr, ptr %22, align 8, !tbaa !5
  %193 = load ptr, ptr %24, align 8, !tbaa !5
  %194 = getelementptr inbounds double, ptr %193, i64 1
  %195 = load ptr, ptr %25, align 8, !tbaa !5
  %196 = getelementptr inbounds double, ptr %195, i64 1
  %197 = load ptr, ptr %26, align 8, !tbaa !5
  %198 = load i64, ptr %35, align 8, !tbaa !9
  %199 = getelementptr inbounds double, ptr %197, i64 %198
  %200 = load ptr, ptr %27, align 8, !tbaa !5
  %201 = load ptr, ptr %28, align 8, !tbaa !5
  %202 = getelementptr inbounds double, ptr %201, i64 1
  %203 = call i32 @dhseqr_(ptr noundef @.str.1, ptr noundef %186, ptr noundef %187, ptr noundef @c__1, ptr noundef %188, ptr noundef %191, ptr noundef %192, ptr noundef %194, ptr noundef %196, ptr noundef %199, ptr noundef %200, ptr noundef %202, ptr noundef @c_n1, ptr noundef %57)
  %204 = load ptr, ptr %28, align 8, !tbaa !5
  %205 = getelementptr inbounds double, ptr %204, i64 1
  %206 = load double, ptr %205, align 8, !tbaa !11
  %207 = fptosi double %206 to i64
  store i64 %207, ptr %67, align 8, !tbaa !9
  %208 = load i64, ptr %70, align 8, !tbaa !9
  %209 = icmp ne i64 %208, 0
  br i1 %209, label %225, label %210

210:                                              ; preds = %172
  %211 = load i64, ptr %65, align 8, !tbaa !9
  store i64 %211, ptr %36, align 8, !tbaa !9
  %212 = load ptr, ptr %20, align 8, !tbaa !5
  %213 = load i64, ptr %212, align 8, !tbaa !9
  %214 = load i64, ptr %67, align 8, !tbaa !9
  %215 = add nsw i64 %213, %214
  store i64 %215, ptr %37, align 8, !tbaa !9
  %216 = load i64, ptr %36, align 8, !tbaa !9
  %217 = load i64, ptr %37, align 8, !tbaa !9
  %218 = icmp sge i64 %216, %217
  br i1 %218, label %219, label %221

219:                                              ; preds = %210
  %220 = load i64, ptr %36, align 8, !tbaa !9
  br label %223

221:                                              ; preds = %210
  %222 = load i64, ptr %37, align 8, !tbaa !9
  br label %223

223:                                              ; preds = %221, %219
  %224 = phi i64 [ %220, %219 ], [ %222, %221 ]
  store i64 %224, ptr %65, align 8, !tbaa !9
  br label %261

225:                                              ; preds = %172
  %226 = load i64, ptr %65, align 8, !tbaa !9
  store i64 %226, ptr %36, align 8, !tbaa !9
  %227 = load ptr, ptr %20, align 8, !tbaa !5
  %228 = load i64, ptr %227, align 8, !tbaa !9
  %229 = shl i64 %228, 1
  %230 = load ptr, ptr %20, align 8, !tbaa !5
  %231 = load i64, ptr %230, align 8, !tbaa !9
  %232 = sub nsw i64 %231, 1
  %233 = load ptr, ptr %20, align 8, !tbaa !5
  %234 = load ptr, ptr %20, align 8, !tbaa !5
  %235 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.5, ptr noundef @.str.4, ptr noundef %233, ptr noundef @c__1, ptr noundef %234, ptr noundef @c_n1)
  %236 = mul nsw i64 %232, %235
  %237 = add nsw i64 %229, %236
  store i64 %237, ptr %37, align 8, !tbaa !9
  %238 = load i64, ptr %36, align 8, !tbaa !9
  %239 = load i64, ptr %37, align 8, !tbaa !9
  %240 = icmp sge i64 %238, %239
  br i1 %240, label %241, label %243

241:                                              ; preds = %225
  %242 = load i64, ptr %36, align 8, !tbaa !9
  br label %245

243:                                              ; preds = %225
  %244 = load i64, ptr %37, align 8, !tbaa !9
  br label %245

245:                                              ; preds = %243, %241
  %246 = phi i64 [ %242, %241 ], [ %244, %243 ]
  store i64 %246, ptr %65, align 8, !tbaa !9
  %247 = load i64, ptr %65, align 8, !tbaa !9
  store i64 %247, ptr %36, align 8, !tbaa !9
  %248 = load ptr, ptr %20, align 8, !tbaa !5
  %249 = load i64, ptr %248, align 8, !tbaa !9
  %250 = load i64, ptr %67, align 8, !tbaa !9
  %251 = add nsw i64 %249, %250
  store i64 %251, ptr %37, align 8, !tbaa !9
  %252 = load i64, ptr %36, align 8, !tbaa !9
  %253 = load i64, ptr %37, align 8, !tbaa !9
  %254 = icmp sge i64 %252, %253
  br i1 %254, label %255, label %257

255:                                              ; preds = %245
  %256 = load i64, ptr %36, align 8, !tbaa !9
  br label %259

257:                                              ; preds = %245
  %258 = load i64, ptr %37, align 8, !tbaa !9
  br label %259

259:                                              ; preds = %257, %255
  %260 = phi i64 [ %256, %255 ], [ %258, %257 ]
  store i64 %260, ptr %65, align 8, !tbaa !9
  br label %261

261:                                              ; preds = %259, %223
  br label %262

262:                                              ; preds = %261, %171
  %263 = load i64, ptr %65, align 8, !tbaa !9
  %264 = sitofp i64 %263 to double
  %265 = load ptr, ptr %28, align 8, !tbaa !5
  %266 = getelementptr inbounds double, ptr %265, i64 1
  store double %264, ptr %266, align 8, !tbaa !11
  %267 = load ptr, ptr %29, align 8, !tbaa !5
  %268 = load i64, ptr %267, align 8, !tbaa !9
  %269 = load i64, ptr %64, align 8, !tbaa !9
  %270 = icmp slt i64 %268, %269
  br i1 %270, label %271, label %276

271:                                              ; preds = %262
  %272 = load i64, ptr %69, align 8, !tbaa !9
  %273 = icmp ne i64 %272, 0
  br i1 %273, label %276, label %274

274:                                              ; preds = %271
  %275 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 -13, ptr %275, align 8, !tbaa !9
  br label %276

276:                                              ; preds = %274, %271, %262
  br label %277

277:                                              ; preds = %276, %163
  %278 = load ptr, ptr %31, align 8, !tbaa !5
  %279 = load i64, ptr %278, align 8, !tbaa !9
  %280 = icmp ne i64 %279, 0
  br i1 %280, label %281, label %286

281:                                              ; preds = %277
  %282 = load ptr, ptr %31, align 8, !tbaa !5
  %283 = load i64, ptr %282, align 8, !tbaa !9
  %284 = sub nsw i64 0, %283
  store i64 %284, ptr %36, align 8, !tbaa !9
  %285 = call i32 @xerbla_(ptr noundef @.str.6, ptr noundef %36)
  store i32 0, ptr %16, align 4
  store i32 1, ptr %71, align 4
  br label %885

286:                                              ; preds = %277
  %287 = load i64, ptr %69, align 8, !tbaa !9
  %288 = icmp ne i64 %287, 0
  br i1 %288, label %289, label %290

289:                                              ; preds = %286
  store i32 0, ptr %16, align 4
  store i32 1, ptr %71, align 4
  br label %885

290:                                              ; preds = %286
  br label %291

291:                                              ; preds = %290
  %292 = load ptr, ptr %20, align 8, !tbaa !5
  %293 = load i64, ptr %292, align 8, !tbaa !9
  %294 = icmp eq i64 %293, 0
  br i1 %294, label %295, label %297

295:                                              ; preds = %291
  %296 = load ptr, ptr %23, align 8, !tbaa !5
  store i64 0, ptr %296, align 8, !tbaa !9
  store i32 0, ptr %16, align 4
  store i32 1, ptr %71, align 4
  br label %885

297:                                              ; preds = %291
  %298 = call double @dlamch_(ptr noundef @.str.7)
  store double %298, ptr %47, align 8, !tbaa !11
  %299 = call double @dlamch_(ptr noundef @.str.1)
  store double %299, ptr %66, align 8, !tbaa !11
  %300 = load double, ptr %66, align 8, !tbaa !11
  %301 = fdiv double 1.000000e+00, %300
  store double %301, ptr %62, align 8, !tbaa !11
  %302 = call i32 @dlabad_(ptr noundef %66, ptr noundef %62)
  %303 = load double, ptr %66, align 8, !tbaa !11
  %304 = call double @sqrt(double noundef %303) #4
  %305 = load double, ptr %47, align 8, !tbaa !11
  %306 = fdiv double %304, %305
  store double %306, ptr %66, align 8, !tbaa !11
  %307 = load double, ptr %66, align 8, !tbaa !11
  %308 = fdiv double 1.000000e+00, %307
  store double %308, ptr %62, align 8, !tbaa !11
  %309 = load ptr, ptr %20, align 8, !tbaa !5
  %310 = load ptr, ptr %20, align 8, !tbaa !5
  %311 = load ptr, ptr %21, align 8, !tbaa !5
  %312 = load i64, ptr %33, align 8, !tbaa !9
  %313 = getelementptr inbounds double, ptr %311, i64 %312
  %314 = load ptr, ptr %22, align 8, !tbaa !5
  %315 = getelementptr inbounds [1 x double], ptr %46, i64 0, i64 0
  %316 = call double @dlange_(ptr noundef @.str.8, ptr noundef %309, ptr noundef %310, ptr noundef %313, ptr noundef %314, ptr noundef %315)
  store double %316, ptr %50, align 8, !tbaa !11
  store i64 0, ptr %60, align 8, !tbaa !9
  %317 = load double, ptr %50, align 8, !tbaa !11
  %318 = fcmp ogt double %317, 0.000000e+00
  br i1 %318, label %319, label %325

319:                                              ; preds = %297
  %320 = load double, ptr %50, align 8, !tbaa !11
  %321 = load double, ptr %66, align 8, !tbaa !11
  %322 = fcmp olt double %320, %321
  br i1 %322, label %323, label %325

323:                                              ; preds = %319
  store i64 1, ptr %60, align 8, !tbaa !9
  %324 = load double, ptr %66, align 8, !tbaa !11
  store double %324, ptr %61, align 8, !tbaa !11
  br label %332

325:                                              ; preds = %319, %297
  %326 = load double, ptr %50, align 8, !tbaa !11
  %327 = load double, ptr %62, align 8, !tbaa !11
  %328 = fcmp ogt double %326, %327
  br i1 %328, label %329, label %331

329:                                              ; preds = %325
  store i64 1, ptr %60, align 8, !tbaa !9
  %330 = load double, ptr %62, align 8, !tbaa !11
  store double %330, ptr %61, align 8, !tbaa !11
  br label %331

331:                                              ; preds = %329, %325
  br label %332

332:                                              ; preds = %331, %323
  %333 = load i64, ptr %60, align 8, !tbaa !9
  %334 = icmp ne i64 %333, 0
  br i1 %334, label %335, label %343

335:                                              ; preds = %332
  %336 = load ptr, ptr %20, align 8, !tbaa !5
  %337 = load ptr, ptr %20, align 8, !tbaa !5
  %338 = load ptr, ptr %21, align 8, !tbaa !5
  %339 = load i64, ptr %33, align 8, !tbaa !9
  %340 = getelementptr inbounds double, ptr %338, i64 %339
  %341 = load ptr, ptr %22, align 8, !tbaa !5
  %342 = call i32 @dlascl_(ptr noundef @.str.9, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %50, ptr noundef %61, ptr noundef %336, ptr noundef %337, ptr noundef %340, ptr noundef %341, ptr noundef %52)
  br label %343

343:                                              ; preds = %335, %332
  store i64 1, ptr %49, align 8, !tbaa !9
  %344 = load ptr, ptr %20, align 8, !tbaa !5
  %345 = load ptr, ptr %21, align 8, !tbaa !5
  %346 = load i64, ptr %33, align 8, !tbaa !9
  %347 = getelementptr inbounds double, ptr %345, i64 %346
  %348 = load ptr, ptr %22, align 8, !tbaa !5
  %349 = load ptr, ptr %28, align 8, !tbaa !5
  %350 = load i64, ptr %49, align 8, !tbaa !9
  %351 = getelementptr inbounds double, ptr %349, i64 %350
  %352 = call i32 @dgebal_(ptr noundef @.str.7, ptr noundef %344, ptr noundef %347, ptr noundef %348, ptr noundef %45, ptr noundef %44, ptr noundef %351, ptr noundef %52)
  %353 = load ptr, ptr %20, align 8, !tbaa !5
  %354 = load i64, ptr %353, align 8, !tbaa !9
  %355 = load i64, ptr %49, align 8, !tbaa !9
  %356 = add nsw i64 %354, %355
  store i64 %356, ptr %53, align 8, !tbaa !9
  %357 = load ptr, ptr %20, align 8, !tbaa !5
  %358 = load i64, ptr %357, align 8, !tbaa !9
  %359 = load i64, ptr %53, align 8, !tbaa !9
  %360 = add nsw i64 %358, %359
  store i64 %360, ptr %54, align 8, !tbaa !9
  %361 = load ptr, ptr %29, align 8, !tbaa !5
  %362 = load i64, ptr %361, align 8, !tbaa !9
  %363 = load i64, ptr %54, align 8, !tbaa !9
  %364 = sub nsw i64 %362, %363
  %365 = add nsw i64 %364, 1
  store i64 %365, ptr %36, align 8, !tbaa !9
  %366 = load ptr, ptr %20, align 8, !tbaa !5
  %367 = load ptr, ptr %21, align 8, !tbaa !5
  %368 = load i64, ptr %33, align 8, !tbaa !9
  %369 = getelementptr inbounds double, ptr %367, i64 %368
  %370 = load ptr, ptr %22, align 8, !tbaa !5
  %371 = load ptr, ptr %28, align 8, !tbaa !5
  %372 = load i64, ptr %53, align 8, !tbaa !9
  %373 = getelementptr inbounds double, ptr %371, i64 %372
  %374 = load ptr, ptr %28, align 8, !tbaa !5
  %375 = load i64, ptr %54, align 8, !tbaa !9
  %376 = getelementptr inbounds double, ptr %374, i64 %375
  %377 = call i32 @dgehrd_(ptr noundef %366, ptr noundef %45, ptr noundef %44, ptr noundef %369, ptr noundef %370, ptr noundef %373, ptr noundef %376, ptr noundef %36, ptr noundef %52)
  %378 = load i64, ptr %70, align 8, !tbaa !9
  %379 = icmp ne i64 %378, 0
  br i1 %379, label %380, label %409

380:                                              ; preds = %343
  %381 = load ptr, ptr %20, align 8, !tbaa !5
  %382 = load ptr, ptr %20, align 8, !tbaa !5
  %383 = load ptr, ptr %21, align 8, !tbaa !5
  %384 = load i64, ptr %33, align 8, !tbaa !9
  %385 = getelementptr inbounds double, ptr %383, i64 %384
  %386 = load ptr, ptr %22, align 8, !tbaa !5
  %387 = load ptr, ptr %26, align 8, !tbaa !5
  %388 = load i64, ptr %35, align 8, !tbaa !9
  %389 = getelementptr inbounds double, ptr %387, i64 %388
  %390 = load ptr, ptr %27, align 8, !tbaa !5
  %391 = call i32 @dlacpy_(ptr noundef @.str.10, ptr noundef %381, ptr noundef %382, ptr noundef %385, ptr noundef %386, ptr noundef %389, ptr noundef %390)
  %392 = load ptr, ptr %29, align 8, !tbaa !5
  %393 = load i64, ptr %392, align 8, !tbaa !9
  %394 = load i64, ptr %54, align 8, !tbaa !9
  %395 = sub nsw i64 %393, %394
  %396 = add nsw i64 %395, 1
  store i64 %396, ptr %36, align 8, !tbaa !9
  %397 = load ptr, ptr %20, align 8, !tbaa !5
  %398 = load ptr, ptr %26, align 8, !tbaa !5
  %399 = load i64, ptr %35, align 8, !tbaa !9
  %400 = getelementptr inbounds double, ptr %398, i64 %399
  %401 = load ptr, ptr %27, align 8, !tbaa !5
  %402 = load ptr, ptr %28, align 8, !tbaa !5
  %403 = load i64, ptr %53, align 8, !tbaa !9
  %404 = getelementptr inbounds double, ptr %402, i64 %403
  %405 = load ptr, ptr %28, align 8, !tbaa !5
  %406 = load i64, ptr %54, align 8, !tbaa !9
  %407 = getelementptr inbounds double, ptr %405, i64 %406
  %408 = call i32 @dorghr_(ptr noundef %397, ptr noundef %45, ptr noundef %44, ptr noundef %400, ptr noundef %401, ptr noundef %404, ptr noundef %407, ptr noundef %36, ptr noundef %52)
  br label %409

409:                                              ; preds = %380, %343
  %410 = load ptr, ptr %23, align 8, !tbaa !5
  store i64 0, ptr %410, align 8, !tbaa !9
  %411 = load i64, ptr %53, align 8, !tbaa !9
  store i64 %411, ptr %54, align 8, !tbaa !9
  %412 = load ptr, ptr %29, align 8, !tbaa !5
  %413 = load i64, ptr %412, align 8, !tbaa !9
  %414 = load i64, ptr %54, align 8, !tbaa !9
  %415 = sub nsw i64 %413, %414
  %416 = add nsw i64 %415, 1
  store i64 %416, ptr %36, align 8, !tbaa !9
  %417 = load ptr, ptr %17, align 8, !tbaa !5
  %418 = load ptr, ptr %20, align 8, !tbaa !5
  %419 = load ptr, ptr %21, align 8, !tbaa !5
  %420 = load i64, ptr %33, align 8, !tbaa !9
  %421 = getelementptr inbounds double, ptr %419, i64 %420
  %422 = load ptr, ptr %22, align 8, !tbaa !5
  %423 = load ptr, ptr %24, align 8, !tbaa !5
  %424 = getelementptr inbounds double, ptr %423, i64 1
  %425 = load ptr, ptr %25, align 8, !tbaa !5
  %426 = getelementptr inbounds double, ptr %425, i64 1
  %427 = load ptr, ptr %26, align 8, !tbaa !5
  %428 = load i64, ptr %35, align 8, !tbaa !9
  %429 = getelementptr inbounds double, ptr %427, i64 %428
  %430 = load ptr, ptr %27, align 8, !tbaa !5
  %431 = load ptr, ptr %28, align 8, !tbaa !5
  %432 = load i64, ptr %54, align 8, !tbaa !9
  %433 = getelementptr inbounds double, ptr %431, i64 %432
  %434 = call i32 @dhseqr_(ptr noundef @.str.1, ptr noundef %417, ptr noundef %418, ptr noundef %45, ptr noundef %44, ptr noundef %421, ptr noundef %422, ptr noundef %424, ptr noundef %426, ptr noundef %429, ptr noundef %430, ptr noundef %433, ptr noundef %36, ptr noundef %57)
  %435 = load i64, ptr %57, align 8, !tbaa !9
  %436 = icmp sgt i64 %435, 0
  br i1 %436, label %437, label %440

437:                                              ; preds = %409
  %438 = load i64, ptr %57, align 8, !tbaa !9
  %439 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 %438, ptr %439, align 8, !tbaa !9
  br label %440

440:                                              ; preds = %437, %409
  %441 = load i64, ptr %68, align 8, !tbaa !9
  %442 = icmp ne i64 %441, 0
  br i1 %442, label %443, label %520

443:                                              ; preds = %440
  %444 = load ptr, ptr %31, align 8, !tbaa !5
  %445 = load i64, ptr %444, align 8, !tbaa !9
  %446 = icmp eq i64 %445, 0
  br i1 %446, label %447, label %520

447:                                              ; preds = %443
  %448 = load i64, ptr %60, align 8, !tbaa !9
  %449 = icmp ne i64 %448, 0
  br i1 %449, label %450, label %461

450:                                              ; preds = %447
  %451 = load ptr, ptr %20, align 8, !tbaa !5
  %452 = load ptr, ptr %24, align 8, !tbaa !5
  %453 = getelementptr inbounds double, ptr %452, i64 1
  %454 = load ptr, ptr %20, align 8, !tbaa !5
  %455 = call i32 @dlascl_(ptr noundef @.str.9, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %61, ptr noundef %50, ptr noundef %451, ptr noundef @c__1, ptr noundef %453, ptr noundef %454, ptr noundef %52)
  %456 = load ptr, ptr %20, align 8, !tbaa !5
  %457 = load ptr, ptr %25, align 8, !tbaa !5
  %458 = getelementptr inbounds double, ptr %457, i64 1
  %459 = load ptr, ptr %20, align 8, !tbaa !5
  %460 = call i32 @dlascl_(ptr noundef @.str.9, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %61, ptr noundef %50, ptr noundef %456, ptr noundef @c__1, ptr noundef %458, ptr noundef %459, ptr noundef %52)
  br label %461

461:                                              ; preds = %450, %447
  %462 = load ptr, ptr %20, align 8, !tbaa !5
  %463 = load i64, ptr %462, align 8, !tbaa !9
  store i64 %463, ptr %36, align 8, !tbaa !9
  store i64 1, ptr %39, align 8, !tbaa !9
  br label %464

464:                                              ; preds = %480, %461
  %465 = load i64, ptr %39, align 8, !tbaa !9
  %466 = load i64, ptr %36, align 8, !tbaa !9
  %467 = icmp sle i64 %465, %466
  br i1 %467, label %468, label %483

468:                                              ; preds = %464
  %469 = load ptr, ptr %19, align 8, !tbaa !5
  %470 = load ptr, ptr %24, align 8, !tbaa !5
  %471 = load i64, ptr %39, align 8, !tbaa !9
  %472 = getelementptr inbounds double, ptr %470, i64 %471
  %473 = load ptr, ptr %25, align 8, !tbaa !5
  %474 = load i64, ptr %39, align 8, !tbaa !9
  %475 = getelementptr inbounds double, ptr %473, i64 %474
  %476 = call i64 (ptr, ptr, ...) %469(ptr noundef %472, ptr noundef %475)
  %477 = load ptr, ptr %30, align 8, !tbaa !5
  %478 = load i64, ptr %39, align 8, !tbaa !9
  %479 = getelementptr inbounds i64, ptr %477, i64 %478
  store i64 %476, ptr %479, align 8, !tbaa !9
  br label %480

480:                                              ; preds = %468
  %481 = load i64, ptr %39, align 8, !tbaa !9
  %482 = add nsw i64 %481, 1
  store i64 %482, ptr %39, align 8, !tbaa !9
  br label %464, !llvm.loop !13

483:                                              ; preds = %464
  %484 = load ptr, ptr %29, align 8, !tbaa !5
  %485 = load i64, ptr %484, align 8, !tbaa !9
  %486 = load i64, ptr %54, align 8, !tbaa !9
  %487 = sub nsw i64 %485, %486
  %488 = add nsw i64 %487, 1
  store i64 %488, ptr %36, align 8, !tbaa !9
  %489 = load ptr, ptr %17, align 8, !tbaa !5
  %490 = load ptr, ptr %30, align 8, !tbaa !5
  %491 = getelementptr inbounds i64, ptr %490, i64 1
  %492 = load ptr, ptr %20, align 8, !tbaa !5
  %493 = load ptr, ptr %21, align 8, !tbaa !5
  %494 = load i64, ptr %33, align 8, !tbaa !9
  %495 = getelementptr inbounds double, ptr %493, i64 %494
  %496 = load ptr, ptr %22, align 8, !tbaa !5
  %497 = load ptr, ptr %26, align 8, !tbaa !5
  %498 = load i64, ptr %35, align 8, !tbaa !9
  %499 = getelementptr inbounds double, ptr %497, i64 %498
  %500 = load ptr, ptr %27, align 8, !tbaa !5
  %501 = load ptr, ptr %24, align 8, !tbaa !5
  %502 = getelementptr inbounds double, ptr %501, i64 1
  %503 = load ptr, ptr %25, align 8, !tbaa !5
  %504 = getelementptr inbounds double, ptr %503, i64 1
  %505 = load ptr, ptr %23, align 8, !tbaa !5
  %506 = load ptr, ptr %28, align 8, !tbaa !5
  %507 = load i64, ptr %54, align 8, !tbaa !9
  %508 = getelementptr inbounds double, ptr %506, i64 %507
  %509 = getelementptr inbounds [1 x i64], ptr %51, i64 0, i64 0
  %510 = call i32 @dtrsen_(ptr noundef @.str.2, ptr noundef %489, ptr noundef %491, ptr noundef %492, ptr noundef %495, ptr noundef %496, ptr noundef %499, ptr noundef %500, ptr noundef %502, ptr noundef %504, ptr noundef %505, ptr noundef %40, ptr noundef %48, ptr noundef %508, ptr noundef %36, ptr noundef %509, ptr noundef @c__1, ptr noundef %56)
  %511 = load i64, ptr %56, align 8, !tbaa !9
  %512 = icmp sgt i64 %511, 0
  br i1 %512, label %513, label %519

513:                                              ; preds = %483
  %514 = load ptr, ptr %20, align 8, !tbaa !5
  %515 = load i64, ptr %514, align 8, !tbaa !9
  %516 = load i64, ptr %56, align 8, !tbaa !9
  %517 = add nsw i64 %515, %516
  %518 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 %517, ptr %518, align 8, !tbaa !9
  br label %519

519:                                              ; preds = %513, %483
  br label %520

520:                                              ; preds = %519, %443, %440
  %521 = load i64, ptr %70, align 8, !tbaa !9
  %522 = icmp ne i64 %521, 0
  br i1 %522, label %523, label %534

523:                                              ; preds = %520
  %524 = load ptr, ptr %20, align 8, !tbaa !5
  %525 = load ptr, ptr %28, align 8, !tbaa !5
  %526 = load i64, ptr %49, align 8, !tbaa !9
  %527 = getelementptr inbounds double, ptr %525, i64 %526
  %528 = load ptr, ptr %20, align 8, !tbaa !5
  %529 = load ptr, ptr %26, align 8, !tbaa !5
  %530 = load i64, ptr %35, align 8, !tbaa !9
  %531 = getelementptr inbounds double, ptr %529, i64 %530
  %532 = load ptr, ptr %27, align 8, !tbaa !5
  %533 = call i32 @dgebak_(ptr noundef @.str.7, ptr noundef @.str.11, ptr noundef %524, ptr noundef %45, ptr noundef %44, ptr noundef %527, ptr noundef %528, ptr noundef %531, ptr noundef %532, ptr noundef %52)
  br label %534

534:                                              ; preds = %523, %520
  %535 = load i64, ptr %60, align 8, !tbaa !9
  %536 = icmp ne i64 %535, 0
  br i1 %536, label %537, label %791

537:                                              ; preds = %534
  %538 = load ptr, ptr %20, align 8, !tbaa !5
  %539 = load ptr, ptr %20, align 8, !tbaa !5
  %540 = load ptr, ptr %21, align 8, !tbaa !5
  %541 = load i64, ptr %33, align 8, !tbaa !9
  %542 = getelementptr inbounds double, ptr %540, i64 %541
  %543 = load ptr, ptr %22, align 8, !tbaa !5
  %544 = call i32 @dlascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %61, ptr noundef %50, ptr noundef %538, ptr noundef %539, ptr noundef %542, ptr noundef %543, ptr noundef %52)
  %545 = load ptr, ptr %22, align 8, !tbaa !5
  %546 = load i64, ptr %545, align 8, !tbaa !9
  %547 = add nsw i64 %546, 1
  store i64 %547, ptr %36, align 8, !tbaa !9
  %548 = load ptr, ptr %20, align 8, !tbaa !5
  %549 = load ptr, ptr %21, align 8, !tbaa !5
  %550 = load i64, ptr %33, align 8, !tbaa !9
  %551 = getelementptr inbounds double, ptr %549, i64 %550
  %552 = load ptr, ptr %24, align 8, !tbaa !5
  %553 = getelementptr inbounds double, ptr %552, i64 1
  %554 = call i32 @f2c_dcopy(ptr noundef %548, ptr noundef %551, ptr noundef %36, ptr noundef %553, ptr noundef @c__1)
  %555 = load double, ptr %61, align 8, !tbaa !11
  %556 = load double, ptr %66, align 8, !tbaa !11
  %557 = fcmp oeq double %555, %556
  br i1 %557, label %558, label %770

558:                                              ; preds = %537
  %559 = load i64, ptr %57, align 8, !tbaa !9
  %560 = icmp sgt i64 %559, 0
  br i1 %560, label %561, label %580

561:                                              ; preds = %558
  %562 = load i64, ptr %57, align 8, !tbaa !9
  %563 = add nsw i64 %562, 1
  store i64 %563, ptr %41, align 8, !tbaa !9
  %564 = load i64, ptr %44, align 8, !tbaa !9
  %565 = sub nsw i64 %564, 1
  store i64 %565, ptr %42, align 8, !tbaa !9
  %566 = load i64, ptr %45, align 8, !tbaa !9
  %567 = sub nsw i64 %566, 1
  store i64 %567, ptr %36, align 8, !tbaa !9
  %568 = load i64, ptr %45, align 8, !tbaa !9
  %569 = sub nsw i64 %568, 1
  store i64 %569, ptr %38, align 8, !tbaa !9
  %570 = load i64, ptr %38, align 8, !tbaa !9
  %571 = icmp sge i64 %570, 1
  br i1 %571, label %572, label %574

572:                                              ; preds = %561
  %573 = load i64, ptr %38, align 8, !tbaa !9
  br label %575

574:                                              ; preds = %561
  br label %575

575:                                              ; preds = %574, %572
  %576 = phi i64 [ %573, %572 ], [ 1, %574 ]
  store i64 %576, ptr %37, align 8, !tbaa !9
  %577 = load ptr, ptr %25, align 8, !tbaa !5
  %578 = getelementptr inbounds double, ptr %577, i64 1
  %579 = call i32 @dlascl_(ptr noundef @.str.9, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %61, ptr noundef %50, ptr noundef %36, ptr noundef @c__1, ptr noundef %578, ptr noundef %37, ptr noundef %52)
  br label %592

580:                                              ; preds = %558
  %581 = load i64, ptr %68, align 8, !tbaa !9
  %582 = icmp ne i64 %581, 0
  br i1 %582, label %583, label %587

583:                                              ; preds = %580
  store i64 1, ptr %41, align 8, !tbaa !9
  %584 = load ptr, ptr %20, align 8, !tbaa !5
  %585 = load i64, ptr %584, align 8, !tbaa !9
  %586 = sub nsw i64 %585, 1
  store i64 %586, ptr %42, align 8, !tbaa !9
  br label %591

587:                                              ; preds = %580
  %588 = load i64, ptr %45, align 8, !tbaa !9
  store i64 %588, ptr %41, align 8, !tbaa !9
  %589 = load i64, ptr %44, align 8, !tbaa !9
  %590 = sub nsw i64 %589, 1
  store i64 %590, ptr %42, align 8, !tbaa !9
  br label %591

591:                                              ; preds = %587, %583
  br label %592

592:                                              ; preds = %591, %575
  %593 = load i64, ptr %41, align 8, !tbaa !9
  %594 = sub nsw i64 %593, 1
  store i64 %594, ptr %55, align 8, !tbaa !9
  %595 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %595, ptr %36, align 8, !tbaa !9
  %596 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %596, ptr %39, align 8, !tbaa !9
  br label %597

597:                                              ; preds = %766, %592
  %598 = load i64, ptr %39, align 8, !tbaa !9
  %599 = load i64, ptr %36, align 8, !tbaa !9
  %600 = icmp sle i64 %598, %599
  br i1 %600, label %601, label %769

601:                                              ; preds = %597
  %602 = load i64, ptr %39, align 8, !tbaa !9
  %603 = load i64, ptr %55, align 8, !tbaa !9
  %604 = icmp slt i64 %602, %603
  br i1 %604, label %605, label %606

605:                                              ; preds = %601
  br label %765

606:                                              ; preds = %601
  %607 = load ptr, ptr %25, align 8, !tbaa !5
  %608 = load i64, ptr %39, align 8, !tbaa !9
  %609 = getelementptr inbounds double, ptr %607, i64 %608
  %610 = load double, ptr %609, align 8, !tbaa !11
  %611 = fcmp oeq double %610, 0.000000e+00
  br i1 %611, label %612, label %615

612:                                              ; preds = %606
  %613 = load i64, ptr %39, align 8, !tbaa !9
  %614 = add nsw i64 %613, 1
  store i64 %614, ptr %55, align 8, !tbaa !9
  br label %764

615:                                              ; preds = %606
  %616 = load ptr, ptr %21, align 8, !tbaa !5
  %617 = load i64, ptr %39, align 8, !tbaa !9
  %618 = add nsw i64 %617, 1
  %619 = load i64, ptr %39, align 8, !tbaa !9
  %620 = load i64, ptr %32, align 8, !tbaa !9
  %621 = mul nsw i64 %619, %620
  %622 = add nsw i64 %618, %621
  %623 = getelementptr inbounds double, ptr %616, i64 %622
  %624 = load double, ptr %623, align 8, !tbaa !11
  %625 = fcmp oeq double %624, 0.000000e+00
  br i1 %625, label %626, label %634

626:                                              ; preds = %615
  %627 = load ptr, ptr %25, align 8, !tbaa !5
  %628 = load i64, ptr %39, align 8, !tbaa !9
  %629 = getelementptr inbounds double, ptr %627, i64 %628
  store double 0.000000e+00, ptr %629, align 8, !tbaa !11
  %630 = load ptr, ptr %25, align 8, !tbaa !5
  %631 = load i64, ptr %39, align 8, !tbaa !9
  %632 = add nsw i64 %631, 1
  %633 = getelementptr inbounds double, ptr %630, i64 %632
  store double 0.000000e+00, ptr %633, align 8, !tbaa !11
  br label %761

634:                                              ; preds = %615
  %635 = load ptr, ptr %21, align 8, !tbaa !5
  %636 = load i64, ptr %39, align 8, !tbaa !9
  %637 = add nsw i64 %636, 1
  %638 = load i64, ptr %39, align 8, !tbaa !9
  %639 = load i64, ptr %32, align 8, !tbaa !9
  %640 = mul nsw i64 %638, %639
  %641 = add nsw i64 %637, %640
  %642 = getelementptr inbounds double, ptr %635, i64 %641
  %643 = load double, ptr %642, align 8, !tbaa !11
  %644 = fcmp une double %643, 0.000000e+00
  br i1 %644, label %645, label %760

645:                                              ; preds = %634
  %646 = load ptr, ptr %21, align 8, !tbaa !5
  %647 = load i64, ptr %39, align 8, !tbaa !9
  %648 = load i64, ptr %39, align 8, !tbaa !9
  %649 = add nsw i64 %648, 1
  %650 = load i64, ptr %32, align 8, !tbaa !9
  %651 = mul nsw i64 %649, %650
  %652 = add nsw i64 %647, %651
  %653 = getelementptr inbounds double, ptr %646, i64 %652
  %654 = load double, ptr %653, align 8, !tbaa !11
  %655 = fcmp oeq double %654, 0.000000e+00
  br i1 %655, label %656, label %760

656:                                              ; preds = %645
  %657 = load ptr, ptr %25, align 8, !tbaa !5
  %658 = load i64, ptr %39, align 8, !tbaa !9
  %659 = getelementptr inbounds double, ptr %657, i64 %658
  store double 0.000000e+00, ptr %659, align 8, !tbaa !11
  %660 = load ptr, ptr %25, align 8, !tbaa !5
  %661 = load i64, ptr %39, align 8, !tbaa !9
  %662 = add nsw i64 %661, 1
  %663 = getelementptr inbounds double, ptr %660, i64 %662
  store double 0.000000e+00, ptr %663, align 8, !tbaa !11
  %664 = load i64, ptr %39, align 8, !tbaa !9
  %665 = icmp sgt i64 %664, 1
  br i1 %665, label %666, label %683

666:                                              ; preds = %656
  %667 = load i64, ptr %39, align 8, !tbaa !9
  %668 = sub nsw i64 %667, 1
  store i64 %668, ptr %37, align 8, !tbaa !9
  %669 = load ptr, ptr %21, align 8, !tbaa !5
  %670 = load i64, ptr %39, align 8, !tbaa !9
  %671 = load i64, ptr %32, align 8, !tbaa !9
  %672 = mul nsw i64 %670, %671
  %673 = add nsw i64 %672, 1
  %674 = getelementptr inbounds double, ptr %669, i64 %673
  %675 = load ptr, ptr %21, align 8, !tbaa !5
  %676 = load i64, ptr %39, align 8, !tbaa !9
  %677 = add nsw i64 %676, 1
  %678 = load i64, ptr %32, align 8, !tbaa !9
  %679 = mul nsw i64 %677, %678
  %680 = add nsw i64 %679, 1
  %681 = getelementptr inbounds double, ptr %675, i64 %680
  %682 = call i32 @f2c_dswap(ptr noundef %37, ptr noundef %674, ptr noundef @c__1, ptr noundef %681, ptr noundef @c__1)
  br label %683

683:                                              ; preds = %666, %656
  %684 = load ptr, ptr %20, align 8, !tbaa !5
  %685 = load i64, ptr %684, align 8, !tbaa !9
  %686 = load i64, ptr %39, align 8, !tbaa !9
  %687 = add nsw i64 %686, 1
  %688 = icmp sgt i64 %685, %687
  br i1 %688, label %689, label %715

689:                                              ; preds = %683
  %690 = load ptr, ptr %20, align 8, !tbaa !5
  %691 = load i64, ptr %690, align 8, !tbaa !9
  %692 = load i64, ptr %39, align 8, !tbaa !9
  %693 = sub nsw i64 %691, %692
  %694 = sub nsw i64 %693, 1
  store i64 %694, ptr %37, align 8, !tbaa !9
  %695 = load ptr, ptr %21, align 8, !tbaa !5
  %696 = load i64, ptr %39, align 8, !tbaa !9
  %697 = load i64, ptr %39, align 8, !tbaa !9
  %698 = add nsw i64 %697, 2
  %699 = load i64, ptr %32, align 8, !tbaa !9
  %700 = mul nsw i64 %698, %699
  %701 = add nsw i64 %696, %700
  %702 = getelementptr inbounds double, ptr %695, i64 %701
  %703 = load ptr, ptr %22, align 8, !tbaa !5
  %704 = load ptr, ptr %21, align 8, !tbaa !5
  %705 = load i64, ptr %39, align 8, !tbaa !9
  %706 = add nsw i64 %705, 1
  %707 = load i64, ptr %39, align 8, !tbaa !9
  %708 = add nsw i64 %707, 2
  %709 = load i64, ptr %32, align 8, !tbaa !9
  %710 = mul nsw i64 %708, %709
  %711 = add nsw i64 %706, %710
  %712 = getelementptr inbounds double, ptr %704, i64 %711
  %713 = load ptr, ptr %22, align 8, !tbaa !5
  %714 = call i32 @f2c_dswap(ptr noundef %37, ptr noundef %702, ptr noundef %703, ptr noundef %712, ptr noundef %713)
  br label %715

715:                                              ; preds = %689, %683
  %716 = load i64, ptr %70, align 8, !tbaa !9
  %717 = icmp ne i64 %716, 0
  br i1 %717, label %718, label %734

718:                                              ; preds = %715
  %719 = load ptr, ptr %20, align 8, !tbaa !5
  %720 = load ptr, ptr %26, align 8, !tbaa !5
  %721 = load i64, ptr %39, align 8, !tbaa !9
  %722 = load i64, ptr %34, align 8, !tbaa !9
  %723 = mul nsw i64 %721, %722
  %724 = add nsw i64 %723, 1
  %725 = getelementptr inbounds double, ptr %720, i64 %724
  %726 = load ptr, ptr %26, align 8, !tbaa !5
  %727 = load i64, ptr %39, align 8, !tbaa !9
  %728 = add nsw i64 %727, 1
  %729 = load i64, ptr %34, align 8, !tbaa !9
  %730 = mul nsw i64 %728, %729
  %731 = add nsw i64 %730, 1
  %732 = getelementptr inbounds double, ptr %726, i64 %731
  %733 = call i32 @f2c_dswap(ptr noundef %719, ptr noundef %725, ptr noundef @c__1, ptr noundef %732, ptr noundef @c__1)
  br label %734

734:                                              ; preds = %718, %715
  %735 = load ptr, ptr %21, align 8, !tbaa !5
  %736 = load i64, ptr %39, align 8, !tbaa !9
  %737 = add nsw i64 %736, 1
  %738 = load i64, ptr %39, align 8, !tbaa !9
  %739 = load i64, ptr %32, align 8, !tbaa !9
  %740 = mul nsw i64 %738, %739
  %741 = add nsw i64 %737, %740
  %742 = getelementptr inbounds double, ptr %735, i64 %741
  %743 = load double, ptr %742, align 8, !tbaa !11
  %744 = load ptr, ptr %21, align 8, !tbaa !5
  %745 = load i64, ptr %39, align 8, !tbaa !9
  %746 = load i64, ptr %39, align 8, !tbaa !9
  %747 = add nsw i64 %746, 1
  %748 = load i64, ptr %32, align 8, !tbaa !9
  %749 = mul nsw i64 %747, %748
  %750 = add nsw i64 %745, %749
  %751 = getelementptr inbounds double, ptr %744, i64 %750
  store double %743, ptr %751, align 8, !tbaa !11
  %752 = load ptr, ptr %21, align 8, !tbaa !5
  %753 = load i64, ptr %39, align 8, !tbaa !9
  %754 = add nsw i64 %753, 1
  %755 = load i64, ptr %39, align 8, !tbaa !9
  %756 = load i64, ptr %32, align 8, !tbaa !9
  %757 = mul nsw i64 %755, %756
  %758 = add nsw i64 %754, %757
  %759 = getelementptr inbounds double, ptr %752, i64 %758
  store double 0.000000e+00, ptr %759, align 8, !tbaa !11
  br label %760

760:                                              ; preds = %734, %645, %634
  br label %761

761:                                              ; preds = %760, %626
  %762 = load i64, ptr %39, align 8, !tbaa !9
  %763 = add nsw i64 %762, 2
  store i64 %763, ptr %55, align 8, !tbaa !9
  br label %764

764:                                              ; preds = %761, %612
  br label %765

765:                                              ; preds = %764, %605
  br label %766

766:                                              ; preds = %765
  %767 = load i64, ptr %39, align 8, !tbaa !9
  %768 = add nsw i64 %767, 1
  store i64 %768, ptr %39, align 8, !tbaa !9
  br label %597, !llvm.loop !15

769:                                              ; preds = %597
  br label %770

770:                                              ; preds = %769, %537
  %771 = load ptr, ptr %20, align 8, !tbaa !5
  %772 = load i64, ptr %771, align 8, !tbaa !9
  %773 = load i64, ptr %57, align 8, !tbaa !9
  %774 = sub nsw i64 %772, %773
  store i64 %774, ptr %36, align 8, !tbaa !9
  %775 = load ptr, ptr %20, align 8, !tbaa !5
  %776 = load i64, ptr %775, align 8, !tbaa !9
  %777 = load i64, ptr %57, align 8, !tbaa !9
  %778 = sub nsw i64 %776, %777
  store i64 %778, ptr %38, align 8, !tbaa !9
  %779 = load i64, ptr %38, align 8, !tbaa !9
  %780 = icmp sge i64 %779, 1
  br i1 %780, label %781, label %783

781:                                              ; preds = %770
  %782 = load i64, ptr %38, align 8, !tbaa !9
  br label %784

783:                                              ; preds = %770
  br label %784

784:                                              ; preds = %783, %781
  %785 = phi i64 [ %782, %781 ], [ 1, %783 ]
  store i64 %785, ptr %37, align 8, !tbaa !9
  %786 = load ptr, ptr %25, align 8, !tbaa !5
  %787 = load i64, ptr %57, align 8, !tbaa !9
  %788 = add nsw i64 %787, 1
  %789 = getelementptr inbounds double, ptr %786, i64 %788
  %790 = call i32 @dlascl_(ptr noundef @.str.9, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %61, ptr noundef %50, ptr noundef %36, ptr noundef @c__1, ptr noundef %789, ptr noundef %37, ptr noundef %52)
  br label %791

791:                                              ; preds = %784, %534
  %792 = load i64, ptr %68, align 8, !tbaa !9
  %793 = icmp ne i64 %792, 0
  br i1 %793, label %794, label %880

794:                                              ; preds = %791
  %795 = load ptr, ptr %31, align 8, !tbaa !5
  %796 = load i64, ptr %795, align 8, !tbaa !9
  %797 = icmp eq i64 %796, 0
  br i1 %797, label %798, label %880

798:                                              ; preds = %794
  store i64 1, ptr %63, align 8, !tbaa !9
  store i64 1, ptr %59, align 8, !tbaa !9
  %799 = load ptr, ptr %23, align 8, !tbaa !5
  store i64 0, ptr %799, align 8, !tbaa !9
  store i64 0, ptr %43, align 8, !tbaa !9
  %800 = load ptr, ptr %20, align 8, !tbaa !5
  %801 = load i64, ptr %800, align 8, !tbaa !9
  store i64 %801, ptr %36, align 8, !tbaa !9
  store i64 1, ptr %39, align 8, !tbaa !9
  br label %802

802:                                              ; preds = %876, %798
  %803 = load i64, ptr %39, align 8, !tbaa !9
  %804 = load i64, ptr %36, align 8, !tbaa !9
  %805 = icmp sle i64 %803, %804
  br i1 %805, label %806, label %879

806:                                              ; preds = %802
  %807 = load ptr, ptr %19, align 8, !tbaa !5
  %808 = load ptr, ptr %24, align 8, !tbaa !5
  %809 = load i64, ptr %39, align 8, !tbaa !9
  %810 = getelementptr inbounds double, ptr %808, i64 %809
  %811 = load ptr, ptr %25, align 8, !tbaa !5
  %812 = load i64, ptr %39, align 8, !tbaa !9
  %813 = getelementptr inbounds double, ptr %811, i64 %812
  %814 = call i64 (ptr, ptr, ...) %807(ptr noundef %810, ptr noundef %813)
  store i64 %814, ptr %58, align 8, !tbaa !9
  %815 = load ptr, ptr %25, align 8, !tbaa !5
  %816 = load i64, ptr %39, align 8, !tbaa !9
  %817 = getelementptr inbounds double, ptr %815, i64 %816
  %818 = load double, ptr %817, align 8, !tbaa !11
  %819 = fcmp oeq double %818, 0.000000e+00
  br i1 %819, label %820, label %839

820:                                              ; preds = %806
  %821 = load i64, ptr %58, align 8, !tbaa !9
  %822 = icmp ne i64 %821, 0
  br i1 %822, label %823, label %827

823:                                              ; preds = %820
  %824 = load ptr, ptr %23, align 8, !tbaa !5
  %825 = load i64, ptr %824, align 8, !tbaa !9
  %826 = add nsw i64 %825, 1
  store i64 %826, ptr %824, align 8, !tbaa !9
  br label %827

827:                                              ; preds = %823, %820
  store i64 0, ptr %43, align 8, !tbaa !9
  %828 = load i64, ptr %58, align 8, !tbaa !9
  %829 = icmp ne i64 %828, 0
  br i1 %829, label %830, label %838

830:                                              ; preds = %827
  %831 = load i64, ptr %63, align 8, !tbaa !9
  %832 = icmp ne i64 %831, 0
  br i1 %832, label %838, label %833

833:                                              ; preds = %830
  %834 = load ptr, ptr %20, align 8, !tbaa !5
  %835 = load i64, ptr %834, align 8, !tbaa !9
  %836 = add nsw i64 %835, 2
  %837 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 %836, ptr %837, align 8, !tbaa !9
  br label %838

838:                                              ; preds = %833, %830, %827
  br label %873

839:                                              ; preds = %806
  %840 = load i64, ptr %43, align 8, !tbaa !9
  %841 = icmp eq i64 %840, 1
  br i1 %841, label %842, label %871

842:                                              ; preds = %839
  %843 = load i64, ptr %58, align 8, !tbaa !9
  %844 = icmp ne i64 %843, 0
  br i1 %844, label %848, label %845

845:                                              ; preds = %842
  %846 = load i64, ptr %63, align 8, !tbaa !9
  %847 = icmp ne i64 %846, 0
  br label %848

848:                                              ; preds = %845, %842
  %849 = phi i1 [ true, %842 ], [ %847, %845 ]
  %850 = zext i1 %849 to i32
  %851 = sext i32 %850 to i64
  store i64 %851, ptr %58, align 8, !tbaa !9
  %852 = load i64, ptr %58, align 8, !tbaa !9
  store i64 %852, ptr %63, align 8, !tbaa !9
  %853 = load i64, ptr %58, align 8, !tbaa !9
  %854 = icmp ne i64 %853, 0
  br i1 %854, label %855, label %859

855:                                              ; preds = %848
  %856 = load ptr, ptr %23, align 8, !tbaa !5
  %857 = load i64, ptr %856, align 8, !tbaa !9
  %858 = add nsw i64 %857, 2
  store i64 %858, ptr %856, align 8, !tbaa !9
  br label %859

859:                                              ; preds = %855, %848
  store i64 -1, ptr %43, align 8, !tbaa !9
  %860 = load i64, ptr %58, align 8, !tbaa !9
  %861 = icmp ne i64 %860, 0
  br i1 %861, label %862, label %870

862:                                              ; preds = %859
  %863 = load i64, ptr %59, align 8, !tbaa !9
  %864 = icmp ne i64 %863, 0
  br i1 %864, label %870, label %865

865:                                              ; preds = %862
  %866 = load ptr, ptr %20, align 8, !tbaa !5
  %867 = load i64, ptr %866, align 8, !tbaa !9
  %868 = add nsw i64 %867, 2
  %869 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 %868, ptr %869, align 8, !tbaa !9
  br label %870

870:                                              ; preds = %865, %862, %859
  br label %872

871:                                              ; preds = %839
  store i64 1, ptr %43, align 8, !tbaa !9
  br label %872

872:                                              ; preds = %871, %870
  br label %873

873:                                              ; preds = %872, %838
  %874 = load i64, ptr %63, align 8, !tbaa !9
  store i64 %874, ptr %59, align 8, !tbaa !9
  %875 = load i64, ptr %58, align 8, !tbaa !9
  store i64 %875, ptr %63, align 8, !tbaa !9
  br label %876

876:                                              ; preds = %873
  %877 = load i64, ptr %39, align 8, !tbaa !9
  %878 = add nsw i64 %877, 1
  store i64 %878, ptr %39, align 8, !tbaa !9
  br label %802, !llvm.loop !16

879:                                              ; preds = %802
  br label %880

880:                                              ; preds = %879, %794, %791
  %881 = load i64, ptr %65, align 8, !tbaa !9
  %882 = sitofp i64 %881 to double
  %883 = load ptr, ptr %28, align 8, !tbaa !5
  %884 = getelementptr inbounds double, ptr %883, i64 1
  store double %882, ptr %884, align 8, !tbaa !11
  store i32 0, ptr %16, align 4
  store i32 1, ptr %71, align 4
  br label %885

885:                                              ; preds = %880, %295, %289, %281
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  %886 = load i32, ptr %16, align 4
  ret i32 %886
}

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

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

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

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

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

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

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

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

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

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

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

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


; 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
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.3 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@c__0 = external hidden global i64, align 8
@c_n1 = external hidden global i64, align 8
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [7 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 [2 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

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

44:                                               ; preds = %15
  %45 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #5
  %.not350 = icmp eq i64 %45, 0
  br i1 %.not350, label %.thread368.sink.split, label %46

46:                                               ; preds = %44, %15
  %.not351 = icmp eq i64 %43, 0
  br i1 %.not351, label %47, label %49

47:                                               ; preds = %46
  %48 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.2) #5
  %.not352 = icmp eq i64 %48, 0
  br i1 %.not352, label %.thread368.sink.split, label %49

49:                                               ; preds = %47, %46
  %50 = load i64, ptr %3, align 8, !tbaa !5
  %51 = icmp slt i64 %50, 0
  br i1 %51, label %.thread368.sink.split, label %52

52:                                               ; preds = %49
  %53 = load i64, ptr %5, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %50, i64 1)
  %54 = icmp slt i64 %53, %spec.select
  br i1 %54, label %.thread368.sink.split, label %55

55:                                               ; preds = %52
  %56 = load i64, ptr %10, align 8, !tbaa !5
  %57 = icmp slt i64 %56, 1
  %58 = icmp ult i64 %56, %50
  %or.cond383 = and i1 %.not, %58
  %or.cond385 = or i1 %57, %or.cond383
  br i1 %or.cond385, label %.thread368.sink.split, label %59

59:                                               ; preds = %55
  %.pr = load i64, ptr %14, align 8, !tbaa !5
  %60 = icmp eq i64 %.pr, 0
  br i1 %60, label %61, label %.thread368

61:                                               ; preds = %59
  %62 = icmp eq i64 %50, 0
  br i1 %62, label %87, label %63

63:                                               ; preds = %61
  %64 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull %3, ptr noundef nonnull @c__1, ptr noundef nonnull %3, ptr noundef nonnull @c__0) #5
  %65 = add i64 %64, 2
  %66 = mul i64 %65, %50
  %67 = load i64, ptr %3, align 8, !tbaa !5
  %68 = mul nsw i64 %67, 3
  %69 = call i32 @dhseqr_(ptr noundef nonnull @.str.1, ptr noundef %0, ptr noundef nonnull %3, ptr noundef nonnull @c__1, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull @c_n1, ptr noundef nonnull %27) #5
  %70 = load double, ptr %11, align 8, !tbaa !9
  %71 = fptosi double %70 to i64
  store i64 %66, ptr %16, align 8, !tbaa !5
  %72 = load i64, ptr %3, align 8, !tbaa !5
  br i1 %.not, label %76, label %73

73:                                               ; preds = %63
  %74 = add nsw i64 %72, %71
  store i64 %74, ptr %17, align 8, !tbaa !5
  %75 = call i64 @llvm.smax.i64(i64 %66, i64 %74)
  br label %87

76:                                               ; preds = %63
  %77 = shl i64 %72, 1
  %78 = add nsw i64 %72, -1
  %79 = call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.4, ptr noundef nonnull %3, ptr noundef nonnull @c__1, ptr noundef nonnull %3, ptr noundef nonnull @c_n1) #5
  %80 = mul nsw i64 %78, %79
  %81 = add nsw i64 %80, %77
  %82 = load i64, ptr %16, align 8
  %83 = call i64 @llvm.smax.i64(i64 %82, i64 %81)
  store i64 %83, ptr %16, align 8, !tbaa !5
  %84 = load i64, ptr %3, align 8, !tbaa !5
  %85 = add nsw i64 %84, %71
  store i64 %85, ptr %17, align 8, !tbaa !5
  %86 = call i64 @llvm.smax.i64(i64 %83, i64 %85)
  br label %87

87:                                               ; preds = %61, %73, %76
  %88 = phi i64 [ %84, %76 ], [ %72, %73 ], [ 0, %61 ]
  %.0322 = phi i64 [ %68, %76 ], [ %68, %73 ], [ 1, %61 ]
  %.0321 = phi i64 [ %86, %76 ], [ %75, %73 ], [ 1, %61 ]
  %89 = sitofp i64 %.0321 to double
  store double %89, ptr %11, align 8, !tbaa !9
  %90 = load i64, ptr %12, align 8, !tbaa !5
  %91 = icmp sge i64 %90, %.0322
  %or.cond = select i1 %91, i1 true, i1 %41
  br i1 %or.cond, label %.thread, label %.thread368.sink.split

.thread:                                          ; preds = %87
  %.pr365.pr = load i64, ptr %14, align 8, !tbaa !5
  %.not356 = icmp eq i64 %.pr365.pr, 0
  br i1 %.not356, label %95, label %.thread368

.thread368.sink.split:                            ; preds = %87, %55, %52, %49, %47, %44
  %.sink = phi i64 [ -1, %44 ], [ -2, %47 ], [ -4, %49 ], [ -6, %52 ], [ -11, %55 ], [ -13, %87 ]
  store i64 %.sink, ptr %14, align 8, !tbaa !5
  br label %.thread368

.thread368:                                       ; preds = %.thread368.sink.split, %59, %.thread
  %92 = phi i64 [ %.pr365.pr, %.thread ], [ %.pr, %59 ], [ %.sink, %.thread368.sink.split ]
  %93 = sub nsw i64 0, %92
  store i64 %93, ptr %16, align 8, !tbaa !5
  %94 = call i32 @xerbla_(ptr noundef nonnull @.str.6, ptr noundef nonnull %16) #5
  br label %276

95:                                               ; preds = %.thread
  br i1 %41, label %276, label %96

96:                                               ; preds = %95
  %97 = icmp eq i64 %88, 0
  br i1 %97, label %98, label %99

98:                                               ; preds = %96
  store i64 0, ptr %6, align 8, !tbaa !5
  br label %276

99:                                               ; preds = %96
  %100 = call double @dlamch_(ptr noundef nonnull @.str.7) #5
  %101 = call double @dlamch_(ptr noundef nonnull @.str.1) #5
  store double %101, ptr %30, align 8, !tbaa !9
  %102 = fdiv double 1.000000e+00, %101
  store double %102, ptr %29, align 8, !tbaa !9
  %103 = call i32 @dlabad_(ptr noundef nonnull %30, ptr noundef nonnull %29) #5
  %104 = load double, ptr %30, align 8, !tbaa !9
  %105 = call double @sqrt(double noundef %104) #5
  %106 = fdiv double %105, %100
  store double %106, ptr %30, align 8, !tbaa !9
  %107 = fdiv double 1.000000e+00, %106
  store double %107, ptr %29, align 8, !tbaa !9
  %108 = call double @dlange_(ptr noundef nonnull @.str.8, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef nonnull %21) #5
  store double %108, ptr %23, align 8, !tbaa !9
  %109 = fcmp ogt double %108, 0.000000e+00
  %110 = load double, ptr %30, align 8
  %111 = fcmp olt double %108, %110
  %or.cond387 = select i1 %109, i1 %111, i1 false
  br i1 %or.cond387, label %115, label %112

112:                                              ; preds = %99
  %113 = load double, ptr %29, align 8, !tbaa !9
  %114 = fcmp ogt double %108, %113
  br i1 %114, label %115, label %117

115:                                              ; preds = %99, %112
  %storemerge = phi double [ %113, %112 ], [ %110, %99 ]
  store double %storemerge, ptr %28, align 8, !tbaa !9
  %116 = call i32 @dlascl_(ptr noundef nonnull @.str.9, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %23, ptr noundef nonnull %28, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef nonnull %25) #5
  br label %117

117:                                              ; preds = %112, %115
  %.not357375 = phi i1 [ false, %115 ], [ true, %112 ]
  %118 = call i32 @dgebal_(ptr noundef nonnull @.str.7, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef nonnull %20, ptr noundef nonnull %19, ptr noundef nonnull %11, ptr noundef nonnull %25) #5
  %119 = load i64, ptr %3, align 8, !tbaa !5
  %reass.add = shl i64 %119, 1
  %120 = or disjoint i64 %reass.add, 1
  %121 = load i64, ptr %12, align 8, !tbaa !5
  %122 = add i64 %121, 1
  %123 = sub i64 %122, %120
  store i64 %123, ptr %16, align 8, !tbaa !5
  %124 = getelementptr double, ptr %11, i64 %119
  %125 = getelementptr double, ptr %11, i64 %reass.add
  %126 = call i32 @dgehrd_(ptr noundef nonnull %3, ptr noundef nonnull %20, ptr noundef nonnull %19, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %124, ptr noundef nonnull %125, ptr noundef nonnull %16, ptr noundef nonnull %25) #5
  br i1 %.not, label %127, label %132

127:                                              ; preds = %117
  %128 = call i32 @dlacpy_(ptr noundef nonnull @.str.10, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %9, ptr noundef nonnull %10) #5
  %129 = load i64, ptr %12, align 8, !tbaa !5
  %reass.sub = sub i64 %129, %120
  %130 = add i64 %reass.sub, 1
  store i64 %130, ptr %16, align 8, !tbaa !5
  %131 = call i32 @dorghr_(ptr noundef nonnull %3, ptr noundef nonnull %20, ptr noundef nonnull %19, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %124, ptr noundef nonnull %125, ptr noundef nonnull %16, ptr noundef nonnull %25) #5
  br label %132

132:                                              ; preds = %127, %117
  store i64 0, ptr %6, align 8, !tbaa !5
  %133 = load i64, ptr %12, align 8, !tbaa !5
  %134 = sub i64 %133, %119
  store i64 %134, ptr %16, align 8, !tbaa !5
  %135 = call i32 @dhseqr_(ptr noundef nonnull @.str.1, ptr noundef %0, ptr noundef nonnull %3, ptr noundef nonnull %20, ptr noundef nonnull %19, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %124, ptr noundef nonnull %16, ptr noundef nonnull %27) #5
  %136 = load i64, ptr %27, align 8, !tbaa !5
  %137 = icmp sgt i64 %136, 0
  br i1 %137, label %138, label %139

138:                                              ; preds = %132
  store i64 %136, ptr %14, align 8, !tbaa !5
  br label %139

139:                                              ; preds = %138, %132
  br i1 %.not351, label %163, label %140

140:                                              ; preds = %139
  %141 = load i64, ptr %14, align 8, !tbaa !5
  %142 = icmp eq i64 %141, 0
  br i1 %142, label %143, label %163

143:                                              ; preds = %140
  br i1 %.not357375, label %147, label %144

144:                                              ; preds = %143
  %145 = call i32 @dlascl_(ptr noundef nonnull @.str.9, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %28, ptr noundef nonnull %23, ptr noundef nonnull %3, ptr noundef nonnull @c__1, ptr noundef %7, ptr noundef nonnull %3, ptr noundef nonnull %25) #5
  %146 = call i32 @dlascl_(ptr noundef nonnull @.str.9, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %28, ptr noundef nonnull %23, ptr noundef nonnull %3, ptr noundef nonnull @c__1, ptr noundef %8, ptr noundef nonnull %3, ptr noundef nonnull %25) #5
  br label %147

147:                                              ; preds = %144, %143
  %148 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %148, ptr %16, align 8, !tbaa !5
  %.not359390 = icmp slt i64 %148, 1
  br i1 %.not359390, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %147, %.lr.ph
  %.0334391 = phi i64 [ %153, %.lr.ph ], [ 1, %147 ]
  %149 = getelementptr inbounds double, ptr %34, i64 %.0334391
  %150 = getelementptr inbounds double, ptr %35, i64 %.0334391
  %151 = call i64 (ptr, ptr, ...) %2(ptr noundef nonnull %149, ptr noundef nonnull %150) #5
  %152 = getelementptr inbounds i64, ptr %39, i64 %.0334391
  store i64 %151, ptr %152, align 8, !tbaa !5
  %153 = add nuw nsw i64 %.0334391, 1
  %154 = load i64, ptr %16, align 8, !tbaa !5
  %.not359.not = icmp slt i64 %.0334391, %154
  br i1 %.not359.not, label %.lr.ph, label %._crit_edge, !llvm.loop !11

._crit_edge:                                      ; preds = %.lr.ph, %147
  %155 = load i64, ptr %12, align 8, !tbaa !5
  %156 = sub i64 %155, %119
  store i64 %156, ptr %16, align 8, !tbaa !5
  %157 = call i32 @dtrsen_(ptr noundef nonnull @.str.2, ptr noundef %0, ptr noundef %13, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %7, ptr noundef %8, ptr noundef nonnull %6, ptr noundef nonnull %18, ptr noundef nonnull %22, ptr noundef %124, ptr noundef nonnull %16, ptr noundef nonnull %24, ptr noundef nonnull @c__1, ptr noundef nonnull %26) #5
  %158 = load i64, ptr %26, align 8, !tbaa !5
  %159 = icmp sgt i64 %158, 0
  br i1 %159, label %160, label %163

160:                                              ; preds = %._crit_edge
  %161 = load i64, ptr %3, align 8, !tbaa !5
  %162 = add nsw i64 %161, %158
  store i64 %162, ptr %14, align 8, !tbaa !5
  br label %163

163:                                              ; preds = %._crit_edge, %160, %140, %139
  br i1 %.not, label %164, label %166

164:                                              ; preds = %163
  %165 = call i32 @dgebak_(ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.11, ptr noundef nonnull %3, ptr noundef nonnull %20, ptr noundef nonnull %19, ptr noundef nonnull %11, ptr noundef nonnull %3, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %25) #5
  br label %166

166:                                              ; preds = %164, %163
  br i1 %.not357375, label %247, label %167

167:                                              ; preds = %166
  %168 = call i32 @dlascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %28, ptr noundef nonnull %23, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef nonnull %25) #5
  %169 = load i64, ptr %5, align 8, !tbaa !5
  %170 = add nsw i64 %169, 1
  store i64 %170, ptr %16, align 8, !tbaa !5
  %171 = call i32 @f2c_dcopy(ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %16, ptr noundef %7, ptr noundef nonnull @c__1) #5
  %172 = load double, ptr %28, align 8, !tbaa !9
  %173 = load double, ptr %30, align 8, !tbaa !9
  %174 = fcmp oeq double %172, %173
  br i1 %174, label %175, label %.loopexit389

175:                                              ; preds = %167
  %176 = load i64, ptr %27, align 8, !tbaa !5
  %177 = icmp sgt i64 %176, 0
  br i1 %177, label %178, label %186

178:                                              ; preds = %175
  %179 = add nuw nsw i64 %176, 1
  %180 = load i64, ptr %19, align 8, !tbaa !5
  %181 = load i64, ptr %20, align 8, !tbaa !5
  %182 = add nsw i64 %181, -1
  store i64 %182, ptr %16, align 8, !tbaa !5
  %183 = icmp sgt i64 %181, 1
  %184 = select i1 %183, i64 %182, i64 1
  store i64 %184, ptr %17, align 8, !tbaa !5
  %185 = call i32 @dlascl_(ptr noundef nonnull @.str.9, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %28, ptr noundef nonnull %23, ptr noundef nonnull %16, ptr noundef nonnull @c__1, ptr noundef %8, ptr noundef nonnull %17, ptr noundef nonnull %25) #5
  br label %192

186:                                              ; preds = %175
  br i1 %.not351, label %189, label %187

187:                                              ; preds = %186
  %188 = load i64, ptr %3, align 8, !tbaa !5
  br label %192

189:                                              ; preds = %186
  %190 = load i64, ptr %20, align 8, !tbaa !5
  %191 = load i64, ptr %19, align 8, !tbaa !5
  br label %192

192:                                              ; preds = %187, %189, %178
  %.0333 = phi i64 [ %179, %178 ], [ 1, %187 ], [ %190, %189 ]
  %.0332.in = phi i64 [ %180, %178 ], [ %188, %187 ], [ %191, %189 ]
  %.0332 = add nsw i64 %.0332.in, -1
  store i64 %.0332, ptr %16, align 8, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %33, i64 8
  %invariant.gep394 = getelementptr i8, ptr %38, i64 8
  %.not360398.not = icmp slt i64 %.0333, %.0332.in
  br i1 %.not360398.not, label %.lr.ph404.preheader, label %.loopexit389

.lr.ph404.preheader:                              ; preds = %192
  %193 = add nsw i64 %.0333, -1
  br label %.lr.ph404

.lr.ph404:                                        ; preds = %.lr.ph404.preheader, %239
  %.pre412 = phi i64 [ %.pre413, %239 ], [ %.0332, %.lr.ph404.preheader ]
  %194 = phi i64 [ %240, %239 ], [ %.0332, %.lr.ph404.preheader ]
  %.0328402 = phi i64 [ %.1329, %239 ], [ %193, %.lr.ph404.preheader ]
  %.1335399 = phi i64 [ %.pre-phi, %239 ], [ %.0333, %.lr.ph404.preheader ]
  %195 = icmp slt i64 %.1335399, %.0328402
  br i1 %195, label %.lr.ph404._crit_edge, label %196

.lr.ph404._crit_edge:                             ; preds = %.lr.ph404
  %.pre415 = add nsw i64 %.1335399, 1
  br label %239

196:                                              ; preds = %.lr.ph404
  %197 = getelementptr inbounds double, ptr %35, i64 %.1335399
  %198 = load double, ptr %197, align 8, !tbaa !9
  %199 = fcmp oeq double %198, 0.000000e+00
  %200 = add nsw i64 %.1335399, 1
  br i1 %199, label %239, label %201

201:                                              ; preds = %196
  %202 = mul nsw i64 %.1335399, %31
  %203 = getelementptr double, ptr %33, i64 %200
  %204 = getelementptr double, ptr %203, i64 %202
  %205 = load double, ptr %204, align 8, !tbaa !9
  %206 = fcmp oeq double %205, 0.000000e+00
  br i1 %206, label %207, label %208

207:                                              ; preds = %201
  store <2 x double> zeroinitializer, ptr %197, align 8, !tbaa !9
  br label %237

208:                                              ; preds = %201
  %209 = mul nsw i64 %200, %31
  %210 = getelementptr double, ptr %33, i64 %.1335399
  %211 = getelementptr double, ptr %210, i64 %209
  %212 = load double, ptr %211, align 8, !tbaa !9
  %213 = fcmp oeq double %212, 0.000000e+00
  br i1 %213, label %214, label %237

214:                                              ; preds = %208
  store <2 x double> zeroinitializer, ptr %197, align 8, !tbaa !9
  %215 = icmp sgt i64 %.1335399, 1
  br i1 %215, label %216, label %219

216:                                              ; preds = %214
  %217 = add nsw i64 %.1335399, -1
  store i64 %217, ptr %17, align 8, !tbaa !5
  %gep = getelementptr double, ptr %invariant.gep, i64 %202
  %gep393 = getelementptr double, ptr %invariant.gep, i64 %209
  %218 = call i32 @f2c_dswap(ptr noundef nonnull %17, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %gep393, ptr noundef nonnull @c__1) #5
  br label %219

219:                                              ; preds = %216, %214
  %220 = load i64, ptr %3, align 8, !tbaa !5
  %221 = icmp sgt i64 %220, %200
  br i1 %221, label %222, label %230

222:                                              ; preds = %219
  %223 = xor i64 %.1335399, -1
  %224 = add i64 %220, %223
  store i64 %224, ptr %17, align 8, !tbaa !5
  %225 = add nsw i64 %.1335399, 2
  %226 = mul nsw i64 %225, %31
  %227 = getelementptr double, ptr %210, i64 %226
  %228 = getelementptr double, ptr %203, i64 %226
  %229 = call i32 @f2c_dswap(ptr noundef nonnull %17, ptr noundef %227, ptr noundef nonnull %5, ptr noundef %228, ptr noundef nonnull %5) #5
  br label %230

230:                                              ; preds = %222, %219
  br i1 %.not, label %231, label %235

231:                                              ; preds = %230
  %232 = mul nsw i64 %.1335399, %36
  %gep395 = getelementptr double, ptr %invariant.gep394, i64 %232
  %233 = mul nsw i64 %200, %36
  %gep397 = getelementptr double, ptr %invariant.gep394, i64 %233
  %234 = call i32 @f2c_dswap(ptr noundef nonnull %3, ptr noundef %gep395, ptr noundef nonnull @c__1, ptr noundef %gep397, ptr noundef nonnull @c__1) #5
  br label %235

235:                                              ; preds = %231, %230
  %236 = load double, ptr %204, align 8, !tbaa !9
  store double %236, ptr %211, align 8, !tbaa !9
  store double 0.000000e+00, ptr %204, align 8, !tbaa !9
  %.pre.pre = load i64, ptr %16, align 8, !tbaa !5
  br label %237

237:                                              ; preds = %208, %235, %207
  %.pre = phi i64 [ %.pre412, %208 ], [ %.pre.pre, %235 ], [ %.pre412, %207 ]
  %238 = add nsw i64 %.1335399, 2
  br label %239

239:                                              ; preds = %196, %.lr.ph404._crit_edge, %237
  %.pre-phi = phi i64 [ %.pre415, %.lr.ph404._crit_edge ], [ %200, %237 ], [ %200, %196 ]
  %.pre413 = phi i64 [ %.pre412, %.lr.ph404._crit_edge ], [ %.pre, %237 ], [ %.pre412, %196 ]
  %240 = phi i64 [ %194, %.lr.ph404._crit_edge ], [ %.pre, %237 ], [ %194, %196 ]
  %.1329 = phi i64 [ %.0328402, %.lr.ph404._crit_edge ], [ %238, %237 ], [ %200, %196 ]
  %.not360.not = icmp slt i64 %.1335399, %240
  br i1 %.not360.not, label %.lr.ph404, label %.loopexit389, !llvm.loop !13

.loopexit389:                                     ; preds = %239, %192, %167
  %241 = load i64, ptr %3, align 8, !tbaa !5
  %242 = load i64, ptr %27, align 8, !tbaa !5
  %243 = sub nsw i64 %241, %242
  store i64 %243, ptr %16, align 8, !tbaa !5
  %244 = call i64 @llvm.smax.i64(i64 %243, i64 1)
  store i64 %244, ptr %17, align 8, !tbaa !5
  %245 = getelementptr double, ptr %8, i64 %242
  %246 = call i32 @dlascl_(ptr noundef nonnull @.str.9, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %28, ptr noundef nonnull %23, ptr noundef nonnull %16, ptr noundef nonnull @c__1, ptr noundef %245, ptr noundef nonnull %17, ptr noundef nonnull %25) #5
  br label %247

247:                                              ; preds = %.loopexit389, %166
  br i1 %.not351, label %.loopexit, label %248

248:                                              ; preds = %247
  %249 = load i64, ptr %14, align 8, !tbaa !5
  %250 = icmp eq i64 %249, 0
  br i1 %250, label %251, label %.loopexit

251:                                              ; preds = %248
  store i64 0, ptr %6, align 8, !tbaa !5
  %252 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %252, ptr %16, align 8, !tbaa !5
  %.not361405 = icmp slt i64 %252, 1
  br i1 %.not361405, label %.loopexit, label %.lr.ph411

.lr.ph411:                                        ; preds = %251, %.thread376
  %.0323409 = phi i64 [ %.0327, %.thread376 ], [ 1, %251 ]
  %.0326408 = phi i64 [ %.1324, %.thread376 ], [ 1, %251 ]
  %.0330407 = phi i64 [ %.1331, %.thread376 ], [ 0, %251 ]
  %.2406 = phi i64 [ %274, %.thread376 ], [ 1, %251 ]
  %253 = getelementptr inbounds double, ptr %34, i64 %.2406
  %254 = getelementptr inbounds double, ptr %35, i64 %.2406
  %255 = call i64 (ptr, ptr, ...) %2(ptr noundef nonnull %253, ptr noundef nonnull %254) #5
  %256 = load double, ptr %254, align 8, !tbaa !9
  %257 = fcmp oeq double %256, 0.000000e+00
  br i1 %257, label %258, label %262

258:                                              ; preds = %.lr.ph411
  %.not363 = icmp eq i64 %255, 0
  br i1 %.not363, label %.thread376, label %259

259:                                              ; preds = %258
  %260 = load i64, ptr %6, align 8, !tbaa !5
  %261 = add nsw i64 %260, 1
  store i64 %261, ptr %6, align 8, !tbaa !5
  %.not384 = icmp eq i64 %.0323409, 0
  br i1 %.not384, label %.thread376.sink.split, label %.thread376

262:                                              ; preds = %.lr.ph411
  %263 = icmp eq i64 %.0330407, 1
  br i1 %263, label %264, label %.thread376

264:                                              ; preds = %262
  %265 = icmp ne i64 %255, 0
  %266 = icmp ne i64 %.0323409, 0
  %267 = select i1 %265, i1 true, i1 %266
  br i1 %267, label %268, label %.thread376

268:                                              ; preds = %264
  %269 = load i64, ptr %6, align 8, !tbaa !5
  %270 = add nsw i64 %269, 2
  store i64 %270, ptr %6, align 8, !tbaa !5
  %271 = icmp eq i64 %.0326408, 0
  br i1 %271, label %.thread376.sink.split, label %.thread376

.thread376.sink.split:                            ; preds = %268, %259
  %.1331.ph = phi i64 [ 0, %259 ], [ -1, %268 ]
  %.0327.ph = phi i64 [ %255, %259 ], [ 1, %268 ]
  %.1324.ph = phi i64 [ 0, %259 ], [ 1, %268 ]
  %272 = load i64, ptr %3, align 8, !tbaa !5
  %273 = add nsw i64 %272, 2
  store i64 %273, ptr %14, align 8, !tbaa !5
  br label %.thread376

.thread376:                                       ; preds = %.thread376.sink.split, %264, %258, %262, %268, %259
  %.1331 = phi i64 [ 0, %259 ], [ -1, %268 ], [ 1, %262 ], [ 0, %258 ], [ -1, %264 ], [ %.1331.ph, %.thread376.sink.split ]
  %.0327 = phi i64 [ %255, %259 ], [ 1, %268 ], [ %255, %262 ], [ 0, %258 ], [ 0, %264 ], [ %.0327.ph, %.thread376.sink.split ]
  %.1324 = phi i64 [ %.0323409, %259 ], [ 1, %268 ], [ %.0323409, %262 ], [ %.0323409, %258 ], [ 0, %264 ], [ %.1324.ph, %.thread376.sink.split ]
  %274 = add nuw nsw i64 %.2406, 1
  %275 = load i64, ptr %16, align 8, !tbaa !5
  %.not361.not = icmp slt i64 %.2406, %275
  br i1 %.not361.not, label %.lr.ph411, label %.loopexit, !llvm.loop !14

.loopexit:                                        ; preds = %.thread376, %251, %248, %247
  store double %89, ptr %11, align 8, !tbaa !9
  br label %276

276:                                              ; preds = %95, %.loopexit, %98, %.thread368
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #5
  ret i32 0
}

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

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

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

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

; 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 i32 @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 i32 @dgebal_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

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

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


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