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

; 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
@.str.4 = external hidden unnamed_addr constant [13 x i8], align 1
@c__1 = external hidden global i64, align 8
@c_b12 = external hidden global float, align 4
@c_b14 = external hidden global float, align 4

; Function Attrs: nounwind uwtable
define dso_local i32 @spprfs_(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) #0 {
  %15 = alloca i32, align 4
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %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 i64, align 8
  %31 = alloca i64, align 8
  %32 = alloca i64, align 8
  %33 = alloca i64, align 8
  %34 = alloca i64, align 8
  %35 = alloca i64, align 8
  %36 = alloca i64, align 8
  %37 = alloca float, align 4
  %38 = alloca float, align 4
  %39 = alloca float, align 4
  %40 = alloca i64, align 8
  %41 = alloca i64, align 8
  %42 = alloca i64, align 8
  %43 = alloca float, align 4
  %44 = alloca i64, align 8
  %45 = alloca i64, align 8
  %46 = alloca float, align 4
  %47 = alloca i64, align 8
  %48 = alloca float, align 4
  %49 = alloca i64, align 8
  %50 = alloca float, align 4
  %51 = alloca float, align 4
  %52 = alloca [3 x i64], align 16
  %53 = alloca i64, align 8
  %54 = alloca i64, align 8
  %55 = alloca float, align 4
  %56 = alloca float, align 4
  %57 = alloca i32, align 4
  store ptr %0, ptr %16, align 8, !tbaa !5
  store ptr %1, ptr %17, align 8, !tbaa !5
  store ptr %2, ptr %18, align 8, !tbaa !5
  store ptr %3, ptr %19, align 8, !tbaa !5
  store ptr %4, ptr %20, align 8, !tbaa !5
  store ptr %5, ptr %21, align 8, !tbaa !5
  store ptr %6, ptr %22, align 8, !tbaa !5
  store ptr %7, ptr %23, align 8, !tbaa !5
  store ptr %8, ptr %24, align 8, !tbaa !5
  store ptr %9, ptr %25, align 8, !tbaa !5
  store ptr %10, ptr %26, align 8, !tbaa !5
  store ptr %11, ptr %27, align 8, !tbaa !5
  store ptr %12, ptr %28, align 8, !tbaa !5
  store ptr %13, ptr %29, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #4
  call void @llvm.lifetime.start.p0(i64 24, ptr %52) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #4
  %58 = load ptr, ptr %19, align 8, !tbaa !5
  %59 = getelementptr inbounds float, ptr %58, i32 -1
  store ptr %59, ptr %19, align 8, !tbaa !5
  %60 = load ptr, ptr %20, align 8, !tbaa !5
  %61 = getelementptr inbounds float, ptr %60, i32 -1
  store ptr %61, ptr %20, align 8, !tbaa !5
  %62 = load ptr, ptr %22, align 8, !tbaa !5
  %63 = load i64, ptr %62, align 8, !tbaa !9
  store i64 %63, ptr %30, align 8, !tbaa !9
  %64 = load i64, ptr %30, align 8, !tbaa !9
  %65 = add nsw i64 1, %64
  store i64 %65, ptr %31, align 8, !tbaa !9
  %66 = load i64, ptr %31, align 8, !tbaa !9
  %67 = load ptr, ptr %21, align 8, !tbaa !5
  %68 = sub i64 0, %66
  %69 = getelementptr inbounds float, ptr %67, i64 %68
  store ptr %69, ptr %21, align 8, !tbaa !5
  %70 = load ptr, ptr %24, align 8, !tbaa !5
  %71 = load i64, ptr %70, align 8, !tbaa !9
  store i64 %71, ptr %32, align 8, !tbaa !9
  %72 = load i64, ptr %32, align 8, !tbaa !9
  %73 = add nsw i64 1, %72
  store i64 %73, ptr %33, align 8, !tbaa !9
  %74 = load i64, ptr %33, align 8, !tbaa !9
  %75 = load ptr, ptr %23, align 8, !tbaa !5
  %76 = sub i64 0, %74
  %77 = getelementptr inbounds float, ptr %75, i64 %76
  store ptr %77, ptr %23, align 8, !tbaa !5
  %78 = load ptr, ptr %25, align 8, !tbaa !5
  %79 = getelementptr inbounds float, ptr %78, i32 -1
  store ptr %79, ptr %25, align 8, !tbaa !5
  %80 = load ptr, ptr %26, align 8, !tbaa !5
  %81 = getelementptr inbounds float, ptr %80, i32 -1
  store ptr %81, ptr %26, align 8, !tbaa !5
  %82 = load ptr, ptr %27, align 8, !tbaa !5
  %83 = getelementptr inbounds float, ptr %82, i32 -1
  store ptr %83, ptr %27, align 8, !tbaa !5
  %84 = load ptr, ptr %28, align 8, !tbaa !5
  %85 = getelementptr inbounds i64, ptr %84, i32 -1
  store ptr %85, ptr %28, align 8, !tbaa !5
  %86 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 0, ptr %86, align 8, !tbaa !9
  %87 = load ptr, ptr %16, align 8, !tbaa !5
  %88 = call i64 @lsame_(ptr noundef %87, ptr noundef @.str)
  store i64 %88, ptr %54, align 8, !tbaa !9
  %89 = load i64, ptr %54, align 8, !tbaa !9
  %90 = icmp ne i64 %89, 0
  br i1 %90, label %97, label %91

91:                                               ; preds = %14
  %92 = load ptr, ptr %16, align 8, !tbaa !5
  %93 = call i64 @lsame_(ptr noundef %92, ptr noundef @.str.1)
  %94 = icmp ne i64 %93, 0
  br i1 %94, label %97, label %95

95:                                               ; preds = %91
  %96 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -1, ptr %96, align 8, !tbaa !9
  br label %143

97:                                               ; preds = %91, %14
  %98 = load ptr, ptr %17, align 8, !tbaa !5
  %99 = load i64, ptr %98, align 8, !tbaa !9
  %100 = icmp slt i64 %99, 0
  br i1 %100, label %101, label %103

101:                                              ; preds = %97
  %102 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -2, ptr %102, align 8, !tbaa !9
  br label %142

103:                                              ; preds = %97
  %104 = load ptr, ptr %18, align 8, !tbaa !5
  %105 = load i64, ptr %104, align 8, !tbaa !9
  %106 = icmp slt i64 %105, 0
  br i1 %106, label %107, label %109

107:                                              ; preds = %103
  %108 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -3, ptr %108, align 8, !tbaa !9
  br label %141

109:                                              ; preds = %103
  %110 = load ptr, ptr %22, align 8, !tbaa !5
  %111 = load i64, ptr %110, align 8, !tbaa !9
  %112 = load ptr, ptr %17, align 8, !tbaa !5
  %113 = load i64, ptr %112, align 8, !tbaa !9
  %114 = icmp sge i64 1, %113
  br i1 %114, label %115, label %116

115:                                              ; preds = %109
  br label %119

116:                                              ; preds = %109
  %117 = load ptr, ptr %17, align 8, !tbaa !5
  %118 = load i64, ptr %117, align 8, !tbaa !9
  br label %119

119:                                              ; preds = %116, %115
  %120 = phi i64 [ 1, %115 ], [ %118, %116 ]
  %121 = icmp slt i64 %111, %120
  br i1 %121, label %122, label %124

122:                                              ; preds = %119
  %123 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -7, ptr %123, align 8, !tbaa !9
  br label %140

124:                                              ; preds = %119
  %125 = load ptr, ptr %24, align 8, !tbaa !5
  %126 = load i64, ptr %125, align 8, !tbaa !9
  %127 = load ptr, ptr %17, align 8, !tbaa !5
  %128 = load i64, ptr %127, align 8, !tbaa !9
  %129 = icmp sge i64 1, %128
  br i1 %129, label %130, label %131

130:                                              ; preds = %124
  br label %134

131:                                              ; preds = %124
  %132 = load ptr, ptr %17, align 8, !tbaa !5
  %133 = load i64, ptr %132, align 8, !tbaa !9
  br label %134

134:                                              ; preds = %131, %130
  %135 = phi i64 [ 1, %130 ], [ %133, %131 ]
  %136 = icmp slt i64 %126, %135
  br i1 %136, label %137, label %139

137:                                              ; preds = %134
  %138 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -9, ptr %138, align 8, !tbaa !9
  br label %139

139:                                              ; preds = %137, %134
  br label %140

140:                                              ; preds = %139, %122
  br label %141

141:                                              ; preds = %140, %107
  br label %142

142:                                              ; preds = %141, %101
  br label %143

143:                                              ; preds = %142, %95
  %144 = load ptr, ptr %29, align 8, !tbaa !5
  %145 = load i64, ptr %144, align 8, !tbaa !9
  %146 = icmp ne i64 %145, 0
  br i1 %146, label %147, label %152

147:                                              ; preds = %143
  %148 = load ptr, ptr %29, align 8, !tbaa !5
  %149 = load i64, ptr %148, align 8, !tbaa !9
  %150 = sub nsw i64 0, %149
  store i64 %150, ptr %34, align 8, !tbaa !9
  %151 = call i32 @xerbla_(ptr noundef @.str.2, ptr noundef %34)
  store i32 0, ptr %15, align 4
  store i32 1, ptr %57, align 4
  br label %957

152:                                              ; preds = %143
  %153 = load ptr, ptr %17, align 8, !tbaa !5
  %154 = load i64, ptr %153, align 8, !tbaa !9
  %155 = icmp eq i64 %154, 0
  br i1 %155, label %160, label %156

156:                                              ; preds = %152
  %157 = load ptr, ptr %18, align 8, !tbaa !5
  %158 = load i64, ptr %157, align 8, !tbaa !9
  %159 = icmp eq i64 %158, 0
  br i1 %159, label %160, label %178

160:                                              ; preds = %156, %152
  %161 = load ptr, ptr %18, align 8, !tbaa !5
  %162 = load i64, ptr %161, align 8, !tbaa !9
  store i64 %162, ptr %34, align 8, !tbaa !9
  store i64 1, ptr %41, align 8, !tbaa !9
  br label %163

163:                                              ; preds = %174, %160
  %164 = load i64, ptr %41, align 8, !tbaa !9
  %165 = load i64, ptr %34, align 8, !tbaa !9
  %166 = icmp sle i64 %164, %165
  br i1 %166, label %167, label %177

167:                                              ; preds = %163
  %168 = load ptr, ptr %25, align 8, !tbaa !5
  %169 = load i64, ptr %41, align 8, !tbaa !9
  %170 = getelementptr inbounds float, ptr %168, i64 %169
  store float 0.000000e+00, ptr %170, align 4, !tbaa !11
  %171 = load ptr, ptr %26, align 8, !tbaa !5
  %172 = load i64, ptr %41, align 8, !tbaa !9
  %173 = getelementptr inbounds float, ptr %171, i64 %172
  store float 0.000000e+00, ptr %173, align 4, !tbaa !11
  br label %174

174:                                              ; preds = %167
  %175 = load i64, ptr %41, align 8, !tbaa !9
  %176 = add nsw i64 %175, 1
  store i64 %176, ptr %41, align 8, !tbaa !9
  br label %163, !llvm.loop !13

177:                                              ; preds = %163
  store i32 0, ptr %15, align 4
  store i32 1, ptr %57, align 4
  br label %957

178:                                              ; preds = %156
  %179 = load ptr, ptr %17, align 8, !tbaa !5
  %180 = load i64, ptr %179, align 8, !tbaa !9
  %181 = add nsw i64 %180, 1
  store i64 %181, ptr %47, align 8, !tbaa !9
  %182 = call double @slamch_(ptr noundef @.str.3)
  %183 = fptrunc double %182 to float
  store float %183, ptr %48, align 4, !tbaa !11
  %184 = call double @slamch_(ptr noundef @.str.4)
  %185 = fptrunc double %184 to float
  store float %185, ptr %55, align 4, !tbaa !11
  %186 = load i64, ptr %47, align 8, !tbaa !9
  %187 = sitofp i64 %186 to float
  %188 = load float, ptr %55, align 4, !tbaa !11
  %189 = fmul float %187, %188
  store float %189, ptr %50, align 4, !tbaa !11
  %190 = load float, ptr %50, align 4, !tbaa !11
  %191 = load float, ptr %48, align 4, !tbaa !11
  %192 = fdiv float %190, %191
  store float %192, ptr %51, align 4, !tbaa !11
  %193 = load ptr, ptr %18, align 8, !tbaa !5
  %194 = load i64, ptr %193, align 8, !tbaa !9
  store i64 %194, ptr %34, align 8, !tbaa !9
  store i64 1, ptr %41, align 8, !tbaa !9
  br label %195

195:                                              ; preds = %953, %178
  %196 = load i64, ptr %41, align 8, !tbaa !9
  %197 = load i64, ptr %34, align 8, !tbaa !9
  %198 = icmp sle i64 %196, %197
  br i1 %198, label %199, label %956

199:                                              ; preds = %195
  store i64 1, ptr %53, align 8, !tbaa !9
  store float 3.000000e+00, ptr %56, align 4, !tbaa !11
  br label %200

200:                                              ; preds = %666, %199
  %201 = load ptr, ptr %17, align 8, !tbaa !5
  %202 = load ptr, ptr %21, align 8, !tbaa !5
  %203 = load i64, ptr %41, align 8, !tbaa !9
  %204 = load i64, ptr %30, align 8, !tbaa !9
  %205 = mul nsw i64 %203, %204
  %206 = add nsw i64 %205, 1
  %207 = getelementptr inbounds float, ptr %202, i64 %206
  %208 = load ptr, ptr %27, align 8, !tbaa !5
  %209 = load ptr, ptr %17, align 8, !tbaa !5
  %210 = load i64, ptr %209, align 8, !tbaa !9
  %211 = add nsw i64 %210, 1
  %212 = getelementptr inbounds float, ptr %208, i64 %211
  %213 = call i32 @f2c_scopy(ptr noundef %201, ptr noundef %207, ptr noundef @c__1, ptr noundef %212, ptr noundef @c__1)
  %214 = load ptr, ptr %16, align 8, !tbaa !5
  %215 = load ptr, ptr %17, align 8, !tbaa !5
  %216 = load ptr, ptr %19, align 8, !tbaa !5
  %217 = getelementptr inbounds float, ptr %216, i64 1
  %218 = load ptr, ptr %23, align 8, !tbaa !5
  %219 = load i64, ptr %41, align 8, !tbaa !9
  %220 = load i64, ptr %32, align 8, !tbaa !9
  %221 = mul nsw i64 %219, %220
  %222 = add nsw i64 %221, 1
  %223 = getelementptr inbounds float, ptr %218, i64 %222
  %224 = load ptr, ptr %27, align 8, !tbaa !5
  %225 = load ptr, ptr %17, align 8, !tbaa !5
  %226 = load i64, ptr %225, align 8, !tbaa !9
  %227 = add nsw i64 %226, 1
  %228 = getelementptr inbounds float, ptr %224, i64 %227
  %229 = call i32 @f2c_sspmv(ptr noundef %214, ptr noundef %215, ptr noundef @c_b12, ptr noundef %217, ptr noundef %223, ptr noundef @c__1, ptr noundef @c_b14, ptr noundef %228, ptr noundef @c__1)
  %230 = load ptr, ptr %17, align 8, !tbaa !5
  %231 = load i64, ptr %230, align 8, !tbaa !9
  store i64 %231, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %40, align 8, !tbaa !9
  br label %232

232:                                              ; preds = %259, %200
  %233 = load i64, ptr %40, align 8, !tbaa !9
  %234 = load i64, ptr %35, align 8, !tbaa !9
  %235 = icmp sle i64 %233, %234
  br i1 %235, label %236, label %262

236:                                              ; preds = %232
  %237 = load ptr, ptr %21, align 8, !tbaa !5
  %238 = load i64, ptr %40, align 8, !tbaa !9
  %239 = load i64, ptr %41, align 8, !tbaa !9
  %240 = load i64, ptr %30, align 8, !tbaa !9
  %241 = mul nsw i64 %239, %240
  %242 = add nsw i64 %238, %241
  %243 = getelementptr inbounds float, ptr %237, i64 %242
  %244 = load float, ptr %243, align 4, !tbaa !11
  store float %244, ptr %37, align 4, !tbaa !11
  %245 = load float, ptr %37, align 4, !tbaa !11
  %246 = fcmp oge float %245, 0.000000e+00
  br i1 %246, label %247, label %249

247:                                              ; preds = %236
  %248 = load float, ptr %37, align 4, !tbaa !11
  br label %252

249:                                              ; preds = %236
  %250 = load float, ptr %37, align 4, !tbaa !11
  %251 = fneg float %250
  br label %252

252:                                              ; preds = %249, %247
  %253 = phi float [ %248, %247 ], [ %251, %249 ]
  %254 = fpext float %253 to double
  %255 = fptrunc double %254 to float
  %256 = load ptr, ptr %27, align 8, !tbaa !5
  %257 = load i64, ptr %40, align 8, !tbaa !9
  %258 = getelementptr inbounds float, ptr %256, i64 %257
  store float %255, ptr %258, align 4, !tbaa !11
  br label %259

259:                                              ; preds = %252
  %260 = load i64, ptr %40, align 8, !tbaa !9
  %261 = add nsw i64 %260, 1
  store i64 %261, ptr %40, align 8, !tbaa !9
  br label %232, !llvm.loop !15

262:                                              ; preds = %232
  store i64 1, ptr %45, align 8, !tbaa !9
  %263 = load i64, ptr %54, align 8, !tbaa !9
  %264 = icmp ne i64 %263, 0
  br i1 %264, label %265, label %404

265:                                              ; preds = %262
  %266 = load ptr, ptr %17, align 8, !tbaa !5
  %267 = load i64, ptr %266, align 8, !tbaa !9
  store i64 %267, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  br label %268

268:                                              ; preds = %400, %265
  %269 = load i64, ptr %42, align 8, !tbaa !9
  %270 = load i64, ptr %35, align 8, !tbaa !9
  %271 = icmp sle i64 %269, %270
  br i1 %271, label %272, label %403

272:                                              ; preds = %268
  store float 0.000000e+00, ptr %43, align 4, !tbaa !11
  %273 = load ptr, ptr %23, align 8, !tbaa !5
  %274 = load i64, ptr %42, align 8, !tbaa !9
  %275 = load i64, ptr %41, align 8, !tbaa !9
  %276 = load i64, ptr %32, align 8, !tbaa !9
  %277 = mul nsw i64 %275, %276
  %278 = add nsw i64 %274, %277
  %279 = getelementptr inbounds float, ptr %273, i64 %278
  %280 = load float, ptr %279, align 4, !tbaa !11
  store float %280, ptr %37, align 4, !tbaa !11
  %281 = load float, ptr %37, align 4, !tbaa !11
  %282 = fcmp oge float %281, 0.000000e+00
  br i1 %282, label %283, label %285

283:                                              ; preds = %272
  %284 = load float, ptr %37, align 4, !tbaa !11
  br label %288

285:                                              ; preds = %272
  %286 = load float, ptr %37, align 4, !tbaa !11
  %287 = fneg float %286
  br label %288

288:                                              ; preds = %285, %283
  %289 = phi float [ %284, %283 ], [ %287, %285 ]
  %290 = fpext float %289 to double
  %291 = fptrunc double %290 to float
  store float %291, ptr %46, align 4, !tbaa !11
  %292 = load i64, ptr %45, align 8, !tbaa !9
  store i64 %292, ptr %44, align 8, !tbaa !9
  %293 = load i64, ptr %42, align 8, !tbaa !9
  %294 = sub nsw i64 %293, 1
  store i64 %294, ptr %36, align 8, !tbaa !9
  store i64 1, ptr %40, align 8, !tbaa !9
  br label %295

295:                                              ; preds = %361, %288
  %296 = load i64, ptr %40, align 8, !tbaa !9
  %297 = load i64, ptr %36, align 8, !tbaa !9
  %298 = icmp sle i64 %296, %297
  br i1 %298, label %299, label %364

299:                                              ; preds = %295
  %300 = load ptr, ptr %19, align 8, !tbaa !5
  %301 = load i64, ptr %44, align 8, !tbaa !9
  %302 = getelementptr inbounds float, ptr %300, i64 %301
  %303 = load float, ptr %302, align 4, !tbaa !11
  store float %303, ptr %37, align 4, !tbaa !11
  %304 = load float, ptr %37, align 4, !tbaa !11
  %305 = fcmp oge float %304, 0.000000e+00
  br i1 %305, label %306, label %308

306:                                              ; preds = %299
  %307 = load float, ptr %37, align 4, !tbaa !11
  br label %311

308:                                              ; preds = %299
  %309 = load float, ptr %37, align 4, !tbaa !11
  %310 = fneg float %309
  br label %311

311:                                              ; preds = %308, %306
  %312 = phi float [ %307, %306 ], [ %310, %308 ]
  %313 = fpext float %312 to double
  %314 = load float, ptr %46, align 4, !tbaa !11
  %315 = fpext float %314 to double
  %316 = load ptr, ptr %27, align 8, !tbaa !5
  %317 = load i64, ptr %40, align 8, !tbaa !9
  %318 = getelementptr inbounds float, ptr %316, i64 %317
  %319 = load float, ptr %318, align 4, !tbaa !11
  %320 = fpext float %319 to double
  %321 = call double @llvm.fmuladd.f64(double %313, double %315, double %320)
  %322 = fptrunc double %321 to float
  store float %322, ptr %318, align 4, !tbaa !11
  %323 = load ptr, ptr %19, align 8, !tbaa !5
  %324 = load i64, ptr %44, align 8, !tbaa !9
  %325 = getelementptr inbounds float, ptr %323, i64 %324
  %326 = load float, ptr %325, align 4, !tbaa !11
  store float %326, ptr %37, align 4, !tbaa !11
  %327 = load float, ptr %37, align 4, !tbaa !11
  %328 = fcmp oge float %327, 0.000000e+00
  br i1 %328, label %329, label %331

329:                                              ; preds = %311
  %330 = load float, ptr %37, align 4, !tbaa !11
  br label %334

331:                                              ; preds = %311
  %332 = load float, ptr %37, align 4, !tbaa !11
  %333 = fneg float %332
  br label %334

334:                                              ; preds = %331, %329
  %335 = phi float [ %330, %329 ], [ %333, %331 ]
  %336 = fpext float %335 to double
  %337 = load ptr, ptr %23, align 8, !tbaa !5
  %338 = load i64, ptr %40, align 8, !tbaa !9
  %339 = load i64, ptr %41, align 8, !tbaa !9
  %340 = load i64, ptr %32, align 8, !tbaa !9
  %341 = mul nsw i64 %339, %340
  %342 = add nsw i64 %338, %341
  %343 = getelementptr inbounds float, ptr %337, i64 %342
  %344 = load float, ptr %343, align 4, !tbaa !11
  store float %344, ptr %38, align 4, !tbaa !11
  %345 = load float, ptr %38, align 4, !tbaa !11
  %346 = fcmp oge float %345, 0.000000e+00
  br i1 %346, label %347, label %349

347:                                              ; preds = %334
  %348 = load float, ptr %38, align 4, !tbaa !11
  br label %352

349:                                              ; preds = %334
  %350 = load float, ptr %38, align 4, !tbaa !11
  %351 = fneg float %350
  br label %352

352:                                              ; preds = %349, %347
  %353 = phi float [ %348, %347 ], [ %351, %349 ]
  %354 = fpext float %353 to double
  %355 = load float, ptr %43, align 4, !tbaa !11
  %356 = fpext float %355 to double
  %357 = call double @llvm.fmuladd.f64(double %336, double %354, double %356)
  %358 = fptrunc double %357 to float
  store float %358, ptr %43, align 4, !tbaa !11
  %359 = load i64, ptr %44, align 8, !tbaa !9
  %360 = add nsw i64 %359, 1
  store i64 %360, ptr %44, align 8, !tbaa !9
  br label %361

361:                                              ; preds = %352
  %362 = load i64, ptr %40, align 8, !tbaa !9
  %363 = add nsw i64 %362, 1
  store i64 %363, ptr %40, align 8, !tbaa !9
  br label %295, !llvm.loop !16

364:                                              ; preds = %295
  %365 = load ptr, ptr %27, align 8, !tbaa !5
  %366 = load i64, ptr %42, align 8, !tbaa !9
  %367 = getelementptr inbounds float, ptr %365, i64 %366
  %368 = load float, ptr %367, align 4, !tbaa !11
  %369 = fpext float %368 to double
  %370 = load ptr, ptr %19, align 8, !tbaa !5
  %371 = load i64, ptr %45, align 8, !tbaa !9
  %372 = load i64, ptr %42, align 8, !tbaa !9
  %373 = add nsw i64 %371, %372
  %374 = sub nsw i64 %373, 1
  %375 = getelementptr inbounds float, ptr %370, i64 %374
  %376 = load float, ptr %375, align 4, !tbaa !11
  store float %376, ptr %37, align 4, !tbaa !11
  %377 = load float, ptr %37, align 4, !tbaa !11
  %378 = fcmp oge float %377, 0.000000e+00
  br i1 %378, label %379, label %381

379:                                              ; preds = %364
  %380 = load float, ptr %37, align 4, !tbaa !11
  br label %384

381:                                              ; preds = %364
  %382 = load float, ptr %37, align 4, !tbaa !11
  %383 = fneg float %382
  br label %384

384:                                              ; preds = %381, %379
  %385 = phi float [ %380, %379 ], [ %383, %381 ]
  %386 = fpext float %385 to double
  %387 = load float, ptr %46, align 4, !tbaa !11
  %388 = fpext float %387 to double
  %389 = call double @llvm.fmuladd.f64(double %386, double %388, double %369)
  %390 = load float, ptr %43, align 4, !tbaa !11
  %391 = fpext float %390 to double
  %392 = fadd double %389, %391
  %393 = fptrunc double %392 to float
  %394 = load ptr, ptr %27, align 8, !tbaa !5
  %395 = load i64, ptr %42, align 8, !tbaa !9
  %396 = getelementptr inbounds float, ptr %394, i64 %395
  store float %393, ptr %396, align 4, !tbaa !11
  %397 = load i64, ptr %42, align 8, !tbaa !9
  %398 = load i64, ptr %45, align 8, !tbaa !9
  %399 = add nsw i64 %398, %397
  store i64 %399, ptr %45, align 8, !tbaa !9
  br label %400

400:                                              ; preds = %384
  %401 = load i64, ptr %42, align 8, !tbaa !9
  %402 = add nsw i64 %401, 1
  store i64 %402, ptr %42, align 8, !tbaa !9
  br label %268, !llvm.loop !17

403:                                              ; preds = %268
  br label %547

404:                                              ; preds = %262
  %405 = load ptr, ptr %17, align 8, !tbaa !5
  %406 = load i64, ptr %405, align 8, !tbaa !9
  store i64 %406, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  br label %407

407:                                              ; preds = %543, %404
  %408 = load i64, ptr %42, align 8, !tbaa !9
  %409 = load i64, ptr %35, align 8, !tbaa !9
  %410 = icmp sle i64 %408, %409
  br i1 %410, label %411, label %546

411:                                              ; preds = %407
  store float 0.000000e+00, ptr %43, align 4, !tbaa !11
  %412 = load ptr, ptr %23, align 8, !tbaa !5
  %413 = load i64, ptr %42, align 8, !tbaa !9
  %414 = load i64, ptr %41, align 8, !tbaa !9
  %415 = load i64, ptr %32, align 8, !tbaa !9
  %416 = mul nsw i64 %414, %415
  %417 = add nsw i64 %413, %416
  %418 = getelementptr inbounds float, ptr %412, i64 %417
  %419 = load float, ptr %418, align 4, !tbaa !11
  store float %419, ptr %37, align 4, !tbaa !11
  %420 = load float, ptr %37, align 4, !tbaa !11
  %421 = fcmp oge float %420, 0.000000e+00
  br i1 %421, label %422, label %424

422:                                              ; preds = %411
  %423 = load float, ptr %37, align 4, !tbaa !11
  br label %427

424:                                              ; preds = %411
  %425 = load float, ptr %37, align 4, !tbaa !11
  %426 = fneg float %425
  br label %427

427:                                              ; preds = %424, %422
  %428 = phi float [ %423, %422 ], [ %426, %424 ]
  %429 = fpext float %428 to double
  %430 = fptrunc double %429 to float
  store float %430, ptr %46, align 4, !tbaa !11
  %431 = load ptr, ptr %19, align 8, !tbaa !5
  %432 = load i64, ptr %45, align 8, !tbaa !9
  %433 = getelementptr inbounds float, ptr %431, i64 %432
  %434 = load float, ptr %433, align 4, !tbaa !11
  store float %434, ptr %37, align 4, !tbaa !11
  %435 = load float, ptr %37, align 4, !tbaa !11
  %436 = fcmp oge float %435, 0.000000e+00
  br i1 %436, label %437, label %439

437:                                              ; preds = %427
  %438 = load float, ptr %37, align 4, !tbaa !11
  br label %442

439:                                              ; preds = %427
  %440 = load float, ptr %37, align 4, !tbaa !11
  %441 = fneg float %440
  br label %442

442:                                              ; preds = %439, %437
  %443 = phi float [ %438, %437 ], [ %441, %439 ]
  %444 = fpext float %443 to double
  %445 = load float, ptr %46, align 4, !tbaa !11
  %446 = fpext float %445 to double
  %447 = load ptr, ptr %27, align 8, !tbaa !5
  %448 = load i64, ptr %42, align 8, !tbaa !9
  %449 = getelementptr inbounds float, ptr %447, i64 %448
  %450 = load float, ptr %449, align 4, !tbaa !11
  %451 = fpext float %450 to double
  %452 = call double @llvm.fmuladd.f64(double %444, double %446, double %451)
  %453 = fptrunc double %452 to float
  store float %453, ptr %449, align 4, !tbaa !11
  %454 = load i64, ptr %45, align 8, !tbaa !9
  %455 = add nsw i64 %454, 1
  store i64 %455, ptr %44, align 8, !tbaa !9
  %456 = load ptr, ptr %17, align 8, !tbaa !5
  %457 = load i64, ptr %456, align 8, !tbaa !9
  store i64 %457, ptr %36, align 8, !tbaa !9
  %458 = load i64, ptr %42, align 8, !tbaa !9
  %459 = add nsw i64 %458, 1
  store i64 %459, ptr %40, align 8, !tbaa !9
  br label %460

460:                                              ; preds = %526, %442
  %461 = load i64, ptr %40, align 8, !tbaa !9
  %462 = load i64, ptr %36, align 8, !tbaa !9
  %463 = icmp sle i64 %461, %462
  br i1 %463, label %464, label %529

464:                                              ; preds = %460
  %465 = load ptr, ptr %19, align 8, !tbaa !5
  %466 = load i64, ptr %44, align 8, !tbaa !9
  %467 = getelementptr inbounds float, ptr %465, i64 %466
  %468 = load float, ptr %467, align 4, !tbaa !11
  store float %468, ptr %37, align 4, !tbaa !11
  %469 = load float, ptr %37, align 4, !tbaa !11
  %470 = fcmp oge float %469, 0.000000e+00
  br i1 %470, label %471, label %473

471:                                              ; preds = %464
  %472 = load float, ptr %37, align 4, !tbaa !11
  br label %476

473:                                              ; preds = %464
  %474 = load float, ptr %37, align 4, !tbaa !11
  %475 = fneg float %474
  br label %476

476:                                              ; preds = %473, %471
  %477 = phi float [ %472, %471 ], [ %475, %473 ]
  %478 = fpext float %477 to double
  %479 = load float, ptr %46, align 4, !tbaa !11
  %480 = fpext float %479 to double
  %481 = load ptr, ptr %27, align 8, !tbaa !5
  %482 = load i64, ptr %40, align 8, !tbaa !9
  %483 = getelementptr inbounds float, ptr %481, i64 %482
  %484 = load float, ptr %483, align 4, !tbaa !11
  %485 = fpext float %484 to double
  %486 = call double @llvm.fmuladd.f64(double %478, double %480, double %485)
  %487 = fptrunc double %486 to float
  store float %487, ptr %483, align 4, !tbaa !11
  %488 = load ptr, ptr %19, align 8, !tbaa !5
  %489 = load i64, ptr %44, align 8, !tbaa !9
  %490 = getelementptr inbounds float, ptr %488, i64 %489
  %491 = load float, ptr %490, align 4, !tbaa !11
  store float %491, ptr %37, align 4, !tbaa !11
  %492 = load float, ptr %37, align 4, !tbaa !11
  %493 = fcmp oge float %492, 0.000000e+00
  br i1 %493, label %494, label %496

494:                                              ; preds = %476
  %495 = load float, ptr %37, align 4, !tbaa !11
  br label %499

496:                                              ; preds = %476
  %497 = load float, ptr %37, align 4, !tbaa !11
  %498 = fneg float %497
  br label %499

499:                                              ; preds = %496, %494
  %500 = phi float [ %495, %494 ], [ %498, %496 ]
  %501 = fpext float %500 to double
  %502 = load ptr, ptr %23, align 8, !tbaa !5
  %503 = load i64, ptr %40, align 8, !tbaa !9
  %504 = load i64, ptr %41, align 8, !tbaa !9
  %505 = load i64, ptr %32, align 8, !tbaa !9
  %506 = mul nsw i64 %504, %505
  %507 = add nsw i64 %503, %506
  %508 = getelementptr inbounds float, ptr %502, i64 %507
  %509 = load float, ptr %508, align 4, !tbaa !11
  store float %509, ptr %38, align 4, !tbaa !11
  %510 = load float, ptr %38, align 4, !tbaa !11
  %511 = fcmp oge float %510, 0.000000e+00
  br i1 %511, label %512, label %514

512:                                              ; preds = %499
  %513 = load float, ptr %38, align 4, !tbaa !11
  br label %517

514:                                              ; preds = %499
  %515 = load float, ptr %38, align 4, !tbaa !11
  %516 = fneg float %515
  br label %517

517:                                              ; preds = %514, %512
  %518 = phi float [ %513, %512 ], [ %516, %514 ]
  %519 = fpext float %518 to double
  %520 = load float, ptr %43, align 4, !tbaa !11
  %521 = fpext float %520 to double
  %522 = call double @llvm.fmuladd.f64(double %501, double %519, double %521)
  %523 = fptrunc double %522 to float
  store float %523, ptr %43, align 4, !tbaa !11
  %524 = load i64, ptr %44, align 8, !tbaa !9
  %525 = add nsw i64 %524, 1
  store i64 %525, ptr %44, align 8, !tbaa !9
  br label %526

526:                                              ; preds = %517
  %527 = load i64, ptr %40, align 8, !tbaa !9
  %528 = add nsw i64 %527, 1
  store i64 %528, ptr %40, align 8, !tbaa !9
  br label %460, !llvm.loop !18

529:                                              ; preds = %460
  %530 = load float, ptr %43, align 4, !tbaa !11
  %531 = load ptr, ptr %27, align 8, !tbaa !5
  %532 = load i64, ptr %42, align 8, !tbaa !9
  %533 = getelementptr inbounds float, ptr %531, i64 %532
  %534 = load float, ptr %533, align 4, !tbaa !11
  %535 = fadd float %534, %530
  store float %535, ptr %533, align 4, !tbaa !11
  %536 = load ptr, ptr %17, align 8, !tbaa !5
  %537 = load i64, ptr %536, align 8, !tbaa !9
  %538 = load i64, ptr %42, align 8, !tbaa !9
  %539 = sub nsw i64 %537, %538
  %540 = add nsw i64 %539, 1
  %541 = load i64, ptr %45, align 8, !tbaa !9
  %542 = add nsw i64 %541, %540
  store i64 %542, ptr %45, align 8, !tbaa !9
  br label %543

543:                                              ; preds = %529
  %544 = load i64, ptr %42, align 8, !tbaa !9
  %545 = add nsw i64 %544, 1
  store i64 %545, ptr %42, align 8, !tbaa !9
  br label %407, !llvm.loop !19

546:                                              ; preds = %407
  br label %547

547:                                              ; preds = %546, %403
  store float 0.000000e+00, ptr %43, align 4, !tbaa !11
  %548 = load ptr, ptr %17, align 8, !tbaa !5
  %549 = load i64, ptr %548, align 8, !tbaa !9
  store i64 %549, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %40, align 8, !tbaa !9
  br label %550

550:                                              ; preds = %641, %547
  %551 = load i64, ptr %40, align 8, !tbaa !9
  %552 = load i64, ptr %35, align 8, !tbaa !9
  %553 = icmp sle i64 %551, %552
  br i1 %553, label %554, label %644

554:                                              ; preds = %550
  %555 = load ptr, ptr %27, align 8, !tbaa !5
  %556 = load i64, ptr %40, align 8, !tbaa !9
  %557 = getelementptr inbounds float, ptr %555, i64 %556
  %558 = load float, ptr %557, align 4, !tbaa !11
  %559 = load float, ptr %51, align 4, !tbaa !11
  %560 = fcmp ogt float %558, %559
  br i1 %560, label %561, label %598

561:                                              ; preds = %554
  %562 = load float, ptr %43, align 4, !tbaa !11
  store float %562, ptr %38, align 4, !tbaa !11
  %563 = load ptr, ptr %27, align 8, !tbaa !5
  %564 = load ptr, ptr %17, align 8, !tbaa !5
  %565 = load i64, ptr %564, align 8, !tbaa !9
  %566 = load i64, ptr %40, align 8, !tbaa !9
  %567 = add nsw i64 %565, %566
  %568 = getelementptr inbounds float, ptr %563, i64 %567
  %569 = load float, ptr %568, align 4, !tbaa !11
  store float %569, ptr %37, align 4, !tbaa !11
  %570 = load float, ptr %37, align 4, !tbaa !11
  %571 = fcmp oge float %570, 0.000000e+00
  br i1 %571, label %572, label %574

572:                                              ; preds = %561
  %573 = load float, ptr %37, align 4, !tbaa !11
  br label %577

574:                                              ; preds = %561
  %575 = load float, ptr %37, align 4, !tbaa !11
  %576 = fneg float %575
  br label %577

577:                                              ; preds = %574, %572
  %578 = phi float [ %573, %572 ], [ %576, %574 ]
  %579 = fpext float %578 to double
  %580 = load ptr, ptr %27, align 8, !tbaa !5
  %581 = load i64, ptr %40, align 8, !tbaa !9
  %582 = getelementptr inbounds float, ptr %580, i64 %581
  %583 = load float, ptr %582, align 4, !tbaa !11
  %584 = fpext float %583 to double
  %585 = fdiv double %579, %584
  %586 = fptrunc double %585 to float
  store float %586, ptr %39, align 4, !tbaa !11
  %587 = load float, ptr %38, align 4, !tbaa !11
  %588 = load float, ptr %39, align 4, !tbaa !11
  %589 = fcmp oge float %587, %588
  br i1 %589, label %590, label %592

590:                                              ; preds = %577
  %591 = load float, ptr %38, align 4, !tbaa !11
  br label %594

592:                                              ; preds = %577
  %593 = load float, ptr %39, align 4, !tbaa !11
  br label %594

594:                                              ; preds = %592, %590
  %595 = phi float [ %591, %590 ], [ %593, %592 ]
  %596 = fpext float %595 to double
  %597 = fptrunc double %596 to float
  store float %597, ptr %43, align 4, !tbaa !11
  br label %640

598:                                              ; preds = %554
  %599 = load float, ptr %43, align 4, !tbaa !11
  store float %599, ptr %38, align 4, !tbaa !11
  %600 = load ptr, ptr %27, align 8, !tbaa !5
  %601 = load ptr, ptr %17, align 8, !tbaa !5
  %602 = load i64, ptr %601, align 8, !tbaa !9
  %603 = load i64, ptr %40, align 8, !tbaa !9
  %604 = add nsw i64 %602, %603
  %605 = getelementptr inbounds float, ptr %600, i64 %604
  %606 = load float, ptr %605, align 4, !tbaa !11
  store float %606, ptr %37, align 4, !tbaa !11
  %607 = load float, ptr %37, align 4, !tbaa !11
  %608 = fcmp oge float %607, 0.000000e+00
  br i1 %608, label %609, label %611

609:                                              ; preds = %598
  %610 = load float, ptr %37, align 4, !tbaa !11
  br label %614

611:                                              ; preds = %598
  %612 = load float, ptr %37, align 4, !tbaa !11
  %613 = fneg float %612
  br label %614

614:                                              ; preds = %611, %609
  %615 = phi float [ %610, %609 ], [ %613, %611 ]
  %616 = fpext float %615 to double
  %617 = load float, ptr %50, align 4, !tbaa !11
  %618 = fpext float %617 to double
  %619 = fadd double %616, %618
  %620 = load ptr, ptr %27, align 8, !tbaa !5
  %621 = load i64, ptr %40, align 8, !tbaa !9
  %622 = getelementptr inbounds float, ptr %620, i64 %621
  %623 = load float, ptr %622, align 4, !tbaa !11
  %624 = load float, ptr %50, align 4, !tbaa !11
  %625 = fadd float %623, %624
  %626 = fpext float %625 to double
  %627 = fdiv double %619, %626
  %628 = fptrunc double %627 to float
  store float %628, ptr %39, align 4, !tbaa !11
  %629 = load float, ptr %38, align 4, !tbaa !11
  %630 = load float, ptr %39, align 4, !tbaa !11
  %631 = fcmp oge float %629, %630
  br i1 %631, label %632, label %634

632:                                              ; preds = %614
  %633 = load float, ptr %38, align 4, !tbaa !11
  br label %636

634:                                              ; preds = %614
  %635 = load float, ptr %39, align 4, !tbaa !11
  br label %636

636:                                              ; preds = %634, %632
  %637 = phi float [ %633, %632 ], [ %635, %634 ]
  %638 = fpext float %637 to double
  %639 = fptrunc double %638 to float
  store float %639, ptr %43, align 4, !tbaa !11
  br label %640

640:                                              ; preds = %636, %594
  br label %641

641:                                              ; preds = %640
  %642 = load i64, ptr %40, align 8, !tbaa !9
  %643 = add nsw i64 %642, 1
  store i64 %643, ptr %40, align 8, !tbaa !9
  br label %550, !llvm.loop !20

644:                                              ; preds = %550
  %645 = load float, ptr %43, align 4, !tbaa !11
  %646 = load ptr, ptr %26, align 8, !tbaa !5
  %647 = load i64, ptr %41, align 8, !tbaa !9
  %648 = getelementptr inbounds float, ptr %646, i64 %647
  store float %645, ptr %648, align 4, !tbaa !11
  %649 = load ptr, ptr %26, align 8, !tbaa !5
  %650 = load i64, ptr %41, align 8, !tbaa !9
  %651 = getelementptr inbounds float, ptr %649, i64 %650
  %652 = load float, ptr %651, align 4, !tbaa !11
  %653 = load float, ptr %48, align 4, !tbaa !11
  %654 = fcmp ogt float %652, %653
  br i1 %654, label %655, label %698

655:                                              ; preds = %644
  %656 = load ptr, ptr %26, align 8, !tbaa !5
  %657 = load i64, ptr %41, align 8, !tbaa !9
  %658 = getelementptr inbounds float, ptr %656, i64 %657
  %659 = load float, ptr %658, align 4, !tbaa !11
  %660 = fmul float %659, 2.000000e+00
  %661 = load float, ptr %56, align 4, !tbaa !11
  %662 = fcmp ole float %660, %661
  br i1 %662, label %663, label %698

663:                                              ; preds = %655
  %664 = load i64, ptr %53, align 8, !tbaa !9
  %665 = icmp sle i64 %664, 5
  br i1 %665, label %666, label %698

666:                                              ; preds = %663
  %667 = load ptr, ptr %16, align 8, !tbaa !5
  %668 = load ptr, ptr %17, align 8, !tbaa !5
  %669 = load ptr, ptr %20, align 8, !tbaa !5
  %670 = getelementptr inbounds float, ptr %669, i64 1
  %671 = load ptr, ptr %27, align 8, !tbaa !5
  %672 = load ptr, ptr %17, align 8, !tbaa !5
  %673 = load i64, ptr %672, align 8, !tbaa !9
  %674 = add nsw i64 %673, 1
  %675 = getelementptr inbounds float, ptr %671, i64 %674
  %676 = load ptr, ptr %17, align 8, !tbaa !5
  %677 = load ptr, ptr %29, align 8, !tbaa !5
  %678 = call i32 @spptrs_(ptr noundef %667, ptr noundef %668, ptr noundef @c__1, ptr noundef %670, ptr noundef %675, ptr noundef %676, ptr noundef %677)
  %679 = load ptr, ptr %17, align 8, !tbaa !5
  %680 = load ptr, ptr %27, align 8, !tbaa !5
  %681 = load ptr, ptr %17, align 8, !tbaa !5
  %682 = load i64, ptr %681, align 8, !tbaa !9
  %683 = add nsw i64 %682, 1
  %684 = getelementptr inbounds float, ptr %680, i64 %683
  %685 = load ptr, ptr %23, align 8, !tbaa !5
  %686 = load i64, ptr %41, align 8, !tbaa !9
  %687 = load i64, ptr %32, align 8, !tbaa !9
  %688 = mul nsw i64 %686, %687
  %689 = add nsw i64 %688, 1
  %690 = getelementptr inbounds float, ptr %685, i64 %689
  %691 = call i32 @f2c_saxpy(ptr noundef %679, ptr noundef @c_b14, ptr noundef %684, ptr noundef @c__1, ptr noundef %690, ptr noundef @c__1)
  %692 = load ptr, ptr %26, align 8, !tbaa !5
  %693 = load i64, ptr %41, align 8, !tbaa !9
  %694 = getelementptr inbounds float, ptr %692, i64 %693
  %695 = load float, ptr %694, align 4, !tbaa !11
  store float %695, ptr %56, align 4, !tbaa !11
  %696 = load i64, ptr %53, align 8, !tbaa !9
  %697 = add nsw i64 %696, 1
  store i64 %697, ptr %53, align 8, !tbaa !9
  br label %200

698:                                              ; preds = %663, %655, %644
  %699 = load ptr, ptr %17, align 8, !tbaa !5
  %700 = load i64, ptr %699, align 8, !tbaa !9
  store i64 %700, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %40, align 8, !tbaa !9
  br label %701

701:                                              ; preds = %782, %698
  %702 = load i64, ptr %40, align 8, !tbaa !9
  %703 = load i64, ptr %35, align 8, !tbaa !9
  %704 = icmp sle i64 %702, %703
  br i1 %704, label %705, label %785

705:                                              ; preds = %701
  %706 = load ptr, ptr %27, align 8, !tbaa !5
  %707 = load i64, ptr %40, align 8, !tbaa !9
  %708 = getelementptr inbounds float, ptr %706, i64 %707
  %709 = load float, ptr %708, align 4, !tbaa !11
  %710 = load float, ptr %51, align 4, !tbaa !11
  %711 = fcmp ogt float %709, %710
  br i1 %711, label %712, label %745

712:                                              ; preds = %705
  %713 = load ptr, ptr %27, align 8, !tbaa !5
  %714 = load ptr, ptr %17, align 8, !tbaa !5
  %715 = load i64, ptr %714, align 8, !tbaa !9
  %716 = load i64, ptr %40, align 8, !tbaa !9
  %717 = add nsw i64 %715, %716
  %718 = getelementptr inbounds float, ptr %713, i64 %717
  %719 = load float, ptr %718, align 4, !tbaa !11
  store float %719, ptr %37, align 4, !tbaa !11
  %720 = load float, ptr %37, align 4, !tbaa !11
  %721 = fcmp oge float %720, 0.000000e+00
  br i1 %721, label %722, label %724

722:                                              ; preds = %712
  %723 = load float, ptr %37, align 4, !tbaa !11
  br label %727

724:                                              ; preds = %712
  %725 = load float, ptr %37, align 4, !tbaa !11
  %726 = fneg float %725
  br label %727

727:                                              ; preds = %724, %722
  %728 = phi float [ %723, %722 ], [ %726, %724 ]
  %729 = fpext float %728 to double
  %730 = load i64, ptr %47, align 8, !tbaa !9
  %731 = sitofp i64 %730 to float
  %732 = load float, ptr %48, align 4, !tbaa !11
  %733 = fmul float %731, %732
  %734 = load ptr, ptr %27, align 8, !tbaa !5
  %735 = load i64, ptr %40, align 8, !tbaa !9
  %736 = getelementptr inbounds float, ptr %734, i64 %735
  %737 = load float, ptr %736, align 4, !tbaa !11
  %738 = fmul float %733, %737
  %739 = fpext float %738 to double
  %740 = fadd double %729, %739
  %741 = fptrunc double %740 to float
  %742 = load ptr, ptr %27, align 8, !tbaa !5
  %743 = load i64, ptr %40, align 8, !tbaa !9
  %744 = getelementptr inbounds float, ptr %742, i64 %743
  store float %741, ptr %744, align 4, !tbaa !11
  br label %781

745:                                              ; preds = %705
  %746 = load ptr, ptr %27, align 8, !tbaa !5
  %747 = load ptr, ptr %17, align 8, !tbaa !5
  %748 = load i64, ptr %747, align 8, !tbaa !9
  %749 = load i64, ptr %40, align 8, !tbaa !9
  %750 = add nsw i64 %748, %749
  %751 = getelementptr inbounds float, ptr %746, i64 %750
  %752 = load float, ptr %751, align 4, !tbaa !11
  store float %752, ptr %37, align 4, !tbaa !11
  %753 = load float, ptr %37, align 4, !tbaa !11
  %754 = fcmp oge float %753, 0.000000e+00
  br i1 %754, label %755, label %757

755:                                              ; preds = %745
  %756 = load float, ptr %37, align 4, !tbaa !11
  br label %760

757:                                              ; preds = %745
  %758 = load float, ptr %37, align 4, !tbaa !11
  %759 = fneg float %758
  br label %760

760:                                              ; preds = %757, %755
  %761 = phi float [ %756, %755 ], [ %759, %757 ]
  %762 = fpext float %761 to double
  %763 = load i64, ptr %47, align 8, !tbaa !9
  %764 = sitofp i64 %763 to float
  %765 = load float, ptr %48, align 4, !tbaa !11
  %766 = fmul float %764, %765
  %767 = load ptr, ptr %27, align 8, !tbaa !5
  %768 = load i64, ptr %40, align 8, !tbaa !9
  %769 = getelementptr inbounds float, ptr %767, i64 %768
  %770 = load float, ptr %769, align 4, !tbaa !11
  %771 = fmul float %766, %770
  %772 = fpext float %771 to double
  %773 = fadd double %762, %772
  %774 = load float, ptr %50, align 4, !tbaa !11
  %775 = fpext float %774 to double
  %776 = fadd double %773, %775
  %777 = fptrunc double %776 to float
  %778 = load ptr, ptr %27, align 8, !tbaa !5
  %779 = load i64, ptr %40, align 8, !tbaa !9
  %780 = getelementptr inbounds float, ptr %778, i64 %779
  store float %777, ptr %780, align 4, !tbaa !11
  br label %781

781:                                              ; preds = %760, %727
  br label %782

782:                                              ; preds = %781
  %783 = load i64, ptr %40, align 8, !tbaa !9
  %784 = add nsw i64 %783, 1
  store i64 %784, ptr %40, align 8, !tbaa !9
  br label %701, !llvm.loop !21

785:                                              ; preds = %701
  store i64 0, ptr %49, align 8, !tbaa !9
  br label %786

786:                                              ; preds = %899, %785
  %787 = load ptr, ptr %17, align 8, !tbaa !5
  %788 = load ptr, ptr %27, align 8, !tbaa !5
  %789 = load ptr, ptr %17, align 8, !tbaa !5
  %790 = load i64, ptr %789, align 8, !tbaa !9
  %791 = shl i64 %790, 1
  %792 = add nsw i64 %791, 1
  %793 = getelementptr inbounds float, ptr %788, i64 %792
  %794 = load ptr, ptr %27, align 8, !tbaa !5
  %795 = load ptr, ptr %17, align 8, !tbaa !5
  %796 = load i64, ptr %795, align 8, !tbaa !9
  %797 = add nsw i64 %796, 1
  %798 = getelementptr inbounds float, ptr %794, i64 %797
  %799 = load ptr, ptr %28, align 8, !tbaa !5
  %800 = getelementptr inbounds i64, ptr %799, i64 1
  %801 = load ptr, ptr %25, align 8, !tbaa !5
  %802 = load i64, ptr %41, align 8, !tbaa !9
  %803 = getelementptr inbounds float, ptr %801, i64 %802
  %804 = getelementptr inbounds [3 x i64], ptr %52, i64 0, i64 0
  %805 = call i32 @slacn2_(ptr noundef %787, ptr noundef %793, ptr noundef %798, ptr noundef %800, ptr noundef %803, ptr noundef %49, ptr noundef %804)
  %806 = load i64, ptr %49, align 8, !tbaa !9
  %807 = icmp ne i64 %806, 0
  br i1 %807, label %808, label %900

808:                                              ; preds = %786
  %809 = load i64, ptr %49, align 8, !tbaa !9
  %810 = icmp eq i64 %809, 1
  br i1 %810, label %811, label %853

811:                                              ; preds = %808
  %812 = load ptr, ptr %16, align 8, !tbaa !5
  %813 = load ptr, ptr %17, align 8, !tbaa !5
  %814 = load ptr, ptr %20, align 8, !tbaa !5
  %815 = getelementptr inbounds float, ptr %814, i64 1
  %816 = load ptr, ptr %27, align 8, !tbaa !5
  %817 = load ptr, ptr %17, align 8, !tbaa !5
  %818 = load i64, ptr %817, align 8, !tbaa !9
  %819 = add nsw i64 %818, 1
  %820 = getelementptr inbounds float, ptr %816, i64 %819
  %821 = load ptr, ptr %17, align 8, !tbaa !5
  %822 = load ptr, ptr %29, align 8, !tbaa !5
  %823 = call i32 @spptrs_(ptr noundef %812, ptr noundef %813, ptr noundef @c__1, ptr noundef %815, ptr noundef %820, ptr noundef %821, ptr noundef %822)
  %824 = load ptr, ptr %17, align 8, !tbaa !5
  %825 = load i64, ptr %824, align 8, !tbaa !9
  store i64 %825, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %40, align 8, !tbaa !9
  br label %826

826:                                              ; preds = %849, %811
  %827 = load i64, ptr %40, align 8, !tbaa !9
  %828 = load i64, ptr %35, align 8, !tbaa !9
  %829 = icmp sle i64 %827, %828
  br i1 %829, label %830, label %852

830:                                              ; preds = %826
  %831 = load ptr, ptr %27, align 8, !tbaa !5
  %832 = load i64, ptr %40, align 8, !tbaa !9
  %833 = getelementptr inbounds float, ptr %831, i64 %832
  %834 = load float, ptr %833, align 4, !tbaa !11
  %835 = load ptr, ptr %27, align 8, !tbaa !5
  %836 = load ptr, ptr %17, align 8, !tbaa !5
  %837 = load i64, ptr %836, align 8, !tbaa !9
  %838 = load i64, ptr %40, align 8, !tbaa !9
  %839 = add nsw i64 %837, %838
  %840 = getelementptr inbounds float, ptr %835, i64 %839
  %841 = load float, ptr %840, align 4, !tbaa !11
  %842 = fmul float %834, %841
  %843 = load ptr, ptr %27, align 8, !tbaa !5
  %844 = load ptr, ptr %17, align 8, !tbaa !5
  %845 = load i64, ptr %844, align 8, !tbaa !9
  %846 = load i64, ptr %40, align 8, !tbaa !9
  %847 = add nsw i64 %845, %846
  %848 = getelementptr inbounds float, ptr %843, i64 %847
  store float %842, ptr %848, align 4, !tbaa !11
  br label %849

849:                                              ; preds = %830
  %850 = load i64, ptr %40, align 8, !tbaa !9
  %851 = add nsw i64 %850, 1
  store i64 %851, ptr %40, align 8, !tbaa !9
  br label %826, !llvm.loop !22

852:                                              ; preds = %826
  br label %899

853:                                              ; preds = %808
  %854 = load i64, ptr %49, align 8, !tbaa !9
  %855 = icmp eq i64 %854, 2
  br i1 %855, label %856, label %898

856:                                              ; preds = %853
  %857 = load ptr, ptr %17, align 8, !tbaa !5
  %858 = load i64, ptr %857, align 8, !tbaa !9
  store i64 %858, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %40, align 8, !tbaa !9
  br label %859

859:                                              ; preds = %882, %856
  %860 = load i64, ptr %40, align 8, !tbaa !9
  %861 = load i64, ptr %35, align 8, !tbaa !9
  %862 = icmp sle i64 %860, %861
  br i1 %862, label %863, label %885

863:                                              ; preds = %859
  %864 = load ptr, ptr %27, align 8, !tbaa !5
  %865 = load i64, ptr %40, align 8, !tbaa !9
  %866 = getelementptr inbounds float, ptr %864, i64 %865
  %867 = load float, ptr %866, align 4, !tbaa !11
  %868 = load ptr, ptr %27, align 8, !tbaa !5
  %869 = load ptr, ptr %17, align 8, !tbaa !5
  %870 = load i64, ptr %869, align 8, !tbaa !9
  %871 = load i64, ptr %40, align 8, !tbaa !9
  %872 = add nsw i64 %870, %871
  %873 = getelementptr inbounds float, ptr %868, i64 %872
  %874 = load float, ptr %873, align 4, !tbaa !11
  %875 = fmul float %867, %874
  %876 = load ptr, ptr %27, align 8, !tbaa !5
  %877 = load ptr, ptr %17, align 8, !tbaa !5
  %878 = load i64, ptr %877, align 8, !tbaa !9
  %879 = load i64, ptr %40, align 8, !tbaa !9
  %880 = add nsw i64 %878, %879
  %881 = getelementptr inbounds float, ptr %876, i64 %880
  store float %875, ptr %881, align 4, !tbaa !11
  br label %882

882:                                              ; preds = %863
  %883 = load i64, ptr %40, align 8, !tbaa !9
  %884 = add nsw i64 %883, 1
  store i64 %884, ptr %40, align 8, !tbaa !9
  br label %859, !llvm.loop !23

885:                                              ; preds = %859
  %886 = load ptr, ptr %16, align 8, !tbaa !5
  %887 = load ptr, ptr %17, align 8, !tbaa !5
  %888 = load ptr, ptr %20, align 8, !tbaa !5
  %889 = getelementptr inbounds float, ptr %888, i64 1
  %890 = load ptr, ptr %27, align 8, !tbaa !5
  %891 = load ptr, ptr %17, align 8, !tbaa !5
  %892 = load i64, ptr %891, align 8, !tbaa !9
  %893 = add nsw i64 %892, 1
  %894 = getelementptr inbounds float, ptr %890, i64 %893
  %895 = load ptr, ptr %17, align 8, !tbaa !5
  %896 = load ptr, ptr %29, align 8, !tbaa !5
  %897 = call i32 @spptrs_(ptr noundef %886, ptr noundef %887, ptr noundef @c__1, ptr noundef %889, ptr noundef %894, ptr noundef %895, ptr noundef %896)
  br label %898

898:                                              ; preds = %885, %853
  br label %899

899:                                              ; preds = %898, %852
  br label %786

900:                                              ; preds = %786
  store float 0.000000e+00, ptr %56, align 4, !tbaa !11
  %901 = load ptr, ptr %17, align 8, !tbaa !5
  %902 = load i64, ptr %901, align 8, !tbaa !9
  store i64 %902, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %40, align 8, !tbaa !9
  br label %903

903:                                              ; preds = %939, %900
  %904 = load i64, ptr %40, align 8, !tbaa !9
  %905 = load i64, ptr %35, align 8, !tbaa !9
  %906 = icmp sle i64 %904, %905
  br i1 %906, label %907, label %942

907:                                              ; preds = %903
  %908 = load float, ptr %56, align 4, !tbaa !11
  store float %908, ptr %38, align 4, !tbaa !11
  %909 = load ptr, ptr %23, align 8, !tbaa !5
  %910 = load i64, ptr %40, align 8, !tbaa !9
  %911 = load i64, ptr %41, align 8, !tbaa !9
  %912 = load i64, ptr %32, align 8, !tbaa !9
  %913 = mul nsw i64 %911, %912
  %914 = add nsw i64 %910, %913
  %915 = getelementptr inbounds float, ptr %909, i64 %914
  %916 = load float, ptr %915, align 4, !tbaa !11
  store float %916, ptr %37, align 4, !tbaa !11
  %917 = load float, ptr %37, align 4, !tbaa !11
  %918 = fcmp oge float %917, 0.000000e+00
  br i1 %918, label %919, label %921

919:                                              ; preds = %907
  %920 = load float, ptr %37, align 4, !tbaa !11
  br label %924

921:                                              ; preds = %907
  %922 = load float, ptr %37, align 4, !tbaa !11
  %923 = fneg float %922
  br label %924

924:                                              ; preds = %921, %919
  %925 = phi float [ %920, %919 ], [ %923, %921 ]
  %926 = fpext float %925 to double
  %927 = fptrunc double %926 to float
  store float %927, ptr %39, align 4, !tbaa !11
  %928 = load float, ptr %38, align 4, !tbaa !11
  %929 = load float, ptr %39, align 4, !tbaa !11
  %930 = fcmp oge float %928, %929
  br i1 %930, label %931, label %933

931:                                              ; preds = %924
  %932 = load float, ptr %38, align 4, !tbaa !11
  br label %935

933:                                              ; preds = %924
  %934 = load float, ptr %39, align 4, !tbaa !11
  br label %935

935:                                              ; preds = %933, %931
  %936 = phi float [ %932, %931 ], [ %934, %933 ]
  %937 = fpext float %936 to double
  %938 = fptrunc double %937 to float
  store float %938, ptr %56, align 4, !tbaa !11
  br label %939

939:                                              ; preds = %935
  %940 = load i64, ptr %40, align 8, !tbaa !9
  %941 = add nsw i64 %940, 1
  store i64 %941, ptr %40, align 8, !tbaa !9
  br label %903, !llvm.loop !24

942:                                              ; preds = %903
  %943 = load float, ptr %56, align 4, !tbaa !11
  %944 = fcmp une float %943, 0.000000e+00
  br i1 %944, label %945, label %952

945:                                              ; preds = %942
  %946 = load float, ptr %56, align 4, !tbaa !11
  %947 = load ptr, ptr %25, align 8, !tbaa !5
  %948 = load i64, ptr %41, align 8, !tbaa !9
  %949 = getelementptr inbounds float, ptr %947, i64 %948
  %950 = load float, ptr %949, align 4, !tbaa !11
  %951 = fdiv float %950, %946
  store float %951, ptr %949, align 4, !tbaa !11
  br label %952

952:                                              ; preds = %945, %942
  br label %953

953:                                              ; preds = %952
  %954 = load i64, ptr %41, align 8, !tbaa !9
  %955 = add nsw i64 %954, 1
  store i64 %955, ptr %41, align 8, !tbaa !9
  br label %195, !llvm.loop !25

956:                                              ; preds = %195
  store i32 0, ptr %15, align 4
  store i32 1, ptr %57, align 4
  br label %957

957:                                              ; preds = %956, %177, %147
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #4
  %958 = load i32, ptr %15, align 4
  ret i32 %958
}

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

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

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

declare double @slamch_(ptr noundef) #2

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

declare i32 @f2c_sspmv(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 double @llvm.fmuladd.f64(double, double, double) #3

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

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

declare i32 @slacn2_(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 }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"float", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}
!20 = distinct !{!20, !14}
!21 = distinct !{!21, !14}
!22 = distinct !{!22, !14}
!23 = distinct !{!23, !14}
!24 = distinct !{!24, !14}
!25 = distinct !{!25, !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 [7 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [13 x i8], align 1
@c__1 = external hidden global i64, align 8
@c_b12 = external hidden global float, align 4
@c_b14 = external hidden global float, align 4

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @spprfs_(ptr noundef %0, ptr noundef %1, ptr nocapture noundef readonly %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr nocapture noundef readonly %6, ptr noundef %7, ptr nocapture noundef readonly %8, ptr noundef %9, ptr nocapture noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13) local_unnamed_addr #0 {
  %15 = ptrtoint ptr %9 to i64
  %16 = ptrtoint ptr %10 to i64
  %17 = ptrtoint ptr %5 to i64
  %18 = ptrtoint ptr %11 to i64
  %19 = alloca i64, align 8
  %20 = alloca i64, align 8
  %21 = alloca [3 x i64], align 16
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #5
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %21) #5
  %22 = getelementptr inbounds i8, ptr %3, i64 -4
  %23 = load i64, ptr %6, align 8, !tbaa !5
  %24 = xor i64 %23, -1
  %25 = getelementptr inbounds float, ptr %5, i64 %24
  %26 = load i64, ptr %8, align 8, !tbaa !5
  %27 = xor i64 %26, -1
  %28 = getelementptr inbounds float, ptr %7, i64 %27
  %29 = getelementptr inbounds i8, ptr %9, i64 -4
  %30 = getelementptr inbounds i8, ptr %10, i64 -4
  %31 = getelementptr inbounds i8, ptr %11, i64 -4
  store i64 0, ptr %13, align 8, !tbaa !5
  %32 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #5
  %.not = icmp eq i64 %32, 0
  br i1 %.not, label %33, label %35

33:                                               ; preds = %14
  %34 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #5
  %.not368 = icmp eq i64 %34, 0
  br i1 %.not368, label %.thread.sink.split, label %35

35:                                               ; preds = %33, %14
  %36 = load i64, ptr %1, align 8, !tbaa !5
  %37 = icmp slt i64 %36, 0
  br i1 %37, label %.thread.sink.split, label %38

38:                                               ; preds = %35
  %39 = load i64, ptr %2, align 8, !tbaa !5
  %40 = icmp slt i64 %39, 0
  br i1 %40, label %.thread.sink.split, label %41

41:                                               ; preds = %38
  %42 = load i64, ptr %6, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %36, i64 1)
  %43 = icmp slt i64 %42, %spec.select
  br i1 %43, label %.thread.sink.split, label %44

44:                                               ; preds = %41
  %45 = load i64, ptr %8, align 8, !tbaa !5
  %46 = icmp slt i64 %45, %spec.select
  br i1 %46, label %.thread.sink.split, label %47

47:                                               ; preds = %44
  %.pr = load i64, ptr %13, align 8, !tbaa !5
  %.not369 = icmp eq i64 %.pr, 0
  br i1 %.not369, label %51, label %.thread

.thread.sink.split:                               ; preds = %44, %41, %38, %35, %33
  %.sink = phi i64 [ -1, %33 ], [ -2, %35 ], [ -3, %38 ], [ -7, %41 ], [ -9, %44 ]
  store i64 %.sink, ptr %13, align 8, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %47
  %48 = phi i64 [ %.pr, %47 ], [ %.sink, %.thread.sink.split ]
  %49 = sub nsw i64 0, %48
  store i64 %49, ptr %19, align 8, !tbaa !5
  %50 = call i32 @xerbla_(ptr noundef nonnull @.str.2, ptr noundef nonnull %19) #5
  br label %.loopexit

51:                                               ; preds = %47
  %52 = icmp eq i64 %36, 0
  %.not382464 = icmp eq i64 %39, 0
  br i1 %52, label %54, label %53

53:                                               ; preds = %51
  br i1 %.not382464, label %.loopexit, label %79

54:                                               ; preds = %51
  br i1 %.not382464, label %.loopexit, label %.lr.ph467.preheader

.lr.ph467.preheader:                              ; preds = %54
  %min.iters.check560 = icmp ult i64 %39, 8
  %55 = sub i64 %16, %15
  %diff.check557 = icmp ult i64 %55, 32
  %or.cond571 = or i1 %min.iters.check560, %diff.check557
  br i1 %or.cond571, label %.lr.ph467.preheader573, label %vector.ph561

vector.ph561:                                     ; preds = %.lr.ph467.preheader
  %n.vec563 = and i64 %39, 9223372036854775800
  %ind.end564 = or disjoint i64 %n.vec563, 1
  br label %vector.body566

vector.body566:                                   ; preds = %vector.body566, %vector.ph561
  %index567 = phi i64 [ 0, %vector.ph561 ], [ %index.next569, %vector.body566 ]
  %56 = getelementptr float, ptr %9, i64 %index567
  %57 = getelementptr inbounds i8, ptr %56, i64 16
  store <4 x float> zeroinitializer, ptr %56, align 4, !tbaa !9
  store <4 x float> zeroinitializer, ptr %57, align 4, !tbaa !9
  %58 = getelementptr float, ptr %10, i64 %index567
  %59 = getelementptr inbounds i8, ptr %58, i64 16
  store <4 x float> zeroinitializer, ptr %58, align 4, !tbaa !9
  store <4 x float> zeroinitializer, ptr %59, align 4, !tbaa !9
  %index.next569 = add nuw i64 %index567, 8
  %60 = icmp eq i64 %index.next569, %n.vec563
  br i1 %60, label %middle.block558, label %vector.body566, !llvm.loop !11

middle.block558:                                  ; preds = %vector.body566
  %cmp.n570 = icmp eq i64 %39, %n.vec563
  br i1 %cmp.n570, label %.loopexit, label %.lr.ph467.preheader573

.lr.ph467.preheader573:                           ; preds = %middle.block558, %.lr.ph467.preheader
  %.0353465.ph = phi i64 [ 1, %.lr.ph467.preheader ], [ %ind.end564, %middle.block558 ]
  %61 = add nuw i64 %39, 1
  %62 = sub i64 %61, %.0353465.ph
  %63 = sub i64 %39, %.0353465.ph
  %xtraiter584 = and i64 %62, 3
  %lcmp.mod585.not = icmp eq i64 %xtraiter584, 0
  br i1 %lcmp.mod585.not, label %.lr.ph467.prol.loopexit, label %.lr.ph467.prol

.lr.ph467.prol:                                   ; preds = %.lr.ph467.preheader573, %.lr.ph467.prol
  %.0353465.prol = phi i64 [ %66, %.lr.ph467.prol ], [ %.0353465.ph, %.lr.ph467.preheader573 ]
  %prol.iter = phi i64 [ %prol.iter.next, %.lr.ph467.prol ], [ 0, %.lr.ph467.preheader573 ]
  %64 = getelementptr inbounds float, ptr %29, i64 %.0353465.prol
  store float 0.000000e+00, ptr %64, align 4, !tbaa !9
  %65 = getelementptr inbounds float, ptr %30, i64 %.0353465.prol
  store float 0.000000e+00, ptr %65, align 4, !tbaa !9
  %66 = add nuw i64 %.0353465.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter584
  br i1 %prol.iter.cmp.not, label %.lr.ph467.prol.loopexit, label %.lr.ph467.prol, !llvm.loop !15

.lr.ph467.prol.loopexit:                          ; preds = %.lr.ph467.prol, %.lr.ph467.preheader573
  %.0353465.unr = phi i64 [ %.0353465.ph, %.lr.ph467.preheader573 ], [ %66, %.lr.ph467.prol ]
  %67 = icmp ult i64 %63, 3
  br i1 %67, label %.loopexit, label %.lr.ph467

.lr.ph467:                                        ; preds = %.lr.ph467.prol.loopexit, %.lr.ph467
  %.0353465 = phi i64 [ %78, %.lr.ph467 ], [ %.0353465.unr, %.lr.ph467.prol.loopexit ]
  %68 = getelementptr inbounds float, ptr %29, i64 %.0353465
  store float 0.000000e+00, ptr %68, align 4, !tbaa !9
  %69 = getelementptr inbounds float, ptr %30, i64 %.0353465
  store float 0.000000e+00, ptr %69, align 4, !tbaa !9
  %70 = getelementptr float, ptr %9, i64 %.0353465
  store float 0.000000e+00, ptr %70, align 4, !tbaa !9
  %71 = getelementptr float, ptr %10, i64 %.0353465
  store float 0.000000e+00, ptr %71, align 4, !tbaa !9
  %72 = add nuw i64 %.0353465, 2
  %73 = getelementptr inbounds float, ptr %29, i64 %72
  store float 0.000000e+00, ptr %73, align 4, !tbaa !9
  %74 = getelementptr inbounds float, ptr %30, i64 %72
  store float 0.000000e+00, ptr %74, align 4, !tbaa !9
  %75 = add nuw i64 %.0353465, 3
  %76 = getelementptr inbounds float, ptr %29, i64 %75
  store float 0.000000e+00, ptr %76, align 4, !tbaa !9
  %77 = getelementptr inbounds float, ptr %30, i64 %75
  store float 0.000000e+00, ptr %77, align 4, !tbaa !9
  %78 = add nuw i64 %.0353465, 4
  %exitcond483.not.3 = icmp eq i64 %75, %39
  br i1 %exitcond483.not.3, label %.loopexit, label %.lr.ph467, !llvm.loop !17

79:                                               ; preds = %53
  %80 = add nuw nsw i64 %36, 1
  %81 = tail call double @slamch_(ptr noundef nonnull @.str.3) #5
  %82 = fptrunc double %81 to float
  %83 = tail call double @slamch_(ptr noundef nonnull @.str.4) #5
  %84 = fptrunc double %83 to float
  %85 = uitofp nneg i64 %80 to float
  %86 = fmul float %85, %84
  %87 = fdiv float %86, %82
  %88 = load i64, ptr %2, align 8, !tbaa !5
  %invariant.gep460 = getelementptr i8, ptr %25, i64 4
  %.not370462 = icmp slt i64 %88, 1
  br i1 %.not370462, label %.loopexit, label %.preheader389.lr.ph

.preheader389.lr.ph:                              ; preds = %79
  %invariant.gep435 = getelementptr i8, ptr %28, i64 4
  %invariant.gep406 = getelementptr i8, ptr %3, i64 -8
  %89 = fpext float %86 to double
  %90 = fmul float %85, %82
  %91 = sub i64 %18, %17
  %92 = mul i64 %23, -4
  %broadcast.splatinsert = insertelement <4 x float> poison, float %87, i64 0
  %broadcast.splat = shufflevector <4 x float> %broadcast.splatinsert, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert535 = insertelement <4 x float> poison, float %90, i64 0
  %broadcast.splat536 = shufflevector <4 x float> %broadcast.splatinsert535, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert537 = insertelement <4 x double> poison, double %89, i64 0
  %broadcast.splat538 = shufflevector <4 x double> %broadcast.splatinsert537, <4 x double> poison, <4 x i32> zeroinitializer
  br label %.preheader389

.preheader389:                                    ; preds = %.preheader389.lr.ph, %._crit_edge458.thread
  %indvar = phi i64 [ 0, %.preheader389.lr.ph ], [ %indvar.next, %._crit_edge458.thread ]
  %.1354463 = phi i64 [ 1, %.preheader389.lr.ph ], [ %366, %._crit_edge458.thread ]
  %93 = mul i64 %92, %indvar
  %94 = add i64 %91, %93
  %95 = getelementptr inbounds float, ptr %30, i64 %.1354463
  %96 = mul nsw i64 %.1354463, %23
  %gep461 = getelementptr float, ptr %invariant.gep460, i64 %96
  %97 = mul nsw i64 %.1354463, %26
  %gep436 = getelementptr float, ptr %invariant.gep435, i64 %97
  %invariant.gep = getelementptr float, ptr %25, i64 %96
  %invariant.gep404 = getelementptr float, ptr %28, i64 %97
  %diff.check = icmp ult i64 %94, 32
  br label %98

98:                                               ; preds = %.preheader389, %258
  %.0344 = phi i64 [ %265, %258 ], [ 1, %.preheader389 ]
  %.0 = phi float [ %264, %258 ], [ 3.000000e+00, %.preheader389 ]
  %99 = load i64, ptr %1, align 8, !tbaa !5
  %100 = getelementptr float, ptr %11, i64 %99
  %101 = call i32 @f2c_scopy(ptr noundef nonnull %1, ptr noundef %gep461, ptr noundef nonnull @c__1, ptr noundef %100, ptr noundef nonnull @c__1) #5
  %102 = load i64, ptr %1, align 8, !tbaa !5
  %103 = getelementptr float, ptr %11, i64 %102
  %104 = call i32 @f2c_sspmv(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull @c_b12, ptr noundef %3, ptr noundef %gep436, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b14, ptr noundef %103, ptr noundef nonnull @c__1) #5
  %105 = load i64, ptr %1, align 8, !tbaa !5
  %.not371393 = icmp slt i64 %105, 1
  br i1 %.not371393, label %._crit_edge433, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %98
  %min.iters.check543 = icmp ult i64 %105, 8
  %or.cond572 = select i1 %min.iters.check543, i1 true, i1 %diff.check
  br i1 %or.cond572, label %.lr.ph.preheader575, label %vector.ph544

vector.ph544:                                     ; preds = %.lr.ph.preheader
  %n.vec546 = and i64 %105, 9223372036854775800
  %ind.end547 = or disjoint i64 %n.vec546, 1
  br label %vector.body549

vector.body549:                                   ; preds = %vector.body549, %vector.ph544
  %index550 = phi i64 [ 0, %vector.ph544 ], [ %index.next554, %vector.body549 ]
  %offset.idx551 = or disjoint i64 %index550, 1
  %106 = getelementptr float, ptr %invariant.gep, i64 %offset.idx551
  %107 = getelementptr i8, ptr %106, i64 16
  %wide.load552 = load <4 x float>, ptr %106, align 4, !tbaa !9
  %wide.load553 = load <4 x float>, ptr %107, align 4, !tbaa !9
  %108 = fcmp oge <4 x float> %wide.load552, zeroinitializer
  %109 = fcmp oge <4 x float> %wide.load553, zeroinitializer
  %110 = fneg <4 x float> %wide.load552
  %111 = fneg <4 x float> %wide.load553
  %112 = select <4 x i1> %108, <4 x float> %wide.load552, <4 x float> %110
  %113 = select <4 x i1> %109, <4 x float> %wide.load553, <4 x float> %111
  %114 = getelementptr float, ptr %11, i64 %index550
  %115 = getelementptr inbounds i8, ptr %114, i64 16
  store <4 x float> %112, ptr %114, align 4, !tbaa !9
  store <4 x float> %113, ptr %115, align 4, !tbaa !9
  %index.next554 = add nuw i64 %index550, 8
  %116 = icmp eq i64 %index.next554, %n.vec546
  br i1 %116, label %middle.block541, label %vector.body549, !llvm.loop !18

middle.block541:                                  ; preds = %vector.body549
  %cmp.n555 = icmp eq i64 %105, %n.vec546
  br i1 %cmp.n555, label %._crit_edge, label %.lr.ph.preheader575

.lr.ph.preheader575:                              ; preds = %middle.block541, %.lr.ph.preheader
  %.0355394.ph = phi i64 [ 1, %.lr.ph.preheader ], [ %ind.end547, %middle.block541 ]
  %xtraiter = and i64 %105, 1
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph.prol.loopexit, label %.lr.ph.prol

.lr.ph.prol:                                      ; preds = %.lr.ph.preheader575
  %gep.prol = getelementptr float, ptr %invariant.gep, i64 %.0355394.ph
  %117 = load float, ptr %gep.prol, align 4, !tbaa !9
  %118 = fcmp oge float %117, 0.000000e+00
  %119 = fneg float %117
  %120 = select i1 %118, float %117, float %119
  %121 = getelementptr inbounds float, ptr %31, i64 %.0355394.ph
  store float %120, ptr %121, align 4, !tbaa !9
  %122 = add nuw i64 %.0355394.ph, 1
  br label %.lr.ph.prol.loopexit

.lr.ph.prol.loopexit:                             ; preds = %.lr.ph.prol, %.lr.ph.preheader575
  %.0355394.unr = phi i64 [ %.0355394.ph, %.lr.ph.preheader575 ], [ %122, %.lr.ph.prol ]
  %123 = icmp eq i64 %105, %.0355394.ph
  br i1 %123, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.prol.loopexit, %.lr.ph
  %.0355394 = phi i64 [ %135, %.lr.ph ], [ %.0355394.unr, %.lr.ph.prol.loopexit ]
  %gep = getelementptr float, ptr %invariant.gep, i64 %.0355394
  %124 = load float, ptr %gep, align 4, !tbaa !9
  %125 = fcmp oge float %124, 0.000000e+00
  %126 = fneg float %124
  %127 = select i1 %125, float %124, float %126
  %128 = getelementptr inbounds float, ptr %31, i64 %.0355394
  store float %127, ptr %128, align 4, !tbaa !9
  %129 = add nuw i64 %.0355394, 1
  %gep.1 = getelementptr float, ptr %invariant.gep, i64 %129
  %130 = load float, ptr %gep.1, align 4, !tbaa !9
  %131 = fcmp oge float %130, 0.000000e+00
  %132 = fneg float %130
  %133 = select i1 %131, float %130, float %132
  %134 = getelementptr float, ptr %11, i64 %.0355394
  store float %133, ptr %134, align 4, !tbaa !9
  %135 = add nuw i64 %.0355394, 2
  %exitcond.not.1 = icmp eq i64 %129, %105
  br i1 %exitcond.not.1, label %._crit_edge, label %.lr.ph, !llvm.loop !19

._crit_edge:                                      ; preds = %.lr.ph.prol.loopexit, %.lr.ph, %middle.block541
  br i1 %.not, label %.preheader, label %.preheader387

.preheader387:                                    ; preds = %._crit_edge
  br i1 %.not371393, label %._crit_edge433, label %.lr.ph411.preheader

.lr.ph411.preheader:                              ; preds = %.preheader387
  %136 = add nuw i64 %105, 1
  br label %.lr.ph411

.preheader:                                       ; preds = %._crit_edge
  br i1 %.not371393, label %._crit_edge433, label %.lr.ph427

.lr.ph427:                                        ; preds = %.preheader
  %137 = add nuw i64 %105, 1
  br label %183

.lr.ph411:                                        ; preds = %.lr.ph411.preheader, %._crit_edge403
  %indvars.iv473 = phi i64 [ 1, %.lr.ph411.preheader ], [ %indvars.iv.next474, %._crit_edge403 ]
  %indvars.iv = phi i64 [ 2, %.lr.ph411.preheader ], [ %indvars.iv.next, %._crit_edge403 ]
  %.0345410 = phi i64 [ 1, %.lr.ph411.preheader ], [ %172, %._crit_edge403 ]
  %.0351409 = phi i64 [ 1, %.lr.ph411.preheader ], [ %182, %._crit_edge403 ]
  %gep405 = getelementptr float, ptr %invariant.gep404, i64 %.0351409
  %138 = load float, ptr %gep405, align 4, !tbaa !9
  %139 = fcmp oge float %138, 0.000000e+00
  %140 = fneg float %138
  %141 = select i1 %139, float %138, float %140
  %142 = fpext float %141 to double
  %.not381.not397 = icmp ugt i64 %.0351409, 1
  br i1 %.not381.not397, label %.lr.ph402, label %._crit_edge403

.lr.ph402:                                        ; preds = %.lr.ph411, %.lr.ph402
  %.0347400 = phi i64 [ %167, %.lr.ph402 ], [ %.0345410, %.lr.ph411 ]
  %.0349399 = phi float [ %166, %.lr.ph402 ], [ 0.000000e+00, %.lr.ph411 ]
  %.1356398 = phi i64 [ %168, %.lr.ph402 ], [ 1, %.lr.ph411 ]
  %143 = getelementptr inbounds float, ptr %22, i64 %.0347400
  %144 = load float, ptr %143, align 4, !tbaa !9
  %145 = fcmp oge float %144, 0.000000e+00
  %146 = fneg float %144
  %147 = select i1 %145, float %144, float %146
  %148 = fpext float %147 to double
  %149 = getelementptr inbounds float, ptr %31, i64 %.1356398
  %150 = load float, ptr %149, align 4, !tbaa !9
  %151 = fpext float %150 to double
  %152 = call double @llvm.fmuladd.f64(double %148, double %142, double %151)
  %153 = fptrunc double %152 to float
  store float %153, ptr %149, align 4, !tbaa !9
  %154 = load float, ptr %143, align 4, !tbaa !9
  %155 = fcmp oge float %154, 0.000000e+00
  %156 = fneg float %154
  %157 = select i1 %155, float %154, float %156
  %158 = fpext float %157 to double
  %gep396 = getelementptr float, ptr %invariant.gep404, i64 %.1356398
  %159 = load float, ptr %gep396, align 4, !tbaa !9
  %160 = fcmp oge float %159, 0.000000e+00
  %161 = fneg float %159
  %162 = select i1 %160, float %159, float %161
  %163 = fpext float %162 to double
  %164 = fpext float %.0349399 to double
  %165 = call double @llvm.fmuladd.f64(double %158, double %163, double %164)
  %166 = fptrunc double %165 to float
  %167 = add i64 %.0347400, 1
  %168 = add nuw nsw i64 %.1356398, 1
  %exitcond475.not = icmp eq i64 %167, %indvars.iv473
  br i1 %exitcond475.not, label %._crit_edge403, label %.lr.ph402, !llvm.loop !20

._crit_edge403:                                   ; preds = %.lr.ph402, %.lr.ph411
  %.0349.lcssa = phi float [ 0.000000e+00, %.lr.ph411 ], [ %166, %.lr.ph402 ]
  %169 = getelementptr inbounds float, ptr %31, i64 %.0351409
  %170 = load float, ptr %169, align 4, !tbaa !9
  %171 = fpext float %170 to double
  %172 = add nuw nsw i64 %.0345410, %.0351409
  %gep407 = getelementptr float, ptr %invariant.gep406, i64 %172
  %173 = load float, ptr %gep407, align 4, !tbaa !9
  %174 = fcmp oge float %173, 0.000000e+00
  %175 = fneg float %173
  %176 = select i1 %174, float %173, float %175
  %177 = fpext float %176 to double
  %178 = call double @llvm.fmuladd.f64(double %177, double %142, double %171)
  %179 = fpext float %.0349.lcssa to double
  %180 = fadd double %178, %179
  %181 = fptrunc double %180 to float
  store float %181, ptr %169, align 4, !tbaa !9
  %182 = add nuw nsw i64 %.0351409, 1
  %indvars.iv.next = add nuw i64 %indvars.iv, 1
  %indvars.iv.next474 = add i64 %indvars.iv473, %indvars.iv
  %exitcond476.not = icmp eq i64 %indvars.iv, %136
  br i1 %exitcond476.not, label %.loopexit386, label %.lr.ph411, !llvm.loop !21

183:                                              ; preds = %.lr.ph427, %._crit_edge420
  %.1346426 = phi i64 [ 1, %.lr.ph427 ], [ %229, %._crit_edge420 ]
  %.1352425 = phi i64 [ 1, %.lr.ph427 ], [ %200, %._crit_edge420 ]
  %gep423 = getelementptr float, ptr %invariant.gep404, i64 %.1352425
  %184 = load float, ptr %gep423, align 4, !tbaa !9
  %185 = fcmp oge float %184, 0.000000e+00
  %186 = fneg float %184
  %187 = select i1 %185, float %184, float %186
  %188 = fpext float %187 to double
  %189 = getelementptr inbounds float, ptr %22, i64 %.1346426
  %190 = load float, ptr %189, align 4, !tbaa !9
  %191 = fcmp oge float %190, 0.000000e+00
  %192 = fneg float %190
  %193 = select i1 %191, float %190, float %192
  %194 = fpext float %193 to double
  %195 = getelementptr inbounds float, ptr %31, i64 %.1352425
  %196 = load float, ptr %195, align 4, !tbaa !9
  %197 = fpext float %196 to double
  %198 = call double @llvm.fmuladd.f64(double %194, double %188, double %197)
  %199 = fptrunc double %198 to float
  store float %199, ptr %195, align 4, !tbaa !9
  %200 = add nuw i64 %.1352425, 1
  %.not373414.not = icmp slt i64 %.1352425, %105
  br i1 %.not373414.not, label %.lr.ph419, label %._crit_edge420

.lr.ph419:                                        ; preds = %183, %.lr.ph419
  %.1348.in417 = phi i64 [ %.1348, %.lr.ph419 ], [ %.1346426, %183 ]
  %.1350416 = phi float [ %224, %.lr.ph419 ], [ 0.000000e+00, %183 ]
  %.2357415 = phi i64 [ %225, %.lr.ph419 ], [ %200, %183 ]
  %.1348 = add nsw i64 %.1348.in417, 1
  %201 = getelementptr float, ptr %3, i64 %.1348.in417
  %202 = load float, ptr %201, align 4, !tbaa !9
  %203 = fcmp oge float %202, 0.000000e+00
  %204 = fneg float %202
  %205 = select i1 %203, float %202, float %204
  %206 = fpext float %205 to double
  %207 = getelementptr inbounds float, ptr %31, i64 %.2357415
  %208 = load float, ptr %207, align 4, !tbaa !9
  %209 = fpext float %208 to double
  %210 = call double @llvm.fmuladd.f64(double %206, double %188, double %209)
  %211 = fptrunc double %210 to float
  store float %211, ptr %207, align 4, !tbaa !9
  %212 = load float, ptr %201, align 4, !tbaa !9
  %213 = fcmp oge float %212, 0.000000e+00
  %214 = fneg float %212
  %215 = select i1 %213, float %212, float %214
  %216 = fpext float %215 to double
  %gep413 = getelementptr float, ptr %invariant.gep404, i64 %.2357415
  %217 = load float, ptr %gep413, align 4, !tbaa !9
  %218 = fcmp oge float %217, 0.000000e+00
  %219 = fneg float %217
  %220 = select i1 %218, float %217, float %219
  %221 = fpext float %220 to double
  %222 = fpext float %.1350416 to double
  %223 = call double @llvm.fmuladd.f64(double %216, double %221, double %222)
  %224 = fptrunc double %223 to float
  %225 = add nuw nsw i64 %.2357415, 1
  %.not373.not = icmp slt i64 %.2357415, %105
  br i1 %.not373.not, label %.lr.ph419, label %._crit_edge420.loopexit, !llvm.loop !22

._crit_edge420.loopexit:                          ; preds = %.lr.ph419
  %.pre = load float, ptr %195, align 4, !tbaa !9
  br label %._crit_edge420

._crit_edge420:                                   ; preds = %._crit_edge420.loopexit, %183
  %226 = phi float [ %199, %183 ], [ %.pre, %._crit_edge420.loopexit ]
  %.1350.lcssa = phi float [ 0.000000e+00, %183 ], [ %224, %._crit_edge420.loopexit ]
  %227 = fadd float %.1350.lcssa, %226
  store float %227, ptr %195, align 4, !tbaa !9
  %228 = sub i64 %137, %.1352425
  %229 = add nsw i64 %228, %.1346426
  %exitcond477.not = icmp eq i64 %.1352425, %105
  br i1 %exitcond477.not, label %.loopexit386, label %183, !llvm.loop !23

.loopexit386:                                     ; preds = %._crit_edge403, %._crit_edge420
  br i1 %.not371393, label %._crit_edge433, label %.lr.ph432

.lr.ph432:                                        ; preds = %.loopexit386
  %230 = getelementptr float, ptr %31, i64 %105
  br label %231

231:                                              ; preds = %.lr.ph432, %249
  %.2430 = phi float [ 0.000000e+00, %.lr.ph432 ], [ %251, %249 ]
  %.3358429 = phi i64 [ 1, %.lr.ph432 ], [ %252, %249 ]
  %232 = getelementptr inbounds float, ptr %31, i64 %.3358429
  %233 = load float, ptr %232, align 4, !tbaa !9
  %234 = fcmp ogt float %233, %87
  %235 = getelementptr float, ptr %230, i64 %.3358429
  %236 = load float, ptr %235, align 4, !tbaa !9
  %237 = fcmp oge float %236, 0.000000e+00
  %238 = fneg float %236
  %239 = select i1 %237, float %236, float %238
  br i1 %234, label %240, label %242

240:                                              ; preds = %231
  %241 = fdiv float %239, %233
  br label %249

242:                                              ; preds = %231
  %243 = fpext float %239 to double
  %244 = fadd double %89, %243
  %245 = fadd float %86, %233
  %246 = fpext float %245 to double
  %247 = fdiv double %244, %246
  %248 = fptrunc double %247 to float
  br label %249

249:                                              ; preds = %240, %242
  %.sink495 = phi float [ %241, %240 ], [ %248, %242 ]
  %250 = fcmp oge float %.2430, %.sink495
  %251 = select i1 %250, float %.2430, float %.sink495
  %252 = add nuw i64 %.3358429, 1
  %exitcond478.not = icmp eq i64 %.3358429, %105
  br i1 %exitcond478.not, label %._crit_edge433, label %231, !llvm.loop !24

._crit_edge433:                                   ; preds = %249, %98, %.preheader, %.preheader387, %.loopexit386
  %.2.lcssa = phi float [ 0.000000e+00, %.loopexit386 ], [ 0.000000e+00, %.preheader387 ], [ 0.000000e+00, %.preheader ], [ 0.000000e+00, %98 ], [ %251, %249 ]
  store float %.2.lcssa, ptr %95, align 4, !tbaa !9
  %253 = fcmp ogt float %.2.lcssa, %82
  br i1 %253, label %254, label %266

254:                                              ; preds = %._crit_edge433
  %255 = fmul float %.2.lcssa, 2.000000e+00
  %256 = fcmp ole float %255, %.0
  %257 = icmp ult i64 %.0344, 6
  %or.cond = select i1 %256, i1 %257, i1 false
  br i1 %or.cond, label %258, label %266

258:                                              ; preds = %254
  %259 = getelementptr float, ptr %11, i64 %105
  %260 = call i32 @spptrs_(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef %259, ptr noundef nonnull %1, ptr noundef nonnull %13) #5
  %261 = load i64, ptr %1, align 8, !tbaa !5
  %262 = getelementptr float, ptr %11, i64 %261
  %263 = call i32 @f2c_saxpy(ptr noundef nonnull %1, ptr noundef nonnull @c_b14, ptr noundef %262, ptr noundef nonnull @c__1, ptr noundef %gep436, ptr noundef nonnull @c__1) #5
  %264 = load float, ptr %95, align 4, !tbaa !9
  %265 = add nuw nsw i64 %.0344, 1
  br label %98

266:                                              ; preds = %254, %._crit_edge433
  br i1 %.not371393, label %._crit_edge441, label %.lr.ph440

.lr.ph440:                                        ; preds = %266
  %267 = getelementptr float, ptr %31, i64 %105
  %min.iters.check524 = icmp ult i64 %105, 4
  br i1 %min.iters.check524, label %scalar.ph523.preheader, label %vector.ph525

vector.ph525:                                     ; preds = %.lr.ph440
  %n.vec527 = and i64 %105, 9223372036854775804
  %ind.end528 = or disjoint i64 %n.vec527, 1
  br label %vector.body530

vector.body530:                                   ; preds = %vector.body530, %vector.ph525
  %index531 = phi i64 [ 0, %vector.ph525 ], [ %index.next539, %vector.body530 ]
  %offset.idx532 = or disjoint i64 %index531, 1
  %268 = getelementptr float, ptr %11, i64 %index531
  %wide.load533 = load <4 x float>, ptr %268, align 4, !tbaa !9
  %269 = fcmp ogt <4 x float> %wide.load533, %broadcast.splat
  %270 = getelementptr float, ptr %267, i64 %offset.idx532
  %wide.load534 = load <4 x float>, ptr %270, align 4, !tbaa !9
  %271 = fcmp oge <4 x float> %wide.load534, zeroinitializer
  %272 = fneg <4 x float> %wide.load534
  %273 = select <4 x i1> %271, <4 x float> %wide.load534, <4 x float> %272
  %274 = fpext <4 x float> %273 to <4 x double>
  %275 = fmul <4 x float> %broadcast.splat536, %wide.load533
  %276 = fpext <4 x float> %275 to <4 x double>
  %277 = fadd <4 x double> %276, %274
  %278 = fadd <4 x double> %277, %broadcast.splat538
  %279 = select <4 x i1> %269, <4 x double> %277, <4 x double> %278
  %280 = fptrunc <4 x double> %279 to <4 x float>
  store <4 x float> %280, ptr %268, align 4, !tbaa !9
  %index.next539 = add nuw i64 %index531, 4
  %281 = icmp eq i64 %index.next539, %n.vec527
  br i1 %281, label %middle.block522, label %vector.body530, !llvm.loop !25

middle.block522:                                  ; preds = %vector.body530
  %cmp.n540 = icmp eq i64 %105, %n.vec527
  br i1 %cmp.n540, label %._crit_edge441, label %scalar.ph523.preheader

scalar.ph523.preheader:                           ; preds = %middle.block522, %.lr.ph440
  %.4438.ph = phi i64 [ 1, %.lr.ph440 ], [ %ind.end528, %middle.block522 ]
  br label %scalar.ph523

scalar.ph523:                                     ; preds = %scalar.ph523.preheader, %scalar.ph523
  %.4438 = phi i64 [ %295, %scalar.ph523 ], [ %.4438.ph, %scalar.ph523.preheader ]
  %282 = getelementptr inbounds float, ptr %31, i64 %.4438
  %283 = load float, ptr %282, align 4, !tbaa !9
  %284 = fcmp ogt float %283, %87
  %285 = getelementptr float, ptr %267, i64 %.4438
  %286 = load float, ptr %285, align 4, !tbaa !9
  %287 = fcmp oge float %286, 0.000000e+00
  %288 = fneg float %286
  %289 = select i1 %287, float %286, float %288
  %290 = fpext float %289 to double
  %291 = fmul float %90, %283
  %292 = fpext float %291 to double
  %293 = fadd double %292, %290
  %294 = fadd double %293, %89
  %storemerge.in = select i1 %284, double %293, double %294
  %storemerge = fptrunc double %storemerge.in to float
  store float %storemerge, ptr %282, align 4, !tbaa !9
  %295 = add nuw i64 %.4438, 1
  %exitcond479.not = icmp eq i64 %.4438, %105
  br i1 %exitcond479.not, label %._crit_edge441, label %scalar.ph523, !llvm.loop !26

._crit_edge441:                                   ; preds = %scalar.ph523, %middle.block522, %266
  store i64 0, ptr %20, align 8, !tbaa !5
  %296 = getelementptr inbounds float, ptr %29, i64 %.1354463
  br label %297

297:                                              ; preds = %.loopexit385, %._crit_edge441
  %298 = phi i64 [ %.pre484, %.loopexit385 ], [ %105, %._crit_edge441 ]
  %.idx = shl i64 %298, 3
  %299 = getelementptr i8, ptr %11, i64 %.idx
  %300 = getelementptr float, ptr %11, i64 %298
  %301 = call i32 @slacn2_(ptr noundef nonnull %1, ptr noundef %299, ptr noundef %300, ptr noundef %12, ptr noundef nonnull %296, ptr noundef nonnull %20, ptr noundef nonnull %21) #5
  %302 = load i64, ptr %20, align 8, !tbaa !5
  switch i64 %302, label %.loopexit385 [
    i64 0, label %340
    i64 1, label %303
    i64 2, label %322
  ]

303:                                              ; preds = %297
  %304 = load i64, ptr %1, align 8, !tbaa !5
  %305 = getelementptr float, ptr %11, i64 %304
  %306 = call i32 @spptrs_(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef %305, ptr noundef nonnull %1, ptr noundef nonnull %13) #5
  %307 = load i64, ptr %1, align 8, !tbaa !5
  %.not380447 = icmp slt i64 %307, 1
  br i1 %.not380447, label %.loopexit385, label %.lr.ph450

.lr.ph450:                                        ; preds = %303
  %308 = getelementptr float, ptr %31, i64 %307
  %min.iters.check = icmp ult i64 %307, 8
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph450
  %n.vec = and i64 %307, 9223372036854775800
  %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 ]
  %offset.idx = or disjoint i64 %index, 1
  %309 = getelementptr float, ptr %11, i64 %index
  %310 = getelementptr inbounds i8, ptr %309, i64 16
  %wide.load = load <4 x float>, ptr %309, align 4, !tbaa !9
  %wide.load502 = load <4 x float>, ptr %310, align 4, !tbaa !9
  %311 = getelementptr float, ptr %308, i64 %offset.idx
  %312 = getelementptr i8, ptr %311, i64 16
  %wide.load503 = load <4 x float>, ptr %311, align 4, !tbaa !9
  %wide.load504 = load <4 x float>, ptr %312, align 4, !tbaa !9
  %313 = fmul <4 x float> %wide.load, %wide.load503
  %314 = fmul <4 x float> %wide.load502, %wide.load504
  store <4 x float> %313, ptr %311, align 4, !tbaa !9
  store <4 x float> %314, ptr %312, align 4, !tbaa !9
  %index.next = add nuw i64 %index, 8
  %315 = icmp eq i64 %index.next, %n.vec
  br i1 %315, label %middle.block, label %vector.body, !llvm.loop !27

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %307, %n.vec
  br i1 %cmp.n, label %.loopexit385, label %scalar.ph.preheader

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

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %.5448 = phi i64 [ %321, %scalar.ph ], [ %.5448.ph, %scalar.ph.preheader ]
  %316 = getelementptr inbounds float, ptr %31, i64 %.5448
  %317 = load float, ptr %316, align 4, !tbaa !9
  %318 = getelementptr float, ptr %308, i64 %.5448
  %319 = load float, ptr %318, align 4, !tbaa !9
  %320 = fmul float %317, %319
  store float %320, ptr %318, align 4, !tbaa !9
  %321 = add nuw i64 %.5448, 1
  %exitcond481.not = icmp eq i64 %.5448, %307
  br i1 %exitcond481.not, label %.loopexit385, label %scalar.ph, !llvm.loop !28

322:                                              ; preds = %297
  %323 = load i64, ptr %1, align 8, !tbaa !5
  %.not379442 = icmp slt i64 %323, 1
  br i1 %.not379442, label %._crit_edge446, label %.lr.ph445

.lr.ph445:                                        ; preds = %322
  %324 = getelementptr float, ptr %31, i64 %323
  %min.iters.check507 = icmp ult i64 %323, 8
  br i1 %min.iters.check507, label %scalar.ph506.preheader, label %vector.ph508

vector.ph508:                                     ; preds = %.lr.ph445
  %n.vec510 = and i64 %323, 9223372036854775800
  %ind.end511 = or disjoint i64 %n.vec510, 1
  br label %vector.body513

vector.body513:                                   ; preds = %vector.body513, %vector.ph508
  %index514 = phi i64 [ 0, %vector.ph508 ], [ %index.next520, %vector.body513 ]
  %offset.idx515 = or disjoint i64 %index514, 1
  %325 = getelementptr float, ptr %11, i64 %index514
  %326 = getelementptr inbounds i8, ptr %325, i64 16
  %wide.load516 = load <4 x float>, ptr %325, align 4, !tbaa !9
  %wide.load517 = load <4 x float>, ptr %326, align 4, !tbaa !9
  %327 = getelementptr float, ptr %324, i64 %offset.idx515
  %328 = getelementptr i8, ptr %327, i64 16
  %wide.load518 = load <4 x float>, ptr %327, align 4, !tbaa !9
  %wide.load519 = load <4 x float>, ptr %328, align 4, !tbaa !9
  %329 = fmul <4 x float> %wide.load516, %wide.load518
  %330 = fmul <4 x float> %wide.load517, %wide.load519
  store <4 x float> %329, ptr %327, align 4, !tbaa !9
  store <4 x float> %330, ptr %328, align 4, !tbaa !9
  %index.next520 = add nuw i64 %index514, 8
  %331 = icmp eq i64 %index.next520, %n.vec510
  br i1 %331, label %middle.block505, label %vector.body513, !llvm.loop !29

middle.block505:                                  ; preds = %vector.body513
  %cmp.n521 = icmp eq i64 %323, %n.vec510
  br i1 %cmp.n521, label %._crit_edge446, label %scalar.ph506.preheader

scalar.ph506.preheader:                           ; preds = %middle.block505, %.lr.ph445
  %.6443.ph = phi i64 [ 1, %.lr.ph445 ], [ %ind.end511, %middle.block505 ]
  br label %scalar.ph506

scalar.ph506:                                     ; preds = %scalar.ph506.preheader, %scalar.ph506
  %.6443 = phi i64 [ %337, %scalar.ph506 ], [ %.6443.ph, %scalar.ph506.preheader ]
  %332 = getelementptr inbounds float, ptr %31, i64 %.6443
  %333 = load float, ptr %332, align 4, !tbaa !9
  %334 = getelementptr float, ptr %324, i64 %.6443
  %335 = load float, ptr %334, align 4, !tbaa !9
  %336 = fmul float %333, %335
  store float %336, ptr %334, align 4, !tbaa !9
  %337 = add nuw i64 %.6443, 1
  %exitcond480.not = icmp eq i64 %.6443, %323
  br i1 %exitcond480.not, label %._crit_edge446, label %scalar.ph506, !llvm.loop !30

._crit_edge446:                                   ; preds = %scalar.ph506, %middle.block505, %322
  %338 = getelementptr float, ptr %11, i64 %323
  %339 = call i32 @spptrs_(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef %338, ptr noundef nonnull %1, ptr noundef nonnull %13) #5
  br label %.loopexit385

.loopexit385:                                     ; preds = %scalar.ph, %middle.block, %303, %297, %._crit_edge446
  %.pre484 = load i64, ptr %1, align 8, !tbaa !5
  br label %297

340:                                              ; preds = %297
  %341 = load i64, ptr %1, align 8, !tbaa !5
  %.not378453 = icmp slt i64 %341, 1
  br i1 %.not378453, label %._crit_edge458.thread, label %.lr.ph457.preheader

.lr.ph457.preheader:                              ; preds = %340
  %xtraiter581 = and i64 %341, 1
  %342 = icmp eq i64 %341, 1
  br i1 %342, label %._crit_edge458.unr-lcssa, label %.lr.ph457.preheader.new

.lr.ph457.preheader.new:                          ; preds = %.lr.ph457.preheader
  %unroll_iter = and i64 %341, 9223372036854775806
  %invariant.gep592 = getelementptr i8, ptr %invariant.gep404, i64 4
  br label %.lr.ph457

.lr.ph457:                                        ; preds = %.lr.ph457, %.lr.ph457.preheader.new
  %.1455 = phi float [ 0.000000e+00, %.lr.ph457.preheader.new ], [ %354, %.lr.ph457 ]
  %.7454 = phi i64 [ 1, %.lr.ph457.preheader.new ], [ %355, %.lr.ph457 ]
  %niter = phi i64 [ 0, %.lr.ph457.preheader.new ], [ %niter.next.1, %.lr.ph457 ]
  %gep452 = getelementptr float, ptr %invariant.gep404, i64 %.7454
  %343 = load float, ptr %gep452, align 4, !tbaa !9
  %344 = fcmp oge float %343, 0.000000e+00
  %345 = fneg float %343
  %346 = select i1 %344, float %343, float %345
  %347 = fcmp oge float %.1455, %346
  %348 = select i1 %347, float %.1455, float %346
  %gep593 = getelementptr float, ptr %invariant.gep592, i64 %.7454
  %349 = load float, ptr %gep593, align 4, !tbaa !9
  %350 = fcmp oge float %349, 0.000000e+00
  %351 = fneg float %349
  %352 = select i1 %350, float %349, float %351
  %353 = fcmp oge float %348, %352
  %354 = select i1 %353, float %348, float %352
  %355 = add nuw i64 %.7454, 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_edge458.unr-lcssa, label %.lr.ph457, !llvm.loop !31

._crit_edge458.unr-lcssa:                         ; preds = %.lr.ph457, %.lr.ph457.preheader
  %.lcssa580.ph = phi float [ poison, %.lr.ph457.preheader ], [ %354, %.lr.ph457 ]
  %.1455.unr = phi float [ 0.000000e+00, %.lr.ph457.preheader ], [ %354, %.lr.ph457 ]
  %.7454.unr = phi i64 [ 1, %.lr.ph457.preheader ], [ %355, %.lr.ph457 ]
  %lcmp.mod582.not = icmp eq i64 %xtraiter581, 0
  br i1 %lcmp.mod582.not, label %._crit_edge458, label %.lr.ph457.epil

.lr.ph457.epil:                                   ; preds = %._crit_edge458.unr-lcssa
  %gep452.epil = getelementptr float, ptr %invariant.gep404, i64 %.7454.unr
  %356 = load float, ptr %gep452.epil, align 4, !tbaa !9
  %357 = fcmp oge float %356, 0.000000e+00
  %358 = fneg float %356
  %359 = select i1 %357, float %356, float %358
  %360 = fcmp oge float %.1455.unr, %359
  %361 = select i1 %360, float %.1455.unr, float %359
  br label %._crit_edge458

._crit_edge458:                                   ; preds = %._crit_edge458.unr-lcssa, %.lr.ph457.epil
  %.lcssa580 = phi float [ %.lcssa580.ph, %._crit_edge458.unr-lcssa ], [ %361, %.lr.ph457.epil ]
  %362 = fcmp une float %.lcssa580, 0.000000e+00
  br i1 %362, label %363, label %._crit_edge458.thread

363:                                              ; preds = %._crit_edge458
  %364 = load float, ptr %296, align 4, !tbaa !9
  %365 = fdiv float %364, %.lcssa580
  store float %365, ptr %296, align 4, !tbaa !9
  br label %._crit_edge458.thread

._crit_edge458.thread:                            ; preds = %340, %._crit_edge458, %363
  %366 = add nuw nsw i64 %.1354463, 1
  %.not370.not = icmp slt i64 %.1354463, %88
  %indvar.next = add i64 %indvar, 1
  br i1 %.not370.not, label %.preheader389, label %.loopexit, !llvm.loop !32

.loopexit:                                        ; preds = %._crit_edge458.thread, %.lr.ph467.prol.loopexit, %.lr.ph467, %middle.block558, %53, %79, %54, %.thread
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #5
  ret i32 0
}

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

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

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

declare double @slamch_(ptr noundef) local_unnamed_addr #2

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

declare i32 @f2c_sspmv(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 double @llvm.fmuladd.f64(double, double, double) #3

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

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

declare i32 @slacn2_(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

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

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 = { nounwind }

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

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


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