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

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

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

154:                                              ; preds = %25
  %155 = load ptr, ptr %48, align 8, !tbaa !5
  %156 = getelementptr inbounds double, ptr %155, i64 1
  %157 = load double, ptr %156, align 8, !tbaa !11
  %158 = fcmp olt double %157, 0.000000e+00
  br i1 %158, label %159, label %162

159:                                              ; preds = %154
  %160 = load ptr, ptr %48, align 8, !tbaa !5
  %161 = getelementptr inbounds double, ptr %160, i64 1
  store double 1.000000e+00, ptr %161, align 8, !tbaa !11
  br label %167

162:                                              ; preds = %154
  %163 = load ptr, ptr %48, align 8, !tbaa !5
  %164 = getelementptr inbounds double, ptr %163, i64 1
  %165 = load double, ptr %164, align 8, !tbaa !11
  %166 = fptosi double %165 to i64
  store i64 %166, ptr %70, align 8, !tbaa !9
  br label %167

167:                                              ; preds = %162, %159
  br label %168

168:                                              ; preds = %167, %25
  %169 = load ptr, ptr %29, align 8, !tbaa !5
  %170 = load i64, ptr %169, align 8, !tbaa !9
  %171 = sitofp i64 %170 to double
  %172 = call double @dlamch_(ptr noundef @.str)
  %173 = fmul double %171, %172
  store double %173, ptr %67, align 8, !tbaa !11
  store i64 10, ptr %82, align 8, !tbaa !9
  store double 5.000000e-01, ptr %84, align 8, !tbaa !11
  store double 2.500000e-01, ptr %68, align 8, !tbaa !11
  store i64 0, ptr %77, align 8, !tbaa !9
  %174 = load ptr, ptr %47, align 8, !tbaa !5
  %175 = load i64, ptr %174, align 8, !tbaa !9
  %176 = icmp sge i64 %175, 2
  br i1 %176, label %177, label %193

177:                                              ; preds = %168
  %178 = load ptr, ptr %48, align 8, !tbaa !5
  %179 = getelementptr inbounds double, ptr %178, i64 2
  %180 = load double, ptr %179, align 8, !tbaa !11
  %181 = fcmp olt double %180, 0.000000e+00
  br i1 %181, label %182, label %187

182:                                              ; preds = %177
  %183 = load i64, ptr %82, align 8, !tbaa !9
  %184 = sitofp i64 %183 to double
  %185 = load ptr, ptr %48, align 8, !tbaa !5
  %186 = getelementptr inbounds double, ptr %185, i64 2
  store double %184, ptr %186, align 8, !tbaa !11
  br label %192

187:                                              ; preds = %177
  %188 = load ptr, ptr %48, align 8, !tbaa !5
  %189 = getelementptr inbounds double, ptr %188, i64 2
  %190 = load double, ptr %189, align 8, !tbaa !11
  %191 = fptosi double %190 to i64
  store i64 %191, ptr %82, align 8, !tbaa !9
  br label %192

192:                                              ; preds = %187, %182
  br label %193

193:                                              ; preds = %192, %168
  %194 = load ptr, ptr %47, align 8, !tbaa !5
  %195 = load i64, ptr %194, align 8, !tbaa !9
  %196 = icmp sge i64 %195, 3
  br i1 %196, label %197, label %220

197:                                              ; preds = %193
  %198 = load ptr, ptr %48, align 8, !tbaa !5
  %199 = getelementptr inbounds double, ptr %198, i64 3
  %200 = load double, ptr %199, align 8, !tbaa !11
  %201 = fcmp olt double %200, 0.000000e+00
  br i1 %201, label %202, label %212

202:                                              ; preds = %197
  %203 = load i64, ptr %77, align 8, !tbaa !9
  %204 = icmp ne i64 %203, 0
  br i1 %204, label %205, label %208

205:                                              ; preds = %202
  %206 = load ptr, ptr %48, align 8, !tbaa !5
  %207 = getelementptr inbounds double, ptr %206, i64 3
  store double 0.000000e+00, ptr %207, align 8, !tbaa !11
  br label %211

208:                                              ; preds = %202
  %209 = load ptr, ptr %48, align 8, !tbaa !5
  %210 = getelementptr inbounds double, ptr %209, i64 3
  store double 1.000000e+00, ptr %210, align 8, !tbaa !11
  br label %211

211:                                              ; preds = %208, %205
  br label %219

212:                                              ; preds = %197
  %213 = load ptr, ptr %48, align 8, !tbaa !5
  %214 = getelementptr inbounds double, ptr %213, i64 3
  %215 = load double, ptr %214, align 8, !tbaa !11
  %216 = fcmp oeq double %215, 0.000000e+00
  %217 = zext i1 %216 to i32
  %218 = sext i32 %217 to i64
  store i64 %218, ptr %77, align 8, !tbaa !9
  br label %219

219:                                              ; preds = %212, %211
  br label %220

220:                                              ; preds = %219, %193
  %221 = load i64, ptr %70, align 8, !tbaa !9
  %222 = icmp eq i64 %221, 0
  br i1 %222, label %227, label %223

223:                                              ; preds = %220
  %224 = load ptr, ptr %44, align 8, !tbaa !5
  %225 = load i64, ptr %224, align 8, !tbaa !9
  %226 = icmp eq i64 %225, 0
  br i1 %226, label %227, label %228

227:                                              ; preds = %223, %220
  store i64 0, ptr %83, align 8, !tbaa !9
  br label %234

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

231:                                              ; preds = %228
  store i64 1, ptr %83, align 8, !tbaa !9
  br label %233

232:                                              ; preds = %228
  store i64 2, ptr %83, align 8, !tbaa !9
  br label %233

233:                                              ; preds = %232, %231
  br label %234

234:                                              ; preds = %233, %227
  %235 = load ptr, ptr %27, align 8, !tbaa !5
  %236 = call i64 @lsame_(ptr noundef %235, ptr noundef @.str.1)
  store i64 %236, ptr %80, align 8, !tbaa !9
  %237 = load ptr, ptr %28, align 8, !tbaa !5
  %238 = call i64 @lsame_(ptr noundef %237, ptr noundef @.str.2)
  %239 = icmp ne i64 %238, 0
  br i1 %239, label %244, label %240

240:                                              ; preds = %234
  %241 = load ptr, ptr %28, align 8, !tbaa !5
  %242 = call i64 @lsame_(ptr noundef %241, ptr noundef @.str.3)
  %243 = icmp ne i64 %242, 0
  br label %244

244:                                              ; preds = %240, %234
  %245 = phi i1 [ true, %234 ], [ %243, %240 ]
  %246 = zext i1 %245 to i32
  %247 = sext i32 %246 to i64
  store i64 %247, ptr %81, align 8, !tbaa !9
  %248 = load ptr, ptr %28, align 8, !tbaa !5
  %249 = call i64 @lsame_(ptr noundef %248, ptr noundef @.str.4)
  %250 = icmp ne i64 %249, 0
  br i1 %250, label %255, label %251

251:                                              ; preds = %244
  %252 = load ptr, ptr %28, align 8, !tbaa !5
  %253 = call i64 @lsame_(ptr noundef %252, ptr noundef @.str.3)
  %254 = icmp ne i64 %253, 0
  br label %255

255:                                              ; preds = %251, %244
  %256 = phi i1 [ true, %244 ], [ %254, %251 ]
  %257 = zext i1 %256 to i32
  %258 = sext i32 %257 to i64
  store i64 %258, ptr %79, align 8, !tbaa !9
  %259 = load i64, ptr %74, align 8, !tbaa !9
  %260 = icmp eq i64 %259, -1
  br i1 %260, label %261, label %263

261:                                              ; preds = %255
  %262 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -1, ptr %262, align 8, !tbaa !9
  br label %354

263:                                              ; preds = %255
  %264 = load i64, ptr %81, align 8, !tbaa !9
  %265 = icmp ne i64 %264, 0
  br i1 %265, label %275, label %266

266:                                              ; preds = %263
  %267 = load i64, ptr %79, align 8, !tbaa !9
  %268 = icmp ne i64 %267, 0
  br i1 %268, label %275, label %269

269:                                              ; preds = %266
  %270 = load ptr, ptr %28, align 8, !tbaa !5
  %271 = call i64 @lsame_(ptr noundef %270, ptr noundef @.str.1)
  %272 = icmp ne i64 %271, 0
  br i1 %272, label %275, label %273

273:                                              ; preds = %269
  %274 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -2, ptr %274, align 8, !tbaa !9
  br label %353

275:                                              ; preds = %269, %266, %263
  %276 = load ptr, ptr %29, align 8, !tbaa !5
  %277 = load i64, ptr %276, align 8, !tbaa !9
  %278 = icmp slt i64 %277, 0
  br i1 %278, label %279, label %281

279:                                              ; preds = %275
  %280 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -3, ptr %280, align 8, !tbaa !9
  br label %352

281:                                              ; preds = %275
  %282 = load ptr, ptr %30, align 8, !tbaa !5
  %283 = load i64, ptr %282, align 8, !tbaa !9
  %284 = icmp slt i64 %283, 0
  br i1 %284, label %285, label %287

285:                                              ; preds = %281
  %286 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -4, ptr %286, align 8, !tbaa !9
  br label %351

287:                                              ; preds = %281
  %288 = load ptr, ptr %32, align 8, !tbaa !5
  %289 = load i64, ptr %288, align 8, !tbaa !9
  %290 = load ptr, ptr %29, align 8, !tbaa !5
  %291 = load i64, ptr %290, align 8, !tbaa !9
  %292 = icmp sge i64 1, %291
  br i1 %292, label %293, label %294

293:                                              ; preds = %287
  br label %297

294:                                              ; preds = %287
  %295 = load ptr, ptr %29, align 8, !tbaa !5
  %296 = load i64, ptr %295, align 8, !tbaa !9
  br label %297

297:                                              ; preds = %294, %293
  %298 = phi i64 [ 1, %293 ], [ %296, %294 ]
  %299 = icmp slt i64 %289, %298
  br i1 %299, label %300, label %302

300:                                              ; preds = %297
  %301 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -6, ptr %301, align 8, !tbaa !9
  br label %350

302:                                              ; preds = %297
  %303 = load ptr, ptr %34, align 8, !tbaa !5
  %304 = load i64, ptr %303, align 8, !tbaa !9
  %305 = load ptr, ptr %29, align 8, !tbaa !5
  %306 = load i64, ptr %305, align 8, !tbaa !9
  %307 = icmp sge i64 1, %306
  br i1 %307, label %308, label %309

308:                                              ; preds = %302
  br label %312

309:                                              ; preds = %302
  %310 = load ptr, ptr %29, align 8, !tbaa !5
  %311 = load i64, ptr %310, align 8, !tbaa !9
  br label %312

312:                                              ; preds = %309, %308
  %313 = phi i64 [ 1, %308 ], [ %311, %309 ]
  %314 = icmp slt i64 %304, %313
  br i1 %314, label %315, label %317

315:                                              ; preds = %312
  %316 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -8, ptr %316, align 8, !tbaa !9
  br label %349

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

323:                                              ; preds = %317
  br label %327

324:                                              ; preds = %317
  %325 = load ptr, ptr %29, align 8, !tbaa !5
  %326 = load i64, ptr %325, align 8, !tbaa !9
  br label %327

327:                                              ; preds = %324, %323
  %328 = phi i64 [ 1, %323 ], [ %326, %324 ]
  %329 = icmp slt i64 %319, %328
  br i1 %329, label %330, label %332

330:                                              ; preds = %327
  %331 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -13, ptr %331, align 8, !tbaa !9
  br label %348

332:                                              ; preds = %327
  %333 = load ptr, ptr %41, align 8, !tbaa !5
  %334 = load i64, ptr %333, align 8, !tbaa !9
  %335 = load ptr, ptr %29, align 8, !tbaa !5
  %336 = load i64, ptr %335, align 8, !tbaa !9
  %337 = icmp sge i64 1, %336
  br i1 %337, label %338, label %339

338:                                              ; preds = %332
  br label %342

339:                                              ; preds = %332
  %340 = load ptr, ptr %29, align 8, !tbaa !5
  %341 = load i64, ptr %340, align 8, !tbaa !9
  br label %342

342:                                              ; preds = %339, %338
  %343 = phi i64 [ 1, %338 ], [ %341, %339 ]
  %344 = icmp slt i64 %334, %343
  br i1 %344, label %345, label %347

345:                                              ; preds = %342
  %346 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -15, ptr %346, align 8, !tbaa !9
  br label %347

347:                                              ; preds = %345, %342
  br label %348

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

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

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

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

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

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

354:                                              ; preds = %353, %261
  %355 = load ptr, ptr %51, align 8, !tbaa !5
  %356 = load i64, ptr %355, align 8, !tbaa !9
  %357 = icmp ne i64 %356, 0
  br i1 %357, label %358, label %363

358:                                              ; preds = %354
  %359 = load ptr, ptr %51, align 8, !tbaa !5
  %360 = load i64, ptr %359, align 8, !tbaa !9
  %361 = sub nsw i64 0, %360
  store i64 %361, ptr %64, align 8, !tbaa !9
  %362 = call i32 @xerbla_(ptr noundef @.str.5, ptr noundef %64)
  store i32 0, ptr %26, align 4
  store i32 1, ptr %85, align 4
  br label %983

363:                                              ; preds = %354
  %364 = load ptr, ptr %29, align 8, !tbaa !5
  %365 = load i64, ptr %364, align 8, !tbaa !9
  %366 = icmp eq i64 %365, 0
  br i1 %366, label %371, label %367

367:                                              ; preds = %363
  %368 = load ptr, ptr %30, align 8, !tbaa !5
  %369 = load i64, ptr %368, align 8, !tbaa !9
  %370 = icmp eq i64 %369, 0
  br i1 %370, label %371, label %438

371:                                              ; preds = %367, %363
  %372 = load ptr, ptr %42, align 8, !tbaa !5
  store double 1.000000e+00, ptr %372, align 8, !tbaa !11
  %373 = load ptr, ptr %30, align 8, !tbaa !5
  %374 = load i64, ptr %373, align 8, !tbaa !9
  store i64 %374, ptr %64, align 8, !tbaa !9
  store i64 1, ptr %71, align 8, !tbaa !9
  br label %375

375:                                              ; preds = %434, %371
  %376 = load i64, ptr %71, align 8, !tbaa !9
  %377 = load i64, ptr %64, align 8, !tbaa !9
  %378 = icmp sle i64 %376, %377
  br i1 %378, label %379, label %437

379:                                              ; preds = %375
  %380 = load ptr, ptr %43, align 8, !tbaa !5
  %381 = load i64, ptr %71, align 8, !tbaa !9
  %382 = getelementptr inbounds double, ptr %380, i64 %381
  store double 0.000000e+00, ptr %382, align 8, !tbaa !11
  %383 = load ptr, ptr %44, align 8, !tbaa !5
  %384 = load i64, ptr %383, align 8, !tbaa !9
  %385 = icmp sge i64 %384, 1
  br i1 %385, label %386, label %397

386:                                              ; preds = %379
  %387 = load ptr, ptr %45, align 8, !tbaa !5
  %388 = load i64, ptr %71, align 8, !tbaa !9
  %389 = load i64, ptr %60, align 8, !tbaa !9
  %390 = add nsw i64 %388, %389
  %391 = getelementptr inbounds double, ptr %387, i64 %390
  store double 1.000000e+00, ptr %391, align 8, !tbaa !11
  %392 = load ptr, ptr %46, align 8, !tbaa !5
  %393 = load i64, ptr %71, align 8, !tbaa !9
  %394 = load i64, ptr %62, align 8, !tbaa !9
  %395 = add nsw i64 %393, %394
  %396 = getelementptr inbounds double, ptr %392, i64 %395
  store double 1.000000e+00, ptr %396, align 8, !tbaa !11
  br label %433

397:                                              ; preds = %379
  %398 = load ptr, ptr %44, align 8, !tbaa !5
  %399 = load i64, ptr %398, align 8, !tbaa !9
  %400 = icmp sge i64 %399, 2
  br i1 %400, label %401, label %414

401:                                              ; preds = %397
  %402 = load ptr, ptr %45, align 8, !tbaa !5
  %403 = load i64, ptr %71, align 8, !tbaa !9
  %404 = load i64, ptr %60, align 8, !tbaa !9
  %405 = shl i64 %404, 1
  %406 = add nsw i64 %403, %405
  %407 = getelementptr inbounds double, ptr %402, i64 %406
  store double 0.000000e+00, ptr %407, align 8, !tbaa !11
  %408 = load ptr, ptr %46, align 8, !tbaa !5
  %409 = load i64, ptr %71, align 8, !tbaa !9
  %410 = load i64, ptr %62, align 8, !tbaa !9
  %411 = shl i64 %410, 1
  %412 = add nsw i64 %409, %411
  %413 = getelementptr inbounds double, ptr %408, i64 %412
  store double 0.000000e+00, ptr %413, align 8, !tbaa !11
  br label %432

414:                                              ; preds = %397
  %415 = load ptr, ptr %44, align 8, !tbaa !5
  %416 = load i64, ptr %415, align 8, !tbaa !9
  %417 = icmp sge i64 %416, 3
  br i1 %417, label %418, label %431

418:                                              ; preds = %414
  %419 = load ptr, ptr %45, align 8, !tbaa !5
  %420 = load i64, ptr %71, align 8, !tbaa !9
  %421 = load i64, ptr %60, align 8, !tbaa !9
  %422 = mul nsw i64 %421, 3
  %423 = add nsw i64 %420, %422
  %424 = getelementptr inbounds double, ptr %419, i64 %423
  store double 1.000000e+00, ptr %424, align 8, !tbaa !11
  %425 = load ptr, ptr %46, align 8, !tbaa !5
  %426 = load i64, ptr %71, align 8, !tbaa !9
  %427 = load i64, ptr %62, align 8, !tbaa !9
  %428 = mul nsw i64 %427, 3
  %429 = add nsw i64 %426, %428
  %430 = getelementptr inbounds double, ptr %425, i64 %429
  store double 1.000000e+00, ptr %430, align 8, !tbaa !11
  br label %431

431:                                              ; preds = %418, %414
  br label %432

432:                                              ; preds = %431, %401
  br label %433

433:                                              ; preds = %432, %386
  br label %434

434:                                              ; preds = %433
  %435 = load i64, ptr %71, align 8, !tbaa !9
  %436 = add nsw i64 %435, 1
  store i64 %436, ptr %71, align 8, !tbaa !9
  br label %375, !llvm.loop !13

437:                                              ; preds = %375
  store i32 0, ptr %26, align 4
  store i32 1, ptr %85, align 4
  br label %983

438:                                              ; preds = %367
  %439 = load ptr, ptr %42, align 8, !tbaa !5
  store double 0.000000e+00, ptr %439, align 8, !tbaa !11
  %440 = load ptr, ptr %30, align 8, !tbaa !5
  %441 = load i64, ptr %440, align 8, !tbaa !9
  store i64 %441, ptr %64, align 8, !tbaa !9
  store i64 1, ptr %71, align 8, !tbaa !9
  br label %442

442:                                              ; preds = %501, %438
  %443 = load i64, ptr %71, align 8, !tbaa !9
  %444 = load i64, ptr %64, align 8, !tbaa !9
  %445 = icmp sle i64 %443, %444
  br i1 %445, label %446, label %504

446:                                              ; preds = %442
  %447 = load ptr, ptr %43, align 8, !tbaa !5
  %448 = load i64, ptr %71, align 8, !tbaa !9
  %449 = getelementptr inbounds double, ptr %447, i64 %448
  store double 1.000000e+00, ptr %449, align 8, !tbaa !11
  %450 = load ptr, ptr %44, align 8, !tbaa !5
  %451 = load i64, ptr %450, align 8, !tbaa !9
  %452 = icmp sge i64 %451, 1
  br i1 %452, label %453, label %464

453:                                              ; preds = %446
  %454 = load ptr, ptr %45, align 8, !tbaa !5
  %455 = load i64, ptr %71, align 8, !tbaa !9
  %456 = load i64, ptr %60, align 8, !tbaa !9
  %457 = add nsw i64 %455, %456
  %458 = getelementptr inbounds double, ptr %454, i64 %457
  store double 1.000000e+00, ptr %458, align 8, !tbaa !11
  %459 = load ptr, ptr %46, align 8, !tbaa !5
  %460 = load i64, ptr %71, align 8, !tbaa !9
  %461 = load i64, ptr %62, align 8, !tbaa !9
  %462 = add nsw i64 %460, %461
  %463 = getelementptr inbounds double, ptr %459, i64 %462
  store double 1.000000e+00, ptr %463, align 8, !tbaa !11
  br label %500

464:                                              ; preds = %446
  %465 = load ptr, ptr %44, align 8, !tbaa !5
  %466 = load i64, ptr %465, align 8, !tbaa !9
  %467 = icmp sge i64 %466, 2
  br i1 %467, label %468, label %481

468:                                              ; preds = %464
  %469 = load ptr, ptr %45, align 8, !tbaa !5
  %470 = load i64, ptr %71, align 8, !tbaa !9
  %471 = load i64, ptr %60, align 8, !tbaa !9
  %472 = shl i64 %471, 1
  %473 = add nsw i64 %470, %472
  %474 = getelementptr inbounds double, ptr %469, i64 %473
  store double 1.000000e+00, ptr %474, align 8, !tbaa !11
  %475 = load ptr, ptr %46, align 8, !tbaa !5
  %476 = load i64, ptr %71, align 8, !tbaa !9
  %477 = load i64, ptr %62, align 8, !tbaa !9
  %478 = shl i64 %477, 1
  %479 = add nsw i64 %476, %478
  %480 = getelementptr inbounds double, ptr %475, i64 %479
  store double 1.000000e+00, ptr %480, align 8, !tbaa !11
  br label %499

481:                                              ; preds = %464
  %482 = load ptr, ptr %44, align 8, !tbaa !5
  %483 = load i64, ptr %482, align 8, !tbaa !9
  %484 = icmp sge i64 %483, 3
  br i1 %484, label %485, label %498

485:                                              ; preds = %481
  %486 = load ptr, ptr %45, align 8, !tbaa !5
  %487 = load i64, ptr %71, align 8, !tbaa !9
  %488 = load i64, ptr %60, align 8, !tbaa !9
  %489 = mul nsw i64 %488, 3
  %490 = add nsw i64 %487, %489
  %491 = getelementptr inbounds double, ptr %486, i64 %490
  store double 0.000000e+00, ptr %491, align 8, !tbaa !11
  %492 = load ptr, ptr %46, align 8, !tbaa !5
  %493 = load i64, ptr %71, align 8, !tbaa !9
  %494 = load i64, ptr %62, align 8, !tbaa !9
  %495 = mul nsw i64 %494, 3
  %496 = add nsw i64 %493, %495
  %497 = getelementptr inbounds double, ptr %492, i64 %496
  store double 0.000000e+00, ptr %497, align 8, !tbaa !11
  br label %498

498:                                              ; preds = %485, %481
  br label %499

499:                                              ; preds = %498, %468
  br label %500

500:                                              ; preds = %499, %453
  br label %501

501:                                              ; preds = %500
  %502 = load i64, ptr %71, align 8, !tbaa !9
  %503 = add nsw i64 %502, 1
  store i64 %503, ptr %71, align 8, !tbaa !9
  br label %442, !llvm.loop !15

504:                                              ; preds = %442
  %505 = load i64, ptr %80, align 8, !tbaa !9
  %506 = icmp ne i64 %505, 0
  br i1 %506, label %507, label %509

507:                                              ; preds = %504
  %508 = getelementptr inbounds [1 x i8], ptr %76, i64 0, i64 0
  store i8 73, ptr %508, align 1, !tbaa !16
  br label %511

509:                                              ; preds = %504
  %510 = getelementptr inbounds [1 x i8], ptr %76, i64 0, i64 0
  store i8 49, ptr %510, align 1, !tbaa !16
  br label %511

511:                                              ; preds = %509, %507
  %512 = getelementptr inbounds [1 x i8], ptr %76, i64 0, i64 0
  %513 = load ptr, ptr %29, align 8, !tbaa !5
  %514 = load ptr, ptr %29, align 8, !tbaa !5
  %515 = load ptr, ptr %31, align 8, !tbaa !5
  %516 = load i64, ptr %53, align 8, !tbaa !9
  %517 = getelementptr inbounds double, ptr %515, i64 %516
  %518 = load ptr, ptr %32, align 8, !tbaa !5
  %519 = load ptr, ptr %49, align 8, !tbaa !5
  %520 = getelementptr inbounds double, ptr %519, i64 1
  %521 = call double @dlange_(ptr noundef %512, ptr noundef %513, ptr noundef %514, ptr noundef %517, ptr noundef %518, ptr noundef %520)
  store double %521, ptr %78, align 8, !tbaa !11
  %522 = getelementptr inbounds [1 x i8], ptr %76, i64 0, i64 0
  %523 = load ptr, ptr %29, align 8, !tbaa !5
  %524 = load ptr, ptr %33, align 8, !tbaa !5
  %525 = load i64, ptr %55, align 8, !tbaa !9
  %526 = getelementptr inbounds double, ptr %524, i64 %525
  %527 = load ptr, ptr %34, align 8, !tbaa !5
  %528 = load ptr, ptr %42, align 8, !tbaa !5
  %529 = load ptr, ptr %49, align 8, !tbaa !5
  %530 = getelementptr inbounds double, ptr %529, i64 1
  %531 = load ptr, ptr %50, align 8, !tbaa !5
  %532 = getelementptr inbounds i64, ptr %531, i64 1
  %533 = load ptr, ptr %51, align 8, !tbaa !5
  %534 = call i32 @dgecon_(ptr noundef %522, ptr noundef %523, ptr noundef %526, ptr noundef %527, ptr noundef %78, ptr noundef %528, ptr noundef %530, ptr noundef %532, ptr noundef %533)
  %535 = load i64, ptr %70, align 8, !tbaa !9
  %536 = icmp ne i64 %535, 0
  br i1 %536, label %537, label %640

537:                                              ; preds = %511
  %538 = call i64 @ilaprec_(ptr noundef @.str.6)
  store i64 %538, ptr %73, align 8, !tbaa !9
  %539 = load i64, ptr %80, align 8, !tbaa !9
  %540 = icmp ne i64 %539, 0
  br i1 %540, label %541, label %590

541:                                              ; preds = %537
  %542 = load ptr, ptr %29, align 8, !tbaa !5
  %543 = load ptr, ptr %30, align 8, !tbaa !5
  %544 = load ptr, ptr %31, align 8, !tbaa !5
  %545 = load i64, ptr %53, align 8, !tbaa !9
  %546 = getelementptr inbounds double, ptr %544, i64 %545
  %547 = load ptr, ptr %32, align 8, !tbaa !5
  %548 = load ptr, ptr %33, align 8, !tbaa !5
  %549 = load i64, ptr %55, align 8, !tbaa !9
  %550 = getelementptr inbounds double, ptr %548, i64 %549
  %551 = load ptr, ptr %34, align 8, !tbaa !5
  %552 = load ptr, ptr %35, align 8, !tbaa !5
  %553 = getelementptr inbounds i64, ptr %552, i64 1
  %554 = load ptr, ptr %37, align 8, !tbaa !5
  %555 = getelementptr inbounds double, ptr %554, i64 1
  %556 = load ptr, ptr %38, align 8, !tbaa !5
  %557 = load i64, ptr %57, align 8, !tbaa !9
  %558 = getelementptr inbounds double, ptr %556, i64 %557
  %559 = load ptr, ptr %39, align 8, !tbaa !5
  %560 = load ptr, ptr %40, align 8, !tbaa !5
  %561 = load i64, ptr %59, align 8, !tbaa !9
  %562 = getelementptr inbounds double, ptr %560, i64 %561
  %563 = load ptr, ptr %41, align 8, !tbaa !5
  %564 = load ptr, ptr %43, align 8, !tbaa !5
  %565 = getelementptr inbounds double, ptr %564, i64 1
  %566 = load ptr, ptr %45, align 8, !tbaa !5
  %567 = load i64, ptr %61, align 8, !tbaa !9
  %568 = getelementptr inbounds double, ptr %566, i64 %567
  %569 = load ptr, ptr %46, align 8, !tbaa !5
  %570 = load i64, ptr %63, align 8, !tbaa !9
  %571 = getelementptr inbounds double, ptr %569, i64 %570
  %572 = load ptr, ptr %49, align 8, !tbaa !5
  %573 = load ptr, ptr %29, align 8, !tbaa !5
  %574 = load i64, ptr %573, align 8, !tbaa !9
  %575 = add nsw i64 %574, 1
  %576 = getelementptr inbounds double, ptr %572, i64 %575
  %577 = load ptr, ptr %49, align 8, !tbaa !5
  %578 = getelementptr inbounds double, ptr %577, i64 1
  %579 = load ptr, ptr %49, align 8, !tbaa !5
  %580 = load ptr, ptr %29, align 8, !tbaa !5
  %581 = load i64, ptr %580, align 8, !tbaa !9
  %582 = shl i64 %581, 1
  %583 = add nsw i64 %582, 1
  %584 = getelementptr inbounds double, ptr %579, i64 %583
  %585 = load ptr, ptr %49, align 8, !tbaa !5
  %586 = getelementptr inbounds double, ptr %585, i64 1
  %587 = load ptr, ptr %42, align 8, !tbaa !5
  %588 = load ptr, ptr %51, align 8, !tbaa !5
  %589 = call i32 @dla_gerfsx_extended__(ptr noundef %73, ptr noundef %74, ptr noundef %542, ptr noundef %543, ptr noundef %546, ptr noundef %547, ptr noundef %550, ptr noundef %551, ptr noundef %553, ptr noundef %79, ptr noundef %555, ptr noundef %558, ptr noundef %559, ptr noundef %562, ptr noundef %563, ptr noundef %565, ptr noundef %83, ptr noundef %568, ptr noundef %571, ptr noundef %576, ptr noundef %578, ptr noundef %584, ptr noundef %586, ptr noundef %587, ptr noundef %82, ptr noundef %84, ptr noundef %68, ptr noundef %77, ptr noundef %588)
  br label %639

590:                                              ; preds = %537
  %591 = load ptr, ptr %29, align 8, !tbaa !5
  %592 = load ptr, ptr %30, align 8, !tbaa !5
  %593 = load ptr, ptr %31, align 8, !tbaa !5
  %594 = load i64, ptr %53, align 8, !tbaa !9
  %595 = getelementptr inbounds double, ptr %593, i64 %594
  %596 = load ptr, ptr %32, align 8, !tbaa !5
  %597 = load ptr, ptr %33, align 8, !tbaa !5
  %598 = load i64, ptr %55, align 8, !tbaa !9
  %599 = getelementptr inbounds double, ptr %597, i64 %598
  %600 = load ptr, ptr %34, align 8, !tbaa !5
  %601 = load ptr, ptr %35, align 8, !tbaa !5
  %602 = getelementptr inbounds i64, ptr %601, i64 1
  %603 = load ptr, ptr %36, align 8, !tbaa !5
  %604 = getelementptr inbounds double, ptr %603, i64 1
  %605 = load ptr, ptr %38, align 8, !tbaa !5
  %606 = load i64, ptr %57, align 8, !tbaa !9
  %607 = getelementptr inbounds double, ptr %605, i64 %606
  %608 = load ptr, ptr %39, align 8, !tbaa !5
  %609 = load ptr, ptr %40, align 8, !tbaa !5
  %610 = load i64, ptr %59, align 8, !tbaa !9
  %611 = getelementptr inbounds double, ptr %609, i64 %610
  %612 = load ptr, ptr %41, align 8, !tbaa !5
  %613 = load ptr, ptr %43, align 8, !tbaa !5
  %614 = getelementptr inbounds double, ptr %613, i64 1
  %615 = load ptr, ptr %45, align 8, !tbaa !5
  %616 = load i64, ptr %61, align 8, !tbaa !9
  %617 = getelementptr inbounds double, ptr %615, i64 %616
  %618 = load ptr, ptr %46, align 8, !tbaa !5
  %619 = load i64, ptr %63, align 8, !tbaa !9
  %620 = getelementptr inbounds double, ptr %618, i64 %619
  %621 = load ptr, ptr %49, align 8, !tbaa !5
  %622 = load ptr, ptr %29, align 8, !tbaa !5
  %623 = load i64, ptr %622, align 8, !tbaa !9
  %624 = add nsw i64 %623, 1
  %625 = getelementptr inbounds double, ptr %621, i64 %624
  %626 = load ptr, ptr %49, align 8, !tbaa !5
  %627 = getelementptr inbounds double, ptr %626, i64 1
  %628 = load ptr, ptr %49, align 8, !tbaa !5
  %629 = load ptr, ptr %29, align 8, !tbaa !5
  %630 = load i64, ptr %629, align 8, !tbaa !9
  %631 = shl i64 %630, 1
  %632 = add nsw i64 %631, 1
  %633 = getelementptr inbounds double, ptr %628, i64 %632
  %634 = load ptr, ptr %49, align 8, !tbaa !5
  %635 = getelementptr inbounds double, ptr %634, i64 1
  %636 = load ptr, ptr %42, align 8, !tbaa !5
  %637 = load ptr, ptr %51, align 8, !tbaa !5
  %638 = call i32 @dla_gerfsx_extended__(ptr noundef %73, ptr noundef %74, ptr noundef %591, ptr noundef %592, ptr noundef %595, ptr noundef %596, ptr noundef %599, ptr noundef %600, ptr noundef %602, ptr noundef %81, ptr noundef %604, ptr noundef %607, ptr noundef %608, ptr noundef %611, ptr noundef %612, ptr noundef %614, ptr noundef %83, ptr noundef %617, ptr noundef %620, ptr noundef %625, ptr noundef %627, ptr noundef %633, ptr noundef %635, ptr noundef %636, ptr noundef %82, ptr noundef %84, ptr noundef %68, ptr noundef %77, ptr noundef %637)
  br label %639

639:                                              ; preds = %590, %541
  br label %640

640:                                              ; preds = %639, %511
  store double 1.000000e+01, ptr %65, align 8, !tbaa !11
  %641 = load ptr, ptr %29, align 8, !tbaa !5
  %642 = load i64, ptr %641, align 8, !tbaa !9
  %643 = sitofp i64 %642 to double
  %644 = call double @sqrt(double noundef %643) #4
  store double %644, ptr %66, align 8, !tbaa !11
  %645 = load double, ptr %65, align 8, !tbaa !11
  %646 = load double, ptr %66, align 8, !tbaa !11
  %647 = fcmp oge double %645, %646
  br i1 %647, label %648, label %650

648:                                              ; preds = %640
  %649 = load double, ptr %65, align 8, !tbaa !11
  br label %652

650:                                              ; preds = %640
  %651 = load double, ptr %66, align 8, !tbaa !11
  br label %652

652:                                              ; preds = %650, %648
  %653 = phi double [ %649, %648 ], [ %651, %650 ]
  %654 = call double @dlamch_(ptr noundef @.str)
  %655 = fmul double %653, %654
  store double %655, ptr %69, align 8, !tbaa !11
  %656 = load ptr, ptr %44, align 8, !tbaa !5
  %657 = load i64, ptr %656, align 8, !tbaa !9
  %658 = icmp sge i64 %657, 1
  br i1 %658, label %659, label %834

659:                                              ; preds = %652
  %660 = load i64, ptr %83, align 8, !tbaa !9
  %661 = icmp sge i64 %660, 1
  br i1 %661, label %662, label %834

662:                                              ; preds = %659
  %663 = load i64, ptr %79, align 8, !tbaa !9
  %664 = icmp ne i64 %663, 0
  br i1 %664, label %665, label %689

665:                                              ; preds = %662
  %666 = load i64, ptr %80, align 8, !tbaa !9
  %667 = icmp ne i64 %666, 0
  br i1 %667, label %668, label %689

668:                                              ; preds = %665
  %669 = load ptr, ptr %27, align 8, !tbaa !5
  %670 = load ptr, ptr %29, align 8, !tbaa !5
  %671 = load ptr, ptr %31, align 8, !tbaa !5
  %672 = load i64, ptr %53, align 8, !tbaa !9
  %673 = getelementptr inbounds double, ptr %671, i64 %672
  %674 = load ptr, ptr %32, align 8, !tbaa !5
  %675 = load ptr, ptr %33, align 8, !tbaa !5
  %676 = load i64, ptr %55, align 8, !tbaa !9
  %677 = getelementptr inbounds double, ptr %675, i64 %676
  %678 = load ptr, ptr %34, align 8, !tbaa !5
  %679 = load ptr, ptr %35, align 8, !tbaa !5
  %680 = getelementptr inbounds i64, ptr %679, i64 1
  %681 = load ptr, ptr %37, align 8, !tbaa !5
  %682 = getelementptr inbounds double, ptr %681, i64 1
  %683 = load ptr, ptr %51, align 8, !tbaa !5
  %684 = load ptr, ptr %49, align 8, !tbaa !5
  %685 = getelementptr inbounds double, ptr %684, i64 1
  %686 = load ptr, ptr %50, align 8, !tbaa !5
  %687 = getelementptr inbounds i64, ptr %686, i64 1
  %688 = call double @dla_gercond__(ptr noundef %669, ptr noundef %670, ptr noundef %673, ptr noundef %674, ptr noundef %677, ptr noundef %678, ptr noundef %680, ptr noundef @c_n1, ptr noundef %682, ptr noundef %683, ptr noundef %685, ptr noundef %687, i64 noundef 1)
  store double %688, ptr %72, align 8, !tbaa !11
  br label %738

689:                                              ; preds = %665, %662
  %690 = load i64, ptr %81, align 8, !tbaa !9
  %691 = icmp ne i64 %690, 0
  br i1 %691, label %692, label %716

692:                                              ; preds = %689
  %693 = load i64, ptr %80, align 8, !tbaa !9
  %694 = icmp ne i64 %693, 0
  br i1 %694, label %716, label %695

695:                                              ; preds = %692
  %696 = load ptr, ptr %27, align 8, !tbaa !5
  %697 = load ptr, ptr %29, align 8, !tbaa !5
  %698 = load ptr, ptr %31, align 8, !tbaa !5
  %699 = load i64, ptr %53, align 8, !tbaa !9
  %700 = getelementptr inbounds double, ptr %698, i64 %699
  %701 = load ptr, ptr %32, align 8, !tbaa !5
  %702 = load ptr, ptr %33, align 8, !tbaa !5
  %703 = load i64, ptr %55, align 8, !tbaa !9
  %704 = getelementptr inbounds double, ptr %702, i64 %703
  %705 = load ptr, ptr %34, align 8, !tbaa !5
  %706 = load ptr, ptr %35, align 8, !tbaa !5
  %707 = getelementptr inbounds i64, ptr %706, i64 1
  %708 = load ptr, ptr %36, align 8, !tbaa !5
  %709 = getelementptr inbounds double, ptr %708, i64 1
  %710 = load ptr, ptr %51, align 8, !tbaa !5
  %711 = load ptr, ptr %49, align 8, !tbaa !5
  %712 = getelementptr inbounds double, ptr %711, i64 1
  %713 = load ptr, ptr %50, align 8, !tbaa !5
  %714 = getelementptr inbounds i64, ptr %713, i64 1
  %715 = call double @dla_gercond__(ptr noundef %696, ptr noundef %697, ptr noundef %700, ptr noundef %701, ptr noundef %704, ptr noundef %705, ptr noundef %707, ptr noundef @c_n1, ptr noundef %709, ptr noundef %710, ptr noundef %712, ptr noundef %714, i64 noundef 1)
  store double %715, ptr %72, align 8, !tbaa !11
  br label %737

716:                                              ; preds = %692, %689
  %717 = load ptr, ptr %27, align 8, !tbaa !5
  %718 = load ptr, ptr %29, align 8, !tbaa !5
  %719 = load ptr, ptr %31, align 8, !tbaa !5
  %720 = load i64, ptr %53, align 8, !tbaa !9
  %721 = getelementptr inbounds double, ptr %719, i64 %720
  %722 = load ptr, ptr %32, align 8, !tbaa !5
  %723 = load ptr, ptr %33, align 8, !tbaa !5
  %724 = load i64, ptr %55, align 8, !tbaa !9
  %725 = getelementptr inbounds double, ptr %723, i64 %724
  %726 = load ptr, ptr %34, align 8, !tbaa !5
  %727 = load ptr, ptr %35, align 8, !tbaa !5
  %728 = getelementptr inbounds i64, ptr %727, i64 1
  %729 = load ptr, ptr %36, align 8, !tbaa !5
  %730 = getelementptr inbounds double, ptr %729, i64 1
  %731 = load ptr, ptr %51, align 8, !tbaa !5
  %732 = load ptr, ptr %49, align 8, !tbaa !5
  %733 = getelementptr inbounds double, ptr %732, i64 1
  %734 = load ptr, ptr %50, align 8, !tbaa !5
  %735 = getelementptr inbounds i64, ptr %734, i64 1
  %736 = call double @dla_gercond__(ptr noundef %717, ptr noundef %718, ptr noundef %721, ptr noundef %722, ptr noundef %725, ptr noundef %726, ptr noundef %728, ptr noundef @c__0, ptr noundef %730, ptr noundef %731, ptr noundef %733, ptr noundef %735, i64 noundef 1)
  store double %736, ptr %72, align 8, !tbaa !11
  br label %737

737:                                              ; preds = %716, %695
  br label %738

738:                                              ; preds = %737, %668
  %739 = load ptr, ptr %30, align 8, !tbaa !5
  %740 = load i64, ptr %739, align 8, !tbaa !9
  store i64 %740, ptr %64, align 8, !tbaa !9
  store i64 1, ptr %71, align 8, !tbaa !9
  br label %741

741:                                              ; preds = %830, %738
  %742 = load i64, ptr %71, align 8, !tbaa !9
  %743 = load i64, ptr %64, align 8, !tbaa !9
  %744 = icmp sle i64 %742, %743
  br i1 %744, label %745, label %833

745:                                              ; preds = %741
  %746 = load ptr, ptr %44, align 8, !tbaa !5
  %747 = load i64, ptr %746, align 8, !tbaa !9
  %748 = icmp sge i64 %747, 2
  br i1 %748, label %749, label %765

749:                                              ; preds = %745
  %750 = load ptr, ptr %45, align 8, !tbaa !5
  %751 = load i64, ptr %71, align 8, !tbaa !9
  %752 = load i64, ptr %60, align 8, !tbaa !9
  %753 = shl i64 %752, 1
  %754 = add nsw i64 %751, %753
  %755 = getelementptr inbounds double, ptr %750, i64 %754
  %756 = load double, ptr %755, align 8, !tbaa !11
  %757 = fcmp ogt double %756, 1.000000e+00
  br i1 %757, label %758, label %765

758:                                              ; preds = %749
  %759 = load ptr, ptr %45, align 8, !tbaa !5
  %760 = load i64, ptr %71, align 8, !tbaa !9
  %761 = load i64, ptr %60, align 8, !tbaa !9
  %762 = shl i64 %761, 1
  %763 = add nsw i64 %760, %762
  %764 = getelementptr inbounds double, ptr %759, i64 %763
  store double 1.000000e+00, ptr %764, align 8, !tbaa !11
  br label %765

765:                                              ; preds = %758, %749, %745
  %766 = load double, ptr %72, align 8, !tbaa !11
  %767 = load double, ptr %67, align 8, !tbaa !11
  %768 = fcmp olt double %766, %767
  br i1 %768, label %769, label %793

769:                                              ; preds = %765
  %770 = load ptr, ptr %45, align 8, !tbaa !5
  %771 = load i64, ptr %71, align 8, !tbaa !9
  %772 = load i64, ptr %60, align 8, !tbaa !9
  %773 = shl i64 %772, 1
  %774 = add nsw i64 %771, %773
  %775 = getelementptr inbounds double, ptr %770, i64 %774
  store double 1.000000e+00, ptr %775, align 8, !tbaa !11
  %776 = load ptr, ptr %45, align 8, !tbaa !5
  %777 = load i64, ptr %71, align 8, !tbaa !9
  %778 = load i64, ptr %60, align 8, !tbaa !9
  %779 = add nsw i64 %777, %778
  %780 = getelementptr inbounds double, ptr %776, i64 %779
  store double 0.000000e+00, ptr %780, align 8, !tbaa !11
  %781 = load ptr, ptr %51, align 8, !tbaa !5
  %782 = load i64, ptr %781, align 8, !tbaa !9
  %783 = load ptr, ptr %29, align 8, !tbaa !5
  %784 = load i64, ptr %783, align 8, !tbaa !9
  %785 = icmp sle i64 %782, %784
  br i1 %785, label %786, label %792

786:                                              ; preds = %769
  %787 = load ptr, ptr %29, align 8, !tbaa !5
  %788 = load i64, ptr %787, align 8, !tbaa !9
  %789 = load i64, ptr %71, align 8, !tbaa !9
  %790 = add nsw i64 %788, %789
  %791 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 %790, ptr %791, align 8, !tbaa !9
  br label %792

792:                                              ; preds = %786, %769
  br label %817

793:                                              ; preds = %765
  %794 = load ptr, ptr %45, align 8, !tbaa !5
  %795 = load i64, ptr %71, align 8, !tbaa !9
  %796 = load i64, ptr %60, align 8, !tbaa !9
  %797 = shl i64 %796, 1
  %798 = add nsw i64 %795, %797
  %799 = getelementptr inbounds double, ptr %794, i64 %798
  %800 = load double, ptr %799, align 8, !tbaa !11
  %801 = load double, ptr %69, align 8, !tbaa !11
  %802 = fcmp olt double %800, %801
  br i1 %802, label %803, label %816

803:                                              ; preds = %793
  %804 = load double, ptr %69, align 8, !tbaa !11
  %805 = load ptr, ptr %45, align 8, !tbaa !5
  %806 = load i64, ptr %71, align 8, !tbaa !9
  %807 = load i64, ptr %60, align 8, !tbaa !9
  %808 = shl i64 %807, 1
  %809 = add nsw i64 %806, %808
  %810 = getelementptr inbounds double, ptr %805, i64 %809
  store double %804, ptr %810, align 8, !tbaa !11
  %811 = load ptr, ptr %45, align 8, !tbaa !5
  %812 = load i64, ptr %71, align 8, !tbaa !9
  %813 = load i64, ptr %60, align 8, !tbaa !9
  %814 = add nsw i64 %812, %813
  %815 = getelementptr inbounds double, ptr %811, i64 %814
  store double 1.000000e+00, ptr %815, align 8, !tbaa !11
  br label %816

816:                                              ; preds = %803, %793
  br label %817

817:                                              ; preds = %816, %792
  %818 = load ptr, ptr %44, align 8, !tbaa !5
  %819 = load i64, ptr %818, align 8, !tbaa !9
  %820 = icmp sge i64 %819, 3
  br i1 %820, label %821, label %829

821:                                              ; preds = %817
  %822 = load double, ptr %72, align 8, !tbaa !11
  %823 = load ptr, ptr %45, align 8, !tbaa !5
  %824 = load i64, ptr %71, align 8, !tbaa !9
  %825 = load i64, ptr %60, align 8, !tbaa !9
  %826 = mul nsw i64 %825, 3
  %827 = add nsw i64 %824, %826
  %828 = getelementptr inbounds double, ptr %823, i64 %827
  store double %822, ptr %828, align 8, !tbaa !11
  br label %829

829:                                              ; preds = %821, %817
  br label %830

830:                                              ; preds = %829
  %831 = load i64, ptr %71, align 8, !tbaa !9
  %832 = add nsw i64 %831, 1
  store i64 %832, ptr %71, align 8, !tbaa !9
  br label %741, !llvm.loop !17

833:                                              ; preds = %741
  br label %834

834:                                              ; preds = %833, %659, %652
  %835 = load ptr, ptr %44, align 8, !tbaa !5
  %836 = load i64, ptr %835, align 8, !tbaa !9
  %837 = icmp sge i64 %836, 1
  br i1 %837, label %838, label %982

838:                                              ; preds = %834
  %839 = load i64, ptr %83, align 8, !tbaa !9
  %840 = icmp sge i64 %839, 2
  br i1 %840, label %841, label %982

841:                                              ; preds = %838
  %842 = call double @dlamch_(ptr noundef @.str)
  %843 = call double @sqrt(double noundef %842) #4
  store double %843, ptr %75, align 8, !tbaa !11
  %844 = load ptr, ptr %30, align 8, !tbaa !5
  %845 = load i64, ptr %844, align 8, !tbaa !9
  store i64 %845, ptr %64, align 8, !tbaa !9
  store i64 1, ptr %71, align 8, !tbaa !9
  br label %846

846:                                              ; preds = %978, %841
  %847 = load i64, ptr %71, align 8, !tbaa !9
  %848 = load i64, ptr %64, align 8, !tbaa !9
  %849 = icmp sle i64 %847, %848
  br i1 %849, label %850, label %981

850:                                              ; preds = %846
  %851 = load ptr, ptr %46, align 8, !tbaa !5
  %852 = load i64, ptr %71, align 8, !tbaa !9
  %853 = load i64, ptr %62, align 8, !tbaa !9
  %854 = shl i64 %853, 1
  %855 = add nsw i64 %852, %854
  %856 = getelementptr inbounds double, ptr %851, i64 %855
  %857 = load double, ptr %856, align 8, !tbaa !11
  %858 = load double, ptr %75, align 8, !tbaa !11
  %859 = fcmp olt double %857, %858
  br i1 %859, label %860, label %885

860:                                              ; preds = %850
  %861 = load ptr, ptr %27, align 8, !tbaa !5
  %862 = load ptr, ptr %29, align 8, !tbaa !5
  %863 = load ptr, ptr %31, align 8, !tbaa !5
  %864 = load i64, ptr %53, align 8, !tbaa !9
  %865 = getelementptr inbounds double, ptr %863, i64 %864
  %866 = load ptr, ptr %32, align 8, !tbaa !5
  %867 = load ptr, ptr %33, align 8, !tbaa !5
  %868 = load i64, ptr %55, align 8, !tbaa !9
  %869 = getelementptr inbounds double, ptr %867, i64 %868
  %870 = load ptr, ptr %34, align 8, !tbaa !5
  %871 = load ptr, ptr %35, align 8, !tbaa !5
  %872 = getelementptr inbounds i64, ptr %871, i64 1
  %873 = load ptr, ptr %40, align 8, !tbaa !5
  %874 = load i64, ptr %71, align 8, !tbaa !9
  %875 = load i64, ptr %58, align 8, !tbaa !9
  %876 = mul nsw i64 %874, %875
  %877 = add nsw i64 %876, 1
  %878 = getelementptr inbounds double, ptr %873, i64 %877
  %879 = load ptr, ptr %51, align 8, !tbaa !5
  %880 = load ptr, ptr %49, align 8, !tbaa !5
  %881 = getelementptr inbounds double, ptr %880, i64 1
  %882 = load ptr, ptr %50, align 8, !tbaa !5
  %883 = getelementptr inbounds i64, ptr %882, i64 1
  %884 = call double @dla_gercond__(ptr noundef %861, ptr noundef %862, ptr noundef %865, ptr noundef %866, ptr noundef %869, ptr noundef %870, ptr noundef %872, ptr noundef @c__1, ptr noundef %878, ptr noundef %879, ptr noundef %881, ptr noundef %883, i64 noundef 1)
  store double %884, ptr %72, align 8, !tbaa !11
  br label %886

885:                                              ; preds = %850
  store double 0.000000e+00, ptr %72, align 8, !tbaa !11
  br label %886

886:                                              ; preds = %885, %860
  %887 = load ptr, ptr %44, align 8, !tbaa !5
  %888 = load i64, ptr %887, align 8, !tbaa !9
  %889 = icmp sge i64 %888, 2
  br i1 %889, label %890, label %906

890:                                              ; preds = %886
  %891 = load ptr, ptr %46, align 8, !tbaa !5
  %892 = load i64, ptr %71, align 8, !tbaa !9
  %893 = load i64, ptr %62, align 8, !tbaa !9
  %894 = shl i64 %893, 1
  %895 = add nsw i64 %892, %894
  %896 = getelementptr inbounds double, ptr %891, i64 %895
  %897 = load double, ptr %896, align 8, !tbaa !11
  %898 = fcmp ogt double %897, 1.000000e+00
  br i1 %898, label %899, label %906

899:                                              ; preds = %890
  %900 = load ptr, ptr %46, align 8, !tbaa !5
  %901 = load i64, ptr %71, align 8, !tbaa !9
  %902 = load i64, ptr %62, align 8, !tbaa !9
  %903 = shl i64 %902, 1
  %904 = add nsw i64 %901, %903
  %905 = getelementptr inbounds double, ptr %900, i64 %904
  store double 1.000000e+00, ptr %905, align 8, !tbaa !11
  br label %906

906:                                              ; preds = %899, %890, %886
  %907 = load double, ptr %72, align 8, !tbaa !11
  %908 = load double, ptr %67, align 8, !tbaa !11
  %909 = fcmp olt double %907, %908
  br i1 %909, label %910, label %941

910:                                              ; preds = %906
  %911 = load ptr, ptr %46, align 8, !tbaa !5
  %912 = load i64, ptr %71, align 8, !tbaa !9
  %913 = load i64, ptr %62, align 8, !tbaa !9
  %914 = shl i64 %913, 1
  %915 = add nsw i64 %912, %914
  %916 = getelementptr inbounds double, ptr %911, i64 %915
  store double 1.000000e+00, ptr %916, align 8, !tbaa !11
  %917 = load ptr, ptr %46, align 8, !tbaa !5
  %918 = load i64, ptr %71, align 8, !tbaa !9
  %919 = load i64, ptr %62, align 8, !tbaa !9
  %920 = add nsw i64 %918, %919
  %921 = getelementptr inbounds double, ptr %917, i64 %920
  store double 0.000000e+00, ptr %921, align 8, !tbaa !11
  %922 = load ptr, ptr %48, align 8, !tbaa !5
  %923 = getelementptr inbounds double, ptr %922, i64 3
  %924 = load double, ptr %923, align 8, !tbaa !11
  %925 = fcmp oeq double %924, 1.000000e+00
  br i1 %925, label %926, label %940

926:                                              ; preds = %910
  %927 = load ptr, ptr %51, align 8, !tbaa !5
  %928 = load i64, ptr %927, align 8, !tbaa !9
  %929 = load ptr, ptr %29, align 8, !tbaa !5
  %930 = load i64, ptr %929, align 8, !tbaa !9
  %931 = load i64, ptr %71, align 8, !tbaa !9
  %932 = add nsw i64 %930, %931
  %933 = icmp slt i64 %928, %932
  br i1 %933, label %934, label %940

934:                                              ; preds = %926
  %935 = load ptr, ptr %29, align 8, !tbaa !5
  %936 = load i64, ptr %935, align 8, !tbaa !9
  %937 = load i64, ptr %71, align 8, !tbaa !9
  %938 = add nsw i64 %936, %937
  %939 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 %938, ptr %939, align 8, !tbaa !9
  br label %940

940:                                              ; preds = %934, %926, %910
  br label %965

941:                                              ; preds = %906
  %942 = load ptr, ptr %46, align 8, !tbaa !5
  %943 = load i64, ptr %71, align 8, !tbaa !9
  %944 = load i64, ptr %62, align 8, !tbaa !9
  %945 = shl i64 %944, 1
  %946 = add nsw i64 %943, %945
  %947 = getelementptr inbounds double, ptr %942, i64 %946
  %948 = load double, ptr %947, align 8, !tbaa !11
  %949 = load double, ptr %69, align 8, !tbaa !11
  %950 = fcmp olt double %948, %949
  br i1 %950, label %951, label %964

951:                                              ; preds = %941
  %952 = load double, ptr %69, align 8, !tbaa !11
  %953 = load ptr, ptr %46, align 8, !tbaa !5
  %954 = load i64, ptr %71, align 8, !tbaa !9
  %955 = load i64, ptr %62, align 8, !tbaa !9
  %956 = shl i64 %955, 1
  %957 = add nsw i64 %954, %956
  %958 = getelementptr inbounds double, ptr %953, i64 %957
  store double %952, ptr %958, align 8, !tbaa !11
  %959 = load ptr, ptr %46, align 8, !tbaa !5
  %960 = load i64, ptr %71, align 8, !tbaa !9
  %961 = load i64, ptr %62, align 8, !tbaa !9
  %962 = add nsw i64 %960, %961
  %963 = getelementptr inbounds double, ptr %959, i64 %962
  store double 1.000000e+00, ptr %963, align 8, !tbaa !11
  br label %964

964:                                              ; preds = %951, %941
  br label %965

965:                                              ; preds = %964, %940
  %966 = load ptr, ptr %44, align 8, !tbaa !5
  %967 = load i64, ptr %966, align 8, !tbaa !9
  %968 = icmp sge i64 %967, 3
  br i1 %968, label %969, label %977

969:                                              ; preds = %965
  %970 = load double, ptr %72, align 8, !tbaa !11
  %971 = load ptr, ptr %46, align 8, !tbaa !5
  %972 = load i64, ptr %71, align 8, !tbaa !9
  %973 = load i64, ptr %62, align 8, !tbaa !9
  %974 = mul nsw i64 %973, 3
  %975 = add nsw i64 %972, %974
  %976 = getelementptr inbounds double, ptr %971, i64 %975
  store double %970, ptr %976, align 8, !tbaa !11
  br label %977

977:                                              ; preds = %969, %965
  br label %978

978:                                              ; preds = %977
  %979 = load i64, ptr %71, align 8, !tbaa !9
  %980 = add nsw i64 %979, 1
  store i64 %980, ptr %71, align 8, !tbaa !9
  br label %846, !llvm.loop !18

981:                                              ; preds = %846
  br label %982

982:                                              ; preds = %981, %838, %834
  store i32 0, ptr %26, align 4
  store i32 1, ptr %85, align 4
  br label %983

983:                                              ; preds = %982, %437, %358
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #4
  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 1, 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
  %984 = load i32, ptr %26, align 4
  ret i32 %984
}

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

declare i64 @ilatrans_(ptr noundef) #2

declare double @dlamch_(ptr noundef) #2

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

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

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

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

declare i64 @ilaprec_(ptr noundef) #2

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

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

declare double @dla_gercond__(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 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 = !{!7, !7, i64 0}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !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 [8 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
@.str.5 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@c_n1 = external hidden global i64, align 8
@c__0 = external hidden global i64, align 8
@c__1 = external hidden global i64, align 8

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

55:                                               ; preds = %25
  %56 = load double, ptr %21, align 8, !tbaa !9
  %57 = fcmp olt double %56, 0.000000e+00
  br i1 %57, label %58, label %59

58:                                               ; preds = %55
  store double 1.000000e+00, ptr %21, align 8, !tbaa !9
  br label %61

59:                                               ; preds = %55
  %60 = fptosi double %56 to i64
  br label %61

61:                                               ; preds = %58, %59, %25
  %.0369 = phi i64 [ 1, %58 ], [ %60, %59 ], [ 1, %25 ]
  %62 = load i64, ptr %2, align 8, !tbaa !5
  %63 = sitofp i64 %62 to double
  %64 = tail call double @dlamch_(ptr noundef nonnull @.str) #6
  %65 = fmul double %64, %63
  store i64 10, ptr %41, align 8, !tbaa !5
  store double 5.000000e-01, ptr %43, align 8, !tbaa !9
  store double 2.500000e-01, ptr %33, align 8, !tbaa !9
  store i64 0, ptr %37, align 8, !tbaa !5
  %66 = load i64, ptr %20, align 8, !tbaa !5
  %67 = icmp sgt i64 %66, 1
  br i1 %67, label %68, label %.thread

68:                                               ; preds = %61
  %69 = getelementptr inbounds i8, ptr %21, i64 8
  %70 = load double, ptr %69, align 8, !tbaa !9
  %71 = fcmp olt double %70, 0.000000e+00
  br i1 %71, label %72, label %73

72:                                               ; preds = %68
  store double 1.000000e+01, ptr %69, align 8, !tbaa !9
  br label %75

73:                                               ; preds = %68
  %74 = fptosi double %70 to i64
  store i64 %74, ptr %41, align 8, !tbaa !5
  br label %75

75:                                               ; preds = %72, %73
  %.not = icmp eq i64 %66, 2
  br i1 %.not, label %.thread, label %76

76:                                               ; preds = %75
  %77 = getelementptr inbounds i8, ptr %21, i64 16
  %78 = load double, ptr %77, align 8, !tbaa !9
  %79 = fcmp olt double %78, 0.000000e+00
  br i1 %79, label %80, label %81

80:                                               ; preds = %76
  store double 1.000000e+00, ptr %77, align 8, !tbaa !9
  br label %.thread

81:                                               ; preds = %76
  %82 = fcmp oeq double %78, 0.000000e+00
  %83 = zext i1 %82 to i64
  store i64 %83, ptr %37, align 8, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %61, %81, %80, %75
  %84 = phi i64 [ 0, %61 ], [ %83, %81 ], [ 0, %80 ], [ 0, %75 ]
  %85 = icmp eq i64 %.0369, 0
  br i1 %85, label %89, label %86

86:                                               ; preds = %.thread
  %87 = load i64, ptr %17, align 8, !tbaa !5
  %88 = icmp eq i64 %87, 0
  br i1 %88, label %89, label %90

89:                                               ; preds = %86, %.thread
  store i64 0, ptr %42, align 8, !tbaa !5
  br label %93

90:                                               ; preds = %86
  %.not383 = icmp eq i64 %84, 0
  br i1 %.not383, label %92, label %91

91:                                               ; preds = %90
  store i64 1, ptr %42, align 8, !tbaa !5
  br label %93

92:                                               ; preds = %90
  store i64 2, ptr %42, align 8, !tbaa !5
  br label %93

93:                                               ; preds = %91, %92, %89
  %94 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #6
  %95 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.2) #6
  %.not384 = icmp eq i64 %95, 0
  br i1 %.not384, label %96, label %99

96:                                               ; preds = %93
  %97 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #6
  %98 = icmp ne i64 %97, 0
  br label %99

99:                                               ; preds = %96, %93
  %100 = phi i1 [ true, %93 ], [ %98, %96 ]
  %101 = zext i1 %100 to i64
  store i64 %101, ptr %40, align 8, !tbaa !5
  %102 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #6
  %.not385 = icmp eq i64 %102, 0
  br i1 %.not385, label %103, label %106

103:                                              ; preds = %99
  %104 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #6
  %105 = icmp ne i64 %104, 0
  br label %106

106:                                              ; preds = %103, %99
  %107 = phi i1 [ true, %99 ], [ %105, %103 ]
  %108 = zext i1 %107 to i64
  store i64 %108, ptr %39, align 8, !tbaa !5
  %109 = icmp eq i64 %52, -1
  br i1 %109, label %.thread404.sink.split, label %110

110:                                              ; preds = %106
  %or.cond = select i1 %100, i1 true, i1 %107
  br i1 %or.cond, label %113, label %111

111:                                              ; preds = %110
  %112 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  %.not386 = icmp eq i64 %112, 0
  br i1 %.not386, label %.thread404.sink.split, label %113

113:                                              ; preds = %111, %110
  %114 = load i64, ptr %2, align 8, !tbaa !5
  %115 = icmp slt i64 %114, 0
  br i1 %115, label %.thread404.sink.split, label %116

116:                                              ; preds = %113
  %117 = load i64, ptr %3, align 8, !tbaa !5
  %118 = icmp slt i64 %117, 0
  br i1 %118, label %.thread404.sink.split, label %119

119:                                              ; preds = %116
  %120 = load i64, ptr %5, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %114, i64 1)
  %121 = icmp slt i64 %120, %spec.select
  br i1 %121, label %.thread404.sink.split, label %122

122:                                              ; preds = %119
  %123 = load i64, ptr %7, align 8, !tbaa !5
  %124 = icmp slt i64 %123, %spec.select
  br i1 %124, label %.thread404.sink.split, label %125

125:                                              ; preds = %122
  %126 = load i64, ptr %12, align 8, !tbaa !5
  %127 = icmp slt i64 %126, %spec.select
  br i1 %127, label %.thread404.sink.split, label %128

128:                                              ; preds = %125
  %129 = load i64, ptr %14, align 8, !tbaa !5
  %130 = icmp slt i64 %129, %spec.select
  br i1 %130, label %.thread404.sink.split, label %131

131:                                              ; preds = %128
  %.pr = load i64, ptr %24, align 8, !tbaa !5
  %.not387 = icmp eq i64 %.pr, 0
  br i1 %.not387, label %135, label %.thread404

.thread404.sink.split:                            ; preds = %128, %125, %122, %119, %116, %113, %111, %106
  %.sink = phi i64 [ -1, %106 ], [ -2, %111 ], [ -3, %113 ], [ -4, %116 ], [ -6, %119 ], [ -8, %122 ], [ -13, %125 ], [ -15, %128 ]
  store i64 %.sink, ptr %24, align 8, !tbaa !5
  br label %.thread404

.thread404:                                       ; preds = %.thread404.sink.split, %131
  %132 = phi i64 [ %.pr, %131 ], [ %.sink, %.thread404.sink.split ]
  %133 = sub nsw i64 0, %132
  store i64 %133, ptr %32, align 8, !tbaa !5
  %134 = call i32 @xerbla_(ptr noundef nonnull @.str.5, ptr noundef nonnull %32) #6
  br label %.loopexit

135:                                              ; preds = %131
  %136 = icmp eq i64 %114, 0
  br i1 %136, label %139, label %137

137:                                              ; preds = %135
  %138 = icmp eq i64 %117, 0
  br i1 %138, label %.thread440, label %.lr.ph

.thread440:                                       ; preds = %137
  store double 1.000000e+00, ptr %15, align 8, !tbaa !9
  br label %.loopexit

139:                                              ; preds = %135
  store double 1.000000e+00, ptr %15, align 8, !tbaa !9
  %.not400422 = icmp eq i64 %117, 0
  br i1 %.not400422, label %.loopexit, label %.lr.ph425

.lr.ph425:                                        ; preds = %139
  %140 = load i64, ptr %17, align 8, !tbaa !5
  %141 = icmp sgt i64 %140, 0
  br i1 %141, label %.lr.ph425.split.us.preheader, label %.lr.ph425.split.preheader

.lr.ph425.split.us.preheader:                     ; preds = %.lr.ph425
  %min.iters.check474 = icmp ult i64 %117, 10
  br i1 %min.iters.check474, label %.lr.ph425.split.us.preheader485, label %vector.memcheck466

.lr.ph425.split.us.preheader485:                  ; preds = %middle.block472, %vector.memcheck466, %.lr.ph425.split.us.preheader
  %.0367423.us.ph = phi i64 [ 1, %vector.memcheck466 ], [ 1, %.lr.ph425.split.us.preheader ], [ %ind.end478, %middle.block472 ]
  %xtraiter491 = and i64 %117, 1
  %lcmp.mod492.not = icmp eq i64 %xtraiter491, 0
  br i1 %lcmp.mod492.not, label %.lr.ph425.split.us.prol.loopexit, label %.lr.ph425.split.us.prol

.lr.ph425.split.us.prol:                          ; preds = %.lr.ph425.split.us.preheader485
  %142 = getelementptr inbounds double, ptr %51, i64 %.0367423.us.ph
  store double 0.000000e+00, ptr %142, align 8, !tbaa !9
  %143 = add nsw i64 %.0367423.us.ph, %44
  %144 = getelementptr inbounds double, ptr %47, i64 %143
  store double 1.000000e+00, ptr %144, align 8, !tbaa !9
  %145 = getelementptr inbounds double, ptr %46, i64 %143
  store double 1.000000e+00, ptr %145, align 8, !tbaa !9
  %146 = add nuw i64 %.0367423.us.ph, 1
  br label %.lr.ph425.split.us.prol.loopexit

.lr.ph425.split.us.prol.loopexit:                 ; preds = %.lr.ph425.split.us.prol, %.lr.ph425.split.us.preheader485
  %.0367423.us.unr = phi i64 [ %.0367423.us.ph, %.lr.ph425.split.us.preheader485 ], [ %146, %.lr.ph425.split.us.prol ]
  %147 = icmp eq i64 %117, %.0367423.us.ph
  br i1 %147, label %.loopexit, label %.lr.ph425.split.us

vector.memcheck466:                               ; preds = %.lr.ph425.split.us.preheader
  %148 = sub i64 %28, %27
  %diff.check467 = icmp ult i64 %148, 32
  %149 = sub i64 %26, %27
  %diff.check468 = icmp ult i64 %149, 32
  %conflict.rdx469 = or i1 %diff.check467, %diff.check468
  %150 = sub i64 %26, %28
  %diff.check470 = icmp ult i64 %150, 32
  %conflict.rdx471 = or i1 %conflict.rdx469, %diff.check470
  br i1 %conflict.rdx471, label %.lr.ph425.split.us.preheader485, label %vector.ph475

vector.ph475:                                     ; preds = %vector.memcheck466
  %n.vec477 = and i64 %117, 9223372036854775804
  %ind.end478 = or disjoint i64 %n.vec477, 1
  br label %vector.body480

vector.body480:                                   ; preds = %vector.body480, %vector.ph475
  %index481 = phi i64 [ 0, %vector.ph475 ], [ %index.next483, %vector.body480 ]
  %offset.idx482 = or disjoint i64 %index481, 1
  %151 = getelementptr double, ptr %16, i64 %index481
  %152 = getelementptr inbounds i8, ptr %151, i64 16
  store <2 x double> zeroinitializer, ptr %151, align 8, !tbaa !9
  store <2 x double> zeroinitializer, ptr %152, align 8, !tbaa !9
  %153 = add nsw i64 %offset.idx482, %44
  %154 = getelementptr inbounds double, ptr %47, i64 %153
  %155 = getelementptr inbounds i8, ptr %154, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %154, align 8, !tbaa !9
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %155, align 8, !tbaa !9
  %156 = getelementptr inbounds double, ptr %46, i64 %153
  %157 = getelementptr inbounds i8, ptr %156, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %156, align 8, !tbaa !9
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %157, align 8, !tbaa !9
  %index.next483 = add nuw i64 %index481, 4
  %158 = icmp eq i64 %index.next483, %n.vec477
  br i1 %158, label %middle.block472, label %vector.body480, !llvm.loop !11

middle.block472:                                  ; preds = %vector.body480
  %cmp.n484 = icmp eq i64 %117, %n.vec477
  br i1 %cmp.n484, label %.loopexit, label %.lr.ph425.split.us.preheader485

.lr.ph425.split.preheader:                        ; preds = %.lr.ph425
  %159 = shl nuw i64 %117, 3
  tail call void @llvm.memset.p0.i64(ptr align 8 %16, i8 0, i64 %159, i1 false), !tbaa !9
  br label %.loopexit

.lr.ph425.split.us:                               ; preds = %.lr.ph425.split.us.prol.loopexit, %.lr.ph425.split.us
  %.0367423.us = phi i64 [ %168, %.lr.ph425.split.us ], [ %.0367423.us.unr, %.lr.ph425.split.us.prol.loopexit ]
  %160 = getelementptr inbounds double, ptr %51, i64 %.0367423.us
  store double 0.000000e+00, ptr %160, align 8, !tbaa !9
  %161 = add nsw i64 %.0367423.us, %44
  %162 = getelementptr inbounds double, ptr %47, i64 %161
  store double 1.000000e+00, ptr %162, align 8, !tbaa !9
  %163 = getelementptr inbounds double, ptr %46, i64 %161
  store double 1.000000e+00, ptr %163, align 8, !tbaa !9
  %164 = add nuw i64 %.0367423.us, 1
  %165 = getelementptr double, ptr %16, i64 %.0367423.us
  store double 0.000000e+00, ptr %165, align 8, !tbaa !9
  %166 = getelementptr inbounds double, ptr %18, i64 %.0367423.us
  store double 1.000000e+00, ptr %166, align 8, !tbaa !9
  %167 = getelementptr inbounds double, ptr %19, i64 %.0367423.us
  store double 1.000000e+00, ptr %167, align 8, !tbaa !9
  %168 = add nuw i64 %.0367423.us, 2
  %exitcond433.not.1 = icmp eq i64 %164, %117
  br i1 %exitcond433.not.1, label %.loopexit, label %.lr.ph425.split.us, !llvm.loop !15

.lr.ph:                                           ; preds = %137
  store double 0.000000e+00, ptr %15, align 8, !tbaa !9
  %169 = load i64, ptr %17, align 8, !tbaa !5
  %170 = icmp sgt i64 %169, 0
  br i1 %170, label %.lr.ph.split.us.preheader, label %.lr.ph.split.preheader

.lr.ph.split.preheader:                           ; preds = %.lr.ph
  %min.iters.check = icmp ult i64 %117, 4
  br i1 %min.iters.check, label %.lr.ph.split.preheader489, label %vector.ph

.lr.ph.split.preheader489:                        ; preds = %middle.block, %.lr.ph.split.preheader
  %.1368409.ph = phi i64 [ 1, %.lr.ph.split.preheader ], [ %ind.end, %middle.block ]
  br label %.lr.ph.split

vector.ph:                                        ; preds = %.lr.ph.split.preheader
  %n.vec = and i64 %117, 9223372036854775804
  %ind.end = or disjoint i64 %n.vec, 1
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %171 = getelementptr double, ptr %16, i64 %index
  %172 = getelementptr inbounds i8, ptr %171, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %171, align 8, !tbaa !9
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %172, align 8, !tbaa !9
  %index.next = add nuw i64 %index, 4
  %173 = icmp eq i64 %index.next, %n.vec
  br i1 %173, label %middle.block, label %vector.body, !llvm.loop !16

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %117, %n.vec
  br i1 %cmp.n, label %._crit_edge, label %.lr.ph.split.preheader489

.lr.ph.split.us.preheader:                        ; preds = %.lr.ph
  %min.iters.check455 = icmp ult i64 %117, 10
  br i1 %min.iters.check455, label %.lr.ph.split.us.preheader488, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph.split.us.preheader
  %174 = sub i64 %31, %30
  %diff.check = icmp ult i64 %174, 32
  %175 = sub i64 %29, %30
  %diff.check450 = icmp ult i64 %175, 32
  %conflict.rdx = or i1 %diff.check, %diff.check450
  %176 = sub i64 %29, %31
  %diff.check451 = icmp ult i64 %176, 32
  %conflict.rdx452 = or i1 %conflict.rdx, %diff.check451
  br i1 %conflict.rdx452, label %.lr.ph.split.us.preheader488, label %vector.ph456

vector.ph456:                                     ; preds = %vector.memcheck
  %n.vec458 = and i64 %117, 9223372036854775804
  %ind.end459 = or disjoint i64 %n.vec458, 1
  br label %vector.body461

vector.body461:                                   ; preds = %vector.body461, %vector.ph456
  %index462 = phi i64 [ 0, %vector.ph456 ], [ %index.next464, %vector.body461 ]
  %offset.idx463 = or disjoint i64 %index462, 1
  %177 = getelementptr double, ptr %16, i64 %index462
  %178 = getelementptr inbounds i8, ptr %177, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %177, align 8, !tbaa !9
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %178, align 8, !tbaa !9
  %179 = add nsw i64 %offset.idx463, %44
  %180 = getelementptr inbounds double, ptr %47, i64 %179
  %181 = getelementptr inbounds i8, ptr %180, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %180, align 8, !tbaa !9
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %181, align 8, !tbaa !9
  %182 = getelementptr inbounds double, ptr %46, i64 %179
  %183 = getelementptr inbounds i8, ptr %182, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %182, align 8, !tbaa !9
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %183, align 8, !tbaa !9
  %index.next464 = add nuw i64 %index462, 4
  %184 = icmp eq i64 %index.next464, %n.vec458
  br i1 %184, label %middle.block453, label %vector.body461, !llvm.loop !17

middle.block453:                                  ; preds = %vector.body461
  %cmp.n465 = icmp eq i64 %117, %n.vec458
  br i1 %cmp.n465, label %._crit_edge, label %.lr.ph.split.us.preheader488

.lr.ph.split.us.preheader488:                     ; preds = %middle.block453, %vector.memcheck, %.lr.ph.split.us.preheader
  %.1368409.us.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph.split.us.preheader ], [ %ind.end459, %middle.block453 ]
  %xtraiter = and i64 %117, 1
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph.split.us.prol.loopexit, label %.lr.ph.split.us.prol

.lr.ph.split.us.prol:                             ; preds = %.lr.ph.split.us.preheader488
  %185 = getelementptr inbounds double, ptr %51, i64 %.1368409.us.ph
  store double 1.000000e+00, ptr %185, align 8, !tbaa !9
  %186 = add nsw i64 %.1368409.us.ph, %44
  %187 = getelementptr inbounds double, ptr %47, i64 %186
  store double 1.000000e+00, ptr %187, align 8, !tbaa !9
  %188 = getelementptr inbounds double, ptr %46, i64 %186
  store double 1.000000e+00, ptr %188, align 8, !tbaa !9
  %189 = add nuw i64 %.1368409.us.ph, 1
  br label %.lr.ph.split.us.prol.loopexit

.lr.ph.split.us.prol.loopexit:                    ; preds = %.lr.ph.split.us.prol, %.lr.ph.split.us.preheader488
  %.1368409.us.unr = phi i64 [ %.1368409.us.ph, %.lr.ph.split.us.preheader488 ], [ %189, %.lr.ph.split.us.prol ]
  %190 = icmp eq i64 %117, %.1368409.us.ph
  br i1 %190, label %._crit_edge, label %.lr.ph.split.us

.lr.ph.split.us:                                  ; preds = %.lr.ph.split.us.prol.loopexit, %.lr.ph.split.us
  %.1368409.us = phi i64 [ %199, %.lr.ph.split.us ], [ %.1368409.us.unr, %.lr.ph.split.us.prol.loopexit ]
  %191 = getelementptr inbounds double, ptr %51, i64 %.1368409.us
  store double 1.000000e+00, ptr %191, align 8, !tbaa !9
  %192 = add nsw i64 %.1368409.us, %44
  %193 = getelementptr inbounds double, ptr %47, i64 %192
  store double 1.000000e+00, ptr %193, align 8, !tbaa !9
  %194 = getelementptr inbounds double, ptr %46, i64 %192
  store double 1.000000e+00, ptr %194, align 8, !tbaa !9
  %195 = add nuw i64 %.1368409.us, 1
  %196 = getelementptr double, ptr %16, i64 %.1368409.us
  store double 1.000000e+00, ptr %196, align 8, !tbaa !9
  %197 = getelementptr inbounds double, ptr %18, i64 %.1368409.us
  store double 1.000000e+00, ptr %197, align 8, !tbaa !9
  %198 = getelementptr inbounds double, ptr %19, i64 %.1368409.us
  store double 1.000000e+00, ptr %198, align 8, !tbaa !9
  %199 = add nuw i64 %.1368409.us, 2
  %exitcond430.not.1 = icmp eq i64 %195, %117
  br i1 %exitcond430.not.1, label %._crit_edge, label %.lr.ph.split.us, !llvm.loop !18

.lr.ph.split:                                     ; preds = %.lr.ph.split.preheader489, %.lr.ph.split
  %.1368409 = phi i64 [ %201, %.lr.ph.split ], [ %.1368409.ph, %.lr.ph.split.preheader489 ]
  %200 = getelementptr inbounds double, ptr %51, i64 %.1368409
  store double 1.000000e+00, ptr %200, align 8, !tbaa !9
  %201 = add nuw i64 %.1368409, 1
  %exitcond.not = icmp eq i64 %.1368409, %117
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph.split, !llvm.loop !19

._crit_edge:                                      ; preds = %.lr.ph.split, %.lr.ph.split.us.prol.loopexit, %.lr.ph.split.us, %middle.block, %middle.block453
  %202 = icmp ne i64 %94, 0
  %. = select i1 %202, i8 73, i8 49
  store i8 %., ptr %36, align 1, !tbaa !20
  %203 = call double @dlange_(ptr noundef nonnull %36, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %22) #6
  store double %203, ptr %38, align 8, !tbaa !9
  %204 = call i32 @dgecon_(ptr noundef nonnull %36, ptr noundef nonnull %2, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull %38, ptr noundef nonnull %15, ptr noundef %22, ptr noundef %23, ptr noundef nonnull %24) #6
  br i1 %85, label %214, label %205

205:                                              ; preds = %._crit_edge
  %206 = call i64 @ilaprec_(ptr noundef nonnull @.str.6) #6
  store i64 %206, ptr %34, align 8, !tbaa !5
  %207 = load i64, ptr %2, align 8, !tbaa !5
  %208 = getelementptr double, ptr %22, i64 %207
  %.idx390 = shl i64 %207, 4
  %209 = getelementptr i8, ptr %22, i64 %.idx390
  br i1 %202, label %210, label %212

210:                                              ; preds = %205
  %211 = call i32 @dla_gerfsx_extended__(ptr noundef nonnull %34, ptr noundef nonnull %35, 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 nonnull %39, ptr noundef %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %16, ptr noundef nonnull %42, ptr noundef %18, ptr noundef %19, ptr noundef %208, ptr noundef %22, ptr noundef %209, ptr noundef %22, ptr noundef nonnull %15, ptr noundef nonnull %41, ptr noundef nonnull %43, ptr noundef nonnull %33, ptr noundef nonnull %37, ptr noundef nonnull %24) #6
  br label %214

212:                                              ; preds = %205
  %213 = call i32 @dla_gerfsx_extended__(ptr noundef nonnull %34, ptr noundef nonnull %35, 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 nonnull %40, ptr noundef %9, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %16, ptr noundef nonnull %42, ptr noundef %18, ptr noundef %19, ptr noundef %208, ptr noundef %22, ptr noundef %209, ptr noundef %22, ptr noundef nonnull %15, ptr noundef nonnull %41, ptr noundef nonnull %43, ptr noundef nonnull %33, ptr noundef nonnull %37, ptr noundef nonnull %24) #6
  br label %214

214:                                              ; preds = %210, %212, %._crit_edge
  %215 = load i64, ptr %2, align 8, !tbaa !5
  %216 = sitofp i64 %215 to double
  %217 = call double @sqrt(double noundef %216) #6
  %218 = fcmp ole double %217, 1.000000e+01
  %219 = select i1 %218, double 1.000000e+01, double %217
  %220 = call double @dlamch_(ptr noundef nonnull @.str) #6
  %221 = fmul double %220, %219
  %222 = load i64, ptr %17, align 8, !tbaa !5
  %223 = icmp sgt i64 %222, 0
  %224 = load i64, ptr %42, align 8
  %225 = icmp sgt i64 %224, 0
  %or.cond3 = select i1 %223, i1 %225, i1 false
  br i1 %or.cond3, label %226, label %.loopexit407

226:                                              ; preds = %214
  %227 = load i64, ptr %39, align 8, !tbaa !5
  %228 = icmp ne i64 %227, 0
  %or.cond5 = and i1 %202, %228
  br i1 %or.cond5, label %229, label %231

229:                                              ; preds = %226
  %230 = call double @dla_gercond__(ptr noundef %0, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull @c_n1, ptr noundef %10, ptr noundef nonnull %24, ptr noundef %22, ptr noundef %23, i64 noundef 1) #6
  br label %238

231:                                              ; preds = %226
  %232 = load i64, ptr %40, align 8, !tbaa !5
  %233 = icmp eq i64 %232, 0
  %or.cond7 = or i1 %202, %233
  br i1 %or.cond7, label %236, label %234

234:                                              ; preds = %231
  %235 = call double @dla_gercond__(ptr noundef %0, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull @c_n1, ptr noundef %9, ptr noundef nonnull %24, ptr noundef %22, ptr noundef %23, i64 noundef 1) #6
  br label %238

236:                                              ; preds = %231
  %237 = call double @dla_gercond__(ptr noundef %0, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull @c__0, ptr noundef %9, ptr noundef nonnull %24, ptr noundef %22, ptr noundef %23, i64 noundef 1) #6
  br label %238

238:                                              ; preds = %234, %236, %229
  %.0366 = phi double [ %230, %229 ], [ %237, %236 ], [ %235, %234 ]
  %239 = load i64, ptr %3, align 8, !tbaa !5
  %.not391410 = icmp slt i64 %239, 1
  br i1 %.not391410, label %..loopexit407_crit_edge, label %.lr.ph413

..loopexit407_crit_edge:                          ; preds = %238
  %.pre438 = load i64, ptr %17, align 8, !tbaa !5
  br label %.loopexit407

.lr.ph413:                                        ; preds = %238
  %.idx395 = shl i64 %44, 4
  %invariant.gep = getelementptr i8, ptr %47, i64 %.idx395
  %240 = fcmp olt double %.0366, %65
  %.idx399 = mul i64 %44, 24
  %invariant.gep414 = getelementptr i8, ptr %47, i64 %.idx399
  %.pre436 = load i64, ptr %17, align 8, !tbaa !5
  br i1 %240, label %.lr.ph413.split.us, label %.lr.ph413.split.preheader

.lr.ph413.split.preheader:                        ; preds = %.lr.ph413
  %241 = icmp sgt i64 %.pre436, 1
  %invariant.gep445 = getelementptr i8, ptr %47, i64 %.idx395
  %242 = icmp sgt i64 %.pre436, 2
  br label %.lr.ph413.split

.lr.ph413.split.us:                               ; preds = %.lr.ph413, %255
  %243 = phi i64 [ %252, %255 ], [ %.pre436, %.lr.ph413 ]
  %.2411.us = phi i64 [ %256, %255 ], [ 1, %.lr.ph413 ]
  %244 = getelementptr double, ptr %47, i64 %.2411.us
  %245 = getelementptr i8, ptr %244, i64 %.idx395
  store double 1.000000e+00, ptr %245, align 8, !tbaa !9
  %246 = getelementptr double, ptr %244, i64 %44
  store double 0.000000e+00, ptr %246, align 8, !tbaa !9
  %247 = load i64, ptr %24, align 8, !tbaa !5
  %248 = load i64, ptr %2, align 8, !tbaa !5
  %.not398.us = icmp sgt i64 %247, %248
  br i1 %.not398.us, label %251, label %249

249:                                              ; preds = %.lr.ph413.split.us
  %250 = add nsw i64 %248, %.2411.us
  store i64 %250, ptr %24, align 8, !tbaa !5
  %.pre437 = load i64, ptr %17, align 8, !tbaa !5
  br label %251

251:                                              ; preds = %249, %.lr.ph413.split.us
  %252 = phi i64 [ %.pre437, %249 ], [ %243, %.lr.ph413.split.us ]
  %253 = icmp sgt i64 %252, 2
  br i1 %253, label %254, label %255

254:                                              ; preds = %251
  %gep415.us = getelementptr double, ptr %invariant.gep414, i64 %.2411.us
  store double %.0366, ptr %gep415.us, align 8, !tbaa !9
  br label %255

255:                                              ; preds = %254, %251
  %256 = add nuw i64 %.2411.us, 1
  %exitcond432.not = icmp eq i64 %.2411.us, %239
  br i1 %exitcond432.not, label %.loopexit407, label %.lr.ph413.split.us, !llvm.loop !21

.lr.ph413.split:                                  ; preds = %.lr.ph413.split.preheader, %270
  %.2411 = phi i64 [ %271, %270 ], [ 1, %.lr.ph413.split.preheader ]
  br i1 %241, label %257, label %.lr.ph413.split._crit_edge

.lr.ph413.split._crit_edge:                       ; preds = %.lr.ph413.split
  %gep446 = getelementptr double, ptr %invariant.gep445, i64 %.2411
  %.pre435 = load double, ptr %gep446, align 8, !tbaa !9
  br label %261

257:                                              ; preds = %.lr.ph413.split
  %gep = getelementptr double, ptr %invariant.gep, i64 %.2411
  %258 = load double, ptr %gep, align 8, !tbaa !9
  %259 = fcmp ogt double %258, 1.000000e+00
  br i1 %259, label %260, label %261

260:                                              ; preds = %257
  store double 1.000000e+00, ptr %gep, align 8, !tbaa !9
  br label %261

261:                                              ; preds = %.lr.ph413.split._crit_edge, %260, %257
  %262 = phi double [ %.pre435, %.lr.ph413.split._crit_edge ], [ 1.000000e+00, %260 ], [ %258, %257 ]
  %263 = fcmp olt double %262, %221
  br i1 %263, label %264, label %268

264:                                              ; preds = %261
  %265 = getelementptr double, ptr %47, i64 %.2411
  %266 = getelementptr i8, ptr %265, i64 %.idx395
  store double %221, ptr %266, align 8, !tbaa !9
  %267 = getelementptr double, ptr %265, i64 %44
  store double 1.000000e+00, ptr %267, align 8, !tbaa !9
  br label %268

268:                                              ; preds = %261, %264
  br i1 %242, label %269, label %270

269:                                              ; preds = %268
  %gep415 = getelementptr double, ptr %invariant.gep414, i64 %.2411
  store double %.0366, ptr %gep415, align 8, !tbaa !9
  br label %270

270:                                              ; preds = %268, %269
  %271 = add nuw i64 %.2411, 1
  %exitcond431.not = icmp eq i64 %.2411, %239
  br i1 %exitcond431.not, label %.loopexit407, label %.lr.ph413.split, !llvm.loop !21

.loopexit407:                                     ; preds = %270, %255, %..loopexit407_crit_edge, %214
  %272 = phi i64 [ %.pre438, %..loopexit407_crit_edge ], [ %222, %214 ], [ %252, %255 ], [ %.pre436, %270 ]
  %273 = icmp sgt i64 %272, 0
  %274 = load i64, ptr %42, align 8
  %275 = icmp sgt i64 %274, 1
  %or.cond9 = select i1 %273, i1 %275, i1 false
  br i1 %or.cond9, label %276, label %.loopexit

276:                                              ; preds = %.loopexit407
  %277 = call double @dlamch_(ptr noundef nonnull @.str) #6
  %278 = call double @sqrt(double noundef %277) #6
  %279 = load i64, ptr %3, align 8, !tbaa !5
  %invariant.gep416 = getelementptr i8, ptr %50, i64 8
  %.not392418 = icmp slt i64 %279, 1
  br i1 %.not392418, label %.loopexit, label %.lr.ph421

.lr.ph421:                                        ; preds = %276
  %.idx393 = shl i64 %44, 4
  %280 = getelementptr inbounds i8, ptr %21, i64 16
  %.idx394 = mul i64 %44, 24
  br label %281

281:                                              ; preds = %.lr.ph421, %318
  %.3419 = phi i64 [ 1, %.lr.ph421 ], [ %319, %318 ]
  %282 = getelementptr double, ptr %46, i64 %.3419
  %283 = getelementptr i8, ptr %282, i64 %.idx393
  %284 = load double, ptr %283, align 8, !tbaa !9
  %285 = fcmp olt double %284, %278
  br i1 %285, label %286, label %289

286:                                              ; preds = %281
  %287 = mul nsw i64 %.3419, %48
  %gep417 = getelementptr double, ptr %invariant.gep416, i64 %287
  %288 = call double @dla_gercond__(ptr noundef %0, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull @c__1, ptr noundef %gep417, ptr noundef nonnull %24, ptr noundef %22, ptr noundef %23, i64 noundef 1) #6
  br label %289

289:                                              ; preds = %281, %286
  %.1 = phi double [ %288, %286 ], [ 0.000000e+00, %281 ]
  %290 = load i64, ptr %17, align 8, !tbaa !5
  %291 = icmp sgt i64 %290, 1
  br i1 %291, label %292, label %296

292:                                              ; preds = %289
  %293 = load double, ptr %283, align 8, !tbaa !9
  %294 = fcmp ogt double %293, 1.000000e+00
  br i1 %294, label %295, label %296

295:                                              ; preds = %292
  store double 1.000000e+00, ptr %283, align 8, !tbaa !9
  br label %296

296:                                              ; preds = %295, %292, %289
  %297 = fcmp olt double %.1, %65
  br i1 %297, label %298, label %308

298:                                              ; preds = %296
  store double 1.000000e+00, ptr %283, align 8, !tbaa !9
  %299 = getelementptr double, ptr %282, i64 %44
  store double 0.000000e+00, ptr %299, align 8, !tbaa !9
  %300 = load double, ptr %280, align 8, !tbaa !9
  %301 = fcmp oeq double %300, 1.000000e+00
  br i1 %301, label %302, label %313

302:                                              ; preds = %298
  %303 = load i64, ptr %24, align 8, !tbaa !5
  %304 = load i64, ptr %2, align 8, !tbaa !5
  %305 = add nsw i64 %304, %.3419
  %306 = icmp slt i64 %303, %305
  br i1 %306, label %307, label %313

307:                                              ; preds = %302
  store i64 %305, ptr %24, align 8, !tbaa !5
  %.pre439 = load i64, ptr %17, align 8, !tbaa !5
  br label %313

308:                                              ; preds = %296
  %309 = load double, ptr %283, align 8, !tbaa !9
  %310 = fcmp olt double %309, %221
  br i1 %310, label %311, label %313

311:                                              ; preds = %308
  store double %221, ptr %283, align 8, !tbaa !9
  %312 = getelementptr double, ptr %282, i64 %44
  store double 1.000000e+00, ptr %312, align 8, !tbaa !9
  br label %313

313:                                              ; preds = %308, %311, %298, %302, %307
  %314 = phi i64 [ %290, %308 ], [ %290, %311 ], [ %290, %298 ], [ %290, %302 ], [ %.pre439, %307 ]
  %315 = icmp sgt i64 %314, 2
  br i1 %315, label %316, label %318

316:                                              ; preds = %313
  %317 = getelementptr i8, ptr %282, i64 %.idx394
  store double %.1, ptr %317, align 8, !tbaa !9
  br label %318

318:                                              ; preds = %313, %316
  %319 = add nuw nsw i64 %.3419, 1
  %.not392.not = icmp slt i64 %.3419, %279
  br i1 %.not392.not, label %281, label %.loopexit, !llvm.loop !22

.loopexit:                                        ; preds = %318, %.lr.ph425.split.us.prol.loopexit, %.lr.ph425.split.us, %middle.block472, %.thread440, %.lr.ph425.split.preheader, %276, %139, %.loopexit407, %.thread404
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %36) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #6
  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 @ilatrans_(ptr noundef) local_unnamed_addr #2

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

declare i64 @ilaprec_(ptr noundef) local_unnamed_addr #2

declare i32 @dla_gerfsx_extended__(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, ptr noundef, ptr noundef, ptr noundef, 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 @dla_gercond__(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 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) #4

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5

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

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

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


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