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

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

145:                                              ; preds = %24
  %146 = load ptr, ptr %46, align 8, !tbaa !5
  %147 = getelementptr inbounds double, ptr %146, i64 1
  %148 = load double, ptr %147, align 8, !tbaa !11
  %149 = fcmp olt double %148, 0.000000e+00
  br i1 %149, label %150, label %153

150:                                              ; preds = %145
  %151 = load ptr, ptr %46, align 8, !tbaa !5
  %152 = getelementptr inbounds double, ptr %151, i64 1
  store double 1.000000e+00, ptr %152, align 8, !tbaa !11
  br label %158

153:                                              ; preds = %145
  %154 = load ptr, ptr %46, align 8, !tbaa !5
  %155 = getelementptr inbounds double, ptr %154, i64 1
  %156 = load double, ptr %155, align 8, !tbaa !11
  %157 = fptosi double %156 to i64
  store i64 %157, ptr %68, align 8, !tbaa !9
  br label %158

158:                                              ; preds = %153, %150
  br label %159

159:                                              ; preds = %158, %24
  %160 = load ptr, ptr %28, align 8, !tbaa !5
  %161 = load i64, ptr %160, align 8, !tbaa !9
  %162 = sitofp i64 %161 to double
  %163 = call double @dlamch_(ptr noundef @.str)
  %164 = fmul double %162, %163
  store double %164, ptr %65, align 8, !tbaa !11
  store i64 10, ptr %77, align 8, !tbaa !9
  store double 5.000000e-01, ptr %79, align 8, !tbaa !11
  store double 2.500000e-01, ptr %66, align 8, !tbaa !11
  store i64 0, ptr %74, align 8, !tbaa !9
  %165 = load ptr, ptr %45, align 8, !tbaa !5
  %166 = load i64, ptr %165, align 8, !tbaa !9
  %167 = icmp sge i64 %166, 2
  br i1 %167, label %168, label %184

168:                                              ; preds = %159
  %169 = load ptr, ptr %46, align 8, !tbaa !5
  %170 = getelementptr inbounds double, ptr %169, i64 2
  %171 = load double, ptr %170, align 8, !tbaa !11
  %172 = fcmp olt double %171, 0.000000e+00
  br i1 %172, label %173, label %178

173:                                              ; preds = %168
  %174 = load i64, ptr %77, align 8, !tbaa !9
  %175 = sitofp i64 %174 to double
  %176 = load ptr, ptr %46, align 8, !tbaa !5
  %177 = getelementptr inbounds double, ptr %176, i64 2
  store double %175, ptr %177, align 8, !tbaa !11
  br label %183

178:                                              ; preds = %168
  %179 = load ptr, ptr %46, align 8, !tbaa !5
  %180 = getelementptr inbounds double, ptr %179, i64 2
  %181 = load double, ptr %180, align 8, !tbaa !11
  %182 = fptosi double %181 to i64
  store i64 %182, ptr %77, align 8, !tbaa !9
  br label %183

183:                                              ; preds = %178, %173
  br label %184

184:                                              ; preds = %183, %159
  %185 = load ptr, ptr %45, align 8, !tbaa !5
  %186 = load i64, ptr %185, align 8, !tbaa !9
  %187 = icmp sge i64 %186, 3
  br i1 %187, label %188, label %211

188:                                              ; preds = %184
  %189 = load ptr, ptr %46, align 8, !tbaa !5
  %190 = getelementptr inbounds double, ptr %189, i64 3
  %191 = load double, ptr %190, align 8, !tbaa !11
  %192 = fcmp olt double %191, 0.000000e+00
  br i1 %192, label %193, label %203

193:                                              ; preds = %188
  %194 = load i64, ptr %74, align 8, !tbaa !9
  %195 = icmp ne i64 %194, 0
  br i1 %195, label %196, label %199

196:                                              ; preds = %193
  %197 = load ptr, ptr %46, align 8, !tbaa !5
  %198 = getelementptr inbounds double, ptr %197, i64 3
  store double 0.000000e+00, ptr %198, align 8, !tbaa !11
  br label %202

199:                                              ; preds = %193
  %200 = load ptr, ptr %46, align 8, !tbaa !5
  %201 = getelementptr inbounds double, ptr %200, i64 3
  store double 1.000000e+00, ptr %201, align 8, !tbaa !11
  br label %202

202:                                              ; preds = %199, %196
  br label %210

203:                                              ; preds = %188
  %204 = load ptr, ptr %46, align 8, !tbaa !5
  %205 = getelementptr inbounds double, ptr %204, i64 3
  %206 = load double, ptr %205, align 8, !tbaa !11
  %207 = fcmp oeq double %206, 0.000000e+00
  %208 = zext i1 %207 to i32
  %209 = sext i32 %208 to i64
  store i64 %209, ptr %74, align 8, !tbaa !9
  br label %210

210:                                              ; preds = %203, %202
  br label %211

211:                                              ; preds = %210, %184
  %212 = load i64, ptr %68, align 8, !tbaa !9
  %213 = icmp eq i64 %212, 0
  br i1 %213, label %218, label %214

214:                                              ; preds = %211
  %215 = load ptr, ptr %42, align 8, !tbaa !5
  %216 = load i64, ptr %215, align 8, !tbaa !9
  %217 = icmp eq i64 %216, 0
  br i1 %217, label %218, label %219

218:                                              ; preds = %214, %211
  store i64 0, ptr %78, align 8, !tbaa !9
  br label %225

219:                                              ; preds = %214
  %220 = load i64, ptr %74, align 8, !tbaa !9
  %221 = icmp ne i64 %220, 0
  br i1 %221, label %222, label %223

222:                                              ; preds = %219
  store i64 1, ptr %78, align 8, !tbaa !9
  br label %224

223:                                              ; preds = %219
  store i64 2, ptr %78, align 8, !tbaa !9
  br label %224

224:                                              ; preds = %223, %222
  br label %225

225:                                              ; preds = %224, %218
  %226 = load ptr, ptr %27, align 8, !tbaa !5
  %227 = call i64 @lsame_(ptr noundef %226, ptr noundef @.str.1)
  store i64 %227, ptr %76, align 8, !tbaa !9
  %228 = load ptr, ptr %26, align 8, !tbaa !5
  %229 = call i64 @lsame_(ptr noundef %228, ptr noundef @.str.2)
  %230 = icmp ne i64 %229, 0
  br i1 %230, label %237, label %231

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

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

237:                                              ; preds = %231, %225
  %238 = load i64, ptr %76, align 8, !tbaa !9
  %239 = icmp ne i64 %238, 0
  br i1 %239, label %246, label %240

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

244:                                              ; preds = %240
  %245 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -2, ptr %245, align 8, !tbaa !9
  br label %324

246:                                              ; preds = %240, %237
  %247 = load ptr, ptr %28, align 8, !tbaa !5
  %248 = load i64, ptr %247, align 8, !tbaa !9
  %249 = icmp slt i64 %248, 0
  br i1 %249, label %250, label %252

250:                                              ; preds = %246
  %251 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -3, ptr %251, align 8, !tbaa !9
  br label %323

252:                                              ; preds = %246
  %253 = load ptr, ptr %29, align 8, !tbaa !5
  %254 = load i64, ptr %253, align 8, !tbaa !9
  %255 = icmp slt i64 %254, 0
  br i1 %255, label %256, label %258

256:                                              ; preds = %252
  %257 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -4, ptr %257, align 8, !tbaa !9
  br label %322

258:                                              ; preds = %252
  %259 = load ptr, ptr %31, align 8, !tbaa !5
  %260 = load i64, ptr %259, align 8, !tbaa !9
  %261 = load ptr, ptr %28, align 8, !tbaa !5
  %262 = load i64, ptr %261, align 8, !tbaa !9
  %263 = icmp sge i64 1, %262
  br i1 %263, label %264, label %265

264:                                              ; preds = %258
  br label %268

265:                                              ; preds = %258
  %266 = load ptr, ptr %28, align 8, !tbaa !5
  %267 = load i64, ptr %266, align 8, !tbaa !9
  br label %268

268:                                              ; preds = %265, %264
  %269 = phi i64 [ 1, %264 ], [ %267, %265 ]
  %270 = icmp slt i64 %260, %269
  br i1 %270, label %271, label %273

271:                                              ; preds = %268
  %272 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -6, ptr %272, align 8, !tbaa !9
  br label %321

273:                                              ; preds = %268
  %274 = load ptr, ptr %33, align 8, !tbaa !5
  %275 = load i64, ptr %274, align 8, !tbaa !9
  %276 = load ptr, ptr %28, align 8, !tbaa !5
  %277 = load i64, ptr %276, align 8, !tbaa !9
  %278 = icmp sge i64 1, %277
  br i1 %278, label %279, label %280

279:                                              ; preds = %273
  br label %283

280:                                              ; preds = %273
  %281 = load ptr, ptr %28, align 8, !tbaa !5
  %282 = load i64, ptr %281, align 8, !tbaa !9
  br label %283

283:                                              ; preds = %280, %279
  %284 = phi i64 [ 1, %279 ], [ %282, %280 ]
  %285 = icmp slt i64 %275, %284
  br i1 %285, label %286, label %288

286:                                              ; preds = %283
  %287 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -8, ptr %287, align 8, !tbaa !9
  br label %320

288:                                              ; preds = %283
  %289 = load ptr, ptr %37, align 8, !tbaa !5
  %290 = load i64, ptr %289, align 8, !tbaa !9
  %291 = load ptr, ptr %28, align 8, !tbaa !5
  %292 = load i64, ptr %291, align 8, !tbaa !9
  %293 = icmp sge i64 1, %292
  br i1 %293, label %294, label %295

294:                                              ; preds = %288
  br label %298

295:                                              ; preds = %288
  %296 = load ptr, ptr %28, align 8, !tbaa !5
  %297 = load i64, ptr %296, align 8, !tbaa !9
  br label %298

298:                                              ; preds = %295, %294
  %299 = phi i64 [ 1, %294 ], [ %297, %295 ]
  %300 = icmp slt i64 %290, %299
  br i1 %300, label %301, label %303

301:                                              ; preds = %298
  %302 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -11, ptr %302, align 8, !tbaa !9
  br label %319

303:                                              ; preds = %298
  %304 = load ptr, ptr %39, align 8, !tbaa !5
  %305 = load i64, ptr %304, align 8, !tbaa !9
  %306 = load ptr, ptr %28, align 8, !tbaa !5
  %307 = load i64, ptr %306, align 8, !tbaa !9
  %308 = icmp sge i64 1, %307
  br i1 %308, label %309, label %310

309:                                              ; preds = %303
  br label %313

310:                                              ; preds = %303
  %311 = load ptr, ptr %28, align 8, !tbaa !5
  %312 = load i64, ptr %311, align 8, !tbaa !9
  br label %313

313:                                              ; preds = %310, %309
  %314 = phi i64 [ 1, %309 ], [ %312, %310 ]
  %315 = icmp slt i64 %305, %314
  br i1 %315, label %316, label %318

316:                                              ; preds = %313
  %317 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -13, ptr %317, align 8, !tbaa !9
  br label %318

318:                                              ; preds = %316, %313
  br label %319

319:                                              ; preds = %318, %301
  br label %320

320:                                              ; preds = %319, %286
  br label %321

321:                                              ; preds = %320, %271
  br label %322

322:                                              ; preds = %321, %256
  br label %323

323:                                              ; preds = %322, %250
  br label %324

324:                                              ; preds = %323, %244
  br label %325

325:                                              ; preds = %324, %235
  %326 = load ptr, ptr %49, align 8, !tbaa !5
  %327 = load i64, ptr %326, align 8, !tbaa !9
  %328 = icmp ne i64 %327, 0
  br i1 %328, label %329, label %334

329:                                              ; preds = %325
  %330 = load ptr, ptr %49, align 8, !tbaa !5
  %331 = load i64, ptr %330, align 8, !tbaa !9
  %332 = sub nsw i64 0, %331
  store i64 %332, ptr %62, align 8, !tbaa !9
  %333 = call i32 @xerbla_(ptr noundef @.str.5, ptr noundef %62)
  store i32 0, ptr %25, align 4
  store i32 1, ptr %80, align 4
  br label %867

334:                                              ; preds = %325
  %335 = load ptr, ptr %28, align 8, !tbaa !5
  %336 = load i64, ptr %335, align 8, !tbaa !9
  %337 = icmp eq i64 %336, 0
  br i1 %337, label %342, label %338

338:                                              ; preds = %334
  %339 = load ptr, ptr %29, align 8, !tbaa !5
  %340 = load i64, ptr %339, align 8, !tbaa !9
  %341 = icmp eq i64 %340, 0
  br i1 %341, label %342, label %409

342:                                              ; preds = %338, %334
  %343 = load ptr, ptr %40, align 8, !tbaa !5
  store double 1.000000e+00, ptr %343, align 8, !tbaa !11
  %344 = load ptr, ptr %29, align 8, !tbaa !5
  %345 = load i64, ptr %344, align 8, !tbaa !9
  store i64 %345, ptr %62, align 8, !tbaa !9
  store i64 1, ptr %69, align 8, !tbaa !9
  br label %346

346:                                              ; preds = %405, %342
  %347 = load i64, ptr %69, align 8, !tbaa !9
  %348 = load i64, ptr %62, align 8, !tbaa !9
  %349 = icmp sle i64 %347, %348
  br i1 %349, label %350, label %408

350:                                              ; preds = %346
  %351 = load ptr, ptr %41, align 8, !tbaa !5
  %352 = load i64, ptr %69, align 8, !tbaa !9
  %353 = getelementptr inbounds double, ptr %351, i64 %352
  store double 0.000000e+00, ptr %353, align 8, !tbaa !11
  %354 = load ptr, ptr %42, align 8, !tbaa !5
  %355 = load i64, ptr %354, align 8, !tbaa !9
  %356 = icmp sge i64 %355, 1
  br i1 %356, label %357, label %368

357:                                              ; preds = %350
  %358 = load ptr, ptr %43, align 8, !tbaa !5
  %359 = load i64, ptr %69, align 8, !tbaa !9
  %360 = load i64, ptr %58, align 8, !tbaa !9
  %361 = add nsw i64 %359, %360
  %362 = getelementptr inbounds double, ptr %358, i64 %361
  store double 1.000000e+00, ptr %362, align 8, !tbaa !11
  %363 = load ptr, ptr %44, align 8, !tbaa !5
  %364 = load i64, ptr %69, align 8, !tbaa !9
  %365 = load i64, ptr %60, align 8, !tbaa !9
  %366 = add nsw i64 %364, %365
  %367 = getelementptr inbounds double, ptr %363, i64 %366
  store double 1.000000e+00, ptr %367, align 8, !tbaa !11
  br label %404

368:                                              ; preds = %350
  %369 = load ptr, ptr %42, align 8, !tbaa !5
  %370 = load i64, ptr %369, align 8, !tbaa !9
  %371 = icmp sge i64 %370, 2
  br i1 %371, label %372, label %385

372:                                              ; preds = %368
  %373 = load ptr, ptr %43, align 8, !tbaa !5
  %374 = load i64, ptr %69, align 8, !tbaa !9
  %375 = load i64, ptr %58, align 8, !tbaa !9
  %376 = shl i64 %375, 1
  %377 = add nsw i64 %374, %376
  %378 = getelementptr inbounds double, ptr %373, i64 %377
  store double 0.000000e+00, ptr %378, align 8, !tbaa !11
  %379 = load ptr, ptr %44, align 8, !tbaa !5
  %380 = load i64, ptr %69, align 8, !tbaa !9
  %381 = load i64, ptr %60, align 8, !tbaa !9
  %382 = shl i64 %381, 1
  %383 = add nsw i64 %380, %382
  %384 = getelementptr inbounds double, ptr %379, i64 %383
  store double 0.000000e+00, ptr %384, align 8, !tbaa !11
  br label %403

385:                                              ; preds = %368
  %386 = load ptr, ptr %42, align 8, !tbaa !5
  %387 = load i64, ptr %386, align 8, !tbaa !9
  %388 = icmp sge i64 %387, 3
  br i1 %388, label %389, label %402

389:                                              ; preds = %385
  %390 = load ptr, ptr %43, align 8, !tbaa !5
  %391 = load i64, ptr %69, align 8, !tbaa !9
  %392 = load i64, ptr %58, align 8, !tbaa !9
  %393 = mul nsw i64 %392, 3
  %394 = add nsw i64 %391, %393
  %395 = getelementptr inbounds double, ptr %390, i64 %394
  store double 1.000000e+00, ptr %395, align 8, !tbaa !11
  %396 = load ptr, ptr %44, align 8, !tbaa !5
  %397 = load i64, ptr %69, align 8, !tbaa !9
  %398 = load i64, ptr %60, align 8, !tbaa !9
  %399 = mul nsw i64 %398, 3
  %400 = add nsw i64 %397, %399
  %401 = getelementptr inbounds double, ptr %396, i64 %400
  store double 1.000000e+00, ptr %401, align 8, !tbaa !11
  br label %402

402:                                              ; preds = %389, %385
  br label %403

403:                                              ; preds = %402, %372
  br label %404

404:                                              ; preds = %403, %357
  br label %405

405:                                              ; preds = %404
  %406 = load i64, ptr %69, align 8, !tbaa !9
  %407 = add nsw i64 %406, 1
  store i64 %407, ptr %69, align 8, !tbaa !9
  br label %346, !llvm.loop !13

408:                                              ; preds = %346
  store i32 0, ptr %25, align 4
  store i32 1, ptr %80, align 4
  br label %867

409:                                              ; preds = %338
  %410 = load ptr, ptr %40, align 8, !tbaa !5
  store double 0.000000e+00, ptr %410, align 8, !tbaa !11
  %411 = load ptr, ptr %29, align 8, !tbaa !5
  %412 = load i64, ptr %411, align 8, !tbaa !9
  store i64 %412, ptr %62, align 8, !tbaa !9
  store i64 1, ptr %69, align 8, !tbaa !9
  br label %413

413:                                              ; preds = %472, %409
  %414 = load i64, ptr %69, align 8, !tbaa !9
  %415 = load i64, ptr %62, align 8, !tbaa !9
  %416 = icmp sle i64 %414, %415
  br i1 %416, label %417, label %475

417:                                              ; preds = %413
  %418 = load ptr, ptr %41, align 8, !tbaa !5
  %419 = load i64, ptr %69, align 8, !tbaa !9
  %420 = getelementptr inbounds double, ptr %418, i64 %419
  store double 1.000000e+00, ptr %420, align 8, !tbaa !11
  %421 = load ptr, ptr %42, align 8, !tbaa !5
  %422 = load i64, ptr %421, align 8, !tbaa !9
  %423 = icmp sge i64 %422, 1
  br i1 %423, label %424, label %435

424:                                              ; preds = %417
  %425 = load ptr, ptr %43, align 8, !tbaa !5
  %426 = load i64, ptr %69, align 8, !tbaa !9
  %427 = load i64, ptr %58, align 8, !tbaa !9
  %428 = add nsw i64 %426, %427
  %429 = getelementptr inbounds double, ptr %425, i64 %428
  store double 1.000000e+00, ptr %429, align 8, !tbaa !11
  %430 = load ptr, ptr %44, align 8, !tbaa !5
  %431 = load i64, ptr %69, align 8, !tbaa !9
  %432 = load i64, ptr %60, align 8, !tbaa !9
  %433 = add nsw i64 %431, %432
  %434 = getelementptr inbounds double, ptr %430, i64 %433
  store double 1.000000e+00, ptr %434, align 8, !tbaa !11
  br label %471

435:                                              ; preds = %417
  %436 = load ptr, ptr %42, align 8, !tbaa !5
  %437 = load i64, ptr %436, align 8, !tbaa !9
  %438 = icmp sge i64 %437, 2
  br i1 %438, label %439, label %452

439:                                              ; preds = %435
  %440 = load ptr, ptr %43, align 8, !tbaa !5
  %441 = load i64, ptr %69, align 8, !tbaa !9
  %442 = load i64, ptr %58, align 8, !tbaa !9
  %443 = shl i64 %442, 1
  %444 = add nsw i64 %441, %443
  %445 = getelementptr inbounds double, ptr %440, i64 %444
  store double 1.000000e+00, ptr %445, align 8, !tbaa !11
  %446 = load ptr, ptr %44, align 8, !tbaa !5
  %447 = load i64, ptr %69, align 8, !tbaa !9
  %448 = load i64, ptr %60, align 8, !tbaa !9
  %449 = shl i64 %448, 1
  %450 = add nsw i64 %447, %449
  %451 = getelementptr inbounds double, ptr %446, i64 %450
  store double 1.000000e+00, ptr %451, align 8, !tbaa !11
  br label %470

452:                                              ; preds = %435
  %453 = load ptr, ptr %42, align 8, !tbaa !5
  %454 = load i64, ptr %453, align 8, !tbaa !9
  %455 = icmp sge i64 %454, 3
  br i1 %455, label %456, label %469

456:                                              ; preds = %452
  %457 = load ptr, ptr %43, align 8, !tbaa !5
  %458 = load i64, ptr %69, align 8, !tbaa !9
  %459 = load i64, ptr %58, align 8, !tbaa !9
  %460 = mul nsw i64 %459, 3
  %461 = add nsw i64 %458, %460
  %462 = getelementptr inbounds double, ptr %457, i64 %461
  store double 0.000000e+00, ptr %462, align 8, !tbaa !11
  %463 = load ptr, ptr %44, align 8, !tbaa !5
  %464 = load i64, ptr %69, align 8, !tbaa !9
  %465 = load i64, ptr %60, align 8, !tbaa !9
  %466 = mul nsw i64 %465, 3
  %467 = add nsw i64 %464, %466
  %468 = getelementptr inbounds double, ptr %463, i64 %467
  store double 0.000000e+00, ptr %468, align 8, !tbaa !11
  br label %469

469:                                              ; preds = %456, %452
  br label %470

470:                                              ; preds = %469, %439
  br label %471

471:                                              ; preds = %470, %424
  br label %472

472:                                              ; preds = %471
  %473 = load i64, ptr %69, align 8, !tbaa !9
  %474 = add nsw i64 %473, 1
  store i64 %474, ptr %69, align 8, !tbaa !9
  br label %413, !llvm.loop !15

475:                                              ; preds = %413
  %476 = getelementptr inbounds [1 x i8], ptr %73, i64 0, i64 0
  store i8 73, ptr %476, align 1, !tbaa !16
  %477 = getelementptr inbounds [1 x i8], ptr %73, i64 0, i64 0
  %478 = load ptr, ptr %26, align 8, !tbaa !5
  %479 = load ptr, ptr %28, align 8, !tbaa !5
  %480 = load ptr, ptr %30, align 8, !tbaa !5
  %481 = load i64, ptr %51, align 8, !tbaa !9
  %482 = getelementptr inbounds double, ptr %480, i64 %481
  %483 = load ptr, ptr %31, align 8, !tbaa !5
  %484 = load ptr, ptr %47, align 8, !tbaa !5
  %485 = getelementptr inbounds double, ptr %484, i64 1
  %486 = call double @dlansy_(ptr noundef %477, ptr noundef %478, ptr noundef %479, ptr noundef %482, ptr noundef %483, ptr noundef %485)
  store double %486, ptr %75, align 8, !tbaa !11
  %487 = load ptr, ptr %26, align 8, !tbaa !5
  %488 = load ptr, ptr %28, align 8, !tbaa !5
  %489 = load ptr, ptr %32, align 8, !tbaa !5
  %490 = load i64, ptr %53, align 8, !tbaa !9
  %491 = getelementptr inbounds double, ptr %489, i64 %490
  %492 = load ptr, ptr %33, align 8, !tbaa !5
  %493 = load ptr, ptr %34, align 8, !tbaa !5
  %494 = getelementptr inbounds i64, ptr %493, i64 1
  %495 = load ptr, ptr %40, align 8, !tbaa !5
  %496 = load ptr, ptr %47, align 8, !tbaa !5
  %497 = getelementptr inbounds double, ptr %496, i64 1
  %498 = load ptr, ptr %48, align 8, !tbaa !5
  %499 = getelementptr inbounds i64, ptr %498, i64 1
  %500 = load ptr, ptr %49, align 8, !tbaa !5
  %501 = call i32 @dsycon_(ptr noundef %487, ptr noundef %488, ptr noundef %491, ptr noundef %492, ptr noundef %494, ptr noundef %75, ptr noundef %495, ptr noundef %497, ptr noundef %499, ptr noundef %500)
  %502 = load i64, ptr %68, align 8, !tbaa !9
  %503 = icmp ne i64 %502, 0
  br i1 %503, label %504, label %555

504:                                              ; preds = %475
  %505 = call i64 @ilaprec_(ptr noundef @.str.6)
  store i64 %505, ptr %71, align 8, !tbaa !9
  %506 = load ptr, ptr %26, align 8, !tbaa !5
  %507 = load ptr, ptr %28, align 8, !tbaa !5
  %508 = load ptr, ptr %29, align 8, !tbaa !5
  %509 = load ptr, ptr %30, align 8, !tbaa !5
  %510 = load i64, ptr %51, align 8, !tbaa !9
  %511 = getelementptr inbounds double, ptr %509, i64 %510
  %512 = load ptr, ptr %31, align 8, !tbaa !5
  %513 = load ptr, ptr %32, align 8, !tbaa !5
  %514 = load i64, ptr %53, align 8, !tbaa !9
  %515 = getelementptr inbounds double, ptr %513, i64 %514
  %516 = load ptr, ptr %33, align 8, !tbaa !5
  %517 = load ptr, ptr %34, align 8, !tbaa !5
  %518 = getelementptr inbounds i64, ptr %517, i64 1
  %519 = load ptr, ptr %35, align 8, !tbaa !5
  %520 = getelementptr inbounds double, ptr %519, i64 1
  %521 = load ptr, ptr %36, align 8, !tbaa !5
  %522 = load i64, ptr %55, align 8, !tbaa !9
  %523 = getelementptr inbounds double, ptr %521, i64 %522
  %524 = load ptr, ptr %37, align 8, !tbaa !5
  %525 = load ptr, ptr %38, align 8, !tbaa !5
  %526 = load i64, ptr %57, align 8, !tbaa !9
  %527 = getelementptr inbounds double, ptr %525, i64 %526
  %528 = load ptr, ptr %39, align 8, !tbaa !5
  %529 = load ptr, ptr %41, align 8, !tbaa !5
  %530 = getelementptr inbounds double, ptr %529, i64 1
  %531 = load ptr, ptr %43, align 8, !tbaa !5
  %532 = load i64, ptr %59, align 8, !tbaa !9
  %533 = getelementptr inbounds double, ptr %531, i64 %532
  %534 = load ptr, ptr %44, align 8, !tbaa !5
  %535 = load i64, ptr %61, align 8, !tbaa !9
  %536 = getelementptr inbounds double, ptr %534, i64 %535
  %537 = load ptr, ptr %47, align 8, !tbaa !5
  %538 = load ptr, ptr %28, align 8, !tbaa !5
  %539 = load i64, ptr %538, align 8, !tbaa !9
  %540 = add nsw i64 %539, 1
  %541 = getelementptr inbounds double, ptr %537, i64 %540
  %542 = load ptr, ptr %47, align 8, !tbaa !5
  %543 = getelementptr inbounds double, ptr %542, i64 1
  %544 = load ptr, ptr %47, align 8, !tbaa !5
  %545 = load ptr, ptr %28, align 8, !tbaa !5
  %546 = load i64, ptr %545, align 8, !tbaa !9
  %547 = shl i64 %546, 1
  %548 = add nsw i64 %547, 1
  %549 = getelementptr inbounds double, ptr %544, i64 %548
  %550 = load ptr, ptr %47, align 8, !tbaa !5
  %551 = getelementptr inbounds double, ptr %550, i64 1
  %552 = load ptr, ptr %40, align 8, !tbaa !5
  %553 = load ptr, ptr %49, align 8, !tbaa !5
  %554 = call i32 @dla_syrfsx_extended__(ptr noundef %71, ptr noundef %506, ptr noundef %507, ptr noundef %508, ptr noundef %511, ptr noundef %512, ptr noundef %515, ptr noundef %516, ptr noundef %518, ptr noundef %76, ptr noundef %520, ptr noundef %523, ptr noundef %524, ptr noundef %527, ptr noundef %528, ptr noundef %530, ptr noundef %78, ptr noundef %533, ptr noundef %536, ptr noundef %541, ptr noundef %543, ptr noundef %549, ptr noundef %551, ptr noundef %552, ptr noundef %77, ptr noundef %79, ptr noundef %66, ptr noundef %74, ptr noundef %553, i64 noundef 1)
  br label %555

555:                                              ; preds = %504, %475
  store double 1.000000e+01, ptr %63, align 8, !tbaa !11
  %556 = load ptr, ptr %28, align 8, !tbaa !5
  %557 = load i64, ptr %556, align 8, !tbaa !9
  %558 = sitofp i64 %557 to double
  %559 = call double @sqrt(double noundef %558) #4
  store double %559, ptr %64, align 8, !tbaa !11
  %560 = load double, ptr %63, align 8, !tbaa !11
  %561 = load double, ptr %64, align 8, !tbaa !11
  %562 = fcmp oge double %560, %561
  br i1 %562, label %563, label %565

563:                                              ; preds = %555
  %564 = load double, ptr %63, align 8, !tbaa !11
  br label %567

565:                                              ; preds = %555
  %566 = load double, ptr %64, align 8, !tbaa !11
  br label %567

567:                                              ; preds = %565, %563
  %568 = phi double [ %564, %563 ], [ %566, %565 ]
  %569 = call double @dlamch_(ptr noundef @.str)
  %570 = fmul double %568, %569
  store double %570, ptr %67, align 8, !tbaa !11
  %571 = load ptr, ptr %42, align 8, !tbaa !5
  %572 = load i64, ptr %571, align 8, !tbaa !9
  %573 = icmp sge i64 %572, 1
  br i1 %573, label %574, label %718

574:                                              ; preds = %567
  %575 = load i64, ptr %78, align 8, !tbaa !9
  %576 = icmp sge i64 %575, 1
  br i1 %576, label %577, label %718

577:                                              ; preds = %574
  %578 = load i64, ptr %76, align 8, !tbaa !9
  %579 = icmp ne i64 %578, 0
  br i1 %579, label %580, label %601

580:                                              ; preds = %577
  %581 = load ptr, ptr %26, align 8, !tbaa !5
  %582 = load ptr, ptr %28, align 8, !tbaa !5
  %583 = load ptr, ptr %30, align 8, !tbaa !5
  %584 = load i64, ptr %51, align 8, !tbaa !9
  %585 = getelementptr inbounds double, ptr %583, i64 %584
  %586 = load ptr, ptr %31, align 8, !tbaa !5
  %587 = load ptr, ptr %32, align 8, !tbaa !5
  %588 = load i64, ptr %53, align 8, !tbaa !9
  %589 = getelementptr inbounds double, ptr %587, i64 %588
  %590 = load ptr, ptr %33, align 8, !tbaa !5
  %591 = load ptr, ptr %34, align 8, !tbaa !5
  %592 = getelementptr inbounds i64, ptr %591, i64 1
  %593 = load ptr, ptr %35, align 8, !tbaa !5
  %594 = getelementptr inbounds double, ptr %593, i64 1
  %595 = load ptr, ptr %49, align 8, !tbaa !5
  %596 = load ptr, ptr %47, align 8, !tbaa !5
  %597 = getelementptr inbounds double, ptr %596, i64 1
  %598 = load ptr, ptr %48, align 8, !tbaa !5
  %599 = getelementptr inbounds i64, ptr %598, i64 1
  %600 = call double @dla_syrcond__(ptr noundef %581, ptr noundef %582, ptr noundef %585, ptr noundef %586, ptr noundef %589, ptr noundef %590, ptr noundef %592, ptr noundef @c_n1, ptr noundef %594, ptr noundef %595, ptr noundef %597, ptr noundef %599, i64 noundef 1)
  store double %600, ptr %70, align 8, !tbaa !11
  br label %622

601:                                              ; preds = %577
  %602 = load ptr, ptr %26, align 8, !tbaa !5
  %603 = load ptr, ptr %28, align 8, !tbaa !5
  %604 = load ptr, ptr %30, align 8, !tbaa !5
  %605 = load i64, ptr %51, align 8, !tbaa !9
  %606 = getelementptr inbounds double, ptr %604, i64 %605
  %607 = load ptr, ptr %31, align 8, !tbaa !5
  %608 = load ptr, ptr %32, align 8, !tbaa !5
  %609 = load i64, ptr %53, align 8, !tbaa !9
  %610 = getelementptr inbounds double, ptr %608, i64 %609
  %611 = load ptr, ptr %33, align 8, !tbaa !5
  %612 = load ptr, ptr %34, align 8, !tbaa !5
  %613 = getelementptr inbounds i64, ptr %612, i64 1
  %614 = load ptr, ptr %35, align 8, !tbaa !5
  %615 = getelementptr inbounds double, ptr %614, i64 1
  %616 = load ptr, ptr %49, align 8, !tbaa !5
  %617 = load ptr, ptr %47, align 8, !tbaa !5
  %618 = getelementptr inbounds double, ptr %617, i64 1
  %619 = load ptr, ptr %48, align 8, !tbaa !5
  %620 = getelementptr inbounds i64, ptr %619, i64 1
  %621 = call double @dla_syrcond__(ptr noundef %602, ptr noundef %603, ptr noundef %606, ptr noundef %607, ptr noundef %610, ptr noundef %611, ptr noundef %613, ptr noundef @c__0, ptr noundef %615, ptr noundef %616, ptr noundef %618, ptr noundef %620, i64 noundef 1)
  store double %621, ptr %70, align 8, !tbaa !11
  br label %622

622:                                              ; preds = %601, %580
  %623 = load ptr, ptr %29, align 8, !tbaa !5
  %624 = load i64, ptr %623, align 8, !tbaa !9
  store i64 %624, ptr %62, align 8, !tbaa !9
  store i64 1, ptr %69, align 8, !tbaa !9
  br label %625

625:                                              ; preds = %714, %622
  %626 = load i64, ptr %69, align 8, !tbaa !9
  %627 = load i64, ptr %62, align 8, !tbaa !9
  %628 = icmp sle i64 %626, %627
  br i1 %628, label %629, label %717

629:                                              ; preds = %625
  %630 = load ptr, ptr %42, align 8, !tbaa !5
  %631 = load i64, ptr %630, align 8, !tbaa !9
  %632 = icmp sge i64 %631, 2
  br i1 %632, label %633, label %649

633:                                              ; preds = %629
  %634 = load ptr, ptr %43, align 8, !tbaa !5
  %635 = load i64, ptr %69, align 8, !tbaa !9
  %636 = load i64, ptr %58, align 8, !tbaa !9
  %637 = shl i64 %636, 1
  %638 = add nsw i64 %635, %637
  %639 = getelementptr inbounds double, ptr %634, i64 %638
  %640 = load double, ptr %639, align 8, !tbaa !11
  %641 = fcmp ogt double %640, 1.000000e+00
  br i1 %641, label %642, label %649

642:                                              ; preds = %633
  %643 = load ptr, ptr %43, align 8, !tbaa !5
  %644 = load i64, ptr %69, align 8, !tbaa !9
  %645 = load i64, ptr %58, align 8, !tbaa !9
  %646 = shl i64 %645, 1
  %647 = add nsw i64 %644, %646
  %648 = getelementptr inbounds double, ptr %643, i64 %647
  store double 1.000000e+00, ptr %648, align 8, !tbaa !11
  br label %649

649:                                              ; preds = %642, %633, %629
  %650 = load double, ptr %70, align 8, !tbaa !11
  %651 = load double, ptr %65, align 8, !tbaa !11
  %652 = fcmp olt double %650, %651
  br i1 %652, label %653, label %677

653:                                              ; preds = %649
  %654 = load ptr, ptr %43, align 8, !tbaa !5
  %655 = load i64, ptr %69, align 8, !tbaa !9
  %656 = load i64, ptr %58, align 8, !tbaa !9
  %657 = shl i64 %656, 1
  %658 = add nsw i64 %655, %657
  %659 = getelementptr inbounds double, ptr %654, i64 %658
  store double 1.000000e+00, ptr %659, align 8, !tbaa !11
  %660 = load ptr, ptr %43, align 8, !tbaa !5
  %661 = load i64, ptr %69, align 8, !tbaa !9
  %662 = load i64, ptr %58, align 8, !tbaa !9
  %663 = add nsw i64 %661, %662
  %664 = getelementptr inbounds double, ptr %660, i64 %663
  store double 0.000000e+00, ptr %664, align 8, !tbaa !11
  %665 = load ptr, ptr %49, align 8, !tbaa !5
  %666 = load i64, ptr %665, align 8, !tbaa !9
  %667 = load ptr, ptr %28, align 8, !tbaa !5
  %668 = load i64, ptr %667, align 8, !tbaa !9
  %669 = icmp sle i64 %666, %668
  br i1 %669, label %670, label %676

670:                                              ; preds = %653
  %671 = load ptr, ptr %28, align 8, !tbaa !5
  %672 = load i64, ptr %671, align 8, !tbaa !9
  %673 = load i64, ptr %69, align 8, !tbaa !9
  %674 = add nsw i64 %672, %673
  %675 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 %674, ptr %675, align 8, !tbaa !9
  br label %676

676:                                              ; preds = %670, %653
  br label %701

677:                                              ; preds = %649
  %678 = load ptr, ptr %43, align 8, !tbaa !5
  %679 = load i64, ptr %69, align 8, !tbaa !9
  %680 = load i64, ptr %58, align 8, !tbaa !9
  %681 = shl i64 %680, 1
  %682 = add nsw i64 %679, %681
  %683 = getelementptr inbounds double, ptr %678, i64 %682
  %684 = load double, ptr %683, align 8, !tbaa !11
  %685 = load double, ptr %67, align 8, !tbaa !11
  %686 = fcmp olt double %684, %685
  br i1 %686, label %687, label %700

687:                                              ; preds = %677
  %688 = load double, ptr %67, align 8, !tbaa !11
  %689 = load ptr, ptr %43, align 8, !tbaa !5
  %690 = load i64, ptr %69, align 8, !tbaa !9
  %691 = load i64, ptr %58, align 8, !tbaa !9
  %692 = shl i64 %691, 1
  %693 = add nsw i64 %690, %692
  %694 = getelementptr inbounds double, ptr %689, i64 %693
  store double %688, ptr %694, align 8, !tbaa !11
  %695 = load ptr, ptr %43, align 8, !tbaa !5
  %696 = load i64, ptr %69, align 8, !tbaa !9
  %697 = load i64, ptr %58, align 8, !tbaa !9
  %698 = add nsw i64 %696, %697
  %699 = getelementptr inbounds double, ptr %695, i64 %698
  store double 1.000000e+00, ptr %699, align 8, !tbaa !11
  br label %700

700:                                              ; preds = %687, %677
  br label %701

701:                                              ; preds = %700, %676
  %702 = load ptr, ptr %42, align 8, !tbaa !5
  %703 = load i64, ptr %702, align 8, !tbaa !9
  %704 = icmp sge i64 %703, 3
  br i1 %704, label %705, label %713

705:                                              ; preds = %701
  %706 = load double, ptr %70, align 8, !tbaa !11
  %707 = load ptr, ptr %43, align 8, !tbaa !5
  %708 = load i64, ptr %69, align 8, !tbaa !9
  %709 = load i64, ptr %58, align 8, !tbaa !9
  %710 = mul nsw i64 %709, 3
  %711 = add nsw i64 %708, %710
  %712 = getelementptr inbounds double, ptr %707, i64 %711
  store double %706, ptr %712, align 8, !tbaa !11
  br label %713

713:                                              ; preds = %705, %701
  br label %714

714:                                              ; preds = %713
  %715 = load i64, ptr %69, align 8, !tbaa !9
  %716 = add nsw i64 %715, 1
  store i64 %716, ptr %69, align 8, !tbaa !9
  br label %625, !llvm.loop !17

717:                                              ; preds = %625
  br label %718

718:                                              ; preds = %717, %574, %567
  %719 = load ptr, ptr %42, align 8, !tbaa !5
  %720 = load i64, ptr %719, align 8, !tbaa !9
  %721 = icmp sge i64 %720, 1
  br i1 %721, label %722, label %866

722:                                              ; preds = %718
  %723 = load i64, ptr %78, align 8, !tbaa !9
  %724 = icmp sge i64 %723, 2
  br i1 %724, label %725, label %866

725:                                              ; preds = %722
  %726 = call double @dlamch_(ptr noundef @.str)
  %727 = call double @sqrt(double noundef %726) #4
  store double %727, ptr %72, align 8, !tbaa !11
  %728 = load ptr, ptr %29, align 8, !tbaa !5
  %729 = load i64, ptr %728, align 8, !tbaa !9
  store i64 %729, ptr %62, align 8, !tbaa !9
  store i64 1, ptr %69, align 8, !tbaa !9
  br label %730

730:                                              ; preds = %862, %725
  %731 = load i64, ptr %69, align 8, !tbaa !9
  %732 = load i64, ptr %62, align 8, !tbaa !9
  %733 = icmp sle i64 %731, %732
  br i1 %733, label %734, label %865

734:                                              ; preds = %730
  %735 = load ptr, ptr %44, align 8, !tbaa !5
  %736 = load i64, ptr %69, align 8, !tbaa !9
  %737 = load i64, ptr %60, align 8, !tbaa !9
  %738 = shl i64 %737, 1
  %739 = add nsw i64 %736, %738
  %740 = getelementptr inbounds double, ptr %735, i64 %739
  %741 = load double, ptr %740, align 8, !tbaa !11
  %742 = load double, ptr %72, align 8, !tbaa !11
  %743 = fcmp olt double %741, %742
  br i1 %743, label %744, label %769

744:                                              ; preds = %734
  %745 = load ptr, ptr %26, align 8, !tbaa !5
  %746 = load ptr, ptr %28, align 8, !tbaa !5
  %747 = load ptr, ptr %30, align 8, !tbaa !5
  %748 = load i64, ptr %51, align 8, !tbaa !9
  %749 = getelementptr inbounds double, ptr %747, i64 %748
  %750 = load ptr, ptr %31, align 8, !tbaa !5
  %751 = load ptr, ptr %32, align 8, !tbaa !5
  %752 = load i64, ptr %53, align 8, !tbaa !9
  %753 = getelementptr inbounds double, ptr %751, i64 %752
  %754 = load ptr, ptr %33, align 8, !tbaa !5
  %755 = load ptr, ptr %34, align 8, !tbaa !5
  %756 = getelementptr inbounds i64, ptr %755, i64 1
  %757 = load ptr, ptr %38, align 8, !tbaa !5
  %758 = load i64, ptr %69, align 8, !tbaa !9
  %759 = load i64, ptr %56, align 8, !tbaa !9
  %760 = mul nsw i64 %758, %759
  %761 = add nsw i64 %760, 1
  %762 = getelementptr inbounds double, ptr %757, i64 %761
  %763 = load ptr, ptr %49, align 8, !tbaa !5
  %764 = load ptr, ptr %47, align 8, !tbaa !5
  %765 = getelementptr inbounds double, ptr %764, i64 1
  %766 = load ptr, ptr %48, align 8, !tbaa !5
  %767 = getelementptr inbounds i64, ptr %766, i64 1
  %768 = call double @dla_syrcond__(ptr noundef %745, ptr noundef %746, ptr noundef %749, ptr noundef %750, ptr noundef %753, ptr noundef %754, ptr noundef %756, ptr noundef @c__1, ptr noundef %762, ptr noundef %763, ptr noundef %765, ptr noundef %767, i64 noundef 1)
  store double %768, ptr %70, align 8, !tbaa !11
  br label %770

769:                                              ; preds = %734
  store double 0.000000e+00, ptr %70, align 8, !tbaa !11
  br label %770

770:                                              ; preds = %769, %744
  %771 = load ptr, ptr %42, align 8, !tbaa !5
  %772 = load i64, ptr %771, align 8, !tbaa !9
  %773 = icmp sge i64 %772, 2
  br i1 %773, label %774, label %790

774:                                              ; preds = %770
  %775 = load ptr, ptr %44, align 8, !tbaa !5
  %776 = load i64, ptr %69, align 8, !tbaa !9
  %777 = load i64, ptr %60, align 8, !tbaa !9
  %778 = shl i64 %777, 1
  %779 = add nsw i64 %776, %778
  %780 = getelementptr inbounds double, ptr %775, i64 %779
  %781 = load double, ptr %780, align 8, !tbaa !11
  %782 = fcmp ogt double %781, 1.000000e+00
  br i1 %782, label %783, label %790

783:                                              ; preds = %774
  %784 = load ptr, ptr %44, align 8, !tbaa !5
  %785 = load i64, ptr %69, align 8, !tbaa !9
  %786 = load i64, ptr %60, align 8, !tbaa !9
  %787 = shl i64 %786, 1
  %788 = add nsw i64 %785, %787
  %789 = getelementptr inbounds double, ptr %784, i64 %788
  store double 1.000000e+00, ptr %789, align 8, !tbaa !11
  br label %790

790:                                              ; preds = %783, %774, %770
  %791 = load double, ptr %70, align 8, !tbaa !11
  %792 = load double, ptr %65, align 8, !tbaa !11
  %793 = fcmp olt double %791, %792
  br i1 %793, label %794, label %825

794:                                              ; preds = %790
  %795 = load ptr, ptr %44, align 8, !tbaa !5
  %796 = load i64, ptr %69, align 8, !tbaa !9
  %797 = load i64, ptr %60, align 8, !tbaa !9
  %798 = shl i64 %797, 1
  %799 = add nsw i64 %796, %798
  %800 = getelementptr inbounds double, ptr %795, i64 %799
  store double 1.000000e+00, ptr %800, align 8, !tbaa !11
  %801 = load ptr, ptr %44, align 8, !tbaa !5
  %802 = load i64, ptr %69, align 8, !tbaa !9
  %803 = load i64, ptr %60, align 8, !tbaa !9
  %804 = add nsw i64 %802, %803
  %805 = getelementptr inbounds double, ptr %801, i64 %804
  store double 0.000000e+00, ptr %805, align 8, !tbaa !11
  %806 = load ptr, ptr %46, align 8, !tbaa !5
  %807 = getelementptr inbounds double, ptr %806, i64 3
  %808 = load double, ptr %807, align 8, !tbaa !11
  %809 = fcmp oeq double %808, 1.000000e+00
  br i1 %809, label %810, label %824

810:                                              ; preds = %794
  %811 = load ptr, ptr %49, align 8, !tbaa !5
  %812 = load i64, ptr %811, align 8, !tbaa !9
  %813 = load ptr, ptr %28, align 8, !tbaa !5
  %814 = load i64, ptr %813, align 8, !tbaa !9
  %815 = load i64, ptr %69, align 8, !tbaa !9
  %816 = add nsw i64 %814, %815
  %817 = icmp slt i64 %812, %816
  br i1 %817, label %818, label %824

818:                                              ; preds = %810
  %819 = load ptr, ptr %28, align 8, !tbaa !5
  %820 = load i64, ptr %819, align 8, !tbaa !9
  %821 = load i64, ptr %69, align 8, !tbaa !9
  %822 = add nsw i64 %820, %821
  %823 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 %822, ptr %823, align 8, !tbaa !9
  br label %824

824:                                              ; preds = %818, %810, %794
  br label %849

825:                                              ; preds = %790
  %826 = load ptr, ptr %44, align 8, !tbaa !5
  %827 = load i64, ptr %69, align 8, !tbaa !9
  %828 = load i64, ptr %60, align 8, !tbaa !9
  %829 = shl i64 %828, 1
  %830 = add nsw i64 %827, %829
  %831 = getelementptr inbounds double, ptr %826, i64 %830
  %832 = load double, ptr %831, align 8, !tbaa !11
  %833 = load double, ptr %67, align 8, !tbaa !11
  %834 = fcmp olt double %832, %833
  br i1 %834, label %835, label %848

835:                                              ; preds = %825
  %836 = load double, ptr %67, align 8, !tbaa !11
  %837 = load ptr, ptr %44, align 8, !tbaa !5
  %838 = load i64, ptr %69, align 8, !tbaa !9
  %839 = load i64, ptr %60, align 8, !tbaa !9
  %840 = shl i64 %839, 1
  %841 = add nsw i64 %838, %840
  %842 = getelementptr inbounds double, ptr %837, i64 %841
  store double %836, ptr %842, align 8, !tbaa !11
  %843 = load ptr, ptr %44, align 8, !tbaa !5
  %844 = load i64, ptr %69, align 8, !tbaa !9
  %845 = load i64, ptr %60, align 8, !tbaa !9
  %846 = add nsw i64 %844, %845
  %847 = getelementptr inbounds double, ptr %843, i64 %846
  store double 1.000000e+00, ptr %847, align 8, !tbaa !11
  br label %848

848:                                              ; preds = %835, %825
  br label %849

849:                                              ; preds = %848, %824
  %850 = load ptr, ptr %42, align 8, !tbaa !5
  %851 = load i64, ptr %850, align 8, !tbaa !9
  %852 = icmp sge i64 %851, 3
  br i1 %852, label %853, label %861

853:                                              ; preds = %849
  %854 = load double, ptr %70, align 8, !tbaa !11
  %855 = load ptr, ptr %44, align 8, !tbaa !5
  %856 = load i64, ptr %69, align 8, !tbaa !9
  %857 = load i64, ptr %60, align 8, !tbaa !9
  %858 = mul nsw i64 %857, 3
  %859 = add nsw i64 %856, %858
  %860 = getelementptr inbounds double, ptr %855, i64 %859
  store double %854, ptr %860, align 8, !tbaa !11
  br label %861

861:                                              ; preds = %853, %849
  br label %862

862:                                              ; preds = %861
  %863 = load i64, ptr %69, align 8, !tbaa !9
  %864 = add nsw i64 %863, 1
  store i64 %864, ptr %69, align 8, !tbaa !9
  br label %730, !llvm.loop !18

865:                                              ; preds = %730
  br label %866

866:                                              ; preds = %865, %722, %718
  store i32 0, ptr %25, align 4
  store i32 1, ptr %80, align 4
  br label %867

867:                                              ; preds = %866, %408, %329
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  %868 = load i32, ptr %25, align 4
  ret i32 %868
}

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

declare double @dla_syrcond__(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 @dsyrfsx_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr nocapture noundef readonly %16, ptr noundef %17, ptr noundef %18, ptr nocapture noundef readonly %19, ptr nocapture noundef %20, ptr noundef %21, ptr noundef %22, ptr noundef %23) local_unnamed_addr #0 {
  %25 = ptrtoint ptr %18 to i64
  %26 = ptrtoint ptr %15 to i64
  %27 = ptrtoint ptr %17 to i64
  %28 = ptrtoint ptr %18 to i64
  %29 = ptrtoint ptr %15 to i64
  %30 = ptrtoint ptr %17 to i64
  %31 = alloca i64, align 8
  %32 = alloca double, align 8
  %33 = alloca i64, align 8
  %34 = alloca [1 x i8], align 1
  %35 = alloca i64, align 8
  %36 = alloca double, align 8
  %37 = alloca i64, align 8
  %38 = alloca i64, align 8
  %39 = alloca i64, align 8
  %40 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %34) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #6
  call void @llvm.lifetime.start.p0(i64 8, 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
  %41 = load i64, ptr %3, align 8, !tbaa !5
  %42 = xor i64 %41, -1
  %43 = getelementptr inbounds double, ptr %18, i64 %42
  %44 = getelementptr inbounds double, ptr %17, i64 %42
  %45 = load i64, ptr %13, align 8, !tbaa !5
  %46 = xor i64 %45, -1
  %47 = getelementptr inbounds double, ptr %12, i64 %46
  %48 = getelementptr inbounds i8, ptr %15, i64 -8
  store i64 0, ptr %23, align 8, !tbaa !5
  %49 = load i64, ptr %19, align 8, !tbaa !5
  %50 = icmp sgt i64 %49, 0
  br i1 %50, label %51, label %57

51:                                               ; preds = %24
  %52 = load double, ptr %20, align 8, !tbaa !9
  %53 = fcmp olt double %52, 0.000000e+00
  br i1 %53, label %54, label %55

54:                                               ; preds = %51
  store double 1.000000e+00, ptr %20, align 8, !tbaa !9
  br label %57

55:                                               ; preds = %51
  %56 = fptosi double %52 to i64
  br label %57

57:                                               ; preds = %54, %55, %24
  %.0316 = phi i64 [ 1, %54 ], [ %56, %55 ], [ 1, %24 ]
  %58 = load i64, ptr %2, align 8, !tbaa !5
  %59 = sitofp i64 %58 to double
  %60 = tail call double @dlamch_(ptr noundef nonnull @.str) #6
  %61 = fmul double %60, %59
  store i64 10, ptr %38, align 8, !tbaa !5
  store double 5.000000e-01, ptr %40, align 8, !tbaa !9
  store double 2.500000e-01, ptr %32, align 8, !tbaa !9
  store i64 0, ptr %35, align 8, !tbaa !5
  %62 = load i64, ptr %19, align 8, !tbaa !5
  %63 = icmp sgt i64 %62, 1
  br i1 %63, label %64, label %.thread

64:                                               ; preds = %57
  %65 = getelementptr inbounds i8, ptr %20, i64 8
  %66 = load double, ptr %65, align 8, !tbaa !9
  %67 = fcmp olt double %66, 0.000000e+00
  br i1 %67, label %68, label %69

68:                                               ; preds = %64
  store double 1.000000e+01, ptr %65, align 8, !tbaa !9
  br label %71

69:                                               ; preds = %64
  %70 = fptosi double %66 to i64
  store i64 %70, ptr %38, align 8, !tbaa !5
  br label %71

71:                                               ; preds = %68, %69
  %.not = icmp eq i64 %62, 2
  br i1 %.not, label %.thread, label %72

72:                                               ; preds = %71
  %73 = getelementptr inbounds i8, ptr %20, i64 16
  %74 = load double, ptr %73, align 8, !tbaa !9
  %75 = fcmp olt double %74, 0.000000e+00
  br i1 %75, label %76, label %77

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

77:                                               ; preds = %72
  %78 = fcmp oeq double %74, 0.000000e+00
  %79 = zext i1 %78 to i64
  store i64 %79, ptr %35, align 8, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %57, %77, %76, %71
  %80 = phi i64 [ 0, %57 ], [ %79, %77 ], [ 0, %76 ], [ 0, %71 ]
  %81 = icmp eq i64 %.0316, 0
  br i1 %81, label %85, label %82

82:                                               ; preds = %.thread
  %83 = load i64, ptr %16, align 8, !tbaa !5
  %84 = icmp eq i64 %83, 0
  br i1 %84, label %85, label %86

85:                                               ; preds = %82, %.thread
  store i64 0, ptr %39, align 8, !tbaa !5
  br label %89

86:                                               ; preds = %82
  %.not330 = icmp eq i64 %80, 0
  br i1 %.not330, label %88, label %87

87:                                               ; preds = %86
  store i64 1, ptr %39, align 8, !tbaa !5
  br label %89

88:                                               ; preds = %86
  store i64 2, ptr %39, align 8, !tbaa !5
  br label %89

89:                                               ; preds = %87, %88, %85
  %90 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  store i64 %90, ptr %37, align 8, !tbaa !5
  %91 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #6
  %.not331 = icmp eq i64 %91, 0
  br i1 %.not331, label %92, label %94

92:                                               ; preds = %89
  %93 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.3) #6
  %.not332 = icmp eq i64 %93, 0
  br i1 %.not332, label %.thread352.sink.split, label %94

94:                                               ; preds = %92, %89
  %.not333 = icmp eq i64 %90, 0
  br i1 %.not333, label %95, label %97

95:                                               ; preds = %94
  %96 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #6
  %.not334 = icmp eq i64 %96, 0
  br i1 %.not334, label %.thread352.sink.split, label %97

97:                                               ; preds = %95, %94
  %98 = load i64, ptr %2, align 8, !tbaa !5
  %99 = icmp slt i64 %98, 0
  br i1 %99, label %.thread352.sink.split, label %100

100:                                              ; preds = %97
  %101 = load i64, ptr %3, align 8, !tbaa !5
  %102 = icmp slt i64 %101, 0
  br i1 %102, label %.thread352.sink.split, label %103

103:                                              ; preds = %100
  %104 = load i64, ptr %5, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %98, i64 1)
  %105 = icmp slt i64 %104, %spec.select
  br i1 %105, label %.thread352.sink.split, label %106

106:                                              ; preds = %103
  %107 = load i64, ptr %7, align 8, !tbaa !5
  %108 = icmp slt i64 %107, %spec.select
  br i1 %108, label %.thread352.sink.split, label %109

109:                                              ; preds = %106
  %110 = load i64, ptr %11, align 8, !tbaa !5
  %111 = icmp slt i64 %110, %spec.select
  br i1 %111, label %.thread352.sink.split, label %112

112:                                              ; preds = %109
  %113 = load i64, ptr %13, align 8, !tbaa !5
  %114 = icmp slt i64 %113, %spec.select
  br i1 %114, label %.thread352.sink.split, label %115

115:                                              ; preds = %112
  %.pr = load i64, ptr %23, align 8, !tbaa !5
  %.not335 = icmp eq i64 %.pr, 0
  br i1 %.not335, label %119, label %.thread352

.thread352.sink.split:                            ; preds = %112, %109, %106, %103, %100, %97, %95, %92
  %.sink = phi i64 [ -1, %92 ], [ -2, %95 ], [ -3, %97 ], [ -4, %100 ], [ -6, %103 ], [ -8, %106 ], [ -11, %109 ], [ -13, %112 ]
  store i64 %.sink, ptr %23, align 8, !tbaa !5
  br label %.thread352

.thread352:                                       ; preds = %.thread352.sink.split, %115
  %116 = phi i64 [ %.pr, %115 ], [ %.sink, %.thread352.sink.split ]
  %117 = sub nsw i64 0, %116
  store i64 %117, ptr %31, align 8, !tbaa !5
  %118 = call i32 @xerbla_(ptr noundef nonnull @.str.5, ptr noundef nonnull %31) #6
  br label %.loopexit

119:                                              ; preds = %115
  %120 = icmp eq i64 %98, 0
  br i1 %120, label %123, label %121

121:                                              ; preds = %119
  %122 = icmp eq i64 %101, 0
  br i1 %122, label %.thread388, label %.lr.ph

.thread388:                                       ; preds = %121
  store double 1.000000e+00, ptr %14, align 8, !tbaa !9
  br label %.loopexit

123:                                              ; preds = %119
  store double 1.000000e+00, ptr %14, align 8, !tbaa !9
  %.not348370 = icmp eq i64 %101, 0
  br i1 %.not348370, label %.loopexit, label %.lr.ph373

.lr.ph373:                                        ; preds = %123
  %124 = load i64, ptr %16, align 8, !tbaa !5
  %125 = icmp sgt i64 %124, 0
  br i1 %125, label %.lr.ph373.split.us.preheader, label %.lr.ph373.split.preheader

.lr.ph373.split.us.preheader:                     ; preds = %.lr.ph373
  %min.iters.check422 = icmp ult i64 %101, 10
  br i1 %min.iters.check422, label %.lr.ph373.split.us.preheader433, label %vector.memcheck414

.lr.ph373.split.us.preheader433:                  ; preds = %middle.block420, %vector.memcheck414, %.lr.ph373.split.us.preheader
  %.0314371.us.ph = phi i64 [ 1, %vector.memcheck414 ], [ 1, %.lr.ph373.split.us.preheader ], [ %ind.end426, %middle.block420 ]
  %xtraiter439 = and i64 %101, 1
  %lcmp.mod440.not = icmp eq i64 %xtraiter439, 0
  br i1 %lcmp.mod440.not, label %.lr.ph373.split.us.prol.loopexit, label %.lr.ph373.split.us.prol

.lr.ph373.split.us.prol:                          ; preds = %.lr.ph373.split.us.preheader433
  %126 = getelementptr inbounds double, ptr %48, i64 %.0314371.us.ph
  store double 0.000000e+00, ptr %126, align 8, !tbaa !9
  %127 = add nsw i64 %.0314371.us.ph, %41
  %128 = getelementptr inbounds double, ptr %44, i64 %127
  store double 1.000000e+00, ptr %128, align 8, !tbaa !9
  %129 = getelementptr inbounds double, ptr %43, i64 %127
  store double 1.000000e+00, ptr %129, align 8, !tbaa !9
  %130 = add nuw i64 %.0314371.us.ph, 1
  br label %.lr.ph373.split.us.prol.loopexit

.lr.ph373.split.us.prol.loopexit:                 ; preds = %.lr.ph373.split.us.prol, %.lr.ph373.split.us.preheader433
  %.0314371.us.unr = phi i64 [ %.0314371.us.ph, %.lr.ph373.split.us.preheader433 ], [ %130, %.lr.ph373.split.us.prol ]
  %131 = icmp eq i64 %101, %.0314371.us.ph
  br i1 %131, label %.loopexit, label %.lr.ph373.split.us

vector.memcheck414:                               ; preds = %.lr.ph373.split.us.preheader
  %132 = sub i64 %27, %26
  %diff.check415 = icmp ult i64 %132, 32
  %133 = sub i64 %25, %26
  %diff.check416 = icmp ult i64 %133, 32
  %conflict.rdx417 = or i1 %diff.check415, %diff.check416
  %134 = sub i64 %25, %27
  %diff.check418 = icmp ult i64 %134, 32
  %conflict.rdx419 = or i1 %conflict.rdx417, %diff.check418
  br i1 %conflict.rdx419, label %.lr.ph373.split.us.preheader433, label %vector.ph423

vector.ph423:                                     ; preds = %vector.memcheck414
  %n.vec425 = and i64 %101, 9223372036854775804
  %ind.end426 = or disjoint i64 %n.vec425, 1
  br label %vector.body428

vector.body428:                                   ; preds = %vector.body428, %vector.ph423
  %index429 = phi i64 [ 0, %vector.ph423 ], [ %index.next431, %vector.body428 ]
  %offset.idx430 = or disjoint i64 %index429, 1
  %135 = getelementptr double, ptr %15, i64 %index429
  %136 = getelementptr inbounds i8, ptr %135, i64 16
  store <2 x double> zeroinitializer, ptr %135, align 8, !tbaa !9
  store <2 x double> zeroinitializer, ptr %136, align 8, !tbaa !9
  %137 = add nsw i64 %offset.idx430, %41
  %138 = getelementptr inbounds double, ptr %44, i64 %137
  %139 = getelementptr inbounds i8, ptr %138, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %138, align 8, !tbaa !9
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %139, align 8, !tbaa !9
  %140 = getelementptr inbounds double, ptr %43, i64 %137
  %141 = getelementptr inbounds i8, ptr %140, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %140, align 8, !tbaa !9
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %141, align 8, !tbaa !9
  %index.next431 = add nuw i64 %index429, 4
  %142 = icmp eq i64 %index.next431, %n.vec425
  br i1 %142, label %middle.block420, label %vector.body428, !llvm.loop !11

middle.block420:                                  ; preds = %vector.body428
  %cmp.n432 = icmp eq i64 %101, %n.vec425
  br i1 %cmp.n432, label %.loopexit, label %.lr.ph373.split.us.preheader433

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

.lr.ph373.split.us:                               ; preds = %.lr.ph373.split.us.prol.loopexit, %.lr.ph373.split.us
  %.0314371.us = phi i64 [ %152, %.lr.ph373.split.us ], [ %.0314371.us.unr, %.lr.ph373.split.us.prol.loopexit ]
  %144 = getelementptr inbounds double, ptr %48, i64 %.0314371.us
  store double 0.000000e+00, ptr %144, align 8, !tbaa !9
  %145 = add nsw i64 %.0314371.us, %41
  %146 = getelementptr inbounds double, ptr %44, i64 %145
  store double 1.000000e+00, ptr %146, align 8, !tbaa !9
  %147 = getelementptr inbounds double, ptr %43, i64 %145
  store double 1.000000e+00, ptr %147, align 8, !tbaa !9
  %148 = add nuw i64 %.0314371.us, 1
  %149 = getelementptr double, ptr %15, i64 %.0314371.us
  store double 0.000000e+00, ptr %149, align 8, !tbaa !9
  %150 = getelementptr inbounds double, ptr %17, i64 %.0314371.us
  store double 1.000000e+00, ptr %150, align 8, !tbaa !9
  %151 = getelementptr inbounds double, ptr %18, i64 %.0314371.us
  store double 1.000000e+00, ptr %151, align 8, !tbaa !9
  %152 = add nuw i64 %.0314371.us, 2
  %exitcond381.not.1 = icmp eq i64 %148, %101
  br i1 %exitcond381.not.1, label %.loopexit, label %.lr.ph373.split.us, !llvm.loop !15

.lr.ph:                                           ; preds = %121
  store double 0.000000e+00, ptr %14, align 8, !tbaa !9
  %153 = load i64, ptr %16, align 8, !tbaa !5
  %154 = icmp sgt i64 %153, 0
  br i1 %154, label %.lr.ph.split.us.preheader, label %.lr.ph.split.preheader

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

.lr.ph.split.preheader437:                        ; preds = %middle.block, %.lr.ph.split.preheader
  %.1315357.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 %101, 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 ]
  %155 = getelementptr double, ptr %15, i64 %index
  %156 = getelementptr inbounds i8, ptr %155, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %155, align 8, !tbaa !9
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %156, align 8, !tbaa !9
  %index.next = add nuw i64 %index, 4
  %157 = icmp eq i64 %index.next, %n.vec
  br i1 %157, label %middle.block, label %vector.body, !llvm.loop !16

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

.lr.ph.split.us.preheader:                        ; preds = %.lr.ph
  %min.iters.check403 = icmp ult i64 %101, 10
  br i1 %min.iters.check403, label %.lr.ph.split.us.preheader436, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph.split.us.preheader
  %158 = sub i64 %30, %29
  %diff.check = icmp ult i64 %158, 32
  %159 = sub i64 %28, %29
  %diff.check398 = icmp ult i64 %159, 32
  %conflict.rdx = or i1 %diff.check, %diff.check398
  %160 = sub i64 %28, %30
  %diff.check399 = icmp ult i64 %160, 32
  %conflict.rdx400 = or i1 %conflict.rdx, %diff.check399
  br i1 %conflict.rdx400, label %.lr.ph.split.us.preheader436, label %vector.ph404

vector.ph404:                                     ; preds = %vector.memcheck
  %n.vec406 = and i64 %101, 9223372036854775804
  %ind.end407 = or disjoint i64 %n.vec406, 1
  br label %vector.body409

vector.body409:                                   ; preds = %vector.body409, %vector.ph404
  %index410 = phi i64 [ 0, %vector.ph404 ], [ %index.next412, %vector.body409 ]
  %offset.idx411 = or disjoint i64 %index410, 1
  %161 = getelementptr double, ptr %15, i64 %index410
  %162 = getelementptr inbounds i8, ptr %161, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %161, align 8, !tbaa !9
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %162, align 8, !tbaa !9
  %163 = add nsw i64 %offset.idx411, %41
  %164 = getelementptr inbounds double, ptr %44, i64 %163
  %165 = getelementptr inbounds i8, ptr %164, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %164, align 8, !tbaa !9
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %165, align 8, !tbaa !9
  %166 = getelementptr inbounds double, ptr %43, i64 %163
  %167 = getelementptr inbounds i8, ptr %166, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %166, align 8, !tbaa !9
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %167, align 8, !tbaa !9
  %index.next412 = add nuw i64 %index410, 4
  %168 = icmp eq i64 %index.next412, %n.vec406
  br i1 %168, label %middle.block401, label %vector.body409, !llvm.loop !17

middle.block401:                                  ; preds = %vector.body409
  %cmp.n413 = icmp eq i64 %101, %n.vec406
  br i1 %cmp.n413, label %._crit_edge, label %.lr.ph.split.us.preheader436

.lr.ph.split.us.preheader436:                     ; preds = %middle.block401, %vector.memcheck, %.lr.ph.split.us.preheader
  %.1315357.us.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph.split.us.preheader ], [ %ind.end407, %middle.block401 ]
  %xtraiter = and i64 %101, 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.preheader436
  %169 = getelementptr inbounds double, ptr %48, i64 %.1315357.us.ph
  store double 1.000000e+00, ptr %169, align 8, !tbaa !9
  %170 = add nsw i64 %.1315357.us.ph, %41
  %171 = getelementptr inbounds double, ptr %44, i64 %170
  store double 1.000000e+00, ptr %171, align 8, !tbaa !9
  %172 = getelementptr inbounds double, ptr %43, i64 %170
  store double 1.000000e+00, ptr %172, align 8, !tbaa !9
  %173 = add nuw i64 %.1315357.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.preheader436
  %.1315357.us.unr = phi i64 [ %.1315357.us.ph, %.lr.ph.split.us.preheader436 ], [ %173, %.lr.ph.split.us.prol ]
  %174 = icmp eq i64 %101, %.1315357.us.ph
  br i1 %174, label %._crit_edge, label %.lr.ph.split.us

.lr.ph.split.us:                                  ; preds = %.lr.ph.split.us.prol.loopexit, %.lr.ph.split.us
  %.1315357.us = phi i64 [ %183, %.lr.ph.split.us ], [ %.1315357.us.unr, %.lr.ph.split.us.prol.loopexit ]
  %175 = getelementptr inbounds double, ptr %48, i64 %.1315357.us
  store double 1.000000e+00, ptr %175, align 8, !tbaa !9
  %176 = add nsw i64 %.1315357.us, %41
  %177 = getelementptr inbounds double, ptr %44, i64 %176
  store double 1.000000e+00, ptr %177, align 8, !tbaa !9
  %178 = getelementptr inbounds double, ptr %43, i64 %176
  store double 1.000000e+00, ptr %178, align 8, !tbaa !9
  %179 = add nuw i64 %.1315357.us, 1
  %180 = getelementptr double, ptr %15, i64 %.1315357.us
  store double 1.000000e+00, ptr %180, align 8, !tbaa !9
  %181 = getelementptr inbounds double, ptr %17, i64 %.1315357.us
  store double 1.000000e+00, ptr %181, align 8, !tbaa !9
  %182 = getelementptr inbounds double, ptr %18, i64 %.1315357.us
  store double 1.000000e+00, ptr %182, align 8, !tbaa !9
  %183 = add nuw i64 %.1315357.us, 2
  %exitcond378.not.1 = icmp eq i64 %179, %101
  br i1 %exitcond378.not.1, label %._crit_edge, label %.lr.ph.split.us, !llvm.loop !18

.lr.ph.split:                                     ; preds = %.lr.ph.split.preheader437, %.lr.ph.split
  %.1315357 = phi i64 [ %185, %.lr.ph.split ], [ %.1315357.ph, %.lr.ph.split.preheader437 ]
  %184 = getelementptr inbounds double, ptr %48, i64 %.1315357
  store double 1.000000e+00, ptr %184, align 8, !tbaa !9
  %185 = add nuw i64 %.1315357, 1
  %exitcond.not = icmp eq i64 %.1315357, %101
  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.block401
  store i8 73, ptr %34, align 1, !tbaa !20
  %186 = call double @dlansy_(ptr noundef nonnull %34, ptr noundef %0, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %21) #6
  store double %186, ptr %36, align 8, !tbaa !9
  %187 = call i32 @dsycon_(ptr noundef %0, ptr noundef nonnull %2, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %36, ptr noundef nonnull %14, ptr noundef %21, ptr noundef %22, ptr noundef nonnull %23) #6
  br i1 %81, label %194, label %188

188:                                              ; preds = %._crit_edge
  %189 = call i64 @ilaprec_(ptr noundef nonnull @.str.6) #6
  store i64 %189, ptr %33, align 8, !tbaa !5
  %190 = load i64, ptr %2, align 8, !tbaa !5
  %191 = getelementptr double, ptr %21, i64 %190
  %.idx = shl i64 %190, 4
  %192 = getelementptr i8, ptr %21, i64 %.idx
  %193 = call i32 @dla_syrfsx_extended__(ptr noundef nonnull %33, ptr noundef %0, 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 %37, ptr noundef %9, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %15, ptr noundef nonnull %39, ptr noundef %17, ptr noundef %18, ptr noundef %191, ptr noundef %21, ptr noundef %192, ptr noundef %21, ptr noundef nonnull %14, ptr noundef nonnull %38, ptr noundef nonnull %40, ptr noundef nonnull %32, ptr noundef nonnull %35, ptr noundef nonnull %23, i64 noundef 1) #6
  br label %194

194:                                              ; preds = %188, %._crit_edge
  %195 = load i64, ptr %2, align 8, !tbaa !5
  %196 = sitofp i64 %195 to double
  %197 = call double @sqrt(double noundef %196) #6
  %198 = fcmp ole double %197, 1.000000e+01
  %199 = select i1 %198, double 1.000000e+01, double %197
  %200 = call double @dlamch_(ptr noundef nonnull @.str) #6
  %201 = fmul double %200, %199
  %202 = load i64, ptr %16, align 8, !tbaa !5
  %203 = icmp sgt i64 %202, 0
  %204 = load i64, ptr %39, align 8
  %205 = icmp sgt i64 %204, 0
  %or.cond = select i1 %203, i1 %205, i1 false
  br i1 %or.cond, label %206, label %.loopexit355

206:                                              ; preds = %194
  %207 = load i64, ptr %37, align 8, !tbaa !5
  %.not338 = icmp eq i64 %207, 0
  %c__0.c_n1 = select i1 %.not338, ptr @c__0, ptr @c_n1
  %208 = call double @dla_syrcond__(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.c_n1, ptr noundef %9, ptr noundef nonnull %23, ptr noundef %21, ptr noundef %22, i64 noundef 1) #6
  %209 = load i64, ptr %3, align 8, !tbaa !5
  %.not339358 = icmp slt i64 %209, 1
  br i1 %.not339358, label %..loopexit355_crit_edge, label %.lr.ph361

..loopexit355_crit_edge:                          ; preds = %206
  %.pre386 = load i64, ptr %16, align 8, !tbaa !5
  br label %.loopexit355

.lr.ph361:                                        ; preds = %206
  %.idx343 = shl i64 %41, 4
  %invariant.gep = getelementptr i8, ptr %44, i64 %.idx343
  %210 = fcmp olt double %208, %61
  %.idx347 = mul i64 %41, 24
  %invariant.gep362 = getelementptr i8, ptr %44, i64 %.idx347
  %.pre384 = load i64, ptr %16, align 8, !tbaa !5
  br i1 %210, label %.lr.ph361.split.us, label %.lr.ph361.split.preheader

.lr.ph361.split.preheader:                        ; preds = %.lr.ph361
  %211 = icmp sgt i64 %.pre384, 1
  %invariant.gep393 = getelementptr i8, ptr %44, i64 %.idx343
  %212 = icmp sgt i64 %.pre384, 2
  br label %.lr.ph361.split

.lr.ph361.split.us:                               ; preds = %.lr.ph361, %225
  %213 = phi i64 [ %222, %225 ], [ %.pre384, %.lr.ph361 ]
  %.2359.us = phi i64 [ %226, %225 ], [ 1, %.lr.ph361 ]
  %214 = getelementptr double, ptr %44, i64 %.2359.us
  %215 = getelementptr i8, ptr %214, i64 %.idx343
  store double 1.000000e+00, ptr %215, align 8, !tbaa !9
  %216 = getelementptr double, ptr %214, i64 %41
  store double 0.000000e+00, ptr %216, align 8, !tbaa !9
  %217 = load i64, ptr %23, align 8, !tbaa !5
  %218 = load i64, ptr %2, align 8, !tbaa !5
  %.not346.us = icmp sgt i64 %217, %218
  br i1 %.not346.us, label %221, label %219

219:                                              ; preds = %.lr.ph361.split.us
  %220 = add nsw i64 %218, %.2359.us
  store i64 %220, ptr %23, align 8, !tbaa !5
  %.pre385 = load i64, ptr %16, align 8, !tbaa !5
  br label %221

221:                                              ; preds = %219, %.lr.ph361.split.us
  %222 = phi i64 [ %.pre385, %219 ], [ %213, %.lr.ph361.split.us ]
  %223 = icmp sgt i64 %222, 2
  br i1 %223, label %224, label %225

224:                                              ; preds = %221
  %gep363.us = getelementptr double, ptr %invariant.gep362, i64 %.2359.us
  store double %208, ptr %gep363.us, align 8, !tbaa !9
  br label %225

225:                                              ; preds = %224, %221
  %226 = add nuw i64 %.2359.us, 1
  %exitcond380.not = icmp eq i64 %.2359.us, %209
  br i1 %exitcond380.not, label %.loopexit355, label %.lr.ph361.split.us, !llvm.loop !21

.lr.ph361.split:                                  ; preds = %.lr.ph361.split.preheader, %240
  %.2359 = phi i64 [ %241, %240 ], [ 1, %.lr.ph361.split.preheader ]
  br i1 %211, label %227, label %.lr.ph361.split._crit_edge

.lr.ph361.split._crit_edge:                       ; preds = %.lr.ph361.split
  %gep394 = getelementptr double, ptr %invariant.gep393, i64 %.2359
  %.pre383 = load double, ptr %gep394, align 8, !tbaa !9
  br label %231

227:                                              ; preds = %.lr.ph361.split
  %gep = getelementptr double, ptr %invariant.gep, i64 %.2359
  %228 = load double, ptr %gep, align 8, !tbaa !9
  %229 = fcmp ogt double %228, 1.000000e+00
  br i1 %229, label %230, label %231

230:                                              ; preds = %227
  store double 1.000000e+00, ptr %gep, align 8, !tbaa !9
  br label %231

231:                                              ; preds = %.lr.ph361.split._crit_edge, %230, %227
  %232 = phi double [ %.pre383, %.lr.ph361.split._crit_edge ], [ 1.000000e+00, %230 ], [ %228, %227 ]
  %233 = fcmp olt double %232, %201
  br i1 %233, label %234, label %238

234:                                              ; preds = %231
  %235 = getelementptr double, ptr %44, i64 %.2359
  %236 = getelementptr i8, ptr %235, i64 %.idx343
  store double %201, ptr %236, align 8, !tbaa !9
  %237 = getelementptr double, ptr %235, i64 %41
  store double 1.000000e+00, ptr %237, align 8, !tbaa !9
  br label %238

238:                                              ; preds = %231, %234
  br i1 %212, label %239, label %240

239:                                              ; preds = %238
  %gep363 = getelementptr double, ptr %invariant.gep362, i64 %.2359
  store double %208, ptr %gep363, align 8, !tbaa !9
  br label %240

240:                                              ; preds = %238, %239
  %241 = add nuw i64 %.2359, 1
  %exitcond379.not = icmp eq i64 %.2359, %209
  br i1 %exitcond379.not, label %.loopexit355, label %.lr.ph361.split, !llvm.loop !21

.loopexit355:                                     ; preds = %240, %225, %..loopexit355_crit_edge, %194
  %242 = phi i64 [ %.pre386, %..loopexit355_crit_edge ], [ %202, %194 ], [ %222, %225 ], [ %.pre384, %240 ]
  %243 = icmp sgt i64 %242, 0
  %244 = load i64, ptr %39, align 8
  %245 = icmp sgt i64 %244, 1
  %or.cond3 = select i1 %243, i1 %245, i1 false
  br i1 %or.cond3, label %246, label %.loopexit

246:                                              ; preds = %.loopexit355
  %247 = call double @dlamch_(ptr noundef nonnull @.str) #6
  %248 = call double @sqrt(double noundef %247) #6
  %249 = load i64, ptr %3, align 8, !tbaa !5
  %invariant.gep364 = getelementptr i8, ptr %47, i64 8
  %.not340366 = icmp slt i64 %249, 1
  br i1 %.not340366, label %.loopexit, label %.lr.ph369

.lr.ph369:                                        ; preds = %246
  %.idx341 = shl i64 %41, 4
  %250 = getelementptr inbounds i8, ptr %20, i64 16
  %.idx342 = mul i64 %41, 24
  br label %251

251:                                              ; preds = %.lr.ph369, %288
  %.3367 = phi i64 [ 1, %.lr.ph369 ], [ %289, %288 ]
  %252 = getelementptr double, ptr %43, i64 %.3367
  %253 = getelementptr i8, ptr %252, i64 %.idx341
  %254 = load double, ptr %253, align 8, !tbaa !9
  %255 = fcmp olt double %254, %248
  br i1 %255, label %256, label %259

256:                                              ; preds = %251
  %257 = mul nsw i64 %.3367, %45
  %gep365 = getelementptr double, ptr %invariant.gep364, i64 %257
  %258 = call double @dla_syrcond__(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 %gep365, ptr noundef nonnull %23, ptr noundef %21, ptr noundef %22, i64 noundef 1) #6
  br label %259

259:                                              ; preds = %251, %256
  %.1 = phi double [ %258, %256 ], [ 0.000000e+00, %251 ]
  %260 = load i64, ptr %16, align 8, !tbaa !5
  %261 = icmp sgt i64 %260, 1
  br i1 %261, label %262, label %266

262:                                              ; preds = %259
  %263 = load double, ptr %253, align 8, !tbaa !9
  %264 = fcmp ogt double %263, 1.000000e+00
  br i1 %264, label %265, label %266

265:                                              ; preds = %262
  store double 1.000000e+00, ptr %253, align 8, !tbaa !9
  br label %266

266:                                              ; preds = %265, %262, %259
  %267 = fcmp olt double %.1, %61
  br i1 %267, label %268, label %278

268:                                              ; preds = %266
  store double 1.000000e+00, ptr %253, align 8, !tbaa !9
  %269 = getelementptr double, ptr %252, i64 %41
  store double 0.000000e+00, ptr %269, align 8, !tbaa !9
  %270 = load double, ptr %250, align 8, !tbaa !9
  %271 = fcmp oeq double %270, 1.000000e+00
  br i1 %271, label %272, label %283

272:                                              ; preds = %268
  %273 = load i64, ptr %23, align 8, !tbaa !5
  %274 = load i64, ptr %2, align 8, !tbaa !5
  %275 = add nsw i64 %274, %.3367
  %276 = icmp slt i64 %273, %275
  br i1 %276, label %277, label %283

277:                                              ; preds = %272
  store i64 %275, ptr %23, align 8, !tbaa !5
  %.pre387 = load i64, ptr %16, align 8, !tbaa !5
  br label %283

278:                                              ; preds = %266
  %279 = load double, ptr %253, align 8, !tbaa !9
  %280 = fcmp olt double %279, %201
  br i1 %280, label %281, label %283

281:                                              ; preds = %278
  store double %201, ptr %253, align 8, !tbaa !9
  %282 = getelementptr double, ptr %252, i64 %41
  store double 1.000000e+00, ptr %282, align 8, !tbaa !9
  br label %283

283:                                              ; preds = %278, %281, %268, %272, %277
  %284 = phi i64 [ %260, %278 ], [ %260, %281 ], [ %260, %268 ], [ %260, %272 ], [ %.pre387, %277 ]
  %285 = icmp sgt i64 %284, 2
  br i1 %285, label %286, label %288

286:                                              ; preds = %283
  %287 = getelementptr i8, ptr %252, i64 %.idx342
  store double %.1, ptr %287, align 8, !tbaa !9
  br label %288

288:                                              ; preds = %283, %286
  %289 = add nuw nsw i64 %.3367, 1
  %.not340.not = icmp slt i64 %.3367, %249
  br i1 %.not340.not, label %251, label %.loopexit, !llvm.loop !22

.loopexit:                                        ; preds = %288, %.lr.ph373.split.us.prol.loopexit, %.lr.ph373.split.us, %middle.block420, %.thread388, %.lr.ph373.split.preheader, %246, %123, %.loopexit355, %.thread352
  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 8, ptr nonnull %36) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %34) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #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 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 @dlansy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare i64 @ilaprec_(ptr noundef) local_unnamed_addr #2

declare i32 @dla_syrfsx_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, i64 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_syrcond__(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