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

; 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 [12 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [6 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.3 = external hidden unnamed_addr constant [6 x i8], align 1

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

68:                                               ; preds = %12
  %69 = load ptr, ptr %22, align 8, !tbaa !5
  store i64 -2, ptr %69, align 8, !tbaa !9
  br label %70

70:                                               ; preds = %68, %12
  %71 = load ptr, ptr %22, align 8, !tbaa !5
  %72 = load i64, ptr %71, align 8, !tbaa !9
  %73 = icmp ne i64 %72, 0
  br i1 %73, label %74, label %81

74:                                               ; preds = %70
  %75 = load ptr, ptr %22, align 8, !tbaa !5
  %76 = load i64, ptr %75, align 8, !tbaa !9
  %77 = sub nsw i64 0, %76
  store i64 %77, ptr %30, align 8, !tbaa !9
  %78 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %30)
  %79 = load float, ptr %32, align 4, !tbaa !11
  %80 = fpext float %79 to double
  store double %80, ptr %13, align 8
  store i32 1, ptr %41, align 4
  br label %833

81:                                               ; preds = %70
  %82 = load ptr, ptr %15, align 8, !tbaa !5
  %83 = load i64, ptr %82, align 8, !tbaa !9
  %84 = icmp eq i64 %83, 0
  br i1 %84, label %85, label %88

85:                                               ; preds = %81
  store float 1.000000e+00, ptr %32, align 4, !tbaa !11
  %86 = load float, ptr %32, align 4, !tbaa !11
  %87 = fpext float %86 to double
  store double %87, ptr %13, align 8
  store i32 1, ptr %41, align 4
  br label %833

88:                                               ; preds = %81
  store i64 0, ptr %36, align 8, !tbaa !9
  %89 = load ptr, ptr %14, align 8, !tbaa !5
  %90 = call i64 @lsame_(ptr noundef %89, ptr noundef @.str.1)
  %91 = icmp ne i64 %90, 0
  br i1 %91, label %92, label %93

92:                                               ; preds = %88
  store i64 1, ptr %36, align 8, !tbaa !9
  br label %93

93:                                               ; preds = %92, %88
  %94 = load i64, ptr %36, align 8, !tbaa !9
  %95 = icmp ne i64 %94, 0
  br i1 %95, label %96, label %349

96:                                               ; preds = %93
  %97 = load ptr, ptr %15, align 8, !tbaa !5
  %98 = load i64, ptr %97, align 8, !tbaa !9
  store i64 %98, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %34, align 8, !tbaa !9
  br label %99

99:                                               ; preds = %345, %96
  %100 = load i64, ptr %34, align 8, !tbaa !9
  %101 = load i64, ptr %30, align 8, !tbaa !9
  %102 = icmp sle i64 %100, %101
  br i1 %102, label %103, label %348

103:                                              ; preds = %99
  store float 0.000000e+00, ptr %37, align 4, !tbaa !11
  %104 = load ptr, ptr %20, align 8, !tbaa !5
  %105 = load i64, ptr %104, align 8, !tbaa !9
  %106 = icmp eq i64 %105, 1
  br i1 %106, label %107, label %185

107:                                              ; preds = %103
  %108 = load i64, ptr %34, align 8, !tbaa !9
  store i64 %108, ptr %31, align 8, !tbaa !9
  store i64 1, ptr %35, align 8, !tbaa !9
  br label %109

109:                                              ; preds = %141, %107
  %110 = load i64, ptr %35, align 8, !tbaa !9
  %111 = load i64, ptr %31, align 8, !tbaa !9
  %112 = icmp sle i64 %110, %111
  br i1 %112, label %113, label %144

113:                                              ; preds = %109
  %114 = load ptr, ptr %16, align 8, !tbaa !5
  %115 = load i64, ptr %35, align 8, !tbaa !9
  %116 = load i64, ptr %34, align 8, !tbaa !9
  %117 = load i64, ptr %26, align 8, !tbaa !9
  %118 = mul nsw i64 %116, %117
  %119 = add nsw i64 %115, %118
  %120 = getelementptr inbounds float, ptr %114, i64 %119
  %121 = load float, ptr %120, align 4, !tbaa !11
  %122 = load ptr, ptr %21, align 8, !tbaa !5
  %123 = load i64, ptr %35, align 8, !tbaa !9
  %124 = getelementptr inbounds float, ptr %122, i64 %123
  %125 = load float, ptr %124, align 4, !tbaa !11
  %126 = fmul float %121, %125
  store float %126, ptr %33, align 4, !tbaa !11
  %127 = load float, ptr %33, align 4, !tbaa !11
  %128 = fcmp oge float %127, 0.000000e+00
  br i1 %128, label %129, label %131

129:                                              ; preds = %113
  %130 = load float, ptr %33, align 4, !tbaa !11
  br label %134

131:                                              ; preds = %113
  %132 = load float, ptr %33, align 4, !tbaa !11
  %133 = fneg float %132
  br label %134

134:                                              ; preds = %131, %129
  %135 = phi float [ %130, %129 ], [ %133, %131 ]
  %136 = fpext float %135 to double
  %137 = load float, ptr %37, align 4, !tbaa !11
  %138 = fpext float %137 to double
  %139 = fadd double %138, %136
  %140 = fptrunc double %139 to float
  store float %140, ptr %37, align 4, !tbaa !11
  br label %141

141:                                              ; preds = %134
  %142 = load i64, ptr %35, align 8, !tbaa !9
  %143 = add nsw i64 %142, 1
  store i64 %143, ptr %35, align 8, !tbaa !9
  br label %109, !llvm.loop !13

144:                                              ; preds = %109
  %145 = load ptr, ptr %15, align 8, !tbaa !5
  %146 = load i64, ptr %145, align 8, !tbaa !9
  store i64 %146, ptr %31, align 8, !tbaa !9
  %147 = load i64, ptr %34, align 8, !tbaa !9
  %148 = add nsw i64 %147, 1
  store i64 %148, ptr %35, align 8, !tbaa !9
  br label %149

149:                                              ; preds = %181, %144
  %150 = load i64, ptr %35, align 8, !tbaa !9
  %151 = load i64, ptr %31, align 8, !tbaa !9
  %152 = icmp sle i64 %150, %151
  br i1 %152, label %153, label %184

153:                                              ; preds = %149
  %154 = load ptr, ptr %16, align 8, !tbaa !5
  %155 = load i64, ptr %34, align 8, !tbaa !9
  %156 = load i64, ptr %35, align 8, !tbaa !9
  %157 = load i64, ptr %26, align 8, !tbaa !9
  %158 = mul nsw i64 %156, %157
  %159 = add nsw i64 %155, %158
  %160 = getelementptr inbounds float, ptr %154, i64 %159
  %161 = load float, ptr %160, align 4, !tbaa !11
  %162 = load ptr, ptr %21, align 8, !tbaa !5
  %163 = load i64, ptr %35, align 8, !tbaa !9
  %164 = getelementptr inbounds float, ptr %162, i64 %163
  %165 = load float, ptr %164, align 4, !tbaa !11
  %166 = fmul float %161, %165
  store float %166, ptr %33, align 4, !tbaa !11
  %167 = load float, ptr %33, align 4, !tbaa !11
  %168 = fcmp oge float %167, 0.000000e+00
  br i1 %168, label %169, label %171

169:                                              ; preds = %153
  %170 = load float, ptr %33, align 4, !tbaa !11
  br label %174

171:                                              ; preds = %153
  %172 = load float, ptr %33, align 4, !tbaa !11
  %173 = fneg float %172
  br label %174

174:                                              ; preds = %171, %169
  %175 = phi float [ %170, %169 ], [ %173, %171 ]
  %176 = fpext float %175 to double
  %177 = load float, ptr %37, align 4, !tbaa !11
  %178 = fpext float %177 to double
  %179 = fadd double %178, %176
  %180 = fptrunc double %179 to float
  store float %180, ptr %37, align 4, !tbaa !11
  br label %181

181:                                              ; preds = %174
  %182 = load i64, ptr %35, align 8, !tbaa !9
  %183 = add nsw i64 %182, 1
  store i64 %183, ptr %35, align 8, !tbaa !9
  br label %149, !llvm.loop !15

184:                                              ; preds = %149
  br label %336

185:                                              ; preds = %103
  %186 = load ptr, ptr %20, align 8, !tbaa !5
  %187 = load i64, ptr %186, align 8, !tbaa !9
  %188 = icmp eq i64 %187, 0
  br i1 %188, label %189, label %257

189:                                              ; preds = %185
  %190 = load i64, ptr %34, align 8, !tbaa !9
  store i64 %190, ptr %31, align 8, !tbaa !9
  store i64 1, ptr %35, align 8, !tbaa !9
  br label %191

191:                                              ; preds = %218, %189
  %192 = load i64, ptr %35, align 8, !tbaa !9
  %193 = load i64, ptr %31, align 8, !tbaa !9
  %194 = icmp sle i64 %192, %193
  br i1 %194, label %195, label %221

195:                                              ; preds = %191
  %196 = load ptr, ptr %16, align 8, !tbaa !5
  %197 = load i64, ptr %35, align 8, !tbaa !9
  %198 = load i64, ptr %34, align 8, !tbaa !9
  %199 = load i64, ptr %26, align 8, !tbaa !9
  %200 = mul nsw i64 %198, %199
  %201 = add nsw i64 %197, %200
  %202 = getelementptr inbounds float, ptr %196, i64 %201
  %203 = load float, ptr %202, align 4, !tbaa !11
  store float %203, ptr %33, align 4, !tbaa !11
  %204 = load float, ptr %33, align 4, !tbaa !11
  %205 = fcmp oge float %204, 0.000000e+00
  br i1 %205, label %206, label %208

206:                                              ; preds = %195
  %207 = load float, ptr %33, align 4, !tbaa !11
  br label %211

208:                                              ; preds = %195
  %209 = load float, ptr %33, align 4, !tbaa !11
  %210 = fneg float %209
  br label %211

211:                                              ; preds = %208, %206
  %212 = phi float [ %207, %206 ], [ %210, %208 ]
  %213 = fpext float %212 to double
  %214 = load float, ptr %37, align 4, !tbaa !11
  %215 = fpext float %214 to double
  %216 = fadd double %215, %213
  %217 = fptrunc double %216 to float
  store float %217, ptr %37, align 4, !tbaa !11
  br label %218

218:                                              ; preds = %211
  %219 = load i64, ptr %35, align 8, !tbaa !9
  %220 = add nsw i64 %219, 1
  store i64 %220, ptr %35, align 8, !tbaa !9
  br label %191, !llvm.loop !16

221:                                              ; preds = %191
  %222 = load ptr, ptr %15, align 8, !tbaa !5
  %223 = load i64, ptr %222, align 8, !tbaa !9
  store i64 %223, ptr %31, align 8, !tbaa !9
  %224 = load i64, ptr %34, align 8, !tbaa !9
  %225 = add nsw i64 %224, 1
  store i64 %225, ptr %35, align 8, !tbaa !9
  br label %226

226:                                              ; preds = %253, %221
  %227 = load i64, ptr %35, align 8, !tbaa !9
  %228 = load i64, ptr %31, align 8, !tbaa !9
  %229 = icmp sle i64 %227, %228
  br i1 %229, label %230, label %256

230:                                              ; preds = %226
  %231 = load ptr, ptr %16, align 8, !tbaa !5
  %232 = load i64, ptr %34, align 8, !tbaa !9
  %233 = load i64, ptr %35, align 8, !tbaa !9
  %234 = load i64, ptr %26, align 8, !tbaa !9
  %235 = mul nsw i64 %233, %234
  %236 = add nsw i64 %232, %235
  %237 = getelementptr inbounds float, ptr %231, i64 %236
  %238 = load float, ptr %237, align 4, !tbaa !11
  store float %238, ptr %33, align 4, !tbaa !11
  %239 = load float, ptr %33, align 4, !tbaa !11
  %240 = fcmp oge float %239, 0.000000e+00
  br i1 %240, label %241, label %243

241:                                              ; preds = %230
  %242 = load float, ptr %33, align 4, !tbaa !11
  br label %246

243:                                              ; preds = %230
  %244 = load float, ptr %33, align 4, !tbaa !11
  %245 = fneg float %244
  br label %246

246:                                              ; preds = %243, %241
  %247 = phi float [ %242, %241 ], [ %245, %243 ]
  %248 = fpext float %247 to double
  %249 = load float, ptr %37, align 4, !tbaa !11
  %250 = fpext float %249 to double
  %251 = fadd double %250, %248
  %252 = fptrunc double %251 to float
  store float %252, ptr %37, align 4, !tbaa !11
  br label %253

253:                                              ; preds = %246
  %254 = load i64, ptr %35, align 8, !tbaa !9
  %255 = add nsw i64 %254, 1
  store i64 %255, ptr %35, align 8, !tbaa !9
  br label %226, !llvm.loop !17

256:                                              ; preds = %226
  br label %335

257:                                              ; preds = %185
  %258 = load i64, ptr %34, align 8, !tbaa !9
  store i64 %258, ptr %31, align 8, !tbaa !9
  store i64 1, ptr %35, align 8, !tbaa !9
  br label %259

259:                                              ; preds = %291, %257
  %260 = load i64, ptr %35, align 8, !tbaa !9
  %261 = load i64, ptr %31, align 8, !tbaa !9
  %262 = icmp sle i64 %260, %261
  br i1 %262, label %263, label %294

263:                                              ; preds = %259
  %264 = load ptr, ptr %16, align 8, !tbaa !5
  %265 = load i64, ptr %35, align 8, !tbaa !9
  %266 = load i64, ptr %34, align 8, !tbaa !9
  %267 = load i64, ptr %26, align 8, !tbaa !9
  %268 = mul nsw i64 %266, %267
  %269 = add nsw i64 %265, %268
  %270 = getelementptr inbounds float, ptr %264, i64 %269
  %271 = load float, ptr %270, align 4, !tbaa !11
  %272 = load ptr, ptr %21, align 8, !tbaa !5
  %273 = load i64, ptr %35, align 8, !tbaa !9
  %274 = getelementptr inbounds float, ptr %272, i64 %273
  %275 = load float, ptr %274, align 4, !tbaa !11
  %276 = fdiv float %271, %275
  store float %276, ptr %33, align 4, !tbaa !11
  %277 = load float, ptr %33, align 4, !tbaa !11
  %278 = fcmp oge float %277, 0.000000e+00
  br i1 %278, label %279, label %281

279:                                              ; preds = %263
  %280 = load float, ptr %33, align 4, !tbaa !11
  br label %284

281:                                              ; preds = %263
  %282 = load float, ptr %33, align 4, !tbaa !11
  %283 = fneg float %282
  br label %284

284:                                              ; preds = %281, %279
  %285 = phi float [ %280, %279 ], [ %283, %281 ]
  %286 = fpext float %285 to double
  %287 = load float, ptr %37, align 4, !tbaa !11
  %288 = fpext float %287 to double
  %289 = fadd double %288, %286
  %290 = fptrunc double %289 to float
  store float %290, ptr %37, align 4, !tbaa !11
  br label %291

291:                                              ; preds = %284
  %292 = load i64, ptr %35, align 8, !tbaa !9
  %293 = add nsw i64 %292, 1
  store i64 %293, ptr %35, align 8, !tbaa !9
  br label %259, !llvm.loop !18

294:                                              ; preds = %259
  %295 = load ptr, ptr %15, align 8, !tbaa !5
  %296 = load i64, ptr %295, align 8, !tbaa !9
  store i64 %296, ptr %31, align 8, !tbaa !9
  %297 = load i64, ptr %34, align 8, !tbaa !9
  %298 = add nsw i64 %297, 1
  store i64 %298, ptr %35, align 8, !tbaa !9
  br label %299

299:                                              ; preds = %331, %294
  %300 = load i64, ptr %35, align 8, !tbaa !9
  %301 = load i64, ptr %31, align 8, !tbaa !9
  %302 = icmp sle i64 %300, %301
  br i1 %302, label %303, label %334

303:                                              ; preds = %299
  %304 = load ptr, ptr %16, align 8, !tbaa !5
  %305 = load i64, ptr %34, align 8, !tbaa !9
  %306 = load i64, ptr %35, align 8, !tbaa !9
  %307 = load i64, ptr %26, align 8, !tbaa !9
  %308 = mul nsw i64 %306, %307
  %309 = add nsw i64 %305, %308
  %310 = getelementptr inbounds float, ptr %304, i64 %309
  %311 = load float, ptr %310, align 4, !tbaa !11
  %312 = load ptr, ptr %21, align 8, !tbaa !5
  %313 = load i64, ptr %35, align 8, !tbaa !9
  %314 = getelementptr inbounds float, ptr %312, i64 %313
  %315 = load float, ptr %314, align 4, !tbaa !11
  %316 = fdiv float %311, %315
  store float %316, ptr %33, align 4, !tbaa !11
  %317 = load float, ptr %33, align 4, !tbaa !11
  %318 = fcmp oge float %317, 0.000000e+00
  br i1 %318, label %319, label %321

319:                                              ; preds = %303
  %320 = load float, ptr %33, align 4, !tbaa !11
  br label %324

321:                                              ; preds = %303
  %322 = load float, ptr %33, align 4, !tbaa !11
  %323 = fneg float %322
  br label %324

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

331:                                              ; preds = %324
  %332 = load i64, ptr %35, align 8, !tbaa !9
  %333 = add nsw i64 %332, 1
  store i64 %333, ptr %35, align 8, !tbaa !9
  br label %299, !llvm.loop !19

334:                                              ; preds = %299
  br label %335

335:                                              ; preds = %334, %256
  br label %336

336:                                              ; preds = %335, %184
  %337 = load float, ptr %37, align 4, !tbaa !11
  %338 = load ptr, ptr %23, align 8, !tbaa !5
  %339 = load ptr, ptr %15, align 8, !tbaa !5
  %340 = load i64, ptr %339, align 8, !tbaa !9
  %341 = shl i64 %340, 1
  %342 = load i64, ptr %34, align 8, !tbaa !9
  %343 = add nsw i64 %341, %342
  %344 = getelementptr inbounds float, ptr %338, i64 %343
  store float %337, ptr %344, align 4, !tbaa !11
  br label %345

345:                                              ; preds = %336
  %346 = load i64, ptr %34, align 8, !tbaa !9
  %347 = add nsw i64 %346, 1
  store i64 %347, ptr %34, align 8, !tbaa !9
  br label %99, !llvm.loop !20

348:                                              ; preds = %99
  br label %602

349:                                              ; preds = %93
  %350 = load ptr, ptr %15, align 8, !tbaa !5
  %351 = load i64, ptr %350, align 8, !tbaa !9
  store i64 %351, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %34, align 8, !tbaa !9
  br label %352

352:                                              ; preds = %598, %349
  %353 = load i64, ptr %34, align 8, !tbaa !9
  %354 = load i64, ptr %30, align 8, !tbaa !9
  %355 = icmp sle i64 %353, %354
  br i1 %355, label %356, label %601

356:                                              ; preds = %352
  store float 0.000000e+00, ptr %37, align 4, !tbaa !11
  %357 = load ptr, ptr %20, align 8, !tbaa !5
  %358 = load i64, ptr %357, align 8, !tbaa !9
  %359 = icmp eq i64 %358, 1
  br i1 %359, label %360, label %438

360:                                              ; preds = %356
  %361 = load i64, ptr %34, align 8, !tbaa !9
  store i64 %361, ptr %31, align 8, !tbaa !9
  store i64 1, ptr %35, align 8, !tbaa !9
  br label %362

362:                                              ; preds = %394, %360
  %363 = load i64, ptr %35, align 8, !tbaa !9
  %364 = load i64, ptr %31, align 8, !tbaa !9
  %365 = icmp sle i64 %363, %364
  br i1 %365, label %366, label %397

366:                                              ; preds = %362
  %367 = load ptr, ptr %16, align 8, !tbaa !5
  %368 = load i64, ptr %34, align 8, !tbaa !9
  %369 = load i64, ptr %35, align 8, !tbaa !9
  %370 = load i64, ptr %26, align 8, !tbaa !9
  %371 = mul nsw i64 %369, %370
  %372 = add nsw i64 %368, %371
  %373 = getelementptr inbounds float, ptr %367, i64 %372
  %374 = load float, ptr %373, align 4, !tbaa !11
  %375 = load ptr, ptr %21, align 8, !tbaa !5
  %376 = load i64, ptr %35, align 8, !tbaa !9
  %377 = getelementptr inbounds float, ptr %375, i64 %376
  %378 = load float, ptr %377, align 4, !tbaa !11
  %379 = fmul float %374, %378
  store float %379, ptr %33, align 4, !tbaa !11
  %380 = load float, ptr %33, align 4, !tbaa !11
  %381 = fcmp oge float %380, 0.000000e+00
  br i1 %381, label %382, label %384

382:                                              ; preds = %366
  %383 = load float, ptr %33, align 4, !tbaa !11
  br label %387

384:                                              ; preds = %366
  %385 = load float, ptr %33, align 4, !tbaa !11
  %386 = fneg float %385
  br label %387

387:                                              ; preds = %384, %382
  %388 = phi float [ %383, %382 ], [ %386, %384 ]
  %389 = fpext float %388 to double
  %390 = load float, ptr %37, align 4, !tbaa !11
  %391 = fpext float %390 to double
  %392 = fadd double %391, %389
  %393 = fptrunc double %392 to float
  store float %393, ptr %37, align 4, !tbaa !11
  br label %394

394:                                              ; preds = %387
  %395 = load i64, ptr %35, align 8, !tbaa !9
  %396 = add nsw i64 %395, 1
  store i64 %396, ptr %35, align 8, !tbaa !9
  br label %362, !llvm.loop !21

397:                                              ; preds = %362
  %398 = load ptr, ptr %15, align 8, !tbaa !5
  %399 = load i64, ptr %398, align 8, !tbaa !9
  store i64 %399, ptr %31, align 8, !tbaa !9
  %400 = load i64, ptr %34, align 8, !tbaa !9
  %401 = add nsw i64 %400, 1
  store i64 %401, ptr %35, align 8, !tbaa !9
  br label %402

402:                                              ; preds = %434, %397
  %403 = load i64, ptr %35, align 8, !tbaa !9
  %404 = load i64, ptr %31, align 8, !tbaa !9
  %405 = icmp sle i64 %403, %404
  br i1 %405, label %406, label %437

406:                                              ; preds = %402
  %407 = load ptr, ptr %16, align 8, !tbaa !5
  %408 = load i64, ptr %35, align 8, !tbaa !9
  %409 = load i64, ptr %34, align 8, !tbaa !9
  %410 = load i64, ptr %26, align 8, !tbaa !9
  %411 = mul nsw i64 %409, %410
  %412 = add nsw i64 %408, %411
  %413 = getelementptr inbounds float, ptr %407, i64 %412
  %414 = load float, ptr %413, align 4, !tbaa !11
  %415 = load ptr, ptr %21, align 8, !tbaa !5
  %416 = load i64, ptr %35, align 8, !tbaa !9
  %417 = getelementptr inbounds float, ptr %415, i64 %416
  %418 = load float, ptr %417, align 4, !tbaa !11
  %419 = fmul float %414, %418
  store float %419, ptr %33, align 4, !tbaa !11
  %420 = load float, ptr %33, align 4, !tbaa !11
  %421 = fcmp oge float %420, 0.000000e+00
  br i1 %421, label %422, label %424

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

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

427:                                              ; preds = %424, %422
  %428 = phi float [ %423, %422 ], [ %426, %424 ]
  %429 = fpext float %428 to double
  %430 = load float, ptr %37, align 4, !tbaa !11
  %431 = fpext float %430 to double
  %432 = fadd double %431, %429
  %433 = fptrunc double %432 to float
  store float %433, ptr %37, align 4, !tbaa !11
  br label %434

434:                                              ; preds = %427
  %435 = load i64, ptr %35, align 8, !tbaa !9
  %436 = add nsw i64 %435, 1
  store i64 %436, ptr %35, align 8, !tbaa !9
  br label %402, !llvm.loop !22

437:                                              ; preds = %402
  br label %589

438:                                              ; preds = %356
  %439 = load ptr, ptr %20, align 8, !tbaa !5
  %440 = load i64, ptr %439, align 8, !tbaa !9
  %441 = icmp eq i64 %440, 0
  br i1 %441, label %442, label %510

442:                                              ; preds = %438
  %443 = load i64, ptr %34, align 8, !tbaa !9
  store i64 %443, ptr %31, align 8, !tbaa !9
  store i64 1, ptr %35, align 8, !tbaa !9
  br label %444

444:                                              ; preds = %471, %442
  %445 = load i64, ptr %35, align 8, !tbaa !9
  %446 = load i64, ptr %31, align 8, !tbaa !9
  %447 = icmp sle i64 %445, %446
  br i1 %447, label %448, label %474

448:                                              ; preds = %444
  %449 = load ptr, ptr %16, align 8, !tbaa !5
  %450 = load i64, ptr %34, align 8, !tbaa !9
  %451 = load i64, ptr %35, align 8, !tbaa !9
  %452 = load i64, ptr %26, align 8, !tbaa !9
  %453 = mul nsw i64 %451, %452
  %454 = add nsw i64 %450, %453
  %455 = getelementptr inbounds float, ptr %449, i64 %454
  %456 = load float, ptr %455, align 4, !tbaa !11
  store float %456, ptr %33, align 4, !tbaa !11
  %457 = load float, ptr %33, align 4, !tbaa !11
  %458 = fcmp oge float %457, 0.000000e+00
  br i1 %458, label %459, label %461

459:                                              ; preds = %448
  %460 = load float, ptr %33, align 4, !tbaa !11
  br label %464

461:                                              ; preds = %448
  %462 = load float, ptr %33, align 4, !tbaa !11
  %463 = fneg float %462
  br label %464

464:                                              ; preds = %461, %459
  %465 = phi float [ %460, %459 ], [ %463, %461 ]
  %466 = fpext float %465 to double
  %467 = load float, ptr %37, align 4, !tbaa !11
  %468 = fpext float %467 to double
  %469 = fadd double %468, %466
  %470 = fptrunc double %469 to float
  store float %470, ptr %37, align 4, !tbaa !11
  br label %471

471:                                              ; preds = %464
  %472 = load i64, ptr %35, align 8, !tbaa !9
  %473 = add nsw i64 %472, 1
  store i64 %473, ptr %35, align 8, !tbaa !9
  br label %444, !llvm.loop !23

474:                                              ; preds = %444
  %475 = load ptr, ptr %15, align 8, !tbaa !5
  %476 = load i64, ptr %475, align 8, !tbaa !9
  store i64 %476, ptr %31, align 8, !tbaa !9
  %477 = load i64, ptr %34, align 8, !tbaa !9
  %478 = add nsw i64 %477, 1
  store i64 %478, ptr %35, align 8, !tbaa !9
  br label %479

479:                                              ; preds = %506, %474
  %480 = load i64, ptr %35, align 8, !tbaa !9
  %481 = load i64, ptr %31, align 8, !tbaa !9
  %482 = icmp sle i64 %480, %481
  br i1 %482, label %483, label %509

483:                                              ; preds = %479
  %484 = load ptr, ptr %16, align 8, !tbaa !5
  %485 = load i64, ptr %35, align 8, !tbaa !9
  %486 = load i64, ptr %34, align 8, !tbaa !9
  %487 = load i64, ptr %26, align 8, !tbaa !9
  %488 = mul nsw i64 %486, %487
  %489 = add nsw i64 %485, %488
  %490 = getelementptr inbounds float, ptr %484, i64 %489
  %491 = load float, ptr %490, align 4, !tbaa !11
  store float %491, ptr %33, align 4, !tbaa !11
  %492 = load float, ptr %33, align 4, !tbaa !11
  %493 = fcmp oge float %492, 0.000000e+00
  br i1 %493, label %494, label %496

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

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

499:                                              ; preds = %496, %494
  %500 = phi float [ %495, %494 ], [ %498, %496 ]
  %501 = fpext float %500 to double
  %502 = load float, ptr %37, align 4, !tbaa !11
  %503 = fpext float %502 to double
  %504 = fadd double %503, %501
  %505 = fptrunc double %504 to float
  store float %505, ptr %37, align 4, !tbaa !11
  br label %506

506:                                              ; preds = %499
  %507 = load i64, ptr %35, align 8, !tbaa !9
  %508 = add nsw i64 %507, 1
  store i64 %508, ptr %35, align 8, !tbaa !9
  br label %479, !llvm.loop !24

509:                                              ; preds = %479
  br label %588

510:                                              ; preds = %438
  %511 = load i64, ptr %34, align 8, !tbaa !9
  store i64 %511, ptr %31, align 8, !tbaa !9
  store i64 1, ptr %35, align 8, !tbaa !9
  br label %512

512:                                              ; preds = %544, %510
  %513 = load i64, ptr %35, align 8, !tbaa !9
  %514 = load i64, ptr %31, align 8, !tbaa !9
  %515 = icmp sle i64 %513, %514
  br i1 %515, label %516, label %547

516:                                              ; preds = %512
  %517 = load ptr, ptr %16, align 8, !tbaa !5
  %518 = load i64, ptr %34, align 8, !tbaa !9
  %519 = load i64, ptr %35, align 8, !tbaa !9
  %520 = load i64, ptr %26, align 8, !tbaa !9
  %521 = mul nsw i64 %519, %520
  %522 = add nsw i64 %518, %521
  %523 = getelementptr inbounds float, ptr %517, i64 %522
  %524 = load float, ptr %523, align 4, !tbaa !11
  %525 = load ptr, ptr %21, align 8, !tbaa !5
  %526 = load i64, ptr %35, align 8, !tbaa !9
  %527 = getelementptr inbounds float, ptr %525, i64 %526
  %528 = load float, ptr %527, align 4, !tbaa !11
  %529 = fdiv float %524, %528
  store float %529, ptr %33, align 4, !tbaa !11
  %530 = load float, ptr %33, align 4, !tbaa !11
  %531 = fcmp oge float %530, 0.000000e+00
  br i1 %531, label %532, label %534

532:                                              ; preds = %516
  %533 = load float, ptr %33, align 4, !tbaa !11
  br label %537

534:                                              ; preds = %516
  %535 = load float, ptr %33, align 4, !tbaa !11
  %536 = fneg float %535
  br label %537

537:                                              ; preds = %534, %532
  %538 = phi float [ %533, %532 ], [ %536, %534 ]
  %539 = fpext float %538 to double
  %540 = load float, ptr %37, align 4, !tbaa !11
  %541 = fpext float %540 to double
  %542 = fadd double %541, %539
  %543 = fptrunc double %542 to float
  store float %543, ptr %37, align 4, !tbaa !11
  br label %544

544:                                              ; preds = %537
  %545 = load i64, ptr %35, align 8, !tbaa !9
  %546 = add nsw i64 %545, 1
  store i64 %546, ptr %35, align 8, !tbaa !9
  br label %512, !llvm.loop !25

547:                                              ; preds = %512
  %548 = load ptr, ptr %15, align 8, !tbaa !5
  %549 = load i64, ptr %548, align 8, !tbaa !9
  store i64 %549, ptr %31, align 8, !tbaa !9
  %550 = load i64, ptr %34, align 8, !tbaa !9
  %551 = add nsw i64 %550, 1
  store i64 %551, ptr %35, align 8, !tbaa !9
  br label %552

552:                                              ; preds = %584, %547
  %553 = load i64, ptr %35, align 8, !tbaa !9
  %554 = load i64, ptr %31, align 8, !tbaa !9
  %555 = icmp sle i64 %553, %554
  br i1 %555, label %556, label %587

556:                                              ; preds = %552
  %557 = load ptr, ptr %16, align 8, !tbaa !5
  %558 = load i64, ptr %35, align 8, !tbaa !9
  %559 = load i64, ptr %34, align 8, !tbaa !9
  %560 = load i64, ptr %26, align 8, !tbaa !9
  %561 = mul nsw i64 %559, %560
  %562 = add nsw i64 %558, %561
  %563 = getelementptr inbounds float, ptr %557, i64 %562
  %564 = load float, ptr %563, align 4, !tbaa !11
  %565 = load ptr, ptr %21, align 8, !tbaa !5
  %566 = load i64, ptr %35, align 8, !tbaa !9
  %567 = getelementptr inbounds float, ptr %565, i64 %566
  %568 = load float, ptr %567, align 4, !tbaa !11
  %569 = fdiv float %564, %568
  store float %569, ptr %33, align 4, !tbaa !11
  %570 = load float, ptr %33, align 4, !tbaa !11
  %571 = fcmp oge float %570, 0.000000e+00
  br i1 %571, label %572, label %574

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

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

577:                                              ; preds = %574, %572
  %578 = phi float [ %573, %572 ], [ %576, %574 ]
  %579 = fpext float %578 to double
  %580 = load float, ptr %37, align 4, !tbaa !11
  %581 = fpext float %580 to double
  %582 = fadd double %581, %579
  %583 = fptrunc double %582 to float
  store float %583, ptr %37, align 4, !tbaa !11
  br label %584

584:                                              ; preds = %577
  %585 = load i64, ptr %35, align 8, !tbaa !9
  %586 = add nsw i64 %585, 1
  store i64 %586, ptr %35, align 8, !tbaa !9
  br label %552, !llvm.loop !26

587:                                              ; preds = %552
  br label %588

588:                                              ; preds = %587, %509
  br label %589

589:                                              ; preds = %588, %437
  %590 = load float, ptr %37, align 4, !tbaa !11
  %591 = load ptr, ptr %23, align 8, !tbaa !5
  %592 = load ptr, ptr %15, align 8, !tbaa !5
  %593 = load i64, ptr %592, align 8, !tbaa !9
  %594 = shl i64 %593, 1
  %595 = load i64, ptr %34, align 8, !tbaa !9
  %596 = add nsw i64 %594, %595
  %597 = getelementptr inbounds float, ptr %591, i64 %596
  store float %590, ptr %597, align 4, !tbaa !11
  br label %598

598:                                              ; preds = %589
  %599 = load i64, ptr %34, align 8, !tbaa !9
  %600 = add nsw i64 %599, 1
  store i64 %600, ptr %34, align 8, !tbaa !9
  br label %352, !llvm.loop !27

601:                                              ; preds = %352
  br label %602

602:                                              ; preds = %601, %348
  store float 0.000000e+00, ptr %40, align 4, !tbaa !11
  store i64 0, ptr %38, align 8, !tbaa !9
  br label %603

603:                                              ; preds = %823, %602
  %604 = load ptr, ptr %15, align 8, !tbaa !5
  %605 = load ptr, ptr %23, align 8, !tbaa !5
  %606 = load ptr, ptr %15, align 8, !tbaa !5
  %607 = load i64, ptr %606, align 8, !tbaa !9
  %608 = add nsw i64 %607, 1
  %609 = getelementptr inbounds float, ptr %605, i64 %608
  %610 = load ptr, ptr %23, align 8, !tbaa !5
  %611 = getelementptr inbounds float, ptr %610, i64 1
  %612 = load ptr, ptr %24, align 8, !tbaa !5
  %613 = getelementptr inbounds i64, ptr %612, i64 1
  %614 = getelementptr inbounds [3 x i64], ptr %39, i64 0, i64 0
  %615 = call i32 @slacn2_(ptr noundef %604, ptr noundef %609, ptr noundef %611, ptr noundef %613, ptr noundef %40, ptr noundef %38, ptr noundef %614)
  %616 = load i64, ptr %38, align 8, !tbaa !9
  %617 = icmp ne i64 %616, 0
  br i1 %617, label %618, label %824

618:                                              ; preds = %603
  %619 = load i64, ptr %38, align 8, !tbaa !9
  %620 = icmp eq i64 %619, 2
  br i1 %620, label %621, label %722

621:                                              ; preds = %618
  %622 = load ptr, ptr %15, align 8, !tbaa !5
  %623 = load i64, ptr %622, align 8, !tbaa !9
  store i64 %623, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %34, align 8, !tbaa !9
  br label %624

624:                                              ; preds = %642, %621
  %625 = load i64, ptr %34, align 8, !tbaa !9
  %626 = load i64, ptr %30, align 8, !tbaa !9
  %627 = icmp sle i64 %625, %626
  br i1 %627, label %628, label %645

628:                                              ; preds = %624
  %629 = load ptr, ptr %23, align 8, !tbaa !5
  %630 = load ptr, ptr %15, align 8, !tbaa !5
  %631 = load i64, ptr %630, align 8, !tbaa !9
  %632 = shl i64 %631, 1
  %633 = load i64, ptr %34, align 8, !tbaa !9
  %634 = add nsw i64 %632, %633
  %635 = getelementptr inbounds float, ptr %629, i64 %634
  %636 = load float, ptr %635, align 4, !tbaa !11
  %637 = load ptr, ptr %23, align 8, !tbaa !5
  %638 = load i64, ptr %34, align 8, !tbaa !9
  %639 = getelementptr inbounds float, ptr %637, i64 %638
  %640 = load float, ptr %639, align 4, !tbaa !11
  %641 = fmul float %640, %636
  store float %641, ptr %639, align 4, !tbaa !11
  br label %642

642:                                              ; preds = %628
  %643 = load i64, ptr %34, align 8, !tbaa !9
  %644 = add nsw i64 %643, 1
  store i64 %644, ptr %34, align 8, !tbaa !9
  br label %624, !llvm.loop !28

645:                                              ; preds = %624
  %646 = load i64, ptr %36, align 8, !tbaa !9
  %647 = icmp ne i64 %646, 0
  br i1 %647, label %648, label %659

648:                                              ; preds = %645
  %649 = load ptr, ptr %15, align 8, !tbaa !5
  %650 = load ptr, ptr %18, align 8, !tbaa !5
  %651 = load i64, ptr %29, align 8, !tbaa !9
  %652 = getelementptr inbounds float, ptr %650, i64 %651
  %653 = load ptr, ptr %19, align 8, !tbaa !5
  %654 = load ptr, ptr %23, align 8, !tbaa !5
  %655 = getelementptr inbounds float, ptr %654, i64 1
  %656 = load ptr, ptr %15, align 8, !tbaa !5
  %657 = load ptr, ptr %22, align 8, !tbaa !5
  %658 = call i32 @spotrs_(ptr noundef @.str.2, ptr noundef %649, ptr noundef @c__1, ptr noundef %652, ptr noundef %653, ptr noundef %655, ptr noundef %656, ptr noundef %657)
  br label %670

659:                                              ; preds = %645
  %660 = load ptr, ptr %15, align 8, !tbaa !5
  %661 = load ptr, ptr %18, align 8, !tbaa !5
  %662 = load i64, ptr %29, align 8, !tbaa !9
  %663 = getelementptr inbounds float, ptr %661, i64 %662
  %664 = load ptr, ptr %19, align 8, !tbaa !5
  %665 = load ptr, ptr %23, align 8, !tbaa !5
  %666 = getelementptr inbounds float, ptr %665, i64 1
  %667 = load ptr, ptr %15, align 8, !tbaa !5
  %668 = load ptr, ptr %22, align 8, !tbaa !5
  %669 = call i32 @spotrs_(ptr noundef @.str.3, ptr noundef %660, ptr noundef @c__1, ptr noundef %663, ptr noundef %664, ptr noundef %666, ptr noundef %667, ptr noundef %668)
  br label %670

670:                                              ; preds = %659, %648
  %671 = load ptr, ptr %20, align 8, !tbaa !5
  %672 = load i64, ptr %671, align 8, !tbaa !9
  %673 = icmp eq i64 %672, 1
  br i1 %673, label %674, label %695

674:                                              ; preds = %670
  %675 = load ptr, ptr %15, align 8, !tbaa !5
  %676 = load i64, ptr %675, align 8, !tbaa !9
  store i64 %676, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %34, align 8, !tbaa !9
  br label %677

677:                                              ; preds = %691, %674
  %678 = load i64, ptr %34, align 8, !tbaa !9
  %679 = load i64, ptr %30, align 8, !tbaa !9
  %680 = icmp sle i64 %678, %679
  br i1 %680, label %681, label %694

681:                                              ; preds = %677
  %682 = load ptr, ptr %21, align 8, !tbaa !5
  %683 = load i64, ptr %34, align 8, !tbaa !9
  %684 = getelementptr inbounds float, ptr %682, i64 %683
  %685 = load float, ptr %684, align 4, !tbaa !11
  %686 = load ptr, ptr %23, align 8, !tbaa !5
  %687 = load i64, ptr %34, align 8, !tbaa !9
  %688 = getelementptr inbounds float, ptr %686, i64 %687
  %689 = load float, ptr %688, align 4, !tbaa !11
  %690 = fdiv float %689, %685
  store float %690, ptr %688, align 4, !tbaa !11
  br label %691

691:                                              ; preds = %681
  %692 = load i64, ptr %34, align 8, !tbaa !9
  %693 = add nsw i64 %692, 1
  store i64 %693, ptr %34, align 8, !tbaa !9
  br label %677, !llvm.loop !29

694:                                              ; preds = %677
  br label %721

695:                                              ; preds = %670
  %696 = load ptr, ptr %20, align 8, !tbaa !5
  %697 = load i64, ptr %696, align 8, !tbaa !9
  %698 = icmp eq i64 %697, -1
  br i1 %698, label %699, label %720

699:                                              ; preds = %695
  %700 = load ptr, ptr %15, align 8, !tbaa !5
  %701 = load i64, ptr %700, align 8, !tbaa !9
  store i64 %701, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %34, align 8, !tbaa !9
  br label %702

702:                                              ; preds = %716, %699
  %703 = load i64, ptr %34, align 8, !tbaa !9
  %704 = load i64, ptr %30, align 8, !tbaa !9
  %705 = icmp sle i64 %703, %704
  br i1 %705, label %706, label %719

706:                                              ; preds = %702
  %707 = load ptr, ptr %21, align 8, !tbaa !5
  %708 = load i64, ptr %34, align 8, !tbaa !9
  %709 = getelementptr inbounds float, ptr %707, i64 %708
  %710 = load float, ptr %709, align 4, !tbaa !11
  %711 = load ptr, ptr %23, align 8, !tbaa !5
  %712 = load i64, ptr %34, align 8, !tbaa !9
  %713 = getelementptr inbounds float, ptr %711, i64 %712
  %714 = load float, ptr %713, align 4, !tbaa !11
  %715 = fmul float %714, %710
  store float %715, ptr %713, align 4, !tbaa !11
  br label %716

716:                                              ; preds = %706
  %717 = load i64, ptr %34, align 8, !tbaa !9
  %718 = add nsw i64 %717, 1
  store i64 %718, ptr %34, align 8, !tbaa !9
  br label %702, !llvm.loop !30

719:                                              ; preds = %702
  br label %720

720:                                              ; preds = %719, %695
  br label %721

721:                                              ; preds = %720, %694
  br label %823

722:                                              ; preds = %618
  %723 = load ptr, ptr %20, align 8, !tbaa !5
  %724 = load i64, ptr %723, align 8, !tbaa !9
  %725 = icmp eq i64 %724, 1
  br i1 %725, label %726, label %747

726:                                              ; preds = %722
  %727 = load ptr, ptr %15, align 8, !tbaa !5
  %728 = load i64, ptr %727, align 8, !tbaa !9
  store i64 %728, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %34, align 8, !tbaa !9
  br label %729

729:                                              ; preds = %743, %726
  %730 = load i64, ptr %34, align 8, !tbaa !9
  %731 = load i64, ptr %30, align 8, !tbaa !9
  %732 = icmp sle i64 %730, %731
  br i1 %732, label %733, label %746

733:                                              ; preds = %729
  %734 = load ptr, ptr %21, align 8, !tbaa !5
  %735 = load i64, ptr %34, align 8, !tbaa !9
  %736 = getelementptr inbounds float, ptr %734, i64 %735
  %737 = load float, ptr %736, align 4, !tbaa !11
  %738 = load ptr, ptr %23, align 8, !tbaa !5
  %739 = load i64, ptr %34, align 8, !tbaa !9
  %740 = getelementptr inbounds float, ptr %738, i64 %739
  %741 = load float, ptr %740, align 4, !tbaa !11
  %742 = fdiv float %741, %737
  store float %742, ptr %740, align 4, !tbaa !11
  br label %743

743:                                              ; preds = %733
  %744 = load i64, ptr %34, align 8, !tbaa !9
  %745 = add nsw i64 %744, 1
  store i64 %745, ptr %34, align 8, !tbaa !9
  br label %729, !llvm.loop !31

746:                                              ; preds = %729
  br label %773

747:                                              ; preds = %722
  %748 = load ptr, ptr %20, align 8, !tbaa !5
  %749 = load i64, ptr %748, align 8, !tbaa !9
  %750 = icmp eq i64 %749, -1
  br i1 %750, label %751, label %772

751:                                              ; preds = %747
  %752 = load ptr, ptr %15, align 8, !tbaa !5
  %753 = load i64, ptr %752, align 8, !tbaa !9
  store i64 %753, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %34, align 8, !tbaa !9
  br label %754

754:                                              ; preds = %768, %751
  %755 = load i64, ptr %34, align 8, !tbaa !9
  %756 = load i64, ptr %30, align 8, !tbaa !9
  %757 = icmp sle i64 %755, %756
  br i1 %757, label %758, label %771

758:                                              ; preds = %754
  %759 = load ptr, ptr %21, align 8, !tbaa !5
  %760 = load i64, ptr %34, align 8, !tbaa !9
  %761 = getelementptr inbounds float, ptr %759, i64 %760
  %762 = load float, ptr %761, align 4, !tbaa !11
  %763 = load ptr, ptr %23, align 8, !tbaa !5
  %764 = load i64, ptr %34, align 8, !tbaa !9
  %765 = getelementptr inbounds float, ptr %763, i64 %764
  %766 = load float, ptr %765, align 4, !tbaa !11
  %767 = fmul float %766, %762
  store float %767, ptr %765, align 4, !tbaa !11
  br label %768

768:                                              ; preds = %758
  %769 = load i64, ptr %34, align 8, !tbaa !9
  %770 = add nsw i64 %769, 1
  store i64 %770, ptr %34, align 8, !tbaa !9
  br label %754, !llvm.loop !32

771:                                              ; preds = %754
  br label %772

772:                                              ; preds = %771, %747
  br label %773

773:                                              ; preds = %772, %746
  %774 = load i64, ptr %36, align 8, !tbaa !9
  %775 = icmp ne i64 %774, 0
  br i1 %775, label %776, label %787

776:                                              ; preds = %773
  %777 = load ptr, ptr %15, align 8, !tbaa !5
  %778 = load ptr, ptr %18, align 8, !tbaa !5
  %779 = load i64, ptr %29, align 8, !tbaa !9
  %780 = getelementptr inbounds float, ptr %778, i64 %779
  %781 = load ptr, ptr %19, align 8, !tbaa !5
  %782 = load ptr, ptr %23, align 8, !tbaa !5
  %783 = getelementptr inbounds float, ptr %782, i64 1
  %784 = load ptr, ptr %15, align 8, !tbaa !5
  %785 = load ptr, ptr %22, align 8, !tbaa !5
  %786 = call i32 @spotrs_(ptr noundef @.str.2, ptr noundef %777, ptr noundef @c__1, ptr noundef %780, ptr noundef %781, ptr noundef %783, ptr noundef %784, ptr noundef %785)
  br label %798

787:                                              ; preds = %773
  %788 = load ptr, ptr %15, align 8, !tbaa !5
  %789 = load ptr, ptr %18, align 8, !tbaa !5
  %790 = load i64, ptr %29, align 8, !tbaa !9
  %791 = getelementptr inbounds float, ptr %789, i64 %790
  %792 = load ptr, ptr %19, align 8, !tbaa !5
  %793 = load ptr, ptr %23, align 8, !tbaa !5
  %794 = getelementptr inbounds float, ptr %793, i64 1
  %795 = load ptr, ptr %15, align 8, !tbaa !5
  %796 = load ptr, ptr %22, align 8, !tbaa !5
  %797 = call i32 @spotrs_(ptr noundef @.str.3, ptr noundef %788, ptr noundef @c__1, ptr noundef %791, ptr noundef %792, ptr noundef %794, ptr noundef %795, ptr noundef %796)
  br label %798

798:                                              ; preds = %787, %776
  %799 = load ptr, ptr %15, align 8, !tbaa !5
  %800 = load i64, ptr %799, align 8, !tbaa !9
  store i64 %800, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %34, align 8, !tbaa !9
  br label %801

801:                                              ; preds = %819, %798
  %802 = load i64, ptr %34, align 8, !tbaa !9
  %803 = load i64, ptr %30, align 8, !tbaa !9
  %804 = icmp sle i64 %802, %803
  br i1 %804, label %805, label %822

805:                                              ; preds = %801
  %806 = load ptr, ptr %23, align 8, !tbaa !5
  %807 = load ptr, ptr %15, align 8, !tbaa !5
  %808 = load i64, ptr %807, align 8, !tbaa !9
  %809 = shl i64 %808, 1
  %810 = load i64, ptr %34, align 8, !tbaa !9
  %811 = add nsw i64 %809, %810
  %812 = getelementptr inbounds float, ptr %806, i64 %811
  %813 = load float, ptr %812, align 4, !tbaa !11
  %814 = load ptr, ptr %23, align 8, !tbaa !5
  %815 = load i64, ptr %34, align 8, !tbaa !9
  %816 = getelementptr inbounds float, ptr %814, i64 %815
  %817 = load float, ptr %816, align 4, !tbaa !11
  %818 = fmul float %817, %813
  store float %818, ptr %816, align 4, !tbaa !11
  br label %819

819:                                              ; preds = %805
  %820 = load i64, ptr %34, align 8, !tbaa !9
  %821 = add nsw i64 %820, 1
  store i64 %821, ptr %34, align 8, !tbaa !9
  br label %801, !llvm.loop !33

822:                                              ; preds = %801
  br label %823

823:                                              ; preds = %822, %721
  br label %603

824:                                              ; preds = %603
  %825 = load float, ptr %40, align 4, !tbaa !11
  %826 = fcmp une float %825, 0.000000e+00
  br i1 %826, label %827, label %830

827:                                              ; preds = %824
  %828 = load float, ptr %40, align 4, !tbaa !11
  %829 = fdiv float 1.000000e+00, %828
  store float %829, ptr %32, align 4, !tbaa !11
  br label %830

830:                                              ; preds = %827, %824
  %831 = load float, ptr %32, align 4, !tbaa !11
  %832 = fpext float %831 to double
  store double %832, ptr %13, align 8
  store i32 1, ptr %41, align 4
  br label %833

833:                                              ; preds = %830, %85, %74
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 24, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 4, 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
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #3
  %834 = load double, ptr %13, align 8
  ret double %834
}

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

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

declare i64 @lsame_(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 @spotrs_(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}
!28 = distinct !{!28, !14}
!29 = distinct !{!29, !14}
!30 = distinct !{!30, !14}
!31 = distinct !{!31, !14}
!32 = distinct !{!32, !14}
!33 = distinct !{!33, !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 [12 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [6 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.3 = external hidden unnamed_addr constant [6 x i8], align 1

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

24:                                               ; preds = %12
  store i64 2, ptr %13, align 8, !tbaa !5
  %25 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %13) #3
  br label %564

26:                                               ; preds = %12
  %27 = load i64, ptr %1, align 8, !tbaa !5
  %28 = icmp eq i64 %27, 0
  br i1 %28, label %564, label %29

29:                                               ; preds = %26
  %30 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #3
  %.not319 = icmp eq i64 %30, 0
  %31 = load i64, ptr %1, align 8, !tbaa !5
  %.not321423 = icmp slt i64 %31, 1
  br i1 %.not319, label %156, label %32

32:                                               ; preds = %29
  br i1 %.not321423, label %.loopexit357, label %.lr.ph394

.lr.ph394:                                        ; preds = %32
  %33 = load i64, ptr %6, align 8, !tbaa !5
  %.idx344 = shl i64 %31, 3
  %34 = getelementptr i8, ptr %21, i64 %.idx344
  %35 = add nuw i64 %31, 1
  switch i64 %33, label %.preheader360 [
    i64 1, label %.preheader363.us
    i64 0, label %.preheader366.us
  ]

.preheader363.us:                                 ; preds = %.lr.ph394, %.loopexit362.us
  %indvar685 = phi i64 [ %indvar.next686, %.loopexit362.us ], [ 0, %.lr.ph394 ]
  %indvars.iv478 = phi i64 [ %indvars.iv.next479, %.loopexit362.us ], [ 2, %.lr.ph394 ]
  %.0302392.us = phi i64 [ %78, %.loopexit362.us ], [ %33, %.lr.ph394 ]
  %36 = mul nsw i64 %.0302392.us, %17
  %invariant.gep373.us = getelementptr float, ptr %19, i64 %36
  %37 = icmp eq i64 %indvar685, 0
  br i1 %37, label %.preheader361.us.unr-lcssa, label %.preheader363.us.new

.preheader363.us.new:                             ; preds = %.preheader363.us
  %38 = add i64 %indvar685, 1
  %unroll_iter690 = and i64 %38, -2
  %invariant.gep765 = getelementptr i8, ptr %invariant.gep373.us, i64 4
  br label %39

39:                                               ; preds = %39, %.preheader363.us.new
  %.0376.us = phi float [ 0.000000e+00, %.preheader363.us.new ], [ %55, %39 ]
  %.0290375.us = phi i64 [ 1, %.preheader363.us.new ], [ %56, %39 ]
  %niter691 = phi i64 [ 0, %.preheader363.us.new ], [ %niter691.next.1, %39 ]
  %gep374.us = getelementptr float, ptr %invariant.gep373.us, i64 %.0290375.us
  %40 = load float, ptr %gep374.us, align 4, !tbaa !9
  %41 = getelementptr inbounds float, ptr %20, i64 %.0290375.us
  %42 = load float, ptr %41, align 4, !tbaa !9
  %43 = fmul float %40, %42
  %44 = fcmp oge float %43, 0.000000e+00
  %45 = fneg float %43
  %46 = select i1 %44, float %43, float %45
  %47 = fadd float %.0376.us, %46
  %gep766 = getelementptr float, ptr %invariant.gep765, i64 %.0290375.us
  %48 = load float, ptr %gep766, align 4, !tbaa !9
  %49 = getelementptr float, ptr %7, i64 %.0290375.us
  %50 = load float, ptr %49, align 4, !tbaa !9
  %51 = fmul float %48, %50
  %52 = fcmp oge float %51, 0.000000e+00
  %53 = fneg float %51
  %54 = select i1 %52, float %51, float %53
  %55 = fadd float %47, %54
  %56 = add nuw i64 %.0290375.us, 2
  %niter691.next.1 = add i64 %niter691, 2
  %niter691.ncmp.1 = icmp eq i64 %niter691.next.1, %unroll_iter690
  br i1 %niter691.ncmp.1, label %.preheader361.us.unr-lcssa, label %39, !llvm.loop !11

57:                                               ; preds = %.lr.ph380.us, %57
  %.1379.us = phi float [ %.lcssa678, %.lr.ph380.us ], [ %67, %57 ]
  %.1291.in378.us = phi i64 [ %.0302392.us, %.lr.ph380.us ], [ %.1291.us, %57 ]
  %.1291.us = add nuw nsw i64 %.1291.in378.us, 1
  %58 = mul nsw i64 %.1291.us, %17
  %59 = getelementptr float, ptr %79, i64 %58
  %60 = load float, ptr %59, align 4, !tbaa !9
  %61 = getelementptr float, ptr %7, i64 %.1291.in378.us
  %62 = load float, ptr %61, align 4, !tbaa !9
  %63 = fmul float %60, %62
  %64 = fcmp oge float %63, 0.000000e+00
  %65 = fneg float %63
  %66 = select i1 %64, float %63, float %65
  %67 = fadd float %.1379.us, %66
  %.not343.not.us = icmp slt i64 %.1291.us, %31
  br i1 %.not343.not.us, label %57, label %.loopexit362.us, !llvm.loop !13

.preheader361.us.unr-lcssa:                       ; preds = %39, %.preheader363.us
  %.lcssa678.ph = phi float [ poison, %.preheader363.us ], [ %55, %39 ]
  %.0376.us.unr = phi float [ 0.000000e+00, %.preheader363.us ], [ %55, %39 ]
  %.0290375.us.unr = phi i64 [ 1, %.preheader363.us ], [ %56, %39 ]
  %68 = and i64 %indvar685, 1
  %lcmp.mod688.not.not = icmp eq i64 %68, 0
  br i1 %lcmp.mod688.not.not, label %.preheader361.us.epilog-lcssa, label %.preheader361.us

.preheader361.us.epilog-lcssa:                    ; preds = %.preheader361.us.unr-lcssa
  %gep374.us.epil = getelementptr float, ptr %invariant.gep373.us, i64 %.0290375.us.unr
  %69 = load float, ptr %gep374.us.epil, align 4, !tbaa !9
  %70 = getelementptr inbounds float, ptr %20, i64 %.0290375.us.unr
  %71 = load float, ptr %70, align 4, !tbaa !9
  %72 = fmul float %69, %71
  %73 = fcmp oge float %72, 0.000000e+00
  %74 = fneg float %72
  %75 = select i1 %73, float %72, float %74
  %76 = fadd float %.0376.us.unr, %75
  br label %.preheader361.us

.preheader361.us:                                 ; preds = %.preheader361.us.unr-lcssa, %.preheader361.us.epilog-lcssa
  %.lcssa678 = phi float [ %.lcssa678.ph, %.preheader361.us.unr-lcssa ], [ %76, %.preheader361.us.epilog-lcssa ]
  %.not343.not377.us = icmp slt i64 %.0302392.us, %31
  br i1 %.not343.not377.us, label %.lr.ph380.us, label %.loopexit362.us

.loopexit362.us:                                  ; preds = %57, %.preheader361.us
  %.1.lcssa.us = phi float [ %.lcssa678, %.preheader361.us ], [ %67, %57 ]
  %77 = getelementptr float, ptr %34, i64 %.0302392.us
  store float %.1.lcssa.us, ptr %77, align 4, !tbaa !9
  %78 = add nuw nsw i64 %.0302392.us, 1
  %indvars.iv.next479 = add nuw i64 %indvars.iv478, 1
  %exitcond481.not = icmp eq i64 %indvars.iv478, %35
  %indvar.next686 = add i64 %indvar685, 1
  br i1 %exitcond481.not, label %.loopexit357, label %.preheader363.us, !llvm.loop !14

.lr.ph380.us:                                     ; preds = %.preheader361.us
  %79 = getelementptr float, ptr %19, i64 %.0302392.us
  br label %57

.preheader366.us:                                 ; preds = %.lr.ph394, %.loopexit365.us
  %indvar = phi i64 [ %indvar.next, %.loopexit365.us ], [ 0, %.lr.ph394 ]
  %indvars.iv = phi i64 [ %indvars.iv.next, %.loopexit365.us ], [ 2, %.lr.ph394 ]
  %.0302392.us396 = phi i64 [ %110, %.loopexit365.us ], [ 1, %.lr.ph394 ]
  %80 = mul nsw i64 %.0302392.us396, %17
  %invariant.gep.us = getelementptr float, ptr %19, i64 %80
  %81 = icmp eq i64 %indvar, 0
  br i1 %81, label %.preheader364.us.unr-lcssa, label %.preheader366.us.new

.preheader366.us.new:                             ; preds = %.preheader366.us
  %82 = add i64 %indvar, 1
  %unroll_iter = and i64 %82, -2
  %invariant.gep = getelementptr i8, ptr %invariant.gep.us, i64 4
  br label %83

83:                                               ; preds = %83, %.preheader366.us.new
  %.2369.us = phi float [ 0.000000e+00, %.preheader366.us.new ], [ %93, %83 ]
  %.2292368.us = phi i64 [ 1, %.preheader366.us.new ], [ %94, %83 ]
  %niter = phi i64 [ 0, %.preheader366.us.new ], [ %niter.next.1, %83 ]
  %gep.us = getelementptr float, ptr %invariant.gep.us, i64 %.2292368.us
  %84 = load float, ptr %gep.us, align 4, !tbaa !9
  %85 = fcmp oge float %84, 0.000000e+00
  %86 = fneg float %84
  %87 = select i1 %85, float %84, float %86
  %88 = fadd float %.2369.us, %87
  %gep = getelementptr float, ptr %invariant.gep, i64 %.2292368.us
  %89 = load float, ptr %gep, align 4, !tbaa !9
  %90 = fcmp oge float %89, 0.000000e+00
  %91 = fneg float %89
  %92 = select i1 %90, float %89, float %91
  %93 = fadd float %88, %92
  %94 = add nuw i64 %.2292368.us, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %.preheader364.us.unr-lcssa, label %83, !llvm.loop !15

95:                                               ; preds = %.lr.ph.us, %95
  %.3372.us = phi float [ %.lcssa681, %.lr.ph.us ], [ %102, %95 ]
  %.3293.in371.us = phi i64 [ %.0302392.us396, %.lr.ph.us ], [ %.3293.us, %95 ]
  %.3293.us = add nuw nsw i64 %.3293.in371.us, 1
  %96 = mul nsw i64 %.3293.us, %17
  %97 = getelementptr float, ptr %111, i64 %96
  %98 = load float, ptr %97, align 4, !tbaa !9
  %99 = fcmp oge float %98, 0.000000e+00
  %100 = fneg float %98
  %101 = select i1 %99, float %98, float %100
  %102 = fadd float %.3372.us, %101
  %.not341.not.us = icmp slt i64 %.3293.us, %31
  br i1 %.not341.not.us, label %95, label %.loopexit365.us, !llvm.loop !16

.preheader364.us.unr-lcssa:                       ; preds = %83, %.preheader366.us
  %.lcssa681.ph = phi float [ poison, %.preheader366.us ], [ %93, %83 ]
  %.2369.us.unr = phi float [ 0.000000e+00, %.preheader366.us ], [ %93, %83 ]
  %.2292368.us.unr = phi i64 [ 1, %.preheader366.us ], [ %94, %83 ]
  %103 = and i64 %indvar, 1
  %lcmp.mod.not.not = icmp eq i64 %103, 0
  br i1 %lcmp.mod.not.not, label %.preheader364.us.epilog-lcssa, label %.preheader364.us

.preheader364.us.epilog-lcssa:                    ; preds = %.preheader364.us.unr-lcssa
  %gep.us.epil = getelementptr float, ptr %invariant.gep.us, i64 %.2292368.us.unr
  %104 = load float, ptr %gep.us.epil, align 4, !tbaa !9
  %105 = fcmp oge float %104, 0.000000e+00
  %106 = fneg float %104
  %107 = select i1 %105, float %104, float %106
  %108 = fadd float %.2369.us.unr, %107
  br label %.preheader364.us

.preheader364.us:                                 ; preds = %.preheader364.us.unr-lcssa, %.preheader364.us.epilog-lcssa
  %.lcssa681 = phi float [ %.lcssa681.ph, %.preheader364.us.unr-lcssa ], [ %108, %.preheader364.us.epilog-lcssa ]
  %.not341.not370.us = icmp slt i64 %.0302392.us396, %31
  br i1 %.not341.not370.us, label %.lr.ph.us, label %.loopexit365.us

.loopexit365.us:                                  ; preds = %95, %.preheader364.us
  %.3.lcssa.us = phi float [ %.lcssa681, %.preheader364.us ], [ %102, %95 ]
  %109 = getelementptr float, ptr %34, i64 %.0302392.us396
  store float %.3.lcssa.us, ptr %109, align 4, !tbaa !9
  %110 = add nuw nsw i64 %.0302392.us396, 1
  %indvars.iv.next = add nuw i64 %indvars.iv, 1
  %exitcond477.not = icmp eq i64 %indvars.iv, %35
  %indvar.next = add i64 %indvar, 1
  br i1 %exitcond477.not, label %.loopexit357, label %.preheader366.us, !llvm.loop !14

.lr.ph.us:                                        ; preds = %.preheader364.us
  %111 = getelementptr float, ptr %19, i64 %.0302392.us396
  br label %95

.preheader360:                                    ; preds = %.lr.ph394, %.loopexit359
  %indvar693 = phi i64 [ %indvar.next694, %.loopexit359 ], [ 0, %.lr.ph394 ]
  %indvars.iv482 = phi i64 [ %indvars.iv.next483, %.loopexit359 ], [ 2, %.lr.ph394 ]
  %.0302392 = phi i64 [ %155, %.loopexit359 ], [ 1, %.lr.ph394 ]
  %112 = mul nsw i64 %.0302392, %17
  %invariant.gep382 = getelementptr float, ptr %19, i64 %112
  %113 = icmp eq i64 %indvar693, 0
  br i1 %113, label %.preheader358.unr-lcssa, label %.preheader360.new

.preheader360.new:                                ; preds = %.preheader360
  %114 = add i64 %indvar693, 1
  %unroll_iter698 = and i64 %114, -2
  %invariant.gep767 = getelementptr i8, ptr %invariant.gep382, i64 4
  br label %125

.preheader358.unr-lcssa:                          ; preds = %125, %.preheader360
  %.lcssa675.ph = phi float [ poison, %.preheader360 ], [ %141, %125 ]
  %.4385.unr = phi float [ 0.000000e+00, %.preheader360 ], [ %141, %125 ]
  %.4294384.unr = phi i64 [ 1, %.preheader360 ], [ %142, %125 ]
  %115 = and i64 %indvar693, 1
  %lcmp.mod696.not.not = icmp eq i64 %115, 0
  br i1 %lcmp.mod696.not.not, label %.preheader358.epilog-lcssa, label %.preheader358

.preheader358.epilog-lcssa:                       ; preds = %.preheader358.unr-lcssa
  %gep383.epil = getelementptr float, ptr %invariant.gep382, i64 %.4294384.unr
  %116 = load float, ptr %gep383.epil, align 4, !tbaa !9
  %117 = getelementptr inbounds float, ptr %20, i64 %.4294384.unr
  %118 = load float, ptr %117, align 4, !tbaa !9
  %119 = fdiv float %116, %118
  %120 = fcmp oge float %119, 0.000000e+00
  %121 = fneg float %119
  %122 = select i1 %120, float %119, float %121
  %123 = fadd float %.4385.unr, %122
  br label %.preheader358

.preheader358:                                    ; preds = %.preheader358.unr-lcssa, %.preheader358.epilog-lcssa
  %.lcssa675 = phi float [ %.lcssa675.ph, %.preheader358.unr-lcssa ], [ %123, %.preheader358.epilog-lcssa ]
  %.not339.not386 = icmp slt i64 %.0302392, %31
  br i1 %.not339.not386, label %.lr.ph389, label %.loopexit359

.lr.ph389:                                        ; preds = %.preheader358
  %124 = getelementptr float, ptr %19, i64 %.0302392
  br label %143

125:                                              ; preds = %125, %.preheader360.new
  %.4385 = phi float [ 0.000000e+00, %.preheader360.new ], [ %141, %125 ]
  %.4294384 = phi i64 [ 1, %.preheader360.new ], [ %142, %125 ]
  %niter699 = phi i64 [ 0, %.preheader360.new ], [ %niter699.next.1, %125 ]
  %gep383 = getelementptr float, ptr %invariant.gep382, i64 %.4294384
  %126 = load float, ptr %gep383, align 4, !tbaa !9
  %127 = getelementptr inbounds float, ptr %20, i64 %.4294384
  %128 = load float, ptr %127, align 4, !tbaa !9
  %129 = fdiv float %126, %128
  %130 = fcmp oge float %129, 0.000000e+00
  %131 = fneg float %129
  %132 = select i1 %130, float %129, float %131
  %133 = fadd float %.4385, %132
  %gep768 = getelementptr float, ptr %invariant.gep767, i64 %.4294384
  %134 = load float, ptr %gep768, align 4, !tbaa !9
  %135 = getelementptr float, ptr %7, i64 %.4294384
  %136 = load float, ptr %135, align 4, !tbaa !9
  %137 = fdiv float %134, %136
  %138 = fcmp oge float %137, 0.000000e+00
  %139 = fneg float %137
  %140 = select i1 %138, float %137, float %139
  %141 = fadd float %133, %140
  %142 = add nuw i64 %.4294384, 2
  %niter699.next.1 = add i64 %niter699, 2
  %niter699.ncmp.1 = icmp eq i64 %niter699.next.1, %unroll_iter698
  br i1 %niter699.ncmp.1, label %.preheader358.unr-lcssa, label %125, !llvm.loop !17

143:                                              ; preds = %.lr.ph389, %143
  %.5388 = phi float [ %.lcssa675, %.lr.ph389 ], [ %153, %143 ]
  %.5295.in387 = phi i64 [ %.0302392, %.lr.ph389 ], [ %.5295, %143 ]
  %.5295 = add nuw nsw i64 %.5295.in387, 1
  %144 = mul nsw i64 %.5295, %17
  %145 = getelementptr float, ptr %124, i64 %144
  %146 = load float, ptr %145, align 4, !tbaa !9
  %147 = getelementptr float, ptr %7, i64 %.5295.in387
  %148 = load float, ptr %147, align 4, !tbaa !9
  %149 = fdiv float %146, %148
  %150 = fcmp oge float %149, 0.000000e+00
  %151 = fneg float %149
  %152 = select i1 %150, float %149, float %151
  %153 = fadd float %.5388, %152
  %.not339.not = icmp slt i64 %.5295, %31
  br i1 %.not339.not, label %143, label %.loopexit359, !llvm.loop !18

.loopexit359:                                     ; preds = %143, %.preheader358
  %.5.lcssa = phi float [ %.lcssa675, %.preheader358 ], [ %153, %143 ]
  %154 = getelementptr float, ptr %34, i64 %.0302392
  store float %.5.lcssa, ptr %154, align 4, !tbaa !9
  %155 = add nuw nsw i64 %.0302392, 1
  %indvars.iv.next483 = add nuw i64 %indvars.iv482, 1
  %exitcond485.not = icmp eq i64 %indvars.iv482, %35
  %indvar.next694 = add i64 %indvar693, 1
  br i1 %exitcond485.not, label %.loopexit357, label %.preheader360, !llvm.loop !14

156:                                              ; preds = %29
  br i1 %.not321423, label %.loopexit357, label %.lr.ph426

.lr.ph426:                                        ; preds = %156
  %157 = load i64, ptr %6, align 8, !tbaa !5
  %.idx = shl i64 %31, 3
  %158 = getelementptr i8, ptr %21, i64 %.idx
  %159 = add nuw i64 %31, 1
  switch i64 %157, label %.preheader350 [
    i64 1, label %.preheader353.us
    i64 0, label %.preheader356.us
  ]

.preheader353.us:                                 ; preds = %.lr.ph426, %.loopexit352.us
  %indvar709 = phi i64 [ %indvar.next710, %.loopexit352.us ], [ 0, %.lr.ph426 ]
  %indvars.iv490 = phi i64 [ %indvars.iv.next491, %.loopexit352.us ], [ 2, %.lr.ph426 ]
  %.1303424.us = phi i64 [ %207, %.loopexit352.us ], [ %157, %.lr.ph426 ]
  %160 = getelementptr float, ptr %19, i64 %.1303424.us
  %161 = icmp eq i64 %indvar709, 0
  br i1 %161, label %.preheader351.us.unr-lcssa, label %.preheader353.us.new

.preheader353.us.new:                             ; preds = %.preheader353.us
  %162 = add i64 %indvar709, 1
  %unroll_iter714 = and i64 %162, -2
  br label %163

163:                                              ; preds = %163, %.preheader353.us.new
  %.7406.us = phi float [ 0.000000e+00, %.preheader353.us.new ], [ %184, %163 ]
  %.6296405.us = phi i64 [ 1, %.preheader353.us.new ], [ %185, %163 ]
  %niter715 = phi i64 [ 0, %.preheader353.us.new ], [ %niter715.next.1, %163 ]
  %164 = mul nsw i64 %.6296405.us, %17
  %165 = getelementptr float, ptr %160, i64 %164
  %166 = load float, ptr %165, align 4, !tbaa !9
  %167 = getelementptr inbounds float, ptr %20, i64 %.6296405.us
  %168 = load float, ptr %167, align 4, !tbaa !9
  %169 = fmul float %166, %168
  %170 = fcmp oge float %169, 0.000000e+00
  %171 = fneg float %169
  %172 = select i1 %170, float %169, float %171
  %173 = fadd float %.7406.us, %172
  %174 = add nuw i64 %.6296405.us, 1
  %175 = mul nsw i64 %174, %17
  %176 = getelementptr float, ptr %160, i64 %175
  %177 = load float, ptr %176, align 4, !tbaa !9
  %178 = getelementptr float, ptr %7, i64 %.6296405.us
  %179 = load float, ptr %178, align 4, !tbaa !9
  %180 = fmul float %177, %179
  %181 = fcmp oge float %180, 0.000000e+00
  %182 = fneg float %180
  %183 = select i1 %181, float %180, float %182
  %184 = fadd float %173, %183
  %185 = add nuw i64 %.6296405.us, 2
  %niter715.next.1 = add nuw i64 %niter715, 2
  %niter715.ncmp.1 = icmp eq i64 %niter715.next.1, %unroll_iter714
  br i1 %niter715.ncmp.1, label %.preheader351.us.unr-lcssa, label %163, !llvm.loop !19

186:                                              ; preds = %.lr.ph410.us, %186
  %.8409.us = phi float [ %.lcssa669, %.lr.ph410.us ], [ %194, %186 ]
  %.7297.in408.us = phi i64 [ %.1303424.us, %.lr.ph410.us ], [ %.7297.us, %186 ]
  %.7297.us = add nuw nsw i64 %.7297.in408.us, 1
  %gep413.us = getelementptr float, ptr %invariant.gep412.us, i64 %.7297.us
  %187 = load float, ptr %gep413.us, align 4, !tbaa !9
  %188 = getelementptr float, ptr %7, i64 %.7297.in408.us
  %189 = load float, ptr %188, align 4, !tbaa !9
  %190 = fmul float %187, %189
  %191 = fcmp oge float %190, 0.000000e+00
  %192 = fneg float %190
  %193 = select i1 %191, float %190, float %192
  %194 = fadd float %.8409.us, %193
  %.not327.not.us = icmp slt i64 %.7297.us, %31
  br i1 %.not327.not.us, label %186, label %.loopexit352.us, !llvm.loop !20

.preheader351.us.unr-lcssa:                       ; preds = %163, %.preheader353.us
  %.lcssa669.ph = phi float [ poison, %.preheader353.us ], [ %184, %163 ]
  %.7406.us.unr = phi float [ 0.000000e+00, %.preheader353.us ], [ %184, %163 ]
  %.6296405.us.unr = phi i64 [ 1, %.preheader353.us ], [ %185, %163 ]
  %195 = and i64 %indvar709, 1
  %lcmp.mod712.not.not = icmp eq i64 %195, 0
  br i1 %lcmp.mod712.not.not, label %.preheader351.us.epilog-lcssa, label %.preheader351.us

.preheader351.us.epilog-lcssa:                    ; preds = %.preheader351.us.unr-lcssa
  %196 = mul nsw i64 %.6296405.us.unr, %17
  %197 = getelementptr float, ptr %160, i64 %196
  %198 = load float, ptr %197, align 4, !tbaa !9
  %199 = getelementptr inbounds float, ptr %20, i64 %.6296405.us.unr
  %200 = load float, ptr %199, align 4, !tbaa !9
  %201 = fmul float %198, %200
  %202 = fcmp oge float %201, 0.000000e+00
  %203 = fneg float %201
  %204 = select i1 %202, float %201, float %203
  %205 = fadd float %.7406.us.unr, %204
  br label %.preheader351.us

.preheader351.us:                                 ; preds = %.preheader351.us.unr-lcssa, %.preheader351.us.epilog-lcssa
  %.lcssa669 = phi float [ %.lcssa669.ph, %.preheader351.us.unr-lcssa ], [ %205, %.preheader351.us.epilog-lcssa ]
  %.not327.not407.us = icmp slt i64 %.1303424.us, %31
  br i1 %.not327.not407.us, label %.lr.ph410.us, label %.loopexit352.us

.loopexit352.us:                                  ; preds = %186, %.preheader351.us
  %.8.lcssa.us = phi float [ %.lcssa669, %.preheader351.us ], [ %194, %186 ]
  %206 = getelementptr float, ptr %158, i64 %.1303424.us
  store float %.8.lcssa.us, ptr %206, align 4, !tbaa !9
  %207 = add nuw nsw i64 %.1303424.us, 1
  %indvars.iv.next491 = add nuw i64 %indvars.iv490, 1
  %exitcond493.not = icmp eq i64 %indvars.iv490, %159
  %indvar.next710 = add i64 %indvar709, 1
  br i1 %exitcond493.not, label %.loopexit357, label %.preheader353.us, !llvm.loop !21

.lr.ph410.us:                                     ; preds = %.preheader351.us
  %208 = mul nsw i64 %.1303424.us, %17
  %invariant.gep412.us = getelementptr float, ptr %19, i64 %208
  br label %186

.preheader356.us:                                 ; preds = %.lr.ph426, %.loopexit355.us
  %indvar701 = phi i64 [ %indvar.next702, %.loopexit355.us ], [ 0, %.lr.ph426 ]
  %indvars.iv486 = phi i64 [ %indvars.iv.next487, %.loopexit355.us ], [ 2, %.lr.ph426 ]
  %.1303424.us428 = phi i64 [ %244, %.loopexit355.us ], [ 1, %.lr.ph426 ]
  %209 = getelementptr float, ptr %19, i64 %.1303424.us428
  %210 = icmp eq i64 %indvar701, 0
  br i1 %210, label %.preheader354.us.unr-lcssa, label %.preheader356.us.new

.preheader356.us.new:                             ; preds = %.preheader356.us
  %211 = add i64 %indvar701, 1
  %unroll_iter706 = and i64 %211, -2
  br label %212

212:                                              ; preds = %212, %.preheader356.us.new
  %.9401.us = phi float [ 0.000000e+00, %.preheader356.us.new ], [ %227, %212 ]
  %.8298400.us = phi i64 [ 1, %.preheader356.us.new ], [ %228, %212 ]
  %niter707 = phi i64 [ 0, %.preheader356.us.new ], [ %niter707.next.1, %212 ]
  %213 = mul nsw i64 %.8298400.us, %17
  %214 = getelementptr float, ptr %209, i64 %213
  %215 = load float, ptr %214, align 4, !tbaa !9
  %216 = fcmp oge float %215, 0.000000e+00
  %217 = fneg float %215
  %218 = select i1 %216, float %215, float %217
  %219 = fadd float %.9401.us, %218
  %220 = add nuw i64 %.8298400.us, 1
  %221 = mul nsw i64 %220, %17
  %222 = getelementptr float, ptr %209, i64 %221
  %223 = load float, ptr %222, align 4, !tbaa !9
  %224 = fcmp oge float %223, 0.000000e+00
  %225 = fneg float %223
  %226 = select i1 %224, float %223, float %225
  %227 = fadd float %219, %226
  %228 = add nuw i64 %.8298400.us, 2
  %niter707.next.1 = add nuw i64 %niter707, 2
  %niter707.ncmp.1 = icmp eq i64 %niter707.next.1, %unroll_iter706
  br i1 %niter707.ncmp.1, label %.preheader354.us.unr-lcssa, label %212, !llvm.loop !22

229:                                              ; preds = %.lr.ph.us433, %229
  %.10404.us = phi float [ %.lcssa672, %.lr.ph.us433 ], [ %234, %229 ]
  %.9299.in403.us = phi i64 [ %.1303424.us428, %.lr.ph.us433 ], [ %.9299.us, %229 ]
  %.9299.us = add nuw nsw i64 %.9299.in403.us, 1
  %gep.us429 = getelementptr float, ptr %invariant.gep.us434, i64 %.9299.us
  %230 = load float, ptr %gep.us429, align 4, !tbaa !9
  %231 = fcmp oge float %230, 0.000000e+00
  %232 = fneg float %230
  %233 = select i1 %231, float %230, float %232
  %234 = fadd float %.10404.us, %233
  %.not325.not.us = icmp slt i64 %.9299.us, %31
  br i1 %.not325.not.us, label %229, label %.loopexit355.us, !llvm.loop !23

.preheader354.us.unr-lcssa:                       ; preds = %212, %.preheader356.us
  %.lcssa672.ph = phi float [ poison, %.preheader356.us ], [ %227, %212 ]
  %.9401.us.unr = phi float [ 0.000000e+00, %.preheader356.us ], [ %227, %212 ]
  %.8298400.us.unr = phi i64 [ 1, %.preheader356.us ], [ %228, %212 ]
  %235 = and i64 %indvar701, 1
  %lcmp.mod704.not.not = icmp eq i64 %235, 0
  br i1 %lcmp.mod704.not.not, label %.preheader354.us.epilog-lcssa, label %.preheader354.us

.preheader354.us.epilog-lcssa:                    ; preds = %.preheader354.us.unr-lcssa
  %236 = mul nsw i64 %.8298400.us.unr, %17
  %237 = getelementptr float, ptr %209, i64 %236
  %238 = load float, ptr %237, align 4, !tbaa !9
  %239 = fcmp oge float %238, 0.000000e+00
  %240 = fneg float %238
  %241 = select i1 %239, float %238, float %240
  %242 = fadd float %.9401.us.unr, %241
  br label %.preheader354.us

.preheader354.us:                                 ; preds = %.preheader354.us.unr-lcssa, %.preheader354.us.epilog-lcssa
  %.lcssa672 = phi float [ %.lcssa672.ph, %.preheader354.us.unr-lcssa ], [ %242, %.preheader354.us.epilog-lcssa ]
  %.not325.not402.us = icmp slt i64 %.1303424.us428, %31
  br i1 %.not325.not402.us, label %.lr.ph.us433, label %.loopexit355.us

.loopexit355.us:                                  ; preds = %229, %.preheader354.us
  %.10.lcssa.us = phi float [ %.lcssa672, %.preheader354.us ], [ %234, %229 ]
  %243 = getelementptr float, ptr %158, i64 %.1303424.us428
  store float %.10.lcssa.us, ptr %243, align 4, !tbaa !9
  %244 = add nuw nsw i64 %.1303424.us428, 1
  %indvars.iv.next487 = add nuw i64 %indvars.iv486, 1
  %exitcond489.not = icmp eq i64 %indvars.iv486, %159
  %indvar.next702 = add i64 %indvar701, 1
  br i1 %exitcond489.not, label %.loopexit357, label %.preheader356.us, !llvm.loop !21

.lr.ph.us433:                                     ; preds = %.preheader354.us
  %245 = mul nsw i64 %.1303424.us428, %17
  %invariant.gep.us434 = getelementptr float, ptr %19, i64 %245
  br label %229

.preheader350:                                    ; preds = %.lr.ph426, %.loopexit349
  %indvar717 = phi i64 [ %indvar.next718, %.loopexit349 ], [ 0, %.lr.ph426 ]
  %indvars.iv494 = phi i64 [ %indvars.iv.next495, %.loopexit349 ], [ 2, %.lr.ph426 ]
  %.1303424 = phi i64 [ %294, %.loopexit349 ], [ 1, %.lr.ph426 ]
  %246 = getelementptr float, ptr %19, i64 %.1303424
  %247 = icmp eq i64 %indvar717, 0
  br i1 %247, label %.preheader.unr-lcssa, label %.preheader350.new

.preheader350.new:                                ; preds = %.preheader350
  %248 = add i64 %indvar717, 1
  %unroll_iter722 = and i64 %248, -2
  br label %261

.preheader.unr-lcssa:                             ; preds = %261, %.preheader350
  %.lcssa.ph = phi float [ poison, %.preheader350 ], [ %282, %261 ]
  %.11415.unr = phi float [ 0.000000e+00, %.preheader350 ], [ %282, %261 ]
  %.10300414.unr = phi i64 [ 1, %.preheader350 ], [ %283, %261 ]
  %249 = and i64 %indvar717, 1
  %lcmp.mod720.not.not = icmp eq i64 %249, 0
  br i1 %lcmp.mod720.not.not, label %.preheader.epilog-lcssa, label %.preheader

.preheader.epilog-lcssa:                          ; preds = %.preheader.unr-lcssa
  %250 = mul nsw i64 %.10300414.unr, %17
  %251 = getelementptr float, ptr %246, i64 %250
  %252 = load float, ptr %251, align 4, !tbaa !9
  %253 = getelementptr inbounds float, ptr %20, i64 %.10300414.unr
  %254 = load float, ptr %253, align 4, !tbaa !9
  %255 = fdiv float %252, %254
  %256 = fcmp oge float %255, 0.000000e+00
  %257 = fneg float %255
  %258 = select i1 %256, float %255, float %257
  %259 = fadd float %.11415.unr, %258
  br label %.preheader

.preheader:                                       ; preds = %.preheader.unr-lcssa, %.preheader.epilog-lcssa
  %.lcssa = phi float [ %.lcssa.ph, %.preheader.unr-lcssa ], [ %259, %.preheader.epilog-lcssa ]
  %.not323.not416 = icmp slt i64 %.1303424, %31
  br i1 %.not323.not416, label %.lr.ph419, label %.loopexit349

.lr.ph419:                                        ; preds = %.preheader
  %260 = mul nsw i64 %.1303424, %17
  %invariant.gep421 = getelementptr float, ptr %19, i64 %260
  br label %284

261:                                              ; preds = %261, %.preheader350.new
  %.11415 = phi float [ 0.000000e+00, %.preheader350.new ], [ %282, %261 ]
  %.10300414 = phi i64 [ 1, %.preheader350.new ], [ %283, %261 ]
  %niter723 = phi i64 [ 0, %.preheader350.new ], [ %niter723.next.1, %261 ]
  %262 = mul nsw i64 %.10300414, %17
  %263 = getelementptr float, ptr %246, i64 %262
  %264 = load float, ptr %263, align 4, !tbaa !9
  %265 = getelementptr inbounds float, ptr %20, i64 %.10300414
  %266 = load float, ptr %265, align 4, !tbaa !9
  %267 = fdiv float %264, %266
  %268 = fcmp oge float %267, 0.000000e+00
  %269 = fneg float %267
  %270 = select i1 %268, float %267, float %269
  %271 = fadd float %.11415, %270
  %272 = add nuw i64 %.10300414, 1
  %273 = mul nsw i64 %272, %17
  %274 = getelementptr float, ptr %246, i64 %273
  %275 = load float, ptr %274, align 4, !tbaa !9
  %276 = getelementptr float, ptr %7, i64 %.10300414
  %277 = load float, ptr %276, align 4, !tbaa !9
  %278 = fdiv float %275, %277
  %279 = fcmp oge float %278, 0.000000e+00
  %280 = fneg float %278
  %281 = select i1 %279, float %278, float %280
  %282 = fadd float %271, %281
  %283 = add nuw i64 %.10300414, 2
  %niter723.next.1 = add nuw i64 %niter723, 2
  %niter723.ncmp.1 = icmp eq i64 %niter723.next.1, %unroll_iter722
  br i1 %niter723.ncmp.1, label %.preheader.unr-lcssa, label %261, !llvm.loop !24

284:                                              ; preds = %.lr.ph419, %284
  %.12418 = phi float [ %.lcssa, %.lr.ph419 ], [ %292, %284 ]
  %.11301.in417 = phi i64 [ %.1303424, %.lr.ph419 ], [ %.11301, %284 ]
  %.11301 = add nuw nsw i64 %.11301.in417, 1
  %gep422 = getelementptr float, ptr %invariant.gep421, i64 %.11301
  %285 = load float, ptr %gep422, align 4, !tbaa !9
  %286 = getelementptr float, ptr %7, i64 %.11301.in417
  %287 = load float, ptr %286, align 4, !tbaa !9
  %288 = fdiv float %285, %287
  %289 = fcmp oge float %288, 0.000000e+00
  %290 = fneg float %288
  %291 = select i1 %289, float %288, float %290
  %292 = fadd float %.12418, %291
  %.not323.not = icmp slt i64 %.11301, %31
  br i1 %.not323.not, label %284, label %.loopexit349, !llvm.loop !25

.loopexit349:                                     ; preds = %284, %.preheader
  %.12.lcssa = phi float [ %.lcssa, %.preheader ], [ %292, %284 ]
  %293 = getelementptr float, ptr %158, i64 %.1303424
  store float %.12.lcssa, ptr %293, align 4, !tbaa !9
  %294 = add nuw nsw i64 %.1303424, 1
  %indvars.iv.next495 = add nuw i64 %indvars.iv494, 1
  %exitcond497.not = icmp eq i64 %indvars.iv494, %159
  %indvar.next718 = add i64 %indvar717, 1
  br i1 %exitcond497.not, label %.loopexit357, label %.preheader350, !llvm.loop !21

.loopexit357:                                     ; preds = %.loopexit365.us, %.loopexit362.us, %.loopexit359, %.loopexit355.us, %.loopexit352.us, %.loopexit349, %32, %156
  store float 0.000000e+00, ptr %16, align 4, !tbaa !9
  store i64 0, ptr %14, align 8, !tbaa !5
  %.str.3..str.2 = select i1 %.not319, ptr @.str.3, ptr @.str.2
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.backedge, %.loopexit357
  %295 = phi i64 [ %31, %.loopexit357 ], [ %.be, %.loopexit.backedge ]
  %296 = getelementptr float, ptr %9, i64 %295
  %297 = call i32 @slacn2_(ptr noundef nonnull %1, ptr noundef %296, ptr noundef %9, ptr noundef %10, ptr noundef nonnull %16, ptr noundef nonnull %14, ptr noundef nonnull %15) #3
  %298 = load i64, ptr %14, align 8, !tbaa !5
  switch i64 %298, label %430 [
    i64 0, label %559
    i64 2, label %299
  ]

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

.lr.ph:                                           ; preds = %299
  %.idx337 = shl i64 %300, 3
  %301 = getelementptr i8, ptr %21, i64 %.idx337
  %min.iters.check645 = icmp ult i64 %300, 8
  br i1 %min.iters.check645, label %scalar.ph644.preheader, label %vector.memcheck636

vector.memcheck636:                               ; preds = %.lr.ph
  %302 = shl i64 %300, 2
  %scevgep637 = getelementptr i8, ptr %9, i64 %302
  %scevgep638 = getelementptr i8, ptr %9, i64 %.idx337
  %303 = mul i64 %300, 12
  %scevgep639 = getelementptr i8, ptr %9, i64 %303
  %bound0640 = icmp ugt ptr %scevgep639, %9
  %bound1641 = icmp ult ptr %scevgep638, %scevgep637
  %found.conflict642 = and i1 %bound0640, %bound1641
  br i1 %found.conflict642, label %scalar.ph644.preheader, label %vector.ph646

vector.ph646:                                     ; preds = %vector.memcheck636
  %n.vec648 = and i64 %300, 9223372036854775800
  %ind.end649 = or disjoint i64 %n.vec648, 1
  br label %vector.body651

vector.body651:                                   ; preds = %vector.body651, %vector.ph646
  %index652 = phi i64 [ 0, %vector.ph646 ], [ %index.next658, %vector.body651 ]
  %offset.idx653 = or disjoint i64 %index652, 1
  %304 = getelementptr float, ptr %301, i64 %offset.idx653
  %305 = getelementptr i8, ptr %304, i64 16
  %wide.load654 = load <4 x float>, ptr %304, align 4, !tbaa !9, !alias.scope !26
  %wide.load655 = load <4 x float>, ptr %305, align 4, !tbaa !9, !alias.scope !26
  %306 = getelementptr float, ptr %9, i64 %index652
  %307 = getelementptr inbounds i8, ptr %306, i64 16
  %wide.load656 = load <4 x float>, ptr %306, align 4, !tbaa !9, !alias.scope !29, !noalias !26
  %wide.load657 = load <4 x float>, ptr %307, align 4, !tbaa !9, !alias.scope !29, !noalias !26
  %308 = fmul <4 x float> %wide.load654, %wide.load656
  %309 = fmul <4 x float> %wide.load655, %wide.load657
  store <4 x float> %308, ptr %306, align 4, !tbaa !9, !alias.scope !29, !noalias !26
  store <4 x float> %309, ptr %307, align 4, !tbaa !9, !alias.scope !29, !noalias !26
  %index.next658 = add nuw i64 %index652, 8
  %310 = icmp eq i64 %index.next658, %n.vec648
  br i1 %310, label %middle.block643, label %vector.body651, !llvm.loop !31

middle.block643:                                  ; preds = %vector.body651
  %cmp.n659 = icmp eq i64 %300, %n.vec648
  br i1 %cmp.n659, label %._crit_edge, label %scalar.ph644.preheader

scalar.ph644.preheader:                           ; preds = %middle.block643, %vector.memcheck636, %.lr.ph
  %.2304437.ph = phi i64 [ 1, %vector.memcheck636 ], [ 1, %.lr.ph ], [ %ind.end649, %middle.block643 ]
  %311 = add nuw i64 %300, 1
  %312 = sub i64 %311, %.2304437.ph
  %313 = sub i64 %300, %.2304437.ph
  %xtraiter724 = and i64 %312, 3
  %lcmp.mod725.not = icmp eq i64 %xtraiter724, 0
  br i1 %lcmp.mod725.not, label %scalar.ph644.prol.loopexit, label %scalar.ph644.prol

scalar.ph644.prol:                                ; preds = %scalar.ph644.preheader, %scalar.ph644.prol
  %.2304437.prol = phi i64 [ %319, %scalar.ph644.prol ], [ %.2304437.ph, %scalar.ph644.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph644.prol ], [ 0, %scalar.ph644.preheader ]
  %314 = getelementptr float, ptr %301, i64 %.2304437.prol
  %315 = load float, ptr %314, align 4, !tbaa !9
  %316 = getelementptr inbounds float, ptr %21, i64 %.2304437.prol
  %317 = load float, ptr %316, align 4, !tbaa !9
  %318 = fmul float %315, %317
  store float %318, ptr %316, align 4, !tbaa !9
  %319 = add nuw i64 %.2304437.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter724
  br i1 %prol.iter.cmp.not, label %scalar.ph644.prol.loopexit, label %scalar.ph644.prol, !llvm.loop !34

scalar.ph644.prol.loopexit:                       ; preds = %scalar.ph644.prol, %scalar.ph644.preheader
  %.2304437.unr = phi i64 [ %.2304437.ph, %scalar.ph644.preheader ], [ %319, %scalar.ph644.prol ]
  %320 = icmp ult i64 %313, 3
  br i1 %320, label %._crit_edge, label %scalar.ph644.preheader.new

scalar.ph644.preheader.new:                       ; preds = %scalar.ph644.prol.loopexit
  %invariant.gep769 = getelementptr i8, ptr %301, i64 4
  br label %scalar.ph644

scalar.ph644:                                     ; preds = %scalar.ph644, %scalar.ph644.preheader.new
  %.2304437 = phi i64 [ %.2304437.unr, %scalar.ph644.preheader.new ], [ %342, %scalar.ph644 ]
  %321 = getelementptr float, ptr %301, i64 %.2304437
  %322 = load float, ptr %321, align 4, !tbaa !9
  %323 = getelementptr inbounds float, ptr %21, i64 %.2304437
  %324 = load float, ptr %323, align 4, !tbaa !9
  %325 = fmul float %322, %324
  store float %325, ptr %323, align 4, !tbaa !9
  %gep770 = getelementptr float, ptr %invariant.gep769, i64 %.2304437
  %326 = load float, ptr %gep770, align 4, !tbaa !9
  %327 = getelementptr float, ptr %9, i64 %.2304437
  %328 = load float, ptr %327, align 4, !tbaa !9
  %329 = fmul float %326, %328
  store float %329, ptr %327, align 4, !tbaa !9
  %330 = add nuw i64 %.2304437, 2
  %331 = getelementptr float, ptr %301, i64 %330
  %332 = load float, ptr %331, align 4, !tbaa !9
  %333 = getelementptr inbounds float, ptr %21, i64 %330
  %334 = load float, ptr %333, align 4, !tbaa !9
  %335 = fmul float %332, %334
  store float %335, ptr %333, align 4, !tbaa !9
  %336 = add nuw i64 %.2304437, 3
  %337 = getelementptr float, ptr %301, i64 %336
  %338 = load float, ptr %337, align 4, !tbaa !9
  %339 = getelementptr inbounds float, ptr %21, i64 %336
  %340 = load float, ptr %339, align 4, !tbaa !9
  %341 = fmul float %338, %340
  store float %341, ptr %339, align 4, !tbaa !9
  %342 = add nuw i64 %.2304437, 4
  %exitcond498.not.3 = icmp eq i64 %336, %300
  br i1 %exitcond498.not.3, label %._crit_edge, label %scalar.ph644, !llvm.loop !36

._crit_edge:                                      ; preds = %scalar.ph644.prol.loopexit, %scalar.ph644, %middle.block643, %299
  br i1 %.not319, label %345, label %343

343:                                              ; preds = %._crit_edge
  %344 = call i32 @spotrs_(ptr noundef nonnull @.str.2, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef %5, ptr noundef %9, ptr noundef nonnull %1, ptr noundef nonnull %8) #3
  br label %347

345:                                              ; preds = %._crit_edge
  %346 = call i32 @spotrs_(ptr noundef nonnull @.str.3, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %9, ptr noundef nonnull %1, ptr noundef nonnull %8) #3
  br label %347

347:                                              ; preds = %345, %343
  %348 = load i64, ptr %6, align 8, !tbaa !5
  %.pre.pre = load i64, ptr %1, align 8, !tbaa !5
  switch i64 %348, label %.loopexit.backedge [
    i64 1, label %349
    i64 -1, label %388
  ]

349:                                              ; preds = %347
  %.not336442 = icmp slt i64 %.pre.pre, 1
  br i1 %.not336442, label %.loopexit.backedge, label %.lr.ph445.preheader

.lr.ph445.preheader:                              ; preds = %349
  %min.iters.check600 = icmp ult i64 %.pre.pre, 4
  br i1 %min.iters.check600, label %.lr.ph445.preheader663, label %vector.memcheck592

vector.memcheck592:                               ; preds = %.lr.ph445.preheader
  %350 = shl i64 %.pre.pre, 2
  %scevgep593 = getelementptr i8, ptr %9, i64 %350
  %scevgep594 = getelementptr i8, ptr %7, i64 %350
  %bound0595 = icmp ugt ptr %scevgep594, %9
  %bound1596 = icmp ugt ptr %scevgep593, %7
  %found.conflict597 = and i1 %bound0595, %bound1596
  br i1 %found.conflict597, label %.lr.ph445.preheader663, label %vector.ph601

vector.ph601:                                     ; preds = %vector.memcheck592
  %n.vec603 = and i64 %.pre.pre, 9223372036854775804
  %ind.end604 = or disjoint i64 %n.vec603, 1
  br label %vector.body606

vector.body606:                                   ; preds = %vector.body606, %vector.ph601
  %index607 = phi i64 [ 0, %vector.ph601 ], [ %index.next611, %vector.body606 ]
  %351 = getelementptr float, ptr %7, i64 %index607
  %wide.load609 = load <4 x float>, ptr %351, align 4, !tbaa !9, !alias.scope !37
  %352 = getelementptr float, ptr %9, i64 %index607
  %wide.load610 = load <4 x float>, ptr %352, align 4, !tbaa !9, !alias.scope !40, !noalias !37
  %353 = fdiv <4 x float> %wide.load610, %wide.load609
  store <4 x float> %353, ptr %352, align 4, !tbaa !9, !alias.scope !40, !noalias !37
  %index.next611 = add nuw i64 %index607, 4
  %354 = icmp eq i64 %index.next611, %n.vec603
  br i1 %354, label %middle.block598, label %vector.body606, !llvm.loop !42

middle.block598:                                  ; preds = %vector.body606
  %cmp.n612 = icmp eq i64 %.pre.pre, %n.vec603
  br i1 %cmp.n612, label %.loopexit.backedge, label %.lr.ph445.preheader663

.lr.ph445.preheader663:                           ; preds = %middle.block598, %vector.memcheck592, %.lr.ph445.preheader
  %.3305443.ph = phi i64 [ 1, %vector.memcheck592 ], [ 1, %.lr.ph445.preheader ], [ %ind.end604, %middle.block598 ]
  %355 = add nuw i64 %.pre.pre, 1
  %356 = sub i64 %355, %.3305443.ph
  %357 = sub i64 %.pre.pre, %.3305443.ph
  %xtraiter729 = and i64 %356, 3
  %lcmp.mod730.not = icmp eq i64 %xtraiter729, 0
  br i1 %lcmp.mod730.not, label %.lr.ph445.prol.loopexit, label %.lr.ph445.prol

.lr.ph445.prol:                                   ; preds = %.lr.ph445.preheader663, %.lr.ph445.prol
  %.3305443.prol = phi i64 [ %363, %.lr.ph445.prol ], [ %.3305443.ph, %.lr.ph445.preheader663 ]
  %prol.iter731 = phi i64 [ %prol.iter731.next, %.lr.ph445.prol ], [ 0, %.lr.ph445.preheader663 ]
  %358 = getelementptr inbounds float, ptr %20, i64 %.3305443.prol
  %359 = load float, ptr %358, align 4, !tbaa !9
  %360 = getelementptr inbounds float, ptr %21, i64 %.3305443.prol
  %361 = load float, ptr %360, align 4, !tbaa !9
  %362 = fdiv float %361, %359
  store float %362, ptr %360, align 4, !tbaa !9
  %363 = add nuw i64 %.3305443.prol, 1
  %prol.iter731.next = add i64 %prol.iter731, 1
  %prol.iter731.cmp.not = icmp eq i64 %prol.iter731.next, %xtraiter729
  br i1 %prol.iter731.cmp.not, label %.lr.ph445.prol.loopexit, label %.lr.ph445.prol, !llvm.loop !43

.lr.ph445.prol.loopexit:                          ; preds = %.lr.ph445.prol, %.lr.ph445.preheader663
  %.3305443.unr = phi i64 [ %.3305443.ph, %.lr.ph445.preheader663 ], [ %363, %.lr.ph445.prol ]
  %364 = icmp ult i64 %357, 3
  br i1 %364, label %.loopexit.backedge, label %.lr.ph445

.lr.ph445:                                        ; preds = %.lr.ph445.prol.loopexit, %.lr.ph445
  %.3305443 = phi i64 [ %387, %.lr.ph445 ], [ %.3305443.unr, %.lr.ph445.prol.loopexit ]
  %365 = getelementptr inbounds float, ptr %20, i64 %.3305443
  %366 = load float, ptr %365, align 4, !tbaa !9
  %367 = getelementptr inbounds float, ptr %21, i64 %.3305443
  %368 = load float, ptr %367, align 4, !tbaa !9
  %369 = fdiv float %368, %366
  store float %369, ptr %367, align 4, !tbaa !9
  %370 = getelementptr float, ptr %7, i64 %.3305443
  %371 = load float, ptr %370, align 4, !tbaa !9
  %372 = getelementptr float, ptr %9, i64 %.3305443
  %373 = load float, ptr %372, align 4, !tbaa !9
  %374 = fdiv float %373, %371
  store float %374, ptr %372, align 4, !tbaa !9
  %375 = add nuw i64 %.3305443, 2
  %376 = getelementptr inbounds float, ptr %20, i64 %375
  %377 = load float, ptr %376, align 4, !tbaa !9
  %378 = getelementptr inbounds float, ptr %21, i64 %375
  %379 = load float, ptr %378, align 4, !tbaa !9
  %380 = fdiv float %379, %377
  store float %380, ptr %378, align 4, !tbaa !9
  %381 = add nuw i64 %.3305443, 3
  %382 = getelementptr inbounds float, ptr %20, i64 %381
  %383 = load float, ptr %382, align 4, !tbaa !9
  %384 = getelementptr inbounds float, ptr %21, i64 %381
  %385 = load float, ptr %384, align 4, !tbaa !9
  %386 = fdiv float %385, %383
  store float %386, ptr %384, align 4, !tbaa !9
  %387 = add nuw i64 %.3305443, 4
  %exitcond500.not.3 = icmp eq i64 %381, %.pre.pre
  br i1 %exitcond500.not.3, label %.loopexit.backedge, label %.lr.ph445, !llvm.loop !44

388:                                              ; preds = %347
  %.not335438 = icmp slt i64 %.pre.pre, 1
  br i1 %.not335438, label %.loopexit.backedge, label %.lr.ph441.preheader

.lr.ph441.preheader:                              ; preds = %388
  %min.iters.check621 = icmp ult i64 %.pre.pre, 8
  br i1 %min.iters.check621, label %.lr.ph441.preheader665, label %vector.memcheck613

vector.memcheck613:                               ; preds = %.lr.ph441.preheader
  %389 = shl i64 %.pre.pre, 2
  %scevgep614 = getelementptr i8, ptr %9, i64 %389
  %scevgep615 = getelementptr i8, ptr %7, i64 %389
  %bound0616 = icmp ugt ptr %scevgep615, %9
  %bound1617 = icmp ugt ptr %scevgep614, %7
  %found.conflict618 = and i1 %bound0616, %bound1617
  br i1 %found.conflict618, label %.lr.ph441.preheader665, label %vector.ph622

vector.ph622:                                     ; preds = %vector.memcheck613
  %n.vec624 = and i64 %.pre.pre, 9223372036854775800
  %ind.end625 = or disjoint i64 %n.vec624, 1
  br label %vector.body627

vector.body627:                                   ; preds = %vector.body627, %vector.ph622
  %index628 = phi i64 [ 0, %vector.ph622 ], [ %index.next634, %vector.body627 ]
  %390 = getelementptr float, ptr %7, i64 %index628
  %391 = getelementptr inbounds i8, ptr %390, i64 16
  %wide.load630 = load <4 x float>, ptr %390, align 4, !tbaa !9, !alias.scope !45
  %wide.load631 = load <4 x float>, ptr %391, align 4, !tbaa !9, !alias.scope !45
  %392 = getelementptr float, ptr %9, i64 %index628
  %393 = getelementptr inbounds i8, ptr %392, i64 16
  %wide.load632 = load <4 x float>, ptr %392, align 4, !tbaa !9, !alias.scope !48, !noalias !45
  %wide.load633 = load <4 x float>, ptr %393, align 4, !tbaa !9, !alias.scope !48, !noalias !45
  %394 = fmul <4 x float> %wide.load630, %wide.load632
  %395 = fmul <4 x float> %wide.load631, %wide.load633
  store <4 x float> %394, ptr %392, align 4, !tbaa !9, !alias.scope !48, !noalias !45
  store <4 x float> %395, ptr %393, align 4, !tbaa !9, !alias.scope !48, !noalias !45
  %index.next634 = add nuw i64 %index628, 8
  %396 = icmp eq i64 %index.next634, %n.vec624
  br i1 %396, label %middle.block619, label %vector.body627, !llvm.loop !50

middle.block619:                                  ; preds = %vector.body627
  %cmp.n635 = icmp eq i64 %.pre.pre, %n.vec624
  br i1 %cmp.n635, label %.loopexit.backedge, label %.lr.ph441.preheader665

.loopexit.backedge:                               ; preds = %.lr.ph441.prol.loopexit, %.lr.ph441, %.lr.ph445.prol.loopexit, %.lr.ph445, %scalar.ph.prol.loopexit, %scalar.ph, %middle.block619, %middle.block598, %middle.block, %347, %388, %349, %.loopexit345
  %.be = phi i64 [ %.pre.pre, %388 ], [ %.pre.pre, %349 ], [ %516, %.loopexit345 ], [ %.pre.pre, %347 ], [ %516, %middle.block ], [ %.pre.pre, %middle.block598 ], [ %.pre.pre, %middle.block619 ], [ %516, %scalar.ph ], [ %516, %scalar.ph.prol.loopexit ], [ %.pre.pre, %.lr.ph445 ], [ %.pre.pre, %.lr.ph445.prol.loopexit ], [ %.pre.pre, %.lr.ph441 ], [ %.pre.pre, %.lr.ph441.prol.loopexit ]
  br label %.loopexit

.lr.ph441.preheader665:                           ; preds = %middle.block619, %vector.memcheck613, %.lr.ph441.preheader
  %.4306439.ph = phi i64 [ 1, %vector.memcheck613 ], [ 1, %.lr.ph441.preheader ], [ %ind.end625, %middle.block619 ]
  %397 = add nuw i64 %.pre.pre, 1
  %398 = sub i64 %397, %.4306439.ph
  %399 = sub i64 %.pre.pre, %.4306439.ph
  %xtraiter726 = and i64 %398, 3
  %lcmp.mod727.not = icmp eq i64 %xtraiter726, 0
  br i1 %lcmp.mod727.not, label %.lr.ph441.prol.loopexit, label %.lr.ph441.prol

.lr.ph441.prol:                                   ; preds = %.lr.ph441.preheader665, %.lr.ph441.prol
  %.4306439.prol = phi i64 [ %405, %.lr.ph441.prol ], [ %.4306439.ph, %.lr.ph441.preheader665 ]
  %prol.iter728 = phi i64 [ %prol.iter728.next, %.lr.ph441.prol ], [ 0, %.lr.ph441.preheader665 ]
  %400 = getelementptr inbounds float, ptr %20, i64 %.4306439.prol
  %401 = load float, ptr %400, align 4, !tbaa !9
  %402 = getelementptr inbounds float, ptr %21, i64 %.4306439.prol
  %403 = load float, ptr %402, align 4, !tbaa !9
  %404 = fmul float %401, %403
  store float %404, ptr %402, align 4, !tbaa !9
  %405 = add nuw i64 %.4306439.prol, 1
  %prol.iter728.next = add i64 %prol.iter728, 1
  %prol.iter728.cmp.not = icmp eq i64 %prol.iter728.next, %xtraiter726
  br i1 %prol.iter728.cmp.not, label %.lr.ph441.prol.loopexit, label %.lr.ph441.prol, !llvm.loop !51

.lr.ph441.prol.loopexit:                          ; preds = %.lr.ph441.prol, %.lr.ph441.preheader665
  %.4306439.unr = phi i64 [ %.4306439.ph, %.lr.ph441.preheader665 ], [ %405, %.lr.ph441.prol ]
  %406 = icmp ult i64 %399, 3
  br i1 %406, label %.loopexit.backedge, label %.lr.ph441

.lr.ph441:                                        ; preds = %.lr.ph441.prol.loopexit, %.lr.ph441
  %.4306439 = phi i64 [ %429, %.lr.ph441 ], [ %.4306439.unr, %.lr.ph441.prol.loopexit ]
  %407 = getelementptr inbounds float, ptr %20, i64 %.4306439
  %408 = load float, ptr %407, align 4, !tbaa !9
  %409 = getelementptr inbounds float, ptr %21, i64 %.4306439
  %410 = load float, ptr %409, align 4, !tbaa !9
  %411 = fmul float %408, %410
  store float %411, ptr %409, align 4, !tbaa !9
  %412 = getelementptr float, ptr %7, i64 %.4306439
  %413 = load float, ptr %412, align 4, !tbaa !9
  %414 = getelementptr float, ptr %9, i64 %.4306439
  %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 %.4306439, 2
  %418 = getelementptr inbounds float, ptr %20, i64 %417
  %419 = load float, ptr %418, align 4, !tbaa !9
  %420 = getelementptr inbounds float, ptr %21, i64 %417
  %421 = load float, ptr %420, align 4, !tbaa !9
  %422 = fmul float %419, %421
  store float %422, ptr %420, align 4, !tbaa !9
  %423 = add nuw i64 %.4306439, 3
  %424 = getelementptr inbounds float, ptr %20, i64 %423
  %425 = load float, ptr %424, align 4, !tbaa !9
  %426 = getelementptr inbounds float, ptr %21, i64 %423
  %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 %.4306439, 4
  %exitcond499.not.3 = icmp eq i64 %423, %.pre.pre
  br i1 %exitcond499.not.3, label %.loopexit.backedge, label %.lr.ph441, !llvm.loop !52

430:                                              ; preds = %.loopexit
  %431 = load i64, ptr %6, align 8, !tbaa !5
  switch i64 %431, label %.loopexit345 [
    i64 1, label %432
    i64 -1, label %472
  ]

432:                                              ; preds = %430
  %433 = load i64, ptr %1, align 8, !tbaa !5
  %.not331450 = icmp slt i64 %433, 1
  br i1 %.not331450, label %.loopexit345, label %.lr.ph453.preheader

.lr.ph453.preheader:                              ; preds = %432
  %min.iters.check556 = icmp ult i64 %433, 4
  br i1 %min.iters.check556, label %.lr.ph453.preheader660, label %vector.memcheck548

vector.memcheck548:                               ; preds = %.lr.ph453.preheader
  %434 = shl i64 %433, 2
  %scevgep549 = getelementptr i8, ptr %9, i64 %434
  %scevgep550 = getelementptr i8, ptr %7, i64 %434
  %bound0551 = icmp ugt ptr %scevgep550, %9
  %bound1552 = icmp ugt ptr %scevgep549, %7
  %found.conflict553 = and i1 %bound0551, %bound1552
  br i1 %found.conflict553, label %.lr.ph453.preheader660, label %vector.ph557

vector.ph557:                                     ; preds = %vector.memcheck548
  %n.vec559 = and i64 %433, 9223372036854775804
  %ind.end560 = or disjoint i64 %n.vec559, 1
  br label %vector.body562

vector.body562:                                   ; preds = %vector.body562, %vector.ph557
  %index563 = phi i64 [ 0, %vector.ph557 ], [ %index.next567, %vector.body562 ]
  %435 = getelementptr float, ptr %7, i64 %index563
  %wide.load565 = load <4 x float>, ptr %435, align 4, !tbaa !9, !alias.scope !53
  %436 = getelementptr float, ptr %9, i64 %index563
  %wide.load566 = load <4 x float>, ptr %436, align 4, !tbaa !9, !alias.scope !56, !noalias !53
  %437 = fdiv <4 x float> %wide.load566, %wide.load565
  store <4 x float> %437, ptr %436, align 4, !tbaa !9, !alias.scope !56, !noalias !53
  %index.next567 = add nuw i64 %index563, 4
  %438 = icmp eq i64 %index.next567, %n.vec559
  br i1 %438, label %middle.block554, label %vector.body562, !llvm.loop !58

middle.block554:                                  ; preds = %vector.body562
  %cmp.n568 = icmp eq i64 %433, %n.vec559
  br i1 %cmp.n568, label %.loopexit345, label %.lr.ph453.preheader660

.lr.ph453.preheader660:                           ; preds = %middle.block554, %vector.memcheck548, %.lr.ph453.preheader
  %.5307451.ph = phi i64 [ 1, %vector.memcheck548 ], [ 1, %.lr.ph453.preheader ], [ %ind.end560, %middle.block554 ]
  %439 = add nuw i64 %433, 1
  %440 = sub i64 %439, %.5307451.ph
  %441 = sub i64 %433, %.5307451.ph
  %xtraiter735 = and i64 %440, 3
  %lcmp.mod736.not = icmp eq i64 %xtraiter735, 0
  br i1 %lcmp.mod736.not, label %.lr.ph453.prol.loopexit, label %.lr.ph453.prol

.lr.ph453.prol:                                   ; preds = %.lr.ph453.preheader660, %.lr.ph453.prol
  %.5307451.prol = phi i64 [ %447, %.lr.ph453.prol ], [ %.5307451.ph, %.lr.ph453.preheader660 ]
  %prol.iter737 = phi i64 [ %prol.iter737.next, %.lr.ph453.prol ], [ 0, %.lr.ph453.preheader660 ]
  %442 = getelementptr inbounds float, ptr %20, i64 %.5307451.prol
  %443 = load float, ptr %442, align 4, !tbaa !9
  %444 = getelementptr inbounds float, ptr %21, i64 %.5307451.prol
  %445 = load float, ptr %444, align 4, !tbaa !9
  %446 = fdiv float %445, %443
  store float %446, ptr %444, align 4, !tbaa !9
  %447 = add nuw i64 %.5307451.prol, 1
  %prol.iter737.next = add i64 %prol.iter737, 1
  %prol.iter737.cmp.not = icmp eq i64 %prol.iter737.next, %xtraiter735
  br i1 %prol.iter737.cmp.not, label %.lr.ph453.prol.loopexit, label %.lr.ph453.prol, !llvm.loop !59

.lr.ph453.prol.loopexit:                          ; preds = %.lr.ph453.prol, %.lr.ph453.preheader660
  %.5307451.unr = phi i64 [ %.5307451.ph, %.lr.ph453.preheader660 ], [ %447, %.lr.ph453.prol ]
  %448 = icmp ult i64 %441, 3
  br i1 %448, label %.loopexit345, label %.lr.ph453

.lr.ph453:                                        ; preds = %.lr.ph453.prol.loopexit, %.lr.ph453
  %.5307451 = phi i64 [ %471, %.lr.ph453 ], [ %.5307451.unr, %.lr.ph453.prol.loopexit ]
  %449 = getelementptr inbounds float, ptr %20, i64 %.5307451
  %450 = load float, ptr %449, align 4, !tbaa !9
  %451 = getelementptr inbounds float, ptr %21, i64 %.5307451
  %452 = load float, ptr %451, align 4, !tbaa !9
  %453 = fdiv float %452, %450
  store float %453, ptr %451, align 4, !tbaa !9
  %454 = getelementptr float, ptr %7, i64 %.5307451
  %455 = load float, ptr %454, align 4, !tbaa !9
  %456 = getelementptr float, ptr %9, i64 %.5307451
  %457 = load float, ptr %456, align 4, !tbaa !9
  %458 = fdiv float %457, %455
  store float %458, ptr %456, align 4, !tbaa !9
  %459 = add nuw i64 %.5307451, 2
  %460 = getelementptr inbounds float, ptr %20, i64 %459
  %461 = load float, ptr %460, align 4, !tbaa !9
  %462 = getelementptr inbounds float, ptr %21, i64 %459
  %463 = load float, ptr %462, align 4, !tbaa !9
  %464 = fdiv float %463, %461
  store float %464, ptr %462, align 4, !tbaa !9
  %465 = add nuw i64 %.5307451, 3
  %466 = getelementptr inbounds float, ptr %20, i64 %465
  %467 = load float, ptr %466, align 4, !tbaa !9
  %468 = getelementptr inbounds float, ptr %21, i64 %465
  %469 = load float, ptr %468, align 4, !tbaa !9
  %470 = fdiv float %469, %467
  store float %470, ptr %468, align 4, !tbaa !9
  %471 = add nuw i64 %.5307451, 4
  %exitcond502.not.3 = icmp eq i64 %465, %433
  br i1 %exitcond502.not.3, label %.loopexit345, label %.lr.ph453, !llvm.loop !60

472:                                              ; preds = %430
  %473 = load i64, ptr %1, align 8, !tbaa !5
  %.not330446 = icmp slt i64 %473, 1
  br i1 %.not330446, label %.loopexit345, label %.lr.ph449.preheader

.lr.ph449.preheader:                              ; preds = %472
  %min.iters.check577 = icmp ult i64 %473, 8
  br i1 %min.iters.check577, label %.lr.ph449.preheader661, label %vector.memcheck569

vector.memcheck569:                               ; preds = %.lr.ph449.preheader
  %474 = shl i64 %473, 2
  %scevgep570 = getelementptr i8, ptr %9, i64 %474
  %scevgep571 = getelementptr i8, ptr %7, i64 %474
  %bound0572 = icmp ugt ptr %scevgep571, %9
  %bound1573 = icmp ugt ptr %scevgep570, %7
  %found.conflict574 = and i1 %bound0572, %bound1573
  br i1 %found.conflict574, label %.lr.ph449.preheader661, label %vector.ph578

vector.ph578:                                     ; preds = %vector.memcheck569
  %n.vec580 = and i64 %473, 9223372036854775800
  %ind.end581 = or disjoint i64 %n.vec580, 1
  br label %vector.body583

vector.body583:                                   ; preds = %vector.body583, %vector.ph578
  %index584 = phi i64 [ 0, %vector.ph578 ], [ %index.next590, %vector.body583 ]
  %475 = getelementptr float, ptr %7, i64 %index584
  %476 = getelementptr inbounds i8, ptr %475, i64 16
  %wide.load586 = load <4 x float>, ptr %475, align 4, !tbaa !9, !alias.scope !61
  %wide.load587 = load <4 x float>, ptr %476, align 4, !tbaa !9, !alias.scope !61
  %477 = getelementptr float, ptr %9, i64 %index584
  %478 = getelementptr inbounds i8, ptr %477, i64 16
  %wide.load588 = load <4 x float>, ptr %477, align 4, !tbaa !9, !alias.scope !64, !noalias !61
  %wide.load589 = load <4 x float>, ptr %478, align 4, !tbaa !9, !alias.scope !64, !noalias !61
  %479 = fmul <4 x float> %wide.load586, %wide.load588
  %480 = fmul <4 x float> %wide.load587, %wide.load589
  store <4 x float> %479, ptr %477, align 4, !tbaa !9, !alias.scope !64, !noalias !61
  store <4 x float> %480, ptr %478, align 4, !tbaa !9, !alias.scope !64, !noalias !61
  %index.next590 = add nuw i64 %index584, 8
  %481 = icmp eq i64 %index.next590, %n.vec580
  br i1 %481, label %middle.block575, label %vector.body583, !llvm.loop !66

middle.block575:                                  ; preds = %vector.body583
  %cmp.n591 = icmp eq i64 %473, %n.vec580
  br i1 %cmp.n591, label %.loopexit345, label %.lr.ph449.preheader661

.lr.ph449.preheader661:                           ; preds = %middle.block575, %vector.memcheck569, %.lr.ph449.preheader
  %.6308447.ph = phi i64 [ 1, %vector.memcheck569 ], [ 1, %.lr.ph449.preheader ], [ %ind.end581, %middle.block575 ]
  %482 = add nuw i64 %473, 1
  %483 = sub i64 %482, %.6308447.ph
  %484 = sub i64 %473, %.6308447.ph
  %xtraiter732 = and i64 %483, 3
  %lcmp.mod733.not = icmp eq i64 %xtraiter732, 0
  br i1 %lcmp.mod733.not, label %.lr.ph449.prol.loopexit, label %.lr.ph449.prol

.lr.ph449.prol:                                   ; preds = %.lr.ph449.preheader661, %.lr.ph449.prol
  %.6308447.prol = phi i64 [ %490, %.lr.ph449.prol ], [ %.6308447.ph, %.lr.ph449.preheader661 ]
  %prol.iter734 = phi i64 [ %prol.iter734.next, %.lr.ph449.prol ], [ 0, %.lr.ph449.preheader661 ]
  %485 = getelementptr inbounds float, ptr %20, i64 %.6308447.prol
  %486 = load float, ptr %485, align 4, !tbaa !9
  %487 = getelementptr inbounds float, ptr %21, i64 %.6308447.prol
  %488 = load float, ptr %487, align 4, !tbaa !9
  %489 = fmul float %486, %488
  store float %489, ptr %487, align 4, !tbaa !9
  %490 = add nuw i64 %.6308447.prol, 1
  %prol.iter734.next = add i64 %prol.iter734, 1
  %prol.iter734.cmp.not = icmp eq i64 %prol.iter734.next, %xtraiter732
  br i1 %prol.iter734.cmp.not, label %.lr.ph449.prol.loopexit, label %.lr.ph449.prol, !llvm.loop !67

.lr.ph449.prol.loopexit:                          ; preds = %.lr.ph449.prol, %.lr.ph449.preheader661
  %.6308447.unr = phi i64 [ %.6308447.ph, %.lr.ph449.preheader661 ], [ %490, %.lr.ph449.prol ]
  %491 = icmp ult i64 %484, 3
  br i1 %491, label %.loopexit345, label %.lr.ph449

.lr.ph449:                                        ; preds = %.lr.ph449.prol.loopexit, %.lr.ph449
  %.6308447 = phi i64 [ %514, %.lr.ph449 ], [ %.6308447.unr, %.lr.ph449.prol.loopexit ]
  %492 = getelementptr inbounds float, ptr %20, i64 %.6308447
  %493 = load float, ptr %492, align 4, !tbaa !9
  %494 = getelementptr inbounds float, ptr %21, i64 %.6308447
  %495 = load float, ptr %494, align 4, !tbaa !9
  %496 = fmul float %493, %495
  store float %496, ptr %494, align 4, !tbaa !9
  %497 = getelementptr float, ptr %7, i64 %.6308447
  %498 = load float, ptr %497, align 4, !tbaa !9
  %499 = getelementptr float, ptr %9, i64 %.6308447
  %500 = load float, ptr %499, align 4, !tbaa !9
  %501 = fmul float %498, %500
  store float %501, ptr %499, align 4, !tbaa !9
  %502 = add nuw i64 %.6308447, 2
  %503 = getelementptr inbounds float, ptr %20, i64 %502
  %504 = load float, ptr %503, align 4, !tbaa !9
  %505 = getelementptr inbounds float, ptr %21, i64 %502
  %506 = load float, ptr %505, align 4, !tbaa !9
  %507 = fmul float %504, %506
  store float %507, ptr %505, align 4, !tbaa !9
  %508 = add nuw i64 %.6308447, 3
  %509 = getelementptr inbounds float, ptr %20, i64 %508
  %510 = load float, ptr %509, align 4, !tbaa !9
  %511 = getelementptr inbounds float, ptr %21, i64 %508
  %512 = load float, ptr %511, align 4, !tbaa !9
  %513 = fmul float %510, %512
  store float %513, ptr %511, align 4, !tbaa !9
  %514 = add nuw i64 %.6308447, 4
  %exitcond501.not.3 = icmp eq i64 %508, %473
  br i1 %exitcond501.not.3, label %.loopexit345, label %.lr.ph449, !llvm.loop !68

.loopexit345:                                     ; preds = %.lr.ph449.prol.loopexit, %.lr.ph449, %.lr.ph453.prol.loopexit, %.lr.ph453, %middle.block575, %middle.block554, %472, %432, %430
  %515 = call i32 @spotrs_(ptr noundef nonnull %.str.3..str.2, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %9, ptr noundef nonnull %1, ptr noundef nonnull %8) #3
  %516 = load i64, ptr %1, align 8, !tbaa !5
  %.not332454 = icmp slt i64 %516, 1
  br i1 %.not332454, label %.loopexit.backedge, label %.lr.ph457

.lr.ph457:                                        ; preds = %.loopexit345
  %.idx333 = shl i64 %516, 3
  %517 = getelementptr i8, ptr %21, i64 %.idx333
  %min.iters.check = icmp ult i64 %516, 8
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph457
  %518 = shl i64 %516, 2
  %scevgep = getelementptr i8, ptr %9, i64 %518
  %scevgep543 = getelementptr i8, ptr %9, i64 %.idx333
  %519 = mul i64 %516, 12
  %scevgep544 = getelementptr i8, ptr %9, i64 %519
  %bound0 = icmp ugt ptr %scevgep544, %9
  %bound1 = icmp ult ptr %scevgep543, %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 %516, 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
  %520 = getelementptr float, ptr %517, i64 %offset.idx
  %521 = getelementptr i8, ptr %520, i64 16
  %wide.load = load <4 x float>, ptr %520, align 4, !tbaa !9, !alias.scope !69
  %wide.load545 = load <4 x float>, ptr %521, align 4, !tbaa !9, !alias.scope !69
  %522 = getelementptr float, ptr %9, i64 %index
  %523 = getelementptr inbounds i8, ptr %522, i64 16
  %wide.load546 = load <4 x float>, ptr %522, align 4, !tbaa !9, !alias.scope !72, !noalias !69
  %wide.load547 = load <4 x float>, ptr %523, align 4, !tbaa !9, !alias.scope !72, !noalias !69
  %524 = fmul <4 x float> %wide.load, %wide.load546
  %525 = fmul <4 x float> %wide.load545, %wide.load547
  store <4 x float> %524, ptr %522, align 4, !tbaa !9, !alias.scope !72, !noalias !69
  store <4 x float> %525, ptr %523, align 4, !tbaa !9, !alias.scope !72, !noalias !69
  %index.next = add nuw i64 %index, 8
  %526 = icmp eq i64 %index.next, %n.vec
  br i1 %526, label %middle.block, label %vector.body, !llvm.loop !74

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

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph457
  %.7309455.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph457 ], [ %ind.end, %middle.block ]
  %527 = add nuw i64 %516, 1
  %528 = sub i64 %527, %.7309455.ph
  %529 = sub i64 %516, %.7309455.ph
  %xtraiter738 = and i64 %528, 3
  %lcmp.mod739.not = icmp eq i64 %xtraiter738, 0
  br i1 %lcmp.mod739.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader, %scalar.ph.prol
  %.7309455.prol = phi i64 [ %535, %scalar.ph.prol ], [ %.7309455.ph, %scalar.ph.preheader ]
  %prol.iter740 = phi i64 [ %prol.iter740.next, %scalar.ph.prol ], [ 0, %scalar.ph.preheader ]
  %530 = getelementptr float, ptr %517, i64 %.7309455.prol
  %531 = load float, ptr %530, align 4, !tbaa !9
  %532 = getelementptr inbounds float, ptr %21, i64 %.7309455.prol
  %533 = load float, ptr %532, align 4, !tbaa !9
  %534 = fmul float %531, %533
  store float %534, ptr %532, align 4, !tbaa !9
  %535 = add nuw i64 %.7309455.prol, 1
  %prol.iter740.next = add i64 %prol.iter740, 1
  %prol.iter740.cmp.not = icmp eq i64 %prol.iter740.next, %xtraiter738
  br i1 %prol.iter740.cmp.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol, !llvm.loop !75

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %.7309455.unr = phi i64 [ %.7309455.ph, %scalar.ph.preheader ], [ %535, %scalar.ph.prol ]
  %536 = icmp ult i64 %529, 3
  br i1 %536, label %.loopexit.backedge, label %scalar.ph.preheader.new

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

scalar.ph:                                        ; preds = %scalar.ph, %scalar.ph.preheader.new
  %.7309455 = phi i64 [ %.7309455.unr, %scalar.ph.preheader.new ], [ %558, %scalar.ph ]
  %537 = getelementptr float, ptr %517, i64 %.7309455
  %538 = load float, ptr %537, align 4, !tbaa !9
  %539 = getelementptr inbounds float, ptr %21, i64 %.7309455
  %540 = load float, ptr %539, align 4, !tbaa !9
  %541 = fmul float %538, %540
  store float %541, ptr %539, align 4, !tbaa !9
  %gep772 = getelementptr float, ptr %invariant.gep771, i64 %.7309455
  %542 = load float, ptr %gep772, align 4, !tbaa !9
  %543 = getelementptr float, ptr %9, i64 %.7309455
  %544 = load float, ptr %543, align 4, !tbaa !9
  %545 = fmul float %542, %544
  store float %545, ptr %543, align 4, !tbaa !9
  %546 = add nuw i64 %.7309455, 2
  %547 = getelementptr float, ptr %517, i64 %546
  %548 = load float, ptr %547, align 4, !tbaa !9
  %549 = getelementptr inbounds float, ptr %21, i64 %546
  %550 = load float, ptr %549, align 4, !tbaa !9
  %551 = fmul float %548, %550
  store float %551, ptr %549, align 4, !tbaa !9
  %552 = add nuw i64 %.7309455, 3
  %553 = getelementptr float, ptr %517, i64 %552
  %554 = load float, ptr %553, align 4, !tbaa !9
  %555 = getelementptr inbounds float, ptr %21, i64 %552
  %556 = load float, ptr %555, align 4, !tbaa !9
  %557 = fmul float %554, %556
  store float %557, ptr %555, align 4, !tbaa !9
  %558 = add nuw i64 %.7309455, 4
  %exitcond503.not.3 = icmp eq i64 %552, %516
  br i1 %exitcond503.not.3, label %.loopexit.backedge, label %scalar.ph, !llvm.loop !76

559:                                              ; preds = %.loopexit
  %560 = load float, ptr %16, align 4, !tbaa !9
  %561 = fcmp une float %560, 0.000000e+00
  %562 = fdiv float 1.000000e+00, %560
  %563 = fpext float %562 to double
  %.0310 = select i1 %561, double %563, double 0.000000e+00
  br label %564

564:                                              ; preds = %26, %559, %24
  %.0311 = phi double [ 0.000000e+00, %24 ], [ %.0310, %559 ], [ 1.000000e+00, %26 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #3
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #3
  ret double %.0311
}

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

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

declare i64 @lsame_(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 @spotrs_(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

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 = { 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 = distinct !{!20, !12}
!21 = distinct !{!21, !12}
!22 = distinct !{!22, !12}
!23 = distinct !{!23, !12}
!24 = distinct !{!24, !12}
!25 = distinct !{!25, !12}
!26 = !{!27}
!27 = distinct !{!27, !28}
!28 = distinct !{!28, !"LVerDomain"}
!29 = !{!30}
!30 = distinct !{!30, !28}
!31 = distinct !{!31, !12, !32, !33}
!32 = !{!"llvm.loop.isvectorized", i32 1}
!33 = !{!"llvm.loop.unroll.runtime.disable"}
!34 = distinct !{!34, !35}
!35 = !{!"llvm.loop.unroll.disable"}
!36 = distinct !{!36, !12, !32}
!37 = !{!38}
!38 = distinct !{!38, !39}
!39 = distinct !{!39, !"LVerDomain"}
!40 = !{!41}
!41 = distinct !{!41, !39}
!42 = distinct !{!42, !12, !32, !33}
!43 = distinct !{!43, !35}
!44 = distinct !{!44, !12, !32}
!45 = !{!46}
!46 = distinct !{!46, !47}
!47 = distinct !{!47, !"LVerDomain"}
!48 = !{!49}
!49 = distinct !{!49, !47}
!50 = distinct !{!50, !12, !32, !33}
!51 = distinct !{!51, !35}
!52 = distinct !{!52, !12, !32}
!53 = !{!54}
!54 = distinct !{!54, !55}
!55 = distinct !{!55, !"LVerDomain"}
!56 = !{!57}
!57 = distinct !{!57, !55}
!58 = distinct !{!58, !12, !32, !33}
!59 = distinct !{!59, !35}
!60 = distinct !{!60, !12, !32}
!61 = !{!62}
!62 = distinct !{!62, !63}
!63 = distinct !{!63, !"LVerDomain"}
!64 = !{!65}
!65 = distinct !{!65, !63}
!66 = distinct !{!66, !12, !32, !33}
!67 = distinct !{!67, !35}
!68 = distinct !{!68, !12, !32}
!69 = !{!70}
!70 = distinct !{!70, !71}
!71 = distinct !{!71, !"LVerDomain"}
!72 = !{!73}
!73 = distinct !{!73, !71}
!74 = distinct !{!74, !12, !32, !33}
!75 = distinct !{!75, !35}
!76 = distinct !{!76, !12, !32}


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