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

; 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 [7 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [8 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.4 = external hidden unnamed_addr constant [6 x i8], align 1
@c_b16 = external hidden global float, align 4
@c_b18 = external hidden global float, align 4
@.str.5 = external hidden unnamed_addr constant [9 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i32 @spstf2_(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) #0 {
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca i64, align 8
  %23 = alloca i64, align 8
  %24 = alloca i64, align 8
  %25 = alloca float, align 4
  %26 = alloca i64, align 8
  %27 = alloca i64, align 8
  %28 = alloca i64, align 8
  %29 = alloca float, align 4
  %30 = alloca i64, align 8
  %31 = alloca i64, align 8
  %32 = alloca float, align 4
  %33 = alloca i64, align 8
  %34 = alloca float, align 4
  %35 = alloca i32, align 4
  store ptr %0, ptr %11, align 8, !tbaa !5
  store ptr %1, ptr %12, align 8, !tbaa !5
  store ptr %2, ptr %13, align 8, !tbaa !5
  store ptr %3, ptr %14, align 8, !tbaa !5
  store ptr %4, ptr %15, align 8, !tbaa !5
  store ptr %5, ptr %16, align 8, !tbaa !5
  store ptr %6, ptr %17, align 8, !tbaa !5
  store ptr %7, ptr %18, align 8, !tbaa !5
  store ptr %8, ptr %19, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #5
  %36 = load ptr, ptr %18, align 8, !tbaa !5
  %37 = getelementptr inbounds float, ptr %36, i32 -1
  store ptr %37, ptr %18, align 8, !tbaa !5
  %38 = load ptr, ptr %15, align 8, !tbaa !5
  %39 = getelementptr inbounds i64, ptr %38, i32 -1
  store ptr %39, ptr %15, align 8, !tbaa !5
  %40 = load ptr, ptr %14, align 8, !tbaa !5
  %41 = load i64, ptr %40, align 8, !tbaa !9
  store i64 %41, ptr %20, align 8, !tbaa !9
  %42 = load i64, ptr %20, align 8, !tbaa !9
  %43 = add nsw i64 1, %42
  store i64 %43, ptr %21, align 8, !tbaa !9
  %44 = load i64, ptr %21, align 8, !tbaa !9
  %45 = load ptr, ptr %13, align 8, !tbaa !5
  %46 = sub i64 0, %44
  %47 = getelementptr inbounds float, ptr %45, i64 %46
  store ptr %47, ptr %13, align 8, !tbaa !5
  %48 = load ptr, ptr %19, align 8, !tbaa !5
  store i64 0, ptr %48, align 8, !tbaa !9
  %49 = load ptr, ptr %11, align 8, !tbaa !5
  %50 = call i64 @lsame_(ptr noundef %49, ptr noundef @.str)
  store i64 %50, ptr %33, align 8, !tbaa !9
  %51 = load i64, ptr %33, align 8, !tbaa !9
  %52 = icmp ne i64 %51, 0
  br i1 %52, label %59, label %53

53:                                               ; preds = %9
  %54 = load ptr, ptr %11, align 8, !tbaa !5
  %55 = call i64 @lsame_(ptr noundef %54, ptr noundef @.str.1)
  %56 = icmp ne i64 %55, 0
  br i1 %56, label %59, label %57

57:                                               ; preds = %53
  %58 = load ptr, ptr %19, align 8, !tbaa !5
  store i64 -1, ptr %58, align 8, !tbaa !9
  br label %82

59:                                               ; preds = %53, %9
  %60 = load ptr, ptr %12, align 8, !tbaa !5
  %61 = load i64, ptr %60, align 8, !tbaa !9
  %62 = icmp slt i64 %61, 0
  br i1 %62, label %63, label %65

63:                                               ; preds = %59
  %64 = load ptr, ptr %19, align 8, !tbaa !5
  store i64 -2, ptr %64, align 8, !tbaa !9
  br label %81

65:                                               ; preds = %59
  %66 = load ptr, ptr %14, align 8, !tbaa !5
  %67 = load i64, ptr %66, align 8, !tbaa !9
  %68 = load ptr, ptr %12, align 8, !tbaa !5
  %69 = load i64, ptr %68, align 8, !tbaa !9
  %70 = icmp sge i64 1, %69
  br i1 %70, label %71, label %72

71:                                               ; preds = %65
  br label %75

72:                                               ; preds = %65
  %73 = load ptr, ptr %12, align 8, !tbaa !5
  %74 = load i64, ptr %73, align 8, !tbaa !9
  br label %75

75:                                               ; preds = %72, %71
  %76 = phi i64 [ 1, %71 ], [ %74, %72 ]
  %77 = icmp slt i64 %67, %76
  br i1 %77, label %78, label %80

78:                                               ; preds = %75
  %79 = load ptr, ptr %19, align 8, !tbaa !5
  store i64 -4, ptr %79, align 8, !tbaa !9
  br label %80

80:                                               ; preds = %78, %75
  br label %81

81:                                               ; preds = %80, %63
  br label %82

82:                                               ; preds = %81, %57
  %83 = load ptr, ptr %19, align 8, !tbaa !5
  %84 = load i64, ptr %83, align 8, !tbaa !9
  %85 = icmp ne i64 %84, 0
  br i1 %85, label %86, label %91

86:                                               ; preds = %82
  %87 = load ptr, ptr %19, align 8, !tbaa !5
  %88 = load i64, ptr %87, align 8, !tbaa !9
  %89 = sub nsw i64 0, %88
  store i64 %89, ptr %22, align 8, !tbaa !9
  %90 = call i32 @xerbla_(ptr noundef @.str.2, ptr noundef %22)
  store i32 0, ptr %10, align 4
  store i32 1, ptr %35, align 4
  br label %779

91:                                               ; preds = %82
  %92 = load ptr, ptr %12, align 8, !tbaa !5
  %93 = load i64, ptr %92, align 8, !tbaa !9
  %94 = icmp eq i64 %93, 0
  br i1 %94, label %95, label %96

95:                                               ; preds = %91
  store i32 0, ptr %10, align 4
  store i32 1, ptr %35, align 4
  br label %779

96:                                               ; preds = %91
  %97 = load ptr, ptr %12, align 8, !tbaa !5
  %98 = load i64, ptr %97, align 8, !tbaa !9
  store i64 %98, ptr %22, align 8, !tbaa !9
  store i64 1, ptr %26, align 8, !tbaa !9
  br label %99

99:                                               ; preds = %108, %96
  %100 = load i64, ptr %26, align 8, !tbaa !9
  %101 = load i64, ptr %22, align 8, !tbaa !9
  %102 = icmp sle i64 %100, %101
  br i1 %102, label %103, label %111

103:                                              ; preds = %99
  %104 = load i64, ptr %26, align 8, !tbaa !9
  %105 = load ptr, ptr %15, align 8, !tbaa !5
  %106 = load i64, ptr %26, align 8, !tbaa !9
  %107 = getelementptr inbounds i64, ptr %105, i64 %106
  store i64 %104, ptr %107, align 8, !tbaa !9
  br label %108

108:                                              ; preds = %103
  %109 = load i64, ptr %26, align 8, !tbaa !9
  %110 = add nsw i64 %109, 1
  store i64 %110, ptr %26, align 8, !tbaa !9
  br label %99, !llvm.loop !11

111:                                              ; preds = %99
  store i64 1, ptr %30, align 8, !tbaa !9
  %112 = load ptr, ptr %13, align 8, !tbaa !5
  %113 = load i64, ptr %30, align 8, !tbaa !9
  %114 = load i64, ptr %30, align 8, !tbaa !9
  %115 = load i64, ptr %20, align 8, !tbaa !9
  %116 = mul nsw i64 %114, %115
  %117 = add nsw i64 %113, %116
  %118 = getelementptr inbounds float, ptr %112, i64 %117
  %119 = load float, ptr %118, align 4, !tbaa !13
  store float %119, ptr %29, align 4, !tbaa !13
  %120 = load ptr, ptr %12, align 8, !tbaa !5
  %121 = load i64, ptr %120, align 8, !tbaa !9
  store i64 %121, ptr %22, align 8, !tbaa !9
  store i64 2, ptr %26, align 8, !tbaa !9
  br label %122

122:                                              ; preds = %148, %111
  %123 = load i64, ptr %26, align 8, !tbaa !9
  %124 = load i64, ptr %22, align 8, !tbaa !9
  %125 = icmp sle i64 %123, %124
  br i1 %125, label %126, label %151

126:                                              ; preds = %122
  %127 = load ptr, ptr %13, align 8, !tbaa !5
  %128 = load i64, ptr %26, align 8, !tbaa !9
  %129 = load i64, ptr %26, align 8, !tbaa !9
  %130 = load i64, ptr %20, align 8, !tbaa !9
  %131 = mul nsw i64 %129, %130
  %132 = add nsw i64 %128, %131
  %133 = getelementptr inbounds float, ptr %127, i64 %132
  %134 = load float, ptr %133, align 4, !tbaa !13
  %135 = load float, ptr %29, align 4, !tbaa !13
  %136 = fcmp ogt float %134, %135
  br i1 %136, label %137, label %147

137:                                              ; preds = %126
  %138 = load i64, ptr %26, align 8, !tbaa !9
  store i64 %138, ptr %30, align 8, !tbaa !9
  %139 = load ptr, ptr %13, align 8, !tbaa !5
  %140 = load i64, ptr %30, align 8, !tbaa !9
  %141 = load i64, ptr %30, align 8, !tbaa !9
  %142 = load i64, ptr %20, align 8, !tbaa !9
  %143 = mul nsw i64 %141, %142
  %144 = add nsw i64 %140, %143
  %145 = getelementptr inbounds float, ptr %139, i64 %144
  %146 = load float, ptr %145, align 4, !tbaa !13
  store float %146, ptr %29, align 4, !tbaa !13
  br label %147

147:                                              ; preds = %137, %126
  br label %148

148:                                              ; preds = %147
  %149 = load i64, ptr %26, align 8, !tbaa !9
  %150 = add nsw i64 %149, 1
  store i64 %150, ptr %26, align 8, !tbaa !9
  br label %122, !llvm.loop !15

151:                                              ; preds = %122
  %152 = load float, ptr %29, align 4, !tbaa !13
  %153 = fcmp oeq float %152, 0.000000e+00
  br i1 %153, label %157, label %154

154:                                              ; preds = %151
  %155 = call i64 @sisnan_(ptr noundef %29)
  %156 = icmp ne i64 %155, 0
  br i1 %156, label %157, label %160

157:                                              ; preds = %154, %151
  %158 = load ptr, ptr %16, align 8, !tbaa !5
  store i64 0, ptr %158, align 8, !tbaa !9
  %159 = load ptr, ptr %19, align 8, !tbaa !5
  store i64 1, ptr %159, align 8, !tbaa !9
  br label %778

160:                                              ; preds = %154
  %161 = load ptr, ptr %17, align 8, !tbaa !5
  %162 = load float, ptr %161, align 4, !tbaa !13
  %163 = fcmp olt float %162, 0.000000e+00
  br i1 %163, label %164, label %174

164:                                              ; preds = %160
  %165 = load ptr, ptr %12, align 8, !tbaa !5
  %166 = load i64, ptr %165, align 8, !tbaa !9
  %167 = sitofp i64 %166 to double
  %168 = call double @slamch_(ptr noundef @.str.3)
  %169 = fmul double %167, %168
  %170 = load float, ptr %29, align 4, !tbaa !13
  %171 = fpext float %170 to double
  %172 = fmul double %169, %171
  %173 = fptrunc double %172 to float
  store float %173, ptr %34, align 4, !tbaa !13
  br label %177

174:                                              ; preds = %160
  %175 = load ptr, ptr %17, align 8, !tbaa !5
  %176 = load float, ptr %175, align 4, !tbaa !13
  store float %176, ptr %34, align 4, !tbaa !13
  br label %177

177:                                              ; preds = %174, %164
  %178 = load ptr, ptr %12, align 8, !tbaa !5
  %179 = load i64, ptr %178, align 8, !tbaa !9
  store i64 %179, ptr %22, align 8, !tbaa !9
  store i64 1, ptr %26, align 8, !tbaa !9
  br label %180

180:                                              ; preds = %188, %177
  %181 = load i64, ptr %26, align 8, !tbaa !9
  %182 = load i64, ptr %22, align 8, !tbaa !9
  %183 = icmp sle i64 %181, %182
  br i1 %183, label %184, label %191

184:                                              ; preds = %180
  %185 = load ptr, ptr %18, align 8, !tbaa !5
  %186 = load i64, ptr %26, align 8, !tbaa !9
  %187 = getelementptr inbounds float, ptr %185, i64 %186
  store float 0.000000e+00, ptr %187, align 4, !tbaa !13
  br label %188

188:                                              ; preds = %184
  %189 = load i64, ptr %26, align 8, !tbaa !9
  %190 = add nsw i64 %189, 1
  store i64 %190, ptr %26, align 8, !tbaa !9
  br label %180, !llvm.loop !16

191:                                              ; preds = %180
  %192 = load i64, ptr %33, align 8, !tbaa !9
  %193 = icmp ne i64 %192, 0
  br i1 %193, label %194, label %484

194:                                              ; preds = %191
  %195 = load ptr, ptr %12, align 8, !tbaa !5
  %196 = load i64, ptr %195, align 8, !tbaa !9
  store i64 %196, ptr %22, align 8, !tbaa !9
  store i64 1, ptr %27, align 8, !tbaa !9
  br label %197

197:                                              ; preds = %480, %194
  %198 = load i64, ptr %27, align 8, !tbaa !9
  %199 = load i64, ptr %22, align 8, !tbaa !9
  %200 = icmp sle i64 %198, %199
  br i1 %200, label %201, label %483

201:                                              ; preds = %197
  %202 = load ptr, ptr %12, align 8, !tbaa !5
  %203 = load i64, ptr %202, align 8, !tbaa !9
  store i64 %203, ptr %23, align 8, !tbaa !9
  %204 = load i64, ptr %27, align 8, !tbaa !9
  store i64 %204, ptr %26, align 8, !tbaa !9
  br label %205

205:                                              ; preds = %249, %201
  %206 = load i64, ptr %26, align 8, !tbaa !9
  %207 = load i64, ptr %23, align 8, !tbaa !9
  %208 = icmp sle i64 %206, %207
  br i1 %208, label %209, label %252

209:                                              ; preds = %205
  %210 = load i64, ptr %27, align 8, !tbaa !9
  %211 = icmp sgt i64 %210, 1
  br i1 %211, label %212, label %229

212:                                              ; preds = %209
  %213 = load ptr, ptr %13, align 8, !tbaa !5
  %214 = load i64, ptr %27, align 8, !tbaa !9
  %215 = sub nsw i64 %214, 1
  %216 = load i64, ptr %26, align 8, !tbaa !9
  %217 = load i64, ptr %20, align 8, !tbaa !9
  %218 = mul nsw i64 %216, %217
  %219 = add nsw i64 %215, %218
  %220 = getelementptr inbounds float, ptr %213, i64 %219
  %221 = load float, ptr %220, align 4, !tbaa !13
  store float %221, ptr %25, align 4, !tbaa !13
  %222 = load float, ptr %25, align 4, !tbaa !13
  %223 = load float, ptr %25, align 4, !tbaa !13
  %224 = load ptr, ptr %18, align 8, !tbaa !5
  %225 = load i64, ptr %26, align 8, !tbaa !9
  %226 = getelementptr inbounds float, ptr %224, i64 %225
  %227 = load float, ptr %226, align 4, !tbaa !13
  %228 = call float @llvm.fmuladd.f32(float %222, float %223, float %227)
  store float %228, ptr %226, align 4, !tbaa !13
  br label %229

229:                                              ; preds = %212, %209
  %230 = load ptr, ptr %13, align 8, !tbaa !5
  %231 = load i64, ptr %26, align 8, !tbaa !9
  %232 = load i64, ptr %26, align 8, !tbaa !9
  %233 = load i64, ptr %20, align 8, !tbaa !9
  %234 = mul nsw i64 %232, %233
  %235 = add nsw i64 %231, %234
  %236 = getelementptr inbounds float, ptr %230, i64 %235
  %237 = load float, ptr %236, align 4, !tbaa !13
  %238 = load ptr, ptr %18, align 8, !tbaa !5
  %239 = load i64, ptr %26, align 8, !tbaa !9
  %240 = getelementptr inbounds float, ptr %238, i64 %239
  %241 = load float, ptr %240, align 4, !tbaa !13
  %242 = fsub float %237, %241
  %243 = load ptr, ptr %18, align 8, !tbaa !5
  %244 = load ptr, ptr %12, align 8, !tbaa !5
  %245 = load i64, ptr %244, align 8, !tbaa !9
  %246 = load i64, ptr %26, align 8, !tbaa !9
  %247 = add nsw i64 %245, %246
  %248 = getelementptr inbounds float, ptr %243, i64 %247
  store float %242, ptr %248, align 4, !tbaa !13
  br label %249

249:                                              ; preds = %229
  %250 = load i64, ptr %26, align 8, !tbaa !9
  %251 = add nsw i64 %250, 1
  store i64 %251, ptr %26, align 8, !tbaa !9
  br label %205, !llvm.loop !17

252:                                              ; preds = %205
  %253 = load i64, ptr %27, align 8, !tbaa !9
  %254 = icmp sgt i64 %253, 1
  br i1 %254, label %255, label %299

255:                                              ; preds = %252
  %256 = load ptr, ptr %12, align 8, !tbaa !5
  %257 = load i64, ptr %256, align 8, !tbaa !9
  %258 = shl i64 %257, 1
  %259 = load ptr, ptr %12, align 8, !tbaa !5
  %260 = load i64, ptr %259, align 8, !tbaa !9
  %261 = load i64, ptr %27, align 8, !tbaa !9
  %262 = add nsw i64 %260, %261
  %263 = sub nsw i64 %258, %262
  %264 = add nsw i64 %263, 1
  store i64 %264, ptr %28, align 8, !tbaa !9
  %265 = load ptr, ptr %18, align 8, !tbaa !5
  %266 = load ptr, ptr %12, align 8, !tbaa !5
  %267 = load i64, ptr %266, align 8, !tbaa !9
  %268 = load i64, ptr %27, align 8, !tbaa !9
  %269 = add nsw i64 %267, %268
  %270 = getelementptr inbounds float, ptr %265, i64 %269
  %271 = call i64 @smaxloc_(ptr noundef %270, ptr noundef %28)
  store i64 %271, ptr %31, align 8, !tbaa !9
  %272 = load i64, ptr %31, align 8, !tbaa !9
  %273 = load i64, ptr %27, align 8, !tbaa !9
  %274 = add nsw i64 %272, %273
  %275 = sub nsw i64 %274, 1
  store i64 %275, ptr %30, align 8, !tbaa !9
  %276 = load ptr, ptr %18, align 8, !tbaa !5
  %277 = load ptr, ptr %12, align 8, !tbaa !5
  %278 = load i64, ptr %277, align 8, !tbaa !9
  %279 = load i64, ptr %30, align 8, !tbaa !9
  %280 = add nsw i64 %278, %279
  %281 = getelementptr inbounds float, ptr %276, i64 %280
  %282 = load float, ptr %281, align 4, !tbaa !13
  store float %282, ptr %29, align 4, !tbaa !13
  %283 = load float, ptr %29, align 4, !tbaa !13
  %284 = load float, ptr %34, align 4, !tbaa !13
  %285 = fcmp ole float %283, %284
  br i1 %285, label %289, label %286

286:                                              ; preds = %255
  %287 = call i64 @sisnan_(ptr noundef %29)
  %288 = icmp ne i64 %287, 0
  br i1 %288, label %289, label %298

289:                                              ; preds = %286, %255
  %290 = load float, ptr %29, align 4, !tbaa !13
  %291 = load ptr, ptr %13, align 8, !tbaa !5
  %292 = load i64, ptr %27, align 8, !tbaa !9
  %293 = load i64, ptr %27, align 8, !tbaa !9
  %294 = load i64, ptr %20, align 8, !tbaa !9
  %295 = mul nsw i64 %293, %294
  %296 = add nsw i64 %292, %295
  %297 = getelementptr inbounds float, ptr %291, i64 %296
  store float %290, ptr %297, align 4, !tbaa !13
  br label %773

298:                                              ; preds = %286
  br label %299

299:                                              ; preds = %298, %252
  %300 = load i64, ptr %27, align 8, !tbaa !9
  %301 = load i64, ptr %30, align 8, !tbaa !9
  %302 = icmp ne i64 %300, %301
  br i1 %302, label %303, label %415

303:                                              ; preds = %299
  %304 = load ptr, ptr %13, align 8, !tbaa !5
  %305 = load i64, ptr %27, align 8, !tbaa !9
  %306 = load i64, ptr %27, align 8, !tbaa !9
  %307 = load i64, ptr %20, align 8, !tbaa !9
  %308 = mul nsw i64 %306, %307
  %309 = add nsw i64 %305, %308
  %310 = getelementptr inbounds float, ptr %304, i64 %309
  %311 = load float, ptr %310, align 4, !tbaa !13
  %312 = load ptr, ptr %13, align 8, !tbaa !5
  %313 = load i64, ptr %30, align 8, !tbaa !9
  %314 = load i64, ptr %30, align 8, !tbaa !9
  %315 = load i64, ptr %20, align 8, !tbaa !9
  %316 = mul nsw i64 %314, %315
  %317 = add nsw i64 %313, %316
  %318 = getelementptr inbounds float, ptr %312, i64 %317
  store float %311, ptr %318, align 4, !tbaa !13
  %319 = load i64, ptr %27, align 8, !tbaa !9
  %320 = sub nsw i64 %319, 1
  store i64 %320, ptr %23, align 8, !tbaa !9
  %321 = load ptr, ptr %13, align 8, !tbaa !5
  %322 = load i64, ptr %27, align 8, !tbaa !9
  %323 = load i64, ptr %20, align 8, !tbaa !9
  %324 = mul nsw i64 %322, %323
  %325 = add nsw i64 %324, 1
  %326 = getelementptr inbounds float, ptr %321, i64 %325
  %327 = load ptr, ptr %13, align 8, !tbaa !5
  %328 = load i64, ptr %30, align 8, !tbaa !9
  %329 = load i64, ptr %20, align 8, !tbaa !9
  %330 = mul nsw i64 %328, %329
  %331 = add nsw i64 %330, 1
  %332 = getelementptr inbounds float, ptr %327, i64 %331
  %333 = call i32 @f2c_sswap(ptr noundef %23, ptr noundef %326, ptr noundef @c__1, ptr noundef %332, ptr noundef @c__1)
  %334 = load i64, ptr %30, align 8, !tbaa !9
  %335 = load ptr, ptr %12, align 8, !tbaa !5
  %336 = load i64, ptr %335, align 8, !tbaa !9
  %337 = icmp slt i64 %334, %336
  br i1 %337, label %338, label %362

338:                                              ; preds = %303
  %339 = load ptr, ptr %12, align 8, !tbaa !5
  %340 = load i64, ptr %339, align 8, !tbaa !9
  %341 = load i64, ptr %30, align 8, !tbaa !9
  %342 = sub nsw i64 %340, %341
  store i64 %342, ptr %23, align 8, !tbaa !9
  %343 = load ptr, ptr %13, align 8, !tbaa !5
  %344 = load i64, ptr %27, align 8, !tbaa !9
  %345 = load i64, ptr %30, align 8, !tbaa !9
  %346 = add nsw i64 %345, 1
  %347 = load i64, ptr %20, align 8, !tbaa !9
  %348 = mul nsw i64 %346, %347
  %349 = add nsw i64 %344, %348
  %350 = getelementptr inbounds float, ptr %343, i64 %349
  %351 = load ptr, ptr %14, align 8, !tbaa !5
  %352 = load ptr, ptr %13, align 8, !tbaa !5
  %353 = load i64, ptr %30, align 8, !tbaa !9
  %354 = load i64, ptr %30, align 8, !tbaa !9
  %355 = add nsw i64 %354, 1
  %356 = load i64, ptr %20, align 8, !tbaa !9
  %357 = mul nsw i64 %355, %356
  %358 = add nsw i64 %353, %357
  %359 = getelementptr inbounds float, ptr %352, i64 %358
  %360 = load ptr, ptr %14, align 8, !tbaa !5
  %361 = call i32 @f2c_sswap(ptr noundef %23, ptr noundef %350, ptr noundef %351, ptr noundef %359, ptr noundef %360)
  br label %362

362:                                              ; preds = %338, %303
  %363 = load i64, ptr %30, align 8, !tbaa !9
  %364 = load i64, ptr %27, align 8, !tbaa !9
  %365 = sub nsw i64 %363, %364
  %366 = sub nsw i64 %365, 1
  store i64 %366, ptr %23, align 8, !tbaa !9
  %367 = load ptr, ptr %13, align 8, !tbaa !5
  %368 = load i64, ptr %27, align 8, !tbaa !9
  %369 = load i64, ptr %27, align 8, !tbaa !9
  %370 = add nsw i64 %369, 1
  %371 = load i64, ptr %20, align 8, !tbaa !9
  %372 = mul nsw i64 %370, %371
  %373 = add nsw i64 %368, %372
  %374 = getelementptr inbounds float, ptr %367, i64 %373
  %375 = load ptr, ptr %14, align 8, !tbaa !5
  %376 = load ptr, ptr %13, align 8, !tbaa !5
  %377 = load i64, ptr %27, align 8, !tbaa !9
  %378 = add nsw i64 %377, 1
  %379 = load i64, ptr %30, align 8, !tbaa !9
  %380 = load i64, ptr %20, align 8, !tbaa !9
  %381 = mul nsw i64 %379, %380
  %382 = add nsw i64 %378, %381
  %383 = getelementptr inbounds float, ptr %376, i64 %382
  %384 = call i32 @f2c_sswap(ptr noundef %23, ptr noundef %374, ptr noundef %375, ptr noundef %383, ptr noundef @c__1)
  %385 = load ptr, ptr %18, align 8, !tbaa !5
  %386 = load i64, ptr %27, align 8, !tbaa !9
  %387 = getelementptr inbounds float, ptr %385, i64 %386
  %388 = load float, ptr %387, align 4, !tbaa !13
  store float %388, ptr %32, align 4, !tbaa !13
  %389 = load ptr, ptr %18, align 8, !tbaa !5
  %390 = load i64, ptr %30, align 8, !tbaa !9
  %391 = getelementptr inbounds float, ptr %389, i64 %390
  %392 = load float, ptr %391, align 4, !tbaa !13
  %393 = load ptr, ptr %18, align 8, !tbaa !5
  %394 = load i64, ptr %27, align 8, !tbaa !9
  %395 = getelementptr inbounds float, ptr %393, i64 %394
  store float %392, ptr %395, align 4, !tbaa !13
  %396 = load float, ptr %32, align 4, !tbaa !13
  %397 = load ptr, ptr %18, align 8, !tbaa !5
  %398 = load i64, ptr %30, align 8, !tbaa !9
  %399 = getelementptr inbounds float, ptr %397, i64 %398
  store float %396, ptr %399, align 4, !tbaa !13
  %400 = load ptr, ptr %15, align 8, !tbaa !5
  %401 = load i64, ptr %30, align 8, !tbaa !9
  %402 = getelementptr inbounds i64, ptr %400, i64 %401
  %403 = load i64, ptr %402, align 8, !tbaa !9
  store i64 %403, ptr %31, align 8, !tbaa !9
  %404 = load ptr, ptr %15, align 8, !tbaa !5
  %405 = load i64, ptr %27, align 8, !tbaa !9
  %406 = getelementptr inbounds i64, ptr %404, i64 %405
  %407 = load i64, ptr %406, align 8, !tbaa !9
  %408 = load ptr, ptr %15, align 8, !tbaa !5
  %409 = load i64, ptr %30, align 8, !tbaa !9
  %410 = getelementptr inbounds i64, ptr %408, i64 %409
  store i64 %407, ptr %410, align 8, !tbaa !9
  %411 = load i64, ptr %31, align 8, !tbaa !9
  %412 = load ptr, ptr %15, align 8, !tbaa !5
  %413 = load i64, ptr %27, align 8, !tbaa !9
  %414 = getelementptr inbounds i64, ptr %412, i64 %413
  store i64 %411, ptr %414, align 8, !tbaa !9
  br label %415

415:                                              ; preds = %362, %299
  %416 = load float, ptr %29, align 4, !tbaa !13
  %417 = fpext float %416 to double
  %418 = call double @sqrt(double noundef %417) #5
  %419 = fptrunc double %418 to float
  store float %419, ptr %29, align 4, !tbaa !13
  %420 = load float, ptr %29, align 4, !tbaa !13
  %421 = load ptr, ptr %13, align 8, !tbaa !5
  %422 = load i64, ptr %27, align 8, !tbaa !9
  %423 = load i64, ptr %27, align 8, !tbaa !9
  %424 = load i64, ptr %20, align 8, !tbaa !9
  %425 = mul nsw i64 %423, %424
  %426 = add nsw i64 %422, %425
  %427 = getelementptr inbounds float, ptr %421, i64 %426
  store float %420, ptr %427, align 4, !tbaa !13
  %428 = load i64, ptr %27, align 8, !tbaa !9
  %429 = load ptr, ptr %12, align 8, !tbaa !5
  %430 = load i64, ptr %429, align 8, !tbaa !9
  %431 = icmp slt i64 %428, %430
  br i1 %431, label %432, label %479

432:                                              ; preds = %415
  %433 = load i64, ptr %27, align 8, !tbaa !9
  %434 = sub nsw i64 %433, 1
  store i64 %434, ptr %23, align 8, !tbaa !9
  %435 = load ptr, ptr %12, align 8, !tbaa !5
  %436 = load i64, ptr %435, align 8, !tbaa !9
  %437 = load i64, ptr %27, align 8, !tbaa !9
  %438 = sub nsw i64 %436, %437
  store i64 %438, ptr %24, align 8, !tbaa !9
  %439 = load ptr, ptr %13, align 8, !tbaa !5
  %440 = load i64, ptr %27, align 8, !tbaa !9
  %441 = add nsw i64 %440, 1
  %442 = load i64, ptr %20, align 8, !tbaa !9
  %443 = mul nsw i64 %441, %442
  %444 = add nsw i64 %443, 1
  %445 = getelementptr inbounds float, ptr %439, i64 %444
  %446 = load ptr, ptr %14, align 8, !tbaa !5
  %447 = load ptr, ptr %13, align 8, !tbaa !5
  %448 = load i64, ptr %27, align 8, !tbaa !9
  %449 = load i64, ptr %20, align 8, !tbaa !9
  %450 = mul nsw i64 %448, %449
  %451 = add nsw i64 %450, 1
  %452 = getelementptr inbounds float, ptr %447, i64 %451
  %453 = load ptr, ptr %13, align 8, !tbaa !5
  %454 = load i64, ptr %27, align 8, !tbaa !9
  %455 = load i64, ptr %27, align 8, !tbaa !9
  %456 = add nsw i64 %455, 1
  %457 = load i64, ptr %20, align 8, !tbaa !9
  %458 = mul nsw i64 %456, %457
  %459 = add nsw i64 %454, %458
  %460 = getelementptr inbounds float, ptr %453, i64 %459
  %461 = load ptr, ptr %14, align 8, !tbaa !5
  %462 = call i32 @f2c_sgemv(ptr noundef @.str.4, ptr noundef %23, ptr noundef %24, ptr noundef @c_b16, ptr noundef %445, ptr noundef %446, ptr noundef %452, ptr noundef @c__1, ptr noundef @c_b18, ptr noundef %460, ptr noundef %461)
  %463 = load ptr, ptr %12, align 8, !tbaa !5
  %464 = load i64, ptr %463, align 8, !tbaa !9
  %465 = load i64, ptr %27, align 8, !tbaa !9
  %466 = sub nsw i64 %464, %465
  store i64 %466, ptr %23, align 8, !tbaa !9
  %467 = load float, ptr %29, align 4, !tbaa !13
  %468 = fdiv float 1.000000e+00, %467
  store float %468, ptr %25, align 4, !tbaa !13
  %469 = load ptr, ptr %13, align 8, !tbaa !5
  %470 = load i64, ptr %27, align 8, !tbaa !9
  %471 = load i64, ptr %27, align 8, !tbaa !9
  %472 = add nsw i64 %471, 1
  %473 = load i64, ptr %20, align 8, !tbaa !9
  %474 = mul nsw i64 %472, %473
  %475 = add nsw i64 %470, %474
  %476 = getelementptr inbounds float, ptr %469, i64 %475
  %477 = load ptr, ptr %14, align 8, !tbaa !5
  %478 = call i32 @f2c_sscal(ptr noundef %23, ptr noundef %25, ptr noundef %476, ptr noundef %477)
  br label %479

479:                                              ; preds = %432, %415
  br label %480

480:                                              ; preds = %479
  %481 = load i64, ptr %27, align 8, !tbaa !9
  %482 = add nsw i64 %481, 1
  store i64 %482, ptr %27, align 8, !tbaa !9
  br label %197, !llvm.loop !18

483:                                              ; preds = %197
  br label %769

484:                                              ; preds = %191
  %485 = load ptr, ptr %12, align 8, !tbaa !5
  %486 = load i64, ptr %485, align 8, !tbaa !9
  store i64 %486, ptr %22, align 8, !tbaa !9
  store i64 1, ptr %27, align 8, !tbaa !9
  br label %487

487:                                              ; preds = %765, %484
  %488 = load i64, ptr %27, align 8, !tbaa !9
  %489 = load i64, ptr %22, align 8, !tbaa !9
  %490 = icmp sle i64 %488, %489
  br i1 %490, label %491, label %768

491:                                              ; preds = %487
  %492 = load ptr, ptr %12, align 8, !tbaa !5
  %493 = load i64, ptr %492, align 8, !tbaa !9
  store i64 %493, ptr %23, align 8, !tbaa !9
  %494 = load i64, ptr %27, align 8, !tbaa !9
  store i64 %494, ptr %26, align 8, !tbaa !9
  br label %495

495:                                              ; preds = %539, %491
  %496 = load i64, ptr %26, align 8, !tbaa !9
  %497 = load i64, ptr %23, align 8, !tbaa !9
  %498 = icmp sle i64 %496, %497
  br i1 %498, label %499, label %542

499:                                              ; preds = %495
  %500 = load i64, ptr %27, align 8, !tbaa !9
  %501 = icmp sgt i64 %500, 1
  br i1 %501, label %502, label %519

502:                                              ; preds = %499
  %503 = load ptr, ptr %13, align 8, !tbaa !5
  %504 = load i64, ptr %26, align 8, !tbaa !9
  %505 = load i64, ptr %27, align 8, !tbaa !9
  %506 = sub nsw i64 %505, 1
  %507 = load i64, ptr %20, align 8, !tbaa !9
  %508 = mul nsw i64 %506, %507
  %509 = add nsw i64 %504, %508
  %510 = getelementptr inbounds float, ptr %503, i64 %509
  %511 = load float, ptr %510, align 4, !tbaa !13
  store float %511, ptr %25, align 4, !tbaa !13
  %512 = load float, ptr %25, align 4, !tbaa !13
  %513 = load float, ptr %25, align 4, !tbaa !13
  %514 = load ptr, ptr %18, align 8, !tbaa !5
  %515 = load i64, ptr %26, align 8, !tbaa !9
  %516 = getelementptr inbounds float, ptr %514, i64 %515
  %517 = load float, ptr %516, align 4, !tbaa !13
  %518 = call float @llvm.fmuladd.f32(float %512, float %513, float %517)
  store float %518, ptr %516, align 4, !tbaa !13
  br label %519

519:                                              ; preds = %502, %499
  %520 = load ptr, ptr %13, align 8, !tbaa !5
  %521 = load i64, ptr %26, align 8, !tbaa !9
  %522 = load i64, ptr %26, align 8, !tbaa !9
  %523 = load i64, ptr %20, align 8, !tbaa !9
  %524 = mul nsw i64 %522, %523
  %525 = add nsw i64 %521, %524
  %526 = getelementptr inbounds float, ptr %520, i64 %525
  %527 = load float, ptr %526, align 4, !tbaa !13
  %528 = load ptr, ptr %18, align 8, !tbaa !5
  %529 = load i64, ptr %26, align 8, !tbaa !9
  %530 = getelementptr inbounds float, ptr %528, i64 %529
  %531 = load float, ptr %530, align 4, !tbaa !13
  %532 = fsub float %527, %531
  %533 = load ptr, ptr %18, align 8, !tbaa !5
  %534 = load ptr, ptr %12, align 8, !tbaa !5
  %535 = load i64, ptr %534, align 8, !tbaa !9
  %536 = load i64, ptr %26, align 8, !tbaa !9
  %537 = add nsw i64 %535, %536
  %538 = getelementptr inbounds float, ptr %533, i64 %537
  store float %532, ptr %538, align 4, !tbaa !13
  br label %539

539:                                              ; preds = %519
  %540 = load i64, ptr %26, align 8, !tbaa !9
  %541 = add nsw i64 %540, 1
  store i64 %541, ptr %26, align 8, !tbaa !9
  br label %495, !llvm.loop !19

542:                                              ; preds = %495
  %543 = load i64, ptr %27, align 8, !tbaa !9
  %544 = icmp sgt i64 %543, 1
  br i1 %544, label %545, label %589

545:                                              ; preds = %542
  %546 = load ptr, ptr %12, align 8, !tbaa !5
  %547 = load i64, ptr %546, align 8, !tbaa !9
  %548 = shl i64 %547, 1
  %549 = load ptr, ptr %12, align 8, !tbaa !5
  %550 = load i64, ptr %549, align 8, !tbaa !9
  %551 = load i64, ptr %27, align 8, !tbaa !9
  %552 = add nsw i64 %550, %551
  %553 = sub nsw i64 %548, %552
  %554 = add nsw i64 %553, 1
  store i64 %554, ptr %28, align 8, !tbaa !9
  %555 = load ptr, ptr %18, align 8, !tbaa !5
  %556 = load ptr, ptr %12, align 8, !tbaa !5
  %557 = load i64, ptr %556, align 8, !tbaa !9
  %558 = load i64, ptr %27, align 8, !tbaa !9
  %559 = add nsw i64 %557, %558
  %560 = getelementptr inbounds float, ptr %555, i64 %559
  %561 = call i64 @smaxloc_(ptr noundef %560, ptr noundef %28)
  store i64 %561, ptr %31, align 8, !tbaa !9
  %562 = load i64, ptr %31, align 8, !tbaa !9
  %563 = load i64, ptr %27, align 8, !tbaa !9
  %564 = add nsw i64 %562, %563
  %565 = sub nsw i64 %564, 1
  store i64 %565, ptr %30, align 8, !tbaa !9
  %566 = load ptr, ptr %18, align 8, !tbaa !5
  %567 = load ptr, ptr %12, align 8, !tbaa !5
  %568 = load i64, ptr %567, align 8, !tbaa !9
  %569 = load i64, ptr %30, align 8, !tbaa !9
  %570 = add nsw i64 %568, %569
  %571 = getelementptr inbounds float, ptr %566, i64 %570
  %572 = load float, ptr %571, align 4, !tbaa !13
  store float %572, ptr %29, align 4, !tbaa !13
  %573 = load float, ptr %29, align 4, !tbaa !13
  %574 = load float, ptr %34, align 4, !tbaa !13
  %575 = fcmp ole float %573, %574
  br i1 %575, label %579, label %576

576:                                              ; preds = %545
  %577 = call i64 @sisnan_(ptr noundef %29)
  %578 = icmp ne i64 %577, 0
  br i1 %578, label %579, label %588

579:                                              ; preds = %576, %545
  %580 = load float, ptr %29, align 4, !tbaa !13
  %581 = load ptr, ptr %13, align 8, !tbaa !5
  %582 = load i64, ptr %27, align 8, !tbaa !9
  %583 = load i64, ptr %27, align 8, !tbaa !9
  %584 = load i64, ptr %20, align 8, !tbaa !9
  %585 = mul nsw i64 %583, %584
  %586 = add nsw i64 %582, %585
  %587 = getelementptr inbounds float, ptr %581, i64 %586
  store float %580, ptr %587, align 4, !tbaa !13
  br label %773

588:                                              ; preds = %576
  br label %589

589:                                              ; preds = %588, %542
  %590 = load i64, ptr %27, align 8, !tbaa !9
  %591 = load i64, ptr %30, align 8, !tbaa !9
  %592 = icmp ne i64 %590, %591
  br i1 %592, label %593, label %703

593:                                              ; preds = %589
  %594 = load ptr, ptr %13, align 8, !tbaa !5
  %595 = load i64, ptr %27, align 8, !tbaa !9
  %596 = load i64, ptr %27, align 8, !tbaa !9
  %597 = load i64, ptr %20, align 8, !tbaa !9
  %598 = mul nsw i64 %596, %597
  %599 = add nsw i64 %595, %598
  %600 = getelementptr inbounds float, ptr %594, i64 %599
  %601 = load float, ptr %600, align 4, !tbaa !13
  %602 = load ptr, ptr %13, align 8, !tbaa !5
  %603 = load i64, ptr %30, align 8, !tbaa !9
  %604 = load i64, ptr %30, align 8, !tbaa !9
  %605 = load i64, ptr %20, align 8, !tbaa !9
  %606 = mul nsw i64 %604, %605
  %607 = add nsw i64 %603, %606
  %608 = getelementptr inbounds float, ptr %602, i64 %607
  store float %601, ptr %608, align 4, !tbaa !13
  %609 = load i64, ptr %27, align 8, !tbaa !9
  %610 = sub nsw i64 %609, 1
  store i64 %610, ptr %23, align 8, !tbaa !9
  %611 = load ptr, ptr %13, align 8, !tbaa !5
  %612 = load i64, ptr %27, align 8, !tbaa !9
  %613 = load i64, ptr %20, align 8, !tbaa !9
  %614 = add nsw i64 %612, %613
  %615 = getelementptr inbounds float, ptr %611, i64 %614
  %616 = load ptr, ptr %14, align 8, !tbaa !5
  %617 = load ptr, ptr %13, align 8, !tbaa !5
  %618 = load i64, ptr %30, align 8, !tbaa !9
  %619 = load i64, ptr %20, align 8, !tbaa !9
  %620 = add nsw i64 %618, %619
  %621 = getelementptr inbounds float, ptr %617, i64 %620
  %622 = load ptr, ptr %14, align 8, !tbaa !5
  %623 = call i32 @f2c_sswap(ptr noundef %23, ptr noundef %615, ptr noundef %616, ptr noundef %621, ptr noundef %622)
  %624 = load i64, ptr %30, align 8, !tbaa !9
  %625 = load ptr, ptr %12, align 8, !tbaa !5
  %626 = load i64, ptr %625, align 8, !tbaa !9
  %627 = icmp slt i64 %624, %626
  br i1 %627, label %628, label %650

628:                                              ; preds = %593
  %629 = load ptr, ptr %12, align 8, !tbaa !5
  %630 = load i64, ptr %629, align 8, !tbaa !9
  %631 = load i64, ptr %30, align 8, !tbaa !9
  %632 = sub nsw i64 %630, %631
  store i64 %632, ptr %23, align 8, !tbaa !9
  %633 = load ptr, ptr %13, align 8, !tbaa !5
  %634 = load i64, ptr %30, align 8, !tbaa !9
  %635 = add nsw i64 %634, 1
  %636 = load i64, ptr %27, align 8, !tbaa !9
  %637 = load i64, ptr %20, align 8, !tbaa !9
  %638 = mul nsw i64 %636, %637
  %639 = add nsw i64 %635, %638
  %640 = getelementptr inbounds float, ptr %633, i64 %639
  %641 = load ptr, ptr %13, align 8, !tbaa !5
  %642 = load i64, ptr %30, align 8, !tbaa !9
  %643 = add nsw i64 %642, 1
  %644 = load i64, ptr %30, align 8, !tbaa !9
  %645 = load i64, ptr %20, align 8, !tbaa !9
  %646 = mul nsw i64 %644, %645
  %647 = add nsw i64 %643, %646
  %648 = getelementptr inbounds float, ptr %641, i64 %647
  %649 = call i32 @f2c_sswap(ptr noundef %23, ptr noundef %640, ptr noundef @c__1, ptr noundef %648, ptr noundef @c__1)
  br label %650

650:                                              ; preds = %628, %593
  %651 = load i64, ptr %30, align 8, !tbaa !9
  %652 = load i64, ptr %27, align 8, !tbaa !9
  %653 = sub nsw i64 %651, %652
  %654 = sub nsw i64 %653, 1
  store i64 %654, ptr %23, align 8, !tbaa !9
  %655 = load ptr, ptr %13, align 8, !tbaa !5
  %656 = load i64, ptr %27, align 8, !tbaa !9
  %657 = add nsw i64 %656, 1
  %658 = load i64, ptr %27, align 8, !tbaa !9
  %659 = load i64, ptr %20, align 8, !tbaa !9
  %660 = mul nsw i64 %658, %659
  %661 = add nsw i64 %657, %660
  %662 = getelementptr inbounds float, ptr %655, i64 %661
  %663 = load ptr, ptr %13, align 8, !tbaa !5
  %664 = load i64, ptr %30, align 8, !tbaa !9
  %665 = load i64, ptr %27, align 8, !tbaa !9
  %666 = add nsw i64 %665, 1
  %667 = load i64, ptr %20, align 8, !tbaa !9
  %668 = mul nsw i64 %666, %667
  %669 = add nsw i64 %664, %668
  %670 = getelementptr inbounds float, ptr %663, i64 %669
  %671 = load ptr, ptr %14, align 8, !tbaa !5
  %672 = call i32 @f2c_sswap(ptr noundef %23, ptr noundef %662, ptr noundef @c__1, ptr noundef %670, ptr noundef %671)
  %673 = load ptr, ptr %18, align 8, !tbaa !5
  %674 = load i64, ptr %27, align 8, !tbaa !9
  %675 = getelementptr inbounds float, ptr %673, i64 %674
  %676 = load float, ptr %675, align 4, !tbaa !13
  store float %676, ptr %32, align 4, !tbaa !13
  %677 = load ptr, ptr %18, align 8, !tbaa !5
  %678 = load i64, ptr %30, align 8, !tbaa !9
  %679 = getelementptr inbounds float, ptr %677, i64 %678
  %680 = load float, ptr %679, align 4, !tbaa !13
  %681 = load ptr, ptr %18, align 8, !tbaa !5
  %682 = load i64, ptr %27, align 8, !tbaa !9
  %683 = getelementptr inbounds float, ptr %681, i64 %682
  store float %680, ptr %683, align 4, !tbaa !13
  %684 = load float, ptr %32, align 4, !tbaa !13
  %685 = load ptr, ptr %18, align 8, !tbaa !5
  %686 = load i64, ptr %30, align 8, !tbaa !9
  %687 = getelementptr inbounds float, ptr %685, i64 %686
  store float %684, ptr %687, align 4, !tbaa !13
  %688 = load ptr, ptr %15, align 8, !tbaa !5
  %689 = load i64, ptr %30, align 8, !tbaa !9
  %690 = getelementptr inbounds i64, ptr %688, i64 %689
  %691 = load i64, ptr %690, align 8, !tbaa !9
  store i64 %691, ptr %31, align 8, !tbaa !9
  %692 = load ptr, ptr %15, align 8, !tbaa !5
  %693 = load i64, ptr %27, align 8, !tbaa !9
  %694 = getelementptr inbounds i64, ptr %692, i64 %693
  %695 = load i64, ptr %694, align 8, !tbaa !9
  %696 = load ptr, ptr %15, align 8, !tbaa !5
  %697 = load i64, ptr %30, align 8, !tbaa !9
  %698 = getelementptr inbounds i64, ptr %696, i64 %697
  store i64 %695, ptr %698, align 8, !tbaa !9
  %699 = load i64, ptr %31, align 8, !tbaa !9
  %700 = load ptr, ptr %15, align 8, !tbaa !5
  %701 = load i64, ptr %27, align 8, !tbaa !9
  %702 = getelementptr inbounds i64, ptr %700, i64 %701
  store i64 %699, ptr %702, align 8, !tbaa !9
  br label %703

703:                                              ; preds = %650, %589
  %704 = load float, ptr %29, align 4, !tbaa !13
  %705 = fpext float %704 to double
  %706 = call double @sqrt(double noundef %705) #5
  %707 = fptrunc double %706 to float
  store float %707, ptr %29, align 4, !tbaa !13
  %708 = load float, ptr %29, align 4, !tbaa !13
  %709 = load ptr, ptr %13, align 8, !tbaa !5
  %710 = load i64, ptr %27, align 8, !tbaa !9
  %711 = load i64, ptr %27, align 8, !tbaa !9
  %712 = load i64, ptr %20, align 8, !tbaa !9
  %713 = mul nsw i64 %711, %712
  %714 = add nsw i64 %710, %713
  %715 = getelementptr inbounds float, ptr %709, i64 %714
  store float %708, ptr %715, align 4, !tbaa !13
  %716 = load i64, ptr %27, align 8, !tbaa !9
  %717 = load ptr, ptr %12, align 8, !tbaa !5
  %718 = load i64, ptr %717, align 8, !tbaa !9
  %719 = icmp slt i64 %716, %718
  br i1 %719, label %720, label %764

720:                                              ; preds = %703
  %721 = load ptr, ptr %12, align 8, !tbaa !5
  %722 = load i64, ptr %721, align 8, !tbaa !9
  %723 = load i64, ptr %27, align 8, !tbaa !9
  %724 = sub nsw i64 %722, %723
  store i64 %724, ptr %23, align 8, !tbaa !9
  %725 = load i64, ptr %27, align 8, !tbaa !9
  %726 = sub nsw i64 %725, 1
  store i64 %726, ptr %24, align 8, !tbaa !9
  %727 = load ptr, ptr %13, align 8, !tbaa !5
  %728 = load i64, ptr %27, align 8, !tbaa !9
  %729 = add nsw i64 %728, 1
  %730 = load i64, ptr %20, align 8, !tbaa !9
  %731 = add nsw i64 %729, %730
  %732 = getelementptr inbounds float, ptr %727, i64 %731
  %733 = load ptr, ptr %14, align 8, !tbaa !5
  %734 = load ptr, ptr %13, align 8, !tbaa !5
  %735 = load i64, ptr %27, align 8, !tbaa !9
  %736 = load i64, ptr %20, align 8, !tbaa !9
  %737 = add nsw i64 %735, %736
  %738 = getelementptr inbounds float, ptr %734, i64 %737
  %739 = load ptr, ptr %14, align 8, !tbaa !5
  %740 = load ptr, ptr %13, align 8, !tbaa !5
  %741 = load i64, ptr %27, align 8, !tbaa !9
  %742 = add nsw i64 %741, 1
  %743 = load i64, ptr %27, align 8, !tbaa !9
  %744 = load i64, ptr %20, align 8, !tbaa !9
  %745 = mul nsw i64 %743, %744
  %746 = add nsw i64 %742, %745
  %747 = getelementptr inbounds float, ptr %740, i64 %746
  %748 = call i32 @f2c_sgemv(ptr noundef @.str.5, ptr noundef %23, ptr noundef %24, ptr noundef @c_b16, ptr noundef %732, ptr noundef %733, ptr noundef %738, ptr noundef %739, ptr noundef @c_b18, ptr noundef %747, ptr noundef @c__1)
  %749 = load ptr, ptr %12, align 8, !tbaa !5
  %750 = load i64, ptr %749, align 8, !tbaa !9
  %751 = load i64, ptr %27, align 8, !tbaa !9
  %752 = sub nsw i64 %750, %751
  store i64 %752, ptr %23, align 8, !tbaa !9
  %753 = load float, ptr %29, align 4, !tbaa !13
  %754 = fdiv float 1.000000e+00, %753
  store float %754, ptr %25, align 4, !tbaa !13
  %755 = load ptr, ptr %13, align 8, !tbaa !5
  %756 = load i64, ptr %27, align 8, !tbaa !9
  %757 = add nsw i64 %756, 1
  %758 = load i64, ptr %27, align 8, !tbaa !9
  %759 = load i64, ptr %20, align 8, !tbaa !9
  %760 = mul nsw i64 %758, %759
  %761 = add nsw i64 %757, %760
  %762 = getelementptr inbounds float, ptr %755, i64 %761
  %763 = call i32 @f2c_sscal(ptr noundef %23, ptr noundef %25, ptr noundef %762, ptr noundef @c__1)
  br label %764

764:                                              ; preds = %720, %703
  br label %765

765:                                              ; preds = %764
  %766 = load i64, ptr %27, align 8, !tbaa !9
  %767 = add nsw i64 %766, 1
  store i64 %767, ptr %27, align 8, !tbaa !9
  br label %487, !llvm.loop !20

768:                                              ; preds = %487
  br label %769

769:                                              ; preds = %768, %483
  %770 = load ptr, ptr %12, align 8, !tbaa !5
  %771 = load i64, ptr %770, align 8, !tbaa !9
  %772 = load ptr, ptr %16, align 8, !tbaa !5
  store i64 %771, ptr %772, align 8, !tbaa !9
  br label %778

773:                                              ; preds = %579, %289
  %774 = load i64, ptr %27, align 8, !tbaa !9
  %775 = sub nsw i64 %774, 1
  %776 = load ptr, ptr %16, align 8, !tbaa !5
  store i64 %775, ptr %776, align 8, !tbaa !9
  %777 = load ptr, ptr %19, align 8, !tbaa !5
  store i64 1, ptr %777, align 8, !tbaa !9
  br label %778

778:                                              ; preds = %773, %769, %157
  store i32 0, ptr %10, align 4
  store i32 1, ptr %35, align 4
  br label %779

779:                                              ; preds = %778, %95, %86
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #5
  %780 = load i32, ptr %10, align 4
  ret i32 %780
}

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

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

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

declare i64 @sisnan_(ptr noundef) #2

declare double @slamch_(ptr noundef) #2

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!14, !14, i64 0}
!14 = !{!"float", !7, i64 0}
!15 = distinct !{!15, !12}
!16 = distinct !{!16, !12}
!17 = distinct !{!17, !12}
!18 = distinct !{!18, !12}
!19 = distinct !{!19, !12}
!20 = distinct !{!20, !12}


; 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 [7 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [8 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.4 = external hidden unnamed_addr constant [6 x i8], align 1
@c_b16 = external hidden global float, align 4
@c_b18 = external hidden global float, align 4
@.str.5 = external hidden unnamed_addr constant [9 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @spstf2_(ptr noundef %0, ptr nocapture noundef readonly %1, ptr noundef %2, ptr noundef %3, ptr nocapture noundef %4, ptr nocapture noundef writeonly %5, ptr nocapture noundef readonly %6, ptr noundef %7, ptr nocapture noundef %8) local_unnamed_addr #0 {
  %10 = alloca i64, align 8
  %11 = alloca i64, align 8
  %12 = alloca i64, align 8
  %13 = alloca float, align 4
  %14 = alloca i64, align 8
  %15 = alloca float, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #6
  %16 = getelementptr inbounds i8, ptr %7, i64 -4
  %17 = getelementptr inbounds i8, ptr %4, i64 -8
  %18 = load i64, ptr %3, align 8, !tbaa !5
  %19 = xor i64 %18, -1
  %20 = getelementptr inbounds float, ptr %2, i64 %19
  store i64 0, ptr %8, align 8, !tbaa !5
  %21 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #6
  %.not = icmp eq i64 %21, 0
  br i1 %.not, label %22, label %24

22:                                               ; preds = %9
  %23 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #6
  %.not331 = icmp eq i64 %23, 0
  br i1 %.not331, label %.thread.sink.split, label %24

24:                                               ; preds = %22, %9
  %25 = load i64, ptr %1, align 8, !tbaa !5
  %26 = icmp slt i64 %25, 0
  br i1 %26, label %.thread.sink.split, label %27

27:                                               ; preds = %24
  %28 = load i64, ptr %3, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %25, i64 1)
  %29 = icmp slt i64 %28, %spec.select
  br i1 %29, label %.thread.sink.split, label %30

30:                                               ; preds = %27
  %.pr = load i64, ptr %8, align 8, !tbaa !5
  %.not332 = icmp eq i64 %.pr, 0
  br i1 %.not332, label %34, label %.thread

.thread.sink.split:                               ; preds = %27, %24, %22
  %.sink = phi i64 [ -1, %22 ], [ -2, %24 ], [ -4, %27 ]
  store i64 %.sink, ptr %8, align 8, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %30
  %31 = phi i64 [ %.pr, %30 ], [ %.sink, %.thread.sink.split ]
  %32 = sub nsw i64 0, %31
  store i64 %32, ptr %10, align 8, !tbaa !5
  %33 = call i32 @xerbla_(ptr noundef nonnull @.str.2, ptr noundef nonnull %10) #6
  br label %375

34:                                               ; preds = %30
  %35 = icmp eq i64 %25, 0
  br i1 %35, label %375, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %34
  %min.iters.check = icmp ult i64 %25, 4
  br i1 %min.iters.check, label %.lr.ph.preheader484, label %vector.ph

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

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %vec.ind = phi <2 x i64> [ <i64 1, i64 2>, %vector.ph ], [ %vec.ind.next, %vector.body ]
  %step.add = add <2 x i64> %vec.ind, <i64 2, i64 2>
  %36 = getelementptr i64, ptr %4, i64 %index
  %37 = getelementptr inbounds i8, ptr %36, i64 16
  store <2 x i64> %vec.ind, ptr %36, align 8, !tbaa !5
  store <2 x i64> %step.add, ptr %37, align 8, !tbaa !5
  %index.next = add nuw i64 %index, 4
  %vec.ind.next = add <2 x i64> %vec.ind, <i64 4, i64 4>
  %38 = icmp eq i64 %index.next, %n.vec
  br i1 %38, label %middle.block, label %vector.body, !llvm.loop !9

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

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

.lr.ph:                                           ; preds = %.lr.ph.preheader484, %.lr.ph
  %.0318354 = phi i64 [ %40, %.lr.ph ], [ %.0318354.ph, %.lr.ph.preheader484 ]
  %39 = getelementptr inbounds i64, ptr %17, i64 %.0318354
  store i64 %.0318354, ptr %39, align 8, !tbaa !5
  %40 = add nuw i64 %.0318354, 1
  %exitcond.not = icmp eq i64 %.0318354, %25
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !13

._crit_edge:                                      ; preds = %.lr.ph, %middle.block
  %.pre = load i64, ptr %1, align 8, !tbaa !5
  %41 = load float, ptr %2, align 4, !tbaa !14
  store float %41, ptr %15, align 4, !tbaa !14
  %.not334355 = icmp slt i64 %.pre, 2
  br i1 %.not334355, label %._crit_edge360, label %.lr.ph359

.lr.ph359:                                        ; preds = %._crit_edge
  %42 = add i64 %18, 1
  %43 = add nsw i64 %.pre, -1
  %xtraiter = and i64 %43, 1
  %44 = icmp eq i64 %.pre, 2
  br i1 %44, label %._crit_edge360.loopexit.unr-lcssa, label %.lr.ph359.new

.lr.ph359.new:                                    ; preds = %.lr.ph359
  %unroll_iter = and i64 %43, -2
  br label %45

45:                                               ; preds = %60, %.lr.ph359.new
  %.0314357 = phi i64 [ 1, %.lr.ph359.new ], [ %.1.1, %60 ]
  %.1319356 = phi i64 [ 2, %.lr.ph359.new ], [ %62, %60 ]
  %46 = phi float [ %41, %.lr.ph359.new ], [ %61, %60 ]
  %niter = phi i64 [ 0, %.lr.ph359.new ], [ %niter.next.1, %60 ]
  %47 = mul i64 %.1319356, %42
  %48 = getelementptr inbounds float, ptr %20, i64 %47
  %49 = load float, ptr %48, align 4, !tbaa !14
  %50 = fcmp ogt float %49, %46
  br i1 %50, label %51, label %52

51:                                               ; preds = %45
  store float %49, ptr %15, align 4, !tbaa !14
  br label %52

52:                                               ; preds = %45, %51
  %53 = phi float [ %49, %51 ], [ %46, %45 ]
  %.1 = phi i64 [ %.1319356, %51 ], [ %.0314357, %45 ]
  %54 = or disjoint i64 %.1319356, 1
  %55 = mul i64 %54, %42
  %56 = getelementptr inbounds float, ptr %20, i64 %55
  %57 = load float, ptr %56, align 4, !tbaa !14
  %58 = fcmp ogt float %57, %53
  br i1 %58, label %59, label %60

59:                                               ; preds = %52
  store float %57, ptr %15, align 4, !tbaa !14
  br label %60

60:                                               ; preds = %59, %52
  %61 = phi float [ %57, %59 ], [ %53, %52 ]
  %.1.1 = phi i64 [ %54, %59 ], [ %.1, %52 ]
  %62 = add nuw i64 %.1319356, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge360.loopexit.unr-lcssa, label %45, !llvm.loop !16

._crit_edge360.loopexit.unr-lcssa:                ; preds = %60, %.lr.ph359
  %.lcssa483.ph = phi float [ poison, %.lr.ph359 ], [ %61, %60 ]
  %.1.lcssa.ph = phi i64 [ poison, %.lr.ph359 ], [ %.1.1, %60 ]
  %.0314357.unr = phi i64 [ 1, %.lr.ph359 ], [ %.1.1, %60 ]
  %.1319356.unr = phi i64 [ 2, %.lr.ph359 ], [ %62, %60 ]
  %.unr = phi float [ %41, %.lr.ph359 ], [ %61, %60 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge360, label %.epil.preheader

.epil.preheader:                                  ; preds = %._crit_edge360.loopexit.unr-lcssa
  %63 = mul i64 %.1319356.unr, %42
  %64 = getelementptr inbounds float, ptr %20, i64 %63
  %65 = load float, ptr %64, align 4, !tbaa !14
  %66 = fcmp ogt float %65, %.unr
  br i1 %66, label %67, label %._crit_edge360

67:                                               ; preds = %.epil.preheader
  store float %65, ptr %15, align 4, !tbaa !14
  br label %._crit_edge360

._crit_edge360:                                   ; preds = %._crit_edge360.loopexit.unr-lcssa, %67, %.epil.preheader, %._crit_edge
  %68 = phi float [ %41, %._crit_edge ], [ %.lcssa483.ph, %._crit_edge360.loopexit.unr-lcssa ], [ %65, %67 ], [ %.unr, %.epil.preheader ]
  %.0314.lcssa = phi i64 [ 1, %._crit_edge ], [ %.1.lcssa.ph, %._crit_edge360.loopexit.unr-lcssa ], [ %.1319356.unr, %67 ], [ %.0314357.unr, %.epil.preheader ]
  %69 = fcmp oeq float %68, 0.000000e+00
  br i1 %69, label %72, label %70

70:                                               ; preds = %._crit_edge360
  %71 = call i64 @sisnan_(ptr noundef nonnull %15) #6
  %.not335 = icmp eq i64 %71, 0
  br i1 %.not335, label %73, label %72

72:                                               ; preds = %70, %._crit_edge360
  store i64 0, ptr %5, align 8, !tbaa !5
  store i64 1, ptr %8, align 8, !tbaa !5
  br label %375

73:                                               ; preds = %70
  %74 = load float, ptr %6, align 4, !tbaa !14
  %75 = fcmp olt float %74, 0.000000e+00
  br i1 %75, label %76, label %85

76:                                               ; preds = %73
  %77 = load i64, ptr %1, align 8, !tbaa !5
  %78 = sitofp i64 %77 to double
  %79 = call double @slamch_(ptr noundef nonnull @.str.3) #6
  %80 = fmul double %79, %78
  %81 = load float, ptr %15, align 4, !tbaa !14
  %82 = fpext float %81 to double
  %83 = fmul double %80, %82
  %84 = fptrunc double %83 to float
  br label %85

85:                                               ; preds = %73, %76
  %.0 = phi float [ %84, %76 ], [ %74, %73 ]
  %86 = load i64, ptr %1, align 8, !tbaa !5
  %.not336361 = icmp slt i64 %86, 1
  br i1 %.not336361, label %.loopexit, label %._crit_edge365.thread

._crit_edge365.thread:                            ; preds = %85
  %87 = shl nuw i64 %86, 2
  call void @llvm.memset.p0.i64(ptr align 4 %7, i8 0, i64 %87, i1 false), !tbaa !14
  br i1 %.not, label %.lr.ph400, label %.lr.ph384

.lr.ph384:                                        ; preds = %._crit_edge365.thread
  %invariant.gep422 = getelementptr i8, ptr %20, i64 -4
  %invariant.gep371423 = getelementptr i8, ptr %20, i64 4
  %88 = add i64 %18, 1
  br label %89

89:                                               ; preds = %.lr.ph384, %231
  %.2382 = phi i64 [ %.0314.lcssa, %.lr.ph384 ], [ %.3, %231 ]
  %.0315380 = phi i64 [ 1, %.lr.ph384 ], [ %.pre-phi420, %231 ]
  %90 = load i64, ptr %1, align 8, !tbaa !5
  store i64 %90, ptr %11, align 8, !tbaa !5
  %.not342366 = icmp sgt i64 %.0315380, %90
  br i1 %.not342366, label %._crit_edge370, label %.lr.ph369

.lr.ph369:                                        ; preds = %89
  %91 = icmp ugt i64 %.0315380, 1
  %gep = getelementptr float, ptr %invariant.gep422, i64 %.0315380
  %92 = getelementptr float, ptr %16, i64 %90
  br i1 %91, label %.lr.ph369.split.us.preheader, label %.lr.ph369.split.preheader

.lr.ph369.split.preheader:                        ; preds = %.lr.ph369
  %93 = add i64 %90, %.0315380
  %94 = and i64 %93, 1
  %lcmp.mod488.not.not = icmp eq i64 %94, 0
  br i1 %lcmp.mod488.not.not, label %.lr.ph369.split.prol, label %.lr.ph369.split.prol.loopexit

.lr.ph369.split.prol:                             ; preds = %.lr.ph369.split.preheader
  %95 = mul nuw i64 %.0315380, %88
  %96 = getelementptr inbounds float, ptr %20, i64 %95
  %97 = load float, ptr %96, align 4, !tbaa !14
  %98 = getelementptr inbounds float, ptr %16, i64 %.0315380
  %99 = load float, ptr %98, align 4, !tbaa !14
  %100 = fsub float %97, %99
  %101 = getelementptr float, ptr %92, i64 %.0315380
  store float %100, ptr %101, align 4, !tbaa !14
  %102 = add nuw nsw i64 %.0315380, 1
  br label %.lr.ph369.split.prol.loopexit

.lr.ph369.split.prol.loopexit:                    ; preds = %.lr.ph369.split.prol, %.lr.ph369.split.preheader
  %.3321367.unr = phi i64 [ %.0315380, %.lr.ph369.split.preheader ], [ %102, %.lr.ph369.split.prol ]
  %103 = icmp eq i64 %90, %.0315380
  br i1 %103, label %._crit_edge370, label %.lr.ph369.split

.lr.ph369.split.us.preheader:                     ; preds = %.lr.ph369
  %104 = add i64 %90, %.0315380
  %105 = and i64 %104, 1
  %lcmp.mod490.not.not = icmp eq i64 %105, 0
  br i1 %lcmp.mod490.not.not, label %.lr.ph369.split.us.prol, label %.lr.ph369.split.us.prol.loopexit

.lr.ph369.split.us.prol:                          ; preds = %.lr.ph369.split.us.preheader
  %106 = mul nsw i64 %.0315380, %18
  %107 = getelementptr float, ptr %gep, i64 %106
  %108 = load float, ptr %107, align 4, !tbaa !14
  %109 = getelementptr inbounds float, ptr %16, i64 %.0315380
  %110 = load float, ptr %109, align 4, !tbaa !14
  %111 = call float @llvm.fmuladd.f32(float %108, float %108, float %110)
  store float %111, ptr %109, align 4, !tbaa !14
  %112 = mul i64 %.0315380, %88
  %113 = getelementptr inbounds float, ptr %20, i64 %112
  %114 = load float, ptr %113, align 4, !tbaa !14
  %115 = fsub float %114, %111
  %116 = getelementptr float, ptr %92, i64 %.0315380
  store float %115, ptr %116, align 4, !tbaa !14
  %117 = add nuw nsw i64 %.0315380, 1
  br label %.lr.ph369.split.us.prol.loopexit

.lr.ph369.split.us.prol.loopexit:                 ; preds = %.lr.ph369.split.us.prol, %.lr.ph369.split.us.preheader
  %.3321367.us.unr = phi i64 [ %.0315380, %.lr.ph369.split.us.preheader ], [ %117, %.lr.ph369.split.us.prol ]
  %.lcssa475.unr = phi float [ poison, %.lr.ph369.split.us.preheader ], [ %108, %.lr.ph369.split.us.prol ]
  %118 = icmp eq i64 %90, %.0315380
  br i1 %118, label %._crit_edge370.split.us, label %.lr.ph369.split.us

.lr.ph369.split.us:                               ; preds = %.lr.ph369.split.us.prol.loopexit, %.lr.ph369.split.us
  %.3321367.us = phi i64 [ %142, %.lr.ph369.split.us ], [ %.3321367.us.unr, %.lr.ph369.split.us.prol.loopexit ]
  %119 = mul nsw i64 %.3321367.us, %18
  %120 = getelementptr float, ptr %gep, i64 %119
  %121 = load float, ptr %120, align 4, !tbaa !14
  %122 = getelementptr inbounds float, ptr %16, i64 %.3321367.us
  %123 = load float, ptr %122, align 4, !tbaa !14
  %124 = call float @llvm.fmuladd.f32(float %121, float %121, float %123)
  store float %124, ptr %122, align 4, !tbaa !14
  %125 = mul i64 %.3321367.us, %88
  %126 = getelementptr inbounds float, ptr %20, i64 %125
  %127 = load float, ptr %126, align 4, !tbaa !14
  %128 = fsub float %127, %124
  %129 = getelementptr float, ptr %92, i64 %.3321367.us
  store float %128, ptr %129, align 4, !tbaa !14
  %130 = add nuw nsw i64 %.3321367.us, 1
  %131 = mul nsw i64 %130, %18
  %132 = getelementptr float, ptr %gep, i64 %131
  %133 = load float, ptr %132, align 4, !tbaa !14
  %134 = getelementptr float, ptr %7, i64 %.3321367.us
  %135 = load float, ptr %134, align 4, !tbaa !14
  %136 = call float @llvm.fmuladd.f32(float %133, float %133, float %135)
  store float %136, ptr %134, align 4, !tbaa !14
  %137 = mul i64 %130, %88
  %138 = getelementptr inbounds float, ptr %20, i64 %137
  %139 = load float, ptr %138, align 4, !tbaa !14
  %140 = fsub float %139, %136
  %141 = getelementptr float, ptr %92, i64 %130
  store float %140, ptr %141, align 4, !tbaa !14
  %142 = add nuw nsw i64 %.3321367.us, 2
  %.not342.us.not.1 = icmp slt i64 %130, %90
  br i1 %.not342.us.not.1, label %.lr.ph369.split.us, label %._crit_edge370.split.us, !llvm.loop !17

._crit_edge370.split.us:                          ; preds = %.lr.ph369.split.us, %.lr.ph369.split.us.prol.loopexit
  %.lcssa475 = phi float [ %.lcssa475.unr, %.lr.ph369.split.us.prol.loopexit ], [ %133, %.lr.ph369.split.us ]
  store float %.lcssa475, ptr %13, align 4, !tbaa !14
  br label %._crit_edge370

.lr.ph369.split:                                  ; preds = %.lr.ph369.split.prol.loopexit, %.lr.ph369.split
  %.3321367 = phi i64 [ %158, %.lr.ph369.split ], [ %.3321367.unr, %.lr.ph369.split.prol.loopexit ]
  %143 = mul i64 %.3321367, %88
  %144 = getelementptr inbounds float, ptr %20, i64 %143
  %145 = load float, ptr %144, align 4, !tbaa !14
  %146 = getelementptr inbounds float, ptr %16, i64 %.3321367
  %147 = load float, ptr %146, align 4, !tbaa !14
  %148 = fsub float %145, %147
  %149 = getelementptr float, ptr %92, i64 %.3321367
  store float %148, ptr %149, align 4, !tbaa !14
  %150 = add nuw nsw i64 %.3321367, 1
  %151 = mul i64 %150, %88
  %152 = getelementptr inbounds float, ptr %20, i64 %151
  %153 = load float, ptr %152, align 4, !tbaa !14
  %154 = getelementptr float, ptr %7, i64 %.3321367
  %155 = load float, ptr %154, align 4, !tbaa !14
  %156 = fsub float %153, %155
  %157 = getelementptr float, ptr %92, i64 %150
  store float %156, ptr %157, align 4, !tbaa !14
  %158 = add nuw nsw i64 %.3321367, 2
  %.not342.not.1 = icmp slt i64 %150, %90
  br i1 %.not342.not.1, label %.lr.ph369.split, label %._crit_edge370, !llvm.loop !17

._crit_edge370:                                   ; preds = %.lr.ph369.split.prol.loopexit, %.lr.ph369.split, %._crit_edge370.split.us, %89
  %159 = icmp ugt i64 %.0315380, 1
  br i1 %159, label %160, label %178

160:                                              ; preds = %._crit_edge370
  %161 = shl i64 %90, 1
  %162 = add i64 %.0315380, %90
  %reass.sub = sub i64 %161, %162
  %163 = add i64 %reass.sub, 1
  store i64 %163, ptr %14, align 8, !tbaa !5
  %164 = getelementptr float, ptr %16, i64 %90
  %165 = getelementptr float, ptr %164, i64 %.0315380
  %166 = call i64 @smaxloc_(ptr noundef %165, ptr noundef nonnull %14) #6
  %167 = add nsw i64 %.0315380, -1
  %168 = add i64 %167, %166
  %169 = load i64, ptr %1, align 8, !tbaa !5
  %170 = getelementptr float, ptr %16, i64 %169
  %171 = getelementptr float, ptr %170, i64 %168
  %172 = load float, ptr %171, align 4, !tbaa !14
  store float %172, ptr %15, align 4, !tbaa !14
  %173 = fcmp ugt float %172, %.0
  br i1 %173, label %174, label %split

174:                                              ; preds = %160
  %175 = call i64 @sisnan_(ptr noundef nonnull %15) #6
  %.not343 = icmp eq i64 %175, 0
  br i1 %.not343, label %178, label %._crit_edge407

._crit_edge407:                                   ; preds = %174
  %.pre408 = load float, ptr %15, align 4, !tbaa !14
  br label %split

split:                                            ; preds = %160, %._crit_edge407
  %176 = phi float [ %.pre408, %._crit_edge407 ], [ %172, %160 ]
  %177 = mul i64 %.0315380, %88
  br label %373

178:                                              ; preds = %174, %._crit_edge370
  %.3 = phi i64 [ %168, %174 ], [ %.2382, %._crit_edge370 ]
  %.not344 = icmp eq i64 %.0315380, %.3
  %.pre417 = mul nsw i64 %.0315380, %18
  br i1 %.not344, label %._crit_edge413, label %179

179:                                              ; preds = %178
  %180 = getelementptr float, ptr %20, i64 %.0315380
  %181 = getelementptr float, ptr %180, i64 %.pre417
  %182 = load float, ptr %181, align 4, !tbaa !14
  %183 = mul nsw i64 %.3, %18
  %184 = getelementptr float, ptr %20, i64 %.3
  %185 = getelementptr float, ptr %184, i64 %183
  store float %182, ptr %185, align 4, !tbaa !14
  %186 = add nsw i64 %.0315380, -1
  store i64 %186, ptr %11, align 8, !tbaa !5
  %gep372 = getelementptr float, ptr %invariant.gep371423, i64 %.pre417
  %gep374 = getelementptr float, ptr %invariant.gep371423, i64 %183
  %187 = call i32 @f2c_sswap(ptr noundef nonnull %11, ptr noundef %gep372, ptr noundef nonnull @c__1, ptr noundef %gep374, ptr noundef nonnull @c__1) #6
  %188 = load i64, ptr %1, align 8, !tbaa !5
  %189 = icmp slt i64 %.3, %188
  br i1 %189, label %190, label %197

190:                                              ; preds = %179
  %191 = sub nsw i64 %188, %.3
  store i64 %191, ptr %11, align 8, !tbaa !5
  %192 = add nsw i64 %.3, 1
  %193 = mul nsw i64 %192, %18
  %194 = getelementptr float, ptr %180, i64 %193
  %195 = getelementptr float, ptr %184, i64 %193
  %196 = call i32 @f2c_sswap(ptr noundef nonnull %11, ptr noundef %194, ptr noundef nonnull %3, ptr noundef %195, ptr noundef nonnull %3) #6
  br label %197

197:                                              ; preds = %190, %179
  %198 = xor i64 %.0315380, -1
  %199 = add i64 %.3, %198
  store i64 %199, ptr %11, align 8, !tbaa !5
  %200 = add nuw nsw i64 %.0315380, 1
  %201 = mul nsw i64 %200, %18
  %202 = getelementptr float, ptr %180, i64 %201
  %203 = getelementptr float, ptr %20, i64 %200
  %204 = getelementptr float, ptr %203, i64 %183
  %205 = call i32 @f2c_sswap(ptr noundef nonnull %11, ptr noundef %202, ptr noundef nonnull %3, ptr noundef %204, ptr noundef nonnull @c__1) #6
  %206 = getelementptr inbounds float, ptr %16, i64 %.0315380
  %207 = load float, ptr %206, align 4, !tbaa !14
  %208 = getelementptr inbounds float, ptr %16, i64 %.3
  %209 = load float, ptr %208, align 4, !tbaa !14
  store float %209, ptr %206, align 4, !tbaa !14
  store float %207, ptr %208, align 4, !tbaa !14
  %210 = getelementptr inbounds i64, ptr %17, i64 %.3
  %211 = load i64, ptr %210, align 8, !tbaa !5
  %212 = getelementptr inbounds i64, ptr %17, i64 %.0315380
  %213 = load i64, ptr %212, align 8, !tbaa !5
  store i64 %213, ptr %210, align 8, !tbaa !5
  store i64 %211, ptr %212, align 8, !tbaa !5
  br label %._crit_edge413

._crit_edge413:                                   ; preds = %178, %197
  %214 = load float, ptr %15, align 4, !tbaa !14
  %sqrtf345 = call float @sqrtf(float noundef %214) #7
  store float %sqrtf345, ptr %15, align 4, !tbaa !14
  %215 = getelementptr float, ptr %20, i64 %.0315380
  %216 = getelementptr float, ptr %215, i64 %.pre417
  store float %sqrtf345, ptr %216, align 4, !tbaa !14
  %217 = load i64, ptr %1, align 8, !tbaa !5
  %218 = icmp slt i64 %.0315380, %217
  br i1 %218, label %219, label %._crit_edge412

._crit_edge412:                                   ; preds = %._crit_edge413
  %.pre419 = add nuw nsw i64 %.0315380, 1
  br label %231

219:                                              ; preds = %._crit_edge413
  %220 = add nsw i64 %.0315380, -1
  store i64 %220, ptr %11, align 8, !tbaa !5
  %221 = sub nsw i64 %217, %.0315380
  store i64 %221, ptr %12, align 8, !tbaa !5
  %222 = add nuw nsw i64 %.0315380, 1
  %223 = mul nsw i64 %222, %18
  %gep376 = getelementptr float, ptr %invariant.gep371423, i64 %223
  %gep378 = getelementptr float, ptr %invariant.gep371423, i64 %.pre417
  %224 = getelementptr float, ptr %215, i64 %223
  %225 = call i32 @f2c_sgemv(ptr noundef nonnull @.str.4, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef nonnull @c_b16, ptr noundef %gep376, ptr noundef nonnull %3, ptr noundef %gep378, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b18, ptr noundef %224, ptr noundef nonnull %3) #6
  %226 = load i64, ptr %1, align 8, !tbaa !5
  %227 = sub nsw i64 %226, %.0315380
  store i64 %227, ptr %11, align 8, !tbaa !5
  %228 = load float, ptr %15, align 4, !tbaa !14
  %229 = fdiv float 1.000000e+00, %228
  store float %229, ptr %13, align 4, !tbaa !14
  %230 = call i32 @f2c_sscal(ptr noundef nonnull %11, ptr noundef nonnull %13, ptr noundef %224, ptr noundef nonnull %3) #6
  br label %231

231:                                              ; preds = %._crit_edge412, %219
  %.pre-phi420 = phi i64 [ %.pre419, %._crit_edge412 ], [ %222, %219 ]
  %.not341.not = icmp slt i64 %.0315380, %86
  br i1 %.not341.not, label %89, label %.loopexit, !llvm.loop !18

.lr.ph400:                                        ; preds = %._crit_edge365.thread
  %invariant.gep393427 = getelementptr i8, ptr %20, i64 4
  %232 = add i64 %18, 1
  br label %233

233:                                              ; preds = %.lr.ph400, %370
  %indvar = phi i64 [ 0, %.lr.ph400 ], [ %indvar.next, %370 ]
  %.4398 = phi i64 [ %.0314.lcssa, %.lr.ph400 ], [ %.5, %370 ]
  %.1316396 = phi i64 [ 1, %.lr.ph400 ], [ %371, %370 ]
  %.neg495 = add i64 %indvar, 1
  %.neg = add i64 %indvar, 1
  %234 = load i64, ptr %1, align 8, !tbaa !5
  store i64 %234, ptr %11, align 8, !tbaa !5
  %.not338385 = icmp sgt i64 %.1316396, %234
  br i1 %.not338385, label %._crit_edge389, label %.lr.ph388

.lr.ph388:                                        ; preds = %233
  %235 = icmp ugt i64 %.1316396, 1
  %236 = add nsw i64 %.1316396, -1
  %237 = mul nsw i64 %236, %18
  %invariant.gep390 = getelementptr float, ptr %20, i64 %237
  %238 = getelementptr float, ptr %16, i64 %234
  br i1 %235, label %.lr.ph388.split.us.preheader, label %.lr.ph388.split.preheader

.lr.ph388.split.preheader:                        ; preds = %.lr.ph388
  %239 = sub i64 %234, %indvar
  %xtraiter491 = and i64 %239, 1
  %lcmp.mod492.not = icmp eq i64 %xtraiter491, 0
  br i1 %lcmp.mod492.not, label %.lr.ph388.split.prol.loopexit, label %.lr.ph388.split.prol

.lr.ph388.split.prol:                             ; preds = %.lr.ph388.split.preheader
  %240 = mul nuw i64 %.1316396, %232
  %241 = getelementptr inbounds float, ptr %20, i64 %240
  %242 = load float, ptr %241, align 4, !tbaa !14
  %243 = getelementptr inbounds float, ptr %16, i64 %.1316396
  %244 = load float, ptr %243, align 4, !tbaa !14
  %245 = fsub float %242, %244
  %246 = getelementptr float, ptr %238, i64 %.1316396
  store float %245, ptr %246, align 4, !tbaa !14
  %247 = add nuw nsw i64 %.1316396, 1
  br label %.lr.ph388.split.prol.loopexit

.lr.ph388.split.prol.loopexit:                    ; preds = %.lr.ph388.split.prol, %.lr.ph388.split.preheader
  %.4322386.unr = phi i64 [ %.1316396, %.lr.ph388.split.preheader ], [ %247, %.lr.ph388.split.prol ]
  %248 = icmp eq i64 %234, %.neg
  br i1 %248, label %._crit_edge389, label %.lr.ph388.split

.lr.ph388.split.us.preheader:                     ; preds = %.lr.ph388
  %249 = sub i64 %234, %indvar
  %xtraiter493 = and i64 %249, 1
  %lcmp.mod494.not = icmp eq i64 %xtraiter493, 0
  br i1 %lcmp.mod494.not, label %.lr.ph388.split.us.prol.loopexit, label %.lr.ph388.split.us.prol

.lr.ph388.split.us.prol:                          ; preds = %.lr.ph388.split.us.preheader
  %gep391.us.prol = getelementptr float, ptr %invariant.gep390, i64 %.1316396
  %250 = load float, ptr %gep391.us.prol, align 4, !tbaa !14
  %251 = getelementptr inbounds float, ptr %16, i64 %.1316396
  %252 = load float, ptr %251, align 4, !tbaa !14
  %253 = call float @llvm.fmuladd.f32(float %250, float %250, float %252)
  store float %253, ptr %251, align 4, !tbaa !14
  %254 = mul i64 %.1316396, %232
  %255 = getelementptr inbounds float, ptr %20, i64 %254
  %256 = load float, ptr %255, align 4, !tbaa !14
  %257 = fsub float %256, %253
  %258 = getelementptr float, ptr %238, i64 %.1316396
  store float %257, ptr %258, align 4, !tbaa !14
  %259 = add nuw nsw i64 %.1316396, 1
  br label %.lr.ph388.split.us.prol.loopexit

.lr.ph388.split.us.prol.loopexit:                 ; preds = %.lr.ph388.split.us.prol, %.lr.ph388.split.us.preheader
  %.4322386.us.unr = phi i64 [ %.1316396, %.lr.ph388.split.us.preheader ], [ %259, %.lr.ph388.split.us.prol ]
  %.lcssa.unr = phi float [ poison, %.lr.ph388.split.us.preheader ], [ %250, %.lr.ph388.split.us.prol ]
  %260 = icmp eq i64 %234, %.neg495
  br i1 %260, label %._crit_edge389.split.us, label %.lr.ph388.split.us

.lr.ph388.split.us:                               ; preds = %.lr.ph388.split.us.prol.loopexit, %.lr.ph388.split.us
  %.4322386.us = phi i64 [ %280, %.lr.ph388.split.us ], [ %.4322386.us.unr, %.lr.ph388.split.us.prol.loopexit ]
  %gep391.us = getelementptr float, ptr %invariant.gep390, i64 %.4322386.us
  %261 = load float, ptr %gep391.us, align 4, !tbaa !14
  %262 = getelementptr inbounds float, ptr %16, i64 %.4322386.us
  %263 = load float, ptr %262, align 4, !tbaa !14
  %264 = call float @llvm.fmuladd.f32(float %261, float %261, float %263)
  store float %264, ptr %262, align 4, !tbaa !14
  %265 = mul i64 %.4322386.us, %232
  %266 = getelementptr inbounds float, ptr %20, i64 %265
  %267 = load float, ptr %266, align 4, !tbaa !14
  %268 = fsub float %267, %264
  %269 = getelementptr float, ptr %238, i64 %.4322386.us
  store float %268, ptr %269, align 4, !tbaa !14
  %270 = add nuw nsw i64 %.4322386.us, 1
  %gep391.us.1 = getelementptr float, ptr %invariant.gep390, i64 %270
  %271 = load float, ptr %gep391.us.1, align 4, !tbaa !14
  %272 = getelementptr float, ptr %7, i64 %.4322386.us
  %273 = load float, ptr %272, align 4, !tbaa !14
  %274 = call float @llvm.fmuladd.f32(float %271, float %271, float %273)
  store float %274, ptr %272, align 4, !tbaa !14
  %275 = mul i64 %270, %232
  %276 = getelementptr inbounds float, ptr %20, i64 %275
  %277 = load float, ptr %276, align 4, !tbaa !14
  %278 = fsub float %277, %274
  %279 = getelementptr float, ptr %238, i64 %270
  store float %278, ptr %279, align 4, !tbaa !14
  %280 = add nuw nsw i64 %.4322386.us, 2
  %.not338.us.not.1 = icmp slt i64 %270, %234
  br i1 %.not338.us.not.1, label %.lr.ph388.split.us, label %._crit_edge389.split.us, !llvm.loop !19

._crit_edge389.split.us:                          ; preds = %.lr.ph388.split.us, %.lr.ph388.split.us.prol.loopexit
  %.lcssa = phi float [ %.lcssa.unr, %.lr.ph388.split.us.prol.loopexit ], [ %271, %.lr.ph388.split.us ]
  store float %.lcssa, ptr %13, align 4, !tbaa !14
  br label %._crit_edge389

.lr.ph388.split:                                  ; preds = %.lr.ph388.split.prol.loopexit, %.lr.ph388.split
  %.4322386 = phi i64 [ %296, %.lr.ph388.split ], [ %.4322386.unr, %.lr.ph388.split.prol.loopexit ]
  %281 = mul i64 %.4322386, %232
  %282 = getelementptr inbounds float, ptr %20, i64 %281
  %283 = load float, ptr %282, align 4, !tbaa !14
  %284 = getelementptr inbounds float, ptr %16, i64 %.4322386
  %285 = load float, ptr %284, align 4, !tbaa !14
  %286 = fsub float %283, %285
  %287 = getelementptr float, ptr %238, i64 %.4322386
  store float %286, ptr %287, align 4, !tbaa !14
  %288 = add nuw nsw i64 %.4322386, 1
  %289 = mul i64 %288, %232
  %290 = getelementptr inbounds float, ptr %20, i64 %289
  %291 = load float, ptr %290, align 4, !tbaa !14
  %292 = getelementptr float, ptr %7, i64 %.4322386
  %293 = load float, ptr %292, align 4, !tbaa !14
  %294 = fsub float %291, %293
  %295 = getelementptr float, ptr %238, i64 %288
  store float %294, ptr %295, align 4, !tbaa !14
  %296 = add nuw nsw i64 %.4322386, 2
  %.not338.not.1 = icmp slt i64 %288, %234
  br i1 %.not338.not.1, label %.lr.ph388.split, label %._crit_edge389, !llvm.loop !19

._crit_edge389:                                   ; preds = %.lr.ph388.split.prol.loopexit, %.lr.ph388.split, %._crit_edge389.split.us, %233
  %297 = icmp ugt i64 %.1316396, 1
  br i1 %297, label %298, label %316

298:                                              ; preds = %._crit_edge389
  %299 = shl i64 %234, 1
  %300 = add i64 %.1316396, %234
  %reass.sub401 = sub i64 %299, %300
  %301 = add i64 %reass.sub401, 1
  store i64 %301, ptr %14, align 8, !tbaa !5
  %302 = getelementptr float, ptr %16, i64 %234
  %303 = getelementptr float, ptr %302, i64 %.1316396
  %304 = call i64 @smaxloc_(ptr noundef %303, ptr noundef nonnull %14) #6
  %305 = add nsw i64 %.1316396, -1
  %306 = add i64 %305, %304
  %307 = load i64, ptr %1, align 8, !tbaa !5
  %308 = getelementptr float, ptr %16, i64 %307
  %309 = getelementptr float, ptr %308, i64 %306
  %310 = load float, ptr %309, align 4, !tbaa !14
  store float %310, ptr %15, align 4, !tbaa !14
  %311 = fcmp ugt float %310, %.0
  br i1 %311, label %312, label %split410

312:                                              ; preds = %298
  %313 = call i64 @sisnan_(ptr noundef nonnull %15) #6
  %.not339 = icmp eq i64 %313, 0
  br i1 %.not339, label %316, label %._crit_edge409

._crit_edge409:                                   ; preds = %312
  %.pre411 = load float, ptr %15, align 4, !tbaa !14
  br label %split410

split410:                                         ; preds = %298, %._crit_edge409
  %314 = phi float [ %.pre411, %._crit_edge409 ], [ %310, %298 ]
  %315 = mul i64 %.1316396, %232
  br label %373

316:                                              ; preds = %312, %._crit_edge389
  %.5 = phi i64 [ %306, %312 ], [ %.4398, %._crit_edge389 ]
  %.not340 = icmp eq i64 %.1316396, %.5
  %.pre415 = mul nsw i64 %.1316396, %18
  br i1 %.not340, label %._crit_edge414, label %317

317:                                              ; preds = %316
  %318 = getelementptr float, ptr %20, i64 %.1316396
  %319 = getelementptr float, ptr %318, i64 %.pre415
  %320 = load float, ptr %319, align 4, !tbaa !14
  %321 = mul nsw i64 %.5, %18
  %322 = getelementptr float, ptr %20, i64 %.5
  %323 = getelementptr float, ptr %322, i64 %321
  store float %320, ptr %323, align 4, !tbaa !14
  %324 = add nsw i64 %.1316396, -1
  store i64 %324, ptr %11, align 8, !tbaa !5
  %325 = getelementptr float, ptr %318, i64 %18
  %326 = getelementptr float, ptr %322, i64 %18
  %327 = call i32 @f2c_sswap(ptr noundef nonnull %11, ptr noundef %325, ptr noundef nonnull %3, ptr noundef %326, ptr noundef nonnull %3) #6
  %328 = load i64, ptr %1, align 8, !tbaa !5
  %329 = icmp slt i64 %.5, %328
  br i1 %329, label %330, label %335

330:                                              ; preds = %317
  %331 = sub nsw i64 %328, %.5
  store i64 %331, ptr %11, align 8, !tbaa !5
  %gep394 = getelementptr float, ptr %invariant.gep393427, i64 %.5
  %332 = getelementptr float, ptr %gep394, i64 %.pre415
  %333 = getelementptr float, ptr %gep394, i64 %321
  %334 = call i32 @f2c_sswap(ptr noundef nonnull %11, ptr noundef %332, ptr noundef nonnull @c__1, ptr noundef %333, ptr noundef nonnull @c__1) #6
  br label %335

335:                                              ; preds = %330, %317
  %336 = xor i64 %.1316396, -1
  %337 = add i64 %.5, %336
  store i64 %337, ptr %11, align 8, !tbaa !5
  %338 = add nuw nsw i64 %.1316396, 1
  %339 = getelementptr float, ptr %20, i64 %338
  %340 = getelementptr float, ptr %339, i64 %.pre415
  %341 = mul nsw i64 %338, %18
  %342 = getelementptr float, ptr %322, i64 %341
  %343 = call i32 @f2c_sswap(ptr noundef nonnull %11, ptr noundef %340, ptr noundef nonnull @c__1, ptr noundef %342, ptr noundef nonnull %3) #6
  %344 = getelementptr inbounds float, ptr %16, i64 %.1316396
  %345 = load float, ptr %344, align 4, !tbaa !14
  %346 = getelementptr inbounds float, ptr %16, i64 %.5
  %347 = load float, ptr %346, align 4, !tbaa !14
  store float %347, ptr %344, align 4, !tbaa !14
  store float %345, ptr %346, align 4, !tbaa !14
  %348 = getelementptr inbounds i64, ptr %17, i64 %.5
  %349 = load i64, ptr %348, align 8, !tbaa !5
  %350 = getelementptr inbounds i64, ptr %17, i64 %.1316396
  %351 = load i64, ptr %350, align 8, !tbaa !5
  store i64 %351, ptr %348, align 8, !tbaa !5
  store i64 %349, ptr %350, align 8, !tbaa !5
  br label %._crit_edge414

._crit_edge414:                                   ; preds = %316, %335
  %352 = load float, ptr %15, align 4, !tbaa !14
  %sqrtf = call float @sqrtf(float noundef %352) #7
  store float %sqrtf, ptr %15, align 4, !tbaa !14
  %353 = getelementptr float, ptr %20, i64 %.1316396
  %354 = getelementptr float, ptr %353, i64 %.pre415
  store float %sqrtf, ptr %354, align 4, !tbaa !14
  %355 = load i64, ptr %1, align 8, !tbaa !5
  %356 = icmp slt i64 %.1316396, %355
  br i1 %356, label %357, label %370

357:                                              ; preds = %._crit_edge414
  %358 = sub nsw i64 %355, %.1316396
  store i64 %358, ptr %11, align 8, !tbaa !5
  %359 = add nsw i64 %.1316396, -1
  store i64 %359, ptr %12, align 8, !tbaa !5
  %360 = getelementptr inbounds float, ptr %2, i64 %.1316396
  %361 = getelementptr float, ptr %353, i64 %18
  %362 = getelementptr i8, ptr %353, i64 4
  %363 = getelementptr float, ptr %362, i64 %.pre415
  %364 = call i32 @f2c_sgemv(ptr noundef nonnull @.str.5, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef nonnull @c_b16, ptr noundef nonnull %360, ptr noundef nonnull %3, ptr noundef %361, ptr noundef nonnull %3, ptr noundef nonnull @c_b18, ptr noundef %363, ptr noundef nonnull @c__1) #6
  %365 = load i64, ptr %1, align 8, !tbaa !5
  %366 = sub nsw i64 %365, %.1316396
  store i64 %366, ptr %11, align 8, !tbaa !5
  %367 = load float, ptr %15, align 4, !tbaa !14
  %368 = fdiv float 1.000000e+00, %367
  store float %368, ptr %13, align 4, !tbaa !14
  %369 = call i32 @f2c_sscal(ptr noundef nonnull %11, ptr noundef nonnull %13, ptr noundef %363, ptr noundef nonnull @c__1) #6
  br label %370

370:                                              ; preds = %._crit_edge414, %357
  %371 = add nuw nsw i64 %.1316396, 1
  %.not337.not = icmp slt i64 %.1316396, %86
  %indvar.next = add i64 %indvar, 1
  br i1 %.not337.not, label %233, label %.loopexit, !llvm.loop !20

.loopexit:                                        ; preds = %231, %370, %85
  %372 = load i64, ptr %1, align 8, !tbaa !5
  store i64 %372, ptr %5, align 8, !tbaa !5
  br label %375

373:                                              ; preds = %split410, %split
  %.sink448 = phi i64 [ %315, %split410 ], [ %177, %split ]
  %.sink446 = phi float [ %314, %split410 ], [ %176, %split ]
  %.pre-phi = phi i64 [ %305, %split410 ], [ %167, %split ]
  %374 = getelementptr inbounds float, ptr %20, i64 %.sink448
  store float %.sink446, ptr %374, align 4, !tbaa !14
  store i64 %.pre-phi, ptr %5, align 8, !tbaa !5
  store i64 1, ptr %8, align 8, !tbaa !5
  br label %375

375:                                              ; preds = %72, %.loopexit, %373, %34, %.thread
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #6
  ret i32 0
}

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

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

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

declare i64 @sisnan_(ptr noundef) local_unnamed_addr #2

declare double @slamch_(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

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

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

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

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

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

declare float @sqrtf(float) local_unnamed_addr

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = distinct !{!9, !10, !11, !12}
!10 = !{!"llvm.loop.mustprogress"}
!11 = !{!"llvm.loop.isvectorized", i32 1}
!12 = !{!"llvm.loop.unroll.runtime.disable"}
!13 = distinct !{!13, !10, !12, !11}
!14 = !{!15, !15, i64 0}
!15 = !{!"float", !7, i64 0}
!16 = distinct !{!16, !10}
!17 = distinct !{!17, !10}
!18 = distinct !{!18, !10}
!19 = distinct !{!19, !10}
!20 = distinct !{!20, !10}


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