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

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

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

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

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

139:                                              ; preds = %135
  %140 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -1, ptr %140, align 8, !tbaa !9
  br label %253

141:                                              ; preds = %135, %20
  %142 = load i64, ptr %72, align 8, !tbaa !9
  %143 = icmp ne i64 %142, 0
  br i1 %143, label %152, label %144

144:                                              ; preds = %141
  %145 = load i64, ptr %76, align 8, !tbaa !9
  %146 = icmp ne i64 %145, 0
  br i1 %146, label %152, label %147

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

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

152:                                              ; preds = %147, %144, %141
  %153 = load i64, ptr %70, align 8, !tbaa !9
  %154 = icmp ne i64 %153, 0
  br i1 %154, label %161, label %155

155:                                              ; preds = %152
  %156 = load ptr, ptr %24, align 8, !tbaa !5
  %157 = call i64 @lsame_(ptr noundef %156, ptr noundef @.str.5)
  %158 = icmp ne i64 %157, 0
  br i1 %158, label %161, label %159

159:                                              ; preds = %155
  %160 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -3, ptr %160, align 8, !tbaa !9
  br label %251

161:                                              ; preds = %155, %152
  %162 = load ptr, ptr %25, align 8, !tbaa !5
  %163 = load i64, ptr %162, align 8, !tbaa !9
  %164 = icmp slt i64 %163, 0
  br i1 %164, label %165, label %167

165:                                              ; preds = %161
  %166 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -4, ptr %166, align 8, !tbaa !9
  br label %250

167:                                              ; preds = %161
  %168 = load ptr, ptr %27, align 8, !tbaa !5
  %169 = load i64, ptr %168, align 8, !tbaa !9
  %170 = load ptr, ptr %25, align 8, !tbaa !5
  %171 = load i64, ptr %170, align 8, !tbaa !9
  %172 = icmp sge i64 1, %171
  br i1 %172, label %173, label %174

173:                                              ; preds = %167
  br label %177

174:                                              ; preds = %167
  %175 = load ptr, ptr %25, align 8, !tbaa !5
  %176 = load i64, ptr %175, align 8, !tbaa !9
  br label %177

177:                                              ; preds = %174, %173
  %178 = phi i64 [ 1, %173 ], [ %176, %174 ]
  %179 = icmp slt i64 %169, %178
  br i1 %179, label %180, label %182

180:                                              ; preds = %177
  %181 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -6, ptr %181, align 8, !tbaa !9
  br label %249

182:                                              ; preds = %177
  %183 = load i64, ptr %76, align 8, !tbaa !9
  %184 = icmp ne i64 %183, 0
  br i1 %184, label %185, label %198

185:                                              ; preds = %182
  %186 = load ptr, ptr %25, align 8, !tbaa !5
  %187 = load i64, ptr %186, align 8, !tbaa !9
  %188 = icmp sgt i64 %187, 0
  br i1 %188, label %189, label %197

189:                                              ; preds = %185
  %190 = load ptr, ptr %29, align 8, !tbaa !5
  %191 = load double, ptr %190, align 8, !tbaa !11
  %192 = load ptr, ptr %28, align 8, !tbaa !5
  %193 = load double, ptr %192, align 8, !tbaa !11
  %194 = fcmp ole double %191, %193
  br i1 %194, label %195, label %197

195:                                              ; preds = %189
  %196 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -8, ptr %196, align 8, !tbaa !9
  br label %197

197:                                              ; preds = %195, %189, %185
  br label %248

198:                                              ; preds = %182
  %199 = load i64, ptr %73, align 8, !tbaa !9
  %200 = icmp ne i64 %199, 0
  br i1 %200, label %201, label %247

201:                                              ; preds = %198
  %202 = load ptr, ptr %30, align 8, !tbaa !5
  %203 = load i64, ptr %202, align 8, !tbaa !9
  %204 = icmp slt i64 %203, 1
  br i1 %204, label %218, label %205

205:                                              ; preds = %201
  %206 = load ptr, ptr %30, align 8, !tbaa !5
  %207 = load i64, ptr %206, align 8, !tbaa !9
  %208 = load ptr, ptr %25, align 8, !tbaa !5
  %209 = load i64, ptr %208, align 8, !tbaa !9
  %210 = icmp sge i64 1, %209
  br i1 %210, label %211, label %212

211:                                              ; preds = %205
  br label %215

212:                                              ; preds = %205
  %213 = load ptr, ptr %25, align 8, !tbaa !5
  %214 = load i64, ptr %213, align 8, !tbaa !9
  br label %215

215:                                              ; preds = %212, %211
  %216 = phi i64 [ 1, %211 ], [ %214, %212 ]
  %217 = icmp sgt i64 %207, %216
  br i1 %217, label %218, label %220

218:                                              ; preds = %215, %201
  %219 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -9, ptr %219, align 8, !tbaa !9
  br label %246

220:                                              ; preds = %215
  %221 = load ptr, ptr %31, align 8, !tbaa !5
  %222 = load i64, ptr %221, align 8, !tbaa !9
  %223 = load ptr, ptr %25, align 8, !tbaa !5
  %224 = load i64, ptr %223, align 8, !tbaa !9
  %225 = load ptr, ptr %30, align 8, !tbaa !5
  %226 = load i64, ptr %225, align 8, !tbaa !9
  %227 = icmp sle i64 %224, %226
  br i1 %227, label %228, label %231

228:                                              ; preds = %220
  %229 = load ptr, ptr %25, align 8, !tbaa !5
  %230 = load i64, ptr %229, align 8, !tbaa !9
  br label %234

231:                                              ; preds = %220
  %232 = load ptr, ptr %30, align 8, !tbaa !5
  %233 = load i64, ptr %232, align 8, !tbaa !9
  br label %234

234:                                              ; preds = %231, %228
  %235 = phi i64 [ %230, %228 ], [ %233, %231 ]
  %236 = icmp slt i64 %222, %235
  br i1 %236, label %243, label %237

237:                                              ; preds = %234
  %238 = load ptr, ptr %31, align 8, !tbaa !5
  %239 = load i64, ptr %238, align 8, !tbaa !9
  %240 = load ptr, ptr %25, align 8, !tbaa !5
  %241 = load i64, ptr %240, align 8, !tbaa !9
  %242 = icmp sgt i64 %239, %241
  br i1 %242, label %243, label %245

243:                                              ; preds = %237, %234
  %244 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -10, ptr %244, align 8, !tbaa !9
  br label %245

245:                                              ; preds = %243, %237
  br label %246

246:                                              ; preds = %245, %218
  br label %247

247:                                              ; preds = %246, %198
  br label %248

248:                                              ; preds = %247, %197
  br label %249

249:                                              ; preds = %248, %180
  br label %250

250:                                              ; preds = %249, %165
  br label %251

251:                                              ; preds = %250, %159
  br label %252

252:                                              ; preds = %251, %150
  br label %253

253:                                              ; preds = %252, %139
  %254 = load ptr, ptr %41, align 8, !tbaa !5
  %255 = load i64, ptr %254, align 8, !tbaa !9
  %256 = icmp eq i64 %255, 0
  br i1 %256, label %257, label %273

257:                                              ; preds = %253
  %258 = load ptr, ptr %36, align 8, !tbaa !5
  %259 = load i64, ptr %258, align 8, !tbaa !9
  %260 = icmp slt i64 %259, 1
  br i1 %260, label %270, label %261

261:                                              ; preds = %257
  %262 = load i64, ptr %71, align 8, !tbaa !9
  %263 = icmp ne i64 %262, 0
  br i1 %263, label %264, label %272

264:                                              ; preds = %261
  %265 = load ptr, ptr %36, align 8, !tbaa !5
  %266 = load i64, ptr %265, align 8, !tbaa !9
  %267 = load ptr, ptr %25, align 8, !tbaa !5
  %268 = load i64, ptr %267, align 8, !tbaa !9
  %269 = icmp slt i64 %266, %268
  br i1 %269, label %270, label %272

270:                                              ; preds = %264, %257
  %271 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -15, ptr %271, align 8, !tbaa !9
  br label %272

272:                                              ; preds = %270, %264, %261
  br label %273

273:                                              ; preds = %272, %253
  %274 = load ptr, ptr %41, align 8, !tbaa !5
  %275 = load i64, ptr %274, align 8, !tbaa !9
  %276 = icmp eq i64 %275, 0
  br i1 %276, label %277, label %336

277:                                              ; preds = %273
  %278 = load ptr, ptr %25, align 8, !tbaa !5
  %279 = load i64, ptr %278, align 8, !tbaa !9
  %280 = icmp sle i64 %279, 1
  br i1 %280, label %281, label %286

281:                                              ; preds = %277
  store i64 1, ptr %85, align 8, !tbaa !9
  %282 = load i64, ptr %85, align 8, !tbaa !9
  %283 = sitofp i64 %282 to double
  %284 = load ptr, ptr %37, align 8, !tbaa !5
  %285 = getelementptr inbounds double, ptr %284, i64 1
  store double %283, ptr %285, align 8, !tbaa !11
  br label %325

286:                                              ; preds = %277
  %287 = load ptr, ptr %25, align 8, !tbaa !5
  %288 = load i64, ptr %287, align 8, !tbaa !9
  %289 = shl i64 %288, 3
  store i64 %289, ptr %85, align 8, !tbaa !9
  %290 = load ptr, ptr %24, align 8, !tbaa !5
  %291 = load ptr, ptr %25, align 8, !tbaa !5
  %292 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.6, ptr noundef %290, ptr noundef %291, ptr noundef @c_n1, ptr noundef @c_n1, ptr noundef @c_n1)
  store i64 %292, ptr %52, align 8, !tbaa !9
  %293 = load i64, ptr %52, align 8, !tbaa !9
  store i64 %293, ptr %46, align 8, !tbaa !9
  %294 = load ptr, ptr %24, align 8, !tbaa !5
  %295 = load ptr, ptr %25, align 8, !tbaa !5
  %296 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.7, ptr noundef %294, ptr noundef %295, ptr noundef @c_n1, ptr noundef @c_n1, ptr noundef @c_n1)
  store i64 %296, ptr %47, align 8, !tbaa !9
  %297 = load i64, ptr %46, align 8, !tbaa !9
  %298 = load i64, ptr %47, align 8, !tbaa !9
  %299 = icmp sge i64 %297, %298
  br i1 %299, label %300, label %302

300:                                              ; preds = %286
  %301 = load i64, ptr %46, align 8, !tbaa !9
  br label %304

302:                                              ; preds = %286
  %303 = load i64, ptr %47, align 8, !tbaa !9
  br label %304

304:                                              ; preds = %302, %300
  %305 = phi i64 [ %301, %300 ], [ %303, %302 ]
  store i64 %305, ptr %52, align 8, !tbaa !9
  %306 = load i64, ptr %85, align 8, !tbaa !9
  store i64 %306, ptr %46, align 8, !tbaa !9
  %307 = load i64, ptr %52, align 8, !tbaa !9
  %308 = add nsw i64 %307, 3
  %309 = load ptr, ptr %25, align 8, !tbaa !5
  %310 = load i64, ptr %309, align 8, !tbaa !9
  %311 = mul nsw i64 %308, %310
  store i64 %311, ptr %47, align 8, !tbaa !9
  %312 = load i64, ptr %46, align 8, !tbaa !9
  %313 = load i64, ptr %47, align 8, !tbaa !9
  %314 = icmp sge i64 %312, %313
  br i1 %314, label %315, label %317

315:                                              ; preds = %304
  %316 = load i64, ptr %46, align 8, !tbaa !9
  br label %319

317:                                              ; preds = %304
  %318 = load i64, ptr %47, align 8, !tbaa !9
  br label %319

319:                                              ; preds = %317, %315
  %320 = phi i64 [ %316, %315 ], [ %318, %317 ]
  store i64 %320, ptr %90, align 8, !tbaa !9
  %321 = load i64, ptr %90, align 8, !tbaa !9
  %322 = sitofp i64 %321 to double
  %323 = load ptr, ptr %37, align 8, !tbaa !5
  %324 = getelementptr inbounds double, ptr %323, i64 1
  store double %322, ptr %324, align 8, !tbaa !11
  br label %325

325:                                              ; preds = %319, %281
  %326 = load ptr, ptr %38, align 8, !tbaa !5
  %327 = load i64, ptr %326, align 8, !tbaa !9
  %328 = load i64, ptr %85, align 8, !tbaa !9
  %329 = icmp slt i64 %327, %328
  br i1 %329, label %330, label %335

330:                                              ; preds = %325
  %331 = load i64, ptr %91, align 8, !tbaa !9
  %332 = icmp ne i64 %331, 0
  br i1 %332, label %335, label %333

333:                                              ; preds = %330
  %334 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -17, ptr %334, align 8, !tbaa !9
  br label %335

335:                                              ; preds = %333, %330, %325
  br label %336

336:                                              ; preds = %335, %273
  %337 = load ptr, ptr %41, align 8, !tbaa !5
  %338 = load i64, ptr %337, align 8, !tbaa !9
  %339 = icmp ne i64 %338, 0
  br i1 %339, label %340, label %345

340:                                              ; preds = %336
  %341 = load ptr, ptr %41, align 8, !tbaa !5
  %342 = load i64, ptr %341, align 8, !tbaa !9
  %343 = sub nsw i64 0, %342
  store i64 %343, ptr %46, align 8, !tbaa !9
  %344 = call i32 @xerbla_(ptr noundef @.str.8, ptr noundef %46)
  store i32 0, ptr %21, align 4
  store i32 1, ptr %92, align 4
  br label %971

345:                                              ; preds = %336
  %346 = load i64, ptr %91, align 8, !tbaa !9
  %347 = icmp ne i64 %346, 0
  br i1 %347, label %348, label %349

348:                                              ; preds = %345
  store i32 0, ptr %21, align 4
  store i32 1, ptr %92, align 4
  br label %971

349:                                              ; preds = %345
  br label %350

350:                                              ; preds = %349
  %351 = load ptr, ptr %33, align 8, !tbaa !5
  store i64 0, ptr %351, align 8, !tbaa !9
  %352 = load ptr, ptr %25, align 8, !tbaa !5
  %353 = load i64, ptr %352, align 8, !tbaa !9
  %354 = icmp eq i64 %353, 0
  br i1 %354, label %355, label %356

355:                                              ; preds = %350
  store i32 0, ptr %21, align 4
  store i32 1, ptr %92, align 4
  br label %971

356:                                              ; preds = %350
  %357 = load ptr, ptr %25, align 8, !tbaa !5
  %358 = load i64, ptr %357, align 8, !tbaa !9
  %359 = icmp eq i64 %358, 1
  br i1 %359, label %360, label %412

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

363:                                              ; preds = %360
  %364 = load i64, ptr %73, align 8, !tbaa !9
  %365 = icmp ne i64 %364, 0
  br i1 %365, label %366, label %375

366:                                              ; preds = %363, %360
  %367 = load ptr, ptr %33, align 8, !tbaa !5
  store i64 1, ptr %367, align 8, !tbaa !9
  %368 = load ptr, ptr %26, align 8, !tbaa !5
  %369 = load i64, ptr %42, align 8, !tbaa !9
  %370 = add nsw i64 %369, 1
  %371 = getelementptr inbounds double, ptr %368, i64 %370
  %372 = load double, ptr %371, align 8, !tbaa !11
  %373 = load ptr, ptr %34, align 8, !tbaa !5
  %374 = getelementptr inbounds double, ptr %373, i64 1
  store double %372, ptr %374, align 8, !tbaa !11
  br label %403

375:                                              ; preds = %363
  %376 = load ptr, ptr %28, align 8, !tbaa !5
  %377 = load double, ptr %376, align 8, !tbaa !11
  %378 = load ptr, ptr %26, align 8, !tbaa !5
  %379 = load i64, ptr %42, align 8, !tbaa !9
  %380 = add nsw i64 %379, 1
  %381 = getelementptr inbounds double, ptr %378, i64 %380
  %382 = load double, ptr %381, align 8, !tbaa !11
  %383 = fcmp olt double %377, %382
  br i1 %383, label %384, label %402

384:                                              ; preds = %375
  %385 = load ptr, ptr %29, align 8, !tbaa !5
  %386 = load double, ptr %385, align 8, !tbaa !11
  %387 = load ptr, ptr %26, align 8, !tbaa !5
  %388 = load i64, ptr %42, align 8, !tbaa !9
  %389 = add nsw i64 %388, 1
  %390 = getelementptr inbounds double, ptr %387, i64 %389
  %391 = load double, ptr %390, align 8, !tbaa !11
  %392 = fcmp oge double %386, %391
  br i1 %392, label %393, label %402

393:                                              ; preds = %384
  %394 = load ptr, ptr %33, align 8, !tbaa !5
  store i64 1, ptr %394, align 8, !tbaa !9
  %395 = load ptr, ptr %26, align 8, !tbaa !5
  %396 = load i64, ptr %42, align 8, !tbaa !9
  %397 = add nsw i64 %396, 1
  %398 = getelementptr inbounds double, ptr %395, i64 %397
  %399 = load double, ptr %398, align 8, !tbaa !11
  %400 = load ptr, ptr %34, align 8, !tbaa !5
  %401 = getelementptr inbounds double, ptr %400, i64 1
  store double %399, ptr %401, align 8, !tbaa !11
  br label %402

402:                                              ; preds = %393, %384, %375
  br label %403

403:                                              ; preds = %402, %366
  %404 = load i64, ptr %71, align 8, !tbaa !9
  %405 = icmp ne i64 %404, 0
  br i1 %405, label %406, label %411

406:                                              ; preds = %403
  %407 = load ptr, ptr %35, align 8, !tbaa !5
  %408 = load i64, ptr %44, align 8, !tbaa !9
  %409 = add nsw i64 %408, 1
  %410 = getelementptr inbounds double, ptr %407, i64 %409
  store double 1.000000e+00, ptr %410, align 8, !tbaa !11
  br label %411

411:                                              ; preds = %406, %403
  store i32 0, ptr %21, align 4
  store i32 1, ptr %92, align 4
  br label %971

412:                                              ; preds = %356
  %413 = call double @dlamch_(ptr noundef @.str.9)
  store double %413, ptr %77, align 8, !tbaa !11
  %414 = call double @dlamch_(ptr noundef @.str.10)
  store double %414, ptr %54, align 8, !tbaa !11
  %415 = load double, ptr %77, align 8, !tbaa !11
  %416 = load double, ptr %54, align 8, !tbaa !11
  %417 = fdiv double %415, %416
  store double %417, ptr %89, align 8, !tbaa !11
  %418 = load double, ptr %89, align 8, !tbaa !11
  %419 = fdiv double 1.000000e+00, %418
  store double %419, ptr %79, align 8, !tbaa !11
  %420 = load double, ptr %89, align 8, !tbaa !11
  %421 = call double @sqrt(double noundef %420) #4
  store double %421, ptr %62, align 8, !tbaa !11
  %422 = load double, ptr %79, align 8, !tbaa !11
  %423 = call double @sqrt(double noundef %422) #4
  store double %423, ptr %48, align 8, !tbaa !11
  %424 = load double, ptr %77, align 8, !tbaa !11
  %425 = call double @sqrt(double noundef %424) #4
  %426 = call double @sqrt(double noundef %425) #4
  %427 = fdiv double 1.000000e+00, %426
  store double %427, ptr %49, align 8, !tbaa !11
  %428 = load double, ptr %48, align 8, !tbaa !11
  %429 = load double, ptr %49, align 8, !tbaa !11
  %430 = fcmp ole double %428, %429
  br i1 %430, label %431, label %433

431:                                              ; preds = %412
  %432 = load double, ptr %48, align 8, !tbaa !11
  br label %435

433:                                              ; preds = %412
  %434 = load double, ptr %49, align 8, !tbaa !11
  br label %435

435:                                              ; preds = %433, %431
  %436 = phi double [ %432, %431 ], [ %434, %433 ]
  store double %436, ptr %63, align 8, !tbaa !11
  store i64 0, ptr %74, align 8, !tbaa !9
  %437 = load ptr, ptr %32, align 8, !tbaa !5
  %438 = load double, ptr %437, align 8, !tbaa !11
  store double %438, ptr %78, align 8, !tbaa !11
  %439 = load i64, ptr %76, align 8, !tbaa !9
  %440 = icmp ne i64 %439, 0
  br i1 %440, label %441, label %446

441:                                              ; preds = %435
  %442 = load ptr, ptr %28, align 8, !tbaa !5
  %443 = load double, ptr %442, align 8, !tbaa !11
  store double %443, ptr %55, align 8, !tbaa !11
  %444 = load ptr, ptr %29, align 8, !tbaa !5
  %445 = load double, ptr %444, align 8, !tbaa !11
  store double %445, ptr %56, align 8, !tbaa !11
  br label %446

446:                                              ; preds = %441, %435
  %447 = load ptr, ptr %24, align 8, !tbaa !5
  %448 = load ptr, ptr %25, align 8, !tbaa !5
  %449 = load ptr, ptr %26, align 8, !tbaa !5
  %450 = load i64, ptr %43, align 8, !tbaa !9
  %451 = getelementptr inbounds double, ptr %449, i64 %450
  %452 = load ptr, ptr %27, align 8, !tbaa !5
  %453 = load ptr, ptr %37, align 8, !tbaa !5
  %454 = getelementptr inbounds double, ptr %453, i64 1
  %455 = call double @dlansy_(ptr noundef @.str.11, ptr noundef %447, ptr noundef %448, ptr noundef %451, ptr noundef %452, ptr noundef %454)
  store double %455, ptr %60, align 8, !tbaa !11
  %456 = load double, ptr %60, align 8, !tbaa !11
  %457 = fcmp ogt double %456, 0.000000e+00
  br i1 %457, label %458, label %466

458:                                              ; preds = %446
  %459 = load double, ptr %60, align 8, !tbaa !11
  %460 = load double, ptr %62, align 8, !tbaa !11
  %461 = fcmp olt double %459, %460
  br i1 %461, label %462, label %466

462:                                              ; preds = %458
  store i64 1, ptr %74, align 8, !tbaa !9
  %463 = load double, ptr %62, align 8, !tbaa !11
  %464 = load double, ptr %60, align 8, !tbaa !11
  %465 = fdiv double %463, %464
  store double %465, ptr %67, align 8, !tbaa !11
  br label %475

466:                                              ; preds = %458, %446
  %467 = load double, ptr %60, align 8, !tbaa !11
  %468 = load double, ptr %63, align 8, !tbaa !11
  %469 = fcmp ogt double %467, %468
  br i1 %469, label %470, label %474

470:                                              ; preds = %466
  store i64 1, ptr %74, align 8, !tbaa !9
  %471 = load double, ptr %63, align 8, !tbaa !11
  %472 = load double, ptr %60, align 8, !tbaa !11
  %473 = fdiv double %471, %472
  store double %473, ptr %67, align 8, !tbaa !11
  br label %474

474:                                              ; preds = %470, %466
  br label %475

475:                                              ; preds = %474, %462
  %476 = load i64, ptr %74, align 8, !tbaa !9
  %477 = icmp eq i64 %476, 1
  br i1 %477, label %478, label %547

478:                                              ; preds = %475
  %479 = load i64, ptr %70, align 8, !tbaa !9
  %480 = icmp ne i64 %479, 0
  br i1 %480, label %481, label %506

481:                                              ; preds = %478
  %482 = load ptr, ptr %25, align 8, !tbaa !5
  %483 = load i64, ptr %482, align 8, !tbaa !9
  store i64 %483, ptr %46, align 8, !tbaa !9
  store i64 1, ptr %51, align 8, !tbaa !9
  br label %484

484:                                              ; preds = %502, %481
  %485 = load i64, ptr %51, align 8, !tbaa !9
  %486 = load i64, ptr %46, align 8, !tbaa !9
  %487 = icmp sle i64 %485, %486
  br i1 %487, label %488, label %505

488:                                              ; preds = %484
  %489 = load ptr, ptr %25, align 8, !tbaa !5
  %490 = load i64, ptr %489, align 8, !tbaa !9
  %491 = load i64, ptr %51, align 8, !tbaa !9
  %492 = sub nsw i64 %490, %491
  %493 = add nsw i64 %492, 1
  store i64 %493, ptr %47, align 8, !tbaa !9
  %494 = load ptr, ptr %26, align 8, !tbaa !5
  %495 = load i64, ptr %51, align 8, !tbaa !9
  %496 = load i64, ptr %51, align 8, !tbaa !9
  %497 = load i64, ptr %42, align 8, !tbaa !9
  %498 = mul nsw i64 %496, %497
  %499 = add nsw i64 %495, %498
  %500 = getelementptr inbounds double, ptr %494, i64 %499
  %501 = call i32 @f2c_dscal(ptr noundef %47, ptr noundef %67, ptr noundef %500, ptr noundef @c__1)
  br label %502

502:                                              ; preds = %488
  %503 = load i64, ptr %51, align 8, !tbaa !9
  %504 = add nsw i64 %503, 1
  store i64 %504, ptr %51, align 8, !tbaa !9
  br label %484, !llvm.loop !13

505:                                              ; preds = %484
  br label %525

506:                                              ; preds = %478
  %507 = load ptr, ptr %25, align 8, !tbaa !5
  %508 = load i64, ptr %507, align 8, !tbaa !9
  store i64 %508, ptr %46, align 8, !tbaa !9
  store i64 1, ptr %51, align 8, !tbaa !9
  br label %509

509:                                              ; preds = %521, %506
  %510 = load i64, ptr %51, align 8, !tbaa !9
  %511 = load i64, ptr %46, align 8, !tbaa !9
  %512 = icmp sle i64 %510, %511
  br i1 %512, label %513, label %524

513:                                              ; preds = %509
  %514 = load ptr, ptr %26, align 8, !tbaa !5
  %515 = load i64, ptr %51, align 8, !tbaa !9
  %516 = load i64, ptr %42, align 8, !tbaa !9
  %517 = mul nsw i64 %515, %516
  %518 = add nsw i64 %517, 1
  %519 = getelementptr inbounds double, ptr %514, i64 %518
  %520 = call i32 @f2c_dscal(ptr noundef %51, ptr noundef %67, ptr noundef %519, ptr noundef @c__1)
  br label %521

521:                                              ; preds = %513
  %522 = load i64, ptr %51, align 8, !tbaa !9
  %523 = add nsw i64 %522, 1
  store i64 %523, ptr %51, align 8, !tbaa !9
  br label %509, !llvm.loop !15

524:                                              ; preds = %509
  br label %525

525:                                              ; preds = %524, %505
  %526 = load ptr, ptr %32, align 8, !tbaa !5
  %527 = load double, ptr %526, align 8, !tbaa !11
  %528 = fcmp ogt double %527, 0.000000e+00
  br i1 %528, label %529, label %534

529:                                              ; preds = %525
  %530 = load ptr, ptr %32, align 8, !tbaa !5
  %531 = load double, ptr %530, align 8, !tbaa !11
  %532 = load double, ptr %67, align 8, !tbaa !11
  %533 = fmul double %531, %532
  store double %533, ptr %78, align 8, !tbaa !11
  br label %534

534:                                              ; preds = %529, %525
  %535 = load i64, ptr %76, align 8, !tbaa !9
  %536 = icmp ne i64 %535, 0
  br i1 %536, label %537, label %546

537:                                              ; preds = %534
  %538 = load ptr, ptr %28, align 8, !tbaa !5
  %539 = load double, ptr %538, align 8, !tbaa !11
  %540 = load double, ptr %67, align 8, !tbaa !11
  %541 = fmul double %539, %540
  store double %541, ptr %55, align 8, !tbaa !11
  %542 = load ptr, ptr %29, align 8, !tbaa !5
  %543 = load double, ptr %542, align 8, !tbaa !11
  %544 = load double, ptr %67, align 8, !tbaa !11
  %545 = fmul double %543, %544
  store double %545, ptr %56, align 8, !tbaa !11
  br label %546

546:                                              ; preds = %537, %534
  br label %547

547:                                              ; preds = %546, %475
  store i64 1, ptr %80, align 8, !tbaa !9
  %548 = load i64, ptr %80, align 8, !tbaa !9
  %549 = load ptr, ptr %25, align 8, !tbaa !5
  %550 = load i64, ptr %549, align 8, !tbaa !9
  %551 = add nsw i64 %548, %550
  store i64 %551, ptr %59, align 8, !tbaa !9
  %552 = load i64, ptr %59, align 8, !tbaa !9
  %553 = load ptr, ptr %25, align 8, !tbaa !5
  %554 = load i64, ptr %553, align 8, !tbaa !9
  %555 = add nsw i64 %552, %554
  store i64 %555, ptr %58, align 8, !tbaa !9
  %556 = load i64, ptr %58, align 8, !tbaa !9
  %557 = load ptr, ptr %25, align 8, !tbaa !5
  %558 = load i64, ptr %557, align 8, !tbaa !9
  %559 = add nsw i64 %556, %558
  store i64 %559, ptr %84, align 8, !tbaa !9
  %560 = load ptr, ptr %38, align 8, !tbaa !5
  %561 = load i64, ptr %560, align 8, !tbaa !9
  %562 = load i64, ptr %84, align 8, !tbaa !9
  %563 = sub nsw i64 %561, %562
  %564 = add nsw i64 %563, 1
  store i64 %564, ptr %87, align 8, !tbaa !9
  %565 = load ptr, ptr %24, align 8, !tbaa !5
  %566 = load ptr, ptr %25, align 8, !tbaa !5
  %567 = load ptr, ptr %26, align 8, !tbaa !5
  %568 = load i64, ptr %43, align 8, !tbaa !9
  %569 = getelementptr inbounds double, ptr %567, i64 %568
  %570 = load ptr, ptr %27, align 8, !tbaa !5
  %571 = load ptr, ptr %37, align 8, !tbaa !5
  %572 = load i64, ptr %58, align 8, !tbaa !9
  %573 = getelementptr inbounds double, ptr %571, i64 %572
  %574 = load ptr, ptr %37, align 8, !tbaa !5
  %575 = load i64, ptr %59, align 8, !tbaa !9
  %576 = getelementptr inbounds double, ptr %574, i64 %575
  %577 = load ptr, ptr %37, align 8, !tbaa !5
  %578 = load i64, ptr %80, align 8, !tbaa !9
  %579 = getelementptr inbounds double, ptr %577, i64 %578
  %580 = load ptr, ptr %37, align 8, !tbaa !5
  %581 = load i64, ptr %84, align 8, !tbaa !9
  %582 = getelementptr inbounds double, ptr %580, i64 %581
  %583 = call i32 @dsytrd_(ptr noundef %565, ptr noundef %566, ptr noundef %569, ptr noundef %570, ptr noundef %573, ptr noundef %576, ptr noundef %579, ptr noundef %582, ptr noundef %87, ptr noundef %68)
  store i64 0, ptr %64, align 8, !tbaa !9
  %584 = load i64, ptr %73, align 8, !tbaa !9
  %585 = icmp ne i64 %584, 0
  br i1 %585, label %586, label %598

586:                                              ; preds = %547
  %587 = load ptr, ptr %30, align 8, !tbaa !5
  %588 = load i64, ptr %587, align 8, !tbaa !9
  %589 = icmp eq i64 %588, 1
  br i1 %589, label %590, label %597

590:                                              ; preds = %586
  %591 = load ptr, ptr %31, align 8, !tbaa !5
  %592 = load i64, ptr %591, align 8, !tbaa !9
  %593 = load ptr, ptr %25, align 8, !tbaa !5
  %594 = load i64, ptr %593, align 8, !tbaa !9
  %595 = icmp eq i64 %592, %594
  br i1 %595, label %596, label %597

596:                                              ; preds = %590
  store i64 1, ptr %64, align 8, !tbaa !9
  br label %597

597:                                              ; preds = %596, %590, %586
  br label %598

598:                                              ; preds = %597, %547
  %599 = load i64, ptr %72, align 8, !tbaa !9
  %600 = icmp ne i64 %599, 0
  br i1 %600, label %604, label %601

601:                                              ; preds = %598
  %602 = load i64, ptr %64, align 8, !tbaa !9
  %603 = icmp ne i64 %602, 0
  br i1 %603, label %604, label %722

604:                                              ; preds = %601, %598
  %605 = load ptr, ptr %32, align 8, !tbaa !5
  %606 = load double, ptr %605, align 8, !tbaa !11
  %607 = fcmp ole double %606, 0.000000e+00
  br i1 %607, label %608, label %722

608:                                              ; preds = %604
  %609 = load ptr, ptr %25, align 8, !tbaa !5
  %610 = load ptr, ptr %37, align 8, !tbaa !5
  %611 = load i64, ptr %58, align 8, !tbaa !9
  %612 = getelementptr inbounds double, ptr %610, i64 %611
  %613 = load ptr, ptr %34, align 8, !tbaa !5
  %614 = getelementptr inbounds double, ptr %613, i64 1
  %615 = call i32 @f2c_dcopy(ptr noundef %609, ptr noundef %612, ptr noundef @c__1, ptr noundef %614, ptr noundef @c__1)
  %616 = load i64, ptr %84, align 8, !tbaa !9
  %617 = load ptr, ptr %25, align 8, !tbaa !5
  %618 = load i64, ptr %617, align 8, !tbaa !9
  %619 = shl i64 %618, 1
  %620 = add nsw i64 %616, %619
  store i64 %620, ptr %66, align 8, !tbaa !9
  %621 = load i64, ptr %71, align 8, !tbaa !9
  %622 = icmp ne i64 %621, 0
  br i1 %622, label %642, label %623

623:                                              ; preds = %608
  %624 = load ptr, ptr %25, align 8, !tbaa !5
  %625 = load i64, ptr %624, align 8, !tbaa !9
  %626 = sub nsw i64 %625, 1
  store i64 %626, ptr %46, align 8, !tbaa !9
  %627 = load ptr, ptr %37, align 8, !tbaa !5
  %628 = load i64, ptr %59, align 8, !tbaa !9
  %629 = getelementptr inbounds double, ptr %627, i64 %628
  %630 = load ptr, ptr %37, align 8, !tbaa !5
  %631 = load i64, ptr %66, align 8, !tbaa !9
  %632 = getelementptr inbounds double, ptr %630, i64 %631
  %633 = call i32 @f2c_dcopy(ptr noundef %46, ptr noundef %629, ptr noundef @c__1, ptr noundef %632, ptr noundef @c__1)
  %634 = load ptr, ptr %25, align 8, !tbaa !5
  %635 = load ptr, ptr %34, align 8, !tbaa !5
  %636 = getelementptr inbounds double, ptr %635, i64 1
  %637 = load ptr, ptr %37, align 8, !tbaa !5
  %638 = load i64, ptr %66, align 8, !tbaa !9
  %639 = getelementptr inbounds double, ptr %637, i64 %638
  %640 = load ptr, ptr %41, align 8, !tbaa !5
  %641 = call i32 @dsterf_(ptr noundef %634, ptr noundef %636, ptr noundef %639, ptr noundef %640)
  br label %712

642:                                              ; preds = %608
  %643 = load ptr, ptr %25, align 8, !tbaa !5
  %644 = load ptr, ptr %25, align 8, !tbaa !5
  %645 = load ptr, ptr %26, align 8, !tbaa !5
  %646 = load i64, ptr %43, align 8, !tbaa !9
  %647 = getelementptr inbounds double, ptr %645, i64 %646
  %648 = load ptr, ptr %27, align 8, !tbaa !5
  %649 = load ptr, ptr %35, align 8, !tbaa !5
  %650 = load i64, ptr %45, align 8, !tbaa !9
  %651 = getelementptr inbounds double, ptr %649, i64 %650
  %652 = load ptr, ptr %36, align 8, !tbaa !5
  %653 = call i32 @dlacpy_(ptr noundef @.str.2, ptr noundef %643, ptr noundef %644, ptr noundef %647, ptr noundef %648, ptr noundef %651, ptr noundef %652)
  %654 = load ptr, ptr %24, align 8, !tbaa !5
  %655 = load ptr, ptr %25, align 8, !tbaa !5
  %656 = load ptr, ptr %35, align 8, !tbaa !5
  %657 = load i64, ptr %45, align 8, !tbaa !9
  %658 = getelementptr inbounds double, ptr %656, i64 %657
  %659 = load ptr, ptr %36, align 8, !tbaa !5
  %660 = load ptr, ptr %37, align 8, !tbaa !5
  %661 = load i64, ptr %80, align 8, !tbaa !9
  %662 = getelementptr inbounds double, ptr %660, i64 %661
  %663 = load ptr, ptr %37, align 8, !tbaa !5
  %664 = load i64, ptr %84, align 8, !tbaa !9
  %665 = getelementptr inbounds double, ptr %663, i64 %664
  %666 = call i32 @dorgtr_(ptr noundef %654, ptr noundef %655, ptr noundef %658, ptr noundef %659, ptr noundef %662, ptr noundef %665, ptr noundef %87, ptr noundef %68)
  %667 = load ptr, ptr %25, align 8, !tbaa !5
  %668 = load i64, ptr %667, align 8, !tbaa !9
  %669 = sub nsw i64 %668, 1
  store i64 %669, ptr %46, align 8, !tbaa !9
  %670 = load ptr, ptr %37, align 8, !tbaa !5
  %671 = load i64, ptr %59, align 8, !tbaa !9
  %672 = getelementptr inbounds double, ptr %670, i64 %671
  %673 = load ptr, ptr %37, align 8, !tbaa !5
  %674 = load i64, ptr %66, align 8, !tbaa !9
  %675 = getelementptr inbounds double, ptr %673, i64 %674
  %676 = call i32 @f2c_dcopy(ptr noundef %46, ptr noundef %672, ptr noundef @c__1, ptr noundef %675, ptr noundef @c__1)
  %677 = load ptr, ptr %22, align 8, !tbaa !5
  %678 = load ptr, ptr %25, align 8, !tbaa !5
  %679 = load ptr, ptr %34, align 8, !tbaa !5
  %680 = getelementptr inbounds double, ptr %679, i64 1
  %681 = load ptr, ptr %37, align 8, !tbaa !5
  %682 = load i64, ptr %66, align 8, !tbaa !9
  %683 = getelementptr inbounds double, ptr %681, i64 %682
  %684 = load ptr, ptr %35, align 8, !tbaa !5
  %685 = load i64, ptr %45, align 8, !tbaa !9
  %686 = getelementptr inbounds double, ptr %684, i64 %685
  %687 = load ptr, ptr %36, align 8, !tbaa !5
  %688 = load ptr, ptr %37, align 8, !tbaa !5
  %689 = load i64, ptr %84, align 8, !tbaa !9
  %690 = getelementptr inbounds double, ptr %688, i64 %689
  %691 = load ptr, ptr %41, align 8, !tbaa !5
  %692 = call i32 @dsteqr_(ptr noundef %677, ptr noundef %678, ptr noundef %680, ptr noundef %683, ptr noundef %686, ptr noundef %687, ptr noundef %690, ptr noundef %691)
  %693 = load ptr, ptr %41, align 8, !tbaa !5
  %694 = load i64, ptr %693, align 8, !tbaa !9
  %695 = icmp eq i64 %694, 0
  br i1 %695, label %696, label %711

696:                                              ; preds = %642
  %697 = load ptr, ptr %25, align 8, !tbaa !5
  %698 = load i64, ptr %697, align 8, !tbaa !9
  store i64 %698, ptr %46, align 8, !tbaa !9
  store i64 1, ptr %50, align 8, !tbaa !9
  br label %699

699:                                              ; preds = %707, %696
  %700 = load i64, ptr %50, align 8, !tbaa !9
  %701 = load i64, ptr %46, align 8, !tbaa !9
  %702 = icmp sle i64 %700, %701
  br i1 %702, label %703, label %710

703:                                              ; preds = %699
  %704 = load ptr, ptr %40, align 8, !tbaa !5
  %705 = load i64, ptr %50, align 8, !tbaa !9
  %706 = getelementptr inbounds i64, ptr %704, i64 %705
  store i64 0, ptr %706, align 8, !tbaa !9
  br label %707

707:                                              ; preds = %703
  %708 = load i64, ptr %50, align 8, !tbaa !9
  %709 = add nsw i64 %708, 1
  store i64 %709, ptr %50, align 8, !tbaa !9
  br label %699, !llvm.loop !16

710:                                              ; preds = %699
  br label %711

711:                                              ; preds = %710, %642
  br label %712

712:                                              ; preds = %711, %623
  %713 = load ptr, ptr %41, align 8, !tbaa !5
  %714 = load i64, ptr %713, align 8, !tbaa !9
  %715 = icmp eq i64 %714, 0
  br i1 %715, label %716, label %720

716:                                              ; preds = %712
  %717 = load ptr, ptr %25, align 8, !tbaa !5
  %718 = load i64, ptr %717, align 8, !tbaa !9
  %719 = load ptr, ptr %33, align 8, !tbaa !5
  store i64 %718, ptr %719, align 8, !tbaa !9
  br label %824

720:                                              ; preds = %712
  %721 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 0, ptr %721, align 8, !tbaa !9
  br label %722

722:                                              ; preds = %720, %604, %601
  %723 = load i64, ptr %71, align 8, !tbaa !9
  %724 = icmp ne i64 %723, 0
  br i1 %724, label %725, label %727

725:                                              ; preds = %722
  %726 = getelementptr inbounds [1 x i8], ptr %69, i64 0, i64 0
  store i8 66, ptr %726, align 1, !tbaa !17
  br label %729

727:                                              ; preds = %722
  %728 = getelementptr inbounds [1 x i8], ptr %69, i64 0, i64 0
  store i8 69, ptr %728, align 1, !tbaa !17
  br label %729

729:                                              ; preds = %727, %725
  store i64 1, ptr %75, align 8, !tbaa !9
  %730 = load i64, ptr %75, align 8, !tbaa !9
  %731 = load ptr, ptr %25, align 8, !tbaa !5
  %732 = load i64, ptr %731, align 8, !tbaa !9
  %733 = add nsw i64 %730, %732
  store i64 %733, ptr %81, align 8, !tbaa !9
  %734 = load i64, ptr %81, align 8, !tbaa !9
  %735 = load ptr, ptr %25, align 8, !tbaa !5
  %736 = load i64, ptr %735, align 8, !tbaa !9
  %737 = add nsw i64 %734, %736
  store i64 %737, ptr %82, align 8, !tbaa !9
  %738 = load ptr, ptr %23, align 8, !tbaa !5
  %739 = getelementptr inbounds [1 x i8], ptr %69, i64 0, i64 0
  %740 = load ptr, ptr %25, align 8, !tbaa !5
  %741 = load ptr, ptr %30, align 8, !tbaa !5
  %742 = load ptr, ptr %31, align 8, !tbaa !5
  %743 = load ptr, ptr %37, align 8, !tbaa !5
  %744 = load i64, ptr %58, align 8, !tbaa !9
  %745 = getelementptr inbounds double, ptr %743, i64 %744
  %746 = load ptr, ptr %37, align 8, !tbaa !5
  %747 = load i64, ptr %59, align 8, !tbaa !9
  %748 = getelementptr inbounds double, ptr %746, i64 %747
  %749 = load ptr, ptr %33, align 8, !tbaa !5
  %750 = load ptr, ptr %34, align 8, !tbaa !5
  %751 = getelementptr inbounds double, ptr %750, i64 1
  %752 = load ptr, ptr %39, align 8, !tbaa !5
  %753 = load i64, ptr %75, align 8, !tbaa !9
  %754 = getelementptr inbounds i64, ptr %752, i64 %753
  %755 = load ptr, ptr %39, align 8, !tbaa !5
  %756 = load i64, ptr %81, align 8, !tbaa !9
  %757 = getelementptr inbounds i64, ptr %755, i64 %756
  %758 = load ptr, ptr %37, align 8, !tbaa !5
  %759 = load i64, ptr %84, align 8, !tbaa !9
  %760 = getelementptr inbounds double, ptr %758, i64 %759
  %761 = load ptr, ptr %39, align 8, !tbaa !5
  %762 = load i64, ptr %82, align 8, !tbaa !9
  %763 = getelementptr inbounds i64, ptr %761, i64 %762
  %764 = load ptr, ptr %41, align 8, !tbaa !5
  %765 = call i32 @dstebz_(ptr noundef %738, ptr noundef %739, ptr noundef %740, ptr noundef %55, ptr noundef %56, ptr noundef %741, ptr noundef %742, ptr noundef %78, ptr noundef %745, ptr noundef %748, ptr noundef %749, ptr noundef %88, ptr noundef %751, ptr noundef %754, ptr noundef %757, ptr noundef %760, ptr noundef %763, ptr noundef %764)
  %766 = load i64, ptr %71, align 8, !tbaa !9
  %767 = icmp ne i64 %766, 0
  br i1 %767, label %768, label %823

768:                                              ; preds = %729
  %769 = load ptr, ptr %25, align 8, !tbaa !5
  %770 = load ptr, ptr %37, align 8, !tbaa !5
  %771 = load i64, ptr %58, align 8, !tbaa !9
  %772 = getelementptr inbounds double, ptr %770, i64 %771
  %773 = load ptr, ptr %37, align 8, !tbaa !5
  %774 = load i64, ptr %59, align 8, !tbaa !9
  %775 = getelementptr inbounds double, ptr %773, i64 %774
  %776 = load ptr, ptr %33, align 8, !tbaa !5
  %777 = load ptr, ptr %34, align 8, !tbaa !5
  %778 = getelementptr inbounds double, ptr %777, i64 1
  %779 = load ptr, ptr %39, align 8, !tbaa !5
  %780 = load i64, ptr %75, align 8, !tbaa !9
  %781 = getelementptr inbounds i64, ptr %779, i64 %780
  %782 = load ptr, ptr %39, align 8, !tbaa !5
  %783 = load i64, ptr %81, align 8, !tbaa !9
  %784 = getelementptr inbounds i64, ptr %782, i64 %783
  %785 = load ptr, ptr %35, align 8, !tbaa !5
  %786 = load i64, ptr %45, align 8, !tbaa !9
  %787 = getelementptr inbounds double, ptr %785, i64 %786
  %788 = load ptr, ptr %36, align 8, !tbaa !5
  %789 = load ptr, ptr %37, align 8, !tbaa !5
  %790 = load i64, ptr %84, align 8, !tbaa !9
  %791 = getelementptr inbounds double, ptr %789, i64 %790
  %792 = load ptr, ptr %39, align 8, !tbaa !5
  %793 = load i64, ptr %82, align 8, !tbaa !9
  %794 = getelementptr inbounds i64, ptr %792, i64 %793
  %795 = load ptr, ptr %40, align 8, !tbaa !5
  %796 = getelementptr inbounds i64, ptr %795, i64 1
  %797 = load ptr, ptr %41, align 8, !tbaa !5
  %798 = call i32 @dstein_(ptr noundef %769, ptr noundef %772, ptr noundef %775, ptr noundef %776, ptr noundef %778, ptr noundef %781, ptr noundef %784, ptr noundef %787, ptr noundef %788, ptr noundef %791, ptr noundef %794, ptr noundef %796, ptr noundef %797)
  %799 = load i64, ptr %59, align 8, !tbaa !9
  store i64 %799, ptr %83, align 8, !tbaa !9
  %800 = load ptr, ptr %38, align 8, !tbaa !5
  %801 = load i64, ptr %800, align 8, !tbaa !9
  %802 = load i64, ptr %83, align 8, !tbaa !9
  %803 = sub nsw i64 %801, %802
  %804 = add nsw i64 %803, 1
  store i64 %804, ptr %86, align 8, !tbaa !9
  %805 = load ptr, ptr %24, align 8, !tbaa !5
  %806 = load ptr, ptr %25, align 8, !tbaa !5
  %807 = load ptr, ptr %33, align 8, !tbaa !5
  %808 = load ptr, ptr %26, align 8, !tbaa !5
  %809 = load i64, ptr %43, align 8, !tbaa !9
  %810 = getelementptr inbounds double, ptr %808, i64 %809
  %811 = load ptr, ptr %27, align 8, !tbaa !5
  %812 = load ptr, ptr %37, align 8, !tbaa !5
  %813 = load i64, ptr %80, align 8, !tbaa !9
  %814 = getelementptr inbounds double, ptr %812, i64 %813
  %815 = load ptr, ptr %35, align 8, !tbaa !5
  %816 = load i64, ptr %45, align 8, !tbaa !9
  %817 = getelementptr inbounds double, ptr %815, i64 %816
  %818 = load ptr, ptr %36, align 8, !tbaa !5
  %819 = load ptr, ptr %37, align 8, !tbaa !5
  %820 = load i64, ptr %83, align 8, !tbaa !9
  %821 = getelementptr inbounds double, ptr %819, i64 %820
  %822 = call i32 @dormtr_(ptr noundef @.str, ptr noundef %805, ptr noundef @.str.4, ptr noundef %806, ptr noundef %807, ptr noundef %810, ptr noundef %811, ptr noundef %814, ptr noundef %817, ptr noundef %818, ptr noundef %821, ptr noundef %86, ptr noundef %68)
  br label %823

823:                                              ; preds = %768, %729
  br label %824

824:                                              ; preds = %823, %716
  %825 = load i64, ptr %74, align 8, !tbaa !9
  %826 = icmp eq i64 %825, 1
  br i1 %826, label %827, label %844

827:                                              ; preds = %824
  %828 = load ptr, ptr %41, align 8, !tbaa !5
  %829 = load i64, ptr %828, align 8, !tbaa !9
  %830 = icmp eq i64 %829, 0
  br i1 %830, label %831, label %834

831:                                              ; preds = %827
  %832 = load ptr, ptr %33, align 8, !tbaa !5
  %833 = load i64, ptr %832, align 8, !tbaa !9
  store i64 %833, ptr %61, align 8, !tbaa !9
  br label %838

834:                                              ; preds = %827
  %835 = load ptr, ptr %41, align 8, !tbaa !5
  %836 = load i64, ptr %835, align 8, !tbaa !9
  %837 = sub nsw i64 %836, 1
  store i64 %837, ptr %61, align 8, !tbaa !9
  br label %838

838:                                              ; preds = %834, %831
  %839 = load double, ptr %67, align 8, !tbaa !11
  %840 = fdiv double 1.000000e+00, %839
  store double %840, ptr %48, align 8, !tbaa !11
  %841 = load ptr, ptr %34, align 8, !tbaa !5
  %842 = getelementptr inbounds double, ptr %841, i64 1
  %843 = call i32 @f2c_dscal(ptr noundef %61, ptr noundef %48, ptr noundef %842, ptr noundef @c__1)
  br label %844

844:                                              ; preds = %838, %824
  %845 = load i64, ptr %71, align 8, !tbaa !9
  %846 = icmp ne i64 %845, 0
  br i1 %846, label %847, label %966

847:                                              ; preds = %844
  %848 = load ptr, ptr %33, align 8, !tbaa !5
  %849 = load i64, ptr %848, align 8, !tbaa !9
  %850 = sub nsw i64 %849, 1
  store i64 %850, ptr %46, align 8, !tbaa !9
  store i64 1, ptr %51, align 8, !tbaa !9
  br label %851

851:                                              ; preds = %962, %847
  %852 = load i64, ptr %51, align 8, !tbaa !9
  %853 = load i64, ptr %46, align 8, !tbaa !9
  %854 = icmp sle i64 %852, %853
  br i1 %854, label %855, label %965

855:                                              ; preds = %851
  store i64 0, ptr %50, align 8, !tbaa !9
  %856 = load ptr, ptr %34, align 8, !tbaa !5
  %857 = load i64, ptr %51, align 8, !tbaa !9
  %858 = getelementptr inbounds double, ptr %856, i64 %857
  %859 = load double, ptr %858, align 8, !tbaa !11
  store double %859, ptr %57, align 8, !tbaa !11
  %860 = load ptr, ptr %33, align 8, !tbaa !5
  %861 = load i64, ptr %860, align 8, !tbaa !9
  store i64 %861, ptr %47, align 8, !tbaa !9
  %862 = load i64, ptr %51, align 8, !tbaa !9
  %863 = add nsw i64 %862, 1
  store i64 %863, ptr %53, align 8, !tbaa !9
  br label %864

864:                                              ; preds = %882, %855
  %865 = load i64, ptr %53, align 8, !tbaa !9
  %866 = load i64, ptr %47, align 8, !tbaa !9
  %867 = icmp sle i64 %865, %866
  br i1 %867, label %868, label %885

868:                                              ; preds = %864
  %869 = load ptr, ptr %34, align 8, !tbaa !5
  %870 = load i64, ptr %53, align 8, !tbaa !9
  %871 = getelementptr inbounds double, ptr %869, i64 %870
  %872 = load double, ptr %871, align 8, !tbaa !11
  %873 = load double, ptr %57, align 8, !tbaa !11
  %874 = fcmp olt double %872, %873
  br i1 %874, label %875, label %881

875:                                              ; preds = %868
  %876 = load i64, ptr %53, align 8, !tbaa !9
  store i64 %876, ptr %50, align 8, !tbaa !9
  %877 = load ptr, ptr %34, align 8, !tbaa !5
  %878 = load i64, ptr %53, align 8, !tbaa !9
  %879 = getelementptr inbounds double, ptr %877, i64 %878
  %880 = load double, ptr %879, align 8, !tbaa !11
  store double %880, ptr %57, align 8, !tbaa !11
  br label %881

881:                                              ; preds = %875, %868
  br label %882

882:                                              ; preds = %881
  %883 = load i64, ptr %53, align 8, !tbaa !9
  %884 = add nsw i64 %883, 1
  store i64 %884, ptr %53, align 8, !tbaa !9
  br label %864, !llvm.loop !18

885:                                              ; preds = %864
  %886 = load i64, ptr %50, align 8, !tbaa !9
  %887 = icmp ne i64 %886, 0
  br i1 %887, label %888, label %961

888:                                              ; preds = %885
  %889 = load ptr, ptr %39, align 8, !tbaa !5
  %890 = load i64, ptr %75, align 8, !tbaa !9
  %891 = load i64, ptr %50, align 8, !tbaa !9
  %892 = add nsw i64 %890, %891
  %893 = sub nsw i64 %892, 1
  %894 = getelementptr inbounds i64, ptr %889, i64 %893
  %895 = load i64, ptr %894, align 8, !tbaa !9
  store i64 %895, ptr %65, align 8, !tbaa !9
  %896 = load ptr, ptr %34, align 8, !tbaa !5
  %897 = load i64, ptr %51, align 8, !tbaa !9
  %898 = getelementptr inbounds double, ptr %896, i64 %897
  %899 = load double, ptr %898, align 8, !tbaa !11
  %900 = load ptr, ptr %34, align 8, !tbaa !5
  %901 = load i64, ptr %50, align 8, !tbaa !9
  %902 = getelementptr inbounds double, ptr %900, i64 %901
  store double %899, ptr %902, align 8, !tbaa !11
  %903 = load ptr, ptr %39, align 8, !tbaa !5
  %904 = load i64, ptr %75, align 8, !tbaa !9
  %905 = load i64, ptr %51, align 8, !tbaa !9
  %906 = add nsw i64 %904, %905
  %907 = sub nsw i64 %906, 1
  %908 = getelementptr inbounds i64, ptr %903, i64 %907
  %909 = load i64, ptr %908, align 8, !tbaa !9
  %910 = load ptr, ptr %39, align 8, !tbaa !5
  %911 = load i64, ptr %75, align 8, !tbaa !9
  %912 = load i64, ptr %50, align 8, !tbaa !9
  %913 = add nsw i64 %911, %912
  %914 = sub nsw i64 %913, 1
  %915 = getelementptr inbounds i64, ptr %910, i64 %914
  store i64 %909, ptr %915, align 8, !tbaa !9
  %916 = load double, ptr %57, align 8, !tbaa !11
  %917 = load ptr, ptr %34, align 8, !tbaa !5
  %918 = load i64, ptr %51, align 8, !tbaa !9
  %919 = getelementptr inbounds double, ptr %917, i64 %918
  store double %916, ptr %919, align 8, !tbaa !11
  %920 = load i64, ptr %65, align 8, !tbaa !9
  %921 = load ptr, ptr %39, align 8, !tbaa !5
  %922 = load i64, ptr %75, align 8, !tbaa !9
  %923 = load i64, ptr %51, align 8, !tbaa !9
  %924 = add nsw i64 %922, %923
  %925 = sub nsw i64 %924, 1
  %926 = getelementptr inbounds i64, ptr %921, i64 %925
  store i64 %920, ptr %926, align 8, !tbaa !9
  %927 = load ptr, ptr %25, align 8, !tbaa !5
  %928 = load ptr, ptr %35, align 8, !tbaa !5
  %929 = load i64, ptr %50, align 8, !tbaa !9
  %930 = load i64, ptr %44, align 8, !tbaa !9
  %931 = mul nsw i64 %929, %930
  %932 = add nsw i64 %931, 1
  %933 = getelementptr inbounds double, ptr %928, i64 %932
  %934 = load ptr, ptr %35, align 8, !tbaa !5
  %935 = load i64, ptr %51, align 8, !tbaa !9
  %936 = load i64, ptr %44, align 8, !tbaa !9
  %937 = mul nsw i64 %935, %936
  %938 = add nsw i64 %937, 1
  %939 = getelementptr inbounds double, ptr %934, i64 %938
  %940 = call i32 @f2c_dswap(ptr noundef %927, ptr noundef %933, ptr noundef @c__1, ptr noundef %939, ptr noundef @c__1)
  %941 = load ptr, ptr %41, align 8, !tbaa !5
  %942 = load i64, ptr %941, align 8, !tbaa !9
  %943 = icmp ne i64 %942, 0
  br i1 %943, label %944, label %960

944:                                              ; preds = %888
  %945 = load ptr, ptr %40, align 8, !tbaa !5
  %946 = load i64, ptr %50, align 8, !tbaa !9
  %947 = getelementptr inbounds i64, ptr %945, i64 %946
  %948 = load i64, ptr %947, align 8, !tbaa !9
  store i64 %948, ptr %65, align 8, !tbaa !9
  %949 = load ptr, ptr %40, align 8, !tbaa !5
  %950 = load i64, ptr %51, align 8, !tbaa !9
  %951 = getelementptr inbounds i64, ptr %949, i64 %950
  %952 = load i64, ptr %951, align 8, !tbaa !9
  %953 = load ptr, ptr %40, align 8, !tbaa !5
  %954 = load i64, ptr %50, align 8, !tbaa !9
  %955 = getelementptr inbounds i64, ptr %953, i64 %954
  store i64 %952, ptr %955, align 8, !tbaa !9
  %956 = load i64, ptr %65, align 8, !tbaa !9
  %957 = load ptr, ptr %40, align 8, !tbaa !5
  %958 = load i64, ptr %51, align 8, !tbaa !9
  %959 = getelementptr inbounds i64, ptr %957, i64 %958
  store i64 %956, ptr %959, align 8, !tbaa !9
  br label %960

960:                                              ; preds = %944, %888
  br label %961

961:                                              ; preds = %960, %885
  br label %962

962:                                              ; preds = %961
  %963 = load i64, ptr %51, align 8, !tbaa !9
  %964 = add nsw i64 %963, 1
  store i64 %964, ptr %51, align 8, !tbaa !9
  br label %851, !llvm.loop !19

965:                                              ; preds = %851
  br label %966

966:                                              ; preds = %965, %844
  %967 = load i64, ptr %90, align 8, !tbaa !9
  %968 = sitofp i64 %967 to double
  %969 = load ptr, ptr %37, align 8, !tbaa !5
  %970 = getelementptr inbounds double, ptr %969, i64 1
  store double %968, ptr %970, align 8, !tbaa !11
  store i32 0, ptr %21, align 4
  store i32 1, ptr %92, align 4
  br label %971

971:                                              ; preds = %966, %411, %355, %348, %340
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 1, 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 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 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
  %972 = load i32, ptr %21, align 4
  ret i32 %972
}

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

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

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

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

declare i32 @dorgtr_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, 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 @dormtr_(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 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = !{!7, !7, i64 0}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}


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

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

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

52:                                               ; preds = %20
  %53 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.4) #6
  %.not381 = icmp eq i64 %53, 0
  br i1 %.not381, label %.thread415.sink.split, label %54

54:                                               ; preds = %52, %20
  %55 = icmp ne i64 %47, 0
  %56 = icmp ne i64 %48, 0
  %or.cond = select i1 %55, i1 true, i1 %56
  %57 = icmp ne i64 %49, 0
  %or.cond3 = select i1 %or.cond, i1 true, i1 %57
  br i1 %or.cond3, label %58, label %.thread415.sink.split

58:                                               ; preds = %54
  %.not382 = icmp eq i64 %45, 0
  br i1 %.not382, label %59, label %61

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

61:                                               ; preds = %59, %58
  %62 = load i64, ptr %3, align 8, !tbaa !5
  %63 = icmp slt i64 %62, 0
  br i1 %63, label %.thread415.sink.split, label %64

64:                                               ; preds = %61
  %65 = load i64, ptr %5, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %62, i64 1)
  %66 = icmp slt i64 %65, %spec.select
  br i1 %66, label %.thread415.sink.split, label %67

67:                                               ; preds = %64
  br i1 %56, label %68, label %73

68:                                               ; preds = %67
  %.not429 = icmp eq i64 %62, 0
  br i1 %.not429, label %82, label %69

69:                                               ; preds = %68
  %70 = load double, ptr %7, align 8, !tbaa !9
  %71 = load double, ptr %6, align 8, !tbaa !9
  %72 = fcmp ugt double %70, %71
  br i1 %72, label %82, label %.thread415.sink.split

73:                                               ; preds = %67
  br i1 %57, label %74, label %82

74:                                               ; preds = %73
  %75 = load i64, ptr %8, align 8, !tbaa !5
  %76 = icmp slt i64 %75, 1
  %77 = icmp ugt i64 %75, %spec.select
  %or.cond427 = or i1 %76, %77
  br i1 %or.cond427, label %.thread415.sink.split, label %78

78:                                               ; preds = %74
  %79 = load i64, ptr %9, align 8, !tbaa !5
  %. = tail call i64 @llvm.umin.i64(i64 %62, i64 %75)
  %80 = icmp slt i64 %79, %.
  %81 = icmp ugt i64 %79, %62
  %or.cond428 = or i1 %80, %81
  br i1 %or.cond428, label %.thread415.sink.split, label %82

82:                                               ; preds = %78, %69, %68, %73
  %.pr = load i64, ptr %19, align 8, !tbaa !5
  %83 = icmp eq i64 %.pr, 0
  br i1 %83, label %84, label %.thread415

84:                                               ; preds = %82
  %85 = load i64, ptr %14, align 8, !tbaa !5
  %86 = icmp slt i64 %85, 1
  %87 = icmp ult i64 %85, %62
  %or.cond462 = and i1 %.not, %87
  %or.cond465 = or i1 %86, %or.cond462
  br i1 %or.cond465, label %.thread415.sink.split, label %.thread

.thread:                                          ; preds = %84
  %88 = icmp ult i64 %62, 2
  br i1 %88, label %99, label %89

89:                                               ; preds = %.thread
  %90 = shl i64 %62, 3
  %91 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.6, ptr noundef %2, ptr noundef nonnull %3, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1) #6
  %92 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.7, ptr noundef %2, ptr noundef nonnull %3, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1) #6
  %93 = tail call i64 @llvm.smax.i64(i64 %91, i64 %92)
  store i64 %90, ptr %21, align 8, !tbaa !5
  %94 = add nsw i64 %93, 3
  %95 = load i64, ptr %3, align 8, !tbaa !5
  %96 = mul nsw i64 %94, %95
  store i64 %96, ptr %22, align 8, !tbaa !5
  %97 = tail call i64 @llvm.smax.i64(i64 %90, i64 %96)
  %98 = sitofp i64 %97 to double
  br label %99

99:                                               ; preds = %.thread, %89
  %storemerge = phi double [ %98, %89 ], [ 1.000000e+00, %.thread ]
  %.0354 = phi i64 [ %90, %89 ], [ 1, %.thread ]
  %.0353 = phi i64 [ %97, %89 ], [ undef, %.thread ]
  store double %storemerge, ptr %15, align 8, !tbaa !9
  %100 = load i64, ptr %16, align 8, !tbaa !5
  %101 = icmp sge i64 %100, %.0354
  %or.cond5 = select i1 %101, i1 true, i1 %51
  br i1 %or.cond5, label %.thread410, label %.thread415.sink.split

.thread410:                                       ; preds = %99
  %.pr412.pr = load i64, ptr %19, align 8, !tbaa !5
  %.not387 = icmp eq i64 %.pr412.pr, 0
  br i1 %.not387, label %105, label %.thread415

.thread415.sink.split:                            ; preds = %99, %84, %78, %74, %69, %64, %61, %59, %54, %52
  %.sink = phi i64 [ -1, %52 ], [ -2, %54 ], [ -3, %59 ], [ -4, %61 ], [ -6, %64 ], [ -8, %69 ], [ -9, %74 ], [ -10, %78 ], [ -15, %84 ], [ -17, %99 ]
  store i64 %.sink, ptr %19, align 8, !tbaa !5
  br label %.thread415

.thread415:                                       ; preds = %.thread415.sink.split, %82, %.thread410
  %102 = phi i64 [ %.pr412.pr, %.thread410 ], [ %.pr, %82 ], [ %.sink, %.thread415.sink.split ]
  %103 = sub nsw i64 0, %102
  store i64 %103, ptr %21, align 8, !tbaa !5
  %104 = call i32 @xerbla_(ptr noundef nonnull @.str.8, ptr noundef nonnull %21) #6
  br label %283

105:                                              ; preds = %.thread410
  br i1 %51, label %283, label %106

106:                                              ; preds = %105
  store i64 0, ptr %11, align 8, !tbaa !5
  %107 = load i64, ptr %3, align 8, !tbaa !5
  switch i64 %107, label %121 [
    i64 0, label %283
    i64 1, label %108
  ]

108:                                              ; preds = %106
  %or.cond7 = select i1 %55, i1 true, i1 %57
  br i1 %or.cond7, label %109, label %111

109:                                              ; preds = %108
  store i64 1, ptr %11, align 8, !tbaa !5
  %110 = load double, ptr %4, align 8, !tbaa !9
  br label %.sink.split

111:                                              ; preds = %108
  %112 = load double, ptr %6, align 8, !tbaa !9
  %113 = load double, ptr %4, align 8, !tbaa !9
  %114 = fcmp olt double %112, %113
  br i1 %114, label %115, label %119

115:                                              ; preds = %111
  %116 = load double, ptr %7, align 8, !tbaa !9
  %117 = fcmp ult double %116, %113
  br i1 %117, label %119, label %118

118:                                              ; preds = %115
  store i64 1, ptr %11, align 8, !tbaa !5
  br label %.sink.split

.sink.split:                                      ; preds = %109, %118
  %.sink463 = phi double [ %113, %118 ], [ %110, %109 ]
  store double %.sink463, ptr %12, align 8, !tbaa !9
  br label %119

119:                                              ; preds = %.sink.split, %111, %115
  br i1 %.not, label %120, label %283

120:                                              ; preds = %119
  store double 1.000000e+00, ptr %13, align 8, !tbaa !9
  br label %283

121:                                              ; preds = %106
  %122 = tail call double @dlamch_(ptr noundef nonnull @.str.9) #6
  %123 = tail call double @dlamch_(ptr noundef nonnull @.str.10) #6
  %124 = fdiv double %122, %123
  %125 = fdiv double 1.000000e+00, %124
  %126 = tail call double @sqrt(double noundef %124) #6
  %127 = tail call double @sqrt(double noundef %125) #6
  store double %127, ptr %23, align 8, !tbaa !9
  %128 = tail call double @sqrt(double noundef %122) #6
  %129 = tail call double @sqrt(double noundef %128) #6
  %130 = fdiv double 1.000000e+00, %129
  %131 = fcmp ole double %127, %130
  %132 = select i1 %131, double %127, double %130
  %133 = load double, ptr %10, align 8, !tbaa !9
  store double %133, ptr %31, align 8, !tbaa !9
  %.not388 = icmp eq i64 %48, 0
  br i1 %.not388, label %137, label %134

134:                                              ; preds = %121
  %135 = load double, ptr %6, align 8, !tbaa !9
  store double %135, ptr %25, align 8, !tbaa !9
  %136 = load double, ptr %7, align 8, !tbaa !9
  store double %136, ptr %26, align 8, !tbaa !9
  br label %137

137:                                              ; preds = %134, %121
  %138 = tail call double @dlansy_(ptr noundef nonnull @.str.11, ptr noundef %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef nonnull %15) #6
  %139 = fcmp ogt double %138, 0.000000e+00
  %140 = fcmp olt double %138, %126
  %or.cond404 = select i1 %139, i1 %140, i1 false
  br i1 %or.cond404, label %143, label %141

141:                                              ; preds = %137
  %142 = fcmp ogt double %138, %132
  br i1 %142, label %143, label %174

143:                                              ; preds = %141, %137
  %.pn = phi double [ %126, %137 ], [ %132, %141 ]
  %storemerge430 = fdiv double %.pn, %138
  store double %storemerge430, ptr %28, align 8, !tbaa !9
  %144 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %144, ptr %21, align 8, !tbaa !5
  br i1 %.not382, label %156, label %145

145:                                              ; preds = %143
  store i64 1, ptr %24, align 8, !tbaa !5
  %.not393435 = icmp slt i64 %144, 1
  br i1 %.not393435, label %.loopexit433, label %.lr.ph

.lr.ph:                                           ; preds = %145
  %146 = add i64 %35, 1
  br label %147

147:                                              ; preds = %.lr.ph, %147
  %storemerge392436 = phi i64 [ 1, %.lr.ph ], [ %154, %147 ]
  %148 = load i64, ptr %3, align 8, !tbaa !5
  %reass.sub = sub i64 %148, %storemerge392436
  %149 = add i64 %reass.sub, 1
  store i64 %149, ptr %22, align 8, !tbaa !5
  %150 = mul i64 %storemerge392436, %146
  %151 = getelementptr inbounds double, ptr %37, i64 %150
  %152 = call i32 @f2c_dscal(ptr noundef nonnull %22, ptr noundef nonnull %28, ptr noundef %151, ptr noundef nonnull @c__1) #6
  %153 = load i64, ptr %24, align 8, !tbaa !5
  %154 = add nsw i64 %153, 1
  store i64 %154, ptr %24, align 8, !tbaa !5
  %155 = load i64, ptr %21, align 8, !tbaa !5
  %.not393.not = icmp slt i64 %153, %155
  br i1 %.not393.not, label %147, label %.loopexit433, !llvm.loop !11

156:                                              ; preds = %143
  %invariant.gep = getelementptr i8, ptr %37, i64 8
  store i64 1, ptr %24, align 8, !tbaa !5
  %.not391437 = icmp slt i64 %144, 1
  br i1 %.not391437, label %.loopexit433, label %.lr.ph439

.lr.ph439:                                        ; preds = %156, %.lr.ph439
  %storemerge390438 = phi i64 [ %160, %.lr.ph439 ], [ 1, %156 ]
  %157 = mul nsw i64 %storemerge390438, %35
  %gep = getelementptr double, ptr %invariant.gep, i64 %157
  %158 = call i32 @f2c_dscal(ptr noundef nonnull %24, ptr noundef nonnull %28, ptr noundef %gep, ptr noundef nonnull @c__1) #6
  %159 = load i64, ptr %24, align 8, !tbaa !5
  %160 = add nsw i64 %159, 1
  store i64 %160, ptr %24, align 8, !tbaa !5
  %161 = load i64, ptr %21, align 8, !tbaa !5
  %.not391.not = icmp slt i64 %159, %161
  br i1 %.not391.not, label %.lr.ph439, label %.loopexit433, !llvm.loop !13

.loopexit433:                                     ; preds = %147, %.lr.ph439, %145, %156
  %162 = load double, ptr %10, align 8, !tbaa !9
  %163 = fcmp ogt double %162, 0.000000e+00
  br i1 %163, label %164, label %167

164:                                              ; preds = %.loopexit433
  %165 = load double, ptr %28, align 8, !tbaa !9
  %166 = fmul double %162, %165
  store double %166, ptr %31, align 8, !tbaa !9
  br label %167

167:                                              ; preds = %164, %.loopexit433
  br i1 %.not388, label %174, label %168

168:                                              ; preds = %167
  %169 = load double, ptr %6, align 8, !tbaa !9
  %170 = load double, ptr %28, align 8, !tbaa !9
  %171 = fmul double %169, %170
  store double %171, ptr %25, align 8, !tbaa !9
  %172 = load double, ptr %7, align 8, !tbaa !9
  %173 = fmul double %170, %172
  store double %173, ptr %26, align 8, !tbaa !9
  br label %174

174:                                              ; preds = %141, %167, %168
  %175 = phi i1 [ true, %167 ], [ true, %168 ], [ false, %141 ]
  %176 = load i64, ptr %3, align 8, !tbaa !5
  %reass.add = shl i64 %176, 1
  %177 = or disjoint i64 %reass.add, 1
  %178 = add nsw i64 %177, %176
  %179 = load i64, ptr %16, align 8, !tbaa !5
  %180 = add i64 %179, 1
  %181 = sub i64 %180, %178
  store i64 %181, ptr %33, align 8, !tbaa !5
  %182 = getelementptr double, ptr %15, i64 %reass.add
  %183 = getelementptr double, ptr %15, i64 %176
  %184 = getelementptr inbounds double, ptr %42, i64 %178
  %185 = call i32 @dsytrd_(ptr noundef %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef nonnull %182, ptr noundef %183, ptr noundef nonnull %15, ptr noundef nonnull %184, ptr noundef nonnull %33, ptr noundef nonnull %29) #6
  %.not394 = icmp eq i64 %49, 0
  br i1 %.not394, label %193, label %186

186:                                              ; preds = %174
  %187 = load i64, ptr %8, align 8, !tbaa !5
  %188 = icmp eq i64 %187, 1
  br i1 %188, label %189, label %193

189:                                              ; preds = %186
  %190 = load i64, ptr %9, align 8, !tbaa !5
  %191 = load i64, ptr %3, align 8, !tbaa !5
  %192 = icmp eq i64 %190, %191
  br label %193

193:                                              ; preds = %189, %186, %174
  %194 = phi i1 [ false, %186 ], [ false, %174 ], [ %192, %189 ]
  %or.cond9 = or i1 %55, %194
  br i1 %or.cond9, label %195, label %224

195:                                              ; preds = %193
  %196 = load double, ptr %10, align 8, !tbaa !9
  %197 = fcmp ugt double %196, 0.000000e+00
  br i1 %197, label %224, label %198

198:                                              ; preds = %195
  %199 = call i32 @f2c_dcopy(ptr noundef nonnull %3, ptr noundef nonnull %182, ptr noundef nonnull @c__1, ptr noundef %12, ptr noundef nonnull @c__1) #6
  %200 = load i64, ptr %3, align 8, !tbaa !5
  %201 = shl i64 %200, 1
  %202 = add nsw i64 %201, %178
  br i1 %.not, label %208, label %203

203:                                              ; preds = %198
  %204 = add nsw i64 %200, -1
  store i64 %204, ptr %21, align 8, !tbaa !5
  %205 = getelementptr inbounds double, ptr %42, i64 %202
  %206 = call i32 @f2c_dcopy(ptr noundef nonnull %21, ptr noundef %183, ptr noundef nonnull @c__1, ptr noundef nonnull %205, ptr noundef nonnull @c__1) #6
  %207 = call i32 @dsterf_(ptr noundef nonnull %3, ptr noundef %12, ptr noundef nonnull %205, ptr noundef nonnull %19) #6
  br label %.loopexit432

208:                                              ; preds = %198
  %209 = call i32 @dlacpy_(ptr noundef nonnull @.str.2, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %13, ptr noundef nonnull %14) #6
  %210 = call i32 @dorgtr_(ptr noundef %2, ptr noundef nonnull %3, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %15, ptr noundef nonnull %184, ptr noundef nonnull %33, ptr noundef nonnull %29) #6
  %211 = load i64, ptr %3, align 8, !tbaa !5
  %212 = add nsw i64 %211, -1
  store i64 %212, ptr %21, align 8, !tbaa !5
  %213 = getelementptr inbounds double, ptr %42, i64 %202
  %214 = call i32 @f2c_dcopy(ptr noundef nonnull %21, ptr noundef %183, ptr noundef nonnull @c__1, ptr noundef nonnull %213, ptr noundef nonnull @c__1) #6
  %215 = call i32 @dsteqr_(ptr noundef %0, ptr noundef nonnull %3, ptr noundef %12, ptr noundef nonnull %213, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %184, ptr noundef nonnull %19) #6
  %216 = load i64, ptr %19, align 8, !tbaa !5
  %217 = icmp eq i64 %216, 0
  br i1 %217, label %218, label %.thread422

218:                                              ; preds = %208
  %219 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %219, ptr %21, align 8, !tbaa !5
  %.not395440 = icmp slt i64 %219, 1
  br i1 %.not395440, label %.loopexit432, label %.lr.ph442.preheader

.lr.ph442.preheader:                              ; preds = %218
  %220 = shl nuw i64 %219, 3
  call void @llvm.memset.p0.i64(ptr align 8 %18, i8 0, i64 %220, i1 false), !tbaa !5
  br label %.loopexit432

.loopexit432:                                     ; preds = %.lr.ph442.preheader, %218, %203
  %.pr421 = load i64, ptr %19, align 8, !tbaa !5
  %221 = icmp eq i64 %.pr421, 0
  br i1 %221, label %222, label %.thread422

222:                                              ; preds = %.loopexit432
  %223 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %223, ptr %11, align 8, !tbaa !5
  br label %234

.thread422:                                       ; preds = %208, %.loopexit432
  store i64 0, ptr %19, align 8, !tbaa !5
  br label %224

224:                                              ; preds = %193, %.thread422, %195
  %.406 = select i1 %.not, i8 66, i8 69
  store i8 %.406, ptr %30, align 1, !tbaa !14
  %225 = load i64, ptr %3, align 8, !tbaa !5
  %226 = getelementptr i64, ptr %17, i64 %225
  %.idx = shl i64 %225, 4
  %227 = getelementptr i8, ptr %17, i64 %.idx
  %228 = call i32 @dstebz_(ptr noundef %1, ptr noundef nonnull %30, ptr noundef nonnull %3, ptr noundef nonnull %25, ptr noundef nonnull %26, ptr noundef %8, ptr noundef %9, ptr noundef nonnull %31, ptr noundef nonnull %182, ptr noundef %183, ptr noundef nonnull %11, ptr noundef nonnull %34, ptr noundef %12, ptr noundef %17, ptr noundef %226, ptr noundef nonnull %184, ptr noundef %227, ptr noundef nonnull %19) #6
  br i1 %.not, label %229, label %234

229:                                              ; preds = %224
  %230 = call i32 @dstein_(ptr noundef nonnull %3, ptr noundef nonnull %182, ptr noundef %183, ptr noundef nonnull %11, ptr noundef %12, ptr noundef %17, ptr noundef %226, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %184, ptr noundef %227, ptr noundef %18, ptr noundef nonnull %19) #6
  %231 = load i64, ptr %16, align 8, !tbaa !5
  %232 = sub i64 %231, %176
  store i64 %232, ptr %32, align 8, !tbaa !5
  %233 = call i32 @dormtr_(ptr noundef nonnull @.str, ptr noundef %2, ptr noundef nonnull @.str.4, ptr noundef nonnull %3, ptr noundef nonnull %11, ptr noundef %4, ptr noundef nonnull %5, ptr noundef nonnull %15, ptr noundef %13, ptr noundef nonnull %14, ptr noundef %183, ptr noundef nonnull %32, ptr noundef nonnull %29) #6
  br label %234

234:                                              ; preds = %224, %229, %222
  br i1 %175, label %235, label %246

235:                                              ; preds = %234
  %236 = load i64, ptr %19, align 8, !tbaa !5
  %237 = icmp eq i64 %236, 0
  br i1 %237, label %238, label %240

238:                                              ; preds = %235
  %239 = load i64, ptr %11, align 8, !tbaa !5
  br label %242

240:                                              ; preds = %235
  %241 = add nsw i64 %236, -1
  br label %242

242:                                              ; preds = %240, %238
  %storemerge397 = phi i64 [ %241, %240 ], [ %239, %238 ]
  store i64 %storemerge397, ptr %27, align 8, !tbaa !5
  %243 = load double, ptr %28, align 8, !tbaa !9
  %244 = fdiv double 1.000000e+00, %243
  store double %244, ptr %23, align 8, !tbaa !9
  %245 = call i32 @f2c_dscal(ptr noundef nonnull %27, ptr noundef nonnull %23, ptr noundef %12, ptr noundef nonnull @c__1) #6
  br label %246

246:                                              ; preds = %242, %234
  br i1 %.not, label %247, label %.loopexit

247:                                              ; preds = %246
  %248 = load i64, ptr %11, align 8, !tbaa !5
  %249 = add nsw i64 %248, -1
  store i64 %249, ptr %21, align 8, !tbaa !5
  %invariant.gep449 = getelementptr i8, ptr %41, i64 8
  store i64 1, ptr %24, align 8, !tbaa !5
  %.not399453 = icmp slt i64 %248, 2
  br i1 %.not399453, label %.loopexit, label %.lr.ph456

.lr.ph456:                                        ; preds = %247, %._crit_edge.thread
  %storemerge398454 = phi i64 [ %280, %._crit_edge.thread ], [ 1, %247 ]
  %250 = getelementptr inbounds double, ptr %38, i64 %storemerge398454
  %251 = load double, ptr %250, align 8, !tbaa !9
  %252 = load i64, ptr %11, align 8, !tbaa !5
  store i64 %252, ptr %22, align 8, !tbaa !5
  %.not400.not443 = icmp slt i64 %storemerge398454, %252
  br i1 %.not400.not443, label %.lr.ph447.preheader, label %._crit_edge.thread

.lr.ph447.preheader:                              ; preds = %.lr.ph456
  %253 = sub i64 %252, %storemerge398454
  %.neg = add i64 %storemerge398454, 1
  %xtraiter = and i64 %253, 1
  %254 = icmp eq i64 %252, %.neg
  br i1 %254, label %._crit_edge.unr-lcssa, label %.lr.ph447.preheader.new

.lr.ph447.preheader.new:                          ; preds = %.lr.ph447.preheader
  %unroll_iter = and i64 %253, -2
  br label %.lr.ph447

.lr.ph447:                                        ; preds = %.lr.ph447, %.lr.ph447.preheader.new
  %.1356446 = phi i64 [ 0, %.lr.ph447.preheader.new ], [ %.2.1, %.lr.ph447 ]
  %.0357.in445 = phi i64 [ %storemerge398454, %.lr.ph447.preheader.new ], [ %.0357.1, %.lr.ph447 ]
  %.0358444 = phi double [ %251, %.lr.ph447.preheader.new ], [ %.1359.1, %.lr.ph447 ]
  %niter = phi i64 [ 0, %.lr.ph447.preheader.new ], [ %niter.next.1, %.lr.ph447 ]
  %.0357 = add nsw i64 %.0357.in445, 1
  %255 = getelementptr double, ptr %12, i64 %.0357.in445
  %256 = load double, ptr %255, align 8, !tbaa !9
  %257 = fcmp olt double %256, %.0358444
  %.1359 = select i1 %257, double %256, double %.0358444
  %.2 = select i1 %257, i64 %.0357, i64 %.1356446
  %.0357.1 = add nsw i64 %.0357.in445, 2
  %258 = getelementptr double, ptr %12, i64 %.0357
  %259 = load double, ptr %258, align 8, !tbaa !9
  %260 = fcmp olt double %259, %.1359
  %.1359.1 = select i1 %260, double %259, double %.1359
  %.2.1 = select i1 %260, i64 %.0357.1, i64 %.2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge.unr-lcssa, label %.lr.ph447, !llvm.loop !15

._crit_edge.unr-lcssa:                            ; preds = %.lr.ph447, %.lr.ph447.preheader
  %.1359.lcssa.ph = phi double [ poison, %.lr.ph447.preheader ], [ %.1359.1, %.lr.ph447 ]
  %.2.lcssa.ph = phi i64 [ poison, %.lr.ph447.preheader ], [ %.2.1, %.lr.ph447 ]
  %.1356446.unr = phi i64 [ 0, %.lr.ph447.preheader ], [ %.2.1, %.lr.ph447 ]
  %.0357.in445.unr = phi i64 [ %storemerge398454, %.lr.ph447.preheader ], [ %.0357.1, %.lr.ph447 ]
  %.0358444.unr = phi double [ %251, %.lr.ph447.preheader ], [ %.1359.1, %.lr.ph447 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph447.epil

.lr.ph447.epil:                                   ; preds = %._crit_edge.unr-lcssa
  %.0357.epil = add nsw i64 %.0357.in445.unr, 1
  %261 = getelementptr double, ptr %12, i64 %.0357.in445.unr
  %262 = load double, ptr %261, align 8, !tbaa !9
  %263 = fcmp olt double %262, %.0358444.unr
  %.1359.epil = select i1 %263, double %262, double %.0358444.unr
  %.2.epil = select i1 %263, i64 %.0357.epil, i64 %.1356446.unr
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.unr-lcssa, %.lr.ph447.epil
  %.1359.lcssa = phi double [ %.1359.lcssa.ph, %._crit_edge.unr-lcssa ], [ %.1359.epil, %.lr.ph447.epil ]
  %.2.lcssa = phi i64 [ %.2.lcssa.ph, %._crit_edge.unr-lcssa ], [ %.2.epil, %.lr.ph447.epil ]
  %.not401 = icmp eq i64 %.2.lcssa, 0
  br i1 %.not401, label %._crit_edge.thread, label %264

264:                                              ; preds = %._crit_edge
  %265 = getelementptr inbounds i64, ptr %43, i64 %.2.lcssa
  %266 = load i64, ptr %265, align 8, !tbaa !5
  %267 = getelementptr inbounds double, ptr %38, i64 %.2.lcssa
  store double %251, ptr %267, align 8, !tbaa !9
  %268 = getelementptr inbounds i64, ptr %43, i64 %storemerge398454
  %269 = load i64, ptr %268, align 8, !tbaa !5
  store i64 %269, ptr %265, align 8, !tbaa !5
  store double %.1359.lcssa, ptr %250, align 8, !tbaa !9
  store i64 %266, ptr %268, align 8, !tbaa !5
  %270 = mul nsw i64 %.2.lcssa, %39
  %gep450 = getelementptr double, ptr %invariant.gep449, i64 %270
  %271 = mul nsw i64 %storemerge398454, %39
  %gep452 = getelementptr double, ptr %invariant.gep449, i64 %271
  %272 = call i32 @f2c_dswap(ptr noundef nonnull %3, ptr noundef %gep450, ptr noundef nonnull @c__1, ptr noundef %gep452, ptr noundef nonnull @c__1) #6
  %273 = load i64, ptr %19, align 8, !tbaa !5
  %.not402 = icmp eq i64 %273, 0
  %.pre = load i64, ptr %24, align 8, !tbaa !5
  br i1 %.not402, label %._crit_edge.thread, label %274

274:                                              ; preds = %264
  %275 = getelementptr inbounds i64, ptr %44, i64 %.2.lcssa
  %276 = load i64, ptr %275, align 8, !tbaa !5
  %277 = getelementptr inbounds i64, ptr %44, i64 %.pre
  %278 = load i64, ptr %277, align 8, !tbaa !5
  store i64 %278, ptr %275, align 8, !tbaa !5
  store i64 %276, ptr %277, align 8, !tbaa !5
  br label %._crit_edge.thread

._crit_edge.thread:                               ; preds = %.lr.ph456, %._crit_edge, %274, %264
  %279 = phi i64 [ %storemerge398454, %._crit_edge ], [ %.pre, %274 ], [ %.pre, %264 ], [ %storemerge398454, %.lr.ph456 ]
  %280 = add nsw i64 %279, 1
  store i64 %280, ptr %24, align 8, !tbaa !5
  %281 = load i64, ptr %21, align 8, !tbaa !5
  %.not399.not = icmp slt i64 %279, %281
  br i1 %.not399.not, label %.lr.ph456, label %.loopexit, !llvm.loop !16

.loopexit:                                        ; preds = %._crit_edge.thread, %247, %246
  %282 = sitofp i64 %.0353 to double
  store double %282, ptr %15, align 8, !tbaa !9
  br label %283

283:                                              ; preds = %119, %120, %106, %105, %.loopexit, %.thread415
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %30) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #6
  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 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
  ret i32 0
}

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

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

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

declare i32 @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 @dlansy_(ptr noundef, ptr noundef, 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 @dsytrd_(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_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 @dlacpy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @dorgtr_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, 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 @dormtr_(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.smax.i64(i64, i64) #4

; 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 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = !{!7, !7, i64 0}
!15 = distinct !{!15, !12}
!16 = distinct !{!16, !12}


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