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

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

; Function Attrs: nounwind uwtable
define dso_local i32 @dsysvxx_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22, ptr noundef %23, ptr noundef %24, ptr noundef %25) #0 {
  %27 = alloca i32, align 4
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca ptr, align 8
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca ptr, align 8
  %47 = alloca ptr, align 8
  %48 = alloca ptr, align 8
  %49 = alloca ptr, align 8
  %50 = alloca ptr, align 8
  %51 = alloca ptr, align 8
  %52 = alloca ptr, align 8
  %53 = alloca ptr, align 8
  %54 = alloca i64, align 8
  %55 = alloca i64, align 8
  %56 = alloca i64, align 8
  %57 = alloca i64, align 8
  %58 = alloca i64, align 8
  %59 = alloca i64, align 8
  %60 = alloca i64, align 8
  %61 = alloca 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 double, align 8
  %68 = alloca double, align 8
  %69 = alloca i64, align 8
  %70 = alloca double, align 8
  %71 = alloca double, align 8
  %72 = alloca double, align 8
  %73 = alloca double, align 8
  %74 = alloca i64, align 8
  %75 = alloca i64, align 8
  %76 = alloca i64, align 8
  %77 = alloca double, align 8
  %78 = alloca i64, align 8
  %79 = alloca double, align 8
  %80 = alloca i32, align 4
  store ptr %0, ptr %28, align 8, !tbaa !5
  store ptr %1, ptr %29, align 8, !tbaa !5
  store ptr %2, ptr %30, align 8, !tbaa !5
  store ptr %3, ptr %31, align 8, !tbaa !5
  store ptr %4, ptr %32, align 8, !tbaa !5
  store ptr %5, ptr %33, align 8, !tbaa !5
  store ptr %6, ptr %34, align 8, !tbaa !5
  store ptr %7, ptr %35, align 8, !tbaa !5
  store ptr %8, ptr %36, align 8, !tbaa !5
  store ptr %9, ptr %37, align 8, !tbaa !5
  store ptr %10, ptr %38, align 8, !tbaa !5
  store ptr %11, ptr %39, align 8, !tbaa !5
  store ptr %12, ptr %40, align 8, !tbaa !5
  store ptr %13, ptr %41, align 8, !tbaa !5
  store ptr %14, ptr %42, align 8, !tbaa !5
  store ptr %15, ptr %43, align 8, !tbaa !5
  store ptr %16, ptr %44, align 8, !tbaa !5
  store ptr %17, ptr %45, align 8, !tbaa !5
  store ptr %18, ptr %46, align 8, !tbaa !5
  store ptr %19, ptr %47, align 8, !tbaa !5
  store ptr %20, ptr %48, align 8, !tbaa !5
  store ptr %21, ptr %49, align 8, !tbaa !5
  store ptr %22, ptr %50, align 8, !tbaa !5
  store ptr %23, ptr %51, align 8, !tbaa !5
  store ptr %24, ptr %52, align 8, !tbaa !5
  store ptr %25, ptr %53, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #3
  %81 = load ptr, ptr %31, align 8, !tbaa !5
  %82 = load i64, ptr %81, align 8, !tbaa !9
  store i64 %82, ptr %64, align 8, !tbaa !9
  %83 = load i64, ptr %64, align 8, !tbaa !9
  %84 = add nsw i64 1, %83
  store i64 %84, ptr %65, align 8, !tbaa !9
  %85 = load i64, ptr %65, align 8, !tbaa !9
  %86 = load ptr, ptr %48, align 8, !tbaa !5
  %87 = sub i64 0, %85
  %88 = getelementptr inbounds double, ptr %86, i64 %87
  store ptr %88, ptr %48, align 8, !tbaa !5
  %89 = load ptr, ptr %31, align 8, !tbaa !5
  %90 = load i64, ptr %89, align 8, !tbaa !9
  store i64 %90, ptr %62, align 8, !tbaa !9
  %91 = load i64, ptr %62, align 8, !tbaa !9
  %92 = add nsw i64 1, %91
  store i64 %92, ptr %63, align 8, !tbaa !9
  %93 = load i64, ptr %63, align 8, !tbaa !9
  %94 = load ptr, ptr %47, align 8, !tbaa !5
  %95 = sub i64 0, %93
  %96 = getelementptr inbounds double, ptr %94, i64 %95
  store ptr %96, ptr %47, 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 %54, align 8, !tbaa !9
  %99 = load i64, ptr %54, align 8, !tbaa !9
  %100 = add nsw i64 1, %99
  store i64 %100, ptr %55, align 8, !tbaa !9
  %101 = load i64, ptr %55, 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 %35, align 8, !tbaa !5
  %106 = load i64, ptr %105, align 8, !tbaa !9
  store i64 %106, ptr %56, align 8, !tbaa !9
  %107 = load i64, ptr %56, align 8, !tbaa !9
  %108 = add nsw i64 1, %107
  store i64 %108, ptr %57, align 8, !tbaa !9
  %109 = load i64, ptr %57, align 8, !tbaa !9
  %110 = load ptr, ptr %34, align 8, !tbaa !5
  %111 = sub i64 0, %109
  %112 = getelementptr inbounds double, ptr %110, i64 %111
  store ptr %112, ptr %34, align 8, !tbaa !5
  %113 = load ptr, ptr %36, align 8, !tbaa !5
  %114 = getelementptr inbounds i64, ptr %113, i32 -1
  store ptr %114, ptr %36, align 8, !tbaa !5
  %115 = load ptr, ptr %38, align 8, !tbaa !5
  %116 = getelementptr inbounds double, ptr %115, i32 -1
  store ptr %116, ptr %38, align 8, !tbaa !5
  %117 = load ptr, ptr %40, align 8, !tbaa !5
  %118 = load i64, ptr %117, align 8, !tbaa !9
  store i64 %118, ptr %58, align 8, !tbaa !9
  %119 = load i64, ptr %58, align 8, !tbaa !9
  %120 = add nsw i64 1, %119
  store i64 %120, ptr %59, align 8, !tbaa !9
  %121 = load i64, ptr %59, align 8, !tbaa !9
  %122 = load ptr, ptr %39, align 8, !tbaa !5
  %123 = sub i64 0, %121
  %124 = getelementptr inbounds double, ptr %122, i64 %123
  store ptr %124, ptr %39, align 8, !tbaa !5
  %125 = load ptr, ptr %42, align 8, !tbaa !5
  %126 = load i64, ptr %125, align 8, !tbaa !9
  store i64 %126, ptr %60, align 8, !tbaa !9
  %127 = load i64, ptr %60, align 8, !tbaa !9
  %128 = add nsw i64 1, %127
  store i64 %128, ptr %61, align 8, !tbaa !9
  %129 = load i64, ptr %61, align 8, !tbaa !9
  %130 = load ptr, ptr %41, align 8, !tbaa !5
  %131 = sub i64 0, %129
  %132 = getelementptr inbounds double, ptr %130, i64 %131
  store ptr %132, ptr %41, align 8, !tbaa !5
  %133 = load ptr, ptr %45, align 8, !tbaa !5
  %134 = getelementptr inbounds double, ptr %133, i32 -1
  store ptr %134, ptr %45, align 8, !tbaa !5
  %135 = load ptr, ptr %50, align 8, !tbaa !5
  %136 = getelementptr inbounds double, ptr %135, i32 -1
  store ptr %136, ptr %50, align 8, !tbaa !5
  %137 = load ptr, ptr %51, align 8, !tbaa !5
  %138 = getelementptr inbounds double, ptr %137, i32 -1
  store ptr %138, ptr %51, align 8, !tbaa !5
  %139 = load ptr, ptr %52, align 8, !tbaa !5
  %140 = getelementptr inbounds i64, ptr %139, i32 -1
  store ptr %140, ptr %52, align 8, !tbaa !5
  %141 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 0, ptr %141, align 8, !tbaa !9
  %142 = load ptr, ptr %28, align 8, !tbaa !5
  %143 = call i64 @lsame_(ptr noundef %142, ptr noundef @.str)
  store i64 %143, ptr %76, align 8, !tbaa !9
  %144 = load ptr, ptr %28, align 8, !tbaa !5
  %145 = call i64 @lsame_(ptr noundef %144, ptr noundef @.str.1)
  store i64 %145, ptr %74, align 8, !tbaa !9
  %146 = call double @dlamch_(ptr noundef @.str.2)
  store double %146, ptr %79, align 8, !tbaa !11
  %147 = load double, ptr %79, align 8, !tbaa !11
  %148 = fdiv double 1.000000e+00, %147
  store double %148, ptr %77, align 8, !tbaa !11
  %149 = load i64, ptr %76, align 8, !tbaa !9
  %150 = icmp ne i64 %149, 0
  br i1 %150, label %154, label %151

151:                                              ; preds = %26
  %152 = load i64, ptr %74, align 8, !tbaa !9
  %153 = icmp ne i64 %152, 0
  br i1 %153, label %154, label %156

154:                                              ; preds = %151, %26
  %155 = load ptr, ptr %37, align 8, !tbaa !5
  store i8 78, ptr %155, align 1, !tbaa !13
  store i64 0, ptr %75, align 8, !tbaa !9
  br label %159

156:                                              ; preds = %151
  %157 = load ptr, ptr %37, align 8, !tbaa !5
  %158 = call i64 @lsame_(ptr noundef %157, ptr noundef @.str.3)
  store i64 %158, ptr %75, align 8, !tbaa !9
  br label %159

159:                                              ; preds = %156, %154
  %160 = load ptr, ptr %44, align 8, !tbaa !5
  store double 0.000000e+00, ptr %160, align 8, !tbaa !11
  %161 = load i64, ptr %76, align 8, !tbaa !9
  %162 = icmp ne i64 %161, 0
  br i1 %162, label %172, label %163

163:                                              ; preds = %159
  %164 = load i64, ptr %74, align 8, !tbaa !9
  %165 = icmp ne i64 %164, 0
  br i1 %165, label %172, label %166

166:                                              ; preds = %163
  %167 = load ptr, ptr %28, align 8, !tbaa !5
  %168 = call i64 @lsame_(ptr noundef %167, ptr noundef @.str.4)
  %169 = icmp ne i64 %168, 0
  br i1 %169, label %172, label %170

170:                                              ; preds = %166
  %171 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 -1, ptr %171, align 8, !tbaa !9
  br label %355

172:                                              ; preds = %166, %163, %159
  %173 = load ptr, ptr %29, align 8, !tbaa !5
  %174 = call i64 @lsame_(ptr noundef %173, ptr noundef @.str.5)
  %175 = icmp ne i64 %174, 0
  br i1 %175, label %182, label %176

176:                                              ; preds = %172
  %177 = load ptr, ptr %29, align 8, !tbaa !5
  %178 = call i64 @lsame_(ptr noundef %177, ptr noundef @.str.6)
  %179 = icmp ne i64 %178, 0
  br i1 %179, label %182, label %180

180:                                              ; preds = %176
  %181 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 -2, ptr %181, align 8, !tbaa !9
  br label %354

182:                                              ; preds = %176, %172
  %183 = load ptr, ptr %30, align 8, !tbaa !5
  %184 = load i64, ptr %183, align 8, !tbaa !9
  %185 = icmp slt i64 %184, 0
  br i1 %185, label %186, label %188

186:                                              ; preds = %182
  %187 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 -3, ptr %187, align 8, !tbaa !9
  br label %353

188:                                              ; preds = %182
  %189 = load ptr, ptr %31, align 8, !tbaa !5
  %190 = load i64, ptr %189, align 8, !tbaa !9
  %191 = icmp slt i64 %190, 0
  br i1 %191, label %192, label %194

192:                                              ; preds = %188
  %193 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 -4, ptr %193, align 8, !tbaa !9
  br label %352

194:                                              ; preds = %188
  %195 = load ptr, ptr %33, align 8, !tbaa !5
  %196 = load i64, ptr %195, align 8, !tbaa !9
  %197 = load ptr, ptr %30, align 8, !tbaa !5
  %198 = load i64, ptr %197, align 8, !tbaa !9
  %199 = icmp sge i64 1, %198
  br i1 %199, label %200, label %201

200:                                              ; preds = %194
  br label %204

201:                                              ; preds = %194
  %202 = load ptr, ptr %30, align 8, !tbaa !5
  %203 = load i64, ptr %202, align 8, !tbaa !9
  br label %204

204:                                              ; preds = %201, %200
  %205 = phi i64 [ 1, %200 ], [ %203, %201 ]
  %206 = icmp slt i64 %196, %205
  br i1 %206, label %207, label %209

207:                                              ; preds = %204
  %208 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 -6, ptr %208, align 8, !tbaa !9
  br label %351

209:                                              ; preds = %204
  %210 = load ptr, ptr %35, align 8, !tbaa !5
  %211 = load i64, ptr %210, align 8, !tbaa !9
  %212 = load ptr, ptr %30, align 8, !tbaa !5
  %213 = load i64, ptr %212, align 8, !tbaa !9
  %214 = icmp sge i64 1, %213
  br i1 %214, label %215, label %216

215:                                              ; preds = %209
  br label %219

216:                                              ; preds = %209
  %217 = load ptr, ptr %30, align 8, !tbaa !5
  %218 = load i64, ptr %217, align 8, !tbaa !9
  br label %219

219:                                              ; preds = %216, %215
  %220 = phi i64 [ 1, %215 ], [ %218, %216 ]
  %221 = icmp slt i64 %211, %220
  br i1 %221, label %222, label %224

222:                                              ; preds = %219
  %223 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 -8, ptr %223, align 8, !tbaa !9
  br label %350

224:                                              ; preds = %219
  %225 = load ptr, ptr %28, align 8, !tbaa !5
  %226 = call i64 @lsame_(ptr noundef %225, ptr noundef @.str.4)
  %227 = icmp ne i64 %226, 0
  br i1 %227, label %228, label %237

228:                                              ; preds = %224
  %229 = load i64, ptr %75, align 8, !tbaa !9
  %230 = icmp ne i64 %229, 0
  br i1 %230, label %237, label %231

231:                                              ; preds = %228
  %232 = load ptr, ptr %37, align 8, !tbaa !5
  %233 = call i64 @lsame_(ptr noundef %232, ptr noundef @.str)
  %234 = icmp ne i64 %233, 0
  br i1 %234, label %237, label %235

235:                                              ; preds = %231
  %236 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 -9, ptr %236, align 8, !tbaa !9
  br label %349

237:                                              ; preds = %231, %228, %224
  %238 = load i64, ptr %75, align 8, !tbaa !9
  %239 = icmp ne i64 %238, 0
  br i1 %239, label %240, label %312

240:                                              ; preds = %237
  %241 = load double, ptr %77, align 8, !tbaa !11
  store double %241, ptr %71, align 8, !tbaa !11
  store double 0.000000e+00, ptr %72, align 8, !tbaa !11
  %242 = load ptr, ptr %30, align 8, !tbaa !5
  %243 = load i64, ptr %242, align 8, !tbaa !9
  store i64 %243, ptr %66, align 8, !tbaa !9
  store i64 1, ptr %69, align 8, !tbaa !9
  br label %244

244:                                              ; preds = %277, %240
  %245 = load i64, ptr %69, align 8, !tbaa !9
  %246 = load i64, ptr %66, align 8, !tbaa !9
  %247 = icmp sle i64 %245, %246
  br i1 %247, label %248, label %280

248:                                              ; preds = %244
  %249 = load double, ptr %71, align 8, !tbaa !11
  store double %249, ptr %67, align 8, !tbaa !11
  %250 = load ptr, ptr %38, align 8, !tbaa !5
  %251 = load i64, ptr %69, align 8, !tbaa !9
  %252 = getelementptr inbounds double, ptr %250, i64 %251
  %253 = load double, ptr %252, align 8, !tbaa !11
  store double %253, ptr %68, align 8, !tbaa !11
  %254 = load double, ptr %67, align 8, !tbaa !11
  %255 = load double, ptr %68, align 8, !tbaa !11
  %256 = fcmp ole double %254, %255
  br i1 %256, label %257, label %259

257:                                              ; preds = %248
  %258 = load double, ptr %67, align 8, !tbaa !11
  br label %261

259:                                              ; preds = %248
  %260 = load double, ptr %68, align 8, !tbaa !11
  br label %261

261:                                              ; preds = %259, %257
  %262 = phi double [ %258, %257 ], [ %260, %259 ]
  store double %262, ptr %71, align 8, !tbaa !11
  %263 = load double, ptr %72, align 8, !tbaa !11
  store double %263, ptr %67, align 8, !tbaa !11
  %264 = load ptr, ptr %38, align 8, !tbaa !5
  %265 = load i64, ptr %69, align 8, !tbaa !9
  %266 = getelementptr inbounds double, ptr %264, i64 %265
  %267 = load double, ptr %266, align 8, !tbaa !11
  store double %267, ptr %68, align 8, !tbaa !11
  %268 = load double, ptr %67, align 8, !tbaa !11
  %269 = load double, ptr %68, align 8, !tbaa !11
  %270 = fcmp oge double %268, %269
  br i1 %270, label %271, label %273

271:                                              ; preds = %261
  %272 = load double, ptr %67, align 8, !tbaa !11
  br label %275

273:                                              ; preds = %261
  %274 = load double, ptr %68, align 8, !tbaa !11
  br label %275

275:                                              ; preds = %273, %271
  %276 = phi double [ %272, %271 ], [ %274, %273 ]
  store double %276, ptr %72, align 8, !tbaa !11
  br label %277

277:                                              ; preds = %275
  %278 = load i64, ptr %69, align 8, !tbaa !9
  %279 = add nsw i64 %278, 1
  store i64 %279, ptr %69, align 8, !tbaa !9
  br label %244, !llvm.loop !14

280:                                              ; preds = %244
  %281 = load double, ptr %71, align 8, !tbaa !11
  %282 = fcmp ole double %281, 0.000000e+00
  br i1 %282, label %283, label %285

283:                                              ; preds = %280
  %284 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 -10, ptr %284, align 8, !tbaa !9
  br label %311

285:                                              ; preds = %280
  %286 = load ptr, ptr %30, align 8, !tbaa !5
  %287 = load i64, ptr %286, align 8, !tbaa !9
  %288 = icmp sgt i64 %287, 0
  br i1 %288, label %289, label %309

289:                                              ; preds = %285
  %290 = load double, ptr %71, align 8, !tbaa !11
  %291 = load double, ptr %79, align 8, !tbaa !11
  %292 = fcmp oge double %290, %291
  br i1 %292, label %293, label %295

293:                                              ; preds = %289
  %294 = load double, ptr %71, align 8, !tbaa !11
  br label %297

295:                                              ; preds = %289
  %296 = load double, ptr %79, align 8, !tbaa !11
  br label %297

297:                                              ; preds = %295, %293
  %298 = phi double [ %294, %293 ], [ %296, %295 ]
  %299 = load double, ptr %72, align 8, !tbaa !11
  %300 = load double, ptr %77, align 8, !tbaa !11
  %301 = fcmp ole double %299, %300
  br i1 %301, label %302, label %304

302:                                              ; preds = %297
  %303 = load double, ptr %72, align 8, !tbaa !11
  br label %306

304:                                              ; preds = %297
  %305 = load double, ptr %77, align 8, !tbaa !11
  br label %306

306:                                              ; preds = %304, %302
  %307 = phi double [ %303, %302 ], [ %305, %304 ]
  %308 = fdiv double %298, %307
  store double %308, ptr %73, align 8, !tbaa !11
  br label %310

309:                                              ; preds = %285
  store double 1.000000e+00, ptr %73, align 8, !tbaa !11
  br label %310

310:                                              ; preds = %309, %306
  br label %311

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

312:                                              ; preds = %311, %237
  %313 = load ptr, ptr %53, align 8, !tbaa !5
  %314 = load i64, ptr %313, align 8, !tbaa !9
  %315 = icmp eq i64 %314, 0
  br i1 %315, label %316, label %348

316:                                              ; preds = %312
  %317 = load ptr, ptr %40, align 8, !tbaa !5
  %318 = load i64, ptr %317, align 8, !tbaa !9
  %319 = load ptr, ptr %30, align 8, !tbaa !5
  %320 = load i64, ptr %319, align 8, !tbaa !9
  %321 = icmp sge i64 1, %320
  br i1 %321, label %322, label %323

322:                                              ; preds = %316
  br label %326

323:                                              ; preds = %316
  %324 = load ptr, ptr %30, align 8, !tbaa !5
  %325 = load i64, ptr %324, align 8, !tbaa !9
  br label %326

326:                                              ; preds = %323, %322
  %327 = phi i64 [ 1, %322 ], [ %325, %323 ]
  %328 = icmp slt i64 %318, %327
  br i1 %328, label %329, label %331

329:                                              ; preds = %326
  %330 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 -12, ptr %330, align 8, !tbaa !9
  br label %347

331:                                              ; preds = %326
  %332 = load ptr, ptr %42, align 8, !tbaa !5
  %333 = load i64, ptr %332, align 8, !tbaa !9
  %334 = load ptr, ptr %30, align 8, !tbaa !5
  %335 = load i64, ptr %334, align 8, !tbaa !9
  %336 = icmp sge i64 1, %335
  br i1 %336, label %337, label %338

337:                                              ; preds = %331
  br label %341

338:                                              ; preds = %331
  %339 = load ptr, ptr %30, align 8, !tbaa !5
  %340 = load i64, ptr %339, align 8, !tbaa !9
  br label %341

341:                                              ; preds = %338, %337
  %342 = phi i64 [ 1, %337 ], [ %340, %338 ]
  %343 = icmp slt i64 %333, %342
  br i1 %343, label %344, label %346

344:                                              ; preds = %341
  %345 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 -14, ptr %345, align 8, !tbaa !9
  br label %346

346:                                              ; preds = %344, %341
  br label %347

347:                                              ; preds = %346, %329
  br label %348

348:                                              ; preds = %347, %312
  br label %349

349:                                              ; preds = %348, %235
  br label %350

350:                                              ; preds = %349, %222
  br label %351

351:                                              ; preds = %350, %207
  br label %352

352:                                              ; preds = %351, %192
  br label %353

353:                                              ; preds = %352, %186
  br label %354

354:                                              ; preds = %353, %180
  br label %355

355:                                              ; preds = %354, %170
  %356 = load ptr, ptr %53, align 8, !tbaa !5
  %357 = load i64, ptr %356, align 8, !tbaa !9
  %358 = icmp ne i64 %357, 0
  br i1 %358, label %359, label %364

359:                                              ; preds = %355
  %360 = load ptr, ptr %53, align 8, !tbaa !5
  %361 = load i64, ptr %360, align 8, !tbaa !9
  %362 = sub nsw i64 0, %361
  store i64 %362, ptr %66, align 8, !tbaa !9
  %363 = call i32 @xerbla_(ptr noundef @.str.7, ptr noundef %66)
  store i32 0, ptr %27, align 4
  store i32 1, ptr %80, align 4
  br label %581

364:                                              ; preds = %355
  %365 = load i64, ptr %74, align 8, !tbaa !9
  %366 = icmp ne i64 %365, 0
  br i1 %366, label %367, label %395

367:                                              ; preds = %364
  %368 = load ptr, ptr %29, align 8, !tbaa !5
  %369 = load ptr, ptr %30, align 8, !tbaa !5
  %370 = load ptr, ptr %32, align 8, !tbaa !5
  %371 = load i64, ptr %55, align 8, !tbaa !9
  %372 = getelementptr inbounds double, ptr %370, i64 %371
  %373 = load ptr, ptr %33, align 8, !tbaa !5
  %374 = load ptr, ptr %38, align 8, !tbaa !5
  %375 = getelementptr inbounds double, ptr %374, i64 1
  %376 = load ptr, ptr %51, align 8, !tbaa !5
  %377 = getelementptr inbounds double, ptr %376, i64 1
  %378 = call i32 @dsyequb_(ptr noundef %368, ptr noundef %369, ptr noundef %372, ptr noundef %373, ptr noundef %375, ptr noundef %73, ptr noundef %70, ptr noundef %377, ptr noundef %78)
  %379 = load i64, ptr %78, align 8, !tbaa !9
  %380 = icmp eq i64 %379, 0
  br i1 %380, label %381, label %394

381:                                              ; preds = %367
  %382 = load ptr, ptr %29, align 8, !tbaa !5
  %383 = load ptr, ptr %30, align 8, !tbaa !5
  %384 = load ptr, ptr %32, align 8, !tbaa !5
  %385 = load i64, ptr %55, align 8, !tbaa !9
  %386 = getelementptr inbounds double, ptr %384, i64 %385
  %387 = load ptr, ptr %33, align 8, !tbaa !5
  %388 = load ptr, ptr %38, align 8, !tbaa !5
  %389 = getelementptr inbounds double, ptr %388, i64 1
  %390 = load ptr, ptr %37, align 8, !tbaa !5
  %391 = call i32 @dlaqsy_(ptr noundef %382, ptr noundef %383, ptr noundef %386, ptr noundef %387, ptr noundef %389, ptr noundef %73, ptr noundef %70, ptr noundef %390)
  %392 = load ptr, ptr %37, align 8, !tbaa !5
  %393 = call i64 @lsame_(ptr noundef %392, ptr noundef @.str.3)
  store i64 %393, ptr %75, align 8, !tbaa !9
  br label %394

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

395:                                              ; preds = %394, %364
  %396 = load i64, ptr %75, align 8, !tbaa !9
  %397 = icmp ne i64 %396, 0
  br i1 %397, label %398, label %408

398:                                              ; preds = %395
  %399 = load ptr, ptr %30, align 8, !tbaa !5
  %400 = load ptr, ptr %31, align 8, !tbaa !5
  %401 = load ptr, ptr %38, align 8, !tbaa !5
  %402 = getelementptr inbounds double, ptr %401, i64 1
  %403 = load ptr, ptr %39, align 8, !tbaa !5
  %404 = load i64, ptr %59, align 8, !tbaa !9
  %405 = getelementptr inbounds double, ptr %403, i64 %404
  %406 = load ptr, ptr %40, align 8, !tbaa !5
  %407 = call i32 @dlascl2_(ptr noundef %399, ptr noundef %400, ptr noundef %402, ptr noundef %405, ptr noundef %406)
  br label %408

408:                                              ; preds = %398, %395
  %409 = load i64, ptr %76, align 8, !tbaa !9
  %410 = icmp ne i64 %409, 0
  br i1 %410, label %414, label %411

411:                                              ; preds = %408
  %412 = load i64, ptr %74, align 8, !tbaa !9
  %413 = icmp ne i64 %412, 0
  br i1 %413, label %414, label %476

414:                                              ; preds = %411, %408
  %415 = load ptr, ptr %29, align 8, !tbaa !5
  %416 = load ptr, ptr %30, align 8, !tbaa !5
  %417 = load ptr, ptr %30, align 8, !tbaa !5
  %418 = load ptr, ptr %32, align 8, !tbaa !5
  %419 = load i64, ptr %55, align 8, !tbaa !9
  %420 = getelementptr inbounds double, ptr %418, i64 %419
  %421 = load ptr, ptr %33, align 8, !tbaa !5
  %422 = load ptr, ptr %34, align 8, !tbaa !5
  %423 = load i64, ptr %57, align 8, !tbaa !9
  %424 = getelementptr inbounds double, ptr %422, i64 %423
  %425 = load ptr, ptr %35, align 8, !tbaa !5
  %426 = call i32 @dlacpy_(ptr noundef %415, ptr noundef %416, ptr noundef %417, ptr noundef %420, ptr noundef %421, ptr noundef %424, ptr noundef %425)
  %427 = load ptr, ptr %30, align 8, !tbaa !5
  %428 = load i64, ptr %427, align 8, !tbaa !9
  %429 = icmp sge i64 1, %428
  br i1 %429, label %430, label %431

430:                                              ; preds = %414
  br label %434

431:                                              ; preds = %414
  %432 = load ptr, ptr %30, align 8, !tbaa !5
  %433 = load i64, ptr %432, align 8, !tbaa !9
  br label %434

434:                                              ; preds = %431, %430
  %435 = phi i64 [ 1, %430 ], [ %433, %431 ]
  %436 = mul nsw i64 %435, 5
  store i64 %436, ptr %66, align 8, !tbaa !9
  %437 = load ptr, ptr %29, align 8, !tbaa !5
  %438 = load ptr, ptr %30, align 8, !tbaa !5
  %439 = load ptr, ptr %34, align 8, !tbaa !5
  %440 = load i64, ptr %57, align 8, !tbaa !9
  %441 = getelementptr inbounds double, ptr %439, i64 %440
  %442 = load ptr, ptr %35, align 8, !tbaa !5
  %443 = load ptr, ptr %36, align 8, !tbaa !5
  %444 = getelementptr inbounds i64, ptr %443, i64 1
  %445 = load ptr, ptr %51, align 8, !tbaa !5
  %446 = getelementptr inbounds double, ptr %445, i64 1
  %447 = load ptr, ptr %53, align 8, !tbaa !5
  %448 = call i32 @dsytrf_(ptr noundef %437, ptr noundef %438, ptr noundef %441, ptr noundef %442, ptr noundef %444, ptr noundef %446, ptr noundef %66, ptr noundef %447)
  %449 = load ptr, ptr %53, align 8, !tbaa !5
  %450 = load i64, ptr %449, align 8, !tbaa !9
  %451 = icmp sgt i64 %450, 0
  br i1 %451, label %452, label %475

452:                                              ; preds = %434
  %453 = load ptr, ptr %30, align 8, !tbaa !5
  %454 = load i64, ptr %453, align 8, !tbaa !9
  %455 = icmp sgt i64 %454, 0
  br i1 %455, label %456, label %474

456:                                              ; preds = %452
  %457 = load ptr, ptr %29, align 8, !tbaa !5
  %458 = load ptr, ptr %30, align 8, !tbaa !5
  %459 = load ptr, ptr %53, align 8, !tbaa !5
  %460 = load ptr, ptr %32, align 8, !tbaa !5
  %461 = load i64, ptr %55, align 8, !tbaa !9
  %462 = getelementptr inbounds double, ptr %460, i64 %461
  %463 = load ptr, ptr %33, align 8, !tbaa !5
  %464 = load ptr, ptr %34, align 8, !tbaa !5
  %465 = load i64, ptr %57, align 8, !tbaa !9
  %466 = getelementptr inbounds double, ptr %464, i64 %465
  %467 = load ptr, ptr %35, align 8, !tbaa !5
  %468 = load ptr, ptr %36, align 8, !tbaa !5
  %469 = getelementptr inbounds i64, ptr %468, i64 1
  %470 = load ptr, ptr %51, align 8, !tbaa !5
  %471 = getelementptr inbounds double, ptr %470, i64 1
  %472 = call double @dla_syrpvgrw__(ptr noundef %457, ptr noundef %458, ptr noundef %459, ptr noundef %462, ptr noundef %463, ptr noundef %466, ptr noundef %467, ptr noundef %469, ptr noundef %471, i64 noundef 1)
  %473 = load ptr, ptr %44, align 8, !tbaa !5
  store double %472, ptr %473, align 8, !tbaa !11
  br label %474

474:                                              ; preds = %456, %452
  store i32 0, ptr %27, align 4
  store i32 1, ptr %80, align 4
  br label %581

475:                                              ; preds = %434
  br label %476

476:                                              ; preds = %475, %411
  %477 = load ptr, ptr %30, align 8, !tbaa !5
  %478 = load i64, ptr %477, align 8, !tbaa !9
  %479 = icmp sgt i64 %478, 0
  br i1 %479, label %480, label %498

480:                                              ; preds = %476
  %481 = load ptr, ptr %29, align 8, !tbaa !5
  %482 = load ptr, ptr %30, align 8, !tbaa !5
  %483 = load ptr, ptr %53, align 8, !tbaa !5
  %484 = load ptr, ptr %32, align 8, !tbaa !5
  %485 = load i64, ptr %55, align 8, !tbaa !9
  %486 = getelementptr inbounds double, ptr %484, i64 %485
  %487 = load ptr, ptr %33, align 8, !tbaa !5
  %488 = load ptr, ptr %34, align 8, !tbaa !5
  %489 = load i64, ptr %57, align 8, !tbaa !9
  %490 = getelementptr inbounds double, ptr %488, i64 %489
  %491 = load ptr, ptr %35, align 8, !tbaa !5
  %492 = load ptr, ptr %36, align 8, !tbaa !5
  %493 = getelementptr inbounds i64, ptr %492, i64 1
  %494 = load ptr, ptr %51, align 8, !tbaa !5
  %495 = getelementptr inbounds double, ptr %494, i64 1
  %496 = call double @dla_syrpvgrw__(ptr noundef %481, ptr noundef %482, ptr noundef %483, ptr noundef %486, ptr noundef %487, ptr noundef %490, ptr noundef %491, ptr noundef %493, ptr noundef %495, i64 noundef 1)
  %497 = load ptr, ptr %44, align 8, !tbaa !5
  store double %496, ptr %497, align 8, !tbaa !11
  br label %498

498:                                              ; preds = %480, %476
  %499 = load ptr, ptr %30, align 8, !tbaa !5
  %500 = load ptr, ptr %31, align 8, !tbaa !5
  %501 = load ptr, ptr %39, align 8, !tbaa !5
  %502 = load i64, ptr %59, align 8, !tbaa !9
  %503 = getelementptr inbounds double, ptr %501, i64 %502
  %504 = load ptr, ptr %40, align 8, !tbaa !5
  %505 = load ptr, ptr %41, align 8, !tbaa !5
  %506 = load i64, ptr %61, align 8, !tbaa !9
  %507 = getelementptr inbounds double, ptr %505, i64 %506
  %508 = load ptr, ptr %42, align 8, !tbaa !5
  %509 = call i32 @dlacpy_(ptr noundef @.str.8, ptr noundef %499, ptr noundef %500, ptr noundef %503, ptr noundef %504, ptr noundef %507, ptr noundef %508)
  %510 = load ptr, ptr %29, align 8, !tbaa !5
  %511 = load ptr, ptr %30, align 8, !tbaa !5
  %512 = load ptr, ptr %31, align 8, !tbaa !5
  %513 = load ptr, ptr %34, align 8, !tbaa !5
  %514 = load i64, ptr %57, align 8, !tbaa !9
  %515 = getelementptr inbounds double, ptr %513, i64 %514
  %516 = load ptr, ptr %35, align 8, !tbaa !5
  %517 = load ptr, ptr %36, align 8, !tbaa !5
  %518 = getelementptr inbounds i64, ptr %517, i64 1
  %519 = load ptr, ptr %41, align 8, !tbaa !5
  %520 = load i64, ptr %61, align 8, !tbaa !9
  %521 = getelementptr inbounds double, ptr %519, i64 %520
  %522 = load ptr, ptr %42, align 8, !tbaa !5
  %523 = load ptr, ptr %53, align 8, !tbaa !5
  %524 = call i32 @dsytrs_(ptr noundef %510, ptr noundef %511, ptr noundef %512, ptr noundef %515, ptr noundef %516, ptr noundef %518, ptr noundef %521, ptr noundef %522, ptr noundef %523)
  %525 = load ptr, ptr %29, align 8, !tbaa !5
  %526 = load ptr, ptr %37, align 8, !tbaa !5
  %527 = load ptr, ptr %30, align 8, !tbaa !5
  %528 = load ptr, ptr %31, align 8, !tbaa !5
  %529 = load ptr, ptr %32, align 8, !tbaa !5
  %530 = load i64, ptr %55, align 8, !tbaa !9
  %531 = getelementptr inbounds double, ptr %529, i64 %530
  %532 = load ptr, ptr %33, align 8, !tbaa !5
  %533 = load ptr, ptr %34, align 8, !tbaa !5
  %534 = load i64, ptr %57, align 8, !tbaa !9
  %535 = getelementptr inbounds double, ptr %533, i64 %534
  %536 = load ptr, ptr %35, align 8, !tbaa !5
  %537 = load ptr, ptr %36, align 8, !tbaa !5
  %538 = getelementptr inbounds i64, ptr %537, i64 1
  %539 = load ptr, ptr %38, align 8, !tbaa !5
  %540 = getelementptr inbounds double, ptr %539, i64 1
  %541 = load ptr, ptr %39, align 8, !tbaa !5
  %542 = load i64, ptr %59, align 8, !tbaa !9
  %543 = getelementptr inbounds double, ptr %541, i64 %542
  %544 = load ptr, ptr %40, align 8, !tbaa !5
  %545 = load ptr, ptr %41, align 8, !tbaa !5
  %546 = load i64, ptr %61, align 8, !tbaa !9
  %547 = getelementptr inbounds double, ptr %545, i64 %546
  %548 = load ptr, ptr %42, align 8, !tbaa !5
  %549 = load ptr, ptr %43, align 8, !tbaa !5
  %550 = load ptr, ptr %45, align 8, !tbaa !5
  %551 = getelementptr inbounds double, ptr %550, i64 1
  %552 = load ptr, ptr %46, align 8, !tbaa !5
  %553 = load ptr, ptr %47, align 8, !tbaa !5
  %554 = load i64, ptr %63, align 8, !tbaa !9
  %555 = getelementptr inbounds double, ptr %553, i64 %554
  %556 = load ptr, ptr %48, align 8, !tbaa !5
  %557 = load i64, ptr %65, align 8, !tbaa !9
  %558 = getelementptr inbounds double, ptr %556, i64 %557
  %559 = load ptr, ptr %49, align 8, !tbaa !5
  %560 = load ptr, ptr %50, align 8, !tbaa !5
  %561 = getelementptr inbounds double, ptr %560, i64 1
  %562 = load ptr, ptr %51, align 8, !tbaa !5
  %563 = getelementptr inbounds double, ptr %562, i64 1
  %564 = load ptr, ptr %52, align 8, !tbaa !5
  %565 = getelementptr inbounds i64, ptr %564, i64 1
  %566 = load ptr, ptr %53, align 8, !tbaa !5
  %567 = call i32 @dsyrfsx_(ptr noundef %525, ptr noundef %526, ptr noundef %527, ptr noundef %528, ptr noundef %531, ptr noundef %532, ptr noundef %535, ptr noundef %536, ptr noundef %538, ptr noundef %540, ptr noundef %543, ptr noundef %544, ptr noundef %547, ptr noundef %548, ptr noundef %549, ptr noundef %551, ptr noundef %552, ptr noundef %555, ptr noundef %558, ptr noundef %559, ptr noundef %561, ptr noundef %563, ptr noundef %565, ptr noundef %566)
  %568 = load i64, ptr %75, align 8, !tbaa !9
  %569 = icmp ne i64 %568, 0
  br i1 %569, label %570, label %580

570:                                              ; preds = %498
  %571 = load ptr, ptr %30, align 8, !tbaa !5
  %572 = load ptr, ptr %31, align 8, !tbaa !5
  %573 = load ptr, ptr %38, align 8, !tbaa !5
  %574 = getelementptr inbounds double, ptr %573, i64 1
  %575 = load ptr, ptr %41, align 8, !tbaa !5
  %576 = load i64, ptr %61, align 8, !tbaa !9
  %577 = getelementptr inbounds double, ptr %575, i64 %576
  %578 = load ptr, ptr %42, align 8, !tbaa !5
  %579 = call i32 @dlascl2_(ptr noundef %571, ptr noundef %572, ptr noundef %574, ptr noundef %577, ptr noundef %578)
  br label %580

580:                                              ; preds = %570, %498
  store i32 0, ptr %27, align 4
  store i32 1, ptr %80, align 4
  br label %581

581:                                              ; preds = %580, %474, %359
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #3
  %582 = load i32, ptr %27, align 4
  ret i32 %582
}

; 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 double @dlamch_(ptr noundef) #2

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

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

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

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

declare double @dla_syrpvgrw__(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef) #2

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

declare i32 @dsyrfsx_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, 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 }

!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 = !{!7, !7, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}


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

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @dsysvxx_(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 nocapture noundef writeonly %16, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22, ptr noundef %23, ptr noundef %24, ptr noundef %25) local_unnamed_addr #0 {
  %27 = alloca i64, align 8
  %28 = alloca double, align 8
  %29 = alloca double, align 8
  %30 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #4
  %31 = getelementptr inbounds i8, ptr %10, i64 -8
  store i64 0, ptr %25, align 8, !tbaa !5
  %32 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #4
  %33 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #4
  %34 = tail call double @dlamch_(ptr noundef nonnull @.str.2) #4
  %35 = fdiv double 1.000000e+00, %34
  %36 = icmp ne i64 %32, 0
  %37 = icmp ne i64 %33, 0
  %or.cond = select i1 %36, i1 true, i1 %37
  br i1 %or.cond, label %.thread, label %38

.thread:                                          ; preds = %26
  store i8 78, ptr %9, align 1, !tbaa !9
  store double 0.000000e+00, ptr %16, align 8, !tbaa !10
  br label %41

38:                                               ; preds = %26
  %39 = tail call i64 @lsame_(ptr noundef %9, ptr noundef nonnull @.str.3) #4
  store double 0.000000e+00, ptr %16, align 8, !tbaa !10
  %40 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.4) #4
  %.not = icmp eq i64 %40, 0
  br i1 %.not, label %.thread263.sink.split, label %41

41:                                               ; preds = %.thread, %38
  %.0237258 = phi i64 [ 0, %.thread ], [ %39, %38 ]
  %42 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.5) #4
  %.not246 = icmp eq i64 %42, 0
  br i1 %.not246, label %43, label %45

43:                                               ; preds = %41
  %44 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.6) #4
  %.not247 = icmp eq i64 %44, 0
  br i1 %.not247, label %.thread263.sink.split, label %45

45:                                               ; preds = %43, %41
  %46 = load i64, ptr %2, align 8, !tbaa !5
  %47 = icmp slt i64 %46, 0
  br i1 %47, label %.thread263.sink.split, label %48

48:                                               ; preds = %45
  %49 = load i64, ptr %3, align 8, !tbaa !5
  %50 = icmp slt i64 %49, 0
  br i1 %50, label %.thread263.sink.split, label %51

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

54:                                               ; preds = %51
  %55 = load i64, ptr %7, align 8, !tbaa !5
  %56 = icmp slt i64 %55, %spec.select
  br i1 %56, label %.thread263.sink.split, label %57

57:                                               ; preds = %54
  %58 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.4) #4
  %59 = icmp eq i64 %58, 0
  %60 = icmp ne i64 %.0237258, 0
  %or.cond5 = select i1 %59, i1 true, i1 %60
  br i1 %or.cond5, label %63, label %61

61:                                               ; preds = %57
  %62 = tail call i64 @lsame_(ptr noundef %9, ptr noundef nonnull @.str) #4
  %.not248 = icmp eq i64 %62, 0
  br i1 %.not248, label %.thread263.sink.split, label %.thread259

63:                                               ; preds = %57
  br i1 %60, label %64, label %.thread259

64:                                               ; preds = %63
  %65 = load i64, ptr %2, align 8, !tbaa !5
  store i64 %65, ptr %27, align 8, !tbaa !5
  %.not249266 = icmp slt i64 %65, 1
  br i1 %.not249266, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %64
  %xtraiter = and i64 %65, 1
  %66 = icmp eq i64 %65, 1
  br i1 %66, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph.preheader.new

.lr.ph.preheader.new:                             ; preds = %.lr.ph.preheader
  %unroll_iter = and i64 %65, 9223372036854775806
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph, %.lr.ph.preheader.new
  %.0238269 = phi double [ 0.000000e+00, %.lr.ph.preheader.new ], [ %78, %.lr.ph ]
  %.0239268 = phi double [ %35, %.lr.ph.preheader.new ], [ %76, %.lr.ph ]
  %.0240267 = phi i64 [ 1, %.lr.ph.preheader.new ], [ %79, %.lr.ph ]
  %niter = phi i64 [ 0, %.lr.ph.preheader.new ], [ %niter.next.1, %.lr.ph ]
  %67 = getelementptr inbounds double, ptr %31, i64 %.0240267
  %68 = load double, ptr %67, align 8, !tbaa !10
  %69 = fcmp ole double %.0239268, %68
  %70 = select i1 %69, double %.0239268, double %68
  %71 = fcmp oge double %.0238269, %68
  %72 = select i1 %71, double %.0238269, double %68
  %73 = getelementptr double, ptr %10, i64 %.0240267
  %74 = load double, ptr %73, align 8, !tbaa !10
  %75 = fcmp ole double %70, %74
  %76 = select i1 %75, double %70, double %74
  %77 = fcmp oge double %72, %74
  %78 = select i1 %77, double %72, double %74
  %79 = add nuw i64 %.0240267, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph, !llvm.loop !12

._crit_edge.loopexit.unr-lcssa:                   ; preds = %.lr.ph, %.lr.ph.preheader
  %.lcssa276.ph = phi double [ poison, %.lr.ph.preheader ], [ %76, %.lr.ph ]
  %.lcssa.ph = phi double [ poison, %.lr.ph.preheader ], [ %78, %.lr.ph ]
  %.0238269.unr = phi double [ 0.000000e+00, %.lr.ph.preheader ], [ %78, %.lr.ph ]
  %.0239268.unr = phi double [ %35, %.lr.ph.preheader ], [ %76, %.lr.ph ]
  %.0240267.unr = phi i64 [ 1, %.lr.ph.preheader ], [ %79, %.lr.ph ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph.epil

.lr.ph.epil:                                      ; preds = %._crit_edge.loopexit.unr-lcssa
  %80 = getelementptr inbounds double, ptr %31, i64 %.0240267.unr
  %81 = load double, ptr %80, align 8, !tbaa !10
  %82 = fcmp ole double %.0239268.unr, %81
  %83 = select i1 %82, double %.0239268.unr, double %81
  %84 = fcmp oge double %.0238269.unr, %81
  %85 = select i1 %84, double %.0238269.unr, double %81
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.epil, %._crit_edge.loopexit.unr-lcssa, %64
  %.0239.lcssa = phi double [ %35, %64 ], [ %.lcssa276.ph, %._crit_edge.loopexit.unr-lcssa ], [ %83, %.lr.ph.epil ]
  %.0238.lcssa = phi double [ 0.000000e+00, %64 ], [ %.lcssa.ph, %._crit_edge.loopexit.unr-lcssa ], [ %85, %.lr.ph.epil ]
  %86 = fcmp ugt double %.0239.lcssa, 0.000000e+00
  br i1 %86, label %87, label %.thread263.sink.split

87:                                               ; preds = %._crit_edge
  %88 = icmp sgt i64 %65, 0
  br i1 %88, label %89, label %95

89:                                               ; preds = %87
  %90 = fcmp oge double %.0239.lcssa, %34
  %91 = select i1 %90, double %.0239.lcssa, double %34
  %92 = fcmp ole double %.0238.lcssa, %35
  %93 = select i1 %92, double %.0238.lcssa, double %35
  %94 = fdiv double %91, %93
  store double %94, ptr %29, align 8, !tbaa !10
  br label %.thread259

95:                                               ; preds = %87
  store double 1.000000e+00, ptr %29, align 8, !tbaa !10
  br label %.thread259

.thread259:                                       ; preds = %61, %95, %89, %63
  %.pr = load i64, ptr %25, align 8, !tbaa !5
  %96 = icmp eq i64 %.pr, 0
  br i1 %96, label %97, label %.thread263

97:                                               ; preds = %.thread259
  %98 = load i64, ptr %12, align 8, !tbaa !5
  %99 = load i64, ptr %2, align 8, !tbaa !5
  %spec.select253 = tail call i64 @llvm.smax.i64(i64 %99, i64 1)
  %100 = icmp slt i64 %98, %spec.select253
  br i1 %100, label %.thread263.sink.split, label %101

101:                                              ; preds = %97
  %102 = load i64, ptr %14, align 8, !tbaa !5
  %103 = icmp slt i64 %102, %spec.select253
  br i1 %103, label %.thread263.sink.split, label %107

.thread263.sink.split:                            ; preds = %101, %97, %._crit_edge, %61, %54, %51, %48, %45, %43, %38
  %.sink = phi i64 [ -1, %38 ], [ -2, %43 ], [ -3, %45 ], [ -4, %48 ], [ -6, %51 ], [ -8, %54 ], [ -9, %61 ], [ -10, %._crit_edge ], [ -12, %97 ], [ -14, %101 ]
  store i64 %.sink, ptr %25, align 8, !tbaa !5
  br label %.thread263

.thread263:                                       ; preds = %.thread263.sink.split, %.thread259
  %104 = phi i64 [ %.pr, %.thread259 ], [ %.sink, %.thread263.sink.split ]
  %105 = sub nsw i64 0, %104
  store i64 %105, ptr %27, align 8, !tbaa !5
  %106 = call i32 @xerbla_(ptr noundef nonnull @.str.7, ptr noundef nonnull %27) #4
  br label %142

107:                                              ; preds = %101
  br i1 %37, label %108, label %115

108:                                              ; preds = %107
  %109 = call i32 @dsyequb_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %10, ptr noundef nonnull %29, ptr noundef nonnull %28, ptr noundef %23, ptr noundef nonnull %30) #4
  %110 = load i64, ptr %30, align 8, !tbaa !5
  %111 = icmp eq i64 %110, 0
  br i1 %111, label %112, label %115

112:                                              ; preds = %108
  %113 = call i32 @dlaqsy_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %10, ptr noundef nonnull %29, ptr noundef nonnull %28, ptr noundef %9) #4
  %114 = call i64 @lsame_(ptr noundef %9, ptr noundef nonnull @.str.3) #4
  br label %115

115:                                              ; preds = %108, %112, %107
  %.1 = phi i64 [ %114, %112 ], [ %.0237258, %108 ], [ %.0237258, %107 ]
  %.not251 = icmp eq i64 %.1, 0
  br i1 %.not251, label %118, label %116

116:                                              ; preds = %115
  %117 = call i32 @dlascl2_(ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %10, ptr noundef %11, ptr noundef nonnull %12) #4
  br label %118

118:                                              ; preds = %116, %115
  br i1 %or.cond, label %119, label %._crit_edge272

._crit_edge272:                                   ; preds = %118
  %.pre = load i64, ptr %2, align 8, !tbaa !5
  br label %131

119:                                              ; preds = %118
  %120 = call i32 @dlacpy_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7) #4
  %121 = load i64, ptr %2, align 8, !tbaa !5
  %122 = icmp slt i64 %121, 2
  %123 = mul nuw nsw i64 %121, 5
  %spec.select255 = select i1 %122, i64 5, i64 %123
  store i64 %spec.select255, ptr %27, align 8, !tbaa !5
  %124 = call i32 @dsytrf_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef %23, ptr noundef nonnull %27, ptr noundef nonnull %25) #4
  %125 = load i64, ptr %25, align 8, !tbaa !5
  %126 = icmp sgt i64 %125, 0
  %.pre273 = load i64, ptr %2, align 8, !tbaa !5
  br i1 %126, label %127, label %131

127:                                              ; preds = %119
  %128 = icmp sgt i64 %.pre273, 0
  br i1 %128, label %129, label %142

129:                                              ; preds = %127
  %130 = call double @dla_syrpvgrw__(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %25, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef %23, i64 noundef 1) #4
  store double %130, ptr %16, align 8, !tbaa !10
  br label %142

131:                                              ; preds = %._crit_edge272, %119
  %132 = phi i64 [ %.pre, %._crit_edge272 ], [ %.pre273, %119 ]
  %133 = icmp sgt i64 %132, 0
  br i1 %133, label %134, label %136

134:                                              ; preds = %131
  %135 = call double @dla_syrpvgrw__(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %25, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef %23, i64 noundef 1) #4
  store double %135, ptr %16, align 8, !tbaa !10
  br label %136

136:                                              ; preds = %134, %131
  %137 = call i32 @dlacpy_(ptr noundef nonnull @.str.8, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %13, ptr noundef nonnull %14) #4
  %138 = call i32 @dsytrs_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %25) #4
  %139 = call i32 @dsyrfsx_(ptr noundef %1, ptr noundef %9, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %13, ptr noundef nonnull %14, ptr noundef %15, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22, ptr noundef %23, ptr noundef %24, ptr noundef nonnull %25) #4
  br i1 %.not251, label %142, label %140

140:                                              ; preds = %136
  %141 = call i32 @dlascl2_(ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %10, ptr noundef %13, ptr noundef nonnull %14) #4
  br label %142

142:                                              ; preds = %136, %140, %127, %129, %.thread263
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #4
  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 double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

declare double @dla_syrpvgrw__(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

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

declare i32 @dsyrfsx_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, 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.umax.i64(i64, i64) #3

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

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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!7, !7, i64 0}
!10 = !{!11, !11, i64 0}
!11 = !{!"double", !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}


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