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

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

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

127:                                              ; preds = %20
  %128 = load ptr, ptr %39, align 8, !tbaa !5
  %129 = load i64, ptr %128, align 8, !tbaa !9
  %130 = icmp eq i64 %129, -1
  br label %131

131:                                              ; preds = %127, %20
  %132 = phi i1 [ true, %20 ], [ %130, %127 ]
  %133 = zext i1 %132 to i32
  %134 = sext i32 %133 to i64
  store i64 %134, ptr %81, align 8, !tbaa !9
  %135 = load i64, ptr %83, align 8, !tbaa !9
  %136 = icmp ne i64 %135, 0
  br i1 %136, label %143, label %137

137:                                              ; preds = %131
  %138 = load ptr, ptr %22, align 8, !tbaa !5
  %139 = call i64 @lsame_(ptr noundef %138, ptr noundef @.str.2)
  %140 = icmp ne i64 %139, 0
  br i1 %140, label %143, label %141

141:                                              ; preds = %137
  %142 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -1, ptr %142, align 8, !tbaa !9
  br label %213

143:                                              ; preds = %137, %131
  %144 = load i64, ptr %80, align 8, !tbaa !9
  %145 = icmp ne i64 %144, 0
  br i1 %145, label %152, label %146

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

150:                                              ; preds = %146
  %151 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -2, ptr %151, align 8, !tbaa !9
  br label %212

152:                                              ; preds = %146, %143
  %153 = load i64, ptr %77, align 8, !tbaa !9
  %154 = icmp ne i64 %153, 0
  br i1 %154, label %164, label %155

155:                                              ; preds = %152
  %156 = load i64, ptr %73, align 8, !tbaa !9
  %157 = icmp ne i64 %156, 0
  br i1 %157, label %164, label %158

158:                                              ; preds = %155
  %159 = load i64, ptr %82, align 8, !tbaa !9
  %160 = icmp ne i64 %159, 0
  br i1 %160, label %164, label %161

161:                                              ; preds = %158
  %162 = load i64, ptr %72, align 8, !tbaa !9
  %163 = icmp ne i64 %162, 0
  br i1 %163, label %164, label %170

164:                                              ; preds = %161, %158, %155, %152
  %165 = load i64, ptr %80, align 8, !tbaa !9
  %166 = icmp ne i64 %165, 0
  br i1 %166, label %172, label %167

167:                                              ; preds = %164
  %168 = load i64, ptr %77, align 8, !tbaa !9
  %169 = icmp ne i64 %168, 0
  br i1 %169, label %172, label %170

170:                                              ; preds = %167, %161
  %171 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -4, ptr %171, align 8, !tbaa !9
  br label %211

172:                                              ; preds = %167, %164
  %173 = load ptr, ptr %26, align 8, !tbaa !5
  %174 = load i64, ptr %173, align 8, !tbaa !9
  %175 = icmp slt i64 %174, 0
  br i1 %175, label %176, label %178

176:                                              ; preds = %172
  %177 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -5, ptr %177, align 8, !tbaa !9
  br label %210

178:                                              ; preds = %172
  %179 = load ptr, ptr %28, align 8, !tbaa !5
  %180 = load i64, ptr %179, align 8, !tbaa !9
  %181 = load ptr, ptr %26, align 8, !tbaa !5
  %182 = load i64, ptr %181, align 8, !tbaa !9
  %183 = icmp sge i64 1, %182
  br i1 %183, label %184, label %185

184:                                              ; preds = %178
  br label %188

185:                                              ; preds = %178
  %186 = load ptr, ptr %26, align 8, !tbaa !5
  %187 = load i64, ptr %186, align 8, !tbaa !9
  br label %188

188:                                              ; preds = %185, %184
  %189 = phi i64 [ 1, %184 ], [ %187, %185 ]
  %190 = icmp slt i64 %180, %189
  br i1 %190, label %191, label %193

191:                                              ; preds = %188
  %192 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -7, ptr %192, align 8, !tbaa !9
  br label %209

193:                                              ; preds = %188
  %194 = load ptr, ptr %33, align 8, !tbaa !5
  %195 = load i64, ptr %194, align 8, !tbaa !9
  %196 = icmp slt i64 %195, 1
  br i1 %196, label %206, label %197

197:                                              ; preds = %193
  %198 = load i64, ptr %83, align 8, !tbaa !9
  %199 = icmp ne i64 %198, 0
  br i1 %199, label %200, label %208

200:                                              ; preds = %197
  %201 = load ptr, ptr %33, align 8, !tbaa !5
  %202 = load i64, ptr %201, align 8, !tbaa !9
  %203 = load ptr, ptr %26, align 8, !tbaa !5
  %204 = load i64, ptr %203, align 8, !tbaa !9
  %205 = icmp slt i64 %202, %204
  br i1 %205, label %206, label %208

206:                                              ; preds = %200, %193
  %207 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -12, ptr %207, align 8, !tbaa !9
  br label %208

208:                                              ; preds = %206, %200, %197
  br label %209

209:                                              ; preds = %208, %191
  br label %210

210:                                              ; preds = %209, %176
  br label %211

211:                                              ; preds = %210, %170
  br label %212

212:                                              ; preds = %211, %150
  br label %213

213:                                              ; preds = %212, %141
  %214 = load ptr, ptr %41, align 8, !tbaa !5
  %215 = load i64, ptr %214, align 8, !tbaa !9
  %216 = icmp eq i64 %215, 0
  br i1 %216, label %217, label %377

217:                                              ; preds = %213
  store i64 1, ptr %67, align 8, !tbaa !9
  %218 = load ptr, ptr %26, align 8, !tbaa !5
  %219 = load i64, ptr %218, align 8, !tbaa !9
  %220 = icmp eq i64 %219, 0
  br i1 %220, label %221, label %222

221:                                              ; preds = %217
  store i64 1, ptr %75, align 8, !tbaa !9
  store i64 1, ptr %62, align 8, !tbaa !9
  br label %349

222:                                              ; preds = %217
  %223 = load ptr, ptr %26, align 8, !tbaa !5
  %224 = load i64, ptr %223, align 8, !tbaa !9
  %225 = shl i64 %224, 1
  %226 = load ptr, ptr %26, align 8, !tbaa !5
  %227 = load i64, ptr %226, align 8, !tbaa !9
  %228 = load ptr, ptr %26, align 8, !tbaa !5
  %229 = load ptr, ptr %26, align 8, !tbaa !5
  %230 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef %228, ptr noundef @c__1, ptr noundef %229, ptr noundef @c__0)
  %231 = mul nsw i64 %227, %230
  %232 = add nsw i64 %225, %231
  store i64 %232, ptr %76, align 8, !tbaa !9
  %233 = load ptr, ptr %26, align 8, !tbaa !5
  %234 = load i64, ptr %233, align 8, !tbaa !9
  %235 = mul nsw i64 %234, 3
  store i64 %235, ptr %75, align 8, !tbaa !9
  %236 = load ptr, ptr %22, align 8, !tbaa !5
  %237 = load ptr, ptr %26, align 8, !tbaa !5
  %238 = load ptr, ptr %26, align 8, !tbaa !5
  %239 = load ptr, ptr %27, align 8, !tbaa !5
  %240 = load i64, ptr %43, align 8, !tbaa !9
  %241 = getelementptr inbounds float, ptr %239, i64 %240
  %242 = load ptr, ptr %28, align 8, !tbaa !5
  %243 = load ptr, ptr %30, align 8, !tbaa !5
  %244 = getelementptr inbounds float, ptr %243, i64 1
  %245 = load ptr, ptr %31, align 8, !tbaa !5
  %246 = getelementptr inbounds float, ptr %245, i64 1
  %247 = load ptr, ptr %32, align 8, !tbaa !5
  %248 = load i64, ptr %45, align 8, !tbaa !9
  %249 = getelementptr inbounds float, ptr %247, i64 %248
  %250 = load ptr, ptr %33, align 8, !tbaa !5
  %251 = load ptr, ptr %36, align 8, !tbaa !5
  %252 = getelementptr inbounds float, ptr %251, i64 1
  %253 = call i32 @shseqr_(ptr noundef @.str.1, ptr noundef %236, ptr noundef %237, ptr noundef @c__1, ptr noundef %238, ptr noundef %241, ptr noundef %242, ptr noundef %244, ptr noundef %246, ptr noundef %249, ptr noundef %250, ptr noundef %252, ptr noundef @c_n1, ptr noundef %65)
  %254 = load ptr, ptr %36, align 8, !tbaa !5
  %255 = getelementptr inbounds float, ptr %254, i64 1
  %256 = load float, ptr %255, align 4, !tbaa !11
  %257 = fptosi float %256 to i64
  store i64 %257, ptr %79, align 8, !tbaa !9
  %258 = load i64, ptr %83, align 8, !tbaa !9
  %259 = icmp ne i64 %258, 0
  br i1 %259, label %275, label %260

260:                                              ; preds = %222
  %261 = load i64, ptr %76, align 8, !tbaa !9
  store i64 %261, ptr %46, align 8, !tbaa !9
  %262 = load ptr, ptr %26, align 8, !tbaa !5
  %263 = load i64, ptr %262, align 8, !tbaa !9
  %264 = load i64, ptr %79, align 8, !tbaa !9
  %265 = add nsw i64 %263, %264
  store i64 %265, ptr %47, align 8, !tbaa !9
  %266 = load i64, ptr %46, align 8, !tbaa !9
  %267 = load i64, ptr %47, align 8, !tbaa !9
  %268 = icmp sge i64 %266, %267
  br i1 %268, label %269, label %271

269:                                              ; preds = %260
  %270 = load i64, ptr %46, align 8, !tbaa !9
  br label %273

271:                                              ; preds = %260
  %272 = load i64, ptr %47, align 8, !tbaa !9
  br label %273

273:                                              ; preds = %271, %269
  %274 = phi i64 [ %270, %269 ], [ %272, %271 ]
  store i64 %274, ptr %76, align 8, !tbaa !9
  br label %311

275:                                              ; preds = %222
  %276 = load i64, ptr %76, align 8, !tbaa !9
  store i64 %276, ptr %46, align 8, !tbaa !9
  %277 = load ptr, ptr %26, align 8, !tbaa !5
  %278 = load i64, ptr %277, align 8, !tbaa !9
  %279 = shl i64 %278, 1
  %280 = load ptr, ptr %26, align 8, !tbaa !5
  %281 = load i64, ptr %280, align 8, !tbaa !9
  %282 = sub nsw i64 %281, 1
  %283 = load ptr, ptr %26, align 8, !tbaa !5
  %284 = load ptr, ptr %26, align 8, !tbaa !5
  %285 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.7, ptr noundef @.str.6, ptr noundef %283, ptr noundef @c__1, ptr noundef %284, ptr noundef @c_n1)
  %286 = mul nsw i64 %282, %285
  %287 = add nsw i64 %279, %286
  store i64 %287, ptr %47, align 8, !tbaa !9
  %288 = load i64, ptr %46, align 8, !tbaa !9
  %289 = load i64, ptr %47, align 8, !tbaa !9
  %290 = icmp sge i64 %288, %289
  br i1 %290, label %291, label %293

291:                                              ; preds = %275
  %292 = load i64, ptr %46, align 8, !tbaa !9
  br label %295

293:                                              ; preds = %275
  %294 = load i64, ptr %47, align 8, !tbaa !9
  br label %295

295:                                              ; preds = %293, %291
  %296 = phi i64 [ %292, %291 ], [ %294, %293 ]
  store i64 %296, ptr %76, align 8, !tbaa !9
  %297 = load i64, ptr %76, align 8, !tbaa !9
  store i64 %297, ptr %46, align 8, !tbaa !9
  %298 = load ptr, ptr %26, align 8, !tbaa !5
  %299 = load i64, ptr %298, align 8, !tbaa !9
  %300 = load i64, ptr %79, align 8, !tbaa !9
  %301 = add nsw i64 %299, %300
  store i64 %301, ptr %47, align 8, !tbaa !9
  %302 = load i64, ptr %46, align 8, !tbaa !9
  %303 = load i64, ptr %47, align 8, !tbaa !9
  %304 = icmp sge i64 %302, %303
  br i1 %304, label %305, label %307

305:                                              ; preds = %295
  %306 = load i64, ptr %46, align 8, !tbaa !9
  br label %309

307:                                              ; preds = %295
  %308 = load i64, ptr %47, align 8, !tbaa !9
  br label %309

309:                                              ; preds = %307, %305
  %310 = phi i64 [ %306, %305 ], [ %308, %307 ]
  store i64 %310, ptr %76, align 8, !tbaa !9
  br label %311

311:                                              ; preds = %309, %273
  %312 = load i64, ptr %76, align 8, !tbaa !9
  store i64 %312, ptr %62, align 8, !tbaa !9
  %313 = load i64, ptr %77, align 8, !tbaa !9
  %314 = icmp ne i64 %313, 0
  br i1 %314, label %335, label %315

315:                                              ; preds = %311
  %316 = load i64, ptr %62, align 8, !tbaa !9
  store i64 %316, ptr %46, align 8, !tbaa !9
  %317 = load ptr, ptr %26, align 8, !tbaa !5
  %318 = load i64, ptr %317, align 8, !tbaa !9
  %319 = load ptr, ptr %26, align 8, !tbaa !5
  %320 = load i64, ptr %319, align 8, !tbaa !9
  %321 = load ptr, ptr %26, align 8, !tbaa !5
  %322 = load i64, ptr %321, align 8, !tbaa !9
  %323 = mul nsw i64 %320, %322
  %324 = sdiv i64 %323, 2
  %325 = add nsw i64 %318, %324
  store i64 %325, ptr %47, align 8, !tbaa !9
  %326 = load i64, ptr %46, align 8, !tbaa !9
  %327 = load i64, ptr %47, align 8, !tbaa !9
  %328 = icmp sge i64 %326, %327
  br i1 %328, label %329, label %331

329:                                              ; preds = %315
  %330 = load i64, ptr %46, align 8, !tbaa !9
  br label %333

331:                                              ; preds = %315
  %332 = load i64, ptr %47, align 8, !tbaa !9
  br label %333

333:                                              ; preds = %331, %329
  %334 = phi i64 [ %330, %329 ], [ %332, %331 ]
  store i64 %334, ptr %62, align 8, !tbaa !9
  br label %335

335:                                              ; preds = %333, %311
  %336 = load i64, ptr %82, align 8, !tbaa !9
  %337 = icmp ne i64 %336, 0
  br i1 %337, label %341, label %338

338:                                              ; preds = %335
  %339 = load i64, ptr %72, align 8, !tbaa !9
  %340 = icmp ne i64 %339, 0
  br i1 %340, label %341, label %348

341:                                              ; preds = %338, %335
  %342 = load ptr, ptr %26, align 8, !tbaa !5
  %343 = load i64, ptr %342, align 8, !tbaa !9
  %344 = load ptr, ptr %26, align 8, !tbaa !5
  %345 = load i64, ptr %344, align 8, !tbaa !9
  %346 = mul nsw i64 %343, %345
  %347 = sdiv i64 %346, 4
  store i64 %347, ptr %67, align 8, !tbaa !9
  br label %348

348:                                              ; preds = %341, %338
  br label %349

349:                                              ; preds = %348, %221
  %350 = load i64, ptr %67, align 8, !tbaa !9
  %351 = load ptr, ptr %38, align 8, !tbaa !5
  %352 = getelementptr inbounds i64, ptr %351, i64 1
  store i64 %350, ptr %352, align 8, !tbaa !9
  %353 = load i64, ptr %62, align 8, !tbaa !9
  %354 = sitofp i64 %353 to float
  %355 = load ptr, ptr %36, align 8, !tbaa !5
  %356 = getelementptr inbounds float, ptr %355, i64 1
  store float %354, ptr %356, align 4, !tbaa !11
  %357 = load ptr, ptr %37, align 8, !tbaa !5
  %358 = load i64, ptr %357, align 8, !tbaa !9
  %359 = load i64, ptr %75, align 8, !tbaa !9
  %360 = icmp slt i64 %358, %359
  br i1 %360, label %361, label %366

361:                                              ; preds = %349
  %362 = load i64, ptr %81, align 8, !tbaa !9
  %363 = icmp ne i64 %362, 0
  br i1 %363, label %366, label %364

364:                                              ; preds = %361
  %365 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -16, ptr %365, align 8, !tbaa !9
  br label %376

366:                                              ; preds = %361, %349
  %367 = load ptr, ptr %39, align 8, !tbaa !5
  %368 = load i64, ptr %367, align 8, !tbaa !9
  %369 = icmp slt i64 %368, 1
  br i1 %369, label %370, label %375

370:                                              ; preds = %366
  %371 = load i64, ptr %81, align 8, !tbaa !9
  %372 = icmp ne i64 %371, 0
  br i1 %372, label %375, label %373

373:                                              ; preds = %370
  %374 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -18, ptr %374, align 8, !tbaa !9
  br label %375

375:                                              ; preds = %373, %370, %366
  br label %376

376:                                              ; preds = %375, %364
  br label %377

377:                                              ; preds = %376, %213
  %378 = load ptr, ptr %41, align 8, !tbaa !5
  %379 = load i64, ptr %378, align 8, !tbaa !9
  %380 = icmp ne i64 %379, 0
  br i1 %380, label %381, label %386

381:                                              ; preds = %377
  %382 = load ptr, ptr %41, align 8, !tbaa !5
  %383 = load i64, ptr %382, align 8, !tbaa !9
  %384 = sub nsw i64 0, %383
  store i64 %384, ptr %46, align 8, !tbaa !9
  %385 = call i32 @xerbla_(ptr noundef @.str.8, ptr noundef %46)
  store i32 0, ptr %21, align 4
  store i32 1, ptr %84, align 4
  br label %1056

386:                                              ; preds = %377
  %387 = load ptr, ptr %26, align 8, !tbaa !5
  %388 = load i64, ptr %387, align 8, !tbaa !9
  %389 = icmp eq i64 %388, 0
  br i1 %389, label %390, label %392

390:                                              ; preds = %386
  %391 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 0, ptr %391, align 8, !tbaa !9
  store i32 0, ptr %21, align 4
  store i32 1, ptr %84, align 4
  br label %1056

392:                                              ; preds = %386
  %393 = call double @slamch_(ptr noundef @.str.9)
  %394 = fptrunc double %393 to float
  store float %394, ptr %56, align 4, !tbaa !11
  %395 = call double @slamch_(ptr noundef @.str.1)
  %396 = fptrunc double %395 to float
  store float %396, ptr %78, align 4, !tbaa !11
  %397 = load float, ptr %78, align 4, !tbaa !11
  %398 = fdiv float 1.000000e+00, %397
  store float %398, ptr %71, align 4, !tbaa !11
  %399 = call i32 @slabad_(ptr noundef %78, ptr noundef %71)
  %400 = load float, ptr %78, align 4, !tbaa !11
  %401 = fpext float %400 to double
  %402 = call double @sqrt(double noundef %401) #4
  %403 = load float, ptr %56, align 4, !tbaa !11
  %404 = fpext float %403 to double
  %405 = fdiv double %402, %404
  %406 = fptrunc double %405 to float
  store float %406, ptr %78, align 4, !tbaa !11
  %407 = load float, ptr %78, align 4, !tbaa !11
  %408 = fdiv float 1.000000e+00, %407
  store float %408, ptr %71, align 4, !tbaa !11
  %409 = load ptr, ptr %26, align 8, !tbaa !5
  %410 = load ptr, ptr %26, align 8, !tbaa !5
  %411 = load ptr, ptr %27, align 8, !tbaa !5
  %412 = load i64, ptr %43, align 8, !tbaa !9
  %413 = getelementptr inbounds float, ptr %411, i64 %412
  %414 = load ptr, ptr %28, align 8, !tbaa !5
  %415 = getelementptr inbounds [1 x float], ptr %55, i64 0, i64 0
  %416 = call double @slange_(ptr noundef @.str.10, ptr noundef %409, ptr noundef %410, ptr noundef %413, ptr noundef %414, ptr noundef %415)
  %417 = fptrunc double %416 to float
  store float %417, ptr %58, align 4, !tbaa !11
  store i64 0, ptr %69, align 8, !tbaa !9
  %418 = load float, ptr %58, align 4, !tbaa !11
  %419 = fcmp ogt float %418, 0.000000e+00
  br i1 %419, label %420, label %426

420:                                              ; preds = %392
  %421 = load float, ptr %58, align 4, !tbaa !11
  %422 = load float, ptr %78, align 4, !tbaa !11
  %423 = fcmp olt float %421, %422
  br i1 %423, label %424, label %426

424:                                              ; preds = %420
  store i64 1, ptr %69, align 8, !tbaa !9
  %425 = load float, ptr %78, align 4, !tbaa !11
  store float %425, ptr %70, align 4, !tbaa !11
  br label %433

426:                                              ; preds = %420, %392
  %427 = load float, ptr %58, align 4, !tbaa !11
  %428 = load float, ptr %71, align 4, !tbaa !11
  %429 = fcmp ogt float %427, %428
  br i1 %429, label %430, label %432

430:                                              ; preds = %426
  store i64 1, ptr %69, align 8, !tbaa !9
  %431 = load float, ptr %71, align 4, !tbaa !11
  store float %431, ptr %70, align 4, !tbaa !11
  br label %432

432:                                              ; preds = %430, %426
  br label %433

433:                                              ; preds = %432, %424
  %434 = load i64, ptr %69, align 8, !tbaa !9
  %435 = icmp ne i64 %434, 0
  br i1 %435, label %436, label %444

436:                                              ; preds = %433
  %437 = load ptr, ptr %26, align 8, !tbaa !5
  %438 = load ptr, ptr %26, align 8, !tbaa !5
  %439 = load ptr, ptr %27, align 8, !tbaa !5
  %440 = load i64, ptr %43, align 8, !tbaa !9
  %441 = getelementptr inbounds float, ptr %439, i64 %440
  %442 = load ptr, ptr %28, align 8, !tbaa !5
  %443 = call i32 @slascl_(ptr noundef @.str.11, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %58, ptr noundef %70, ptr noundef %437, ptr noundef %438, ptr noundef %441, ptr noundef %442, ptr noundef %59)
  br label %444

444:                                              ; preds = %436, %433
  store i64 1, ptr %57, align 8, !tbaa !9
  %445 = load ptr, ptr %26, align 8, !tbaa !5
  %446 = load ptr, ptr %27, align 8, !tbaa !5
  %447 = load i64, ptr %43, align 8, !tbaa !9
  %448 = getelementptr inbounds float, ptr %446, i64 %447
  %449 = load ptr, ptr %28, align 8, !tbaa !5
  %450 = load ptr, ptr %36, align 8, !tbaa !5
  %451 = load i64, ptr %57, align 8, !tbaa !9
  %452 = getelementptr inbounds float, ptr %450, i64 %451
  %453 = call i32 @sgebal_(ptr noundef @.str.9, ptr noundef %445, ptr noundef %448, ptr noundef %449, ptr noundef %54, ptr noundef %53, ptr noundef %452, ptr noundef %59)
  %454 = load ptr, ptr %26, align 8, !tbaa !5
  %455 = load i64, ptr %454, align 8, !tbaa !9
  %456 = load i64, ptr %57, align 8, !tbaa !9
  %457 = add nsw i64 %455, %456
  store i64 %457, ptr %60, align 8, !tbaa !9
  %458 = load ptr, ptr %26, align 8, !tbaa !5
  %459 = load i64, ptr %458, align 8, !tbaa !9
  %460 = load i64, ptr %60, align 8, !tbaa !9
  %461 = add nsw i64 %459, %460
  store i64 %461, ptr %61, align 8, !tbaa !9
  %462 = load ptr, ptr %37, align 8, !tbaa !5
  %463 = load i64, ptr %462, align 8, !tbaa !9
  %464 = load i64, ptr %61, align 8, !tbaa !9
  %465 = sub nsw i64 %463, %464
  %466 = add nsw i64 %465, 1
  store i64 %466, ptr %46, align 8, !tbaa !9
  %467 = load ptr, ptr %26, align 8, !tbaa !5
  %468 = load ptr, ptr %27, align 8, !tbaa !5
  %469 = load i64, ptr %43, align 8, !tbaa !9
  %470 = getelementptr inbounds float, ptr %468, i64 %469
  %471 = load ptr, ptr %28, align 8, !tbaa !5
  %472 = load ptr, ptr %36, align 8, !tbaa !5
  %473 = load i64, ptr %60, align 8, !tbaa !9
  %474 = getelementptr inbounds float, ptr %472, i64 %473
  %475 = load ptr, ptr %36, align 8, !tbaa !5
  %476 = load i64, ptr %61, align 8, !tbaa !9
  %477 = getelementptr inbounds float, ptr %475, i64 %476
  %478 = call i32 @sgehrd_(ptr noundef %467, ptr noundef %54, ptr noundef %53, ptr noundef %470, ptr noundef %471, ptr noundef %474, ptr noundef %477, ptr noundef %46, ptr noundef %59)
  %479 = load i64, ptr %83, align 8, !tbaa !9
  %480 = icmp ne i64 %479, 0
  br i1 %480, label %481, label %510

481:                                              ; preds = %444
  %482 = load ptr, ptr %26, align 8, !tbaa !5
  %483 = load ptr, ptr %26, align 8, !tbaa !5
  %484 = load ptr, ptr %27, align 8, !tbaa !5
  %485 = load i64, ptr %43, align 8, !tbaa !9
  %486 = getelementptr inbounds float, ptr %484, i64 %485
  %487 = load ptr, ptr %28, align 8, !tbaa !5
  %488 = load ptr, ptr %32, align 8, !tbaa !5
  %489 = load i64, ptr %45, align 8, !tbaa !9
  %490 = getelementptr inbounds float, ptr %488, i64 %489
  %491 = load ptr, ptr %33, align 8, !tbaa !5
  %492 = call i32 @slacpy_(ptr noundef @.str.12, ptr noundef %482, ptr noundef %483, ptr noundef %486, ptr noundef %487, ptr noundef %490, ptr noundef %491)
  %493 = load ptr, ptr %37, align 8, !tbaa !5
  %494 = load i64, ptr %493, align 8, !tbaa !9
  %495 = load i64, ptr %61, align 8, !tbaa !9
  %496 = sub nsw i64 %494, %495
  %497 = add nsw i64 %496, 1
  store i64 %497, ptr %46, align 8, !tbaa !9
  %498 = load ptr, ptr %26, align 8, !tbaa !5
  %499 = load ptr, ptr %32, align 8, !tbaa !5
  %500 = load i64, ptr %45, align 8, !tbaa !9
  %501 = getelementptr inbounds float, ptr %499, i64 %500
  %502 = load ptr, ptr %33, align 8, !tbaa !5
  %503 = load ptr, ptr %36, align 8, !tbaa !5
  %504 = load i64, ptr %60, align 8, !tbaa !9
  %505 = getelementptr inbounds float, ptr %503, i64 %504
  %506 = load ptr, ptr %36, align 8, !tbaa !5
  %507 = load i64, ptr %61, align 8, !tbaa !9
  %508 = getelementptr inbounds float, ptr %506, i64 %507
  %509 = call i32 @sorghr_(ptr noundef %498, ptr noundef %54, ptr noundef %53, ptr noundef %501, ptr noundef %502, ptr noundef %505, ptr noundef %508, ptr noundef %46, ptr noundef %59)
  br label %510

510:                                              ; preds = %481, %444
  %511 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 0, ptr %511, align 8, !tbaa !9
  %512 = load i64, ptr %60, align 8, !tbaa !9
  store i64 %512, ptr %61, align 8, !tbaa !9
  %513 = load ptr, ptr %37, align 8, !tbaa !5
  %514 = load i64, ptr %513, align 8, !tbaa !9
  %515 = load i64, ptr %61, align 8, !tbaa !9
  %516 = sub nsw i64 %514, %515
  %517 = add nsw i64 %516, 1
  store i64 %517, ptr %46, align 8, !tbaa !9
  %518 = load ptr, ptr %22, align 8, !tbaa !5
  %519 = load ptr, ptr %26, align 8, !tbaa !5
  %520 = load ptr, ptr %27, align 8, !tbaa !5
  %521 = load i64, ptr %43, align 8, !tbaa !9
  %522 = getelementptr inbounds float, ptr %520, i64 %521
  %523 = load ptr, ptr %28, align 8, !tbaa !5
  %524 = load ptr, ptr %30, align 8, !tbaa !5
  %525 = getelementptr inbounds float, ptr %524, i64 1
  %526 = load ptr, ptr %31, align 8, !tbaa !5
  %527 = getelementptr inbounds float, ptr %526, i64 1
  %528 = load ptr, ptr %32, align 8, !tbaa !5
  %529 = load i64, ptr %45, align 8, !tbaa !9
  %530 = getelementptr inbounds float, ptr %528, i64 %529
  %531 = load ptr, ptr %33, align 8, !tbaa !5
  %532 = load ptr, ptr %36, align 8, !tbaa !5
  %533 = load i64, ptr %61, align 8, !tbaa !9
  %534 = getelementptr inbounds float, ptr %532, i64 %533
  %535 = call i32 @shseqr_(ptr noundef @.str.1, ptr noundef %518, ptr noundef %519, ptr noundef %54, ptr noundef %53, ptr noundef %522, ptr noundef %523, ptr noundef %525, ptr noundef %527, ptr noundef %530, ptr noundef %531, ptr noundef %534, ptr noundef %46, ptr noundef %65)
  %536 = load i64, ptr %65, align 8, !tbaa !9
  %537 = icmp sgt i64 %536, 0
  br i1 %537, label %538, label %541

538:                                              ; preds = %510
  %539 = load i64, ptr %65, align 8, !tbaa !9
  %540 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 %539, ptr %540, align 8, !tbaa !9
  br label %541

541:                                              ; preds = %538, %510
  %542 = load i64, ptr %80, align 8, !tbaa !9
  %543 = icmp ne i64 %542, 0
  br i1 %543, label %544, label %664

544:                                              ; preds = %541
  %545 = load ptr, ptr %41, align 8, !tbaa !5
  %546 = load i64, ptr %545, align 8, !tbaa !9
  %547 = icmp eq i64 %546, 0
  br i1 %547, label %548, label %664

548:                                              ; preds = %544
  %549 = load i64, ptr %69, align 8, !tbaa !9
  %550 = icmp ne i64 %549, 0
  br i1 %550, label %551, label %562

551:                                              ; preds = %548
  %552 = load ptr, ptr %26, align 8, !tbaa !5
  %553 = load ptr, ptr %30, align 8, !tbaa !5
  %554 = getelementptr inbounds float, ptr %553, i64 1
  %555 = load ptr, ptr %26, align 8, !tbaa !5
  %556 = call i32 @slascl_(ptr noundef @.str.11, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %70, ptr noundef %58, ptr noundef %552, ptr noundef @c__1, ptr noundef %554, ptr noundef %555, ptr noundef %59)
  %557 = load ptr, ptr %26, align 8, !tbaa !5
  %558 = load ptr, ptr %31, align 8, !tbaa !5
  %559 = getelementptr inbounds float, ptr %558, i64 1
  %560 = load ptr, ptr %26, align 8, !tbaa !5
  %561 = call i32 @slascl_(ptr noundef @.str.11, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %70, ptr noundef %58, ptr noundef %557, ptr noundef @c__1, ptr noundef %559, ptr noundef %560, ptr noundef %59)
  br label %562

562:                                              ; preds = %551, %548
  %563 = load ptr, ptr %26, align 8, !tbaa !5
  %564 = load i64, ptr %563, align 8, !tbaa !9
  store i64 %564, ptr %46, align 8, !tbaa !9
  store i64 1, ptr %49, align 8, !tbaa !9
  br label %565

565:                                              ; preds = %581, %562
  %566 = load i64, ptr %49, align 8, !tbaa !9
  %567 = load i64, ptr %46, align 8, !tbaa !9
  %568 = icmp sle i64 %566, %567
  br i1 %568, label %569, label %584

569:                                              ; preds = %565
  %570 = load ptr, ptr %24, align 8, !tbaa !5
  %571 = load ptr, ptr %30, align 8, !tbaa !5
  %572 = load i64, ptr %49, align 8, !tbaa !9
  %573 = getelementptr inbounds float, ptr %571, i64 %572
  %574 = load ptr, ptr %31, align 8, !tbaa !5
  %575 = load i64, ptr %49, align 8, !tbaa !9
  %576 = getelementptr inbounds float, ptr %574, i64 %575
  %577 = call i64 (ptr, ptr, ...) %570(ptr noundef %573, ptr noundef %576)
  %578 = load ptr, ptr %40, align 8, !tbaa !5
  %579 = load i64, ptr %49, align 8, !tbaa !9
  %580 = getelementptr inbounds i64, ptr %578, i64 %579
  store i64 %577, ptr %580, align 8, !tbaa !9
  br label %581

581:                                              ; preds = %569
  %582 = load i64, ptr %49, align 8, !tbaa !9
  %583 = add nsw i64 %582, 1
  store i64 %583, ptr %49, align 8, !tbaa !9
  br label %565, !llvm.loop !13

584:                                              ; preds = %565
  %585 = load ptr, ptr %37, align 8, !tbaa !5
  %586 = load i64, ptr %585, align 8, !tbaa !9
  %587 = load i64, ptr %61, align 8, !tbaa !9
  %588 = sub nsw i64 %586, %587
  %589 = add nsw i64 %588, 1
  store i64 %589, ptr %46, align 8, !tbaa !9
  %590 = load ptr, ptr %25, align 8, !tbaa !5
  %591 = load ptr, ptr %22, align 8, !tbaa !5
  %592 = load ptr, ptr %40, align 8, !tbaa !5
  %593 = getelementptr inbounds i64, ptr %592, i64 1
  %594 = load ptr, ptr %26, align 8, !tbaa !5
  %595 = load ptr, ptr %27, align 8, !tbaa !5
  %596 = load i64, ptr %43, align 8, !tbaa !9
  %597 = getelementptr inbounds float, ptr %595, i64 %596
  %598 = load ptr, ptr %28, align 8, !tbaa !5
  %599 = load ptr, ptr %32, align 8, !tbaa !5
  %600 = load i64, ptr %45, align 8, !tbaa !9
  %601 = getelementptr inbounds float, ptr %599, i64 %600
  %602 = load ptr, ptr %33, align 8, !tbaa !5
  %603 = load ptr, ptr %30, align 8, !tbaa !5
  %604 = getelementptr inbounds float, ptr %603, i64 1
  %605 = load ptr, ptr %31, align 8, !tbaa !5
  %606 = getelementptr inbounds float, ptr %605, i64 1
  %607 = load ptr, ptr %29, align 8, !tbaa !5
  %608 = load ptr, ptr %34, align 8, !tbaa !5
  %609 = load ptr, ptr %35, align 8, !tbaa !5
  %610 = load ptr, ptr %36, align 8, !tbaa !5
  %611 = load i64, ptr %61, align 8, !tbaa !9
  %612 = getelementptr inbounds float, ptr %610, i64 %611
  %613 = load ptr, ptr %38, align 8, !tbaa !5
  %614 = getelementptr inbounds i64, ptr %613, i64 1
  %615 = load ptr, ptr %39, align 8, !tbaa !5
  %616 = call i32 @strsen_(ptr noundef %590, ptr noundef %591, ptr noundef %593, ptr noundef %594, ptr noundef %597, ptr noundef %598, ptr noundef %601, ptr noundef %602, ptr noundef %604, ptr noundef %606, ptr noundef %607, ptr noundef %608, ptr noundef %609, ptr noundef %612, ptr noundef %46, ptr noundef %614, ptr noundef %615, ptr noundef %64)
  %617 = load i64, ptr %77, align 8, !tbaa !9
  %618 = icmp ne i64 %617, 0
  br i1 %618, label %642, label %619

619:                                              ; preds = %584
  %620 = load i64, ptr %76, align 8, !tbaa !9
  store i64 %620, ptr %46, align 8, !tbaa !9
  %621 = load ptr, ptr %26, align 8, !tbaa !5
  %622 = load i64, ptr %621, align 8, !tbaa !9
  %623 = load ptr, ptr %29, align 8, !tbaa !5
  %624 = load i64, ptr %623, align 8, !tbaa !9
  %625 = shl i64 %624, 1
  %626 = load ptr, ptr %26, align 8, !tbaa !5
  %627 = load i64, ptr %626, align 8, !tbaa !9
  %628 = load ptr, ptr %29, align 8, !tbaa !5
  %629 = load i64, ptr %628, align 8, !tbaa !9
  %630 = sub nsw i64 %627, %629
  %631 = mul nsw i64 %625, %630
  %632 = add nsw i64 %622, %631
  store i64 %632, ptr %47, align 8, !tbaa !9
  %633 = load i64, ptr %46, align 8, !tbaa !9
  %634 = load i64, ptr %47, align 8, !tbaa !9
  %635 = icmp sge i64 %633, %634
  br i1 %635, label %636, label %638

636:                                              ; preds = %619
  %637 = load i64, ptr %46, align 8, !tbaa !9
  br label %640

638:                                              ; preds = %619
  %639 = load i64, ptr %47, align 8, !tbaa !9
  br label %640

640:                                              ; preds = %638, %636
  %641 = phi i64 [ %637, %636 ], [ %639, %638 ]
  store i64 %641, ptr %76, align 8, !tbaa !9
  br label %642

642:                                              ; preds = %640, %584
  %643 = load i64, ptr %64, align 8, !tbaa !9
  %644 = icmp eq i64 %643, -15
  br i1 %644, label %645, label %647

645:                                              ; preds = %642
  %646 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -16, ptr %646, align 8, !tbaa !9
  br label %663

647:                                              ; preds = %642
  %648 = load i64, ptr %64, align 8, !tbaa !9
  %649 = icmp eq i64 %648, -17
  br i1 %649, label %650, label %652

650:                                              ; preds = %647
  %651 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -18, ptr %651, align 8, !tbaa !9
  br label %662

652:                                              ; preds = %647
  %653 = load i64, ptr %64, align 8, !tbaa !9
  %654 = icmp sgt i64 %653, 0
  br i1 %654, label %655, label %661

655:                                              ; preds = %652
  %656 = load i64, ptr %64, align 8, !tbaa !9
  %657 = load ptr, ptr %26, align 8, !tbaa !5
  %658 = load i64, ptr %657, align 8, !tbaa !9
  %659 = add nsw i64 %656, %658
  %660 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 %659, ptr %660, align 8, !tbaa !9
  br label %661

661:                                              ; preds = %655, %652
  br label %662

662:                                              ; preds = %661, %650
  br label %663

663:                                              ; preds = %662, %645
  br label %664

664:                                              ; preds = %663, %544, %541
  %665 = load i64, ptr %83, align 8, !tbaa !9
  %666 = icmp ne i64 %665, 0
  br i1 %666, label %667, label %678

667:                                              ; preds = %664
  %668 = load ptr, ptr %26, align 8, !tbaa !5
  %669 = load ptr, ptr %36, align 8, !tbaa !5
  %670 = load i64, ptr %57, align 8, !tbaa !9
  %671 = getelementptr inbounds float, ptr %669, i64 %670
  %672 = load ptr, ptr %26, align 8, !tbaa !5
  %673 = load ptr, ptr %32, align 8, !tbaa !5
  %674 = load i64, ptr %45, align 8, !tbaa !9
  %675 = getelementptr inbounds float, ptr %673, i64 %674
  %676 = load ptr, ptr %33, align 8, !tbaa !5
  %677 = call i32 @sgebak_(ptr noundef @.str.9, ptr noundef @.str.13, ptr noundef %668, ptr noundef %54, ptr noundef %53, ptr noundef %671, ptr noundef %672, ptr noundef %675, ptr noundef %676, ptr noundef %59)
  br label %678

678:                                              ; preds = %667, %664
  %679 = load i64, ptr %69, align 8, !tbaa !9
  %680 = icmp ne i64 %679, 0
  br i1 %680, label %681, label %942

681:                                              ; preds = %678
  %682 = load ptr, ptr %26, align 8, !tbaa !5
  %683 = load ptr, ptr %26, align 8, !tbaa !5
  %684 = load ptr, ptr %27, align 8, !tbaa !5
  %685 = load i64, ptr %43, align 8, !tbaa !9
  %686 = getelementptr inbounds float, ptr %684, i64 %685
  %687 = load ptr, ptr %28, align 8, !tbaa !5
  %688 = call i32 @slascl_(ptr noundef @.str.14, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %70, ptr noundef %58, ptr noundef %682, ptr noundef %683, ptr noundef %686, ptr noundef %687, ptr noundef %59)
  %689 = load ptr, ptr %28, align 8, !tbaa !5
  %690 = load i64, ptr %689, align 8, !tbaa !9
  %691 = add nsw i64 %690, 1
  store i64 %691, ptr %46, align 8, !tbaa !9
  %692 = load ptr, ptr %26, align 8, !tbaa !5
  %693 = load ptr, ptr %27, align 8, !tbaa !5
  %694 = load i64, ptr %43, align 8, !tbaa !9
  %695 = getelementptr inbounds float, ptr %693, i64 %694
  %696 = load ptr, ptr %30, align 8, !tbaa !5
  %697 = getelementptr inbounds float, ptr %696, i64 1
  %698 = call i32 @f2c_scopy(ptr noundef %692, ptr noundef %695, ptr noundef %46, ptr noundef %697, ptr noundef @c__1)
  %699 = load i64, ptr %82, align 8, !tbaa !9
  %700 = icmp ne i64 %699, 0
  br i1 %700, label %704, label %701

701:                                              ; preds = %681
  %702 = load i64, ptr %72, align 8, !tbaa !9
  %703 = icmp ne i64 %702, 0
  br i1 %703, label %704, label %717

704:                                              ; preds = %701, %681
  %705 = load ptr, ptr %41, align 8, !tbaa !5
  %706 = load i64, ptr %705, align 8, !tbaa !9
  %707 = icmp eq i64 %706, 0
  br i1 %707, label %708, label %717

708:                                              ; preds = %704
  %709 = load ptr, ptr %35, align 8, !tbaa !5
  %710 = load float, ptr %709, align 4, !tbaa !11
  %711 = getelementptr inbounds [1 x float], ptr %55, i64 0, i64 0
  store float %710, ptr %711, align 4, !tbaa !11
  %712 = getelementptr inbounds [1 x float], ptr %55, i64 0, i64 0
  %713 = call i32 @slascl_(ptr noundef @.str.11, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %70, ptr noundef %58, ptr noundef @c__1, ptr noundef @c__1, ptr noundef %712, ptr noundef @c__1, ptr noundef %59)
  %714 = getelementptr inbounds [1 x float], ptr %55, i64 0, i64 0
  %715 = load float, ptr %714, align 4, !tbaa !11
  %716 = load ptr, ptr %35, align 8, !tbaa !5
  store float %715, ptr %716, align 4, !tbaa !11
  br label %717

717:                                              ; preds = %708, %704, %701
  %718 = load float, ptr %70, align 4, !tbaa !11
  %719 = load float, ptr %78, align 4, !tbaa !11
  %720 = fcmp oeq float %718, %719
  br i1 %720, label %721, label %921

721:                                              ; preds = %717
  %722 = load i64, ptr %65, align 8, !tbaa !9
  %723 = icmp sgt i64 %722, 0
  br i1 %723, label %724, label %735

724:                                              ; preds = %721
  %725 = load i64, ptr %65, align 8, !tbaa !9
  %726 = add nsw i64 %725, 1
  store i64 %726, ptr %50, align 8, !tbaa !9
  %727 = load i64, ptr %53, align 8, !tbaa !9
  %728 = sub nsw i64 %727, 1
  store i64 %728, ptr %51, align 8, !tbaa !9
  %729 = load i64, ptr %54, align 8, !tbaa !9
  %730 = sub nsw i64 %729, 1
  store i64 %730, ptr %46, align 8, !tbaa !9
  %731 = load ptr, ptr %31, align 8, !tbaa !5
  %732 = getelementptr inbounds float, ptr %731, i64 1
  %733 = load ptr, ptr %26, align 8, !tbaa !5
  %734 = call i32 @slascl_(ptr noundef @.str.11, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %70, ptr noundef %58, ptr noundef %46, ptr noundef @c__1, ptr noundef %732, ptr noundef %733, ptr noundef %59)
  br label %747

735:                                              ; preds = %721
  %736 = load i64, ptr %80, align 8, !tbaa !9
  %737 = icmp ne i64 %736, 0
  br i1 %737, label %738, label %742

738:                                              ; preds = %735
  store i64 1, ptr %50, align 8, !tbaa !9
  %739 = load ptr, ptr %26, align 8, !tbaa !5
  %740 = load i64, ptr %739, align 8, !tbaa !9
  %741 = sub nsw i64 %740, 1
  store i64 %741, ptr %51, align 8, !tbaa !9
  br label %746

742:                                              ; preds = %735
  %743 = load i64, ptr %54, align 8, !tbaa !9
  store i64 %743, ptr %50, align 8, !tbaa !9
  %744 = load i64, ptr %53, align 8, !tbaa !9
  %745 = sub nsw i64 %744, 1
  store i64 %745, ptr %51, align 8, !tbaa !9
  br label %746

746:                                              ; preds = %742, %738
  br label %747

747:                                              ; preds = %746, %724
  %748 = load i64, ptr %50, align 8, !tbaa !9
  %749 = sub nsw i64 %748, 1
  store i64 %749, ptr %63, align 8, !tbaa !9
  %750 = load i64, ptr %51, align 8, !tbaa !9
  store i64 %750, ptr %46, align 8, !tbaa !9
  %751 = load i64, ptr %50, align 8, !tbaa !9
  store i64 %751, ptr %49, align 8, !tbaa !9
  br label %752

752:                                              ; preds = %917, %747
  %753 = load i64, ptr %49, align 8, !tbaa !9
  %754 = load i64, ptr %46, align 8, !tbaa !9
  %755 = icmp sle i64 %753, %754
  br i1 %755, label %756, label %920

756:                                              ; preds = %752
  %757 = load i64, ptr %49, align 8, !tbaa !9
  %758 = load i64, ptr %63, align 8, !tbaa !9
  %759 = icmp slt i64 %757, %758
  br i1 %759, label %760, label %761

760:                                              ; preds = %756
  br label %916

761:                                              ; preds = %756
  %762 = load ptr, ptr %31, align 8, !tbaa !5
  %763 = load i64, ptr %49, align 8, !tbaa !9
  %764 = getelementptr inbounds float, ptr %762, i64 %763
  %765 = load float, ptr %764, align 4, !tbaa !11
  %766 = fcmp oeq float %765, 0.000000e+00
  br i1 %766, label %767, label %770

767:                                              ; preds = %761
  %768 = load i64, ptr %49, align 8, !tbaa !9
  %769 = add nsw i64 %768, 1
  store i64 %769, ptr %63, align 8, !tbaa !9
  br label %915

770:                                              ; preds = %761
  %771 = load ptr, ptr %27, align 8, !tbaa !5
  %772 = load i64, ptr %49, align 8, !tbaa !9
  %773 = add nsw i64 %772, 1
  %774 = load i64, ptr %49, align 8, !tbaa !9
  %775 = load i64, ptr %42, align 8, !tbaa !9
  %776 = mul nsw i64 %774, %775
  %777 = add nsw i64 %773, %776
  %778 = getelementptr inbounds float, ptr %771, i64 %777
  %779 = load float, ptr %778, align 4, !tbaa !11
  %780 = fcmp oeq float %779, 0.000000e+00
  br i1 %780, label %781, label %789

781:                                              ; preds = %770
  %782 = load ptr, ptr %31, align 8, !tbaa !5
  %783 = load i64, ptr %49, align 8, !tbaa !9
  %784 = getelementptr inbounds float, ptr %782, i64 %783
  store float 0.000000e+00, ptr %784, align 4, !tbaa !11
  %785 = load ptr, ptr %31, align 8, !tbaa !5
  %786 = load i64, ptr %49, align 8, !tbaa !9
  %787 = add nsw i64 %786, 1
  %788 = getelementptr inbounds float, ptr %785, i64 %787
  store float 0.000000e+00, ptr %788, align 4, !tbaa !11
  br label %912

789:                                              ; preds = %770
  %790 = load ptr, ptr %27, align 8, !tbaa !5
  %791 = load i64, ptr %49, align 8, !tbaa !9
  %792 = add nsw i64 %791, 1
  %793 = load i64, ptr %49, align 8, !tbaa !9
  %794 = load i64, ptr %42, align 8, !tbaa !9
  %795 = mul nsw i64 %793, %794
  %796 = add nsw i64 %792, %795
  %797 = getelementptr inbounds float, ptr %790, i64 %796
  %798 = load float, ptr %797, align 4, !tbaa !11
  %799 = fcmp une float %798, 0.000000e+00
  br i1 %799, label %800, label %911

800:                                              ; preds = %789
  %801 = load ptr, ptr %27, align 8, !tbaa !5
  %802 = load i64, ptr %49, align 8, !tbaa !9
  %803 = load i64, ptr %49, align 8, !tbaa !9
  %804 = add nsw i64 %803, 1
  %805 = load i64, ptr %42, align 8, !tbaa !9
  %806 = mul nsw i64 %804, %805
  %807 = add nsw i64 %802, %806
  %808 = getelementptr inbounds float, ptr %801, i64 %807
  %809 = load float, ptr %808, align 4, !tbaa !11
  %810 = fcmp oeq float %809, 0.000000e+00
  br i1 %810, label %811, label %911

811:                                              ; preds = %800
  %812 = load ptr, ptr %31, align 8, !tbaa !5
  %813 = load i64, ptr %49, align 8, !tbaa !9
  %814 = getelementptr inbounds float, ptr %812, i64 %813
  store float 0.000000e+00, ptr %814, align 4, !tbaa !11
  %815 = load ptr, ptr %31, align 8, !tbaa !5
  %816 = load i64, ptr %49, align 8, !tbaa !9
  %817 = add nsw i64 %816, 1
  %818 = getelementptr inbounds float, ptr %815, i64 %817
  store float 0.000000e+00, ptr %818, align 4, !tbaa !11
  %819 = load i64, ptr %49, align 8, !tbaa !9
  %820 = icmp sgt i64 %819, 1
  br i1 %820, label %821, label %838

821:                                              ; preds = %811
  %822 = load i64, ptr %49, align 8, !tbaa !9
  %823 = sub nsw i64 %822, 1
  store i64 %823, ptr %47, align 8, !tbaa !9
  %824 = load ptr, ptr %27, align 8, !tbaa !5
  %825 = load i64, ptr %49, align 8, !tbaa !9
  %826 = load i64, ptr %42, align 8, !tbaa !9
  %827 = mul nsw i64 %825, %826
  %828 = add nsw i64 %827, 1
  %829 = getelementptr inbounds float, ptr %824, i64 %828
  %830 = load ptr, ptr %27, align 8, !tbaa !5
  %831 = load i64, ptr %49, align 8, !tbaa !9
  %832 = add nsw i64 %831, 1
  %833 = load i64, ptr %42, align 8, !tbaa !9
  %834 = mul nsw i64 %832, %833
  %835 = add nsw i64 %834, 1
  %836 = getelementptr inbounds float, ptr %830, i64 %835
  %837 = call i32 @f2c_sswap(ptr noundef %47, ptr noundef %829, ptr noundef @c__1, ptr noundef %836, ptr noundef @c__1)
  br label %838

838:                                              ; preds = %821, %811
  %839 = load ptr, ptr %26, align 8, !tbaa !5
  %840 = load i64, ptr %839, align 8, !tbaa !9
  %841 = load i64, ptr %49, align 8, !tbaa !9
  %842 = add nsw i64 %841, 1
  %843 = icmp sgt i64 %840, %842
  br i1 %843, label %844, label %870

844:                                              ; preds = %838
  %845 = load ptr, ptr %26, align 8, !tbaa !5
  %846 = load i64, ptr %845, align 8, !tbaa !9
  %847 = load i64, ptr %49, align 8, !tbaa !9
  %848 = sub nsw i64 %846, %847
  %849 = sub nsw i64 %848, 1
  store i64 %849, ptr %47, align 8, !tbaa !9
  %850 = load ptr, ptr %27, align 8, !tbaa !5
  %851 = load i64, ptr %49, align 8, !tbaa !9
  %852 = load i64, ptr %49, align 8, !tbaa !9
  %853 = add nsw i64 %852, 2
  %854 = load i64, ptr %42, align 8, !tbaa !9
  %855 = mul nsw i64 %853, %854
  %856 = add nsw i64 %851, %855
  %857 = getelementptr inbounds float, ptr %850, i64 %856
  %858 = load ptr, ptr %28, align 8, !tbaa !5
  %859 = load ptr, ptr %27, align 8, !tbaa !5
  %860 = load i64, ptr %49, align 8, !tbaa !9
  %861 = add nsw i64 %860, 1
  %862 = load i64, ptr %49, align 8, !tbaa !9
  %863 = add nsw i64 %862, 2
  %864 = load i64, ptr %42, align 8, !tbaa !9
  %865 = mul nsw i64 %863, %864
  %866 = add nsw i64 %861, %865
  %867 = getelementptr inbounds float, ptr %859, i64 %866
  %868 = load ptr, ptr %28, align 8, !tbaa !5
  %869 = call i32 @f2c_sswap(ptr noundef %47, ptr noundef %857, ptr noundef %858, ptr noundef %867, ptr noundef %868)
  br label %870

870:                                              ; preds = %844, %838
  %871 = load ptr, ptr %26, align 8, !tbaa !5
  %872 = load ptr, ptr %32, align 8, !tbaa !5
  %873 = load i64, ptr %49, align 8, !tbaa !9
  %874 = load i64, ptr %44, align 8, !tbaa !9
  %875 = mul nsw i64 %873, %874
  %876 = add nsw i64 %875, 1
  %877 = getelementptr inbounds float, ptr %872, i64 %876
  %878 = load ptr, ptr %32, align 8, !tbaa !5
  %879 = load i64, ptr %49, align 8, !tbaa !9
  %880 = add nsw i64 %879, 1
  %881 = load i64, ptr %44, align 8, !tbaa !9
  %882 = mul nsw i64 %880, %881
  %883 = add nsw i64 %882, 1
  %884 = getelementptr inbounds float, ptr %878, i64 %883
  %885 = call i32 @f2c_sswap(ptr noundef %871, ptr noundef %877, ptr noundef @c__1, ptr noundef %884, ptr noundef @c__1)
  %886 = load ptr, ptr %27, align 8, !tbaa !5
  %887 = load i64, ptr %49, align 8, !tbaa !9
  %888 = add nsw i64 %887, 1
  %889 = load i64, ptr %49, align 8, !tbaa !9
  %890 = load i64, ptr %42, align 8, !tbaa !9
  %891 = mul nsw i64 %889, %890
  %892 = add nsw i64 %888, %891
  %893 = getelementptr inbounds float, ptr %886, i64 %892
  %894 = load float, ptr %893, align 4, !tbaa !11
  %895 = load ptr, ptr %27, align 8, !tbaa !5
  %896 = load i64, ptr %49, align 8, !tbaa !9
  %897 = load i64, ptr %49, align 8, !tbaa !9
  %898 = add nsw i64 %897, 1
  %899 = load i64, ptr %42, align 8, !tbaa !9
  %900 = mul nsw i64 %898, %899
  %901 = add nsw i64 %896, %900
  %902 = getelementptr inbounds float, ptr %895, i64 %901
  store float %894, ptr %902, align 4, !tbaa !11
  %903 = load ptr, ptr %27, align 8, !tbaa !5
  %904 = load i64, ptr %49, align 8, !tbaa !9
  %905 = add nsw i64 %904, 1
  %906 = load i64, ptr %49, align 8, !tbaa !9
  %907 = load i64, ptr %42, align 8, !tbaa !9
  %908 = mul nsw i64 %906, %907
  %909 = add nsw i64 %905, %908
  %910 = getelementptr inbounds float, ptr %903, i64 %909
  store float 0.000000e+00, ptr %910, align 4, !tbaa !11
  br label %911

911:                                              ; preds = %870, %800, %789
  br label %912

912:                                              ; preds = %911, %781
  %913 = load i64, ptr %49, align 8, !tbaa !9
  %914 = add nsw i64 %913, 2
  store i64 %914, ptr %63, align 8, !tbaa !9
  br label %915

915:                                              ; preds = %912, %767
  br label %916

916:                                              ; preds = %915, %760
  br label %917

917:                                              ; preds = %916
  %918 = load i64, ptr %49, align 8, !tbaa !9
  %919 = add nsw i64 %918, 1
  store i64 %919, ptr %49, align 8, !tbaa !9
  br label %752, !llvm.loop !15

920:                                              ; preds = %752
  br label %921

921:                                              ; preds = %920, %717
  %922 = load ptr, ptr %26, align 8, !tbaa !5
  %923 = load i64, ptr %922, align 8, !tbaa !9
  %924 = load i64, ptr %65, align 8, !tbaa !9
  %925 = sub nsw i64 %923, %924
  store i64 %925, ptr %46, align 8, !tbaa !9
  %926 = load ptr, ptr %26, align 8, !tbaa !5
  %927 = load i64, ptr %926, align 8, !tbaa !9
  %928 = load i64, ptr %65, align 8, !tbaa !9
  %929 = sub nsw i64 %927, %928
  store i64 %929, ptr %48, align 8, !tbaa !9
  %930 = load i64, ptr %48, align 8, !tbaa !9
  %931 = icmp sge i64 %930, 1
  br i1 %931, label %932, label %934

932:                                              ; preds = %921
  %933 = load i64, ptr %48, align 8, !tbaa !9
  br label %935

934:                                              ; preds = %921
  br label %935

935:                                              ; preds = %934, %932
  %936 = phi i64 [ %933, %932 ], [ 1, %934 ]
  store i64 %936, ptr %47, align 8, !tbaa !9
  %937 = load ptr, ptr %31, align 8, !tbaa !5
  %938 = load i64, ptr %65, align 8, !tbaa !9
  %939 = add nsw i64 %938, 1
  %940 = getelementptr inbounds float, ptr %937, i64 %939
  %941 = call i32 @slascl_(ptr noundef @.str.11, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %70, ptr noundef %58, ptr noundef %46, ptr noundef @c__1, ptr noundef %940, ptr noundef %47, ptr noundef %59)
  br label %942

942:                                              ; preds = %935, %678
  %943 = load i64, ptr %80, align 8, !tbaa !9
  %944 = icmp ne i64 %943, 0
  br i1 %944, label %945, label %1031

945:                                              ; preds = %942
  %946 = load ptr, ptr %41, align 8, !tbaa !5
  %947 = load i64, ptr %946, align 8, !tbaa !9
  %948 = icmp eq i64 %947, 0
  br i1 %948, label %949, label %1031

949:                                              ; preds = %945
  store i64 1, ptr %74, align 8, !tbaa !9
  store i64 1, ptr %68, align 8, !tbaa !9
  %950 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 0, ptr %950, align 8, !tbaa !9
  store i64 0, ptr %52, align 8, !tbaa !9
  %951 = load ptr, ptr %26, align 8, !tbaa !5
  %952 = load i64, ptr %951, align 8, !tbaa !9
  store i64 %952, ptr %46, align 8, !tbaa !9
  store i64 1, ptr %49, align 8, !tbaa !9
  br label %953

953:                                              ; preds = %1027, %949
  %954 = load i64, ptr %49, align 8, !tbaa !9
  %955 = load i64, ptr %46, align 8, !tbaa !9
  %956 = icmp sle i64 %954, %955
  br i1 %956, label %957, label %1030

957:                                              ; preds = %953
  %958 = load ptr, ptr %24, align 8, !tbaa !5
  %959 = load ptr, ptr %30, align 8, !tbaa !5
  %960 = load i64, ptr %49, align 8, !tbaa !9
  %961 = getelementptr inbounds float, ptr %959, i64 %960
  %962 = load ptr, ptr %31, align 8, !tbaa !5
  %963 = load i64, ptr %49, align 8, !tbaa !9
  %964 = getelementptr inbounds float, ptr %962, i64 %963
  %965 = call i64 (ptr, ptr, ...) %958(ptr noundef %961, ptr noundef %964)
  store i64 %965, ptr %66, align 8, !tbaa !9
  %966 = load ptr, ptr %31, align 8, !tbaa !5
  %967 = load i64, ptr %49, align 8, !tbaa !9
  %968 = getelementptr inbounds float, ptr %966, i64 %967
  %969 = load float, ptr %968, align 4, !tbaa !11
  %970 = fcmp oeq float %969, 0.000000e+00
  br i1 %970, label %971, label %990

971:                                              ; preds = %957
  %972 = load i64, ptr %66, align 8, !tbaa !9
  %973 = icmp ne i64 %972, 0
  br i1 %973, label %974, label %978

974:                                              ; preds = %971
  %975 = load ptr, ptr %29, align 8, !tbaa !5
  %976 = load i64, ptr %975, align 8, !tbaa !9
  %977 = add nsw i64 %976, 1
  store i64 %977, ptr %975, align 8, !tbaa !9
  br label %978

978:                                              ; preds = %974, %971
  store i64 0, ptr %52, align 8, !tbaa !9
  %979 = load i64, ptr %66, align 8, !tbaa !9
  %980 = icmp ne i64 %979, 0
  br i1 %980, label %981, label %989

981:                                              ; preds = %978
  %982 = load i64, ptr %74, align 8, !tbaa !9
  %983 = icmp ne i64 %982, 0
  br i1 %983, label %989, label %984

984:                                              ; preds = %981
  %985 = load ptr, ptr %26, align 8, !tbaa !5
  %986 = load i64, ptr %985, align 8, !tbaa !9
  %987 = add nsw i64 %986, 2
  %988 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 %987, ptr %988, align 8, !tbaa !9
  br label %989

989:                                              ; preds = %984, %981, %978
  br label %1024

990:                                              ; preds = %957
  %991 = load i64, ptr %52, align 8, !tbaa !9
  %992 = icmp eq i64 %991, 1
  br i1 %992, label %993, label %1022

993:                                              ; preds = %990
  %994 = load i64, ptr %66, align 8, !tbaa !9
  %995 = icmp ne i64 %994, 0
  br i1 %995, label %999, label %996

996:                                              ; preds = %993
  %997 = load i64, ptr %74, align 8, !tbaa !9
  %998 = icmp ne i64 %997, 0
  br label %999

999:                                              ; preds = %996, %993
  %1000 = phi i1 [ true, %993 ], [ %998, %996 ]
  %1001 = zext i1 %1000 to i32
  %1002 = sext i32 %1001 to i64
  store i64 %1002, ptr %66, align 8, !tbaa !9
  %1003 = load i64, ptr %66, align 8, !tbaa !9
  store i64 %1003, ptr %74, align 8, !tbaa !9
  %1004 = load i64, ptr %66, align 8, !tbaa !9
  %1005 = icmp ne i64 %1004, 0
  br i1 %1005, label %1006, label %1010

1006:                                             ; preds = %999
  %1007 = load ptr, ptr %29, align 8, !tbaa !5
  %1008 = load i64, ptr %1007, align 8, !tbaa !9
  %1009 = add nsw i64 %1008, 2
  store i64 %1009, ptr %1007, align 8, !tbaa !9
  br label %1010

1010:                                             ; preds = %1006, %999
  store i64 -1, ptr %52, align 8, !tbaa !9
  %1011 = load i64, ptr %66, align 8, !tbaa !9
  %1012 = icmp ne i64 %1011, 0
  br i1 %1012, label %1013, label %1021

1013:                                             ; preds = %1010
  %1014 = load i64, ptr %68, align 8, !tbaa !9
  %1015 = icmp ne i64 %1014, 0
  br i1 %1015, label %1021, label %1016

1016:                                             ; preds = %1013
  %1017 = load ptr, ptr %26, align 8, !tbaa !5
  %1018 = load i64, ptr %1017, align 8, !tbaa !9
  %1019 = add nsw i64 %1018, 2
  %1020 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 %1019, ptr %1020, align 8, !tbaa !9
  br label %1021

1021:                                             ; preds = %1016, %1013, %1010
  br label %1023

1022:                                             ; preds = %990
  store i64 1, ptr %52, align 8, !tbaa !9
  br label %1023

1023:                                             ; preds = %1022, %1021
  br label %1024

1024:                                             ; preds = %1023, %989
  %1025 = load i64, ptr %74, align 8, !tbaa !9
  store i64 %1025, ptr %68, align 8, !tbaa !9
  %1026 = load i64, ptr %66, align 8, !tbaa !9
  store i64 %1026, ptr %74, align 8, !tbaa !9
  br label %1027

1027:                                             ; preds = %1024
  %1028 = load i64, ptr %49, align 8, !tbaa !9
  %1029 = add nsw i64 %1028, 1
  store i64 %1029, ptr %49, align 8, !tbaa !9
  br label %953, !llvm.loop !16

1030:                                             ; preds = %953
  br label %1031

1031:                                             ; preds = %1030, %945, %942
  %1032 = load i64, ptr %76, align 8, !tbaa !9
  %1033 = sitofp i64 %1032 to float
  %1034 = load ptr, ptr %36, align 8, !tbaa !5
  %1035 = getelementptr inbounds float, ptr %1034, i64 1
  store float %1033, ptr %1035, align 4, !tbaa !11
  %1036 = load i64, ptr %82, align 8, !tbaa !9
  %1037 = icmp ne i64 %1036, 0
  br i1 %1037, label %1041, label %1038

1038:                                             ; preds = %1031
  %1039 = load i64, ptr %72, align 8, !tbaa !9
  %1040 = icmp ne i64 %1039, 0
  br i1 %1040, label %1041, label %1052

1041:                                             ; preds = %1038, %1031
  %1042 = load ptr, ptr %29, align 8, !tbaa !5
  %1043 = load i64, ptr %1042, align 8, !tbaa !9
  %1044 = load ptr, ptr %26, align 8, !tbaa !5
  %1045 = load i64, ptr %1044, align 8, !tbaa !9
  %1046 = load ptr, ptr %29, align 8, !tbaa !5
  %1047 = load i64, ptr %1046, align 8, !tbaa !9
  %1048 = sub nsw i64 %1045, %1047
  %1049 = mul nsw i64 %1043, %1048
  %1050 = load ptr, ptr %38, align 8, !tbaa !5
  %1051 = getelementptr inbounds i64, ptr %1050, i64 1
  store i64 %1049, ptr %1051, align 8, !tbaa !9
  br label %1055

1052:                                             ; preds = %1038
  %1053 = load ptr, ptr %38, align 8, !tbaa !5
  %1054 = getelementptr inbounds i64, ptr %1053, i64 1
  store i64 1, ptr %1054, align 8, !tbaa !9
  br label %1055

1055:                                             ; preds = %1052, %1041
  store i32 0, ptr %21, align 4
  store i32 1, ptr %84, align 4
  br label %1056

1056:                                             ; preds = %1055, %390, %381
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  %1057 = load i32, ptr %21, align 4
  ret i32 %1057
}

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

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

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

declare double @slamch_(ptr noundef) #2

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

; Function Attrs: nounwind
declare double @sqrt(double noundef) #3

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

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

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

declare i32 @sgehrd_(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 @sorghr_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

declare i32 @sgebak_(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 @f2c_sswap(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 "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 #4 = { nounwind }

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

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


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

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

50:                                               ; preds = %20
  %51 = load i64, ptr %17, align 8, !tbaa !5
  %52 = icmp eq i64 %51, -1
  br label %53

53:                                               ; preds = %50, %20
  %54 = phi i1 [ true, %20 ], [ %52, %50 ]
  %.not = icmp ne i64 %42, 0
  br i1 %.not, label %57, label %55

55:                                               ; preds = %53
  %56 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #5
  %.not420 = icmp eq i64 %56, 0
  br i1 %.not420, label %.thread443.sink.split, label %57

57:                                               ; preds = %55, %53
  %.not422 = icmp eq i64 %43, 0
  br i1 %.not422, label %58, label %60

58:                                               ; preds = %57
  %59 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.2) #5
  %.not421 = icmp eq i64 %59, 0
  br i1 %.not421, label %.thread443.sink.split, label %60

60:                                               ; preds = %58, %57
  %61 = icmp eq i64 %44, 0
  %62 = icmp eq i64 %45, 0
  %or.cond.not465 = select i1 %61, i1 %62, i1 false
  %63 = icmp eq i64 %46, 0
  %or.cond3.not462 = select i1 %or.cond.not465, i1 %63, i1 false
  %64 = icmp eq i64 %47, 0
  %or.cond5.not460 = select i1 %or.cond3.not462, i1 %64, i1 false
  %65 = or i64 %44, %43
  %or.cond7.not = icmp eq i64 %65, 0
  %or.cond438 = select i1 %or.cond5.not460, i1 true, i1 %or.cond7.not
  br i1 %or.cond438, label %.thread443.sink.split, label %66

66:                                               ; preds = %60
  %67 = load i64, ptr %4, align 8, !tbaa !5
  %68 = icmp slt i64 %67, 0
  br i1 %68, label %.thread443.sink.split, label %69

69:                                               ; preds = %66
  %70 = load i64, ptr %6, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %67, i64 1)
  %71 = icmp slt i64 %70, %spec.select
  br i1 %71, label %.thread443.sink.split, label %72

72:                                               ; preds = %69
  %73 = load i64, ptr %11, align 8, !tbaa !5
  %74 = icmp slt i64 %73, 1
  %75 = icmp ult i64 %73, %67
  %or.cond458 = and i1 %.not, %75
  %or.cond = or i1 %74, %or.cond458
  br i1 %or.cond, label %.thread443.sink.split, label %76

76:                                               ; preds = %72
  %.pr = load i64, ptr %19, align 8, !tbaa !5
  %77 = icmp eq i64 %.pr, 0
  br i1 %77, label %78, label %.thread443

78:                                               ; preds = %76
  %79 = icmp eq i64 %67, 0
  br i1 %79, label %113, label %80

80:                                               ; preds = %78
  %81 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef nonnull %4, ptr noundef nonnull @c__0) #5
  %82 = add i64 %81, 2
  %83 = mul i64 %82, %67
  %84 = load i64, ptr %4, align 8, !tbaa !5
  %85 = mul nsw i64 %84, 3
  %86 = call i32 @shseqr_(ptr noundef nonnull @.str.1, ptr noundef %0, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %14, ptr noundef nonnull @c_n1, ptr noundef nonnull %29) #5
  %87 = load float, ptr %14, align 4, !tbaa !9
  %88 = fptosi float %87 to i64
  br i1 %.not, label %89, label %98

89:                                               ; preds = %80
  store i64 %83, ptr %21, align 8, !tbaa !5
  %90 = load i64, ptr %4, align 8, !tbaa !5
  %91 = shl i64 %90, 1
  %92 = add nsw i64 %90, -1
  %93 = call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.6, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef nonnull %4, ptr noundef nonnull @c_n1) #5
  %94 = mul nsw i64 %92, %93
  %95 = add nsw i64 %94, %91
  %96 = load i64, ptr %21, align 8
  %97 = call i64 @llvm.smax.i64(i64 %96, i64 %95)
  br label %98

98:                                               ; preds = %80, %89
  %.sink499 = phi i64 [ %97, %89 ], [ %83, %80 ]
  %99 = load i64, ptr %4, align 8, !tbaa !5
  %100 = add nsw i64 %99, %88
  %101 = call i64 @llvm.smax.i64(i64 %.sink499, i64 %100)
  store i64 %.sink499, ptr %21, align 8
  store i64 %100, ptr %22, align 8
  br i1 %61, label %102, label %107

102:                                              ; preds = %98
  store i64 %101, ptr %21, align 8, !tbaa !5
  %103 = mul nsw i64 %99, %99
  %104 = lshr i64 %103, 1
  %105 = add nsw i64 %104, %99
  store i64 %105, ptr %22, align 8, !tbaa !5
  %106 = call i64 @llvm.smax.i64(i64 %101, i64 %105)
  br label %107

107:                                              ; preds = %102, %98
  %.0397 = phi i64 [ %101, %98 ], [ %106, %102 ]
  %108 = icmp ne i64 %46, 0
  %109 = icmp ne i64 %47, 0
  %or.cond9 = select i1 %108, i1 true, i1 %109
  br i1 %or.cond9, label %110, label %113

110:                                              ; preds = %107
  %111 = mul nsw i64 %99, %99
  %112 = lshr i64 %111, 2
  br label %113

113:                                              ; preds = %78, %110, %107
  %.1398 = phi i64 [ %.0397, %110 ], [ %.0397, %107 ], [ 1, %78 ]
  %.0393 = phi i64 [ %112, %110 ], [ 1, %107 ], [ 1, %78 ]
  %.0388 = phi i64 [ %85, %110 ], [ %85, %107 ], [ 1, %78 ]
  %.1 = phi i64 [ %101, %110 ], [ %101, %107 ], [ undef, %78 ]
  store i64 %.0393, ptr %16, align 8, !tbaa !5
  %114 = sitofp i64 %.1398 to float
  store float %114, ptr %14, align 4, !tbaa !9
  %115 = load i64, ptr %15, align 8, !tbaa !5
  %116 = icmp sge i64 %115, %.0388
  %or.cond11 = select i1 %116, i1 true, i1 %54
  br i1 %or.cond11, label %117, label %.thread443.sink.split

117:                                              ; preds = %113
  %118 = load i64, ptr %17, align 8, !tbaa !5
  %119 = icmp sgt i64 %118, 0
  %or.cond13 = select i1 %119, i1 true, i1 %54
  br i1 %or.cond13, label %.thread, label %.thread443.sink.split

.thread:                                          ; preds = %117
  %.pr440.pr = load i64, ptr %19, align 8, !tbaa !5
  %.not428 = icmp eq i64 %.pr440.pr, 0
  br i1 %.not428, label %123, label %.thread443

.thread443.sink.split:                            ; preds = %117, %113, %72, %69, %66, %60, %58, %55
  %.sink = phi i64 [ -1, %55 ], [ -2, %58 ], [ -4, %60 ], [ -5, %66 ], [ -7, %69 ], [ -12, %72 ], [ -16, %113 ], [ -18, %117 ]
  store i64 %.sink, ptr %19, align 8, !tbaa !5
  br label %.thread443

.thread443:                                       ; preds = %.thread443.sink.split, %76, %.thread
  %120 = phi i64 [ %.pr440.pr, %.thread ], [ %.pr, %76 ], [ %.sink, %.thread443.sink.split ]
  %121 = sub nsw i64 0, %120
  store i64 %121, ptr %21, align 8, !tbaa !5
  %122 = call i32 @xerbla_(ptr noundef nonnull @.str.8, ptr noundef nonnull %21) #5
  br label %336

123:                                              ; preds = %.thread
  %124 = load i64, ptr %4, align 8, !tbaa !5
  %125 = icmp eq i64 %124, 0
  br i1 %125, label %126, label %127

126:                                              ; preds = %123
  store i64 0, ptr %7, align 8, !tbaa !5
  br label %336

127:                                              ; preds = %123
  %128 = call double @slamch_(ptr noundef nonnull @.str.9) #5
  %129 = fptrunc double %128 to float
  %130 = call double @slamch_(ptr noundef nonnull @.str.1) #5
  %131 = fptrunc double %130 to float
  store float %131, ptr %32, align 4, !tbaa !9
  %132 = fdiv float 1.000000e+00, %131
  store float %132, ptr %31, align 4, !tbaa !9
  %133 = call i32 @slabad_(ptr noundef nonnull %32, ptr noundef nonnull %31) #5
  %134 = load float, ptr %32, align 4, !tbaa !9
  %135 = fpext float %134 to double
  %136 = call double @sqrt(double noundef %135) #5
  %137 = fpext float %129 to double
  %138 = fdiv double %136, %137
  %139 = fptrunc double %138 to float
  store float %139, ptr %32, align 4, !tbaa !9
  %140 = fdiv float 1.000000e+00, %139
  store float %140, ptr %31, align 4, !tbaa !9
  %141 = call double @slange_(ptr noundef nonnull @.str.10, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %25) #5
  %142 = fptrunc double %141 to float
  store float %142, ptr %26, align 4, !tbaa !9
  %143 = fcmp ogt float %142, 0.000000e+00
  %144 = load float, ptr %32, align 4
  %145 = fcmp ogt float %144, %142
  %or.cond469 = select i1 %143, i1 %145, i1 false
  br i1 %or.cond469, label %149, label %146

146:                                              ; preds = %127
  %147 = load float, ptr %31, align 4, !tbaa !9
  %148 = fcmp olt float %147, %142
  br i1 %148, label %149, label %151

149:                                              ; preds = %127, %146
  %storemerge466 = phi float [ %147, %146 ], [ %144, %127 ]
  store float %storemerge466, ptr %30, align 4, !tbaa !9
  %150 = call i32 @slascl_(ptr noundef nonnull @.str.11, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %26, ptr noundef nonnull %30, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %27) #5
  br label %151

151:                                              ; preds = %146, %149
  %.not429450 = phi i1 [ false, %149 ], [ true, %146 ]
  %152 = call i32 @sgebal_(ptr noundef nonnull @.str.9, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %24, ptr noundef nonnull %23, ptr noundef nonnull %14, ptr noundef nonnull %27) #5
  %153 = load i64, ptr %4, align 8, !tbaa !5
  %reass.add = shl i64 %153, 1
  %154 = or disjoint i64 %reass.add, 1
  %155 = load i64, ptr %15, align 8, !tbaa !5
  %156 = add i64 %155, 1
  %157 = sub i64 %156, %154
  store i64 %157, ptr %21, align 8, !tbaa !5
  %158 = getelementptr float, ptr %14, i64 %153
  %159 = getelementptr float, ptr %14, i64 %reass.add
  %160 = call i32 @sgehrd_(ptr noundef nonnull %4, ptr noundef nonnull %24, ptr noundef nonnull %23, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %158, ptr noundef nonnull %159, ptr noundef nonnull %21, ptr noundef nonnull %27) #5
  br i1 %.not, label %161, label %166

161:                                              ; preds = %151
  %162 = call i32 @slacpy_(ptr noundef nonnull @.str.12, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %10, ptr noundef nonnull %11) #5
  %163 = load i64, ptr %15, align 8, !tbaa !5
  %reass.sub = sub i64 %163, %154
  %164 = add i64 %reass.sub, 1
  store i64 %164, ptr %21, align 8, !tbaa !5
  %165 = call i32 @sorghr_(ptr noundef nonnull %4, ptr noundef nonnull %24, ptr noundef nonnull %23, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %158, ptr noundef nonnull %159, ptr noundef nonnull %21, ptr noundef nonnull %27) #5
  br label %166

166:                                              ; preds = %161, %151
  store i64 0, ptr %7, align 8, !tbaa !5
  %167 = load i64, ptr %15, align 8, !tbaa !5
  %168 = sub i64 %167, %153
  store i64 %168, ptr %21, align 8, !tbaa !5
  %169 = call i32 @shseqr_(ptr noundef nonnull @.str.1, ptr noundef %0, ptr noundef nonnull %4, ptr noundef nonnull %24, ptr noundef nonnull %23, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %158, ptr noundef nonnull %21, ptr noundef nonnull %29) #5
  %170 = load i64, ptr %29, align 8, !tbaa !5
  %171 = icmp sgt i64 %170, 0
  br i1 %171, label %172, label %173

172:                                              ; preds = %166
  store i64 %170, ptr %19, align 8, !tbaa !5
  br label %173

173:                                              ; preds = %172, %166
  br i1 %.not422, label %208, label %174

174:                                              ; preds = %173
  %175 = load i64, ptr %19, align 8, !tbaa !5
  %176 = icmp eq i64 %175, 0
  br i1 %176, label %177, label %208

177:                                              ; preds = %174
  br i1 %.not429450, label %181, label %178

178:                                              ; preds = %177
  %179 = call i32 @slascl_(ptr noundef nonnull @.str.11, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %30, ptr noundef nonnull %26, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef %8, ptr noundef nonnull %4, ptr noundef nonnull %27) #5
  %180 = call i32 @slascl_(ptr noundef nonnull @.str.11, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %30, ptr noundef nonnull %26, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef %9, ptr noundef nonnull %4, ptr noundef nonnull %27) #5
  br label %181

181:                                              ; preds = %178, %177
  %182 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %182, ptr %21, align 8, !tbaa !5
  %.not431472 = icmp slt i64 %182, 1
  br i1 %.not431472, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %181, %.lr.ph
  %.0399473 = phi i64 [ %187, %.lr.ph ], [ 1, %181 ]
  %183 = getelementptr inbounds float, ptr %36, i64 %.0399473
  %184 = getelementptr inbounds float, ptr %37, i64 %.0399473
  %185 = call i64 (ptr, ptr, ...) %2(ptr noundef nonnull %183, ptr noundef nonnull %184) #5
  %186 = getelementptr inbounds i64, ptr %41, i64 %.0399473
  store i64 %185, ptr %186, align 8, !tbaa !5
  %187 = add nuw nsw i64 %.0399473, 1
  %188 = load i64, ptr %21, align 8, !tbaa !5
  %.not431.not = icmp slt i64 %.0399473, %188
  br i1 %.not431.not, label %.lr.ph, label %._crit_edge, !llvm.loop !11

._crit_edge:                                      ; preds = %.lr.ph, %181
  %189 = load i64, ptr %15, align 8, !tbaa !5
  %190 = sub i64 %189, %153
  store i64 %190, ptr %21, align 8, !tbaa !5
  %191 = call i32 @strsen_(ptr noundef %3, ptr noundef %0, ptr noundef %18, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %8, ptr noundef %9, ptr noundef nonnull %7, ptr noundef %12, ptr noundef %13, ptr noundef %158, ptr noundef nonnull %21, ptr noundef nonnull %16, ptr noundef nonnull %17, ptr noundef nonnull %28) #5
  br i1 %61, label %192, label %200

192:                                              ; preds = %._crit_edge
  store i64 %.1, ptr %21, align 8, !tbaa !5
  %193 = load i64, ptr %4, align 8, !tbaa !5
  %194 = load i64, ptr %7, align 8, !tbaa !5
  %195 = shl i64 %194, 1
  %196 = sub nsw i64 %193, %194
  %197 = mul nsw i64 %195, %196
  %198 = add nsw i64 %197, %193
  store i64 %198, ptr %22, align 8, !tbaa !5
  %199 = call i64 @llvm.smax.i64(i64 %.1, i64 %198)
  br label %200

200:                                              ; preds = %192, %._crit_edge
  %.3 = phi i64 [ %.1, %._crit_edge ], [ %199, %192 ]
  %201 = load i64, ptr %28, align 8, !tbaa !5
  switch i64 %201, label %203 [
    i64 -15, label %.sink.split
    i64 -17, label %202
  ]

202:                                              ; preds = %200
  br label %.sink.split

203:                                              ; preds = %200
  %204 = icmp sgt i64 %201, 0
  br i1 %204, label %205, label %208

205:                                              ; preds = %203
  %206 = load i64, ptr %4, align 8, !tbaa !5
  %207 = add nsw i64 %206, %201
  br label %.sink.split

.sink.split:                                      ; preds = %200, %202, %205
  %.sink502 = phi i64 [ %207, %205 ], [ -18, %202 ], [ -16, %200 ]
  store i64 %.sink502, ptr %19, align 8, !tbaa !5
  br label %208

208:                                              ; preds = %.sink.split, %203, %174, %173
  %.4 = phi i64 [ %.3, %203 ], [ %.1, %174 ], [ %.1, %173 ], [ %.3, %.sink.split ]
  br i1 %.not, label %209, label %211

209:                                              ; preds = %208
  %210 = call i32 @sgebak_(ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.13, ptr noundef nonnull %4, ptr noundef nonnull %24, ptr noundef nonnull %23, ptr noundef nonnull %14, ptr noundef nonnull %4, ptr noundef %10, ptr noundef nonnull %11, ptr noundef nonnull %27) #5
  br label %211

211:                                              ; preds = %209, %208
  br i1 %.not429450, label %298, label %212

212:                                              ; preds = %211
  %213 = call i32 @slascl_(ptr noundef nonnull @.str.14, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %30, ptr noundef nonnull %26, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %27) #5
  %214 = load i64, ptr %6, align 8, !tbaa !5
  %215 = add nsw i64 %214, 1
  store i64 %215, ptr %21, align 8, !tbaa !5
  %216 = call i32 @f2c_scopy(ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %21, ptr noundef %8, ptr noundef nonnull @c__1) #5
  %217 = icmp ne i64 %46, 0
  %218 = icmp ne i64 %47, 0
  %or.cond15 = select i1 %217, i1 true, i1 %218
  br i1 %or.cond15, label %219, label %226

219:                                              ; preds = %212
  %220 = load i64, ptr %19, align 8, !tbaa !5
  %221 = icmp eq i64 %220, 0
  br i1 %221, label %222, label %226

222:                                              ; preds = %219
  %223 = load float, ptr %13, align 4, !tbaa !9
  store float %223, ptr %25, align 4, !tbaa !9
  %224 = call i32 @slascl_(ptr noundef nonnull @.str.11, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %30, ptr noundef nonnull %26, ptr noundef nonnull @c__1, ptr noundef nonnull @c__1, ptr noundef nonnull %25, ptr noundef nonnull @c__1, ptr noundef nonnull %27) #5
  %225 = load float, ptr %25, align 4, !tbaa !9
  store float %225, ptr %13, align 4, !tbaa !9
  br label %226

226:                                              ; preds = %212, %222, %219
  %227 = load float, ptr %30, align 4, !tbaa !9
  %228 = load float, ptr %32, align 4, !tbaa !9
  %229 = fcmp oeq float %227, %228
  br i1 %229, label %230, label %.loopexit471

230:                                              ; preds = %226
  %231 = load i64, ptr %29, align 8, !tbaa !5
  %232 = icmp sgt i64 %231, 0
  br i1 %232, label %233, label %239

233:                                              ; preds = %230
  %234 = add nuw nsw i64 %231, 1
  %235 = load i64, ptr %23, align 8, !tbaa !5
  %236 = load i64, ptr %24, align 8, !tbaa !5
  %237 = add nsw i64 %236, -1
  store i64 %237, ptr %21, align 8, !tbaa !5
  %238 = call i32 @slascl_(ptr noundef nonnull @.str.11, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %30, ptr noundef nonnull %26, ptr noundef nonnull %21, ptr noundef nonnull @c__1, ptr noundef %9, ptr noundef nonnull %4, ptr noundef nonnull %27) #5
  br label %245

239:                                              ; preds = %230
  br i1 %.not422, label %242, label %240

240:                                              ; preds = %239
  %241 = load i64, ptr %4, align 8, !tbaa !5
  br label %245

242:                                              ; preds = %239
  %243 = load i64, ptr %24, align 8, !tbaa !5
  %244 = load i64, ptr %23, align 8, !tbaa !5
  br label %245

245:                                              ; preds = %240, %242, %233
  %.0403.in = phi i64 [ %235, %233 ], [ %241, %240 ], [ %244, %242 ]
  %.0402 = phi i64 [ %234, %233 ], [ 1, %240 ], [ %243, %242 ]
  %.0403 = add nsw i64 %.0403.in, -1
  store i64 %.0403, ptr %21, align 8, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %35, i64 4
  %invariant.gep476 = getelementptr i8, ptr %40, i64 4
  %.not434480.not = icmp slt i64 %.0402, %.0403.in
  br i1 %.not434480.not, label %.lr.ph486.preheader, label %.loopexit471

.lr.ph486.preheader:                              ; preds = %245
  %246 = add nsw i64 %.0402, -1
  br label %.lr.ph486

.lr.ph486:                                        ; preds = %.lr.ph486.preheader, %290
  %.pre495 = phi i64 [ %.pre496, %290 ], [ %.0403, %.lr.ph486.preheader ]
  %247 = phi i64 [ %291, %290 ], [ %.0403, %.lr.ph486.preheader ]
  %.0395484 = phi i64 [ %.1396, %290 ], [ %246, %.lr.ph486.preheader ]
  %.1400481 = phi i64 [ %.pre-phi, %290 ], [ %.0402, %.lr.ph486.preheader ]
  %248 = icmp slt i64 %.1400481, %.0395484
  br i1 %248, label %.lr.ph486._crit_edge, label %249

.lr.ph486._crit_edge:                             ; preds = %.lr.ph486
  %.pre498 = add nsw i64 %.1400481, 1
  br label %290

249:                                              ; preds = %.lr.ph486
  %250 = getelementptr inbounds float, ptr %37, i64 %.1400481
  %251 = load float, ptr %250, align 4, !tbaa !9
  %252 = fcmp oeq float %251, 0.000000e+00
  %253 = add nsw i64 %.1400481, 1
  br i1 %252, label %290, label %254

254:                                              ; preds = %249
  %255 = mul nsw i64 %.1400481, %33
  %256 = getelementptr float, ptr %35, i64 %253
  %257 = getelementptr float, ptr %256, i64 %255
  %258 = load float, ptr %257, align 4, !tbaa !9
  %259 = fcmp oeq float %258, 0.000000e+00
  br i1 %259, label %260, label %261

260:                                              ; preds = %254
  store <2 x float> zeroinitializer, ptr %250, align 4, !tbaa !9
  br label %288

261:                                              ; preds = %254
  %262 = mul nsw i64 %253, %33
  %263 = getelementptr float, ptr %35, i64 %.1400481
  %264 = getelementptr float, ptr %263, i64 %262
  %265 = load float, ptr %264, align 4, !tbaa !9
  %266 = fcmp oeq float %265, 0.000000e+00
  br i1 %266, label %267, label %288

267:                                              ; preds = %261
  store <2 x float> zeroinitializer, ptr %250, align 4, !tbaa !9
  %268 = icmp sgt i64 %.1400481, 1
  br i1 %268, label %269, label %272

269:                                              ; preds = %267
  %270 = add nsw i64 %.1400481, -1
  store i64 %270, ptr %22, align 8, !tbaa !5
  %gep = getelementptr float, ptr %invariant.gep, i64 %255
  %gep475 = getelementptr float, ptr %invariant.gep, i64 %262
  %271 = call i32 @f2c_sswap(ptr noundef nonnull %22, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %gep475, ptr noundef nonnull @c__1) #5
  br label %272

272:                                              ; preds = %269, %267
  %273 = load i64, ptr %4, align 8, !tbaa !5
  %274 = icmp sgt i64 %273, %253
  br i1 %274, label %275, label %283

275:                                              ; preds = %272
  %276 = xor i64 %.1400481, -1
  %277 = add i64 %273, %276
  store i64 %277, ptr %22, align 8, !tbaa !5
  %278 = add nsw i64 %.1400481, 2
  %279 = mul nsw i64 %278, %33
  %280 = getelementptr float, ptr %263, i64 %279
  %281 = getelementptr float, ptr %256, i64 %279
  %282 = call i32 @f2c_sswap(ptr noundef nonnull %22, ptr noundef %280, ptr noundef nonnull %6, ptr noundef %281, ptr noundef nonnull %6) #5
  br label %283

283:                                              ; preds = %275, %272
  %284 = mul nsw i64 %.1400481, %38
  %gep477 = getelementptr float, ptr %invariant.gep476, i64 %284
  %285 = mul nsw i64 %253, %38
  %gep479 = getelementptr float, ptr %invariant.gep476, i64 %285
  %286 = call i32 @f2c_sswap(ptr noundef nonnull %4, ptr noundef %gep477, ptr noundef nonnull @c__1, ptr noundef %gep479, ptr noundef nonnull @c__1) #5
  %287 = load float, ptr %257, align 4, !tbaa !9
  store float %287, ptr %264, align 4, !tbaa !9
  store float 0.000000e+00, ptr %257, align 4, !tbaa !9
  %.pre.pre = load i64, ptr %21, align 8, !tbaa !5
  br label %288

288:                                              ; preds = %261, %283, %260
  %.pre = phi i64 [ %.pre495, %261 ], [ %.pre.pre, %283 ], [ %.pre495, %260 ]
  %289 = add nsw i64 %.1400481, 2
  br label %290

290:                                              ; preds = %249, %.lr.ph486._crit_edge, %288
  %.pre-phi = phi i64 [ %.pre498, %.lr.ph486._crit_edge ], [ %253, %288 ], [ %253, %249 ]
  %.pre496 = phi i64 [ %.pre495, %.lr.ph486._crit_edge ], [ %.pre, %288 ], [ %.pre495, %249 ]
  %291 = phi i64 [ %247, %.lr.ph486._crit_edge ], [ %.pre, %288 ], [ %247, %249 ]
  %.1396 = phi i64 [ %.0395484, %.lr.ph486._crit_edge ], [ %289, %288 ], [ %253, %249 ]
  %.not434.not = icmp slt i64 %.1400481, %291
  br i1 %.not434.not, label %.lr.ph486, label %.loopexit471, !llvm.loop !13

.loopexit471:                                     ; preds = %290, %245, %226
  %292 = load i64, ptr %4, align 8, !tbaa !5
  %293 = load i64, ptr %29, align 8, !tbaa !5
  %294 = sub nsw i64 %292, %293
  store i64 %294, ptr %21, align 8, !tbaa !5
  %295 = call i64 @llvm.smax.i64(i64 %294, i64 1)
  store i64 %295, ptr %22, align 8, !tbaa !5
  %296 = getelementptr float, ptr %9, i64 %293
  %297 = call i32 @slascl_(ptr noundef nonnull @.str.11, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %30, ptr noundef nonnull %26, ptr noundef nonnull %21, ptr noundef nonnull @c__1, ptr noundef %296, ptr noundef nonnull %22, ptr noundef nonnull %27) #5
  br label %298

298:                                              ; preds = %.loopexit471, %211
  br i1 %.not422, label %.loopexit, label %299

299:                                              ; preds = %298
  %300 = load i64, ptr %19, align 8, !tbaa !5
  %301 = icmp eq i64 %300, 0
  br i1 %301, label %302, label %.loopexit

302:                                              ; preds = %299
  store i64 0, ptr %7, align 8, !tbaa !5
  %303 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %303, ptr %21, align 8, !tbaa !5
  %.not435487 = icmp slt i64 %303, 1
  br i1 %.not435487, label %.loopexit, label %.lr.ph493

.lr.ph493:                                        ; preds = %302, %.thread451
  %.0389491 = phi i64 [ %.0394, %.thread451 ], [ 1, %302 ]
  %.0392490 = phi i64 [ %.1390, %.thread451 ], [ 1, %302 ]
  %.2401489 = phi i64 [ %325, %.thread451 ], [ 1, %302 ]
  %.0404488 = phi i64 [ %.1405, %.thread451 ], [ 0, %302 ]
  %304 = getelementptr inbounds float, ptr %36, i64 %.2401489
  %305 = getelementptr inbounds float, ptr %37, i64 %.2401489
  %306 = call i64 (ptr, ptr, ...) %2(ptr noundef nonnull %304, ptr noundef nonnull %305) #5
  %307 = load float, ptr %305, align 4, !tbaa !9
  %308 = fcmp oeq float %307, 0.000000e+00
  br i1 %308, label %309, label %313

309:                                              ; preds = %.lr.ph493
  %.not437 = icmp eq i64 %306, 0
  br i1 %.not437, label %.thread451, label %310

310:                                              ; preds = %309
  %311 = load i64, ptr %7, align 8, !tbaa !5
  %312 = add nsw i64 %311, 1
  store i64 %312, ptr %7, align 8, !tbaa !5
  %.not467 = icmp eq i64 %.0389491, 0
  br i1 %.not467, label %.thread451.sink.split, label %.thread451

313:                                              ; preds = %.lr.ph493
  %314 = icmp eq i64 %.0404488, 1
  br i1 %314, label %315, label %.thread451

315:                                              ; preds = %313
  %316 = icmp ne i64 %306, 0
  %317 = icmp ne i64 %.0389491, 0
  %318 = select i1 %316, i1 true, i1 %317
  br i1 %318, label %319, label %.thread451

319:                                              ; preds = %315
  %320 = load i64, ptr %7, align 8, !tbaa !5
  %321 = add nsw i64 %320, 2
  store i64 %321, ptr %7, align 8, !tbaa !5
  %322 = icmp eq i64 %.0392490, 0
  br i1 %322, label %.thread451.sink.split, label %.thread451

.thread451.sink.split:                            ; preds = %319, %310
  %.1405.ph = phi i64 [ 0, %310 ], [ -1, %319 ]
  %.0394.ph = phi i64 [ %306, %310 ], [ 1, %319 ]
  %.1390.ph = phi i64 [ 0, %310 ], [ 1, %319 ]
  %323 = load i64, ptr %4, align 8, !tbaa !5
  %324 = add nsw i64 %323, 2
  store i64 %324, ptr %19, align 8, !tbaa !5
  br label %.thread451

.thread451:                                       ; preds = %.thread451.sink.split, %315, %309, %313, %319, %310
  %.1405 = phi i64 [ 0, %310 ], [ -1, %319 ], [ 1, %313 ], [ 0, %309 ], [ -1, %315 ], [ %.1405.ph, %.thread451.sink.split ]
  %.0394 = phi i64 [ %306, %310 ], [ 1, %319 ], [ %306, %313 ], [ 0, %309 ], [ 0, %315 ], [ %.0394.ph, %.thread451.sink.split ]
  %.1390 = phi i64 [ %.0389491, %310 ], [ 1, %319 ], [ %.0389491, %313 ], [ %.0389491, %309 ], [ 0, %315 ], [ %.1390.ph, %.thread451.sink.split ]
  %325 = add nuw nsw i64 %.2401489, 1
  %326 = load i64, ptr %21, align 8, !tbaa !5
  %.not435.not = icmp slt i64 %.2401489, %326
  br i1 %.not435.not, label %.lr.ph493, label %.loopexit, !llvm.loop !14

.loopexit:                                        ; preds = %.thread451, %302, %299, %298
  %327 = sitofp i64 %.4 to float
  store float %327, ptr %14, align 4, !tbaa !9
  %328 = icmp ne i64 %46, 0
  %329 = icmp ne i64 %47, 0
  %or.cond21 = select i1 %328, i1 true, i1 %329
  br i1 %or.cond21, label %330, label %335

330:                                              ; preds = %.loopexit
  %331 = load i64, ptr %7, align 8, !tbaa !5
  %332 = load i64, ptr %4, align 8, !tbaa !5
  %333 = sub nsw i64 %332, %331
  %334 = mul nsw i64 %333, %331
  br label %335

335:                                              ; preds = %.loopexit, %330
  %storemerge = phi i64 [ %334, %330 ], [ 1, %.loopexit ]
  store i64 %storemerge, ptr %16, align 8, !tbaa !5
  br label %336

336:                                              ; preds = %335, %126, %.thread443
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #5
  ret i32 0
}

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

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

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

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

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

declare double @slamch_(ptr noundef) local_unnamed_addr #2

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @sqrt(double noundef) local_unnamed_addr #3

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

declare i32 @slascl_(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 @sgebal_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @sgehrd_(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 @sorghr_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare i32 @sgebak_(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 @f2c_sswap(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.smax.i64(i64, i64) #4

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"float", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = distinct !{!14, !12}


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,MergedLoadStoreMotionPass,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass