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

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

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

127:                                              ; preds = %20
  %128 = load ptr, ptr %39, align 8, !tbaa !5
  %129 = load i64, ptr %128, align 8, !tbaa !9
  %130 = icmp eq i64 %129, -1
  br label %131

131:                                              ; preds = %127, %20
  %132 = phi i1 [ true, %20 ], [ %130, %127 ]
  %133 = zext i1 %132 to i32
  %134 = sext i32 %133 to i64
  store i64 %134, ptr %81, align 8, !tbaa !9
  %135 = load i64, ptr %83, align 8, !tbaa !9
  %136 = icmp ne i64 %135, 0
  br i1 %136, label %143, label %137

137:                                              ; preds = %131
  %138 = load ptr, ptr %22, align 8, !tbaa !5
  %139 = call i64 @lsame_(ptr noundef %138, ptr noundef @.str.2)
  %140 = icmp ne i64 %139, 0
  br i1 %140, label %143, label %141

141:                                              ; preds = %137
  %142 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -1, ptr %142, align 8, !tbaa !9
  br label %213

143:                                              ; preds = %137, %131
  %144 = load i64, ptr %80, align 8, !tbaa !9
  %145 = icmp ne i64 %144, 0
  br i1 %145, label %152, label %146

146:                                              ; preds = %143
  %147 = load ptr, ptr %23, align 8, !tbaa !5
  %148 = call i64 @lsame_(ptr noundef %147, ptr noundef @.str.2)
  %149 = icmp ne i64 %148, 0
  br i1 %149, label %152, label %150

150:                                              ; preds = %146
  %151 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -2, ptr %151, align 8, !tbaa !9
  br label %212

152:                                              ; preds = %146, %143
  %153 = load i64, ptr %77, align 8, !tbaa !9
  %154 = icmp ne i64 %153, 0
  br i1 %154, label %164, label %155

155:                                              ; preds = %152
  %156 = load i64, ptr %73, align 8, !tbaa !9
  %157 = icmp ne i64 %156, 0
  br i1 %157, label %164, label %158

158:                                              ; preds = %155
  %159 = load i64, ptr %82, align 8, !tbaa !9
  %160 = icmp ne i64 %159, 0
  br i1 %160, label %164, label %161

161:                                              ; preds = %158
  %162 = load i64, ptr %72, align 8, !tbaa !9
  %163 = icmp ne i64 %162, 0
  br i1 %163, label %164, label %170

164:                                              ; preds = %161, %158, %155, %152
  %165 = load i64, ptr %80, align 8, !tbaa !9
  %166 = icmp ne i64 %165, 0
  br i1 %166, label %172, label %167

167:                                              ; preds = %164
  %168 = load i64, ptr %77, align 8, !tbaa !9
  %169 = icmp ne i64 %168, 0
  br i1 %169, label %172, label %170

170:                                              ; preds = %167, %161
  %171 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -4, ptr %171, align 8, !tbaa !9
  br label %211

172:                                              ; preds = %167, %164
  %173 = load ptr, ptr %26, align 8, !tbaa !5
  %174 = load i64, ptr %173, align 8, !tbaa !9
  %175 = icmp slt i64 %174, 0
  br i1 %175, label %176, label %178

176:                                              ; preds = %172
  %177 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -5, ptr %177, align 8, !tbaa !9
  br label %210

178:                                              ; preds = %172
  %179 = load ptr, ptr %28, align 8, !tbaa !5
  %180 = load i64, ptr %179, align 8, !tbaa !9
  %181 = load ptr, ptr %26, align 8, !tbaa !5
  %182 = load i64, ptr %181, align 8, !tbaa !9
  %183 = icmp sge i64 1, %182
  br i1 %183, label %184, label %185

184:                                              ; preds = %178
  br label %188

185:                                              ; preds = %178
  %186 = load ptr, ptr %26, align 8, !tbaa !5
  %187 = load i64, ptr %186, align 8, !tbaa !9
  br label %188

188:                                              ; preds = %185, %184
  %189 = phi i64 [ 1, %184 ], [ %187, %185 ]
  %190 = icmp slt i64 %180, %189
  br i1 %190, label %191, label %193

191:                                              ; preds = %188
  %192 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -7, ptr %192, align 8, !tbaa !9
  br label %209

193:                                              ; preds = %188
  %194 = load ptr, ptr %33, align 8, !tbaa !5
  %195 = load i64, ptr %194, align 8, !tbaa !9
  %196 = icmp slt i64 %195, 1
  br i1 %196, label %206, label %197

197:                                              ; preds = %193
  %198 = load i64, ptr %83, align 8, !tbaa !9
  %199 = icmp ne i64 %198, 0
  br i1 %199, label %200, label %208

200:                                              ; preds = %197
  %201 = load ptr, ptr %33, align 8, !tbaa !5
  %202 = load i64, ptr %201, align 8, !tbaa !9
  %203 = load ptr, ptr %26, align 8, !tbaa !5
  %204 = load i64, ptr %203, align 8, !tbaa !9
  %205 = icmp slt i64 %202, %204
  br i1 %205, label %206, label %208

206:                                              ; preds = %200, %193
  %207 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -12, ptr %207, align 8, !tbaa !9
  br label %208

208:                                              ; preds = %206, %200, %197
  br label %209

209:                                              ; preds = %208, %191
  br label %210

210:                                              ; preds = %209, %176
  br label %211

211:                                              ; preds = %210, %170
  br label %212

212:                                              ; preds = %211, %150
  br label %213

213:                                              ; preds = %212, %141
  %214 = load ptr, ptr %41, align 8, !tbaa !5
  %215 = load i64, ptr %214, align 8, !tbaa !9
  %216 = icmp eq i64 %215, 0
  br i1 %216, label %217, label %377

217:                                              ; preds = %213
  store i64 1, ptr %67, align 8, !tbaa !9
  %218 = load ptr, ptr %26, align 8, !tbaa !5
  %219 = load i64, ptr %218, align 8, !tbaa !9
  %220 = icmp eq i64 %219, 0
  br i1 %220, label %221, label %222

221:                                              ; preds = %217
  store i64 1, ptr %75, align 8, !tbaa !9
  store i64 1, ptr %62, align 8, !tbaa !9
  br label %349

222:                                              ; preds = %217
  %223 = load ptr, ptr %26, align 8, !tbaa !5
  %224 = load i64, ptr %223, align 8, !tbaa !9
  %225 = shl i64 %224, 1
  %226 = load ptr, ptr %26, align 8, !tbaa !5
  %227 = load i64, ptr %226, align 8, !tbaa !9
  %228 = load ptr, ptr %26, align 8, !tbaa !5
  %229 = load ptr, ptr %26, align 8, !tbaa !5
  %230 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef %228, ptr noundef @c__1, ptr noundef %229, ptr noundef @c__0)
  %231 = mul nsw i64 %227, %230
  %232 = add nsw i64 %225, %231
  store i64 %232, ptr %76, align 8, !tbaa !9
  %233 = load ptr, ptr %26, align 8, !tbaa !5
  %234 = load i64, ptr %233, align 8, !tbaa !9
  %235 = mul nsw i64 %234, 3
  store i64 %235, ptr %75, align 8, !tbaa !9
  %236 = load ptr, ptr %22, align 8, !tbaa !5
  %237 = load ptr, ptr %26, align 8, !tbaa !5
  %238 = load ptr, ptr %26, align 8, !tbaa !5
  %239 = load ptr, ptr %27, align 8, !tbaa !5
  %240 = load i64, ptr %43, align 8, !tbaa !9
  %241 = getelementptr inbounds double, ptr %239, i64 %240
  %242 = load ptr, ptr %28, align 8, !tbaa !5
  %243 = load ptr, ptr %30, align 8, !tbaa !5
  %244 = getelementptr inbounds double, ptr %243, i64 1
  %245 = load ptr, ptr %31, align 8, !tbaa !5
  %246 = getelementptr inbounds double, ptr %245, i64 1
  %247 = load ptr, ptr %32, align 8, !tbaa !5
  %248 = load i64, ptr %45, align 8, !tbaa !9
  %249 = getelementptr inbounds double, ptr %247, i64 %248
  %250 = load ptr, ptr %33, align 8, !tbaa !5
  %251 = load ptr, ptr %36, align 8, !tbaa !5
  %252 = getelementptr inbounds double, ptr %251, i64 1
  %253 = call i32 @dhseqr_(ptr noundef @.str.1, ptr noundef %236, ptr noundef %237, ptr noundef @c__1, ptr noundef %238, ptr noundef %241, ptr noundef %242, ptr noundef %244, ptr noundef %246, ptr noundef %249, ptr noundef %250, ptr noundef %252, ptr noundef @c_n1, ptr noundef %65)
  %254 = load ptr, ptr %36, align 8, !tbaa !5
  %255 = getelementptr inbounds double, ptr %254, i64 1
  %256 = load double, ptr %255, align 8, !tbaa !11
  %257 = fptosi double %256 to i64
  store i64 %257, ptr %79, align 8, !tbaa !9
  %258 = load i64, ptr %83, align 8, !tbaa !9
  %259 = icmp ne i64 %258, 0
  br i1 %259, label %275, label %260

260:                                              ; preds = %222
  %261 = load i64, ptr %76, align 8, !tbaa !9
  store i64 %261, ptr %46, align 8, !tbaa !9
  %262 = load ptr, ptr %26, align 8, !tbaa !5
  %263 = load i64, ptr %262, align 8, !tbaa !9
  %264 = load i64, ptr %79, align 8, !tbaa !9
  %265 = add nsw i64 %263, %264
  store i64 %265, ptr %47, align 8, !tbaa !9
  %266 = load i64, ptr %46, align 8, !tbaa !9
  %267 = load i64, ptr %47, align 8, !tbaa !9
  %268 = icmp sge i64 %266, %267
  br i1 %268, label %269, label %271

269:                                              ; preds = %260
  %270 = load i64, ptr %46, align 8, !tbaa !9
  br label %273

271:                                              ; preds = %260
  %272 = load i64, ptr %47, align 8, !tbaa !9
  br label %273

273:                                              ; preds = %271, %269
  %274 = phi i64 [ %270, %269 ], [ %272, %271 ]
  store i64 %274, ptr %76, align 8, !tbaa !9
  br label %311

275:                                              ; preds = %222
  %276 = load i64, ptr %76, align 8, !tbaa !9
  store i64 %276, ptr %46, align 8, !tbaa !9
  %277 = load ptr, ptr %26, align 8, !tbaa !5
  %278 = load i64, ptr %277, align 8, !tbaa !9
  %279 = shl i64 %278, 1
  %280 = load ptr, ptr %26, align 8, !tbaa !5
  %281 = load i64, ptr %280, align 8, !tbaa !9
  %282 = sub nsw i64 %281, 1
  %283 = load ptr, ptr %26, align 8, !tbaa !5
  %284 = load ptr, ptr %26, align 8, !tbaa !5
  %285 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.7, ptr noundef @.str.6, ptr noundef %283, ptr noundef @c__1, ptr noundef %284, ptr noundef @c_n1)
  %286 = mul nsw i64 %282, %285
  %287 = add nsw i64 %279, %286
  store i64 %287, ptr %47, align 8, !tbaa !9
  %288 = load i64, ptr %46, align 8, !tbaa !9
  %289 = load i64, ptr %47, align 8, !tbaa !9
  %290 = icmp sge i64 %288, %289
  br i1 %290, label %291, label %293

291:                                              ; preds = %275
  %292 = load i64, ptr %46, align 8, !tbaa !9
  br label %295

293:                                              ; preds = %275
  %294 = load i64, ptr %47, align 8, !tbaa !9
  br label %295

295:                                              ; preds = %293, %291
  %296 = phi i64 [ %292, %291 ], [ %294, %293 ]
  store i64 %296, ptr %76, align 8, !tbaa !9
  %297 = load i64, ptr %76, align 8, !tbaa !9
  store i64 %297, ptr %46, align 8, !tbaa !9
  %298 = load ptr, ptr %26, align 8, !tbaa !5
  %299 = load i64, ptr %298, align 8, !tbaa !9
  %300 = load i64, ptr %79, align 8, !tbaa !9
  %301 = add nsw i64 %299, %300
  store i64 %301, ptr %47, align 8, !tbaa !9
  %302 = load i64, ptr %46, align 8, !tbaa !9
  %303 = load i64, ptr %47, align 8, !tbaa !9
  %304 = icmp sge i64 %302, %303
  br i1 %304, label %305, label %307

305:                                              ; preds = %295
  %306 = load i64, ptr %46, align 8, !tbaa !9
  br label %309

307:                                              ; preds = %295
  %308 = load i64, ptr %47, align 8, !tbaa !9
  br label %309

309:                                              ; preds = %307, %305
  %310 = phi i64 [ %306, %305 ], [ %308, %307 ]
  store i64 %310, ptr %76, align 8, !tbaa !9
  br label %311

311:                                              ; preds = %309, %273
  %312 = load i64, ptr %76, align 8, !tbaa !9
  store i64 %312, ptr %62, align 8, !tbaa !9
  %313 = load i64, ptr %77, align 8, !tbaa !9
  %314 = icmp ne i64 %313, 0
  br i1 %314, label %335, label %315

315:                                              ; preds = %311
  %316 = load i64, ptr %62, align 8, !tbaa !9
  store i64 %316, ptr %46, align 8, !tbaa !9
  %317 = load ptr, ptr %26, align 8, !tbaa !5
  %318 = load i64, ptr %317, align 8, !tbaa !9
  %319 = load ptr, ptr %26, align 8, !tbaa !5
  %320 = load i64, ptr %319, align 8, !tbaa !9
  %321 = load ptr, ptr %26, align 8, !tbaa !5
  %322 = load i64, ptr %321, align 8, !tbaa !9
  %323 = mul nsw i64 %320, %322
  %324 = sdiv i64 %323, 2
  %325 = add nsw i64 %318, %324
  store i64 %325, ptr %47, align 8, !tbaa !9
  %326 = load i64, ptr %46, align 8, !tbaa !9
  %327 = load i64, ptr %47, align 8, !tbaa !9
  %328 = icmp sge i64 %326, %327
  br i1 %328, label %329, label %331

329:                                              ; preds = %315
  %330 = load i64, ptr %46, align 8, !tbaa !9
  br label %333

331:                                              ; preds = %315
  %332 = load i64, ptr %47, align 8, !tbaa !9
  br label %333

333:                                              ; preds = %331, %329
  %334 = phi i64 [ %330, %329 ], [ %332, %331 ]
  store i64 %334, ptr %62, align 8, !tbaa !9
  br label %335

335:                                              ; preds = %333, %311
  %336 = load i64, ptr %82, align 8, !tbaa !9
  %337 = icmp ne i64 %336, 0
  br i1 %337, label %341, label %338

338:                                              ; preds = %335
  %339 = load i64, ptr %72, align 8, !tbaa !9
  %340 = icmp ne i64 %339, 0
  br i1 %340, label %341, label %348

341:                                              ; preds = %338, %335
  %342 = load ptr, ptr %26, align 8, !tbaa !5
  %343 = load i64, ptr %342, align 8, !tbaa !9
  %344 = load ptr, ptr %26, align 8, !tbaa !5
  %345 = load i64, ptr %344, align 8, !tbaa !9
  %346 = mul nsw i64 %343, %345
  %347 = sdiv i64 %346, 4
  store i64 %347, ptr %67, align 8, !tbaa !9
  br label %348

348:                                              ; preds = %341, %338
  br label %349

349:                                              ; preds = %348, %221
  %350 = load i64, ptr %67, align 8, !tbaa !9
  %351 = load ptr, ptr %38, align 8, !tbaa !5
  %352 = getelementptr inbounds i64, ptr %351, i64 1
  store i64 %350, ptr %352, align 8, !tbaa !9
  %353 = load i64, ptr %62, align 8, !tbaa !9
  %354 = sitofp i64 %353 to double
  %355 = load ptr, ptr %36, align 8, !tbaa !5
  %356 = getelementptr inbounds double, ptr %355, i64 1
  store double %354, ptr %356, align 8, !tbaa !11
  %357 = load ptr, ptr %37, align 8, !tbaa !5
  %358 = load i64, ptr %357, align 8, !tbaa !9
  %359 = load i64, ptr %75, align 8, !tbaa !9
  %360 = icmp slt i64 %358, %359
  br i1 %360, label %361, label %366

361:                                              ; preds = %349
  %362 = load i64, ptr %81, align 8, !tbaa !9
  %363 = icmp ne i64 %362, 0
  br i1 %363, label %366, label %364

364:                                              ; preds = %361
  %365 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -16, ptr %365, align 8, !tbaa !9
  br label %376

366:                                              ; preds = %361, %349
  %367 = load ptr, ptr %39, align 8, !tbaa !5
  %368 = load i64, ptr %367, align 8, !tbaa !9
  %369 = icmp slt i64 %368, 1
  br i1 %369, label %370, label %375

370:                                              ; preds = %366
  %371 = load i64, ptr %81, align 8, !tbaa !9
  %372 = icmp ne i64 %371, 0
  br i1 %372, label %375, label %373

373:                                              ; preds = %370
  %374 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -18, ptr %374, align 8, !tbaa !9
  br label %375

375:                                              ; preds = %373, %370, %366
  br label %376

376:                                              ; preds = %375, %364
  br label %377

377:                                              ; preds = %376, %213
  %378 = load ptr, ptr %41, align 8, !tbaa !5
  %379 = load i64, ptr %378, align 8, !tbaa !9
  %380 = icmp ne i64 %379, 0
  br i1 %380, label %381, label %386

381:                                              ; preds = %377
  %382 = load ptr, ptr %41, align 8, !tbaa !5
  %383 = load i64, ptr %382, align 8, !tbaa !9
  %384 = sub nsw i64 0, %383
  store i64 %384, ptr %46, align 8, !tbaa !9
  %385 = call i32 @xerbla_(ptr noundef @.str.8, ptr noundef %46)
  store i32 0, ptr %21, align 4
  store i32 1, ptr %84, align 4
  br label %1059

386:                                              ; preds = %377
  %387 = load ptr, ptr %26, align 8, !tbaa !5
  %388 = load i64, ptr %387, align 8, !tbaa !9
  %389 = icmp eq i64 %388, 0
  br i1 %389, label %390, label %392

390:                                              ; preds = %386
  %391 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 0, ptr %391, align 8, !tbaa !9
  store i32 0, ptr %21, align 4
  store i32 1, ptr %84, align 4
  br label %1059

392:                                              ; preds = %386
  %393 = call double @dlamch_(ptr noundef @.str.9)
  store double %393, ptr %56, align 8, !tbaa !11
  %394 = call double @dlamch_(ptr noundef @.str.1)
  store double %394, ptr %78, align 8, !tbaa !11
  %395 = load double, ptr %78, align 8, !tbaa !11
  %396 = fdiv double 1.000000e+00, %395
  store double %396, ptr %71, align 8, !tbaa !11
  %397 = call i32 @dlabad_(ptr noundef %78, ptr noundef %71)
  %398 = load double, ptr %78, align 8, !tbaa !11
  %399 = call double @sqrt(double noundef %398) #4
  %400 = load double, ptr %56, align 8, !tbaa !11
  %401 = fdiv double %399, %400
  store double %401, ptr %78, align 8, !tbaa !11
  %402 = load double, ptr %78, align 8, !tbaa !11
  %403 = fdiv double 1.000000e+00, %402
  store double %403, ptr %71, align 8, !tbaa !11
  %404 = load ptr, ptr %26, align 8, !tbaa !5
  %405 = load ptr, ptr %26, align 8, !tbaa !5
  %406 = load ptr, ptr %27, align 8, !tbaa !5
  %407 = load i64, ptr %43, align 8, !tbaa !9
  %408 = getelementptr inbounds double, ptr %406, i64 %407
  %409 = load ptr, ptr %28, align 8, !tbaa !5
  %410 = getelementptr inbounds [1 x double], ptr %55, i64 0, i64 0
  %411 = call double @dlange_(ptr noundef @.str.10, ptr noundef %404, ptr noundef %405, ptr noundef %408, ptr noundef %409, ptr noundef %410)
  store double %411, ptr %58, align 8, !tbaa !11
  store i64 0, ptr %69, align 8, !tbaa !9
  %412 = load double, ptr %58, align 8, !tbaa !11
  %413 = fcmp ogt double %412, 0.000000e+00
  br i1 %413, label %414, label %420

414:                                              ; preds = %392
  %415 = load double, ptr %58, align 8, !tbaa !11
  %416 = load double, ptr %78, align 8, !tbaa !11
  %417 = fcmp olt double %415, %416
  br i1 %417, label %418, label %420

418:                                              ; preds = %414
  store i64 1, ptr %69, align 8, !tbaa !9
  %419 = load double, ptr %78, align 8, !tbaa !11
  store double %419, ptr %70, align 8, !tbaa !11
  br label %427

420:                                              ; preds = %414, %392
  %421 = load double, ptr %58, align 8, !tbaa !11
  %422 = load double, ptr %71, align 8, !tbaa !11
  %423 = fcmp ogt double %421, %422
  br i1 %423, label %424, label %426

424:                                              ; preds = %420
  store i64 1, ptr %69, align 8, !tbaa !9
  %425 = load double, ptr %71, align 8, !tbaa !11
  store double %425, ptr %70, align 8, !tbaa !11
  br label %426

426:                                              ; preds = %424, %420
  br label %427

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

430:                                              ; preds = %427
  %431 = load ptr, ptr %26, align 8, !tbaa !5
  %432 = load ptr, ptr %26, align 8, !tbaa !5
  %433 = load ptr, ptr %27, align 8, !tbaa !5
  %434 = load i64, ptr %43, align 8, !tbaa !9
  %435 = getelementptr inbounds double, ptr %433, i64 %434
  %436 = load ptr, ptr %28, align 8, !tbaa !5
  %437 = call i32 @dlascl_(ptr noundef @.str.11, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %58, ptr noundef %70, ptr noundef %431, ptr noundef %432, ptr noundef %435, ptr noundef %436, ptr noundef %59)
  br label %438

438:                                              ; preds = %430, %427
  store i64 1, ptr %57, align 8, !tbaa !9
  %439 = load ptr, ptr %26, align 8, !tbaa !5
  %440 = load ptr, ptr %27, align 8, !tbaa !5
  %441 = load i64, ptr %43, align 8, !tbaa !9
  %442 = getelementptr inbounds double, ptr %440, i64 %441
  %443 = load ptr, ptr %28, align 8, !tbaa !5
  %444 = load ptr, ptr %36, align 8, !tbaa !5
  %445 = load i64, ptr %57, align 8, !tbaa !9
  %446 = getelementptr inbounds double, ptr %444, i64 %445
  %447 = call i32 @dgebal_(ptr noundef @.str.9, ptr noundef %439, ptr noundef %442, ptr noundef %443, ptr noundef %54, ptr noundef %53, ptr noundef %446, ptr noundef %59)
  %448 = load ptr, ptr %26, align 8, !tbaa !5
  %449 = load i64, ptr %448, align 8, !tbaa !9
  %450 = load i64, ptr %57, align 8, !tbaa !9
  %451 = add nsw i64 %449, %450
  store i64 %451, ptr %60, align 8, !tbaa !9
  %452 = load ptr, ptr %26, align 8, !tbaa !5
  %453 = load i64, ptr %452, align 8, !tbaa !9
  %454 = load i64, ptr %60, align 8, !tbaa !9
  %455 = add nsw i64 %453, %454
  store i64 %455, ptr %61, align 8, !tbaa !9
  %456 = load ptr, ptr %37, align 8, !tbaa !5
  %457 = load i64, ptr %456, align 8, !tbaa !9
  %458 = load i64, ptr %61, align 8, !tbaa !9
  %459 = sub nsw i64 %457, %458
  %460 = add nsw i64 %459, 1
  store i64 %460, ptr %46, align 8, !tbaa !9
  %461 = load ptr, ptr %26, align 8, !tbaa !5
  %462 = load ptr, ptr %27, align 8, !tbaa !5
  %463 = load i64, ptr %43, align 8, !tbaa !9
  %464 = getelementptr inbounds double, ptr %462, i64 %463
  %465 = load ptr, ptr %28, align 8, !tbaa !5
  %466 = load ptr, ptr %36, align 8, !tbaa !5
  %467 = load i64, ptr %60, align 8, !tbaa !9
  %468 = getelementptr inbounds double, ptr %466, i64 %467
  %469 = load ptr, ptr %36, align 8, !tbaa !5
  %470 = load i64, ptr %61, align 8, !tbaa !9
  %471 = getelementptr inbounds double, ptr %469, i64 %470
  %472 = call i32 @dgehrd_(ptr noundef %461, ptr noundef %54, ptr noundef %53, ptr noundef %464, ptr noundef %465, ptr noundef %468, ptr noundef %471, ptr noundef %46, ptr noundef %59)
  %473 = load i64, ptr %83, align 8, !tbaa !9
  %474 = icmp ne i64 %473, 0
  br i1 %474, label %475, label %504

475:                                              ; preds = %438
  %476 = load ptr, ptr %26, align 8, !tbaa !5
  %477 = load ptr, ptr %26, align 8, !tbaa !5
  %478 = load ptr, ptr %27, align 8, !tbaa !5
  %479 = load i64, ptr %43, align 8, !tbaa !9
  %480 = getelementptr inbounds double, ptr %478, i64 %479
  %481 = load ptr, ptr %28, align 8, !tbaa !5
  %482 = load ptr, ptr %32, align 8, !tbaa !5
  %483 = load i64, ptr %45, align 8, !tbaa !9
  %484 = getelementptr inbounds double, ptr %482, i64 %483
  %485 = load ptr, ptr %33, align 8, !tbaa !5
  %486 = call i32 @dlacpy_(ptr noundef @.str.12, ptr noundef %476, ptr noundef %477, ptr noundef %480, ptr noundef %481, ptr noundef %484, ptr noundef %485)
  %487 = load ptr, ptr %37, align 8, !tbaa !5
  %488 = load i64, ptr %487, align 8, !tbaa !9
  %489 = load i64, ptr %61, align 8, !tbaa !9
  %490 = sub nsw i64 %488, %489
  %491 = add nsw i64 %490, 1
  store i64 %491, ptr %46, align 8, !tbaa !9
  %492 = load ptr, ptr %26, align 8, !tbaa !5
  %493 = load ptr, ptr %32, align 8, !tbaa !5
  %494 = load i64, ptr %45, align 8, !tbaa !9
  %495 = getelementptr inbounds double, ptr %493, i64 %494
  %496 = load ptr, ptr %33, align 8, !tbaa !5
  %497 = load ptr, ptr %36, align 8, !tbaa !5
  %498 = load i64, ptr %60, align 8, !tbaa !9
  %499 = getelementptr inbounds double, ptr %497, i64 %498
  %500 = load ptr, ptr %36, align 8, !tbaa !5
  %501 = load i64, ptr %61, align 8, !tbaa !9
  %502 = getelementptr inbounds double, ptr %500, i64 %501
  %503 = call i32 @dorghr_(ptr noundef %492, ptr noundef %54, ptr noundef %53, ptr noundef %495, ptr noundef %496, ptr noundef %499, ptr noundef %502, ptr noundef %46, ptr noundef %59)
  br label %504

504:                                              ; preds = %475, %438
  %505 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 0, ptr %505, align 8, !tbaa !9
  %506 = load i64, ptr %60, align 8, !tbaa !9
  store i64 %506, ptr %61, align 8, !tbaa !9
  %507 = load ptr, ptr %37, align 8, !tbaa !5
  %508 = load i64, ptr %507, align 8, !tbaa !9
  %509 = load i64, ptr %61, align 8, !tbaa !9
  %510 = sub nsw i64 %508, %509
  %511 = add nsw i64 %510, 1
  store i64 %511, ptr %46, align 8, !tbaa !9
  %512 = load ptr, ptr %22, align 8, !tbaa !5
  %513 = load ptr, ptr %26, align 8, !tbaa !5
  %514 = load ptr, ptr %27, align 8, !tbaa !5
  %515 = load i64, ptr %43, align 8, !tbaa !9
  %516 = getelementptr inbounds double, ptr %514, i64 %515
  %517 = load ptr, ptr %28, align 8, !tbaa !5
  %518 = load ptr, ptr %30, align 8, !tbaa !5
  %519 = getelementptr inbounds double, ptr %518, i64 1
  %520 = load ptr, ptr %31, align 8, !tbaa !5
  %521 = getelementptr inbounds double, ptr %520, i64 1
  %522 = load ptr, ptr %32, align 8, !tbaa !5
  %523 = load i64, ptr %45, align 8, !tbaa !9
  %524 = getelementptr inbounds double, ptr %522, i64 %523
  %525 = load ptr, ptr %33, align 8, !tbaa !5
  %526 = load ptr, ptr %36, align 8, !tbaa !5
  %527 = load i64, ptr %61, align 8, !tbaa !9
  %528 = getelementptr inbounds double, ptr %526, i64 %527
  %529 = call i32 @dhseqr_(ptr noundef @.str.1, ptr noundef %512, ptr noundef %513, ptr noundef %54, ptr noundef %53, ptr noundef %516, ptr noundef %517, ptr noundef %519, ptr noundef %521, ptr noundef %524, ptr noundef %525, ptr noundef %528, ptr noundef %46, ptr noundef %65)
  %530 = load i64, ptr %65, align 8, !tbaa !9
  %531 = icmp sgt i64 %530, 0
  br i1 %531, label %532, label %535

532:                                              ; preds = %504
  %533 = load i64, ptr %65, align 8, !tbaa !9
  %534 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 %533, ptr %534, align 8, !tbaa !9
  br label %535

535:                                              ; preds = %532, %504
  %536 = load i64, ptr %80, align 8, !tbaa !9
  %537 = icmp ne i64 %536, 0
  br i1 %537, label %538, label %658

538:                                              ; preds = %535
  %539 = load ptr, ptr %41, align 8, !tbaa !5
  %540 = load i64, ptr %539, align 8, !tbaa !9
  %541 = icmp eq i64 %540, 0
  br i1 %541, label %542, label %658

542:                                              ; preds = %538
  %543 = load i64, ptr %69, align 8, !tbaa !9
  %544 = icmp ne i64 %543, 0
  br i1 %544, label %545, label %556

545:                                              ; preds = %542
  %546 = load ptr, ptr %26, align 8, !tbaa !5
  %547 = load ptr, ptr %30, align 8, !tbaa !5
  %548 = getelementptr inbounds double, ptr %547, i64 1
  %549 = load ptr, ptr %26, align 8, !tbaa !5
  %550 = call i32 @dlascl_(ptr noundef @.str.11, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %70, ptr noundef %58, ptr noundef %546, ptr noundef @c__1, ptr noundef %548, ptr noundef %549, ptr noundef %59)
  %551 = load ptr, ptr %26, align 8, !tbaa !5
  %552 = load ptr, ptr %31, align 8, !tbaa !5
  %553 = getelementptr inbounds double, ptr %552, i64 1
  %554 = load ptr, ptr %26, align 8, !tbaa !5
  %555 = call i32 @dlascl_(ptr noundef @.str.11, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %70, ptr noundef %58, ptr noundef %551, ptr noundef @c__1, ptr noundef %553, ptr noundef %554, ptr noundef %59)
  br label %556

556:                                              ; preds = %545, %542
  %557 = load ptr, ptr %26, align 8, !tbaa !5
  %558 = load i64, ptr %557, align 8, !tbaa !9
  store i64 %558, ptr %46, align 8, !tbaa !9
  store i64 1, ptr %49, align 8, !tbaa !9
  br label %559

559:                                              ; preds = %575, %556
  %560 = load i64, ptr %49, align 8, !tbaa !9
  %561 = load i64, ptr %46, align 8, !tbaa !9
  %562 = icmp sle i64 %560, %561
  br i1 %562, label %563, label %578

563:                                              ; preds = %559
  %564 = load ptr, ptr %24, align 8, !tbaa !5
  %565 = load ptr, ptr %30, align 8, !tbaa !5
  %566 = load i64, ptr %49, align 8, !tbaa !9
  %567 = getelementptr inbounds double, ptr %565, i64 %566
  %568 = load ptr, ptr %31, align 8, !tbaa !5
  %569 = load i64, ptr %49, align 8, !tbaa !9
  %570 = getelementptr inbounds double, ptr %568, i64 %569
  %571 = call i64 (ptr, ptr, ...) %564(ptr noundef %567, ptr noundef %570)
  %572 = load ptr, ptr %40, align 8, !tbaa !5
  %573 = load i64, ptr %49, align 8, !tbaa !9
  %574 = getelementptr inbounds i64, ptr %572, i64 %573
  store i64 %571, ptr %574, align 8, !tbaa !9
  br label %575

575:                                              ; preds = %563
  %576 = load i64, ptr %49, align 8, !tbaa !9
  %577 = add nsw i64 %576, 1
  store i64 %577, ptr %49, align 8, !tbaa !9
  br label %559, !llvm.loop !13

578:                                              ; preds = %559
  %579 = load ptr, ptr %37, align 8, !tbaa !5
  %580 = load i64, ptr %579, align 8, !tbaa !9
  %581 = load i64, ptr %61, align 8, !tbaa !9
  %582 = sub nsw i64 %580, %581
  %583 = add nsw i64 %582, 1
  store i64 %583, ptr %46, align 8, !tbaa !9
  %584 = load ptr, ptr %25, align 8, !tbaa !5
  %585 = load ptr, ptr %22, align 8, !tbaa !5
  %586 = load ptr, ptr %40, align 8, !tbaa !5
  %587 = getelementptr inbounds i64, ptr %586, i64 1
  %588 = load ptr, ptr %26, align 8, !tbaa !5
  %589 = load ptr, ptr %27, align 8, !tbaa !5
  %590 = load i64, ptr %43, align 8, !tbaa !9
  %591 = getelementptr inbounds double, ptr %589, i64 %590
  %592 = load ptr, ptr %28, align 8, !tbaa !5
  %593 = load ptr, ptr %32, align 8, !tbaa !5
  %594 = load i64, ptr %45, align 8, !tbaa !9
  %595 = getelementptr inbounds double, ptr %593, i64 %594
  %596 = load ptr, ptr %33, align 8, !tbaa !5
  %597 = load ptr, ptr %30, align 8, !tbaa !5
  %598 = getelementptr inbounds double, ptr %597, i64 1
  %599 = load ptr, ptr %31, align 8, !tbaa !5
  %600 = getelementptr inbounds double, ptr %599, i64 1
  %601 = load ptr, ptr %29, align 8, !tbaa !5
  %602 = load ptr, ptr %34, align 8, !tbaa !5
  %603 = load ptr, ptr %35, align 8, !tbaa !5
  %604 = load ptr, ptr %36, align 8, !tbaa !5
  %605 = load i64, ptr %61, align 8, !tbaa !9
  %606 = getelementptr inbounds double, ptr %604, i64 %605
  %607 = load ptr, ptr %38, align 8, !tbaa !5
  %608 = getelementptr inbounds i64, ptr %607, i64 1
  %609 = load ptr, ptr %39, align 8, !tbaa !5
  %610 = call i32 @dtrsen_(ptr noundef %584, ptr noundef %585, ptr noundef %587, ptr noundef %588, ptr noundef %591, ptr noundef %592, ptr noundef %595, ptr noundef %596, ptr noundef %598, ptr noundef %600, ptr noundef %601, ptr noundef %602, ptr noundef %603, ptr noundef %606, ptr noundef %46, ptr noundef %608, ptr noundef %609, ptr noundef %64)
  %611 = load i64, ptr %77, align 8, !tbaa !9
  %612 = icmp ne i64 %611, 0
  br i1 %612, label %636, label %613

613:                                              ; preds = %578
  %614 = load i64, ptr %76, align 8, !tbaa !9
  store i64 %614, ptr %46, align 8, !tbaa !9
  %615 = load ptr, ptr %26, align 8, !tbaa !5
  %616 = load i64, ptr %615, align 8, !tbaa !9
  %617 = load ptr, ptr %29, align 8, !tbaa !5
  %618 = load i64, ptr %617, align 8, !tbaa !9
  %619 = shl i64 %618, 1
  %620 = load ptr, ptr %26, align 8, !tbaa !5
  %621 = load i64, ptr %620, align 8, !tbaa !9
  %622 = load ptr, ptr %29, align 8, !tbaa !5
  %623 = load i64, ptr %622, align 8, !tbaa !9
  %624 = sub nsw i64 %621, %623
  %625 = mul nsw i64 %619, %624
  %626 = add nsw i64 %616, %625
  store i64 %626, ptr %47, align 8, !tbaa !9
  %627 = load i64, ptr %46, align 8, !tbaa !9
  %628 = load i64, ptr %47, align 8, !tbaa !9
  %629 = icmp sge i64 %627, %628
  br i1 %629, label %630, label %632

630:                                              ; preds = %613
  %631 = load i64, ptr %46, align 8, !tbaa !9
  br label %634

632:                                              ; preds = %613
  %633 = load i64, ptr %47, align 8, !tbaa !9
  br label %634

634:                                              ; preds = %632, %630
  %635 = phi i64 [ %631, %630 ], [ %633, %632 ]
  store i64 %635, ptr %76, align 8, !tbaa !9
  br label %636

636:                                              ; preds = %634, %578
  %637 = load i64, ptr %64, align 8, !tbaa !9
  %638 = icmp eq i64 %637, -15
  br i1 %638, label %639, label %641

639:                                              ; preds = %636
  %640 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -16, ptr %640, align 8, !tbaa !9
  br label %657

641:                                              ; preds = %636
  %642 = load i64, ptr %64, align 8, !tbaa !9
  %643 = icmp eq i64 %642, -17
  br i1 %643, label %644, label %646

644:                                              ; preds = %641
  %645 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -18, ptr %645, align 8, !tbaa !9
  br label %656

646:                                              ; preds = %641
  %647 = load i64, ptr %64, align 8, !tbaa !9
  %648 = icmp sgt i64 %647, 0
  br i1 %648, label %649, label %655

649:                                              ; preds = %646
  %650 = load i64, ptr %64, align 8, !tbaa !9
  %651 = load ptr, ptr %26, align 8, !tbaa !5
  %652 = load i64, ptr %651, align 8, !tbaa !9
  %653 = add nsw i64 %650, %652
  %654 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 %653, ptr %654, align 8, !tbaa !9
  br label %655

655:                                              ; preds = %649, %646
  br label %656

656:                                              ; preds = %655, %644
  br label %657

657:                                              ; preds = %656, %639
  br label %658

658:                                              ; preds = %657, %538, %535
  %659 = load i64, ptr %83, align 8, !tbaa !9
  %660 = icmp ne i64 %659, 0
  br i1 %660, label %661, label %672

661:                                              ; preds = %658
  %662 = load ptr, ptr %26, align 8, !tbaa !5
  %663 = load ptr, ptr %36, align 8, !tbaa !5
  %664 = load i64, ptr %57, align 8, !tbaa !9
  %665 = getelementptr inbounds double, ptr %663, i64 %664
  %666 = load ptr, ptr %26, align 8, !tbaa !5
  %667 = load ptr, ptr %32, align 8, !tbaa !5
  %668 = load i64, ptr %45, align 8, !tbaa !9
  %669 = getelementptr inbounds double, ptr %667, i64 %668
  %670 = load ptr, ptr %33, align 8, !tbaa !5
  %671 = call i32 @dgebak_(ptr noundef @.str.9, ptr noundef @.str.13, ptr noundef %662, ptr noundef %54, ptr noundef %53, ptr noundef %665, ptr noundef %666, ptr noundef %669, ptr noundef %670, ptr noundef %59)
  br label %672

672:                                              ; preds = %661, %658
  %673 = load i64, ptr %69, align 8, !tbaa !9
  %674 = icmp ne i64 %673, 0
  br i1 %674, label %675, label %936

675:                                              ; preds = %672
  %676 = load ptr, ptr %26, align 8, !tbaa !5
  %677 = load ptr, ptr %26, align 8, !tbaa !5
  %678 = load ptr, ptr %27, align 8, !tbaa !5
  %679 = load i64, ptr %43, align 8, !tbaa !9
  %680 = getelementptr inbounds double, ptr %678, i64 %679
  %681 = load ptr, ptr %28, align 8, !tbaa !5
  %682 = call i32 @dlascl_(ptr noundef @.str.14, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %70, ptr noundef %58, ptr noundef %676, ptr noundef %677, ptr noundef %680, ptr noundef %681, ptr noundef %59)
  %683 = load ptr, ptr %28, align 8, !tbaa !5
  %684 = load i64, ptr %683, align 8, !tbaa !9
  %685 = add nsw i64 %684, 1
  store i64 %685, ptr %46, align 8, !tbaa !9
  %686 = load ptr, ptr %26, align 8, !tbaa !5
  %687 = load ptr, ptr %27, align 8, !tbaa !5
  %688 = load i64, ptr %43, align 8, !tbaa !9
  %689 = getelementptr inbounds double, ptr %687, i64 %688
  %690 = load ptr, ptr %30, align 8, !tbaa !5
  %691 = getelementptr inbounds double, ptr %690, i64 1
  %692 = call i32 @f2c_dcopy(ptr noundef %686, ptr noundef %689, ptr noundef %46, ptr noundef %691, ptr noundef @c__1)
  %693 = load i64, ptr %82, align 8, !tbaa !9
  %694 = icmp ne i64 %693, 0
  br i1 %694, label %698, label %695

695:                                              ; preds = %675
  %696 = load i64, ptr %72, align 8, !tbaa !9
  %697 = icmp ne i64 %696, 0
  br i1 %697, label %698, label %711

698:                                              ; preds = %695, %675
  %699 = load ptr, ptr %41, align 8, !tbaa !5
  %700 = load i64, ptr %699, align 8, !tbaa !9
  %701 = icmp eq i64 %700, 0
  br i1 %701, label %702, label %711

702:                                              ; preds = %698
  %703 = load ptr, ptr %35, align 8, !tbaa !5
  %704 = load double, ptr %703, align 8, !tbaa !11
  %705 = getelementptr inbounds [1 x double], ptr %55, i64 0, i64 0
  store double %704, ptr %705, align 8, !tbaa !11
  %706 = getelementptr inbounds [1 x double], ptr %55, i64 0, i64 0
  %707 = call i32 @dlascl_(ptr noundef @.str.11, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %70, ptr noundef %58, ptr noundef @c__1, ptr noundef @c__1, ptr noundef %706, ptr noundef @c__1, ptr noundef %59)
  %708 = getelementptr inbounds [1 x double], ptr %55, i64 0, i64 0
  %709 = load double, ptr %708, align 8, !tbaa !11
  %710 = load ptr, ptr %35, align 8, !tbaa !5
  store double %709, ptr %710, align 8, !tbaa !11
  br label %711

711:                                              ; preds = %702, %698, %695
  %712 = load double, ptr %70, align 8, !tbaa !11
  %713 = load double, ptr %78, align 8, !tbaa !11
  %714 = fcmp oeq double %712, %713
  br i1 %714, label %715, label %915

715:                                              ; preds = %711
  %716 = load i64, ptr %65, align 8, !tbaa !9
  %717 = icmp sgt i64 %716, 0
  br i1 %717, label %718, label %729

718:                                              ; preds = %715
  %719 = load i64, ptr %65, align 8, !tbaa !9
  %720 = add nsw i64 %719, 1
  store i64 %720, ptr %50, align 8, !tbaa !9
  %721 = load i64, ptr %53, align 8, !tbaa !9
  %722 = sub nsw i64 %721, 1
  store i64 %722, ptr %51, align 8, !tbaa !9
  %723 = load i64, ptr %54, align 8, !tbaa !9
  %724 = sub nsw i64 %723, 1
  store i64 %724, ptr %46, align 8, !tbaa !9
  %725 = load ptr, ptr %31, align 8, !tbaa !5
  %726 = getelementptr inbounds double, ptr %725, i64 1
  %727 = load ptr, ptr %26, align 8, !tbaa !5
  %728 = call i32 @dlascl_(ptr noundef @.str.11, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %70, ptr noundef %58, ptr noundef %46, ptr noundef @c__1, ptr noundef %726, ptr noundef %727, ptr noundef %59)
  br label %741

729:                                              ; preds = %715
  %730 = load i64, ptr %80, align 8, !tbaa !9
  %731 = icmp ne i64 %730, 0
  br i1 %731, label %732, label %736

732:                                              ; preds = %729
  store i64 1, ptr %50, align 8, !tbaa !9
  %733 = load ptr, ptr %26, align 8, !tbaa !5
  %734 = load i64, ptr %733, align 8, !tbaa !9
  %735 = sub nsw i64 %734, 1
  store i64 %735, ptr %51, align 8, !tbaa !9
  br label %740

736:                                              ; preds = %729
  %737 = load i64, ptr %54, align 8, !tbaa !9
  store i64 %737, ptr %50, align 8, !tbaa !9
  %738 = load i64, ptr %53, align 8, !tbaa !9
  %739 = sub nsw i64 %738, 1
  store i64 %739, ptr %51, align 8, !tbaa !9
  br label %740

740:                                              ; preds = %736, %732
  br label %741

741:                                              ; preds = %740, %718
  %742 = load i64, ptr %50, align 8, !tbaa !9
  %743 = sub nsw i64 %742, 1
  store i64 %743, ptr %63, align 8, !tbaa !9
  %744 = load i64, ptr %51, align 8, !tbaa !9
  store i64 %744, ptr %46, align 8, !tbaa !9
  %745 = load i64, ptr %50, align 8, !tbaa !9
  store i64 %745, ptr %49, align 8, !tbaa !9
  br label %746

746:                                              ; preds = %911, %741
  %747 = load i64, ptr %49, align 8, !tbaa !9
  %748 = load i64, ptr %46, align 8, !tbaa !9
  %749 = icmp sle i64 %747, %748
  br i1 %749, label %750, label %914

750:                                              ; preds = %746
  %751 = load i64, ptr %49, align 8, !tbaa !9
  %752 = load i64, ptr %63, align 8, !tbaa !9
  %753 = icmp slt i64 %751, %752
  br i1 %753, label %754, label %755

754:                                              ; preds = %750
  br label %910

755:                                              ; preds = %750
  %756 = load ptr, ptr %31, align 8, !tbaa !5
  %757 = load i64, ptr %49, align 8, !tbaa !9
  %758 = getelementptr inbounds double, ptr %756, i64 %757
  %759 = load double, ptr %758, align 8, !tbaa !11
  %760 = fcmp oeq double %759, 0.000000e+00
  br i1 %760, label %761, label %764

761:                                              ; preds = %755
  %762 = load i64, ptr %49, align 8, !tbaa !9
  %763 = add nsw i64 %762, 1
  store i64 %763, ptr %63, align 8, !tbaa !9
  br label %909

764:                                              ; preds = %755
  %765 = load ptr, ptr %27, align 8, !tbaa !5
  %766 = load i64, ptr %49, align 8, !tbaa !9
  %767 = add nsw i64 %766, 1
  %768 = load i64, ptr %49, align 8, !tbaa !9
  %769 = load i64, ptr %42, align 8, !tbaa !9
  %770 = mul nsw i64 %768, %769
  %771 = add nsw i64 %767, %770
  %772 = getelementptr inbounds double, ptr %765, i64 %771
  %773 = load double, ptr %772, align 8, !tbaa !11
  %774 = fcmp oeq double %773, 0.000000e+00
  br i1 %774, label %775, label %783

775:                                              ; preds = %764
  %776 = load ptr, ptr %31, align 8, !tbaa !5
  %777 = load i64, ptr %49, align 8, !tbaa !9
  %778 = getelementptr inbounds double, ptr %776, i64 %777
  store double 0.000000e+00, ptr %778, align 8, !tbaa !11
  %779 = load ptr, ptr %31, align 8, !tbaa !5
  %780 = load i64, ptr %49, align 8, !tbaa !9
  %781 = add nsw i64 %780, 1
  %782 = getelementptr inbounds double, ptr %779, i64 %781
  store double 0.000000e+00, ptr %782, align 8, !tbaa !11
  br label %906

783:                                              ; preds = %764
  %784 = load ptr, ptr %27, align 8, !tbaa !5
  %785 = load i64, ptr %49, align 8, !tbaa !9
  %786 = add nsw i64 %785, 1
  %787 = load i64, ptr %49, align 8, !tbaa !9
  %788 = load i64, ptr %42, align 8, !tbaa !9
  %789 = mul nsw i64 %787, %788
  %790 = add nsw i64 %786, %789
  %791 = getelementptr inbounds double, ptr %784, i64 %790
  %792 = load double, ptr %791, align 8, !tbaa !11
  %793 = fcmp une double %792, 0.000000e+00
  br i1 %793, label %794, label %905

794:                                              ; preds = %783
  %795 = load ptr, ptr %27, align 8, !tbaa !5
  %796 = load i64, ptr %49, align 8, !tbaa !9
  %797 = load i64, ptr %49, align 8, !tbaa !9
  %798 = add nsw i64 %797, 1
  %799 = load i64, ptr %42, align 8, !tbaa !9
  %800 = mul nsw i64 %798, %799
  %801 = add nsw i64 %796, %800
  %802 = getelementptr inbounds double, ptr %795, i64 %801
  %803 = load double, ptr %802, align 8, !tbaa !11
  %804 = fcmp oeq double %803, 0.000000e+00
  br i1 %804, label %805, label %905

805:                                              ; preds = %794
  %806 = load ptr, ptr %31, align 8, !tbaa !5
  %807 = load i64, ptr %49, align 8, !tbaa !9
  %808 = getelementptr inbounds double, ptr %806, i64 %807
  store double 0.000000e+00, ptr %808, align 8, !tbaa !11
  %809 = load ptr, ptr %31, align 8, !tbaa !5
  %810 = load i64, ptr %49, align 8, !tbaa !9
  %811 = add nsw i64 %810, 1
  %812 = getelementptr inbounds double, ptr %809, i64 %811
  store double 0.000000e+00, ptr %812, align 8, !tbaa !11
  %813 = load i64, ptr %49, align 8, !tbaa !9
  %814 = icmp sgt i64 %813, 1
  br i1 %814, label %815, label %832

815:                                              ; preds = %805
  %816 = load i64, ptr %49, align 8, !tbaa !9
  %817 = sub nsw i64 %816, 1
  store i64 %817, ptr %47, align 8, !tbaa !9
  %818 = load ptr, ptr %27, align 8, !tbaa !5
  %819 = load i64, ptr %49, align 8, !tbaa !9
  %820 = load i64, ptr %42, align 8, !tbaa !9
  %821 = mul nsw i64 %819, %820
  %822 = add nsw i64 %821, 1
  %823 = getelementptr inbounds double, ptr %818, i64 %822
  %824 = load ptr, ptr %27, align 8, !tbaa !5
  %825 = load i64, ptr %49, align 8, !tbaa !9
  %826 = add nsw i64 %825, 1
  %827 = load i64, ptr %42, align 8, !tbaa !9
  %828 = mul nsw i64 %826, %827
  %829 = add nsw i64 %828, 1
  %830 = getelementptr inbounds double, ptr %824, i64 %829
  %831 = call i32 @f2c_dswap(ptr noundef %47, ptr noundef %823, ptr noundef @c__1, ptr noundef %830, ptr noundef @c__1)
  br label %832

832:                                              ; preds = %815, %805
  %833 = load ptr, ptr %26, align 8, !tbaa !5
  %834 = load i64, ptr %833, align 8, !tbaa !9
  %835 = load i64, ptr %49, align 8, !tbaa !9
  %836 = add nsw i64 %835, 1
  %837 = icmp sgt i64 %834, %836
  br i1 %837, label %838, label %864

838:                                              ; preds = %832
  %839 = load ptr, ptr %26, align 8, !tbaa !5
  %840 = load i64, ptr %839, align 8, !tbaa !9
  %841 = load i64, ptr %49, align 8, !tbaa !9
  %842 = sub nsw i64 %840, %841
  %843 = sub nsw i64 %842, 1
  store i64 %843, ptr %47, align 8, !tbaa !9
  %844 = load ptr, ptr %27, align 8, !tbaa !5
  %845 = load i64, ptr %49, align 8, !tbaa !9
  %846 = load i64, ptr %49, align 8, !tbaa !9
  %847 = add nsw i64 %846, 2
  %848 = load i64, ptr %42, align 8, !tbaa !9
  %849 = mul nsw i64 %847, %848
  %850 = add nsw i64 %845, %849
  %851 = getelementptr inbounds double, ptr %844, i64 %850
  %852 = load ptr, ptr %28, align 8, !tbaa !5
  %853 = load ptr, ptr %27, align 8, !tbaa !5
  %854 = load i64, ptr %49, align 8, !tbaa !9
  %855 = add nsw i64 %854, 1
  %856 = load i64, ptr %49, align 8, !tbaa !9
  %857 = add nsw i64 %856, 2
  %858 = load i64, ptr %42, align 8, !tbaa !9
  %859 = mul nsw i64 %857, %858
  %860 = add nsw i64 %855, %859
  %861 = getelementptr inbounds double, ptr %853, i64 %860
  %862 = load ptr, ptr %28, align 8, !tbaa !5
  %863 = call i32 @f2c_dswap(ptr noundef %47, ptr noundef %851, ptr noundef %852, ptr noundef %861, ptr noundef %862)
  br label %864

864:                                              ; preds = %838, %832
  %865 = load ptr, ptr %26, align 8, !tbaa !5
  %866 = load ptr, ptr %32, align 8, !tbaa !5
  %867 = load i64, ptr %49, align 8, !tbaa !9
  %868 = load i64, ptr %44, align 8, !tbaa !9
  %869 = mul nsw i64 %867, %868
  %870 = add nsw i64 %869, 1
  %871 = getelementptr inbounds double, ptr %866, i64 %870
  %872 = load ptr, ptr %32, align 8, !tbaa !5
  %873 = load i64, ptr %49, align 8, !tbaa !9
  %874 = add nsw i64 %873, 1
  %875 = load i64, ptr %44, align 8, !tbaa !9
  %876 = mul nsw i64 %874, %875
  %877 = add nsw i64 %876, 1
  %878 = getelementptr inbounds double, ptr %872, i64 %877
  %879 = call i32 @f2c_dswap(ptr noundef %865, ptr noundef %871, ptr noundef @c__1, ptr noundef %878, ptr noundef @c__1)
  %880 = load ptr, ptr %27, align 8, !tbaa !5
  %881 = load i64, ptr %49, align 8, !tbaa !9
  %882 = add nsw i64 %881, 1
  %883 = load i64, ptr %49, align 8, !tbaa !9
  %884 = load i64, ptr %42, align 8, !tbaa !9
  %885 = mul nsw i64 %883, %884
  %886 = add nsw i64 %882, %885
  %887 = getelementptr inbounds double, ptr %880, i64 %886
  %888 = load double, ptr %887, align 8, !tbaa !11
  %889 = load ptr, ptr %27, align 8, !tbaa !5
  %890 = load i64, ptr %49, align 8, !tbaa !9
  %891 = load i64, ptr %49, align 8, !tbaa !9
  %892 = add nsw i64 %891, 1
  %893 = load i64, ptr %42, align 8, !tbaa !9
  %894 = mul nsw i64 %892, %893
  %895 = add nsw i64 %890, %894
  %896 = getelementptr inbounds double, ptr %889, i64 %895
  store double %888, ptr %896, align 8, !tbaa !11
  %897 = load ptr, ptr %27, align 8, !tbaa !5
  %898 = load i64, ptr %49, align 8, !tbaa !9
  %899 = add nsw i64 %898, 1
  %900 = load i64, ptr %49, align 8, !tbaa !9
  %901 = load i64, ptr %42, align 8, !tbaa !9
  %902 = mul nsw i64 %900, %901
  %903 = add nsw i64 %899, %902
  %904 = getelementptr inbounds double, ptr %897, i64 %903
  store double 0.000000e+00, ptr %904, align 8, !tbaa !11
  br label %905

905:                                              ; preds = %864, %794, %783
  br label %906

906:                                              ; preds = %905, %775
  %907 = load i64, ptr %49, align 8, !tbaa !9
  %908 = add nsw i64 %907, 2
  store i64 %908, ptr %63, align 8, !tbaa !9
  br label %909

909:                                              ; preds = %906, %761
  br label %910

910:                                              ; preds = %909, %754
  br label %911

911:                                              ; preds = %910
  %912 = load i64, ptr %49, align 8, !tbaa !9
  %913 = add nsw i64 %912, 1
  store i64 %913, ptr %49, align 8, !tbaa !9
  br label %746, !llvm.loop !15

914:                                              ; preds = %746
  br label %915

915:                                              ; preds = %914, %711
  %916 = load ptr, ptr %26, align 8, !tbaa !5
  %917 = load i64, ptr %916, align 8, !tbaa !9
  %918 = load i64, ptr %65, align 8, !tbaa !9
  %919 = sub nsw i64 %917, %918
  store i64 %919, ptr %46, align 8, !tbaa !9
  %920 = load ptr, ptr %26, align 8, !tbaa !5
  %921 = load i64, ptr %920, align 8, !tbaa !9
  %922 = load i64, ptr %65, align 8, !tbaa !9
  %923 = sub nsw i64 %921, %922
  store i64 %923, ptr %48, align 8, !tbaa !9
  %924 = load i64, ptr %48, align 8, !tbaa !9
  %925 = icmp sge i64 %924, 1
  br i1 %925, label %926, label %928

926:                                              ; preds = %915
  %927 = load i64, ptr %48, align 8, !tbaa !9
  br label %929

928:                                              ; preds = %915
  br label %929

929:                                              ; preds = %928, %926
  %930 = phi i64 [ %927, %926 ], [ 1, %928 ]
  store i64 %930, ptr %47, align 8, !tbaa !9
  %931 = load ptr, ptr %31, align 8, !tbaa !5
  %932 = load i64, ptr %65, align 8, !tbaa !9
  %933 = add nsw i64 %932, 1
  %934 = getelementptr inbounds double, ptr %931, i64 %933
  %935 = call i32 @dlascl_(ptr noundef @.str.11, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %70, ptr noundef %58, ptr noundef %46, ptr noundef @c__1, ptr noundef %934, ptr noundef %47, ptr noundef %59)
  br label %936

936:                                              ; preds = %929, %672
  %937 = load i64, ptr %80, align 8, !tbaa !9
  %938 = icmp ne i64 %937, 0
  br i1 %938, label %939, label %1025

939:                                              ; preds = %936
  %940 = load ptr, ptr %41, align 8, !tbaa !5
  %941 = load i64, ptr %940, align 8, !tbaa !9
  %942 = icmp eq i64 %941, 0
  br i1 %942, label %943, label %1025

943:                                              ; preds = %939
  store i64 1, ptr %74, align 8, !tbaa !9
  store i64 1, ptr %68, align 8, !tbaa !9
  %944 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 0, ptr %944, align 8, !tbaa !9
  store i64 0, ptr %52, align 8, !tbaa !9
  %945 = load ptr, ptr %26, align 8, !tbaa !5
  %946 = load i64, ptr %945, align 8, !tbaa !9
  store i64 %946, ptr %46, align 8, !tbaa !9
  store i64 1, ptr %49, align 8, !tbaa !9
  br label %947

947:                                              ; preds = %1021, %943
  %948 = load i64, ptr %49, align 8, !tbaa !9
  %949 = load i64, ptr %46, align 8, !tbaa !9
  %950 = icmp sle i64 %948, %949
  br i1 %950, label %951, label %1024

951:                                              ; preds = %947
  %952 = load ptr, ptr %24, align 8, !tbaa !5
  %953 = load ptr, ptr %30, align 8, !tbaa !5
  %954 = load i64, ptr %49, align 8, !tbaa !9
  %955 = getelementptr inbounds double, ptr %953, i64 %954
  %956 = load ptr, ptr %31, align 8, !tbaa !5
  %957 = load i64, ptr %49, align 8, !tbaa !9
  %958 = getelementptr inbounds double, ptr %956, i64 %957
  %959 = call i64 (ptr, ptr, ...) %952(ptr noundef %955, ptr noundef %958)
  store i64 %959, ptr %66, align 8, !tbaa !9
  %960 = load ptr, ptr %31, align 8, !tbaa !5
  %961 = load i64, ptr %49, align 8, !tbaa !9
  %962 = getelementptr inbounds double, ptr %960, i64 %961
  %963 = load double, ptr %962, align 8, !tbaa !11
  %964 = fcmp oeq double %963, 0.000000e+00
  br i1 %964, label %965, label %984

965:                                              ; preds = %951
  %966 = load i64, ptr %66, align 8, !tbaa !9
  %967 = icmp ne i64 %966, 0
  br i1 %967, label %968, label %972

968:                                              ; preds = %965
  %969 = load ptr, ptr %29, align 8, !tbaa !5
  %970 = load i64, ptr %969, align 8, !tbaa !9
  %971 = add nsw i64 %970, 1
  store i64 %971, ptr %969, align 8, !tbaa !9
  br label %972

972:                                              ; preds = %968, %965
  store i64 0, ptr %52, align 8, !tbaa !9
  %973 = load i64, ptr %66, align 8, !tbaa !9
  %974 = icmp ne i64 %973, 0
  br i1 %974, label %975, label %983

975:                                              ; preds = %972
  %976 = load i64, ptr %74, align 8, !tbaa !9
  %977 = icmp ne i64 %976, 0
  br i1 %977, label %983, label %978

978:                                              ; preds = %975
  %979 = load ptr, ptr %26, align 8, !tbaa !5
  %980 = load i64, ptr %979, align 8, !tbaa !9
  %981 = add nsw i64 %980, 2
  %982 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 %981, ptr %982, align 8, !tbaa !9
  br label %983

983:                                              ; preds = %978, %975, %972
  br label %1018

984:                                              ; preds = %951
  %985 = load i64, ptr %52, align 8, !tbaa !9
  %986 = icmp eq i64 %985, 1
  br i1 %986, label %987, label %1016

987:                                              ; preds = %984
  %988 = load i64, ptr %66, align 8, !tbaa !9
  %989 = icmp ne i64 %988, 0
  br i1 %989, label %993, label %990

990:                                              ; preds = %987
  %991 = load i64, ptr %74, align 8, !tbaa !9
  %992 = icmp ne i64 %991, 0
  br label %993

993:                                              ; preds = %990, %987
  %994 = phi i1 [ true, %987 ], [ %992, %990 ]
  %995 = zext i1 %994 to i32
  %996 = sext i32 %995 to i64
  store i64 %996, ptr %66, align 8, !tbaa !9
  %997 = load i64, ptr %66, align 8, !tbaa !9
  store i64 %997, ptr %74, align 8, !tbaa !9
  %998 = load i64, ptr %66, align 8, !tbaa !9
  %999 = icmp ne i64 %998, 0
  br i1 %999, label %1000, label %1004

1000:                                             ; preds = %993
  %1001 = load ptr, ptr %29, align 8, !tbaa !5
  %1002 = load i64, ptr %1001, align 8, !tbaa !9
  %1003 = add nsw i64 %1002, 2
  store i64 %1003, ptr %1001, align 8, !tbaa !9
  br label %1004

1004:                                             ; preds = %1000, %993
  store i64 -1, ptr %52, align 8, !tbaa !9
  %1005 = load i64, ptr %66, align 8, !tbaa !9
  %1006 = icmp ne i64 %1005, 0
  br i1 %1006, label %1007, label %1015

1007:                                             ; preds = %1004
  %1008 = load i64, ptr %68, align 8, !tbaa !9
  %1009 = icmp ne i64 %1008, 0
  br i1 %1009, label %1015, label %1010

1010:                                             ; preds = %1007
  %1011 = load ptr, ptr %26, align 8, !tbaa !5
  %1012 = load i64, ptr %1011, align 8, !tbaa !9
  %1013 = add nsw i64 %1012, 2
  %1014 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 %1013, ptr %1014, align 8, !tbaa !9
  br label %1015

1015:                                             ; preds = %1010, %1007, %1004
  br label %1017

1016:                                             ; preds = %984
  store i64 1, ptr %52, align 8, !tbaa !9
  br label %1017

1017:                                             ; preds = %1016, %1015
  br label %1018

1018:                                             ; preds = %1017, %983
  %1019 = load i64, ptr %74, align 8, !tbaa !9
  store i64 %1019, ptr %68, align 8, !tbaa !9
  %1020 = load i64, ptr %66, align 8, !tbaa !9
  store i64 %1020, ptr %74, align 8, !tbaa !9
  br label %1021

1021:                                             ; preds = %1018
  %1022 = load i64, ptr %49, align 8, !tbaa !9
  %1023 = add nsw i64 %1022, 1
  store i64 %1023, ptr %49, align 8, !tbaa !9
  br label %947, !llvm.loop !16

1024:                                             ; preds = %947
  br label %1025

1025:                                             ; preds = %1024, %939, %936
  %1026 = load i64, ptr %76, align 8, !tbaa !9
  %1027 = sitofp i64 %1026 to double
  %1028 = load ptr, ptr %36, align 8, !tbaa !5
  %1029 = getelementptr inbounds double, ptr %1028, i64 1
  store double %1027, ptr %1029, align 8, !tbaa !11
  %1030 = load i64, ptr %82, align 8, !tbaa !9
  %1031 = icmp ne i64 %1030, 0
  br i1 %1031, label %1035, label %1032

1032:                                             ; preds = %1025
  %1033 = load i64, ptr %72, align 8, !tbaa !9
  %1034 = icmp ne i64 %1033, 0
  br i1 %1034, label %1035, label %1055

1035:                                             ; preds = %1032, %1025
  store i64 1, ptr %46, align 8, !tbaa !9
  %1036 = load ptr, ptr %29, align 8, !tbaa !5
  %1037 = load i64, ptr %1036, align 8, !tbaa !9
  %1038 = load ptr, ptr %26, align 8, !tbaa !5
  %1039 = load i64, ptr %1038, align 8, !tbaa !9
  %1040 = load ptr, ptr %29, align 8, !tbaa !5
  %1041 = load i64, ptr %1040, align 8, !tbaa !9
  %1042 = sub nsw i64 %1039, %1041
  %1043 = mul nsw i64 %1037, %1042
  store i64 %1043, ptr %47, align 8, !tbaa !9
  %1044 = load i64, ptr %46, align 8, !tbaa !9
  %1045 = load i64, ptr %47, align 8, !tbaa !9
  %1046 = icmp sge i64 %1044, %1045
  br i1 %1046, label %1047, label %1049

1047:                                             ; preds = %1035
  %1048 = load i64, ptr %46, align 8, !tbaa !9
  br label %1051

1049:                                             ; preds = %1035
  %1050 = load i64, ptr %47, align 8, !tbaa !9
  br label %1051

1051:                                             ; preds = %1049, %1047
  %1052 = phi i64 [ %1048, %1047 ], [ %1050, %1049 ]
  %1053 = load ptr, ptr %38, align 8, !tbaa !5
  %1054 = getelementptr inbounds i64, ptr %1053, i64 1
  store i64 %1052, ptr %1054, align 8, !tbaa !9
  br label %1058

1055:                                             ; preds = %1032
  %1056 = load ptr, ptr %38, align 8, !tbaa !5
  %1057 = getelementptr inbounds i64, ptr %1056, i64 1
  store i64 1, ptr %1057, align 8, !tbaa !9
  br label %1058

1058:                                             ; preds = %1055, %1051
  store i32 0, ptr %21, align 4
  store i32 1, ptr %84, align 4
  br label %1059

1059:                                             ; preds = %1058, %390, %381
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  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
  %1060 = load i32, ptr %21, align 4
  ret i32 %1060
}

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

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

50:                                               ; preds = %20
  %51 = load i64, ptr %17, align 8, !tbaa !5
  %52 = icmp eq i64 %51, -1
  br label %53

53:                                               ; preds = %50, %20
  %54 = phi i1 [ true, %20 ], [ %52, %50 ]
  %.not = icmp ne i64 %42, 0
  br i1 %.not, label %57, label %55

55:                                               ; preds = %53
  %56 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #5
  %.not420 = icmp eq i64 %56, 0
  br i1 %.not420, label %.thread443.sink.split, label %57

57:                                               ; preds = %55, %53
  %.not422 = icmp eq i64 %43, 0
  br i1 %.not422, label %58, label %60

58:                                               ; preds = %57
  %59 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.2) #5
  %.not421 = icmp eq i64 %59, 0
  br i1 %.not421, label %.thread443.sink.split, label %60

60:                                               ; preds = %58, %57
  %61 = icmp eq i64 %44, 0
  %62 = icmp eq i64 %45, 0
  %or.cond.not465 = select i1 %61, i1 %62, i1 false
  %63 = icmp eq i64 %46, 0
  %or.cond3.not462 = select i1 %or.cond.not465, i1 %63, i1 false
  %64 = icmp eq i64 %47, 0
  %or.cond5.not460 = select i1 %or.cond3.not462, i1 %64, i1 false
  %65 = or i64 %44, %43
  %or.cond7.not = icmp eq i64 %65, 0
  %or.cond438 = select i1 %or.cond5.not460, i1 true, i1 %or.cond7.not
  br i1 %or.cond438, label %.thread443.sink.split, label %66

66:                                               ; preds = %60
  %67 = load i64, ptr %4, align 8, !tbaa !5
  %68 = icmp slt i64 %67, 0
  br i1 %68, label %.thread443.sink.split, label %69

69:                                               ; preds = %66
  %70 = load i64, ptr %6, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %67, i64 1)
  %71 = icmp slt i64 %70, %spec.select
  br i1 %71, label %.thread443.sink.split, label %72

72:                                               ; preds = %69
  %73 = load i64, ptr %11, align 8, !tbaa !5
  %74 = icmp slt i64 %73, 1
  %75 = icmp ult i64 %73, %67
  %or.cond458 = and i1 %.not, %75
  %or.cond = or i1 %74, %or.cond458
  br i1 %or.cond, label %.thread443.sink.split, label %76

76:                                               ; preds = %72
  %.pr = load i64, ptr %19, align 8, !tbaa !5
  %77 = icmp eq i64 %.pr, 0
  br i1 %77, label %78, label %.thread443

78:                                               ; preds = %76
  %79 = icmp eq i64 %67, 0
  br i1 %79, label %113, label %80

80:                                               ; preds = %78
  %81 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef nonnull %4, ptr noundef nonnull @c__0) #5
  %82 = add i64 %81, 2
  %83 = mul i64 %82, %67
  %84 = load i64, ptr %4, align 8, !tbaa !5
  %85 = mul nsw i64 %84, 3
  %86 = call i32 @dhseqr_(ptr noundef nonnull @.str.1, ptr noundef %0, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %14, ptr noundef nonnull @c_n1, ptr noundef nonnull %29) #5
  %87 = load double, ptr %14, align 8, !tbaa !9
  %88 = fptosi double %87 to i64
  br i1 %.not, label %89, label %98

89:                                               ; preds = %80
  store i64 %83, ptr %21, align 8, !tbaa !5
  %90 = load i64, ptr %4, align 8, !tbaa !5
  %91 = shl i64 %90, 1
  %92 = add nsw i64 %90, -1
  %93 = call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.6, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef nonnull %4, ptr noundef nonnull @c_n1) #5
  %94 = mul nsw i64 %92, %93
  %95 = add nsw i64 %94, %91
  %96 = load i64, ptr %21, align 8
  %97 = call i64 @llvm.smax.i64(i64 %96, i64 %95)
  br label %98

98:                                               ; preds = %80, %89
  %.sink499 = phi i64 [ %97, %89 ], [ %83, %80 ]
  %99 = load i64, ptr %4, align 8, !tbaa !5
  %100 = add nsw i64 %99, %88
  %101 = call i64 @llvm.smax.i64(i64 %.sink499, i64 %100)
  store i64 %.sink499, ptr %21, align 8
  store i64 %100, ptr %22, align 8
  br i1 %61, label %102, label %107

102:                                              ; preds = %98
  store i64 %101, ptr %21, align 8, !tbaa !5
  %103 = mul nsw i64 %99, %99
  %104 = lshr i64 %103, 1
  %105 = add nsw i64 %104, %99
  store i64 %105, ptr %22, align 8, !tbaa !5
  %106 = call i64 @llvm.smax.i64(i64 %101, i64 %105)
  br label %107

107:                                              ; preds = %102, %98
  %.0397 = phi i64 [ %101, %98 ], [ %106, %102 ]
  %108 = icmp ne i64 %46, 0
  %109 = icmp ne i64 %47, 0
  %or.cond9 = select i1 %108, i1 true, i1 %109
  br i1 %or.cond9, label %110, label %113

110:                                              ; preds = %107
  %111 = mul nsw i64 %99, %99
  %112 = lshr i64 %111, 2
  br label %113

113:                                              ; preds = %78, %110, %107
  %.1398 = phi i64 [ %.0397, %110 ], [ %.0397, %107 ], [ 1, %78 ]
  %.0393 = phi i64 [ %112, %110 ], [ 1, %107 ], [ 1, %78 ]
  %.0388 = phi i64 [ %85, %110 ], [ %85, %107 ], [ 1, %78 ]
  %.1 = phi i64 [ %101, %110 ], [ %101, %107 ], [ undef, %78 ]
  store i64 %.0393, ptr %16, align 8, !tbaa !5
  %114 = sitofp i64 %.1398 to double
  store double %114, ptr %14, align 8, !tbaa !9
  %115 = load i64, ptr %15, align 8, !tbaa !5
  %116 = icmp sge i64 %115, %.0388
  %or.cond11 = select i1 %116, i1 true, i1 %54
  br i1 %or.cond11, label %117, label %.thread443.sink.split

117:                                              ; preds = %113
  %118 = load i64, ptr %17, align 8, !tbaa !5
  %119 = icmp sgt i64 %118, 0
  %or.cond13 = select i1 %119, i1 true, i1 %54
  br i1 %or.cond13, label %.thread, label %.thread443.sink.split

.thread:                                          ; preds = %117
  %.pr440.pr = load i64, ptr %19, align 8, !tbaa !5
  %.not428 = icmp eq i64 %.pr440.pr, 0
  br i1 %.not428, label %123, label %.thread443

.thread443.sink.split:                            ; preds = %117, %113, %72, %69, %66, %60, %58, %55
  %.sink = phi i64 [ -1, %55 ], [ -2, %58 ], [ -4, %60 ], [ -5, %66 ], [ -7, %69 ], [ -12, %72 ], [ -16, %113 ], [ -18, %117 ]
  store i64 %.sink, ptr %19, align 8, !tbaa !5
  br label %.thread443

.thread443:                                       ; preds = %.thread443.sink.split, %76, %.thread
  %120 = phi i64 [ %.pr440.pr, %.thread ], [ %.pr, %76 ], [ %.sink, %.thread443.sink.split ]
  %121 = sub nsw i64 0, %120
  store i64 %121, ptr %21, align 8, !tbaa !5
  %122 = call i32 @xerbla_(ptr noundef nonnull @.str.8, ptr noundef nonnull %21) #5
  br label %331

123:                                              ; preds = %.thread
  %124 = load i64, ptr %4, align 8, !tbaa !5
  %125 = icmp eq i64 %124, 0
  br i1 %125, label %126, label %127

126:                                              ; preds = %123
  store i64 0, ptr %7, align 8, !tbaa !5
  br label %331

127:                                              ; preds = %123
  %128 = call double @dlamch_(ptr noundef nonnull @.str.9) #5
  %129 = call double @dlamch_(ptr noundef nonnull @.str.1) #5
  store double %129, ptr %32, align 8, !tbaa !9
  %130 = fdiv double 1.000000e+00, %129
  store double %130, ptr %31, align 8, !tbaa !9
  %131 = call i32 @dlabad_(ptr noundef nonnull %32, ptr noundef nonnull %31) #5
  %132 = load double, ptr %32, align 8, !tbaa !9
  %133 = call double @sqrt(double noundef %132) #5
  %134 = fdiv double %133, %128
  store double %134, ptr %32, align 8, !tbaa !9
  %135 = fdiv double 1.000000e+00, %134
  store double %135, ptr %31, align 8, !tbaa !9
  %136 = call double @dlange_(ptr noundef nonnull @.str.10, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %25) #5
  store double %136, ptr %26, align 8, !tbaa !9
  %137 = fcmp ogt double %136, 0.000000e+00
  %138 = load double, ptr %32, align 8
  %139 = fcmp olt double %136, %138
  %or.cond469 = select i1 %137, i1 %139, i1 false
  br i1 %or.cond469, label %143, label %140

140:                                              ; preds = %127
  %141 = load double, ptr %31, align 8, !tbaa !9
  %142 = fcmp ogt double %136, %141
  br i1 %142, label %143, label %145

143:                                              ; preds = %127, %140
  %storemerge466 = phi double [ %141, %140 ], [ %138, %127 ]
  store double %storemerge466, ptr %30, align 8, !tbaa !9
  %144 = call i32 @dlascl_(ptr noundef nonnull @.str.11, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %26, ptr noundef nonnull %30, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %27) #5
  br label %145

145:                                              ; preds = %140, %143
  %.not429450 = phi i1 [ false, %143 ], [ true, %140 ]
  %146 = call i32 @dgebal_(ptr noundef nonnull @.str.9, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %24, ptr noundef nonnull %23, ptr noundef nonnull %14, ptr noundef nonnull %27) #5
  %147 = load i64, ptr %4, align 8, !tbaa !5
  %reass.add = shl i64 %147, 1
  %148 = or disjoint i64 %reass.add, 1
  %149 = load i64, ptr %15, align 8, !tbaa !5
  %150 = add i64 %149, 1
  %151 = sub i64 %150, %148
  store i64 %151, ptr %21, align 8, !tbaa !5
  %152 = getelementptr double, ptr %14, i64 %147
  %153 = getelementptr double, ptr %14, i64 %reass.add
  %154 = call i32 @dgehrd_(ptr noundef nonnull %4, ptr noundef nonnull %24, ptr noundef nonnull %23, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %152, ptr noundef nonnull %153, ptr noundef nonnull %21, ptr noundef nonnull %27) #5
  br i1 %.not, label %155, label %160

155:                                              ; preds = %145
  %156 = call i32 @dlacpy_(ptr noundef nonnull @.str.12, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %10, ptr noundef nonnull %11) #5
  %157 = load i64, ptr %15, align 8, !tbaa !5
  %reass.sub = sub i64 %157, %148
  %158 = add i64 %reass.sub, 1
  store i64 %158, ptr %21, align 8, !tbaa !5
  %159 = call i32 @dorghr_(ptr noundef nonnull %4, ptr noundef nonnull %24, ptr noundef nonnull %23, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %152, ptr noundef nonnull %153, ptr noundef nonnull %21, ptr noundef nonnull %27) #5
  br label %160

160:                                              ; preds = %155, %145
  store i64 0, ptr %7, align 8, !tbaa !5
  %161 = load i64, ptr %15, align 8, !tbaa !5
  %162 = sub i64 %161, %147
  store i64 %162, ptr %21, align 8, !tbaa !5
  %163 = call i32 @dhseqr_(ptr noundef nonnull @.str.1, ptr noundef %0, ptr noundef nonnull %4, ptr noundef nonnull %24, ptr noundef nonnull %23, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %152, ptr noundef nonnull %21, ptr noundef nonnull %29) #5
  %164 = load i64, ptr %29, align 8, !tbaa !5
  %165 = icmp sgt i64 %164, 0
  br i1 %165, label %166, label %167

166:                                              ; preds = %160
  store i64 %164, ptr %19, align 8, !tbaa !5
  br label %167

167:                                              ; preds = %166, %160
  br i1 %.not422, label %202, label %168

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

171:                                              ; preds = %168
  br i1 %.not429450, label %175, label %172

172:                                              ; preds = %171
  %173 = call i32 @dlascl_(ptr noundef nonnull @.str.11, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %30, ptr noundef nonnull %26, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef %8, ptr noundef nonnull %4, ptr noundef nonnull %27) #5
  %174 = call i32 @dlascl_(ptr noundef nonnull @.str.11, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %30, ptr noundef nonnull %26, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef %9, ptr noundef nonnull %4, ptr noundef nonnull %27) #5
  br label %175

175:                                              ; preds = %172, %171
  %176 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %176, ptr %21, align 8, !tbaa !5
  %.not431472 = icmp slt i64 %176, 1
  br i1 %.not431472, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %175, %.lr.ph
  %.0399473 = phi i64 [ %181, %.lr.ph ], [ 1, %175 ]
  %177 = getelementptr inbounds double, ptr %36, i64 %.0399473
  %178 = getelementptr inbounds double, ptr %37, i64 %.0399473
  %179 = call i64 (ptr, ptr, ...) %2(ptr noundef nonnull %177, ptr noundef nonnull %178) #5
  %180 = getelementptr inbounds i64, ptr %41, i64 %.0399473
  store i64 %179, ptr %180, align 8, !tbaa !5
  %181 = add nuw nsw i64 %.0399473, 1
  %182 = load i64, ptr %21, align 8, !tbaa !5
  %.not431.not = icmp slt i64 %.0399473, %182
  br i1 %.not431.not, label %.lr.ph, label %._crit_edge, !llvm.loop !11

._crit_edge:                                      ; preds = %.lr.ph, %175
  %183 = load i64, ptr %15, align 8, !tbaa !5
  %184 = sub i64 %183, %147
  store i64 %184, ptr %21, align 8, !tbaa !5
  %185 = call i32 @dtrsen_(ptr noundef %3, ptr noundef %0, ptr noundef %18, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %8, ptr noundef %9, ptr noundef nonnull %7, ptr noundef %12, ptr noundef %13, ptr noundef %152, ptr noundef nonnull %21, ptr noundef nonnull %16, ptr noundef nonnull %17, ptr noundef nonnull %28) #5
  br i1 %61, label %186, label %194

186:                                              ; preds = %._crit_edge
  store i64 %.1, ptr %21, align 8, !tbaa !5
  %187 = load i64, ptr %4, align 8, !tbaa !5
  %188 = load i64, ptr %7, align 8, !tbaa !5
  %189 = shl i64 %188, 1
  %190 = sub nsw i64 %187, %188
  %191 = mul nsw i64 %189, %190
  %192 = add nsw i64 %191, %187
  store i64 %192, ptr %22, align 8, !tbaa !5
  %193 = call i64 @llvm.smax.i64(i64 %.1, i64 %192)
  br label %194

194:                                              ; preds = %186, %._crit_edge
  %.3 = phi i64 [ %.1, %._crit_edge ], [ %193, %186 ]
  %195 = load i64, ptr %28, align 8, !tbaa !5
  switch i64 %195, label %197 [
    i64 -15, label %.sink.split
    i64 -17, label %196
  ]

196:                                              ; preds = %194
  br label %.sink.split

197:                                              ; preds = %194
  %198 = icmp sgt i64 %195, 0
  br i1 %198, label %199, label %202

199:                                              ; preds = %197
  %200 = load i64, ptr %4, align 8, !tbaa !5
  %201 = add nsw i64 %200, %195
  br label %.sink.split

.sink.split:                                      ; preds = %194, %196, %199
  %.sink502 = phi i64 [ %201, %199 ], [ -18, %196 ], [ -16, %194 ]
  store i64 %.sink502, ptr %19, align 8, !tbaa !5
  br label %202

202:                                              ; preds = %.sink.split, %197, %168, %167
  %.4 = phi i64 [ %.3, %197 ], [ %.1, %168 ], [ %.1, %167 ], [ %.3, %.sink.split ]
  br i1 %.not, label %203, label %205

203:                                              ; preds = %202
  %204 = call i32 @dgebak_(ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.13, ptr noundef nonnull %4, ptr noundef nonnull %24, ptr noundef nonnull %23, ptr noundef nonnull %14, ptr noundef nonnull %4, ptr noundef %10, ptr noundef nonnull %11, ptr noundef nonnull %27) #5
  br label %205

205:                                              ; preds = %203, %202
  br i1 %.not429450, label %292, label %206

206:                                              ; preds = %205
  %207 = call i32 @dlascl_(ptr noundef nonnull @.str.14, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %30, ptr noundef nonnull %26, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %27) #5
  %208 = load i64, ptr %6, align 8, !tbaa !5
  %209 = add nsw i64 %208, 1
  store i64 %209, ptr %21, align 8, !tbaa !5
  %210 = call i32 @f2c_dcopy(ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %21, ptr noundef %8, ptr noundef nonnull @c__1) #5
  %211 = icmp ne i64 %46, 0
  %212 = icmp ne i64 %47, 0
  %or.cond15 = select i1 %211, i1 true, i1 %212
  br i1 %or.cond15, label %213, label %220

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

216:                                              ; preds = %213
  %217 = load double, ptr %13, align 8, !tbaa !9
  store double %217, ptr %25, align 8, !tbaa !9
  %218 = call i32 @dlascl_(ptr noundef nonnull @.str.11, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %30, ptr noundef nonnull %26, ptr noundef nonnull @c__1, ptr noundef nonnull @c__1, ptr noundef nonnull %25, ptr noundef nonnull @c__1, ptr noundef nonnull %27) #5
  %219 = load double, ptr %25, align 8, !tbaa !9
  store double %219, ptr %13, align 8, !tbaa !9
  br label %220

220:                                              ; preds = %206, %216, %213
  %221 = load double, ptr %30, align 8, !tbaa !9
  %222 = load double, ptr %32, align 8, !tbaa !9
  %223 = fcmp oeq double %221, %222
  br i1 %223, label %224, label %.loopexit471

224:                                              ; preds = %220
  %225 = load i64, ptr %29, align 8, !tbaa !5
  %226 = icmp sgt i64 %225, 0
  br i1 %226, label %227, label %233

227:                                              ; preds = %224
  %228 = add nuw nsw i64 %225, 1
  %229 = load i64, ptr %23, align 8, !tbaa !5
  %230 = load i64, ptr %24, align 8, !tbaa !5
  %231 = add nsw i64 %230, -1
  store i64 %231, ptr %21, align 8, !tbaa !5
  %232 = call i32 @dlascl_(ptr noundef nonnull @.str.11, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %30, ptr noundef nonnull %26, ptr noundef nonnull %21, ptr noundef nonnull @c__1, ptr noundef %9, ptr noundef nonnull %4, ptr noundef nonnull %27) #5
  br label %239

233:                                              ; preds = %224
  br i1 %.not422, label %236, label %234

234:                                              ; preds = %233
  %235 = load i64, ptr %4, align 8, !tbaa !5
  br label %239

236:                                              ; preds = %233
  %237 = load i64, ptr %24, align 8, !tbaa !5
  %238 = load i64, ptr %23, align 8, !tbaa !5
  br label %239

239:                                              ; preds = %234, %236, %227
  %.0403.in = phi i64 [ %229, %227 ], [ %235, %234 ], [ %238, %236 ]
  %.0402 = phi i64 [ %228, %227 ], [ 1, %234 ], [ %237, %236 ]
  %.0403 = add nsw i64 %.0403.in, -1
  store i64 %.0403, ptr %21, align 8, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %35, i64 8
  %invariant.gep476 = getelementptr i8, ptr %40, i64 8
  %.not434480.not = icmp slt i64 %.0402, %.0403.in
  br i1 %.not434480.not, label %.lr.ph486.preheader, label %.loopexit471

.lr.ph486.preheader:                              ; preds = %239
  %240 = add nsw i64 %.0402, -1
  br label %.lr.ph486

.lr.ph486:                                        ; preds = %.lr.ph486.preheader, %284
  %.pre495 = phi i64 [ %.pre496, %284 ], [ %.0403, %.lr.ph486.preheader ]
  %241 = phi i64 [ %285, %284 ], [ %.0403, %.lr.ph486.preheader ]
  %.0395484 = phi i64 [ %.1396, %284 ], [ %240, %.lr.ph486.preheader ]
  %.1400481 = phi i64 [ %.pre-phi, %284 ], [ %.0402, %.lr.ph486.preheader ]
  %242 = icmp slt i64 %.1400481, %.0395484
  br i1 %242, label %.lr.ph486._crit_edge, label %243

.lr.ph486._crit_edge:                             ; preds = %.lr.ph486
  %.pre498 = add nsw i64 %.1400481, 1
  br label %284

243:                                              ; preds = %.lr.ph486
  %244 = getelementptr inbounds double, ptr %37, i64 %.1400481
  %245 = load double, ptr %244, align 8, !tbaa !9
  %246 = fcmp oeq double %245, 0.000000e+00
  %247 = add nsw i64 %.1400481, 1
  br i1 %246, label %284, label %248

248:                                              ; preds = %243
  %249 = mul nsw i64 %.1400481, %33
  %250 = getelementptr double, ptr %35, i64 %247
  %251 = getelementptr double, ptr %250, i64 %249
  %252 = load double, ptr %251, align 8, !tbaa !9
  %253 = fcmp oeq double %252, 0.000000e+00
  br i1 %253, label %254, label %255

254:                                              ; preds = %248
  store <2 x double> zeroinitializer, ptr %244, align 8, !tbaa !9
  br label %282

255:                                              ; preds = %248
  %256 = mul nsw i64 %247, %33
  %257 = getelementptr double, ptr %35, i64 %.1400481
  %258 = getelementptr double, ptr %257, i64 %256
  %259 = load double, ptr %258, align 8, !tbaa !9
  %260 = fcmp oeq double %259, 0.000000e+00
  br i1 %260, label %261, label %282

261:                                              ; preds = %255
  store <2 x double> zeroinitializer, ptr %244, align 8, !tbaa !9
  %262 = icmp sgt i64 %.1400481, 1
  br i1 %262, label %263, label %266

263:                                              ; preds = %261
  %264 = add nsw i64 %.1400481, -1
  store i64 %264, ptr %22, align 8, !tbaa !5
  %gep = getelementptr double, ptr %invariant.gep, i64 %249
  %gep475 = getelementptr double, ptr %invariant.gep, i64 %256
  %265 = call i32 @f2c_dswap(ptr noundef nonnull %22, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %gep475, ptr noundef nonnull @c__1) #5
  br label %266

266:                                              ; preds = %263, %261
  %267 = load i64, ptr %4, align 8, !tbaa !5
  %268 = icmp sgt i64 %267, %247
  br i1 %268, label %269, label %277

269:                                              ; preds = %266
  %270 = xor i64 %.1400481, -1
  %271 = add i64 %267, %270
  store i64 %271, ptr %22, align 8, !tbaa !5
  %272 = add nsw i64 %.1400481, 2
  %273 = mul nsw i64 %272, %33
  %274 = getelementptr double, ptr %257, i64 %273
  %275 = getelementptr double, ptr %250, i64 %273
  %276 = call i32 @f2c_dswap(ptr noundef nonnull %22, ptr noundef %274, ptr noundef nonnull %6, ptr noundef %275, ptr noundef nonnull %6) #5
  br label %277

277:                                              ; preds = %269, %266
  %278 = mul nsw i64 %.1400481, %38
  %gep477 = getelementptr double, ptr %invariant.gep476, i64 %278
  %279 = mul nsw i64 %247, %38
  %gep479 = getelementptr double, ptr %invariant.gep476, i64 %279
  %280 = call i32 @f2c_dswap(ptr noundef nonnull %4, ptr noundef %gep477, ptr noundef nonnull @c__1, ptr noundef %gep479, ptr noundef nonnull @c__1) #5
  %281 = load double, ptr %251, align 8, !tbaa !9
  store double %281, ptr %258, align 8, !tbaa !9
  store double 0.000000e+00, ptr %251, align 8, !tbaa !9
  %.pre.pre = load i64, ptr %21, align 8, !tbaa !5
  br label %282

282:                                              ; preds = %255, %277, %254
  %.pre = phi i64 [ %.pre495, %255 ], [ %.pre.pre, %277 ], [ %.pre495, %254 ]
  %283 = add nsw i64 %.1400481, 2
  br label %284

284:                                              ; preds = %243, %.lr.ph486._crit_edge, %282
  %.pre-phi = phi i64 [ %.pre498, %.lr.ph486._crit_edge ], [ %247, %282 ], [ %247, %243 ]
  %.pre496 = phi i64 [ %.pre495, %.lr.ph486._crit_edge ], [ %.pre, %282 ], [ %.pre495, %243 ]
  %285 = phi i64 [ %241, %.lr.ph486._crit_edge ], [ %.pre, %282 ], [ %241, %243 ]
  %.1396 = phi i64 [ %.0395484, %.lr.ph486._crit_edge ], [ %283, %282 ], [ %247, %243 ]
  %.not434.not = icmp slt i64 %.1400481, %285
  br i1 %.not434.not, label %.lr.ph486, label %.loopexit471, !llvm.loop !13

.loopexit471:                                     ; preds = %284, %239, %220
  %286 = load i64, ptr %4, align 8, !tbaa !5
  %287 = load i64, ptr %29, align 8, !tbaa !5
  %288 = sub nsw i64 %286, %287
  store i64 %288, ptr %21, align 8, !tbaa !5
  %289 = call i64 @llvm.smax.i64(i64 %288, i64 1)
  store i64 %289, ptr %22, align 8, !tbaa !5
  %290 = getelementptr double, ptr %9, i64 %287
  %291 = call i32 @dlascl_(ptr noundef nonnull @.str.11, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %30, ptr noundef nonnull %26, ptr noundef nonnull %21, ptr noundef nonnull @c__1, ptr noundef %290, ptr noundef nonnull %22, ptr noundef nonnull %27) #5
  br label %292

292:                                              ; preds = %.loopexit471, %205
  br i1 %.not422, label %.loopexit, label %293

293:                                              ; preds = %292
  %294 = load i64, ptr %19, align 8, !tbaa !5
  %295 = icmp eq i64 %294, 0
  br i1 %295, label %296, label %.loopexit

296:                                              ; preds = %293
  store i64 0, ptr %7, align 8, !tbaa !5
  %297 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %297, ptr %21, align 8, !tbaa !5
  %.not435487 = icmp slt i64 %297, 1
  br i1 %.not435487, label %.loopexit, label %.lr.ph493

.lr.ph493:                                        ; preds = %296, %.thread451
  %.0389491 = phi i64 [ %.0394, %.thread451 ], [ 1, %296 ]
  %.0392490 = phi i64 [ %.1390, %.thread451 ], [ 1, %296 ]
  %.2401489 = phi i64 [ %319, %.thread451 ], [ 1, %296 ]
  %.0404488 = phi i64 [ %.1405, %.thread451 ], [ 0, %296 ]
  %298 = getelementptr inbounds double, ptr %36, i64 %.2401489
  %299 = getelementptr inbounds double, ptr %37, i64 %.2401489
  %300 = call i64 (ptr, ptr, ...) %2(ptr noundef nonnull %298, ptr noundef nonnull %299) #5
  %301 = load double, ptr %299, align 8, !tbaa !9
  %302 = fcmp oeq double %301, 0.000000e+00
  br i1 %302, label %303, label %307

303:                                              ; preds = %.lr.ph493
  %.not437 = icmp eq i64 %300, 0
  br i1 %.not437, label %.thread451, label %304

304:                                              ; preds = %303
  %305 = load i64, ptr %7, align 8, !tbaa !5
  %306 = add nsw i64 %305, 1
  store i64 %306, ptr %7, align 8, !tbaa !5
  %.not467 = icmp eq i64 %.0389491, 0
  br i1 %.not467, label %.thread451.sink.split, label %.thread451

307:                                              ; preds = %.lr.ph493
  %308 = icmp eq i64 %.0404488, 1
  br i1 %308, label %309, label %.thread451

309:                                              ; preds = %307
  %310 = icmp ne i64 %300, 0
  %311 = icmp ne i64 %.0389491, 0
  %312 = select i1 %310, i1 true, i1 %311
  br i1 %312, label %313, label %.thread451

313:                                              ; preds = %309
  %314 = load i64, ptr %7, align 8, !tbaa !5
  %315 = add nsw i64 %314, 2
  store i64 %315, ptr %7, align 8, !tbaa !5
  %316 = icmp eq i64 %.0392490, 0
  br i1 %316, label %.thread451.sink.split, label %.thread451

.thread451.sink.split:                            ; preds = %313, %304
  %.1405.ph = phi i64 [ 0, %304 ], [ -1, %313 ]
  %.0394.ph = phi i64 [ %300, %304 ], [ 1, %313 ]
  %.1390.ph = phi i64 [ 0, %304 ], [ 1, %313 ]
  %317 = load i64, ptr %4, align 8, !tbaa !5
  %318 = add nsw i64 %317, 2
  store i64 %318, ptr %19, align 8, !tbaa !5
  br label %.thread451

.thread451:                                       ; preds = %.thread451.sink.split, %309, %303, %307, %313, %304
  %.1405 = phi i64 [ 0, %304 ], [ -1, %313 ], [ 1, %307 ], [ 0, %303 ], [ -1, %309 ], [ %.1405.ph, %.thread451.sink.split ]
  %.0394 = phi i64 [ %300, %304 ], [ 1, %313 ], [ %300, %307 ], [ 0, %303 ], [ 0, %309 ], [ %.0394.ph, %.thread451.sink.split ]
  %.1390 = phi i64 [ %.0389491, %304 ], [ 1, %313 ], [ %.0389491, %307 ], [ %.0389491, %303 ], [ 0, %309 ], [ %.1390.ph, %.thread451.sink.split ]
  %319 = add nuw nsw i64 %.2401489, 1
  %320 = load i64, ptr %21, align 8, !tbaa !5
  %.not435.not = icmp slt i64 %.2401489, %320
  br i1 %.not435.not, label %.lr.ph493, label %.loopexit, !llvm.loop !14

.loopexit:                                        ; preds = %.thread451, %296, %293, %292
  %321 = sitofp i64 %.4 to double
  store double %321, ptr %14, align 8, !tbaa !9
  %322 = icmp ne i64 %46, 0
  %323 = icmp ne i64 %47, 0
  %or.cond21 = select i1 %322, i1 true, i1 %323
  br i1 %or.cond21, label %324, label %330

324:                                              ; preds = %.loopexit
  %325 = load i64, ptr %7, align 8, !tbaa !5
  %326 = load i64, ptr %4, align 8, !tbaa !5
  %327 = sub nsw i64 %326, %325
  %328 = mul nsw i64 %327, %325
  %329 = call i64 @llvm.smax.i64(i64 %328, i64 1)
  br label %330

330:                                              ; preds = %.loopexit, %324
  %storemerge = phi i64 [ %329, %324 ], [ 1, %.loopexit ]
  store i64 %storemerge, ptr %16, align 8, !tbaa !5
  br label %331

331:                                              ; preds = %330, %126, %.thread443
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #5
  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
  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,MergedLoadStoreMotionPass,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass