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

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

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [13 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.5 = external hidden unnamed_addr constant [10 x i8], align 1

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

73:                                               ; preds = %13
  %74 = load ptr, ptr %15, align 8, !tbaa !5
  %75 = call i64 @lsame_(ptr noundef %74, ptr noundef @.str.1)
  %76 = icmp ne i64 %75, 0
  br i1 %76, label %83, label %77

77:                                               ; preds = %73
  %78 = load ptr, ptr %15, align 8, !tbaa !5
  %79 = call i64 @lsame_(ptr noundef %78, ptr noundef @.str.2)
  %80 = icmp ne i64 %79, 0
  br i1 %80, label %83, label %81

81:                                               ; preds = %77
  %82 = load ptr, ptr %24, align 8, !tbaa !5
  store i64 -1, ptr %82, align 8, !tbaa !9
  br label %122

83:                                               ; preds = %77, %73, %13
  %84 = load ptr, ptr %16, align 8, !tbaa !5
  %85 = load i64, ptr %84, align 8, !tbaa !9
  %86 = icmp slt i64 %85, 0
  br i1 %86, label %87, label %89

87:                                               ; preds = %83
  %88 = load ptr, ptr %24, align 8, !tbaa !5
  store i64 -2, ptr %88, align 8, !tbaa !9
  br label %121

89:                                               ; preds = %83
  %90 = load ptr, ptr %18, align 8, !tbaa !5
  %91 = load i64, ptr %90, align 8, !tbaa !9
  %92 = load ptr, ptr %16, align 8, !tbaa !5
  %93 = load i64, ptr %92, align 8, !tbaa !9
  %94 = icmp sge i64 1, %93
  br i1 %94, label %95, label %96

95:                                               ; preds = %89
  br label %99

96:                                               ; preds = %89
  %97 = load ptr, ptr %16, align 8, !tbaa !5
  %98 = load i64, ptr %97, align 8, !tbaa !9
  br label %99

99:                                               ; preds = %96, %95
  %100 = phi i64 [ 1, %95 ], [ %98, %96 ]
  %101 = icmp slt i64 %91, %100
  br i1 %101, label %102, label %104

102:                                              ; preds = %99
  %103 = load ptr, ptr %24, align 8, !tbaa !5
  store i64 -4, ptr %103, align 8, !tbaa !9
  br label %120

104:                                              ; preds = %99
  %105 = load ptr, ptr %20, align 8, !tbaa !5
  %106 = load i64, ptr %105, align 8, !tbaa !9
  %107 = load ptr, ptr %16, align 8, !tbaa !5
  %108 = load i64, ptr %107, align 8, !tbaa !9
  %109 = icmp sge i64 1, %108
  br i1 %109, label %110, label %111

110:                                              ; preds = %104
  br label %114

111:                                              ; preds = %104
  %112 = load ptr, ptr %16, align 8, !tbaa !5
  %113 = load i64, ptr %112, align 8, !tbaa !9
  br label %114

114:                                              ; preds = %111, %110
  %115 = phi i64 [ 1, %110 ], [ %113, %111 ]
  %116 = icmp slt i64 %106, %115
  br i1 %116, label %117, label %119

117:                                              ; preds = %114
  %118 = load ptr, ptr %24, align 8, !tbaa !5
  store i64 -6, ptr %118, align 8, !tbaa !9
  br label %119

119:                                              ; preds = %117, %114
  br label %120

120:                                              ; preds = %119, %102
  br label %121

121:                                              ; preds = %120, %87
  br label %122

122:                                              ; preds = %121, %81
  %123 = load ptr, ptr %24, align 8, !tbaa !5
  %124 = load i64, ptr %123, align 8, !tbaa !9
  %125 = icmp ne i64 %124, 0
  br i1 %125, label %126, label %133

126:                                              ; preds = %122
  %127 = load ptr, ptr %24, align 8, !tbaa !5
  %128 = load i64, ptr %127, align 8, !tbaa !9
  %129 = sub nsw i64 0, %128
  store i64 %129, ptr %32, align 8, !tbaa !9
  %130 = call i32 @xerbla_(ptr noundef @.str.3, ptr noundef %32)
  %131 = load float, ptr %34, align 4, !tbaa !11
  %132 = fpext float %131 to double
  store double %132, ptr %14, align 8
  store i32 1, ptr %43, align 4
  br label %664

133:                                              ; preds = %122
  %134 = load ptr, ptr %16, align 8, !tbaa !5
  %135 = load i64, ptr %134, align 8, !tbaa !9
  %136 = icmp eq i64 %135, 0
  br i1 %136, label %137, label %140

137:                                              ; preds = %133
  store float 1.000000e+00, ptr %34, align 4, !tbaa !11
  %138 = load float, ptr %34, align 4, !tbaa !11
  %139 = fpext float %138 to double
  store double %139, ptr %14, align 8
  store i32 1, ptr %43, align 4
  br label %664

140:                                              ; preds = %133
  %141 = load i64, ptr %42, align 8, !tbaa !9
  %142 = icmp ne i64 %141, 0
  br i1 %142, label %143, label %284

143:                                              ; preds = %140
  %144 = load ptr, ptr %16, align 8, !tbaa !5
  %145 = load i64, ptr %144, align 8, !tbaa !9
  store i64 %145, ptr %32, align 8, !tbaa !9
  store i64 1, ptr %36, align 8, !tbaa !9
  br label %146

146:                                              ; preds = %280, %143
  %147 = load i64, ptr %36, align 8, !tbaa !9
  %148 = load i64, ptr %32, align 8, !tbaa !9
  %149 = icmp sle i64 %147, %148
  br i1 %149, label %150, label %283

150:                                              ; preds = %146
  store float 0.000000e+00, ptr %38, align 4, !tbaa !11
  %151 = load ptr, ptr %22, align 8, !tbaa !5
  %152 = load i64, ptr %151, align 8, !tbaa !9
  %153 = icmp eq i64 %152, 1
  br i1 %153, label %154, label %193

154:                                              ; preds = %150
  %155 = load ptr, ptr %16, align 8, !tbaa !5
  %156 = load i64, ptr %155, align 8, !tbaa !9
  store i64 %156, ptr %33, align 8, !tbaa !9
  store i64 1, ptr %37, align 8, !tbaa !9
  br label %157

157:                                              ; preds = %189, %154
  %158 = load i64, ptr %37, align 8, !tbaa !9
  %159 = load i64, ptr %33, align 8, !tbaa !9
  %160 = icmp sle i64 %158, %159
  br i1 %160, label %161, label %192

161:                                              ; preds = %157
  %162 = load ptr, ptr %17, align 8, !tbaa !5
  %163 = load i64, ptr %36, align 8, !tbaa !9
  %164 = load i64, ptr %37, align 8, !tbaa !9
  %165 = load i64, ptr %28, align 8, !tbaa !9
  %166 = mul nsw i64 %164, %165
  %167 = add nsw i64 %163, %166
  %168 = getelementptr inbounds float, ptr %162, i64 %167
  %169 = load float, ptr %168, align 4, !tbaa !11
  %170 = load ptr, ptr %23, align 8, !tbaa !5
  %171 = load i64, ptr %37, align 8, !tbaa !9
  %172 = getelementptr inbounds float, ptr %170, i64 %171
  %173 = load float, ptr %172, align 4, !tbaa !11
  %174 = fmul float %169, %173
  store float %174, ptr %35, align 4, !tbaa !11
  %175 = load float, ptr %35, align 4, !tbaa !11
  %176 = fcmp oge float %175, 0.000000e+00
  br i1 %176, label %177, label %179

177:                                              ; preds = %161
  %178 = load float, ptr %35, align 4, !tbaa !11
  br label %182

179:                                              ; preds = %161
  %180 = load float, ptr %35, align 4, !tbaa !11
  %181 = fneg float %180
  br label %182

182:                                              ; preds = %179, %177
  %183 = phi float [ %178, %177 ], [ %181, %179 ]
  %184 = fpext float %183 to double
  %185 = load float, ptr %38, align 4, !tbaa !11
  %186 = fpext float %185 to double
  %187 = fadd double %186, %184
  %188 = fptrunc double %187 to float
  store float %188, ptr %38, align 4, !tbaa !11
  br label %189

189:                                              ; preds = %182
  %190 = load i64, ptr %37, align 8, !tbaa !9
  %191 = add nsw i64 %190, 1
  store i64 %191, ptr %37, align 8, !tbaa !9
  br label %157, !llvm.loop !13

192:                                              ; preds = %157
  br label %271

193:                                              ; preds = %150
  %194 = load ptr, ptr %22, align 8, !tbaa !5
  %195 = load i64, ptr %194, align 8, !tbaa !9
  %196 = icmp eq i64 %195, 0
  br i1 %196, label %197, label %231

197:                                              ; preds = %193
  %198 = load ptr, ptr %16, align 8, !tbaa !5
  %199 = load i64, ptr %198, align 8, !tbaa !9
  store i64 %199, ptr %33, align 8, !tbaa !9
  store i64 1, ptr %37, align 8, !tbaa !9
  br label %200

200:                                              ; preds = %227, %197
  %201 = load i64, ptr %37, align 8, !tbaa !9
  %202 = load i64, ptr %33, align 8, !tbaa !9
  %203 = icmp sle i64 %201, %202
  br i1 %203, label %204, label %230

204:                                              ; preds = %200
  %205 = load ptr, ptr %17, align 8, !tbaa !5
  %206 = load i64, ptr %36, align 8, !tbaa !9
  %207 = load i64, ptr %37, align 8, !tbaa !9
  %208 = load i64, ptr %28, align 8, !tbaa !9
  %209 = mul nsw i64 %207, %208
  %210 = add nsw i64 %206, %209
  %211 = getelementptr inbounds float, ptr %205, i64 %210
  %212 = load float, ptr %211, align 4, !tbaa !11
  store float %212, ptr %35, align 4, !tbaa !11
  %213 = load float, ptr %35, align 4, !tbaa !11
  %214 = fcmp oge float %213, 0.000000e+00
  br i1 %214, label %215, label %217

215:                                              ; preds = %204
  %216 = load float, ptr %35, align 4, !tbaa !11
  br label %220

217:                                              ; preds = %204
  %218 = load float, ptr %35, align 4, !tbaa !11
  %219 = fneg float %218
  br label %220

220:                                              ; preds = %217, %215
  %221 = phi float [ %216, %215 ], [ %219, %217 ]
  %222 = fpext float %221 to double
  %223 = load float, ptr %38, align 4, !tbaa !11
  %224 = fpext float %223 to double
  %225 = fadd double %224, %222
  %226 = fptrunc double %225 to float
  store float %226, ptr %38, align 4, !tbaa !11
  br label %227

227:                                              ; preds = %220
  %228 = load i64, ptr %37, align 8, !tbaa !9
  %229 = add nsw i64 %228, 1
  store i64 %229, ptr %37, align 8, !tbaa !9
  br label %200, !llvm.loop !15

230:                                              ; preds = %200
  br label %270

231:                                              ; preds = %193
  %232 = load ptr, ptr %16, align 8, !tbaa !5
  %233 = load i64, ptr %232, align 8, !tbaa !9
  store i64 %233, ptr %33, align 8, !tbaa !9
  store i64 1, ptr %37, align 8, !tbaa !9
  br label %234

234:                                              ; preds = %266, %231
  %235 = load i64, ptr %37, align 8, !tbaa !9
  %236 = load i64, ptr %33, align 8, !tbaa !9
  %237 = icmp sle i64 %235, %236
  br i1 %237, label %238, label %269

238:                                              ; preds = %234
  %239 = load ptr, ptr %17, align 8, !tbaa !5
  %240 = load i64, ptr %36, align 8, !tbaa !9
  %241 = load i64, ptr %37, align 8, !tbaa !9
  %242 = load i64, ptr %28, align 8, !tbaa !9
  %243 = mul nsw i64 %241, %242
  %244 = add nsw i64 %240, %243
  %245 = getelementptr inbounds float, ptr %239, i64 %244
  %246 = load float, ptr %245, align 4, !tbaa !11
  %247 = load ptr, ptr %23, align 8, !tbaa !5
  %248 = load i64, ptr %37, align 8, !tbaa !9
  %249 = getelementptr inbounds float, ptr %247, i64 %248
  %250 = load float, ptr %249, align 4, !tbaa !11
  %251 = fdiv float %246, %250
  store float %251, ptr %35, align 4, !tbaa !11
  %252 = load float, ptr %35, align 4, !tbaa !11
  %253 = fcmp oge float %252, 0.000000e+00
  br i1 %253, label %254, label %256

254:                                              ; preds = %238
  %255 = load float, ptr %35, align 4, !tbaa !11
  br label %259

256:                                              ; preds = %238
  %257 = load float, ptr %35, align 4, !tbaa !11
  %258 = fneg float %257
  br label %259

259:                                              ; preds = %256, %254
  %260 = phi float [ %255, %254 ], [ %258, %256 ]
  %261 = fpext float %260 to double
  %262 = load float, ptr %38, align 4, !tbaa !11
  %263 = fpext float %262 to double
  %264 = fadd double %263, %261
  %265 = fptrunc double %264 to float
  store float %265, ptr %38, align 4, !tbaa !11
  br label %266

266:                                              ; preds = %259
  %267 = load i64, ptr %37, align 8, !tbaa !9
  %268 = add nsw i64 %267, 1
  store i64 %268, ptr %37, align 8, !tbaa !9
  br label %234, !llvm.loop !16

269:                                              ; preds = %234
  br label %270

270:                                              ; preds = %269, %230
  br label %271

271:                                              ; preds = %270, %192
  %272 = load float, ptr %38, align 4, !tbaa !11
  %273 = load ptr, ptr %25, align 8, !tbaa !5
  %274 = load ptr, ptr %16, align 8, !tbaa !5
  %275 = load i64, ptr %274, align 8, !tbaa !9
  %276 = shl i64 %275, 1
  %277 = load i64, ptr %36, align 8, !tbaa !9
  %278 = add nsw i64 %276, %277
  %279 = getelementptr inbounds float, ptr %273, i64 %278
  store float %272, ptr %279, align 4, !tbaa !11
  br label %280

280:                                              ; preds = %271
  %281 = load i64, ptr %36, align 8, !tbaa !9
  %282 = add nsw i64 %281, 1
  store i64 %282, ptr %36, align 8, !tbaa !9
  br label %146, !llvm.loop !17

283:                                              ; preds = %146
  br label %425

284:                                              ; preds = %140
  %285 = load ptr, ptr %16, align 8, !tbaa !5
  %286 = load i64, ptr %285, align 8, !tbaa !9
  store i64 %286, ptr %32, align 8, !tbaa !9
  store i64 1, ptr %36, align 8, !tbaa !9
  br label %287

287:                                              ; preds = %421, %284
  %288 = load i64, ptr %36, align 8, !tbaa !9
  %289 = load i64, ptr %32, align 8, !tbaa !9
  %290 = icmp sle i64 %288, %289
  br i1 %290, label %291, label %424

291:                                              ; preds = %287
  store float 0.000000e+00, ptr %38, align 4, !tbaa !11
  %292 = load ptr, ptr %22, align 8, !tbaa !5
  %293 = load i64, ptr %292, align 8, !tbaa !9
  %294 = icmp eq i64 %293, 1
  br i1 %294, label %295, label %334

295:                                              ; preds = %291
  %296 = load ptr, ptr %16, align 8, !tbaa !5
  %297 = load i64, ptr %296, align 8, !tbaa !9
  store i64 %297, ptr %33, align 8, !tbaa !9
  store i64 1, ptr %37, align 8, !tbaa !9
  br label %298

298:                                              ; preds = %330, %295
  %299 = load i64, ptr %37, align 8, !tbaa !9
  %300 = load i64, ptr %33, align 8, !tbaa !9
  %301 = icmp sle i64 %299, %300
  br i1 %301, label %302, label %333

302:                                              ; preds = %298
  %303 = load ptr, ptr %17, align 8, !tbaa !5
  %304 = load i64, ptr %37, align 8, !tbaa !9
  %305 = load i64, ptr %36, align 8, !tbaa !9
  %306 = load i64, ptr %28, align 8, !tbaa !9
  %307 = mul nsw i64 %305, %306
  %308 = add nsw i64 %304, %307
  %309 = getelementptr inbounds float, ptr %303, i64 %308
  %310 = load float, ptr %309, align 4, !tbaa !11
  %311 = load ptr, ptr %23, align 8, !tbaa !5
  %312 = load i64, ptr %37, align 8, !tbaa !9
  %313 = getelementptr inbounds float, ptr %311, i64 %312
  %314 = load float, ptr %313, align 4, !tbaa !11
  %315 = fmul float %310, %314
  store float %315, ptr %35, align 4, !tbaa !11
  %316 = load float, ptr %35, align 4, !tbaa !11
  %317 = fcmp oge float %316, 0.000000e+00
  br i1 %317, label %318, label %320

318:                                              ; preds = %302
  %319 = load float, ptr %35, align 4, !tbaa !11
  br label %323

320:                                              ; preds = %302
  %321 = load float, ptr %35, align 4, !tbaa !11
  %322 = fneg float %321
  br label %323

323:                                              ; preds = %320, %318
  %324 = phi float [ %319, %318 ], [ %322, %320 ]
  %325 = fpext float %324 to double
  %326 = load float, ptr %38, align 4, !tbaa !11
  %327 = fpext float %326 to double
  %328 = fadd double %327, %325
  %329 = fptrunc double %328 to float
  store float %329, ptr %38, align 4, !tbaa !11
  br label %330

330:                                              ; preds = %323
  %331 = load i64, ptr %37, align 8, !tbaa !9
  %332 = add nsw i64 %331, 1
  store i64 %332, ptr %37, align 8, !tbaa !9
  br label %298, !llvm.loop !18

333:                                              ; preds = %298
  br label %412

334:                                              ; preds = %291
  %335 = load ptr, ptr %22, align 8, !tbaa !5
  %336 = load i64, ptr %335, align 8, !tbaa !9
  %337 = icmp eq i64 %336, 0
  br i1 %337, label %338, label %372

338:                                              ; preds = %334
  %339 = load ptr, ptr %16, align 8, !tbaa !5
  %340 = load i64, ptr %339, align 8, !tbaa !9
  store i64 %340, ptr %33, align 8, !tbaa !9
  store i64 1, ptr %37, align 8, !tbaa !9
  br label %341

341:                                              ; preds = %368, %338
  %342 = load i64, ptr %37, align 8, !tbaa !9
  %343 = load i64, ptr %33, align 8, !tbaa !9
  %344 = icmp sle i64 %342, %343
  br i1 %344, label %345, label %371

345:                                              ; preds = %341
  %346 = load ptr, ptr %17, align 8, !tbaa !5
  %347 = load i64, ptr %37, align 8, !tbaa !9
  %348 = load i64, ptr %36, align 8, !tbaa !9
  %349 = load i64, ptr %28, align 8, !tbaa !9
  %350 = mul nsw i64 %348, %349
  %351 = add nsw i64 %347, %350
  %352 = getelementptr inbounds float, ptr %346, i64 %351
  %353 = load float, ptr %352, align 4, !tbaa !11
  store float %353, ptr %35, align 4, !tbaa !11
  %354 = load float, ptr %35, align 4, !tbaa !11
  %355 = fcmp oge float %354, 0.000000e+00
  br i1 %355, label %356, label %358

356:                                              ; preds = %345
  %357 = load float, ptr %35, align 4, !tbaa !11
  br label %361

358:                                              ; preds = %345
  %359 = load float, ptr %35, align 4, !tbaa !11
  %360 = fneg float %359
  br label %361

361:                                              ; preds = %358, %356
  %362 = phi float [ %357, %356 ], [ %360, %358 ]
  %363 = fpext float %362 to double
  %364 = load float, ptr %38, align 4, !tbaa !11
  %365 = fpext float %364 to double
  %366 = fadd double %365, %363
  %367 = fptrunc double %366 to float
  store float %367, ptr %38, align 4, !tbaa !11
  br label %368

368:                                              ; preds = %361
  %369 = load i64, ptr %37, align 8, !tbaa !9
  %370 = add nsw i64 %369, 1
  store i64 %370, ptr %37, align 8, !tbaa !9
  br label %341, !llvm.loop !19

371:                                              ; preds = %341
  br label %411

372:                                              ; preds = %334
  %373 = load ptr, ptr %16, align 8, !tbaa !5
  %374 = load i64, ptr %373, align 8, !tbaa !9
  store i64 %374, ptr %33, align 8, !tbaa !9
  store i64 1, ptr %37, align 8, !tbaa !9
  br label %375

375:                                              ; preds = %407, %372
  %376 = load i64, ptr %37, align 8, !tbaa !9
  %377 = load i64, ptr %33, align 8, !tbaa !9
  %378 = icmp sle i64 %376, %377
  br i1 %378, label %379, label %410

379:                                              ; preds = %375
  %380 = load ptr, ptr %17, align 8, !tbaa !5
  %381 = load i64, ptr %37, align 8, !tbaa !9
  %382 = load i64, ptr %36, align 8, !tbaa !9
  %383 = load i64, ptr %28, align 8, !tbaa !9
  %384 = mul nsw i64 %382, %383
  %385 = add nsw i64 %381, %384
  %386 = getelementptr inbounds float, ptr %380, i64 %385
  %387 = load float, ptr %386, align 4, !tbaa !11
  %388 = load ptr, ptr %23, align 8, !tbaa !5
  %389 = load i64, ptr %37, align 8, !tbaa !9
  %390 = getelementptr inbounds float, ptr %388, i64 %389
  %391 = load float, ptr %390, align 4, !tbaa !11
  %392 = fdiv float %387, %391
  store float %392, ptr %35, align 4, !tbaa !11
  %393 = load float, ptr %35, align 4, !tbaa !11
  %394 = fcmp oge float %393, 0.000000e+00
  br i1 %394, label %395, label %397

395:                                              ; preds = %379
  %396 = load float, ptr %35, align 4, !tbaa !11
  br label %400

397:                                              ; preds = %379
  %398 = load float, ptr %35, align 4, !tbaa !11
  %399 = fneg float %398
  br label %400

400:                                              ; preds = %397, %395
  %401 = phi float [ %396, %395 ], [ %399, %397 ]
  %402 = fpext float %401 to double
  %403 = load float, ptr %38, align 4, !tbaa !11
  %404 = fpext float %403 to double
  %405 = fadd double %404, %402
  %406 = fptrunc double %405 to float
  store float %406, ptr %38, align 4, !tbaa !11
  br label %407

407:                                              ; preds = %400
  %408 = load i64, ptr %37, align 8, !tbaa !9
  %409 = add nsw i64 %408, 1
  store i64 %409, ptr %37, align 8, !tbaa !9
  br label %375, !llvm.loop !20

410:                                              ; preds = %375
  br label %411

411:                                              ; preds = %410, %371
  br label %412

412:                                              ; preds = %411, %333
  %413 = load float, ptr %38, align 4, !tbaa !11
  %414 = load ptr, ptr %25, align 8, !tbaa !5
  %415 = load ptr, ptr %16, align 8, !tbaa !5
  %416 = load i64, ptr %415, align 8, !tbaa !9
  %417 = shl i64 %416, 1
  %418 = load i64, ptr %36, align 8, !tbaa !9
  %419 = add nsw i64 %417, %418
  %420 = getelementptr inbounds float, ptr %414, i64 %419
  store float %413, ptr %420, align 4, !tbaa !11
  br label %421

421:                                              ; preds = %412
  %422 = load i64, ptr %36, align 8, !tbaa !9
  %423 = add nsw i64 %422, 1
  store i64 %423, ptr %36, align 8, !tbaa !9
  br label %287, !llvm.loop !21

424:                                              ; preds = %287
  br label %425

425:                                              ; preds = %424, %283
  store float 0.000000e+00, ptr %41, align 4, !tbaa !11
  store i64 0, ptr %39, align 8, !tbaa !9
  br label %426

426:                                              ; preds = %654, %425
  %427 = load ptr, ptr %16, align 8, !tbaa !5
  %428 = load ptr, ptr %25, align 8, !tbaa !5
  %429 = load ptr, ptr %16, align 8, !tbaa !5
  %430 = load i64, ptr %429, align 8, !tbaa !9
  %431 = add nsw i64 %430, 1
  %432 = getelementptr inbounds float, ptr %428, i64 %431
  %433 = load ptr, ptr %25, align 8, !tbaa !5
  %434 = getelementptr inbounds float, ptr %433, i64 1
  %435 = load ptr, ptr %26, align 8, !tbaa !5
  %436 = getelementptr inbounds i64, ptr %435, i64 1
  %437 = getelementptr inbounds [3 x i64], ptr %40, i64 0, i64 0
  %438 = call i32 @slacn2_(ptr noundef %427, ptr noundef %432, ptr noundef %434, ptr noundef %436, ptr noundef %41, ptr noundef %39, ptr noundef %437)
  %439 = load i64, ptr %39, align 8, !tbaa !9
  %440 = icmp ne i64 %439, 0
  br i1 %440, label %441, label %655

441:                                              ; preds = %426
  %442 = load i64, ptr %39, align 8, !tbaa !9
  %443 = icmp eq i64 %442, 2
  br i1 %443, label %444, label %549

444:                                              ; preds = %441
  %445 = load ptr, ptr %16, align 8, !tbaa !5
  %446 = load i64, ptr %445, align 8, !tbaa !9
  store i64 %446, ptr %32, align 8, !tbaa !9
  store i64 1, ptr %36, align 8, !tbaa !9
  br label %447

447:                                              ; preds = %465, %444
  %448 = load i64, ptr %36, align 8, !tbaa !9
  %449 = load i64, ptr %32, align 8, !tbaa !9
  %450 = icmp sle i64 %448, %449
  br i1 %450, label %451, label %468

451:                                              ; preds = %447
  %452 = load ptr, ptr %25, align 8, !tbaa !5
  %453 = load ptr, ptr %16, align 8, !tbaa !5
  %454 = load i64, ptr %453, align 8, !tbaa !9
  %455 = shl i64 %454, 1
  %456 = load i64, ptr %36, align 8, !tbaa !9
  %457 = add nsw i64 %455, %456
  %458 = getelementptr inbounds float, ptr %452, i64 %457
  %459 = load float, ptr %458, align 4, !tbaa !11
  %460 = load ptr, ptr %25, align 8, !tbaa !5
  %461 = load i64, ptr %36, align 8, !tbaa !9
  %462 = getelementptr inbounds float, ptr %460, i64 %461
  %463 = load float, ptr %462, align 4, !tbaa !11
  %464 = fmul float %463, %459
  store float %464, ptr %462, align 4, !tbaa !11
  br label %465

465:                                              ; preds = %451
  %466 = load i64, ptr %36, align 8, !tbaa !9
  %467 = add nsw i64 %466, 1
  store i64 %467, ptr %36, align 8, !tbaa !9
  br label %447, !llvm.loop !22

468:                                              ; preds = %447
  %469 = load i64, ptr %42, align 8, !tbaa !9
  %470 = icmp ne i64 %469, 0
  br i1 %470, label %471, label %484

471:                                              ; preds = %468
  %472 = load ptr, ptr %16, align 8, !tbaa !5
  %473 = load ptr, ptr %19, align 8, !tbaa !5
  %474 = load i64, ptr %31, align 8, !tbaa !9
  %475 = getelementptr inbounds float, ptr %473, i64 %474
  %476 = load ptr, ptr %20, align 8, !tbaa !5
  %477 = load ptr, ptr %21, align 8, !tbaa !5
  %478 = getelementptr inbounds i64, ptr %477, i64 1
  %479 = load ptr, ptr %25, align 8, !tbaa !5
  %480 = getelementptr inbounds float, ptr %479, i64 1
  %481 = load ptr, ptr %16, align 8, !tbaa !5
  %482 = load ptr, ptr %24, align 8, !tbaa !5
  %483 = call i32 @sgetrs_(ptr noundef @.str.4, ptr noundef %472, ptr noundef @c__1, ptr noundef %475, ptr noundef %476, ptr noundef %478, ptr noundef %480, ptr noundef %481, ptr noundef %482)
  br label %497

484:                                              ; preds = %468
  %485 = load ptr, ptr %16, align 8, !tbaa !5
  %486 = load ptr, ptr %19, align 8, !tbaa !5
  %487 = load i64, ptr %31, align 8, !tbaa !9
  %488 = getelementptr inbounds float, ptr %486, i64 %487
  %489 = load ptr, ptr %20, align 8, !tbaa !5
  %490 = load ptr, ptr %21, align 8, !tbaa !5
  %491 = getelementptr inbounds i64, ptr %490, i64 1
  %492 = load ptr, ptr %25, align 8, !tbaa !5
  %493 = getelementptr inbounds float, ptr %492, i64 1
  %494 = load ptr, ptr %16, align 8, !tbaa !5
  %495 = load ptr, ptr %24, align 8, !tbaa !5
  %496 = call i32 @sgetrs_(ptr noundef @.str.5, ptr noundef %485, ptr noundef @c__1, ptr noundef %488, ptr noundef %489, ptr noundef %491, ptr noundef %493, ptr noundef %494, ptr noundef %495)
  br label %497

497:                                              ; preds = %484, %471
  %498 = load ptr, ptr %22, align 8, !tbaa !5
  %499 = load i64, ptr %498, align 8, !tbaa !9
  %500 = icmp eq i64 %499, 1
  br i1 %500, label %501, label %522

501:                                              ; preds = %497
  %502 = load ptr, ptr %16, align 8, !tbaa !5
  %503 = load i64, ptr %502, align 8, !tbaa !9
  store i64 %503, ptr %32, align 8, !tbaa !9
  store i64 1, ptr %36, align 8, !tbaa !9
  br label %504

504:                                              ; preds = %518, %501
  %505 = load i64, ptr %36, align 8, !tbaa !9
  %506 = load i64, ptr %32, align 8, !tbaa !9
  %507 = icmp sle i64 %505, %506
  br i1 %507, label %508, label %521

508:                                              ; preds = %504
  %509 = load ptr, ptr %23, align 8, !tbaa !5
  %510 = load i64, ptr %36, align 8, !tbaa !9
  %511 = getelementptr inbounds float, ptr %509, i64 %510
  %512 = load float, ptr %511, align 4, !tbaa !11
  %513 = load ptr, ptr %25, align 8, !tbaa !5
  %514 = load i64, ptr %36, align 8, !tbaa !9
  %515 = getelementptr inbounds float, ptr %513, i64 %514
  %516 = load float, ptr %515, align 4, !tbaa !11
  %517 = fdiv float %516, %512
  store float %517, ptr %515, align 4, !tbaa !11
  br label %518

518:                                              ; preds = %508
  %519 = load i64, ptr %36, align 8, !tbaa !9
  %520 = add nsw i64 %519, 1
  store i64 %520, ptr %36, align 8, !tbaa !9
  br label %504, !llvm.loop !23

521:                                              ; preds = %504
  br label %548

522:                                              ; preds = %497
  %523 = load ptr, ptr %22, align 8, !tbaa !5
  %524 = load i64, ptr %523, align 8, !tbaa !9
  %525 = icmp eq i64 %524, -1
  br i1 %525, label %526, label %547

526:                                              ; preds = %522
  %527 = load ptr, ptr %16, align 8, !tbaa !5
  %528 = load i64, ptr %527, align 8, !tbaa !9
  store i64 %528, ptr %32, align 8, !tbaa !9
  store i64 1, ptr %36, align 8, !tbaa !9
  br label %529

529:                                              ; preds = %543, %526
  %530 = load i64, ptr %36, align 8, !tbaa !9
  %531 = load i64, ptr %32, align 8, !tbaa !9
  %532 = icmp sle i64 %530, %531
  br i1 %532, label %533, label %546

533:                                              ; preds = %529
  %534 = load ptr, ptr %23, align 8, !tbaa !5
  %535 = load i64, ptr %36, align 8, !tbaa !9
  %536 = getelementptr inbounds float, ptr %534, i64 %535
  %537 = load float, ptr %536, align 4, !tbaa !11
  %538 = load ptr, ptr %25, align 8, !tbaa !5
  %539 = load i64, ptr %36, align 8, !tbaa !9
  %540 = getelementptr inbounds float, ptr %538, i64 %539
  %541 = load float, ptr %540, align 4, !tbaa !11
  %542 = fmul float %541, %537
  store float %542, ptr %540, align 4, !tbaa !11
  br label %543

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

546:                                              ; preds = %529
  br label %547

547:                                              ; preds = %546, %522
  br label %548

548:                                              ; preds = %547, %521
  br label %654

549:                                              ; preds = %441
  %550 = load ptr, ptr %22, align 8, !tbaa !5
  %551 = load i64, ptr %550, align 8, !tbaa !9
  %552 = icmp eq i64 %551, 1
  br i1 %552, label %553, label %574

553:                                              ; preds = %549
  %554 = load ptr, ptr %16, align 8, !tbaa !5
  %555 = load i64, ptr %554, align 8, !tbaa !9
  store i64 %555, ptr %32, align 8, !tbaa !9
  store i64 1, ptr %36, align 8, !tbaa !9
  br label %556

556:                                              ; preds = %570, %553
  %557 = load i64, ptr %36, align 8, !tbaa !9
  %558 = load i64, ptr %32, align 8, !tbaa !9
  %559 = icmp sle i64 %557, %558
  br i1 %559, label %560, label %573

560:                                              ; preds = %556
  %561 = load ptr, ptr %23, align 8, !tbaa !5
  %562 = load i64, ptr %36, align 8, !tbaa !9
  %563 = getelementptr inbounds float, ptr %561, i64 %562
  %564 = load float, ptr %563, align 4, !tbaa !11
  %565 = load ptr, ptr %25, align 8, !tbaa !5
  %566 = load i64, ptr %36, align 8, !tbaa !9
  %567 = getelementptr inbounds float, ptr %565, i64 %566
  %568 = load float, ptr %567, align 4, !tbaa !11
  %569 = fdiv float %568, %564
  store float %569, ptr %567, align 4, !tbaa !11
  br label %570

570:                                              ; preds = %560
  %571 = load i64, ptr %36, align 8, !tbaa !9
  %572 = add nsw i64 %571, 1
  store i64 %572, ptr %36, align 8, !tbaa !9
  br label %556, !llvm.loop !25

573:                                              ; preds = %556
  br label %600

574:                                              ; preds = %549
  %575 = load ptr, ptr %22, align 8, !tbaa !5
  %576 = load i64, ptr %575, align 8, !tbaa !9
  %577 = icmp eq i64 %576, -1
  br i1 %577, label %578, label %599

578:                                              ; preds = %574
  %579 = load ptr, ptr %16, align 8, !tbaa !5
  %580 = load i64, ptr %579, align 8, !tbaa !9
  store i64 %580, ptr %32, align 8, !tbaa !9
  store i64 1, ptr %36, align 8, !tbaa !9
  br label %581

581:                                              ; preds = %595, %578
  %582 = load i64, ptr %36, align 8, !tbaa !9
  %583 = load i64, ptr %32, align 8, !tbaa !9
  %584 = icmp sle i64 %582, %583
  br i1 %584, label %585, label %598

585:                                              ; preds = %581
  %586 = load ptr, ptr %23, align 8, !tbaa !5
  %587 = load i64, ptr %36, align 8, !tbaa !9
  %588 = getelementptr inbounds float, ptr %586, i64 %587
  %589 = load float, ptr %588, align 4, !tbaa !11
  %590 = load ptr, ptr %25, align 8, !tbaa !5
  %591 = load i64, ptr %36, align 8, !tbaa !9
  %592 = getelementptr inbounds float, ptr %590, i64 %591
  %593 = load float, ptr %592, align 4, !tbaa !11
  %594 = fmul float %593, %589
  store float %594, ptr %592, align 4, !tbaa !11
  br label %595

595:                                              ; preds = %585
  %596 = load i64, ptr %36, align 8, !tbaa !9
  %597 = add nsw i64 %596, 1
  store i64 %597, ptr %36, align 8, !tbaa !9
  br label %581, !llvm.loop !26

598:                                              ; preds = %581
  br label %599

599:                                              ; preds = %598, %574
  br label %600

600:                                              ; preds = %599, %573
  %601 = load i64, ptr %42, align 8, !tbaa !9
  %602 = icmp ne i64 %601, 0
  br i1 %602, label %603, label %616

603:                                              ; preds = %600
  %604 = load ptr, ptr %16, align 8, !tbaa !5
  %605 = load ptr, ptr %19, align 8, !tbaa !5
  %606 = load i64, ptr %31, align 8, !tbaa !9
  %607 = getelementptr inbounds float, ptr %605, i64 %606
  %608 = load ptr, ptr %20, align 8, !tbaa !5
  %609 = load ptr, ptr %21, align 8, !tbaa !5
  %610 = getelementptr inbounds i64, ptr %609, i64 1
  %611 = load ptr, ptr %25, align 8, !tbaa !5
  %612 = getelementptr inbounds float, ptr %611, i64 1
  %613 = load ptr, ptr %16, align 8, !tbaa !5
  %614 = load ptr, ptr %24, align 8, !tbaa !5
  %615 = call i32 @sgetrs_(ptr noundef @.str.5, ptr noundef %604, ptr noundef @c__1, ptr noundef %607, ptr noundef %608, ptr noundef %610, ptr noundef %612, ptr noundef %613, ptr noundef %614)
  br label %629

616:                                              ; preds = %600
  %617 = load ptr, ptr %16, align 8, !tbaa !5
  %618 = load ptr, ptr %19, align 8, !tbaa !5
  %619 = load i64, ptr %31, align 8, !tbaa !9
  %620 = getelementptr inbounds float, ptr %618, i64 %619
  %621 = load ptr, ptr %20, align 8, !tbaa !5
  %622 = load ptr, ptr %21, align 8, !tbaa !5
  %623 = getelementptr inbounds i64, ptr %622, i64 1
  %624 = load ptr, ptr %25, align 8, !tbaa !5
  %625 = getelementptr inbounds float, ptr %624, i64 1
  %626 = load ptr, ptr %16, align 8, !tbaa !5
  %627 = load ptr, ptr %24, align 8, !tbaa !5
  %628 = call i32 @sgetrs_(ptr noundef @.str.4, ptr noundef %617, ptr noundef @c__1, ptr noundef %620, ptr noundef %621, ptr noundef %623, ptr noundef %625, ptr noundef %626, ptr noundef %627)
  br label %629

629:                                              ; preds = %616, %603
  %630 = load ptr, ptr %16, align 8, !tbaa !5
  %631 = load i64, ptr %630, align 8, !tbaa !9
  store i64 %631, ptr %32, align 8, !tbaa !9
  store i64 1, ptr %36, align 8, !tbaa !9
  br label %632

632:                                              ; preds = %650, %629
  %633 = load i64, ptr %36, align 8, !tbaa !9
  %634 = load i64, ptr %32, align 8, !tbaa !9
  %635 = icmp sle i64 %633, %634
  br i1 %635, label %636, label %653

636:                                              ; preds = %632
  %637 = load ptr, ptr %25, align 8, !tbaa !5
  %638 = load ptr, ptr %16, align 8, !tbaa !5
  %639 = load i64, ptr %638, align 8, !tbaa !9
  %640 = shl i64 %639, 1
  %641 = load i64, ptr %36, align 8, !tbaa !9
  %642 = add nsw i64 %640, %641
  %643 = getelementptr inbounds float, ptr %637, i64 %642
  %644 = load float, ptr %643, align 4, !tbaa !11
  %645 = load ptr, ptr %25, align 8, !tbaa !5
  %646 = load i64, ptr %36, align 8, !tbaa !9
  %647 = getelementptr inbounds float, ptr %645, i64 %646
  %648 = load float, ptr %647, align 4, !tbaa !11
  %649 = fmul float %648, %644
  store float %649, ptr %647, align 4, !tbaa !11
  br label %650

650:                                              ; preds = %636
  %651 = load i64, ptr %36, align 8, !tbaa !9
  %652 = add nsw i64 %651, 1
  store i64 %652, ptr %36, align 8, !tbaa !9
  br label %632, !llvm.loop !27

653:                                              ; preds = %632
  br label %654

654:                                              ; preds = %653, %548
  br label %426

655:                                              ; preds = %426
  %656 = load float, ptr %41, align 4, !tbaa !11
  %657 = fcmp une float %656, 0.000000e+00
  br i1 %657, label %658, label %661

658:                                              ; preds = %655
  %659 = load float, ptr %41, align 4, !tbaa !11
  %660 = fdiv float 1.000000e+00, %659
  store float %660, ptr %34, align 4, !tbaa !11
  br label %661

661:                                              ; preds = %658, %655
  %662 = load float, ptr %34, align 4, !tbaa !11
  %663 = fpext float %662 to double
  store double %663, ptr %14, align 8
  store i32 1, ptr %43, align 4
  br label %664

664:                                              ; preds = %661, %137, %126
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 24, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #3
  %665 = load double, ptr %14, align 8
  ret double %665
}

; 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 i32 @slacn2_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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


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

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [13 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.5 = external hidden unnamed_addr constant [10 x i8], align 1

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

24:                                               ; preds = %13
  %25 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #4
  %.not246 = icmp eq i64 %25, 0
  br i1 %.not246, label %26, label %28

26:                                               ; preds = %24
  %27 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #4
  %.not247 = icmp eq i64 %27, 0
  br i1 %.not247, label %.thread.sink.split, label %28

28:                                               ; preds = %26, %24, %13
  %29 = load i64, ptr %1, align 8, !tbaa !5
  %30 = icmp slt i64 %29, 0
  br i1 %30, label %.thread.sink.split, label %31

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

34:                                               ; preds = %31
  %35 = load i64, ptr %5, align 8, !tbaa !5
  %36 = icmp slt i64 %35, %spec.select
  br i1 %36, label %.thread.sink.split, label %37

37:                                               ; preds = %34
  %.pr = load i64, ptr %9, align 8, !tbaa !5
  %.not248 = icmp eq i64 %.pr, 0
  br i1 %.not248, label %41, label %.thread

.thread.sink.split:                               ; preds = %34, %31, %28, %26
  %.sink = phi i64 [ -1, %26 ], [ -2, %28 ], [ -4, %31 ], [ -6, %34 ]
  store i64 %.sink, ptr %9, align 8, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %37
  %38 = phi i64 [ %.pr, %37 ], [ %.sink, %.thread.sink.split ]
  %39 = sub nsw i64 0, %38
  store i64 %39, ptr %14, align 8, !tbaa !5
  %40 = call i32 @xerbla_(ptr noundef nonnull @.str.3, ptr noundef nonnull %14) #4
  br label %491

41:                                               ; preds = %37
  %42 = icmp eq i64 %29, 0
  br i1 %42, label %491, label %43

43:                                               ; preds = %41
  %44 = load i64, ptr %7, align 8, !tbaa !5
  %.idx = shl i64 %29, 3
  %45 = getelementptr i8, ptr %22, i64 %.idx
  br i1 %.not, label %.lr.ph329, label %.lr.ph302

.lr.ph302:                                        ; preds = %43
  switch i64 %44, label %.preheader279.preheader [
    i64 1, label %.preheader281.us.preheader
    i64 0, label %.preheader283.us.preheader
  ]

.preheader283.us.preheader:                       ; preds = %.lr.ph302
  %xtraiter = and i64 %29, 1
  %46 = icmp eq i64 %29, 1
  %unroll_iter = and i64 %29, 9223372036854775806
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br label %.preheader283.us

.preheader281.us.preheader:                       ; preds = %.lr.ph302
  %xtraiter558 = and i64 %29, 1
  %47 = icmp eq i64 %29, 1
  %unroll_iter561 = and i64 %29, 9223372036854775806
  %lcmp.mod559.not = icmp eq i64 %xtraiter558, 0
  br label %.preheader281.us

.preheader279.preheader:                          ; preds = %.lr.ph302
  %xtraiter564 = and i64 %29, 1
  %48 = icmp eq i64 %29, 1
  %unroll_iter567 = and i64 %29, 9223372036854775806
  %lcmp.mod565.not = icmp eq i64 %xtraiter564, 0
  br label %.preheader279

.preheader281.us:                                 ; preds = %.preheader281.us.preheader, %..loopexit282_crit_edge.us
  %.0227300.us = phi i64 [ %83, %..loopexit282_crit_edge.us ], [ %44, %.preheader281.us.preheader ]
  %49 = getelementptr float, ptr %20, i64 %.0227300.us
  br i1 %47, label %..loopexit282_crit_edge.us.unr-lcssa, label %.preheader281.us.new

.preheader281.us.new:                             ; preds = %.preheader281.us, %.preheader281.us.new
  %.0220291.us = phi float [ %70, %.preheader281.us.new ], [ 0.000000e+00, %.preheader281.us ]
  %.0221290.us = phi i64 [ %71, %.preheader281.us.new ], [ 1, %.preheader281.us ]
  %niter562 = phi i64 [ %niter562.next.1, %.preheader281.us.new ], [ 0, %.preheader281.us ]
  %50 = mul nsw i64 %.0221290.us, %18
  %51 = getelementptr float, ptr %49, i64 %50
  %52 = load float, ptr %51, align 4, !tbaa !9
  %53 = getelementptr inbounds float, ptr %21, i64 %.0221290.us
  %54 = load float, ptr %53, align 4, !tbaa !9
  %55 = fmul float %52, %54
  %56 = fcmp oge float %55, 0.000000e+00
  %57 = fneg float %55
  %58 = select i1 %56, float %55, float %57
  %59 = fadd float %.0220291.us, %58
  %60 = add nuw i64 %.0221290.us, 1
  %61 = mul nsw i64 %60, %18
  %62 = getelementptr float, ptr %49, i64 %61
  %63 = load float, ptr %62, align 4, !tbaa !9
  %64 = getelementptr float, ptr %8, i64 %.0221290.us
  %65 = load float, ptr %64, align 4, !tbaa !9
  %66 = fmul float %63, %65
  %67 = fcmp oge float %66, 0.000000e+00
  %68 = fneg float %66
  %69 = select i1 %67, float %66, float %68
  %70 = fadd float %59, %69
  %71 = add nuw i64 %.0221290.us, 2
  %niter562.next.1 = add nuw i64 %niter562, 2
  %niter562.ncmp.1 = icmp eq i64 %niter562.next.1, %unroll_iter561
  br i1 %niter562.ncmp.1, label %..loopexit282_crit_edge.us.unr-lcssa, label %.preheader281.us.new, !llvm.loop !11

..loopexit282_crit_edge.us.unr-lcssa:             ; preds = %.preheader281.us.new, %.preheader281.us
  %.lcssa553.ph = phi float [ poison, %.preheader281.us ], [ %70, %.preheader281.us.new ]
  %.0220291.us.unr = phi float [ 0.000000e+00, %.preheader281.us ], [ %70, %.preheader281.us.new ]
  %.0221290.us.unr = phi i64 [ 1, %.preheader281.us ], [ %71, %.preheader281.us.new ]
  br i1 %lcmp.mod559.not, label %..loopexit282_crit_edge.us, label %..loopexit282_crit_edge.us.epilog-lcssa

..loopexit282_crit_edge.us.epilog-lcssa:          ; preds = %..loopexit282_crit_edge.us.unr-lcssa
  %72 = mul nsw i64 %.0221290.us.unr, %18
  %73 = getelementptr float, ptr %49, i64 %72
  %74 = load float, ptr %73, align 4, !tbaa !9
  %75 = getelementptr inbounds float, ptr %21, i64 %.0221290.us.unr
  %76 = load float, ptr %75, align 4, !tbaa !9
  %77 = fmul float %74, %76
  %78 = fcmp oge float %77, 0.000000e+00
  %79 = fneg float %77
  %80 = select i1 %78, float %77, float %79
  %81 = fadd float %.0220291.us.unr, %80
  br label %..loopexit282_crit_edge.us

..loopexit282_crit_edge.us:                       ; preds = %..loopexit282_crit_edge.us.unr-lcssa, %..loopexit282_crit_edge.us.epilog-lcssa
  %.lcssa553 = phi float [ %.lcssa553.ph, %..loopexit282_crit_edge.us.unr-lcssa ], [ %81, %..loopexit282_crit_edge.us.epilog-lcssa ]
  %82 = getelementptr float, ptr %45, i64 %.0227300.us
  store float %.lcssa553, ptr %82, align 4, !tbaa !9
  %83 = add nuw i64 %.0227300.us, 1
  %exitcond380.not = icmp eq i64 %.0227300.us, %29
  br i1 %exitcond380.not, label %.loopexit278, label %.preheader281.us, !llvm.loop !13

.preheader283.us:                                 ; preds = %.preheader283.us.preheader, %..loopexit284_crit_edge.us
  %.0227300.us304 = phi i64 [ %109, %..loopexit284_crit_edge.us ], [ 1, %.preheader283.us.preheader ]
  %84 = getelementptr float, ptr %20, i64 %.0227300.us304
  br i1 %46, label %..loopexit284_crit_edge.us.unr-lcssa, label %.preheader283.us.new

.preheader283.us.new:                             ; preds = %.preheader283.us, %.preheader283.us.new
  %.1288.us = phi float [ %99, %.preheader283.us.new ], [ 0.000000e+00, %.preheader283.us ]
  %.1222287.us = phi i64 [ %100, %.preheader283.us.new ], [ 1, %.preheader283.us ]
  %niter = phi i64 [ %niter.next.1, %.preheader283.us.new ], [ 0, %.preheader283.us ]
  %85 = mul nsw i64 %.1222287.us, %18
  %86 = getelementptr float, ptr %84, i64 %85
  %87 = load float, ptr %86, align 4, !tbaa !9
  %88 = fcmp oge float %87, 0.000000e+00
  %89 = fneg float %87
  %90 = select i1 %88, float %87, float %89
  %91 = fadd float %.1288.us, %90
  %92 = add nuw i64 %.1222287.us, 1
  %93 = mul nsw i64 %92, %18
  %94 = getelementptr float, ptr %84, i64 %93
  %95 = load float, ptr %94, align 4, !tbaa !9
  %96 = fcmp oge float %95, 0.000000e+00
  %97 = fneg float %95
  %98 = select i1 %96, float %95, float %97
  %99 = fadd float %91, %98
  %100 = add nuw i64 %.1222287.us, 2
  %niter.next.1 = add nuw i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %..loopexit284_crit_edge.us.unr-lcssa, label %.preheader283.us.new, !llvm.loop !14

..loopexit284_crit_edge.us.unr-lcssa:             ; preds = %.preheader283.us.new, %.preheader283.us
  %.lcssa555.ph = phi float [ poison, %.preheader283.us ], [ %99, %.preheader283.us.new ]
  %.1288.us.unr = phi float [ 0.000000e+00, %.preheader283.us ], [ %99, %.preheader283.us.new ]
  %.1222287.us.unr = phi i64 [ 1, %.preheader283.us ], [ %100, %.preheader283.us.new ]
  br i1 %lcmp.mod.not, label %..loopexit284_crit_edge.us, label %..loopexit284_crit_edge.us.epilog-lcssa

..loopexit284_crit_edge.us.epilog-lcssa:          ; preds = %..loopexit284_crit_edge.us.unr-lcssa
  %101 = mul nsw i64 %.1222287.us.unr, %18
  %102 = getelementptr float, ptr %84, i64 %101
  %103 = load float, ptr %102, align 4, !tbaa !9
  %104 = fcmp oge float %103, 0.000000e+00
  %105 = fneg float %103
  %106 = select i1 %104, float %103, float %105
  %107 = fadd float %.1288.us.unr, %106
  br label %..loopexit284_crit_edge.us

..loopexit284_crit_edge.us:                       ; preds = %..loopexit284_crit_edge.us.unr-lcssa, %..loopexit284_crit_edge.us.epilog-lcssa
  %.lcssa555 = phi float [ %.lcssa555.ph, %..loopexit284_crit_edge.us.unr-lcssa ], [ %107, %..loopexit284_crit_edge.us.epilog-lcssa ]
  %108 = getelementptr float, ptr %45, i64 %.0227300.us304
  store float %.lcssa555, ptr %108, align 4, !tbaa !9
  %109 = add nuw i64 %.0227300.us304, 1
  %exitcond378.not = icmp eq i64 %.0227300.us304, %29
  br i1 %exitcond378.not, label %.loopexit278, label %.preheader283.us, !llvm.loop !13

.preheader279:                                    ; preds = %.preheader279.preheader, %..loopexit280_crit_edge
  %.0227300 = phi i64 [ %144, %..loopexit280_crit_edge ], [ 1, %.preheader279.preheader ]
  %110 = getelementptr float, ptr %20, i64 %.0227300
  br i1 %48, label %..loopexit280_crit_edge.unr-lcssa, label %.preheader279.new

.preheader279.new:                                ; preds = %.preheader279, %.preheader279.new
  %.2296 = phi float [ %131, %.preheader279.new ], [ 0.000000e+00, %.preheader279 ]
  %.2223295 = phi i64 [ %132, %.preheader279.new ], [ 1, %.preheader279 ]
  %niter568 = phi i64 [ %niter568.next.1, %.preheader279.new ], [ 0, %.preheader279 ]
  %111 = mul nsw i64 %.2223295, %18
  %112 = getelementptr float, ptr %110, i64 %111
  %113 = load float, ptr %112, align 4, !tbaa !9
  %114 = getelementptr inbounds float, ptr %21, i64 %.2223295
  %115 = load float, ptr %114, align 4, !tbaa !9
  %116 = fdiv float %113, %115
  %117 = fcmp oge float %116, 0.000000e+00
  %118 = fneg float %116
  %119 = select i1 %117, float %116, float %118
  %120 = fadd float %.2296, %119
  %121 = add nuw i64 %.2223295, 1
  %122 = mul nsw i64 %121, %18
  %123 = getelementptr float, ptr %110, i64 %122
  %124 = load float, ptr %123, align 4, !tbaa !9
  %125 = getelementptr float, ptr %8, i64 %.2223295
  %126 = load float, ptr %125, align 4, !tbaa !9
  %127 = fdiv float %124, %126
  %128 = fcmp oge float %127, 0.000000e+00
  %129 = fneg float %127
  %130 = select i1 %128, float %127, float %129
  %131 = fadd float %120, %130
  %132 = add nuw i64 %.2223295, 2
  %niter568.next.1 = add nuw i64 %niter568, 2
  %niter568.ncmp.1 = icmp eq i64 %niter568.next.1, %unroll_iter567
  br i1 %niter568.ncmp.1, label %..loopexit280_crit_edge.unr-lcssa, label %.preheader279.new, !llvm.loop !15

..loopexit280_crit_edge.unr-lcssa:                ; preds = %.preheader279.new, %.preheader279
  %.lcssa551.ph = phi float [ poison, %.preheader279 ], [ %131, %.preheader279.new ]
  %.2296.unr = phi float [ 0.000000e+00, %.preheader279 ], [ %131, %.preheader279.new ]
  %.2223295.unr = phi i64 [ 1, %.preheader279 ], [ %132, %.preheader279.new ]
  br i1 %lcmp.mod565.not, label %..loopexit280_crit_edge, label %..loopexit280_crit_edge.epilog-lcssa

..loopexit280_crit_edge.epilog-lcssa:             ; preds = %..loopexit280_crit_edge.unr-lcssa
  %133 = mul nsw i64 %.2223295.unr, %18
  %134 = getelementptr float, ptr %110, i64 %133
  %135 = load float, ptr %134, align 4, !tbaa !9
  %136 = getelementptr inbounds float, ptr %21, i64 %.2223295.unr
  %137 = load float, ptr %136, align 4, !tbaa !9
  %138 = fdiv float %135, %137
  %139 = fcmp oge float %138, 0.000000e+00
  %140 = fneg float %138
  %141 = select i1 %139, float %138, float %140
  %142 = fadd float %.2296.unr, %141
  br label %..loopexit280_crit_edge

..loopexit280_crit_edge:                          ; preds = %..loopexit280_crit_edge.unr-lcssa, %..loopexit280_crit_edge.epilog-lcssa
  %.lcssa551 = phi float [ %.lcssa551.ph, %..loopexit280_crit_edge.unr-lcssa ], [ %142, %..loopexit280_crit_edge.epilog-lcssa ]
  %143 = getelementptr float, ptr %45, i64 %.0227300
  store float %.lcssa551, ptr %143, align 4, !tbaa !9
  %144 = add nuw i64 %.0227300, 1
  %exitcond382.not = icmp eq i64 %.0227300, %29
  br i1 %exitcond382.not, label %.loopexit278, label %.preheader279, !llvm.loop !13

.lr.ph329:                                        ; preds = %43
  switch i64 %44, label %.preheader.preheader [
    i64 1, label %.preheader274.us.preheader
    i64 0, label %.preheader276.us.preheader
  ]

.preheader276.us.preheader:                       ; preds = %.lr.ph329
  %xtraiter570 = and i64 %29, 1
  %145 = icmp eq i64 %29, 1
  %unroll_iter573 = and i64 %29, 9223372036854775806
  %lcmp.mod571.not = icmp eq i64 %xtraiter570, 0
  br label %.preheader276.us

.preheader274.us.preheader:                       ; preds = %.lr.ph329
  %xtraiter576 = and i64 %29, 1
  %146 = icmp eq i64 %29, 1
  %unroll_iter579 = and i64 %29, 9223372036854775806
  %lcmp.mod577.not = icmp eq i64 %xtraiter576, 0
  br label %.preheader274.us

.preheader.preheader:                             ; preds = %.lr.ph329
  %xtraiter582 = and i64 %29, 1
  %147 = icmp eq i64 %29, 1
  %unroll_iter585 = and i64 %29, 9223372036854775806
  %lcmp.mod583.not = icmp eq i64 %xtraiter582, 0
  br label %.preheader

.preheader274.us:                                 ; preds = %.preheader274.us.preheader, %..loopexit275_crit_edge.us
  %.1228328.us = phi i64 [ %176, %..loopexit275_crit_edge.us ], [ %44, %.preheader274.us.preheader ]
  %148 = mul nsw i64 %.1228328.us, %18
  %invariant.gep318.us = getelementptr float, ptr %20, i64 %148
  br i1 %146, label %..loopexit275_crit_edge.us.unr-lcssa, label %.preheader274.us.new

.preheader274.us.new:                             ; preds = %.preheader274.us
  %invariant.gep622 = getelementptr i8, ptr %invariant.gep318.us, i64 4
  br label %149

149:                                              ; preds = %149, %.preheader274.us.new
  %.4315.us = phi float [ 0.000000e+00, %.preheader274.us.new ], [ %165, %149 ]
  %.3224314.us = phi i64 [ 1, %.preheader274.us.new ], [ %166, %149 ]
  %niter580 = phi i64 [ 0, %.preheader274.us.new ], [ %niter580.next.1, %149 ]
  %gep319.us = getelementptr float, ptr %invariant.gep318.us, i64 %.3224314.us
  %150 = load float, ptr %gep319.us, align 4, !tbaa !9
  %151 = getelementptr inbounds float, ptr %21, i64 %.3224314.us
  %152 = load float, ptr %151, align 4, !tbaa !9
  %153 = fmul float %150, %152
  %154 = fcmp oge float %153, 0.000000e+00
  %155 = fneg float %153
  %156 = select i1 %154, float %153, float %155
  %157 = fadd float %.4315.us, %156
  %gep623 = getelementptr float, ptr %invariant.gep622, i64 %.3224314.us
  %158 = load float, ptr %gep623, align 4, !tbaa !9
  %159 = getelementptr float, ptr %8, i64 %.3224314.us
  %160 = load float, ptr %159, align 4, !tbaa !9
  %161 = fmul float %158, %160
  %162 = fcmp oge float %161, 0.000000e+00
  %163 = fneg float %161
  %164 = select i1 %162, float %161, float %163
  %165 = fadd float %157, %164
  %166 = add nuw i64 %.3224314.us, 2
  %niter580.next.1 = add i64 %niter580, 2
  %niter580.ncmp.1 = icmp eq i64 %niter580.next.1, %unroll_iter579
  br i1 %niter580.ncmp.1, label %..loopexit275_crit_edge.us.unr-lcssa, label %149, !llvm.loop !16

..loopexit275_crit_edge.us.unr-lcssa:             ; preds = %149, %.preheader274.us
  %.lcssa547.ph = phi float [ poison, %.preheader274.us ], [ %165, %149 ]
  %.4315.us.unr = phi float [ 0.000000e+00, %.preheader274.us ], [ %165, %149 ]
  %.3224314.us.unr = phi i64 [ 1, %.preheader274.us ], [ %166, %149 ]
  br i1 %lcmp.mod577.not, label %..loopexit275_crit_edge.us, label %..loopexit275_crit_edge.us.epilog-lcssa

..loopexit275_crit_edge.us.epilog-lcssa:          ; preds = %..loopexit275_crit_edge.us.unr-lcssa
  %gep319.us.epil = getelementptr float, ptr %invariant.gep318.us, i64 %.3224314.us.unr
  %167 = load float, ptr %gep319.us.epil, align 4, !tbaa !9
  %168 = getelementptr inbounds float, ptr %21, i64 %.3224314.us.unr
  %169 = load float, ptr %168, align 4, !tbaa !9
  %170 = fmul float %167, %169
  %171 = fcmp oge float %170, 0.000000e+00
  %172 = fneg float %170
  %173 = select i1 %171, float %170, float %172
  %174 = fadd float %.4315.us.unr, %173
  br label %..loopexit275_crit_edge.us

..loopexit275_crit_edge.us:                       ; preds = %..loopexit275_crit_edge.us.unr-lcssa, %..loopexit275_crit_edge.us.epilog-lcssa
  %.lcssa547 = phi float [ %.lcssa547.ph, %..loopexit275_crit_edge.us.unr-lcssa ], [ %174, %..loopexit275_crit_edge.us.epilog-lcssa ]
  %175 = getelementptr float, ptr %45, i64 %.1228328.us
  store float %.lcssa547, ptr %175, align 4, !tbaa !9
  %176 = add nuw i64 %.1228328.us, 1
  %exitcond386.not = icmp eq i64 %.1228328.us, %29
  br i1 %exitcond386.not, label %.loopexit278, label %.preheader274.us, !llvm.loop !17

.preheader276.us:                                 ; preds = %.preheader276.us.preheader, %..loopexit277_crit_edge.us
  %.1228328.us331 = phi i64 [ %196, %..loopexit277_crit_edge.us ], [ 1, %.preheader276.us.preheader ]
  %177 = mul nsw i64 %.1228328.us331, %18
  %invariant.gep.us = getelementptr float, ptr %20, i64 %177
  br i1 %145, label %..loopexit277_crit_edge.us.unr-lcssa, label %.preheader276.us.new

.preheader276.us.new:                             ; preds = %.preheader276.us
  %invariant.gep = getelementptr i8, ptr %invariant.gep.us, i64 4
  br label %178

178:                                              ; preds = %178, %.preheader276.us.new
  %.5312.us = phi float [ 0.000000e+00, %.preheader276.us.new ], [ %188, %178 ]
  %.4225311.us = phi i64 [ 1, %.preheader276.us.new ], [ %189, %178 ]
  %niter574 = phi i64 [ 0, %.preheader276.us.new ], [ %niter574.next.1, %178 ]
  %gep.us = getelementptr float, ptr %invariant.gep.us, i64 %.4225311.us
  %179 = load float, ptr %gep.us, align 4, !tbaa !9
  %180 = fcmp oge float %179, 0.000000e+00
  %181 = fneg float %179
  %182 = select i1 %180, float %179, float %181
  %183 = fadd float %.5312.us, %182
  %gep = getelementptr float, ptr %invariant.gep, i64 %.4225311.us
  %184 = load float, ptr %gep, align 4, !tbaa !9
  %185 = fcmp oge float %184, 0.000000e+00
  %186 = fneg float %184
  %187 = select i1 %185, float %184, float %186
  %188 = fadd float %183, %187
  %189 = add nuw i64 %.4225311.us, 2
  %niter574.next.1 = add i64 %niter574, 2
  %niter574.ncmp.1 = icmp eq i64 %niter574.next.1, %unroll_iter573
  br i1 %niter574.ncmp.1, label %..loopexit277_crit_edge.us.unr-lcssa, label %178, !llvm.loop !18

..loopexit277_crit_edge.us.unr-lcssa:             ; preds = %178, %.preheader276.us
  %.lcssa549.ph = phi float [ poison, %.preheader276.us ], [ %188, %178 ]
  %.5312.us.unr = phi float [ 0.000000e+00, %.preheader276.us ], [ %188, %178 ]
  %.4225311.us.unr = phi i64 [ 1, %.preheader276.us ], [ %189, %178 ]
  br i1 %lcmp.mod571.not, label %..loopexit277_crit_edge.us, label %..loopexit277_crit_edge.us.epilog-lcssa

..loopexit277_crit_edge.us.epilog-lcssa:          ; preds = %..loopexit277_crit_edge.us.unr-lcssa
  %gep.us.epil = getelementptr float, ptr %invariant.gep.us, i64 %.4225311.us.unr
  %190 = load float, ptr %gep.us.epil, align 4, !tbaa !9
  %191 = fcmp oge float %190, 0.000000e+00
  %192 = fneg float %190
  %193 = select i1 %191, float %190, float %192
  %194 = fadd float %.5312.us.unr, %193
  br label %..loopexit277_crit_edge.us

..loopexit277_crit_edge.us:                       ; preds = %..loopexit277_crit_edge.us.unr-lcssa, %..loopexit277_crit_edge.us.epilog-lcssa
  %.lcssa549 = phi float [ %.lcssa549.ph, %..loopexit277_crit_edge.us.unr-lcssa ], [ %194, %..loopexit277_crit_edge.us.epilog-lcssa ]
  %195 = getelementptr float, ptr %45, i64 %.1228328.us331
  store float %.lcssa549, ptr %195, align 4, !tbaa !9
  %196 = add nuw i64 %.1228328.us331, 1
  %exitcond384.not = icmp eq i64 %.1228328.us331, %29
  br i1 %exitcond384.not, label %.loopexit278, label %.preheader276.us, !llvm.loop !17

.preheader:                                       ; preds = %.preheader.preheader, %..loopexit273_crit_edge
  %.1228328 = phi i64 [ %225, %..loopexit273_crit_edge ], [ 1, %.preheader.preheader ]
  %197 = mul nsw i64 %.1228328, %18
  %invariant.gep325 = getelementptr float, ptr %20, i64 %197
  br i1 %147, label %..loopexit273_crit_edge.unr-lcssa, label %.preheader.new

.preheader.new:                                   ; preds = %.preheader
  %invariant.gep624 = getelementptr i8, ptr %invariant.gep325, i64 4
  br label %198

198:                                              ; preds = %198, %.preheader.new
  %.6322 = phi float [ 0.000000e+00, %.preheader.new ], [ %214, %198 ]
  %.5226321 = phi i64 [ 1, %.preheader.new ], [ %215, %198 ]
  %niter586 = phi i64 [ 0, %.preheader.new ], [ %niter586.next.1, %198 ]
  %gep326 = getelementptr float, ptr %invariant.gep325, i64 %.5226321
  %199 = load float, ptr %gep326, align 4, !tbaa !9
  %200 = getelementptr inbounds float, ptr %21, i64 %.5226321
  %201 = load float, ptr %200, align 4, !tbaa !9
  %202 = fdiv float %199, %201
  %203 = fcmp oge float %202, 0.000000e+00
  %204 = fneg float %202
  %205 = select i1 %203, float %202, float %204
  %206 = fadd float %.6322, %205
  %gep625 = getelementptr float, ptr %invariant.gep624, i64 %.5226321
  %207 = load float, ptr %gep625, align 4, !tbaa !9
  %208 = getelementptr float, ptr %8, i64 %.5226321
  %209 = load float, ptr %208, align 4, !tbaa !9
  %210 = fdiv float %207, %209
  %211 = fcmp oge float %210, 0.000000e+00
  %212 = fneg float %210
  %213 = select i1 %211, float %210, float %212
  %214 = fadd float %206, %213
  %215 = add nuw i64 %.5226321, 2
  %niter586.next.1 = add i64 %niter586, 2
  %niter586.ncmp.1 = icmp eq i64 %niter586.next.1, %unroll_iter585
  br i1 %niter586.ncmp.1, label %..loopexit273_crit_edge.unr-lcssa, label %198, !llvm.loop !19

..loopexit273_crit_edge.unr-lcssa:                ; preds = %198, %.preheader
  %.lcssa.ph = phi float [ poison, %.preheader ], [ %214, %198 ]
  %.6322.unr = phi float [ 0.000000e+00, %.preheader ], [ %214, %198 ]
  %.5226321.unr = phi i64 [ 1, %.preheader ], [ %215, %198 ]
  br i1 %lcmp.mod583.not, label %..loopexit273_crit_edge, label %..loopexit273_crit_edge.epilog-lcssa

..loopexit273_crit_edge.epilog-lcssa:             ; preds = %..loopexit273_crit_edge.unr-lcssa
  %gep326.epil = getelementptr float, ptr %invariant.gep325, i64 %.5226321.unr
  %216 = load float, ptr %gep326.epil, align 4, !tbaa !9
  %217 = getelementptr inbounds float, ptr %21, i64 %.5226321.unr
  %218 = load float, ptr %217, align 4, !tbaa !9
  %219 = fdiv float %216, %218
  %220 = fcmp oge float %219, 0.000000e+00
  %221 = fneg float %219
  %222 = select i1 %220, float %219, float %221
  %223 = fadd float %.6322.unr, %222
  br label %..loopexit273_crit_edge

..loopexit273_crit_edge:                          ; preds = %..loopexit273_crit_edge.unr-lcssa, %..loopexit273_crit_edge.epilog-lcssa
  %.lcssa = phi float [ %.lcssa.ph, %..loopexit273_crit_edge.unr-lcssa ], [ %223, %..loopexit273_crit_edge.epilog-lcssa ]
  %224 = getelementptr float, ptr %45, i64 %.1228328
  store float %.lcssa, ptr %224, align 4, !tbaa !9
  %225 = add nuw i64 %.1228328, 1
  %exitcond388.not = icmp eq i64 %.1228328, %29
  br i1 %exitcond388.not, label %.loopexit278, label %.preheader, !llvm.loop !17

.loopexit278:                                     ; preds = %..loopexit284_crit_edge.us, %..loopexit282_crit_edge.us, %..loopexit280_crit_edge, %..loopexit277_crit_edge.us, %..loopexit275_crit_edge.us, %..loopexit273_crit_edge
  store float 0.000000e+00, ptr %17, align 4, !tbaa !9
  store i64 0, ptr %15, align 8, !tbaa !5
  %.str.5..str.4 = select i1 %.not, ptr @.str.5, ptr @.str.4
  %.str.4..str.5 = select i1 %.not, ptr @.str.4, ptr @.str.5
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.backedge, %.loopexit278
  %226 = phi i64 [ %29, %.loopexit278 ], [ %.be, %.loopexit.backedge ]
  %227 = getelementptr float, ptr %10, i64 %226
  %228 = call i32 @slacn2_(ptr noundef nonnull %1, ptr noundef %227, ptr noundef %10, ptr noundef %11, ptr noundef nonnull %17, ptr noundef nonnull %15, ptr noundef nonnull %16) #4
  %229 = load i64, ptr %15, align 8, !tbaa !5
  switch i64 %229, label %357 [
    i64 0, label %486
    i64 2, label %230
  ]

230:                                              ; preds = %.loopexit
  %231 = load i64, ptr %1, align 8, !tbaa !5
  %.not259337 = icmp slt i64 %231, 1
  br i1 %.not259337, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %230
  %.idx262 = shl i64 %231, 3
  %232 = getelementptr i8, ptr %22, i64 %.idx262
  %min.iters.check524 = icmp ult i64 %231, 8
  br i1 %min.iters.check524, label %scalar.ph523.preheader, label %vector.memcheck515

vector.memcheck515:                               ; preds = %.lr.ph
  %233 = shl i64 %231, 2
  %scevgep516 = getelementptr i8, ptr %10, i64 %233
  %scevgep517 = getelementptr i8, ptr %10, i64 %.idx262
  %234 = mul i64 %231, 12
  %scevgep518 = getelementptr i8, ptr %10, i64 %234
  %bound0519 = icmp ugt ptr %scevgep518, %10
  %bound1520 = icmp ult ptr %scevgep517, %scevgep516
  %found.conflict521 = and i1 %bound0519, %bound1520
  br i1 %found.conflict521, label %scalar.ph523.preheader, label %vector.ph525

vector.ph525:                                     ; preds = %vector.memcheck515
  %n.vec527 = and i64 %231, 9223372036854775800
  %ind.end528 = or disjoint i64 %n.vec527, 1
  br label %vector.body530

vector.body530:                                   ; preds = %vector.body530, %vector.ph525
  %index531 = phi i64 [ 0, %vector.ph525 ], [ %index.next537, %vector.body530 ]
  %offset.idx532 = or disjoint i64 %index531, 1
  %235 = getelementptr float, ptr %232, i64 %offset.idx532
  %236 = getelementptr i8, ptr %235, i64 16
  %wide.load533 = load <4 x float>, ptr %235, align 4, !tbaa !9, !alias.scope !20
  %wide.load534 = load <4 x float>, ptr %236, align 4, !tbaa !9, !alias.scope !20
  %237 = getelementptr float, ptr %10, i64 %index531
  %238 = getelementptr inbounds i8, ptr %237, i64 16
  %wide.load535 = load <4 x float>, ptr %237, align 4, !tbaa !9, !alias.scope !23, !noalias !20
  %wide.load536 = load <4 x float>, ptr %238, align 4, !tbaa !9, !alias.scope !23, !noalias !20
  %239 = fmul <4 x float> %wide.load533, %wide.load535
  %240 = fmul <4 x float> %wide.load534, %wide.load536
  store <4 x float> %239, ptr %237, align 4, !tbaa !9, !alias.scope !23, !noalias !20
  store <4 x float> %240, ptr %238, align 4, !tbaa !9, !alias.scope !23, !noalias !20
  %index.next537 = add nuw i64 %index531, 8
  %241 = icmp eq i64 %index.next537, %n.vec527
  br i1 %241, label %middle.block522, label %vector.body530, !llvm.loop !25

middle.block522:                                  ; preds = %vector.body530
  %cmp.n538 = icmp eq i64 %231, %n.vec527
  br i1 %cmp.n538, label %._crit_edge, label %scalar.ph523.preheader

scalar.ph523.preheader:                           ; preds = %middle.block522, %vector.memcheck515, %.lr.ph
  %.2229338.ph = phi i64 [ 1, %vector.memcheck515 ], [ 1, %.lr.ph ], [ %ind.end528, %middle.block522 ]
  %242 = add nuw i64 %231, 1
  %243 = sub i64 %242, %.2229338.ph
  %244 = sub i64 %231, %.2229338.ph
  %xtraiter587 = and i64 %243, 3
  %lcmp.mod588.not = icmp eq i64 %xtraiter587, 0
  br i1 %lcmp.mod588.not, label %scalar.ph523.prol.loopexit, label %scalar.ph523.prol

scalar.ph523.prol:                                ; preds = %scalar.ph523.preheader, %scalar.ph523.prol
  %.2229338.prol = phi i64 [ %250, %scalar.ph523.prol ], [ %.2229338.ph, %scalar.ph523.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph523.prol ], [ 0, %scalar.ph523.preheader ]
  %245 = getelementptr float, ptr %232, i64 %.2229338.prol
  %246 = load float, ptr %245, align 4, !tbaa !9
  %247 = getelementptr inbounds float, ptr %22, i64 %.2229338.prol
  %248 = load float, ptr %247, align 4, !tbaa !9
  %249 = fmul float %246, %248
  store float %249, ptr %247, align 4, !tbaa !9
  %250 = add nuw i64 %.2229338.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter587
  br i1 %prol.iter.cmp.not, label %scalar.ph523.prol.loopexit, label %scalar.ph523.prol, !llvm.loop !28

scalar.ph523.prol.loopexit:                       ; preds = %scalar.ph523.prol, %scalar.ph523.preheader
  %.2229338.unr = phi i64 [ %.2229338.ph, %scalar.ph523.preheader ], [ %250, %scalar.ph523.prol ]
  %251 = icmp ult i64 %244, 3
  br i1 %251, label %._crit_edge, label %scalar.ph523.preheader.new

scalar.ph523.preheader.new:                       ; preds = %scalar.ph523.prol.loopexit
  %invariant.gep626 = getelementptr i8, ptr %232, i64 4
  br label %scalar.ph523

scalar.ph523:                                     ; preds = %scalar.ph523, %scalar.ph523.preheader.new
  %.2229338 = phi i64 [ %.2229338.unr, %scalar.ph523.preheader.new ], [ %273, %scalar.ph523 ]
  %252 = getelementptr float, ptr %232, i64 %.2229338
  %253 = load float, ptr %252, align 4, !tbaa !9
  %254 = getelementptr inbounds float, ptr %22, i64 %.2229338
  %255 = load float, ptr %254, align 4, !tbaa !9
  %256 = fmul float %253, %255
  store float %256, ptr %254, align 4, !tbaa !9
  %gep627 = getelementptr float, ptr %invariant.gep626, i64 %.2229338
  %257 = load float, ptr %gep627, align 4, !tbaa !9
  %258 = getelementptr float, ptr %10, i64 %.2229338
  %259 = load float, ptr %258, align 4, !tbaa !9
  %260 = fmul float %257, %259
  store float %260, ptr %258, align 4, !tbaa !9
  %261 = add nuw i64 %.2229338, 2
  %262 = getelementptr float, ptr %232, i64 %261
  %263 = load float, ptr %262, align 4, !tbaa !9
  %264 = getelementptr inbounds float, ptr %22, i64 %261
  %265 = load float, ptr %264, align 4, !tbaa !9
  %266 = fmul float %263, %265
  store float %266, ptr %264, align 4, !tbaa !9
  %267 = add nuw i64 %.2229338, 3
  %268 = getelementptr float, ptr %232, i64 %267
  %269 = load float, ptr %268, align 4, !tbaa !9
  %270 = getelementptr inbounds float, ptr %22, i64 %267
  %271 = load float, ptr %270, align 4, !tbaa !9
  %272 = fmul float %269, %271
  store float %272, ptr %270, align 4, !tbaa !9
  %273 = add nuw i64 %.2229338, 4
  %exitcond389.not.3 = icmp eq i64 %267, %231
  br i1 %exitcond389.not.3, label %._crit_edge, label %scalar.ph523, !llvm.loop !30

._crit_edge:                                      ; preds = %scalar.ph523.prol.loopexit, %scalar.ph523, %middle.block522, %230
  %274 = call i32 @sgetrs_(ptr noundef nonnull %.str.5..str.4, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef %10, ptr noundef nonnull %1, ptr noundef nonnull %9) #4
  %275 = load i64, ptr %7, align 8, !tbaa !5
  %.pre.pre = load i64, ptr %1, align 8, !tbaa !5
  switch i64 %275, label %.loopexit.backedge [
    i64 1, label %276
    i64 -1, label %315
  ]

276:                                              ; preds = %._crit_edge
  %.not261343 = icmp slt i64 %.pre.pre, 1
  br i1 %.not261343, label %.loopexit.backedge, label %.lr.ph346.preheader

.lr.ph346.preheader:                              ; preds = %276
  %min.iters.check479 = icmp ult i64 %.pre.pre, 4
  br i1 %min.iters.check479, label %.lr.ph346.preheader542, label %vector.memcheck471

vector.memcheck471:                               ; preds = %.lr.ph346.preheader
  %277 = shl i64 %.pre.pre, 2
  %scevgep472 = getelementptr i8, ptr %10, i64 %277
  %scevgep473 = getelementptr i8, ptr %8, i64 %277
  %bound0474 = icmp ugt ptr %scevgep473, %10
  %bound1475 = icmp ugt ptr %scevgep472, %8
  %found.conflict476 = and i1 %bound0474, %bound1475
  br i1 %found.conflict476, label %.lr.ph346.preheader542, label %vector.ph480

vector.ph480:                                     ; preds = %vector.memcheck471
  %n.vec482 = and i64 %.pre.pre, 9223372036854775804
  %ind.end483 = or disjoint i64 %n.vec482, 1
  br label %vector.body485

vector.body485:                                   ; preds = %vector.body485, %vector.ph480
  %index486 = phi i64 [ 0, %vector.ph480 ], [ %index.next490, %vector.body485 ]
  %278 = getelementptr float, ptr %8, i64 %index486
  %wide.load488 = load <4 x float>, ptr %278, align 4, !tbaa !9, !alias.scope !31
  %279 = getelementptr float, ptr %10, i64 %index486
  %wide.load489 = load <4 x float>, ptr %279, align 4, !tbaa !9, !alias.scope !34, !noalias !31
  %280 = fdiv <4 x float> %wide.load489, %wide.load488
  store <4 x float> %280, ptr %279, align 4, !tbaa !9, !alias.scope !34, !noalias !31
  %index.next490 = add nuw i64 %index486, 4
  %281 = icmp eq i64 %index.next490, %n.vec482
  br i1 %281, label %middle.block477, label %vector.body485, !llvm.loop !36

middle.block477:                                  ; preds = %vector.body485
  %cmp.n491 = icmp eq i64 %.pre.pre, %n.vec482
  br i1 %cmp.n491, label %.loopexit.backedge, label %.lr.ph346.preheader542

.lr.ph346.preheader542:                           ; preds = %middle.block477, %vector.memcheck471, %.lr.ph346.preheader
  %.3230344.ph = phi i64 [ 1, %vector.memcheck471 ], [ 1, %.lr.ph346.preheader ], [ %ind.end483, %middle.block477 ]
  %282 = add nuw i64 %.pre.pre, 1
  %283 = sub i64 %282, %.3230344.ph
  %284 = sub i64 %.pre.pre, %.3230344.ph
  %xtraiter592 = and i64 %283, 3
  %lcmp.mod593.not = icmp eq i64 %xtraiter592, 0
  br i1 %lcmp.mod593.not, label %.lr.ph346.prol.loopexit, label %.lr.ph346.prol

.lr.ph346.prol:                                   ; preds = %.lr.ph346.preheader542, %.lr.ph346.prol
  %.3230344.prol = phi i64 [ %290, %.lr.ph346.prol ], [ %.3230344.ph, %.lr.ph346.preheader542 ]
  %prol.iter594 = phi i64 [ %prol.iter594.next, %.lr.ph346.prol ], [ 0, %.lr.ph346.preheader542 ]
  %285 = getelementptr inbounds float, ptr %21, i64 %.3230344.prol
  %286 = load float, ptr %285, align 4, !tbaa !9
  %287 = getelementptr inbounds float, ptr %22, i64 %.3230344.prol
  %288 = load float, ptr %287, align 4, !tbaa !9
  %289 = fdiv float %288, %286
  store float %289, ptr %287, align 4, !tbaa !9
  %290 = add nuw i64 %.3230344.prol, 1
  %prol.iter594.next = add i64 %prol.iter594, 1
  %prol.iter594.cmp.not = icmp eq i64 %prol.iter594.next, %xtraiter592
  br i1 %prol.iter594.cmp.not, label %.lr.ph346.prol.loopexit, label %.lr.ph346.prol, !llvm.loop !37

.lr.ph346.prol.loopexit:                          ; preds = %.lr.ph346.prol, %.lr.ph346.preheader542
  %.3230344.unr = phi i64 [ %.3230344.ph, %.lr.ph346.preheader542 ], [ %290, %.lr.ph346.prol ]
  %291 = icmp ult i64 %284, 3
  br i1 %291, label %.loopexit.backedge, label %.lr.ph346

.lr.ph346:                                        ; preds = %.lr.ph346.prol.loopexit, %.lr.ph346
  %.3230344 = phi i64 [ %314, %.lr.ph346 ], [ %.3230344.unr, %.lr.ph346.prol.loopexit ]
  %292 = getelementptr inbounds float, ptr %21, i64 %.3230344
  %293 = load float, ptr %292, align 4, !tbaa !9
  %294 = getelementptr inbounds float, ptr %22, i64 %.3230344
  %295 = load float, ptr %294, align 4, !tbaa !9
  %296 = fdiv float %295, %293
  store float %296, ptr %294, align 4, !tbaa !9
  %297 = getelementptr float, ptr %8, i64 %.3230344
  %298 = load float, ptr %297, align 4, !tbaa !9
  %299 = getelementptr float, ptr %10, i64 %.3230344
  %300 = load float, ptr %299, align 4, !tbaa !9
  %301 = fdiv float %300, %298
  store float %301, ptr %299, align 4, !tbaa !9
  %302 = add nuw i64 %.3230344, 2
  %303 = getelementptr inbounds float, ptr %21, i64 %302
  %304 = load float, ptr %303, align 4, !tbaa !9
  %305 = getelementptr inbounds float, ptr %22, i64 %302
  %306 = load float, ptr %305, align 4, !tbaa !9
  %307 = fdiv float %306, %304
  store float %307, ptr %305, align 4, !tbaa !9
  %308 = add nuw i64 %.3230344, 3
  %309 = getelementptr inbounds float, ptr %21, i64 %308
  %310 = load float, ptr %309, align 4, !tbaa !9
  %311 = getelementptr inbounds float, ptr %22, i64 %308
  %312 = load float, ptr %311, align 4, !tbaa !9
  %313 = fdiv float %312, %310
  store float %313, ptr %311, align 4, !tbaa !9
  %314 = add nuw i64 %.3230344, 4
  %exitcond391.not.3 = icmp eq i64 %308, %.pre.pre
  br i1 %exitcond391.not.3, label %.loopexit.backedge, label %.lr.ph346, !llvm.loop !38

315:                                              ; preds = %._crit_edge
  %.not260339 = icmp slt i64 %.pre.pre, 1
  br i1 %.not260339, label %.loopexit.backedge, label %.lr.ph342.preheader

.lr.ph342.preheader:                              ; preds = %315
  %min.iters.check500 = icmp ult i64 %.pre.pre, 8
  br i1 %min.iters.check500, label %.lr.ph342.preheader544, label %vector.memcheck492

vector.memcheck492:                               ; preds = %.lr.ph342.preheader
  %316 = shl i64 %.pre.pre, 2
  %scevgep493 = getelementptr i8, ptr %10, i64 %316
  %scevgep494 = getelementptr i8, ptr %8, i64 %316
  %bound0495 = icmp ugt ptr %scevgep494, %10
  %bound1496 = icmp ugt ptr %scevgep493, %8
  %found.conflict497 = and i1 %bound0495, %bound1496
  br i1 %found.conflict497, label %.lr.ph342.preheader544, label %vector.ph501

vector.ph501:                                     ; preds = %vector.memcheck492
  %n.vec503 = and i64 %.pre.pre, 9223372036854775800
  %ind.end504 = or disjoint i64 %n.vec503, 1
  br label %vector.body506

vector.body506:                                   ; preds = %vector.body506, %vector.ph501
  %index507 = phi i64 [ 0, %vector.ph501 ], [ %index.next513, %vector.body506 ]
  %317 = getelementptr float, ptr %8, i64 %index507
  %318 = getelementptr inbounds i8, ptr %317, i64 16
  %wide.load509 = load <4 x float>, ptr %317, align 4, !tbaa !9, !alias.scope !39
  %wide.load510 = load <4 x float>, ptr %318, align 4, !tbaa !9, !alias.scope !39
  %319 = getelementptr float, ptr %10, i64 %index507
  %320 = getelementptr inbounds i8, ptr %319, i64 16
  %wide.load511 = load <4 x float>, ptr %319, align 4, !tbaa !9, !alias.scope !42, !noalias !39
  %wide.load512 = load <4 x float>, ptr %320, align 4, !tbaa !9, !alias.scope !42, !noalias !39
  %321 = fmul <4 x float> %wide.load509, %wide.load511
  %322 = fmul <4 x float> %wide.load510, %wide.load512
  store <4 x float> %321, ptr %319, align 4, !tbaa !9, !alias.scope !42, !noalias !39
  store <4 x float> %322, ptr %320, align 4, !tbaa !9, !alias.scope !42, !noalias !39
  %index.next513 = add nuw i64 %index507, 8
  %323 = icmp eq i64 %index.next513, %n.vec503
  br i1 %323, label %middle.block498, label %vector.body506, !llvm.loop !44

middle.block498:                                  ; preds = %vector.body506
  %cmp.n514 = icmp eq i64 %.pre.pre, %n.vec503
  br i1 %cmp.n514, label %.loopexit.backedge, label %.lr.ph342.preheader544

.loopexit.backedge:                               ; preds = %.lr.ph342.prol.loopexit, %.lr.ph342, %.lr.ph346.prol.loopexit, %.lr.ph346, %scalar.ph.prol.loopexit, %scalar.ph, %middle.block498, %middle.block477, %middle.block, %._crit_edge, %315, %276, %.loopexit269
  %.be = phi i64 [ %.pre.pre, %315 ], [ %.pre.pre, %276 ], [ %443, %.loopexit269 ], [ %.pre.pre, %._crit_edge ], [ %443, %middle.block ], [ %.pre.pre, %middle.block477 ], [ %.pre.pre, %middle.block498 ], [ %443, %scalar.ph ], [ %443, %scalar.ph.prol.loopexit ], [ %.pre.pre, %.lr.ph346 ], [ %.pre.pre, %.lr.ph346.prol.loopexit ], [ %.pre.pre, %.lr.ph342 ], [ %.pre.pre, %.lr.ph342.prol.loopexit ]
  br label %.loopexit

.lr.ph342.preheader544:                           ; preds = %middle.block498, %vector.memcheck492, %.lr.ph342.preheader
  %.4231340.ph = phi i64 [ 1, %vector.memcheck492 ], [ 1, %.lr.ph342.preheader ], [ %ind.end504, %middle.block498 ]
  %324 = add nuw i64 %.pre.pre, 1
  %325 = sub i64 %324, %.4231340.ph
  %326 = sub i64 %.pre.pre, %.4231340.ph
  %xtraiter589 = and i64 %325, 3
  %lcmp.mod590.not = icmp eq i64 %xtraiter589, 0
  br i1 %lcmp.mod590.not, label %.lr.ph342.prol.loopexit, label %.lr.ph342.prol

.lr.ph342.prol:                                   ; preds = %.lr.ph342.preheader544, %.lr.ph342.prol
  %.4231340.prol = phi i64 [ %332, %.lr.ph342.prol ], [ %.4231340.ph, %.lr.ph342.preheader544 ]
  %prol.iter591 = phi i64 [ %prol.iter591.next, %.lr.ph342.prol ], [ 0, %.lr.ph342.preheader544 ]
  %327 = getelementptr inbounds float, ptr %21, i64 %.4231340.prol
  %328 = load float, ptr %327, align 4, !tbaa !9
  %329 = getelementptr inbounds float, ptr %22, i64 %.4231340.prol
  %330 = load float, ptr %329, align 4, !tbaa !9
  %331 = fmul float %328, %330
  store float %331, ptr %329, align 4, !tbaa !9
  %332 = add nuw i64 %.4231340.prol, 1
  %prol.iter591.next = add i64 %prol.iter591, 1
  %prol.iter591.cmp.not = icmp eq i64 %prol.iter591.next, %xtraiter589
  br i1 %prol.iter591.cmp.not, label %.lr.ph342.prol.loopexit, label %.lr.ph342.prol, !llvm.loop !45

.lr.ph342.prol.loopexit:                          ; preds = %.lr.ph342.prol, %.lr.ph342.preheader544
  %.4231340.unr = phi i64 [ %.4231340.ph, %.lr.ph342.preheader544 ], [ %332, %.lr.ph342.prol ]
  %333 = icmp ult i64 %326, 3
  br i1 %333, label %.loopexit.backedge, label %.lr.ph342

.lr.ph342:                                        ; preds = %.lr.ph342.prol.loopexit, %.lr.ph342
  %.4231340 = phi i64 [ %356, %.lr.ph342 ], [ %.4231340.unr, %.lr.ph342.prol.loopexit ]
  %334 = getelementptr inbounds float, ptr %21, i64 %.4231340
  %335 = load float, ptr %334, align 4, !tbaa !9
  %336 = getelementptr inbounds float, ptr %22, i64 %.4231340
  %337 = load float, ptr %336, align 4, !tbaa !9
  %338 = fmul float %335, %337
  store float %338, ptr %336, align 4, !tbaa !9
  %339 = getelementptr float, ptr %8, i64 %.4231340
  %340 = load float, ptr %339, align 4, !tbaa !9
  %341 = getelementptr float, ptr %10, i64 %.4231340
  %342 = load float, ptr %341, align 4, !tbaa !9
  %343 = fmul float %340, %342
  store float %343, ptr %341, align 4, !tbaa !9
  %344 = add nuw i64 %.4231340, 2
  %345 = getelementptr inbounds float, ptr %21, i64 %344
  %346 = load float, ptr %345, align 4, !tbaa !9
  %347 = getelementptr inbounds float, ptr %22, i64 %344
  %348 = load float, ptr %347, align 4, !tbaa !9
  %349 = fmul float %346, %348
  store float %349, ptr %347, align 4, !tbaa !9
  %350 = add nuw i64 %.4231340, 3
  %351 = getelementptr inbounds float, ptr %21, i64 %350
  %352 = load float, ptr %351, align 4, !tbaa !9
  %353 = getelementptr inbounds float, ptr %22, i64 %350
  %354 = load float, ptr %353, align 4, !tbaa !9
  %355 = fmul float %352, %354
  store float %355, ptr %353, align 4, !tbaa !9
  %356 = add nuw i64 %.4231340, 4
  %exitcond390.not.3 = icmp eq i64 %350, %.pre.pre
  br i1 %exitcond390.not.3, label %.loopexit.backedge, label %.lr.ph342, !llvm.loop !46

357:                                              ; preds = %.loopexit
  %358 = load i64, ptr %7, align 8, !tbaa !5
  switch i64 %358, label %.loopexit269 [
    i64 1, label %359
    i64 -1, label %399
  ]

359:                                              ; preds = %357
  %360 = load i64, ptr %1, align 8, !tbaa !5
  %.not256351 = icmp slt i64 %360, 1
  br i1 %.not256351, label %.loopexit269, label %.lr.ph354.preheader

.lr.ph354.preheader:                              ; preds = %359
  %min.iters.check435 = icmp ult i64 %360, 4
  br i1 %min.iters.check435, label %.lr.ph354.preheader539, label %vector.memcheck427

vector.memcheck427:                               ; preds = %.lr.ph354.preheader
  %361 = shl i64 %360, 2
  %scevgep428 = getelementptr i8, ptr %10, i64 %361
  %scevgep429 = getelementptr i8, ptr %8, i64 %361
  %bound0430 = icmp ugt ptr %scevgep429, %10
  %bound1431 = icmp ugt ptr %scevgep428, %8
  %found.conflict432 = and i1 %bound0430, %bound1431
  br i1 %found.conflict432, label %.lr.ph354.preheader539, label %vector.ph436

vector.ph436:                                     ; preds = %vector.memcheck427
  %n.vec438 = and i64 %360, 9223372036854775804
  %ind.end439 = or disjoint i64 %n.vec438, 1
  br label %vector.body441

vector.body441:                                   ; preds = %vector.body441, %vector.ph436
  %index442 = phi i64 [ 0, %vector.ph436 ], [ %index.next446, %vector.body441 ]
  %362 = getelementptr float, ptr %8, i64 %index442
  %wide.load444 = load <4 x float>, ptr %362, align 4, !tbaa !9, !alias.scope !47
  %363 = getelementptr float, ptr %10, i64 %index442
  %wide.load445 = load <4 x float>, ptr %363, align 4, !tbaa !9, !alias.scope !50, !noalias !47
  %364 = fdiv <4 x float> %wide.load445, %wide.load444
  store <4 x float> %364, ptr %363, align 4, !tbaa !9, !alias.scope !50, !noalias !47
  %index.next446 = add nuw i64 %index442, 4
  %365 = icmp eq i64 %index.next446, %n.vec438
  br i1 %365, label %middle.block433, label %vector.body441, !llvm.loop !52

middle.block433:                                  ; preds = %vector.body441
  %cmp.n447 = icmp eq i64 %360, %n.vec438
  br i1 %cmp.n447, label %.loopexit269, label %.lr.ph354.preheader539

.lr.ph354.preheader539:                           ; preds = %middle.block433, %vector.memcheck427, %.lr.ph354.preheader
  %.5232352.ph = phi i64 [ 1, %vector.memcheck427 ], [ 1, %.lr.ph354.preheader ], [ %ind.end439, %middle.block433 ]
  %366 = add nuw i64 %360, 1
  %367 = sub i64 %366, %.5232352.ph
  %368 = sub i64 %360, %.5232352.ph
  %xtraiter598 = and i64 %367, 3
  %lcmp.mod599.not = icmp eq i64 %xtraiter598, 0
  br i1 %lcmp.mod599.not, label %.lr.ph354.prol.loopexit, label %.lr.ph354.prol

.lr.ph354.prol:                                   ; preds = %.lr.ph354.preheader539, %.lr.ph354.prol
  %.5232352.prol = phi i64 [ %374, %.lr.ph354.prol ], [ %.5232352.ph, %.lr.ph354.preheader539 ]
  %prol.iter600 = phi i64 [ %prol.iter600.next, %.lr.ph354.prol ], [ 0, %.lr.ph354.preheader539 ]
  %369 = getelementptr inbounds float, ptr %21, i64 %.5232352.prol
  %370 = load float, ptr %369, align 4, !tbaa !9
  %371 = getelementptr inbounds float, ptr %22, i64 %.5232352.prol
  %372 = load float, ptr %371, align 4, !tbaa !9
  %373 = fdiv float %372, %370
  store float %373, ptr %371, align 4, !tbaa !9
  %374 = add nuw i64 %.5232352.prol, 1
  %prol.iter600.next = add i64 %prol.iter600, 1
  %prol.iter600.cmp.not = icmp eq i64 %prol.iter600.next, %xtraiter598
  br i1 %prol.iter600.cmp.not, label %.lr.ph354.prol.loopexit, label %.lr.ph354.prol, !llvm.loop !53

.lr.ph354.prol.loopexit:                          ; preds = %.lr.ph354.prol, %.lr.ph354.preheader539
  %.5232352.unr = phi i64 [ %.5232352.ph, %.lr.ph354.preheader539 ], [ %374, %.lr.ph354.prol ]
  %375 = icmp ult i64 %368, 3
  br i1 %375, label %.loopexit269, label %.lr.ph354

.lr.ph354:                                        ; preds = %.lr.ph354.prol.loopexit, %.lr.ph354
  %.5232352 = phi i64 [ %398, %.lr.ph354 ], [ %.5232352.unr, %.lr.ph354.prol.loopexit ]
  %376 = getelementptr inbounds float, ptr %21, i64 %.5232352
  %377 = load float, ptr %376, align 4, !tbaa !9
  %378 = getelementptr inbounds float, ptr %22, i64 %.5232352
  %379 = load float, ptr %378, align 4, !tbaa !9
  %380 = fdiv float %379, %377
  store float %380, ptr %378, align 4, !tbaa !9
  %381 = getelementptr float, ptr %8, i64 %.5232352
  %382 = load float, ptr %381, align 4, !tbaa !9
  %383 = getelementptr float, ptr %10, i64 %.5232352
  %384 = load float, ptr %383, align 4, !tbaa !9
  %385 = fdiv float %384, %382
  store float %385, ptr %383, align 4, !tbaa !9
  %386 = add nuw i64 %.5232352, 2
  %387 = getelementptr inbounds float, ptr %21, i64 %386
  %388 = load float, ptr %387, align 4, !tbaa !9
  %389 = getelementptr inbounds float, ptr %22, i64 %386
  %390 = load float, ptr %389, align 4, !tbaa !9
  %391 = fdiv float %390, %388
  store float %391, ptr %389, align 4, !tbaa !9
  %392 = add nuw i64 %.5232352, 3
  %393 = getelementptr inbounds float, ptr %21, i64 %392
  %394 = load float, ptr %393, align 4, !tbaa !9
  %395 = getelementptr inbounds float, ptr %22, i64 %392
  %396 = load float, ptr %395, align 4, !tbaa !9
  %397 = fdiv float %396, %394
  store float %397, ptr %395, align 4, !tbaa !9
  %398 = add nuw i64 %.5232352, 4
  %exitcond393.not.3 = icmp eq i64 %392, %360
  br i1 %exitcond393.not.3, label %.loopexit269, label %.lr.ph354, !llvm.loop !54

399:                                              ; preds = %357
  %400 = load i64, ptr %1, align 8, !tbaa !5
  %.not255347 = icmp slt i64 %400, 1
  br i1 %.not255347, label %.loopexit269, label %.lr.ph350.preheader

.lr.ph350.preheader:                              ; preds = %399
  %min.iters.check456 = icmp ult i64 %400, 8
  br i1 %min.iters.check456, label %.lr.ph350.preheader540, label %vector.memcheck448

vector.memcheck448:                               ; preds = %.lr.ph350.preheader
  %401 = shl i64 %400, 2
  %scevgep449 = getelementptr i8, ptr %10, i64 %401
  %scevgep450 = getelementptr i8, ptr %8, i64 %401
  %bound0451 = icmp ugt ptr %scevgep450, %10
  %bound1452 = icmp ugt ptr %scevgep449, %8
  %found.conflict453 = and i1 %bound0451, %bound1452
  br i1 %found.conflict453, label %.lr.ph350.preheader540, label %vector.ph457

vector.ph457:                                     ; preds = %vector.memcheck448
  %n.vec459 = and i64 %400, 9223372036854775800
  %ind.end460 = or disjoint i64 %n.vec459, 1
  br label %vector.body462

vector.body462:                                   ; preds = %vector.body462, %vector.ph457
  %index463 = phi i64 [ 0, %vector.ph457 ], [ %index.next469, %vector.body462 ]
  %402 = getelementptr float, ptr %8, i64 %index463
  %403 = getelementptr inbounds i8, ptr %402, i64 16
  %wide.load465 = load <4 x float>, ptr %402, align 4, !tbaa !9, !alias.scope !55
  %wide.load466 = load <4 x float>, ptr %403, align 4, !tbaa !9, !alias.scope !55
  %404 = getelementptr float, ptr %10, i64 %index463
  %405 = getelementptr inbounds i8, ptr %404, i64 16
  %wide.load467 = load <4 x float>, ptr %404, align 4, !tbaa !9, !alias.scope !58, !noalias !55
  %wide.load468 = load <4 x float>, ptr %405, align 4, !tbaa !9, !alias.scope !58, !noalias !55
  %406 = fmul <4 x float> %wide.load465, %wide.load467
  %407 = fmul <4 x float> %wide.load466, %wide.load468
  store <4 x float> %406, ptr %404, align 4, !tbaa !9, !alias.scope !58, !noalias !55
  store <4 x float> %407, ptr %405, align 4, !tbaa !9, !alias.scope !58, !noalias !55
  %index.next469 = add nuw i64 %index463, 8
  %408 = icmp eq i64 %index.next469, %n.vec459
  br i1 %408, label %middle.block454, label %vector.body462, !llvm.loop !60

middle.block454:                                  ; preds = %vector.body462
  %cmp.n470 = icmp eq i64 %400, %n.vec459
  br i1 %cmp.n470, label %.loopexit269, label %.lr.ph350.preheader540

.lr.ph350.preheader540:                           ; preds = %middle.block454, %vector.memcheck448, %.lr.ph350.preheader
  %.6233348.ph = phi i64 [ 1, %vector.memcheck448 ], [ 1, %.lr.ph350.preheader ], [ %ind.end460, %middle.block454 ]
  %409 = add nuw i64 %400, 1
  %410 = sub i64 %409, %.6233348.ph
  %411 = sub i64 %400, %.6233348.ph
  %xtraiter595 = and i64 %410, 3
  %lcmp.mod596.not = icmp eq i64 %xtraiter595, 0
  br i1 %lcmp.mod596.not, label %.lr.ph350.prol.loopexit, label %.lr.ph350.prol

.lr.ph350.prol:                                   ; preds = %.lr.ph350.preheader540, %.lr.ph350.prol
  %.6233348.prol = phi i64 [ %417, %.lr.ph350.prol ], [ %.6233348.ph, %.lr.ph350.preheader540 ]
  %prol.iter597 = phi i64 [ %prol.iter597.next, %.lr.ph350.prol ], [ 0, %.lr.ph350.preheader540 ]
  %412 = getelementptr inbounds float, ptr %21, i64 %.6233348.prol
  %413 = load float, ptr %412, align 4, !tbaa !9
  %414 = getelementptr inbounds float, ptr %22, i64 %.6233348.prol
  %415 = load float, ptr %414, align 4, !tbaa !9
  %416 = fmul float %413, %415
  store float %416, ptr %414, align 4, !tbaa !9
  %417 = add nuw i64 %.6233348.prol, 1
  %prol.iter597.next = add i64 %prol.iter597, 1
  %prol.iter597.cmp.not = icmp eq i64 %prol.iter597.next, %xtraiter595
  br i1 %prol.iter597.cmp.not, label %.lr.ph350.prol.loopexit, label %.lr.ph350.prol, !llvm.loop !61

.lr.ph350.prol.loopexit:                          ; preds = %.lr.ph350.prol, %.lr.ph350.preheader540
  %.6233348.unr = phi i64 [ %.6233348.ph, %.lr.ph350.preheader540 ], [ %417, %.lr.ph350.prol ]
  %418 = icmp ult i64 %411, 3
  br i1 %418, label %.loopexit269, label %.lr.ph350

.lr.ph350:                                        ; preds = %.lr.ph350.prol.loopexit, %.lr.ph350
  %.6233348 = phi i64 [ %441, %.lr.ph350 ], [ %.6233348.unr, %.lr.ph350.prol.loopexit ]
  %419 = getelementptr inbounds float, ptr %21, i64 %.6233348
  %420 = load float, ptr %419, align 4, !tbaa !9
  %421 = getelementptr inbounds float, ptr %22, i64 %.6233348
  %422 = load float, ptr %421, align 4, !tbaa !9
  %423 = fmul float %420, %422
  store float %423, ptr %421, align 4, !tbaa !9
  %424 = getelementptr float, ptr %8, i64 %.6233348
  %425 = load float, ptr %424, align 4, !tbaa !9
  %426 = getelementptr float, ptr %10, i64 %.6233348
  %427 = load float, ptr %426, align 4, !tbaa !9
  %428 = fmul float %425, %427
  store float %428, ptr %426, align 4, !tbaa !9
  %429 = add nuw i64 %.6233348, 2
  %430 = getelementptr inbounds float, ptr %21, i64 %429
  %431 = load float, ptr %430, align 4, !tbaa !9
  %432 = getelementptr inbounds float, ptr %22, i64 %429
  %433 = load float, ptr %432, align 4, !tbaa !9
  %434 = fmul float %431, %433
  store float %434, ptr %432, align 4, !tbaa !9
  %435 = add nuw i64 %.6233348, 3
  %436 = getelementptr inbounds float, ptr %21, i64 %435
  %437 = load float, ptr %436, align 4, !tbaa !9
  %438 = getelementptr inbounds float, ptr %22, i64 %435
  %439 = load float, ptr %438, align 4, !tbaa !9
  %440 = fmul float %437, %439
  store float %440, ptr %438, align 4, !tbaa !9
  %441 = add nuw i64 %.6233348, 4
  %exitcond392.not.3 = icmp eq i64 %435, %400
  br i1 %exitcond392.not.3, label %.loopexit269, label %.lr.ph350, !llvm.loop !62

.loopexit269:                                     ; preds = %.lr.ph350.prol.loopexit, %.lr.ph350, %.lr.ph354.prol.loopexit, %.lr.ph354, %middle.block454, %middle.block433, %399, %359, %357
  %442 = call i32 @sgetrs_(ptr noundef nonnull %.str.4..str.5, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef %10, ptr noundef nonnull %1, ptr noundef nonnull %9) #4
  %443 = load i64, ptr %1, align 8, !tbaa !5
  %.not257355 = icmp slt i64 %443, 1
  br i1 %.not257355, label %.loopexit.backedge, label %.lr.ph358

.lr.ph358:                                        ; preds = %.loopexit269
  %.idx258 = shl i64 %443, 3
  %444 = getelementptr i8, ptr %22, i64 %.idx258
  %min.iters.check = icmp ult i64 %443, 8
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph358
  %445 = shl i64 %443, 2
  %scevgep = getelementptr i8, ptr %10, i64 %445
  %scevgep422 = getelementptr i8, ptr %10, i64 %.idx258
  %446 = mul i64 %443, 12
  %scevgep423 = getelementptr i8, ptr %10, i64 %446
  %bound0 = icmp ugt ptr %scevgep423, %10
  %bound1 = icmp ult ptr %scevgep422, %scevgep
  %found.conflict = and i1 %bound0, %bound1
  br i1 %found.conflict, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %443, 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
  %447 = getelementptr float, ptr %444, i64 %offset.idx
  %448 = getelementptr i8, ptr %447, i64 16
  %wide.load = load <4 x float>, ptr %447, align 4, !tbaa !9, !alias.scope !63
  %wide.load424 = load <4 x float>, ptr %448, align 4, !tbaa !9, !alias.scope !63
  %449 = getelementptr float, ptr %10, i64 %index
  %450 = getelementptr inbounds i8, ptr %449, i64 16
  %wide.load425 = load <4 x float>, ptr %449, align 4, !tbaa !9, !alias.scope !66, !noalias !63
  %wide.load426 = load <4 x float>, ptr %450, align 4, !tbaa !9, !alias.scope !66, !noalias !63
  %451 = fmul <4 x float> %wide.load, %wide.load425
  %452 = fmul <4 x float> %wide.load424, %wide.load426
  store <4 x float> %451, ptr %449, align 4, !tbaa !9, !alias.scope !66, !noalias !63
  store <4 x float> %452, ptr %450, align 4, !tbaa !9, !alias.scope !66, !noalias !63
  %index.next = add nuw i64 %index, 8
  %453 = icmp eq i64 %index.next, %n.vec
  br i1 %453, label %middle.block, label %vector.body, !llvm.loop !68

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

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph358
  %.7234356.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph358 ], [ %ind.end, %middle.block ]
  %454 = add nuw i64 %443, 1
  %455 = sub i64 %454, %.7234356.ph
  %456 = sub i64 %443, %.7234356.ph
  %xtraiter601 = and i64 %455, 3
  %lcmp.mod602.not = icmp eq i64 %xtraiter601, 0
  br i1 %lcmp.mod602.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader, %scalar.ph.prol
  %.7234356.prol = phi i64 [ %462, %scalar.ph.prol ], [ %.7234356.ph, %scalar.ph.preheader ]
  %prol.iter603 = phi i64 [ %prol.iter603.next, %scalar.ph.prol ], [ 0, %scalar.ph.preheader ]
  %457 = getelementptr float, ptr %444, i64 %.7234356.prol
  %458 = load float, ptr %457, align 4, !tbaa !9
  %459 = getelementptr inbounds float, ptr %22, i64 %.7234356.prol
  %460 = load float, ptr %459, align 4, !tbaa !9
  %461 = fmul float %458, %460
  store float %461, ptr %459, align 4, !tbaa !9
  %462 = add nuw i64 %.7234356.prol, 1
  %prol.iter603.next = add i64 %prol.iter603, 1
  %prol.iter603.cmp.not = icmp eq i64 %prol.iter603.next, %xtraiter601
  br i1 %prol.iter603.cmp.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol, !llvm.loop !69

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %.7234356.unr = phi i64 [ %.7234356.ph, %scalar.ph.preheader ], [ %462, %scalar.ph.prol ]
  %463 = icmp ult i64 %456, 3
  br i1 %463, label %.loopexit.backedge, label %scalar.ph.preheader.new

scalar.ph.preheader.new:                          ; preds = %scalar.ph.prol.loopexit
  %invariant.gep628 = getelementptr i8, ptr %444, i64 4
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph, %scalar.ph.preheader.new
  %.7234356 = phi i64 [ %.7234356.unr, %scalar.ph.preheader.new ], [ %485, %scalar.ph ]
  %464 = getelementptr float, ptr %444, i64 %.7234356
  %465 = load float, ptr %464, align 4, !tbaa !9
  %466 = getelementptr inbounds float, ptr %22, i64 %.7234356
  %467 = load float, ptr %466, align 4, !tbaa !9
  %468 = fmul float %465, %467
  store float %468, ptr %466, align 4, !tbaa !9
  %gep629 = getelementptr float, ptr %invariant.gep628, i64 %.7234356
  %469 = load float, ptr %gep629, align 4, !tbaa !9
  %470 = getelementptr float, ptr %10, i64 %.7234356
  %471 = load float, ptr %470, align 4, !tbaa !9
  %472 = fmul float %469, %471
  store float %472, ptr %470, align 4, !tbaa !9
  %473 = add nuw i64 %.7234356, 2
  %474 = getelementptr float, ptr %444, i64 %473
  %475 = load float, ptr %474, align 4, !tbaa !9
  %476 = getelementptr inbounds float, ptr %22, i64 %473
  %477 = load float, ptr %476, align 4, !tbaa !9
  %478 = fmul float %475, %477
  store float %478, ptr %476, align 4, !tbaa !9
  %479 = add nuw i64 %.7234356, 3
  %480 = getelementptr float, ptr %444, i64 %479
  %481 = load float, ptr %480, align 4, !tbaa !9
  %482 = getelementptr inbounds float, ptr %22, i64 %479
  %483 = load float, ptr %482, align 4, !tbaa !9
  %484 = fmul float %481, %483
  store float %484, ptr %482, align 4, !tbaa !9
  %485 = add nuw i64 %.7234356, 4
  %exitcond394.not.3 = icmp eq i64 %479, %443
  br i1 %exitcond394.not.3, label %.loopexit.backedge, label %scalar.ph, !llvm.loop !70

486:                                              ; preds = %.loopexit
  %487 = load float, ptr %17, align 4, !tbaa !9
  %488 = fcmp une float %487, 0.000000e+00
  %489 = fdiv float 1.000000e+00, %487
  %490 = fpext float %489 to double
  %.0235 = select i1 %488, double %490, double 0.000000e+00
  br label %491

491:                                              ; preds = %41, %486, %.thread
  %.0 = phi double [ 0.000000e+00, %.thread ], [ %.0235, %486 ], [ 1.000000e+00, %41 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #4
  ret double %.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 i32 @slacn2_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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 = { 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 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"float", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = distinct !{!14, !12}
!15 = distinct !{!15, !12}
!16 = distinct !{!16, !12}
!17 = distinct !{!17, !12}
!18 = distinct !{!18, !12}
!19 = distinct !{!19, !12}
!20 = !{!21}
!21 = distinct !{!21, !22}
!22 = distinct !{!22, !"LVerDomain"}
!23 = !{!24}
!24 = distinct !{!24, !22}
!25 = distinct !{!25, !12, !26, !27}
!26 = !{!"llvm.loop.isvectorized", i32 1}
!27 = !{!"llvm.loop.unroll.runtime.disable"}
!28 = distinct !{!28, !29}
!29 = !{!"llvm.loop.unroll.disable"}
!30 = distinct !{!30, !12, !26}
!31 = !{!32}
!32 = distinct !{!32, !33}
!33 = distinct !{!33, !"LVerDomain"}
!34 = !{!35}
!35 = distinct !{!35, !33}
!36 = distinct !{!36, !12, !26, !27}
!37 = distinct !{!37, !29}
!38 = distinct !{!38, !12, !26}
!39 = !{!40}
!40 = distinct !{!40, !41}
!41 = distinct !{!41, !"LVerDomain"}
!42 = !{!43}
!43 = distinct !{!43, !41}
!44 = distinct !{!44, !12, !26, !27}
!45 = distinct !{!45, !29}
!46 = distinct !{!46, !12, !26}
!47 = !{!48}
!48 = distinct !{!48, !49}
!49 = distinct !{!49, !"LVerDomain"}
!50 = !{!51}
!51 = distinct !{!51, !49}
!52 = distinct !{!52, !12, !26, !27}
!53 = distinct !{!53, !29}
!54 = distinct !{!54, !12, !26}
!55 = !{!56}
!56 = distinct !{!56, !57}
!57 = distinct !{!57, !"LVerDomain"}
!58 = !{!59}
!59 = distinct !{!59, !57}
!60 = distinct !{!60, !12, !26, !27}
!61 = distinct !{!61, !29}
!62 = distinct !{!62, !12, !26}
!63 = !{!64}
!64 = distinct !{!64, !65}
!65 = distinct !{!65, !"LVerDomain"}
!66 = !{!67}
!67 = distinct !{!67, !65}
!68 = distinct !{!68, !12, !26, !27}
!69 = distinct !{!69, !29}
!70 = distinct !{!70, !12, !26}


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