; LLVM IR from OpenMathLib/OpenBLAS :: lapack-netlib/SRC (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 i32, align 4
@.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 i32, align 4
@.str.8 = external hidden unnamed_addr constant [5 x i8], align 1
@c_false = external hidden global i32, align 4
@c__3 = external hidden global i32, align 4

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

149:                                              ; preds = %20
  %150 = load i32, ptr %86, align 4, !tbaa !9
  %151 = icmp ne i32 %150, 0
  br label %152

152:                                              ; preds = %149, %20
  %153 = phi i1 [ true, %20 ], [ %151, %149 ]
  %154 = zext i1 %153 to i32
  store i32 %154, ptr %74, align 4, !tbaa !9
  %155 = load ptr, ptr %21, align 8, !tbaa !5
  %156 = call i32 @lsame_(ptr noundef %155, ptr noundef @.str.2)
  %157 = icmp ne i32 %156, 0
  br i1 %157, label %161, label %158

158:                                              ; preds = %152
  %159 = load i32, ptr %86, align 4, !tbaa !9
  %160 = icmp ne i32 %159, 0
  br label %161

161:                                              ; preds = %158, %152
  %162 = phi i1 [ true, %152 ], [ %160, %158 ]
  %163 = zext i1 %162 to i32
  store i32 %163, ptr %87, align 4, !tbaa !9
  %164 = load ptr, ptr %22, align 8, !tbaa !5
  %165 = call i32 @lsame_(ptr noundef %164, ptr noundef @.str.3)
  store i32 %165, ptr %88, align 4, !tbaa !9
  %166 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 0, ptr %166, align 4, !tbaa !9
  %167 = load ptr, ptr %38, align 8, !tbaa !5
  %168 = load i32, ptr %167, align 4, !tbaa !9
  %169 = icmp eq i32 %168, -1
  %170 = zext i1 %169 to i32
  store i32 %170, ptr %91, align 4, !tbaa !9
  %171 = load i32, ptr %74, align 4, !tbaa !9
  %172 = icmp ne i32 %171, 0
  br i1 %172, label %178, label %173

173:                                              ; preds = %161
  %174 = load i32, ptr %87, align 4, !tbaa !9
  %175 = icmp ne i32 %174, 0
  br i1 %175, label %178, label %176

176:                                              ; preds = %173
  %177 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -1, ptr %177, align 4, !tbaa !9
  br label %389

178:                                              ; preds = %173, %161
  %179 = load ptr, ptr %22, align 8, !tbaa !5
  %180 = call i32 @lsame_(ptr noundef %179, ptr noundef @.str.4)
  %181 = icmp ne i32 %180, 0
  br i1 %181, label %187, label %182

182:                                              ; preds = %178
  %183 = load i32, ptr %88, align 4, !tbaa !9
  %184 = icmp ne i32 %183, 0
  br i1 %184, label %187, label %185

185:                                              ; preds = %182
  %186 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -2, ptr %186, align 4, !tbaa !9
  br label %388

187:                                              ; preds = %182, %178
  %188 = load ptr, ptr %24, align 8, !tbaa !5
  %189 = load i32, ptr %188, align 4, !tbaa !9
  %190 = icmp slt i32 %189, 0
  br i1 %190, label %191, label %193

191:                                              ; preds = %187
  %192 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -4, ptr %192, align 4, !tbaa !9
  br label %387

193:                                              ; preds = %187
  %194 = load ptr, ptr %26, align 8, !tbaa !5
  %195 = load i32, ptr %194, align 4, !tbaa !9
  %196 = load ptr, ptr %24, align 8, !tbaa !5
  %197 = load i32, ptr %196, align 4, !tbaa !9
  %198 = icmp sge i32 1, %197
  br i1 %198, label %199, label %200

199:                                              ; preds = %193
  br label %203

200:                                              ; preds = %193
  %201 = load ptr, ptr %24, align 8, !tbaa !5
  %202 = load i32, ptr %201, align 4, !tbaa !9
  br label %203

203:                                              ; preds = %200, %199
  %204 = phi i32 [ 1, %199 ], [ %202, %200 ]
  %205 = icmp slt i32 %195, %204
  br i1 %205, label %206, label %208

206:                                              ; preds = %203
  %207 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -6, ptr %207, align 4, !tbaa !9
  br label %386

208:                                              ; preds = %203
  %209 = load ptr, ptr %28, align 8, !tbaa !5
  %210 = load i32, ptr %209, align 4, !tbaa !9
  %211 = load ptr, ptr %24, align 8, !tbaa !5
  %212 = load i32, ptr %211, align 4, !tbaa !9
  %213 = icmp sge i32 1, %212
  br i1 %213, label %214, label %215

214:                                              ; preds = %208
  br label %218

215:                                              ; preds = %208
  %216 = load ptr, ptr %24, align 8, !tbaa !5
  %217 = load i32, ptr %216, align 4, !tbaa !9
  br label %218

218:                                              ; preds = %215, %214
  %219 = phi i32 [ 1, %214 ], [ %217, %215 ]
  %220 = icmp slt i32 %210, %219
  br i1 %220, label %221, label %223

221:                                              ; preds = %218
  %222 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -8, ptr %222, align 4, !tbaa !9
  br label %385

223:                                              ; preds = %218
  %224 = load i32, ptr %74, align 4, !tbaa !9
  %225 = icmp ne i32 %224, 0
  br i1 %225, label %226, label %234

226:                                              ; preds = %223
  %227 = load ptr, ptr %30, align 8, !tbaa !5
  %228 = load i32, ptr %227, align 4, !tbaa !9
  %229 = load ptr, ptr %24, align 8, !tbaa !5
  %230 = load i32, ptr %229, align 4, !tbaa !9
  %231 = icmp slt i32 %228, %230
  br i1 %231, label %232, label %234

232:                                              ; preds = %226
  %233 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -10, ptr %233, align 4, !tbaa !9
  br label %384

234:                                              ; preds = %226, %223
  %235 = load i32, ptr %74, align 4, !tbaa !9
  %236 = icmp ne i32 %235, 0
  br i1 %236, label %237, label %245

237:                                              ; preds = %234
  %238 = load ptr, ptr %32, align 8, !tbaa !5
  %239 = load i32, ptr %238, align 4, !tbaa !9
  %240 = load ptr, ptr %24, align 8, !tbaa !5
  %241 = load i32, ptr %240, align 4, !tbaa !9
  %242 = icmp slt i32 %239, %241
  br i1 %242, label %243, label %245

243:                                              ; preds = %237
  %244 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -12, ptr %244, align 4, !tbaa !9
  br label %383

245:                                              ; preds = %237, %234
  %246 = load i32, ptr %88, align 4, !tbaa !9
  %247 = icmp ne i32 %246, 0
  br i1 %247, label %248, label %329

248:                                              ; preds = %245
  %249 = load ptr, ptr %36, align 8, !tbaa !5
  store i32 0, ptr %249, align 4, !tbaa !9
  store i32 0, ptr %55, align 4, !tbaa !9
  %250 = load ptr, ptr %24, align 8, !tbaa !5
  %251 = load i32, ptr %250, align 4, !tbaa !9
  store i32 %251, ptr %49, align 4, !tbaa !9
  store i32 1, ptr %66, align 4, !tbaa !9
  br label %252

252:                                              ; preds = %325, %248
  %253 = load i32, ptr %66, align 4, !tbaa !9
  %254 = load i32, ptr %49, align 4, !tbaa !9
  %255 = icmp sle i32 %253, %254
  br i1 %255, label %256, label %328

256:                                              ; preds = %252
  %257 = load i32, ptr %55, align 4, !tbaa !9
  %258 = icmp ne i32 %257, 0
  br i1 %258, label %259, label %260

259:                                              ; preds = %256
  store i32 0, ptr %55, align 4, !tbaa !9
  br label %324

260:                                              ; preds = %256
  %261 = load i32, ptr %66, align 4, !tbaa !9
  %262 = load ptr, ptr %24, align 8, !tbaa !5
  %263 = load i32, ptr %262, align 4, !tbaa !9
  %264 = icmp slt i32 %261, %263
  br i1 %264, label %265, label %310

265:                                              ; preds = %260
  %266 = load ptr, ptr %25, align 8, !tbaa !5
  %267 = load i32, ptr %66, align 4, !tbaa !9
  %268 = add nsw i32 %267, 1
  %269 = load i32, ptr %66, align 4, !tbaa !9
  %270 = load i32, ptr %41, align 4, !tbaa !9
  %271 = mul nsw i32 %269, %270
  %272 = add nsw i32 %268, %271
  %273 = sext i32 %272 to i64
  %274 = getelementptr inbounds float, ptr %266, i64 %273
  %275 = load float, ptr %274, align 4, !tbaa !11
  %276 = fcmp oeq float %275, 0.000000e+00
  br i1 %276, label %277, label %289

277:                                              ; preds = %265
  %278 = load ptr, ptr %23, align 8, !tbaa !5
  %279 = load i32, ptr %66, align 4, !tbaa !9
  %280 = sext i32 %279 to i64
  %281 = getelementptr inbounds i32, ptr %278, i64 %280
  %282 = load i32, ptr %281, align 4, !tbaa !9
  %283 = icmp ne i32 %282, 0
  br i1 %283, label %284, label %288

284:                                              ; preds = %277
  %285 = load ptr, ptr %36, align 8, !tbaa !5
  %286 = load i32, ptr %285, align 4, !tbaa !9
  %287 = add nsw i32 %286, 1
  store i32 %287, ptr %285, align 4, !tbaa !9
  br label %288

288:                                              ; preds = %284, %277
  br label %309

289:                                              ; preds = %265
  store i32 1, ptr %55, align 4, !tbaa !9
  %290 = load ptr, ptr %23, align 8, !tbaa !5
  %291 = load i32, ptr %66, align 4, !tbaa !9
  %292 = sext i32 %291 to i64
  %293 = getelementptr inbounds i32, ptr %290, i64 %292
  %294 = load i32, ptr %293, align 4, !tbaa !9
  %295 = icmp ne i32 %294, 0
  br i1 %295, label %304, label %296

296:                                              ; preds = %289
  %297 = load ptr, ptr %23, align 8, !tbaa !5
  %298 = load i32, ptr %66, align 4, !tbaa !9
  %299 = add nsw i32 %298, 1
  %300 = sext i32 %299 to i64
  %301 = getelementptr inbounds i32, ptr %297, i64 %300
  %302 = load i32, ptr %301, align 4, !tbaa !9
  %303 = icmp ne i32 %302, 0
  br i1 %303, label %304, label %308

304:                                              ; preds = %296, %289
  %305 = load ptr, ptr %36, align 8, !tbaa !5
  %306 = load i32, ptr %305, align 4, !tbaa !9
  %307 = add nsw i32 %306, 2
  store i32 %307, ptr %305, align 4, !tbaa !9
  br label %308

308:                                              ; preds = %304, %296
  br label %309

309:                                              ; preds = %308, %288
  br label %323

310:                                              ; preds = %260
  %311 = load ptr, ptr %23, align 8, !tbaa !5
  %312 = load ptr, ptr %24, align 8, !tbaa !5
  %313 = load i32, ptr %312, align 4, !tbaa !9
  %314 = sext i32 %313 to i64
  %315 = getelementptr inbounds i32, ptr %311, i64 %314
  %316 = load i32, ptr %315, align 4, !tbaa !9
  %317 = icmp ne i32 %316, 0
  br i1 %317, label %318, label %322

318:                                              ; preds = %310
  %319 = load ptr, ptr %36, align 8, !tbaa !5
  %320 = load i32, ptr %319, align 4, !tbaa !9
  %321 = add nsw i32 %320, 1
  store i32 %321, ptr %319, align 4, !tbaa !9
  br label %322

322:                                              ; preds = %318, %310
  br label %323

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

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

325:                                              ; preds = %324
  %326 = load i32, ptr %66, align 4, !tbaa !9
  %327 = add nsw i32 %326, 1
  store i32 %327, ptr %66, align 4, !tbaa !9
  br label %252, !llvm.loop !13

328:                                              ; preds = %252
  br label %333

329:                                              ; preds = %245
  %330 = load ptr, ptr %24, align 8, !tbaa !5
  %331 = load i32, ptr %330, align 4, !tbaa !9
  %332 = load ptr, ptr %36, align 8, !tbaa !5
  store i32 %331, ptr %332, align 4, !tbaa !9
  br label %333

333:                                              ; preds = %329, %328
  %334 = load ptr, ptr %24, align 8, !tbaa !5
  %335 = load i32, ptr %334, align 4, !tbaa !9
  %336 = icmp eq i32 %335, 0
  br i1 %336, label %337, label %338

337:                                              ; preds = %333
  store i32 1, ptr %73, align 4, !tbaa !9
  br label %359

338:                                              ; preds = %333
  %339 = load ptr, ptr %21, align 8, !tbaa !5
  %340 = call i32 @lsame_(ptr noundef %339, ptr noundef @.str.2)
  %341 = icmp ne i32 %340, 0
  br i1 %341, label %346, label %342

342:                                              ; preds = %338
  %343 = load ptr, ptr %21, align 8, !tbaa !5
  %344 = call i32 @lsame_(ptr noundef %343, ptr noundef @.str)
  %345 = icmp ne i32 %344, 0
  br i1 %345, label %346, label %355

346:                                              ; preds = %342, %338
  %347 = load ptr, ptr %24, align 8, !tbaa !5
  %348 = load i32, ptr %347, align 4, !tbaa !9
  %349 = shl i32 %348, 1
  %350 = load ptr, ptr %24, align 8, !tbaa !5
  %351 = load i32, ptr %350, align 4, !tbaa !9
  %352 = add nsw i32 %351, 2
  %353 = mul nsw i32 %349, %352
  %354 = add nsw i32 %353, 16
  store i32 %354, ptr %73, align 4, !tbaa !9
  br label %358

355:                                              ; preds = %342
  %356 = load ptr, ptr %24, align 8, !tbaa !5
  %357 = load i32, ptr %356, align 4, !tbaa !9
  store i32 %357, ptr %73, align 4, !tbaa !9
  br label %358

358:                                              ; preds = %355, %346
  br label %359

359:                                              ; preds = %358, %337
  %360 = load i32, ptr %73, align 4, !tbaa !9
  %361 = sitofp i32 %360 to float
  %362 = load ptr, ptr %37, align 8, !tbaa !5
  %363 = getelementptr inbounds float, ptr %362, i64 1
  store float %361, ptr %363, align 4, !tbaa !11
  %364 = load ptr, ptr %35, align 8, !tbaa !5
  %365 = load i32, ptr %364, align 4, !tbaa !9
  %366 = load ptr, ptr %36, align 8, !tbaa !5
  %367 = load i32, ptr %366, align 4, !tbaa !9
  %368 = icmp slt i32 %365, %367
  br i1 %368, label %369, label %371

369:                                              ; preds = %359
  %370 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -15, ptr %370, align 4, !tbaa !9
  br label %382

371:                                              ; preds = %359
  %372 = load ptr, ptr %38, align 8, !tbaa !5
  %373 = load i32, ptr %372, align 4, !tbaa !9
  %374 = load i32, ptr %73, align 4, !tbaa !9
  %375 = icmp slt i32 %373, %374
  br i1 %375, label %376, label %381

376:                                              ; preds = %371
  %377 = load i32, ptr %91, align 4, !tbaa !9
  %378 = icmp ne i32 %377, 0
  br i1 %378, label %381, label %379

379:                                              ; preds = %376
  %380 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -18, ptr %380, align 4, !tbaa !9
  br label %381

381:                                              ; preds = %379, %376, %371
  br label %382

382:                                              ; preds = %381, %369
  br label %383

383:                                              ; preds = %382, %243
  br label %384

384:                                              ; preds = %383, %232
  br label %385

385:                                              ; preds = %384, %221
  br label %386

386:                                              ; preds = %385, %206
  br label %387

387:                                              ; preds = %386, %191
  br label %388

388:                                              ; preds = %387, %185
  br label %389

389:                                              ; preds = %388, %176
  %390 = load ptr, ptr %40, align 8, !tbaa !5
  %391 = load i32, ptr %390, align 4, !tbaa !9
  %392 = icmp ne i32 %391, 0
  br i1 %392, label %393, label %398

393:                                              ; preds = %389
  %394 = load ptr, ptr %40, align 8, !tbaa !5
  %395 = load i32, ptr %394, align 4, !tbaa !9
  %396 = sub nsw i32 0, %395
  store i32 %396, ptr %49, align 4, !tbaa !9
  %397 = call i32 @xerbla_(ptr noundef @.str.5, ptr noundef %49, i32 noundef 6)
  store i32 1, ptr %93, align 4
  br label %1223

398:                                              ; preds = %389
  %399 = load i32, ptr %91, align 4, !tbaa !9
  %400 = icmp ne i32 %399, 0
  br i1 %400, label %401, label %402

401:                                              ; preds = %398
  store i32 1, ptr %93, align 4
  br label %1223

402:                                              ; preds = %398
  br label %403

403:                                              ; preds = %402
  %404 = load ptr, ptr %24, align 8, !tbaa !5
  %405 = load i32, ptr %404, align 4, !tbaa !9
  %406 = icmp eq i32 %405, 0
  br i1 %406, label %407, label %408

407:                                              ; preds = %403
  store i32 1, ptr %93, align 4
  br label %1223

408:                                              ; preds = %403
  %409 = call float @slamch_(ptr noundef @.str.6)
  store float %409, ptr %92, align 4, !tbaa !11
  %410 = call float @slamch_(ptr noundef @.str.3)
  %411 = load float, ptr %92, align 4, !tbaa !11
  %412 = fdiv float %410, %411
  store float %412, ptr %90, align 4, !tbaa !11
  store i32 0, ptr %82, align 4, !tbaa !9
  store i32 0, ptr %55, align 4, !tbaa !9
  %413 = load ptr, ptr %24, align 8, !tbaa !5
  %414 = load i32, ptr %413, align 4, !tbaa !9
  store i32 %414, ptr %49, align 4, !tbaa !9
  store i32 1, ptr %66, align 4, !tbaa !9
  br label %415

415:                                              ; preds = %1215, %408
  %416 = load i32, ptr %66, align 4, !tbaa !9
  %417 = load i32, ptr %49, align 4, !tbaa !9
  %418 = icmp sle i32 %416, %417
  br i1 %418, label %419, label %1218

419:                                              ; preds = %415
  %420 = load i32, ptr %55, align 4, !tbaa !9
  %421 = icmp ne i32 %420, 0
  br i1 %421, label %422, label %423

422:                                              ; preds = %419
  store i32 0, ptr %55, align 4, !tbaa !9
  br label %1214

423:                                              ; preds = %419
  %424 = load i32, ptr %66, align 4, !tbaa !9
  %425 = load ptr, ptr %24, align 8, !tbaa !5
  %426 = load i32, ptr %425, align 4, !tbaa !9
  %427 = icmp slt i32 %424, %426
  br i1 %427, label %428, label %441

428:                                              ; preds = %423
  %429 = load ptr, ptr %25, align 8, !tbaa !5
  %430 = load i32, ptr %66, align 4, !tbaa !9
  %431 = add nsw i32 %430, 1
  %432 = load i32, ptr %66, align 4, !tbaa !9
  %433 = load i32, ptr %41, align 4, !tbaa !9
  %434 = mul nsw i32 %432, %433
  %435 = add nsw i32 %431, %434
  %436 = sext i32 %435 to i64
  %437 = getelementptr inbounds float, ptr %429, i64 %436
  %438 = load float, ptr %437, align 4, !tbaa !11
  %439 = fcmp une float %438, 0.000000e+00
  %440 = zext i1 %439 to i32
  store i32 %440, ptr %55, align 4, !tbaa !9
  br label %441

441:                                              ; preds = %428, %423
  br label %442

442:                                              ; preds = %441
  %443 = load i32, ptr %88, align 4, !tbaa !9
  %444 = icmp ne i32 %443, 0
  br i1 %444, label %445, label %475

445:                                              ; preds = %442
  %446 = load i32, ptr %55, align 4, !tbaa !9
  %447 = icmp ne i32 %446, 0
  br i1 %447, label %448, label %465

448:                                              ; preds = %445
  %449 = load ptr, ptr %23, align 8, !tbaa !5
  %450 = load i32, ptr %66, align 4, !tbaa !9
  %451 = sext i32 %450 to i64
  %452 = getelementptr inbounds i32, ptr %449, i64 %451
  %453 = load i32, ptr %452, align 4, !tbaa !9
  %454 = icmp ne i32 %453, 0
  br i1 %454, label %464, label %455

455:                                              ; preds = %448
  %456 = load ptr, ptr %23, align 8, !tbaa !5
  %457 = load i32, ptr %66, align 4, !tbaa !9
  %458 = add nsw i32 %457, 1
  %459 = sext i32 %458 to i64
  %460 = getelementptr inbounds i32, ptr %456, i64 %459
  %461 = load i32, ptr %460, align 4, !tbaa !9
  %462 = icmp ne i32 %461, 0
  br i1 %462, label %464, label %463

463:                                              ; preds = %455
  br label %1214

464:                                              ; preds = %455, %448
  br label %474

465:                                              ; preds = %445
  %466 = load ptr, ptr %23, align 8, !tbaa !5
  %467 = load i32, ptr %66, align 4, !tbaa !9
  %468 = sext i32 %467 to i64
  %469 = getelementptr inbounds i32, ptr %466, i64 %468
  %470 = load i32, ptr %469, align 4, !tbaa !9
  %471 = icmp ne i32 %470, 0
  br i1 %471, label %473, label %472

472:                                              ; preds = %465
  br label %1214

473:                                              ; preds = %465
  br label %474

474:                                              ; preds = %473, %464
  br label %475

475:                                              ; preds = %474, %442
  %476 = load i32, ptr %82, align 4, !tbaa !9
  %477 = add nsw i32 %476, 1
  store i32 %477, ptr %82, align 4, !tbaa !9
  %478 = load i32, ptr %74, align 4, !tbaa !9
  %479 = icmp ne i32 %478, 0
  br i1 %479, label %480, label %809

480:                                              ; preds = %475
  %481 = load i32, ptr %55, align 4, !tbaa !9
  %482 = icmp ne i32 %481, 0
  br i1 %482, label %483, label %716

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

716:                                              ; preds = %480
  %717 = load ptr, ptr %24, align 8, !tbaa !5
  %718 = load ptr, ptr %31, align 8, !tbaa !5
  %719 = load i32, ptr %82, align 4, !tbaa !9
  %720 = load i32, ptr %47, align 4, !tbaa !9
  %721 = mul nsw i32 %719, %720
  %722 = add nsw i32 %721, 1
  %723 = sext i32 %722 to i64
  %724 = getelementptr inbounds float, ptr %718, i64 %723
  %725 = call float @snrm2_(ptr noundef %717, ptr noundef %724, ptr noundef @c__1)
  store float %725, ptr %62, align 4, !tbaa !11
  %726 = load ptr, ptr %24, align 8, !tbaa !5
  %727 = load ptr, ptr %29, align 8, !tbaa !5
  %728 = load i32, ptr %82, align 4, !tbaa !9
  %729 = load i32, ptr %45, align 4, !tbaa !9
  %730 = mul nsw i32 %728, %729
  %731 = add nsw i32 %730, 1
  %732 = sext i32 %731 to i64
  %733 = getelementptr inbounds float, ptr %727, i64 %732
  %734 = call float @snrm2_(ptr noundef %726, ptr noundef %733, ptr noundef @c__1)
  store float %734, ptr %60, align 4, !tbaa !11
  %735 = load ptr, ptr %24, align 8, !tbaa !5
  %736 = load ptr, ptr %24, align 8, !tbaa !5
  %737 = load ptr, ptr %25, align 8, !tbaa !5
  %738 = load i32, ptr %42, align 4, !tbaa !9
  %739 = sext i32 %738 to i64
  %740 = getelementptr inbounds float, ptr %737, i64 %739
  %741 = load ptr, ptr %26, align 8, !tbaa !5
  %742 = load ptr, ptr %31, align 8, !tbaa !5
  %743 = load i32, ptr %82, align 4, !tbaa !9
  %744 = load i32, ptr %47, align 4, !tbaa !9
  %745 = mul nsw i32 %743, %744
  %746 = add nsw i32 %745, 1
  %747 = sext i32 %746 to i64
  %748 = getelementptr inbounds float, ptr %742, i64 %747
  %749 = load ptr, ptr %37, align 8, !tbaa !5
  %750 = getelementptr inbounds float, ptr %749, i64 1
  call void @sgemv_(ptr noundef @.str.7, ptr noundef %735, ptr noundef %736, ptr noundef @c_b19, ptr noundef %740, ptr noundef %741, ptr noundef %748, ptr noundef @c__1, ptr noundef @c_b21, ptr noundef %750, ptr noundef @c__1)
  %751 = load ptr, ptr %24, align 8, !tbaa !5
  %752 = load ptr, ptr %37, align 8, !tbaa !5
  %753 = getelementptr inbounds float, ptr %752, i64 1
  %754 = load ptr, ptr %29, align 8, !tbaa !5
  %755 = load i32, ptr %82, align 4, !tbaa !9
  %756 = load i32, ptr %45, align 4, !tbaa !9
  %757 = mul nsw i32 %755, %756
  %758 = add nsw i32 %757, 1
  %759 = sext i32 %758 to i64
  %760 = getelementptr inbounds float, ptr %754, i64 %759
  %761 = call float @sdot_(ptr noundef %751, ptr noundef %753, ptr noundef @c__1, ptr noundef %760, ptr noundef @c__1)
  store float %761, ptr %57, align 4, !tbaa !11
  %762 = load ptr, ptr %24, align 8, !tbaa !5
  %763 = load ptr, ptr %24, align 8, !tbaa !5
  %764 = load ptr, ptr %27, align 8, !tbaa !5
  %765 = load i32, ptr %44, align 4, !tbaa !9
  %766 = sext i32 %765 to i64
  %767 = getelementptr inbounds float, ptr %764, i64 %766
  %768 = load ptr, ptr %28, align 8, !tbaa !5
  %769 = load ptr, ptr %31, align 8, !tbaa !5
  %770 = load i32, ptr %82, align 4, !tbaa !9
  %771 = load i32, ptr %47, align 4, !tbaa !9
  %772 = mul nsw i32 %770, %771
  %773 = add nsw i32 %772, 1
  %774 = sext i32 %773 to i64
  %775 = getelementptr inbounds float, ptr %769, i64 %774
  %776 = load ptr, ptr %37, align 8, !tbaa !5
  %777 = getelementptr inbounds float, ptr %776, i64 1
  call void @sgemv_(ptr noundef @.str.7, ptr noundef %762, ptr noundef %763, ptr noundef @c_b19, ptr noundef %767, ptr noundef %768, ptr noundef %775, ptr noundef @c__1, ptr noundef @c_b21, ptr noundef %777, ptr noundef @c__1)
  %778 = load ptr, ptr %24, align 8, !tbaa !5
  %779 = load ptr, ptr %37, align 8, !tbaa !5
  %780 = getelementptr inbounds float, ptr %779, i64 1
  %781 = load ptr, ptr %29, align 8, !tbaa !5
  %782 = load i32, ptr %82, align 4, !tbaa !9
  %783 = load i32, ptr %45, align 4, !tbaa !9
  %784 = mul nsw i32 %782, %783
  %785 = add nsw i32 %784, 1
  %786 = sext i32 %785 to i64
  %787 = getelementptr inbounds float, ptr %781, i64 %786
  %788 = call float @sdot_(ptr noundef %778, ptr noundef %780, ptr noundef @c__1, ptr noundef %787, ptr noundef @c__1)
  store float %788, ptr %58, align 4, !tbaa !11
  %789 = call float @slapy2_(ptr noundef %57, ptr noundef %58)
  store float %789, ptr %54, align 4, !tbaa !11
  %790 = load float, ptr %54, align 4, !tbaa !11
  %791 = fcmp oeq float %790, 0.000000e+00
  br i1 %791, label %792, label %797

792:                                              ; preds = %716
  %793 = load ptr, ptr %33, align 8, !tbaa !5
  %794 = load i32, ptr %82, align 4, !tbaa !9
  %795 = sext i32 %794 to i64
  %796 = getelementptr inbounds float, ptr %793, i64 %795
  store float -1.000000e+00, ptr %796, align 4, !tbaa !11
  br label %807

797:                                              ; preds = %716
  %798 = load float, ptr %54, align 4, !tbaa !11
  %799 = load float, ptr %62, align 4, !tbaa !11
  %800 = load float, ptr %60, align 4, !tbaa !11
  %801 = fmul float %799, %800
  %802 = fdiv float %798, %801
  %803 = load ptr, ptr %33, align 8, !tbaa !5
  %804 = load i32, ptr %82, align 4, !tbaa !9
  %805 = sext i32 %804 to i64
  %806 = getelementptr inbounds float, ptr %803, i64 %805
  store float %802, ptr %806, align 4, !tbaa !11
  br label %807

807:                                              ; preds = %797, %792
  br label %808

808:                                              ; preds = %807, %483
  br label %809

809:                                              ; preds = %808, %475
  %810 = load i32, ptr %87, align 4, !tbaa !9
  %811 = icmp ne i32 %810, 0
  br i1 %811, label %812, label %1207

812:                                              ; preds = %809
  %813 = load ptr, ptr %24, align 8, !tbaa !5
  %814 = load i32, ptr %813, align 4, !tbaa !9
  %815 = icmp eq i32 %814, 1
  br i1 %815, label %816, label %832

816:                                              ; preds = %812
  %817 = load ptr, ptr %25, align 8, !tbaa !5
  %818 = load i32, ptr %41, align 4, !tbaa !9
  %819 = add nsw i32 %818, 1
  %820 = sext i32 %819 to i64
  %821 = getelementptr inbounds float, ptr %817, i64 %820
  %822 = load ptr, ptr %27, align 8, !tbaa !5
  %823 = load i32, ptr %43, align 4, !tbaa !9
  %824 = add nsw i32 %823, 1
  %825 = sext i32 %824 to i64
  %826 = getelementptr inbounds float, ptr %822, i64 %825
  %827 = call float @slapy2_(ptr noundef %821, ptr noundef %826)
  %828 = load ptr, ptr %34, align 8, !tbaa !5
  %829 = load i32, ptr %82, align 4, !tbaa !9
  %830 = sext i32 %829 to i64
  %831 = getelementptr inbounds float, ptr %828, i64 %830
  store float %827, ptr %831, align 4, !tbaa !11
  br label %1214

832:                                              ; preds = %812
  %833 = load i32, ptr %55, align 4, !tbaa !9
  %834 = icmp ne i32 %833, 0
  br i1 %834, label %835, label %993

835:                                              ; preds = %832
  %836 = load ptr, ptr %25, align 8, !tbaa !5
  %837 = load i32, ptr %66, align 4, !tbaa !9
  %838 = load i32, ptr %66, align 4, !tbaa !9
  %839 = load i32, ptr %41, align 4, !tbaa !9
  %840 = mul nsw i32 %838, %839
  %841 = add nsw i32 %837, %840
  %842 = sext i32 %841 to i64
  %843 = getelementptr inbounds float, ptr %836, i64 %842
  %844 = load float, ptr %843, align 4, !tbaa !11
  %845 = load ptr, ptr %37, align 8, !tbaa !5
  %846 = getelementptr inbounds float, ptr %845, i64 1
  store float %844, ptr %846, align 4, !tbaa !11
  %847 = load ptr, ptr %25, align 8, !tbaa !5
  %848 = load i32, ptr %66, align 4, !tbaa !9
  %849 = add nsw i32 %848, 1
  %850 = load i32, ptr %66, align 4, !tbaa !9
  %851 = load i32, ptr %41, align 4, !tbaa !9
  %852 = mul nsw i32 %850, %851
  %853 = add nsw i32 %849, %852
  %854 = sext i32 %853 to i64
  %855 = getelementptr inbounds float, ptr %847, i64 %854
  %856 = load float, ptr %855, align 4, !tbaa !11
  %857 = load ptr, ptr %37, align 8, !tbaa !5
  %858 = getelementptr inbounds float, ptr %857, i64 2
  store float %856, ptr %858, align 4, !tbaa !11
  %859 = load ptr, ptr %25, align 8, !tbaa !5
  %860 = load i32, ptr %66, align 4, !tbaa !9
  %861 = load i32, ptr %66, align 4, !tbaa !9
  %862 = add nsw i32 %861, 1
  %863 = load i32, ptr %41, align 4, !tbaa !9
  %864 = mul nsw i32 %862, %863
  %865 = add nsw i32 %860, %864
  %866 = sext i32 %865 to i64
  %867 = getelementptr inbounds float, ptr %859, i64 %866
  %868 = load float, ptr %867, align 4, !tbaa !11
  %869 = load ptr, ptr %37, align 8, !tbaa !5
  %870 = getelementptr inbounds float, ptr %869, i64 3
  store float %868, ptr %870, align 4, !tbaa !11
  %871 = load ptr, ptr %25, align 8, !tbaa !5
  %872 = load i32, ptr %66, align 4, !tbaa !9
  %873 = add nsw i32 %872, 1
  %874 = load i32, ptr %66, align 4, !tbaa !9
  %875 = add nsw i32 %874, 1
  %876 = load i32, ptr %41, align 4, !tbaa !9
  %877 = mul nsw i32 %875, %876
  %878 = add nsw i32 %873, %877
  %879 = sext i32 %878 to i64
  %880 = getelementptr inbounds float, ptr %871, i64 %879
  %881 = load float, ptr %880, align 4, !tbaa !11
  %882 = load ptr, ptr %37, align 8, !tbaa !5
  %883 = getelementptr inbounds float, ptr %882, i64 4
  store float %881, ptr %883, align 4, !tbaa !11
  %884 = load ptr, ptr %27, align 8, !tbaa !5
  %885 = load i32, ptr %66, align 4, !tbaa !9
  %886 = load i32, ptr %66, align 4, !tbaa !9
  %887 = load i32, ptr %43, align 4, !tbaa !9
  %888 = mul nsw i32 %886, %887
  %889 = add nsw i32 %885, %888
  %890 = sext i32 %889 to i64
  %891 = getelementptr inbounds float, ptr %884, i64 %890
  %892 = load float, ptr %891, align 4, !tbaa !11
  %893 = load ptr, ptr %37, align 8, !tbaa !5
  %894 = getelementptr inbounds float, ptr %893, i64 5
  store float %892, ptr %894, align 4, !tbaa !11
  %895 = load ptr, ptr %27, align 8, !tbaa !5
  %896 = load i32, ptr %66, align 4, !tbaa !9
  %897 = add nsw i32 %896, 1
  %898 = load i32, ptr %66, align 4, !tbaa !9
  %899 = load i32, ptr %43, align 4, !tbaa !9
  %900 = mul nsw i32 %898, %899
  %901 = add nsw i32 %897, %900
  %902 = sext i32 %901 to i64
  %903 = getelementptr inbounds float, ptr %895, i64 %902
  %904 = load float, ptr %903, align 4, !tbaa !11
  %905 = load ptr, ptr %37, align 8, !tbaa !5
  %906 = getelementptr inbounds float, ptr %905, i64 6
  store float %904, ptr %906, align 4, !tbaa !11
  %907 = load ptr, ptr %27, align 8, !tbaa !5
  %908 = load i32, ptr %66, align 4, !tbaa !9
  %909 = load i32, ptr %66, align 4, !tbaa !9
  %910 = add nsw i32 %909, 1
  %911 = load i32, ptr %43, align 4, !tbaa !9
  %912 = mul nsw i32 %910, %911
  %913 = add nsw i32 %908, %912
  %914 = sext i32 %913 to i64
  %915 = getelementptr inbounds float, ptr %907, i64 %914
  %916 = load float, ptr %915, align 4, !tbaa !11
  %917 = load ptr, ptr %37, align 8, !tbaa !5
  %918 = getelementptr inbounds float, ptr %917, i64 7
  store float %916, ptr %918, align 4, !tbaa !11
  %919 = load ptr, ptr %27, align 8, !tbaa !5
  %920 = load i32, ptr %66, align 4, !tbaa !9
  %921 = add nsw i32 %920, 1
  %922 = load i32, ptr %66, align 4, !tbaa !9
  %923 = add nsw i32 %922, 1
  %924 = load i32, ptr %43, align 4, !tbaa !9
  %925 = mul nsw i32 %923, %924
  %926 = add nsw i32 %921, %925
  %927 = sext i32 %926 to i64
  %928 = getelementptr inbounds float, ptr %919, i64 %927
  %929 = load float, ptr %928, align 4, !tbaa !11
  %930 = load ptr, ptr %37, align 8, !tbaa !5
  %931 = getelementptr inbounds float, ptr %930, i64 8
  store float %929, ptr %931, align 4, !tbaa !11
  %932 = load float, ptr %90, align 4, !tbaa !11
  %933 = load float, ptr %92, align 4, !tbaa !11
  %934 = fmul float %932, %933
  store float %934, ptr %51, align 4, !tbaa !11
  %935 = load ptr, ptr %37, align 8, !tbaa !5
  %936 = getelementptr inbounds float, ptr %935, i64 1
  %937 = load ptr, ptr %37, align 8, !tbaa !5
  %938 = getelementptr inbounds float, ptr %937, i64 5
  %939 = getelementptr inbounds [1 x float], ptr %81, i64 0, i64 0
  %940 = getelementptr inbounds [1 x float], ptr %79, i64 0, i64 0
  call void @slag2_(ptr noundef %936, ptr noundef @c__2, ptr noundef %938, ptr noundef @c__2, ptr noundef %51, ptr noundef %53, ptr noundef %939, ptr noundef %85, ptr noundef %940, ptr noundef %83)
  store float 1.000000e+00, ptr %89, align 4, !tbaa !11
  %941 = load float, ptr %85, align 4, !tbaa !11
  %942 = load float, ptr %85, align 4, !tbaa !11
  %943 = load float, ptr %83, align 4, !tbaa !11
  %944 = load float, ptr %83, align 4, !tbaa !11
  %945 = fmul float %943, %944
  %946 = call float @llvm.fmuladd.f32(float %941, float %942, float %945)
  %947 = load float, ptr %53, align 4, !tbaa !11
  %948 = load float, ptr %53, align 4, !tbaa !11
  %949 = call float @llvm.fmuladd.f32(float %947, float %948, float %946)
  %950 = fmul float %949, 2.000000e+00
  store float %950, ptr %71, align 4, !tbaa !11
  %951 = load float, ptr %53, align 4, !tbaa !11
  %952 = fmul float %951, 4.000000e+00
  %953 = load float, ptr %53, align 4, !tbaa !11
  %954 = fmul float %952, %953
  %955 = load float, ptr %83, align 4, !tbaa !11
  %956 = fmul float %954, %955
  %957 = load float, ptr %83, align 4, !tbaa !11
  %958 = fmul float %956, %957
  store float %958, ptr %72, align 4, !tbaa !11
  %959 = load float, ptr %71, align 4, !tbaa !11
  %960 = fpext float %959 to double
  %961 = load float, ptr %71, align 4, !tbaa !11
  %962 = load float, ptr %71, align 4, !tbaa !11
  %963 = load float, ptr %72, align 4, !tbaa !11
  %964 = fmul float %963, 4.000000e+00
  %965 = fneg float %964
  %966 = call float @llvm.fmuladd.f32(float %961, float %962, float %965)
  %967 = fpext float %966 to double
  %968 = call double @sqrt(double noundef %967) #5
  %969 = fadd double %960, %968
  %970 = fptrunc double %969 to float
  store float %970, ptr %63, align 4, !tbaa !11
  %971 = load float, ptr %72, align 4, !tbaa !11
  %972 = load float, ptr %63, align 4, !tbaa !11
  %973 = fdiv float %971, %972
  store float %973, ptr %64, align 4, !tbaa !11
  %974 = load float, ptr %63, align 4, !tbaa !11
  %975 = fdiv float %974, 2.000000e+00
  store float %975, ptr %63, align 4, !tbaa !11
  %976 = load float, ptr %63, align 4, !tbaa !11
  %977 = fpext float %976 to double
  %978 = call double @sqrt(double noundef %977) #5
  %979 = fptrunc double %978 to float
  store float %979, ptr %51, align 4, !tbaa !11
  %980 = load float, ptr %64, align 4, !tbaa !11
  %981 = fpext float %980 to double
  %982 = call double @sqrt(double noundef %981) #5
  %983 = fptrunc double %982 to float
  store float %983, ptr %52, align 4, !tbaa !11
  %984 = load float, ptr %51, align 4, !tbaa !11
  %985 = load float, ptr %52, align 4, !tbaa !11
  %986 = fcmp ole float %984, %985
  br i1 %986, label %987, label %989

987:                                              ; preds = %835
  %988 = load float, ptr %51, align 4, !tbaa !11
  br label %991

989:                                              ; preds = %835
  %990 = load float, ptr %52, align 4, !tbaa !11
  br label %991

991:                                              ; preds = %989, %987
  %992 = phi float [ %988, %987 ], [ %990, %989 ]
  store float %992, ptr %54, align 4, !tbaa !11
  br label %993

993:                                              ; preds = %991, %832
  %994 = load ptr, ptr %24, align 8, !tbaa !5
  %995 = load ptr, ptr %24, align 8, !tbaa !5
  %996 = load ptr, ptr %25, align 8, !tbaa !5
  %997 = load i32, ptr %42, align 4, !tbaa !9
  %998 = sext i32 %997 to i64
  %999 = getelementptr inbounds float, ptr %996, i64 %998
  %1000 = load ptr, ptr %26, align 8, !tbaa !5
  %1001 = load ptr, ptr %37, align 8, !tbaa !5
  %1002 = getelementptr inbounds float, ptr %1001, i64 1
  %1003 = load ptr, ptr %24, align 8, !tbaa !5
  call void @slacpy_(ptr noundef @.str.8, ptr noundef %994, ptr noundef %995, ptr noundef %999, ptr noundef %1000, ptr noundef %1002, ptr noundef %1003)
  %1004 = load ptr, ptr %24, align 8, !tbaa !5
  %1005 = load ptr, ptr %24, align 8, !tbaa !5
  %1006 = load ptr, ptr %27, align 8, !tbaa !5
  %1007 = load i32, ptr %44, align 4, !tbaa !9
  %1008 = sext i32 %1007 to i64
  %1009 = getelementptr inbounds float, ptr %1006, i64 %1008
  %1010 = load ptr, ptr %28, align 8, !tbaa !5
  %1011 = load ptr, ptr %37, align 8, !tbaa !5
  %1012 = load ptr, ptr %24, align 8, !tbaa !5
  %1013 = load i32, ptr %1012, align 4, !tbaa !9
  %1014 = load ptr, ptr %24, align 8, !tbaa !5
  %1015 = load i32, ptr %1014, align 4, !tbaa !9
  %1016 = mul nsw i32 %1013, %1015
  %1017 = add nsw i32 %1016, 1
  %1018 = sext i32 %1017 to i64
  %1019 = getelementptr inbounds float, ptr %1011, i64 %1018
  %1020 = load ptr, ptr %24, align 8, !tbaa !5
  call void @slacpy_(ptr noundef @.str.8, ptr noundef %1004, ptr noundef %1005, ptr noundef %1009, ptr noundef %1010, ptr noundef %1019, ptr noundef %1020)
  %1021 = load i32, ptr %66, align 4, !tbaa !9
  store i32 %1021, ptr %59, align 4, !tbaa !9
  store i32 1, ptr %61, align 4, !tbaa !9
  %1022 = load ptr, ptr %38, align 8, !tbaa !5
  %1023 = load i32, ptr %1022, align 4, !tbaa !9
  %1024 = load ptr, ptr %24, align 8, !tbaa !5
  %1025 = load i32, ptr %1024, align 4, !tbaa !9
  %1026 = shl i32 %1025, 1
  %1027 = load ptr, ptr %24, align 8, !tbaa !5
  %1028 = load i32, ptr %1027, align 4, !tbaa !9
  %1029 = mul nsw i32 %1026, %1028
  %1030 = sub nsw i32 %1023, %1029
  store i32 %1030, ptr %50, align 4, !tbaa !9
  %1031 = load ptr, ptr %24, align 8, !tbaa !5
  %1032 = load ptr, ptr %37, align 8, !tbaa !5
  %1033 = getelementptr inbounds float, ptr %1032, i64 1
  %1034 = load ptr, ptr %24, align 8, !tbaa !5
  %1035 = load ptr, ptr %37, align 8, !tbaa !5
  %1036 = load ptr, ptr %24, align 8, !tbaa !5
  %1037 = load i32, ptr %1036, align 4, !tbaa !9
  %1038 = load ptr, ptr %24, align 8, !tbaa !5
  %1039 = load i32, ptr %1038, align 4, !tbaa !9
  %1040 = mul nsw i32 %1037, %1039
  %1041 = add nsw i32 %1040, 1
  %1042 = sext i32 %1041 to i64
  %1043 = getelementptr inbounds float, ptr %1035, i64 %1042
  %1044 = load ptr, ptr %24, align 8, !tbaa !5
  %1045 = getelementptr inbounds [1 x float], ptr %79, i64 0, i64 0
  %1046 = getelementptr inbounds [1 x float], ptr %81, i64 0, i64 0
  %1047 = load ptr, ptr %37, align 8, !tbaa !5
  %1048 = load ptr, ptr %24, align 8, !tbaa !5
  %1049 = load i32, ptr %1048, align 4, !tbaa !9
  %1050 = load ptr, ptr %24, align 8, !tbaa !5
  %1051 = load i32, ptr %1050, align 4, !tbaa !9
  %1052 = mul nsw i32 %1049, %1051
  %1053 = shl i32 %1052, 1
  %1054 = add nsw i32 %1053, 1
  %1055 = sext i32 %1054 to i64
  %1056 = getelementptr inbounds float, ptr %1047, i64 %1055
  call void @stgexc_(ptr noundef @c_false, ptr noundef @c_false, ptr noundef %1031, ptr noundef %1033, ptr noundef %1034, ptr noundef %1043, ptr noundef %1044, ptr noundef %1045, ptr noundef @c__1, ptr noundef %1046, ptr noundef @c__1, ptr noundef %59, ptr noundef %61, ptr noundef %1056, ptr noundef %50, ptr noundef %56)
  %1057 = load i32, ptr %56, align 4, !tbaa !9
  %1058 = icmp sgt i32 %1057, 0
  br i1 %1058, label %1059, label %1064

1059:                                             ; preds = %993
  %1060 = load ptr, ptr %34, align 8, !tbaa !5
  %1061 = load i32, ptr %82, align 4, !tbaa !9
  %1062 = sext i32 %1061 to i64
  %1063 = getelementptr inbounds float, ptr %1060, i64 %1062
  store float 0.000000e+00, ptr %1063, align 4, !tbaa !11
  br label %1192

1064:                                             ; preds = %993
  store i32 1, ptr %76, align 4, !tbaa !9
  %1065 = load ptr, ptr %37, align 8, !tbaa !5
  %1066 = getelementptr inbounds float, ptr %1065, i64 2
  %1067 = load float, ptr %1066, align 4, !tbaa !11
  %1068 = fcmp une float %1067, 0.000000e+00
  br i1 %1068, label %1069, label %1070

1069:                                             ; preds = %1064
  store i32 2, ptr %76, align 4, !tbaa !9
  br label %1070

1070:                                             ; preds = %1069, %1064
  %1071 = load ptr, ptr %24, align 8, !tbaa !5
  %1072 = load i32, ptr %1071, align 4, !tbaa !9
  %1073 = load i32, ptr %76, align 4, !tbaa !9
  %1074 = sub nsw i32 %1072, %1073
  store i32 %1074, ptr %77, align 4, !tbaa !9
  %1075 = load i32, ptr %77, align 4, !tbaa !9
  %1076 = icmp eq i32 %1075, 0
  br i1 %1076, label %1077, label %1083

1077:                                             ; preds = %1070
  %1078 = load float, ptr %54, align 4, !tbaa !11
  %1079 = load ptr, ptr %34, align 8, !tbaa !5
  %1080 = load i32, ptr %82, align 4, !tbaa !9
  %1081 = sext i32 %1080 to i64
  %1082 = getelementptr inbounds float, ptr %1079, i64 %1081
  store float %1078, ptr %1082, align 4, !tbaa !11
  br label %1191

1083:                                             ; preds = %1070
  %1084 = load ptr, ptr %24, align 8, !tbaa !5
  %1085 = load i32, ptr %1084, align 4, !tbaa !9
  %1086 = load ptr, ptr %24, align 8, !tbaa !5
  %1087 = load i32, ptr %1086, align 4, !tbaa !9
  %1088 = mul nsw i32 %1085, %1087
  %1089 = add nsw i32 %1088, 1
  store i32 %1089, ptr %65, align 4, !tbaa !9
  %1090 = load ptr, ptr %24, align 8, !tbaa !5
  %1091 = load i32, ptr %1090, align 4, !tbaa !9
  %1092 = shl i32 %1091, 1
  %1093 = load ptr, ptr %24, align 8, !tbaa !5
  %1094 = load i32, ptr %1093, align 4, !tbaa !9
  %1095 = mul nsw i32 %1092, %1094
  %1096 = add nsw i32 %1095, 1
  store i32 %1096, ptr %84, align 4, !tbaa !9
  %1097 = load ptr, ptr %38, align 8, !tbaa !5
  %1098 = load i32, ptr %1097, align 4, !tbaa !9
  %1099 = load ptr, ptr %24, align 8, !tbaa !5
  %1100 = load i32, ptr %1099, align 4, !tbaa !9
  %1101 = shl i32 %1100, 1
  %1102 = load ptr, ptr %24, align 8, !tbaa !5
  %1103 = load i32, ptr %1102, align 4, !tbaa !9
  %1104 = mul nsw i32 %1101, %1103
  %1105 = sub nsw i32 %1098, %1104
  store i32 %1105, ptr %50, align 4, !tbaa !9
  %1106 = load ptr, ptr %37, align 8, !tbaa !5
  %1107 = load ptr, ptr %24, align 8, !tbaa !5
  %1108 = load i32, ptr %1107, align 4, !tbaa !9
  %1109 = load i32, ptr %76, align 4, !tbaa !9
  %1110 = mul nsw i32 %1108, %1109
  %1111 = load i32, ptr %76, align 4, !tbaa !9
  %1112 = add nsw i32 %1110, %1111
  %1113 = add nsw i32 %1112, 1
  %1114 = sext i32 %1113 to i64
  %1115 = getelementptr inbounds float, ptr %1106, i64 %1114
  %1116 = load ptr, ptr %24, align 8, !tbaa !5
  %1117 = load ptr, ptr %37, align 8, !tbaa !5
  %1118 = getelementptr inbounds float, ptr %1117, i64 1
  %1119 = load ptr, ptr %24, align 8, !tbaa !5
  %1120 = load ptr, ptr %37, align 8, !tbaa !5
  %1121 = load i32, ptr %76, align 4, !tbaa !9
  %1122 = add nsw i32 %1121, 1
  %1123 = sext i32 %1122 to i64
  %1124 = getelementptr inbounds float, ptr %1120, i64 %1123
  %1125 = load ptr, ptr %24, align 8, !tbaa !5
  %1126 = load ptr, ptr %37, align 8, !tbaa !5
  %1127 = load ptr, ptr %24, align 8, !tbaa !5
  %1128 = load i32, ptr %1127, align 4, !tbaa !9
  %1129 = load i32, ptr %76, align 4, !tbaa !9
  %1130 = mul nsw i32 %1128, %1129
  %1131 = load i32, ptr %76, align 4, !tbaa !9
  %1132 = add nsw i32 %1130, %1131
  %1133 = load i32, ptr %65, align 4, !tbaa !9
  %1134 = add nsw i32 %1132, %1133
  %1135 = sext i32 %1134 to i64
  %1136 = getelementptr inbounds float, ptr %1126, i64 %1135
  %1137 = load ptr, ptr %24, align 8, !tbaa !5
  %1138 = load ptr, ptr %37, align 8, !tbaa !5
  %1139 = load i32, ptr %65, align 4, !tbaa !9
  %1140 = sext i32 %1139 to i64
  %1141 = getelementptr inbounds float, ptr %1138, i64 %1140
  %1142 = load ptr, ptr %24, align 8, !tbaa !5
  %1143 = load ptr, ptr %37, align 8, !tbaa !5
  %1144 = load i32, ptr %76, align 4, !tbaa !9
  %1145 = load i32, ptr %65, align 4, !tbaa !9
  %1146 = add nsw i32 %1144, %1145
  %1147 = sext i32 %1146 to i64
  %1148 = getelementptr inbounds float, ptr %1143, i64 %1147
  %1149 = load ptr, ptr %24, align 8, !tbaa !5
  %1150 = load ptr, ptr %34, align 8, !tbaa !5
  %1151 = load i32, ptr %82, align 4, !tbaa !9
  %1152 = sext i32 %1151 to i64
  %1153 = getelementptr inbounds float, ptr %1150, i64 %1152
  %1154 = load ptr, ptr %37, align 8, !tbaa !5
  %1155 = load i32, ptr %84, align 4, !tbaa !9
  %1156 = add nsw i32 %1155, 1
  %1157 = sext i32 %1156 to i64
  %1158 = getelementptr inbounds float, ptr %1154, i64 %1157
  %1159 = load ptr, ptr %39, align 8, !tbaa !5
  %1160 = getelementptr inbounds i32, ptr %1159, i64 1
  call void @stgsyl_(ptr noundef @.str.7, ptr noundef @c__3, ptr noundef %77, ptr noundef %76, ptr noundef %1115, ptr noundef %1116, ptr noundef %1118, ptr noundef %1119, ptr noundef %1124, ptr noundef %1125, ptr noundef %1136, ptr noundef %1137, ptr noundef %1141, ptr noundef %1142, ptr noundef %1148, ptr noundef %1149, ptr noundef %67, ptr noundef %1153, ptr noundef %1158, ptr noundef %50, ptr noundef %1160, ptr noundef %56)
  %1161 = load i32, ptr %55, align 4, !tbaa !9
  %1162 = icmp ne i32 %1161, 0
  br i1 %1162, label %1163, label %1190

1163:                                             ; preds = %1083
  %1164 = load float, ptr %89, align 4, !tbaa !11
  %1165 = fcmp oge float 1.000000e+00, %1164
  br i1 %1165, label %1166, label %1167

1166:                                             ; preds = %1163
  br label %1169

1167:                                             ; preds = %1163
  %1168 = load float, ptr %89, align 4, !tbaa !11
  br label %1169

1169:                                             ; preds = %1167, %1166
  %1170 = phi float [ 1.000000e+00, %1166 ], [ %1168, %1167 ]
  %1171 = load ptr, ptr %34, align 8, !tbaa !5
  %1172 = load i32, ptr %82, align 4, !tbaa !9
  %1173 = sext i32 %1172 to i64
  %1174 = getelementptr inbounds float, ptr %1171, i64 %1173
  %1175 = load float, ptr %1174, align 4, !tbaa !11
  %1176 = fmul float %1170, %1175
  store float %1176, ptr %51, align 4, !tbaa !11
  %1177 = load float, ptr %51, align 4, !tbaa !11
  %1178 = load float, ptr %54, align 4, !tbaa !11
  %1179 = fcmp ole float %1177, %1178
  br i1 %1179, label %1180, label %1182

1180:                                             ; preds = %1169
  %1181 = load float, ptr %51, align 4, !tbaa !11
  br label %1184

1182:                                             ; preds = %1169
  %1183 = load float, ptr %54, align 4, !tbaa !11
  br label %1184

1184:                                             ; preds = %1182, %1180
  %1185 = phi float [ %1181, %1180 ], [ %1183, %1182 ]
  %1186 = load ptr, ptr %34, align 8, !tbaa !5
  %1187 = load i32, ptr %82, align 4, !tbaa !9
  %1188 = sext i32 %1187 to i64
  %1189 = getelementptr inbounds float, ptr %1186, i64 %1188
  store float %1185, ptr %1189, align 4, !tbaa !11
  br label %1190

1190:                                             ; preds = %1184, %1083
  br label %1191

1191:                                             ; preds = %1190, %1077
  br label %1192

1192:                                             ; preds = %1191, %1059
  %1193 = load i32, ptr %55, align 4, !tbaa !9
  %1194 = icmp ne i32 %1193, 0
  br i1 %1194, label %1195, label %1206

1195:                                             ; preds = %1192
  %1196 = load ptr, ptr %34, align 8, !tbaa !5
  %1197 = load i32, ptr %82, align 4, !tbaa !9
  %1198 = sext i32 %1197 to i64
  %1199 = getelementptr inbounds float, ptr %1196, i64 %1198
  %1200 = load float, ptr %1199, align 4, !tbaa !11
  %1201 = load ptr, ptr %34, align 8, !tbaa !5
  %1202 = load i32, ptr %82, align 4, !tbaa !9
  %1203 = add nsw i32 %1202, 1
  %1204 = sext i32 %1203 to i64
  %1205 = getelementptr inbounds float, ptr %1201, i64 %1204
  store float %1200, ptr %1205, align 4, !tbaa !11
  br label %1206

1206:                                             ; preds = %1195, %1192
  br label %1207

1207:                                             ; preds = %1206, %809
  %1208 = load i32, ptr %55, align 4, !tbaa !9
  %1209 = icmp ne i32 %1208, 0
  br i1 %1209, label %1210, label %1213

1210:                                             ; preds = %1207
  %1211 = load i32, ptr %82, align 4, !tbaa !9
  %1212 = add nsw i32 %1211, 1
  store i32 %1212, ptr %82, align 4, !tbaa !9
  br label %1213

1213:                                             ; preds = %1210, %1207
  br label %1214

1214:                                             ; preds = %1213, %816, %472, %463, %422
  br label %1215

1215:                                             ; preds = %1214
  %1216 = load i32, ptr %66, align 4, !tbaa !9
  %1217 = add nsw i32 %1216, 1
  store i32 %1217, ptr %66, align 4, !tbaa !9
  br label %415, !llvm.loop !15

1218:                                             ; preds = %415
  %1219 = load i32, ptr %73, align 4, !tbaa !9
  %1220 = sitofp i32 %1219 to float
  %1221 = load ptr, ptr %37, align 8, !tbaa !5
  %1222 = getelementptr inbounds float, ptr %1221, i64 1
  store float %1220, ptr %1222, align 4, !tbaa !11
  store i32 1, ptr %93, align 4
  br label %1223

1223:                                             ; preds = %1218, %407, %401, %393
  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 4, ptr %90) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #5
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %80) #5
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %71) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #5
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %66) #5
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %61) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #5
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %55) #5
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %51) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #5
  ret void
}

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

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

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

declare float @slamch_(ptr noundef) #2

declare float @snrm2_(ptr noundef, ptr noundef, ptr noundef) #2

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

declare void @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 float @sdot_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

declare void @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 void @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 = !{!"int", !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 i32, align 4
@.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 i32, align 4
@.str.8 = external hidden unnamed_addr constant [5 x i8], align 1
@c_false = external hidden global i32, align 4
@c__3 = external hidden global i32, align 4

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

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

71:                                               ; preds = %67
  %72 = load i32, ptr %3, align 4, !tbaa !5
  %73 = icmp slt i32 %72, 0
  br i1 %73, label %.thread.sink.split, label %74

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

77:                                               ; preds = %74
  %78 = load i32, ptr %7, align 4, !tbaa !5
  %79 = icmp slt i32 %78, %spec.select
  br i1 %79, label %.thread.sink.split, label %80

80:                                               ; preds = %77
  br i1 %60, label %81, label %.critedge

81:                                               ; preds = %80
  %82 = load i32, ptr %9, align 4, !tbaa !5
  %83 = icmp slt i32 %82, %72
  br i1 %83, label %.thread.sink.split, label %84

84:                                               ; preds = %81
  %85 = load i32, ptr %11, align 4, !tbaa !5
  %86 = icmp slt i32 %85, %72
  br i1 %86, label %.thread.sink.split, label %.critedge

.critedge:                                        ; preds = %80, %84
  br i1 %70, label %87, label %114

87:                                               ; preds = %.critedge
  store i32 0, ptr %15, align 4, !tbaa !5
  %88 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %88, ptr %21, align 4, !tbaa !5
  %.not486 = icmp slt i32 %88, 1
  br i1 %.not486, label %.loopexit, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %87
  %89 = sext i32 %41 to i64
  %90 = add nuw i32 %88, 1
  %wide.trip.count = zext i32 %90 to i64
  %invariant.gep534 = getelementptr i8, ptr %43, i64 4
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %112
  %91 = phi i32 [ 0, %.lr.ph.preheader ], [ %113, %112 ]
  %indvars.iv = phi i64 [ 1, %.lr.ph.preheader ], [ %indvars.iv.next, %112 ]
  %.0424488 = phi i32 [ 0, %.lr.ph.preheader ], [ %.1425, %112 ]
  %.not442 = icmp eq i32 %.0424488, 0
  br i1 %.not442, label %92, label %112

92:                                               ; preds = %.lr.ph
  %93 = load i32, ptr %3, align 4, !tbaa !5
  %94 = sext i32 %93 to i64
  %95 = icmp slt i64 %indvars.iv, %94
  br i1 %95, label %96, label %108

96:                                               ; preds = %92
  %97 = mul nsw i64 %indvars.iv, %89
  %gep535 = getelementptr float, ptr %invariant.gep534, i64 %indvars.iv
  %98 = getelementptr float, ptr %gep535, i64 %97
  %99 = load float, ptr %98, align 4, !tbaa !9
  %100 = fcmp oeq float %99, 0.000000e+00
  %101 = getelementptr inbounds i32, ptr %40, i64 %indvars.iv
  %102 = load i32, ptr %101, align 4, !tbaa !5
  %.not446 = icmp eq i32 %102, 0
  br i1 %100, label %103, label %104

103:                                              ; preds = %96
  br i1 %.not446, label %112, label %.sink.split

104:                                              ; preds = %96
  br i1 %.not446, label %105, label %.sink.split

105:                                              ; preds = %104
  %106 = getelementptr i32, ptr %2, i64 %indvars.iv
  %107 = load i32, ptr %106, align 4, !tbaa !5
  %.not445 = icmp eq i32 %107, 0
  br i1 %.not445, label %112, label %.sink.split

108:                                              ; preds = %92
  %109 = getelementptr inbounds i32, ptr %40, i64 %94
  %110 = load i32, ptr %109, align 4, !tbaa !5
  %.not443 = icmp eq i32 %110, 0
  br i1 %.not443, label %112, label %.sink.split

.sink.split:                                      ; preds = %108, %104, %105, %103
  %.sink538 = phi i32 [ 1, %103 ], [ 2, %105 ], [ 2, %104 ], [ 1, %108 ]
  %.1425.ph = phi i32 [ 0, %103 ], [ 1, %105 ], [ 1, %104 ], [ 0, %108 ]
  %111 = add nsw i32 %91, %.sink538
  store i32 %111, ptr %15, align 4, !tbaa !5
  br label %112

112:                                              ; preds = %.sink.split, %.lr.ph, %108, %103, %105
  %113 = phi i32 [ %91, %103 ], [ %91, %105 ], [ %91, %108 ], [ %91, %.lr.ph ], [ %111, %.sink.split ]
  %.1425 = phi i32 [ 0, %103 ], [ 1, %105 ], [ 0, %108 ], [ 0, %.lr.ph ], [ %.1425.ph, %.sink.split ]
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %.loopexitthread-pre-split, label %.lr.ph, !llvm.loop !11

114:                                              ; preds = %.critedge
  store i32 %72, ptr %15, align 4, !tbaa !5
  br label %.loopexitthread-pre-split

.loopexitthread-pre-split:                        ; preds = %112, %114
  %.pr527 = load i32, ptr %3, align 4, !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexitthread-pre-split, %87
  %115 = phi i32 [ %.pr527, %.loopexitthread-pre-split ], [ %88, %87 ]
  %116 = icmp eq i32 %115, 0
  br i1 %116, label %129, label %117

117:                                              ; preds = %.loopexit
  %118 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #6
  %.not440 = icmp eq i32 %118, 0
  br i1 %.not440, label %119, label %121

119:                                              ; preds = %117
  %120 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #6
  %.not441 = icmp eq i32 %120, 0
  br i1 %.not441, label %127, label %121

121:                                              ; preds = %119, %117
  %122 = load i32, ptr %3, align 4, !tbaa !5
  %123 = shl i32 %122, 1
  %124 = add nsw i32 %122, 2
  %125 = mul nsw i32 %123, %124
  %126 = add nsw i32 %125, 16
  br label %129

127:                                              ; preds = %119
  %128 = load i32, ptr %3, align 4, !tbaa !5
  br label %129

129:                                              ; preds = %.loopexit, %121, %127
  %130 = phi i32 [ %122, %121 ], [ %128, %127 ], [ 0, %.loopexit ]
  %.0429 = phi i32 [ %126, %121 ], [ %128, %127 ], [ 1, %.loopexit ]
  %131 = sitofp i32 %.0429 to float
  store float %131, ptr %16, align 4, !tbaa !9
  %132 = load i32, ptr %14, align 4, !tbaa !5
  %133 = load i32, ptr %15, align 4, !tbaa !5
  %134 = icmp slt i32 %132, %133
  br i1 %134, label %.thread.sink.split, label %135

135:                                              ; preds = %129
  %136 = load i32, ptr %17, align 4, !tbaa !5
  %137 = icmp sge i32 %136, %.0429
  %or.cond5 = select i1 %137, i1 true, i1 %66
  br i1 %or.cond5, label %138, label %.thread.sink.split

138:                                              ; preds = %135
  %.pr = load i32, ptr %19, align 4, !tbaa !5
  %.not447 = icmp eq i32 %.pr, 0
  br i1 %.not447, label %142, label %.thread

.thread.sink.split:                               ; preds = %135, %129, %84, %81, %77, %74, %71, %67, %20
  %.sink = phi i32 [ -1, %20 ], [ -2, %67 ], [ -4, %71 ], [ -6, %74 ], [ -8, %77 ], [ -10, %81 ], [ -12, %84 ], [ -15, %129 ], [ -18, %135 ]
  store i32 %.sink, ptr %19, align 4, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %138
  %139 = phi i32 [ %.pr, %138 ], [ %.sink, %.thread.sink.split ]
  %140 = sub nsw i32 0, %139
  store i32 %140, ptr %21, align 4, !tbaa !5
  %141 = call i32 @xerbla_(ptr noundef nonnull @.str.5, ptr noundef nonnull %21, i32 noundef 6) #6
  br label %361

142:                                              ; preds = %138
  %143 = icmp eq i32 %130, 0
  %or.cond539 = select i1 %66, i1 true, i1 %143
  br i1 %or.cond539, label %361, label %144

144:                                              ; preds = %142
  %145 = tail call float @slamch_(ptr noundef nonnull @.str.6) #6
  %146 = tail call float @slamch_(ptr noundef nonnull @.str.3) #6
  %147 = load i32, ptr %3, align 4, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %52, i64 4
  %invariant.gep491 = getelementptr i8, ptr %49, i64 4
  %invariant.gep507 = getelementptr i8, ptr %16, i64 4
  %invariant.gep509 = getelementptr i8, ptr %13, i64 4
  %.not448511 = icmp slt i32 %147, 1
  br i1 %.not448511, label %._crit_edge, label %.lr.ph521

.lr.ph521:                                        ; preds = %144
  %148 = fdiv float %146, %145
  %.not450470 = icmp eq i32 %64, 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
  %156 = sext i32 %41 to i64
  %157 = sext i32 %44 to i64
  %invariant.gep536 = getelementptr i8, ptr %43, i64 4
  %158 = zext nneg i32 %147 to i64
  br label %159

159:                                              ; preds = %.lr.ph521, %360
  %indvars.iv523 = phi i64 [ 1, %.lr.ph521 ], [ %indvars.iv.next524, %360 ]
  %.0518 = phi i32 [ 0, %.lr.ph521 ], [ %.1, %360 ]
  %.0422517 = phi float [ undef, %.lr.ph521 ], [ %.4, %360 ]
  %.2426516 = phi i32 [ 0, %.lr.ph521 ], [ %.4428, %360 ]
  %indvars525 = trunc i64 %indvars.iv523 to i32
  %.not449 = icmp eq i32 %.2426516, 0
  br i1 %.not449, label %160, label %360

160:                                              ; preds = %159
  %161 = load i32, ptr %3, align 4, !tbaa !5
  %162 = sext i32 %161 to i64
  %163 = icmp slt i64 %indvars.iv523, %162
  br i1 %163, label %164, label %.thread468

164:                                              ; preds = %160
  %165 = mul nsw i64 %indvars.iv523, %156
  %gep537 = getelementptr float, ptr %invariant.gep536, i64 %indvars.iv523
  %166 = getelementptr float, ptr %gep537, i64 %165
  %167 = load float, ptr %166, align 4, !tbaa !9
  %168 = fcmp une float %167, 0.000000e+00
  %169 = zext i1 %168 to i32
  br i1 %.not450470, label %179, label %170

.thread468:                                       ; preds = %160
  br i1 %.not450470, label %.thread477, label %.thread473

170:                                              ; preds = %164
  br i1 %168, label %171, label %.thread473

171:                                              ; preds = %170
  %172 = getelementptr inbounds i32, ptr %40, i64 %indvars.iv523
  %173 = load i32, ptr %172, align 4, !tbaa !5
  %.not453 = icmp eq i32 %173, 0
  br i1 %.not453, label %174, label %179

174:                                              ; preds = %171
  %175 = getelementptr inbounds i8, ptr %172, i64 4
  %176 = load i32, ptr %175, align 4, !tbaa !5
  %.not454 = icmp eq i32 %176, 0
  br i1 %.not454, label %360, label %179

.thread473:                                       ; preds = %.thread468, %170
  %177 = getelementptr inbounds i32, ptr %40, i64 %indvars.iv523
  %178 = load i32, ptr %177, align 4, !tbaa !5
  %.not452 = icmp eq i32 %178, 0
  br i1 %.not452, label %360, label %.thread528

179:                                              ; preds = %174, %171, %164
  %.3427472 = phi i32 [ 1, %174 ], [ 1, %171 ], [ %169, %164 ]
  %180 = add nsw i32 %.0518, 1
  br i1 %60, label %183, label %235

.thread528:                                       ; preds = %.thread473
  %181 = add nsw i32 %.0518, 1
  br i1 %60, label %.thread481, label %235

.thread477:                                       ; preds = %.thread468
  %182 = add nsw i32 %.0518, 1
  br i1 %60, label %.thread481, label %235

183:                                              ; preds = %179
  %.not455 = icmp eq i32 %.3427472, 0
  br i1 %.not455, label %.thread481, label %184

184:                                              ; preds = %183
  %185 = mul nsw i32 %180, %50
  %186 = sext i32 %185 to i64
  %gep = getelementptr float, ptr %invariant.gep, i64 %186
  %187 = call float @snrm2_(ptr noundef nonnull %3, ptr noundef %gep, ptr noundef nonnull @c__1) #6
  store float %187, ptr %23, align 4, !tbaa !9
  %188 = add nsw i32 %.0518, 2
  %189 = mul nsw i32 %188, %50
  %190 = sext i32 %189 to i64
  %gep490 = getelementptr float, ptr %invariant.gep, i64 %190
  %191 = call float @snrm2_(ptr noundef nonnull %3, ptr noundef %gep490, ptr noundef nonnull @c__1) #6
  store float %191, ptr %24, align 4, !tbaa !9
  %192 = call float @slapy2_(ptr noundef nonnull %23, ptr noundef nonnull %24) #6
  %193 = mul nsw i32 %180, %47
  %194 = sext i32 %193 to i64
  %gep492 = getelementptr float, ptr %invariant.gep491, i64 %194
  %195 = call float @snrm2_(ptr noundef nonnull %3, ptr noundef %gep492, ptr noundef nonnull @c__1) #6
  store float %195, ptr %23, align 4, !tbaa !9
  %196 = mul nsw i32 %188, %47
  %197 = sext i32 %196 to i64
  %gep494 = getelementptr float, ptr %invariant.gep491, i64 %197
  %198 = call float @snrm2_(ptr noundef nonnull %3, ptr noundef %gep494, ptr noundef nonnull @c__1) #6
  store float %198, ptr %24, align 4, !tbaa !9
  %199 = call float @slapy2_(ptr noundef nonnull %23, ptr noundef nonnull %24) #6
  call void @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 %gep, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b21, ptr noundef %16, ptr noundef nonnull @c__1) #6
  %200 = call float @sdot_(ptr noundef nonnull %3, ptr noundef %16, ptr noundef nonnull @c__1, ptr noundef %gep492, ptr noundef nonnull @c__1) #6
  %201 = call float @sdot_(ptr noundef nonnull %3, ptr noundef %16, ptr noundef nonnull @c__1, ptr noundef %gep494, ptr noundef nonnull @c__1) #6
  call void @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 %gep490, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b21, ptr noundef %16, ptr noundef nonnull @c__1) #6
  %202 = call float @sdot_(ptr noundef nonnull %3, ptr noundef %16, ptr noundef nonnull @c__1, ptr noundef %gep494, ptr noundef nonnull @c__1) #6
  %203 = call float @sdot_(ptr noundef nonnull %3, ptr noundef %16, ptr noundef nonnull @c__1, ptr noundef %gep492, ptr noundef nonnull @c__1) #6
  %204 = fadd float %200, %202
  store float %204, ptr %27, align 4, !tbaa !9
  %205 = fsub float %203, %201
  store float %205, ptr %32, align 4, !tbaa !9
  call void @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 %gep, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b21, ptr noundef %16, ptr noundef nonnull @c__1) #6
  %206 = call float @sdot_(ptr noundef nonnull %3, ptr noundef %16, ptr noundef nonnull @c__1, ptr noundef %gep492, ptr noundef nonnull @c__1) #6
  %207 = call float @sdot_(ptr noundef nonnull %3, ptr noundef %16, ptr noundef nonnull @c__1, ptr noundef %gep494, ptr noundef nonnull @c__1) #6
  call void @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 %gep490, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b21, ptr noundef %16, ptr noundef nonnull @c__1) #6
  %208 = call float @sdot_(ptr noundef nonnull %3, ptr noundef %16, ptr noundef nonnull @c__1, ptr noundef %gep494, ptr noundef nonnull @c__1) #6
  %209 = call float @sdot_(ptr noundef nonnull %3, ptr noundef %16, ptr noundef nonnull @c__1, ptr noundef %gep492, ptr noundef nonnull @c__1) #6
  %210 = fadd float %206, %208
  store float %210, ptr %28, align 4, !tbaa !9
  %211 = fsub float %209, %207
  store float %211, ptr %33, align 4, !tbaa !9
  %212 = call float @slapy2_(ptr noundef nonnull %27, ptr noundef nonnull %32) #6
  store float %212, ptr %27, align 4, !tbaa !9
  %213 = call float @slapy2_(ptr noundef nonnull %28, ptr noundef nonnull %33) #6
  store float %213, ptr %28, align 4, !tbaa !9
  %214 = call float @slapy2_(ptr noundef nonnull %27, ptr noundef nonnull %28) #6
  %215 = fmul float %192, %199
  %216 = fdiv float %214, %215
  %217 = sext i32 %180 to i64
  %218 = getelementptr inbounds float, ptr %53, i64 %217
  store float %216, ptr %218, align 4, !tbaa !9
  br label %.sink.split540

.thread481:                                       ; preds = %.thread528, %.thread477, %183
  %219 = phi i32 [ %180, %183 ], [ %182, %.thread477 ], [ %181, %.thread528 ]
  %220 = mul nsw i32 %219, %50
  %221 = sext i32 %220 to i64
  %gep496 = getelementptr float, ptr %invariant.gep, i64 %221
  %222 = call float @snrm2_(ptr noundef nonnull %3, ptr noundef %gep496, ptr noundef nonnull @c__1) #6
  %223 = mul nsw i32 %219, %47
  %224 = sext i32 %223 to i64
  %gep498 = getelementptr float, ptr %invariant.gep491, i64 %224
  %225 = call float @snrm2_(ptr noundef nonnull %3, ptr noundef %gep498, ptr noundef nonnull @c__1) #6
  call void @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 %gep496, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b21, ptr noundef %16, ptr noundef nonnull @c__1) #6
  %226 = call float @sdot_(ptr noundef nonnull %3, ptr noundef %16, ptr noundef nonnull @c__1, ptr noundef %gep498, ptr noundef nonnull @c__1) #6
  store float %226, ptr %27, align 4, !tbaa !9
  call void @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 %gep496, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b21, ptr noundef %16, ptr noundef nonnull @c__1) #6
  %227 = call float @sdot_(ptr noundef nonnull %3, ptr noundef %16, ptr noundef nonnull @c__1, ptr noundef %gep498, ptr noundef nonnull @c__1) #6
  store float %227, ptr %28, align 4, !tbaa !9
  %228 = call float @slapy2_(ptr noundef nonnull %27, ptr noundef nonnull %28) #6
  %229 = fcmp oeq float %228, 0.000000e+00
  br i1 %229, label %.sink.split540, label %230

230:                                              ; preds = %.thread481
  %231 = fmul float %222, %225
  %232 = fdiv float %228, %231
  br label %.sink.split540

.sink.split540:                                   ; preds = %.thread481, %230, %184
  %.sink545 = phi i32 [ %188, %184 ], [ %219, %230 ], [ %219, %.thread481 ]
  %.sink542 = phi float [ %216, %184 ], [ %232, %230 ], [ -1.000000e+00, %.thread481 ]
  %.ph541 = phi i32 [ %180, %184 ], [ %219, %230 ], [ %219, %.thread481 ]
  %.3427472480.ph = phi i32 [ 1, %184 ], [ 0, %230 ], [ 0, %.thread481 ]
  %.1423.ph = phi float [ %214, %184 ], [ %228, %230 ], [ %228, %.thread481 ]
  %233 = sext i32 %.sink545 to i64
  %234 = getelementptr inbounds float, ptr %53, i64 %233
  store float %.sink542, ptr %234, align 4, !tbaa !9
  br label %235

235:                                              ; preds = %.sink.split540, %.thread528, %.thread477, %179
  %236 = phi i32 [ %180, %179 ], [ %182, %.thread477 ], [ %181, %.thread528 ], [ %.ph541, %.sink.split540 ]
  %.3427472480 = phi i32 [ %.3427472, %179 ], [ 0, %.thread477 ], [ 0, %.thread528 ], [ %.3427472480.ph, %.sink.split540 ]
  %.1423 = phi float [ %.0422517, %179 ], [ %.0422517, %.thread477 ], [ %.0422517, %.thread528 ], [ %.1423.ph, %.sink.split540 ]
  br i1 %63, label %237, label %.critedge463

237:                                              ; preds = %235
  %238 = load i32, ptr %3, align 4, !tbaa !5
  %239 = icmp eq i32 %238, 1
  br i1 %239, label %240, label %244

240:                                              ; preds = %237
  %241 = call float @slapy2_(ptr noundef %4, ptr noundef %6) #6
  %242 = sext i32 %236 to i64
  %243 = getelementptr inbounds float, ptr %54, i64 %242
  store float %241, ptr %243, align 4, !tbaa !9
  br label %360

244:                                              ; preds = %237
  %.not456 = icmp eq i32 %.3427472480, 0
  br i1 %.not456, label %303, label %245

245:                                              ; preds = %244
  %246 = mul nsw i64 %indvars.iv523, %156
  %247 = getelementptr float, ptr %43, i64 %246
  %248 = getelementptr float, ptr %247, i64 %indvars.iv523
  %249 = load float, ptr %248, align 4, !tbaa !9
  store float %249, ptr %16, align 4, !tbaa !9
  %250 = add nuw nsw i64 %indvars.iv523, 1
  %251 = add nuw nsw i32 %indvars525, 1
  %252 = getelementptr float, ptr %43, i64 %250
  %253 = getelementptr float, ptr %252, i64 %246
  %254 = load float, ptr %253, align 4, !tbaa !9
  store float %254, ptr %invariant.gep507, align 4, !tbaa !9
  %255 = mul nsw i64 %250, %156
  %256 = mul nsw i32 %251, %41
  %257 = getelementptr float, ptr %43, i64 %255
  %258 = getelementptr float, ptr %257, i64 %indvars.iv523
  %259 = load float, ptr %258, align 4, !tbaa !9
  store float %259, ptr %149, align 4, !tbaa !9
  %260 = sext i32 %256 to i64
  %261 = getelementptr float, ptr %43, i64 %250
  %262 = getelementptr float, ptr %261, i64 %260
  %263 = load float, ptr %262, align 4, !tbaa !9
  store float %263, ptr %150, align 4, !tbaa !9
  %264 = mul nsw i64 %indvars.iv523, %157
  %265 = getelementptr float, ptr %46, i64 %264
  %266 = getelementptr float, ptr %265, i64 %indvars.iv523
  %267 = load float, ptr %266, align 4, !tbaa !9
  store float %267, ptr %151, align 4, !tbaa !9
  %268 = getelementptr float, ptr %46, i64 %250
  %269 = getelementptr float, ptr %268, i64 %264
  %270 = load float, ptr %269, align 4, !tbaa !9
  store float %270, ptr %152, align 4, !tbaa !9
  %271 = mul nsw i64 %250, %157
  %272 = mul nsw i32 %251, %44
  %273 = getelementptr float, ptr %46, i64 %271
  %274 = getelementptr float, ptr %273, i64 %indvars.iv523
  %275 = load float, ptr %274, align 4, !tbaa !9
  store float %275, ptr %153, align 4, !tbaa !9
  %276 = sext i32 %272 to i64
  %277 = getelementptr float, ptr %46, i64 %250
  %278 = getelementptr float, ptr %277, i64 %276
  %279 = load float, ptr %278, align 4, !tbaa !9
  store float %279, ptr %154, align 4, !tbaa !9
  store float %155, ptr %23, align 4, !tbaa !9
  call void @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 %25, ptr noundef nonnull %37, ptr noundef nonnull %39, ptr noundef nonnull %36, ptr noundef nonnull %38) #6
  %280 = load float, ptr %39, align 4, !tbaa !9
  %281 = load float, ptr %38, align 4, !tbaa !9
  %282 = fmul float %281, %281
  %283 = call float @llvm.fmuladd.f32(float %280, float %280, float %282)
  %284 = load float, ptr %25, align 4, !tbaa !9
  %285 = call float @llvm.fmuladd.f32(float %284, float %284, float %283)
  %286 = fmul float %285, 2.000000e+00
  %287 = fmul float %284, 4.000000e+00
  %288 = fmul float %284, %287
  %289 = fmul float %281, %288
  %290 = fmul float %281, %289
  %291 = fpext float %286 to double
  %292 = fmul float %290, -4.000000e+00
  %293 = call float @llvm.fmuladd.f32(float %286, float %286, float %292)
  %294 = fpext float %293 to double
  %295 = call double @sqrt(double noundef %294) #6
  %296 = fadd double %295, %291
  %297 = fptrunc double %296 to float
  %298 = fdiv float %290, %297
  %299 = fmul float %297, 5.000000e-01
  %sqrtf = call float @sqrtf(float noundef %299) #4
  store float %sqrtf, ptr %23, align 4, !tbaa !9
  %sqrtf457 = call float @sqrtf(float noundef %298) #4
  store float %sqrtf457, ptr %24, align 4, !tbaa !9
  %300 = load float, ptr %23, align 4
  %301 = fcmp ole float %300, %sqrtf457
  %302 = select i1 %301, float %300, float %sqrtf457
  br label %303

303:                                              ; preds = %245, %244
  %.2 = phi float [ %302, %245 ], [ %.1423, %244 ]
  call void @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
  %304 = load i32, ptr %3, align 4, !tbaa !5
  %305 = mul nsw i32 %304, %304
  %306 = zext nneg i32 %305 to i64
  %gep500 = getelementptr inbounds float, ptr %16, i64 %306
  call void @slacpy_(ptr noundef nonnull @.str.8, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull %gep500, ptr noundef nonnull %3) #6
  store i32 %indvars525, ptr %29, align 4, !tbaa !5
  store i32 1, ptr %30, align 4, !tbaa !5
  %307 = load i32, ptr %17, align 4, !tbaa !5
  %308 = load i32, ptr %3, align 4, !tbaa !5
  %309 = shl i32 %308, 1
  %310 = mul nsw i32 %309, %308
  %311 = sub nsw i32 %307, %310
  store i32 %311, ptr %22, align 4, !tbaa !5
  %312 = mul nsw i32 %308, %308
  %313 = zext nneg i32 %312 to i64
  %gep502 = getelementptr inbounds float, ptr %16, i64 %313
  %314 = shl nuw i32 %312, 1
  %315 = or disjoint i32 %314, 1
  %316 = sext i32 %315 to i64
  %317 = getelementptr inbounds float, ptr %55, i64 %316
  call void @stgexc_(ptr noundef nonnull @c_false, ptr noundef nonnull @c_false, ptr noundef nonnull %3, ptr noundef %16, ptr noundef nonnull %3, ptr noundef nonnull %gep502, 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 %29, ptr noundef nonnull %30, ptr noundef nonnull %317, ptr noundef nonnull %22, ptr noundef nonnull %26) #6
  %318 = load i32, ptr %26, align 4, !tbaa !5
  %319 = icmp sgt i32 %318, 0
  br i1 %319, label %354, label %320

320:                                              ; preds = %303
  store i32 1, ptr %34, align 4, !tbaa !5
  %321 = load float, ptr %invariant.gep507, align 4, !tbaa !9
  %322 = fcmp une float %321, 0.000000e+00
  br i1 %322, label %323, label %324

323:                                              ; preds = %320
  store i32 2, ptr %34, align 4, !tbaa !5
  br label %324

324:                                              ; preds = %323, %320
  %325 = phi i32 [ 2, %323 ], [ 1, %320 ]
  %326 = load i32, ptr %3, align 4, !tbaa !5
  %327 = sub nsw i32 %326, %325
  store i32 %327, ptr %35, align 4, !tbaa !5
  %328 = icmp eq i32 %326, %325
  br i1 %328, label %354, label %329

329:                                              ; preds = %324
  %330 = mul nsw i32 %326, %326
  %331 = add nuw nsw i32 %330, 1
  %332 = shl i32 %326, 1
  %333 = mul nsw i32 %332, %326
  %334 = load i32, ptr %17, align 4, !tbaa !5
  %335 = sub nsw i32 %334, %333
  store i32 %335, ptr %22, align 4, !tbaa !5
  %336 = add i32 %326, 1
  %337 = mul i32 %336, %325
  %338 = sext i32 %337 to i64
  %gep504 = getelementptr float, ptr %16, i64 %338
  %339 = zext nneg i32 %325 to i64
  %gep506 = getelementptr float, ptr %16, i64 %339
  %340 = add nsw i32 %337, %331
  %341 = sext i32 %340 to i64
  %342 = getelementptr inbounds float, ptr %55, i64 %341
  %343 = zext nneg i32 %331 to i64
  %344 = getelementptr inbounds float, ptr %55, i64 %343
  %345 = add nuw nsw i32 %331, %325
  %346 = zext nneg i32 %345 to i64
  %347 = getelementptr inbounds float, ptr %55, i64 %346
  %348 = sext i32 %236 to i64
  %349 = getelementptr inbounds float, ptr %54, i64 %348
  %350 = sext i32 %333 to i64
  %gep508 = getelementptr float, ptr %invariant.gep507, i64 %350
  call void @stgsyl_(ptr noundef nonnull @.str.7, ptr noundef nonnull @c__3, ptr noundef nonnull %35, ptr noundef nonnull %34, ptr noundef %gep504, ptr noundef nonnull %3, ptr noundef nonnull %16, ptr noundef nonnull %3, ptr noundef %gep506, ptr noundef nonnull %3, ptr noundef nonnull %342, ptr noundef nonnull %3, ptr noundef nonnull %344, ptr noundef nonnull %3, ptr noundef nonnull %347, ptr noundef nonnull %3, ptr noundef nonnull %31, ptr noundef nonnull %349, ptr noundef %gep508, ptr noundef nonnull %22, ptr noundef %18, ptr noundef nonnull %26) #6
  br i1 %.not456, label %.critedge463, label %.thread485

.thread485:                                       ; preds = %329
  %351 = load float, ptr %349, align 4, !tbaa !9
  store float %351, ptr %23, align 4, !tbaa !9
  %352 = fcmp ole float %351, %.2
  %353 = select i1 %352, float %351, float %.2
  store float %353, ptr %349, align 4, !tbaa !9
  br label %._crit_edge526

354:                                              ; preds = %324, %303
  %.2.sink = phi float [ 0.000000e+00, %303 ], [ %.2, %324 ]
  %355 = sext i32 %236 to i64
  %356 = getelementptr inbounds float, ptr %54, i64 %355
  store float %.2.sink, ptr %356, align 4, !tbaa !9
  br i1 %.not456, label %.critedge463, label %._crit_edge526

._crit_edge526:                                   ; preds = %354, %.thread485
  %357 = phi float [ %353, %.thread485 ], [ %.2.sink, %354 ]
  %358 = sext i32 %.0518 to i64
  %gep510 = getelementptr float, ptr %invariant.gep509, i64 %358
  store float %357, ptr %gep510, align 4, !tbaa !9
  br label %.critedge463

.critedge463:                                     ; preds = %329, %354, %._crit_edge526, %235
  %.3 = phi float [ %.2, %._crit_edge526 ], [ %.2, %354 ], [ %.1423, %235 ], [ %.2, %329 ]
  %.not458 = icmp ne i32 %.3427472480, 0
  %359 = add nsw i32 %.0518, 2
  %spec.select464 = zext i1 %.not458 to i32
  %spec.select465 = select i1 %.not458, i32 %359, i32 %236
  br label %360

360:                                              ; preds = %.critedge463, %159, %240, %174, %.thread473
  %.4428 = phi i32 [ %.3427472480, %240 ], [ 1, %174 ], [ 0, %.thread473 ], [ 0, %159 ], [ %spec.select464, %.critedge463 ]
  %.4 = phi float [ %.1423, %240 ], [ %.0422517, %174 ], [ %.0422517, %.thread473 ], [ %.0422517, %159 ], [ %.3, %.critedge463 ]
  %.1 = phi i32 [ %236, %240 ], [ %.0518, %174 ], [ %.0518, %.thread473 ], [ %.0518, %159 ], [ %spec.select465, %.critedge463 ]
  %indvars.iv.next524 = add nuw nsw i64 %indvars.iv523, 1
  %.not448.not = icmp ult i64 %indvars.iv523, %158
  br i1 %.not448.not, label %159, label %._crit_edge, !llvm.loop !13

._crit_edge:                                      ; preds = %360, %144
  store float %131, ptr %16, align 4, !tbaa !9
  br label %361

361:                                              ; preds = %142, %._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 4, ptr nonnull %32) #6
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #6
  ret void
}

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

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

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

declare float @slamch_(ptr noundef) local_unnamed_addr #2

declare float @snrm2_(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare void @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 float @sdot_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @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 void @slacpy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @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 void @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 i32 @llvm.umax.i32(i32, i32) #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 = !{!"int", !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,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass