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

; 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 @dstevx_(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 double, align 8
  %43 = alloca double, align 8
  %44 = alloca i64, align 8
  %45 = alloca i64, align 8
  %46 = alloca i64, align 8
  %47 = alloca double, align 8
  %48 = alloca double, align 8
  %49 = alloca double, align 8
  %50 = alloca double, align 8
  %51 = alloca i64, align 8
  %52 = alloca double, align 8
  %53 = alloca double, align 8
  %54 = alloca i64, align 8
  %55 = alloca double, align 8
  %56 = alloca i64, align 8
  %57 = alloca double, align 8
  %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 double, align 8
  %66 = alloca double, align 8
  %67 = alloca i64, align 8
  %68 = alloca i64, align 8
  %69 = alloca i64, align 8
  %70 = alloca i64, align 8
  %71 = alloca double, align 8
  %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 8, ptr %42) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.start.p0(i64 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 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 8, ptr %65) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #4
  %73 = load ptr, ptr %23, align 8, !tbaa !5
  %74 = getelementptr inbounds double, 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 double, 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 double, 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 double, 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 double, 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 double, ptr %135, align 8, !tbaa !11
  %137 = load ptr, ptr %25, align 8, !tbaa !5
  %138 = load double, ptr %137, align 8, !tbaa !11
  %139 = fcmp ole double %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 %679

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 %679

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 double, ptr %243, i64 1
  %245 = load double, ptr %244, align 8, !tbaa !11
  %246 = load ptr, ptr %31, align 8, !tbaa !5
  %247 = getelementptr inbounds double, ptr %246, i64 1
  store double %245, ptr %247, align 8, !tbaa !11
  br label %270

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

255:                                              ; preds = %248
  %256 = load ptr, ptr %26, align 8, !tbaa !5
  %257 = load double, ptr %256, align 8, !tbaa !11
  %258 = load ptr, ptr %23, align 8, !tbaa !5
  %259 = getelementptr inbounds double, ptr %258, i64 1
  %260 = load double, ptr %259, align 8, !tbaa !11
  %261 = fcmp oge double %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 double, ptr %264, i64 1
  %266 = load double, ptr %265, align 8, !tbaa !11
  %267 = load ptr, ptr %31, align 8, !tbaa !5
  %268 = getelementptr inbounds double, ptr %267, i64 1
  store double %266, ptr %268, align 8, !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 double, ptr %274, i64 %276
  store double 1.000000e+00, ptr %277, align 8, !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 %679

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

298:                                              ; preds = %279
  %299 = load double, ptr %42, align 8, !tbaa !11
  br label %302

300:                                              ; preds = %279
  %301 = load double, ptr %43, align 8, !tbaa !11
  br label %302

302:                                              ; preds = %300, %298
  %303 = phi double [ %299, %298 ], [ %301, %300 ]
  store double %303, ptr %53, align 8, !tbaa !11
  store i64 0, ptr %62, align 8, !tbaa !9
  %304 = load i64, ptr %64, align 8, !tbaa !9
  %305 = icmp ne i64 %304, 0
  br i1 %305, label %306, label %311

306:                                              ; preds = %302
  %307 = load ptr, ptr %25, align 8, !tbaa !5
  %308 = load double, ptr %307, align 8, !tbaa !11
  store double %308, ptr %48, align 8, !tbaa !11
  %309 = load ptr, ptr %26, align 8, !tbaa !5
  %310 = load double, ptr %309, align 8, !tbaa !11
  store double %310, ptr %49, align 8, !tbaa !11
  br label %312

311:                                              ; preds = %302
  store double 0.000000e+00, ptr %48, align 8, !tbaa !11
  store double 0.000000e+00, ptr %49, align 8, !tbaa !11
  br label %312

312:                                              ; preds = %311, %306
  %313 = load ptr, ptr %22, align 8, !tbaa !5
  %314 = load ptr, ptr %23, align 8, !tbaa !5
  %315 = getelementptr inbounds double, ptr %314, i64 1
  %316 = load ptr, ptr %24, align 8, !tbaa !5
  %317 = getelementptr inbounds double, ptr %316, i64 1
  %318 = call double @dlanst_(ptr noundef @.str.7, ptr noundef %313, ptr noundef %315, ptr noundef %317)
  store double %318, ptr %55, align 8, !tbaa !11
  %319 = load double, ptr %55, align 8, !tbaa !11
  %320 = fcmp ogt double %319, 0.000000e+00
  br i1 %320, label %321, label %329

321:                                              ; preds = %312
  %322 = load double, ptr %55, align 8, !tbaa !11
  %323 = load double, ptr %52, align 8, !tbaa !11
  %324 = fcmp olt double %322, %323
  br i1 %324, label %325, label %329

325:                                              ; preds = %321
  store i64 1, ptr %62, align 8, !tbaa !9
  %326 = load double, ptr %52, align 8, !tbaa !11
  %327 = load double, ptr %55, align 8, !tbaa !11
  %328 = fdiv double %326, %327
  store double %328, ptr %57, align 8, !tbaa !11
  br label %338

329:                                              ; preds = %321, %312
  %330 = load double, ptr %55, align 8, !tbaa !11
  %331 = load double, ptr %53, align 8, !tbaa !11
  %332 = fcmp ogt double %330, %331
  br i1 %332, label %333, label %337

333:                                              ; preds = %329
  store i64 1, ptr %62, align 8, !tbaa !9
  %334 = load double, ptr %53, align 8, !tbaa !11
  %335 = load double, ptr %55, align 8, !tbaa !11
  %336 = fdiv double %334, %335
  store double %336, ptr %57, align 8, !tbaa !11
  br label %337

337:                                              ; preds = %333, %329
  br label %338

338:                                              ; preds = %337, %325
  %339 = load i64, ptr %62, align 8, !tbaa !9
  %340 = icmp eq i64 %339, 1
  br i1 %340, label %341, label %364

341:                                              ; preds = %338
  %342 = load ptr, ptr %22, align 8, !tbaa !5
  %343 = load ptr, ptr %23, align 8, !tbaa !5
  %344 = getelementptr inbounds double, ptr %343, i64 1
  %345 = call i32 @f2c_dscal(ptr noundef %342, ptr noundef %57, ptr noundef %344, ptr noundef @c__1)
  %346 = load ptr, ptr %22, align 8, !tbaa !5
  %347 = load i64, ptr %346, align 8, !tbaa !9
  %348 = sub nsw i64 %347, 1
  store i64 %348, ptr %40, align 8, !tbaa !9
  %349 = load ptr, ptr %24, align 8, !tbaa !5
  %350 = getelementptr inbounds double, ptr %349, i64 1
  %351 = call i32 @f2c_dscal(ptr noundef %40, ptr noundef %57, ptr noundef %350, ptr noundef @c__1)
  %352 = load i64, ptr %64, align 8, !tbaa !9
  %353 = icmp ne i64 %352, 0
  br i1 %353, label %354, label %363

354:                                              ; preds = %341
  %355 = load ptr, ptr %25, align 8, !tbaa !5
  %356 = load double, ptr %355, align 8, !tbaa !11
  %357 = load double, ptr %57, align 8, !tbaa !11
  %358 = fmul double %356, %357
  store double %358, ptr %48, align 8, !tbaa !11
  %359 = load ptr, ptr %26, align 8, !tbaa !5
  %360 = load double, ptr %359, align 8, !tbaa !11
  %361 = load double, ptr %57, align 8, !tbaa !11
  %362 = fmul double %360, %361
  store double %362, ptr %49, align 8, !tbaa !11
  br label %363

363:                                              ; preds = %354, %341
  br label %364

364:                                              ; preds = %363, %338
  store i64 0, ptr %54, align 8, !tbaa !9
  %365 = load i64, ptr %61, align 8, !tbaa !9
  %366 = icmp ne i64 %365, 0
  br i1 %366, label %367, label %379

367:                                              ; preds = %364
  %368 = load ptr, ptr %27, align 8, !tbaa !5
  %369 = load i64, ptr %368, align 8, !tbaa !9
  %370 = icmp eq i64 %369, 1
  br i1 %370, label %371, label %378

371:                                              ; preds = %367
  %372 = load ptr, ptr %28, align 8, !tbaa !5
  %373 = load i64, ptr %372, align 8, !tbaa !9
  %374 = load ptr, ptr %22, align 8, !tbaa !5
  %375 = load i64, ptr %374, align 8, !tbaa !9
  %376 = icmp eq i64 %373, %375
  br i1 %376, label %377, label %378

377:                                              ; preds = %371
  store i64 1, ptr %54, align 8, !tbaa !9
  br label %378

378:                                              ; preds = %377, %371, %367
  br label %379

379:                                              ; preds = %378, %364
  %380 = load i64, ptr %60, align 8, !tbaa !9
  %381 = icmp ne i64 %380, 0
  br i1 %381, label %385, label %382

382:                                              ; preds = %379
  %383 = load i64, ptr %54, align 8, !tbaa !9
  %384 = icmp ne i64 %383, 0
  br i1 %384, label %385, label %461

385:                                              ; preds = %382, %379
  %386 = load ptr, ptr %29, align 8, !tbaa !5
  %387 = load double, ptr %386, align 8, !tbaa !11
  %388 = fcmp ole double %387, 0.000000e+00
  br i1 %388, label %389, label %461

389:                                              ; preds = %385
  %390 = load ptr, ptr %22, align 8, !tbaa !5
  %391 = load ptr, ptr %23, align 8, !tbaa !5
  %392 = getelementptr inbounds double, ptr %391, i64 1
  %393 = load ptr, ptr %31, align 8, !tbaa !5
  %394 = getelementptr inbounds double, ptr %393, i64 1
  %395 = call i32 @f2c_dcopy(ptr noundef %390, ptr noundef %392, ptr noundef @c__1, ptr noundef %394, ptr noundef @c__1)
  %396 = load ptr, ptr %22, align 8, !tbaa !5
  %397 = load i64, ptr %396, align 8, !tbaa !9
  %398 = sub nsw i64 %397, 1
  store i64 %398, ptr %40, align 8, !tbaa !9
  %399 = load ptr, ptr %24, align 8, !tbaa !5
  %400 = getelementptr inbounds double, ptr %399, i64 1
  %401 = load ptr, ptr %34, align 8, !tbaa !5
  %402 = getelementptr inbounds double, ptr %401, i64 1
  %403 = call i32 @f2c_dcopy(ptr noundef %40, ptr noundef %400, ptr noundef @c__1, ptr noundef %402, ptr noundef @c__1)
  %404 = load ptr, ptr %22, align 8, !tbaa !5
  %405 = load i64, ptr %404, align 8, !tbaa !9
  %406 = add nsw i64 %405, 1
  store i64 %406, ptr %69, align 8, !tbaa !9
  %407 = load i64, ptr %59, align 8, !tbaa !9
  %408 = icmp ne i64 %407, 0
  br i1 %408, label %417, label %409

409:                                              ; preds = %389
  %410 = load ptr, ptr %22, align 8, !tbaa !5
  %411 = load ptr, ptr %31, align 8, !tbaa !5
  %412 = getelementptr inbounds double, ptr %411, i64 1
  %413 = load ptr, ptr %34, align 8, !tbaa !5
  %414 = getelementptr inbounds double, ptr %413, i64 1
  %415 = load ptr, ptr %37, align 8, !tbaa !5
  %416 = call i32 @dsterf_(ptr noundef %410, ptr noundef %412, ptr noundef %414, ptr noundef %415)
  br label %451

417:                                              ; preds = %389
  %418 = load ptr, ptr %22, align 8, !tbaa !5
  %419 = load ptr, ptr %31, align 8, !tbaa !5
  %420 = getelementptr inbounds double, ptr %419, i64 1
  %421 = load ptr, ptr %34, align 8, !tbaa !5
  %422 = getelementptr inbounds double, ptr %421, i64 1
  %423 = load ptr, ptr %32, align 8, !tbaa !5
  %424 = load i64, ptr %39, align 8, !tbaa !9
  %425 = getelementptr inbounds double, ptr %423, i64 %424
  %426 = load ptr, ptr %33, align 8, !tbaa !5
  %427 = load ptr, ptr %34, align 8, !tbaa !5
  %428 = load i64, ptr %69, align 8, !tbaa !9
  %429 = getelementptr inbounds double, ptr %427, i64 %428
  %430 = load ptr, ptr %37, align 8, !tbaa !5
  %431 = call i32 @dsteqr_(ptr noundef @.str.2, ptr noundef %418, ptr noundef %420, ptr noundef %422, ptr noundef %425, ptr noundef %426, ptr noundef %429, ptr noundef %430)
  %432 = load ptr, ptr %37, align 8, !tbaa !5
  %433 = load i64, ptr %432, align 8, !tbaa !9
  %434 = icmp eq i64 %433, 0
  br i1 %434, label %435, label %450

435:                                              ; preds = %417
  %436 = load ptr, ptr %22, align 8, !tbaa !5
  %437 = load i64, ptr %436, align 8, !tbaa !9
  store i64 %437, ptr %40, align 8, !tbaa !9
  store i64 1, ptr %44, align 8, !tbaa !9
  br label %438

438:                                              ; preds = %446, %435
  %439 = load i64, ptr %44, align 8, !tbaa !9
  %440 = load i64, ptr %40, align 8, !tbaa !9
  %441 = icmp sle i64 %439, %440
  br i1 %441, label %442, label %449

442:                                              ; preds = %438
  %443 = load ptr, ptr %36, align 8, !tbaa !5
  %444 = load i64, ptr %44, align 8, !tbaa !9
  %445 = getelementptr inbounds i64, ptr %443, i64 %444
  store i64 0, ptr %445, align 8, !tbaa !9
  br label %446

446:                                              ; preds = %442
  %447 = load i64, ptr %44, align 8, !tbaa !9
  %448 = add nsw i64 %447, 1
  store i64 %448, ptr %44, align 8, !tbaa !9
  br label %438, !llvm.loop !13

449:                                              ; preds = %438
  br label %450

450:                                              ; preds = %449, %417
  br label %451

451:                                              ; preds = %450, %409
  %452 = load ptr, ptr %37, align 8, !tbaa !5
  %453 = load i64, ptr %452, align 8, !tbaa !9
  %454 = icmp eq i64 %453, 0
  br i1 %454, label %455, label %459

455:                                              ; preds = %451
  %456 = load ptr, ptr %22, align 8, !tbaa !5
  %457 = load i64, ptr %456, align 8, !tbaa !9
  %458 = load ptr, ptr %30, align 8, !tbaa !5
  store i64 %457, ptr %458, align 8, !tbaa !9
  br label %536

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

461:                                              ; preds = %459, %385, %382
  %462 = load i64, ptr %59, align 8, !tbaa !9
  %463 = icmp ne i64 %462, 0
  br i1 %463, label %464, label %466

464:                                              ; preds = %461
  %465 = getelementptr inbounds [1 x i8], ptr %58, i64 0, i64 0
  store i8 66, ptr %465, align 1, !tbaa !15
  br label %468

466:                                              ; preds = %461
  %467 = getelementptr inbounds [1 x i8], ptr %58, i64 0, i64 0
  store i8 69, ptr %467, align 1, !tbaa !15
  br label %468

468:                                              ; preds = %466, %464
  store i64 1, ptr %69, align 8, !tbaa !9
  store i64 1, ptr %63, align 8, !tbaa !9
  %469 = load i64, ptr %63, align 8, !tbaa !9
  %470 = load ptr, ptr %22, align 8, !tbaa !5
  %471 = load i64, ptr %470, align 8, !tbaa !9
  %472 = add nsw i64 %469, %471
  store i64 %472, ptr %67, align 8, !tbaa !9
  %473 = load i64, ptr %67, align 8, !tbaa !9
  %474 = load ptr, ptr %22, align 8, !tbaa !5
  %475 = load i64, ptr %474, align 8, !tbaa !9
  %476 = add nsw i64 %473, %475
  store i64 %476, ptr %68, align 8, !tbaa !9
  %477 = load ptr, ptr %21, align 8, !tbaa !5
  %478 = getelementptr inbounds [1 x i8], ptr %58, i64 0, i64 0
  %479 = load ptr, ptr %22, align 8, !tbaa !5
  %480 = load ptr, ptr %27, align 8, !tbaa !5
  %481 = load ptr, ptr %28, align 8, !tbaa !5
  %482 = load ptr, ptr %29, align 8, !tbaa !5
  %483 = load ptr, ptr %23, align 8, !tbaa !5
  %484 = getelementptr inbounds double, ptr %483, i64 1
  %485 = load ptr, ptr %24, align 8, !tbaa !5
  %486 = getelementptr inbounds double, ptr %485, i64 1
  %487 = load ptr, ptr %30, align 8, !tbaa !5
  %488 = load ptr, ptr %31, align 8, !tbaa !5
  %489 = getelementptr inbounds double, ptr %488, i64 1
  %490 = load ptr, ptr %35, align 8, !tbaa !5
  %491 = load i64, ptr %63, align 8, !tbaa !9
  %492 = getelementptr inbounds i64, ptr %490, i64 %491
  %493 = load ptr, ptr %35, align 8, !tbaa !5
  %494 = load i64, ptr %67, align 8, !tbaa !9
  %495 = getelementptr inbounds i64, ptr %493, i64 %494
  %496 = load ptr, ptr %34, align 8, !tbaa !5
  %497 = load i64, ptr %69, align 8, !tbaa !9
  %498 = getelementptr inbounds double, ptr %496, i64 %497
  %499 = load ptr, ptr %35, align 8, !tbaa !5
  %500 = load i64, ptr %68, align 8, !tbaa !9
  %501 = getelementptr inbounds i64, ptr %499, i64 %500
  %502 = load ptr, ptr %37, align 8, !tbaa !5
  %503 = call i32 @dstebz_(ptr noundef %477, ptr noundef %478, ptr noundef %479, ptr noundef %48, ptr noundef %49, ptr noundef %480, ptr noundef %481, ptr noundef %482, ptr noundef %484, ptr noundef %486, ptr noundef %487, ptr noundef %70, ptr noundef %489, ptr noundef %492, ptr noundef %495, ptr noundef %498, ptr noundef %501, ptr noundef %502)
  %504 = load i64, ptr %59, align 8, !tbaa !9
  %505 = icmp ne i64 %504, 0
  br i1 %505, label %506, label %535

506:                                              ; preds = %468
  %507 = load ptr, ptr %22, align 8, !tbaa !5
  %508 = load ptr, ptr %23, align 8, !tbaa !5
  %509 = getelementptr inbounds double, ptr %508, i64 1
  %510 = load ptr, ptr %24, align 8, !tbaa !5
  %511 = getelementptr inbounds double, ptr %510, i64 1
  %512 = load ptr, ptr %30, align 8, !tbaa !5
  %513 = load ptr, ptr %31, align 8, !tbaa !5
  %514 = getelementptr inbounds double, ptr %513, i64 1
  %515 = load ptr, ptr %35, align 8, !tbaa !5
  %516 = load i64, ptr %63, align 8, !tbaa !9
  %517 = getelementptr inbounds i64, ptr %515, i64 %516
  %518 = load ptr, ptr %35, align 8, !tbaa !5
  %519 = load i64, ptr %67, align 8, !tbaa !9
  %520 = getelementptr inbounds i64, ptr %518, i64 %519
  %521 = load ptr, ptr %32, align 8, !tbaa !5
  %522 = load i64, ptr %39, align 8, !tbaa !9
  %523 = getelementptr inbounds double, ptr %521, i64 %522
  %524 = load ptr, ptr %33, align 8, !tbaa !5
  %525 = load ptr, ptr %34, align 8, !tbaa !5
  %526 = load i64, ptr %69, align 8, !tbaa !9
  %527 = getelementptr inbounds double, ptr %525, i64 %526
  %528 = load ptr, ptr %35, align 8, !tbaa !5
  %529 = load i64, ptr %68, align 8, !tbaa !9
  %530 = getelementptr inbounds i64, ptr %528, i64 %529
  %531 = load ptr, ptr %36, align 8, !tbaa !5
  %532 = getelementptr inbounds i64, ptr %531, i64 1
  %533 = load ptr, ptr %37, align 8, !tbaa !5
  %534 = call i32 @dstein_(ptr noundef %507, ptr noundef %509, ptr noundef %511, ptr noundef %512, ptr noundef %514, ptr noundef %517, ptr noundef %520, ptr noundef %523, ptr noundef %524, ptr noundef %527, ptr noundef %530, ptr noundef %532, ptr noundef %533)
  br label %535

535:                                              ; preds = %506, %468
  br label %536

536:                                              ; preds = %535, %455
  %537 = load i64, ptr %62, align 8, !tbaa !9
  %538 = icmp eq i64 %537, 1
  br i1 %538, label %539, label %556

539:                                              ; preds = %536
  %540 = load ptr, ptr %37, align 8, !tbaa !5
  %541 = load i64, ptr %540, align 8, !tbaa !9
  %542 = icmp eq i64 %541, 0
  br i1 %542, label %543, label %546

543:                                              ; preds = %539
  %544 = load ptr, ptr %30, align 8, !tbaa !5
  %545 = load i64, ptr %544, align 8, !tbaa !9
  store i64 %545, ptr %51, align 8, !tbaa !9
  br label %550

546:                                              ; preds = %539
  %547 = load ptr, ptr %37, align 8, !tbaa !5
  %548 = load i64, ptr %547, align 8, !tbaa !9
  %549 = sub nsw i64 %548, 1
  store i64 %549, ptr %51, align 8, !tbaa !9
  br label %550

550:                                              ; preds = %546, %543
  %551 = load double, ptr %57, align 8, !tbaa !11
  %552 = fdiv double 1.000000e+00, %551
  store double %552, ptr %42, align 8, !tbaa !11
  %553 = load ptr, ptr %31, align 8, !tbaa !5
  %554 = getelementptr inbounds double, ptr %553, i64 1
  %555 = call i32 @f2c_dscal(ptr noundef %51, ptr noundef %42, ptr noundef %554, ptr noundef @c__1)
  br label %556

556:                                              ; preds = %550, %536
  %557 = load i64, ptr %59, align 8, !tbaa !9
  %558 = icmp ne i64 %557, 0
  br i1 %558, label %559, label %678

559:                                              ; preds = %556
  %560 = load ptr, ptr %30, align 8, !tbaa !5
  %561 = load i64, ptr %560, align 8, !tbaa !9
  %562 = sub nsw i64 %561, 1
  store i64 %562, ptr %40, align 8, !tbaa !9
  store i64 1, ptr %45, align 8, !tbaa !9
  br label %563

563:                                              ; preds = %674, %559
  %564 = load i64, ptr %45, align 8, !tbaa !9
  %565 = load i64, ptr %40, align 8, !tbaa !9
  %566 = icmp sle i64 %564, %565
  br i1 %566, label %567, label %677

567:                                              ; preds = %563
  store i64 0, ptr %44, align 8, !tbaa !9
  %568 = load ptr, ptr %31, align 8, !tbaa !5
  %569 = load i64, ptr %45, align 8, !tbaa !9
  %570 = getelementptr inbounds double, ptr %568, i64 %569
  %571 = load double, ptr %570, align 8, !tbaa !11
  store double %571, ptr %50, align 8, !tbaa !11
  %572 = load ptr, ptr %30, align 8, !tbaa !5
  %573 = load i64, ptr %572, align 8, !tbaa !9
  store i64 %573, ptr %41, align 8, !tbaa !9
  %574 = load i64, ptr %45, align 8, !tbaa !9
  %575 = add nsw i64 %574, 1
  store i64 %575, ptr %46, align 8, !tbaa !9
  br label %576

576:                                              ; preds = %594, %567
  %577 = load i64, ptr %46, align 8, !tbaa !9
  %578 = load i64, ptr %41, align 8, !tbaa !9
  %579 = icmp sle i64 %577, %578
  br i1 %579, label %580, label %597

580:                                              ; preds = %576
  %581 = load ptr, ptr %31, align 8, !tbaa !5
  %582 = load i64, ptr %46, align 8, !tbaa !9
  %583 = getelementptr inbounds double, ptr %581, i64 %582
  %584 = load double, ptr %583, align 8, !tbaa !11
  %585 = load double, ptr %50, align 8, !tbaa !11
  %586 = fcmp olt double %584, %585
  br i1 %586, label %587, label %593

587:                                              ; preds = %580
  %588 = load i64, ptr %46, align 8, !tbaa !9
  store i64 %588, ptr %44, align 8, !tbaa !9
  %589 = load ptr, ptr %31, align 8, !tbaa !5
  %590 = load i64, ptr %46, align 8, !tbaa !9
  %591 = getelementptr inbounds double, ptr %589, i64 %590
  %592 = load double, ptr %591, align 8, !tbaa !11
  store double %592, ptr %50, align 8, !tbaa !11
  br label %593

593:                                              ; preds = %587, %580
  br label %594

594:                                              ; preds = %593
  %595 = load i64, ptr %46, align 8, !tbaa !9
  %596 = add nsw i64 %595, 1
  store i64 %596, ptr %46, align 8, !tbaa !9
  br label %576, !llvm.loop !16

597:                                              ; preds = %576
  %598 = load i64, ptr %44, align 8, !tbaa !9
  %599 = icmp ne i64 %598, 0
  br i1 %599, label %600, label %673

600:                                              ; preds = %597
  %601 = load ptr, ptr %35, align 8, !tbaa !5
  %602 = load i64, ptr %63, align 8, !tbaa !9
  %603 = load i64, ptr %44, align 8, !tbaa !9
  %604 = add nsw i64 %602, %603
  %605 = sub nsw i64 %604, 1
  %606 = getelementptr inbounds i64, ptr %601, i64 %605
  %607 = load i64, ptr %606, align 8, !tbaa !9
  store i64 %607, ptr %56, align 8, !tbaa !9
  %608 = load ptr, ptr %31, align 8, !tbaa !5
  %609 = load i64, ptr %45, align 8, !tbaa !9
  %610 = getelementptr inbounds double, ptr %608, i64 %609
  %611 = load double, ptr %610, align 8, !tbaa !11
  %612 = load ptr, ptr %31, align 8, !tbaa !5
  %613 = load i64, ptr %44, align 8, !tbaa !9
  %614 = getelementptr inbounds double, ptr %612, i64 %613
  store double %611, ptr %614, align 8, !tbaa !11
  %615 = load ptr, ptr %35, align 8, !tbaa !5
  %616 = load i64, ptr %63, align 8, !tbaa !9
  %617 = load i64, ptr %45, align 8, !tbaa !9
  %618 = add nsw i64 %616, %617
  %619 = sub nsw i64 %618, 1
  %620 = getelementptr inbounds i64, ptr %615, i64 %619
  %621 = load i64, ptr %620, align 8, !tbaa !9
  %622 = load ptr, ptr %35, align 8, !tbaa !5
  %623 = load i64, ptr %63, align 8, !tbaa !9
  %624 = load i64, ptr %44, align 8, !tbaa !9
  %625 = add nsw i64 %623, %624
  %626 = sub nsw i64 %625, 1
  %627 = getelementptr inbounds i64, ptr %622, i64 %626
  store i64 %621, ptr %627, align 8, !tbaa !9
  %628 = load double, ptr %50, align 8, !tbaa !11
  %629 = load ptr, ptr %31, align 8, !tbaa !5
  %630 = load i64, ptr %45, align 8, !tbaa !9
  %631 = getelementptr inbounds double, ptr %629, i64 %630
  store double %628, ptr %631, align 8, !tbaa !11
  %632 = load i64, ptr %56, 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 %45, 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 ptr, ptr %22, align 8, !tbaa !5
  %640 = load ptr, ptr %32, align 8, !tbaa !5
  %641 = load i64, ptr %44, align 8, !tbaa !9
  %642 = load i64, ptr %38, align 8, !tbaa !9
  %643 = mul nsw i64 %641, %642
  %644 = add nsw i64 %643, 1
  %645 = getelementptr inbounds double, ptr %640, i64 %644
  %646 = load ptr, ptr %32, align 8, !tbaa !5
  %647 = load i64, ptr %45, align 8, !tbaa !9
  %648 = load i64, ptr %38, align 8, !tbaa !9
  %649 = mul nsw i64 %647, %648
  %650 = add nsw i64 %649, 1
  %651 = getelementptr inbounds double, ptr %646, i64 %650
  %652 = call i32 @f2c_dswap(ptr noundef %639, ptr noundef %645, ptr noundef @c__1, ptr noundef %651, ptr noundef @c__1)
  %653 = load ptr, ptr %37, align 8, !tbaa !5
  %654 = load i64, ptr %653, align 8, !tbaa !9
  %655 = icmp ne i64 %654, 0
  br i1 %655, label %656, label %672

656:                                              ; preds = %600
  %657 = load ptr, ptr %36, align 8, !tbaa !5
  %658 = load i64, ptr %44, align 8, !tbaa !9
  %659 = getelementptr inbounds i64, ptr %657, i64 %658
  %660 = load i64, ptr %659, align 8, !tbaa !9
  store i64 %660, ptr %56, align 8, !tbaa !9
  %661 = load ptr, ptr %36, align 8, !tbaa !5
  %662 = load i64, ptr %45, align 8, !tbaa !9
  %663 = getelementptr inbounds i64, ptr %661, i64 %662
  %664 = load i64, ptr %663, align 8, !tbaa !9
  %665 = load ptr, ptr %36, align 8, !tbaa !5
  %666 = load i64, ptr %44, align 8, !tbaa !9
  %667 = getelementptr inbounds i64, ptr %665, i64 %666
  store i64 %664, ptr %667, align 8, !tbaa !9
  %668 = load i64, ptr %56, align 8, !tbaa !9
  %669 = load ptr, ptr %36, align 8, !tbaa !5
  %670 = load i64, ptr %45, align 8, !tbaa !9
  %671 = getelementptr inbounds i64, ptr %669, i64 %670
  store i64 %668, ptr %671, align 8, !tbaa !9
  br label %672

672:                                              ; preds = %656, %600
  br label %673

673:                                              ; preds = %672, %597
  br label %674

674:                                              ; preds = %673
  %675 = load i64, ptr %45, align 8, !tbaa !9
  %676 = add nsw i64 %675, 1
  store i64 %676, ptr %45, align 8, !tbaa !9
  br label %563, !llvm.loop !17

677:                                              ; preds = %563
  br label %678

678:                                              ; preds = %677, %556
  store i32 0, ptr %19, align 4
  store i32 1, ptr %72, align 4
  br label %679

679:                                              ; preds = %678, %278, %230, %220
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 1, 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 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  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
  %680 = load i32, ptr %19, align 4
  ret i32 %680
}

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

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

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

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

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

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

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

declare i32 @dstebz_(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 @dstein_(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_dswap(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 = !{!"double", !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 @dstevx_(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 double, align 8
  %21 = alloca double, align 8
  %22 = alloca double, align 8
  %23 = alloca i64, align 8
  %24 = alloca double, align 8
  %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 8, ptr nonnull %20) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #6
  call void @llvm.lifetime.start.p0(i64 8, 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 -8
  %28 = load i64, ptr %13, align 8, !tbaa !5
  %29 = xor i64 %28, -1
  %30 = getelementptr inbounds double, 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 %.thread286.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 %.thread286.sink.split

43:                                               ; preds = %39
  %44 = load i64, ptr %2, align 8, !tbaa !5
  %45 = icmp slt i64 %44, 0
  br i1 %45, label %.thread286.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 double, ptr %6, align 8, !tbaa !9
  %50 = load double, ptr %5, align 8, !tbaa !9
  %51 = fcmp ugt double %49, %50
  br i1 %51, label %61, label %.thread286.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.cond297 = or i1 %55, %56
  br i1 %or.cond297, label %.thread286.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.cond295 = or i1 %59, %60
  br i1 %or.cond295, label %.thread286.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 %.thread286

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.cond316 = and i1 %.not, %66
  %or.cond319 = or i1 %65, %or.cond316
  br i1 %or.cond319, label %.thread286.sink.split, label %.thread

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

.thread286:                                       ; preds = %.thread286.sink.split, %61
  %67 = phi i64 [ %.pr, %61 ], [ %.sink317, %.thread286.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 double, ptr %3, align 8, !tbaa !9
  br label %.sink.split

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

78:                                               ; preds = %74
  %79 = load double, ptr %6, align 8, !tbaa !9
  %80 = fcmp ult double %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
  %.sink318 = phi double [ %76, %81 ], [ %73, %72 ]
  store double %.sink318, ptr %11, align 8, !tbaa !9
  br label %82

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

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

84:                                               ; preds = %.thread
  %85 = tail call double @dlamch_(ptr noundef nonnull @.str.5) #6
  %86 = tail call double @dlamch_(ptr noundef nonnull @.str.6) #6
  %87 = fdiv double %85, %86
  %88 = fdiv double 1.000000e+00, %87
  %89 = tail call double @sqrt(double noundef %87) #6
  %90 = tail call double @sqrt(double noundef %88) #6
  store double %90, ptr %20, align 8, !tbaa !9
  %91 = tail call double @sqrt(double noundef %85) #6
  %92 = tail call double @sqrt(double noundef %91) #6
  %93 = fdiv double 1.000000e+00, %92
  %94 = fcmp ole double %90, %93
  %95 = select i1 %94, double %90, double %93
  %.not271 = icmp eq i64 %35, 0
  br i1 %.not271, label %99, label %96

96:                                               ; preds = %84
  %97 = load double, ptr %5, align 8, !tbaa !9
  %98 = load double, ptr %6, align 8, !tbaa !9
  br label %99

99:                                               ; preds = %84, %96
  %.sink = phi double [ %97, %96 ], [ 0.000000e+00, %84 ]
  %storemerge = phi double [ %98, %96 ], [ 0.000000e+00, %84 ]
  store double %.sink, ptr %21, align 8
  store double %storemerge, ptr %22, align 8, !tbaa !9
  %100 = tail call double @dlanst_(ptr noundef nonnull @.str.7, ptr noundef nonnull %2, ptr noundef %3, ptr noundef %4) #6
  %101 = fcmp ogt double %100, 0.000000e+00
  %102 = fcmp olt double %100, %89
  %or.cond280 = select i1 %101, i1 %102, i1 false
  br i1 %or.cond280, label %105, label %103

103:                                              ; preds = %99
  %104 = fcmp ogt double %100, %95
  br i1 %104, label %105, label %116

105:                                              ; preds = %103, %99
  %.pn = phi double [ %89, %99 ], [ %95, %103 ]
  %storemerge296 = fdiv double %.pn, %100
  store double %storemerge296, ptr %24, align 8, !tbaa !9
  %106 = call i32 @f2c_dscal(ptr noundef nonnull %2, ptr noundef nonnull %24, ptr noundef %3, ptr noundef nonnull @c__1) #6
  %107 = load i64, ptr %2, align 8, !tbaa !5
  %108 = add nsw i64 %107, -1
  store i64 %108, ptr %19, align 8, !tbaa !5
  %109 = call i32 @f2c_dscal(ptr noundef nonnull %19, ptr noundef nonnull %24, ptr noundef %4, ptr noundef nonnull @c__1) #6
  br i1 %.not271, label %116, label %110

110:                                              ; preds = %105
  %111 = load double, ptr %5, align 8, !tbaa !9
  %112 = load double, ptr %24, align 8, !tbaa !9
  %113 = fmul double %111, %112
  store double %113, ptr %21, align 8, !tbaa !9
  %114 = load double, ptr %6, align 8, !tbaa !9
  %115 = fmul double %112, %114
  store double %115, ptr %22, align 8, !tbaa !9
  br label %116

116:                                              ; preds = %103, %105, %110
  %117 = phi i1 [ true, %105 ], [ true, %110 ], [ false, %103 ]
  %.not272 = icmp eq i64 %36, 0
  br i1 %.not272, label %125, label %118

118:                                              ; preds = %116
  %119 = load i64, ptr %7, align 8, !tbaa !5
  %120 = icmp eq i64 %119, 1
  br i1 %120, label %121, label %125

121:                                              ; preds = %118
  %122 = load i64, ptr %8, align 8, !tbaa !5
  %123 = load i64, ptr %2, align 8, !tbaa !5
  %124 = icmp eq i64 %122, %123
  br label %125

125:                                              ; preds = %121, %118, %116
  %126 = phi i1 [ false, %118 ], [ false, %116 ], [ %124, %121 ]
  %or.cond7 = or i1 %40, %126
  br i1 %or.cond7, label %127, label %149

127:                                              ; preds = %125
  %128 = load double, ptr %9, align 8, !tbaa !9
  %129 = fcmp ugt double %128, 0.000000e+00
  br i1 %129, label %149, label %130

130:                                              ; preds = %127
  %131 = call i32 @f2c_dcopy(ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull @c__1, ptr noundef %11, ptr noundef nonnull @c__1) #6
  %132 = load i64, ptr %2, align 8, !tbaa !5
  %133 = add nsw i64 %132, -1
  store i64 %133, ptr %19, align 8, !tbaa !5
  %134 = call i32 @f2c_dcopy(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 %137, label %135

135:                                              ; preds = %130
  %136 = call i32 @dsterf_(ptr noundef nonnull %2, ptr noundef %11, ptr noundef %14, ptr noundef nonnull %17) #6
  br label %.loopexit298

137:                                              ; preds = %130
  %138 = load i64, ptr %2, align 8, !tbaa !5
  %139 = getelementptr double, ptr %14, i64 %138
  %140 = call i32 @dsteqr_(ptr noundef nonnull @.str.2, ptr noundef nonnull %2, ptr noundef %11, ptr noundef %14, ptr noundef %12, ptr noundef nonnull %13, ptr noundef %139, ptr noundef nonnull %17) #6
  %141 = load i64, ptr %17, align 8, !tbaa !5
  %142 = icmp eq i64 %141, 0
  br i1 %142, label %143, label %.thread292

143:                                              ; preds = %137
  %144 = load i64, ptr %2, align 8, !tbaa !5
  store i64 %144, ptr %19, align 8, !tbaa !5
  %.not273299 = icmp slt i64 %144, 1
  br i1 %.not273299, label %.loopexit298, label %.lr.ph.preheader

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

.loopexit298:                                     ; preds = %.lr.ph.preheader, %143, %135
  %.pr291 = load i64, ptr %17, align 8, !tbaa !5
  %146 = icmp eq i64 %.pr291, 0
  br i1 %146, label %147, label %.thread292

147:                                              ; preds = %.loopexit298
  %148 = load i64, ptr %2, align 8, !tbaa !5
  store i64 %148, ptr %10, align 8, !tbaa !5
  br label %156

.thread292:                                       ; preds = %137, %.loopexit298
  store i64 0, ptr %17, align 8, !tbaa !5
  br label %149

149:                                              ; preds = %125, %.thread292, %127
  %.282 = select i1 %.not, i8 66, i8 69
  store i8 %.282, ptr %25, align 1, !tbaa !11
  %150 = load i64, ptr %2, align 8, !tbaa !5
  %151 = getelementptr i64, ptr %15, i64 %150
  %.idx = shl i64 %150, 4
  %152 = getelementptr i8, ptr %15, i64 %.idx
  %153 = call i32 @dstebz_(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 %151, ptr noundef %14, ptr noundef %152, ptr noundef nonnull %17) #6
  br i1 %.not, label %154, label %156

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

156:                                              ; preds = %149, %154, %147
  br i1 %117, label %157, label %168

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

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

162:                                              ; preds = %157
  %163 = add nsw i64 %158, -1
  br label %164

164:                                              ; preds = %162, %160
  %storemerge275 = phi i64 [ %163, %162 ], [ %161, %160 ]
  store i64 %storemerge275, ptr %23, align 8, !tbaa !5
  %165 = load double, ptr %24, align 8, !tbaa !9
  %166 = fdiv double 1.000000e+00, %165
  store double %166, ptr %20, align 8, !tbaa !9
  %167 = call i32 @f2c_dscal(ptr noundef nonnull %23, ptr noundef nonnull %20, ptr noundef %11, ptr noundef nonnull @c__1) #6
  br label %168

168:                                              ; preds = %164, %156
  br i1 %.not, label %169, label %.loopexit

169:                                              ; preds = %168
  %170 = load i64, ptr %10, align 8, !tbaa !5
  %171 = add nsw i64 %170, -1
  store i64 %171, ptr %19, align 8, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %30, i64 8
  %.not276309 = icmp slt i64 %170, 2
  br i1 %.not276309, label %.loopexit, label %.lr.ph312

.lr.ph312:                                        ; preds = %169, %._crit_edge.thread
  %.0249310 = phi i64 [ %175, %._crit_edge.thread ], [ 1, %169 ]
  %172 = getelementptr inbounds double, ptr %27, i64 %.0249310
  %173 = load double, ptr %172, align 8, !tbaa !9
  %174 = load i64, ptr %10, align 8, !tbaa !5
  %175 = add nuw nsw i64 %.0249310, 1
  %.not277301.not = icmp slt i64 %.0249310, %174
  br i1 %.not277301.not, label %.lr.ph305, label %._crit_edge.thread

.lr.ph305:                                        ; preds = %.lr.ph312, %.lr.ph305
  %.1304 = phi i64 [ %.2, %.lr.ph305 ], [ 0, %.lr.ph312 ]
  %.0250303 = phi i64 [ %179, %.lr.ph305 ], [ %175, %.lr.ph312 ]
  %.0252302 = phi double [ %.1253, %.lr.ph305 ], [ %173, %.lr.ph312 ]
  %176 = getelementptr inbounds double, ptr %27, i64 %.0250303
  %177 = load double, ptr %176, align 8, !tbaa !9
  %178 = fcmp olt double %177, %.0252302
  %.1253 = select i1 %178, double %177, double %.0252302
  %.2 = select i1 %178, i64 %.0250303, i64 %.1304
  %179 = add nuw nsw i64 %.0250303, 1
  %.not277.not = icmp slt i64 %.0250303, %174
  br i1 %.not277.not, label %.lr.ph305, label %._crit_edge, !llvm.loop !12

._crit_edge:                                      ; preds = %.lr.ph305
  %.not278 = icmp eq i64 %.2, 0
  br i1 %.not278, label %._crit_edge.thread, label %180

180:                                              ; preds = %._crit_edge
  %181 = getelementptr inbounds i64, ptr %31, i64 %.2
  %182 = load i64, ptr %181, align 8, !tbaa !5
  %183 = getelementptr inbounds double, ptr %27, i64 %.2
  store double %173, ptr %183, align 8, !tbaa !9
  %184 = getelementptr inbounds i64, ptr %31, i64 %.0249310
  %185 = load i64, ptr %184, align 8, !tbaa !5
  store i64 %185, ptr %181, align 8, !tbaa !5
  store double %.1253, ptr %172, align 8, !tbaa !9
  store i64 %182, ptr %184, align 8, !tbaa !5
  %186 = mul nsw i64 %.2, %28
  %gep = getelementptr double, ptr %invariant.gep, i64 %186
  %187 = mul nsw i64 %.0249310, %28
  %gep308 = getelementptr double, ptr %invariant.gep, i64 %187
  %188 = call i32 @f2c_dswap(ptr noundef nonnull %2, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %gep308, ptr noundef nonnull @c__1) #6
  %189 = load i64, ptr %17, align 8, !tbaa !5
  %.not279 = icmp eq i64 %189, 0
  br i1 %.not279, label %._crit_edge.thread, label %190

190:                                              ; preds = %180
  %191 = getelementptr inbounds i64, ptr %32, i64 %.2
  %192 = load i64, ptr %191, align 8, !tbaa !5
  %193 = getelementptr inbounds i64, ptr %32, i64 %.0249310
  %194 = load i64, ptr %193, align 8, !tbaa !5
  store i64 %194, ptr %191, align 8, !tbaa !5
  store i64 %192, ptr %193, align 8, !tbaa !5
  br label %._crit_edge.thread

._crit_edge.thread:                               ; preds = %.lr.ph312, %._crit_edge, %190, %180
  %195 = load i64, ptr %19, align 8, !tbaa !5
  %.not276.not = icmp slt i64 %.0249310, %195
  br i1 %.not276.not, label %.lr.ph312, label %.loopexit, !llvm.loop !14

.loopexit:                                        ; preds = %._crit_edge.thread, %169, %168, %82, %83, %.thread, %.thread286
  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 8, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 8, 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 @dlamch_(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 @dlanst_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

declare i32 @dstebz_(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 @dstein_(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_dswap(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.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 = !{!"double", !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