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

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

95:                                               ; preds = %15
  %96 = load ptr, ptr %17, align 8, !tbaa !5
  %97 = call i64 @lsame_(ptr noundef %96, ptr noundef @.str.1)
  %98 = icmp ne i64 %97, 0
  br i1 %98, label %101, label %99

99:                                               ; preds = %95
  %100 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 -1, ptr %100, align 8, !tbaa !9
  br label %147

101:                                              ; preds = %95, %15
  %102 = load ptr, ptr %18, align 8, !tbaa !5
  %103 = load i64, ptr %102, align 8, !tbaa !9
  %104 = icmp slt i64 %103, 0
  br i1 %104, label %105, label %107

105:                                              ; preds = %101
  %106 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 -2, ptr %106, align 8, !tbaa !9
  br label %146

107:                                              ; preds = %101
  %108 = load ptr, ptr %19, align 8, !tbaa !5
  %109 = load i64, ptr %108, align 8, !tbaa !9
  %110 = icmp slt i64 %109, 0
  br i1 %110, label %111, label %113

111:                                              ; preds = %107
  %112 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 -3, ptr %112, align 8, !tbaa !9
  br label %145

113:                                              ; preds = %107
  %114 = load ptr, ptr %24, align 8, !tbaa !5
  %115 = load i64, ptr %114, align 8, !tbaa !9
  %116 = load ptr, ptr %18, align 8, !tbaa !5
  %117 = load i64, ptr %116, align 8, !tbaa !9
  %118 = icmp sge i64 1, %117
  br i1 %118, label %119, label %120

119:                                              ; preds = %113
  br label %123

120:                                              ; preds = %113
  %121 = load ptr, ptr %18, align 8, !tbaa !5
  %122 = load i64, ptr %121, align 8, !tbaa !9
  br label %123

123:                                              ; preds = %120, %119
  %124 = phi i64 [ 1, %119 ], [ %122, %120 ]
  %125 = icmp slt i64 %115, %124
  br i1 %125, label %126, label %128

126:                                              ; preds = %123
  %127 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 -8, ptr %127, align 8, !tbaa !9
  br label %144

128:                                              ; preds = %123
  %129 = load ptr, ptr %26, align 8, !tbaa !5
  %130 = load i64, ptr %129, align 8, !tbaa !9
  %131 = load ptr, ptr %18, align 8, !tbaa !5
  %132 = load i64, ptr %131, align 8, !tbaa !9
  %133 = icmp sge i64 1, %132
  br i1 %133, label %134, label %135

134:                                              ; preds = %128
  br label %138

135:                                              ; preds = %128
  %136 = load ptr, ptr %18, align 8, !tbaa !5
  %137 = load i64, ptr %136, align 8, !tbaa !9
  br label %138

138:                                              ; preds = %135, %134
  %139 = phi i64 [ 1, %134 ], [ %137, %135 ]
  %140 = icmp slt i64 %130, %139
  br i1 %140, label %141, label %143

141:                                              ; preds = %138
  %142 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 -10, ptr %142, align 8, !tbaa !9
  br label %143

143:                                              ; preds = %141, %138
  br label %144

144:                                              ; preds = %143, %126
  br label %145

145:                                              ; preds = %144, %111
  br label %146

146:                                              ; preds = %145, %105
  br label %147

147:                                              ; preds = %146, %99
  %148 = load ptr, ptr %31, align 8, !tbaa !5
  %149 = load i64, ptr %148, align 8, !tbaa !9
  %150 = icmp ne i64 %149, 0
  br i1 %150, label %151, label %156

151:                                              ; preds = %147
  %152 = load ptr, ptr %31, align 8, !tbaa !5
  %153 = load i64, ptr %152, align 8, !tbaa !9
  %154 = sub nsw i64 0, %153
  store i64 %154, ptr %36, align 8, !tbaa !9
  %155 = call i32 @xerbla_(ptr noundef @.str.2, ptr noundef %36)
  store i32 0, ptr %16, align 4
  store i32 1, ptr %59, align 4
  br label %967

156:                                              ; preds = %147
  %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 %164, label %160

160:                                              ; preds = %156
  %161 = load ptr, ptr %19, align 8, !tbaa !5
  %162 = load i64, ptr %161, align 8, !tbaa !9
  %163 = icmp eq i64 %162, 0
  br i1 %163, label %164, label %182

164:                                              ; preds = %160, %156
  %165 = load ptr, ptr %19, align 8, !tbaa !5
  %166 = load i64, ptr %165, align 8, !tbaa !9
  store i64 %166, ptr %36, align 8, !tbaa !9
  store i64 1, ptr %43, align 8, !tbaa !9
  br label %167

167:                                              ; preds = %178, %164
  %168 = load i64, ptr %43, align 8, !tbaa !9
  %169 = load i64, ptr %36, align 8, !tbaa !9
  %170 = icmp sle i64 %168, %169
  br i1 %170, label %171, label %181

171:                                              ; preds = %167
  %172 = load ptr, ptr %27, align 8, !tbaa !5
  %173 = load i64, ptr %43, align 8, !tbaa !9
  %174 = getelementptr inbounds float, ptr %172, i64 %173
  store float 0.000000e+00, ptr %174, align 4, !tbaa !11
  %175 = load ptr, ptr %28, align 8, !tbaa !5
  %176 = load i64, ptr %43, align 8, !tbaa !9
  %177 = getelementptr inbounds float, ptr %175, i64 %176
  store float 0.000000e+00, ptr %177, align 4, !tbaa !11
  br label %178

178:                                              ; preds = %171
  %179 = load i64, ptr %43, align 8, !tbaa !9
  %180 = add nsw i64 %179, 1
  store i64 %180, ptr %43, align 8, !tbaa !9
  br label %167, !llvm.loop !13

181:                                              ; preds = %167
  store i32 0, ptr %16, align 4
  store i32 1, ptr %59, align 4
  br label %967

182:                                              ; preds = %160
  %183 = load ptr, ptr %18, align 8, !tbaa !5
  %184 = load i64, ptr %183, align 8, !tbaa !9
  %185 = add nsw i64 %184, 1
  store i64 %185, ptr %49, align 8, !tbaa !9
  %186 = call double @slamch_(ptr noundef @.str.3)
  %187 = fptrunc double %186 to float
  store float %187, ptr %50, align 4, !tbaa !11
  %188 = call double @slamch_(ptr noundef @.str.4)
  %189 = fptrunc double %188 to float
  store float %189, ptr %57, align 4, !tbaa !11
  %190 = load i64, ptr %49, align 8, !tbaa !9
  %191 = sitofp i64 %190 to float
  %192 = load float, ptr %57, align 4, !tbaa !11
  %193 = fmul float %191, %192
  store float %193, ptr %52, align 4, !tbaa !11
  %194 = load float, ptr %52, align 4, !tbaa !11
  %195 = load float, ptr %50, align 4, !tbaa !11
  %196 = fdiv float %194, %195
  store float %196, ptr %53, align 4, !tbaa !11
  %197 = load ptr, ptr %19, align 8, !tbaa !5
  %198 = load i64, ptr %197, align 8, !tbaa !9
  store i64 %198, ptr %36, align 8, !tbaa !9
  store i64 1, ptr %43, align 8, !tbaa !9
  br label %199

199:                                              ; preds = %963, %182
  %200 = load i64, ptr %43, align 8, !tbaa !9
  %201 = load i64, ptr %36, align 8, !tbaa !9
  %202 = icmp sle i64 %200, %201
  br i1 %202, label %203, label %966

203:                                              ; preds = %199
  store i64 1, ptr %55, align 8, !tbaa !9
  store float 3.000000e+00, ptr %58, align 4, !tbaa !11
  br label %204

204:                                              ; preds = %670, %203
  %205 = load ptr, ptr %18, align 8, !tbaa !5
  %206 = load ptr, ptr %23, align 8, !tbaa !5
  %207 = load i64, ptr %43, align 8, !tbaa !9
  %208 = load i64, ptr %32, align 8, !tbaa !9
  %209 = mul nsw i64 %207, %208
  %210 = add nsw i64 %209, 1
  %211 = getelementptr inbounds float, ptr %206, i64 %210
  %212 = load ptr, ptr %29, align 8, !tbaa !5
  %213 = load ptr, ptr %18, align 8, !tbaa !5
  %214 = load i64, ptr %213, align 8, !tbaa !9
  %215 = add nsw i64 %214, 1
  %216 = getelementptr inbounds float, ptr %212, i64 %215
  %217 = call i32 @f2c_scopy(ptr noundef %205, ptr noundef %211, ptr noundef @c__1, ptr noundef %216, ptr noundef @c__1)
  %218 = load ptr, ptr %17, align 8, !tbaa !5
  %219 = load ptr, ptr %18, align 8, !tbaa !5
  %220 = load ptr, ptr %20, align 8, !tbaa !5
  %221 = getelementptr inbounds float, ptr %220, i64 1
  %222 = load ptr, ptr %25, align 8, !tbaa !5
  %223 = load i64, ptr %43, align 8, !tbaa !9
  %224 = load i64, ptr %34, align 8, !tbaa !9
  %225 = mul nsw i64 %223, %224
  %226 = add nsw i64 %225, 1
  %227 = getelementptr inbounds float, ptr %222, i64 %226
  %228 = load ptr, ptr %29, align 8, !tbaa !5
  %229 = load ptr, ptr %18, align 8, !tbaa !5
  %230 = load i64, ptr %229, align 8, !tbaa !9
  %231 = add nsw i64 %230, 1
  %232 = getelementptr inbounds float, ptr %228, i64 %231
  %233 = call i32 @f2c_sspmv(ptr noundef %218, ptr noundef %219, ptr noundef @c_b12, ptr noundef %221, ptr noundef %227, ptr noundef @c__1, ptr noundef @c_b14, ptr noundef %232, ptr noundef @c__1)
  %234 = load ptr, ptr %18, align 8, !tbaa !5
  %235 = load i64, ptr %234, align 8, !tbaa !9
  store i64 %235, ptr %37, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  br label %236

236:                                              ; preds = %263, %204
  %237 = load i64, ptr %42, align 8, !tbaa !9
  %238 = load i64, ptr %37, align 8, !tbaa !9
  %239 = icmp sle i64 %237, %238
  br i1 %239, label %240, label %266

240:                                              ; preds = %236
  %241 = load ptr, ptr %23, align 8, !tbaa !5
  %242 = load i64, ptr %42, align 8, !tbaa !9
  %243 = load i64, ptr %43, align 8, !tbaa !9
  %244 = load i64, ptr %32, align 8, !tbaa !9
  %245 = mul nsw i64 %243, %244
  %246 = add nsw i64 %242, %245
  %247 = getelementptr inbounds float, ptr %241, i64 %246
  %248 = load float, ptr %247, align 4, !tbaa !11
  store float %248, ptr %39, align 4, !tbaa !11
  %249 = load float, ptr %39, align 4, !tbaa !11
  %250 = fcmp oge float %249, 0.000000e+00
  br i1 %250, label %251, label %253

251:                                              ; preds = %240
  %252 = load float, ptr %39, align 4, !tbaa !11
  br label %256

253:                                              ; preds = %240
  %254 = load float, ptr %39, align 4, !tbaa !11
  %255 = fneg float %254
  br label %256

256:                                              ; preds = %253, %251
  %257 = phi float [ %252, %251 ], [ %255, %253 ]
  %258 = fpext float %257 to double
  %259 = fptrunc double %258 to float
  %260 = load ptr, ptr %29, align 8, !tbaa !5
  %261 = load i64, ptr %42, align 8, !tbaa !9
  %262 = getelementptr inbounds float, ptr %260, i64 %261
  store float %259, ptr %262, align 4, !tbaa !11
  br label %263

263:                                              ; preds = %256
  %264 = load i64, ptr %42, align 8, !tbaa !9
  %265 = add nsw i64 %264, 1
  store i64 %265, ptr %42, align 8, !tbaa !9
  br label %236, !llvm.loop !15

266:                                              ; preds = %236
  store i64 1, ptr %47, align 8, !tbaa !9
  %267 = load i64, ptr %56, align 8, !tbaa !9
  %268 = icmp ne i64 %267, 0
  br i1 %268, label %269, label %408

269:                                              ; preds = %266
  %270 = load ptr, ptr %18, align 8, !tbaa !5
  %271 = load i64, ptr %270, align 8, !tbaa !9
  store i64 %271, ptr %37, align 8, !tbaa !9
  store i64 1, ptr %44, align 8, !tbaa !9
  br label %272

272:                                              ; preds = %404, %269
  %273 = load i64, ptr %44, align 8, !tbaa !9
  %274 = load i64, ptr %37, align 8, !tbaa !9
  %275 = icmp sle i64 %273, %274
  br i1 %275, label %276, label %407

276:                                              ; preds = %272
  store float 0.000000e+00, ptr %45, align 4, !tbaa !11
  %277 = load ptr, ptr %25, align 8, !tbaa !5
  %278 = load i64, ptr %44, align 8, !tbaa !9
  %279 = load i64, ptr %43, align 8, !tbaa !9
  %280 = load i64, ptr %34, align 8, !tbaa !9
  %281 = mul nsw i64 %279, %280
  %282 = add nsw i64 %278, %281
  %283 = getelementptr inbounds float, ptr %277, i64 %282
  %284 = load float, ptr %283, align 4, !tbaa !11
  store float %284, ptr %39, align 4, !tbaa !11
  %285 = load float, ptr %39, align 4, !tbaa !11
  %286 = fcmp oge float %285, 0.000000e+00
  br i1 %286, label %287, label %289

287:                                              ; preds = %276
  %288 = load float, ptr %39, align 4, !tbaa !11
  br label %292

289:                                              ; preds = %276
  %290 = load float, ptr %39, align 4, !tbaa !11
  %291 = fneg float %290
  br label %292

292:                                              ; preds = %289, %287
  %293 = phi float [ %288, %287 ], [ %291, %289 ]
  %294 = fpext float %293 to double
  %295 = fptrunc double %294 to float
  store float %295, ptr %48, align 4, !tbaa !11
  %296 = load i64, ptr %47, align 8, !tbaa !9
  store i64 %296, ptr %46, align 8, !tbaa !9
  %297 = load i64, ptr %44, align 8, !tbaa !9
  %298 = sub nsw i64 %297, 1
  store i64 %298, ptr %38, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  br label %299

299:                                              ; preds = %365, %292
  %300 = load i64, ptr %42, align 8, !tbaa !9
  %301 = load i64, ptr %38, align 8, !tbaa !9
  %302 = icmp sle i64 %300, %301
  br i1 %302, label %303, label %368

303:                                              ; preds = %299
  %304 = load ptr, ptr %20, align 8, !tbaa !5
  %305 = load i64, ptr %46, align 8, !tbaa !9
  %306 = getelementptr inbounds float, ptr %304, i64 %305
  %307 = load float, ptr %306, align 4, !tbaa !11
  store float %307, ptr %39, align 4, !tbaa !11
  %308 = load float, ptr %39, align 4, !tbaa !11
  %309 = fcmp oge float %308, 0.000000e+00
  br i1 %309, label %310, label %312

310:                                              ; preds = %303
  %311 = load float, ptr %39, align 4, !tbaa !11
  br label %315

312:                                              ; preds = %303
  %313 = load float, ptr %39, align 4, !tbaa !11
  %314 = fneg float %313
  br label %315

315:                                              ; preds = %312, %310
  %316 = phi float [ %311, %310 ], [ %314, %312 ]
  %317 = fpext float %316 to double
  %318 = load float, ptr %48, align 4, !tbaa !11
  %319 = fpext float %318 to double
  %320 = load ptr, ptr %29, align 8, !tbaa !5
  %321 = load i64, ptr %42, align 8, !tbaa !9
  %322 = getelementptr inbounds float, ptr %320, i64 %321
  %323 = load float, ptr %322, align 4, !tbaa !11
  %324 = fpext float %323 to double
  %325 = call double @llvm.fmuladd.f64(double %317, double %319, double %324)
  %326 = fptrunc double %325 to float
  store float %326, ptr %322, align 4, !tbaa !11
  %327 = load ptr, ptr %20, align 8, !tbaa !5
  %328 = load i64, ptr %46, align 8, !tbaa !9
  %329 = getelementptr inbounds float, ptr %327, i64 %328
  %330 = load float, ptr %329, align 4, !tbaa !11
  store float %330, ptr %39, align 4, !tbaa !11
  %331 = load float, ptr %39, align 4, !tbaa !11
  %332 = fcmp oge float %331, 0.000000e+00
  br i1 %332, label %333, label %335

333:                                              ; preds = %315
  %334 = load float, ptr %39, align 4, !tbaa !11
  br label %338

335:                                              ; preds = %315
  %336 = load float, ptr %39, align 4, !tbaa !11
  %337 = fneg float %336
  br label %338

338:                                              ; preds = %335, %333
  %339 = phi float [ %334, %333 ], [ %337, %335 ]
  %340 = fpext float %339 to double
  %341 = load ptr, ptr %25, align 8, !tbaa !5
  %342 = load i64, ptr %42, align 8, !tbaa !9
  %343 = load i64, ptr %43, align 8, !tbaa !9
  %344 = load i64, ptr %34, align 8, !tbaa !9
  %345 = mul nsw i64 %343, %344
  %346 = add nsw i64 %342, %345
  %347 = getelementptr inbounds float, ptr %341, i64 %346
  %348 = load float, ptr %347, align 4, !tbaa !11
  store float %348, ptr %40, align 4, !tbaa !11
  %349 = load float, ptr %40, align 4, !tbaa !11
  %350 = fcmp oge float %349, 0.000000e+00
  br i1 %350, label %351, label %353

351:                                              ; preds = %338
  %352 = load float, ptr %40, align 4, !tbaa !11
  br label %356

353:                                              ; preds = %338
  %354 = load float, ptr %40, align 4, !tbaa !11
  %355 = fneg float %354
  br label %356

356:                                              ; preds = %353, %351
  %357 = phi float [ %352, %351 ], [ %355, %353 ]
  %358 = fpext float %357 to double
  %359 = load float, ptr %45, align 4, !tbaa !11
  %360 = fpext float %359 to double
  %361 = call double @llvm.fmuladd.f64(double %340, double %358, double %360)
  %362 = fptrunc double %361 to float
  store float %362, ptr %45, align 4, !tbaa !11
  %363 = load i64, ptr %46, align 8, !tbaa !9
  %364 = add nsw i64 %363, 1
  store i64 %364, ptr %46, align 8, !tbaa !9
  br label %365

365:                                              ; preds = %356
  %366 = load i64, ptr %42, align 8, !tbaa !9
  %367 = add nsw i64 %366, 1
  store i64 %367, ptr %42, align 8, !tbaa !9
  br label %299, !llvm.loop !16

368:                                              ; preds = %299
  %369 = load ptr, ptr %29, align 8, !tbaa !5
  %370 = load i64, ptr %44, align 8, !tbaa !9
  %371 = getelementptr inbounds float, ptr %369, i64 %370
  %372 = load float, ptr %371, align 4, !tbaa !11
  %373 = fpext float %372 to double
  %374 = load ptr, ptr %20, align 8, !tbaa !5
  %375 = load i64, ptr %47, align 8, !tbaa !9
  %376 = load i64, ptr %44, align 8, !tbaa !9
  %377 = add nsw i64 %375, %376
  %378 = sub nsw i64 %377, 1
  %379 = getelementptr inbounds float, ptr %374, i64 %378
  %380 = load float, ptr %379, align 4, !tbaa !11
  store float %380, ptr %39, align 4, !tbaa !11
  %381 = load float, ptr %39, align 4, !tbaa !11
  %382 = fcmp oge float %381, 0.000000e+00
  br i1 %382, label %383, label %385

383:                                              ; preds = %368
  %384 = load float, ptr %39, align 4, !tbaa !11
  br label %388

385:                                              ; preds = %368
  %386 = load float, ptr %39, align 4, !tbaa !11
  %387 = fneg float %386
  br label %388

388:                                              ; preds = %385, %383
  %389 = phi float [ %384, %383 ], [ %387, %385 ]
  %390 = fpext float %389 to double
  %391 = load float, ptr %48, align 4, !tbaa !11
  %392 = fpext float %391 to double
  %393 = call double @llvm.fmuladd.f64(double %390, double %392, double %373)
  %394 = load float, ptr %45, align 4, !tbaa !11
  %395 = fpext float %394 to double
  %396 = fadd double %393, %395
  %397 = fptrunc double %396 to float
  %398 = load ptr, ptr %29, align 8, !tbaa !5
  %399 = load i64, ptr %44, align 8, !tbaa !9
  %400 = getelementptr inbounds float, ptr %398, i64 %399
  store float %397, ptr %400, align 4, !tbaa !11
  %401 = load i64, ptr %44, align 8, !tbaa !9
  %402 = load i64, ptr %47, align 8, !tbaa !9
  %403 = add nsw i64 %402, %401
  store i64 %403, ptr %47, align 8, !tbaa !9
  br label %404

404:                                              ; preds = %388
  %405 = load i64, ptr %44, align 8, !tbaa !9
  %406 = add nsw i64 %405, 1
  store i64 %406, ptr %44, align 8, !tbaa !9
  br label %272, !llvm.loop !17

407:                                              ; preds = %272
  br label %551

408:                                              ; preds = %266
  %409 = load ptr, ptr %18, align 8, !tbaa !5
  %410 = load i64, ptr %409, align 8, !tbaa !9
  store i64 %410, ptr %37, align 8, !tbaa !9
  store i64 1, ptr %44, align 8, !tbaa !9
  br label %411

411:                                              ; preds = %547, %408
  %412 = load i64, ptr %44, align 8, !tbaa !9
  %413 = load i64, ptr %37, align 8, !tbaa !9
  %414 = icmp sle i64 %412, %413
  br i1 %414, label %415, label %550

415:                                              ; preds = %411
  store float 0.000000e+00, ptr %45, align 4, !tbaa !11
  %416 = load ptr, ptr %25, align 8, !tbaa !5
  %417 = load i64, ptr %44, align 8, !tbaa !9
  %418 = load i64, ptr %43, align 8, !tbaa !9
  %419 = load i64, ptr %34, align 8, !tbaa !9
  %420 = mul nsw i64 %418, %419
  %421 = add nsw i64 %417, %420
  %422 = getelementptr inbounds float, ptr %416, i64 %421
  %423 = load float, ptr %422, align 4, !tbaa !11
  store float %423, ptr %39, align 4, !tbaa !11
  %424 = load float, ptr %39, align 4, !tbaa !11
  %425 = fcmp oge float %424, 0.000000e+00
  br i1 %425, label %426, label %428

426:                                              ; preds = %415
  %427 = load float, ptr %39, align 4, !tbaa !11
  br label %431

428:                                              ; preds = %415
  %429 = load float, ptr %39, align 4, !tbaa !11
  %430 = fneg float %429
  br label %431

431:                                              ; preds = %428, %426
  %432 = phi float [ %427, %426 ], [ %430, %428 ]
  %433 = fpext float %432 to double
  %434 = fptrunc double %433 to float
  store float %434, ptr %48, align 4, !tbaa !11
  %435 = load ptr, ptr %20, align 8, !tbaa !5
  %436 = load i64, ptr %47, align 8, !tbaa !9
  %437 = getelementptr inbounds float, ptr %435, i64 %436
  %438 = load float, ptr %437, align 4, !tbaa !11
  store float %438, ptr %39, align 4, !tbaa !11
  %439 = load float, ptr %39, align 4, !tbaa !11
  %440 = fcmp oge float %439, 0.000000e+00
  br i1 %440, label %441, label %443

441:                                              ; preds = %431
  %442 = load float, ptr %39, align 4, !tbaa !11
  br label %446

443:                                              ; preds = %431
  %444 = load float, ptr %39, align 4, !tbaa !11
  %445 = fneg float %444
  br label %446

446:                                              ; preds = %443, %441
  %447 = phi float [ %442, %441 ], [ %445, %443 ]
  %448 = fpext float %447 to double
  %449 = load float, ptr %48, align 4, !tbaa !11
  %450 = fpext float %449 to double
  %451 = load ptr, ptr %29, align 8, !tbaa !5
  %452 = load i64, ptr %44, align 8, !tbaa !9
  %453 = getelementptr inbounds float, ptr %451, i64 %452
  %454 = load float, ptr %453, align 4, !tbaa !11
  %455 = fpext float %454 to double
  %456 = call double @llvm.fmuladd.f64(double %448, double %450, double %455)
  %457 = fptrunc double %456 to float
  store float %457, ptr %453, align 4, !tbaa !11
  %458 = load i64, ptr %47, align 8, !tbaa !9
  %459 = add nsw i64 %458, 1
  store i64 %459, ptr %46, align 8, !tbaa !9
  %460 = load ptr, ptr %18, align 8, !tbaa !5
  %461 = load i64, ptr %460, align 8, !tbaa !9
  store i64 %461, ptr %38, align 8, !tbaa !9
  %462 = load i64, ptr %44, align 8, !tbaa !9
  %463 = add nsw i64 %462, 1
  store i64 %463, ptr %42, align 8, !tbaa !9
  br label %464

464:                                              ; preds = %530, %446
  %465 = load i64, ptr %42, align 8, !tbaa !9
  %466 = load i64, ptr %38, align 8, !tbaa !9
  %467 = icmp sle i64 %465, %466
  br i1 %467, label %468, label %533

468:                                              ; preds = %464
  %469 = load ptr, ptr %20, align 8, !tbaa !5
  %470 = load i64, ptr %46, align 8, !tbaa !9
  %471 = getelementptr inbounds float, ptr %469, i64 %470
  %472 = load float, ptr %471, align 4, !tbaa !11
  store float %472, ptr %39, align 4, !tbaa !11
  %473 = load float, ptr %39, align 4, !tbaa !11
  %474 = fcmp oge float %473, 0.000000e+00
  br i1 %474, label %475, label %477

475:                                              ; preds = %468
  %476 = load float, ptr %39, align 4, !tbaa !11
  br label %480

477:                                              ; preds = %468
  %478 = load float, ptr %39, align 4, !tbaa !11
  %479 = fneg float %478
  br label %480

480:                                              ; preds = %477, %475
  %481 = phi float [ %476, %475 ], [ %479, %477 ]
  %482 = fpext float %481 to double
  %483 = load float, ptr %48, align 4, !tbaa !11
  %484 = fpext float %483 to double
  %485 = load ptr, ptr %29, align 8, !tbaa !5
  %486 = load i64, ptr %42, align 8, !tbaa !9
  %487 = getelementptr inbounds float, ptr %485, i64 %486
  %488 = load float, ptr %487, align 4, !tbaa !11
  %489 = fpext float %488 to double
  %490 = call double @llvm.fmuladd.f64(double %482, double %484, double %489)
  %491 = fptrunc double %490 to float
  store float %491, ptr %487, align 4, !tbaa !11
  %492 = load ptr, ptr %20, align 8, !tbaa !5
  %493 = load i64, ptr %46, align 8, !tbaa !9
  %494 = getelementptr inbounds float, ptr %492, i64 %493
  %495 = load float, ptr %494, align 4, !tbaa !11
  store float %495, ptr %39, align 4, !tbaa !11
  %496 = load float, ptr %39, align 4, !tbaa !11
  %497 = fcmp oge float %496, 0.000000e+00
  br i1 %497, label %498, label %500

498:                                              ; preds = %480
  %499 = load float, ptr %39, align 4, !tbaa !11
  br label %503

500:                                              ; preds = %480
  %501 = load float, ptr %39, align 4, !tbaa !11
  %502 = fneg float %501
  br label %503

503:                                              ; preds = %500, %498
  %504 = phi float [ %499, %498 ], [ %502, %500 ]
  %505 = fpext float %504 to double
  %506 = load ptr, ptr %25, align 8, !tbaa !5
  %507 = load i64, ptr %42, align 8, !tbaa !9
  %508 = load i64, ptr %43, align 8, !tbaa !9
  %509 = load i64, ptr %34, align 8, !tbaa !9
  %510 = mul nsw i64 %508, %509
  %511 = add nsw i64 %507, %510
  %512 = getelementptr inbounds float, ptr %506, i64 %511
  %513 = load float, ptr %512, align 4, !tbaa !11
  store float %513, ptr %40, align 4, !tbaa !11
  %514 = load float, ptr %40, align 4, !tbaa !11
  %515 = fcmp oge float %514, 0.000000e+00
  br i1 %515, label %516, label %518

516:                                              ; preds = %503
  %517 = load float, ptr %40, align 4, !tbaa !11
  br label %521

518:                                              ; preds = %503
  %519 = load float, ptr %40, align 4, !tbaa !11
  %520 = fneg float %519
  br label %521

521:                                              ; preds = %518, %516
  %522 = phi float [ %517, %516 ], [ %520, %518 ]
  %523 = fpext float %522 to double
  %524 = load float, ptr %45, align 4, !tbaa !11
  %525 = fpext float %524 to double
  %526 = call double @llvm.fmuladd.f64(double %505, double %523, double %525)
  %527 = fptrunc double %526 to float
  store float %527, ptr %45, align 4, !tbaa !11
  %528 = load i64, ptr %46, align 8, !tbaa !9
  %529 = add nsw i64 %528, 1
  store i64 %529, ptr %46, align 8, !tbaa !9
  br label %530

530:                                              ; preds = %521
  %531 = load i64, ptr %42, align 8, !tbaa !9
  %532 = add nsw i64 %531, 1
  store i64 %532, ptr %42, align 8, !tbaa !9
  br label %464, !llvm.loop !18

533:                                              ; preds = %464
  %534 = load float, ptr %45, align 4, !tbaa !11
  %535 = load ptr, ptr %29, align 8, !tbaa !5
  %536 = load i64, ptr %44, align 8, !tbaa !9
  %537 = getelementptr inbounds float, ptr %535, i64 %536
  %538 = load float, ptr %537, align 4, !tbaa !11
  %539 = fadd float %538, %534
  store float %539, ptr %537, align 4, !tbaa !11
  %540 = load ptr, ptr %18, align 8, !tbaa !5
  %541 = load i64, ptr %540, align 8, !tbaa !9
  %542 = load i64, ptr %44, align 8, !tbaa !9
  %543 = sub nsw i64 %541, %542
  %544 = add nsw i64 %543, 1
  %545 = load i64, ptr %47, align 8, !tbaa !9
  %546 = add nsw i64 %545, %544
  store i64 %546, ptr %47, align 8, !tbaa !9
  br label %547

547:                                              ; preds = %533
  %548 = load i64, ptr %44, align 8, !tbaa !9
  %549 = add nsw i64 %548, 1
  store i64 %549, ptr %44, align 8, !tbaa !9
  br label %411, !llvm.loop !19

550:                                              ; preds = %411
  br label %551

551:                                              ; preds = %550, %407
  store float 0.000000e+00, ptr %45, align 4, !tbaa !11
  %552 = load ptr, ptr %18, align 8, !tbaa !5
  %553 = load i64, ptr %552, align 8, !tbaa !9
  store i64 %553, ptr %37, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  br label %554

554:                                              ; preds = %645, %551
  %555 = load i64, ptr %42, align 8, !tbaa !9
  %556 = load i64, ptr %37, align 8, !tbaa !9
  %557 = icmp sle i64 %555, %556
  br i1 %557, label %558, label %648

558:                                              ; preds = %554
  %559 = load ptr, ptr %29, align 8, !tbaa !5
  %560 = load i64, ptr %42, align 8, !tbaa !9
  %561 = getelementptr inbounds float, ptr %559, i64 %560
  %562 = load float, ptr %561, align 4, !tbaa !11
  %563 = load float, ptr %53, align 4, !tbaa !11
  %564 = fcmp ogt float %562, %563
  br i1 %564, label %565, label %602

565:                                              ; preds = %558
  %566 = load float, ptr %45, align 4, !tbaa !11
  store float %566, ptr %40, align 4, !tbaa !11
  %567 = load ptr, ptr %29, align 8, !tbaa !5
  %568 = load ptr, ptr %18, align 8, !tbaa !5
  %569 = load i64, ptr %568, align 8, !tbaa !9
  %570 = load i64, ptr %42, align 8, !tbaa !9
  %571 = add nsw i64 %569, %570
  %572 = getelementptr inbounds float, ptr %567, i64 %571
  %573 = load float, ptr %572, align 4, !tbaa !11
  store float %573, ptr %39, align 4, !tbaa !11
  %574 = load float, ptr %39, align 4, !tbaa !11
  %575 = fcmp oge float %574, 0.000000e+00
  br i1 %575, label %576, label %578

576:                                              ; preds = %565
  %577 = load float, ptr %39, align 4, !tbaa !11
  br label %581

578:                                              ; preds = %565
  %579 = load float, ptr %39, align 4, !tbaa !11
  %580 = fneg float %579
  br label %581

581:                                              ; preds = %578, %576
  %582 = phi float [ %577, %576 ], [ %580, %578 ]
  %583 = fpext float %582 to double
  %584 = load ptr, ptr %29, align 8, !tbaa !5
  %585 = load i64, ptr %42, align 8, !tbaa !9
  %586 = getelementptr inbounds float, ptr %584, i64 %585
  %587 = load float, ptr %586, align 4, !tbaa !11
  %588 = fpext float %587 to double
  %589 = fdiv double %583, %588
  %590 = fptrunc double %589 to float
  store float %590, ptr %41, align 4, !tbaa !11
  %591 = load float, ptr %40, align 4, !tbaa !11
  %592 = load float, ptr %41, align 4, !tbaa !11
  %593 = fcmp oge float %591, %592
  br i1 %593, label %594, label %596

594:                                              ; preds = %581
  %595 = load float, ptr %40, align 4, !tbaa !11
  br label %598

596:                                              ; preds = %581
  %597 = load float, ptr %41, align 4, !tbaa !11
  br label %598

598:                                              ; preds = %596, %594
  %599 = phi float [ %595, %594 ], [ %597, %596 ]
  %600 = fpext float %599 to double
  %601 = fptrunc double %600 to float
  store float %601, ptr %45, align 4, !tbaa !11
  br label %644

602:                                              ; preds = %558
  %603 = load float, ptr %45, align 4, !tbaa !11
  store float %603, ptr %40, align 4, !tbaa !11
  %604 = load ptr, ptr %29, align 8, !tbaa !5
  %605 = load ptr, ptr %18, align 8, !tbaa !5
  %606 = load i64, ptr %605, align 8, !tbaa !9
  %607 = load i64, ptr %42, align 8, !tbaa !9
  %608 = add nsw i64 %606, %607
  %609 = getelementptr inbounds float, ptr %604, i64 %608
  %610 = load float, ptr %609, align 4, !tbaa !11
  store float %610, ptr %39, align 4, !tbaa !11
  %611 = load float, ptr %39, align 4, !tbaa !11
  %612 = fcmp oge float %611, 0.000000e+00
  br i1 %612, label %613, label %615

613:                                              ; preds = %602
  %614 = load float, ptr %39, align 4, !tbaa !11
  br label %618

615:                                              ; preds = %602
  %616 = load float, ptr %39, align 4, !tbaa !11
  %617 = fneg float %616
  br label %618

618:                                              ; preds = %615, %613
  %619 = phi float [ %614, %613 ], [ %617, %615 ]
  %620 = fpext float %619 to double
  %621 = load float, ptr %52, align 4, !tbaa !11
  %622 = fpext float %621 to double
  %623 = fadd double %620, %622
  %624 = load ptr, ptr %29, align 8, !tbaa !5
  %625 = load i64, ptr %42, align 8, !tbaa !9
  %626 = getelementptr inbounds float, ptr %624, i64 %625
  %627 = load float, ptr %626, align 4, !tbaa !11
  %628 = load float, ptr %52, align 4, !tbaa !11
  %629 = fadd float %627, %628
  %630 = fpext float %629 to double
  %631 = fdiv double %623, %630
  %632 = fptrunc double %631 to float
  store float %632, ptr %41, align 4, !tbaa !11
  %633 = load float, ptr %40, align 4, !tbaa !11
  %634 = load float, ptr %41, align 4, !tbaa !11
  %635 = fcmp oge float %633, %634
  br i1 %635, label %636, label %638

636:                                              ; preds = %618
  %637 = load float, ptr %40, align 4, !tbaa !11
  br label %640

638:                                              ; preds = %618
  %639 = load float, ptr %41, align 4, !tbaa !11
  br label %640

640:                                              ; preds = %638, %636
  %641 = phi float [ %637, %636 ], [ %639, %638 ]
  %642 = fpext float %641 to double
  %643 = fptrunc double %642 to float
  store float %643, ptr %45, align 4, !tbaa !11
  br label %644

644:                                              ; preds = %640, %598
  br label %645

645:                                              ; preds = %644
  %646 = load i64, ptr %42, align 8, !tbaa !9
  %647 = add nsw i64 %646, 1
  store i64 %647, ptr %42, align 8, !tbaa !9
  br label %554, !llvm.loop !20

648:                                              ; preds = %554
  %649 = load float, ptr %45, align 4, !tbaa !11
  %650 = load ptr, ptr %28, align 8, !tbaa !5
  %651 = load i64, ptr %43, align 8, !tbaa !9
  %652 = getelementptr inbounds float, ptr %650, i64 %651
  store float %649, ptr %652, align 4, !tbaa !11
  %653 = load ptr, ptr %28, align 8, !tbaa !5
  %654 = load i64, ptr %43, align 8, !tbaa !9
  %655 = getelementptr inbounds float, ptr %653, i64 %654
  %656 = load float, ptr %655, align 4, !tbaa !11
  %657 = load float, ptr %50, align 4, !tbaa !11
  %658 = fcmp ogt float %656, %657
  br i1 %658, label %659, label %704

659:                                              ; preds = %648
  %660 = load ptr, ptr %28, align 8, !tbaa !5
  %661 = load i64, ptr %43, align 8, !tbaa !9
  %662 = getelementptr inbounds float, ptr %660, i64 %661
  %663 = load float, ptr %662, align 4, !tbaa !11
  %664 = fmul float %663, 2.000000e+00
  %665 = load float, ptr %58, align 4, !tbaa !11
  %666 = fcmp ole float %664, %665
  br i1 %666, label %667, label %704

667:                                              ; preds = %659
  %668 = load i64, ptr %55, align 8, !tbaa !9
  %669 = icmp sle i64 %668, 5
  br i1 %669, label %670, label %704

670:                                              ; preds = %667
  %671 = load ptr, ptr %17, align 8, !tbaa !5
  %672 = load ptr, ptr %18, align 8, !tbaa !5
  %673 = load ptr, ptr %21, align 8, !tbaa !5
  %674 = getelementptr inbounds float, ptr %673, i64 1
  %675 = load ptr, ptr %22, align 8, !tbaa !5
  %676 = getelementptr inbounds i64, ptr %675, i64 1
  %677 = load ptr, ptr %29, align 8, !tbaa !5
  %678 = load ptr, ptr %18, align 8, !tbaa !5
  %679 = load i64, ptr %678, align 8, !tbaa !9
  %680 = add nsw i64 %679, 1
  %681 = getelementptr inbounds float, ptr %677, i64 %680
  %682 = load ptr, ptr %18, align 8, !tbaa !5
  %683 = load ptr, ptr %31, align 8, !tbaa !5
  %684 = call i32 @ssptrs_(ptr noundef %671, ptr noundef %672, ptr noundef @c__1, ptr noundef %674, ptr noundef %676, ptr noundef %681, ptr noundef %682, ptr noundef %683)
  %685 = load ptr, ptr %18, align 8, !tbaa !5
  %686 = load ptr, ptr %29, align 8, !tbaa !5
  %687 = load ptr, ptr %18, align 8, !tbaa !5
  %688 = load i64, ptr %687, align 8, !tbaa !9
  %689 = add nsw i64 %688, 1
  %690 = getelementptr inbounds float, ptr %686, i64 %689
  %691 = load ptr, ptr %25, align 8, !tbaa !5
  %692 = load i64, ptr %43, align 8, !tbaa !9
  %693 = load i64, ptr %34, align 8, !tbaa !9
  %694 = mul nsw i64 %692, %693
  %695 = add nsw i64 %694, 1
  %696 = getelementptr inbounds float, ptr %691, i64 %695
  %697 = call i32 @f2c_saxpy(ptr noundef %685, ptr noundef @c_b14, ptr noundef %690, ptr noundef @c__1, ptr noundef %696, ptr noundef @c__1)
  %698 = load ptr, ptr %28, align 8, !tbaa !5
  %699 = load i64, ptr %43, align 8, !tbaa !9
  %700 = getelementptr inbounds float, ptr %698, i64 %699
  %701 = load float, ptr %700, align 4, !tbaa !11
  store float %701, ptr %58, align 4, !tbaa !11
  %702 = load i64, ptr %55, align 8, !tbaa !9
  %703 = add nsw i64 %702, 1
  store i64 %703, ptr %55, align 8, !tbaa !9
  br label %204

704:                                              ; preds = %667, %659, %648
  %705 = load ptr, ptr %18, align 8, !tbaa !5
  %706 = load i64, ptr %705, align 8, !tbaa !9
  store i64 %706, ptr %37, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  br label %707

707:                                              ; preds = %788, %704
  %708 = load i64, ptr %42, align 8, !tbaa !9
  %709 = load i64, ptr %37, align 8, !tbaa !9
  %710 = icmp sle i64 %708, %709
  br i1 %710, label %711, label %791

711:                                              ; preds = %707
  %712 = load ptr, ptr %29, align 8, !tbaa !5
  %713 = load i64, ptr %42, align 8, !tbaa !9
  %714 = getelementptr inbounds float, ptr %712, i64 %713
  %715 = load float, ptr %714, align 4, !tbaa !11
  %716 = load float, ptr %53, align 4, !tbaa !11
  %717 = fcmp ogt float %715, %716
  br i1 %717, label %718, label %751

718:                                              ; preds = %711
  %719 = load ptr, ptr %29, align 8, !tbaa !5
  %720 = load ptr, ptr %18, align 8, !tbaa !5
  %721 = load i64, ptr %720, align 8, !tbaa !9
  %722 = load i64, ptr %42, align 8, !tbaa !9
  %723 = add nsw i64 %721, %722
  %724 = getelementptr inbounds float, ptr %719, i64 %723
  %725 = load float, ptr %724, align 4, !tbaa !11
  store float %725, ptr %39, align 4, !tbaa !11
  %726 = load float, ptr %39, align 4, !tbaa !11
  %727 = fcmp oge float %726, 0.000000e+00
  br i1 %727, label %728, label %730

728:                                              ; preds = %718
  %729 = load float, ptr %39, align 4, !tbaa !11
  br label %733

730:                                              ; preds = %718
  %731 = load float, ptr %39, align 4, !tbaa !11
  %732 = fneg float %731
  br label %733

733:                                              ; preds = %730, %728
  %734 = phi float [ %729, %728 ], [ %732, %730 ]
  %735 = fpext float %734 to double
  %736 = load i64, ptr %49, align 8, !tbaa !9
  %737 = sitofp i64 %736 to float
  %738 = load float, ptr %50, align 4, !tbaa !11
  %739 = fmul float %737, %738
  %740 = load ptr, ptr %29, align 8, !tbaa !5
  %741 = load i64, ptr %42, align 8, !tbaa !9
  %742 = getelementptr inbounds float, ptr %740, i64 %741
  %743 = load float, ptr %742, align 4, !tbaa !11
  %744 = fmul float %739, %743
  %745 = fpext float %744 to double
  %746 = fadd double %735, %745
  %747 = fptrunc double %746 to float
  %748 = load ptr, ptr %29, align 8, !tbaa !5
  %749 = load i64, ptr %42, align 8, !tbaa !9
  %750 = getelementptr inbounds float, ptr %748, i64 %749
  store float %747, ptr %750, align 4, !tbaa !11
  br label %787

751:                                              ; preds = %711
  %752 = load ptr, ptr %29, align 8, !tbaa !5
  %753 = load ptr, ptr %18, align 8, !tbaa !5
  %754 = load i64, ptr %753, align 8, !tbaa !9
  %755 = load i64, ptr %42, align 8, !tbaa !9
  %756 = add nsw i64 %754, %755
  %757 = getelementptr inbounds float, ptr %752, i64 %756
  %758 = load float, ptr %757, align 4, !tbaa !11
  store float %758, ptr %39, align 4, !tbaa !11
  %759 = load float, ptr %39, align 4, !tbaa !11
  %760 = fcmp oge float %759, 0.000000e+00
  br i1 %760, label %761, label %763

761:                                              ; preds = %751
  %762 = load float, ptr %39, align 4, !tbaa !11
  br label %766

763:                                              ; preds = %751
  %764 = load float, ptr %39, align 4, !tbaa !11
  %765 = fneg float %764
  br label %766

766:                                              ; preds = %763, %761
  %767 = phi float [ %762, %761 ], [ %765, %763 ]
  %768 = fpext float %767 to double
  %769 = load i64, ptr %49, align 8, !tbaa !9
  %770 = sitofp i64 %769 to float
  %771 = load float, ptr %50, align 4, !tbaa !11
  %772 = fmul float %770, %771
  %773 = load ptr, ptr %29, align 8, !tbaa !5
  %774 = load i64, ptr %42, align 8, !tbaa !9
  %775 = getelementptr inbounds float, ptr %773, i64 %774
  %776 = load float, ptr %775, align 4, !tbaa !11
  %777 = fmul float %772, %776
  %778 = fpext float %777 to double
  %779 = fadd double %768, %778
  %780 = load float, ptr %52, align 4, !tbaa !11
  %781 = fpext float %780 to double
  %782 = fadd double %779, %781
  %783 = fptrunc double %782 to float
  %784 = load ptr, ptr %29, align 8, !tbaa !5
  %785 = load i64, ptr %42, align 8, !tbaa !9
  %786 = getelementptr inbounds float, ptr %784, i64 %785
  store float %783, ptr %786, align 4, !tbaa !11
  br label %787

787:                                              ; preds = %766, %733
  br label %788

788:                                              ; preds = %787
  %789 = load i64, ptr %42, align 8, !tbaa !9
  %790 = add nsw i64 %789, 1
  store i64 %790, ptr %42, align 8, !tbaa !9
  br label %707, !llvm.loop !21

791:                                              ; preds = %707
  store i64 0, ptr %51, align 8, !tbaa !9
  br label %792

792:                                              ; preds = %909, %791
  %793 = load ptr, ptr %18, align 8, !tbaa !5
  %794 = load ptr, ptr %29, align 8, !tbaa !5
  %795 = load ptr, ptr %18, align 8, !tbaa !5
  %796 = load i64, ptr %795, align 8, !tbaa !9
  %797 = shl i64 %796, 1
  %798 = add nsw i64 %797, 1
  %799 = getelementptr inbounds float, ptr %794, i64 %798
  %800 = load ptr, ptr %29, align 8, !tbaa !5
  %801 = load ptr, ptr %18, align 8, !tbaa !5
  %802 = load i64, ptr %801, align 8, !tbaa !9
  %803 = add nsw i64 %802, 1
  %804 = getelementptr inbounds float, ptr %800, i64 %803
  %805 = load ptr, ptr %30, align 8, !tbaa !5
  %806 = getelementptr inbounds i64, ptr %805, i64 1
  %807 = load ptr, ptr %27, align 8, !tbaa !5
  %808 = load i64, ptr %43, align 8, !tbaa !9
  %809 = getelementptr inbounds float, ptr %807, i64 %808
  %810 = getelementptr inbounds [3 x i64], ptr %54, i64 0, i64 0
  %811 = call i32 @slacn2_(ptr noundef %793, ptr noundef %799, ptr noundef %804, ptr noundef %806, ptr noundef %809, ptr noundef %51, ptr noundef %810)
  %812 = load i64, ptr %51, align 8, !tbaa !9
  %813 = icmp ne i64 %812, 0
  br i1 %813, label %814, label %910

814:                                              ; preds = %792
  %815 = load i64, ptr %51, align 8, !tbaa !9
  %816 = icmp eq i64 %815, 1
  br i1 %816, label %817, label %861

817:                                              ; preds = %814
  %818 = load ptr, ptr %17, align 8, !tbaa !5
  %819 = load ptr, ptr %18, align 8, !tbaa !5
  %820 = load ptr, ptr %21, align 8, !tbaa !5
  %821 = getelementptr inbounds float, ptr %820, i64 1
  %822 = load ptr, ptr %22, align 8, !tbaa !5
  %823 = getelementptr inbounds i64, ptr %822, i64 1
  %824 = load ptr, ptr %29, align 8, !tbaa !5
  %825 = load ptr, ptr %18, align 8, !tbaa !5
  %826 = load i64, ptr %825, align 8, !tbaa !9
  %827 = add nsw i64 %826, 1
  %828 = getelementptr inbounds float, ptr %824, i64 %827
  %829 = load ptr, ptr %18, align 8, !tbaa !5
  %830 = load ptr, ptr %31, align 8, !tbaa !5
  %831 = call i32 @ssptrs_(ptr noundef %818, ptr noundef %819, ptr noundef @c__1, ptr noundef %821, ptr noundef %823, ptr noundef %828, ptr noundef %829, ptr noundef %830)
  %832 = load ptr, ptr %18, align 8, !tbaa !5
  %833 = load i64, ptr %832, align 8, !tbaa !9
  store i64 %833, ptr %37, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  br label %834

834:                                              ; preds = %857, %817
  %835 = load i64, ptr %42, align 8, !tbaa !9
  %836 = load i64, ptr %37, align 8, !tbaa !9
  %837 = icmp sle i64 %835, %836
  br i1 %837, label %838, label %860

838:                                              ; preds = %834
  %839 = load ptr, ptr %29, align 8, !tbaa !5
  %840 = load i64, ptr %42, align 8, !tbaa !9
  %841 = getelementptr inbounds float, ptr %839, i64 %840
  %842 = load float, ptr %841, align 4, !tbaa !11
  %843 = load ptr, ptr %29, align 8, !tbaa !5
  %844 = load ptr, ptr %18, align 8, !tbaa !5
  %845 = load i64, ptr %844, align 8, !tbaa !9
  %846 = load i64, ptr %42, align 8, !tbaa !9
  %847 = add nsw i64 %845, %846
  %848 = getelementptr inbounds float, ptr %843, i64 %847
  %849 = load float, ptr %848, align 4, !tbaa !11
  %850 = fmul float %842, %849
  %851 = load ptr, ptr %29, align 8, !tbaa !5
  %852 = load ptr, ptr %18, align 8, !tbaa !5
  %853 = load i64, ptr %852, align 8, !tbaa !9
  %854 = load i64, ptr %42, align 8, !tbaa !9
  %855 = add nsw i64 %853, %854
  %856 = getelementptr inbounds float, ptr %851, i64 %855
  store float %850, ptr %856, align 4, !tbaa !11
  br label %857

857:                                              ; preds = %838
  %858 = load i64, ptr %42, align 8, !tbaa !9
  %859 = add nsw i64 %858, 1
  store i64 %859, ptr %42, align 8, !tbaa !9
  br label %834, !llvm.loop !22

860:                                              ; preds = %834
  br label %909

861:                                              ; preds = %814
  %862 = load i64, ptr %51, align 8, !tbaa !9
  %863 = icmp eq i64 %862, 2
  br i1 %863, label %864, label %908

864:                                              ; preds = %861
  %865 = load ptr, ptr %18, align 8, !tbaa !5
  %866 = load i64, ptr %865, align 8, !tbaa !9
  store i64 %866, ptr %37, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  br label %867

867:                                              ; preds = %890, %864
  %868 = load i64, ptr %42, align 8, !tbaa !9
  %869 = load i64, ptr %37, align 8, !tbaa !9
  %870 = icmp sle i64 %868, %869
  br i1 %870, label %871, label %893

871:                                              ; preds = %867
  %872 = load ptr, ptr %29, align 8, !tbaa !5
  %873 = load i64, ptr %42, align 8, !tbaa !9
  %874 = getelementptr inbounds float, ptr %872, i64 %873
  %875 = load float, ptr %874, align 4, !tbaa !11
  %876 = load ptr, ptr %29, align 8, !tbaa !5
  %877 = load ptr, ptr %18, align 8, !tbaa !5
  %878 = load i64, ptr %877, align 8, !tbaa !9
  %879 = load i64, ptr %42, align 8, !tbaa !9
  %880 = add nsw i64 %878, %879
  %881 = getelementptr inbounds float, ptr %876, i64 %880
  %882 = load float, ptr %881, align 4, !tbaa !11
  %883 = fmul float %875, %882
  %884 = load ptr, ptr %29, align 8, !tbaa !5
  %885 = load ptr, ptr %18, align 8, !tbaa !5
  %886 = load i64, ptr %885, align 8, !tbaa !9
  %887 = load i64, ptr %42, align 8, !tbaa !9
  %888 = add nsw i64 %886, %887
  %889 = getelementptr inbounds float, ptr %884, i64 %888
  store float %883, ptr %889, align 4, !tbaa !11
  br label %890

890:                                              ; preds = %871
  %891 = load i64, ptr %42, align 8, !tbaa !9
  %892 = add nsw i64 %891, 1
  store i64 %892, ptr %42, align 8, !tbaa !9
  br label %867, !llvm.loop !23

893:                                              ; preds = %867
  %894 = load ptr, ptr %17, align 8, !tbaa !5
  %895 = load ptr, ptr %18, align 8, !tbaa !5
  %896 = load ptr, ptr %21, align 8, !tbaa !5
  %897 = getelementptr inbounds float, ptr %896, i64 1
  %898 = load ptr, ptr %22, align 8, !tbaa !5
  %899 = getelementptr inbounds i64, ptr %898, i64 1
  %900 = load ptr, ptr %29, align 8, !tbaa !5
  %901 = load ptr, ptr %18, align 8, !tbaa !5
  %902 = load i64, ptr %901, align 8, !tbaa !9
  %903 = add nsw i64 %902, 1
  %904 = getelementptr inbounds float, ptr %900, i64 %903
  %905 = load ptr, ptr %18, align 8, !tbaa !5
  %906 = load ptr, ptr %31, align 8, !tbaa !5
  %907 = call i32 @ssptrs_(ptr noundef %894, ptr noundef %895, ptr noundef @c__1, ptr noundef %897, ptr noundef %899, ptr noundef %904, ptr noundef %905, ptr noundef %906)
  br label %908

908:                                              ; preds = %893, %861
  br label %909

909:                                              ; preds = %908, %860
  br label %792

910:                                              ; preds = %792
  store float 0.000000e+00, ptr %58, align 4, !tbaa !11
  %911 = load ptr, ptr %18, align 8, !tbaa !5
  %912 = load i64, ptr %911, align 8, !tbaa !9
  store i64 %912, ptr %37, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  br label %913

913:                                              ; preds = %949, %910
  %914 = load i64, ptr %42, align 8, !tbaa !9
  %915 = load i64, ptr %37, align 8, !tbaa !9
  %916 = icmp sle i64 %914, %915
  br i1 %916, label %917, label %952

917:                                              ; preds = %913
  %918 = load float, ptr %58, align 4, !tbaa !11
  store float %918, ptr %40, align 4, !tbaa !11
  %919 = load ptr, ptr %25, align 8, !tbaa !5
  %920 = load i64, ptr %42, align 8, !tbaa !9
  %921 = load i64, ptr %43, align 8, !tbaa !9
  %922 = load i64, ptr %34, align 8, !tbaa !9
  %923 = mul nsw i64 %921, %922
  %924 = add nsw i64 %920, %923
  %925 = getelementptr inbounds float, ptr %919, i64 %924
  %926 = load float, ptr %925, align 4, !tbaa !11
  store float %926, ptr %39, align 4, !tbaa !11
  %927 = load float, ptr %39, align 4, !tbaa !11
  %928 = fcmp oge float %927, 0.000000e+00
  br i1 %928, label %929, label %931

929:                                              ; preds = %917
  %930 = load float, ptr %39, align 4, !tbaa !11
  br label %934

931:                                              ; preds = %917
  %932 = load float, ptr %39, align 4, !tbaa !11
  %933 = fneg float %932
  br label %934

934:                                              ; preds = %931, %929
  %935 = phi float [ %930, %929 ], [ %933, %931 ]
  %936 = fpext float %935 to double
  %937 = fptrunc double %936 to float
  store float %937, ptr %41, align 4, !tbaa !11
  %938 = load float, ptr %40, align 4, !tbaa !11
  %939 = load float, ptr %41, align 4, !tbaa !11
  %940 = fcmp oge float %938, %939
  br i1 %940, label %941, label %943

941:                                              ; preds = %934
  %942 = load float, ptr %40, align 4, !tbaa !11
  br label %945

943:                                              ; preds = %934
  %944 = load float, ptr %41, align 4, !tbaa !11
  br label %945

945:                                              ; preds = %943, %941
  %946 = phi float [ %942, %941 ], [ %944, %943 ]
  %947 = fpext float %946 to double
  %948 = fptrunc double %947 to float
  store float %948, ptr %58, align 4, !tbaa !11
  br label %949

949:                                              ; preds = %945
  %950 = load i64, ptr %42, align 8, !tbaa !9
  %951 = add nsw i64 %950, 1
  store i64 %951, ptr %42, align 8, !tbaa !9
  br label %913, !llvm.loop !24

952:                                              ; preds = %913
  %953 = load float, ptr %58, align 4, !tbaa !11
  %954 = fcmp une float %953, 0.000000e+00
  br i1 %954, label %955, label %962

955:                                              ; preds = %952
  %956 = load float, ptr %58, align 4, !tbaa !11
  %957 = load ptr, ptr %27, align 8, !tbaa !5
  %958 = load i64, ptr %43, align 8, !tbaa !9
  %959 = getelementptr inbounds float, ptr %957, i64 %958
  %960 = load float, ptr %959, align 4, !tbaa !11
  %961 = fdiv float %960, %956
  store float %961, ptr %959, align 4, !tbaa !11
  br label %962

962:                                              ; preds = %955, %952
  br label %963

963:                                              ; preds = %962
  %964 = load i64, ptr %43, align 8, !tbaa !9
  %965 = add nsw i64 %964, 1
  store i64 %965, ptr %43, align 8, !tbaa !9
  br label %199, !llvm.loop !25

966:                                              ; preds = %199
  store i32 0, ptr %16, align 4
  store i32 1, ptr %59, align 4
  br label %967

967:                                              ; preds = %966, %181, %151
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, 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
  %968 = load i32, ptr %16, align 4
  ret i32 %968
}

; 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 @ssptrs_(ptr noundef, 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 @ssprfs_(ptr noundef %0, ptr noundef %1, ptr nocapture noundef readonly %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr nocapture noundef readonly %7, ptr noundef %8, ptr nocapture noundef readonly %9, ptr noundef %10, ptr nocapture noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14) local_unnamed_addr #0 {
  %16 = ptrtoint ptr %10 to i64
  %17 = ptrtoint ptr %11 to i64
  %18 = ptrtoint ptr %6 to i64
  %19 = ptrtoint ptr %12 to i64
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca [3 x i64], align 16
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #5
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %22) #5
  %23 = getelementptr inbounds i8, ptr %3, i64 -4
  %24 = load i64, ptr %7, align 8, !tbaa !5
  %25 = xor i64 %24, -1
  %26 = getelementptr inbounds float, ptr %6, i64 %25
  %27 = load i64, ptr %9, align 8, !tbaa !5
  %28 = xor i64 %27, -1
  %29 = getelementptr inbounds float, ptr %8, i64 %28
  %30 = getelementptr inbounds i8, ptr %10, i64 -4
  %31 = getelementptr inbounds i8, ptr %11, i64 -4
  %32 = getelementptr inbounds i8, ptr %12, i64 -4
  store i64 0, ptr %14, align 8, !tbaa !5
  %33 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #5
  %.not = icmp eq i64 %33, 0
  br i1 %.not, label %34, label %36

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

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

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

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

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

48:                                               ; preds = %45
  %.pr = load i64, ptr %14, align 8, !tbaa !5
  %.not373 = icmp eq i64 %.pr, 0
  br i1 %.not373, label %52, label %.thread

.thread.sink.split:                               ; preds = %45, %42, %39, %36, %34
  %.sink = phi i64 [ -1, %34 ], [ -2, %36 ], [ -3, %39 ], [ -8, %42 ], [ -10, %45 ]
  store i64 %.sink, ptr %14, align 8, !tbaa !5
  br label %.thread

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

52:                                               ; preds = %48
  %53 = icmp eq i64 %37, 0
  %.not386468 = icmp eq i64 %40, 0
  br i1 %53, label %55, label %54

54:                                               ; preds = %52
  br i1 %.not386468, label %.loopexit, label %80

55:                                               ; preds = %52
  br i1 %.not386468, label %.loopexit, label %.lr.ph471.preheader

.lr.ph471.preheader:                              ; preds = %55
  %min.iters.check564 = icmp ult i64 %40, 8
  %56 = sub i64 %17, %16
  %diff.check561 = icmp ult i64 %56, 32
  %or.cond575 = or i1 %min.iters.check564, %diff.check561
  br i1 %or.cond575, label %.lr.ph471.preheader577, label %vector.ph565

vector.ph565:                                     ; preds = %.lr.ph471.preheader
  %n.vec567 = and i64 %40, 9223372036854775800
  %ind.end568 = or disjoint i64 %n.vec567, 1
  br label %vector.body570

vector.body570:                                   ; preds = %vector.body570, %vector.ph565
  %index571 = phi i64 [ 0, %vector.ph565 ], [ %index.next573, %vector.body570 ]
  %57 = getelementptr float, ptr %10, i64 %index571
  %58 = getelementptr inbounds i8, ptr %57, i64 16
  store <4 x float> zeroinitializer, ptr %57, align 4, !tbaa !9
  store <4 x float> zeroinitializer, ptr %58, align 4, !tbaa !9
  %59 = getelementptr float, ptr %11, i64 %index571
  %60 = getelementptr inbounds i8, ptr %59, i64 16
  store <4 x float> zeroinitializer, ptr %59, align 4, !tbaa !9
  store <4 x float> zeroinitializer, ptr %60, align 4, !tbaa !9
  %index.next573 = add nuw i64 %index571, 8
  %61 = icmp eq i64 %index.next573, %n.vec567
  br i1 %61, label %middle.block562, label %vector.body570, !llvm.loop !11

middle.block562:                                  ; preds = %vector.body570
  %cmp.n574 = icmp eq i64 %40, %n.vec567
  br i1 %cmp.n574, label %.loopexit, label %.lr.ph471.preheader577

.lr.ph471.preheader577:                           ; preds = %middle.block562, %.lr.ph471.preheader
  %.0357469.ph = phi i64 [ 1, %.lr.ph471.preheader ], [ %ind.end568, %middle.block562 ]
  %62 = add nuw i64 %40, 1
  %63 = sub i64 %62, %.0357469.ph
  %64 = sub i64 %40, %.0357469.ph
  %xtraiter588 = and i64 %63, 3
  %lcmp.mod589.not = icmp eq i64 %xtraiter588, 0
  br i1 %lcmp.mod589.not, label %.lr.ph471.prol.loopexit, label %.lr.ph471.prol

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

.lr.ph471.prol.loopexit:                          ; preds = %.lr.ph471.prol, %.lr.ph471.preheader577
  %.0357469.unr = phi i64 [ %.0357469.ph, %.lr.ph471.preheader577 ], [ %67, %.lr.ph471.prol ]
  %68 = icmp ult i64 %64, 3
  br i1 %68, label %.loopexit, label %.lr.ph471

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

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

.preheader393.lr.ph:                              ; preds = %80
  %invariant.gep439 = getelementptr i8, ptr %29, i64 4
  %invariant.gep410 = getelementptr i8, ptr %3, i64 -8
  %90 = fpext float %87 to double
  %91 = fmul float %86, %83
  %92 = sub i64 %19, %18
  %93 = mul i64 %24, -4
  %broadcast.splatinsert = insertelement <4 x float> poison, float %88, i64 0
  %broadcast.splat = shufflevector <4 x float> %broadcast.splatinsert, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert539 = insertelement <4 x float> poison, float %91, i64 0
  %broadcast.splat540 = shufflevector <4 x float> %broadcast.splatinsert539, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert541 = insertelement <4 x double> poison, double %90, i64 0
  %broadcast.splat542 = shufflevector <4 x double> %broadcast.splatinsert541, <4 x double> poison, <4 x i32> zeroinitializer
  br label %.preheader393

.preheader393:                                    ; preds = %.preheader393.lr.ph, %._crit_edge462.thread
  %indvar = phi i64 [ 0, %.preheader393.lr.ph ], [ %indvar.next, %._crit_edge462.thread ]
  %.1358467 = phi i64 [ 1, %.preheader393.lr.ph ], [ %367, %._crit_edge462.thread ]
  %94 = mul i64 %93, %indvar
  %95 = add i64 %92, %94
  %96 = getelementptr inbounds float, ptr %31, i64 %.1358467
  %97 = mul nsw i64 %.1358467, %24
  %gep465 = getelementptr float, ptr %invariant.gep464, i64 %97
  %98 = mul nsw i64 %.1358467, %27
  %gep440 = getelementptr float, ptr %invariant.gep439, i64 %98
  %invariant.gep = getelementptr float, ptr %26, i64 %97
  %invariant.gep408 = getelementptr float, ptr %29, i64 %98
  %diff.check = icmp ult i64 %95, 32
  br label %99

99:                                               ; preds = %.preheader393, %259
  %.0348 = phi i64 [ %266, %259 ], [ 1, %.preheader393 ]
  %.0 = phi float [ %265, %259 ], [ 3.000000e+00, %.preheader393 ]
  %100 = load i64, ptr %1, align 8, !tbaa !5
  %101 = getelementptr float, ptr %12, i64 %100
  %102 = call i32 @f2c_scopy(ptr noundef nonnull %1, ptr noundef %gep465, ptr noundef nonnull @c__1, ptr noundef %101, ptr noundef nonnull @c__1) #5
  %103 = load i64, ptr %1, align 8, !tbaa !5
  %104 = getelementptr float, ptr %12, i64 %103
  %105 = call i32 @f2c_sspmv(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull @c_b12, ptr noundef %3, ptr noundef %gep440, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b14, ptr noundef %104, ptr noundef nonnull @c__1) #5
  %106 = load i64, ptr %1, align 8, !tbaa !5
  %.not375397 = icmp slt i64 %106, 1
  br i1 %.not375397, label %._crit_edge437, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %99
  %min.iters.check547 = icmp ult i64 %106, 8
  %or.cond576 = select i1 %min.iters.check547, i1 true, i1 %diff.check
  br i1 %or.cond576, label %.lr.ph.preheader579, label %vector.ph548

vector.ph548:                                     ; preds = %.lr.ph.preheader
  %n.vec550 = and i64 %106, 9223372036854775800
  %ind.end551 = or disjoint i64 %n.vec550, 1
  br label %vector.body553

vector.body553:                                   ; preds = %vector.body553, %vector.ph548
  %index554 = phi i64 [ 0, %vector.ph548 ], [ %index.next558, %vector.body553 ]
  %offset.idx555 = or disjoint i64 %index554, 1
  %107 = getelementptr float, ptr %invariant.gep, i64 %offset.idx555
  %108 = getelementptr i8, ptr %107, i64 16
  %wide.load556 = load <4 x float>, ptr %107, align 4, !tbaa !9
  %wide.load557 = load <4 x float>, ptr %108, align 4, !tbaa !9
  %109 = fcmp oge <4 x float> %wide.load556, zeroinitializer
  %110 = fcmp oge <4 x float> %wide.load557, zeroinitializer
  %111 = fneg <4 x float> %wide.load556
  %112 = fneg <4 x float> %wide.load557
  %113 = select <4 x i1> %109, <4 x float> %wide.load556, <4 x float> %111
  %114 = select <4 x i1> %110, <4 x float> %wide.load557, <4 x float> %112
  %115 = getelementptr float, ptr %12, i64 %index554
  %116 = getelementptr inbounds i8, ptr %115, i64 16
  store <4 x float> %113, ptr %115, align 4, !tbaa !9
  store <4 x float> %114, ptr %116, align 4, !tbaa !9
  %index.next558 = add nuw i64 %index554, 8
  %117 = icmp eq i64 %index.next558, %n.vec550
  br i1 %117, label %middle.block545, label %vector.body553, !llvm.loop !18

middle.block545:                                  ; preds = %vector.body553
  %cmp.n559 = icmp eq i64 %106, %n.vec550
  br i1 %cmp.n559, label %._crit_edge, label %.lr.ph.preheader579

.lr.ph.preheader579:                              ; preds = %middle.block545, %.lr.ph.preheader
  %.0359398.ph = phi i64 [ 1, %.lr.ph.preheader ], [ %ind.end551, %middle.block545 ]
  %xtraiter = and i64 %106, 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.preheader579
  %gep.prol = getelementptr float, ptr %invariant.gep, i64 %.0359398.ph
  %118 = load float, ptr %gep.prol, align 4, !tbaa !9
  %119 = fcmp oge float %118, 0.000000e+00
  %120 = fneg float %118
  %121 = select i1 %119, float %118, float %120
  %122 = getelementptr inbounds float, ptr %32, i64 %.0359398.ph
  store float %121, ptr %122, align 4, !tbaa !9
  %123 = add nuw i64 %.0359398.ph, 1
  br label %.lr.ph.prol.loopexit

.lr.ph.prol.loopexit:                             ; preds = %.lr.ph.prol, %.lr.ph.preheader579
  %.0359398.unr = phi i64 [ %.0359398.ph, %.lr.ph.preheader579 ], [ %123, %.lr.ph.prol ]
  %124 = icmp eq i64 %106, %.0359398.ph
  br i1 %124, label %._crit_edge, label %.lr.ph

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

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

.preheader391:                                    ; preds = %._crit_edge
  br i1 %.not375397, label %._crit_edge437, label %.lr.ph415.preheader

.lr.ph415.preheader:                              ; preds = %.preheader391
  %137 = add nuw i64 %106, 1
  br label %.lr.ph415

.preheader:                                       ; preds = %._crit_edge
  br i1 %.not375397, label %._crit_edge437, label %.lr.ph431

.lr.ph431:                                        ; preds = %.preheader
  %138 = add nuw i64 %106, 1
  br label %184

.lr.ph415:                                        ; preds = %.lr.ph415.preheader, %._crit_edge407
  %indvars.iv477 = phi i64 [ 1, %.lr.ph415.preheader ], [ %indvars.iv.next478, %._crit_edge407 ]
  %indvars.iv = phi i64 [ 2, %.lr.ph415.preheader ], [ %indvars.iv.next, %._crit_edge407 ]
  %.0349414 = phi i64 [ 1, %.lr.ph415.preheader ], [ %173, %._crit_edge407 ]
  %.0355413 = phi i64 [ 1, %.lr.ph415.preheader ], [ %183, %._crit_edge407 ]
  %gep409 = getelementptr float, ptr %invariant.gep408, i64 %.0355413
  %139 = load float, ptr %gep409, align 4, !tbaa !9
  %140 = fcmp oge float %139, 0.000000e+00
  %141 = fneg float %139
  %142 = select i1 %140, float %139, float %141
  %143 = fpext float %142 to double
  %.not385.not401 = icmp ugt i64 %.0355413, 1
  br i1 %.not385.not401, label %.lr.ph406, label %._crit_edge407

.lr.ph406:                                        ; preds = %.lr.ph415, %.lr.ph406
  %.0351404 = phi i64 [ %168, %.lr.ph406 ], [ %.0349414, %.lr.ph415 ]
  %.0353403 = phi float [ %167, %.lr.ph406 ], [ 0.000000e+00, %.lr.ph415 ]
  %.1360402 = phi i64 [ %169, %.lr.ph406 ], [ 1, %.lr.ph415 ]
  %144 = getelementptr inbounds float, ptr %23, i64 %.0351404
  %145 = load float, ptr %144, align 4, !tbaa !9
  %146 = fcmp oge float %145, 0.000000e+00
  %147 = fneg float %145
  %148 = select i1 %146, float %145, float %147
  %149 = fpext float %148 to double
  %150 = getelementptr inbounds float, ptr %32, i64 %.1360402
  %151 = load float, ptr %150, align 4, !tbaa !9
  %152 = fpext float %151 to double
  %153 = call double @llvm.fmuladd.f64(double %149, double %143, double %152)
  %154 = fptrunc double %153 to float
  store float %154, ptr %150, align 4, !tbaa !9
  %155 = load float, ptr %144, align 4, !tbaa !9
  %156 = fcmp oge float %155, 0.000000e+00
  %157 = fneg float %155
  %158 = select i1 %156, float %155, float %157
  %159 = fpext float %158 to double
  %gep400 = getelementptr float, ptr %invariant.gep408, i64 %.1360402
  %160 = load float, ptr %gep400, align 4, !tbaa !9
  %161 = fcmp oge float %160, 0.000000e+00
  %162 = fneg float %160
  %163 = select i1 %161, float %160, float %162
  %164 = fpext float %163 to double
  %165 = fpext float %.0353403 to double
  %166 = call double @llvm.fmuladd.f64(double %159, double %164, double %165)
  %167 = fptrunc double %166 to float
  %168 = add i64 %.0351404, 1
  %169 = add nuw nsw i64 %.1360402, 1
  %exitcond479.not = icmp eq i64 %168, %indvars.iv477
  br i1 %exitcond479.not, label %._crit_edge407, label %.lr.ph406, !llvm.loop !20

._crit_edge407:                                   ; preds = %.lr.ph406, %.lr.ph415
  %.0353.lcssa = phi float [ 0.000000e+00, %.lr.ph415 ], [ %167, %.lr.ph406 ]
  %170 = getelementptr inbounds float, ptr %32, i64 %.0355413
  %171 = load float, ptr %170, align 4, !tbaa !9
  %172 = fpext float %171 to double
  %173 = add nuw nsw i64 %.0349414, %.0355413
  %gep411 = getelementptr float, ptr %invariant.gep410, i64 %173
  %174 = load float, ptr %gep411, align 4, !tbaa !9
  %175 = fcmp oge float %174, 0.000000e+00
  %176 = fneg float %174
  %177 = select i1 %175, float %174, float %176
  %178 = fpext float %177 to double
  %179 = call double @llvm.fmuladd.f64(double %178, double %143, double %172)
  %180 = fpext float %.0353.lcssa to double
  %181 = fadd double %179, %180
  %182 = fptrunc double %181 to float
  store float %182, ptr %170, align 4, !tbaa !9
  %183 = add nuw nsw i64 %.0355413, 1
  %indvars.iv.next = add nuw i64 %indvars.iv, 1
  %indvars.iv.next478 = add i64 %indvars.iv477, %indvars.iv
  %exitcond480.not = icmp eq i64 %indvars.iv, %137
  br i1 %exitcond480.not, label %.loopexit390, label %.lr.ph415, !llvm.loop !21

184:                                              ; preds = %.lr.ph431, %._crit_edge424
  %.1350430 = phi i64 [ 1, %.lr.ph431 ], [ %230, %._crit_edge424 ]
  %.1356429 = phi i64 [ 1, %.lr.ph431 ], [ %201, %._crit_edge424 ]
  %gep427 = getelementptr float, ptr %invariant.gep408, i64 %.1356429
  %185 = load float, ptr %gep427, align 4, !tbaa !9
  %186 = fcmp oge float %185, 0.000000e+00
  %187 = fneg float %185
  %188 = select i1 %186, float %185, float %187
  %189 = fpext float %188 to double
  %190 = getelementptr inbounds float, ptr %23, i64 %.1350430
  %191 = load float, ptr %190, align 4, !tbaa !9
  %192 = fcmp oge float %191, 0.000000e+00
  %193 = fneg float %191
  %194 = select i1 %192, float %191, float %193
  %195 = fpext float %194 to double
  %196 = getelementptr inbounds float, ptr %32, i64 %.1356429
  %197 = load float, ptr %196, align 4, !tbaa !9
  %198 = fpext float %197 to double
  %199 = call double @llvm.fmuladd.f64(double %195, double %189, double %198)
  %200 = fptrunc double %199 to float
  store float %200, ptr %196, align 4, !tbaa !9
  %201 = add nuw i64 %.1356429, 1
  %.not377418.not = icmp slt i64 %.1356429, %106
  br i1 %.not377418.not, label %.lr.ph423, label %._crit_edge424

.lr.ph423:                                        ; preds = %184, %.lr.ph423
  %.1352.in421 = phi i64 [ %.1352, %.lr.ph423 ], [ %.1350430, %184 ]
  %.1354420 = phi float [ %225, %.lr.ph423 ], [ 0.000000e+00, %184 ]
  %.2361419 = phi i64 [ %226, %.lr.ph423 ], [ %201, %184 ]
  %.1352 = add nsw i64 %.1352.in421, 1
  %202 = getelementptr float, ptr %3, i64 %.1352.in421
  %203 = load float, ptr %202, align 4, !tbaa !9
  %204 = fcmp oge float %203, 0.000000e+00
  %205 = fneg float %203
  %206 = select i1 %204, float %203, float %205
  %207 = fpext float %206 to double
  %208 = getelementptr inbounds float, ptr %32, i64 %.2361419
  %209 = load float, ptr %208, align 4, !tbaa !9
  %210 = fpext float %209 to double
  %211 = call double @llvm.fmuladd.f64(double %207, double %189, double %210)
  %212 = fptrunc double %211 to float
  store float %212, ptr %208, align 4, !tbaa !9
  %213 = load float, ptr %202, align 4, !tbaa !9
  %214 = fcmp oge float %213, 0.000000e+00
  %215 = fneg float %213
  %216 = select i1 %214, float %213, float %215
  %217 = fpext float %216 to double
  %gep417 = getelementptr float, ptr %invariant.gep408, i64 %.2361419
  %218 = load float, ptr %gep417, align 4, !tbaa !9
  %219 = fcmp oge float %218, 0.000000e+00
  %220 = fneg float %218
  %221 = select i1 %219, float %218, float %220
  %222 = fpext float %221 to double
  %223 = fpext float %.1354420 to double
  %224 = call double @llvm.fmuladd.f64(double %217, double %222, double %223)
  %225 = fptrunc double %224 to float
  %226 = add nuw nsw i64 %.2361419, 1
  %.not377.not = icmp slt i64 %.2361419, %106
  br i1 %.not377.not, label %.lr.ph423, label %._crit_edge424.loopexit, !llvm.loop !22

._crit_edge424.loopexit:                          ; preds = %.lr.ph423
  %.pre = load float, ptr %196, align 4, !tbaa !9
  br label %._crit_edge424

._crit_edge424:                                   ; preds = %._crit_edge424.loopexit, %184
  %227 = phi float [ %200, %184 ], [ %.pre, %._crit_edge424.loopexit ]
  %.1354.lcssa = phi float [ 0.000000e+00, %184 ], [ %225, %._crit_edge424.loopexit ]
  %228 = fadd float %.1354.lcssa, %227
  store float %228, ptr %196, align 4, !tbaa !9
  %229 = sub i64 %138, %.1356429
  %230 = add nsw i64 %229, %.1350430
  %exitcond481.not = icmp eq i64 %.1356429, %106
  br i1 %exitcond481.not, label %.loopexit390, label %184, !llvm.loop !23

.loopexit390:                                     ; preds = %._crit_edge407, %._crit_edge424
  br i1 %.not375397, label %._crit_edge437, label %.lr.ph436

.lr.ph436:                                        ; preds = %.loopexit390
  %231 = getelementptr float, ptr %32, i64 %106
  br label %232

232:                                              ; preds = %.lr.ph436, %250
  %.2434 = phi float [ 0.000000e+00, %.lr.ph436 ], [ %252, %250 ]
  %.3362433 = phi i64 [ 1, %.lr.ph436 ], [ %253, %250 ]
  %233 = getelementptr inbounds float, ptr %32, i64 %.3362433
  %234 = load float, ptr %233, align 4, !tbaa !9
  %235 = fcmp ogt float %234, %88
  %236 = getelementptr float, ptr %231, i64 %.3362433
  %237 = load float, ptr %236, align 4, !tbaa !9
  %238 = fcmp oge float %237, 0.000000e+00
  %239 = fneg float %237
  %240 = select i1 %238, float %237, float %239
  br i1 %235, label %241, label %243

241:                                              ; preds = %232
  %242 = fdiv float %240, %234
  br label %250

243:                                              ; preds = %232
  %244 = fpext float %240 to double
  %245 = fadd double %90, %244
  %246 = fadd float %87, %234
  %247 = fpext float %246 to double
  %248 = fdiv double %245, %247
  %249 = fptrunc double %248 to float
  br label %250

250:                                              ; preds = %241, %243
  %.sink499 = phi float [ %242, %241 ], [ %249, %243 ]
  %251 = fcmp oge float %.2434, %.sink499
  %252 = select i1 %251, float %.2434, float %.sink499
  %253 = add nuw i64 %.3362433, 1
  %exitcond482.not = icmp eq i64 %.3362433, %106
  br i1 %exitcond482.not, label %._crit_edge437, label %232, !llvm.loop !24

._crit_edge437:                                   ; preds = %250, %99, %.preheader, %.preheader391, %.loopexit390
  %.2.lcssa = phi float [ 0.000000e+00, %.loopexit390 ], [ 0.000000e+00, %.preheader391 ], [ 0.000000e+00, %.preheader ], [ 0.000000e+00, %99 ], [ %252, %250 ]
  store float %.2.lcssa, ptr %96, align 4, !tbaa !9
  %254 = fcmp ogt float %.2.lcssa, %83
  br i1 %254, label %255, label %267

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

259:                                              ; preds = %255
  %260 = getelementptr float, ptr %12, i64 %106
  %261 = call i32 @ssptrs_(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef %5, ptr noundef %260, ptr noundef nonnull %1, ptr noundef nonnull %14) #5
  %262 = load i64, ptr %1, align 8, !tbaa !5
  %263 = getelementptr float, ptr %12, i64 %262
  %264 = call i32 @f2c_saxpy(ptr noundef nonnull %1, ptr noundef nonnull @c_b14, ptr noundef %263, ptr noundef nonnull @c__1, ptr noundef %gep440, ptr noundef nonnull @c__1) #5
  %265 = load float, ptr %96, align 4, !tbaa !9
  %266 = add nuw nsw i64 %.0348, 1
  br label %99

267:                                              ; preds = %255, %._crit_edge437
  br i1 %.not375397, label %._crit_edge445, label %.lr.ph444

.lr.ph444:                                        ; preds = %267
  %268 = getelementptr float, ptr %32, i64 %106
  %min.iters.check528 = icmp ult i64 %106, 4
  br i1 %min.iters.check528, label %scalar.ph527.preheader, label %vector.ph529

vector.ph529:                                     ; preds = %.lr.ph444
  %n.vec531 = and i64 %106, 9223372036854775804
  %ind.end532 = or disjoint i64 %n.vec531, 1
  br label %vector.body534

vector.body534:                                   ; preds = %vector.body534, %vector.ph529
  %index535 = phi i64 [ 0, %vector.ph529 ], [ %index.next543, %vector.body534 ]
  %offset.idx536 = or disjoint i64 %index535, 1
  %269 = getelementptr float, ptr %12, i64 %index535
  %wide.load537 = load <4 x float>, ptr %269, align 4, !tbaa !9
  %270 = fcmp ogt <4 x float> %wide.load537, %broadcast.splat
  %271 = getelementptr float, ptr %268, i64 %offset.idx536
  %wide.load538 = load <4 x float>, ptr %271, align 4, !tbaa !9
  %272 = fcmp oge <4 x float> %wide.load538, zeroinitializer
  %273 = fneg <4 x float> %wide.load538
  %274 = select <4 x i1> %272, <4 x float> %wide.load538, <4 x float> %273
  %275 = fpext <4 x float> %274 to <4 x double>
  %276 = fmul <4 x float> %broadcast.splat540, %wide.load537
  %277 = fpext <4 x float> %276 to <4 x double>
  %278 = fadd <4 x double> %277, %275
  %279 = fadd <4 x double> %278, %broadcast.splat542
  %280 = select <4 x i1> %270, <4 x double> %278, <4 x double> %279
  %281 = fptrunc <4 x double> %280 to <4 x float>
  store <4 x float> %281, ptr %269, align 4, !tbaa !9
  %index.next543 = add nuw i64 %index535, 4
  %282 = icmp eq i64 %index.next543, %n.vec531
  br i1 %282, label %middle.block526, label %vector.body534, !llvm.loop !25

middle.block526:                                  ; preds = %vector.body534
  %cmp.n544 = icmp eq i64 %106, %n.vec531
  br i1 %cmp.n544, label %._crit_edge445, label %scalar.ph527.preheader

scalar.ph527.preheader:                           ; preds = %middle.block526, %.lr.ph444
  %.4442.ph = phi i64 [ 1, %.lr.ph444 ], [ %ind.end532, %middle.block526 ]
  br label %scalar.ph527

scalar.ph527:                                     ; preds = %scalar.ph527.preheader, %scalar.ph527
  %.4442 = phi i64 [ %296, %scalar.ph527 ], [ %.4442.ph, %scalar.ph527.preheader ]
  %283 = getelementptr inbounds float, ptr %32, i64 %.4442
  %284 = load float, ptr %283, align 4, !tbaa !9
  %285 = fcmp ogt float %284, %88
  %286 = getelementptr float, ptr %268, i64 %.4442
  %287 = load float, ptr %286, align 4, !tbaa !9
  %288 = fcmp oge float %287, 0.000000e+00
  %289 = fneg float %287
  %290 = select i1 %288, float %287, float %289
  %291 = fpext float %290 to double
  %292 = fmul float %91, %284
  %293 = fpext float %292 to double
  %294 = fadd double %293, %291
  %295 = fadd double %294, %90
  %storemerge.in = select i1 %285, double %294, double %295
  %storemerge = fptrunc double %storemerge.in to float
  store float %storemerge, ptr %283, align 4, !tbaa !9
  %296 = add nuw i64 %.4442, 1
  %exitcond483.not = icmp eq i64 %.4442, %106
  br i1 %exitcond483.not, label %._crit_edge445, label %scalar.ph527, !llvm.loop !26

._crit_edge445:                                   ; preds = %scalar.ph527, %middle.block526, %267
  store i64 0, ptr %21, align 8, !tbaa !5
  %297 = getelementptr inbounds float, ptr %30, i64 %.1358467
  br label %298

298:                                              ; preds = %.loopexit389, %._crit_edge445
  %299 = phi i64 [ %.pre488, %.loopexit389 ], [ %106, %._crit_edge445 ]
  %.idx = shl i64 %299, 3
  %300 = getelementptr i8, ptr %12, i64 %.idx
  %301 = getelementptr float, ptr %12, i64 %299
  %302 = call i32 @slacn2_(ptr noundef nonnull %1, ptr noundef %300, ptr noundef %301, ptr noundef %13, ptr noundef nonnull %297, ptr noundef nonnull %21, ptr noundef nonnull %22) #5
  %303 = load i64, ptr %21, align 8, !tbaa !5
  switch i64 %303, label %.loopexit389 [
    i64 0, label %341
    i64 1, label %304
    i64 2, label %323
  ]

304:                                              ; preds = %298
  %305 = load i64, ptr %1, align 8, !tbaa !5
  %306 = getelementptr float, ptr %12, i64 %305
  %307 = call i32 @ssptrs_(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef %5, ptr noundef %306, ptr noundef nonnull %1, ptr noundef nonnull %14) #5
  %308 = load i64, ptr %1, align 8, !tbaa !5
  %.not384451 = icmp slt i64 %308, 1
  br i1 %.not384451, label %.loopexit389, label %.lr.ph454

.lr.ph454:                                        ; preds = %304
  %309 = getelementptr float, ptr %32, i64 %308
  %min.iters.check = icmp ult i64 %308, 8
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph454
  %n.vec = and i64 %308, 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
  %310 = getelementptr float, ptr %12, i64 %index
  %311 = getelementptr inbounds i8, ptr %310, i64 16
  %wide.load = load <4 x float>, ptr %310, align 4, !tbaa !9
  %wide.load506 = load <4 x float>, ptr %311, align 4, !tbaa !9
  %312 = getelementptr float, ptr %309, i64 %offset.idx
  %313 = getelementptr i8, ptr %312, i64 16
  %wide.load507 = load <4 x float>, ptr %312, align 4, !tbaa !9
  %wide.load508 = load <4 x float>, ptr %313, align 4, !tbaa !9
  %314 = fmul <4 x float> %wide.load, %wide.load507
  %315 = fmul <4 x float> %wide.load506, %wide.load508
  store <4 x float> %314, ptr %312, align 4, !tbaa !9
  store <4 x float> %315, ptr %313, align 4, !tbaa !9
  %index.next = add nuw i64 %index, 8
  %316 = icmp eq i64 %index.next, %n.vec
  br i1 %316, label %middle.block, label %vector.body, !llvm.loop !27

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

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

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %.5452 = phi i64 [ %322, %scalar.ph ], [ %.5452.ph, %scalar.ph.preheader ]
  %317 = getelementptr inbounds float, ptr %32, i64 %.5452
  %318 = load float, ptr %317, align 4, !tbaa !9
  %319 = getelementptr float, ptr %309, i64 %.5452
  %320 = load float, ptr %319, align 4, !tbaa !9
  %321 = fmul float %318, %320
  store float %321, ptr %319, align 4, !tbaa !9
  %322 = add nuw i64 %.5452, 1
  %exitcond485.not = icmp eq i64 %.5452, %308
  br i1 %exitcond485.not, label %.loopexit389, label %scalar.ph, !llvm.loop !28

323:                                              ; preds = %298
  %324 = load i64, ptr %1, align 8, !tbaa !5
  %.not383446 = icmp slt i64 %324, 1
  br i1 %.not383446, label %._crit_edge450, label %.lr.ph449

.lr.ph449:                                        ; preds = %323
  %325 = getelementptr float, ptr %32, i64 %324
  %min.iters.check511 = icmp ult i64 %324, 8
  br i1 %min.iters.check511, label %scalar.ph510.preheader, label %vector.ph512

vector.ph512:                                     ; preds = %.lr.ph449
  %n.vec514 = and i64 %324, 9223372036854775800
  %ind.end515 = or disjoint i64 %n.vec514, 1
  br label %vector.body517

vector.body517:                                   ; preds = %vector.body517, %vector.ph512
  %index518 = phi i64 [ 0, %vector.ph512 ], [ %index.next524, %vector.body517 ]
  %offset.idx519 = or disjoint i64 %index518, 1
  %326 = getelementptr float, ptr %12, i64 %index518
  %327 = getelementptr inbounds i8, ptr %326, i64 16
  %wide.load520 = load <4 x float>, ptr %326, align 4, !tbaa !9
  %wide.load521 = load <4 x float>, ptr %327, align 4, !tbaa !9
  %328 = getelementptr float, ptr %325, i64 %offset.idx519
  %329 = getelementptr i8, ptr %328, i64 16
  %wide.load522 = load <4 x float>, ptr %328, align 4, !tbaa !9
  %wide.load523 = load <4 x float>, ptr %329, align 4, !tbaa !9
  %330 = fmul <4 x float> %wide.load520, %wide.load522
  %331 = fmul <4 x float> %wide.load521, %wide.load523
  store <4 x float> %330, ptr %328, align 4, !tbaa !9
  store <4 x float> %331, ptr %329, align 4, !tbaa !9
  %index.next524 = add nuw i64 %index518, 8
  %332 = icmp eq i64 %index.next524, %n.vec514
  br i1 %332, label %middle.block509, label %vector.body517, !llvm.loop !29

middle.block509:                                  ; preds = %vector.body517
  %cmp.n525 = icmp eq i64 %324, %n.vec514
  br i1 %cmp.n525, label %._crit_edge450, label %scalar.ph510.preheader

scalar.ph510.preheader:                           ; preds = %middle.block509, %.lr.ph449
  %.6447.ph = phi i64 [ 1, %.lr.ph449 ], [ %ind.end515, %middle.block509 ]
  br label %scalar.ph510

scalar.ph510:                                     ; preds = %scalar.ph510.preheader, %scalar.ph510
  %.6447 = phi i64 [ %338, %scalar.ph510 ], [ %.6447.ph, %scalar.ph510.preheader ]
  %333 = getelementptr inbounds float, ptr %32, i64 %.6447
  %334 = load float, ptr %333, align 4, !tbaa !9
  %335 = getelementptr float, ptr %325, i64 %.6447
  %336 = load float, ptr %335, align 4, !tbaa !9
  %337 = fmul float %334, %336
  store float %337, ptr %335, align 4, !tbaa !9
  %338 = add nuw i64 %.6447, 1
  %exitcond484.not = icmp eq i64 %.6447, %324
  br i1 %exitcond484.not, label %._crit_edge450, label %scalar.ph510, !llvm.loop !30

._crit_edge450:                                   ; preds = %scalar.ph510, %middle.block509, %323
  %339 = getelementptr float, ptr %12, i64 %324
  %340 = call i32 @ssptrs_(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef %5, ptr noundef %339, ptr noundef nonnull %1, ptr noundef nonnull %14) #5
  br label %.loopexit389

.loopexit389:                                     ; preds = %scalar.ph, %middle.block, %304, %298, %._crit_edge450
  %.pre488 = load i64, ptr %1, align 8, !tbaa !5
  br label %298

341:                                              ; preds = %298
  %342 = load i64, ptr %1, align 8, !tbaa !5
  %.not382457 = icmp slt i64 %342, 1
  br i1 %.not382457, label %._crit_edge462.thread, label %.lr.ph461.preheader

.lr.ph461.preheader:                              ; preds = %341
  %xtraiter585 = and i64 %342, 1
  %343 = icmp eq i64 %342, 1
  br i1 %343, label %._crit_edge462.unr-lcssa, label %.lr.ph461.preheader.new

.lr.ph461.preheader.new:                          ; preds = %.lr.ph461.preheader
  %unroll_iter = and i64 %342, 9223372036854775806
  %invariant.gep596 = getelementptr i8, ptr %invariant.gep408, i64 4
  br label %.lr.ph461

.lr.ph461:                                        ; preds = %.lr.ph461, %.lr.ph461.preheader.new
  %.1459 = phi float [ 0.000000e+00, %.lr.ph461.preheader.new ], [ %355, %.lr.ph461 ]
  %.7458 = phi i64 [ 1, %.lr.ph461.preheader.new ], [ %356, %.lr.ph461 ]
  %niter = phi i64 [ 0, %.lr.ph461.preheader.new ], [ %niter.next.1, %.lr.ph461 ]
  %gep456 = getelementptr float, ptr %invariant.gep408, i64 %.7458
  %344 = load float, ptr %gep456, align 4, !tbaa !9
  %345 = fcmp oge float %344, 0.000000e+00
  %346 = fneg float %344
  %347 = select i1 %345, float %344, float %346
  %348 = fcmp oge float %.1459, %347
  %349 = select i1 %348, float %.1459, float %347
  %gep597 = getelementptr float, ptr %invariant.gep596, i64 %.7458
  %350 = load float, ptr %gep597, align 4, !tbaa !9
  %351 = fcmp oge float %350, 0.000000e+00
  %352 = fneg float %350
  %353 = select i1 %351, float %350, float %352
  %354 = fcmp oge float %349, %353
  %355 = select i1 %354, float %349, float %353
  %356 = add nuw i64 %.7458, 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_edge462.unr-lcssa, label %.lr.ph461, !llvm.loop !31

._crit_edge462.unr-lcssa:                         ; preds = %.lr.ph461, %.lr.ph461.preheader
  %.lcssa584.ph = phi float [ poison, %.lr.ph461.preheader ], [ %355, %.lr.ph461 ]
  %.1459.unr = phi float [ 0.000000e+00, %.lr.ph461.preheader ], [ %355, %.lr.ph461 ]
  %.7458.unr = phi i64 [ 1, %.lr.ph461.preheader ], [ %356, %.lr.ph461 ]
  %lcmp.mod586.not = icmp eq i64 %xtraiter585, 0
  br i1 %lcmp.mod586.not, label %._crit_edge462, label %.lr.ph461.epil

.lr.ph461.epil:                                   ; preds = %._crit_edge462.unr-lcssa
  %gep456.epil = getelementptr float, ptr %invariant.gep408, i64 %.7458.unr
  %357 = load float, ptr %gep456.epil, align 4, !tbaa !9
  %358 = fcmp oge float %357, 0.000000e+00
  %359 = fneg float %357
  %360 = select i1 %358, float %357, float %359
  %361 = fcmp oge float %.1459.unr, %360
  %362 = select i1 %361, float %.1459.unr, float %360
  br label %._crit_edge462

._crit_edge462:                                   ; preds = %._crit_edge462.unr-lcssa, %.lr.ph461.epil
  %.lcssa584 = phi float [ %.lcssa584.ph, %._crit_edge462.unr-lcssa ], [ %362, %.lr.ph461.epil ]
  %363 = fcmp une float %.lcssa584, 0.000000e+00
  br i1 %363, label %364, label %._crit_edge462.thread

364:                                              ; preds = %._crit_edge462
  %365 = load float, ptr %297, align 4, !tbaa !9
  %366 = fdiv float %365, %.lcssa584
  store float %366, ptr %297, align 4, !tbaa !9
  br label %._crit_edge462.thread

._crit_edge462.thread:                            ; preds = %341, %._crit_edge462, %364
  %367 = add nuw nsw i64 %.1358467, 1
  %.not374.not = icmp slt i64 %.1358467, %89
  %indvar.next = add i64 %indvar, 1
  br i1 %.not374.not, label %.preheader393, label %.loopexit, !llvm.loop !32

.loopexit:                                        ; preds = %._crit_edge462.thread, %.lr.ph471.prol.loopexit, %.lr.ph471, %middle.block562, %54, %80, %55, %.thread
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #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 @ssptrs_(ptr noundef, 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