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

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b19 = external hidden global float, align 4
@c_b21 = external hidden global float, align 4
@c__2 = external hidden global i64, align 8
@.str.8 = external hidden unnamed_addr constant [5 x i8], align 1
@c_false = external hidden global i64, align 8
@c__3 = external hidden global i64, align 8

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

142:                                              ; preds = %20
  %143 = load i64, ptr %88, align 8, !tbaa !9
  %144 = icmp ne i64 %143, 0
  br label %145

145:                                              ; preds = %142, %20
  %146 = phi i1 [ true, %20 ], [ %144, %142 ]
  %147 = zext i1 %146 to i32
  %148 = sext i32 %147 to i64
  store i64 %148, ptr %80, align 8, !tbaa !9
  %149 = load ptr, ptr %22, align 8, !tbaa !5
  %150 = call i64 @lsame_(ptr noundef %149, ptr noundef @.str.2)
  %151 = icmp ne i64 %150, 0
  br i1 %151, label %155, label %152

152:                                              ; preds = %145
  %153 = load i64, ptr %88, align 8, !tbaa !9
  %154 = icmp ne i64 %153, 0
  br label %155

155:                                              ; preds = %152, %145
  %156 = phi i1 [ true, %145 ], [ %154, %152 ]
  %157 = zext i1 %156 to i32
  %158 = sext i32 %157 to i64
  store i64 %158, ptr %89, align 8, !tbaa !9
  %159 = load ptr, ptr %23, align 8, !tbaa !5
  %160 = call i64 @lsame_(ptr noundef %159, ptr noundef @.str.3)
  store i64 %160, ptr %90, align 8, !tbaa !9
  %161 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 0, ptr %161, align 8, !tbaa !9
  %162 = load ptr, ptr %39, align 8, !tbaa !5
  %163 = load i64, ptr %162, align 8, !tbaa !9
  %164 = icmp eq i64 %163, -1
  %165 = zext i1 %164 to i32
  %166 = sext i32 %165 to i64
  store i64 %166, ptr %93, align 8, !tbaa !9
  %167 = load i64, ptr %80, align 8, !tbaa !9
  %168 = icmp ne i64 %167, 0
  br i1 %168, label %174, label %169

169:                                              ; preds = %155
  %170 = load i64, ptr %89, align 8, !tbaa !9
  %171 = icmp ne i64 %170, 0
  br i1 %171, label %174, label %172

172:                                              ; preds = %169
  %173 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -1, ptr %173, align 8, !tbaa !9
  br label %380

174:                                              ; preds = %169, %155
  %175 = load ptr, ptr %23, align 8, !tbaa !5
  %176 = call i64 @lsame_(ptr noundef %175, ptr noundef @.str.4)
  %177 = icmp ne i64 %176, 0
  br i1 %177, label %183, label %178

178:                                              ; preds = %174
  %179 = load i64, ptr %90, align 8, !tbaa !9
  %180 = icmp ne i64 %179, 0
  br i1 %180, label %183, label %181

181:                                              ; preds = %178
  %182 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -2, ptr %182, align 8, !tbaa !9
  br label %379

183:                                              ; preds = %178, %174
  %184 = load ptr, ptr %25, align 8, !tbaa !5
  %185 = load i64, ptr %184, align 8, !tbaa !9
  %186 = icmp slt i64 %185, 0
  br i1 %186, label %187, label %189

187:                                              ; preds = %183
  %188 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -4, ptr %188, align 8, !tbaa !9
  br label %378

189:                                              ; preds = %183
  %190 = load ptr, ptr %27, align 8, !tbaa !5
  %191 = load i64, ptr %190, align 8, !tbaa !9
  %192 = load ptr, ptr %25, align 8, !tbaa !5
  %193 = load i64, ptr %192, align 8, !tbaa !9
  %194 = icmp sge i64 1, %193
  br i1 %194, label %195, label %196

195:                                              ; preds = %189
  br label %199

196:                                              ; preds = %189
  %197 = load ptr, ptr %25, align 8, !tbaa !5
  %198 = load i64, ptr %197, align 8, !tbaa !9
  br label %199

199:                                              ; preds = %196, %195
  %200 = phi i64 [ 1, %195 ], [ %198, %196 ]
  %201 = icmp slt i64 %191, %200
  br i1 %201, label %202, label %204

202:                                              ; preds = %199
  %203 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -6, ptr %203, align 8, !tbaa !9
  br label %377

204:                                              ; preds = %199
  %205 = load ptr, ptr %29, align 8, !tbaa !5
  %206 = load i64, ptr %205, align 8, !tbaa !9
  %207 = load ptr, ptr %25, align 8, !tbaa !5
  %208 = load i64, ptr %207, align 8, !tbaa !9
  %209 = icmp sge i64 1, %208
  br i1 %209, label %210, label %211

210:                                              ; preds = %204
  br label %214

211:                                              ; preds = %204
  %212 = load ptr, ptr %25, align 8, !tbaa !5
  %213 = load i64, ptr %212, align 8, !tbaa !9
  br label %214

214:                                              ; preds = %211, %210
  %215 = phi i64 [ 1, %210 ], [ %213, %211 ]
  %216 = icmp slt i64 %206, %215
  br i1 %216, label %217, label %219

217:                                              ; preds = %214
  %218 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -8, ptr %218, align 8, !tbaa !9
  br label %376

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

222:                                              ; preds = %219
  %223 = load ptr, ptr %31, align 8, !tbaa !5
  %224 = load i64, ptr %223, align 8, !tbaa !9
  %225 = load ptr, ptr %25, align 8, !tbaa !5
  %226 = load i64, ptr %225, align 8, !tbaa !9
  %227 = icmp slt i64 %224, %226
  br i1 %227, label %228, label %230

228:                                              ; preds = %222
  %229 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -10, ptr %229, align 8, !tbaa !9
  br label %375

230:                                              ; preds = %222, %219
  %231 = load i64, ptr %80, align 8, !tbaa !9
  %232 = icmp ne i64 %231, 0
  br i1 %232, label %233, label %241

233:                                              ; preds = %230
  %234 = load ptr, ptr %33, align 8, !tbaa !5
  %235 = load i64, ptr %234, align 8, !tbaa !9
  %236 = load ptr, ptr %25, align 8, !tbaa !5
  %237 = load i64, ptr %236, align 8, !tbaa !9
  %238 = icmp slt i64 %235, %237
  br i1 %238, label %239, label %241

239:                                              ; preds = %233
  %240 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -12, ptr %240, align 8, !tbaa !9
  br label %374

241:                                              ; preds = %233, %230
  %242 = load i64, ptr %90, align 8, !tbaa !9
  %243 = icmp ne i64 %242, 0
  br i1 %243, label %244, label %320

244:                                              ; preds = %241
  %245 = load ptr, ptr %37, align 8, !tbaa !5
  store i64 0, ptr %245, align 8, !tbaa !9
  store i64 0, ptr %65, align 8, !tbaa !9
  %246 = load ptr, ptr %25, align 8, !tbaa !5
  %247 = load i64, ptr %246, align 8, !tbaa !9
  store i64 %247, ptr %50, align 8, !tbaa !9
  store i64 1, ptr %55, align 8, !tbaa !9
  br label %248

248:                                              ; preds = %316, %244
  %249 = load i64, ptr %55, align 8, !tbaa !9
  %250 = load i64, ptr %50, align 8, !tbaa !9
  %251 = icmp sle i64 %249, %250
  br i1 %251, label %252, label %319

252:                                              ; preds = %248
  %253 = load i64, ptr %65, align 8, !tbaa !9
  %254 = icmp ne i64 %253, 0
  br i1 %254, label %255, label %256

255:                                              ; preds = %252
  store i64 0, ptr %65, align 8, !tbaa !9
  br label %315

256:                                              ; preds = %252
  %257 = load i64, ptr %55, align 8, !tbaa !9
  %258 = load ptr, ptr %25, align 8, !tbaa !5
  %259 = load i64, ptr %258, align 8, !tbaa !9
  %260 = icmp slt i64 %257, %259
  br i1 %260, label %261, label %302

261:                                              ; preds = %256
  %262 = load ptr, ptr %26, align 8, !tbaa !5
  %263 = load i64, ptr %55, align 8, !tbaa !9
  %264 = add nsw i64 %263, 1
  %265 = load i64, ptr %55, align 8, !tbaa !9
  %266 = load i64, ptr %42, align 8, !tbaa !9
  %267 = mul nsw i64 %265, %266
  %268 = add nsw i64 %264, %267
  %269 = getelementptr inbounds float, ptr %262, i64 %268
  %270 = load float, ptr %269, align 4, !tbaa !11
  %271 = fcmp oeq float %270, 0.000000e+00
  br i1 %271, label %272, label %283

272:                                              ; preds = %261
  %273 = load ptr, ptr %24, align 8, !tbaa !5
  %274 = load i64, ptr %55, align 8, !tbaa !9
  %275 = getelementptr inbounds i64, ptr %273, i64 %274
  %276 = load i64, ptr %275, align 8, !tbaa !9
  %277 = icmp ne i64 %276, 0
  br i1 %277, label %278, label %282

278:                                              ; preds = %272
  %279 = load ptr, ptr %37, align 8, !tbaa !5
  %280 = load i64, ptr %279, align 8, !tbaa !9
  %281 = add nsw i64 %280, 1
  store i64 %281, ptr %279, align 8, !tbaa !9
  br label %282

282:                                              ; preds = %278, %272
  br label %301

283:                                              ; preds = %261
  store i64 1, ptr %65, align 8, !tbaa !9
  %284 = load ptr, ptr %24, align 8, !tbaa !5
  %285 = load i64, ptr %55, align 8, !tbaa !9
  %286 = getelementptr inbounds i64, ptr %284, i64 %285
  %287 = load i64, ptr %286, align 8, !tbaa !9
  %288 = icmp ne i64 %287, 0
  br i1 %288, label %296, label %289

289:                                              ; preds = %283
  %290 = load ptr, ptr %24, align 8, !tbaa !5
  %291 = load i64, ptr %55, align 8, !tbaa !9
  %292 = add nsw i64 %291, 1
  %293 = getelementptr inbounds i64, ptr %290, i64 %292
  %294 = load i64, ptr %293, align 8, !tbaa !9
  %295 = icmp ne i64 %294, 0
  br i1 %295, label %296, label %300

296:                                              ; preds = %289, %283
  %297 = load ptr, ptr %37, align 8, !tbaa !5
  %298 = load i64, ptr %297, align 8, !tbaa !9
  %299 = add nsw i64 %298, 2
  store i64 %299, ptr %297, align 8, !tbaa !9
  br label %300

300:                                              ; preds = %296, %289
  br label %301

301:                                              ; preds = %300, %282
  br label %314

302:                                              ; preds = %256
  %303 = load ptr, ptr %24, align 8, !tbaa !5
  %304 = load ptr, ptr %25, align 8, !tbaa !5
  %305 = load i64, ptr %304, align 8, !tbaa !9
  %306 = getelementptr inbounds i64, ptr %303, i64 %305
  %307 = load i64, ptr %306, align 8, !tbaa !9
  %308 = icmp ne i64 %307, 0
  br i1 %308, label %309, label %313

309:                                              ; preds = %302
  %310 = load ptr, ptr %37, align 8, !tbaa !5
  %311 = load i64, ptr %310, align 8, !tbaa !9
  %312 = add nsw i64 %311, 1
  store i64 %312, ptr %310, align 8, !tbaa !9
  br label %313

313:                                              ; preds = %309, %302
  br label %314

314:                                              ; preds = %313, %301
  br label %315

315:                                              ; preds = %314, %255
  br label %316

316:                                              ; preds = %315
  %317 = load i64, ptr %55, align 8, !tbaa !9
  %318 = add nsw i64 %317, 1
  store i64 %318, ptr %55, align 8, !tbaa !9
  br label %248, !llvm.loop !13

319:                                              ; preds = %248
  br label %324

320:                                              ; preds = %241
  %321 = load ptr, ptr %25, align 8, !tbaa !5
  %322 = load i64, ptr %321, align 8, !tbaa !9
  %323 = load ptr, ptr %37, align 8, !tbaa !5
  store i64 %322, ptr %323, align 8, !tbaa !9
  br label %324

324:                                              ; preds = %320, %319
  %325 = load ptr, ptr %25, align 8, !tbaa !5
  %326 = load i64, ptr %325, align 8, !tbaa !9
  %327 = icmp eq i64 %326, 0
  br i1 %327, label %328, label %329

328:                                              ; preds = %324
  store i64 1, ptr %79, align 8, !tbaa !9
  br label %350

329:                                              ; preds = %324
  %330 = load ptr, ptr %22, align 8, !tbaa !5
  %331 = call i64 @lsame_(ptr noundef %330, ptr noundef @.str.2)
  %332 = icmp ne i64 %331, 0
  br i1 %332, label %337, label %333

333:                                              ; preds = %329
  %334 = load ptr, ptr %22, align 8, !tbaa !5
  %335 = call i64 @lsame_(ptr noundef %334, ptr noundef @.str)
  %336 = icmp ne i64 %335, 0
  br i1 %336, label %337, label %346

337:                                              ; preds = %333, %329
  %338 = load ptr, ptr %25, align 8, !tbaa !5
  %339 = load i64, ptr %338, align 8, !tbaa !9
  %340 = shl i64 %339, 1
  %341 = load ptr, ptr %25, align 8, !tbaa !5
  %342 = load i64, ptr %341, align 8, !tbaa !9
  %343 = add nsw i64 %342, 2
  %344 = mul nsw i64 %340, %343
  %345 = add nsw i64 %344, 16
  store i64 %345, ptr %79, align 8, !tbaa !9
  br label %349

346:                                              ; preds = %333
  %347 = load ptr, ptr %25, align 8, !tbaa !5
  %348 = load i64, ptr %347, align 8, !tbaa !9
  store i64 %348, ptr %79, align 8, !tbaa !9
  br label %349

349:                                              ; preds = %346, %337
  br label %350

350:                                              ; preds = %349, %328
  %351 = load i64, ptr %79, align 8, !tbaa !9
  %352 = sitofp i64 %351 to float
  %353 = load ptr, ptr %38, align 8, !tbaa !5
  %354 = getelementptr inbounds float, ptr %353, i64 1
  store float %352, ptr %354, align 4, !tbaa !11
  %355 = load ptr, ptr %36, align 8, !tbaa !5
  %356 = load i64, ptr %355, align 8, !tbaa !9
  %357 = load ptr, ptr %37, align 8, !tbaa !5
  %358 = load i64, ptr %357, align 8, !tbaa !9
  %359 = icmp slt i64 %356, %358
  br i1 %359, label %360, label %362

360:                                              ; preds = %350
  %361 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -15, ptr %361, align 8, !tbaa !9
  br label %373

362:                                              ; preds = %350
  %363 = load ptr, ptr %39, align 8, !tbaa !5
  %364 = load i64, ptr %363, align 8, !tbaa !9
  %365 = load i64, ptr %79, align 8, !tbaa !9
  %366 = icmp slt i64 %364, %365
  br i1 %366, label %367, label %372

367:                                              ; preds = %362
  %368 = load i64, ptr %93, align 8, !tbaa !9
  %369 = icmp ne i64 %368, 0
  br i1 %369, label %372, label %370

370:                                              ; preds = %367
  %371 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -18, ptr %371, align 8, !tbaa !9
  br label %372

372:                                              ; preds = %370, %367, %362
  br label %373

373:                                              ; preds = %372, %360
  br label %374

374:                                              ; preds = %373, %239
  br label %375

375:                                              ; preds = %374, %228
  br label %376

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

377:                                              ; preds = %376, %202
  br label %378

378:                                              ; preds = %377, %187
  br label %379

379:                                              ; preds = %378, %181
  br label %380

380:                                              ; preds = %379, %172
  %381 = load ptr, ptr %41, align 8, !tbaa !5
  %382 = load i64, ptr %381, align 8, !tbaa !9
  %383 = icmp ne i64 %382, 0
  br i1 %383, label %384, label %389

384:                                              ; preds = %380
  %385 = load ptr, ptr %41, align 8, !tbaa !5
  %386 = load i64, ptr %385, align 8, !tbaa !9
  %387 = sub nsw i64 0, %386
  store i64 %387, ptr %50, align 8, !tbaa !9
  %388 = call i32 @xerbla_(ptr noundef @.str.5, ptr noundef %50)
  store i32 0, ptr %21, align 4
  store i32 1, ptr %94, align 4
  br label %1193

389:                                              ; preds = %380
  %390 = load i64, ptr %93, align 8, !tbaa !9
  %391 = icmp ne i64 %390, 0
  br i1 %391, label %392, label %393

392:                                              ; preds = %389
  store i32 0, ptr %21, align 4
  store i32 1, ptr %94, align 4
  br label %1193

393:                                              ; preds = %389
  br label %394

394:                                              ; preds = %393
  %395 = load ptr, ptr %25, align 8, !tbaa !5
  %396 = load i64, ptr %395, align 8, !tbaa !9
  %397 = icmp eq i64 %396, 0
  br i1 %397, label %398, label %399

398:                                              ; preds = %394
  store i32 0, ptr %21, align 4
  store i32 1, ptr %94, align 4
  br label %1193

399:                                              ; preds = %394
  %400 = call double @slamch_(ptr noundef @.str.6)
  %401 = fptrunc double %400 to float
  store float %401, ptr %62, align 4, !tbaa !11
  %402 = call double @slamch_(ptr noundef @.str.3)
  %403 = load float, ptr %62, align 4, !tbaa !11
  %404 = fpext float %403 to double
  %405 = fdiv double %402, %404
  %406 = fptrunc double %405 to float
  store float %406, ptr %92, align 4, !tbaa !11
  store i64 0, ptr %60, align 8, !tbaa !9
  store i64 0, ptr %65, align 8, !tbaa !9
  %407 = load ptr, ptr %25, align 8, !tbaa !5
  %408 = load i64, ptr %407, align 8, !tbaa !9
  store i64 %408, ptr %50, align 8, !tbaa !9
  store i64 1, ptr %55, align 8, !tbaa !9
  br label %409

409:                                              ; preds = %1185, %399
  %410 = load i64, ptr %55, align 8, !tbaa !9
  %411 = load i64, ptr %50, align 8, !tbaa !9
  %412 = icmp sle i64 %410, %411
  br i1 %412, label %413, label %1188

413:                                              ; preds = %409
  %414 = load i64, ptr %65, align 8, !tbaa !9
  %415 = icmp ne i64 %414, 0
  br i1 %415, label %416, label %417

416:                                              ; preds = %413
  store i64 0, ptr %65, align 8, !tbaa !9
  br label %1184

417:                                              ; preds = %413
  %418 = load i64, ptr %55, align 8, !tbaa !9
  %419 = load ptr, ptr %25, align 8, !tbaa !5
  %420 = load i64, ptr %419, align 8, !tbaa !9
  %421 = icmp slt i64 %418, %420
  br i1 %421, label %422, label %435

422:                                              ; preds = %417
  %423 = load ptr, ptr %26, align 8, !tbaa !5
  %424 = load i64, ptr %55, align 8, !tbaa !9
  %425 = add nsw i64 %424, 1
  %426 = load i64, ptr %55, align 8, !tbaa !9
  %427 = load i64, ptr %42, align 8, !tbaa !9
  %428 = mul nsw i64 %426, %427
  %429 = add nsw i64 %425, %428
  %430 = getelementptr inbounds float, ptr %423, i64 %429
  %431 = load float, ptr %430, align 4, !tbaa !11
  %432 = fcmp une float %431, 0.000000e+00
  %433 = zext i1 %432 to i32
  %434 = sext i32 %433 to i64
  store i64 %434, ptr %65, align 8, !tbaa !9
  br label %435

435:                                              ; preds = %422, %417
  br label %436

436:                                              ; preds = %435
  %437 = load i64, ptr %90, align 8, !tbaa !9
  %438 = icmp ne i64 %437, 0
  br i1 %438, label %439, label %466

439:                                              ; preds = %436
  %440 = load i64, ptr %65, align 8, !tbaa !9
  %441 = icmp ne i64 %440, 0
  br i1 %441, label %442, label %457

442:                                              ; preds = %439
  %443 = load ptr, ptr %24, align 8, !tbaa !5
  %444 = load i64, ptr %55, align 8, !tbaa !9
  %445 = getelementptr inbounds i64, ptr %443, i64 %444
  %446 = load i64, ptr %445, align 8, !tbaa !9
  %447 = icmp ne i64 %446, 0
  br i1 %447, label %456, label %448

448:                                              ; preds = %442
  %449 = load ptr, ptr %24, align 8, !tbaa !5
  %450 = load i64, ptr %55, align 8, !tbaa !9
  %451 = add nsw i64 %450, 1
  %452 = getelementptr inbounds i64, ptr %449, i64 %451
  %453 = load i64, ptr %452, align 8, !tbaa !9
  %454 = icmp ne i64 %453, 0
  br i1 %454, label %456, label %455

455:                                              ; preds = %448
  br label %1184

456:                                              ; preds = %448, %442
  br label %465

457:                                              ; preds = %439
  %458 = load ptr, ptr %24, align 8, !tbaa !5
  %459 = load i64, ptr %55, align 8, !tbaa !9
  %460 = getelementptr inbounds i64, ptr %458, i64 %459
  %461 = load i64, ptr %460, align 8, !tbaa !9
  %462 = icmp ne i64 %461, 0
  br i1 %462, label %464, label %463

463:                                              ; preds = %457
  br label %1184

464:                                              ; preds = %457
  br label %465

465:                                              ; preds = %464, %456
  br label %466

466:                                              ; preds = %465, %436
  %467 = load i64, ptr %60, align 8, !tbaa !9
  %468 = add nsw i64 %467, 1
  store i64 %468, ptr %60, align 8, !tbaa !9
  %469 = load i64, ptr %80, align 8, !tbaa !9
  %470 = icmp ne i64 %469, 0
  br i1 %470, label %471, label %795

471:                                              ; preds = %466
  %472 = load i64, ptr %65, align 8, !tbaa !9
  %473 = icmp ne i64 %472, 0
  br i1 %473, label %474, label %705

474:                                              ; preds = %471
  %475 = load ptr, ptr %25, align 8, !tbaa !5
  %476 = load ptr, ptr %32, align 8, !tbaa !5
  %477 = load i64, ptr %60, align 8, !tbaa !9
  %478 = load i64, ptr %48, align 8, !tbaa !9
  %479 = mul nsw i64 %477, %478
  %480 = add nsw i64 %479, 1
  %481 = getelementptr inbounds float, ptr %476, i64 %480
  %482 = call double @f2c_snrm2(ptr noundef %475, ptr noundef %481, ptr noundef @c__1)
  %483 = fptrunc double %482 to float
  store float %483, ptr %52, align 4, !tbaa !11
  %484 = load ptr, ptr %25, align 8, !tbaa !5
  %485 = load ptr, ptr %32, align 8, !tbaa !5
  %486 = load i64, ptr %60, align 8, !tbaa !9
  %487 = add nsw i64 %486, 1
  %488 = load i64, ptr %48, align 8, !tbaa !9
  %489 = mul nsw i64 %487, %488
  %490 = add nsw i64 %489, 1
  %491 = getelementptr inbounds float, ptr %485, i64 %490
  %492 = call double @f2c_snrm2(ptr noundef %484, ptr noundef %491, ptr noundef @c__1)
  %493 = fptrunc double %492 to float
  store float %493, ptr %53, align 4, !tbaa !11
  %494 = call double @slapy2_(ptr noundef %52, ptr noundef %53)
  %495 = fptrunc double %494 to float
  store float %495, ptr %72, align 4, !tbaa !11
  %496 = load ptr, ptr %25, align 8, !tbaa !5
  %497 = load ptr, ptr %30, align 8, !tbaa !5
  %498 = load i64, ptr %60, align 8, !tbaa !9
  %499 = load i64, ptr %46, align 8, !tbaa !9
  %500 = mul nsw i64 %498, %499
  %501 = add nsw i64 %500, 1
  %502 = getelementptr inbounds float, ptr %497, i64 %501
  %503 = call double @f2c_snrm2(ptr noundef %496, ptr noundef %502, ptr noundef @c__1)
  %504 = fptrunc double %503 to float
  store float %504, ptr %52, align 4, !tbaa !11
  %505 = load ptr, ptr %25, align 8, !tbaa !5
  %506 = load ptr, ptr %30, align 8, !tbaa !5
  %507 = load i64, ptr %60, align 8, !tbaa !9
  %508 = add nsw i64 %507, 1
  %509 = load i64, ptr %46, align 8, !tbaa !9
  %510 = mul nsw i64 %508, %509
  %511 = add nsw i64 %510, 1
  %512 = getelementptr inbounds float, ptr %506, i64 %511
  %513 = call double @f2c_snrm2(ptr noundef %505, ptr noundef %512, ptr noundef @c__1)
  %514 = fptrunc double %513 to float
  store float %514, ptr %53, align 4, !tbaa !11
  %515 = call double @slapy2_(ptr noundef %52, ptr noundef %53)
  %516 = fptrunc double %515 to float
  store float %516, ptr %70, align 4, !tbaa !11
  %517 = load ptr, ptr %25, align 8, !tbaa !5
  %518 = load ptr, ptr %25, align 8, !tbaa !5
  %519 = load ptr, ptr %26, align 8, !tbaa !5
  %520 = load i64, ptr %43, align 8, !tbaa !9
  %521 = getelementptr inbounds float, ptr %519, i64 %520
  %522 = load ptr, ptr %27, align 8, !tbaa !5
  %523 = load ptr, ptr %32, align 8, !tbaa !5
  %524 = load i64, ptr %60, align 8, !tbaa !9
  %525 = load i64, ptr %48, align 8, !tbaa !9
  %526 = mul nsw i64 %524, %525
  %527 = add nsw i64 %526, 1
  %528 = getelementptr inbounds float, ptr %523, i64 %527
  %529 = load ptr, ptr %38, align 8, !tbaa !5
  %530 = getelementptr inbounds float, ptr %529, i64 1
  %531 = call i32 @f2c_sgemv(ptr noundef @.str.7, ptr noundef %517, ptr noundef %518, ptr noundef @c_b19, ptr noundef %521, ptr noundef %522, ptr noundef %528, ptr noundef @c__1, ptr noundef @c_b21, ptr noundef %530, ptr noundef @c__1)
  %532 = load ptr, ptr %25, align 8, !tbaa !5
  %533 = load ptr, ptr %38, align 8, !tbaa !5
  %534 = getelementptr inbounds float, ptr %533, i64 1
  %535 = load ptr, ptr %30, align 8, !tbaa !5
  %536 = load i64, ptr %60, align 8, !tbaa !9
  %537 = load i64, ptr %46, align 8, !tbaa !9
  %538 = mul nsw i64 %536, %537
  %539 = add nsw i64 %538, 1
  %540 = getelementptr inbounds float, ptr %535, i64 %539
  %541 = call double @f2c_sdot(ptr noundef %532, ptr noundef %534, ptr noundef @c__1, ptr noundef %540, ptr noundef @c__1)
  %542 = fptrunc double %541 to float
  store float %542, ptr %84, align 4, !tbaa !11
  %543 = load ptr, ptr %25, align 8, !tbaa !5
  %544 = load ptr, ptr %38, align 8, !tbaa !5
  %545 = getelementptr inbounds float, ptr %544, i64 1
  %546 = load ptr, ptr %30, align 8, !tbaa !5
  %547 = load i64, ptr %60, align 8, !tbaa !9
  %548 = add nsw i64 %547, 1
  %549 = load i64, ptr %46, align 8, !tbaa !9
  %550 = mul nsw i64 %548, %549
  %551 = add nsw i64 %550, 1
  %552 = getelementptr inbounds float, ptr %546, i64 %551
  %553 = call double @f2c_sdot(ptr noundef %543, ptr noundef %545, ptr noundef @c__1, ptr noundef %552, ptr noundef @c__1)
  %554 = fptrunc double %553 to float
  store float %554, ptr %82, align 4, !tbaa !11
  %555 = load ptr, ptr %25, align 8, !tbaa !5
  %556 = load ptr, ptr %25, align 8, !tbaa !5
  %557 = load ptr, ptr %26, align 8, !tbaa !5
  %558 = load i64, ptr %43, align 8, !tbaa !9
  %559 = getelementptr inbounds float, ptr %557, i64 %558
  %560 = load ptr, ptr %27, align 8, !tbaa !5
  %561 = load ptr, ptr %32, align 8, !tbaa !5
  %562 = load i64, ptr %60, align 8, !tbaa !9
  %563 = add nsw i64 %562, 1
  %564 = load i64, ptr %48, align 8, !tbaa !9
  %565 = mul nsw i64 %563, %564
  %566 = add nsw i64 %565, 1
  %567 = getelementptr inbounds float, ptr %561, i64 %566
  %568 = load ptr, ptr %38, align 8, !tbaa !5
  %569 = getelementptr inbounds float, ptr %568, i64 1
  %570 = call i32 @f2c_sgemv(ptr noundef @.str.7, ptr noundef %555, ptr noundef %556, ptr noundef @c_b19, ptr noundef %559, ptr noundef %560, ptr noundef %567, ptr noundef @c__1, ptr noundef @c_b21, ptr noundef %569, ptr noundef @c__1)
  %571 = load ptr, ptr %25, align 8, !tbaa !5
  %572 = load ptr, ptr %38, align 8, !tbaa !5
  %573 = getelementptr inbounds float, ptr %572, i64 1
  %574 = load ptr, ptr %30, align 8, !tbaa !5
  %575 = load i64, ptr %60, align 8, !tbaa !9
  %576 = add nsw i64 %575, 1
  %577 = load i64, ptr %46, align 8, !tbaa !9
  %578 = mul nsw i64 %576, %577
  %579 = add nsw i64 %578, 1
  %580 = getelementptr inbounds float, ptr %574, i64 %579
  %581 = call double @f2c_sdot(ptr noundef %571, ptr noundef %573, ptr noundef @c__1, ptr noundef %580, ptr noundef @c__1)
  %582 = fptrunc double %581 to float
  store float %582, ptr %78, align 4, !tbaa !11
  %583 = load ptr, ptr %25, align 8, !tbaa !5
  %584 = load ptr, ptr %38, align 8, !tbaa !5
  %585 = getelementptr inbounds float, ptr %584, i64 1
  %586 = load ptr, ptr %30, align 8, !tbaa !5
  %587 = load i64, ptr %60, align 8, !tbaa !9
  %588 = load i64, ptr %46, align 8, !tbaa !9
  %589 = mul nsw i64 %587, %588
  %590 = add nsw i64 %589, 1
  %591 = getelementptr inbounds float, ptr %586, i64 %590
  %592 = call double @f2c_sdot(ptr noundef %583, ptr noundef %585, ptr noundef @c__1, ptr noundef %591, ptr noundef @c__1)
  %593 = fptrunc double %592 to float
  store float %593, ptr %81, align 4, !tbaa !11
  %594 = load float, ptr %84, align 4, !tbaa !11
  %595 = load float, ptr %78, align 4, !tbaa !11
  %596 = fadd float %594, %595
  store float %596, ptr %67, align 4, !tbaa !11
  %597 = load float, ptr %81, align 4, !tbaa !11
  %598 = load float, ptr %82, align 4, !tbaa !11
  %599 = fsub float %597, %598
  store float %599, ptr %76, align 4, !tbaa !11
  %600 = load ptr, ptr %25, align 8, !tbaa !5
  %601 = load ptr, ptr %25, align 8, !tbaa !5
  %602 = load ptr, ptr %28, align 8, !tbaa !5
  %603 = load i64, ptr %45, align 8, !tbaa !9
  %604 = getelementptr inbounds float, ptr %602, i64 %603
  %605 = load ptr, ptr %29, align 8, !tbaa !5
  %606 = load ptr, ptr %32, align 8, !tbaa !5
  %607 = load i64, ptr %60, align 8, !tbaa !9
  %608 = load i64, ptr %48, align 8, !tbaa !9
  %609 = mul nsw i64 %607, %608
  %610 = add nsw i64 %609, 1
  %611 = getelementptr inbounds float, ptr %606, i64 %610
  %612 = load ptr, ptr %38, align 8, !tbaa !5
  %613 = getelementptr inbounds float, ptr %612, i64 1
  %614 = call i32 @f2c_sgemv(ptr noundef @.str.7, ptr noundef %600, ptr noundef %601, ptr noundef @c_b19, ptr noundef %604, ptr noundef %605, ptr noundef %611, ptr noundef @c__1, ptr noundef @c_b21, ptr noundef %613, ptr noundef @c__1)
  %615 = load ptr, ptr %25, align 8, !tbaa !5
  %616 = load ptr, ptr %38, align 8, !tbaa !5
  %617 = getelementptr inbounds float, ptr %616, i64 1
  %618 = load ptr, ptr %30, align 8, !tbaa !5
  %619 = load i64, ptr %60, align 8, !tbaa !9
  %620 = load i64, ptr %46, align 8, !tbaa !9
  %621 = mul nsw i64 %619, %620
  %622 = add nsw i64 %621, 1
  %623 = getelementptr inbounds float, ptr %618, i64 %622
  %624 = call double @f2c_sdot(ptr noundef %615, ptr noundef %617, ptr noundef @c__1, ptr noundef %623, ptr noundef @c__1)
  %625 = fptrunc double %624 to float
  store float %625, ptr %84, align 4, !tbaa !11
  %626 = load ptr, ptr %25, align 8, !tbaa !5
  %627 = load ptr, ptr %38, align 8, !tbaa !5
  %628 = getelementptr inbounds float, ptr %627, i64 1
  %629 = load ptr, ptr %30, align 8, !tbaa !5
  %630 = load i64, ptr %60, align 8, !tbaa !9
  %631 = add nsw i64 %630, 1
  %632 = load i64, ptr %46, align 8, !tbaa !9
  %633 = mul nsw i64 %631, %632
  %634 = add nsw i64 %633, 1
  %635 = getelementptr inbounds float, ptr %629, i64 %634
  %636 = call double @f2c_sdot(ptr noundef %626, ptr noundef %628, ptr noundef @c__1, ptr noundef %635, ptr noundef @c__1)
  %637 = fptrunc double %636 to float
  store float %637, ptr %82, align 4, !tbaa !11
  %638 = load ptr, ptr %25, align 8, !tbaa !5
  %639 = load ptr, ptr %25, align 8, !tbaa !5
  %640 = load ptr, ptr %28, align 8, !tbaa !5
  %641 = load i64, ptr %45, align 8, !tbaa !9
  %642 = getelementptr inbounds float, ptr %640, i64 %641
  %643 = load ptr, ptr %29, align 8, !tbaa !5
  %644 = load ptr, ptr %32, align 8, !tbaa !5
  %645 = load i64, ptr %60, align 8, !tbaa !9
  %646 = add nsw i64 %645, 1
  %647 = load i64, ptr %48, align 8, !tbaa !9
  %648 = mul nsw i64 %646, %647
  %649 = add nsw i64 %648, 1
  %650 = getelementptr inbounds float, ptr %644, i64 %649
  %651 = load ptr, ptr %38, align 8, !tbaa !5
  %652 = getelementptr inbounds float, ptr %651, i64 1
  %653 = call i32 @f2c_sgemv(ptr noundef @.str.7, ptr noundef %638, ptr noundef %639, ptr noundef @c_b19, ptr noundef %642, ptr noundef %643, ptr noundef %650, ptr noundef @c__1, ptr noundef @c_b21, ptr noundef %652, ptr noundef @c__1)
  %654 = load ptr, ptr %25, align 8, !tbaa !5
  %655 = load ptr, ptr %38, align 8, !tbaa !5
  %656 = getelementptr inbounds float, ptr %655, i64 1
  %657 = load ptr, ptr %30, align 8, !tbaa !5
  %658 = load i64, ptr %60, align 8, !tbaa !9
  %659 = add nsw i64 %658, 1
  %660 = load i64, ptr %46, align 8, !tbaa !9
  %661 = mul nsw i64 %659, %660
  %662 = add nsw i64 %661, 1
  %663 = getelementptr inbounds float, ptr %657, i64 %662
  %664 = call double @f2c_sdot(ptr noundef %654, ptr noundef %656, ptr noundef @c__1, ptr noundef %663, ptr noundef @c__1)
  %665 = fptrunc double %664 to float
  store float %665, ptr %78, align 4, !tbaa !11
  %666 = load ptr, ptr %25, align 8, !tbaa !5
  %667 = load ptr, ptr %38, align 8, !tbaa !5
  %668 = getelementptr inbounds float, ptr %667, i64 1
  %669 = load ptr, ptr %30, align 8, !tbaa !5
  %670 = load i64, ptr %60, align 8, !tbaa !9
  %671 = load i64, ptr %46, align 8, !tbaa !9
  %672 = mul nsw i64 %670, %671
  %673 = add nsw i64 %672, 1
  %674 = getelementptr inbounds float, ptr %669, i64 %673
  %675 = call double @f2c_sdot(ptr noundef %666, ptr noundef %668, ptr noundef @c__1, ptr noundef %674, ptr noundef @c__1)
  %676 = fptrunc double %675 to float
  store float %676, ptr %81, align 4, !tbaa !11
  %677 = load float, ptr %84, align 4, !tbaa !11
  %678 = load float, ptr %78, align 4, !tbaa !11
  %679 = fadd float %677, %678
  store float %679, ptr %68, align 4, !tbaa !11
  %680 = load float, ptr %81, align 4, !tbaa !11
  %681 = load float, ptr %82, align 4, !tbaa !11
  %682 = fsub float %680, %681
  store float %682, ptr %77, align 4, !tbaa !11
  %683 = call double @slapy2_(ptr noundef %67, ptr noundef %76)
  %684 = fptrunc double %683 to float
  store float %684, ptr %67, align 4, !tbaa !11
  %685 = call double @slapy2_(ptr noundef %68, ptr noundef %77)
  %686 = fptrunc double %685 to float
  store float %686, ptr %68, align 4, !tbaa !11
  %687 = call double @slapy2_(ptr noundef %67, ptr noundef %68)
  %688 = fptrunc double %687 to float
  store float %688, ptr %64, align 4, !tbaa !11
  %689 = load float, ptr %64, align 4, !tbaa !11
  %690 = load float, ptr %72, align 4, !tbaa !11
  %691 = load float, ptr %70, align 4, !tbaa !11
  %692 = fmul float %690, %691
  %693 = fdiv float %689, %692
  %694 = load ptr, ptr %34, align 8, !tbaa !5
  %695 = load i64, ptr %60, align 8, !tbaa !9
  %696 = getelementptr inbounds float, ptr %694, i64 %695
  store float %693, ptr %696, align 4, !tbaa !11
  %697 = load ptr, ptr %34, align 8, !tbaa !5
  %698 = load i64, ptr %60, align 8, !tbaa !9
  %699 = getelementptr inbounds float, ptr %697, i64 %698
  %700 = load float, ptr %699, align 4, !tbaa !11
  %701 = load ptr, ptr %34, align 8, !tbaa !5
  %702 = load i64, ptr %60, align 8, !tbaa !9
  %703 = add nsw i64 %702, 1
  %704 = getelementptr inbounds float, ptr %701, i64 %703
  store float %700, ptr %704, align 4, !tbaa !11
  br label %794

705:                                              ; preds = %471
  %706 = load ptr, ptr %25, align 8, !tbaa !5
  %707 = load ptr, ptr %32, align 8, !tbaa !5
  %708 = load i64, ptr %60, align 8, !tbaa !9
  %709 = load i64, ptr %48, align 8, !tbaa !9
  %710 = mul nsw i64 %708, %709
  %711 = add nsw i64 %710, 1
  %712 = getelementptr inbounds float, ptr %707, i64 %711
  %713 = call double @f2c_snrm2(ptr noundef %706, ptr noundef %712, ptr noundef @c__1)
  %714 = fptrunc double %713 to float
  store float %714, ptr %72, align 4, !tbaa !11
  %715 = load ptr, ptr %25, align 8, !tbaa !5
  %716 = load ptr, ptr %30, align 8, !tbaa !5
  %717 = load i64, ptr %60, align 8, !tbaa !9
  %718 = load i64, ptr %46, align 8, !tbaa !9
  %719 = mul nsw i64 %717, %718
  %720 = add nsw i64 %719, 1
  %721 = getelementptr inbounds float, ptr %716, i64 %720
  %722 = call double @f2c_snrm2(ptr noundef %715, ptr noundef %721, ptr noundef @c__1)
  %723 = fptrunc double %722 to float
  store float %723, ptr %70, align 4, !tbaa !11
  %724 = load ptr, ptr %25, align 8, !tbaa !5
  %725 = load ptr, ptr %25, align 8, !tbaa !5
  %726 = load ptr, ptr %26, align 8, !tbaa !5
  %727 = load i64, ptr %43, align 8, !tbaa !9
  %728 = getelementptr inbounds float, ptr %726, i64 %727
  %729 = load ptr, ptr %27, align 8, !tbaa !5
  %730 = load ptr, ptr %32, align 8, !tbaa !5
  %731 = load i64, ptr %60, align 8, !tbaa !9
  %732 = load i64, ptr %48, align 8, !tbaa !9
  %733 = mul nsw i64 %731, %732
  %734 = add nsw i64 %733, 1
  %735 = getelementptr inbounds float, ptr %730, i64 %734
  %736 = load ptr, ptr %38, align 8, !tbaa !5
  %737 = getelementptr inbounds float, ptr %736, i64 1
  %738 = call i32 @f2c_sgemv(ptr noundef @.str.7, ptr noundef %724, ptr noundef %725, ptr noundef @c_b19, ptr noundef %728, ptr noundef %729, ptr noundef %735, ptr noundef @c__1, ptr noundef @c_b21, ptr noundef %737, ptr noundef @c__1)
  %739 = load ptr, ptr %25, align 8, !tbaa !5
  %740 = load ptr, ptr %38, align 8, !tbaa !5
  %741 = getelementptr inbounds float, ptr %740, i64 1
  %742 = load ptr, ptr %30, align 8, !tbaa !5
  %743 = load i64, ptr %60, align 8, !tbaa !9
  %744 = load i64, ptr %46, align 8, !tbaa !9
  %745 = mul nsw i64 %743, %744
  %746 = add nsw i64 %745, 1
  %747 = getelementptr inbounds float, ptr %742, i64 %746
  %748 = call double @f2c_sdot(ptr noundef %739, ptr noundef %741, ptr noundef @c__1, ptr noundef %747, ptr noundef @c__1)
  %749 = fptrunc double %748 to float
  store float %749, ptr %67, align 4, !tbaa !11
  %750 = load ptr, ptr %25, align 8, !tbaa !5
  %751 = load ptr, ptr %25, align 8, !tbaa !5
  %752 = load ptr, ptr %28, align 8, !tbaa !5
  %753 = load i64, ptr %45, align 8, !tbaa !9
  %754 = getelementptr inbounds float, ptr %752, i64 %753
  %755 = load ptr, ptr %29, align 8, !tbaa !5
  %756 = load ptr, ptr %32, align 8, !tbaa !5
  %757 = load i64, ptr %60, align 8, !tbaa !9
  %758 = load i64, ptr %48, align 8, !tbaa !9
  %759 = mul nsw i64 %757, %758
  %760 = add nsw i64 %759, 1
  %761 = getelementptr inbounds float, ptr %756, i64 %760
  %762 = load ptr, ptr %38, align 8, !tbaa !5
  %763 = getelementptr inbounds float, ptr %762, i64 1
  %764 = call i32 @f2c_sgemv(ptr noundef @.str.7, ptr noundef %750, ptr noundef %751, ptr noundef @c_b19, ptr noundef %754, ptr noundef %755, ptr noundef %761, ptr noundef @c__1, ptr noundef @c_b21, ptr noundef %763, ptr noundef @c__1)
  %765 = load ptr, ptr %25, align 8, !tbaa !5
  %766 = load ptr, ptr %38, align 8, !tbaa !5
  %767 = getelementptr inbounds float, ptr %766, i64 1
  %768 = load ptr, ptr %30, align 8, !tbaa !5
  %769 = load i64, ptr %60, align 8, !tbaa !9
  %770 = load i64, ptr %46, align 8, !tbaa !9
  %771 = mul nsw i64 %769, %770
  %772 = add nsw i64 %771, 1
  %773 = getelementptr inbounds float, ptr %768, i64 %772
  %774 = call double @f2c_sdot(ptr noundef %765, ptr noundef %767, ptr noundef @c__1, ptr noundef %773, ptr noundef @c__1)
  %775 = fptrunc double %774 to float
  store float %775, ptr %68, align 4, !tbaa !11
  %776 = call double @slapy2_(ptr noundef %67, ptr noundef %68)
  %777 = fptrunc double %776 to float
  store float %777, ptr %64, align 4, !tbaa !11
  %778 = load float, ptr %64, align 4, !tbaa !11
  %779 = fcmp oeq float %778, 0.000000e+00
  br i1 %779, label %780, label %784

780:                                              ; preds = %705
  %781 = load ptr, ptr %34, align 8, !tbaa !5
  %782 = load i64, ptr %60, align 8, !tbaa !9
  %783 = getelementptr inbounds float, ptr %781, i64 %782
  store float -1.000000e+00, ptr %783, align 4, !tbaa !11
  br label %793

784:                                              ; preds = %705
  %785 = load float, ptr %64, align 4, !tbaa !11
  %786 = load float, ptr %72, align 4, !tbaa !11
  %787 = load float, ptr %70, align 4, !tbaa !11
  %788 = fmul float %786, %787
  %789 = fdiv float %785, %788
  %790 = load ptr, ptr %34, align 8, !tbaa !5
  %791 = load i64, ptr %60, align 8, !tbaa !9
  %792 = getelementptr inbounds float, ptr %790, i64 %791
  store float %789, ptr %792, align 4, !tbaa !11
  br label %793

793:                                              ; preds = %784, %780
  br label %794

794:                                              ; preds = %793, %474
  br label %795

795:                                              ; preds = %794, %466
  %796 = load i64, ptr %89, align 8, !tbaa !9
  %797 = icmp ne i64 %796, 0
  br i1 %797, label %798, label %1177

798:                                              ; preds = %795
  %799 = load ptr, ptr %25, align 8, !tbaa !5
  %800 = load i64, ptr %799, align 8, !tbaa !9
  %801 = icmp eq i64 %800, 1
  br i1 %801, label %802, label %816

802:                                              ; preds = %798
  %803 = load ptr, ptr %26, align 8, !tbaa !5
  %804 = load i64, ptr %42, align 8, !tbaa !9
  %805 = add nsw i64 %804, 1
  %806 = getelementptr inbounds float, ptr %803, i64 %805
  %807 = load ptr, ptr %28, align 8, !tbaa !5
  %808 = load i64, ptr %44, align 8, !tbaa !9
  %809 = add nsw i64 %808, 1
  %810 = getelementptr inbounds float, ptr %807, i64 %809
  %811 = call double @slapy2_(ptr noundef %806, ptr noundef %810)
  %812 = fptrunc double %811 to float
  %813 = load ptr, ptr %35, align 8, !tbaa !5
  %814 = load i64, ptr %60, align 8, !tbaa !9
  %815 = getelementptr inbounds float, ptr %813, i64 %814
  store float %812, ptr %815, align 4, !tbaa !11
  br label %1184

816:                                              ; preds = %798
  %817 = load i64, ptr %65, align 8, !tbaa !9
  %818 = icmp ne i64 %817, 0
  br i1 %818, label %819, label %972

819:                                              ; preds = %816
  %820 = load ptr, ptr %26, align 8, !tbaa !5
  %821 = load i64, ptr %55, align 8, !tbaa !9
  %822 = load i64, ptr %55, align 8, !tbaa !9
  %823 = load i64, ptr %42, align 8, !tbaa !9
  %824 = mul nsw i64 %822, %823
  %825 = add nsw i64 %821, %824
  %826 = getelementptr inbounds float, ptr %820, i64 %825
  %827 = load float, ptr %826, align 4, !tbaa !11
  %828 = load ptr, ptr %38, align 8, !tbaa !5
  %829 = getelementptr inbounds float, ptr %828, i64 1
  store float %827, ptr %829, align 4, !tbaa !11
  %830 = load ptr, ptr %26, align 8, !tbaa !5
  %831 = load i64, ptr %55, align 8, !tbaa !9
  %832 = add nsw i64 %831, 1
  %833 = load i64, ptr %55, align 8, !tbaa !9
  %834 = load i64, ptr %42, align 8, !tbaa !9
  %835 = mul nsw i64 %833, %834
  %836 = add nsw i64 %832, %835
  %837 = getelementptr inbounds float, ptr %830, i64 %836
  %838 = load float, ptr %837, align 4, !tbaa !11
  %839 = load ptr, ptr %38, align 8, !tbaa !5
  %840 = getelementptr inbounds float, ptr %839, i64 2
  store float %838, ptr %840, align 4, !tbaa !11
  %841 = load ptr, ptr %26, align 8, !tbaa !5
  %842 = load i64, ptr %55, align 8, !tbaa !9
  %843 = load i64, ptr %55, align 8, !tbaa !9
  %844 = add nsw i64 %843, 1
  %845 = load i64, ptr %42, align 8, !tbaa !9
  %846 = mul nsw i64 %844, %845
  %847 = add nsw i64 %842, %846
  %848 = getelementptr inbounds float, ptr %841, i64 %847
  %849 = load float, ptr %848, align 4, !tbaa !11
  %850 = load ptr, ptr %38, align 8, !tbaa !5
  %851 = getelementptr inbounds float, ptr %850, i64 3
  store float %849, ptr %851, align 4, !tbaa !11
  %852 = load ptr, ptr %26, align 8, !tbaa !5
  %853 = load i64, ptr %55, align 8, !tbaa !9
  %854 = add nsw i64 %853, 1
  %855 = load i64, ptr %55, align 8, !tbaa !9
  %856 = add nsw i64 %855, 1
  %857 = load i64, ptr %42, align 8, !tbaa !9
  %858 = mul nsw i64 %856, %857
  %859 = add nsw i64 %854, %858
  %860 = getelementptr inbounds float, ptr %852, i64 %859
  %861 = load float, ptr %860, align 4, !tbaa !11
  %862 = load ptr, ptr %38, align 8, !tbaa !5
  %863 = getelementptr inbounds float, ptr %862, i64 4
  store float %861, ptr %863, align 4, !tbaa !11
  %864 = load ptr, ptr %28, align 8, !tbaa !5
  %865 = load i64, ptr %55, align 8, !tbaa !9
  %866 = load i64, ptr %55, align 8, !tbaa !9
  %867 = load i64, ptr %44, align 8, !tbaa !9
  %868 = mul nsw i64 %866, %867
  %869 = add nsw i64 %865, %868
  %870 = getelementptr inbounds float, ptr %864, i64 %869
  %871 = load float, ptr %870, align 4, !tbaa !11
  %872 = load ptr, ptr %38, align 8, !tbaa !5
  %873 = getelementptr inbounds float, ptr %872, i64 5
  store float %871, ptr %873, align 4, !tbaa !11
  %874 = load ptr, ptr %28, align 8, !tbaa !5
  %875 = load i64, ptr %55, align 8, !tbaa !9
  %876 = add nsw i64 %875, 1
  %877 = load i64, ptr %55, align 8, !tbaa !9
  %878 = load i64, ptr %44, align 8, !tbaa !9
  %879 = mul nsw i64 %877, %878
  %880 = add nsw i64 %876, %879
  %881 = getelementptr inbounds float, ptr %874, i64 %880
  %882 = load float, ptr %881, align 4, !tbaa !11
  %883 = load ptr, ptr %38, align 8, !tbaa !5
  %884 = getelementptr inbounds float, ptr %883, i64 6
  store float %882, ptr %884, align 4, !tbaa !11
  %885 = load ptr, ptr %28, align 8, !tbaa !5
  %886 = load i64, ptr %55, align 8, !tbaa !9
  %887 = load i64, ptr %55, align 8, !tbaa !9
  %888 = add nsw i64 %887, 1
  %889 = load i64, ptr %44, align 8, !tbaa !9
  %890 = mul nsw i64 %888, %889
  %891 = add nsw i64 %886, %890
  %892 = getelementptr inbounds float, ptr %885, i64 %891
  %893 = load float, ptr %892, align 4, !tbaa !11
  %894 = load ptr, ptr %38, align 8, !tbaa !5
  %895 = getelementptr inbounds float, ptr %894, i64 7
  store float %893, ptr %895, align 4, !tbaa !11
  %896 = load ptr, ptr %28, align 8, !tbaa !5
  %897 = load i64, ptr %55, align 8, !tbaa !9
  %898 = add nsw i64 %897, 1
  %899 = load i64, ptr %55, align 8, !tbaa !9
  %900 = add nsw i64 %899, 1
  %901 = load i64, ptr %44, align 8, !tbaa !9
  %902 = mul nsw i64 %900, %901
  %903 = add nsw i64 %898, %902
  %904 = getelementptr inbounds float, ptr %896, i64 %903
  %905 = load float, ptr %904, align 4, !tbaa !11
  %906 = load ptr, ptr %38, align 8, !tbaa !5
  %907 = getelementptr inbounds float, ptr %906, i64 8
  store float %905, ptr %907, align 4, !tbaa !11
  %908 = load float, ptr %92, align 4, !tbaa !11
  %909 = load float, ptr %62, align 4, !tbaa !11
  %910 = fmul float %908, %909
  store float %910, ptr %52, align 4, !tbaa !11
  %911 = load ptr, ptr %38, align 8, !tbaa !5
  %912 = getelementptr inbounds float, ptr %911, i64 1
  %913 = load ptr, ptr %38, align 8, !tbaa !5
  %914 = getelementptr inbounds float, ptr %913, i64 5
  %915 = getelementptr inbounds [1 x float], ptr %85, i64 0, i64 0
  %916 = getelementptr inbounds [1 x float], ptr %83, i64 0, i64 0
  %917 = call i32 @slag2_(ptr noundef %912, ptr noundef @c__2, ptr noundef %914, ptr noundef @c__2, ptr noundef %52, ptr noundef %63, ptr noundef %915, ptr noundef %87, ptr noundef %916, ptr noundef %86)
  store float 1.000000e+00, ptr %91, align 4, !tbaa !11
  %918 = load float, ptr %87, align 4, !tbaa !11
  %919 = load float, ptr %87, align 4, !tbaa !11
  %920 = load float, ptr %86, align 4, !tbaa !11
  %921 = load float, ptr %86, align 4, !tbaa !11
  %922 = fmul float %920, %921
  %923 = call float @llvm.fmuladd.f32(float %918, float %919, float %922)
  %924 = load float, ptr %63, align 4, !tbaa !11
  %925 = load float, ptr %63, align 4, !tbaa !11
  %926 = call float @llvm.fmuladd.f32(float %924, float %925, float %923)
  %927 = fmul float %926, 2.000000e+00
  store float %927, ptr %56, align 4, !tbaa !11
  %928 = load float, ptr %63, align 4, !tbaa !11
  %929 = fmul float %928, 4.000000e+00
  %930 = load float, ptr %63, align 4, !tbaa !11
  %931 = fmul float %929, %930
  %932 = load float, ptr %86, align 4, !tbaa !11
  %933 = fmul float %931, %932
  %934 = load float, ptr %86, align 4, !tbaa !11
  %935 = fmul float %933, %934
  store float %935, ptr %57, align 4, !tbaa !11
  %936 = load float, ptr %56, align 4, !tbaa !11
  %937 = fpext float %936 to double
  %938 = load float, ptr %56, align 4, !tbaa !11
  %939 = load float, ptr %56, align 4, !tbaa !11
  %940 = load float, ptr %57, align 4, !tbaa !11
  %941 = fmul float %940, 4.000000e+00
  %942 = fneg float %941
  %943 = call float @llvm.fmuladd.f32(float %938, float %939, float %942)
  %944 = fpext float %943 to double
  %945 = call double @sqrt(double noundef %944) #5
  %946 = fadd double %937, %945
  %947 = fptrunc double %946 to float
  store float %947, ptr %73, align 4, !tbaa !11
  %948 = load float, ptr %57, align 4, !tbaa !11
  %949 = load float, ptr %73, align 4, !tbaa !11
  %950 = fdiv float %948, %949
  store float %950, ptr %74, align 4, !tbaa !11
  %951 = load float, ptr %73, align 4, !tbaa !11
  %952 = fdiv float %951, 2.000000e+00
  store float %952, ptr %73, align 4, !tbaa !11
  %953 = load float, ptr %73, align 4, !tbaa !11
  %954 = fpext float %953 to double
  %955 = call double @sqrt(double noundef %954) #5
  %956 = fptrunc double %955 to float
  store float %956, ptr %52, align 4, !tbaa !11
  %957 = load float, ptr %74, align 4, !tbaa !11
  %958 = fpext float %957 to double
  %959 = call double @sqrt(double noundef %958) #5
  %960 = fptrunc double %959 to float
  store float %960, ptr %53, align 4, !tbaa !11
  %961 = load float, ptr %52, align 4, !tbaa !11
  %962 = load float, ptr %53, align 4, !tbaa !11
  %963 = fcmp ole float %961, %962
  br i1 %963, label %964, label %966

964:                                              ; preds = %819
  %965 = load float, ptr %52, align 4, !tbaa !11
  br label %968

966:                                              ; preds = %819
  %967 = load float, ptr %53, align 4, !tbaa !11
  br label %968

968:                                              ; preds = %966, %964
  %969 = phi float [ %965, %964 ], [ %967, %966 ]
  %970 = fpext float %969 to double
  %971 = fptrunc double %970 to float
  store float %971, ptr %64, align 4, !tbaa !11
  br label %972

972:                                              ; preds = %968, %816
  %973 = load ptr, ptr %25, align 8, !tbaa !5
  %974 = load ptr, ptr %25, align 8, !tbaa !5
  %975 = load ptr, ptr %26, align 8, !tbaa !5
  %976 = load i64, ptr %43, align 8, !tbaa !9
  %977 = getelementptr inbounds float, ptr %975, i64 %976
  %978 = load ptr, ptr %27, align 8, !tbaa !5
  %979 = load ptr, ptr %38, align 8, !tbaa !5
  %980 = getelementptr inbounds float, ptr %979, i64 1
  %981 = load ptr, ptr %25, align 8, !tbaa !5
  %982 = call i32 @slacpy_(ptr noundef @.str.8, ptr noundef %973, ptr noundef %974, ptr noundef %977, ptr noundef %978, ptr noundef %980, ptr noundef %981)
  %983 = load ptr, ptr %25, align 8, !tbaa !5
  %984 = load ptr, ptr %25, align 8, !tbaa !5
  %985 = load ptr, ptr %28, align 8, !tbaa !5
  %986 = load i64, ptr %45, align 8, !tbaa !9
  %987 = getelementptr inbounds float, ptr %985, i64 %986
  %988 = load ptr, ptr %29, align 8, !tbaa !5
  %989 = load ptr, ptr %38, align 8, !tbaa !5
  %990 = load ptr, ptr %25, align 8, !tbaa !5
  %991 = load i64, ptr %990, align 8, !tbaa !9
  %992 = load ptr, ptr %25, align 8, !tbaa !5
  %993 = load i64, ptr %992, align 8, !tbaa !9
  %994 = mul nsw i64 %991, %993
  %995 = add nsw i64 %994, 1
  %996 = getelementptr inbounds float, ptr %989, i64 %995
  %997 = load ptr, ptr %25, align 8, !tbaa !5
  %998 = call i32 @slacpy_(ptr noundef @.str.8, ptr noundef %983, ptr noundef %984, ptr noundef %987, ptr noundef %988, ptr noundef %996, ptr noundef %997)
  %999 = load i64, ptr %55, align 8, !tbaa !9
  store i64 %999, ptr %69, align 8, !tbaa !9
  store i64 1, ptr %71, align 8, !tbaa !9
  %1000 = load ptr, ptr %39, align 8, !tbaa !5
  %1001 = load i64, ptr %1000, align 8, !tbaa !9
  %1002 = load ptr, ptr %25, align 8, !tbaa !5
  %1003 = load i64, ptr %1002, align 8, !tbaa !9
  %1004 = shl i64 %1003, 1
  %1005 = load ptr, ptr %25, align 8, !tbaa !5
  %1006 = load i64, ptr %1005, align 8, !tbaa !9
  %1007 = mul nsw i64 %1004, %1006
  %1008 = sub nsw i64 %1001, %1007
  store i64 %1008, ptr %51, align 8, !tbaa !9
  %1009 = load ptr, ptr %25, align 8, !tbaa !5
  %1010 = load ptr, ptr %38, align 8, !tbaa !5
  %1011 = getelementptr inbounds float, ptr %1010, i64 1
  %1012 = load ptr, ptr %25, align 8, !tbaa !5
  %1013 = load ptr, ptr %38, align 8, !tbaa !5
  %1014 = load ptr, ptr %25, align 8, !tbaa !5
  %1015 = load i64, ptr %1014, align 8, !tbaa !9
  %1016 = load ptr, ptr %25, align 8, !tbaa !5
  %1017 = load i64, ptr %1016, align 8, !tbaa !9
  %1018 = mul nsw i64 %1015, %1017
  %1019 = add nsw i64 %1018, 1
  %1020 = getelementptr inbounds float, ptr %1013, i64 %1019
  %1021 = load ptr, ptr %25, align 8, !tbaa !5
  %1022 = getelementptr inbounds [1 x float], ptr %83, i64 0, i64 0
  %1023 = getelementptr inbounds [1 x float], ptr %85, i64 0, i64 0
  %1024 = load ptr, ptr %38, align 8, !tbaa !5
  %1025 = load ptr, ptr %25, align 8, !tbaa !5
  %1026 = load i64, ptr %1025, align 8, !tbaa !9
  %1027 = load ptr, ptr %25, align 8, !tbaa !5
  %1028 = load i64, ptr %1027, align 8, !tbaa !9
  %1029 = mul nsw i64 %1026, %1028
  %1030 = shl i64 %1029, 1
  %1031 = add nsw i64 %1030, 1
  %1032 = getelementptr inbounds float, ptr %1024, i64 %1031
  %1033 = call i32 @stgexc_(ptr noundef @c_false, ptr noundef @c_false, ptr noundef %1009, ptr noundef %1011, ptr noundef %1012, ptr noundef %1020, ptr noundef %1021, ptr noundef %1022, ptr noundef @c__1, ptr noundef %1023, ptr noundef @c__1, ptr noundef %69, ptr noundef %71, ptr noundef %1032, ptr noundef %51, ptr noundef %66)
  %1034 = load i64, ptr %66, align 8, !tbaa !9
  %1035 = icmp sgt i64 %1034, 0
  br i1 %1035, label %1036, label %1040

1036:                                             ; preds = %972
  %1037 = load ptr, ptr %35, align 8, !tbaa !5
  %1038 = load i64, ptr %60, align 8, !tbaa !9
  %1039 = getelementptr inbounds float, ptr %1037, i64 %1038
  store float 0.000000e+00, ptr %1039, align 4, !tbaa !11
  br label %1164

1040:                                             ; preds = %972
  store i64 1, ptr %58, align 8, !tbaa !9
  %1041 = load ptr, ptr %38, align 8, !tbaa !5
  %1042 = getelementptr inbounds float, ptr %1041, i64 2
  %1043 = load float, ptr %1042, align 4, !tbaa !11
  %1044 = fcmp une float %1043, 0.000000e+00
  br i1 %1044, label %1045, label %1046

1045:                                             ; preds = %1040
  store i64 2, ptr %58, align 8, !tbaa !9
  br label %1046

1046:                                             ; preds = %1045, %1040
  %1047 = load ptr, ptr %25, align 8, !tbaa !5
  %1048 = load i64, ptr %1047, align 8, !tbaa !9
  %1049 = load i64, ptr %58, align 8, !tbaa !9
  %1050 = sub nsw i64 %1048, %1049
  store i64 %1050, ptr %59, align 8, !tbaa !9
  %1051 = load i64, ptr %59, align 8, !tbaa !9
  %1052 = icmp eq i64 %1051, 0
  br i1 %1052, label %1053, label %1058

1053:                                             ; preds = %1046
  %1054 = load float, ptr %64, align 4, !tbaa !11
  %1055 = load ptr, ptr %35, align 8, !tbaa !5
  %1056 = load i64, ptr %60, align 8, !tbaa !9
  %1057 = getelementptr inbounds float, ptr %1055, i64 %1056
  store float %1054, ptr %1057, align 4, !tbaa !11
  br label %1163

1058:                                             ; preds = %1046
  %1059 = load ptr, ptr %25, align 8, !tbaa !5
  %1060 = load i64, ptr %1059, align 8, !tbaa !9
  %1061 = load ptr, ptr %25, align 8, !tbaa !5
  %1062 = load i64, ptr %1061, align 8, !tbaa !9
  %1063 = mul nsw i64 %1060, %1062
  %1064 = add nsw i64 %1063, 1
  store i64 %1064, ptr %54, align 8, !tbaa !9
  %1065 = load ptr, ptr %25, align 8, !tbaa !5
  %1066 = load i64, ptr %1065, align 8, !tbaa !9
  %1067 = shl i64 %1066, 1
  %1068 = load ptr, ptr %25, align 8, !tbaa !5
  %1069 = load i64, ptr %1068, align 8, !tbaa !9
  %1070 = mul nsw i64 %1067, %1069
  %1071 = add nsw i64 %1070, 1
  store i64 %1071, ptr %61, align 8, !tbaa !9
  %1072 = load ptr, ptr %39, align 8, !tbaa !5
  %1073 = load i64, ptr %1072, align 8, !tbaa !9
  %1074 = load ptr, ptr %25, align 8, !tbaa !5
  %1075 = load i64, ptr %1074, align 8, !tbaa !9
  %1076 = shl i64 %1075, 1
  %1077 = load ptr, ptr %25, align 8, !tbaa !5
  %1078 = load i64, ptr %1077, align 8, !tbaa !9
  %1079 = mul nsw i64 %1076, %1078
  %1080 = sub nsw i64 %1073, %1079
  store i64 %1080, ptr %51, align 8, !tbaa !9
  %1081 = load ptr, ptr %38, align 8, !tbaa !5
  %1082 = load ptr, ptr %25, align 8, !tbaa !5
  %1083 = load i64, ptr %1082, align 8, !tbaa !9
  %1084 = load i64, ptr %58, align 8, !tbaa !9
  %1085 = mul nsw i64 %1083, %1084
  %1086 = load i64, ptr %58, align 8, !tbaa !9
  %1087 = add nsw i64 %1085, %1086
  %1088 = add nsw i64 %1087, 1
  %1089 = getelementptr inbounds float, ptr %1081, i64 %1088
  %1090 = load ptr, ptr %25, align 8, !tbaa !5
  %1091 = load ptr, ptr %38, align 8, !tbaa !5
  %1092 = getelementptr inbounds float, ptr %1091, i64 1
  %1093 = load ptr, ptr %25, align 8, !tbaa !5
  %1094 = load ptr, ptr %38, align 8, !tbaa !5
  %1095 = load i64, ptr %58, align 8, !tbaa !9
  %1096 = add nsw i64 %1095, 1
  %1097 = getelementptr inbounds float, ptr %1094, i64 %1096
  %1098 = load ptr, ptr %25, align 8, !tbaa !5
  %1099 = load ptr, ptr %38, align 8, !tbaa !5
  %1100 = load ptr, ptr %25, align 8, !tbaa !5
  %1101 = load i64, ptr %1100, align 8, !tbaa !9
  %1102 = load i64, ptr %58, align 8, !tbaa !9
  %1103 = mul nsw i64 %1101, %1102
  %1104 = load i64, ptr %58, align 8, !tbaa !9
  %1105 = add nsw i64 %1103, %1104
  %1106 = load i64, ptr %54, align 8, !tbaa !9
  %1107 = add nsw i64 %1105, %1106
  %1108 = getelementptr inbounds float, ptr %1099, i64 %1107
  %1109 = load ptr, ptr %25, align 8, !tbaa !5
  %1110 = load ptr, ptr %38, align 8, !tbaa !5
  %1111 = load i64, ptr %54, align 8, !tbaa !9
  %1112 = getelementptr inbounds float, ptr %1110, i64 %1111
  %1113 = load ptr, ptr %25, align 8, !tbaa !5
  %1114 = load ptr, ptr %38, align 8, !tbaa !5
  %1115 = load i64, ptr %58, align 8, !tbaa !9
  %1116 = load i64, ptr %54, align 8, !tbaa !9
  %1117 = add nsw i64 %1115, %1116
  %1118 = getelementptr inbounds float, ptr %1114, i64 %1117
  %1119 = load ptr, ptr %25, align 8, !tbaa !5
  %1120 = load ptr, ptr %35, align 8, !tbaa !5
  %1121 = load i64, ptr %60, align 8, !tbaa !9
  %1122 = getelementptr inbounds float, ptr %1120, i64 %1121
  %1123 = load ptr, ptr %38, align 8, !tbaa !5
  %1124 = load i64, ptr %61, align 8, !tbaa !9
  %1125 = add nsw i64 %1124, 1
  %1126 = getelementptr inbounds float, ptr %1123, i64 %1125
  %1127 = load ptr, ptr %40, align 8, !tbaa !5
  %1128 = getelementptr inbounds i64, ptr %1127, i64 1
  %1129 = call i32 @stgsyl_(ptr noundef @.str.7, ptr noundef @c__3, ptr noundef %59, ptr noundef %58, ptr noundef %1089, ptr noundef %1090, ptr noundef %1092, ptr noundef %1093, ptr noundef %1097, ptr noundef %1098, ptr noundef %1108, ptr noundef %1109, ptr noundef %1112, ptr noundef %1113, ptr noundef %1118, ptr noundef %1119, ptr noundef %75, ptr noundef %1122, ptr noundef %1126, ptr noundef %51, ptr noundef %1128, ptr noundef %66)
  %1130 = load i64, ptr %65, align 8, !tbaa !9
  %1131 = icmp ne i64 %1130, 0
  br i1 %1131, label %1132, label %1162

1132:                                             ; preds = %1058
  %1133 = load float, ptr %91, align 4, !tbaa !11
  %1134 = fcmp oge float 1.000000e+00, %1133
  br i1 %1134, label %1135, label %1136

1135:                                             ; preds = %1132
  br label %1138

1136:                                             ; preds = %1132
  %1137 = load float, ptr %91, align 4, !tbaa !11
  br label %1138

1138:                                             ; preds = %1136, %1135
  %1139 = phi float [ 1.000000e+00, %1135 ], [ %1137, %1136 ]
  %1140 = fpext float %1139 to double
  %1141 = load ptr, ptr %35, align 8, !tbaa !5
  %1142 = load i64, ptr %60, align 8, !tbaa !9
  %1143 = getelementptr inbounds float, ptr %1141, i64 %1142
  %1144 = load float, ptr %1143, align 4, !tbaa !11
  %1145 = fpext float %1144 to double
  %1146 = fmul double %1140, %1145
  %1147 = fptrunc double %1146 to float
  store float %1147, ptr %52, align 4, !tbaa !11
  %1148 = load float, ptr %52, align 4, !tbaa !11
  %1149 = load float, ptr %64, align 4, !tbaa !11
  %1150 = fcmp ole float %1148, %1149
  br i1 %1150, label %1151, label %1153

1151:                                             ; preds = %1138
  %1152 = load float, ptr %52, align 4, !tbaa !11
  br label %1155

1153:                                             ; preds = %1138
  %1154 = load float, ptr %64, align 4, !tbaa !11
  br label %1155

1155:                                             ; preds = %1153, %1151
  %1156 = phi float [ %1152, %1151 ], [ %1154, %1153 ]
  %1157 = fpext float %1156 to double
  %1158 = fptrunc double %1157 to float
  %1159 = load ptr, ptr %35, align 8, !tbaa !5
  %1160 = load i64, ptr %60, align 8, !tbaa !9
  %1161 = getelementptr inbounds float, ptr %1159, i64 %1160
  store float %1158, ptr %1161, align 4, !tbaa !11
  br label %1162

1162:                                             ; preds = %1155, %1058
  br label %1163

1163:                                             ; preds = %1162, %1053
  br label %1164

1164:                                             ; preds = %1163, %1036
  %1165 = load i64, ptr %65, align 8, !tbaa !9
  %1166 = icmp ne i64 %1165, 0
  br i1 %1166, label %1167, label %1176

1167:                                             ; preds = %1164
  %1168 = load ptr, ptr %35, align 8, !tbaa !5
  %1169 = load i64, ptr %60, align 8, !tbaa !9
  %1170 = getelementptr inbounds float, ptr %1168, i64 %1169
  %1171 = load float, ptr %1170, align 4, !tbaa !11
  %1172 = load ptr, ptr %35, align 8, !tbaa !5
  %1173 = load i64, ptr %60, align 8, !tbaa !9
  %1174 = add nsw i64 %1173, 1
  %1175 = getelementptr inbounds float, ptr %1172, i64 %1174
  store float %1171, ptr %1175, align 4, !tbaa !11
  br label %1176

1176:                                             ; preds = %1167, %1164
  br label %1177

1177:                                             ; preds = %1176, %795
  %1178 = load i64, ptr %65, align 8, !tbaa !9
  %1179 = icmp ne i64 %1178, 0
  br i1 %1179, label %1180, label %1183

1180:                                             ; preds = %1177
  %1181 = load i64, ptr %60, align 8, !tbaa !9
  %1182 = add nsw i64 %1181, 1
  store i64 %1182, ptr %60, align 8, !tbaa !9
  br label %1183

1183:                                             ; preds = %1180, %1177
  br label %1184

1184:                                             ; preds = %1183, %802, %463, %455, %416
  br label %1185

1185:                                             ; preds = %1184
  %1186 = load i64, ptr %55, align 8, !tbaa !9
  %1187 = add nsw i64 %1186, 1
  store i64 %1187, ptr %55, align 8, !tbaa !9
  br label %409, !llvm.loop !15

1188:                                             ; preds = %409
  %1189 = load i64, ptr %79, align 8, !tbaa !9
  %1190 = sitofp i64 %1189 to float
  %1191 = load ptr, ptr %38, align 8, !tbaa !5
  %1192 = getelementptr inbounds float, ptr %1191, i64 1
  store float %1190, ptr %1192, align 4, !tbaa !11
  store i32 0, ptr %21, align 4
  store i32 1, ptr %94, align 4
  br label %1193

1193:                                             ; preds = %1188, %398, %392, %384
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #5
  %1194 = load i32, ptr %21, align 4
  ret i32 %1194
}

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

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

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

declare double @slamch_(ptr noundef) #2

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

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

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"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 = !{!"float", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b19 = external hidden global float, align 4
@c_b21 = external hidden global float, align 4
@c__2 = external hidden global i64, align 8
@.str.8 = external hidden unnamed_addr constant [5 x i8], align 1
@c_false = external hidden global i64, align 8
@c__3 = external hidden global i64, align 8

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @stgsna_(ptr noundef %0, ptr noundef %1, ptr nocapture noundef readonly %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr nocapture noundef readonly %9, ptr noundef %10, ptr nocapture noundef readonly %11, ptr nocapture noundef writeonly %12, ptr noundef %13, ptr nocapture noundef readonly %14, ptr nocapture noundef %15, ptr noundef %16, ptr nocapture noundef readonly %17, ptr noundef %18, ptr nocapture noundef %19) local_unnamed_addr #0 {
  %21 = alloca i64, align 8
  %22 = alloca i64, align 8
  %23 = alloca float, align 4
  %24 = alloca float, align 4
  %25 = alloca i64, align 8
  %26 = alloca i64, align 8
  %27 = alloca float, align 4
  %28 = alloca i64, align 8
  %29 = alloca float, align 4
  %30 = alloca float, align 4
  %31 = alloca i64, align 8
  %32 = alloca i64, align 8
  %33 = alloca float, align 4
  %34 = alloca float, align 4
  %35 = alloca float, align 4
  %36 = alloca [1 x float], align 4
  %37 = alloca [1 x float], align 4
  %38 = alloca float, align 4
  %39 = alloca float, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %27) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %29) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %30) #6
  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 4, ptr nonnull %33) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %34) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %35) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %36) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %37) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %38) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %39) #6
  %40 = getelementptr inbounds i8, ptr %2, i64 -8
  %41 = load i64, ptr %5, align 8, !tbaa !5
  %42 = xor i64 %41, -1
  %43 = getelementptr inbounds float, ptr %4, i64 %42
  %44 = load i64, ptr %7, align 8, !tbaa !5
  %45 = xor i64 %44, -1
  %46 = getelementptr inbounds float, ptr %6, i64 %45
  %47 = load i64, ptr %9, align 8, !tbaa !5
  %48 = xor i64 %47, -1
  %49 = getelementptr inbounds float, ptr %8, i64 %48
  %50 = load i64, ptr %11, align 8, !tbaa !5
  %51 = xor i64 %50, -1
  %52 = getelementptr inbounds float, ptr %10, i64 %51
  %53 = getelementptr inbounds i8, ptr %12, i64 -4
  %54 = getelementptr inbounds i8, ptr %16, i64 -4
  %55 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #6
  %56 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #6
  %57 = icmp ne i64 %56, 0
  %58 = icmp ne i64 %55, 0
  %59 = select i1 %57, i1 true, i1 %58
  %60 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #6
  %61 = icmp ne i64 %60, 0
  %62 = select i1 %61, i1 true, i1 %58
  %63 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #6
  store i64 0, ptr %19, align 8, !tbaa !5
  %64 = load i64, ptr %17, align 8, !tbaa !5
  %65 = icmp eq i64 %64, -1
  %or.cond = select i1 %59, i1 true, i1 %62
  br i1 %or.cond, label %66, label %.thread.sink.split

66:                                               ; preds = %20
  %67 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #6
  %68 = icmp ne i64 %67, 0
  %69 = icmp ne i64 %63, 0
  %or.cond3 = select i1 %68, i1 true, i1 %69
  br i1 %or.cond3, label %70, label %.thread.sink.split

70:                                               ; preds = %66
  %71 = load i64, ptr %3, align 8, !tbaa !5
  %72 = icmp slt i64 %71, 0
  br i1 %72, label %.thread.sink.split, label %73

73:                                               ; preds = %70
  %74 = load i64, ptr %5, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %71, i64 1)
  %75 = icmp slt i64 %74, %spec.select
  br i1 %75, label %.thread.sink.split, label %76

76:                                               ; preds = %73
  %77 = load i64, ptr %7, align 8, !tbaa !5
  %78 = icmp slt i64 %77, %spec.select
  br i1 %78, label %.thread.sink.split, label %79

79:                                               ; preds = %76
  br i1 %59, label %80, label %.critedge

80:                                               ; preds = %79
  %81 = load i64, ptr %9, align 8, !tbaa !5
  %82 = icmp slt i64 %81, %71
  br i1 %82, label %.thread.sink.split, label %83

83:                                               ; preds = %80
  %84 = load i64, ptr %11, align 8, !tbaa !5
  %85 = icmp slt i64 %84, %71
  br i1 %85, label %.thread.sink.split, label %.critedge

.critedge:                                        ; preds = %79, %83
  br i1 %69, label %86, label %111

86:                                               ; preds = %.critedge
  store i64 0, ptr %15, align 8, !tbaa !5
  %87 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %87, ptr %21, align 8, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %43, i64 4
  %.not484 = icmp slt i64 %87, 1
  br i1 %.not484, label %.loopexit, label %.lr.ph

.lr.ph:                                           ; preds = %86, %108
  %88 = phi i64 [ %109, %108 ], [ 0, %86 ]
  %.0424486 = phi i64 [ %110, %108 ], [ 1, %86 ]
  %.0430485 = phi i64 [ %.1431, %108 ], [ 0, %86 ]
  %.not442 = icmp eq i64 %.0430485, 0
  br i1 %.not442, label %89, label %108

89:                                               ; preds = %.lr.ph
  %90 = load i64, ptr %3, align 8, !tbaa !5
  %91 = icmp slt i64 %.0424486, %90
  br i1 %91, label %92, label %104

92:                                               ; preds = %89
  %93 = mul nsw i64 %.0424486, %41
  %gep = getelementptr float, ptr %invariant.gep, i64 %.0424486
  %94 = getelementptr float, ptr %gep, i64 %93
  %95 = load float, ptr %94, align 4, !tbaa !9
  %96 = fcmp oeq float %95, 0.000000e+00
  %97 = getelementptr inbounds i64, ptr %40, i64 %.0424486
  %98 = load i64, ptr %97, align 8, !tbaa !5
  %.not446 = icmp eq i64 %98, 0
  br i1 %96, label %99, label %100

99:                                               ; preds = %92
  br i1 %.not446, label %108, label %.sink.split

100:                                              ; preds = %92
  br i1 %.not446, label %101, label %.sink.split

101:                                              ; preds = %100
  %102 = getelementptr i64, ptr %2, i64 %.0424486
  %103 = load i64, ptr %102, align 8, !tbaa !5
  %.not445 = icmp eq i64 %103, 0
  br i1 %.not445, label %108, label %.sink.split

104:                                              ; preds = %89
  %105 = getelementptr inbounds i64, ptr %40, i64 %90
  %106 = load i64, ptr %105, align 8, !tbaa !5
  %.not443 = icmp eq i64 %106, 0
  br i1 %.not443, label %108, label %.sink.split

.sink.split:                                      ; preds = %104, %100, %101, %99
  %.sink524 = phi i64 [ 1, %99 ], [ 2, %101 ], [ 2, %100 ], [ 1, %104 ]
  %.1431.ph = phi i64 [ 0, %99 ], [ 1, %101 ], [ 1, %100 ], [ 0, %104 ]
  %107 = add nsw i64 %88, %.sink524
  store i64 %107, ptr %15, align 8, !tbaa !5
  br label %108

108:                                              ; preds = %.sink.split, %.lr.ph, %104, %99, %101
  %109 = phi i64 [ %88, %99 ], [ %88, %101 ], [ %88, %104 ], [ %88, %.lr.ph ], [ %107, %.sink.split ]
  %.1431 = phi i64 [ 0, %99 ], [ 1, %101 ], [ 0, %104 ], [ 0, %.lr.ph ], [ %.1431.ph, %.sink.split ]
  %110 = add nuw i64 %.0424486, 1
  %exitcond.not = icmp eq i64 %.0424486, %87
  br i1 %exitcond.not, label %.loopexitthread-pre-split, label %.lr.ph, !llvm.loop !11

111:                                              ; preds = %.critedge
  store i64 %71, ptr %15, align 8, !tbaa !5
  br label %.loopexitthread-pre-split

.loopexitthread-pre-split:                        ; preds = %108, %111
  %.pr517 = load i64, ptr %3, align 8, !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexitthread-pre-split, %86
  %112 = phi i64 [ %.pr517, %.loopexitthread-pre-split ], [ %87, %86 ]
  %113 = icmp eq i64 %112, 0
  br i1 %113, label %126, label %114

114:                                              ; preds = %.loopexit
  %115 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #6
  %.not440 = icmp eq i64 %115, 0
  br i1 %.not440, label %116, label %118

116:                                              ; preds = %114
  %117 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #6
  %.not441 = icmp eq i64 %117, 0
  br i1 %.not441, label %124, label %118

118:                                              ; preds = %116, %114
  %119 = load i64, ptr %3, align 8, !tbaa !5
  %120 = shl i64 %119, 1
  %121 = add nsw i64 %119, 2
  %122 = mul nsw i64 %120, %121
  %123 = add nsw i64 %122, 16
  br label %126

124:                                              ; preds = %116
  %125 = load i64, ptr %3, align 8, !tbaa !5
  br label %126

126:                                              ; preds = %.loopexit, %118, %124
  %127 = phi i64 [ %119, %118 ], [ %125, %124 ], [ 0, %.loopexit ]
  %.0423 = phi i64 [ %123, %118 ], [ %125, %124 ], [ 1, %.loopexit ]
  %128 = sitofp i64 %.0423 to float
  store float %128, ptr %16, align 4, !tbaa !9
  %129 = load i64, ptr %14, align 8, !tbaa !5
  %130 = load i64, ptr %15, align 8, !tbaa !5
  %131 = icmp slt i64 %129, %130
  br i1 %131, label %.thread.sink.split, label %132

132:                                              ; preds = %126
  %133 = load i64, ptr %17, align 8, !tbaa !5
  %134 = icmp sge i64 %133, %.0423
  %or.cond5 = select i1 %134, i1 true, i1 %65
  br i1 %or.cond5, label %135, label %.thread.sink.split

135:                                              ; preds = %132
  %.pr = load i64, ptr %19, align 8, !tbaa !5
  %.not447 = icmp eq i64 %.pr, 0
  br i1 %.not447, label %139, label %.thread

.thread.sink.split:                               ; preds = %132, %126, %83, %80, %76, %73, %70, %66, %20
  %.sink = phi i64 [ -1, %20 ], [ -2, %66 ], [ -4, %70 ], [ -6, %73 ], [ -8, %76 ], [ -10, %80 ], [ -12, %83 ], [ -15, %126 ], [ -18, %132 ]
  store i64 %.sink, ptr %19, align 8, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %135
  %136 = phi i64 [ %.pr, %135 ], [ %.sink, %.thread.sink.split ]
  %137 = sub nsw i64 0, %136
  store i64 %137, ptr %21, align 8, !tbaa !5
  %138 = call i32 @xerbla_(ptr noundef nonnull @.str.5, ptr noundef nonnull %21) #6
  br label %368

139:                                              ; preds = %135
  %140 = icmp eq i64 %127, 0
  %or.cond525 = select i1 %65, i1 true, i1 %140
  br i1 %or.cond525, label %368, label %141

141:                                              ; preds = %139
  %142 = tail call double @slamch_(ptr noundef nonnull @.str.6) #6
  %143 = tail call double @slamch_(ptr noundef nonnull @.str.3) #6
  %144 = load i64, ptr %3, align 8, !tbaa !5
  %invariant.gep488 = getelementptr i8, ptr %43, i64 4
  %invariant.gep490 = getelementptr i8, ptr %52, i64 4
  %invariant.gep494 = getelementptr i8, ptr %49, i64 4
  %invariant.gep502 = getelementptr i8, ptr %16, i64 4
  %invariant.gep504 = getelementptr i8, ptr %13, i64 4
  %.not448506 = icmp slt i64 %144, 1
  br i1 %.not448506, label %._crit_edge, label %.lr.ph516

.lr.ph516:                                        ; preds = %141
  %145 = fptrunc double %142 to float
  %146 = fpext float %145 to double
  %147 = fdiv double %143, %146
  %148 = fptrunc double %147 to float
  %.not450468 = icmp eq i64 %63, 0
  %149 = getelementptr inbounds i8, ptr %16, i64 8
  %150 = getelementptr inbounds i8, ptr %16, i64 12
  %151 = getelementptr inbounds i8, ptr %16, i64 16
  %152 = getelementptr inbounds i8, ptr %16, i64 20
  %153 = getelementptr inbounds i8, ptr %16, i64 24
  %154 = getelementptr inbounds i8, ptr %16, i64 28
  %155 = fmul float %145, %148
  br label %156

156:                                              ; preds = %.lr.ph516, %366
  %.1425510 = phi i64 [ 1, %.lr.ph516 ], [ %367, %366 ]
  %.0426509 = phi i64 [ 0, %.lr.ph516 ], [ %.1427, %366 ]
  %.0428508 = phi float [ undef, %.lr.ph516 ], [ %.4, %366 ]
  %.2432507 = phi i64 [ 0, %.lr.ph516 ], [ %.4434, %366 ]
  %.not449 = icmp eq i64 %.2432507, 0
  br i1 %.not449, label %157, label %366

157:                                              ; preds = %156
  %158 = load i64, ptr %3, align 8, !tbaa !5
  %159 = icmp slt i64 %.1425510, %158
  br i1 %159, label %160, label %.thread466

160:                                              ; preds = %157
  %161 = mul nsw i64 %.1425510, %41
  %gep489 = getelementptr float, ptr %invariant.gep488, i64 %.1425510
  %162 = getelementptr float, ptr %gep489, i64 %161
  %163 = load float, ptr %162, align 4, !tbaa !9
  %164 = fcmp une float %163, 0.000000e+00
  %165 = zext i1 %164 to i64
  br i1 %.not450468, label %175, label %166

.thread466:                                       ; preds = %157
  br i1 %.not450468, label %.thread475, label %.thread471

166:                                              ; preds = %160
  br i1 %164, label %167, label %.thread471

167:                                              ; preds = %166
  %168 = getelementptr inbounds i64, ptr %40, i64 %.1425510
  %169 = load i64, ptr %168, align 8, !tbaa !5
  %.not453 = icmp eq i64 %169, 0
  br i1 %.not453, label %170, label %175

170:                                              ; preds = %167
  %171 = getelementptr i64, ptr %2, i64 %.1425510
  %172 = load i64, ptr %171, align 8, !tbaa !5
  %.not454 = icmp eq i64 %172, 0
  br i1 %.not454, label %366, label %175

.thread471:                                       ; preds = %.thread466, %166
  %173 = getelementptr inbounds i64, ptr %40, i64 %.1425510
  %174 = load i64, ptr %173, align 8, !tbaa !5
  %.not452 = icmp eq i64 %174, 0
  br i1 %.not452, label %366, label %.thread518

175:                                              ; preds = %170, %167, %160
  %.3433470 = phi i64 [ 1, %170 ], [ 1, %167 ], [ %165, %160 ]
  %176 = add nsw i64 %.0426509, 1
  br i1 %59, label %179, label %254

.thread518:                                       ; preds = %.thread471
  %177 = add nsw i64 %.0426509, 1
  br i1 %59, label %.thread479, label %254

.thread475:                                       ; preds = %.thread466
  %178 = add nsw i64 %.0426509, 1
  br i1 %59, label %.thread479, label %254

179:                                              ; preds = %175
  %.not455 = icmp eq i64 %.3433470, 0
  br i1 %.not455, label %.thread479, label %180

180:                                              ; preds = %179
  %181 = mul nsw i64 %176, %50
  %gep491 = getelementptr float, ptr %invariant.gep490, i64 %181
  %182 = call double @f2c_snrm2(ptr noundef nonnull %3, ptr noundef %gep491, ptr noundef nonnull @c__1) #6
  %183 = fptrunc double %182 to float
  store float %183, ptr %23, align 4, !tbaa !9
  %184 = add nsw i64 %.0426509, 2
  %185 = mul nsw i64 %184, %50
  %gep493 = getelementptr float, ptr %invariant.gep490, i64 %185
  %186 = call double @f2c_snrm2(ptr noundef nonnull %3, ptr noundef %gep493, ptr noundef nonnull @c__1) #6
  %187 = fptrunc double %186 to float
  store float %187, ptr %24, align 4, !tbaa !9
  %188 = call double @slapy2_(ptr noundef nonnull %23, ptr noundef nonnull %24) #6
  %189 = fptrunc double %188 to float
  %190 = mul nsw i64 %176, %47
  %gep495 = getelementptr float, ptr %invariant.gep494, i64 %190
  %191 = call double @f2c_snrm2(ptr noundef nonnull %3, ptr noundef %gep495, ptr noundef nonnull @c__1) #6
  %192 = fptrunc double %191 to float
  store float %192, ptr %23, align 4, !tbaa !9
  %193 = mul nsw i64 %184, %47
  %gep497 = getelementptr float, ptr %invariant.gep494, i64 %193
  %194 = call double @f2c_snrm2(ptr noundef nonnull %3, ptr noundef %gep497, ptr noundef nonnull @c__1) #6
  %195 = fptrunc double %194 to float
  store float %195, ptr %24, align 4, !tbaa !9
  %196 = call double @slapy2_(ptr noundef nonnull %23, ptr noundef nonnull %24) #6
  %197 = fptrunc double %196 to float
  %198 = call i32 @f2c_sgemv(ptr noundef nonnull @.str.7, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef nonnull @c_b19, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef %gep491, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b21, ptr noundef %16, ptr noundef nonnull @c__1) #6
  %199 = call double @f2c_sdot(ptr noundef nonnull %3, ptr noundef %16, ptr noundef nonnull @c__1, ptr noundef %gep495, ptr noundef nonnull @c__1) #6
  %200 = fptrunc double %199 to float
  %201 = call double @f2c_sdot(ptr noundef nonnull %3, ptr noundef %16, ptr noundef nonnull @c__1, ptr noundef %gep497, ptr noundef nonnull @c__1) #6
  %202 = fptrunc double %201 to float
  %203 = call i32 @f2c_sgemv(ptr noundef nonnull @.str.7, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef nonnull @c_b19, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef %gep493, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b21, ptr noundef %16, ptr noundef nonnull @c__1) #6
  %204 = call double @f2c_sdot(ptr noundef nonnull %3, ptr noundef %16, ptr noundef nonnull @c__1, ptr noundef %gep497, ptr noundef nonnull @c__1) #6
  %205 = fptrunc double %204 to float
  %206 = call double @f2c_sdot(ptr noundef nonnull %3, ptr noundef %16, ptr noundef nonnull @c__1, ptr noundef %gep495, ptr noundef nonnull @c__1) #6
  %207 = fptrunc double %206 to float
  %208 = fadd float %200, %205
  store float %208, ptr %29, align 4, !tbaa !9
  %209 = fsub float %207, %202
  store float %209, ptr %34, align 4, !tbaa !9
  %210 = call i32 @f2c_sgemv(ptr noundef nonnull @.str.7, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef nonnull @c_b19, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %gep491, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b21, ptr noundef %16, ptr noundef nonnull @c__1) #6
  %211 = call double @f2c_sdot(ptr noundef nonnull %3, ptr noundef %16, ptr noundef nonnull @c__1, ptr noundef %gep495, ptr noundef nonnull @c__1) #6
  %212 = fptrunc double %211 to float
  %213 = call double @f2c_sdot(ptr noundef nonnull %3, ptr noundef %16, ptr noundef nonnull @c__1, ptr noundef %gep497, ptr noundef nonnull @c__1) #6
  %214 = fptrunc double %213 to float
  %215 = call i32 @f2c_sgemv(ptr noundef nonnull @.str.7, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef nonnull @c_b19, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %gep493, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b21, ptr noundef %16, ptr noundef nonnull @c__1) #6
  %216 = call double @f2c_sdot(ptr noundef nonnull %3, ptr noundef %16, ptr noundef nonnull @c__1, ptr noundef %gep497, ptr noundef nonnull @c__1) #6
  %217 = fptrunc double %216 to float
  %218 = call double @f2c_sdot(ptr noundef nonnull %3, ptr noundef %16, ptr noundef nonnull @c__1, ptr noundef %gep495, ptr noundef nonnull @c__1) #6
  %219 = fptrunc double %218 to float
  %220 = fadd float %212, %217
  store float %220, ptr %30, align 4, !tbaa !9
  %221 = fsub float %219, %214
  store float %221, ptr %35, align 4, !tbaa !9
  %222 = call double @slapy2_(ptr noundef nonnull %29, ptr noundef nonnull %34) #6
  %223 = fptrunc double %222 to float
  store float %223, ptr %29, align 4, !tbaa !9
  %224 = call double @slapy2_(ptr noundef nonnull %30, ptr noundef nonnull %35) #6
  %225 = fptrunc double %224 to float
  store float %225, ptr %30, align 4, !tbaa !9
  %226 = call double @slapy2_(ptr noundef nonnull %29, ptr noundef nonnull %30) #6
  %227 = fptrunc double %226 to float
  %228 = fmul float %189, %197
  %229 = fdiv float %227, %228
  %230 = getelementptr float, ptr %12, i64 %.0426509
  store float %229, ptr %230, align 4, !tbaa !9
  %231 = getelementptr inbounds float, ptr %53, i64 %184
  store float %229, ptr %231, align 4, !tbaa !9
  br label %254

.thread479:                                       ; preds = %.thread518, %.thread475, %179
  %232 = phi i64 [ %176, %179 ], [ %178, %.thread475 ], [ %177, %.thread518 ]
  %233 = mul nsw i64 %232, %50
  %gep499 = getelementptr float, ptr %invariant.gep490, i64 %233
  %234 = call double @f2c_snrm2(ptr noundef nonnull %3, ptr noundef %gep499, ptr noundef nonnull @c__1) #6
  %235 = mul nsw i64 %232, %47
  %gep501 = getelementptr float, ptr %invariant.gep494, i64 %235
  %236 = call double @f2c_snrm2(ptr noundef nonnull %3, ptr noundef %gep501, ptr noundef nonnull @c__1) #6
  %237 = call i32 @f2c_sgemv(ptr noundef nonnull @.str.7, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef nonnull @c_b19, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %gep499, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b21, ptr noundef %16, ptr noundef nonnull @c__1) #6
  %238 = call double @f2c_sdot(ptr noundef nonnull %3, ptr noundef %16, ptr noundef nonnull @c__1, ptr noundef %gep501, ptr noundef nonnull @c__1) #6
  %239 = fptrunc double %238 to float
  store float %239, ptr %29, align 4, !tbaa !9
  %240 = call i32 @f2c_sgemv(ptr noundef nonnull @.str.7, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef nonnull @c_b19, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %gep499, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b21, ptr noundef %16, ptr noundef nonnull @c__1) #6
  %241 = call double @f2c_sdot(ptr noundef nonnull %3, ptr noundef %16, ptr noundef nonnull @c__1, ptr noundef %gep501, ptr noundef nonnull @c__1) #6
  %242 = fptrunc double %241 to float
  store float %242, ptr %30, align 4, !tbaa !9
  %243 = call double @slapy2_(ptr noundef nonnull %29, ptr noundef nonnull %30) #6
  %244 = fptrunc double %243 to float
  %245 = fcmp oeq float %244, 0.000000e+00
  br i1 %245, label %246, label %248

246:                                              ; preds = %.thread479
  %247 = getelementptr float, ptr %12, i64 %.0426509
  store float -1.000000e+00, ptr %247, align 4, !tbaa !9
  br label %254

248:                                              ; preds = %.thread479
  %249 = fptrunc double %236 to float
  %250 = fptrunc double %234 to float
  %251 = fmul float %250, %249
  %252 = fdiv float %244, %251
  %253 = getelementptr float, ptr %12, i64 %.0426509
  store float %252, ptr %253, align 4, !tbaa !9
  br label %254

254:                                              ; preds = %.thread518, %.thread475, %180, %248, %246, %175
  %255 = phi i64 [ %176, %180 ], [ %232, %246 ], [ %232, %248 ], [ %176, %175 ], [ %178, %.thread475 ], [ %177, %.thread518 ]
  %.3433470478 = phi i64 [ 1, %180 ], [ 0, %246 ], [ 0, %248 ], [ %.3433470, %175 ], [ 0, %.thread475 ], [ 0, %.thread518 ]
  %.1429 = phi float [ %227, %180 ], [ %244, %246 ], [ %244, %248 ], [ %.0428508, %175 ], [ %.0428508, %.thread475 ], [ %.0428508, %.thread518 ]
  br i1 %62, label %256, label %.critedge461

256:                                              ; preds = %254
  %257 = load i64, ptr %3, align 8, !tbaa !5
  %258 = icmp eq i64 %257, 1
  br i1 %258, label %259, label %263

259:                                              ; preds = %256
  %260 = call double @slapy2_(ptr noundef %4, ptr noundef %6) #6
  %261 = fptrunc double %260 to float
  %262 = getelementptr float, ptr %13, i64 %.0426509
  store float %261, ptr %262, align 4, !tbaa !9
  br label %366

263:                                              ; preds = %256
  %.not456 = icmp eq i64 %.3433470478, 0
  br i1 %.not456, label %314, label %264

264:                                              ; preds = %263
  %265 = mul nsw i64 %.1425510, %41
  %266 = getelementptr float, ptr %43, i64 %.1425510
  %267 = getelementptr float, ptr %266, i64 %265
  %268 = load float, ptr %267, align 4, !tbaa !9
  store float %268, ptr %16, align 4, !tbaa !9
  %269 = add nuw nsw i64 %.1425510, 1
  %270 = getelementptr float, ptr %43, i64 %269
  %271 = getelementptr float, ptr %270, i64 %265
  %272 = load float, ptr %271, align 4, !tbaa !9
  store float %272, ptr %invariant.gep502, align 4, !tbaa !9
  %273 = mul nsw i64 %269, %41
  %274 = getelementptr float, ptr %266, i64 %273
  %275 = load float, ptr %274, align 4, !tbaa !9
  store float %275, ptr %149, align 4, !tbaa !9
  %276 = getelementptr float, ptr %270, i64 %273
  %277 = load float, ptr %276, align 4, !tbaa !9
  store float %277, ptr %150, align 4, !tbaa !9
  %278 = mul nsw i64 %.1425510, %44
  %279 = getelementptr float, ptr %46, i64 %.1425510
  %280 = getelementptr float, ptr %279, i64 %278
  %281 = load float, ptr %280, align 4, !tbaa !9
  store float %281, ptr %151, align 4, !tbaa !9
  %282 = getelementptr float, ptr %46, i64 %269
  %283 = getelementptr float, ptr %282, i64 %278
  %284 = load float, ptr %283, align 4, !tbaa !9
  store float %284, ptr %152, align 4, !tbaa !9
  %285 = mul nsw i64 %269, %44
  %286 = getelementptr float, ptr %279, i64 %285
  %287 = load float, ptr %286, align 4, !tbaa !9
  store float %287, ptr %153, align 4, !tbaa !9
  %288 = getelementptr float, ptr %282, i64 %285
  %289 = load float, ptr %288, align 4, !tbaa !9
  store float %289, ptr %154, align 4, !tbaa !9
  store float %155, ptr %23, align 4, !tbaa !9
  %290 = call i32 @slag2_(ptr noundef nonnull %16, ptr noundef nonnull @c__2, ptr noundef nonnull %151, ptr noundef nonnull @c__2, ptr noundef nonnull %23, ptr noundef nonnull %27, ptr noundef nonnull %37, ptr noundef nonnull %39, ptr noundef nonnull %36, ptr noundef nonnull %38) #6
  %291 = load float, ptr %39, align 4, !tbaa !9
  %292 = load float, ptr %38, align 4, !tbaa !9
  %293 = fmul float %292, %292
  %294 = call float @llvm.fmuladd.f32(float %291, float %291, float %293)
  %295 = load float, ptr %27, align 4, !tbaa !9
  %296 = call float @llvm.fmuladd.f32(float %295, float %295, float %294)
  %297 = fmul float %296, 2.000000e+00
  %298 = fmul float %295, 4.000000e+00
  %299 = fmul float %295, %298
  %300 = fmul float %292, %299
  %301 = fmul float %292, %300
  %302 = fpext float %297 to double
  %303 = fmul float %301, -4.000000e+00
  %304 = call float @llvm.fmuladd.f32(float %297, float %297, float %303)
  %305 = fpext float %304 to double
  %306 = call double @sqrt(double noundef %305) #6
  %307 = fadd double %306, %302
  %308 = fptrunc double %307 to float
  %309 = fdiv float %301, %308
  %310 = fmul float %308, 5.000000e-01
  %sqrtf = call float @sqrtf(float noundef %310) #4
  store float %sqrtf, ptr %23, align 4, !tbaa !9
  %sqrtf457 = call float @sqrtf(float noundef %309) #4
  store float %sqrtf457, ptr %24, align 4, !tbaa !9
  %311 = load float, ptr %23, align 4
  %312 = fcmp ole float %311, %sqrtf457
  %313 = select i1 %312, float %311, float %sqrtf457
  br label %314

314:                                              ; preds = %264, %263
  %.2 = phi float [ %313, %264 ], [ %.1429, %263 ]
  %315 = call i32 @slacpy_(ptr noundef nonnull @.str.8, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %16, ptr noundef nonnull %3) #6
  %316 = load i64, ptr %3, align 8, !tbaa !5
  %317 = mul nsw i64 %316, %316
  %318 = getelementptr float, ptr %16, i64 %317
  %319 = call i32 @slacpy_(ptr noundef nonnull @.str.8, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %318, ptr noundef nonnull %3) #6
  store i64 %.1425510, ptr %31, align 8, !tbaa !5
  store i64 1, ptr %32, align 8, !tbaa !5
  %320 = load i64, ptr %17, align 8, !tbaa !5
  %321 = load i64, ptr %3, align 8, !tbaa !5
  %322 = shl i64 %321, 1
  %323 = mul nsw i64 %322, %321
  %324 = sub nsw i64 %320, %323
  store i64 %324, ptr %22, align 8, !tbaa !5
  %325 = mul nsw i64 %321, %321
  %326 = getelementptr float, ptr %16, i64 %325
  %.idx = shl i64 %325, 3
  %327 = getelementptr i8, ptr %16, i64 %.idx
  %328 = call i32 @stgexc_(ptr noundef nonnull @c_false, ptr noundef nonnull @c_false, ptr noundef nonnull %3, ptr noundef %16, ptr noundef nonnull %3, ptr noundef %326, ptr noundef nonnull %3, ptr noundef nonnull %36, ptr noundef nonnull @c__1, ptr noundef nonnull %37, ptr noundef nonnull @c__1, ptr noundef nonnull %31, ptr noundef nonnull %32, ptr noundef %327, ptr noundef nonnull %22, ptr noundef nonnull %28) #6
  %329 = load i64, ptr %28, align 8, !tbaa !5
  %330 = icmp sgt i64 %329, 0
  br i1 %330, label %361, label %331

331:                                              ; preds = %314
  store i64 1, ptr %25, align 8, !tbaa !5
  %332 = load float, ptr %invariant.gep502, align 4, !tbaa !9
  %333 = fcmp une float %332, 0.000000e+00
  br i1 %333, label %334, label %335

334:                                              ; preds = %331
  store i64 2, ptr %25, align 8, !tbaa !5
  br label %335

335:                                              ; preds = %334, %331
  %336 = phi i64 [ 2, %334 ], [ 1, %331 ]
  %337 = load i64, ptr %3, align 8, !tbaa !5
  %338 = sub nsw i64 %337, %336
  store i64 %338, ptr %26, align 8, !tbaa !5
  %339 = icmp eq i64 %337, %336
  br i1 %339, label %361, label %340

340:                                              ; preds = %335
  %341 = mul nsw i64 %337, %337
  %342 = add nuw nsw i64 %341, 1
  %343 = shl i64 %337, 1
  %344 = mul nsw i64 %343, %337
  %345 = load i64, ptr %17, align 8, !tbaa !5
  %346 = sub nsw i64 %345, %344
  store i64 %346, ptr %22, align 8, !tbaa !5
  %347 = add i64 %337, 1
  %348 = mul i64 %347, %336
  %349 = getelementptr float, ptr %16, i64 %348
  %350 = getelementptr float, ptr %16, i64 %336
  %351 = getelementptr float, ptr %54, i64 %348
  %352 = getelementptr float, ptr %351, i64 %342
  %353 = getelementptr float, ptr %16, i64 %341
  %354 = getelementptr float, ptr %54, i64 %336
  %355 = getelementptr float, ptr %354, i64 %342
  %356 = getelementptr float, ptr %13, i64 %.0426509
  %gep503 = getelementptr float, ptr %invariant.gep502, i64 %344
  %357 = call i32 @stgsyl_(ptr noundef nonnull @.str.7, ptr noundef nonnull @c__3, ptr noundef nonnull %26, ptr noundef nonnull %25, ptr noundef %349, ptr noundef nonnull %3, ptr noundef nonnull %16, ptr noundef nonnull %3, ptr noundef %350, ptr noundef nonnull %3, ptr noundef %352, ptr noundef nonnull %3, ptr noundef %353, ptr noundef nonnull %3, ptr noundef %355, ptr noundef nonnull %3, ptr noundef nonnull %33, ptr noundef %356, ptr noundef %gep503, ptr noundef nonnull %22, ptr noundef %18, ptr noundef nonnull %28) #6
  br i1 %.not456, label %.critedge461, label %.thread483

.thread483:                                       ; preds = %340
  %358 = load float, ptr %356, align 4, !tbaa !9
  store float %358, ptr %23, align 4, !tbaa !9
  %359 = fcmp ole float %358, %.2
  %360 = select i1 %359, float %358, float %.2
  store float %360, ptr %356, align 4, !tbaa !9
  br label %363

361:                                              ; preds = %335, %314
  %.2.sink = phi float [ 0.000000e+00, %314 ], [ %.2, %335 ]
  %362 = getelementptr float, ptr %13, i64 %.0426509
  store float %.2.sink, ptr %362, align 4, !tbaa !9
  br i1 %.not456, label %.critedge461, label %363

363:                                              ; preds = %.thread483, %361
  %364 = phi float [ %360, %.thread483 ], [ %.2.sink, %361 ]
  %gep505 = getelementptr float, ptr %invariant.gep504, i64 %.0426509
  store float %364, ptr %gep505, align 4, !tbaa !9
  br label %.critedge461

.critedge461:                                     ; preds = %340, %361, %363, %254
  %.3 = phi float [ %.2, %363 ], [ %.2, %361 ], [ %.1429, %254 ], [ %.2, %340 ]
  %.not458 = icmp ne i64 %.3433470478, 0
  %365 = add nsw i64 %.0426509, 2
  %spec.select462 = zext i1 %.not458 to i64
  %spec.select463 = select i1 %.not458, i64 %365, i64 %255
  br label %366

366:                                              ; preds = %.critedge461, %156, %259, %170, %.thread471
  %.4434 = phi i64 [ %.3433470478, %259 ], [ 1, %170 ], [ 0, %.thread471 ], [ 0, %156 ], [ %spec.select462, %.critedge461 ]
  %.4 = phi float [ %.1429, %259 ], [ %.0428508, %170 ], [ %.0428508, %.thread471 ], [ %.0428508, %156 ], [ %.3, %.critedge461 ]
  %.1427 = phi i64 [ %255, %259 ], [ %.0426509, %170 ], [ %.0426509, %.thread471 ], [ %.0426509, %156 ], [ %spec.select463, %.critedge461 ]
  %367 = add nuw nsw i64 %.1425510, 1
  %.not448.not = icmp slt i64 %.1425510, %144
  br i1 %.not448.not, label %156, label %._crit_edge, !llvm.loop !13

._crit_edge:                                      ; preds = %366, %141
  store float %128, ptr %16, align 4, !tbaa !9
  br label %368

368:                                              ; preds = %139, %._crit_edge, %.thread
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %39) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %38) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %37) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %36) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %35) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %34) #6
  call void @llvm.lifetime.end.p0(i64 4, 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
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #6
  ret i32 0
}

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

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

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

declare double @slamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare float @llvm.fmuladd.f32(float, float, float) #3

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @sqrt(double noundef) local_unnamed_addr #4

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

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

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

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

declare float @sqrtf(float) local_unnamed_addr

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.umax.i64(i64, i64) #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 nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { 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 #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 = !{!"float", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}


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