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

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

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

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

104:                                              ; preds = %18
  %105 = load ptr, ptr %20, align 8, !tbaa !5
  %106 = call i64 @lsame_(ptr noundef %105, ptr noundef @.str.3)
  %107 = icmp ne i64 %106, 0
  br i1 %107, label %110, label %108

108:                                              ; preds = %104
  %109 = load ptr, ptr %37, align 8, !tbaa !5
  store i64 -1, ptr %109, align 8, !tbaa !9
  br label %196

110:                                              ; preds = %104, %18
  %111 = load i64, ptr %60, align 8, !tbaa !9
  %112 = icmp ne i64 %111, 0
  br i1 %112, label %121, label %113

113:                                              ; preds = %110
  %114 = load i64, ptr %64, align 8, !tbaa !9
  %115 = icmp ne i64 %114, 0
  br i1 %115, label %121, label %116

116:                                              ; preds = %113
  %117 = load i64, ptr %61, align 8, !tbaa !9
  %118 = icmp ne i64 %117, 0
  br i1 %118, label %121, label %119

119:                                              ; preds = %116
  %120 = load ptr, ptr %37, align 8, !tbaa !5
  store i64 -2, ptr %120, align 8, !tbaa !9
  br label %195

121:                                              ; preds = %116, %113, %110
  %122 = load ptr, ptr %22, align 8, !tbaa !5
  %123 = load i64, ptr %122, align 8, !tbaa !9
  %124 = icmp slt i64 %123, 0
  br i1 %124, label %125, label %127

125:                                              ; preds = %121
  %126 = load ptr, ptr %37, align 8, !tbaa !5
  store i64 -3, ptr %126, align 8, !tbaa !9
  br label %194

127:                                              ; preds = %121
  %128 = load i64, ptr %64, align 8, !tbaa !9
  %129 = icmp ne i64 %128, 0
  br i1 %129, label %130, label %143

130:                                              ; preds = %127
  %131 = load ptr, ptr %22, align 8, !tbaa !5
  %132 = load i64, ptr %131, align 8, !tbaa !9
  %133 = icmp sgt i64 %132, 0
  br i1 %133, label %134, label %142

134:                                              ; preds = %130
  %135 = load ptr, ptr %26, align 8, !tbaa !5
  %136 = load float, ptr %135, align 4, !tbaa !11
  %137 = load ptr, ptr %25, align 8, !tbaa !5
  %138 = load float, ptr %137, align 4, !tbaa !11
  %139 = fcmp ole float %136, %138
  br i1 %139, label %140, label %142

140:                                              ; preds = %134
  %141 = load ptr, ptr %37, align 8, !tbaa !5
  store i64 -7, ptr %141, align 8, !tbaa !9
  br label %142

142:                                              ; preds = %140, %134, %130
  br label %193

143:                                              ; preds = %127
  %144 = load i64, ptr %61, align 8, !tbaa !9
  %145 = icmp ne i64 %144, 0
  br i1 %145, label %146, label %192

146:                                              ; preds = %143
  %147 = load ptr, ptr %27, align 8, !tbaa !5
  %148 = load i64, ptr %147, align 8, !tbaa !9
  %149 = icmp slt i64 %148, 1
  br i1 %149, label %163, label %150

150:                                              ; preds = %146
  %151 = load ptr, ptr %27, align 8, !tbaa !5
  %152 = load i64, ptr %151, align 8, !tbaa !9
  %153 = load ptr, ptr %22, align 8, !tbaa !5
  %154 = load i64, ptr %153, align 8, !tbaa !9
  %155 = icmp sge i64 1, %154
  br i1 %155, label %156, label %157

156:                                              ; preds = %150
  br label %160

157:                                              ; preds = %150
  %158 = load ptr, ptr %22, align 8, !tbaa !5
  %159 = load i64, ptr %158, align 8, !tbaa !9
  br label %160

160:                                              ; preds = %157, %156
  %161 = phi i64 [ 1, %156 ], [ %159, %157 ]
  %162 = icmp sgt i64 %152, %161
  br i1 %162, label %163, label %165

163:                                              ; preds = %160, %146
  %164 = load ptr, ptr %37, align 8, !tbaa !5
  store i64 -8, ptr %164, align 8, !tbaa !9
  br label %191

165:                                              ; preds = %160
  %166 = load ptr, ptr %28, align 8, !tbaa !5
  %167 = load i64, ptr %166, align 8, !tbaa !9
  %168 = load ptr, ptr %22, align 8, !tbaa !5
  %169 = load i64, ptr %168, align 8, !tbaa !9
  %170 = load ptr, ptr %27, align 8, !tbaa !5
  %171 = load i64, ptr %170, align 8, !tbaa !9
  %172 = icmp sle i64 %169, %171
  br i1 %172, label %173, label %176

173:                                              ; preds = %165
  %174 = load ptr, ptr %22, align 8, !tbaa !5
  %175 = load i64, ptr %174, align 8, !tbaa !9
  br label %179

176:                                              ; preds = %165
  %177 = load ptr, ptr %27, align 8, !tbaa !5
  %178 = load i64, ptr %177, align 8, !tbaa !9
  br label %179

179:                                              ; preds = %176, %173
  %180 = phi i64 [ %175, %173 ], [ %178, %176 ]
  %181 = icmp slt i64 %167, %180
  br i1 %181, label %188, label %182

182:                                              ; preds = %179
  %183 = load ptr, ptr %28, align 8, !tbaa !5
  %184 = load i64, ptr %183, align 8, !tbaa !9
  %185 = load ptr, ptr %22, align 8, !tbaa !5
  %186 = load i64, ptr %185, align 8, !tbaa !9
  %187 = icmp sgt i64 %184, %186
  br i1 %187, label %188, label %190

188:                                              ; preds = %182, %179
  %189 = load ptr, ptr %37, align 8, !tbaa !5
  store i64 -9, ptr %189, align 8, !tbaa !9
  br label %190

190:                                              ; preds = %188, %182
  br label %191

191:                                              ; preds = %190, %163
  br label %192

192:                                              ; preds = %191, %143
  br label %193

193:                                              ; preds = %192, %142
  br label %194

194:                                              ; preds = %193, %125
  br label %195

195:                                              ; preds = %194, %119
  br label %196

196:                                              ; preds = %195, %108
  %197 = load ptr, ptr %37, align 8, !tbaa !5
  %198 = load i64, ptr %197, align 8, !tbaa !9
  %199 = icmp eq i64 %198, 0
  br i1 %199, label %200, label %216

200:                                              ; preds = %196
  %201 = load ptr, ptr %33, align 8, !tbaa !5
  %202 = load i64, ptr %201, align 8, !tbaa !9
  %203 = icmp slt i64 %202, 1
  br i1 %203, label %213, label %204

204:                                              ; preds = %200
  %205 = load i64, ptr %59, align 8, !tbaa !9
  %206 = icmp ne i64 %205, 0
  br i1 %206, label %207, label %215

207:                                              ; preds = %204
  %208 = load ptr, ptr %33, align 8, !tbaa !5
  %209 = load i64, ptr %208, align 8, !tbaa !9
  %210 = load ptr, ptr %22, align 8, !tbaa !5
  %211 = load i64, ptr %210, align 8, !tbaa !9
  %212 = icmp slt i64 %209, %211
  br i1 %212, label %213, label %215

213:                                              ; preds = %207, %200
  %214 = load ptr, ptr %37, align 8, !tbaa !5
  store i64 -14, ptr %214, align 8, !tbaa !9
  br label %215

215:                                              ; preds = %213, %207, %204
  br label %216

216:                                              ; preds = %215, %196
  %217 = load ptr, ptr %37, align 8, !tbaa !5
  %218 = load i64, ptr %217, align 8, !tbaa !9
  %219 = icmp ne i64 %218, 0
  br i1 %219, label %220, label %225

220:                                              ; preds = %216
  %221 = load ptr, ptr %37, align 8, !tbaa !5
  %222 = load i64, ptr %221, align 8, !tbaa !9
  %223 = sub nsw i64 0, %222
  store i64 %223, ptr %40, align 8, !tbaa !9
  %224 = call i32 @xerbla_(ptr noundef @.str.4, ptr noundef %40)
  store i32 0, ptr %19, align 4
  store i32 1, ptr %72, align 4
  br label %690

225:                                              ; preds = %216
  %226 = load ptr, ptr %30, align 8, !tbaa !5
  store i64 0, ptr %226, align 8, !tbaa !9
  %227 = load ptr, ptr %22, align 8, !tbaa !5
  %228 = load i64, ptr %227, align 8, !tbaa !9
  %229 = icmp eq i64 %228, 0
  br i1 %229, label %230, label %231

230:                                              ; preds = %225
  store i32 0, ptr %19, align 4
  store i32 1, ptr %72, align 4
  br label %690

231:                                              ; preds = %225
  %232 = load ptr, ptr %22, align 8, !tbaa !5
  %233 = load i64, ptr %232, align 8, !tbaa !9
  %234 = icmp eq i64 %233, 1
  br i1 %234, label %235, label %279

235:                                              ; preds = %231
  %236 = load i64, ptr %60, align 8, !tbaa !9
  %237 = icmp ne i64 %236, 0
  br i1 %237, label %241, label %238

238:                                              ; preds = %235
  %239 = load i64, ptr %61, align 8, !tbaa !9
  %240 = icmp ne i64 %239, 0
  br i1 %240, label %241, label %248

241:                                              ; preds = %238, %235
  %242 = load ptr, ptr %30, align 8, !tbaa !5
  store i64 1, ptr %242, align 8, !tbaa !9
  %243 = load ptr, ptr %23, align 8, !tbaa !5
  %244 = getelementptr inbounds float, ptr %243, i64 1
  %245 = load float, ptr %244, align 4, !tbaa !11
  %246 = load ptr, ptr %31, align 8, !tbaa !5
  %247 = getelementptr inbounds float, ptr %246, i64 1
  store float %245, ptr %247, align 4, !tbaa !11
  br label %270

248:                                              ; preds = %238
  %249 = load ptr, ptr %25, align 8, !tbaa !5
  %250 = load float, ptr %249, align 4, !tbaa !11
  %251 = load ptr, ptr %23, align 8, !tbaa !5
  %252 = getelementptr inbounds float, ptr %251, i64 1
  %253 = load float, ptr %252, align 4, !tbaa !11
  %254 = fcmp olt float %250, %253
  br i1 %254, label %255, label %269

255:                                              ; preds = %248
  %256 = load ptr, ptr %26, align 8, !tbaa !5
  %257 = load float, ptr %256, align 4, !tbaa !11
  %258 = load ptr, ptr %23, align 8, !tbaa !5
  %259 = getelementptr inbounds float, ptr %258, i64 1
  %260 = load float, ptr %259, align 4, !tbaa !11
  %261 = fcmp oge float %257, %260
  br i1 %261, label %262, label %269

262:                                              ; preds = %255
  %263 = load ptr, ptr %30, align 8, !tbaa !5
  store i64 1, ptr %263, align 8, !tbaa !9
  %264 = load ptr, ptr %23, align 8, !tbaa !5
  %265 = getelementptr inbounds float, ptr %264, i64 1
  %266 = load float, ptr %265, align 4, !tbaa !11
  %267 = load ptr, ptr %31, align 8, !tbaa !5
  %268 = getelementptr inbounds float, ptr %267, i64 1
  store float %266, ptr %268, align 4, !tbaa !11
  br label %269

269:                                              ; preds = %262, %255, %248
  br label %270

270:                                              ; preds = %269, %241
  %271 = load i64, ptr %59, align 8, !tbaa !9
  %272 = icmp ne i64 %271, 0
  br i1 %272, label %273, label %278

273:                                              ; preds = %270
  %274 = load ptr, ptr %32, align 8, !tbaa !5
  %275 = load i64, ptr %38, align 8, !tbaa !9
  %276 = add nsw i64 %275, 1
  %277 = getelementptr inbounds float, ptr %274, i64 %276
  store float 1.000000e+00, ptr %277, align 4, !tbaa !11
  br label %278

278:                                              ; preds = %273, %270
  store i32 0, ptr %19, align 4
  store i32 1, ptr %72, align 4
  br label %690

279:                                              ; preds = %231
  %280 = call double @slamch_(ptr noundef @.str.5)
  %281 = fptrunc double %280 to float
  store float %281, ptr %65, align 4, !tbaa !11
  %282 = call double @slamch_(ptr noundef @.str.6)
  %283 = fptrunc double %282 to float
  store float %283, ptr %47, align 4, !tbaa !11
  %284 = load float, ptr %65, align 4, !tbaa !11
  %285 = load float, ptr %47, align 4, !tbaa !11
  %286 = fdiv float %284, %285
  store float %286, ptr %71, align 4, !tbaa !11
  %287 = load float, ptr %71, align 4, !tbaa !11
  %288 = fdiv float 1.000000e+00, %287
  store float %288, ptr %66, align 4, !tbaa !11
  %289 = load float, ptr %71, align 4, !tbaa !11
  %290 = fpext float %289 to double
  %291 = call double @sqrt(double noundef %290) #4
  %292 = fptrunc double %291 to float
  store float %292, ptr %52, align 4, !tbaa !11
  %293 = load float, ptr %66, align 4, !tbaa !11
  %294 = fpext float %293 to double
  %295 = call double @sqrt(double noundef %294) #4
  %296 = fptrunc double %295 to float
  store float %296, ptr %42, align 4, !tbaa !11
  %297 = load float, ptr %65, align 4, !tbaa !11
  %298 = fpext float %297 to double
  %299 = call double @sqrt(double noundef %298) #4
  %300 = call double @sqrt(double noundef %299) #4
  %301 = fdiv double 1.000000e+00, %300
  %302 = fptrunc double %301 to float
  store float %302, ptr %43, align 4, !tbaa !11
  %303 = load float, ptr %42, align 4, !tbaa !11
  %304 = load float, ptr %43, align 4, !tbaa !11
  %305 = fcmp ole float %303, %304
  br i1 %305, label %306, label %308

306:                                              ; preds = %279
  %307 = load float, ptr %42, align 4, !tbaa !11
  br label %310

308:                                              ; preds = %279
  %309 = load float, ptr %43, align 4, !tbaa !11
  br label %310

310:                                              ; preds = %308, %306
  %311 = phi float [ %307, %306 ], [ %309, %308 ]
  %312 = fpext float %311 to double
  %313 = fptrunc double %312 to float
  store float %313, ptr %53, align 4, !tbaa !11
  store i64 0, ptr %62, align 8, !tbaa !9
  %314 = load i64, ptr %64, align 8, !tbaa !9
  %315 = icmp ne i64 %314, 0
  br i1 %315, label %316, label %321

316:                                              ; preds = %310
  %317 = load ptr, ptr %25, align 8, !tbaa !5
  %318 = load float, ptr %317, align 4, !tbaa !11
  store float %318, ptr %48, align 4, !tbaa !11
  %319 = load ptr, ptr %26, align 8, !tbaa !5
  %320 = load float, ptr %319, align 4, !tbaa !11
  store float %320, ptr %49, align 4, !tbaa !11
  br label %322

321:                                              ; preds = %310
  store float 0.000000e+00, ptr %48, align 4, !tbaa !11
  store float 0.000000e+00, ptr %49, align 4, !tbaa !11
  br label %322

322:                                              ; preds = %321, %316
  %323 = load ptr, ptr %22, align 8, !tbaa !5
  %324 = load ptr, ptr %23, align 8, !tbaa !5
  %325 = getelementptr inbounds float, ptr %324, i64 1
  %326 = load ptr, ptr %24, align 8, !tbaa !5
  %327 = getelementptr inbounds float, ptr %326, i64 1
  %328 = call double @slanst_(ptr noundef @.str.7, ptr noundef %323, ptr noundef %325, ptr noundef %327)
  %329 = fptrunc double %328 to float
  store float %329, ptr %55, align 4, !tbaa !11
  %330 = load float, ptr %55, align 4, !tbaa !11
  %331 = fcmp ogt float %330, 0.000000e+00
  br i1 %331, label %332, label %340

332:                                              ; preds = %322
  %333 = load float, ptr %55, align 4, !tbaa !11
  %334 = load float, ptr %52, align 4, !tbaa !11
  %335 = fcmp olt float %333, %334
  br i1 %335, label %336, label %340

336:                                              ; preds = %332
  store i64 1, ptr %62, align 8, !tbaa !9
  %337 = load float, ptr %52, align 4, !tbaa !11
  %338 = load float, ptr %55, align 4, !tbaa !11
  %339 = fdiv float %337, %338
  store float %339, ptr %57, align 4, !tbaa !11
  br label %349

340:                                              ; preds = %332, %322
  %341 = load float, ptr %55, align 4, !tbaa !11
  %342 = load float, ptr %53, align 4, !tbaa !11
  %343 = fcmp ogt float %341, %342
  br i1 %343, label %344, label %348

344:                                              ; preds = %340
  store i64 1, ptr %62, align 8, !tbaa !9
  %345 = load float, ptr %53, align 4, !tbaa !11
  %346 = load float, ptr %55, align 4, !tbaa !11
  %347 = fdiv float %345, %346
  store float %347, ptr %57, align 4, !tbaa !11
  br label %348

348:                                              ; preds = %344, %340
  br label %349

349:                                              ; preds = %348, %336
  %350 = load i64, ptr %62, align 8, !tbaa !9
  %351 = icmp eq i64 %350, 1
  br i1 %351, label %352, label %375

352:                                              ; preds = %349
  %353 = load ptr, ptr %22, align 8, !tbaa !5
  %354 = load ptr, ptr %23, align 8, !tbaa !5
  %355 = getelementptr inbounds float, ptr %354, i64 1
  %356 = call i32 @f2c_sscal(ptr noundef %353, ptr noundef %57, ptr noundef %355, ptr noundef @c__1)
  %357 = load ptr, ptr %22, align 8, !tbaa !5
  %358 = load i64, ptr %357, align 8, !tbaa !9
  %359 = sub nsw i64 %358, 1
  store i64 %359, ptr %40, align 8, !tbaa !9
  %360 = load ptr, ptr %24, align 8, !tbaa !5
  %361 = getelementptr inbounds float, ptr %360, i64 1
  %362 = call i32 @f2c_sscal(ptr noundef %40, ptr noundef %57, ptr noundef %361, ptr noundef @c__1)
  %363 = load i64, ptr %64, align 8, !tbaa !9
  %364 = icmp ne i64 %363, 0
  br i1 %364, label %365, label %374

365:                                              ; preds = %352
  %366 = load ptr, ptr %25, align 8, !tbaa !5
  %367 = load float, ptr %366, align 4, !tbaa !11
  %368 = load float, ptr %57, align 4, !tbaa !11
  %369 = fmul float %367, %368
  store float %369, ptr %48, align 4, !tbaa !11
  %370 = load ptr, ptr %26, align 8, !tbaa !5
  %371 = load float, ptr %370, align 4, !tbaa !11
  %372 = load float, ptr %57, align 4, !tbaa !11
  %373 = fmul float %371, %372
  store float %373, ptr %49, align 4, !tbaa !11
  br label %374

374:                                              ; preds = %365, %352
  br label %375

375:                                              ; preds = %374, %349
  store i64 0, ptr %54, align 8, !tbaa !9
  %376 = load i64, ptr %61, align 8, !tbaa !9
  %377 = icmp ne i64 %376, 0
  br i1 %377, label %378, label %390

378:                                              ; preds = %375
  %379 = load ptr, ptr %27, align 8, !tbaa !5
  %380 = load i64, ptr %379, align 8, !tbaa !9
  %381 = icmp eq i64 %380, 1
  br i1 %381, label %382, label %389

382:                                              ; preds = %378
  %383 = load ptr, ptr %28, align 8, !tbaa !5
  %384 = load i64, ptr %383, align 8, !tbaa !9
  %385 = load ptr, ptr %22, align 8, !tbaa !5
  %386 = load i64, ptr %385, align 8, !tbaa !9
  %387 = icmp eq i64 %384, %386
  br i1 %387, label %388, label %389

388:                                              ; preds = %382
  store i64 1, ptr %54, align 8, !tbaa !9
  br label %389

389:                                              ; preds = %388, %382, %378
  br label %390

390:                                              ; preds = %389, %375
  %391 = load i64, ptr %60, align 8, !tbaa !9
  %392 = icmp ne i64 %391, 0
  br i1 %392, label %396, label %393

393:                                              ; preds = %390
  %394 = load i64, ptr %54, align 8, !tbaa !9
  %395 = icmp ne i64 %394, 0
  br i1 %395, label %396, label %472

396:                                              ; preds = %393, %390
  %397 = load ptr, ptr %29, align 8, !tbaa !5
  %398 = load float, ptr %397, align 4, !tbaa !11
  %399 = fcmp ole float %398, 0.000000e+00
  br i1 %399, label %400, label %472

400:                                              ; preds = %396
  %401 = load ptr, ptr %22, align 8, !tbaa !5
  %402 = load ptr, ptr %23, align 8, !tbaa !5
  %403 = getelementptr inbounds float, ptr %402, i64 1
  %404 = load ptr, ptr %31, align 8, !tbaa !5
  %405 = getelementptr inbounds float, ptr %404, i64 1
  %406 = call i32 @f2c_scopy(ptr noundef %401, ptr noundef %403, ptr noundef @c__1, ptr noundef %405, ptr noundef @c__1)
  %407 = load ptr, ptr %22, align 8, !tbaa !5
  %408 = load i64, ptr %407, align 8, !tbaa !9
  %409 = sub nsw i64 %408, 1
  store i64 %409, ptr %40, align 8, !tbaa !9
  %410 = load ptr, ptr %24, align 8, !tbaa !5
  %411 = getelementptr inbounds float, ptr %410, i64 1
  %412 = load ptr, ptr %34, align 8, !tbaa !5
  %413 = getelementptr inbounds float, ptr %412, i64 1
  %414 = call i32 @f2c_scopy(ptr noundef %40, ptr noundef %411, ptr noundef @c__1, ptr noundef %413, ptr noundef @c__1)
  %415 = load ptr, ptr %22, align 8, !tbaa !5
  %416 = load i64, ptr %415, align 8, !tbaa !9
  %417 = add nsw i64 %416, 1
  store i64 %417, ptr %69, align 8, !tbaa !9
  %418 = load i64, ptr %59, align 8, !tbaa !9
  %419 = icmp ne i64 %418, 0
  br i1 %419, label %428, label %420

420:                                              ; preds = %400
  %421 = load ptr, ptr %22, align 8, !tbaa !5
  %422 = load ptr, ptr %31, align 8, !tbaa !5
  %423 = getelementptr inbounds float, ptr %422, i64 1
  %424 = load ptr, ptr %34, align 8, !tbaa !5
  %425 = getelementptr inbounds float, ptr %424, i64 1
  %426 = load ptr, ptr %37, align 8, !tbaa !5
  %427 = call i32 @ssterf_(ptr noundef %421, ptr noundef %423, ptr noundef %425, ptr noundef %426)
  br label %462

428:                                              ; preds = %400
  %429 = load ptr, ptr %22, align 8, !tbaa !5
  %430 = load ptr, ptr %31, align 8, !tbaa !5
  %431 = getelementptr inbounds float, ptr %430, i64 1
  %432 = load ptr, ptr %34, align 8, !tbaa !5
  %433 = getelementptr inbounds float, ptr %432, i64 1
  %434 = load ptr, ptr %32, align 8, !tbaa !5
  %435 = load i64, ptr %39, align 8, !tbaa !9
  %436 = getelementptr inbounds float, ptr %434, i64 %435
  %437 = load ptr, ptr %33, align 8, !tbaa !5
  %438 = load ptr, ptr %34, align 8, !tbaa !5
  %439 = load i64, ptr %69, align 8, !tbaa !9
  %440 = getelementptr inbounds float, ptr %438, i64 %439
  %441 = load ptr, ptr %37, align 8, !tbaa !5
  %442 = call i32 @ssteqr_(ptr noundef @.str.2, ptr noundef %429, ptr noundef %431, ptr noundef %433, ptr noundef %436, ptr noundef %437, ptr noundef %440, ptr noundef %441)
  %443 = load ptr, ptr %37, align 8, !tbaa !5
  %444 = load i64, ptr %443, align 8, !tbaa !9
  %445 = icmp eq i64 %444, 0
  br i1 %445, label %446, label %461

446:                                              ; preds = %428
  %447 = load ptr, ptr %22, align 8, !tbaa !5
  %448 = load i64, ptr %447, align 8, !tbaa !9
  store i64 %448, ptr %40, align 8, !tbaa !9
  store i64 1, ptr %44, align 8, !tbaa !9
  br label %449

449:                                              ; preds = %457, %446
  %450 = load i64, ptr %44, align 8, !tbaa !9
  %451 = load i64, ptr %40, align 8, !tbaa !9
  %452 = icmp sle i64 %450, %451
  br i1 %452, label %453, label %460

453:                                              ; preds = %449
  %454 = load ptr, ptr %36, align 8, !tbaa !5
  %455 = load i64, ptr %44, align 8, !tbaa !9
  %456 = getelementptr inbounds i64, ptr %454, i64 %455
  store i64 0, ptr %456, align 8, !tbaa !9
  br label %457

457:                                              ; preds = %453
  %458 = load i64, ptr %44, align 8, !tbaa !9
  %459 = add nsw i64 %458, 1
  store i64 %459, ptr %44, align 8, !tbaa !9
  br label %449, !llvm.loop !13

460:                                              ; preds = %449
  br label %461

461:                                              ; preds = %460, %428
  br label %462

462:                                              ; preds = %461, %420
  %463 = load ptr, ptr %37, align 8, !tbaa !5
  %464 = load i64, ptr %463, align 8, !tbaa !9
  %465 = icmp eq i64 %464, 0
  br i1 %465, label %466, label %470

466:                                              ; preds = %462
  %467 = load ptr, ptr %22, align 8, !tbaa !5
  %468 = load i64, ptr %467, align 8, !tbaa !9
  %469 = load ptr, ptr %30, align 8, !tbaa !5
  store i64 %468, ptr %469, align 8, !tbaa !9
  br label %547

470:                                              ; preds = %462
  %471 = load ptr, ptr %37, align 8, !tbaa !5
  store i64 0, ptr %471, align 8, !tbaa !9
  br label %472

472:                                              ; preds = %470, %396, %393
  %473 = load i64, ptr %59, align 8, !tbaa !9
  %474 = icmp ne i64 %473, 0
  br i1 %474, label %475, label %477

475:                                              ; preds = %472
  %476 = getelementptr inbounds [1 x i8], ptr %58, i64 0, i64 0
  store i8 66, ptr %476, align 1, !tbaa !15
  br label %479

477:                                              ; preds = %472
  %478 = getelementptr inbounds [1 x i8], ptr %58, i64 0, i64 0
  store i8 69, ptr %478, align 1, !tbaa !15
  br label %479

479:                                              ; preds = %477, %475
  store i64 1, ptr %69, align 8, !tbaa !9
  store i64 1, ptr %63, align 8, !tbaa !9
  %480 = load i64, ptr %63, align 8, !tbaa !9
  %481 = load ptr, ptr %22, align 8, !tbaa !5
  %482 = load i64, ptr %481, align 8, !tbaa !9
  %483 = add nsw i64 %480, %482
  store i64 %483, ptr %67, align 8, !tbaa !9
  %484 = load i64, ptr %67, align 8, !tbaa !9
  %485 = load ptr, ptr %22, align 8, !tbaa !5
  %486 = load i64, ptr %485, align 8, !tbaa !9
  %487 = add nsw i64 %484, %486
  store i64 %487, ptr %68, align 8, !tbaa !9
  %488 = load ptr, ptr %21, align 8, !tbaa !5
  %489 = getelementptr inbounds [1 x i8], ptr %58, i64 0, i64 0
  %490 = load ptr, ptr %22, align 8, !tbaa !5
  %491 = load ptr, ptr %27, align 8, !tbaa !5
  %492 = load ptr, ptr %28, align 8, !tbaa !5
  %493 = load ptr, ptr %29, align 8, !tbaa !5
  %494 = load ptr, ptr %23, align 8, !tbaa !5
  %495 = getelementptr inbounds float, ptr %494, i64 1
  %496 = load ptr, ptr %24, align 8, !tbaa !5
  %497 = getelementptr inbounds float, ptr %496, i64 1
  %498 = load ptr, ptr %30, align 8, !tbaa !5
  %499 = load ptr, ptr %31, align 8, !tbaa !5
  %500 = getelementptr inbounds float, ptr %499, i64 1
  %501 = load ptr, ptr %35, align 8, !tbaa !5
  %502 = load i64, ptr %63, align 8, !tbaa !9
  %503 = getelementptr inbounds i64, ptr %501, i64 %502
  %504 = load ptr, ptr %35, align 8, !tbaa !5
  %505 = load i64, ptr %67, align 8, !tbaa !9
  %506 = getelementptr inbounds i64, ptr %504, i64 %505
  %507 = load ptr, ptr %34, align 8, !tbaa !5
  %508 = load i64, ptr %69, align 8, !tbaa !9
  %509 = getelementptr inbounds float, ptr %507, i64 %508
  %510 = load ptr, ptr %35, align 8, !tbaa !5
  %511 = load i64, ptr %68, align 8, !tbaa !9
  %512 = getelementptr inbounds i64, ptr %510, i64 %511
  %513 = load ptr, ptr %37, align 8, !tbaa !5
  %514 = call i32 @sstebz_(ptr noundef %488, ptr noundef %489, ptr noundef %490, ptr noundef %48, ptr noundef %49, ptr noundef %491, ptr noundef %492, ptr noundef %493, ptr noundef %495, ptr noundef %497, ptr noundef %498, ptr noundef %70, ptr noundef %500, ptr noundef %503, ptr noundef %506, ptr noundef %509, ptr noundef %512, ptr noundef %513)
  %515 = load i64, ptr %59, align 8, !tbaa !9
  %516 = icmp ne i64 %515, 0
  br i1 %516, label %517, label %546

517:                                              ; preds = %479
  %518 = load ptr, ptr %22, align 8, !tbaa !5
  %519 = load ptr, ptr %23, align 8, !tbaa !5
  %520 = getelementptr inbounds float, ptr %519, i64 1
  %521 = load ptr, ptr %24, align 8, !tbaa !5
  %522 = getelementptr inbounds float, ptr %521, i64 1
  %523 = load ptr, ptr %30, align 8, !tbaa !5
  %524 = load ptr, ptr %31, align 8, !tbaa !5
  %525 = getelementptr inbounds float, ptr %524, i64 1
  %526 = load ptr, ptr %35, align 8, !tbaa !5
  %527 = load i64, ptr %63, align 8, !tbaa !9
  %528 = getelementptr inbounds i64, ptr %526, i64 %527
  %529 = load ptr, ptr %35, align 8, !tbaa !5
  %530 = load i64, ptr %67, align 8, !tbaa !9
  %531 = getelementptr inbounds i64, ptr %529, i64 %530
  %532 = load ptr, ptr %32, align 8, !tbaa !5
  %533 = load i64, ptr %39, align 8, !tbaa !9
  %534 = getelementptr inbounds float, ptr %532, i64 %533
  %535 = load ptr, ptr %33, align 8, !tbaa !5
  %536 = load ptr, ptr %34, align 8, !tbaa !5
  %537 = load i64, ptr %69, align 8, !tbaa !9
  %538 = getelementptr inbounds float, ptr %536, i64 %537
  %539 = load ptr, ptr %35, align 8, !tbaa !5
  %540 = load i64, ptr %68, align 8, !tbaa !9
  %541 = getelementptr inbounds i64, ptr %539, i64 %540
  %542 = load ptr, ptr %36, align 8, !tbaa !5
  %543 = getelementptr inbounds i64, ptr %542, i64 1
  %544 = load ptr, ptr %37, align 8, !tbaa !5
  %545 = call i32 @sstein_(ptr noundef %518, ptr noundef %520, ptr noundef %522, ptr noundef %523, ptr noundef %525, ptr noundef %528, ptr noundef %531, ptr noundef %534, ptr noundef %535, ptr noundef %538, ptr noundef %541, ptr noundef %543, ptr noundef %544)
  br label %546

546:                                              ; preds = %517, %479
  br label %547

547:                                              ; preds = %546, %466
  %548 = load i64, ptr %62, align 8, !tbaa !9
  %549 = icmp eq i64 %548, 1
  br i1 %549, label %550, label %567

550:                                              ; preds = %547
  %551 = load ptr, ptr %37, align 8, !tbaa !5
  %552 = load i64, ptr %551, align 8, !tbaa !9
  %553 = icmp eq i64 %552, 0
  br i1 %553, label %554, label %557

554:                                              ; preds = %550
  %555 = load ptr, ptr %30, align 8, !tbaa !5
  %556 = load i64, ptr %555, align 8, !tbaa !9
  store i64 %556, ptr %51, align 8, !tbaa !9
  br label %561

557:                                              ; preds = %550
  %558 = load ptr, ptr %37, align 8, !tbaa !5
  %559 = load i64, ptr %558, align 8, !tbaa !9
  %560 = sub nsw i64 %559, 1
  store i64 %560, ptr %51, align 8, !tbaa !9
  br label %561

561:                                              ; preds = %557, %554
  %562 = load float, ptr %57, align 4, !tbaa !11
  %563 = fdiv float 1.000000e+00, %562
  store float %563, ptr %42, align 4, !tbaa !11
  %564 = load ptr, ptr %31, align 8, !tbaa !5
  %565 = getelementptr inbounds float, ptr %564, i64 1
  %566 = call i32 @f2c_sscal(ptr noundef %51, ptr noundef %42, ptr noundef %565, ptr noundef @c__1)
  br label %567

567:                                              ; preds = %561, %547
  %568 = load i64, ptr %59, align 8, !tbaa !9
  %569 = icmp ne i64 %568, 0
  br i1 %569, label %570, label %689

570:                                              ; preds = %567
  %571 = load ptr, ptr %30, align 8, !tbaa !5
  %572 = load i64, ptr %571, align 8, !tbaa !9
  %573 = sub nsw i64 %572, 1
  store i64 %573, ptr %40, align 8, !tbaa !9
  store i64 1, ptr %45, align 8, !tbaa !9
  br label %574

574:                                              ; preds = %685, %570
  %575 = load i64, ptr %45, align 8, !tbaa !9
  %576 = load i64, ptr %40, align 8, !tbaa !9
  %577 = icmp sle i64 %575, %576
  br i1 %577, label %578, label %688

578:                                              ; preds = %574
  store i64 0, ptr %44, align 8, !tbaa !9
  %579 = load ptr, ptr %31, align 8, !tbaa !5
  %580 = load i64, ptr %45, align 8, !tbaa !9
  %581 = getelementptr inbounds float, ptr %579, i64 %580
  %582 = load float, ptr %581, align 4, !tbaa !11
  store float %582, ptr %50, align 4, !tbaa !11
  %583 = load ptr, ptr %30, align 8, !tbaa !5
  %584 = load i64, ptr %583, align 8, !tbaa !9
  store i64 %584, ptr %41, align 8, !tbaa !9
  %585 = load i64, ptr %45, align 8, !tbaa !9
  %586 = add nsw i64 %585, 1
  store i64 %586, ptr %46, align 8, !tbaa !9
  br label %587

587:                                              ; preds = %605, %578
  %588 = load i64, ptr %46, align 8, !tbaa !9
  %589 = load i64, ptr %41, align 8, !tbaa !9
  %590 = icmp sle i64 %588, %589
  br i1 %590, label %591, label %608

591:                                              ; preds = %587
  %592 = load ptr, ptr %31, align 8, !tbaa !5
  %593 = load i64, ptr %46, align 8, !tbaa !9
  %594 = getelementptr inbounds float, ptr %592, i64 %593
  %595 = load float, ptr %594, align 4, !tbaa !11
  %596 = load float, ptr %50, align 4, !tbaa !11
  %597 = fcmp olt float %595, %596
  br i1 %597, label %598, label %604

598:                                              ; preds = %591
  %599 = load i64, ptr %46, align 8, !tbaa !9
  store i64 %599, ptr %44, align 8, !tbaa !9
  %600 = load ptr, ptr %31, align 8, !tbaa !5
  %601 = load i64, ptr %46, align 8, !tbaa !9
  %602 = getelementptr inbounds float, ptr %600, i64 %601
  %603 = load float, ptr %602, align 4, !tbaa !11
  store float %603, ptr %50, align 4, !tbaa !11
  br label %604

604:                                              ; preds = %598, %591
  br label %605

605:                                              ; preds = %604
  %606 = load i64, ptr %46, align 8, !tbaa !9
  %607 = add nsw i64 %606, 1
  store i64 %607, ptr %46, align 8, !tbaa !9
  br label %587, !llvm.loop !16

608:                                              ; preds = %587
  %609 = load i64, ptr %44, align 8, !tbaa !9
  %610 = icmp ne i64 %609, 0
  br i1 %610, label %611, label %684

611:                                              ; preds = %608
  %612 = load ptr, ptr %35, align 8, !tbaa !5
  %613 = load i64, ptr %63, align 8, !tbaa !9
  %614 = load i64, ptr %44, align 8, !tbaa !9
  %615 = add nsw i64 %613, %614
  %616 = sub nsw i64 %615, 1
  %617 = getelementptr inbounds i64, ptr %612, i64 %616
  %618 = load i64, ptr %617, align 8, !tbaa !9
  store i64 %618, ptr %56, align 8, !tbaa !9
  %619 = load ptr, ptr %31, align 8, !tbaa !5
  %620 = load i64, ptr %45, align 8, !tbaa !9
  %621 = getelementptr inbounds float, ptr %619, i64 %620
  %622 = load float, ptr %621, align 4, !tbaa !11
  %623 = load ptr, ptr %31, align 8, !tbaa !5
  %624 = load i64, ptr %44, align 8, !tbaa !9
  %625 = getelementptr inbounds float, ptr %623, i64 %624
  store float %622, ptr %625, align 4, !tbaa !11
  %626 = load ptr, ptr %35, align 8, !tbaa !5
  %627 = load i64, ptr %63, align 8, !tbaa !9
  %628 = load i64, ptr %45, align 8, !tbaa !9
  %629 = add nsw i64 %627, %628
  %630 = sub nsw i64 %629, 1
  %631 = getelementptr inbounds i64, ptr %626, i64 %630
  %632 = load i64, ptr %631, align 8, !tbaa !9
  %633 = load ptr, ptr %35, align 8, !tbaa !5
  %634 = load i64, ptr %63, align 8, !tbaa !9
  %635 = load i64, ptr %44, align 8, !tbaa !9
  %636 = add nsw i64 %634, %635
  %637 = sub nsw i64 %636, 1
  %638 = getelementptr inbounds i64, ptr %633, i64 %637
  store i64 %632, ptr %638, align 8, !tbaa !9
  %639 = load float, ptr %50, align 4, !tbaa !11
  %640 = load ptr, ptr %31, align 8, !tbaa !5
  %641 = load i64, ptr %45, align 8, !tbaa !9
  %642 = getelementptr inbounds float, ptr %640, i64 %641
  store float %639, ptr %642, align 4, !tbaa !11
  %643 = load i64, ptr %56, align 8, !tbaa !9
  %644 = load ptr, ptr %35, align 8, !tbaa !5
  %645 = load i64, ptr %63, align 8, !tbaa !9
  %646 = load i64, ptr %45, align 8, !tbaa !9
  %647 = add nsw i64 %645, %646
  %648 = sub nsw i64 %647, 1
  %649 = getelementptr inbounds i64, ptr %644, i64 %648
  store i64 %643, ptr %649, align 8, !tbaa !9
  %650 = load ptr, ptr %22, align 8, !tbaa !5
  %651 = load ptr, ptr %32, align 8, !tbaa !5
  %652 = load i64, ptr %44, align 8, !tbaa !9
  %653 = load i64, ptr %38, align 8, !tbaa !9
  %654 = mul nsw i64 %652, %653
  %655 = add nsw i64 %654, 1
  %656 = getelementptr inbounds float, ptr %651, i64 %655
  %657 = load ptr, ptr %32, align 8, !tbaa !5
  %658 = load i64, ptr %45, align 8, !tbaa !9
  %659 = load i64, ptr %38, align 8, !tbaa !9
  %660 = mul nsw i64 %658, %659
  %661 = add nsw i64 %660, 1
  %662 = getelementptr inbounds float, ptr %657, i64 %661
  %663 = call i32 @f2c_sswap(ptr noundef %650, ptr noundef %656, ptr noundef @c__1, ptr noundef %662, ptr noundef @c__1)
  %664 = load ptr, ptr %37, align 8, !tbaa !5
  %665 = load i64, ptr %664, align 8, !tbaa !9
  %666 = icmp ne i64 %665, 0
  br i1 %666, label %667, label %683

667:                                              ; preds = %611
  %668 = load ptr, ptr %36, align 8, !tbaa !5
  %669 = load i64, ptr %44, align 8, !tbaa !9
  %670 = getelementptr inbounds i64, ptr %668, i64 %669
  %671 = load i64, ptr %670, align 8, !tbaa !9
  store i64 %671, ptr %56, align 8, !tbaa !9
  %672 = load ptr, ptr %36, align 8, !tbaa !5
  %673 = load i64, ptr %45, align 8, !tbaa !9
  %674 = getelementptr inbounds i64, ptr %672, i64 %673
  %675 = load i64, ptr %674, align 8, !tbaa !9
  %676 = load ptr, ptr %36, align 8, !tbaa !5
  %677 = load i64, ptr %44, align 8, !tbaa !9
  %678 = getelementptr inbounds i64, ptr %676, i64 %677
  store i64 %675, ptr %678, align 8, !tbaa !9
  %679 = load i64, ptr %56, align 8, !tbaa !9
  %680 = load ptr, ptr %36, align 8, !tbaa !5
  %681 = load i64, ptr %45, align 8, !tbaa !9
  %682 = getelementptr inbounds i64, ptr %680, i64 %681
  store i64 %679, ptr %682, align 8, !tbaa !9
  br label %683

683:                                              ; preds = %667, %611
  br label %684

684:                                              ; preds = %683, %608
  br label %685

685:                                              ; preds = %684
  %686 = load i64, ptr %45, align 8, !tbaa !9
  %687 = add nsw i64 %686, 1
  store i64 %687, ptr %45, align 8, !tbaa !9
  br label %574, !llvm.loop !17

688:                                              ; preds = %574
  br label %689

689:                                              ; preds = %688, %567
  store i32 0, ptr %19, align 4
  store i32 1, ptr %72, align 4
  br label %690

690:                                              ; preds = %689, %278, %230, %220
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #4
  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 4, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 4, 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 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, 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
  %691 = load i32, ptr %19, align 4
  ret i32 %691
}

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

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

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

declare double @slamch_(ptr noundef) #2

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

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

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

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

declare i32 @sstebz_(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 @sstein_(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 @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 = !{!7, !7, i64 0}
!16 = distinct !{!16, !14}
!17 = distinct !{!17, !14}


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

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

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @sstevx_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr nocapture noundef readonly %5, ptr nocapture noundef readonly %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef %16, ptr noundef %17) local_unnamed_addr #0 {
  %19 = alloca i64, align 8
  %20 = alloca float, align 4
  %21 = alloca float, align 4
  %22 = alloca float, align 4
  %23 = alloca i64, align 8
  %24 = alloca float, align 4
  %25 = alloca [1 x i8], align 1
  %26 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %25) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #6
  %27 = getelementptr inbounds i8, ptr %11, i64 -4
  %28 = load i64, ptr %13, align 8, !tbaa !5
  %29 = xor i64 %28, -1
  %30 = getelementptr inbounds float, ptr %12, i64 %29
  %31 = getelementptr inbounds i8, ptr %15, i64 -8
  %32 = getelementptr inbounds i8, ptr %16, i64 -8
  %33 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #6
  %34 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  %35 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #6
  %36 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.2) #6
  store i64 0, ptr %17, align 8, !tbaa !5
  %.not = icmp ne i64 %33, 0
  br i1 %.not, label %39, label %37

37:                                               ; preds = %18
  %38 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.3) #6
  %.not267 = icmp eq i64 %38, 0
  br i1 %.not267, label %.thread287.sink.split, label %39

39:                                               ; preds = %37, %18
  %40 = icmp ne i64 %34, 0
  %41 = icmp ne i64 %35, 0
  %or.cond = select i1 %40, i1 true, i1 %41
  %42 = icmp ne i64 %36, 0
  %or.cond3 = select i1 %or.cond, i1 true, i1 %42
  br i1 %or.cond3, label %43, label %.thread287.sink.split

43:                                               ; preds = %39
  %44 = load i64, ptr %2, align 8, !tbaa !5
  %45 = icmp slt i64 %44, 0
  br i1 %45, label %.thread287.sink.split, label %46

46:                                               ; preds = %43
  br i1 %41, label %47, label %52

47:                                               ; preds = %46
  %.not269 = icmp eq i64 %44, 0
  br i1 %.not269, label %61, label %48

48:                                               ; preds = %47
  %49 = load float, ptr %6, align 4, !tbaa !9
  %50 = load float, ptr %5, align 4, !tbaa !9
  %51 = fcmp ugt float %49, %50
  br i1 %51, label %61, label %.thread287.sink.split

52:                                               ; preds = %46
  br i1 %42, label %53, label %61

53:                                               ; preds = %52
  %54 = load i64, ptr %7, align 8, !tbaa !5
  %55 = icmp slt i64 %54, 1
  %spec.select = tail call i64 @llvm.umax.i64(i64 %44, i64 1)
  %56 = icmp ugt i64 %54, %spec.select
  %or.cond298 = or i1 %55, %56
  br i1 %or.cond298, label %.thread287.sink.split, label %57

57:                                               ; preds = %53
  %58 = load i64, ptr %8, align 8, !tbaa !5
  %. = tail call i64 @llvm.umin.i64(i64 %44, i64 %54)
  %59 = icmp slt i64 %58, %.
  %60 = icmp ugt i64 %58, %44
  %or.cond296 = or i1 %59, %60
  br i1 %or.cond296, label %.thread287.sink.split, label %61

61:                                               ; preds = %57, %48, %47, %52
  %.pr = load i64, ptr %17, align 8, !tbaa !5
  %62 = icmp eq i64 %.pr, 0
  br i1 %62, label %63, label %.thread287

63:                                               ; preds = %61
  %64 = load i64, ptr %13, align 8, !tbaa !5
  %65 = icmp slt i64 %64, 1
  %66 = icmp ult i64 %64, %44
  %or.cond317 = and i1 %.not, %66
  %or.cond320 = or i1 %65, %or.cond317
  br i1 %or.cond320, label %.thread287.sink.split, label %.thread

.thread287.sink.split:                            ; preds = %63, %57, %53, %48, %43, %39, %37
  %.sink318 = phi i64 [ -1, %37 ], [ -2, %39 ], [ -3, %43 ], [ -7, %48 ], [ -8, %53 ], [ -9, %57 ], [ -14, %63 ]
  store i64 %.sink318, ptr %17, align 8, !tbaa !5
  br label %.thread287

.thread287:                                       ; preds = %.thread287.sink.split, %61
  %67 = phi i64 [ %.pr, %61 ], [ %.sink318, %.thread287.sink.split ]
  %68 = sub nsw i64 0, %67
  store i64 %68, ptr %19, align 8, !tbaa !5
  %69 = call i32 @xerbla_(ptr noundef nonnull @.str.4, ptr noundef nonnull %19) #6
  br label %.loopexit

.thread:                                          ; preds = %63
  store i64 0, ptr %10, align 8, !tbaa !5
  %70 = load i64, ptr %2, align 8, !tbaa !5
  switch i64 %70, label %84 [
    i64 0, label %.loopexit
    i64 1, label %71
  ]

71:                                               ; preds = %.thread
  %or.cond5 = select i1 %40, i1 true, i1 %42
  br i1 %or.cond5, label %72, label %74

72:                                               ; preds = %71
  store i64 1, ptr %10, align 8, !tbaa !5
  %73 = load float, ptr %3, align 4, !tbaa !9
  br label %.sink.split

74:                                               ; preds = %71
  %75 = load float, ptr %5, align 4, !tbaa !9
  %76 = load float, ptr %3, align 4, !tbaa !9
  %77 = fcmp olt float %75, %76
  br i1 %77, label %78, label %82

78:                                               ; preds = %74
  %79 = load float, ptr %6, align 4, !tbaa !9
  %80 = fcmp ult float %79, %76
  br i1 %80, label %82, label %81

81:                                               ; preds = %78
  store i64 1, ptr %10, align 8, !tbaa !5
  br label %.sink.split

.sink.split:                                      ; preds = %72, %81
  %.sink319 = phi float [ %76, %81 ], [ %73, %72 ]
  store float %.sink319, ptr %11, align 4, !tbaa !9
  br label %82

82:                                               ; preds = %.sink.split, %74, %78
  br i1 %.not, label %83, label %.loopexit

83:                                               ; preds = %82
  store float 1.000000e+00, ptr %12, align 4, !tbaa !9
  br label %.loopexit

84:                                               ; preds = %.thread
  %85 = tail call double @slamch_(ptr noundef nonnull @.str.5) #6
  %86 = fptrunc double %85 to float
  %87 = tail call double @slamch_(ptr noundef nonnull @.str.6) #6
  %88 = fptrunc double %87 to float
  %89 = fdiv float %86, %88
  %90 = fdiv float 1.000000e+00, %89
  %sqrtf = tail call float @sqrtf(float noundef %89) #3
  %sqrtf271 = tail call float @sqrtf(float noundef %90) #3
  store float %sqrtf271, ptr %20, align 4, !tbaa !9
  %91 = fpext float %86 to double
  %92 = tail call double @sqrt(double noundef %91) #6
  %93 = tail call double @sqrt(double noundef %92) #6
  %94 = fdiv double 1.000000e+00, %93
  %95 = fptrunc double %94 to float
  %96 = fcmp ole float %sqrtf271, %95
  %97 = select i1 %96, float %sqrtf271, float %95
  %.not272 = icmp eq i64 %35, 0
  br i1 %.not272, label %101, label %98

98:                                               ; preds = %84
  %99 = load float, ptr %5, align 4, !tbaa !9
  %100 = load float, ptr %6, align 4, !tbaa !9
  br label %101

101:                                              ; preds = %84, %98
  %.sink = phi float [ %99, %98 ], [ 0.000000e+00, %84 ]
  %storemerge = phi float [ %100, %98 ], [ 0.000000e+00, %84 ]
  store float %.sink, ptr %21, align 4
  store float %storemerge, ptr %22, align 4, !tbaa !9
  %102 = tail call double @slanst_(ptr noundef nonnull @.str.7, ptr noundef nonnull %2, ptr noundef %3, ptr noundef %4) #6
  %103 = fptrunc double %102 to float
  %104 = fcmp ogt float %103, 0.000000e+00
  %105 = fcmp ogt float %sqrtf, %103
  %or.cond281 = select i1 %104, i1 %105, i1 false
  br i1 %or.cond281, label %108, label %106

106:                                              ; preds = %101
  %107 = fcmp olt float %97, %103
  br i1 %107, label %108, label %119

108:                                              ; preds = %106, %101
  %.pn = phi float [ %sqrtf, %101 ], [ %97, %106 ]
  %storemerge297 = fdiv float %.pn, %103
  store float %storemerge297, ptr %24, align 4, !tbaa !9
  %109 = call i32 @f2c_sscal(ptr noundef nonnull %2, ptr noundef nonnull %24, ptr noundef %3, ptr noundef nonnull @c__1) #6
  %110 = load i64, ptr %2, align 8, !tbaa !5
  %111 = add nsw i64 %110, -1
  store i64 %111, ptr %19, align 8, !tbaa !5
  %112 = call i32 @f2c_sscal(ptr noundef nonnull %19, ptr noundef nonnull %24, ptr noundef %4, ptr noundef nonnull @c__1) #6
  br i1 %.not272, label %119, label %113

113:                                              ; preds = %108
  %114 = load float, ptr %5, align 4, !tbaa !9
  %115 = load float, ptr %24, align 4, !tbaa !9
  %116 = fmul float %114, %115
  store float %116, ptr %21, align 4, !tbaa !9
  %117 = load float, ptr %6, align 4, !tbaa !9
  %118 = fmul float %115, %117
  store float %118, ptr %22, align 4, !tbaa !9
  br label %119

119:                                              ; preds = %106, %108, %113
  %120 = phi i1 [ true, %108 ], [ true, %113 ], [ false, %106 ]
  %.not273 = icmp eq i64 %36, 0
  br i1 %.not273, label %128, label %121

121:                                              ; preds = %119
  %122 = load i64, ptr %7, align 8, !tbaa !5
  %123 = icmp eq i64 %122, 1
  br i1 %123, label %124, label %128

124:                                              ; preds = %121
  %125 = load i64, ptr %8, align 8, !tbaa !5
  %126 = load i64, ptr %2, align 8, !tbaa !5
  %127 = icmp eq i64 %125, %126
  br label %128

128:                                              ; preds = %124, %121, %119
  %129 = phi i1 [ false, %121 ], [ false, %119 ], [ %127, %124 ]
  %or.cond7 = or i1 %40, %129
  br i1 %or.cond7, label %130, label %152

130:                                              ; preds = %128
  %131 = load float, ptr %9, align 4, !tbaa !9
  %132 = fcmp ugt float %131, 0.000000e+00
  br i1 %132, label %152, label %133

133:                                              ; preds = %130
  %134 = call i32 @f2c_scopy(ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull @c__1, ptr noundef %11, ptr noundef nonnull @c__1) #6
  %135 = load i64, ptr %2, align 8, !tbaa !5
  %136 = add nsw i64 %135, -1
  store i64 %136, ptr %19, align 8, !tbaa !5
  %137 = call i32 @f2c_scopy(ptr noundef nonnull %19, ptr noundef %4, ptr noundef nonnull @c__1, ptr noundef %14, ptr noundef nonnull @c__1) #6
  br i1 %.not, label %140, label %138

138:                                              ; preds = %133
  %139 = call i32 @ssterf_(ptr noundef nonnull %2, ptr noundef %11, ptr noundef %14, ptr noundef nonnull %17) #6
  br label %.loopexit299

140:                                              ; preds = %133
  %141 = load i64, ptr %2, align 8, !tbaa !5
  %142 = getelementptr float, ptr %14, i64 %141
  %143 = call i32 @ssteqr_(ptr noundef nonnull @.str.2, ptr noundef nonnull %2, ptr noundef %11, ptr noundef %14, ptr noundef %12, ptr noundef nonnull %13, ptr noundef %142, ptr noundef nonnull %17) #6
  %144 = load i64, ptr %17, align 8, !tbaa !5
  %145 = icmp eq i64 %144, 0
  br i1 %145, label %146, label %.thread293

146:                                              ; preds = %140
  %147 = load i64, ptr %2, align 8, !tbaa !5
  store i64 %147, ptr %19, align 8, !tbaa !5
  %.not274300 = icmp slt i64 %147, 1
  br i1 %.not274300, label %.loopexit299, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %146
  %148 = shl nuw i64 %147, 3
  call void @llvm.memset.p0.i64(ptr align 8 %16, i8 0, i64 %148, i1 false), !tbaa !5
  br label %.loopexit299

.loopexit299:                                     ; preds = %.lr.ph.preheader, %146, %138
  %.pr292 = load i64, ptr %17, align 8, !tbaa !5
  %149 = icmp eq i64 %.pr292, 0
  br i1 %149, label %150, label %.thread293

150:                                              ; preds = %.loopexit299
  %151 = load i64, ptr %2, align 8, !tbaa !5
  store i64 %151, ptr %10, align 8, !tbaa !5
  br label %159

.thread293:                                       ; preds = %140, %.loopexit299
  store i64 0, ptr %17, align 8, !tbaa !5
  br label %152

152:                                              ; preds = %128, %.thread293, %130
  %.283 = select i1 %.not, i8 66, i8 69
  store i8 %.283, ptr %25, align 1, !tbaa !11
  %153 = load i64, ptr %2, align 8, !tbaa !5
  %154 = getelementptr i64, ptr %15, i64 %153
  %.idx = shl i64 %153, 4
  %155 = getelementptr i8, ptr %15, i64 %.idx
  %156 = call i32 @sstebz_(ptr noundef %1, ptr noundef nonnull %25, ptr noundef nonnull %2, ptr noundef nonnull %21, ptr noundef nonnull %22, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %3, ptr noundef %4, ptr noundef nonnull %10, ptr noundef nonnull %26, ptr noundef %11, ptr noundef %15, ptr noundef %154, ptr noundef %14, ptr noundef %155, ptr noundef nonnull %17) #6
  br i1 %.not, label %157, label %159

157:                                              ; preds = %152
  %158 = call i32 @sstein_(ptr noundef nonnull %2, ptr noundef %3, ptr noundef %4, ptr noundef nonnull %10, ptr noundef %11, ptr noundef %15, ptr noundef %154, ptr noundef %12, ptr noundef nonnull %13, ptr noundef %14, ptr noundef %155, ptr noundef %16, ptr noundef nonnull %17) #6
  br label %159

159:                                              ; preds = %152, %157, %150
  br i1 %120, label %160, label %171

160:                                              ; preds = %159
  %161 = load i64, ptr %17, align 8, !tbaa !5
  %162 = icmp eq i64 %161, 0
  br i1 %162, label %163, label %165

163:                                              ; preds = %160
  %164 = load i64, ptr %10, align 8, !tbaa !5
  br label %167

165:                                              ; preds = %160
  %166 = add nsw i64 %161, -1
  br label %167

167:                                              ; preds = %165, %163
  %storemerge276 = phi i64 [ %166, %165 ], [ %164, %163 ]
  store i64 %storemerge276, ptr %23, align 8, !tbaa !5
  %168 = load float, ptr %24, align 4, !tbaa !9
  %169 = fdiv float 1.000000e+00, %168
  store float %169, ptr %20, align 4, !tbaa !9
  %170 = call i32 @f2c_sscal(ptr noundef nonnull %23, ptr noundef nonnull %20, ptr noundef %11, ptr noundef nonnull @c__1) #6
  br label %171

171:                                              ; preds = %167, %159
  br i1 %.not, label %172, label %.loopexit

172:                                              ; preds = %171
  %173 = load i64, ptr %10, align 8, !tbaa !5
  %174 = add nsw i64 %173, -1
  store i64 %174, ptr %19, align 8, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %30, i64 4
  %.not277310 = icmp slt i64 %173, 2
  br i1 %.not277310, label %.loopexit, label %.lr.ph313

.lr.ph313:                                        ; preds = %172, %._crit_edge.thread
  %.0249311 = phi i64 [ %178, %._crit_edge.thread ], [ 1, %172 ]
  %175 = getelementptr inbounds float, ptr %27, i64 %.0249311
  %176 = load float, ptr %175, align 4, !tbaa !9
  %177 = load i64, ptr %10, align 8, !tbaa !5
  %178 = add nuw nsw i64 %.0249311, 1
  %.not278302.not = icmp slt i64 %.0249311, %177
  br i1 %.not278302.not, label %.lr.ph306, label %._crit_edge.thread

.lr.ph306:                                        ; preds = %.lr.ph313, %.lr.ph306
  %.1305 = phi i64 [ %.2, %.lr.ph306 ], [ 0, %.lr.ph313 ]
  %.0250304 = phi i64 [ %182, %.lr.ph306 ], [ %178, %.lr.ph313 ]
  %.0252303 = phi float [ %.1253, %.lr.ph306 ], [ %176, %.lr.ph313 ]
  %179 = getelementptr inbounds float, ptr %27, i64 %.0250304
  %180 = load float, ptr %179, align 4, !tbaa !9
  %181 = fcmp olt float %180, %.0252303
  %.1253 = select i1 %181, float %180, float %.0252303
  %.2 = select i1 %181, i64 %.0250304, i64 %.1305
  %182 = add nuw nsw i64 %.0250304, 1
  %.not278.not = icmp slt i64 %.0250304, %177
  br i1 %.not278.not, label %.lr.ph306, label %._crit_edge, !llvm.loop !12

._crit_edge:                                      ; preds = %.lr.ph306
  %.not279 = icmp eq i64 %.2, 0
  br i1 %.not279, label %._crit_edge.thread, label %183

183:                                              ; preds = %._crit_edge
  %184 = getelementptr inbounds i64, ptr %31, i64 %.2
  %185 = load i64, ptr %184, align 8, !tbaa !5
  %186 = getelementptr inbounds float, ptr %27, i64 %.2
  store float %176, ptr %186, align 4, !tbaa !9
  %187 = getelementptr inbounds i64, ptr %31, i64 %.0249311
  %188 = load i64, ptr %187, align 8, !tbaa !5
  store i64 %188, ptr %184, align 8, !tbaa !5
  store float %.1253, ptr %175, align 4, !tbaa !9
  store i64 %185, ptr %187, align 8, !tbaa !5
  %189 = mul nsw i64 %.2, %28
  %gep = getelementptr float, ptr %invariant.gep, i64 %189
  %190 = mul nsw i64 %.0249311, %28
  %gep309 = getelementptr float, ptr %invariant.gep, i64 %190
  %191 = call i32 @f2c_sswap(ptr noundef nonnull %2, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %gep309, ptr noundef nonnull @c__1) #6
  %192 = load i64, ptr %17, align 8, !tbaa !5
  %.not280 = icmp eq i64 %192, 0
  br i1 %.not280, label %._crit_edge.thread, label %193

193:                                              ; preds = %183
  %194 = getelementptr inbounds i64, ptr %32, i64 %.2
  %195 = load i64, ptr %194, align 8, !tbaa !5
  %196 = getelementptr inbounds i64, ptr %32, i64 %.0249311
  %197 = load i64, ptr %196, align 8, !tbaa !5
  store i64 %197, ptr %194, align 8, !tbaa !5
  store i64 %195, ptr %196, align 8, !tbaa !5
  br label %._crit_edge.thread

._crit_edge.thread:                               ; preds = %.lr.ph313, %._crit_edge, %193, %183
  %198 = load i64, ptr %19, align 8, !tbaa !5
  %.not277.not = icmp slt i64 %.0249311, %198
  br i1 %.not277.not, label %.lr.ph313, label %.loopexit, !llvm.loop !14

.loopexit:                                        ; preds = %._crit_edge.thread, %172, %171, %82, %83, %.thread, %.thread287
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #6
  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 i32 @xerbla_(ptr noundef, ptr noundef) local_unnamed_addr #2

declare double @slamch_(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 @slanst_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

declare float @sqrtf(float) local_unnamed_addr

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5

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 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #6 = { 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 = !{!7, !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = distinct !{!14, !13}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopIdiomRecognizePass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,MergedLoadStoreMotionPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass