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

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

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

; Function Attrs: nounwind uwtable
define dso_local i32 @sgbsvx_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22, ptr noundef %23) #0 {
  %25 = alloca i32, align 4
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca ptr, align 8
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca ptr, align 8
  %47 = alloca ptr, align 8
  %48 = alloca ptr, align 8
  %49 = alloca ptr, align 8
  %50 = alloca i64, align 8
  %51 = alloca i64, align 8
  %52 = alloca i64, align 8
  %53 = alloca i64, align 8
  %54 = alloca i64, align 8
  %55 = alloca i64, align 8
  %56 = alloca i64, align 8
  %57 = alloca i64, align 8
  %58 = alloca i64, align 8
  %59 = alloca i64, align 8
  %60 = alloca i64, align 8
  %61 = alloca i64, align 8
  %62 = alloca i64, align 8
  %63 = alloca float, align 4
  %64 = alloca float, align 4
  %65 = alloca float, align 4
  %66 = alloca i64, align 8
  %67 = alloca i64, align 8
  %68 = alloca i64, align 8
  %69 = alloca i64, align 8
  %70 = alloca float, align 4
  %71 = alloca [1 x i8], align 1
  %72 = alloca float, align 4
  %73 = alloca float, align 4
  %74 = alloca float, align 4
  %75 = alloca i64, align 8
  %76 = alloca float, align 4
  %77 = alloca i64, align 8
  %78 = alloca float, align 4
  %79 = alloca i64, align 8
  %80 = alloca i64, align 8
  %81 = alloca float, align 4
  %82 = alloca i64, align 8
  %83 = alloca float, align 4
  %84 = alloca i64, align 8
  %85 = alloca float, align 4
  %86 = alloca i32, align 4
  store ptr %0, ptr %26, align 8, !tbaa !5
  store ptr %1, ptr %27, align 8, !tbaa !5
  store ptr %2, ptr %28, align 8, !tbaa !5
  store ptr %3, ptr %29, align 8, !tbaa !5
  store ptr %4, ptr %30, align 8, !tbaa !5
  store ptr %5, ptr %31, align 8, !tbaa !5
  store ptr %6, ptr %32, align 8, !tbaa !5
  store ptr %7, ptr %33, align 8, !tbaa !5
  store ptr %8, ptr %34, align 8, !tbaa !5
  store ptr %9, ptr %35, align 8, !tbaa !5
  store ptr %10, ptr %36, align 8, !tbaa !5
  store ptr %11, ptr %37, align 8, !tbaa !5
  store ptr %12, ptr %38, align 8, !tbaa !5
  store ptr %13, ptr %39, align 8, !tbaa !5
  store ptr %14, ptr %40, align 8, !tbaa !5
  store ptr %15, ptr %41, align 8, !tbaa !5
  store ptr %16, ptr %42, align 8, !tbaa !5
  store ptr %17, ptr %43, align 8, !tbaa !5
  store ptr %18, ptr %44, align 8, !tbaa !5
  store ptr %19, ptr %45, align 8, !tbaa !5
  store ptr %20, ptr %46, align 8, !tbaa !5
  store ptr %21, ptr %47, align 8, !tbaa !5
  store ptr %22, ptr %48, align 8, !tbaa !5
  store ptr %23, ptr %49, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #3
  call void @llvm.lifetime.start.p0(i64 1, ptr %71) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %78) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %83) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #3
  %87 = load ptr, ptr %33, align 8, !tbaa !5
  %88 = load i64, ptr %87, align 8, !tbaa !9
  store i64 %88, ptr %50, align 8, !tbaa !9
  %89 = load i64, ptr %50, align 8, !tbaa !9
  %90 = add nsw i64 1, %89
  store i64 %90, ptr %51, align 8, !tbaa !9
  %91 = load i64, ptr %51, align 8, !tbaa !9
  %92 = load ptr, ptr %32, align 8, !tbaa !5
  %93 = sub i64 0, %91
  %94 = getelementptr inbounds float, ptr %92, i64 %93
  store ptr %94, ptr %32, align 8, !tbaa !5
  %95 = load ptr, ptr %35, align 8, !tbaa !5
  %96 = load i64, ptr %95, align 8, !tbaa !9
  store i64 %96, ptr %52, align 8, !tbaa !9
  %97 = load i64, ptr %52, align 8, !tbaa !9
  %98 = add nsw i64 1, %97
  store i64 %98, ptr %53, align 8, !tbaa !9
  %99 = load i64, ptr %53, align 8, !tbaa !9
  %100 = load ptr, ptr %34, align 8, !tbaa !5
  %101 = sub i64 0, %99
  %102 = getelementptr inbounds float, ptr %100, i64 %101
  store ptr %102, ptr %34, align 8, !tbaa !5
  %103 = load ptr, ptr %36, align 8, !tbaa !5
  %104 = getelementptr inbounds i64, ptr %103, i32 -1
  store ptr %104, ptr %36, align 8, !tbaa !5
  %105 = load ptr, ptr %38, align 8, !tbaa !5
  %106 = getelementptr inbounds float, ptr %105, i32 -1
  store ptr %106, ptr %38, align 8, !tbaa !5
  %107 = load ptr, ptr %39, align 8, !tbaa !5
  %108 = getelementptr inbounds float, ptr %107, i32 -1
  store ptr %108, ptr %39, align 8, !tbaa !5
  %109 = load ptr, ptr %41, align 8, !tbaa !5
  %110 = load i64, ptr %109, align 8, !tbaa !9
  store i64 %110, ptr %54, align 8, !tbaa !9
  %111 = load i64, ptr %54, align 8, !tbaa !9
  %112 = add nsw i64 1, %111
  store i64 %112, ptr %55, align 8, !tbaa !9
  %113 = load i64, ptr %55, align 8, !tbaa !9
  %114 = load ptr, ptr %40, align 8, !tbaa !5
  %115 = sub i64 0, %113
  %116 = getelementptr inbounds float, ptr %114, i64 %115
  store ptr %116, ptr %40, align 8, !tbaa !5
  %117 = load ptr, ptr %43, align 8, !tbaa !5
  %118 = load i64, ptr %117, align 8, !tbaa !9
  store i64 %118, ptr %56, align 8, !tbaa !9
  %119 = load i64, ptr %56, align 8, !tbaa !9
  %120 = add nsw i64 1, %119
  store i64 %120, ptr %57, align 8, !tbaa !9
  %121 = load i64, ptr %57, align 8, !tbaa !9
  %122 = load ptr, ptr %42, align 8, !tbaa !5
  %123 = sub i64 0, %121
  %124 = getelementptr inbounds float, ptr %122, i64 %123
  store ptr %124, ptr %42, align 8, !tbaa !5
  %125 = load ptr, ptr %45, align 8, !tbaa !5
  %126 = getelementptr inbounds float, ptr %125, i32 -1
  store ptr %126, ptr %45, align 8, !tbaa !5
  %127 = load ptr, ptr %46, align 8, !tbaa !5
  %128 = getelementptr inbounds float, ptr %127, i32 -1
  store ptr %128, ptr %46, align 8, !tbaa !5
  %129 = load ptr, ptr %47, align 8, !tbaa !5
  %130 = getelementptr inbounds float, ptr %129, i32 -1
  store ptr %130, ptr %47, align 8, !tbaa !5
  %131 = load ptr, ptr %48, align 8, !tbaa !5
  %132 = getelementptr inbounds i64, ptr %131, i32 -1
  store ptr %132, ptr %48, align 8, !tbaa !5
  %133 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 0, ptr %133, align 8, !tbaa !9
  %134 = load ptr, ptr %26, align 8, !tbaa !5
  %135 = call i64 @lsame_(ptr noundef %134, ptr noundef @.str)
  store i64 %135, ptr %77, align 8, !tbaa !9
  %136 = load ptr, ptr %26, align 8, !tbaa !5
  %137 = call i64 @lsame_(ptr noundef %136, ptr noundef @.str.1)
  store i64 %137, ptr %75, align 8, !tbaa !9
  %138 = load ptr, ptr %27, align 8, !tbaa !5
  %139 = call i64 @lsame_(ptr noundef %138, ptr noundef @.str)
  store i64 %139, ptr %82, align 8, !tbaa !9
  %140 = load i64, ptr %77, align 8, !tbaa !9
  %141 = icmp ne i64 %140, 0
  br i1 %141, label %145, label %142

142:                                              ; preds = %24
  %143 = load i64, ptr %75, align 8, !tbaa !9
  %144 = icmp ne i64 %143, 0
  br i1 %144, label %145, label %147

145:                                              ; preds = %142, %24
  %146 = load ptr, ptr %37, align 8, !tbaa !5
  store i8 78, ptr %146, align 1, !tbaa !11
  store i64 0, ptr %84, align 8, !tbaa !9
  store i64 0, ptr %80, align 8, !tbaa !9
  br label %174

147:                                              ; preds = %142
  %148 = load ptr, ptr %37, align 8, !tbaa !5
  %149 = call i64 @lsame_(ptr noundef %148, ptr noundef @.str.2)
  %150 = icmp ne i64 %149, 0
  br i1 %150, label %155, label %151

151:                                              ; preds = %147
  %152 = load ptr, ptr %37, align 8, !tbaa !5
  %153 = call i64 @lsame_(ptr noundef %152, ptr noundef @.str.3)
  %154 = icmp ne i64 %153, 0
  br label %155

155:                                              ; preds = %151, %147
  %156 = phi i1 [ true, %147 ], [ %154, %151 ]
  %157 = zext i1 %156 to i32
  %158 = sext i32 %157 to i64
  store i64 %158, ptr %84, align 8, !tbaa !9
  %159 = load ptr, ptr %37, align 8, !tbaa !5
  %160 = call i64 @lsame_(ptr noundef %159, ptr noundef @.str.4)
  %161 = icmp ne i64 %160, 0
  br i1 %161, label %166, label %162

162:                                              ; preds = %155
  %163 = load ptr, ptr %37, align 8, !tbaa !5
  %164 = call i64 @lsame_(ptr noundef %163, ptr noundef @.str.3)
  %165 = icmp ne i64 %164, 0
  br label %166

166:                                              ; preds = %162, %155
  %167 = phi i1 [ true, %155 ], [ %165, %162 ]
  %168 = zext i1 %167 to i32
  %169 = sext i32 %168 to i64
  store i64 %169, ptr %80, align 8, !tbaa !9
  %170 = call double @slamch_(ptr noundef @.str.5)
  %171 = fptrunc double %170 to float
  store float %171, ptr %83, align 4, !tbaa !12
  %172 = load float, ptr %83, align 4, !tbaa !12
  %173 = fdiv float 1.000000e+00, %172
  store float %173, ptr %78, align 4, !tbaa !12
  br label %174

174:                                              ; preds = %166, %145
  %175 = load i64, ptr %77, align 8, !tbaa !9
  %176 = icmp ne i64 %175, 0
  br i1 %176, label %186, label %177

177:                                              ; preds = %174
  %178 = load i64, ptr %75, align 8, !tbaa !9
  %179 = icmp ne i64 %178, 0
  br i1 %179, label %186, label %180

180:                                              ; preds = %177
  %181 = load ptr, ptr %26, align 8, !tbaa !5
  %182 = call i64 @lsame_(ptr noundef %181, ptr noundef @.str.6)
  %183 = icmp ne i64 %182, 0
  br i1 %183, label %186, label %184

184:                                              ; preds = %180
  %185 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -1, ptr %185, align 8, !tbaa !9
  br label %477

186:                                              ; preds = %180, %177, %174
  %187 = load i64, ptr %82, align 8, !tbaa !9
  %188 = icmp ne i64 %187, 0
  br i1 %188, label %199, label %189

189:                                              ; preds = %186
  %190 = load ptr, ptr %27, align 8, !tbaa !5
  %191 = call i64 @lsame_(ptr noundef %190, ptr noundef @.str.7)
  %192 = icmp ne i64 %191, 0
  br i1 %192, label %199, label %193

193:                                              ; preds = %189
  %194 = load ptr, ptr %27, align 8, !tbaa !5
  %195 = call i64 @lsame_(ptr noundef %194, ptr noundef @.str.4)
  %196 = icmp ne i64 %195, 0
  br i1 %196, label %199, label %197

197:                                              ; preds = %193
  %198 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -2, ptr %198, align 8, !tbaa !9
  br label %476

199:                                              ; preds = %193, %189, %186
  %200 = load ptr, ptr %28, align 8, !tbaa !5
  %201 = load i64, ptr %200, align 8, !tbaa !9
  %202 = icmp slt i64 %201, 0
  br i1 %202, label %203, label %205

203:                                              ; preds = %199
  %204 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -3, ptr %204, align 8, !tbaa !9
  br label %475

205:                                              ; preds = %199
  %206 = load ptr, ptr %29, align 8, !tbaa !5
  %207 = load i64, ptr %206, align 8, !tbaa !9
  %208 = icmp slt i64 %207, 0
  br i1 %208, label %209, label %211

209:                                              ; preds = %205
  %210 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -4, ptr %210, align 8, !tbaa !9
  br label %474

211:                                              ; preds = %205
  %212 = load ptr, ptr %30, align 8, !tbaa !5
  %213 = load i64, ptr %212, align 8, !tbaa !9
  %214 = icmp slt i64 %213, 0
  br i1 %214, label %215, label %217

215:                                              ; preds = %211
  %216 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -5, ptr %216, align 8, !tbaa !9
  br label %473

217:                                              ; preds = %211
  %218 = load ptr, ptr %31, align 8, !tbaa !5
  %219 = load i64, ptr %218, align 8, !tbaa !9
  %220 = icmp slt i64 %219, 0
  br i1 %220, label %221, label %223

221:                                              ; preds = %217
  %222 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -6, ptr %222, align 8, !tbaa !9
  br label %472

223:                                              ; preds = %217
  %224 = load ptr, ptr %33, align 8, !tbaa !5
  %225 = load i64, ptr %224, align 8, !tbaa !9
  %226 = load ptr, ptr %29, align 8, !tbaa !5
  %227 = load i64, ptr %226, align 8, !tbaa !9
  %228 = load ptr, ptr %30, align 8, !tbaa !5
  %229 = load i64, ptr %228, align 8, !tbaa !9
  %230 = add nsw i64 %227, %229
  %231 = add nsw i64 %230, 1
  %232 = icmp slt i64 %225, %231
  br i1 %232, label %233, label %235

233:                                              ; preds = %223
  %234 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -8, ptr %234, align 8, !tbaa !9
  br label %471

235:                                              ; preds = %223
  %236 = load ptr, ptr %35, align 8, !tbaa !5
  %237 = load i64, ptr %236, align 8, !tbaa !9
  %238 = load ptr, ptr %29, align 8, !tbaa !5
  %239 = load i64, ptr %238, align 8, !tbaa !9
  %240 = shl i64 %239, 1
  %241 = load ptr, ptr %30, align 8, !tbaa !5
  %242 = load i64, ptr %241, align 8, !tbaa !9
  %243 = add nsw i64 %240, %242
  %244 = add nsw i64 %243, 1
  %245 = icmp slt i64 %237, %244
  br i1 %245, label %246, label %248

246:                                              ; preds = %235
  %247 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -10, ptr %247, align 8, !tbaa !9
  br label %470

248:                                              ; preds = %235
  %249 = load ptr, ptr %26, align 8, !tbaa !5
  %250 = call i64 @lsame_(ptr noundef %249, ptr noundef @.str.6)
  %251 = icmp ne i64 %250, 0
  br i1 %251, label %252, label %264

252:                                              ; preds = %248
  %253 = load i64, ptr %84, align 8, !tbaa !9
  %254 = icmp ne i64 %253, 0
  br i1 %254, label %264, label %255

255:                                              ; preds = %252
  %256 = load i64, ptr %80, align 8, !tbaa !9
  %257 = icmp ne i64 %256, 0
  br i1 %257, label %264, label %258

258:                                              ; preds = %255
  %259 = load ptr, ptr %37, align 8, !tbaa !5
  %260 = call i64 @lsame_(ptr noundef %259, ptr noundef @.str)
  %261 = icmp ne i64 %260, 0
  br i1 %261, label %264, label %262

262:                                              ; preds = %258
  %263 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -12, ptr %263, align 8, !tbaa !9
  br label %469

264:                                              ; preds = %258, %255, %252, %248
  %265 = load i64, ptr %84, align 8, !tbaa !9
  %266 = icmp ne i64 %265, 0
  br i1 %266, label %267, label %346

267:                                              ; preds = %264
  %268 = load float, ptr %78, align 4, !tbaa !12
  store float %268, ptr %72, align 4, !tbaa !12
  store float 0.000000e+00, ptr %73, align 4, !tbaa !12
  %269 = load ptr, ptr %28, align 8, !tbaa !5
  %270 = load i64, ptr %269, align 8, !tbaa !9
  store i64 %270, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %67, align 8, !tbaa !9
  br label %271

271:                                              ; preds = %308, %267
  %272 = load i64, ptr %67, align 8, !tbaa !9
  %273 = load i64, ptr %58, align 8, !tbaa !9
  %274 = icmp sle i64 %272, %273
  br i1 %274, label %275, label %311

275:                                              ; preds = %271
  %276 = load float, ptr %72, align 4, !tbaa !12
  store float %276, ptr %63, align 4, !tbaa !12
  %277 = load ptr, ptr %38, align 8, !tbaa !5
  %278 = load i64, ptr %67, align 8, !tbaa !9
  %279 = getelementptr inbounds float, ptr %277, i64 %278
  %280 = load float, ptr %279, align 4, !tbaa !12
  store float %280, ptr %64, align 4, !tbaa !12
  %281 = load float, ptr %63, align 4, !tbaa !12
  %282 = load float, ptr %64, align 4, !tbaa !12
  %283 = fcmp ole float %281, %282
  br i1 %283, label %284, label %286

284:                                              ; preds = %275
  %285 = load float, ptr %63, align 4, !tbaa !12
  br label %288

286:                                              ; preds = %275
  %287 = load float, ptr %64, align 4, !tbaa !12
  br label %288

288:                                              ; preds = %286, %284
  %289 = phi float [ %285, %284 ], [ %287, %286 ]
  %290 = fpext float %289 to double
  %291 = fptrunc double %290 to float
  store float %291, ptr %72, align 4, !tbaa !12
  %292 = load float, ptr %73, align 4, !tbaa !12
  store float %292, ptr %63, align 4, !tbaa !12
  %293 = load ptr, ptr %38, align 8, !tbaa !5
  %294 = load i64, ptr %67, align 8, !tbaa !9
  %295 = getelementptr inbounds float, ptr %293, i64 %294
  %296 = load float, ptr %295, align 4, !tbaa !12
  store float %296, ptr %64, align 4, !tbaa !12
  %297 = load float, ptr %63, align 4, !tbaa !12
  %298 = load float, ptr %64, align 4, !tbaa !12
  %299 = fcmp oge float %297, %298
  br i1 %299, label %300, label %302

300:                                              ; preds = %288
  %301 = load float, ptr %63, align 4, !tbaa !12
  br label %304

302:                                              ; preds = %288
  %303 = load float, ptr %64, align 4, !tbaa !12
  br label %304

304:                                              ; preds = %302, %300
  %305 = phi float [ %301, %300 ], [ %303, %302 ]
  %306 = fpext float %305 to double
  %307 = fptrunc double %306 to float
  store float %307, ptr %73, align 4, !tbaa !12
  br label %308

308:                                              ; preds = %304
  %309 = load i64, ptr %67, align 8, !tbaa !9
  %310 = add nsw i64 %309, 1
  store i64 %310, ptr %67, align 8, !tbaa !9
  br label %271, !llvm.loop !14

311:                                              ; preds = %271
  %312 = load float, ptr %72, align 4, !tbaa !12
  %313 = fcmp ole float %312, 0.000000e+00
  br i1 %313, label %314, label %316

314:                                              ; preds = %311
  %315 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -13, ptr %315, align 8, !tbaa !9
  br label %345

316:                                              ; preds = %311
  %317 = load ptr, ptr %28, align 8, !tbaa !5
  %318 = load i64, ptr %317, align 8, !tbaa !9
  %319 = icmp sgt i64 %318, 0
  br i1 %319, label %320, label %343

320:                                              ; preds = %316
  %321 = load float, ptr %72, align 4, !tbaa !12
  %322 = load float, ptr %83, align 4, !tbaa !12
  %323 = fcmp oge float %321, %322
  br i1 %323, label %324, label %326

324:                                              ; preds = %320
  %325 = load float, ptr %72, align 4, !tbaa !12
  br label %328

326:                                              ; preds = %320
  %327 = load float, ptr %83, align 4, !tbaa !12
  br label %328

328:                                              ; preds = %326, %324
  %329 = phi float [ %325, %324 ], [ %327, %326 ]
  %330 = fpext float %329 to double
  %331 = load float, ptr %73, align 4, !tbaa !12
  %332 = load float, ptr %78, align 4, !tbaa !12
  %333 = fcmp ole float %331, %332
  br i1 %333, label %334, label %336

334:                                              ; preds = %328
  %335 = load float, ptr %73, align 4, !tbaa !12
  br label %338

336:                                              ; preds = %328
  %337 = load float, ptr %78, align 4, !tbaa !12
  br label %338

338:                                              ; preds = %336, %334
  %339 = phi float [ %335, %334 ], [ %337, %336 ]
  %340 = fpext float %339 to double
  %341 = fdiv double %330, %340
  %342 = fptrunc double %341 to float
  store float %342, ptr %81, align 4, !tbaa !12
  br label %344

343:                                              ; preds = %316
  store float 1.000000e+00, ptr %81, align 4, !tbaa !12
  br label %344

344:                                              ; preds = %343, %338
  br label %345

345:                                              ; preds = %344, %314
  br label %346

346:                                              ; preds = %345, %264
  %347 = load i64, ptr %80, align 8, !tbaa !9
  %348 = icmp ne i64 %347, 0
  br i1 %348, label %349, label %432

349:                                              ; preds = %346
  %350 = load ptr, ptr %49, align 8, !tbaa !5
  %351 = load i64, ptr %350, align 8, !tbaa !9
  %352 = icmp eq i64 %351, 0
  br i1 %352, label %353, label %432

353:                                              ; preds = %349
  %354 = load float, ptr %78, align 4, !tbaa !12
  store float %354, ptr %72, align 4, !tbaa !12
  store float 0.000000e+00, ptr %73, align 4, !tbaa !12
  %355 = load ptr, ptr %28, align 8, !tbaa !5
  %356 = load i64, ptr %355, align 8, !tbaa !9
  store i64 %356, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %67, align 8, !tbaa !9
  br label %357

357:                                              ; preds = %394, %353
  %358 = load i64, ptr %67, align 8, !tbaa !9
  %359 = load i64, ptr %58, align 8, !tbaa !9
  %360 = icmp sle i64 %358, %359
  br i1 %360, label %361, label %397

361:                                              ; preds = %357
  %362 = load float, ptr %72, align 4, !tbaa !12
  store float %362, ptr %63, align 4, !tbaa !12
  %363 = load ptr, ptr %39, align 8, !tbaa !5
  %364 = load i64, ptr %67, align 8, !tbaa !9
  %365 = getelementptr inbounds float, ptr %363, i64 %364
  %366 = load float, ptr %365, align 4, !tbaa !12
  store float %366, ptr %64, align 4, !tbaa !12
  %367 = load float, ptr %63, align 4, !tbaa !12
  %368 = load float, ptr %64, align 4, !tbaa !12
  %369 = fcmp ole float %367, %368
  br i1 %369, label %370, label %372

370:                                              ; preds = %361
  %371 = load float, ptr %63, align 4, !tbaa !12
  br label %374

372:                                              ; preds = %361
  %373 = load float, ptr %64, align 4, !tbaa !12
  br label %374

374:                                              ; preds = %372, %370
  %375 = phi float [ %371, %370 ], [ %373, %372 ]
  %376 = fpext float %375 to double
  %377 = fptrunc double %376 to float
  store float %377, ptr %72, align 4, !tbaa !12
  %378 = load float, ptr %73, align 4, !tbaa !12
  store float %378, ptr %63, align 4, !tbaa !12
  %379 = load ptr, ptr %39, align 8, !tbaa !5
  %380 = load i64, ptr %67, align 8, !tbaa !9
  %381 = getelementptr inbounds float, ptr %379, i64 %380
  %382 = load float, ptr %381, align 4, !tbaa !12
  store float %382, ptr %64, align 4, !tbaa !12
  %383 = load float, ptr %63, align 4, !tbaa !12
  %384 = load float, ptr %64, align 4, !tbaa !12
  %385 = fcmp oge float %383, %384
  br i1 %385, label %386, label %388

386:                                              ; preds = %374
  %387 = load float, ptr %63, align 4, !tbaa !12
  br label %390

388:                                              ; preds = %374
  %389 = load float, ptr %64, align 4, !tbaa !12
  br label %390

390:                                              ; preds = %388, %386
  %391 = phi float [ %387, %386 ], [ %389, %388 ]
  %392 = fpext float %391 to double
  %393 = fptrunc double %392 to float
  store float %393, ptr %73, align 4, !tbaa !12
  br label %394

394:                                              ; preds = %390
  %395 = load i64, ptr %67, align 8, !tbaa !9
  %396 = add nsw i64 %395, 1
  store i64 %396, ptr %67, align 8, !tbaa !9
  br label %357, !llvm.loop !16

397:                                              ; preds = %357
  %398 = load float, ptr %72, align 4, !tbaa !12
  %399 = fcmp ole float %398, 0.000000e+00
  br i1 %399, label %400, label %402

400:                                              ; preds = %397
  %401 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -14, ptr %401, align 8, !tbaa !9
  br label %431

402:                                              ; preds = %397
  %403 = load ptr, ptr %28, align 8, !tbaa !5
  %404 = load i64, ptr %403, align 8, !tbaa !9
  %405 = icmp sgt i64 %404, 0
  br i1 %405, label %406, label %429

406:                                              ; preds = %402
  %407 = load float, ptr %72, align 4, !tbaa !12
  %408 = load float, ptr %83, align 4, !tbaa !12
  %409 = fcmp oge float %407, %408
  br i1 %409, label %410, label %412

410:                                              ; preds = %406
  %411 = load float, ptr %72, align 4, !tbaa !12
  br label %414

412:                                              ; preds = %406
  %413 = load float, ptr %83, align 4, !tbaa !12
  br label %414

414:                                              ; preds = %412, %410
  %415 = phi float [ %411, %410 ], [ %413, %412 ]
  %416 = fpext float %415 to double
  %417 = load float, ptr %73, align 4, !tbaa !12
  %418 = load float, ptr %78, align 4, !tbaa !12
  %419 = fcmp ole float %417, %418
  br i1 %419, label %420, label %422

420:                                              ; preds = %414
  %421 = load float, ptr %73, align 4, !tbaa !12
  br label %424

422:                                              ; preds = %414
  %423 = load float, ptr %78, align 4, !tbaa !12
  br label %424

424:                                              ; preds = %422, %420
  %425 = phi float [ %421, %420 ], [ %423, %422 ]
  %426 = fpext float %425 to double
  %427 = fdiv double %416, %426
  %428 = fptrunc double %427 to float
  store float %428, ptr %76, align 4, !tbaa !12
  br label %430

429:                                              ; preds = %402
  store float 1.000000e+00, ptr %76, align 4, !tbaa !12
  br label %430

430:                                              ; preds = %429, %424
  br label %431

431:                                              ; preds = %430, %400
  br label %432

432:                                              ; preds = %431, %349, %346
  %433 = load ptr, ptr %49, align 8, !tbaa !5
  %434 = load i64, ptr %433, align 8, !tbaa !9
  %435 = icmp eq i64 %434, 0
  br i1 %435, label %436, label %468

436:                                              ; preds = %432
  %437 = load ptr, ptr %41, align 8, !tbaa !5
  %438 = load i64, ptr %437, align 8, !tbaa !9
  %439 = load ptr, ptr %28, align 8, !tbaa !5
  %440 = load i64, ptr %439, align 8, !tbaa !9
  %441 = icmp sge i64 1, %440
  br i1 %441, label %442, label %443

442:                                              ; preds = %436
  br label %446

443:                                              ; preds = %436
  %444 = load ptr, ptr %28, align 8, !tbaa !5
  %445 = load i64, ptr %444, align 8, !tbaa !9
  br label %446

446:                                              ; preds = %443, %442
  %447 = phi i64 [ 1, %442 ], [ %445, %443 ]
  %448 = icmp slt i64 %438, %447
  br i1 %448, label %449, label %451

449:                                              ; preds = %446
  %450 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -16, ptr %450, align 8, !tbaa !9
  br label %467

451:                                              ; preds = %446
  %452 = load ptr, ptr %43, align 8, !tbaa !5
  %453 = load i64, ptr %452, align 8, !tbaa !9
  %454 = load ptr, ptr %28, align 8, !tbaa !5
  %455 = load i64, ptr %454, align 8, !tbaa !9
  %456 = icmp sge i64 1, %455
  br i1 %456, label %457, label %458

457:                                              ; preds = %451
  br label %461

458:                                              ; preds = %451
  %459 = load ptr, ptr %28, align 8, !tbaa !5
  %460 = load i64, ptr %459, align 8, !tbaa !9
  br label %461

461:                                              ; preds = %458, %457
  %462 = phi i64 [ 1, %457 ], [ %460, %458 ]
  %463 = icmp slt i64 %453, %462
  br i1 %463, label %464, label %466

464:                                              ; preds = %461
  %465 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -18, ptr %465, align 8, !tbaa !9
  br label %466

466:                                              ; preds = %464, %461
  br label %467

467:                                              ; preds = %466, %449
  br label %468

468:                                              ; preds = %467, %432
  br label %469

469:                                              ; preds = %468, %262
  br label %470

470:                                              ; preds = %469, %246
  br label %471

471:                                              ; preds = %470, %233
  br label %472

472:                                              ; preds = %471, %221
  br label %473

473:                                              ; preds = %472, %215
  br label %474

474:                                              ; preds = %473, %209
  br label %475

475:                                              ; preds = %474, %203
  br label %476

476:                                              ; preds = %475, %197
  br label %477

477:                                              ; preds = %476, %184
  %478 = load ptr, ptr %49, align 8, !tbaa !5
  %479 = load i64, ptr %478, align 8, !tbaa !9
  %480 = icmp ne i64 %479, 0
  br i1 %480, label %481, label %486

481:                                              ; preds = %477
  %482 = load ptr, ptr %49, align 8, !tbaa !5
  %483 = load i64, ptr %482, align 8, !tbaa !9
  %484 = sub nsw i64 0, %483
  store i64 %484, ptr %58, align 8, !tbaa !9
  %485 = call i32 @xerbla_(ptr noundef @.str.8, ptr noundef %58)
  store i32 0, ptr %25, align 4
  store i32 1, ptr %86, align 4
  br label %1154

486:                                              ; preds = %477
  %487 = load i64, ptr %75, align 8, !tbaa !9
  %488 = icmp ne i64 %487, 0
  br i1 %488, label %489, label %543

489:                                              ; preds = %486
  %490 = load ptr, ptr %28, align 8, !tbaa !5
  %491 = load ptr, ptr %28, align 8, !tbaa !5
  %492 = load ptr, ptr %29, align 8, !tbaa !5
  %493 = load ptr, ptr %30, align 8, !tbaa !5
  %494 = load ptr, ptr %32, align 8, !tbaa !5
  %495 = load i64, ptr %51, align 8, !tbaa !9
  %496 = getelementptr inbounds float, ptr %494, i64 %495
  %497 = load ptr, ptr %33, align 8, !tbaa !5
  %498 = load ptr, ptr %38, align 8, !tbaa !5
  %499 = getelementptr inbounds float, ptr %498, i64 1
  %500 = load ptr, ptr %39, align 8, !tbaa !5
  %501 = getelementptr inbounds float, ptr %500, i64 1
  %502 = call i32 @sgbequ_(ptr noundef %490, ptr noundef %491, ptr noundef %492, ptr noundef %493, ptr noundef %496, ptr noundef %497, ptr noundef %499, ptr noundef %501, ptr noundef %81, ptr noundef %76, ptr noundef %70, ptr noundef %79)
  %503 = load i64, ptr %79, align 8, !tbaa !9
  %504 = icmp eq i64 %503, 0
  br i1 %504, label %505, label %542

505:                                              ; preds = %489
  %506 = load ptr, ptr %28, align 8, !tbaa !5
  %507 = load ptr, ptr %28, align 8, !tbaa !5
  %508 = load ptr, ptr %29, align 8, !tbaa !5
  %509 = load ptr, ptr %30, align 8, !tbaa !5
  %510 = load ptr, ptr %32, align 8, !tbaa !5
  %511 = load i64, ptr %51, align 8, !tbaa !9
  %512 = getelementptr inbounds float, ptr %510, i64 %511
  %513 = load ptr, ptr %33, align 8, !tbaa !5
  %514 = load ptr, ptr %38, align 8, !tbaa !5
  %515 = getelementptr inbounds float, ptr %514, i64 1
  %516 = load ptr, ptr %39, align 8, !tbaa !5
  %517 = getelementptr inbounds float, ptr %516, i64 1
  %518 = load ptr, ptr %37, align 8, !tbaa !5
  %519 = call i32 @slaqgb_(ptr noundef %506, ptr noundef %507, ptr noundef %508, ptr noundef %509, ptr noundef %512, ptr noundef %513, ptr noundef %515, ptr noundef %517, ptr noundef %81, ptr noundef %76, ptr noundef %70, ptr noundef %518)
  %520 = load ptr, ptr %37, align 8, !tbaa !5
  %521 = call i64 @lsame_(ptr noundef %520, ptr noundef @.str.2)
  %522 = icmp ne i64 %521, 0
  br i1 %522, label %527, label %523

523:                                              ; preds = %505
  %524 = load ptr, ptr %37, align 8, !tbaa !5
  %525 = call i64 @lsame_(ptr noundef %524, ptr noundef @.str.3)
  %526 = icmp ne i64 %525, 0
  br label %527

527:                                              ; preds = %523, %505
  %528 = phi i1 [ true, %505 ], [ %526, %523 ]
  %529 = zext i1 %528 to i32
  %530 = sext i32 %529 to i64
  store i64 %530, ptr %84, align 8, !tbaa !9
  %531 = load ptr, ptr %37, align 8, !tbaa !5
  %532 = call i64 @lsame_(ptr noundef %531, ptr noundef @.str.4)
  %533 = icmp ne i64 %532, 0
  br i1 %533, label %538, label %534

534:                                              ; preds = %527
  %535 = load ptr, ptr %37, align 8, !tbaa !5
  %536 = call i64 @lsame_(ptr noundef %535, ptr noundef @.str.3)
  %537 = icmp ne i64 %536, 0
  br label %538

538:                                              ; preds = %534, %527
  %539 = phi i1 [ true, %527 ], [ %537, %534 ]
  %540 = zext i1 %539 to i32
  %541 = sext i32 %540 to i64
  store i64 %541, ptr %80, align 8, !tbaa !9
  br label %542

542:                                              ; preds = %538, %489
  br label %543

543:                                              ; preds = %542, %486
  %544 = load i64, ptr %82, align 8, !tbaa !9
  %545 = icmp ne i64 %544, 0
  br i1 %545, label %546, label %593

546:                                              ; preds = %543
  %547 = load i64, ptr %84, align 8, !tbaa !9
  %548 = icmp ne i64 %547, 0
  br i1 %548, label %549, label %592

549:                                              ; preds = %546
  %550 = load ptr, ptr %31, align 8, !tbaa !5
  %551 = load i64, ptr %550, align 8, !tbaa !9
  store i64 %551, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %67, align 8, !tbaa !9
  br label %552

552:                                              ; preds = %588, %549
  %553 = load i64, ptr %67, align 8, !tbaa !9
  %554 = load i64, ptr %58, align 8, !tbaa !9
  %555 = icmp sle i64 %553, %554
  br i1 %555, label %556, label %591

556:                                              ; preds = %552
  %557 = load ptr, ptr %28, align 8, !tbaa !5
  %558 = load i64, ptr %557, align 8, !tbaa !9
  store i64 %558, ptr %59, align 8, !tbaa !9
  store i64 1, ptr %66, align 8, !tbaa !9
  br label %559

559:                                              ; preds = %584, %556
  %560 = load i64, ptr %66, align 8, !tbaa !9
  %561 = load i64, ptr %59, align 8, !tbaa !9
  %562 = icmp sle i64 %560, %561
  br i1 %562, label %563, label %587

563:                                              ; preds = %559
  %564 = load ptr, ptr %38, align 8, !tbaa !5
  %565 = load i64, ptr %66, align 8, !tbaa !9
  %566 = getelementptr inbounds float, ptr %564, i64 %565
  %567 = load float, ptr %566, align 4, !tbaa !12
  %568 = load ptr, ptr %40, align 8, !tbaa !5
  %569 = load i64, ptr %66, align 8, !tbaa !9
  %570 = load i64, ptr %67, align 8, !tbaa !9
  %571 = load i64, ptr %54, align 8, !tbaa !9
  %572 = mul nsw i64 %570, %571
  %573 = add nsw i64 %569, %572
  %574 = getelementptr inbounds float, ptr %568, i64 %573
  %575 = load float, ptr %574, align 4, !tbaa !12
  %576 = fmul float %567, %575
  %577 = load ptr, ptr %40, align 8, !tbaa !5
  %578 = load i64, ptr %66, align 8, !tbaa !9
  %579 = load i64, ptr %67, align 8, !tbaa !9
  %580 = load i64, ptr %54, align 8, !tbaa !9
  %581 = mul nsw i64 %579, %580
  %582 = add nsw i64 %578, %581
  %583 = getelementptr inbounds float, ptr %577, i64 %582
  store float %576, ptr %583, align 4, !tbaa !12
  br label %584

584:                                              ; preds = %563
  %585 = load i64, ptr %66, align 8, !tbaa !9
  %586 = add nsw i64 %585, 1
  store i64 %586, ptr %66, align 8, !tbaa !9
  br label %559, !llvm.loop !17

587:                                              ; preds = %559
  br label %588

588:                                              ; preds = %587
  %589 = load i64, ptr %67, align 8, !tbaa !9
  %590 = add nsw i64 %589, 1
  store i64 %590, ptr %67, align 8, !tbaa !9
  br label %552, !llvm.loop !18

591:                                              ; preds = %552
  br label %592

592:                                              ; preds = %591, %546
  br label %640

593:                                              ; preds = %543
  %594 = load i64, ptr %80, align 8, !tbaa !9
  %595 = icmp ne i64 %594, 0
  br i1 %595, label %596, label %639

596:                                              ; preds = %593
  %597 = load ptr, ptr %31, align 8, !tbaa !5
  %598 = load i64, ptr %597, align 8, !tbaa !9
  store i64 %598, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %67, align 8, !tbaa !9
  br label %599

599:                                              ; preds = %635, %596
  %600 = load i64, ptr %67, align 8, !tbaa !9
  %601 = load i64, ptr %58, align 8, !tbaa !9
  %602 = icmp sle i64 %600, %601
  br i1 %602, label %603, label %638

603:                                              ; preds = %599
  %604 = load ptr, ptr %28, align 8, !tbaa !5
  %605 = load i64, ptr %604, align 8, !tbaa !9
  store i64 %605, ptr %59, align 8, !tbaa !9
  store i64 1, ptr %66, align 8, !tbaa !9
  br label %606

606:                                              ; preds = %631, %603
  %607 = load i64, ptr %66, align 8, !tbaa !9
  %608 = load i64, ptr %59, align 8, !tbaa !9
  %609 = icmp sle i64 %607, %608
  br i1 %609, label %610, label %634

610:                                              ; preds = %606
  %611 = load ptr, ptr %39, align 8, !tbaa !5
  %612 = load i64, ptr %66, align 8, !tbaa !9
  %613 = getelementptr inbounds float, ptr %611, i64 %612
  %614 = load float, ptr %613, align 4, !tbaa !12
  %615 = load ptr, ptr %40, align 8, !tbaa !5
  %616 = load i64, ptr %66, align 8, !tbaa !9
  %617 = load i64, ptr %67, align 8, !tbaa !9
  %618 = load i64, ptr %54, align 8, !tbaa !9
  %619 = mul nsw i64 %617, %618
  %620 = add nsw i64 %616, %619
  %621 = getelementptr inbounds float, ptr %615, i64 %620
  %622 = load float, ptr %621, align 4, !tbaa !12
  %623 = fmul float %614, %622
  %624 = load ptr, ptr %40, align 8, !tbaa !5
  %625 = load i64, ptr %66, align 8, !tbaa !9
  %626 = load i64, ptr %67, align 8, !tbaa !9
  %627 = load i64, ptr %54, align 8, !tbaa !9
  %628 = mul nsw i64 %626, %627
  %629 = add nsw i64 %625, %628
  %630 = getelementptr inbounds float, ptr %624, i64 %629
  store float %623, ptr %630, align 4, !tbaa !12
  br label %631

631:                                              ; preds = %610
  %632 = load i64, ptr %66, align 8, !tbaa !9
  %633 = add nsw i64 %632, 1
  store i64 %633, ptr %66, align 8, !tbaa !9
  br label %606, !llvm.loop !19

634:                                              ; preds = %606
  br label %635

635:                                              ; preds = %634
  %636 = load i64, ptr %67, align 8, !tbaa !9
  %637 = add nsw i64 %636, 1
  store i64 %637, ptr %67, align 8, !tbaa !9
  br label %599, !llvm.loop !20

638:                                              ; preds = %599
  br label %639

639:                                              ; preds = %638, %593
  br label %640

640:                                              ; preds = %639, %592
  %641 = load i64, ptr %77, align 8, !tbaa !9
  %642 = icmp ne i64 %641, 0
  br i1 %642, label %646, label %643

643:                                              ; preds = %640
  %644 = load i64, ptr %75, align 8, !tbaa !9
  %645 = icmp ne i64 %644, 0
  br i1 %645, label %646, label %878

646:                                              ; preds = %643, %640
  %647 = load ptr, ptr %28, align 8, !tbaa !5
  %648 = load i64, ptr %647, align 8, !tbaa !9
  store i64 %648, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %67, align 8, !tbaa !9
  br label %649

649:                                              ; preds = %714, %646
  %650 = load i64, ptr %67, align 8, !tbaa !9
  %651 = load i64, ptr %58, align 8, !tbaa !9
  %652 = icmp sle i64 %650, %651
  br i1 %652, label %653, label %717

653:                                              ; preds = %649
  %654 = load i64, ptr %67, align 8, !tbaa !9
  %655 = load ptr, ptr %30, align 8, !tbaa !5
  %656 = load i64, ptr %655, align 8, !tbaa !9
  %657 = sub nsw i64 %654, %656
  store i64 %657, ptr %59, align 8, !tbaa !9
  %658 = load i64, ptr %59, align 8, !tbaa !9
  %659 = icmp sge i64 %658, 1
  br i1 %659, label %660, label %662

660:                                              ; preds = %653
  %661 = load i64, ptr %59, align 8, !tbaa !9
  br label %663

662:                                              ; preds = %653
  br label %663

663:                                              ; preds = %662, %660
  %664 = phi i64 [ %661, %660 ], [ 1, %662 ]
  store i64 %664, ptr %68, align 8, !tbaa !9
  %665 = load i64, ptr %67, align 8, !tbaa !9
  %666 = load ptr, ptr %29, align 8, !tbaa !5
  %667 = load i64, ptr %666, align 8, !tbaa !9
  %668 = add nsw i64 %665, %667
  store i64 %668, ptr %59, align 8, !tbaa !9
  %669 = load i64, ptr %59, align 8, !tbaa !9
  %670 = load ptr, ptr %28, align 8, !tbaa !5
  %671 = load i64, ptr %670, align 8, !tbaa !9
  %672 = icmp sle i64 %669, %671
  br i1 %672, label %673, label %675

673:                                              ; preds = %663
  %674 = load i64, ptr %59, align 8, !tbaa !9
  br label %678

675:                                              ; preds = %663
  %676 = load ptr, ptr %28, align 8, !tbaa !5
  %677 = load i64, ptr %676, align 8, !tbaa !9
  br label %678

678:                                              ; preds = %675, %673
  %679 = phi i64 [ %674, %673 ], [ %677, %675 ]
  store i64 %679, ptr %69, align 8, !tbaa !9
  %680 = load i64, ptr %69, align 8, !tbaa !9
  %681 = load i64, ptr %68, align 8, !tbaa !9
  %682 = sub nsw i64 %680, %681
  %683 = add nsw i64 %682, 1
  store i64 %683, ptr %59, align 8, !tbaa !9
  %684 = load ptr, ptr %32, align 8, !tbaa !5
  %685 = load ptr, ptr %30, align 8, !tbaa !5
  %686 = load i64, ptr %685, align 8, !tbaa !9
  %687 = add nsw i64 %686, 1
  %688 = load i64, ptr %67, align 8, !tbaa !9
  %689 = sub nsw i64 %687, %688
  %690 = load i64, ptr %68, align 8, !tbaa !9
  %691 = add nsw i64 %689, %690
  %692 = load i64, ptr %67, align 8, !tbaa !9
  %693 = load i64, ptr %50, align 8, !tbaa !9
  %694 = mul nsw i64 %692, %693
  %695 = add nsw i64 %691, %694
  %696 = getelementptr inbounds float, ptr %684, i64 %695
  %697 = load ptr, ptr %34, align 8, !tbaa !5
  %698 = load ptr, ptr %29, align 8, !tbaa !5
  %699 = load i64, ptr %698, align 8, !tbaa !9
  %700 = load ptr, ptr %30, align 8, !tbaa !5
  %701 = load i64, ptr %700, align 8, !tbaa !9
  %702 = add nsw i64 %699, %701
  %703 = add nsw i64 %702, 1
  %704 = load i64, ptr %67, align 8, !tbaa !9
  %705 = sub nsw i64 %703, %704
  %706 = load i64, ptr %68, align 8, !tbaa !9
  %707 = add nsw i64 %705, %706
  %708 = load i64, ptr %67, align 8, !tbaa !9
  %709 = load i64, ptr %52, align 8, !tbaa !9
  %710 = mul nsw i64 %708, %709
  %711 = add nsw i64 %707, %710
  %712 = getelementptr inbounds float, ptr %697, i64 %711
  %713 = call i32 @f2c_scopy(ptr noundef %59, ptr noundef %696, ptr noundef @c__1, ptr noundef %712, ptr noundef @c__1)
  br label %714

714:                                              ; preds = %678
  %715 = load i64, ptr %67, align 8, !tbaa !9
  %716 = add nsw i64 %715, 1
  store i64 %716, ptr %67, align 8, !tbaa !9
  br label %649, !llvm.loop !21

717:                                              ; preds = %649
  %718 = load ptr, ptr %28, align 8, !tbaa !5
  %719 = load ptr, ptr %28, align 8, !tbaa !5
  %720 = load ptr, ptr %29, align 8, !tbaa !5
  %721 = load ptr, ptr %30, align 8, !tbaa !5
  %722 = load ptr, ptr %34, align 8, !tbaa !5
  %723 = load i64, ptr %53, align 8, !tbaa !9
  %724 = getelementptr inbounds float, ptr %722, i64 %723
  %725 = load ptr, ptr %35, align 8, !tbaa !5
  %726 = load ptr, ptr %36, align 8, !tbaa !5
  %727 = getelementptr inbounds i64, ptr %726, i64 1
  %728 = load ptr, ptr %49, align 8, !tbaa !5
  %729 = call i32 @sgbtrf_(ptr noundef %718, ptr noundef %719, ptr noundef %720, ptr noundef %721, ptr noundef %724, ptr noundef %725, ptr noundef %727, ptr noundef %728)
  %730 = load ptr, ptr %49, align 8, !tbaa !5
  %731 = load i64, ptr %730, align 8, !tbaa !9
  %732 = icmp sgt i64 %731, 0
  br i1 %732, label %733, label %877

733:                                              ; preds = %717
  store float 0.000000e+00, ptr %74, align 4, !tbaa !12
  %734 = load ptr, ptr %49, align 8, !tbaa !5
  %735 = load i64, ptr %734, align 8, !tbaa !9
  store i64 %735, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %67, align 8, !tbaa !9
  br label %736

736:                                              ; preds = %816, %733
  %737 = load i64, ptr %67, align 8, !tbaa !9
  %738 = load i64, ptr %58, align 8, !tbaa !9
  %739 = icmp sle i64 %737, %738
  br i1 %739, label %740, label %819

740:                                              ; preds = %736
  %741 = load ptr, ptr %30, align 8, !tbaa !5
  %742 = load i64, ptr %741, align 8, !tbaa !9
  %743 = add nsw i64 %742, 2
  %744 = load i64, ptr %67, align 8, !tbaa !9
  %745 = sub nsw i64 %743, %744
  store i64 %745, ptr %59, align 8, !tbaa !9
  %746 = load ptr, ptr %28, align 8, !tbaa !5
  %747 = load i64, ptr %746, align 8, !tbaa !9
  %748 = load ptr, ptr %30, align 8, !tbaa !5
  %749 = load i64, ptr %748, align 8, !tbaa !9
  %750 = add nsw i64 %747, %749
  %751 = add nsw i64 %750, 1
  %752 = load i64, ptr %67, align 8, !tbaa !9
  %753 = sub nsw i64 %751, %752
  store i64 %753, ptr %61, align 8, !tbaa !9
  %754 = load ptr, ptr %29, align 8, !tbaa !5
  %755 = load i64, ptr %754, align 8, !tbaa !9
  %756 = load ptr, ptr %30, align 8, !tbaa !5
  %757 = load i64, ptr %756, align 8, !tbaa !9
  %758 = add nsw i64 %755, %757
  %759 = add nsw i64 %758, 1
  store i64 %759, ptr %62, align 8, !tbaa !9
  %760 = load i64, ptr %61, align 8, !tbaa !9
  %761 = load i64, ptr %62, align 8, !tbaa !9
  %762 = icmp sle i64 %760, %761
  br i1 %762, label %763, label %765

763:                                              ; preds = %740
  %764 = load i64, ptr %61, align 8, !tbaa !9
  br label %767

765:                                              ; preds = %740
  %766 = load i64, ptr %62, align 8, !tbaa !9
  br label %767

767:                                              ; preds = %765, %763
  %768 = phi i64 [ %764, %763 ], [ %766, %765 ]
  store i64 %768, ptr %60, align 8, !tbaa !9
  %769 = load i64, ptr %59, align 8, !tbaa !9
  %770 = icmp sge i64 %769, 1
  br i1 %770, label %771, label %773

771:                                              ; preds = %767
  %772 = load i64, ptr %59, align 8, !tbaa !9
  br label %774

773:                                              ; preds = %767
  br label %774

774:                                              ; preds = %773, %771
  %775 = phi i64 [ %772, %771 ], [ 1, %773 ]
  store i64 %775, ptr %66, align 8, !tbaa !9
  br label %776

776:                                              ; preds = %812, %774
  %777 = load i64, ptr %66, align 8, !tbaa !9
  %778 = load i64, ptr %60, align 8, !tbaa !9
  %779 = icmp sle i64 %777, %778
  br i1 %779, label %780, label %815

780:                                              ; preds = %776
  %781 = load float, ptr %74, align 4, !tbaa !12
  store float %781, ptr %64, align 4, !tbaa !12
  %782 = load ptr, ptr %32, align 8, !tbaa !5
  %783 = load i64, ptr %66, align 8, !tbaa !9
  %784 = load i64, ptr %67, align 8, !tbaa !9
  %785 = load i64, ptr %50, align 8, !tbaa !9
  %786 = mul nsw i64 %784, %785
  %787 = add nsw i64 %783, %786
  %788 = getelementptr inbounds float, ptr %782, i64 %787
  %789 = load float, ptr %788, align 4, !tbaa !12
  store float %789, ptr %63, align 4, !tbaa !12
  %790 = load float, ptr %63, align 4, !tbaa !12
  %791 = fcmp oge float %790, 0.000000e+00
  br i1 %791, label %792, label %794

792:                                              ; preds = %780
  %793 = load float, ptr %63, align 4, !tbaa !12
  br label %797

794:                                              ; preds = %780
  %795 = load float, ptr %63, align 4, !tbaa !12
  %796 = fneg float %795
  br label %797

797:                                              ; preds = %794, %792
  %798 = phi float [ %793, %792 ], [ %796, %794 ]
  %799 = fpext float %798 to double
  %800 = fptrunc double %799 to float
  store float %800, ptr %65, align 4, !tbaa !12
  %801 = load float, ptr %64, align 4, !tbaa !12
  %802 = load float, ptr %65, align 4, !tbaa !12
  %803 = fcmp oge float %801, %802
  br i1 %803, label %804, label %806

804:                                              ; preds = %797
  %805 = load float, ptr %64, align 4, !tbaa !12
  br label %808

806:                                              ; preds = %797
  %807 = load float, ptr %65, align 4, !tbaa !12
  br label %808

808:                                              ; preds = %806, %804
  %809 = phi float [ %805, %804 ], [ %807, %806 ]
  %810 = fpext float %809 to double
  %811 = fptrunc double %810 to float
  store float %811, ptr %74, align 4, !tbaa !12
  br label %812

812:                                              ; preds = %808
  %813 = load i64, ptr %66, align 8, !tbaa !9
  %814 = add nsw i64 %813, 1
  store i64 %814, ptr %66, align 8, !tbaa !9
  br label %776, !llvm.loop !22

815:                                              ; preds = %776
  br label %816

816:                                              ; preds = %815
  %817 = load i64, ptr %67, align 8, !tbaa !9
  %818 = add nsw i64 %817, 1
  store i64 %818, ptr %67, align 8, !tbaa !9
  br label %736, !llvm.loop !23

819:                                              ; preds = %736
  %820 = load ptr, ptr %49, align 8, !tbaa !5
  %821 = load i64, ptr %820, align 8, !tbaa !9
  %822 = sub nsw i64 %821, 1
  store i64 %822, ptr %60, align 8, !tbaa !9
  %823 = load ptr, ptr %29, align 8, !tbaa !5
  %824 = load i64, ptr %823, align 8, !tbaa !9
  %825 = load ptr, ptr %30, align 8, !tbaa !5
  %826 = load i64, ptr %825, align 8, !tbaa !9
  %827 = add nsw i64 %824, %826
  store i64 %827, ptr %59, align 8, !tbaa !9
  %828 = load i64, ptr %60, align 8, !tbaa !9
  %829 = load i64, ptr %59, align 8, !tbaa !9
  %830 = icmp sle i64 %828, %829
  br i1 %830, label %831, label %833

831:                                              ; preds = %819
  %832 = load i64, ptr %60, align 8, !tbaa !9
  br label %835

833:                                              ; preds = %819
  %834 = load i64, ptr %59, align 8, !tbaa !9
  br label %835

835:                                              ; preds = %833, %831
  %836 = phi i64 [ %832, %831 ], [ %834, %833 ]
  store i64 %836, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %61, align 8, !tbaa !9
  %837 = load ptr, ptr %29, align 8, !tbaa !5
  %838 = load i64, ptr %837, align 8, !tbaa !9
  %839 = load ptr, ptr %30, align 8, !tbaa !5
  %840 = load i64, ptr %839, align 8, !tbaa !9
  %841 = add nsw i64 %838, %840
  %842 = add nsw i64 %841, 2
  %843 = load ptr, ptr %49, align 8, !tbaa !5
  %844 = load i64, ptr %843, align 8, !tbaa !9
  %845 = sub nsw i64 %842, %844
  store i64 %845, ptr %62, align 8, !tbaa !9
  %846 = load ptr, ptr %49, align 8, !tbaa !5
  %847 = load ptr, ptr %34, align 8, !tbaa !5
  %848 = load i64, ptr %61, align 8, !tbaa !9
  %849 = load i64, ptr %62, align 8, !tbaa !9
  %850 = icmp sge i64 %848, %849
  br i1 %850, label %851, label %853

851:                                              ; preds = %835
  %852 = load i64, ptr %61, align 8, !tbaa !9
  br label %855

853:                                              ; preds = %835
  %854 = load i64, ptr %62, align 8, !tbaa !9
  br label %855

855:                                              ; preds = %853, %851
  %856 = phi i64 [ %852, %851 ], [ %854, %853 ]
  %857 = load i64, ptr %52, align 8, !tbaa !9
  %858 = add nsw i64 %856, %857
  %859 = getelementptr inbounds float, ptr %847, i64 %858
  %860 = load ptr, ptr %35, align 8, !tbaa !5
  %861 = load ptr, ptr %47, align 8, !tbaa !5
  %862 = getelementptr inbounds float, ptr %861, i64 1
  %863 = call double @slantb_(ptr noundef @.str.9, ptr noundef @.str.10, ptr noundef @.str, ptr noundef %846, ptr noundef %58, ptr noundef %859, ptr noundef %860, ptr noundef %862)
  %864 = fptrunc double %863 to float
  store float %864, ptr %85, align 4, !tbaa !12
  %865 = load float, ptr %85, align 4, !tbaa !12
  %866 = fcmp oeq float %865, 0.000000e+00
  br i1 %866, label %867, label %868

867:                                              ; preds = %855
  store float 1.000000e+00, ptr %85, align 4, !tbaa !12
  br label %872

868:                                              ; preds = %855
  %869 = load float, ptr %74, align 4, !tbaa !12
  %870 = load float, ptr %85, align 4, !tbaa !12
  %871 = fdiv float %869, %870
  store float %871, ptr %85, align 4, !tbaa !12
  br label %872

872:                                              ; preds = %868, %867
  %873 = load float, ptr %85, align 4, !tbaa !12
  %874 = load ptr, ptr %47, align 8, !tbaa !5
  %875 = getelementptr inbounds float, ptr %874, i64 1
  store float %873, ptr %875, align 4, !tbaa !12
  %876 = load ptr, ptr %44, align 8, !tbaa !5
  store float 0.000000e+00, ptr %876, align 4, !tbaa !12
  store i32 0, ptr %25, align 4
  store i32 1, ptr %86, align 4
  br label %1154

877:                                              ; preds = %717
  br label %878

878:                                              ; preds = %877, %643
  %879 = load i64, ptr %82, align 8, !tbaa !9
  %880 = icmp ne i64 %879, 0
  br i1 %880, label %881, label %883

881:                                              ; preds = %878
  %882 = getelementptr inbounds [1 x i8], ptr %71, i64 0, i64 0
  store i8 49, ptr %882, align 1, !tbaa !11
  br label %885

883:                                              ; preds = %878
  %884 = getelementptr inbounds [1 x i8], ptr %71, i64 0, i64 0
  store i8 73, ptr %884, align 1, !tbaa !11
  br label %885

885:                                              ; preds = %883, %881
  %886 = getelementptr inbounds [1 x i8], ptr %71, i64 0, i64 0
  %887 = load ptr, ptr %28, align 8, !tbaa !5
  %888 = load ptr, ptr %29, align 8, !tbaa !5
  %889 = load ptr, ptr %30, align 8, !tbaa !5
  %890 = load ptr, ptr %32, align 8, !tbaa !5
  %891 = load i64, ptr %51, align 8, !tbaa !9
  %892 = getelementptr inbounds float, ptr %890, i64 %891
  %893 = load ptr, ptr %33, align 8, !tbaa !5
  %894 = load ptr, ptr %47, align 8, !tbaa !5
  %895 = getelementptr inbounds float, ptr %894, i64 1
  %896 = call double @slangb_(ptr noundef %886, ptr noundef %887, ptr noundef %888, ptr noundef %889, ptr noundef %892, ptr noundef %893, ptr noundef %895)
  %897 = fptrunc double %896 to float
  store float %897, ptr %74, align 4, !tbaa !12
  %898 = load ptr, ptr %29, align 8, !tbaa !5
  %899 = load i64, ptr %898, align 8, !tbaa !9
  %900 = load ptr, ptr %30, align 8, !tbaa !5
  %901 = load i64, ptr %900, align 8, !tbaa !9
  %902 = add nsw i64 %899, %901
  store i64 %902, ptr %58, align 8, !tbaa !9
  %903 = load ptr, ptr %28, align 8, !tbaa !5
  %904 = load ptr, ptr %34, align 8, !tbaa !5
  %905 = load i64, ptr %53, align 8, !tbaa !9
  %906 = getelementptr inbounds float, ptr %904, i64 %905
  %907 = load ptr, ptr %35, align 8, !tbaa !5
  %908 = load ptr, ptr %47, align 8, !tbaa !5
  %909 = getelementptr inbounds float, ptr %908, i64 1
  %910 = call double @slantb_(ptr noundef @.str.9, ptr noundef @.str.10, ptr noundef @.str, ptr noundef %903, ptr noundef %58, ptr noundef %906, ptr noundef %907, ptr noundef %909)
  %911 = fptrunc double %910 to float
  store float %911, ptr %85, align 4, !tbaa !12
  %912 = load float, ptr %85, align 4, !tbaa !12
  %913 = fcmp oeq float %912, 0.000000e+00
  br i1 %913, label %914, label %915

914:                                              ; preds = %885
  store float 1.000000e+00, ptr %85, align 4, !tbaa !12
  br label %930

915:                                              ; preds = %885
  %916 = load ptr, ptr %28, align 8, !tbaa !5
  %917 = load ptr, ptr %29, align 8, !tbaa !5
  %918 = load ptr, ptr %30, align 8, !tbaa !5
  %919 = load ptr, ptr %32, align 8, !tbaa !5
  %920 = load i64, ptr %51, align 8, !tbaa !9
  %921 = getelementptr inbounds float, ptr %919, i64 %920
  %922 = load ptr, ptr %33, align 8, !tbaa !5
  %923 = load ptr, ptr %47, align 8, !tbaa !5
  %924 = getelementptr inbounds float, ptr %923, i64 1
  %925 = call double @slangb_(ptr noundef @.str.9, ptr noundef %916, ptr noundef %917, ptr noundef %918, ptr noundef %921, ptr noundef %922, ptr noundef %924)
  %926 = load float, ptr %85, align 4, !tbaa !12
  %927 = fpext float %926 to double
  %928 = fdiv double %925, %927
  %929 = fptrunc double %928 to float
  store float %929, ptr %85, align 4, !tbaa !12
  br label %930

930:                                              ; preds = %915, %914
  %931 = getelementptr inbounds [1 x i8], ptr %71, i64 0, i64 0
  %932 = load ptr, ptr %28, align 8, !tbaa !5
  %933 = load ptr, ptr %29, align 8, !tbaa !5
  %934 = load ptr, ptr %30, align 8, !tbaa !5
  %935 = load ptr, ptr %34, align 8, !tbaa !5
  %936 = load i64, ptr %53, align 8, !tbaa !9
  %937 = getelementptr inbounds float, ptr %935, i64 %936
  %938 = load ptr, ptr %35, align 8, !tbaa !5
  %939 = load ptr, ptr %36, align 8, !tbaa !5
  %940 = getelementptr inbounds i64, ptr %939, i64 1
  %941 = load ptr, ptr %44, align 8, !tbaa !5
  %942 = load ptr, ptr %47, align 8, !tbaa !5
  %943 = getelementptr inbounds float, ptr %942, i64 1
  %944 = load ptr, ptr %48, align 8, !tbaa !5
  %945 = getelementptr inbounds i64, ptr %944, i64 1
  %946 = load ptr, ptr %49, align 8, !tbaa !5
  %947 = call i32 @sgbcon_(ptr noundef %931, ptr noundef %932, ptr noundef %933, ptr noundef %934, ptr noundef %937, ptr noundef %938, ptr noundef %940, ptr noundef %74, ptr noundef %941, ptr noundef %943, ptr noundef %945, ptr noundef %946)
  %948 = load ptr, ptr %28, align 8, !tbaa !5
  %949 = load ptr, ptr %31, align 8, !tbaa !5
  %950 = load ptr, ptr %40, align 8, !tbaa !5
  %951 = load i64, ptr %55, align 8, !tbaa !9
  %952 = getelementptr inbounds float, ptr %950, i64 %951
  %953 = load ptr, ptr %41, align 8, !tbaa !5
  %954 = load ptr, ptr %42, align 8, !tbaa !5
  %955 = load i64, ptr %57, align 8, !tbaa !9
  %956 = getelementptr inbounds float, ptr %954, i64 %955
  %957 = load ptr, ptr %43, align 8, !tbaa !5
  %958 = call i32 @slacpy_(ptr noundef @.str.11, ptr noundef %948, ptr noundef %949, ptr noundef %952, ptr noundef %953, ptr noundef %956, ptr noundef %957)
  %959 = load ptr, ptr %27, align 8, !tbaa !5
  %960 = load ptr, ptr %28, align 8, !tbaa !5
  %961 = load ptr, ptr %29, align 8, !tbaa !5
  %962 = load ptr, ptr %30, align 8, !tbaa !5
  %963 = load ptr, ptr %31, align 8, !tbaa !5
  %964 = load ptr, ptr %34, align 8, !tbaa !5
  %965 = load i64, ptr %53, align 8, !tbaa !9
  %966 = getelementptr inbounds float, ptr %964, i64 %965
  %967 = load ptr, ptr %35, align 8, !tbaa !5
  %968 = load ptr, ptr %36, align 8, !tbaa !5
  %969 = getelementptr inbounds i64, ptr %968, i64 1
  %970 = load ptr, ptr %42, align 8, !tbaa !5
  %971 = load i64, ptr %57, align 8, !tbaa !9
  %972 = getelementptr inbounds float, ptr %970, i64 %971
  %973 = load ptr, ptr %43, align 8, !tbaa !5
  %974 = load ptr, ptr %49, align 8, !tbaa !5
  %975 = call i32 @sgbtrs_(ptr noundef %959, ptr noundef %960, ptr noundef %961, ptr noundef %962, ptr noundef %963, ptr noundef %966, ptr noundef %967, ptr noundef %969, ptr noundef %972, ptr noundef %973, ptr noundef %974)
  %976 = load ptr, ptr %27, align 8, !tbaa !5
  %977 = load ptr, ptr %28, align 8, !tbaa !5
  %978 = load ptr, ptr %29, align 8, !tbaa !5
  %979 = load ptr, ptr %30, align 8, !tbaa !5
  %980 = load ptr, ptr %31, align 8, !tbaa !5
  %981 = load ptr, ptr %32, align 8, !tbaa !5
  %982 = load i64, ptr %51, align 8, !tbaa !9
  %983 = getelementptr inbounds float, ptr %981, i64 %982
  %984 = load ptr, ptr %33, align 8, !tbaa !5
  %985 = load ptr, ptr %34, align 8, !tbaa !5
  %986 = load i64, ptr %53, align 8, !tbaa !9
  %987 = getelementptr inbounds float, ptr %985, i64 %986
  %988 = load ptr, ptr %35, align 8, !tbaa !5
  %989 = load ptr, ptr %36, align 8, !tbaa !5
  %990 = getelementptr inbounds i64, ptr %989, i64 1
  %991 = load ptr, ptr %40, align 8, !tbaa !5
  %992 = load i64, ptr %55, align 8, !tbaa !9
  %993 = getelementptr inbounds float, ptr %991, i64 %992
  %994 = load ptr, ptr %41, align 8, !tbaa !5
  %995 = load ptr, ptr %42, align 8, !tbaa !5
  %996 = load i64, ptr %57, align 8, !tbaa !9
  %997 = getelementptr inbounds float, ptr %995, i64 %996
  %998 = load ptr, ptr %43, align 8, !tbaa !5
  %999 = load ptr, ptr %45, align 8, !tbaa !5
  %1000 = getelementptr inbounds float, ptr %999, i64 1
  %1001 = load ptr, ptr %46, align 8, !tbaa !5
  %1002 = getelementptr inbounds float, ptr %1001, i64 1
  %1003 = load ptr, ptr %47, align 8, !tbaa !5
  %1004 = getelementptr inbounds float, ptr %1003, i64 1
  %1005 = load ptr, ptr %48, align 8, !tbaa !5
  %1006 = getelementptr inbounds i64, ptr %1005, i64 1
  %1007 = load ptr, ptr %49, align 8, !tbaa !5
  %1008 = call i32 @sgbrfs_(ptr noundef %976, ptr noundef %977, ptr noundef %978, ptr noundef %979, ptr noundef %980, ptr noundef %983, ptr noundef %984, ptr noundef %987, ptr noundef %988, ptr noundef %990, ptr noundef %993, ptr noundef %994, ptr noundef %997, ptr noundef %998, ptr noundef %1000, ptr noundef %1002, ptr noundef %1004, ptr noundef %1006, ptr noundef %1007)
  %1009 = load i64, ptr %82, align 8, !tbaa !9
  %1010 = icmp ne i64 %1009, 0
  br i1 %1010, label %1011, label %1075

1011:                                             ; preds = %930
  %1012 = load i64, ptr %80, align 8, !tbaa !9
  %1013 = icmp ne i64 %1012, 0
  br i1 %1013, label %1014, label %1074

1014:                                             ; preds = %1011
  %1015 = load ptr, ptr %31, align 8, !tbaa !5
  %1016 = load i64, ptr %1015, align 8, !tbaa !9
  store i64 %1016, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %67, align 8, !tbaa !9
  br label %1017

1017:                                             ; preds = %1053, %1014
  %1018 = load i64, ptr %67, align 8, !tbaa !9
  %1019 = load i64, ptr %58, align 8, !tbaa !9
  %1020 = icmp sle i64 %1018, %1019
  br i1 %1020, label %1021, label %1056

1021:                                             ; preds = %1017
  %1022 = load ptr, ptr %28, align 8, !tbaa !5
  %1023 = load i64, ptr %1022, align 8, !tbaa !9
  store i64 %1023, ptr %60, align 8, !tbaa !9
  store i64 1, ptr %66, align 8, !tbaa !9
  br label %1024

1024:                                             ; preds = %1049, %1021
  %1025 = load i64, ptr %66, align 8, !tbaa !9
  %1026 = load i64, ptr %60, align 8, !tbaa !9
  %1027 = icmp sle i64 %1025, %1026
  br i1 %1027, label %1028, label %1052

1028:                                             ; preds = %1024
  %1029 = load ptr, ptr %39, align 8, !tbaa !5
  %1030 = load i64, ptr %66, align 8, !tbaa !9
  %1031 = getelementptr inbounds float, ptr %1029, i64 %1030
  %1032 = load float, ptr %1031, align 4, !tbaa !12
  %1033 = load ptr, ptr %42, align 8, !tbaa !5
  %1034 = load i64, ptr %66, align 8, !tbaa !9
  %1035 = load i64, ptr %67, align 8, !tbaa !9
  %1036 = load i64, ptr %56, align 8, !tbaa !9
  %1037 = mul nsw i64 %1035, %1036
  %1038 = add nsw i64 %1034, %1037
  %1039 = getelementptr inbounds float, ptr %1033, i64 %1038
  %1040 = load float, ptr %1039, align 4, !tbaa !12
  %1041 = fmul float %1032, %1040
  %1042 = load ptr, ptr %42, align 8, !tbaa !5
  %1043 = load i64, ptr %66, align 8, !tbaa !9
  %1044 = load i64, ptr %67, align 8, !tbaa !9
  %1045 = load i64, ptr %56, align 8, !tbaa !9
  %1046 = mul nsw i64 %1044, %1045
  %1047 = add nsw i64 %1043, %1046
  %1048 = getelementptr inbounds float, ptr %1042, i64 %1047
  store float %1041, ptr %1048, align 4, !tbaa !12
  br label %1049

1049:                                             ; preds = %1028
  %1050 = load i64, ptr %66, align 8, !tbaa !9
  %1051 = add nsw i64 %1050, 1
  store i64 %1051, ptr %66, align 8, !tbaa !9
  br label %1024, !llvm.loop !24

1052:                                             ; preds = %1024
  br label %1053

1053:                                             ; preds = %1052
  %1054 = load i64, ptr %67, align 8, !tbaa !9
  %1055 = add nsw i64 %1054, 1
  store i64 %1055, ptr %67, align 8, !tbaa !9
  br label %1017, !llvm.loop !25

1056:                                             ; preds = %1017
  %1057 = load ptr, ptr %31, align 8, !tbaa !5
  %1058 = load i64, ptr %1057, align 8, !tbaa !9
  store i64 %1058, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %67, align 8, !tbaa !9
  br label %1059

1059:                                             ; preds = %1070, %1056
  %1060 = load i64, ptr %67, align 8, !tbaa !9
  %1061 = load i64, ptr %58, align 8, !tbaa !9
  %1062 = icmp sle i64 %1060, %1061
  br i1 %1062, label %1063, label %1073

1063:                                             ; preds = %1059
  %1064 = load float, ptr %76, align 4, !tbaa !12
  %1065 = load ptr, ptr %45, align 8, !tbaa !5
  %1066 = load i64, ptr %67, align 8, !tbaa !9
  %1067 = getelementptr inbounds float, ptr %1065, i64 %1066
  %1068 = load float, ptr %1067, align 4, !tbaa !12
  %1069 = fdiv float %1068, %1064
  store float %1069, ptr %1067, align 4, !tbaa !12
  br label %1070

1070:                                             ; preds = %1063
  %1071 = load i64, ptr %67, align 8, !tbaa !9
  %1072 = add nsw i64 %1071, 1
  store i64 %1072, ptr %67, align 8, !tbaa !9
  br label %1059, !llvm.loop !26

1073:                                             ; preds = %1059
  br label %1074

1074:                                             ; preds = %1073, %1011
  br label %1139

1075:                                             ; preds = %930
  %1076 = load i64, ptr %84, align 8, !tbaa !9
  %1077 = icmp ne i64 %1076, 0
  br i1 %1077, label %1078, label %1138

1078:                                             ; preds = %1075
  %1079 = load ptr, ptr %31, align 8, !tbaa !5
  %1080 = load i64, ptr %1079, align 8, !tbaa !9
  store i64 %1080, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %67, align 8, !tbaa !9
  br label %1081

1081:                                             ; preds = %1117, %1078
  %1082 = load i64, ptr %67, align 8, !tbaa !9
  %1083 = load i64, ptr %58, align 8, !tbaa !9
  %1084 = icmp sle i64 %1082, %1083
  br i1 %1084, label %1085, label %1120

1085:                                             ; preds = %1081
  %1086 = load ptr, ptr %28, align 8, !tbaa !5
  %1087 = load i64, ptr %1086, align 8, !tbaa !9
  store i64 %1087, ptr %60, align 8, !tbaa !9
  store i64 1, ptr %66, align 8, !tbaa !9
  br label %1088

1088:                                             ; preds = %1113, %1085
  %1089 = load i64, ptr %66, align 8, !tbaa !9
  %1090 = load i64, ptr %60, align 8, !tbaa !9
  %1091 = icmp sle i64 %1089, %1090
  br i1 %1091, label %1092, label %1116

1092:                                             ; preds = %1088
  %1093 = load ptr, ptr %38, align 8, !tbaa !5
  %1094 = load i64, ptr %66, align 8, !tbaa !9
  %1095 = getelementptr inbounds float, ptr %1093, i64 %1094
  %1096 = load float, ptr %1095, align 4, !tbaa !12
  %1097 = load ptr, ptr %42, align 8, !tbaa !5
  %1098 = load i64, ptr %66, align 8, !tbaa !9
  %1099 = load i64, ptr %67, align 8, !tbaa !9
  %1100 = load i64, ptr %56, align 8, !tbaa !9
  %1101 = mul nsw i64 %1099, %1100
  %1102 = add nsw i64 %1098, %1101
  %1103 = getelementptr inbounds float, ptr %1097, i64 %1102
  %1104 = load float, ptr %1103, align 4, !tbaa !12
  %1105 = fmul float %1096, %1104
  %1106 = load ptr, ptr %42, align 8, !tbaa !5
  %1107 = load i64, ptr %66, align 8, !tbaa !9
  %1108 = load i64, ptr %67, align 8, !tbaa !9
  %1109 = load i64, ptr %56, align 8, !tbaa !9
  %1110 = mul nsw i64 %1108, %1109
  %1111 = add nsw i64 %1107, %1110
  %1112 = getelementptr inbounds float, ptr %1106, i64 %1111
  store float %1105, ptr %1112, align 4, !tbaa !12
  br label %1113

1113:                                             ; preds = %1092
  %1114 = load i64, ptr %66, align 8, !tbaa !9
  %1115 = add nsw i64 %1114, 1
  store i64 %1115, ptr %66, align 8, !tbaa !9
  br label %1088, !llvm.loop !27

1116:                                             ; preds = %1088
  br label %1117

1117:                                             ; preds = %1116
  %1118 = load i64, ptr %67, align 8, !tbaa !9
  %1119 = add nsw i64 %1118, 1
  store i64 %1119, ptr %67, align 8, !tbaa !9
  br label %1081, !llvm.loop !28

1120:                                             ; preds = %1081
  %1121 = load ptr, ptr %31, align 8, !tbaa !5
  %1122 = load i64, ptr %1121, align 8, !tbaa !9
  store i64 %1122, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %67, align 8, !tbaa !9
  br label %1123

1123:                                             ; preds = %1134, %1120
  %1124 = load i64, ptr %67, align 8, !tbaa !9
  %1125 = load i64, ptr %58, align 8, !tbaa !9
  %1126 = icmp sle i64 %1124, %1125
  br i1 %1126, label %1127, label %1137

1127:                                             ; preds = %1123
  %1128 = load float, ptr %81, align 4, !tbaa !12
  %1129 = load ptr, ptr %45, align 8, !tbaa !5
  %1130 = load i64, ptr %67, align 8, !tbaa !9
  %1131 = getelementptr inbounds float, ptr %1129, i64 %1130
  %1132 = load float, ptr %1131, align 4, !tbaa !12
  %1133 = fdiv float %1132, %1128
  store float %1133, ptr %1131, align 4, !tbaa !12
  br label %1134

1134:                                             ; preds = %1127
  %1135 = load i64, ptr %67, align 8, !tbaa !9
  %1136 = add nsw i64 %1135, 1
  store i64 %1136, ptr %67, align 8, !tbaa !9
  br label %1123, !llvm.loop !29

1137:                                             ; preds = %1123
  br label %1138

1138:                                             ; preds = %1137, %1075
  br label %1139

1139:                                             ; preds = %1138, %1074
  %1140 = load ptr, ptr %44, align 8, !tbaa !5
  %1141 = load float, ptr %1140, align 4, !tbaa !12
  %1142 = fpext float %1141 to double
  %1143 = call double @slamch_(ptr noundef @.str.12)
  %1144 = fcmp olt double %1142, %1143
  br i1 %1144, label %1145, label %1150

1145:                                             ; preds = %1139
  %1146 = load ptr, ptr %28, align 8, !tbaa !5
  %1147 = load i64, ptr %1146, align 8, !tbaa !9
  %1148 = add nsw i64 %1147, 1
  %1149 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 %1148, ptr %1149, align 8, !tbaa !9
  br label %1150

1150:                                             ; preds = %1145, %1139
  %1151 = load float, ptr %85, align 4, !tbaa !12
  %1152 = load ptr, ptr %47, align 8, !tbaa !5
  %1153 = getelementptr inbounds float, ptr %1152, i64 1
  store float %1151, ptr %1153, align 4, !tbaa !12
  store i32 0, ptr %25, align 4
  store i32 1, ptr %86, align 4
  br label %1154

1154:                                             ; preds = %1150, %872, %481
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #3
  %1155 = load i32, ptr %25, align 4
  ret i32 %1155
}

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

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

declare double @slamch_(ptr noundef) #2

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

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

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

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

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

declare double @slantb_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare double @slangb_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

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

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

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

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

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


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

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

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @sgbsvx_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22, ptr noundef %23) local_unnamed_addr #0 {
  %25 = alloca i64, align 8
  %26 = alloca i64, align 8
  %27 = alloca float, align 4
  %28 = alloca [1 x i8], align 1
  %29 = alloca float, align 4
  %30 = alloca float, align 4
  %31 = alloca i64, align 8
  %32 = alloca float, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %27) #4
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %28) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %29) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %30) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %32) #4
  %33 = load i64, ptr %7, align 8, !tbaa !5
  %34 = xor i64 %33, -1
  %35 = getelementptr inbounds float, ptr %6, i64 %34
  %36 = load i64, ptr %9, align 8, !tbaa !5
  %37 = xor i64 %36, -1
  %38 = getelementptr inbounds float, ptr %8, i64 %37
  %39 = getelementptr inbounds i8, ptr %12, i64 -4
  %40 = getelementptr inbounds i8, ptr %13, i64 -4
  %41 = load i64, ptr %15, align 8, !tbaa !5
  %42 = xor i64 %41, -1
  %43 = getelementptr inbounds float, ptr %14, i64 %42
  %44 = load i64, ptr %17, align 8, !tbaa !5
  %45 = xor i64 %44, -1
  %46 = getelementptr inbounds float, ptr %16, i64 %45
  %47 = getelementptr inbounds i8, ptr %19, i64 -4
  store i64 0, ptr %23, align 8, !tbaa !5
  %48 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #4
  %49 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #4
  %50 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #4
  %51 = icmp ne i64 %48, 0
  %52 = icmp ne i64 %49, 0
  %or.cond = select i1 %51, i1 true, i1 %52
  br i1 %or.cond, label %.thread, label %53

.thread:                                          ; preds = %24
  store i8 78, ptr %11, align 1, !tbaa !9
  br label %72

53:                                               ; preds = %24
  %54 = tail call i64 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.2) #4
  %.not = icmp eq i64 %54, 0
  br i1 %.not, label %55, label %58

55:                                               ; preds = %53
  %56 = tail call i64 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.3) #4
  %57 = icmp ne i64 %56, 0
  br label %58

58:                                               ; preds = %55, %53
  %59 = phi i1 [ true, %53 ], [ %57, %55 ]
  %60 = zext i1 %59 to i64
  %61 = tail call i64 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.4) #4
  %.not448 = icmp eq i64 %61, 0
  br i1 %.not448, label %62, label %65

62:                                               ; preds = %58
  %63 = tail call i64 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.3) #4
  %64 = icmp ne i64 %63, 0
  br label %65

65:                                               ; preds = %62, %58
  %66 = phi i1 [ true, %58 ], [ %64, %62 ]
  %67 = zext i1 %66 to i64
  %68 = tail call double @slamch_(ptr noundef nonnull @.str.5) #4
  %69 = fptrunc double %68 to float
  %70 = fdiv float 1.000000e+00, %69
  %71 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.6) #4
  %.not449 = icmp eq i64 %71, 0
  br i1 %.not449, label %.thread500.sink.split, label %72

72:                                               ; preds = %.thread, %65
  %.0421493 = phi i64 [ 0, %.thread ], [ %60, %65 ]
  %.0423491 = phi float [ undef, %.thread ], [ %69, %65 ]
  %.0425490 = phi i64 [ 0, %.thread ], [ %67, %65 ]
  %.0427488 = phi float [ undef, %.thread ], [ %70, %65 ]
  %.not450 = icmp eq i64 %50, 0
  br i1 %.not450, label %73, label %77

73:                                               ; preds = %72
  %74 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.7) #4
  %.not451 = icmp eq i64 %74, 0
  br i1 %.not451, label %75, label %77

75:                                               ; preds = %73
  %76 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #4
  %.not452 = icmp eq i64 %76, 0
  br i1 %.not452, label %.thread500.sink.split, label %77

77:                                               ; preds = %75, %73, %72
  %78 = load i64, ptr %2, align 8, !tbaa !5
  %79 = icmp slt i64 %78, 0
  br i1 %79, label %.thread500.sink.split, label %80

80:                                               ; preds = %77
  %81 = load i64, ptr %3, align 8, !tbaa !5
  %82 = icmp slt i64 %81, 0
  br i1 %82, label %.thread500.sink.split, label %83

83:                                               ; preds = %80
  %84 = load i64, ptr %4, align 8, !tbaa !5
  %85 = icmp slt i64 %84, 0
  br i1 %85, label %.thread500.sink.split, label %86

86:                                               ; preds = %83
  %87 = load i64, ptr %5, align 8, !tbaa !5
  %88 = icmp slt i64 %87, 0
  br i1 %88, label %.thread500.sink.split, label %89

89:                                               ; preds = %86
  %90 = load i64, ptr %7, align 8, !tbaa !5
  %91 = add nuw nsw i64 %84, %81
  %.not453 = icmp sgt i64 %90, %91
  br i1 %.not453, label %92, label %.thread500.sink.split

92:                                               ; preds = %89
  %93 = load i64, ptr %9, align 8, !tbaa !5
  %94 = shl nuw i64 %81, 1
  %95 = add nsw i64 %84, %94
  %.not454 = icmp sgt i64 %93, %95
  br i1 %.not454, label %96, label %.thread500.sink.split

96:                                               ; preds = %92
  %97 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.6) #4
  %98 = icmp eq i64 %97, 0
  %99 = icmp ne i64 %.0421493, 0
  %or.cond5 = select i1 %98, i1 true, i1 %99
  %100 = icmp ne i64 %.0425490, 0
  %or.cond7 = select i1 %or.cond5, i1 true, i1 %100
  br i1 %or.cond7, label %103, label %101

101:                                              ; preds = %96
  %102 = tail call i64 @lsame_(ptr noundef %11, ptr noundef nonnull @.str) #4
  %.not455 = icmp eq i64 %102, 0
  br i1 %.not455, label %.thread500.sink.split, label %..thread495_crit_edge

..thread495_crit_edge:                            ; preds = %101
  %.pr.pre = load i64, ptr %23, align 8, !tbaa !5
  br label %.thread495

103:                                              ; preds = %96
  br i1 %99, label %104, label %136

104:                                              ; preds = %103
  %105 = load i64, ptr %2, align 8, !tbaa !5
  store i64 %105, ptr %25, align 8, !tbaa !5
  %.not456510 = icmp slt i64 %105, 1
  br i1 %.not456510, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %104
  %xtraiter = and i64 %105, 1
  %106 = icmp eq i64 %105, 1
  br i1 %106, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph.preheader.new

.lr.ph.preheader.new:                             ; preds = %.lr.ph.preheader
  %unroll_iter = and i64 %105, 9223372036854775806
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph, %.lr.ph.preheader.new
  %.0428513 = phi float [ 0.000000e+00, %.lr.ph.preheader.new ], [ %118, %.lr.ph ]
  %.0430512 = phi float [ %.0427488, %.lr.ph.preheader.new ], [ %116, %.lr.ph ]
  %.0432511 = phi i64 [ 1, %.lr.ph.preheader.new ], [ %119, %.lr.ph ]
  %niter = phi i64 [ 0, %.lr.ph.preheader.new ], [ %niter.next.1, %.lr.ph ]
  %107 = getelementptr inbounds float, ptr %39, i64 %.0432511
  %108 = load float, ptr %107, align 4, !tbaa !10
  %109 = fcmp ole float %.0430512, %108
  %110 = select i1 %109, float %.0430512, float %108
  %111 = fcmp oge float %.0428513, %108
  %112 = select i1 %111, float %.0428513, float %108
  %113 = getelementptr float, ptr %12, i64 %.0432511
  %114 = load float, ptr %113, align 4, !tbaa !10
  %115 = fcmp ole float %110, %114
  %116 = select i1 %115, float %110, float %114
  %117 = fcmp oge float %112, %114
  %118 = select i1 %117, float %112, float %114
  %119 = add nuw i64 %.0432511, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph, !llvm.loop !12

._crit_edge.loopexit.unr-lcssa:                   ; preds = %.lr.ph, %.lr.ph.preheader
  %.lcssa761.ph = phi float [ poison, %.lr.ph.preheader ], [ %116, %.lr.ph ]
  %.lcssa760.ph = phi float [ poison, %.lr.ph.preheader ], [ %118, %.lr.ph ]
  %.0428513.unr = phi float [ 0.000000e+00, %.lr.ph.preheader ], [ %118, %.lr.ph ]
  %.0430512.unr = phi float [ %.0427488, %.lr.ph.preheader ], [ %116, %.lr.ph ]
  %.0432511.unr = phi i64 [ 1, %.lr.ph.preheader ], [ %119, %.lr.ph ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph.epil

.lr.ph.epil:                                      ; preds = %._crit_edge.loopexit.unr-lcssa
  %120 = getelementptr inbounds float, ptr %39, i64 %.0432511.unr
  %121 = load float, ptr %120, align 4, !tbaa !10
  %122 = fcmp ole float %.0430512.unr, %121
  %123 = select i1 %122, float %.0430512.unr, float %121
  %124 = fcmp oge float %.0428513.unr, %121
  %125 = select i1 %124, float %.0428513.unr, float %121
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.epil, %._crit_edge.loopexit.unr-lcssa, %104
  %.0430.lcssa = phi float [ %.0427488, %104 ], [ %.lcssa761.ph, %._crit_edge.loopexit.unr-lcssa ], [ %123, %.lr.ph.epil ]
  %.0428.lcssa = phi float [ 0.000000e+00, %104 ], [ %.lcssa760.ph, %._crit_edge.loopexit.unr-lcssa ], [ %125, %.lr.ph.epil ]
  %126 = fcmp ugt float %.0430.lcssa, 0.000000e+00
  br i1 %126, label %127, label %.thread500.sink.split

127:                                              ; preds = %._crit_edge
  %128 = icmp sgt i64 %105, 0
  br i1 %128, label %129, label %135

129:                                              ; preds = %127
  %130 = fcmp oge float %.0430.lcssa, %.0423491
  %131 = select i1 %130, float %.0430.lcssa, float %.0423491
  %132 = fcmp ole float %.0428.lcssa, %.0427488
  %133 = select i1 %132, float %.0428.lcssa, float %.0427488
  %134 = fdiv float %131, %133
  store float %134, ptr %32, align 4, !tbaa !10
  br label %136

135:                                              ; preds = %127
  store float 1.000000e+00, ptr %32, align 4, !tbaa !10
  br label %136

136:                                              ; preds = %135, %129, %103
  %.pr.pre619.pr = load i64, ptr %23, align 8, !tbaa !5
  br i1 %100, label %137, label %.thread495

137:                                              ; preds = %136
  %138 = icmp eq i64 %.pr.pre619.pr, 0
  br i1 %138, label %139, label %.thread500

139:                                              ; preds = %137
  %140 = load i64, ptr %2, align 8, !tbaa !5
  store i64 %140, ptr %25, align 8, !tbaa !5
  %.not457515 = icmp slt i64 %140, 1
  br i1 %.not457515, label %._crit_edge521, label %.lr.ph520.preheader

.lr.ph520.preheader:                              ; preds = %139
  %xtraiter764 = and i64 %140, 1
  %141 = icmp eq i64 %140, 1
  br i1 %141, label %._crit_edge521.loopexit.unr-lcssa, label %.lr.ph520.preheader.new

.lr.ph520.preheader.new:                          ; preds = %.lr.ph520.preheader
  %unroll_iter768 = and i64 %140, 9223372036854775806
  br label %.lr.ph520

.lr.ph520:                                        ; preds = %.lr.ph520, %.lr.ph520.preheader.new
  %.1429518 = phi float [ 0.000000e+00, %.lr.ph520.preheader.new ], [ %153, %.lr.ph520 ]
  %.1431517 = phi float [ %.0427488, %.lr.ph520.preheader.new ], [ %151, %.lr.ph520 ]
  %.1433516 = phi i64 [ 1, %.lr.ph520.preheader.new ], [ %154, %.lr.ph520 ]
  %niter769 = phi i64 [ 0, %.lr.ph520.preheader.new ], [ %niter769.next.1, %.lr.ph520 ]
  %142 = getelementptr inbounds float, ptr %40, i64 %.1433516
  %143 = load float, ptr %142, align 4, !tbaa !10
  %144 = fcmp ole float %.1431517, %143
  %145 = select i1 %144, float %.1431517, float %143
  %146 = fcmp oge float %.1429518, %143
  %147 = select i1 %146, float %.1429518, float %143
  %148 = getelementptr float, ptr %13, i64 %.1433516
  %149 = load float, ptr %148, align 4, !tbaa !10
  %150 = fcmp ole float %145, %149
  %151 = select i1 %150, float %145, float %149
  %152 = fcmp oge float %147, %149
  %153 = select i1 %152, float %147, float %149
  %154 = add nuw i64 %.1433516, 2
  %niter769.next.1 = add i64 %niter769, 2
  %niter769.ncmp.1 = icmp eq i64 %niter769.next.1, %unroll_iter768
  br i1 %niter769.ncmp.1, label %._crit_edge521.loopexit.unr-lcssa, label %.lr.ph520, !llvm.loop !14

._crit_edge521.loopexit.unr-lcssa:                ; preds = %.lr.ph520, %.lr.ph520.preheader
  %.lcssa759.ph = phi float [ poison, %.lr.ph520.preheader ], [ %151, %.lr.ph520 ]
  %.lcssa758.ph = phi float [ poison, %.lr.ph520.preheader ], [ %153, %.lr.ph520 ]
  %.1429518.unr = phi float [ 0.000000e+00, %.lr.ph520.preheader ], [ %153, %.lr.ph520 ]
  %.1431517.unr = phi float [ %.0427488, %.lr.ph520.preheader ], [ %151, %.lr.ph520 ]
  %.1433516.unr = phi i64 [ 1, %.lr.ph520.preheader ], [ %154, %.lr.ph520 ]
  %lcmp.mod765.not = icmp eq i64 %xtraiter764, 0
  br i1 %lcmp.mod765.not, label %._crit_edge521, label %.lr.ph520.epil

.lr.ph520.epil:                                   ; preds = %._crit_edge521.loopexit.unr-lcssa
  %155 = getelementptr inbounds float, ptr %40, i64 %.1433516.unr
  %156 = load float, ptr %155, align 4, !tbaa !10
  %157 = fcmp ole float %.1431517.unr, %156
  %158 = select i1 %157, float %.1431517.unr, float %156
  %159 = fcmp oge float %.1429518.unr, %156
  %160 = select i1 %159, float %.1429518.unr, float %156
  br label %._crit_edge521

._crit_edge521:                                   ; preds = %.lr.ph520.epil, %._crit_edge521.loopexit.unr-lcssa, %139
  %.1431.lcssa = phi float [ %.0427488, %139 ], [ %.lcssa759.ph, %._crit_edge521.loopexit.unr-lcssa ], [ %158, %.lr.ph520.epil ]
  %.1429.lcssa = phi float [ 0.000000e+00, %139 ], [ %.lcssa758.ph, %._crit_edge521.loopexit.unr-lcssa ], [ %160, %.lr.ph520.epil ]
  %161 = fcmp ugt float %.1431.lcssa, 0.000000e+00
  br i1 %161, label %162, label %.thread500.sink.split

162:                                              ; preds = %._crit_edge521
  %163 = icmp sgt i64 %140, 0
  br i1 %163, label %164, label %170

164:                                              ; preds = %162
  %165 = fcmp oge float %.1431.lcssa, %.0423491
  %166 = select i1 %165, float %.1431.lcssa, float %.0423491
  %167 = fcmp ole float %.1429.lcssa, %.0427488
  %168 = select i1 %167, float %.1429.lcssa, float %.0427488
  %169 = fdiv float %166, %168
  store float %169, ptr %30, align 4, !tbaa !10
  br label %.thread495.thread

170:                                              ; preds = %162
  store float 1.000000e+00, ptr %30, align 4, !tbaa !10
  br label %.thread495.thread

.thread495:                                       ; preds = %..thread495_crit_edge, %136
  %.pr498.pr = phi i64 [ %.pr.pre, %..thread495_crit_edge ], [ %.pr.pre619.pr, %136 ]
  %171 = icmp eq i64 %.pr498.pr, 0
  br i1 %171, label %.thread495.thread, label %.thread500

.thread495.thread:                                ; preds = %164, %170, %.thread495
  %172 = load i64, ptr %15, align 8, !tbaa !5
  %173 = load i64, ptr %2, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.smax.i64(i64 %173, i64 1)
  %174 = icmp slt i64 %172, %spec.select
  br i1 %174, label %.thread500.sink.split, label %175

175:                                              ; preds = %.thread495.thread
  %176 = load i64, ptr %17, align 8, !tbaa !5
  %177 = icmp slt i64 %176, %spec.select
  br i1 %177, label %.thread500.sink.split, label %.thread496

.thread500.sink.split:                            ; preds = %175, %.thread495.thread, %._crit_edge521, %._crit_edge, %101, %92, %89, %86, %83, %80, %77, %75, %65
  %.sink = phi i64 [ -1, %65 ], [ -2, %75 ], [ -3, %77 ], [ -4, %80 ], [ -5, %83 ], [ -6, %86 ], [ -8, %89 ], [ -10, %92 ], [ -12, %101 ], [ -13, %._crit_edge ], [ -14, %._crit_edge521 ], [ -16, %.thread495.thread ], [ -18, %175 ]
  store i64 %.sink, ptr %23, align 8, !tbaa !5
  br label %.thread500

.thread500:                                       ; preds = %.thread500.sink.split, %137, %.thread495
  %178 = phi i64 [ %.pr498.pr, %.thread495 ], [ %.pr.pre619.pr, %137 ], [ %.sink, %.thread500.sink.split ]
  %179 = sub nsw i64 0, %178
  store i64 %179, ptr %25, align 8, !tbaa !5
  %180 = call i32 @xerbla_(ptr noundef nonnull @.str.8, ptr noundef nonnull %25) #4
  br label %514

.thread496:                                       ; preds = %175
  br i1 %52, label %181, label %201

181:                                              ; preds = %.thread496
  %182 = call i32 @sgbequ_(ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %12, ptr noundef %13, ptr noundef nonnull %32, ptr noundef nonnull %30, ptr noundef nonnull %27, ptr noundef nonnull %31) #4
  %183 = load i64, ptr %31, align 8, !tbaa !5
  %184 = icmp eq i64 %183, 0
  br i1 %184, label %185, label %201

185:                                              ; preds = %181
  %186 = call i32 @slaqgb_(ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %12, ptr noundef %13, ptr noundef nonnull %32, ptr noundef nonnull %30, ptr noundef nonnull %27, ptr noundef %11) #4
  %187 = call i64 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.2) #4
  %.not459 = icmp eq i64 %187, 0
  br i1 %.not459, label %188, label %191

188:                                              ; preds = %185
  %189 = call i64 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.3) #4
  %190 = icmp ne i64 %189, 0
  br label %191

191:                                              ; preds = %188, %185
  %192 = phi i1 [ true, %185 ], [ %190, %188 ]
  %193 = zext i1 %192 to i64
  %194 = call i64 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.4) #4
  %.not460 = icmp eq i64 %194, 0
  br i1 %.not460, label %195, label %198

195:                                              ; preds = %191
  %196 = call i64 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.3) #4
  %197 = icmp ne i64 %196, 0
  br label %198

198:                                              ; preds = %195, %191
  %199 = phi i1 [ true, %191 ], [ %197, %195 ]
  %200 = zext i1 %199 to i64
  br label %201

201:                                              ; preds = %181, %198, %.thread496
  %.1426 = phi i64 [ %200, %198 ], [ %.0425490, %181 ], [ %.0425490, %.thread496 ]
  %.1422 = phi i64 [ %193, %198 ], [ %.0421493, %181 ], [ %.0421493, %.thread496 ]
  br i1 %.not450, label %249, label %202

202:                                              ; preds = %201
  %.not465 = icmp eq i64 %.1422, 0
  br i1 %.not465, label %.loopexit508, label %203

203:                                              ; preds = %202
  %204 = load i64, ptr %5, align 8, !tbaa !5
  store i64 %204, ptr %25, align 8, !tbaa !5
  %.not466529 = icmp slt i64 %204, 1
  br i1 %.not466529, label %.loopexit508, label %.lr.ph532

.lr.ph532:                                        ; preds = %203
  %205 = load i64, ptr %2, align 8, !tbaa !5
  %.not481524 = icmp slt i64 %205, 1
  br i1 %.not481524, label %..loopexit509_crit_edge, label %.lr.ph527.preheader

.lr.ph527.preheader:                              ; preds = %.lr.ph532
  %206 = add nuw i64 %204, 4611686018427387903
  %207 = mul i64 %41, %206
  %208 = shl i64 %205, 2
  %209 = add i64 %207, %205
  %210 = shl i64 %209, 2
  %scevgep = getelementptr i8, ptr %14, i64 %210
  %scevgep647 = getelementptr i8, ptr %12, i64 %208
  %211 = add nuw i64 %205, 1
  %min.iters.check = icmp ult i64 %205, 8
  %bound0 = icmp ugt ptr %scevgep647, %14
  %bound1 = icmp ugt ptr %scevgep, %12
  %found.conflict = and i1 %bound0, %bound1
  %.mask = and i64 %41, 2305843009213693952
  %stride.check = icmp ne i64 %.mask, 0
  %212 = or i1 %found.conflict, %stride.check
  %n.vec = and i64 %205, 9223372036854775800
  %ind.end = or disjoint i64 %n.vec, 1
  %cmp.n = icmp eq i64 %205, %n.vec
  br label %.lr.ph527

.lr.ph527:                                        ; preds = %.lr.ph527.preheader, %._crit_edge528
  %.2530 = phi i64 [ %248, %._crit_edge528 ], [ 1, %.lr.ph527.preheader ]
  %213 = mul nsw i64 %.2530, %41
  %invariant.gep = getelementptr float, ptr %43, i64 %213
  %brmerge = select i1 %min.iters.check, i1 true, i1 %212
  br i1 %brmerge, label %scalar.ph.preheader, label %vector.body

vector.body:                                      ; preds = %.lr.ph527, %vector.body
  %index = phi i64 [ %index.next, %vector.body ], [ 0, %.lr.ph527 ]
  %offset.idx = or disjoint i64 %index, 1
  %214 = getelementptr float, ptr %12, i64 %index
  %215 = getelementptr inbounds i8, ptr %214, i64 16
  %wide.load = load <4 x float>, ptr %214, align 4, !tbaa !10, !alias.scope !15
  %wide.load648 = load <4 x float>, ptr %215, align 4, !tbaa !10, !alias.scope !15
  %216 = getelementptr float, ptr %invariant.gep, i64 %offset.idx
  %217 = getelementptr i8, ptr %216, i64 16
  %wide.load649 = load <4 x float>, ptr %216, align 4, !tbaa !10, !alias.scope !18, !noalias !15
  %wide.load650 = load <4 x float>, ptr %217, align 4, !tbaa !10, !alias.scope !18, !noalias !15
  %218 = fmul <4 x float> %wide.load, %wide.load649
  %219 = fmul <4 x float> %wide.load648, %wide.load650
  store <4 x float> %218, ptr %216, align 4, !tbaa !10, !alias.scope !18, !noalias !15
  store <4 x float> %219, ptr %217, align 4, !tbaa !10, !alias.scope !18, !noalias !15
  %index.next = add nuw i64 %index, 8
  %220 = icmp eq i64 %index.next, %n.vec
  br i1 %220, label %middle.block, label %vector.body, !llvm.loop !20

middle.block:                                     ; preds = %vector.body
  br i1 %cmp.n, label %._crit_edge528, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %.lr.ph527, %middle.block
  %.0434525.ph = phi i64 [ 1, %.lr.ph527 ], [ %ind.end, %middle.block ]
  %221 = sub i64 %211, %.0434525.ph
  %222 = sub i64 %205, %.0434525.ph
  %xtraiter770 = and i64 %221, 3
  %lcmp.mod771.not = icmp eq i64 %xtraiter770, 0
  br i1 %lcmp.mod771.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader, %scalar.ph.prol
  %.0434525.prol = phi i64 [ %227, %scalar.ph.prol ], [ %.0434525.ph, %scalar.ph.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph.prol ], [ 0, %scalar.ph.preheader ]
  %223 = getelementptr inbounds float, ptr %39, i64 %.0434525.prol
  %224 = load float, ptr %223, align 4, !tbaa !10
  %gep.prol = getelementptr float, ptr %invariant.gep, i64 %.0434525.prol
  %225 = load float, ptr %gep.prol, align 4, !tbaa !10
  %226 = fmul float %224, %225
  store float %226, ptr %gep.prol, align 4, !tbaa !10
  %227 = add nuw i64 %.0434525.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter770
  br i1 %prol.iter.cmp.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol, !llvm.loop !23

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %.0434525.unr = phi i64 [ %.0434525.ph, %scalar.ph.preheader ], [ %227, %scalar.ph.prol ]
  %228 = icmp ult i64 %222, 3
  br i1 %228, label %._crit_edge528, label %scalar.ph.preheader.new

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

scalar.ph:                                        ; preds = %scalar.ph, %scalar.ph.preheader.new
  %.0434525 = phi i64 [ %.0434525.unr, %scalar.ph.preheader.new ], [ %247, %scalar.ph ]
  %229 = getelementptr inbounds float, ptr %39, i64 %.0434525
  %230 = load float, ptr %229, align 4, !tbaa !10
  %gep = getelementptr float, ptr %invariant.gep, i64 %.0434525
  %231 = load float, ptr %gep, align 4, !tbaa !10
  %232 = fmul float %230, %231
  store float %232, ptr %gep, align 4, !tbaa !10
  %233 = getelementptr float, ptr %12, i64 %.0434525
  %234 = load float, ptr %233, align 4, !tbaa !10
  %gep797 = getelementptr float, ptr %invariant.gep796, i64 %.0434525
  %235 = load float, ptr %gep797, align 4, !tbaa !10
  %236 = fmul float %234, %235
  store float %236, ptr %gep797, align 4, !tbaa !10
  %237 = add nuw i64 %.0434525, 2
  %238 = getelementptr inbounds float, ptr %39, i64 %237
  %239 = load float, ptr %238, align 4, !tbaa !10
  %gep.2 = getelementptr float, ptr %invariant.gep, i64 %237
  %240 = load float, ptr %gep.2, align 4, !tbaa !10
  %241 = fmul float %239, %240
  store float %241, ptr %gep.2, align 4, !tbaa !10
  %242 = add nuw i64 %.0434525, 3
  %243 = getelementptr inbounds float, ptr %39, i64 %242
  %244 = load float, ptr %243, align 4, !tbaa !10
  %gep.3 = getelementptr float, ptr %invariant.gep, i64 %242
  %245 = load float, ptr %gep.3, align 4, !tbaa !10
  %246 = fmul float %244, %245
  store float %246, ptr %gep.3, align 4, !tbaa !10
  %247 = add nuw i64 %.0434525, 4
  %exitcond608.not.3 = icmp eq i64 %242, %205
  br i1 %exitcond608.not.3, label %._crit_edge528, label %scalar.ph, !llvm.loop !25

._crit_edge528:                                   ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  %248 = add nuw i64 %.2530, 1
  %exitcond609.not = icmp eq i64 %.2530, %204
  br i1 %exitcond609.not, label %..loopexit509_crit_edge, label %.lr.ph527, !llvm.loop !26

249:                                              ; preds = %201
  %.not462 = icmp eq i64 %.1426, 0
  br i1 %.not462, label %.loopexit508, label %250

250:                                              ; preds = %249
  %251 = load i64, ptr %5, align 8, !tbaa !5
  store i64 %251, ptr %25, align 8, !tbaa !5
  %.not463540 = icmp slt i64 %251, 1
  br i1 %.not463540, label %.loopexit508, label %.lr.ph543

.lr.ph543:                                        ; preds = %250
  %252 = load i64, ptr %2, align 8, !tbaa !5
  %.not464533 = icmp slt i64 %252, 1
  br i1 %.not464533, label %..loopexit508_crit_edge, label %.lr.ph536.preheader

.lr.ph536.preheader:                              ; preds = %.lr.ph543
  %253 = add nuw i64 %251, 4611686018427387903
  %254 = mul i64 %41, %253
  %255 = shl i64 %252, 2
  %256 = add i64 %254, %252
  %257 = shl i64 %256, 2
  %scevgep652 = getelementptr i8, ptr %14, i64 %257
  %scevgep653 = getelementptr i8, ptr %13, i64 %255
  %258 = add nuw i64 %252, 1
  %min.iters.check660 = icmp ult i64 %252, 8
  %bound0654 = icmp ugt ptr %scevgep653, %14
  %bound1655 = icmp ugt ptr %scevgep652, %13
  %found.conflict656 = and i1 %bound0654, %bound1655
  %.mask753 = and i64 %41, 2305843009213693952
  %stride.check657 = icmp ne i64 %.mask753, 0
  %259 = or i1 %found.conflict656, %stride.check657
  %n.vec663 = and i64 %252, 9223372036854775800
  %ind.end664 = or disjoint i64 %n.vec663, 1
  %cmp.n674 = icmp eq i64 %252, %n.vec663
  br label %.lr.ph536

.lr.ph536:                                        ; preds = %.lr.ph536.preheader, %._crit_edge537
  %.3541 = phi i64 [ %295, %._crit_edge537 ], [ 1, %.lr.ph536.preheader ]
  %260 = mul nsw i64 %.3541, %41
  %invariant.gep538 = getelementptr float, ptr %43, i64 %260
  %brmerge804 = select i1 %min.iters.check660, i1 true, i1 %259
  br i1 %brmerge804, label %scalar.ph659.preheader, label %vector.body666

vector.body666:                                   ; preds = %.lr.ph536, %vector.body666
  %index667 = phi i64 [ %index.next673, %vector.body666 ], [ 0, %.lr.ph536 ]
  %offset.idx668 = or disjoint i64 %index667, 1
  %261 = getelementptr float, ptr %13, i64 %index667
  %262 = getelementptr inbounds i8, ptr %261, i64 16
  %wide.load669 = load <4 x float>, ptr %261, align 4, !tbaa !10, !alias.scope !27
  %wide.load670 = load <4 x float>, ptr %262, align 4, !tbaa !10, !alias.scope !27
  %263 = getelementptr float, ptr %invariant.gep538, i64 %offset.idx668
  %264 = getelementptr i8, ptr %263, i64 16
  %wide.load671 = load <4 x float>, ptr %263, align 4, !tbaa !10, !alias.scope !30, !noalias !27
  %wide.load672 = load <4 x float>, ptr %264, align 4, !tbaa !10, !alias.scope !30, !noalias !27
  %265 = fmul <4 x float> %wide.load669, %wide.load671
  %266 = fmul <4 x float> %wide.load670, %wide.load672
  store <4 x float> %265, ptr %263, align 4, !tbaa !10, !alias.scope !30, !noalias !27
  store <4 x float> %266, ptr %264, align 4, !tbaa !10, !alias.scope !30, !noalias !27
  %index.next673 = add nuw i64 %index667, 8
  %267 = icmp eq i64 %index.next673, %n.vec663
  br i1 %267, label %middle.block658, label %vector.body666, !llvm.loop !32

middle.block658:                                  ; preds = %vector.body666
  br i1 %cmp.n674, label %._crit_edge537, label %scalar.ph659.preheader

scalar.ph659.preheader:                           ; preds = %.lr.ph536, %middle.block658
  %.1435534.ph = phi i64 [ 1, %.lr.ph536 ], [ %ind.end664, %middle.block658 ]
  %268 = sub i64 %258, %.1435534.ph
  %269 = sub i64 %252, %.1435534.ph
  %xtraiter772 = and i64 %268, 3
  %lcmp.mod773.not = icmp eq i64 %xtraiter772, 0
  br i1 %lcmp.mod773.not, label %scalar.ph659.prol.loopexit, label %scalar.ph659.prol

scalar.ph659.prol:                                ; preds = %scalar.ph659.preheader, %scalar.ph659.prol
  %.1435534.prol = phi i64 [ %274, %scalar.ph659.prol ], [ %.1435534.ph, %scalar.ph659.preheader ]
  %prol.iter774 = phi i64 [ %prol.iter774.next, %scalar.ph659.prol ], [ 0, %scalar.ph659.preheader ]
  %270 = getelementptr inbounds float, ptr %40, i64 %.1435534.prol
  %271 = load float, ptr %270, align 4, !tbaa !10
  %gep539.prol = getelementptr float, ptr %invariant.gep538, i64 %.1435534.prol
  %272 = load float, ptr %gep539.prol, align 4, !tbaa !10
  %273 = fmul float %271, %272
  store float %273, ptr %gep539.prol, align 4, !tbaa !10
  %274 = add nuw i64 %.1435534.prol, 1
  %prol.iter774.next = add i64 %prol.iter774, 1
  %prol.iter774.cmp.not = icmp eq i64 %prol.iter774.next, %xtraiter772
  br i1 %prol.iter774.cmp.not, label %scalar.ph659.prol.loopexit, label %scalar.ph659.prol, !llvm.loop !33

scalar.ph659.prol.loopexit:                       ; preds = %scalar.ph659.prol, %scalar.ph659.preheader
  %.1435534.unr = phi i64 [ %.1435534.ph, %scalar.ph659.preheader ], [ %274, %scalar.ph659.prol ]
  %275 = icmp ult i64 %269, 3
  br i1 %275, label %._crit_edge537, label %scalar.ph659.preheader.new

scalar.ph659.preheader.new:                       ; preds = %scalar.ph659.prol.loopexit
  %invariant.gep798 = getelementptr i8, ptr %invariant.gep538, i64 4
  br label %scalar.ph659

scalar.ph659:                                     ; preds = %scalar.ph659, %scalar.ph659.preheader.new
  %.1435534 = phi i64 [ %.1435534.unr, %scalar.ph659.preheader.new ], [ %294, %scalar.ph659 ]
  %276 = getelementptr inbounds float, ptr %40, i64 %.1435534
  %277 = load float, ptr %276, align 4, !tbaa !10
  %gep539 = getelementptr float, ptr %invariant.gep538, i64 %.1435534
  %278 = load float, ptr %gep539, align 4, !tbaa !10
  %279 = fmul float %277, %278
  store float %279, ptr %gep539, align 4, !tbaa !10
  %280 = getelementptr float, ptr %13, i64 %.1435534
  %281 = load float, ptr %280, align 4, !tbaa !10
  %gep799 = getelementptr float, ptr %invariant.gep798, i64 %.1435534
  %282 = load float, ptr %gep799, align 4, !tbaa !10
  %283 = fmul float %281, %282
  store float %283, ptr %gep799, align 4, !tbaa !10
  %284 = add nuw i64 %.1435534, 2
  %285 = getelementptr inbounds float, ptr %40, i64 %284
  %286 = load float, ptr %285, align 4, !tbaa !10
  %gep539.2 = getelementptr float, ptr %invariant.gep538, i64 %284
  %287 = load float, ptr %gep539.2, align 4, !tbaa !10
  %288 = fmul float %286, %287
  store float %288, ptr %gep539.2, align 4, !tbaa !10
  %289 = add nuw i64 %.1435534, 3
  %290 = getelementptr inbounds float, ptr %40, i64 %289
  %291 = load float, ptr %290, align 4, !tbaa !10
  %gep539.3 = getelementptr float, ptr %invariant.gep538, i64 %289
  %292 = load float, ptr %gep539.3, align 4, !tbaa !10
  %293 = fmul float %291, %292
  store float %293, ptr %gep539.3, align 4, !tbaa !10
  %294 = add nuw i64 %.1435534, 4
  %exitcond610.not.3 = icmp eq i64 %289, %252
  br i1 %exitcond610.not.3, label %._crit_edge537, label %scalar.ph659, !llvm.loop !34

._crit_edge537:                                   ; preds = %scalar.ph659.prol.loopexit, %scalar.ph659, %middle.block658
  %295 = add nuw i64 %.3541, 1
  %exitcond611.not = icmp eq i64 %.3541, %251
  br i1 %exitcond611.not, label %..loopexit508_crit_edge, label %.lr.ph536, !llvm.loop !35

..loopexit508_crit_edge:                          ; preds = %._crit_edge537, %.lr.ph543
  store i64 %252, ptr %26, align 8, !tbaa !5
  br label %.loopexit508

..loopexit509_crit_edge:                          ; preds = %._crit_edge528, %.lr.ph532
  store i64 %205, ptr %26, align 8, !tbaa !5
  br label %.loopexit508

.loopexit508:                                     ; preds = %203, %..loopexit509_crit_edge, %250, %..loopexit508_crit_edge, %249, %202
  br i1 %or.cond, label %296, label %377

296:                                              ; preds = %.loopexit508
  %297 = load i64, ptr %2, align 8, !tbaa !5
  store i64 %297, ptr %25, align 8, !tbaa !5
  %.not467544 = icmp slt i64 %297, 1
  br i1 %.not467544, label %._crit_edge549, label %.lr.ph548.preheader

.lr.ph548.preheader:                              ; preds = %296
  %invariant.gep637 = getelementptr i8, ptr %35, i64 4
  %invariant.gep639 = getelementptr i8, ptr %38, i64 4
  br label %.lr.ph548

.lr.ph548:                                        ; preds = %.lr.ph548.preheader, %.lr.ph548
  %.4.neg546 = phi i64 [ %.4.neg, %.lr.ph548 ], [ -1, %.lr.ph548.preheader ]
  %.4545 = phi i64 [ %315, %.lr.ph548 ], [ 1, %.lr.ph548.preheader ]
  %298 = load i64, ptr %4, align 8, !tbaa !5
  %299 = sub nsw i64 %.4545, %298
  %300 = call i64 @llvm.smax.i64(i64 %299, i64 1)
  %301 = load i64, ptr %3, align 8, !tbaa !5
  %302 = add nsw i64 %301, %.4545
  %303 = load i64, ptr %2, align 8, !tbaa !5
  %. = call i64 @llvm.smin.i64(i64 %302, i64 %303)
  %reass.sub = sub i64 %., %300
  %304 = add i64 %reass.sub, 1
  store i64 %304, ptr %26, align 8, !tbaa !5
  %305 = mul nsw i64 %.4545, %33
  %gep638 = getelementptr float, ptr %invariant.gep637, i64 %298
  %306 = getelementptr float, ptr %gep638, i64 %.4.neg546
  %307 = getelementptr float, ptr %306, i64 %300
  %308 = getelementptr float, ptr %307, i64 %305
  %309 = mul nsw i64 %.4545, %36
  %gep640 = getelementptr float, ptr %invariant.gep639, i64 %.4.neg546
  %310 = getelementptr float, ptr %gep640, i64 %298
  %311 = getelementptr float, ptr %310, i64 %301
  %312 = getelementptr float, ptr %311, i64 %300
  %313 = getelementptr float, ptr %312, i64 %309
  %314 = call i32 @f2c_scopy(ptr noundef nonnull %26, ptr noundef %308, ptr noundef nonnull @c__1, ptr noundef %313, ptr noundef nonnull @c__1) #4
  %315 = add nuw nsw i64 %.4545, 1
  %.4.neg = xor i64 %.4545, -1
  %316 = load i64, ptr %25, align 8, !tbaa !5
  %.not467.not = icmp slt i64 %.4545, %316
  br i1 %.not467.not, label %.lr.ph548, label %._crit_edge549, !llvm.loop !36

._crit_edge549:                                   ; preds = %.lr.ph548, %296
  %317 = call i32 @sgbtrf_(ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull %23) #4
  %318 = load i64, ptr %23, align 8, !tbaa !5
  %319 = icmp sgt i64 %318, 0
  br i1 %319, label %320, label %377

320:                                              ; preds = %._crit_edge549
  %321 = load i64, ptr %4, align 8, !tbaa !5
  %322 = load i64, ptr %2, align 8, !tbaa !5
  %323 = load i64, ptr %3, align 8, !tbaa !5
  %324 = add i64 %321, 1
  %325 = add i64 %324, %323
  %326 = add i64 %321, %322
  br label %327

327:                                              ; preds = %320, %._crit_edge586
  %indvar = phi i64 [ 0, %320 ], [ %indvar.next, %._crit_edge586 ]
  %.5.neg594 = phi i64 [ -1, %320 ], [ %.5.neg, %._crit_edge586 ]
  %.5593 = phi i64 [ 1, %320 ], [ %364, %._crit_edge586 ]
  %.lcssa591592 = phi float [ 0.000000e+00, %320 ], [ %363, %._crit_edge586 ]
  %328 = sub i64 %326, %indvar
  %smin = call i64 @llvm.smin.i64(i64 %328, i64 %325)
  %329 = sub i64 %324, %indvar
  %smax = call i64 @llvm.smax.i64(i64 %329, i64 1)
  %330 = add nsw i64 %.5.neg594, 2
  %331 = add i64 %330, %321
  %332 = add nsw i64 %.5.neg594, 1
  %333 = add i64 %332, %321
  %334 = add i64 %333, %322
  %335 = call i64 @llvm.smin.i64(i64 %334, i64 %325)
  %336 = call i64 @llvm.smax.i64(i64 %331, i64 1)
  %.not479582 = icmp sgt i64 %336, %335
  br i1 %.not479582, label %._crit_edge586, label %.lr.ph585

.lr.ph585:                                        ; preds = %327
  %337 = mul nsw i64 %.5593, %33
  %invariant.gep587 = getelementptr float, ptr %35, i64 %337
  %338 = add i64 %smin, %smax
  %339 = and i64 %338, 1
  %lcmp.mod782.not.not = icmp eq i64 %339, 0
  br i1 %lcmp.mod782.not.not, label %.prol.loopexit.unr-lcssa, label %.prol.loopexit

.prol.loopexit.unr-lcssa:                         ; preds = %.lr.ph585
  %gep588.prol = getelementptr float, ptr %invariant.gep587, i64 %336
  %340 = load float, ptr %gep588.prol, align 4, !tbaa !10
  %341 = fcmp oge float %340, 0.000000e+00
  %342 = fneg float %340
  %343 = select i1 %341, float %340, float %342
  %344 = fcmp oge float %.lcssa591592, %343
  %345 = select i1 %344, float %.lcssa591592, float %343
  %346 = add nuw nsw i64 %336, 1
  br label %.prol.loopexit

.prol.loopexit:                                   ; preds = %.prol.loopexit.unr-lcssa, %.lr.ph585
  %.2436583.unr = phi i64 [ %336, %.lr.ph585 ], [ %346, %.prol.loopexit.unr-lcssa ]
  %.unr = phi float [ %.lcssa591592, %.lr.ph585 ], [ %345, %.prol.loopexit.unr-lcssa ]
  %.lcssa.unr = phi float [ poison, %.lr.ph585 ], [ %345, %.prol.loopexit.unr-lcssa ]
  %347 = icmp eq i64 %smin, %smax
  br i1 %347, label %._crit_edge586, label %.lr.ph585.new

.lr.ph585.new:                                    ; preds = %.prol.loopexit, %.lr.ph585.new
  %.2436583 = phi i64 [ %362, %.lr.ph585.new ], [ %.2436583.unr, %.prol.loopexit ]
  %348 = phi float [ %361, %.lr.ph585.new ], [ %.unr, %.prol.loopexit ]
  %gep588 = getelementptr float, ptr %invariant.gep587, i64 %.2436583
  %349 = load float, ptr %gep588, align 4, !tbaa !10
  %350 = fcmp oge float %349, 0.000000e+00
  %351 = fneg float %349
  %352 = select i1 %350, float %349, float %351
  %353 = fcmp oge float %348, %352
  %354 = select i1 %353, float %348, float %352
  %355 = add nuw nsw i64 %.2436583, 1
  %gep588.1 = getelementptr float, ptr %invariant.gep587, i64 %355
  %356 = load float, ptr %gep588.1, align 4, !tbaa !10
  %357 = fcmp oge float %356, 0.000000e+00
  %358 = fneg float %356
  %359 = select i1 %357, float %356, float %358
  %360 = fcmp oge float %354, %359
  %361 = select i1 %360, float %354, float %359
  %362 = add nuw nsw i64 %.2436583, 2
  %.not479.not.1 = icmp slt i64 %355, %335
  br i1 %.not479.not.1, label %.lr.ph585.new, label %._crit_edge586, !llvm.loop !37

._crit_edge586:                                   ; preds = %.prol.loopexit, %.lr.ph585.new, %327
  %363 = phi float [ %.lcssa591592, %327 ], [ %.lcssa.unr, %.prol.loopexit ], [ %361, %.lr.ph585.new ]
  %364 = add nuw i64 %.5593, 1
  %.5.neg = xor i64 %.5593, -1
  %exitcond618.not = icmp eq i64 %.5593, %318
  %indvar.next = add i64 %indvar, 1
  br i1 %exitcond618.not, label %365, label %327, !llvm.loop !38

365:                                              ; preds = %._crit_edge586
  %366 = add nsw i64 %318, -1
  %367 = add nsw i64 %321, %323
  store i64 %367, ptr %26, align 8, !tbaa !5
  %368 = call i64 @llvm.smin.i64(i64 %366, i64 %367)
  store i64 %368, ptr %25, align 8, !tbaa !5
  %reass.sub596 = sub i64 %367, %318
  %369 = add i64 %reass.sub596, 2
  %370 = call i64 @llvm.smax.i64(i64 %369, i64 1)
  %371 = getelementptr float, ptr %38, i64 %370
  %372 = getelementptr float, ptr %371, i64 %36
  %373 = call double @slantb_(ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str, ptr noundef nonnull %23, ptr noundef nonnull %25, ptr noundef %372, ptr noundef nonnull %9, ptr noundef %21) #4
  %374 = fptrunc double %373 to float
  %375 = fcmp oeq float %374, 0.000000e+00
  %376 = fdiv float %363, %374
  %.0 = select i1 %375, float 1.000000e+00, float %376
  store float %.0, ptr %21, align 4, !tbaa !10
  store float 0.000000e+00, ptr %18, align 4, !tbaa !10
  br label %514

377:                                              ; preds = %._crit_edge549, %.loopexit508
  %.483 = select i1 %.not450, i8 73, i8 49
  store i8 %.483, ptr %28, align 1, !tbaa !9
  %378 = call double @slangb_(ptr noundef nonnull %28, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %21) #4
  %379 = fptrunc double %378 to float
  store float %379, ptr %29, align 4, !tbaa !10
  %380 = load i64, ptr %3, align 8, !tbaa !5
  %381 = load i64, ptr %4, align 8, !tbaa !5
  %382 = add nsw i64 %381, %380
  store i64 %382, ptr %25, align 8, !tbaa !5
  %383 = call double @slantb_(ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str, ptr noundef nonnull %2, ptr noundef nonnull %25, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %21) #4
  %384 = fptrunc double %383 to float
  %385 = fcmp oeq float %384, 0.000000e+00
  br i1 %385, label %391, label %386

386:                                              ; preds = %377
  %387 = call double @slangb_(ptr noundef nonnull @.str.9, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %21) #4
  %388 = fpext float %384 to double
  %389 = fdiv double %387, %388
  %390 = fptrunc double %389 to float
  br label %391

391:                                              ; preds = %377, %386
  %.1 = phi float [ %390, %386 ], [ 1.000000e+00, %377 ]
  %392 = call i32 @sgbcon_(ptr noundef nonnull %28, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull %29, ptr noundef %18, ptr noundef %21, ptr noundef %22, ptr noundef nonnull %23) #4
  %393 = call i32 @slacpy_(ptr noundef nonnull @.str.11, ptr noundef nonnull %2, ptr noundef nonnull %5, ptr noundef %14, ptr noundef nonnull %15, ptr noundef %16, ptr noundef nonnull %17) #4
  %394 = call i32 @sgbtrs_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef %16, ptr noundef nonnull %17, ptr noundef nonnull %23) #4
  %395 = call i32 @sgbrfs_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef %14, ptr noundef nonnull %15, ptr noundef %16, ptr noundef nonnull %17, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22, ptr noundef nonnull %23) #4
  br i1 %.not450, label %451, label %396

396:                                              ; preds = %391
  %.not472 = icmp eq i64 %.1426, 0
  br i1 %.not472, label %.loopexit, label %397

397:                                              ; preds = %396
  %398 = load i64, ptr %5, align 8, !tbaa !5
  %.not473557 = icmp slt i64 %398, 1
  br i1 %.not473557, label %._crit_edge561.thread, label %.lr.ph560

._crit_edge561.thread:                            ; preds = %397
  store i64 %398, ptr %25, align 8, !tbaa !5
  br label %.loopexit

.lr.ph560:                                        ; preds = %397
  %399 = load i64, ptr %2, align 8, !tbaa !5
  %.not475550 = icmp slt i64 %399, 1
  br i1 %.not475550, label %._crit_edge561.thread629, label %.lr.ph553.preheader

.lr.ph553.preheader:                              ; preds = %.lr.ph560
  %400 = add nuw i64 %398, 4611686018427387903
  %401 = mul i64 %44, %400
  %402 = shl i64 %399, 2
  %403 = add i64 %401, %399
  %404 = shl i64 %403, 2
  %scevgep676 = getelementptr i8, ptr %16, i64 %404
  %scevgep677 = getelementptr i8, ptr %13, i64 %402
  %405 = add nuw i64 %399, 1
  %min.iters.check684 = icmp ult i64 %399, 8
  %bound0678 = icmp ugt ptr %scevgep677, %16
  %bound1679 = icmp ugt ptr %scevgep676, %13
  %found.conflict680 = and i1 %bound0678, %bound1679
  %.mask754 = and i64 %44, 2305843009213693952
  %stride.check681 = icmp ne i64 %.mask754, 0
  %406 = or i1 %found.conflict680, %stride.check681
  %n.vec687 = and i64 %399, 9223372036854775800
  %ind.end688 = or disjoint i64 %n.vec687, 1
  %cmp.n698 = icmp eq i64 %399, %n.vec687
  br label %.lr.ph553

._crit_edge561.thread629:                         ; preds = %.lr.ph560
  store i64 %398, ptr %25, align 8, !tbaa !5
  br label %.lr.ph565

.lr.ph553:                                        ; preds = %.lr.ph553.preheader, %._crit_edge554
  %.6558 = phi i64 [ %442, %._crit_edge554 ], [ 1, %.lr.ph553.preheader ]
  %407 = mul nsw i64 %.6558, %44
  %invariant.gep555 = getelementptr float, ptr %46, i64 %407
  %brmerge805 = select i1 %min.iters.check684, i1 true, i1 %406
  br i1 %brmerge805, label %scalar.ph683.preheader, label %vector.body690

vector.body690:                                   ; preds = %.lr.ph553, %vector.body690
  %index691 = phi i64 [ %index.next697, %vector.body690 ], [ 0, %.lr.ph553 ]
  %offset.idx692 = or disjoint i64 %index691, 1
  %408 = getelementptr float, ptr %13, i64 %index691
  %409 = getelementptr inbounds i8, ptr %408, i64 16
  %wide.load693 = load <4 x float>, ptr %408, align 4, !tbaa !10, !alias.scope !39
  %wide.load694 = load <4 x float>, ptr %409, align 4, !tbaa !10, !alias.scope !39
  %410 = getelementptr float, ptr %invariant.gep555, i64 %offset.idx692
  %411 = getelementptr i8, ptr %410, i64 16
  %wide.load695 = load <4 x float>, ptr %410, align 4, !tbaa !10, !alias.scope !42, !noalias !39
  %wide.load696 = load <4 x float>, ptr %411, align 4, !tbaa !10, !alias.scope !42, !noalias !39
  %412 = fmul <4 x float> %wide.load693, %wide.load695
  %413 = fmul <4 x float> %wide.load694, %wide.load696
  store <4 x float> %412, ptr %410, align 4, !tbaa !10, !alias.scope !42, !noalias !39
  store <4 x float> %413, ptr %411, align 4, !tbaa !10, !alias.scope !42, !noalias !39
  %index.next697 = add nuw i64 %index691, 8
  %414 = icmp eq i64 %index.next697, %n.vec687
  br i1 %414, label %middle.block682, label %vector.body690, !llvm.loop !44

middle.block682:                                  ; preds = %vector.body690
  br i1 %cmp.n698, label %._crit_edge554, label %scalar.ph683.preheader

scalar.ph683.preheader:                           ; preds = %.lr.ph553, %middle.block682
  %.3437551.ph = phi i64 [ 1, %.lr.ph553 ], [ %ind.end688, %middle.block682 ]
  %415 = sub i64 %405, %.3437551.ph
  %416 = sub i64 %399, %.3437551.ph
  %xtraiter775 = and i64 %415, 3
  %lcmp.mod776.not = icmp eq i64 %xtraiter775, 0
  br i1 %lcmp.mod776.not, label %scalar.ph683.prol.loopexit, label %scalar.ph683.prol

scalar.ph683.prol:                                ; preds = %scalar.ph683.preheader, %scalar.ph683.prol
  %.3437551.prol = phi i64 [ %421, %scalar.ph683.prol ], [ %.3437551.ph, %scalar.ph683.preheader ]
  %prol.iter777 = phi i64 [ %prol.iter777.next, %scalar.ph683.prol ], [ 0, %scalar.ph683.preheader ]
  %417 = getelementptr inbounds float, ptr %40, i64 %.3437551.prol
  %418 = load float, ptr %417, align 4, !tbaa !10
  %gep556.prol = getelementptr float, ptr %invariant.gep555, i64 %.3437551.prol
  %419 = load float, ptr %gep556.prol, align 4, !tbaa !10
  %420 = fmul float %418, %419
  store float %420, ptr %gep556.prol, align 4, !tbaa !10
  %421 = add nuw i64 %.3437551.prol, 1
  %prol.iter777.next = add i64 %prol.iter777, 1
  %prol.iter777.cmp.not = icmp eq i64 %prol.iter777.next, %xtraiter775
  br i1 %prol.iter777.cmp.not, label %scalar.ph683.prol.loopexit, label %scalar.ph683.prol, !llvm.loop !45

scalar.ph683.prol.loopexit:                       ; preds = %scalar.ph683.prol, %scalar.ph683.preheader
  %.3437551.unr = phi i64 [ %.3437551.ph, %scalar.ph683.preheader ], [ %421, %scalar.ph683.prol ]
  %422 = icmp ult i64 %416, 3
  br i1 %422, label %._crit_edge554, label %scalar.ph683.preheader.new

scalar.ph683.preheader.new:                       ; preds = %scalar.ph683.prol.loopexit
  %invariant.gep800 = getelementptr i8, ptr %invariant.gep555, i64 4
  br label %scalar.ph683

scalar.ph683:                                     ; preds = %scalar.ph683, %scalar.ph683.preheader.new
  %.3437551 = phi i64 [ %.3437551.unr, %scalar.ph683.preheader.new ], [ %441, %scalar.ph683 ]
  %423 = getelementptr inbounds float, ptr %40, i64 %.3437551
  %424 = load float, ptr %423, align 4, !tbaa !10
  %gep556 = getelementptr float, ptr %invariant.gep555, i64 %.3437551
  %425 = load float, ptr %gep556, align 4, !tbaa !10
  %426 = fmul float %424, %425
  store float %426, ptr %gep556, align 4, !tbaa !10
  %427 = getelementptr float, ptr %13, i64 %.3437551
  %428 = load float, ptr %427, align 4, !tbaa !10
  %gep801 = getelementptr float, ptr %invariant.gep800, i64 %.3437551
  %429 = load float, ptr %gep801, align 4, !tbaa !10
  %430 = fmul float %428, %429
  store float %430, ptr %gep801, align 4, !tbaa !10
  %431 = add nuw i64 %.3437551, 2
  %432 = getelementptr inbounds float, ptr %40, i64 %431
  %433 = load float, ptr %432, align 4, !tbaa !10
  %gep556.2 = getelementptr float, ptr %invariant.gep555, i64 %431
  %434 = load float, ptr %gep556.2, align 4, !tbaa !10
  %435 = fmul float %433, %434
  store float %435, ptr %gep556.2, align 4, !tbaa !10
  %436 = add nuw i64 %.3437551, 3
  %437 = getelementptr inbounds float, ptr %40, i64 %436
  %438 = load float, ptr %437, align 4, !tbaa !10
  %gep556.3 = getelementptr float, ptr %invariant.gep555, i64 %436
  %439 = load float, ptr %gep556.3, align 4, !tbaa !10
  %440 = fmul float %438, %439
  store float %440, ptr %gep556.3, align 4, !tbaa !10
  %441 = add nuw i64 %.3437551, 4
  %exitcond612.not.3 = icmp eq i64 %436, %399
  br i1 %exitcond612.not.3, label %._crit_edge554, label %scalar.ph683, !llvm.loop !46

._crit_edge554:                                   ; preds = %scalar.ph683.prol.loopexit, %scalar.ph683, %middle.block682
  %442 = add nuw i64 %.6558, 1
  %exitcond613.not = icmp eq i64 %.6558, %398
  br i1 %exitcond613.not, label %._crit_edge561, label %.lr.ph553, !llvm.loop !47

._crit_edge561:                                   ; preds = %._crit_edge554
  store i64 %398, ptr %25, align 8, !tbaa !5
  br i1 %.not473557, label %.loopexit, label %.lr.ph565

.lr.ph565:                                        ; preds = %._crit_edge561.thread629, %._crit_edge561
  %443 = load float, ptr %30, align 4, !tbaa !10
  %min.iters.check701 = icmp ult i64 %398, 4
  br i1 %min.iters.check701, label %scalar.ph700.preheader, label %vector.ph702

vector.ph702:                                     ; preds = %.lr.ph565
  %n.vec704 = and i64 %398, 9223372036854775804
  %ind.end705 = or disjoint i64 %n.vec704, 1
  %broadcast.splatinsert = insertelement <4 x float> poison, float %443, i64 0
  %broadcast.splat = shufflevector <4 x float> %broadcast.splatinsert, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body707

vector.body707:                                   ; preds = %vector.body707, %vector.ph702
  %index708 = phi i64 [ 0, %vector.ph702 ], [ %index.next711, %vector.body707 ]
  %444 = getelementptr float, ptr %19, i64 %index708
  %wide.load710 = load <4 x float>, ptr %444, align 4, !tbaa !10
  %445 = fdiv <4 x float> %wide.load710, %broadcast.splat
  store <4 x float> %445, ptr %444, align 4, !tbaa !10
  %index.next711 = add nuw i64 %index708, 4
  %446 = icmp eq i64 %index.next711, %n.vec704
  br i1 %446, label %middle.block699, label %vector.body707, !llvm.loop !48

middle.block699:                                  ; preds = %vector.body707
  %cmp.n712 = icmp eq i64 %398, %n.vec704
  br i1 %cmp.n712, label %.loopexit, label %scalar.ph700.preheader

scalar.ph700.preheader:                           ; preds = %middle.block699, %.lr.ph565
  %.7563.ph = phi i64 [ 1, %.lr.ph565 ], [ %ind.end705, %middle.block699 ]
  br label %scalar.ph700

scalar.ph700:                                     ; preds = %scalar.ph700.preheader, %scalar.ph700
  %.7563 = phi i64 [ %450, %scalar.ph700 ], [ %.7563.ph, %scalar.ph700.preheader ]
  %447 = getelementptr inbounds float, ptr %47, i64 %.7563
  %448 = load float, ptr %447, align 4, !tbaa !10
  %449 = fdiv float %448, %443
  store float %449, ptr %447, align 4, !tbaa !10
  %450 = add nuw i64 %.7563, 1
  %exitcond614.not = icmp eq i64 %.7563, %398
  br i1 %exitcond614.not, label %.loopexit, label %scalar.ph700, !llvm.loop !49

451:                                              ; preds = %391
  %.not468 = icmp eq i64 %.1422, 0
  br i1 %.not468, label %.loopexit, label %452

452:                                              ; preds = %451
  %453 = load i64, ptr %5, align 8, !tbaa !5
  %.not469573 = icmp slt i64 %453, 1
  br i1 %.not469573, label %._crit_edge577.thread, label %.lr.ph576

._crit_edge577.thread:                            ; preds = %452
  store i64 %453, ptr %25, align 8, !tbaa !5
  br label %.loopexit

.lr.ph576:                                        ; preds = %452
  %454 = load i64, ptr %2, align 8, !tbaa !5
  %.not471566 = icmp slt i64 %454, 1
  br i1 %.not471566, label %._crit_edge577.thread630, label %.lr.ph569.preheader

.lr.ph569.preheader:                              ; preds = %.lr.ph576
  %455 = add nuw i64 %453, 4611686018427387903
  %456 = mul i64 %44, %455
  %457 = shl i64 %454, 2
  %458 = add i64 %456, %454
  %459 = shl i64 %458, 2
  %scevgep714 = getelementptr i8, ptr %16, i64 %459
  %scevgep715 = getelementptr i8, ptr %12, i64 %457
  %460 = add nuw i64 %454, 1
  %min.iters.check722 = icmp ult i64 %454, 8
  %bound0716 = icmp ugt ptr %scevgep715, %16
  %bound1717 = icmp ugt ptr %scevgep714, %12
  %found.conflict718 = and i1 %bound0716, %bound1717
  %.mask755 = and i64 %44, 2305843009213693952
  %stride.check719 = icmp ne i64 %.mask755, 0
  %461 = or i1 %found.conflict718, %stride.check719
  %n.vec725 = and i64 %454, 9223372036854775800
  %ind.end726 = or disjoint i64 %n.vec725, 1
  %cmp.n736 = icmp eq i64 %454, %n.vec725
  br label %.lr.ph569

._crit_edge577.thread630:                         ; preds = %.lr.ph576
  store i64 %453, ptr %25, align 8, !tbaa !5
  br label %.lr.ph581

.lr.ph569:                                        ; preds = %.lr.ph569.preheader, %._crit_edge570
  %.8574 = phi i64 [ %497, %._crit_edge570 ], [ 1, %.lr.ph569.preheader ]
  %462 = mul nsw i64 %.8574, %44
  %invariant.gep571 = getelementptr float, ptr %46, i64 %462
  %brmerge806 = select i1 %min.iters.check722, i1 true, i1 %461
  br i1 %brmerge806, label %scalar.ph721.preheader, label %vector.body728

vector.body728:                                   ; preds = %.lr.ph569, %vector.body728
  %index729 = phi i64 [ %index.next735, %vector.body728 ], [ 0, %.lr.ph569 ]
  %offset.idx730 = or disjoint i64 %index729, 1
  %463 = getelementptr float, ptr %12, i64 %index729
  %464 = getelementptr inbounds i8, ptr %463, i64 16
  %wide.load731 = load <4 x float>, ptr %463, align 4, !tbaa !10, !alias.scope !50
  %wide.load732 = load <4 x float>, ptr %464, align 4, !tbaa !10, !alias.scope !50
  %465 = getelementptr float, ptr %invariant.gep571, i64 %offset.idx730
  %466 = getelementptr i8, ptr %465, i64 16
  %wide.load733 = load <4 x float>, ptr %465, align 4, !tbaa !10, !alias.scope !53, !noalias !50
  %wide.load734 = load <4 x float>, ptr %466, align 4, !tbaa !10, !alias.scope !53, !noalias !50
  %467 = fmul <4 x float> %wide.load731, %wide.load733
  %468 = fmul <4 x float> %wide.load732, %wide.load734
  store <4 x float> %467, ptr %465, align 4, !tbaa !10, !alias.scope !53, !noalias !50
  store <4 x float> %468, ptr %466, align 4, !tbaa !10, !alias.scope !53, !noalias !50
  %index.next735 = add nuw i64 %index729, 8
  %469 = icmp eq i64 %index.next735, %n.vec725
  br i1 %469, label %middle.block720, label %vector.body728, !llvm.loop !55

middle.block720:                                  ; preds = %vector.body728
  br i1 %cmp.n736, label %._crit_edge570, label %scalar.ph721.preheader

scalar.ph721.preheader:                           ; preds = %.lr.ph569, %middle.block720
  %.4438567.ph = phi i64 [ 1, %.lr.ph569 ], [ %ind.end726, %middle.block720 ]
  %470 = sub i64 %460, %.4438567.ph
  %471 = sub i64 %454, %.4438567.ph
  %xtraiter778 = and i64 %470, 3
  %lcmp.mod779.not = icmp eq i64 %xtraiter778, 0
  br i1 %lcmp.mod779.not, label %scalar.ph721.prol.loopexit, label %scalar.ph721.prol

scalar.ph721.prol:                                ; preds = %scalar.ph721.preheader, %scalar.ph721.prol
  %.4438567.prol = phi i64 [ %476, %scalar.ph721.prol ], [ %.4438567.ph, %scalar.ph721.preheader ]
  %prol.iter780 = phi i64 [ %prol.iter780.next, %scalar.ph721.prol ], [ 0, %scalar.ph721.preheader ]
  %472 = getelementptr inbounds float, ptr %39, i64 %.4438567.prol
  %473 = load float, ptr %472, align 4, !tbaa !10
  %gep572.prol = getelementptr float, ptr %invariant.gep571, i64 %.4438567.prol
  %474 = load float, ptr %gep572.prol, align 4, !tbaa !10
  %475 = fmul float %473, %474
  store float %475, ptr %gep572.prol, align 4, !tbaa !10
  %476 = add nuw i64 %.4438567.prol, 1
  %prol.iter780.next = add i64 %prol.iter780, 1
  %prol.iter780.cmp.not = icmp eq i64 %prol.iter780.next, %xtraiter778
  br i1 %prol.iter780.cmp.not, label %scalar.ph721.prol.loopexit, label %scalar.ph721.prol, !llvm.loop !56

scalar.ph721.prol.loopexit:                       ; preds = %scalar.ph721.prol, %scalar.ph721.preheader
  %.4438567.unr = phi i64 [ %.4438567.ph, %scalar.ph721.preheader ], [ %476, %scalar.ph721.prol ]
  %477 = icmp ult i64 %471, 3
  br i1 %477, label %._crit_edge570, label %scalar.ph721.preheader.new

scalar.ph721.preheader.new:                       ; preds = %scalar.ph721.prol.loopexit
  %invariant.gep802 = getelementptr i8, ptr %invariant.gep571, i64 4
  br label %scalar.ph721

scalar.ph721:                                     ; preds = %scalar.ph721, %scalar.ph721.preheader.new
  %.4438567 = phi i64 [ %.4438567.unr, %scalar.ph721.preheader.new ], [ %496, %scalar.ph721 ]
  %478 = getelementptr inbounds float, ptr %39, i64 %.4438567
  %479 = load float, ptr %478, align 4, !tbaa !10
  %gep572 = getelementptr float, ptr %invariant.gep571, i64 %.4438567
  %480 = load float, ptr %gep572, align 4, !tbaa !10
  %481 = fmul float %479, %480
  store float %481, ptr %gep572, align 4, !tbaa !10
  %482 = getelementptr float, ptr %12, i64 %.4438567
  %483 = load float, ptr %482, align 4, !tbaa !10
  %gep803 = getelementptr float, ptr %invariant.gep802, i64 %.4438567
  %484 = load float, ptr %gep803, align 4, !tbaa !10
  %485 = fmul float %483, %484
  store float %485, ptr %gep803, align 4, !tbaa !10
  %486 = add nuw i64 %.4438567, 2
  %487 = getelementptr inbounds float, ptr %39, i64 %486
  %488 = load float, ptr %487, align 4, !tbaa !10
  %gep572.2 = getelementptr float, ptr %invariant.gep571, i64 %486
  %489 = load float, ptr %gep572.2, align 4, !tbaa !10
  %490 = fmul float %488, %489
  store float %490, ptr %gep572.2, align 4, !tbaa !10
  %491 = add nuw i64 %.4438567, 3
  %492 = getelementptr inbounds float, ptr %39, i64 %491
  %493 = load float, ptr %492, align 4, !tbaa !10
  %gep572.3 = getelementptr float, ptr %invariant.gep571, i64 %491
  %494 = load float, ptr %gep572.3, align 4, !tbaa !10
  %495 = fmul float %493, %494
  store float %495, ptr %gep572.3, align 4, !tbaa !10
  %496 = add nuw i64 %.4438567, 4
  %exitcond615.not.3 = icmp eq i64 %491, %454
  br i1 %exitcond615.not.3, label %._crit_edge570, label %scalar.ph721, !llvm.loop !57

._crit_edge570:                                   ; preds = %scalar.ph721.prol.loopexit, %scalar.ph721, %middle.block720
  %497 = add nuw i64 %.8574, 1
  %exitcond616.not = icmp eq i64 %.8574, %453
  br i1 %exitcond616.not, label %._crit_edge577, label %.lr.ph569, !llvm.loop !58

._crit_edge577:                                   ; preds = %._crit_edge570
  store i64 %453, ptr %25, align 8, !tbaa !5
  br i1 %.not469573, label %.loopexit, label %.lr.ph581

.lr.ph581:                                        ; preds = %._crit_edge577.thread630, %._crit_edge577
  %498 = load float, ptr %32, align 4, !tbaa !10
  %min.iters.check739 = icmp ult i64 %453, 4
  br i1 %min.iters.check739, label %scalar.ph738.preheader, label %vector.ph740

vector.ph740:                                     ; preds = %.lr.ph581
  %n.vec742 = and i64 %453, 9223372036854775804
  %ind.end743 = or disjoint i64 %n.vec742, 1
  %broadcast.splatinsert749 = insertelement <4 x float> poison, float %498, i64 0
  %broadcast.splat750 = shufflevector <4 x float> %broadcast.splatinsert749, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body745

vector.body745:                                   ; preds = %vector.body745, %vector.ph740
  %index746 = phi i64 [ 0, %vector.ph740 ], [ %index.next751, %vector.body745 ]
  %499 = getelementptr float, ptr %19, i64 %index746
  %wide.load748 = load <4 x float>, ptr %499, align 4, !tbaa !10
  %500 = fdiv <4 x float> %wide.load748, %broadcast.splat750
  store <4 x float> %500, ptr %499, align 4, !tbaa !10
  %index.next751 = add nuw i64 %index746, 4
  %501 = icmp eq i64 %index.next751, %n.vec742
  br i1 %501, label %middle.block737, label %vector.body745, !llvm.loop !59

middle.block737:                                  ; preds = %vector.body745
  %cmp.n752 = icmp eq i64 %453, %n.vec742
  br i1 %cmp.n752, label %.loopexit, label %scalar.ph738.preheader

scalar.ph738.preheader:                           ; preds = %middle.block737, %.lr.ph581
  %.9579.ph = phi i64 [ 1, %.lr.ph581 ], [ %ind.end743, %middle.block737 ]
  br label %scalar.ph738

scalar.ph738:                                     ; preds = %scalar.ph738.preheader, %scalar.ph738
  %.9579 = phi i64 [ %505, %scalar.ph738 ], [ %.9579.ph, %scalar.ph738.preheader ]
  %502 = getelementptr inbounds float, ptr %47, i64 %.9579
  %503 = load float, ptr %502, align 4, !tbaa !10
  %504 = fdiv float %503, %498
  store float %504, ptr %502, align 4, !tbaa !10
  %505 = add nuw i64 %.9579, 1
  %exitcond617.not = icmp eq i64 %.9579, %453
  br i1 %exitcond617.not, label %.loopexit, label %scalar.ph738, !llvm.loop !60

.loopexit:                                        ; preds = %scalar.ph700, %scalar.ph738, %middle.block699, %middle.block737, %._crit_edge577.thread, %._crit_edge561.thread, %._crit_edge561, %._crit_edge577, %451, %396
  %506 = load float, ptr %18, align 4, !tbaa !10
  %507 = fpext float %506 to double
  %508 = call double @slamch_(ptr noundef nonnull @.str.12) #4
  %509 = fcmp ogt double %508, %507
  br i1 %509, label %510, label %513

510:                                              ; preds = %.loopexit
  %511 = load i64, ptr %2, align 8, !tbaa !5
  %512 = add nsw i64 %511, 1
  store i64 %512, ptr %23, align 8, !tbaa !5
  br label %513

513:                                              ; preds = %510, %.loopexit
  store float %.1, ptr %21, align 4, !tbaa !10
  br label %514

514:                                              ; preds = %513, %365, %.thread500
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #4
  ret i32 0
}

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

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

declare double @slamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

declare double @slantb_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare double @slangb_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!7, !7, i64 0}
!10 = !{!11, !11, i64 0}
!11 = !{!"float", !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = distinct !{!14, !13}
!15 = !{!16}
!16 = distinct !{!16, !17}
!17 = distinct !{!17, !"LVerDomain"}
!18 = !{!19}
!19 = distinct !{!19, !17}
!20 = distinct !{!20, !13, !21, !22}
!21 = !{!"llvm.loop.isvectorized", i32 1}
!22 = !{!"llvm.loop.unroll.runtime.disable"}
!23 = distinct !{!23, !24}
!24 = !{!"llvm.loop.unroll.disable"}
!25 = distinct !{!25, !13, !21}
!26 = distinct !{!26, !13}
!27 = !{!28}
!28 = distinct !{!28, !29}
!29 = distinct !{!29, !"LVerDomain"}
!30 = !{!31}
!31 = distinct !{!31, !29}
!32 = distinct !{!32, !13, !21, !22}
!33 = distinct !{!33, !24}
!34 = distinct !{!34, !13, !21}
!35 = distinct !{!35, !13}
!36 = distinct !{!36, !13}
!37 = distinct !{!37, !13}
!38 = distinct !{!38, !13}
!39 = !{!40}
!40 = distinct !{!40, !41}
!41 = distinct !{!41, !"LVerDomain"}
!42 = !{!43}
!43 = distinct !{!43, !41}
!44 = distinct !{!44, !13, !21, !22}
!45 = distinct !{!45, !24}
!46 = distinct !{!46, !13, !21}
!47 = distinct !{!47, !13}
!48 = distinct !{!48, !13, !21, !22}
!49 = distinct !{!49, !13, !22, !21}
!50 = !{!51}
!51 = distinct !{!51, !52}
!52 = distinct !{!52, !"LVerDomain"}
!53 = !{!54}
!54 = distinct !{!54, !52}
!55 = distinct !{!55, !13, !21, !22}
!56 = distinct !{!56, !24}
!57 = distinct !{!57, !13, !21}
!58 = distinct !{!58, !13}
!59 = distinct !{!59, !13, !21, !22}
!60 = distinct !{!60, !13, !22, !21}


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