; LLVM IR from OpenMathLib/OpenBLAS :: lapack-netlib/SRC (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 i32, align 4

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

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

109:                                              ; preds = %105
  %110 = load ptr, ptr %36, align 8, !tbaa !5
  store i32 -1, ptr %110, align 4, !tbaa !9
  br label %197

111:                                              ; preds = %105, %18
  %112 = load i32, ptr %55, align 4, !tbaa !9
  %113 = icmp ne i32 %112, 0
  br i1 %113, label %122, label %114

114:                                              ; preds = %111
  %115 = load i32, ptr %59, align 4, !tbaa !9
  %116 = icmp ne i32 %115, 0
  br i1 %116, label %122, label %117

117:                                              ; preds = %114
  %118 = load i32, ptr %56, align 4, !tbaa !9
  %119 = icmp ne i32 %118, 0
  br i1 %119, label %122, label %120

120:                                              ; preds = %117
  %121 = load ptr, ptr %36, align 8, !tbaa !5
  store i32 -2, ptr %121, align 4, !tbaa !9
  br label %196

122:                                              ; preds = %117, %114, %111
  %123 = load ptr, ptr %21, align 8, !tbaa !5
  %124 = load i32, ptr %123, align 4, !tbaa !9
  %125 = icmp slt i32 %124, 0
  br i1 %125, label %126, label %128

126:                                              ; preds = %122
  %127 = load ptr, ptr %36, align 8, !tbaa !5
  store i32 -3, ptr %127, align 4, !tbaa !9
  br label %195

128:                                              ; preds = %122
  %129 = load i32, ptr %59, align 4, !tbaa !9
  %130 = icmp ne i32 %129, 0
  br i1 %130, label %131, label %144

131:                                              ; preds = %128
  %132 = load ptr, ptr %21, align 8, !tbaa !5
  %133 = load i32, ptr %132, align 4, !tbaa !9
  %134 = icmp sgt i32 %133, 0
  br i1 %134, label %135, label %143

135:                                              ; preds = %131
  %136 = load ptr, ptr %25, align 8, !tbaa !5
  %137 = load double, ptr %136, align 8, !tbaa !11
  %138 = load ptr, ptr %24, align 8, !tbaa !5
  %139 = load double, ptr %138, align 8, !tbaa !11
  %140 = fcmp ole double %137, %139
  br i1 %140, label %141, label %143

141:                                              ; preds = %135
  %142 = load ptr, ptr %36, align 8, !tbaa !5
  store i32 -7, ptr %142, align 4, !tbaa !9
  br label %143

143:                                              ; preds = %141, %135, %131
  br label %194

144:                                              ; preds = %128
  %145 = load i32, ptr %56, align 4, !tbaa !9
  %146 = icmp ne i32 %145, 0
  br i1 %146, label %147, label %193

147:                                              ; preds = %144
  %148 = load ptr, ptr %26, align 8, !tbaa !5
  %149 = load i32, ptr %148, align 4, !tbaa !9
  %150 = icmp slt i32 %149, 1
  br i1 %150, label %164, label %151

151:                                              ; preds = %147
  %152 = load ptr, ptr %26, align 8, !tbaa !5
  %153 = load i32, ptr %152, align 4, !tbaa !9
  %154 = load ptr, ptr %21, align 8, !tbaa !5
  %155 = load i32, ptr %154, align 4, !tbaa !9
  %156 = icmp sge i32 1, %155
  br i1 %156, label %157, label %158

157:                                              ; preds = %151
  br label %161

158:                                              ; preds = %151
  %159 = load ptr, ptr %21, align 8, !tbaa !5
  %160 = load i32, ptr %159, align 4, !tbaa !9
  br label %161

161:                                              ; preds = %158, %157
  %162 = phi i32 [ 1, %157 ], [ %160, %158 ]
  %163 = icmp sgt i32 %153, %162
  br i1 %163, label %164, label %166

164:                                              ; preds = %161, %147
  %165 = load ptr, ptr %36, align 8, !tbaa !5
  store i32 -8, ptr %165, align 4, !tbaa !9
  br label %192

166:                                              ; preds = %161
  %167 = load ptr, ptr %27, align 8, !tbaa !5
  %168 = load i32, ptr %167, align 4, !tbaa !9
  %169 = load ptr, ptr %21, align 8, !tbaa !5
  %170 = load i32, ptr %169, align 4, !tbaa !9
  %171 = load ptr, ptr %26, align 8, !tbaa !5
  %172 = load i32, ptr %171, align 4, !tbaa !9
  %173 = icmp sle i32 %170, %172
  br i1 %173, label %174, label %177

174:                                              ; preds = %166
  %175 = load ptr, ptr %21, align 8, !tbaa !5
  %176 = load i32, ptr %175, align 4, !tbaa !9
  br label %180

177:                                              ; preds = %166
  %178 = load ptr, ptr %26, align 8, !tbaa !5
  %179 = load i32, ptr %178, align 4, !tbaa !9
  br label %180

180:                                              ; preds = %177, %174
  %181 = phi i32 [ %176, %174 ], [ %179, %177 ]
  %182 = icmp slt i32 %168, %181
  br i1 %182, label %189, label %183

183:                                              ; preds = %180
  %184 = load ptr, ptr %27, align 8, !tbaa !5
  %185 = load i32, ptr %184, align 4, !tbaa !9
  %186 = load ptr, ptr %21, align 8, !tbaa !5
  %187 = load i32, ptr %186, align 4, !tbaa !9
  %188 = icmp sgt i32 %185, %187
  br i1 %188, label %189, label %191

189:                                              ; preds = %183, %180
  %190 = load ptr, ptr %36, align 8, !tbaa !5
  store i32 -9, ptr %190, align 4, !tbaa !9
  br label %191

191:                                              ; preds = %189, %183
  br label %192

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

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

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

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

196:                                              ; preds = %195, %120
  br label %197

197:                                              ; preds = %196, %109
  %198 = load ptr, ptr %36, align 8, !tbaa !5
  %199 = load i32, ptr %198, align 4, !tbaa !9
  %200 = icmp eq i32 %199, 0
  br i1 %200, label %201, label %217

201:                                              ; preds = %197
  %202 = load ptr, ptr %32, align 8, !tbaa !5
  %203 = load i32, ptr %202, align 4, !tbaa !9
  %204 = icmp slt i32 %203, 1
  br i1 %204, label %214, label %205

205:                                              ; preds = %201
  %206 = load i32, ptr %53, align 4, !tbaa !9
  %207 = icmp ne i32 %206, 0
  br i1 %207, label %208, label %216

208:                                              ; preds = %205
  %209 = load ptr, ptr %32, align 8, !tbaa !5
  %210 = load i32, ptr %209, align 4, !tbaa !9
  %211 = load ptr, ptr %21, align 8, !tbaa !5
  %212 = load i32, ptr %211, align 4, !tbaa !9
  %213 = icmp slt i32 %210, %212
  br i1 %213, label %214, label %216

214:                                              ; preds = %208, %201
  %215 = load ptr, ptr %36, align 8, !tbaa !5
  store i32 -14, ptr %215, align 4, !tbaa !9
  br label %216

216:                                              ; preds = %214, %208, %205
  br label %217

217:                                              ; preds = %216, %197
  %218 = load ptr, ptr %36, align 8, !tbaa !5
  %219 = load i32, ptr %218, align 4, !tbaa !9
  %220 = icmp ne i32 %219, 0
  br i1 %220, label %221, label %226

221:                                              ; preds = %217
  %222 = load ptr, ptr %36, align 8, !tbaa !5
  %223 = load i32, ptr %222, align 4, !tbaa !9
  %224 = sub nsw i32 0, %223
  store i32 %224, ptr %39, align 4, !tbaa !9
  %225 = call i32 @xerbla_(ptr noundef @.str.4, ptr noundef %39, i32 noundef 6)
  store i32 1, ptr %71, align 4
  br label %699

226:                                              ; preds = %217
  %227 = load ptr, ptr %29, align 8, !tbaa !5
  store i32 0, ptr %227, align 4, !tbaa !9
  %228 = load ptr, ptr %21, align 8, !tbaa !5
  %229 = load i32, ptr %228, align 4, !tbaa !9
  %230 = icmp eq i32 %229, 0
  br i1 %230, label %231, label %232

231:                                              ; preds = %226
  store i32 1, ptr %71, align 4
  br label %699

232:                                              ; preds = %226
  %233 = load ptr, ptr %21, align 8, !tbaa !5
  %234 = load i32, ptr %233, align 4, !tbaa !9
  %235 = icmp eq i32 %234, 1
  br i1 %235, label %236, label %281

236:                                              ; preds = %232
  %237 = load i32, ptr %55, align 4, !tbaa !9
  %238 = icmp ne i32 %237, 0
  br i1 %238, label %242, label %239

239:                                              ; preds = %236
  %240 = load i32, ptr %56, align 4, !tbaa !9
  %241 = icmp ne i32 %240, 0
  br i1 %241, label %242, label %249

242:                                              ; preds = %239, %236
  %243 = load ptr, ptr %29, align 8, !tbaa !5
  store i32 1, ptr %243, align 4, !tbaa !9
  %244 = load ptr, ptr %22, align 8, !tbaa !5
  %245 = getelementptr inbounds double, ptr %244, i64 1
  %246 = load double, ptr %245, align 8, !tbaa !11
  %247 = load ptr, ptr %30, align 8, !tbaa !5
  %248 = getelementptr inbounds double, ptr %247, i64 1
  store double %246, ptr %248, align 8, !tbaa !11
  br label %271

249:                                              ; preds = %239
  %250 = load ptr, ptr %24, align 8, !tbaa !5
  %251 = load double, ptr %250, align 8, !tbaa !11
  %252 = load ptr, ptr %22, align 8, !tbaa !5
  %253 = getelementptr inbounds double, ptr %252, i64 1
  %254 = load double, ptr %253, align 8, !tbaa !11
  %255 = fcmp olt double %251, %254
  br i1 %255, label %256, label %270

256:                                              ; preds = %249
  %257 = load ptr, ptr %25, align 8, !tbaa !5
  %258 = load double, ptr %257, align 8, !tbaa !11
  %259 = load ptr, ptr %22, align 8, !tbaa !5
  %260 = getelementptr inbounds double, ptr %259, i64 1
  %261 = load double, ptr %260, align 8, !tbaa !11
  %262 = fcmp oge double %258, %261
  br i1 %262, label %263, label %270

263:                                              ; preds = %256
  %264 = load ptr, ptr %29, align 8, !tbaa !5
  store i32 1, ptr %264, align 4, !tbaa !9
  %265 = load ptr, ptr %22, align 8, !tbaa !5
  %266 = getelementptr inbounds double, ptr %265, i64 1
  %267 = load double, ptr %266, align 8, !tbaa !11
  %268 = load ptr, ptr %30, align 8, !tbaa !5
  %269 = getelementptr inbounds double, ptr %268, i64 1
  store double %267, ptr %269, align 8, !tbaa !11
  br label %270

270:                                              ; preds = %263, %256, %249
  br label %271

271:                                              ; preds = %270, %242
  %272 = load i32, ptr %53, align 4, !tbaa !9
  %273 = icmp ne i32 %272, 0
  br i1 %273, label %274, label %280

274:                                              ; preds = %271
  %275 = load ptr, ptr %31, align 8, !tbaa !5
  %276 = load i32, ptr %37, align 4, !tbaa !9
  %277 = add nsw i32 %276, 1
  %278 = sext i32 %277 to i64
  %279 = getelementptr inbounds double, ptr %275, i64 %278
  store double 1.000000e+00, ptr %279, align 8, !tbaa !11
  br label %280

280:                                              ; preds = %274, %271
  store i32 1, ptr %71, align 4
  br label %699

281:                                              ; preds = %232
  %282 = call double @dlamch_(ptr noundef @.str.5)
  store double %282, ptr %60, align 8, !tbaa !11
  %283 = call double @dlamch_(ptr noundef @.str.6)
  store double %283, ptr %67, align 8, !tbaa !11
  %284 = load double, ptr %60, align 8, !tbaa !11
  %285 = load double, ptr %67, align 8, !tbaa !11
  %286 = fdiv double %284, %285
  store double %286, ptr %66, align 8, !tbaa !11
  %287 = load double, ptr %66, align 8, !tbaa !11
  %288 = fdiv double 1.000000e+00, %287
  store double %288, ptr %61, 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 %44, align 8, !tbaa !11
  %291 = load double, ptr %61, align 8, !tbaa !11
  %292 = call double @sqrt(double noundef %291) #4
  store double %292, ptr %41, align 8, !tbaa !11
  %293 = load double, ptr %60, align 8, !tbaa !11
  %294 = call double @sqrt(double noundef %293) #4
  %295 = call double @sqrt(double noundef %294) #4
  %296 = fdiv double 1.000000e+00, %295
  store double %296, ptr %42, align 8, !tbaa !11
  %297 = load double, ptr %41, align 8, !tbaa !11
  %298 = load double, ptr %42, align 8, !tbaa !11
  %299 = fcmp ole double %297, %298
  br i1 %299, label %300, label %302

300:                                              ; preds = %281
  %301 = load double, ptr %41, align 8, !tbaa !11
  br label %304

302:                                              ; preds = %281
  %303 = load double, ptr %42, align 8, !tbaa !11
  br label %304

304:                                              ; preds = %302, %300
  %305 = phi double [ %301, %300 ], [ %303, %302 ]
  store double %305, ptr %45, align 8, !tbaa !11
  store i32 0, ptr %57, align 4, !tbaa !9
  %306 = load i32, ptr %59, align 4, !tbaa !9
  %307 = icmp ne i32 %306, 0
  br i1 %307, label %308, label %313

308:                                              ; preds = %304
  %309 = load ptr, ptr %24, align 8, !tbaa !5
  %310 = load double, ptr %309, align 8, !tbaa !11
  store double %310, ptr %68, align 8, !tbaa !11
  %311 = load ptr, ptr %25, align 8, !tbaa !5
  %312 = load double, ptr %311, align 8, !tbaa !11
  store double %312, ptr %69, align 8, !tbaa !11
  br label %314

313:                                              ; preds = %304
  store double 0.000000e+00, ptr %68, align 8, !tbaa !11
  store double 0.000000e+00, ptr %69, align 8, !tbaa !11
  br label %314

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

323:                                              ; preds = %314
  %324 = load double, ptr %47, align 8, !tbaa !11
  %325 = load double, ptr %44, align 8, !tbaa !11
  %326 = fcmp olt double %324, %325
  br i1 %326, label %327, label %331

327:                                              ; preds = %323
  store i32 1, ptr %57, align 4, !tbaa !9
  %328 = load double, ptr %44, align 8, !tbaa !11
  %329 = load double, ptr %47, align 8, !tbaa !11
  %330 = fdiv double %328, %329
  store double %330, ptr %51, align 8, !tbaa !11
  br label %340

331:                                              ; preds = %323, %314
  %332 = load double, ptr %47, align 8, !tbaa !11
  %333 = load double, ptr %45, align 8, !tbaa !11
  %334 = fcmp ogt double %332, %333
  br i1 %334, label %335, label %339

335:                                              ; preds = %331
  store i32 1, ptr %57, align 4, !tbaa !9
  %336 = load double, ptr %45, align 8, !tbaa !11
  %337 = load double, ptr %47, align 8, !tbaa !11
  %338 = fdiv double %336, %337
  store double %338, ptr %51, align 8, !tbaa !11
  br label %339

339:                                              ; preds = %335, %331
  br label %340

340:                                              ; preds = %339, %327
  %341 = load i32, ptr %57, align 4, !tbaa !9
  %342 = icmp eq i32 %341, 1
  br i1 %342, label %343, label %364

343:                                              ; preds = %340
  %344 = load ptr, ptr %21, align 8, !tbaa !5
  %345 = load ptr, ptr %22, align 8, !tbaa !5
  %346 = getelementptr inbounds double, ptr %345, i64 1
  call void @dscal_(ptr noundef %344, ptr noundef %51, ptr noundef %346, ptr noundef @c__1)
  %347 = load ptr, ptr %21, align 8, !tbaa !5
  %348 = load i32, ptr %347, align 4, !tbaa !9
  %349 = sub nsw i32 %348, 1
  store i32 %349, ptr %39, align 4, !tbaa !9
  %350 = load ptr, ptr %23, align 8, !tbaa !5
  %351 = getelementptr inbounds double, ptr %350, i64 1
  call void @dscal_(ptr noundef %39, ptr noundef %51, ptr noundef %351, ptr noundef @c__1)
  %352 = load i32, ptr %59, align 4, !tbaa !9
  %353 = icmp ne i32 %352, 0
  br i1 %353, label %354, label %363

354:                                              ; preds = %343
  %355 = load ptr, ptr %24, align 8, !tbaa !5
  %356 = load double, ptr %355, align 8, !tbaa !11
  %357 = load double, ptr %51, align 8, !tbaa !11
  %358 = fmul double %356, %357
  store double %358, ptr %68, align 8, !tbaa !11
  %359 = load ptr, ptr %25, align 8, !tbaa !5
  %360 = load double, ptr %359, align 8, !tbaa !11
  %361 = load double, ptr %51, align 8, !tbaa !11
  %362 = fmul double %360, %361
  store double %362, ptr %69, align 8, !tbaa !11
  br label %363

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

364:                                              ; preds = %363, %340
  store i32 0, ptr %46, align 4, !tbaa !9
  %365 = load i32, ptr %56, align 4, !tbaa !9
  %366 = icmp ne i32 %365, 0
  br i1 %366, label %367, label %379

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

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

377:                                              ; preds = %371
  store i32 1, ptr %46, align 4, !tbaa !9
  br label %378

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

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

382:                                              ; preds = %379
  %383 = load i32, ptr %46, align 4, !tbaa !9
  %384 = icmp ne i32 %383, 0
  br i1 %384, label %385, label %460

385:                                              ; preds = %382, %379
  %386 = load ptr, ptr %28, 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 %460

389:                                              ; preds = %385
  %390 = load ptr, ptr %21, align 8, !tbaa !5
  %391 = load ptr, ptr %22, align 8, !tbaa !5
  %392 = getelementptr inbounds double, ptr %391, i64 1
  %393 = load ptr, ptr %30, align 8, !tbaa !5
  %394 = getelementptr inbounds double, ptr %393, i64 1
  call void @dcopy_(ptr noundef %390, ptr noundef %392, ptr noundef @c__1, ptr noundef %394, ptr noundef @c__1)
  %395 = load ptr, ptr %21, align 8, !tbaa !5
  %396 = load i32, ptr %395, align 4, !tbaa !9
  %397 = sub nsw i32 %396, 1
  store i32 %397, ptr %39, align 4, !tbaa !9
  %398 = load ptr, ptr %23, align 8, !tbaa !5
  %399 = getelementptr inbounds double, ptr %398, i64 1
  %400 = load ptr, ptr %33, align 8, !tbaa !5
  %401 = getelementptr inbounds double, ptr %400, i64 1
  call void @dcopy_(ptr noundef %39, ptr noundef %399, ptr noundef @c__1, ptr noundef %401, ptr noundef @c__1)
  %402 = load ptr, ptr %21, align 8, !tbaa !5
  %403 = load i32, ptr %402, align 4, !tbaa !9
  %404 = add nsw i32 %403, 1
  store i32 %404, ptr %64, align 4, !tbaa !9
  %405 = load i32, ptr %53, align 4, !tbaa !9
  %406 = icmp ne i32 %405, 0
  br i1 %406, label %414, label %407

407:                                              ; preds = %389
  %408 = load ptr, ptr %21, align 8, !tbaa !5
  %409 = load ptr, ptr %30, align 8, !tbaa !5
  %410 = getelementptr inbounds double, ptr %409, i64 1
  %411 = load ptr, ptr %33, align 8, !tbaa !5
  %412 = getelementptr inbounds double, ptr %411, i64 1
  %413 = load ptr, ptr %36, align 8, !tbaa !5
  call void @dsterf_(ptr noundef %408, ptr noundef %410, ptr noundef %412, ptr noundef %413)
  br label %450

414:                                              ; preds = %389
  %415 = load ptr, ptr %21, align 8, !tbaa !5
  %416 = load ptr, ptr %30, align 8, !tbaa !5
  %417 = getelementptr inbounds double, ptr %416, i64 1
  %418 = load ptr, ptr %33, align 8, !tbaa !5
  %419 = getelementptr inbounds double, ptr %418, i64 1
  %420 = load ptr, ptr %31, align 8, !tbaa !5
  %421 = load i32, ptr %38, align 4, !tbaa !9
  %422 = sext i32 %421 to i64
  %423 = getelementptr inbounds double, ptr %420, i64 %422
  %424 = load ptr, ptr %32, align 8, !tbaa !5
  %425 = load ptr, ptr %33, align 8, !tbaa !5
  %426 = load i32, ptr %64, align 4, !tbaa !9
  %427 = sext i32 %426 to i64
  %428 = getelementptr inbounds double, ptr %425, i64 %427
  %429 = load ptr, ptr %36, align 8, !tbaa !5
  call void @dsteqr_(ptr noundef @.str.2, ptr noundef %415, ptr noundef %417, ptr noundef %419, ptr noundef %423, ptr noundef %424, ptr noundef %428, ptr noundef %429)
  %430 = load ptr, ptr %36, align 8, !tbaa !5
  %431 = load i32, ptr %430, align 4, !tbaa !9
  %432 = icmp eq i32 %431, 0
  br i1 %432, label %433, label %449

433:                                              ; preds = %414
  %434 = load ptr, ptr %21, align 8, !tbaa !5
  %435 = load i32, ptr %434, align 4, !tbaa !9
  store i32 %435, ptr %39, align 4, !tbaa !9
  store i32 1, ptr %49, align 4, !tbaa !9
  br label %436

436:                                              ; preds = %445, %433
  %437 = load i32, ptr %49, align 4, !tbaa !9
  %438 = load i32, ptr %39, align 4, !tbaa !9
  %439 = icmp sle i32 %437, %438
  br i1 %439, label %440, label %448

440:                                              ; preds = %436
  %441 = load ptr, ptr %35, align 8, !tbaa !5
  %442 = load i32, ptr %49, align 4, !tbaa !9
  %443 = sext i32 %442 to i64
  %444 = getelementptr inbounds i32, ptr %441, i64 %443
  store i32 0, ptr %444, align 4, !tbaa !9
  br label %445

445:                                              ; preds = %440
  %446 = load i32, ptr %49, align 4, !tbaa !9
  %447 = add nsw i32 %446, 1
  store i32 %447, ptr %49, align 4, !tbaa !9
  br label %436, !llvm.loop !13

448:                                              ; preds = %436
  br label %449

449:                                              ; preds = %448, %414
  br label %450

450:                                              ; preds = %449, %407
  %451 = load ptr, ptr %36, align 8, !tbaa !5
  %452 = load i32, ptr %451, align 4, !tbaa !9
  %453 = icmp eq i32 %452, 0
  br i1 %453, label %454, label %458

454:                                              ; preds = %450
  %455 = load ptr, ptr %21, align 8, !tbaa !5
  %456 = load i32, ptr %455, align 4, !tbaa !9
  %457 = load ptr, ptr %29, align 8, !tbaa !5
  store i32 %456, ptr %457, align 4, !tbaa !9
  br label %542

458:                                              ; preds = %450
  %459 = load ptr, ptr %36, align 8, !tbaa !5
  store i32 0, ptr %459, align 4, !tbaa !9
  br label %460

460:                                              ; preds = %458, %385, %382
  %461 = load i32, ptr %53, align 4, !tbaa !9
  %462 = icmp ne i32 %461, 0
  br i1 %462, label %463, label %465

463:                                              ; preds = %460
  %464 = getelementptr inbounds [1 x i8], ptr %52, i64 0, i64 0
  store i8 66, ptr %464, align 1, !tbaa !15
  br label %467

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

467:                                              ; preds = %465, %463
  store i32 1, ptr %64, align 4, !tbaa !9
  store i32 1, ptr %58, align 4, !tbaa !9
  %468 = load i32, ptr %58, align 4, !tbaa !9
  %469 = load ptr, ptr %21, align 8, !tbaa !5
  %470 = load i32, ptr %469, align 4, !tbaa !9
  %471 = add nsw i32 %468, %470
  store i32 %471, ptr %62, align 4, !tbaa !9
  %472 = load i32, ptr %62, align 4, !tbaa !9
  %473 = load ptr, ptr %21, align 8, !tbaa !5
  %474 = load i32, ptr %473, align 4, !tbaa !9
  %475 = add nsw i32 %472, %474
  store i32 %475, ptr %63, align 4, !tbaa !9
  %476 = load ptr, ptr %20, align 8, !tbaa !5
  %477 = getelementptr inbounds [1 x i8], ptr %52, i64 0, i64 0
  %478 = load ptr, ptr %21, align 8, !tbaa !5
  %479 = load ptr, ptr %26, 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 %22, align 8, !tbaa !5
  %483 = getelementptr inbounds double, ptr %482, i64 1
  %484 = load ptr, ptr %23, align 8, !tbaa !5
  %485 = getelementptr inbounds double, ptr %484, i64 1
  %486 = load ptr, ptr %29, align 8, !tbaa !5
  %487 = load ptr, ptr %30, align 8, !tbaa !5
  %488 = getelementptr inbounds double, ptr %487, i64 1
  %489 = load ptr, ptr %34, align 8, !tbaa !5
  %490 = load i32, ptr %58, align 4, !tbaa !9
  %491 = sext i32 %490 to i64
  %492 = getelementptr inbounds i32, ptr %489, i64 %491
  %493 = load ptr, ptr %34, align 8, !tbaa !5
  %494 = load i32, ptr %62, align 4, !tbaa !9
  %495 = sext i32 %494 to i64
  %496 = getelementptr inbounds i32, ptr %493, i64 %495
  %497 = load ptr, ptr %33, align 8, !tbaa !5
  %498 = load i32, ptr %64, align 4, !tbaa !9
  %499 = sext i32 %498 to i64
  %500 = getelementptr inbounds double, ptr %497, i64 %499
  %501 = load ptr, ptr %34, align 8, !tbaa !5
  %502 = load i32, ptr %63, align 4, !tbaa !9
  %503 = sext i32 %502 to i64
  %504 = getelementptr inbounds i32, ptr %501, i64 %503
  %505 = load ptr, ptr %36, align 8, !tbaa !5
  call void @dstebz_(ptr noundef %476, ptr noundef %477, ptr noundef %478, ptr noundef %68, ptr noundef %69, ptr noundef %479, ptr noundef %480, ptr noundef %481, ptr noundef %483, ptr noundef %485, ptr noundef %486, ptr noundef %65, ptr noundef %488, ptr noundef %492, ptr noundef %496, ptr noundef %500, ptr noundef %504, ptr noundef %505)
  %506 = load i32, ptr %53, align 4, !tbaa !9
  %507 = icmp ne i32 %506, 0
  br i1 %507, label %508, label %541

508:                                              ; preds = %467
  %509 = load ptr, ptr %21, align 8, !tbaa !5
  %510 = load ptr, ptr %22, align 8, !tbaa !5
  %511 = getelementptr inbounds double, ptr %510, i64 1
  %512 = load ptr, ptr %23, align 8, !tbaa !5
  %513 = getelementptr inbounds double, ptr %512, i64 1
  %514 = load ptr, ptr %29, align 8, !tbaa !5
  %515 = load ptr, ptr %30, align 8, !tbaa !5
  %516 = getelementptr inbounds double, ptr %515, i64 1
  %517 = load ptr, ptr %34, align 8, !tbaa !5
  %518 = load i32, ptr %58, align 4, !tbaa !9
  %519 = sext i32 %518 to i64
  %520 = getelementptr inbounds i32, ptr %517, i64 %519
  %521 = load ptr, ptr %34, align 8, !tbaa !5
  %522 = load i32, ptr %62, align 4, !tbaa !9
  %523 = sext i32 %522 to i64
  %524 = getelementptr inbounds i32, ptr %521, i64 %523
  %525 = load ptr, ptr %31, align 8, !tbaa !5
  %526 = load i32, ptr %38, align 4, !tbaa !9
  %527 = sext i32 %526 to i64
  %528 = getelementptr inbounds double, ptr %525, i64 %527
  %529 = load ptr, ptr %32, align 8, !tbaa !5
  %530 = load ptr, ptr %33, align 8, !tbaa !5
  %531 = load i32, ptr %64, align 4, !tbaa !9
  %532 = sext i32 %531 to i64
  %533 = getelementptr inbounds double, ptr %530, i64 %532
  %534 = load ptr, ptr %34, align 8, !tbaa !5
  %535 = load i32, ptr %63, align 4, !tbaa !9
  %536 = sext i32 %535 to i64
  %537 = getelementptr inbounds i32, ptr %534, i64 %536
  %538 = load ptr, ptr %35, align 8, !tbaa !5
  %539 = getelementptr inbounds i32, ptr %538, i64 1
  %540 = load ptr, ptr %36, align 8, !tbaa !5
  call void @dstein_(ptr noundef %509, ptr noundef %511, ptr noundef %513, ptr noundef %514, ptr noundef %516, ptr noundef %520, ptr noundef %524, ptr noundef %528, ptr noundef %529, ptr noundef %533, ptr noundef %537, ptr noundef %539, ptr noundef %540)
  br label %541

541:                                              ; preds = %508, %467
  br label %542

542:                                              ; preds = %541, %454
  %543 = load i32, ptr %57, align 4, !tbaa !9
  %544 = icmp eq i32 %543, 1
  br i1 %544, label %545, label %561

545:                                              ; preds = %542
  %546 = load ptr, ptr %36, align 8, !tbaa !5
  %547 = load i32, ptr %546, align 4, !tbaa !9
  %548 = icmp eq i32 %547, 0
  br i1 %548, label %549, label %552

549:                                              ; preds = %545
  %550 = load ptr, ptr %29, align 8, !tbaa !5
  %551 = load i32, ptr %550, align 4, !tbaa !9
  store i32 %551, ptr %43, align 4, !tbaa !9
  br label %556

552:                                              ; preds = %545
  %553 = load ptr, ptr %36, align 8, !tbaa !5
  %554 = load i32, ptr %553, align 4, !tbaa !9
  %555 = sub nsw i32 %554, 1
  store i32 %555, ptr %43, align 4, !tbaa !9
  br label %556

556:                                              ; preds = %552, %549
  %557 = load double, ptr %51, align 8, !tbaa !11
  %558 = fdiv double 1.000000e+00, %557
  store double %558, ptr %41, align 8, !tbaa !11
  %559 = load ptr, ptr %30, align 8, !tbaa !5
  %560 = getelementptr inbounds double, ptr %559, i64 1
  call void @dscal_(ptr noundef %43, ptr noundef %41, ptr noundef %560, ptr noundef @c__1)
  br label %561

561:                                              ; preds = %556, %542
  %562 = load i32, ptr %53, align 4, !tbaa !9
  %563 = icmp ne i32 %562, 0
  br i1 %563, label %564, label %698

564:                                              ; preds = %561
  %565 = load ptr, ptr %29, align 8, !tbaa !5
  %566 = load i32, ptr %565, align 4, !tbaa !9
  %567 = sub nsw i32 %566, 1
  store i32 %567, ptr %39, align 4, !tbaa !9
  store i32 1, ptr %50, align 4, !tbaa !9
  br label %568

568:                                              ; preds = %694, %564
  %569 = load i32, ptr %50, align 4, !tbaa !9
  %570 = load i32, ptr %39, align 4, !tbaa !9
  %571 = icmp sle i32 %569, %570
  br i1 %571, label %572, label %697

572:                                              ; preds = %568
  store i32 0, ptr %49, align 4, !tbaa !9
  %573 = load ptr, ptr %30, align 8, !tbaa !5
  %574 = load i32, ptr %50, align 4, !tbaa !9
  %575 = sext i32 %574 to i64
  %576 = getelementptr inbounds double, ptr %573, i64 %575
  %577 = load double, ptr %576, align 8, !tbaa !11
  store double %577, ptr %70, align 8, !tbaa !11
  %578 = load ptr, ptr %29, align 8, !tbaa !5
  %579 = load i32, ptr %578, align 4, !tbaa !9
  store i32 %579, ptr %40, align 4, !tbaa !9
  %580 = load i32, ptr %50, align 4, !tbaa !9
  %581 = add nsw i32 %580, 1
  store i32 %581, ptr %54, align 4, !tbaa !9
  br label %582

582:                                              ; preds = %602, %572
  %583 = load i32, ptr %54, align 4, !tbaa !9
  %584 = load i32, ptr %40, align 4, !tbaa !9
  %585 = icmp sle i32 %583, %584
  br i1 %585, label %586, label %605

586:                                              ; preds = %582
  %587 = load ptr, ptr %30, align 8, !tbaa !5
  %588 = load i32, ptr %54, align 4, !tbaa !9
  %589 = sext i32 %588 to i64
  %590 = getelementptr inbounds double, ptr %587, i64 %589
  %591 = load double, ptr %590, align 8, !tbaa !11
  %592 = load double, ptr %70, align 8, !tbaa !11
  %593 = fcmp olt double %591, %592
  br i1 %593, label %594, label %601

594:                                              ; preds = %586
  %595 = load i32, ptr %54, align 4, !tbaa !9
  store i32 %595, ptr %49, align 4, !tbaa !9
  %596 = load ptr, ptr %30, align 8, !tbaa !5
  %597 = load i32, ptr %54, align 4, !tbaa !9
  %598 = sext i32 %597 to i64
  %599 = getelementptr inbounds double, ptr %596, i64 %598
  %600 = load double, ptr %599, align 8, !tbaa !11
  store double %600, ptr %70, align 8, !tbaa !11
  br label %601

601:                                              ; preds = %594, %586
  br label %602

602:                                              ; preds = %601
  %603 = load i32, ptr %54, align 4, !tbaa !9
  %604 = add nsw i32 %603, 1
  store i32 %604, ptr %54, align 4, !tbaa !9
  br label %582, !llvm.loop !16

605:                                              ; preds = %582
  %606 = load i32, ptr %49, align 4, !tbaa !9
  %607 = icmp ne i32 %606, 0
  br i1 %607, label %608, label %693

608:                                              ; preds = %605
  %609 = load ptr, ptr %34, align 8, !tbaa !5
  %610 = load i32, ptr %58, align 4, !tbaa !9
  %611 = load i32, ptr %49, align 4, !tbaa !9
  %612 = add nsw i32 %610, %611
  %613 = sub nsw i32 %612, 1
  %614 = sext i32 %613 to i64
  %615 = getelementptr inbounds i32, ptr %609, i64 %614
  %616 = load i32, ptr %615, align 4, !tbaa !9
  store i32 %616, ptr %48, align 4, !tbaa !9
  %617 = load ptr, ptr %30, align 8, !tbaa !5
  %618 = load i32, ptr %50, align 4, !tbaa !9
  %619 = sext i32 %618 to i64
  %620 = getelementptr inbounds double, ptr %617, i64 %619
  %621 = load double, ptr %620, align 8, !tbaa !11
  %622 = load ptr, ptr %30, align 8, !tbaa !5
  %623 = load i32, ptr %49, align 4, !tbaa !9
  %624 = sext i32 %623 to i64
  %625 = getelementptr inbounds double, ptr %622, i64 %624
  store double %621, ptr %625, align 8, !tbaa !11
  %626 = load ptr, ptr %34, align 8, !tbaa !5
  %627 = load i32, ptr %58, align 4, !tbaa !9
  %628 = load i32, ptr %50, align 4, !tbaa !9
  %629 = add nsw i32 %627, %628
  %630 = sub nsw i32 %629, 1
  %631 = sext i32 %630 to i64
  %632 = getelementptr inbounds i32, ptr %626, i64 %631
  %633 = load i32, ptr %632, align 4, !tbaa !9
  %634 = load ptr, ptr %34, align 8, !tbaa !5
  %635 = load i32, ptr %58, align 4, !tbaa !9
  %636 = load i32, ptr %49, align 4, !tbaa !9
  %637 = add nsw i32 %635, %636
  %638 = sub nsw i32 %637, 1
  %639 = sext i32 %638 to i64
  %640 = getelementptr inbounds i32, ptr %634, i64 %639
  store i32 %633, ptr %640, align 4, !tbaa !9
  %641 = load double, ptr %70, align 8, !tbaa !11
  %642 = load ptr, ptr %30, align 8, !tbaa !5
  %643 = load i32, ptr %50, align 4, !tbaa !9
  %644 = sext i32 %643 to i64
  %645 = getelementptr inbounds double, ptr %642, i64 %644
  store double %641, ptr %645, align 8, !tbaa !11
  %646 = load i32, ptr %48, align 4, !tbaa !9
  %647 = load ptr, ptr %34, align 8, !tbaa !5
  %648 = load i32, ptr %58, align 4, !tbaa !9
  %649 = load i32, ptr %50, align 4, !tbaa !9
  %650 = add nsw i32 %648, %649
  %651 = sub nsw i32 %650, 1
  %652 = sext i32 %651 to i64
  %653 = getelementptr inbounds i32, ptr %647, i64 %652
  store i32 %646, ptr %653, align 4, !tbaa !9
  %654 = load ptr, ptr %21, align 8, !tbaa !5
  %655 = load ptr, ptr %31, align 8, !tbaa !5
  %656 = load i32, ptr %49, align 4, !tbaa !9
  %657 = load i32, ptr %37, align 4, !tbaa !9
  %658 = mul nsw i32 %656, %657
  %659 = add nsw i32 %658, 1
  %660 = sext i32 %659 to i64
  %661 = getelementptr inbounds double, ptr %655, i64 %660
  %662 = load ptr, ptr %31, align 8, !tbaa !5
  %663 = load i32, ptr %50, align 4, !tbaa !9
  %664 = load i32, ptr %37, align 4, !tbaa !9
  %665 = mul nsw i32 %663, %664
  %666 = add nsw i32 %665, 1
  %667 = sext i32 %666 to i64
  %668 = getelementptr inbounds double, ptr %662, i64 %667
  call void @dswap_(ptr noundef %654, ptr noundef %661, ptr noundef @c__1, ptr noundef %668, ptr noundef @c__1)
  %669 = load ptr, ptr %36, align 8, !tbaa !5
  %670 = load i32, ptr %669, align 4, !tbaa !9
  %671 = icmp ne i32 %670, 0
  br i1 %671, label %672, label %692

672:                                              ; preds = %608
  %673 = load ptr, ptr %35, align 8, !tbaa !5
  %674 = load i32, ptr %49, align 4, !tbaa !9
  %675 = sext i32 %674 to i64
  %676 = getelementptr inbounds i32, ptr %673, i64 %675
  %677 = load i32, ptr %676, align 4, !tbaa !9
  store i32 %677, ptr %48, align 4, !tbaa !9
  %678 = load ptr, ptr %35, align 8, !tbaa !5
  %679 = load i32, ptr %50, align 4, !tbaa !9
  %680 = sext i32 %679 to i64
  %681 = getelementptr inbounds i32, ptr %678, i64 %680
  %682 = load i32, ptr %681, align 4, !tbaa !9
  %683 = load ptr, ptr %35, align 8, !tbaa !5
  %684 = load i32, ptr %49, align 4, !tbaa !9
  %685 = sext i32 %684 to i64
  %686 = getelementptr inbounds i32, ptr %683, i64 %685
  store i32 %682, ptr %686, align 4, !tbaa !9
  %687 = load i32, ptr %48, align 4, !tbaa !9
  %688 = load ptr, ptr %35, align 8, !tbaa !5
  %689 = load i32, ptr %50, align 4, !tbaa !9
  %690 = sext i32 %689 to i64
  %691 = getelementptr inbounds i32, ptr %688, i64 %690
  store i32 %687, ptr %691, align 4, !tbaa !9
  br label %692

692:                                              ; preds = %672, %608
  br label %693

693:                                              ; preds = %692, %605
  br label %694

694:                                              ; preds = %693
  %695 = load i32, ptr %50, align 4, !tbaa !9
  %696 = add nsw i32 %695, 1
  store i32 %696, ptr %50, align 4, !tbaa !9
  br label %568, !llvm.loop !17

697:                                              ; preds = %568
  br label %698

698:                                              ; preds = %697, %561
  store i32 1, ptr %71, align 4
  br label %699

699:                                              ; preds = %698, %280, %231, %221
  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 4, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 1, 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 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #4
  ret void
}

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

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

declare i32 @xerbla_(ptr noundef, ptr noundef, i32 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 void @dscal_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @dcopy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

declare void @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 void @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 void @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 = !{!"int", !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 i32, align 4

; Function Attrs: nounwind uwtable
define dso_local void @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 i32, align 4
  %20 = alloca double, align 8
  %21 = alloca i32, align 4
  %22 = alloca double, align 8
  %23 = alloca [1 x i8], align 1
  %24 = alloca i32, align 4
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %23) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #6
  call void @llvm.lifetime.start.p0(i64 8, 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 i32, ptr %13, align 4, !tbaa !5
  %narrow = xor i32 %28, -1
  %29 = sext i32 %narrow to i64
  %30 = getelementptr inbounds double, ptr %12, i64 %29
  %31 = getelementptr inbounds i8, ptr %14, i64 -8
  %32 = getelementptr inbounds i8, ptr %15, i64 -4
  %33 = getelementptr inbounds i8, ptr %16, i64 -4
  %34 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #6
  %35 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  %36 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #6
  %37 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.2) #6
  store i32 0, ptr %17, align 4, !tbaa !5
  %.not = icmp ne i32 %34, 0
  br i1 %.not, label %40, label %38

38:                                               ; preds = %18
  %39 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.3) #6
  %.not266 = icmp eq i32 %39, 0
  br i1 %.not266, label %.thread285.sink.split, label %40

40:                                               ; preds = %38, %18
  %41 = icmp ne i32 %35, 0
  %42 = icmp ne i32 %36, 0
  %or.cond = select i1 %41, i1 true, i1 %42
  %43 = icmp ne i32 %37, 0
  %or.cond3 = select i1 %or.cond, i1 true, i1 %43
  br i1 %or.cond3, label %44, label %.thread285.sink.split

44:                                               ; preds = %40
  %45 = load i32, ptr %2, align 4, !tbaa !5
  %46 = icmp slt i32 %45, 0
  br i1 %46, label %.thread285.sink.split, label %47

47:                                               ; preds = %44
  br i1 %42, label %48, label %53

48:                                               ; preds = %47
  %.not268 = icmp eq i32 %45, 0
  br i1 %.not268, label %62, label %49

49:                                               ; preds = %48
  %50 = load double, ptr %6, align 8, !tbaa !9
  %51 = load double, ptr %5, align 8, !tbaa !9
  %52 = fcmp ugt double %50, %51
  br i1 %52, label %62, label %.thread285.sink.split

53:                                               ; preds = %47
  br i1 %43, label %54, label %62

54:                                               ; preds = %53
  %55 = load i32, ptr %7, align 4, !tbaa !5
  %56 = icmp slt i32 %55, 1
  %spec.select = tail call i32 @llvm.umax.i32(i32 %45, i32 1)
  %57 = icmp ugt i32 %55, %spec.select
  %or.cond296 = or i1 %56, %57
  br i1 %or.cond296, label %.thread285.sink.split, label %58

58:                                               ; preds = %54
  %59 = load i32, ptr %8, align 4, !tbaa !5
  %. = tail call i32 @llvm.umin.i32(i32 %45, i32 %55)
  %60 = icmp slt i32 %59, %.
  %61 = icmp ugt i32 %59, %45
  %or.cond294 = or i1 %60, %61
  br i1 %or.cond294, label %.thread285.sink.split, label %62

62:                                               ; preds = %58, %49, %48, %53
  %.pr = load i32, ptr %17, align 4, !tbaa !5
  %63 = icmp eq i32 %.pr, 0
  br i1 %63, label %64, label %.thread285

64:                                               ; preds = %62
  %65 = load i32, ptr %13, align 4, !tbaa !5
  %66 = icmp slt i32 %65, 1
  %67 = icmp ult i32 %65, %45
  %or.cond322 = and i1 %.not, %67
  %or.cond325 = or i1 %66, %or.cond322
  br i1 %or.cond325, label %.thread285.sink.split, label %.thread

.thread285.sink.split:                            ; preds = %64, %58, %54, %49, %44, %40, %38
  %.sink323 = phi i32 [ -1, %38 ], [ -2, %40 ], [ -3, %44 ], [ -7, %49 ], [ -8, %54 ], [ -9, %58 ], [ -14, %64 ]
  store i32 %.sink323, ptr %17, align 4, !tbaa !5
  br label %.thread285

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

.thread:                                          ; preds = %64
  store i32 0, ptr %10, align 4, !tbaa !5
  %71 = load i32, ptr %2, align 4, !tbaa !5
  switch i32 %71, label %85 [
    i32 0, label %.loopexit
    i32 1, label %72
  ]

72:                                               ; preds = %.thread
  %or.cond5 = select i1 %41, i1 true, i1 %43
  br i1 %or.cond5, label %73, label %75

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

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

79:                                               ; preds = %75
  %80 = load double, ptr %6, align 8, !tbaa !9
  %81 = fcmp ult double %80, %77
  br i1 %81, label %83, label %82

82:                                               ; preds = %79
  store i32 1, ptr %10, align 4, !tbaa !5
  br label %.sink.split

.sink.split:                                      ; preds = %73, %82
  %.sink324 = phi double [ %77, %82 ], [ %74, %73 ]
  store double %.sink324, ptr %11, align 8, !tbaa !9
  br label %83

83:                                               ; preds = %.sink.split, %75, %79
  br i1 %.not, label %84, label %.loopexit

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

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

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

100:                                              ; preds = %85, %97
  %.sink = phi double [ %98, %97 ], [ 0.000000e+00, %85 ]
  %storemerge = phi double [ %99, %97 ], [ 0.000000e+00, %85 ]
  store double %.sink, ptr %25, align 8
  store double %storemerge, ptr %26, align 8, !tbaa !9
  %101 = tail call double @dlanst_(ptr noundef nonnull @.str.7, ptr noundef nonnull %2, ptr noundef %3, ptr noundef %4) #6
  %102 = fcmp ogt double %101, 0.000000e+00
  %103 = fcmp olt double %101, %90
  %or.cond279 = select i1 %102, i1 %103, i1 false
  br i1 %or.cond279, label %106, label %104

104:                                              ; preds = %100
  %105 = fcmp ogt double %101, %96
  br i1 %105, label %106, label %115

106:                                              ; preds = %104, %100
  %.pn = phi double [ %90, %100 ], [ %96, %104 ]
  %storemerge295 = fdiv double %.pn, %101
  store double %storemerge295, ptr %22, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %2, ptr noundef nonnull %22, ptr noundef %3, ptr noundef nonnull @c__1) #6
  %107 = load i32, ptr %2, align 4, !tbaa !5
  %108 = add nsw i32 %107, -1
  store i32 %108, ptr %19, align 4, !tbaa !5
  call void @dscal_(ptr noundef nonnull %19, ptr noundef nonnull %22, ptr noundef %4, ptr noundef nonnull @c__1) #6
  br i1 %.not270, label %115, label %109

109:                                              ; preds = %106
  %110 = load double, ptr %5, align 8, !tbaa !9
  %111 = load double, ptr %22, align 8, !tbaa !9
  %112 = fmul double %110, %111
  store double %112, ptr %25, align 8, !tbaa !9
  %113 = load double, ptr %6, align 8, !tbaa !9
  %114 = fmul double %111, %113
  store double %114, ptr %26, align 8, !tbaa !9
  br label %115

115:                                              ; preds = %104, %106, %109
  %116 = phi i1 [ true, %106 ], [ true, %109 ], [ false, %104 ]
  %.not271 = icmp eq i32 %37, 0
  br i1 %.not271, label %124, label %117

117:                                              ; preds = %115
  %118 = load i32, ptr %7, align 4, !tbaa !5
  %119 = icmp eq i32 %118, 1
  br i1 %119, label %120, label %124

120:                                              ; preds = %117
  %121 = load i32, ptr %8, align 4, !tbaa !5
  %122 = load i32, ptr %2, align 4, !tbaa !5
  %123 = icmp eq i32 %121, %122
  br label %124

124:                                              ; preds = %120, %117, %115
  %125 = phi i1 [ false, %117 ], [ false, %115 ], [ %123, %120 ]
  %or.cond7 = or i1 %41, %125
  br i1 %or.cond7, label %126, label %147

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

129:                                              ; preds = %126
  call void @dcopy_(ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull @c__1, ptr noundef %11, ptr noundef nonnull @c__1) #6
  %130 = load i32, ptr %2, align 4, !tbaa !5
  %131 = add nsw i32 %130, -1
  store i32 %131, ptr %19, align 4, !tbaa !5
  call void @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 %133, label %132

132:                                              ; preds = %129
  call void @dsterf_(ptr noundef nonnull %2, ptr noundef %11, ptr noundef %14, ptr noundef nonnull %17) #6
  br label %.loopexit297

133:                                              ; preds = %129
  %134 = load i32, ptr %2, align 4, !tbaa !5
  %135 = sext i32 %134 to i64
  %136 = getelementptr double, ptr %31, i64 %135
  %137 = getelementptr i8, ptr %136, i64 8
  call void @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 %137, ptr noundef nonnull %17) #6
  %138 = load i32, ptr %17, align 4, !tbaa !5
  %139 = icmp eq i32 %138, 0
  br i1 %139, label %140, label %.thread291

140:                                              ; preds = %133
  %141 = load i32, ptr %2, align 4, !tbaa !5
  store i32 %141, ptr %19, align 4, !tbaa !5
  %.not272298 = icmp slt i32 %141, 1
  br i1 %.not272298, label %.loopexit297, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %140
  %142 = zext nneg i32 %141 to i64
  %143 = shl nuw nsw i64 %142, 2
  call void @llvm.memset.p0.i64(ptr align 4 %16, i8 0, i64 %143, i1 false), !tbaa !5
  br label %.loopexit297

.loopexit297:                                     ; preds = %.lr.ph.preheader, %140, %132
  %.pr290 = load i32, ptr %17, align 4, !tbaa !5
  %144 = icmp eq i32 %.pr290, 0
  br i1 %144, label %145, label %.thread291

145:                                              ; preds = %.loopexit297
  %146 = load i32, ptr %2, align 4, !tbaa !5
  store i32 %146, ptr %10, align 4, !tbaa !5
  br label %156

.thread291:                                       ; preds = %133, %.loopexit297
  store i32 0, ptr %17, align 4, !tbaa !5
  br label %147

147:                                              ; preds = %124, %.thread291, %126
  %.281 = select i1 %.not, i8 66, i8 69
  store i8 %.281, ptr %23, align 1, !tbaa !11
  %148 = load i32, ptr %2, align 4, !tbaa !5
  %149 = add nsw i32 %148, 1
  %150 = add nsw i32 %149, %148
  %151 = sext i32 %149 to i64
  %152 = getelementptr inbounds i32, ptr %32, i64 %151
  %153 = sext i32 %150 to i64
  %154 = getelementptr inbounds i32, ptr %32, i64 %153
  call void @dstebz_(ptr noundef %1, ptr noundef nonnull %23, ptr noundef nonnull %2, ptr noundef nonnull %25, ptr noundef nonnull %26, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %3, ptr noundef %4, ptr noundef nonnull %10, ptr noundef nonnull %24, ptr noundef %11, ptr noundef %15, ptr noundef nonnull %152, ptr noundef %14, ptr noundef nonnull %154, ptr noundef nonnull %17) #6
  br i1 %.not, label %155, label %156

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

156:                                              ; preds = %147, %155, %145
  br i1 %116, label %157, label %167

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

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

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

164:                                              ; preds = %162, %160
  %storemerge274 = phi i32 [ %163, %162 ], [ %161, %160 ]
  store i32 %storemerge274, ptr %21, align 4, !tbaa !5
  %165 = load double, ptr %22, align 8, !tbaa !9
  %166 = fdiv double 1.000000e+00, %165
  store double %166, ptr %20, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %21, ptr noundef nonnull %20, ptr noundef %11, ptr noundef nonnull @c__1) #6
  br label %167

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

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

.lr.ph311.preheader:                              ; preds = %168
  %171 = sext i32 %28 to i64
  br label %.lr.ph311

.lr.ph311:                                        ; preds = %.lr.ph311.preheader, %._crit_edge.thread
  %indvar = phi i32 [ 0, %.lr.ph311.preheader ], [ %indvar.next, %._crit_edge.thread ]
  %indvars.iv316 = phi i64 [ 1, %.lr.ph311.preheader ], [ %indvars.iv.next317, %._crit_edge.thread ]
  %indvars.iv = phi i64 [ 2, %.lr.ph311.preheader ], [ %indvars.iv.next, %._crit_edge.thread ]
  %172 = getelementptr inbounds double, ptr %27, i64 %indvars.iv316
  %173 = load double, ptr %172, align 8, !tbaa !9
  %174 = load i32, ptr %10, align 4, !tbaa !5
  %indvars.iv.next317 = add nuw nsw i64 %indvars.iv316, 1
  %175 = sext i32 %174 to i64
  %.not276300.not = icmp slt i64 %indvars.iv316, %175
  br i1 %.not276300.not, label %.lr.ph304.preheader, label %._crit_edge.thread

.lr.ph304.preheader:                              ; preds = %.lr.ph311
  %176 = xor i32 %indvar, -1
  %177 = add i32 %174, %176
  %reass.sub = sub i32 %174, %indvar
  %xtraiter = and i32 %177, 1
  %178 = icmp eq i32 %reass.sub, 2
  br i1 %178, label %._crit_edge.unr-lcssa, label %.lr.ph304.preheader.new

.lr.ph304.preheader.new:                          ; preds = %.lr.ph304.preheader
  %unroll_iter = and i32 %177, -2
  br label %.lr.ph304

.lr.ph304:                                        ; preds = %.lr.ph304, %.lr.ph304.preheader.new
  %indvars.iv313 = phi i64 [ %indvars.iv, %.lr.ph304.preheader.new ], [ %indvars.iv.next314.1, %.lr.ph304 ]
  %.0303 = phi double [ %173, %.lr.ph304.preheader.new ], [ %.1.1, %.lr.ph304 ]
  %.1249302 = phi i32 [ 0, %.lr.ph304.preheader.new ], [ %.2.1, %.lr.ph304 ]
  %niter = phi i32 [ 0, %.lr.ph304.preheader.new ], [ %niter.next.1, %.lr.ph304 ]
  %179 = getelementptr inbounds double, ptr %27, i64 %indvars.iv313
  %180 = load double, ptr %179, align 8, !tbaa !9
  %181 = fcmp olt double %180, %.0303
  %182 = trunc nuw i64 %indvars.iv313 to i32
  %.2 = select i1 %181, i32 %182, i32 %.1249302
  %.1 = select i1 %181, double %180, double %.0303
  %183 = getelementptr double, ptr %11, i64 %indvars.iv313
  %184 = load double, ptr %183, align 8, !tbaa !9
  %185 = fcmp olt double %184, %.1
  %186 = trunc i64 %indvars.iv313 to i32
  %187 = add i32 %186, 1
  %.2.1 = select i1 %185, i32 %187, i32 %.2
  %.1.1 = select i1 %185, double %184, double %.1
  %indvars.iv.next314.1 = add nuw nsw i64 %indvars.iv313, 2
  %niter.next.1 = add i32 %niter, 2
  %niter.ncmp.1 = icmp eq i32 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge.unr-lcssa, label %.lr.ph304, !llvm.loop !12

._crit_edge.unr-lcssa:                            ; preds = %.lr.ph304, %.lr.ph304.preheader
  %.2.lcssa.ph = phi i32 [ poison, %.lr.ph304.preheader ], [ %.2.1, %.lr.ph304 ]
  %.1.lcssa.ph = phi double [ poison, %.lr.ph304.preheader ], [ %.1.1, %.lr.ph304 ]
  %indvars.iv313.unr = phi i64 [ %indvars.iv, %.lr.ph304.preheader ], [ %indvars.iv.next314.1, %.lr.ph304 ]
  %.0303.unr = phi double [ %173, %.lr.ph304.preheader ], [ %.1.1, %.lr.ph304 ]
  %.1249302.unr = phi i32 [ 0, %.lr.ph304.preheader ], [ %.2.1, %.lr.ph304 ]
  %lcmp.mod.not = icmp eq i32 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph304.epil

.lr.ph304.epil:                                   ; preds = %._crit_edge.unr-lcssa
  %188 = getelementptr inbounds double, ptr %27, i64 %indvars.iv313.unr
  %189 = load double, ptr %188, align 8, !tbaa !9
  %190 = fcmp olt double %189, %.0303.unr
  %191 = trunc nuw i64 %indvars.iv313.unr to i32
  %.2.epil = select i1 %190, i32 %191, i32 %.1249302.unr
  %.1.epil = select i1 %190, double %189, double %.0303.unr
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.unr-lcssa, %.lr.ph304.epil
  %.2.lcssa = phi i32 [ %.2.lcssa.ph, %._crit_edge.unr-lcssa ], [ %.2.epil, %.lr.ph304.epil ]
  %.1.lcssa = phi double [ %.1.lcssa.ph, %._crit_edge.unr-lcssa ], [ %.1.epil, %.lr.ph304.epil ]
  %.not277 = icmp eq i32 %.2.lcssa, 0
  br i1 %.not277, label %._crit_edge.thread, label %192

192:                                              ; preds = %._crit_edge
  %193 = sext i32 %.2.lcssa to i64
  %194 = getelementptr inbounds i32, ptr %32, i64 %193
  %195 = load i32, ptr %194, align 4, !tbaa !5
  %196 = getelementptr inbounds double, ptr %27, i64 %193
  store double %173, ptr %196, align 8, !tbaa !9
  %197 = getelementptr inbounds i32, ptr %32, i64 %indvars.iv316
  %198 = load i32, ptr %197, align 4, !tbaa !5
  store i32 %198, ptr %194, align 4, !tbaa !5
  store double %.1.lcssa, ptr %172, align 8, !tbaa !9
  store i32 %195, ptr %197, align 4, !tbaa !5
  %199 = mul nsw i32 %.2.lcssa, %28
  %200 = sext i32 %199 to i64
  %gep = getelementptr double, ptr %invariant.gep, i64 %200
  %201 = mul nsw i64 %indvars.iv316, %171
  %gep307 = getelementptr double, ptr %invariant.gep, i64 %201
  call void @dswap_(ptr noundef nonnull %2, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %gep307, ptr noundef nonnull @c__1) #6
  %202 = load i32, ptr %17, align 4, !tbaa !5
  %.not278 = icmp eq i32 %202, 0
  br i1 %.not278, label %._crit_edge.thread, label %203

203:                                              ; preds = %192
  %204 = getelementptr inbounds i32, ptr %33, i64 %193
  %205 = load i32, ptr %204, align 4, !tbaa !5
  %206 = getelementptr inbounds i32, ptr %33, i64 %indvars.iv316
  %207 = load i32, ptr %206, align 4, !tbaa !5
  store i32 %207, ptr %204, align 4, !tbaa !5
  store i32 %205, ptr %206, align 4, !tbaa !5
  br label %._crit_edge.thread

._crit_edge.thread:                               ; preds = %.lr.ph311, %._crit_edge, %203, %192
  %208 = load i32, ptr %19, align 4, !tbaa !5
  %209 = sext i32 %208 to i64
  %.not275.not = icmp slt i64 %indvars.iv316, %209
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %indvar.next = add i32 %indvar, 1
  br i1 %.not275.not, label %.lr.ph311, label %.loopexit, !llvm.loop !14

.loopexit:                                        ; preds = %._crit_edge.thread, %168, %167, %83, %84, %.thread, %.thread285
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #6
  ret void
}

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

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

declare i32 @xerbla_(ptr noundef, ptr noundef, i32 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 void @dscal_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @dcopy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

declare void @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 void @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 void @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 i32 @llvm.umax.i32(i32, i32) #4

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.umin.i32(i32, i32) #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 = !{!"int", !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