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

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

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

108:                                              ; preds = %15
  %109 = load ptr, ptr %17, align 8, !tbaa !5
  %110 = call i64 @lsame_(ptr noundef %109, ptr noundef @.str.2)
  %111 = icmp ne i64 %110, 0
  br i1 %111, label %114, label %112

112:                                              ; preds = %108
  %113 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 -1, ptr %113, align 8, !tbaa !9
  br label %163

114:                                              ; preds = %108, %15
  %115 = load i64, ptr %68, align 8, !tbaa !9
  %116 = icmp ne i64 %115, 0
  br i1 %116, label %123, label %117

117:                                              ; preds = %114
  %118 = load ptr, ptr %18, align 8, !tbaa !5
  %119 = call i64 @lsame_(ptr noundef %118, ptr noundef @.str.2)
  %120 = icmp ne i64 %119, 0
  br i1 %120, label %123, label %121

121:                                              ; preds = %117
  %122 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 -2, ptr %122, align 8, !tbaa !9
  br label %162

123:                                              ; preds = %117, %114
  %124 = load ptr, ptr %20, align 8, !tbaa !5
  %125 = load i64, ptr %124, align 8, !tbaa !9
  %126 = icmp slt i64 %125, 0
  br i1 %126, label %127, label %129

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

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

135:                                              ; preds = %129
  br label %139

136:                                              ; preds = %129
  %137 = load ptr, ptr %20, align 8, !tbaa !5
  %138 = load i64, ptr %137, align 8, !tbaa !9
  br label %139

139:                                              ; preds = %136, %135
  %140 = phi i64 [ 1, %135 ], [ %138, %136 ]
  %141 = icmp slt i64 %131, %140
  br i1 %141, label %142, label %144

142:                                              ; preds = %139
  %143 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 -6, ptr %143, align 8, !tbaa !9
  br label %160

144:                                              ; preds = %139
  %145 = load ptr, ptr %27, align 8, !tbaa !5
  %146 = load i64, ptr %145, align 8, !tbaa !9
  %147 = icmp slt i64 %146, 1
  br i1 %147, label %157, label %148

148:                                              ; preds = %144
  %149 = load i64, ptr %70, align 8, !tbaa !9
  %150 = icmp ne i64 %149, 0
  br i1 %150, label %151, label %159

151:                                              ; preds = %148
  %152 = load ptr, ptr %27, align 8, !tbaa !5
  %153 = load i64, ptr %152, align 8, !tbaa !9
  %154 = load ptr, ptr %20, align 8, !tbaa !5
  %155 = load i64, ptr %154, align 8, !tbaa !9
  %156 = icmp slt i64 %153, %155
  br i1 %156, label %157, label %159

157:                                              ; preds = %151, %144
  %158 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 -11, ptr %158, align 8, !tbaa !9
  br label %159

159:                                              ; preds = %157, %151, %148
  br label %160

160:                                              ; preds = %159, %142
  br label %161

161:                                              ; preds = %160, %127
  br label %162

162:                                              ; preds = %161, %121
  br label %163

163:                                              ; preds = %162, %112
  %164 = load ptr, ptr %31, align 8, !tbaa !5
  %165 = load i64, ptr %164, align 8, !tbaa !9
  %166 = icmp eq i64 %165, 0
  br i1 %166, label %167, label %277

167:                                              ; preds = %163
  %168 = load ptr, ptr %20, align 8, !tbaa !5
  %169 = load i64, ptr %168, align 8, !tbaa !9
  %170 = icmp eq i64 %169, 0
  br i1 %170, label %171, label %172

171:                                              ; preds = %167
  store i64 1, ptr %64, align 8, !tbaa !9
  store i64 1, ptr %65, align 8, !tbaa !9
  br label %262

172:                                              ; preds = %167
  %173 = load ptr, ptr %20, align 8, !tbaa !5
  %174 = load i64, ptr %173, align 8, !tbaa !9
  %175 = shl i64 %174, 1
  %176 = load ptr, ptr %20, align 8, !tbaa !5
  %177 = load i64, ptr %176, align 8, !tbaa !9
  %178 = load ptr, ptr %20, align 8, !tbaa !5
  %179 = load ptr, ptr %20, align 8, !tbaa !5
  %180 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef %178, ptr noundef @c__1, ptr noundef %179, ptr noundef @c__0)
  %181 = mul nsw i64 %177, %180
  %182 = add nsw i64 %175, %181
  store i64 %182, ptr %65, align 8, !tbaa !9
  %183 = load ptr, ptr %20, align 8, !tbaa !5
  %184 = load i64, ptr %183, align 8, !tbaa !9
  %185 = mul nsw i64 %184, 3
  store i64 %185, ptr %64, align 8, !tbaa !9
  %186 = load ptr, ptr %17, align 8, !tbaa !5
  %187 = load ptr, ptr %20, align 8, !tbaa !5
  %188 = load ptr, ptr %20, align 8, !tbaa !5
  %189 = load ptr, ptr %21, align 8, !tbaa !5
  %190 = load i64, ptr %33, align 8, !tbaa !9
  %191 = getelementptr inbounds float, ptr %189, i64 %190
  %192 = load ptr, ptr %22, align 8, !tbaa !5
  %193 = load ptr, ptr %24, align 8, !tbaa !5
  %194 = getelementptr inbounds float, ptr %193, i64 1
  %195 = load ptr, ptr %25, align 8, !tbaa !5
  %196 = getelementptr inbounds float, ptr %195, i64 1
  %197 = load ptr, ptr %26, align 8, !tbaa !5
  %198 = load i64, ptr %35, align 8, !tbaa !9
  %199 = getelementptr inbounds float, ptr %197, i64 %198
  %200 = load ptr, ptr %27, align 8, !tbaa !5
  %201 = load ptr, ptr %28, align 8, !tbaa !5
  %202 = getelementptr inbounds float, ptr %201, i64 1
  %203 = call i32 @shseqr_(ptr noundef @.str.1, ptr noundef %186, ptr noundef %187, ptr noundef @c__1, ptr noundef %188, ptr noundef %191, ptr noundef %192, ptr noundef %194, ptr noundef %196, ptr noundef %199, ptr noundef %200, ptr noundef %202, ptr noundef @c_n1, ptr noundef %57)
  %204 = load ptr, ptr %28, align 8, !tbaa !5
  %205 = getelementptr inbounds float, ptr %204, i64 1
  %206 = load float, ptr %205, align 4, !tbaa !11
  %207 = fptosi float %206 to i64
  store i64 %207, ptr %67, align 8, !tbaa !9
  %208 = load i64, ptr %70, align 8, !tbaa !9
  %209 = icmp ne i64 %208, 0
  br i1 %209, label %225, label %210

210:                                              ; preds = %172
  %211 = load i64, ptr %65, align 8, !tbaa !9
  store i64 %211, ptr %36, align 8, !tbaa !9
  %212 = load ptr, ptr %20, align 8, !tbaa !5
  %213 = load i64, ptr %212, align 8, !tbaa !9
  %214 = load i64, ptr %67, align 8, !tbaa !9
  %215 = add nsw i64 %213, %214
  store i64 %215, ptr %37, align 8, !tbaa !9
  %216 = load i64, ptr %36, align 8, !tbaa !9
  %217 = load i64, ptr %37, align 8, !tbaa !9
  %218 = icmp sge i64 %216, %217
  br i1 %218, label %219, label %221

219:                                              ; preds = %210
  %220 = load i64, ptr %36, align 8, !tbaa !9
  br label %223

221:                                              ; preds = %210
  %222 = load i64, ptr %37, align 8, !tbaa !9
  br label %223

223:                                              ; preds = %221, %219
  %224 = phi i64 [ %220, %219 ], [ %222, %221 ]
  store i64 %224, ptr %65, align 8, !tbaa !9
  br label %261

225:                                              ; preds = %172
  %226 = load i64, ptr %65, align 8, !tbaa !9
  store i64 %226, ptr %36, align 8, !tbaa !9
  %227 = load ptr, ptr %20, align 8, !tbaa !5
  %228 = load i64, ptr %227, align 8, !tbaa !9
  %229 = shl i64 %228, 1
  %230 = load ptr, ptr %20, align 8, !tbaa !5
  %231 = load i64, ptr %230, align 8, !tbaa !9
  %232 = sub nsw i64 %231, 1
  %233 = load ptr, ptr %20, align 8, !tbaa !5
  %234 = load ptr, ptr %20, align 8, !tbaa !5
  %235 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.5, ptr noundef @.str.4, ptr noundef %233, ptr noundef @c__1, ptr noundef %234, ptr noundef @c_n1)
  %236 = mul nsw i64 %232, %235
  %237 = add nsw i64 %229, %236
  store i64 %237, ptr %37, align 8, !tbaa !9
  %238 = load i64, ptr %36, align 8, !tbaa !9
  %239 = load i64, ptr %37, align 8, !tbaa !9
  %240 = icmp sge i64 %238, %239
  br i1 %240, label %241, label %243

241:                                              ; preds = %225
  %242 = load i64, ptr %36, align 8, !tbaa !9
  br label %245

243:                                              ; preds = %225
  %244 = load i64, ptr %37, align 8, !tbaa !9
  br label %245

245:                                              ; preds = %243, %241
  %246 = phi i64 [ %242, %241 ], [ %244, %243 ]
  store i64 %246, ptr %65, align 8, !tbaa !9
  %247 = load i64, ptr %65, align 8, !tbaa !9
  store i64 %247, ptr %36, align 8, !tbaa !9
  %248 = load ptr, ptr %20, align 8, !tbaa !5
  %249 = load i64, ptr %248, align 8, !tbaa !9
  %250 = load i64, ptr %67, align 8, !tbaa !9
  %251 = add nsw i64 %249, %250
  store i64 %251, ptr %37, align 8, !tbaa !9
  %252 = load i64, ptr %36, align 8, !tbaa !9
  %253 = load i64, ptr %37, align 8, !tbaa !9
  %254 = icmp sge i64 %252, %253
  br i1 %254, label %255, label %257

255:                                              ; preds = %245
  %256 = load i64, ptr %36, align 8, !tbaa !9
  br label %259

257:                                              ; preds = %245
  %258 = load i64, ptr %37, align 8, !tbaa !9
  br label %259

259:                                              ; preds = %257, %255
  %260 = phi i64 [ %256, %255 ], [ %258, %257 ]
  store i64 %260, ptr %65, align 8, !tbaa !9
  br label %261

261:                                              ; preds = %259, %223
  br label %262

262:                                              ; preds = %261, %171
  %263 = load i64, ptr %65, align 8, !tbaa !9
  %264 = sitofp i64 %263 to float
  %265 = load ptr, ptr %28, align 8, !tbaa !5
  %266 = getelementptr inbounds float, ptr %265, i64 1
  store float %264, ptr %266, align 4, !tbaa !11
  %267 = load ptr, ptr %29, align 8, !tbaa !5
  %268 = load i64, ptr %267, align 8, !tbaa !9
  %269 = load i64, ptr %64, align 8, !tbaa !9
  %270 = icmp slt i64 %268, %269
  br i1 %270, label %271, label %276

271:                                              ; preds = %262
  %272 = load i64, ptr %69, align 8, !tbaa !9
  %273 = icmp ne i64 %272, 0
  br i1 %273, label %276, label %274

274:                                              ; preds = %271
  %275 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 -13, ptr %275, align 8, !tbaa !9
  br label %276

276:                                              ; preds = %274, %271, %262
  br label %277

277:                                              ; preds = %276, %163
  %278 = load ptr, ptr %31, align 8, !tbaa !5
  %279 = load i64, ptr %278, align 8, !tbaa !9
  %280 = icmp ne i64 %279, 0
  br i1 %280, label %281, label %286

281:                                              ; preds = %277
  %282 = load ptr, ptr %31, align 8, !tbaa !5
  %283 = load i64, ptr %282, align 8, !tbaa !9
  %284 = sub nsw i64 0, %283
  store i64 %284, ptr %36, align 8, !tbaa !9
  %285 = call i32 @xerbla_(ptr noundef @.str.6, ptr noundef %36)
  store i32 0, ptr %16, align 4
  store i32 1, ptr %71, align 4
  br label %891

286:                                              ; preds = %277
  %287 = load i64, ptr %69, align 8, !tbaa !9
  %288 = icmp ne i64 %287, 0
  br i1 %288, label %289, label %290

289:                                              ; preds = %286
  store i32 0, ptr %16, align 4
  store i32 1, ptr %71, align 4
  br label %891

290:                                              ; preds = %286
  br label %291

291:                                              ; preds = %290
  %292 = load ptr, ptr %20, align 8, !tbaa !5
  %293 = load i64, ptr %292, align 8, !tbaa !9
  %294 = icmp eq i64 %293, 0
  br i1 %294, label %295, label %297

295:                                              ; preds = %291
  %296 = load ptr, ptr %23, align 8, !tbaa !5
  store i64 0, ptr %296, align 8, !tbaa !9
  store i32 0, ptr %16, align 4
  store i32 1, ptr %71, align 4
  br label %891

297:                                              ; preds = %291
  %298 = call double @slamch_(ptr noundef @.str.7)
  %299 = fptrunc double %298 to float
  store float %299, ptr %47, align 4, !tbaa !11
  %300 = call double @slamch_(ptr noundef @.str.1)
  %301 = fptrunc double %300 to float
  store float %301, ptr %66, align 4, !tbaa !11
  %302 = load float, ptr %66, align 4, !tbaa !11
  %303 = fdiv float 1.000000e+00, %302
  store float %303, ptr %62, align 4, !tbaa !11
  %304 = call i32 @slabad_(ptr noundef %66, ptr noundef %62)
  %305 = load float, ptr %66, align 4, !tbaa !11
  %306 = fpext float %305 to double
  %307 = call double @sqrt(double noundef %306) #4
  %308 = load float, ptr %47, align 4, !tbaa !11
  %309 = fpext float %308 to double
  %310 = fdiv double %307, %309
  %311 = fptrunc double %310 to float
  store float %311, ptr %66, align 4, !tbaa !11
  %312 = load float, ptr %66, align 4, !tbaa !11
  %313 = fdiv float 1.000000e+00, %312
  store float %313, ptr %62, align 4, !tbaa !11
  %314 = load ptr, ptr %20, align 8, !tbaa !5
  %315 = load ptr, ptr %20, align 8, !tbaa !5
  %316 = load ptr, ptr %21, align 8, !tbaa !5
  %317 = load i64, ptr %33, align 8, !tbaa !9
  %318 = getelementptr inbounds float, ptr %316, i64 %317
  %319 = load ptr, ptr %22, align 8, !tbaa !5
  %320 = getelementptr inbounds [1 x float], ptr %46, i64 0, i64 0
  %321 = call double @slange_(ptr noundef @.str.8, ptr noundef %314, ptr noundef %315, ptr noundef %318, ptr noundef %319, ptr noundef %320)
  %322 = fptrunc double %321 to float
  store float %322, ptr %50, align 4, !tbaa !11
  store i64 0, ptr %60, align 8, !tbaa !9
  %323 = load float, ptr %50, align 4, !tbaa !11
  %324 = fcmp ogt float %323, 0.000000e+00
  br i1 %324, label %325, label %331

325:                                              ; preds = %297
  %326 = load float, ptr %50, align 4, !tbaa !11
  %327 = load float, ptr %66, align 4, !tbaa !11
  %328 = fcmp olt float %326, %327
  br i1 %328, label %329, label %331

329:                                              ; preds = %325
  store i64 1, ptr %60, align 8, !tbaa !9
  %330 = load float, ptr %66, align 4, !tbaa !11
  store float %330, ptr %61, align 4, !tbaa !11
  br label %338

331:                                              ; preds = %325, %297
  %332 = load float, ptr %50, align 4, !tbaa !11
  %333 = load float, ptr %62, align 4, !tbaa !11
  %334 = fcmp ogt float %332, %333
  br i1 %334, label %335, label %337

335:                                              ; preds = %331
  store i64 1, ptr %60, align 8, !tbaa !9
  %336 = load float, ptr %62, align 4, !tbaa !11
  store float %336, ptr %61, align 4, !tbaa !11
  br label %337

337:                                              ; preds = %335, %331
  br label %338

338:                                              ; preds = %337, %329
  %339 = load i64, ptr %60, align 8, !tbaa !9
  %340 = icmp ne i64 %339, 0
  br i1 %340, label %341, label %349

341:                                              ; preds = %338
  %342 = load ptr, ptr %20, align 8, !tbaa !5
  %343 = load ptr, ptr %20, align 8, !tbaa !5
  %344 = load ptr, ptr %21, align 8, !tbaa !5
  %345 = load i64, ptr %33, align 8, !tbaa !9
  %346 = getelementptr inbounds float, ptr %344, i64 %345
  %347 = load ptr, ptr %22, align 8, !tbaa !5
  %348 = call i32 @slascl_(ptr noundef @.str.9, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %50, ptr noundef %61, ptr noundef %342, ptr noundef %343, ptr noundef %346, ptr noundef %347, ptr noundef %52)
  br label %349

349:                                              ; preds = %341, %338
  store i64 1, ptr %49, align 8, !tbaa !9
  %350 = load ptr, ptr %20, align 8, !tbaa !5
  %351 = load ptr, ptr %21, align 8, !tbaa !5
  %352 = load i64, ptr %33, align 8, !tbaa !9
  %353 = getelementptr inbounds float, ptr %351, i64 %352
  %354 = load ptr, ptr %22, align 8, !tbaa !5
  %355 = load ptr, ptr %28, align 8, !tbaa !5
  %356 = load i64, ptr %49, align 8, !tbaa !9
  %357 = getelementptr inbounds float, ptr %355, i64 %356
  %358 = call i32 @sgebal_(ptr noundef @.str.7, ptr noundef %350, ptr noundef %353, ptr noundef %354, ptr noundef %45, ptr noundef %44, ptr noundef %357, ptr noundef %52)
  %359 = load ptr, ptr %20, align 8, !tbaa !5
  %360 = load i64, ptr %359, align 8, !tbaa !9
  %361 = load i64, ptr %49, align 8, !tbaa !9
  %362 = add nsw i64 %360, %361
  store i64 %362, ptr %53, align 8, !tbaa !9
  %363 = load ptr, ptr %20, align 8, !tbaa !5
  %364 = load i64, ptr %363, align 8, !tbaa !9
  %365 = load i64, ptr %53, align 8, !tbaa !9
  %366 = add nsw i64 %364, %365
  store i64 %366, ptr %54, align 8, !tbaa !9
  %367 = load ptr, ptr %29, align 8, !tbaa !5
  %368 = load i64, ptr %367, align 8, !tbaa !9
  %369 = load i64, ptr %54, align 8, !tbaa !9
  %370 = sub nsw i64 %368, %369
  %371 = add nsw i64 %370, 1
  store i64 %371, ptr %36, align 8, !tbaa !9
  %372 = load ptr, ptr %20, align 8, !tbaa !5
  %373 = load ptr, ptr %21, align 8, !tbaa !5
  %374 = load i64, ptr %33, align 8, !tbaa !9
  %375 = getelementptr inbounds float, ptr %373, i64 %374
  %376 = load ptr, ptr %22, align 8, !tbaa !5
  %377 = load ptr, ptr %28, align 8, !tbaa !5
  %378 = load i64, ptr %53, align 8, !tbaa !9
  %379 = getelementptr inbounds float, ptr %377, i64 %378
  %380 = load ptr, ptr %28, align 8, !tbaa !5
  %381 = load i64, ptr %54, align 8, !tbaa !9
  %382 = getelementptr inbounds float, ptr %380, i64 %381
  %383 = call i32 @sgehrd_(ptr noundef %372, ptr noundef %45, ptr noundef %44, ptr noundef %375, ptr noundef %376, ptr noundef %379, ptr noundef %382, ptr noundef %36, ptr noundef %52)
  %384 = load i64, ptr %70, align 8, !tbaa !9
  %385 = icmp ne i64 %384, 0
  br i1 %385, label %386, label %415

386:                                              ; preds = %349
  %387 = load ptr, ptr %20, align 8, !tbaa !5
  %388 = load ptr, ptr %20, align 8, !tbaa !5
  %389 = load ptr, ptr %21, align 8, !tbaa !5
  %390 = load i64, ptr %33, align 8, !tbaa !9
  %391 = getelementptr inbounds float, ptr %389, i64 %390
  %392 = load ptr, ptr %22, align 8, !tbaa !5
  %393 = load ptr, ptr %26, align 8, !tbaa !5
  %394 = load i64, ptr %35, align 8, !tbaa !9
  %395 = getelementptr inbounds float, ptr %393, i64 %394
  %396 = load ptr, ptr %27, align 8, !tbaa !5
  %397 = call i32 @slacpy_(ptr noundef @.str.10, ptr noundef %387, ptr noundef %388, ptr noundef %391, ptr noundef %392, ptr noundef %395, ptr noundef %396)
  %398 = load ptr, ptr %29, align 8, !tbaa !5
  %399 = load i64, ptr %398, align 8, !tbaa !9
  %400 = load i64, ptr %54, align 8, !tbaa !9
  %401 = sub nsw i64 %399, %400
  %402 = add nsw i64 %401, 1
  store i64 %402, ptr %36, align 8, !tbaa !9
  %403 = load ptr, ptr %20, align 8, !tbaa !5
  %404 = load ptr, ptr %26, align 8, !tbaa !5
  %405 = load i64, ptr %35, align 8, !tbaa !9
  %406 = getelementptr inbounds float, ptr %404, i64 %405
  %407 = load ptr, ptr %27, align 8, !tbaa !5
  %408 = load ptr, ptr %28, align 8, !tbaa !5
  %409 = load i64, ptr %53, align 8, !tbaa !9
  %410 = getelementptr inbounds float, ptr %408, i64 %409
  %411 = load ptr, ptr %28, align 8, !tbaa !5
  %412 = load i64, ptr %54, align 8, !tbaa !9
  %413 = getelementptr inbounds float, ptr %411, i64 %412
  %414 = call i32 @sorghr_(ptr noundef %403, ptr noundef %45, ptr noundef %44, ptr noundef %406, ptr noundef %407, ptr noundef %410, ptr noundef %413, ptr noundef %36, ptr noundef %52)
  br label %415

415:                                              ; preds = %386, %349
  %416 = load ptr, ptr %23, align 8, !tbaa !5
  store i64 0, ptr %416, align 8, !tbaa !9
  %417 = load i64, ptr %53, align 8, !tbaa !9
  store i64 %417, ptr %54, align 8, !tbaa !9
  %418 = load ptr, ptr %29, align 8, !tbaa !5
  %419 = load i64, ptr %418, align 8, !tbaa !9
  %420 = load i64, ptr %54, align 8, !tbaa !9
  %421 = sub nsw i64 %419, %420
  %422 = add nsw i64 %421, 1
  store i64 %422, ptr %36, align 8, !tbaa !9
  %423 = load ptr, ptr %17, align 8, !tbaa !5
  %424 = load ptr, ptr %20, align 8, !tbaa !5
  %425 = load ptr, ptr %21, align 8, !tbaa !5
  %426 = load i64, ptr %33, align 8, !tbaa !9
  %427 = getelementptr inbounds float, ptr %425, i64 %426
  %428 = load ptr, ptr %22, align 8, !tbaa !5
  %429 = load ptr, ptr %24, align 8, !tbaa !5
  %430 = getelementptr inbounds float, ptr %429, i64 1
  %431 = load ptr, ptr %25, align 8, !tbaa !5
  %432 = getelementptr inbounds float, ptr %431, i64 1
  %433 = load ptr, ptr %26, align 8, !tbaa !5
  %434 = load i64, ptr %35, align 8, !tbaa !9
  %435 = getelementptr inbounds float, ptr %433, i64 %434
  %436 = load ptr, ptr %27, align 8, !tbaa !5
  %437 = load ptr, ptr %28, align 8, !tbaa !5
  %438 = load i64, ptr %54, align 8, !tbaa !9
  %439 = getelementptr inbounds float, ptr %437, i64 %438
  %440 = call i32 @shseqr_(ptr noundef @.str.1, ptr noundef %423, ptr noundef %424, ptr noundef %45, ptr noundef %44, ptr noundef %427, ptr noundef %428, ptr noundef %430, ptr noundef %432, ptr noundef %435, ptr noundef %436, ptr noundef %439, ptr noundef %36, ptr noundef %57)
  %441 = load i64, ptr %57, align 8, !tbaa !9
  %442 = icmp sgt i64 %441, 0
  br i1 %442, label %443, label %446

443:                                              ; preds = %415
  %444 = load i64, ptr %57, align 8, !tbaa !9
  %445 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 %444, ptr %445, align 8, !tbaa !9
  br label %446

446:                                              ; preds = %443, %415
  %447 = load i64, ptr %68, align 8, !tbaa !9
  %448 = icmp ne i64 %447, 0
  br i1 %448, label %449, label %526

449:                                              ; preds = %446
  %450 = load ptr, ptr %31, align 8, !tbaa !5
  %451 = load i64, ptr %450, align 8, !tbaa !9
  %452 = icmp eq i64 %451, 0
  br i1 %452, label %453, label %526

453:                                              ; preds = %449
  %454 = load i64, ptr %60, align 8, !tbaa !9
  %455 = icmp ne i64 %454, 0
  br i1 %455, label %456, label %467

456:                                              ; preds = %453
  %457 = load ptr, ptr %20, align 8, !tbaa !5
  %458 = load ptr, ptr %24, align 8, !tbaa !5
  %459 = getelementptr inbounds float, ptr %458, i64 1
  %460 = load ptr, ptr %20, align 8, !tbaa !5
  %461 = call i32 @slascl_(ptr noundef @.str.9, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %61, ptr noundef %50, ptr noundef %457, ptr noundef @c__1, ptr noundef %459, ptr noundef %460, ptr noundef %52)
  %462 = load ptr, ptr %20, align 8, !tbaa !5
  %463 = load ptr, ptr %25, align 8, !tbaa !5
  %464 = getelementptr inbounds float, ptr %463, i64 1
  %465 = load ptr, ptr %20, align 8, !tbaa !5
  %466 = call i32 @slascl_(ptr noundef @.str.9, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %61, ptr noundef %50, ptr noundef %462, ptr noundef @c__1, ptr noundef %464, ptr noundef %465, ptr noundef %52)
  br label %467

467:                                              ; preds = %456, %453
  %468 = load ptr, ptr %20, align 8, !tbaa !5
  %469 = load i64, ptr %468, align 8, !tbaa !9
  store i64 %469, ptr %36, align 8, !tbaa !9
  store i64 1, ptr %39, align 8, !tbaa !9
  br label %470

470:                                              ; preds = %486, %467
  %471 = load i64, ptr %39, align 8, !tbaa !9
  %472 = load i64, ptr %36, align 8, !tbaa !9
  %473 = icmp sle i64 %471, %472
  br i1 %473, label %474, label %489

474:                                              ; preds = %470
  %475 = load ptr, ptr %19, align 8, !tbaa !5
  %476 = load ptr, ptr %24, align 8, !tbaa !5
  %477 = load i64, ptr %39, align 8, !tbaa !9
  %478 = getelementptr inbounds float, ptr %476, i64 %477
  %479 = load ptr, ptr %25, align 8, !tbaa !5
  %480 = load i64, ptr %39, align 8, !tbaa !9
  %481 = getelementptr inbounds float, ptr %479, i64 %480
  %482 = call i64 (ptr, ptr, ...) %475(ptr noundef %478, ptr noundef %481)
  %483 = load ptr, ptr %30, align 8, !tbaa !5
  %484 = load i64, ptr %39, align 8, !tbaa !9
  %485 = getelementptr inbounds i64, ptr %483, i64 %484
  store i64 %482, ptr %485, align 8, !tbaa !9
  br label %486

486:                                              ; preds = %474
  %487 = load i64, ptr %39, align 8, !tbaa !9
  %488 = add nsw i64 %487, 1
  store i64 %488, ptr %39, align 8, !tbaa !9
  br label %470, !llvm.loop !13

489:                                              ; preds = %470
  %490 = load ptr, ptr %29, align 8, !tbaa !5
  %491 = load i64, ptr %490, align 8, !tbaa !9
  %492 = load i64, ptr %54, align 8, !tbaa !9
  %493 = sub nsw i64 %491, %492
  %494 = add nsw i64 %493, 1
  store i64 %494, ptr %36, align 8, !tbaa !9
  %495 = load ptr, ptr %17, align 8, !tbaa !5
  %496 = load ptr, ptr %30, align 8, !tbaa !5
  %497 = getelementptr inbounds i64, ptr %496, i64 1
  %498 = load ptr, ptr %20, align 8, !tbaa !5
  %499 = load ptr, ptr %21, align 8, !tbaa !5
  %500 = load i64, ptr %33, align 8, !tbaa !9
  %501 = getelementptr inbounds float, ptr %499, i64 %500
  %502 = load ptr, ptr %22, align 8, !tbaa !5
  %503 = load ptr, ptr %26, align 8, !tbaa !5
  %504 = load i64, ptr %35, align 8, !tbaa !9
  %505 = getelementptr inbounds float, ptr %503, i64 %504
  %506 = load ptr, ptr %27, align 8, !tbaa !5
  %507 = load ptr, ptr %24, align 8, !tbaa !5
  %508 = getelementptr inbounds float, ptr %507, i64 1
  %509 = load ptr, ptr %25, align 8, !tbaa !5
  %510 = getelementptr inbounds float, ptr %509, i64 1
  %511 = load ptr, ptr %23, align 8, !tbaa !5
  %512 = load ptr, ptr %28, align 8, !tbaa !5
  %513 = load i64, ptr %54, align 8, !tbaa !9
  %514 = getelementptr inbounds float, ptr %512, i64 %513
  %515 = getelementptr inbounds [1 x i64], ptr %51, i64 0, i64 0
  %516 = call i32 @strsen_(ptr noundef @.str.2, ptr noundef %495, ptr noundef %497, ptr noundef %498, ptr noundef %501, ptr noundef %502, ptr noundef %505, ptr noundef %506, ptr noundef %508, ptr noundef %510, ptr noundef %511, ptr noundef %40, ptr noundef %48, ptr noundef %514, ptr noundef %36, ptr noundef %515, ptr noundef @c__1, ptr noundef %56)
  %517 = load i64, ptr %56, align 8, !tbaa !9
  %518 = icmp sgt i64 %517, 0
  br i1 %518, label %519, label %525

519:                                              ; preds = %489
  %520 = load ptr, ptr %20, align 8, !tbaa !5
  %521 = load i64, ptr %520, align 8, !tbaa !9
  %522 = load i64, ptr %56, align 8, !tbaa !9
  %523 = add nsw i64 %521, %522
  %524 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 %523, ptr %524, align 8, !tbaa !9
  br label %525

525:                                              ; preds = %519, %489
  br label %526

526:                                              ; preds = %525, %449, %446
  %527 = load i64, ptr %70, align 8, !tbaa !9
  %528 = icmp ne i64 %527, 0
  br i1 %528, label %529, label %540

529:                                              ; preds = %526
  %530 = load ptr, ptr %20, align 8, !tbaa !5
  %531 = load ptr, ptr %28, align 8, !tbaa !5
  %532 = load i64, ptr %49, align 8, !tbaa !9
  %533 = getelementptr inbounds float, ptr %531, i64 %532
  %534 = load ptr, ptr %20, align 8, !tbaa !5
  %535 = load ptr, ptr %26, align 8, !tbaa !5
  %536 = load i64, ptr %35, align 8, !tbaa !9
  %537 = getelementptr inbounds float, ptr %535, i64 %536
  %538 = load ptr, ptr %27, align 8, !tbaa !5
  %539 = call i32 @sgebak_(ptr noundef @.str.7, ptr noundef @.str.11, ptr noundef %530, ptr noundef %45, ptr noundef %44, ptr noundef %533, ptr noundef %534, ptr noundef %537, ptr noundef %538, ptr noundef %52)
  br label %540

540:                                              ; preds = %529, %526
  %541 = load i64, ptr %60, align 8, !tbaa !9
  %542 = icmp ne i64 %541, 0
  br i1 %542, label %543, label %797

543:                                              ; preds = %540
  %544 = load ptr, ptr %20, align 8, !tbaa !5
  %545 = load ptr, ptr %20, align 8, !tbaa !5
  %546 = load ptr, ptr %21, align 8, !tbaa !5
  %547 = load i64, ptr %33, align 8, !tbaa !9
  %548 = getelementptr inbounds float, ptr %546, i64 %547
  %549 = load ptr, ptr %22, align 8, !tbaa !5
  %550 = call i32 @slascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %61, ptr noundef %50, ptr noundef %544, ptr noundef %545, ptr noundef %548, ptr noundef %549, ptr noundef %52)
  %551 = load ptr, ptr %22, align 8, !tbaa !5
  %552 = load i64, ptr %551, align 8, !tbaa !9
  %553 = add nsw i64 %552, 1
  store i64 %553, ptr %36, align 8, !tbaa !9
  %554 = load ptr, ptr %20, align 8, !tbaa !5
  %555 = load ptr, ptr %21, align 8, !tbaa !5
  %556 = load i64, ptr %33, align 8, !tbaa !9
  %557 = getelementptr inbounds float, ptr %555, i64 %556
  %558 = load ptr, ptr %24, align 8, !tbaa !5
  %559 = getelementptr inbounds float, ptr %558, i64 1
  %560 = call i32 @f2c_scopy(ptr noundef %554, ptr noundef %557, ptr noundef %36, ptr noundef %559, ptr noundef @c__1)
  %561 = load float, ptr %61, align 4, !tbaa !11
  %562 = load float, ptr %66, align 4, !tbaa !11
  %563 = fcmp oeq float %561, %562
  br i1 %563, label %564, label %776

564:                                              ; preds = %543
  %565 = load i64, ptr %57, align 8, !tbaa !9
  %566 = icmp sgt i64 %565, 0
  br i1 %566, label %567, label %586

567:                                              ; preds = %564
  %568 = load i64, ptr %57, align 8, !tbaa !9
  %569 = add nsw i64 %568, 1
  store i64 %569, ptr %41, align 8, !tbaa !9
  %570 = load i64, ptr %44, align 8, !tbaa !9
  %571 = sub nsw i64 %570, 1
  store i64 %571, ptr %42, align 8, !tbaa !9
  %572 = load i64, ptr %45, align 8, !tbaa !9
  %573 = sub nsw i64 %572, 1
  store i64 %573, ptr %36, align 8, !tbaa !9
  %574 = load i64, ptr %45, align 8, !tbaa !9
  %575 = sub nsw i64 %574, 1
  store i64 %575, ptr %38, align 8, !tbaa !9
  %576 = load i64, ptr %38, align 8, !tbaa !9
  %577 = icmp sge i64 %576, 1
  br i1 %577, label %578, label %580

578:                                              ; preds = %567
  %579 = load i64, ptr %38, align 8, !tbaa !9
  br label %581

580:                                              ; preds = %567
  br label %581

581:                                              ; preds = %580, %578
  %582 = phi i64 [ %579, %578 ], [ 1, %580 ]
  store i64 %582, ptr %37, align 8, !tbaa !9
  %583 = load ptr, ptr %25, align 8, !tbaa !5
  %584 = getelementptr inbounds float, ptr %583, i64 1
  %585 = call i32 @slascl_(ptr noundef @.str.9, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %61, ptr noundef %50, ptr noundef %36, ptr noundef @c__1, ptr noundef %584, ptr noundef %37, ptr noundef %52)
  br label %598

586:                                              ; preds = %564
  %587 = load i64, ptr %68, align 8, !tbaa !9
  %588 = icmp ne i64 %587, 0
  br i1 %588, label %589, label %593

589:                                              ; preds = %586
  store i64 1, ptr %41, align 8, !tbaa !9
  %590 = load ptr, ptr %20, align 8, !tbaa !5
  %591 = load i64, ptr %590, align 8, !tbaa !9
  %592 = sub nsw i64 %591, 1
  store i64 %592, ptr %42, align 8, !tbaa !9
  br label %597

593:                                              ; preds = %586
  %594 = load i64, ptr %45, align 8, !tbaa !9
  store i64 %594, ptr %41, align 8, !tbaa !9
  %595 = load i64, ptr %44, align 8, !tbaa !9
  %596 = sub nsw i64 %595, 1
  store i64 %596, ptr %42, align 8, !tbaa !9
  br label %597

597:                                              ; preds = %593, %589
  br label %598

598:                                              ; preds = %597, %581
  %599 = load i64, ptr %41, align 8, !tbaa !9
  %600 = sub nsw i64 %599, 1
  store i64 %600, ptr %55, align 8, !tbaa !9
  %601 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %601, ptr %36, align 8, !tbaa !9
  %602 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %602, ptr %39, align 8, !tbaa !9
  br label %603

603:                                              ; preds = %772, %598
  %604 = load i64, ptr %39, align 8, !tbaa !9
  %605 = load i64, ptr %36, align 8, !tbaa !9
  %606 = icmp sle i64 %604, %605
  br i1 %606, label %607, label %775

607:                                              ; preds = %603
  %608 = load i64, ptr %39, align 8, !tbaa !9
  %609 = load i64, ptr %55, align 8, !tbaa !9
  %610 = icmp slt i64 %608, %609
  br i1 %610, label %611, label %612

611:                                              ; preds = %607
  br label %771

612:                                              ; preds = %607
  %613 = load ptr, ptr %25, align 8, !tbaa !5
  %614 = load i64, ptr %39, align 8, !tbaa !9
  %615 = getelementptr inbounds float, ptr %613, i64 %614
  %616 = load float, ptr %615, align 4, !tbaa !11
  %617 = fcmp oeq float %616, 0.000000e+00
  br i1 %617, label %618, label %621

618:                                              ; preds = %612
  %619 = load i64, ptr %39, align 8, !tbaa !9
  %620 = add nsw i64 %619, 1
  store i64 %620, ptr %55, align 8, !tbaa !9
  br label %770

621:                                              ; preds = %612
  %622 = load ptr, ptr %21, align 8, !tbaa !5
  %623 = load i64, ptr %39, align 8, !tbaa !9
  %624 = add nsw i64 %623, 1
  %625 = load i64, ptr %39, align 8, !tbaa !9
  %626 = load i64, ptr %32, align 8, !tbaa !9
  %627 = mul nsw i64 %625, %626
  %628 = add nsw i64 %624, %627
  %629 = getelementptr inbounds float, ptr %622, i64 %628
  %630 = load float, ptr %629, align 4, !tbaa !11
  %631 = fcmp oeq float %630, 0.000000e+00
  br i1 %631, label %632, label %640

632:                                              ; preds = %621
  %633 = load ptr, ptr %25, align 8, !tbaa !5
  %634 = load i64, ptr %39, align 8, !tbaa !9
  %635 = getelementptr inbounds float, ptr %633, i64 %634
  store float 0.000000e+00, ptr %635, align 4, !tbaa !11
  %636 = load ptr, ptr %25, align 8, !tbaa !5
  %637 = load i64, ptr %39, align 8, !tbaa !9
  %638 = add nsw i64 %637, 1
  %639 = getelementptr inbounds float, ptr %636, i64 %638
  store float 0.000000e+00, ptr %639, align 4, !tbaa !11
  br label %767

640:                                              ; preds = %621
  %641 = load ptr, ptr %21, align 8, !tbaa !5
  %642 = load i64, ptr %39, align 8, !tbaa !9
  %643 = add nsw i64 %642, 1
  %644 = load i64, ptr %39, align 8, !tbaa !9
  %645 = load i64, ptr %32, align 8, !tbaa !9
  %646 = mul nsw i64 %644, %645
  %647 = add nsw i64 %643, %646
  %648 = getelementptr inbounds float, ptr %641, i64 %647
  %649 = load float, ptr %648, align 4, !tbaa !11
  %650 = fcmp une float %649, 0.000000e+00
  br i1 %650, label %651, label %766

651:                                              ; preds = %640
  %652 = load ptr, ptr %21, align 8, !tbaa !5
  %653 = load i64, ptr %39, align 8, !tbaa !9
  %654 = load i64, ptr %39, align 8, !tbaa !9
  %655 = add nsw i64 %654, 1
  %656 = load i64, ptr %32, align 8, !tbaa !9
  %657 = mul nsw i64 %655, %656
  %658 = add nsw i64 %653, %657
  %659 = getelementptr inbounds float, ptr %652, i64 %658
  %660 = load float, ptr %659, align 4, !tbaa !11
  %661 = fcmp oeq float %660, 0.000000e+00
  br i1 %661, label %662, label %766

662:                                              ; preds = %651
  %663 = load ptr, ptr %25, align 8, !tbaa !5
  %664 = load i64, ptr %39, align 8, !tbaa !9
  %665 = getelementptr inbounds float, ptr %663, i64 %664
  store float 0.000000e+00, ptr %665, align 4, !tbaa !11
  %666 = load ptr, ptr %25, align 8, !tbaa !5
  %667 = load i64, ptr %39, align 8, !tbaa !9
  %668 = add nsw i64 %667, 1
  %669 = getelementptr inbounds float, ptr %666, i64 %668
  store float 0.000000e+00, ptr %669, align 4, !tbaa !11
  %670 = load i64, ptr %39, align 8, !tbaa !9
  %671 = icmp sgt i64 %670, 1
  br i1 %671, label %672, label %689

672:                                              ; preds = %662
  %673 = load i64, ptr %39, align 8, !tbaa !9
  %674 = sub nsw i64 %673, 1
  store i64 %674, ptr %37, align 8, !tbaa !9
  %675 = load ptr, ptr %21, align 8, !tbaa !5
  %676 = load i64, ptr %39, align 8, !tbaa !9
  %677 = load i64, ptr %32, align 8, !tbaa !9
  %678 = mul nsw i64 %676, %677
  %679 = add nsw i64 %678, 1
  %680 = getelementptr inbounds float, ptr %675, i64 %679
  %681 = load ptr, ptr %21, align 8, !tbaa !5
  %682 = load i64, ptr %39, align 8, !tbaa !9
  %683 = add nsw i64 %682, 1
  %684 = load i64, ptr %32, align 8, !tbaa !9
  %685 = mul nsw i64 %683, %684
  %686 = add nsw i64 %685, 1
  %687 = getelementptr inbounds float, ptr %681, i64 %686
  %688 = call i32 @f2c_sswap(ptr noundef %37, ptr noundef %680, ptr noundef @c__1, ptr noundef %687, ptr noundef @c__1)
  br label %689

689:                                              ; preds = %672, %662
  %690 = load ptr, ptr %20, align 8, !tbaa !5
  %691 = load i64, ptr %690, align 8, !tbaa !9
  %692 = load i64, ptr %39, align 8, !tbaa !9
  %693 = add nsw i64 %692, 1
  %694 = icmp sgt i64 %691, %693
  br i1 %694, label %695, label %721

695:                                              ; preds = %689
  %696 = load ptr, ptr %20, align 8, !tbaa !5
  %697 = load i64, ptr %696, align 8, !tbaa !9
  %698 = load i64, ptr %39, align 8, !tbaa !9
  %699 = sub nsw i64 %697, %698
  %700 = sub nsw i64 %699, 1
  store i64 %700, ptr %37, align 8, !tbaa !9
  %701 = load ptr, ptr %21, align 8, !tbaa !5
  %702 = load i64, ptr %39, align 8, !tbaa !9
  %703 = load i64, ptr %39, align 8, !tbaa !9
  %704 = add nsw i64 %703, 2
  %705 = load i64, ptr %32, align 8, !tbaa !9
  %706 = mul nsw i64 %704, %705
  %707 = add nsw i64 %702, %706
  %708 = getelementptr inbounds float, ptr %701, i64 %707
  %709 = load ptr, ptr %22, align 8, !tbaa !5
  %710 = load ptr, ptr %21, align 8, !tbaa !5
  %711 = load i64, ptr %39, align 8, !tbaa !9
  %712 = add nsw i64 %711, 1
  %713 = load i64, ptr %39, align 8, !tbaa !9
  %714 = add nsw i64 %713, 2
  %715 = load i64, ptr %32, align 8, !tbaa !9
  %716 = mul nsw i64 %714, %715
  %717 = add nsw i64 %712, %716
  %718 = getelementptr inbounds float, ptr %710, i64 %717
  %719 = load ptr, ptr %22, align 8, !tbaa !5
  %720 = call i32 @f2c_sswap(ptr noundef %37, ptr noundef %708, ptr noundef %709, ptr noundef %718, ptr noundef %719)
  br label %721

721:                                              ; preds = %695, %689
  %722 = load i64, ptr %70, align 8, !tbaa !9
  %723 = icmp ne i64 %722, 0
  br i1 %723, label %724, label %740

724:                                              ; preds = %721
  %725 = load ptr, ptr %20, align 8, !tbaa !5
  %726 = load ptr, ptr %26, align 8, !tbaa !5
  %727 = load i64, ptr %39, align 8, !tbaa !9
  %728 = load i64, ptr %34, align 8, !tbaa !9
  %729 = mul nsw i64 %727, %728
  %730 = add nsw i64 %729, 1
  %731 = getelementptr inbounds float, ptr %726, i64 %730
  %732 = load ptr, ptr %26, align 8, !tbaa !5
  %733 = load i64, ptr %39, align 8, !tbaa !9
  %734 = add nsw i64 %733, 1
  %735 = load i64, ptr %34, align 8, !tbaa !9
  %736 = mul nsw i64 %734, %735
  %737 = add nsw i64 %736, 1
  %738 = getelementptr inbounds float, ptr %732, i64 %737
  %739 = call i32 @f2c_sswap(ptr noundef %725, ptr noundef %731, ptr noundef @c__1, ptr noundef %738, ptr noundef @c__1)
  br label %740

740:                                              ; preds = %724, %721
  %741 = load ptr, ptr %21, align 8, !tbaa !5
  %742 = load i64, ptr %39, align 8, !tbaa !9
  %743 = add nsw i64 %742, 1
  %744 = load i64, ptr %39, align 8, !tbaa !9
  %745 = load i64, ptr %32, align 8, !tbaa !9
  %746 = mul nsw i64 %744, %745
  %747 = add nsw i64 %743, %746
  %748 = getelementptr inbounds float, ptr %741, i64 %747
  %749 = load float, ptr %748, align 4, !tbaa !11
  %750 = load ptr, ptr %21, align 8, !tbaa !5
  %751 = load i64, ptr %39, align 8, !tbaa !9
  %752 = load i64, ptr %39, align 8, !tbaa !9
  %753 = add nsw i64 %752, 1
  %754 = load i64, ptr %32, align 8, !tbaa !9
  %755 = mul nsw i64 %753, %754
  %756 = add nsw i64 %751, %755
  %757 = getelementptr inbounds float, ptr %750, i64 %756
  store float %749, ptr %757, align 4, !tbaa !11
  %758 = load ptr, ptr %21, align 8, !tbaa !5
  %759 = load i64, ptr %39, align 8, !tbaa !9
  %760 = add nsw i64 %759, 1
  %761 = load i64, ptr %39, align 8, !tbaa !9
  %762 = load i64, ptr %32, align 8, !tbaa !9
  %763 = mul nsw i64 %761, %762
  %764 = add nsw i64 %760, %763
  %765 = getelementptr inbounds float, ptr %758, i64 %764
  store float 0.000000e+00, ptr %765, align 4, !tbaa !11
  br label %766

766:                                              ; preds = %740, %651, %640
  br label %767

767:                                              ; preds = %766, %632
  %768 = load i64, ptr %39, align 8, !tbaa !9
  %769 = add nsw i64 %768, 2
  store i64 %769, ptr %55, align 8, !tbaa !9
  br label %770

770:                                              ; preds = %767, %618
  br label %771

771:                                              ; preds = %770, %611
  br label %772

772:                                              ; preds = %771
  %773 = load i64, ptr %39, align 8, !tbaa !9
  %774 = add nsw i64 %773, 1
  store i64 %774, ptr %39, align 8, !tbaa !9
  br label %603, !llvm.loop !15

775:                                              ; preds = %603
  br label %776

776:                                              ; preds = %775, %543
  %777 = load ptr, ptr %20, align 8, !tbaa !5
  %778 = load i64, ptr %777, align 8, !tbaa !9
  %779 = load i64, ptr %57, align 8, !tbaa !9
  %780 = sub nsw i64 %778, %779
  store i64 %780, ptr %36, align 8, !tbaa !9
  %781 = load ptr, ptr %20, align 8, !tbaa !5
  %782 = load i64, ptr %781, align 8, !tbaa !9
  %783 = load i64, ptr %57, align 8, !tbaa !9
  %784 = sub nsw i64 %782, %783
  store i64 %784, ptr %38, align 8, !tbaa !9
  %785 = load i64, ptr %38, align 8, !tbaa !9
  %786 = icmp sge i64 %785, 1
  br i1 %786, label %787, label %789

787:                                              ; preds = %776
  %788 = load i64, ptr %38, align 8, !tbaa !9
  br label %790

789:                                              ; preds = %776
  br label %790

790:                                              ; preds = %789, %787
  %791 = phi i64 [ %788, %787 ], [ 1, %789 ]
  store i64 %791, ptr %37, align 8, !tbaa !9
  %792 = load ptr, ptr %25, align 8, !tbaa !5
  %793 = load i64, ptr %57, align 8, !tbaa !9
  %794 = add nsw i64 %793, 1
  %795 = getelementptr inbounds float, ptr %792, i64 %794
  %796 = call i32 @slascl_(ptr noundef @.str.9, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %61, ptr noundef %50, ptr noundef %36, ptr noundef @c__1, ptr noundef %795, ptr noundef %37, ptr noundef %52)
  br label %797

797:                                              ; preds = %790, %540
  %798 = load i64, ptr %68, align 8, !tbaa !9
  %799 = icmp ne i64 %798, 0
  br i1 %799, label %800, label %886

800:                                              ; preds = %797
  %801 = load ptr, ptr %31, align 8, !tbaa !5
  %802 = load i64, ptr %801, align 8, !tbaa !9
  %803 = icmp eq i64 %802, 0
  br i1 %803, label %804, label %886

804:                                              ; preds = %800
  store i64 1, ptr %63, align 8, !tbaa !9
  store i64 1, ptr %59, align 8, !tbaa !9
  %805 = load ptr, ptr %23, align 8, !tbaa !5
  store i64 0, ptr %805, align 8, !tbaa !9
  store i64 0, ptr %43, align 8, !tbaa !9
  %806 = load ptr, ptr %20, align 8, !tbaa !5
  %807 = load i64, ptr %806, align 8, !tbaa !9
  store i64 %807, ptr %36, align 8, !tbaa !9
  store i64 1, ptr %39, align 8, !tbaa !9
  br label %808

808:                                              ; preds = %882, %804
  %809 = load i64, ptr %39, align 8, !tbaa !9
  %810 = load i64, ptr %36, align 8, !tbaa !9
  %811 = icmp sle i64 %809, %810
  br i1 %811, label %812, label %885

812:                                              ; preds = %808
  %813 = load ptr, ptr %19, align 8, !tbaa !5
  %814 = load ptr, ptr %24, align 8, !tbaa !5
  %815 = load i64, ptr %39, align 8, !tbaa !9
  %816 = getelementptr inbounds float, ptr %814, i64 %815
  %817 = load ptr, ptr %25, align 8, !tbaa !5
  %818 = load i64, ptr %39, align 8, !tbaa !9
  %819 = getelementptr inbounds float, ptr %817, i64 %818
  %820 = call i64 (ptr, ptr, ...) %813(ptr noundef %816, ptr noundef %819)
  store i64 %820, ptr %58, align 8, !tbaa !9
  %821 = load ptr, ptr %25, align 8, !tbaa !5
  %822 = load i64, ptr %39, align 8, !tbaa !9
  %823 = getelementptr inbounds float, ptr %821, i64 %822
  %824 = load float, ptr %823, align 4, !tbaa !11
  %825 = fcmp oeq float %824, 0.000000e+00
  br i1 %825, label %826, label %845

826:                                              ; preds = %812
  %827 = load i64, ptr %58, align 8, !tbaa !9
  %828 = icmp ne i64 %827, 0
  br i1 %828, label %829, label %833

829:                                              ; preds = %826
  %830 = load ptr, ptr %23, align 8, !tbaa !5
  %831 = load i64, ptr %830, align 8, !tbaa !9
  %832 = add nsw i64 %831, 1
  store i64 %832, ptr %830, align 8, !tbaa !9
  br label %833

833:                                              ; preds = %829, %826
  store i64 0, ptr %43, align 8, !tbaa !9
  %834 = load i64, ptr %58, align 8, !tbaa !9
  %835 = icmp ne i64 %834, 0
  br i1 %835, label %836, label %844

836:                                              ; preds = %833
  %837 = load i64, ptr %63, align 8, !tbaa !9
  %838 = icmp ne i64 %837, 0
  br i1 %838, label %844, label %839

839:                                              ; preds = %836
  %840 = load ptr, ptr %20, align 8, !tbaa !5
  %841 = load i64, ptr %840, align 8, !tbaa !9
  %842 = add nsw i64 %841, 2
  %843 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 %842, ptr %843, align 8, !tbaa !9
  br label %844

844:                                              ; preds = %839, %836, %833
  br label %879

845:                                              ; preds = %812
  %846 = load i64, ptr %43, align 8, !tbaa !9
  %847 = icmp eq i64 %846, 1
  br i1 %847, label %848, label %877

848:                                              ; preds = %845
  %849 = load i64, ptr %58, align 8, !tbaa !9
  %850 = icmp ne i64 %849, 0
  br i1 %850, label %854, label %851

851:                                              ; preds = %848
  %852 = load i64, ptr %63, align 8, !tbaa !9
  %853 = icmp ne i64 %852, 0
  br label %854

854:                                              ; preds = %851, %848
  %855 = phi i1 [ true, %848 ], [ %853, %851 ]
  %856 = zext i1 %855 to i32
  %857 = sext i32 %856 to i64
  store i64 %857, ptr %58, align 8, !tbaa !9
  %858 = load i64, ptr %58, align 8, !tbaa !9
  store i64 %858, ptr %63, align 8, !tbaa !9
  %859 = load i64, ptr %58, align 8, !tbaa !9
  %860 = icmp ne i64 %859, 0
  br i1 %860, label %861, label %865

861:                                              ; preds = %854
  %862 = load ptr, ptr %23, align 8, !tbaa !5
  %863 = load i64, ptr %862, align 8, !tbaa !9
  %864 = add nsw i64 %863, 2
  store i64 %864, ptr %862, align 8, !tbaa !9
  br label %865

865:                                              ; preds = %861, %854
  store i64 -1, ptr %43, align 8, !tbaa !9
  %866 = load i64, ptr %58, align 8, !tbaa !9
  %867 = icmp ne i64 %866, 0
  br i1 %867, label %868, label %876

868:                                              ; preds = %865
  %869 = load i64, ptr %59, align 8, !tbaa !9
  %870 = icmp ne i64 %869, 0
  br i1 %870, label %876, label %871

871:                                              ; preds = %868
  %872 = load ptr, ptr %20, align 8, !tbaa !5
  %873 = load i64, ptr %872, align 8, !tbaa !9
  %874 = add nsw i64 %873, 2
  %875 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 %874, ptr %875, align 8, !tbaa !9
  br label %876

876:                                              ; preds = %871, %868, %865
  br label %878

877:                                              ; preds = %845
  store i64 1, ptr %43, align 8, !tbaa !9
  br label %878

878:                                              ; preds = %877, %876
  br label %879

879:                                              ; preds = %878, %844
  %880 = load i64, ptr %63, align 8, !tbaa !9
  store i64 %880, ptr %59, align 8, !tbaa !9
  %881 = load i64, ptr %58, align 8, !tbaa !9
  store i64 %881, ptr %63, align 8, !tbaa !9
  br label %882

882:                                              ; preds = %879
  %883 = load i64, ptr %39, align 8, !tbaa !9
  %884 = add nsw i64 %883, 1
  store i64 %884, ptr %39, align 8, !tbaa !9
  br label %808, !llvm.loop !16

885:                                              ; preds = %808
  br label %886

886:                                              ; preds = %885, %800, %797
  %887 = load i64, ptr %65, align 8, !tbaa !9
  %888 = sitofp i64 %887 to float
  %889 = load ptr, ptr %28, align 8, !tbaa !5
  %890 = getelementptr inbounds float, ptr %889, i64 1
  store float %888, ptr %890, align 4, !tbaa !11
  store i32 0, ptr %16, align 4
  store i32 1, ptr %71, align 4
  br label %891

891:                                              ; preds = %886, %295, %289, %281
  call void @llvm.lifetime.end.p0(i64 8, 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 4, 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 4, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 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 4, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 4, 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
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  %892 = load i32, ptr %16, align 4
  ret i32 %892
}

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

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

44:                                               ; preds = %15
  %45 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #5
  %.not350 = icmp eq i64 %45, 0
  br i1 %.not350, label %.thread368.sink.split, label %46

46:                                               ; preds = %44, %15
  %.not351 = icmp eq i64 %43, 0
  br i1 %.not351, label %47, label %49

47:                                               ; preds = %46
  %48 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.2) #5
  %.not352 = icmp eq i64 %48, 0
  br i1 %.not352, label %.thread368.sink.split, label %49

49:                                               ; preds = %47, %46
  %50 = load i64, ptr %3, align 8, !tbaa !5
  %51 = icmp slt i64 %50, 0
  br i1 %51, label %.thread368.sink.split, label %52

52:                                               ; preds = %49
  %53 = load i64, ptr %5, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %50, i64 1)
  %54 = icmp slt i64 %53, %spec.select
  br i1 %54, label %.thread368.sink.split, label %55

55:                                               ; preds = %52
  %56 = load i64, ptr %10, align 8, !tbaa !5
  %57 = icmp slt i64 %56, 1
  %58 = icmp ult i64 %56, %50
  %or.cond383 = and i1 %.not, %58
  %or.cond385 = or i1 %57, %or.cond383
  br i1 %or.cond385, label %.thread368.sink.split, label %59

59:                                               ; preds = %55
  %.pr = load i64, ptr %14, align 8, !tbaa !5
  %60 = icmp eq i64 %.pr, 0
  br i1 %60, label %61, label %.thread368

61:                                               ; preds = %59
  %62 = icmp eq i64 %50, 0
  br i1 %62, label %87, label %63

63:                                               ; preds = %61
  %64 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull %3, ptr noundef nonnull @c__1, ptr noundef nonnull %3, ptr noundef nonnull @c__0) #5
  %65 = add i64 %64, 2
  %66 = mul i64 %65, %50
  %67 = load i64, ptr %3, align 8, !tbaa !5
  %68 = mul nsw i64 %67, 3
  %69 = call i32 @shseqr_(ptr noundef nonnull @.str.1, ptr noundef %0, ptr noundef nonnull %3, ptr noundef nonnull @c__1, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull @c_n1, ptr noundef nonnull %27) #5
  %70 = load float, ptr %11, align 4, !tbaa !9
  %71 = fptosi float %70 to i64
  store i64 %66, ptr %16, align 8, !tbaa !5
  %72 = load i64, ptr %3, align 8, !tbaa !5
  br i1 %.not, label %76, label %73

73:                                               ; preds = %63
  %74 = add nsw i64 %72, %71
  store i64 %74, ptr %17, align 8, !tbaa !5
  %75 = call i64 @llvm.smax.i64(i64 %66, i64 %74)
  br label %87

76:                                               ; preds = %63
  %77 = shl i64 %72, 1
  %78 = add nsw i64 %72, -1
  %79 = call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.4, ptr noundef nonnull %3, ptr noundef nonnull @c__1, ptr noundef nonnull %3, ptr noundef nonnull @c_n1) #5
  %80 = mul nsw i64 %78, %79
  %81 = add nsw i64 %80, %77
  %82 = load i64, ptr %16, align 8
  %83 = call i64 @llvm.smax.i64(i64 %82, i64 %81)
  store i64 %83, ptr %16, align 8, !tbaa !5
  %84 = load i64, ptr %3, align 8, !tbaa !5
  %85 = add nsw i64 %84, %71
  store i64 %85, ptr %17, align 8, !tbaa !5
  %86 = call i64 @llvm.smax.i64(i64 %83, i64 %85)
  br label %87

87:                                               ; preds = %61, %73, %76
  %88 = phi i64 [ %84, %76 ], [ %72, %73 ], [ 0, %61 ]
  %.0322 = phi i64 [ %68, %76 ], [ %68, %73 ], [ 1, %61 ]
  %.0321 = phi i64 [ %86, %76 ], [ %75, %73 ], [ 1, %61 ]
  %89 = sitofp i64 %.0321 to float
  store float %89, ptr %11, align 4, !tbaa !9
  %90 = load i64, ptr %12, align 8, !tbaa !5
  %91 = icmp sge i64 %90, %.0322
  %or.cond = select i1 %91, i1 true, i1 %41
  br i1 %or.cond, label %.thread, label %.thread368.sink.split

.thread:                                          ; preds = %87
  %.pr365.pr = load i64, ptr %14, align 8, !tbaa !5
  %.not356 = icmp eq i64 %.pr365.pr, 0
  br i1 %.not356, label %95, label %.thread368

.thread368.sink.split:                            ; preds = %87, %55, %52, %49, %47, %44
  %.sink = phi i64 [ -1, %44 ], [ -2, %47 ], [ -4, %49 ], [ -6, %52 ], [ -11, %55 ], [ -13, %87 ]
  store i64 %.sink, ptr %14, align 8, !tbaa !5
  br label %.thread368

.thread368:                                       ; preds = %.thread368.sink.split, %59, %.thread
  %92 = phi i64 [ %.pr365.pr, %.thread ], [ %.pr, %59 ], [ %.sink, %.thread368.sink.split ]
  %93 = sub nsw i64 0, %92
  store i64 %93, ptr %16, align 8, !tbaa !5
  %94 = call i32 @xerbla_(ptr noundef nonnull @.str.6, ptr noundef nonnull %16) #5
  br label %282

95:                                               ; preds = %.thread
  br i1 %41, label %282, label %96

96:                                               ; preds = %95
  %97 = icmp eq i64 %88, 0
  br i1 %97, label %98, label %99

98:                                               ; preds = %96
  store i64 0, ptr %6, align 8, !tbaa !5
  br label %282

99:                                               ; preds = %96
  %100 = call double @slamch_(ptr noundef nonnull @.str.7) #5
  %101 = fptrunc double %100 to float
  %102 = call double @slamch_(ptr noundef nonnull @.str.1) #5
  %103 = fptrunc double %102 to float
  store float %103, ptr %30, align 4, !tbaa !9
  %104 = fdiv float 1.000000e+00, %103
  store float %104, ptr %29, align 4, !tbaa !9
  %105 = call i32 @slabad_(ptr noundef nonnull %30, ptr noundef nonnull %29) #5
  %106 = load float, ptr %30, align 4, !tbaa !9
  %107 = fpext float %106 to double
  %108 = call double @sqrt(double noundef %107) #5
  %109 = fpext float %101 to double
  %110 = fdiv double %108, %109
  %111 = fptrunc double %110 to float
  store float %111, ptr %30, align 4, !tbaa !9
  %112 = fdiv float 1.000000e+00, %111
  store float %112, ptr %29, align 4, !tbaa !9
  %113 = call double @slange_(ptr noundef nonnull @.str.8, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef nonnull %21) #5
  %114 = fptrunc double %113 to float
  store float %114, ptr %23, align 4, !tbaa !9
  %115 = fcmp ogt float %114, 0.000000e+00
  %116 = load float, ptr %30, align 4
  %117 = fcmp ogt float %116, %114
  %or.cond387 = select i1 %115, i1 %117, i1 false
  br i1 %or.cond387, label %121, label %118

118:                                              ; preds = %99
  %119 = load float, ptr %29, align 4, !tbaa !9
  %120 = fcmp olt float %119, %114
  br i1 %120, label %121, label %123

121:                                              ; preds = %99, %118
  %storemerge = phi float [ %119, %118 ], [ %116, %99 ]
  store float %storemerge, ptr %28, align 4, !tbaa !9
  %122 = call i32 @slascl_(ptr noundef nonnull @.str.9, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %23, ptr noundef nonnull %28, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef nonnull %25) #5
  br label %123

123:                                              ; preds = %118, %121
  %.not357375 = phi i1 [ false, %121 ], [ true, %118 ]
  %124 = call i32 @sgebal_(ptr noundef nonnull @.str.7, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef nonnull %20, ptr noundef nonnull %19, ptr noundef nonnull %11, ptr noundef nonnull %25) #5
  %125 = load i64, ptr %3, align 8, !tbaa !5
  %reass.add = shl i64 %125, 1
  %126 = or disjoint i64 %reass.add, 1
  %127 = load i64, ptr %12, align 8, !tbaa !5
  %128 = add i64 %127, 1
  %129 = sub i64 %128, %126
  store i64 %129, ptr %16, align 8, !tbaa !5
  %130 = getelementptr float, ptr %11, i64 %125
  %131 = getelementptr float, ptr %11, i64 %reass.add
  %132 = call i32 @sgehrd_(ptr noundef nonnull %3, ptr noundef nonnull %20, ptr noundef nonnull %19, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %130, ptr noundef nonnull %131, ptr noundef nonnull %16, ptr noundef nonnull %25) #5
  br i1 %.not, label %133, label %138

133:                                              ; preds = %123
  %134 = call i32 @slacpy_(ptr noundef nonnull @.str.10, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %9, ptr noundef nonnull %10) #5
  %135 = load i64, ptr %12, align 8, !tbaa !5
  %reass.sub = sub i64 %135, %126
  %136 = add i64 %reass.sub, 1
  store i64 %136, ptr %16, align 8, !tbaa !5
  %137 = call i32 @sorghr_(ptr noundef nonnull %3, ptr noundef nonnull %20, ptr noundef nonnull %19, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %130, ptr noundef nonnull %131, ptr noundef nonnull %16, ptr noundef nonnull %25) #5
  br label %138

138:                                              ; preds = %133, %123
  store i64 0, ptr %6, align 8, !tbaa !5
  %139 = load i64, ptr %12, align 8, !tbaa !5
  %140 = sub i64 %139, %125
  store i64 %140, ptr %16, align 8, !tbaa !5
  %141 = call i32 @shseqr_(ptr noundef nonnull @.str.1, ptr noundef %0, ptr noundef nonnull %3, ptr noundef nonnull %20, ptr noundef nonnull %19, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %130, ptr noundef nonnull %16, ptr noundef nonnull %27) #5
  %142 = load i64, ptr %27, align 8, !tbaa !5
  %143 = icmp sgt i64 %142, 0
  br i1 %143, label %144, label %145

144:                                              ; preds = %138
  store i64 %142, ptr %14, align 8, !tbaa !5
  br label %145

145:                                              ; preds = %144, %138
  br i1 %.not351, label %169, label %146

146:                                              ; preds = %145
  %147 = load i64, ptr %14, align 8, !tbaa !5
  %148 = icmp eq i64 %147, 0
  br i1 %148, label %149, label %169

149:                                              ; preds = %146
  br i1 %.not357375, label %153, label %150

150:                                              ; preds = %149
  %151 = call i32 @slascl_(ptr noundef nonnull @.str.9, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %28, ptr noundef nonnull %23, ptr noundef nonnull %3, ptr noundef nonnull @c__1, ptr noundef %7, ptr noundef nonnull %3, ptr noundef nonnull %25) #5
  %152 = call i32 @slascl_(ptr noundef nonnull @.str.9, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %28, ptr noundef nonnull %23, ptr noundef nonnull %3, ptr noundef nonnull @c__1, ptr noundef %8, ptr noundef nonnull %3, ptr noundef nonnull %25) #5
  br label %153

153:                                              ; preds = %150, %149
  %154 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %154, ptr %16, align 8, !tbaa !5
  %.not359390 = icmp slt i64 %154, 1
  br i1 %.not359390, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %153, %.lr.ph
  %.0334391 = phi i64 [ %159, %.lr.ph ], [ 1, %153 ]
  %155 = getelementptr inbounds float, ptr %34, i64 %.0334391
  %156 = getelementptr inbounds float, ptr %35, i64 %.0334391
  %157 = call i64 (ptr, ptr, ...) %2(ptr noundef nonnull %155, ptr noundef nonnull %156) #5
  %158 = getelementptr inbounds i64, ptr %39, i64 %.0334391
  store i64 %157, ptr %158, align 8, !tbaa !5
  %159 = add nuw nsw i64 %.0334391, 1
  %160 = load i64, ptr %16, align 8, !tbaa !5
  %.not359.not = icmp slt i64 %.0334391, %160
  br i1 %.not359.not, label %.lr.ph, label %._crit_edge, !llvm.loop !11

._crit_edge:                                      ; preds = %.lr.ph, %153
  %161 = load i64, ptr %12, align 8, !tbaa !5
  %162 = sub i64 %161, %125
  store i64 %162, ptr %16, align 8, !tbaa !5
  %163 = call i32 @strsen_(ptr noundef nonnull @.str.2, ptr noundef %0, ptr noundef %13, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %7, ptr noundef %8, ptr noundef nonnull %6, ptr noundef nonnull %18, ptr noundef nonnull %22, ptr noundef %130, ptr noundef nonnull %16, ptr noundef nonnull %24, ptr noundef nonnull @c__1, ptr noundef nonnull %26) #5
  %164 = load i64, ptr %26, align 8, !tbaa !5
  %165 = icmp sgt i64 %164, 0
  br i1 %165, label %166, label %169

166:                                              ; preds = %._crit_edge
  %167 = load i64, ptr %3, align 8, !tbaa !5
  %168 = add nsw i64 %167, %164
  store i64 %168, ptr %14, align 8, !tbaa !5
  br label %169

169:                                              ; preds = %._crit_edge, %166, %146, %145
  br i1 %.not, label %170, label %172

170:                                              ; preds = %169
  %171 = call i32 @sgebak_(ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.11, ptr noundef nonnull %3, ptr noundef nonnull %20, ptr noundef nonnull %19, ptr noundef nonnull %11, ptr noundef nonnull %3, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %25) #5
  br label %172

172:                                              ; preds = %170, %169
  br i1 %.not357375, label %253, label %173

173:                                              ; preds = %172
  %174 = call i32 @slascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %28, ptr noundef nonnull %23, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef nonnull %25) #5
  %175 = load i64, ptr %5, align 8, !tbaa !5
  %176 = add nsw i64 %175, 1
  store i64 %176, ptr %16, align 8, !tbaa !5
  %177 = call i32 @f2c_scopy(ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %16, ptr noundef %7, ptr noundef nonnull @c__1) #5
  %178 = load float, ptr %28, align 4, !tbaa !9
  %179 = load float, ptr %30, align 4, !tbaa !9
  %180 = fcmp oeq float %178, %179
  br i1 %180, label %181, label %.loopexit389

181:                                              ; preds = %173
  %182 = load i64, ptr %27, align 8, !tbaa !5
  %183 = icmp sgt i64 %182, 0
  br i1 %183, label %184, label %192

184:                                              ; preds = %181
  %185 = add nuw nsw i64 %182, 1
  %186 = load i64, ptr %19, align 8, !tbaa !5
  %187 = load i64, ptr %20, align 8, !tbaa !5
  %188 = add nsw i64 %187, -1
  store i64 %188, ptr %16, align 8, !tbaa !5
  %189 = icmp sgt i64 %187, 1
  %190 = select i1 %189, i64 %188, i64 1
  store i64 %190, ptr %17, align 8, !tbaa !5
  %191 = call i32 @slascl_(ptr noundef nonnull @.str.9, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %28, ptr noundef nonnull %23, ptr noundef nonnull %16, ptr noundef nonnull @c__1, ptr noundef %8, ptr noundef nonnull %17, ptr noundef nonnull %25) #5
  br label %198

192:                                              ; preds = %181
  br i1 %.not351, label %195, label %193

193:                                              ; preds = %192
  %194 = load i64, ptr %3, align 8, !tbaa !5
  br label %198

195:                                              ; preds = %192
  %196 = load i64, ptr %20, align 8, !tbaa !5
  %197 = load i64, ptr %19, align 8, !tbaa !5
  br label %198

198:                                              ; preds = %193, %195, %184
  %.0333 = phi i64 [ %185, %184 ], [ 1, %193 ], [ %196, %195 ]
  %.0332.in = phi i64 [ %186, %184 ], [ %194, %193 ], [ %197, %195 ]
  %.0332 = add nsw i64 %.0332.in, -1
  store i64 %.0332, ptr %16, align 8, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %33, i64 4
  %invariant.gep394 = getelementptr i8, ptr %38, i64 4
  %.not360398.not = icmp slt i64 %.0333, %.0332.in
  br i1 %.not360398.not, label %.lr.ph404.preheader, label %.loopexit389

.lr.ph404.preheader:                              ; preds = %198
  %199 = add nsw i64 %.0333, -1
  br label %.lr.ph404

.lr.ph404:                                        ; preds = %.lr.ph404.preheader, %245
  %.pre412 = phi i64 [ %.pre413, %245 ], [ %.0332, %.lr.ph404.preheader ]
  %200 = phi i64 [ %246, %245 ], [ %.0332, %.lr.ph404.preheader ]
  %.0328402 = phi i64 [ %.1329, %245 ], [ %199, %.lr.ph404.preheader ]
  %.1335399 = phi i64 [ %.pre-phi, %245 ], [ %.0333, %.lr.ph404.preheader ]
  %201 = icmp slt i64 %.1335399, %.0328402
  br i1 %201, label %.lr.ph404._crit_edge, label %202

.lr.ph404._crit_edge:                             ; preds = %.lr.ph404
  %.pre415 = add nsw i64 %.1335399, 1
  br label %245

202:                                              ; preds = %.lr.ph404
  %203 = getelementptr inbounds float, ptr %35, i64 %.1335399
  %204 = load float, ptr %203, align 4, !tbaa !9
  %205 = fcmp oeq float %204, 0.000000e+00
  %206 = add nsw i64 %.1335399, 1
  br i1 %205, label %245, label %207

207:                                              ; preds = %202
  %208 = mul nsw i64 %.1335399, %31
  %209 = getelementptr float, ptr %33, i64 %206
  %210 = getelementptr float, ptr %209, i64 %208
  %211 = load float, ptr %210, align 4, !tbaa !9
  %212 = fcmp oeq float %211, 0.000000e+00
  br i1 %212, label %213, label %214

213:                                              ; preds = %207
  store <2 x float> zeroinitializer, ptr %203, align 4, !tbaa !9
  br label %243

214:                                              ; preds = %207
  %215 = mul nsw i64 %206, %31
  %216 = getelementptr float, ptr %33, i64 %.1335399
  %217 = getelementptr float, ptr %216, i64 %215
  %218 = load float, ptr %217, align 4, !tbaa !9
  %219 = fcmp oeq float %218, 0.000000e+00
  br i1 %219, label %220, label %243

220:                                              ; preds = %214
  store <2 x float> zeroinitializer, ptr %203, align 4, !tbaa !9
  %221 = icmp sgt i64 %.1335399, 1
  br i1 %221, label %222, label %225

222:                                              ; preds = %220
  %223 = add nsw i64 %.1335399, -1
  store i64 %223, ptr %17, align 8, !tbaa !5
  %gep = getelementptr float, ptr %invariant.gep, i64 %208
  %gep393 = getelementptr float, ptr %invariant.gep, i64 %215
  %224 = call i32 @f2c_sswap(ptr noundef nonnull %17, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %gep393, ptr noundef nonnull @c__1) #5
  br label %225

225:                                              ; preds = %222, %220
  %226 = load i64, ptr %3, align 8, !tbaa !5
  %227 = icmp sgt i64 %226, %206
  br i1 %227, label %228, label %236

228:                                              ; preds = %225
  %229 = xor i64 %.1335399, -1
  %230 = add i64 %226, %229
  store i64 %230, ptr %17, align 8, !tbaa !5
  %231 = add nsw i64 %.1335399, 2
  %232 = mul nsw i64 %231, %31
  %233 = getelementptr float, ptr %216, i64 %232
  %234 = getelementptr float, ptr %209, i64 %232
  %235 = call i32 @f2c_sswap(ptr noundef nonnull %17, ptr noundef %233, ptr noundef nonnull %5, ptr noundef %234, ptr noundef nonnull %5) #5
  br label %236

236:                                              ; preds = %228, %225
  br i1 %.not, label %237, label %241

237:                                              ; preds = %236
  %238 = mul nsw i64 %.1335399, %36
  %gep395 = getelementptr float, ptr %invariant.gep394, i64 %238
  %239 = mul nsw i64 %206, %36
  %gep397 = getelementptr float, ptr %invariant.gep394, i64 %239
  %240 = call i32 @f2c_sswap(ptr noundef nonnull %3, ptr noundef %gep395, ptr noundef nonnull @c__1, ptr noundef %gep397, ptr noundef nonnull @c__1) #5
  br label %241

241:                                              ; preds = %237, %236
  %242 = load float, ptr %210, align 4, !tbaa !9
  store float %242, ptr %217, align 4, !tbaa !9
  store float 0.000000e+00, ptr %210, align 4, !tbaa !9
  %.pre.pre = load i64, ptr %16, align 8, !tbaa !5
  br label %243

243:                                              ; preds = %214, %241, %213
  %.pre = phi i64 [ %.pre412, %214 ], [ %.pre.pre, %241 ], [ %.pre412, %213 ]
  %244 = add nsw i64 %.1335399, 2
  br label %245

245:                                              ; preds = %202, %.lr.ph404._crit_edge, %243
  %.pre-phi = phi i64 [ %.pre415, %.lr.ph404._crit_edge ], [ %206, %243 ], [ %206, %202 ]
  %.pre413 = phi i64 [ %.pre412, %.lr.ph404._crit_edge ], [ %.pre, %243 ], [ %.pre412, %202 ]
  %246 = phi i64 [ %200, %.lr.ph404._crit_edge ], [ %.pre, %243 ], [ %200, %202 ]
  %.1329 = phi i64 [ %.0328402, %.lr.ph404._crit_edge ], [ %244, %243 ], [ %206, %202 ]
  %.not360.not = icmp slt i64 %.1335399, %246
  br i1 %.not360.not, label %.lr.ph404, label %.loopexit389, !llvm.loop !13

.loopexit389:                                     ; preds = %245, %198, %173
  %247 = load i64, ptr %3, align 8, !tbaa !5
  %248 = load i64, ptr %27, align 8, !tbaa !5
  %249 = sub nsw i64 %247, %248
  store i64 %249, ptr %16, align 8, !tbaa !5
  %250 = call i64 @llvm.smax.i64(i64 %249, i64 1)
  store i64 %250, ptr %17, align 8, !tbaa !5
  %251 = getelementptr float, ptr %8, i64 %248
  %252 = call i32 @slascl_(ptr noundef nonnull @.str.9, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %28, ptr noundef nonnull %23, ptr noundef nonnull %16, ptr noundef nonnull @c__1, ptr noundef %251, ptr noundef nonnull %17, ptr noundef nonnull %25) #5
  br label %253

253:                                              ; preds = %.loopexit389, %172
  br i1 %.not351, label %.loopexit, label %254

254:                                              ; preds = %253
  %255 = load i64, ptr %14, align 8, !tbaa !5
  %256 = icmp eq i64 %255, 0
  br i1 %256, label %257, label %.loopexit

257:                                              ; preds = %254
  store i64 0, ptr %6, align 8, !tbaa !5
  %258 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %258, ptr %16, align 8, !tbaa !5
  %.not361405 = icmp slt i64 %258, 1
  br i1 %.not361405, label %.loopexit, label %.lr.ph411

.lr.ph411:                                        ; preds = %257, %.thread376
  %.0323409 = phi i64 [ %.0327, %.thread376 ], [ 1, %257 ]
  %.0326408 = phi i64 [ %.1324, %.thread376 ], [ 1, %257 ]
  %.0330407 = phi i64 [ %.1331, %.thread376 ], [ 0, %257 ]
  %.2406 = phi i64 [ %280, %.thread376 ], [ 1, %257 ]
  %259 = getelementptr inbounds float, ptr %34, i64 %.2406
  %260 = getelementptr inbounds float, ptr %35, i64 %.2406
  %261 = call i64 (ptr, ptr, ...) %2(ptr noundef nonnull %259, ptr noundef nonnull %260) #5
  %262 = load float, ptr %260, align 4, !tbaa !9
  %263 = fcmp oeq float %262, 0.000000e+00
  br i1 %263, label %264, label %268

264:                                              ; preds = %.lr.ph411
  %.not363 = icmp eq i64 %261, 0
  br i1 %.not363, label %.thread376, label %265

265:                                              ; preds = %264
  %266 = load i64, ptr %6, align 8, !tbaa !5
  %267 = add nsw i64 %266, 1
  store i64 %267, ptr %6, align 8, !tbaa !5
  %.not384 = icmp eq i64 %.0323409, 0
  br i1 %.not384, label %.thread376.sink.split, label %.thread376

268:                                              ; preds = %.lr.ph411
  %269 = icmp eq i64 %.0330407, 1
  br i1 %269, label %270, label %.thread376

270:                                              ; preds = %268
  %271 = icmp ne i64 %261, 0
  %272 = icmp ne i64 %.0323409, 0
  %273 = select i1 %271, i1 true, i1 %272
  br i1 %273, label %274, label %.thread376

274:                                              ; preds = %270
  %275 = load i64, ptr %6, align 8, !tbaa !5
  %276 = add nsw i64 %275, 2
  store i64 %276, ptr %6, align 8, !tbaa !5
  %277 = icmp eq i64 %.0326408, 0
  br i1 %277, label %.thread376.sink.split, label %.thread376

.thread376.sink.split:                            ; preds = %274, %265
  %.1331.ph = phi i64 [ 0, %265 ], [ -1, %274 ]
  %.0327.ph = phi i64 [ %261, %265 ], [ 1, %274 ]
  %.1324.ph = phi i64 [ 0, %265 ], [ 1, %274 ]
  %278 = load i64, ptr %3, align 8, !tbaa !5
  %279 = add nsw i64 %278, 2
  store i64 %279, ptr %14, align 8, !tbaa !5
  br label %.thread376

.thread376:                                       ; preds = %.thread376.sink.split, %270, %264, %268, %274, %265
  %.1331 = phi i64 [ 0, %265 ], [ -1, %274 ], [ 1, %268 ], [ 0, %264 ], [ -1, %270 ], [ %.1331.ph, %.thread376.sink.split ]
  %.0327 = phi i64 [ %261, %265 ], [ 1, %274 ], [ %261, %268 ], [ 0, %264 ], [ 0, %270 ], [ %.0327.ph, %.thread376.sink.split ]
  %.1324 = phi i64 [ %.0323409, %265 ], [ 1, %274 ], [ %.0323409, %268 ], [ %.0323409, %264 ], [ 0, %270 ], [ %.1324.ph, %.thread376.sink.split ]
  %280 = add nuw nsw i64 %.2406, 1
  %281 = load i64, ptr %16, align 8, !tbaa !5
  %.not361.not = icmp slt i64 %.2406, %281
  br i1 %.not361.not, label %.lr.ph411, label %.loopexit, !llvm.loop !14

.loopexit:                                        ; preds = %.thread376, %257, %254, %253
  store float %89, ptr %11, align 4, !tbaa !9
  br label %282

282:                                              ; preds = %95, %.loopexit, %98, %.thread368
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #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,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass