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

; 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"

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

136:                                              ; preds = %21
  %137 = load ptr, ptr %42, align 8, !tbaa !5
  %138 = load i64, ptr %137, align 8, !tbaa !9
  %139 = icmp eq i64 %138, -1
  br label %140

140:                                              ; preds = %136, %21
  %141 = phi i1 [ true, %21 ], [ %139, %136 ]
  %142 = zext i1 %141 to i32
  %143 = sext i32 %142 to i64
  store i64 %143, ptr %96, align 8, !tbaa !9
  store i64 1, ptr %48, align 8, !tbaa !9
  %144 = load ptr, ptr %26, align 8, !tbaa !5
  %145 = load i64, ptr %144, align 8, !tbaa !9
  %146 = mul nsw i64 %145, 26
  store i64 %146, ptr %49, align 8, !tbaa !9
  %147 = load i64, ptr %48, align 8, !tbaa !9
  %148 = load i64, ptr %49, align 8, !tbaa !9
  %149 = icmp sge i64 %147, %148
  br i1 %149, label %150, label %152

150:                                              ; preds = %140
  %151 = load i64, ptr %48, align 8, !tbaa !9
  br label %154

152:                                              ; preds = %140
  %153 = load i64, ptr %49, align 8, !tbaa !9
  br label %154

154:                                              ; preds = %152, %150
  %155 = phi i64 [ %151, %150 ], [ %153, %152 ]
  store i64 %155, ptr %72, align 8, !tbaa !9
  store i64 1, ptr %48, align 8, !tbaa !9
  %156 = load ptr, ptr %26, align 8, !tbaa !5
  %157 = load i64, ptr %156, align 8, !tbaa !9
  %158 = mul nsw i64 %157, 10
  store i64 %158, ptr %49, align 8, !tbaa !9
  %159 = load i64, ptr %48, align 8, !tbaa !9
  %160 = load i64, ptr %49, align 8, !tbaa !9
  %161 = icmp sge i64 %159, %160
  br i1 %161, label %162, label %164

162:                                              ; preds = %154
  %163 = load i64, ptr %48, align 8, !tbaa !9
  br label %166

164:                                              ; preds = %154
  %165 = load i64, ptr %49, align 8, !tbaa !9
  br label %166

166:                                              ; preds = %164, %162
  %167 = phi i64 [ %163, %162 ], [ %165, %164 ]
  store i64 %167, ptr %89, align 8, !tbaa !9
  %168 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 0, ptr %168, align 8, !tbaa !9
  %169 = load i64, ptr %74, align 8, !tbaa !9
  %170 = icmp ne i64 %169, 0
  br i1 %170, label %177, label %171

171:                                              ; preds = %166
  %172 = load ptr, ptr %23, align 8, !tbaa !5
  %173 = call i64 @lsame_(ptr noundef %172, ptr noundef @.str.1)
  %174 = icmp ne i64 %173, 0
  br i1 %174, label %177, label %175

175:                                              ; preds = %171
  %176 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -1, ptr %176, align 8, !tbaa !9
  br label %289

177:                                              ; preds = %171, %166
  %178 = load i64, ptr %75, align 8, !tbaa !9
  %179 = icmp ne i64 %178, 0
  br i1 %179, label %188, label %180

180:                                              ; preds = %177
  %181 = load i64, ptr %81, align 8, !tbaa !9
  %182 = icmp ne i64 %181, 0
  br i1 %182, label %188, label %183

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

186:                                              ; preds = %183
  %187 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -2, ptr %187, align 8, !tbaa !9
  br label %288

188:                                              ; preds = %183, %180, %177
  %189 = load i64, ptr %73, align 8, !tbaa !9
  %190 = icmp ne i64 %189, 0
  br i1 %190, label %197, label %191

191:                                              ; preds = %188
  %192 = load ptr, ptr %25, align 8, !tbaa !5
  %193 = call i64 @lsame_(ptr noundef %192, ptr noundef @.str.6)
  %194 = icmp ne i64 %193, 0
  br i1 %194, label %197, label %195

195:                                              ; preds = %191
  %196 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -3, ptr %196, align 8, !tbaa !9
  br label %287

197:                                              ; preds = %191, %188
  %198 = load ptr, ptr %26, align 8, !tbaa !5
  %199 = load i64, ptr %198, align 8, !tbaa !9
  %200 = icmp slt i64 %199, 0
  br i1 %200, label %201, label %203

201:                                              ; preds = %197
  %202 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -4, ptr %202, align 8, !tbaa !9
  br label %286

203:                                              ; preds = %197
  %204 = load ptr, ptr %28, align 8, !tbaa !5
  %205 = load i64, ptr %204, align 8, !tbaa !9
  %206 = load ptr, ptr %26, align 8, !tbaa !5
  %207 = load i64, ptr %206, align 8, !tbaa !9
  %208 = icmp sge i64 1, %207
  br i1 %208, label %209, label %210

209:                                              ; preds = %203
  br label %213

210:                                              ; preds = %203
  %211 = load ptr, ptr %26, align 8, !tbaa !5
  %212 = load i64, ptr %211, align 8, !tbaa !9
  br label %213

213:                                              ; preds = %210, %209
  %214 = phi i64 [ 1, %209 ], [ %212, %210 ]
  %215 = icmp slt i64 %205, %214
  br i1 %215, label %216, label %218

216:                                              ; preds = %213
  %217 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -6, ptr %217, align 8, !tbaa !9
  br label %285

218:                                              ; preds = %213
  %219 = load i64, ptr %81, align 8, !tbaa !9
  %220 = icmp ne i64 %219, 0
  br i1 %220, label %221, label %234

221:                                              ; preds = %218
  %222 = load ptr, ptr %26, align 8, !tbaa !5
  %223 = load i64, ptr %222, align 8, !tbaa !9
  %224 = icmp sgt i64 %223, 0
  br i1 %224, label %225, label %233

225:                                              ; preds = %221
  %226 = load ptr, ptr %30, align 8, !tbaa !5
  %227 = load double, ptr %226, align 8, !tbaa !11
  %228 = load ptr, ptr %29, align 8, !tbaa !5
  %229 = load double, ptr %228, align 8, !tbaa !11
  %230 = fcmp ole double %227, %229
  br i1 %230, label %231, label %233

231:                                              ; preds = %225
  %232 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -8, ptr %232, align 8, !tbaa !9
  br label %233

233:                                              ; preds = %231, %225, %221
  br label %284

234:                                              ; preds = %218
  %235 = load i64, ptr %76, align 8, !tbaa !9
  %236 = icmp ne i64 %235, 0
  br i1 %236, label %237, label %283

237:                                              ; preds = %234
  %238 = load ptr, ptr %31, align 8, !tbaa !5
  %239 = load i64, ptr %238, align 8, !tbaa !9
  %240 = icmp slt i64 %239, 1
  br i1 %240, label %254, label %241

241:                                              ; preds = %237
  %242 = load ptr, ptr %31, align 8, !tbaa !5
  %243 = load i64, ptr %242, align 8, !tbaa !9
  %244 = load ptr, ptr %26, align 8, !tbaa !5
  %245 = load i64, ptr %244, align 8, !tbaa !9
  %246 = icmp sge i64 1, %245
  br i1 %246, label %247, label %248

247:                                              ; preds = %241
  br label %251

248:                                              ; preds = %241
  %249 = load ptr, ptr %26, align 8, !tbaa !5
  %250 = load i64, ptr %249, align 8, !tbaa !9
  br label %251

251:                                              ; preds = %248, %247
  %252 = phi i64 [ 1, %247 ], [ %250, %248 ]
  %253 = icmp sgt i64 %243, %252
  br i1 %253, label %254, label %256

254:                                              ; preds = %251, %237
  %255 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -9, ptr %255, align 8, !tbaa !9
  br label %282

256:                                              ; preds = %251
  %257 = load ptr, ptr %32, align 8, !tbaa !5
  %258 = load i64, ptr %257, align 8, !tbaa !9
  %259 = load ptr, ptr %26, align 8, !tbaa !5
  %260 = load i64, ptr %259, align 8, !tbaa !9
  %261 = load ptr, ptr %31, align 8, !tbaa !5
  %262 = load i64, ptr %261, align 8, !tbaa !9
  %263 = icmp sle i64 %260, %262
  br i1 %263, label %264, label %267

264:                                              ; preds = %256
  %265 = load ptr, ptr %26, align 8, !tbaa !5
  %266 = load i64, ptr %265, align 8, !tbaa !9
  br label %270

267:                                              ; preds = %256
  %268 = load ptr, ptr %31, align 8, !tbaa !5
  %269 = load i64, ptr %268, align 8, !tbaa !9
  br label %270

270:                                              ; preds = %267, %264
  %271 = phi i64 [ %266, %264 ], [ %269, %267 ]
  %272 = icmp slt i64 %258, %271
  br i1 %272, label %279, label %273

273:                                              ; preds = %270
  %274 = load ptr, ptr %32, align 8, !tbaa !5
  %275 = load i64, ptr %274, align 8, !tbaa !9
  %276 = load ptr, ptr %26, align 8, !tbaa !5
  %277 = load i64, ptr %276, align 8, !tbaa !9
  %278 = icmp sgt i64 %275, %277
  br i1 %278, label %279, label %281

279:                                              ; preds = %273, %270
  %280 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -10, ptr %280, align 8, !tbaa !9
  br label %281

281:                                              ; preds = %279, %273
  br label %282

282:                                              ; preds = %281, %254
  br label %283

283:                                              ; preds = %282, %234
  br label %284

284:                                              ; preds = %283, %233
  br label %285

285:                                              ; preds = %284, %216
  br label %286

286:                                              ; preds = %285, %201
  br label %287

287:                                              ; preds = %286, %195
  br label %288

288:                                              ; preds = %287, %186
  br label %289

289:                                              ; preds = %288, %175
  %290 = load ptr, ptr %43, align 8, !tbaa !5
  %291 = load i64, ptr %290, align 8, !tbaa !9
  %292 = icmp eq i64 %291, 0
  br i1 %292, label %293, label %331

293:                                              ; preds = %289
  %294 = load ptr, ptr %37, align 8, !tbaa !5
  %295 = load i64, ptr %294, align 8, !tbaa !9
  %296 = icmp slt i64 %295, 1
  br i1 %296, label %306, label %297

297:                                              ; preds = %293
  %298 = load i64, ptr %74, align 8, !tbaa !9
  %299 = icmp ne i64 %298, 0
  br i1 %299, label %300, label %308

300:                                              ; preds = %297
  %301 = load ptr, ptr %37, align 8, !tbaa !5
  %302 = load i64, ptr %301, align 8, !tbaa !9
  %303 = load ptr, ptr %26, align 8, !tbaa !5
  %304 = load i64, ptr %303, align 8, !tbaa !9
  %305 = icmp slt i64 %302, %304
  br i1 %305, label %306, label %308

306:                                              ; preds = %300, %293
  %307 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -15, ptr %307, align 8, !tbaa !9
  br label %330

308:                                              ; preds = %300, %297
  %309 = load ptr, ptr %40, align 8, !tbaa !5
  %310 = load i64, ptr %309, align 8, !tbaa !9
  %311 = load i64, ptr %72, align 8, !tbaa !9
  %312 = icmp slt i64 %310, %311
  br i1 %312, label %313, label %318

313:                                              ; preds = %308
  %314 = load i64, ptr %96, align 8, !tbaa !9
  %315 = icmp ne i64 %314, 0
  br i1 %315, label %318, label %316

316:                                              ; preds = %313
  %317 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -18, ptr %317, align 8, !tbaa !9
  br label %329

318:                                              ; preds = %313, %308
  %319 = load ptr, ptr %42, align 8, !tbaa !5
  %320 = load i64, ptr %319, align 8, !tbaa !9
  %321 = load i64, ptr %89, align 8, !tbaa !9
  %322 = icmp slt i64 %320, %321
  br i1 %322, label %323, label %328

323:                                              ; preds = %318
  %324 = load i64, ptr %96, align 8, !tbaa !9
  %325 = icmp ne i64 %324, 0
  br i1 %325, label %328, label %326

326:                                              ; preds = %323
  %327 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -20, ptr %327, align 8, !tbaa !9
  br label %328

328:                                              ; preds = %326, %323, %318
  br label %329

329:                                              ; preds = %328, %316
  br label %330

330:                                              ; preds = %329, %306
  br label %331

331:                                              ; preds = %330, %289
  %332 = load ptr, ptr %43, align 8, !tbaa !5
  %333 = load i64, ptr %332, align 8, !tbaa !9
  %334 = icmp eq i64 %333, 0
  br i1 %334, label %335, label %373

335:                                              ; preds = %331
  %336 = load ptr, ptr %25, align 8, !tbaa !5
  %337 = load ptr, ptr %26, align 8, !tbaa !5
  %338 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.7, ptr noundef %336, ptr noundef %337, ptr noundef @c_n1, ptr noundef @c_n1, ptr noundef @c_n1)
  store i64 %338, ptr %54, align 8, !tbaa !9
  %339 = load i64, ptr %54, align 8, !tbaa !9
  store i64 %339, ptr %48, align 8, !tbaa !9
  %340 = load ptr, ptr %25, align 8, !tbaa !5
  %341 = load ptr, ptr %26, align 8, !tbaa !5
  %342 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.8, ptr noundef %340, ptr noundef %341, ptr noundef @c_n1, ptr noundef @c_n1, ptr noundef @c_n1)
  store i64 %342, ptr %49, align 8, !tbaa !9
  %343 = load i64, ptr %48, align 8, !tbaa !9
  %344 = load i64, ptr %49, align 8, !tbaa !9
  %345 = icmp sge i64 %343, %344
  br i1 %345, label %346, label %348

346:                                              ; preds = %335
  %347 = load i64, ptr %48, align 8, !tbaa !9
  br label %350

348:                                              ; preds = %335
  %349 = load i64, ptr %49, align 8, !tbaa !9
  br label %350

350:                                              ; preds = %348, %346
  %351 = phi i64 [ %347, %346 ], [ %349, %348 ]
  store i64 %351, ptr %54, align 8, !tbaa !9
  %352 = load i64, ptr %54, align 8, !tbaa !9
  %353 = add nsw i64 %352, 1
  %354 = load ptr, ptr %26, align 8, !tbaa !5
  %355 = load i64, ptr %354, align 8, !tbaa !9
  %356 = mul nsw i64 %353, %355
  store i64 %356, ptr %48, align 8, !tbaa !9
  %357 = load i64, ptr %48, align 8, !tbaa !9
  %358 = load i64, ptr %72, align 8, !tbaa !9
  %359 = icmp sge i64 %357, %358
  br i1 %359, label %360, label %362

360:                                              ; preds = %350
  %361 = load i64, ptr %48, align 8, !tbaa !9
  br label %364

362:                                              ; preds = %350
  %363 = load i64, ptr %72, align 8, !tbaa !9
  br label %364

364:                                              ; preds = %362, %360
  %365 = phi i64 [ %361, %360 ], [ %363, %362 ]
  store i64 %365, ptr %95, align 8, !tbaa !9
  %366 = load i64, ptr %95, align 8, !tbaa !9
  %367 = sitofp i64 %366 to double
  %368 = load ptr, ptr %39, align 8, !tbaa !5
  %369 = getelementptr inbounds double, ptr %368, i64 1
  store double %367, ptr %369, align 8, !tbaa !11
  %370 = load i64, ptr %89, align 8, !tbaa !9
  %371 = load ptr, ptr %41, align 8, !tbaa !5
  %372 = getelementptr inbounds i64, ptr %371, i64 1
  store i64 %370, ptr %372, align 8, !tbaa !9
  br label %373

373:                                              ; preds = %364, %331
  %374 = load ptr, ptr %43, align 8, !tbaa !5
  %375 = load i64, ptr %374, align 8, !tbaa !9
  %376 = icmp ne i64 %375, 0
  br i1 %376, label %377, label %382

377:                                              ; preds = %373
  %378 = load ptr, ptr %43, align 8, !tbaa !5
  %379 = load i64, ptr %378, align 8, !tbaa !9
  %380 = sub nsw i64 0, %379
  store i64 %380, ptr %48, align 8, !tbaa !9
  %381 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %48)
  store i32 0, ptr %22, align 4
  store i32 1, ptr %97, align 4
  br label %990

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

385:                                              ; preds = %382
  store i32 0, ptr %22, align 4
  store i32 1, ptr %97, align 4
  br label %990

386:                                              ; preds = %382
  br label %387

387:                                              ; preds = %386
  %388 = load ptr, ptr %34, align 8, !tbaa !5
  store i64 0, ptr %388, align 8, !tbaa !9
  %389 = load ptr, ptr %26, align 8, !tbaa !5
  %390 = load i64, ptr %389, align 8, !tbaa !9
  %391 = icmp eq i64 %390, 0
  br i1 %391, label %392, label %395

392:                                              ; preds = %387
  %393 = load ptr, ptr %39, align 8, !tbaa !5
  %394 = getelementptr inbounds double, ptr %393, i64 1
  store double 1.000000e+00, ptr %394, align 8, !tbaa !11
  store i32 0, ptr %22, align 4
  store i32 1, ptr %97, align 4
  br label %990

395:                                              ; preds = %387
  %396 = load ptr, ptr %26, align 8, !tbaa !5
  %397 = load i64, ptr %396, align 8, !tbaa !9
  %398 = icmp eq i64 %397, 1
  br i1 %398, label %399, label %453

399:                                              ; preds = %395
  %400 = load ptr, ptr %39, align 8, !tbaa !5
  %401 = getelementptr inbounds double, ptr %400, i64 1
  store double 7.000000e+00, ptr %401, align 8, !tbaa !11
  %402 = load i64, ptr %75, align 8, !tbaa !9
  %403 = icmp ne i64 %402, 0
  br i1 %403, label %407, label %404

404:                                              ; preds = %399
  %405 = load i64, ptr %76, align 8, !tbaa !9
  %406 = icmp ne i64 %405, 0
  br i1 %406, label %407, label %416

407:                                              ; preds = %404, %399
  %408 = load ptr, ptr %34, align 8, !tbaa !5
  store i64 1, ptr %408, align 8, !tbaa !9
  %409 = load ptr, ptr %27, align 8, !tbaa !5
  %410 = load i64, ptr %44, align 8, !tbaa !9
  %411 = add nsw i64 %410, 1
  %412 = getelementptr inbounds double, ptr %409, i64 %411
  %413 = load double, ptr %412, align 8, !tbaa !11
  %414 = load ptr, ptr %35, align 8, !tbaa !5
  %415 = getelementptr inbounds double, ptr %414, i64 1
  store double %413, ptr %415, align 8, !tbaa !11
  br label %444

416:                                              ; preds = %404
  %417 = load ptr, ptr %29, align 8, !tbaa !5
  %418 = load double, ptr %417, align 8, !tbaa !11
  %419 = load ptr, ptr %27, align 8, !tbaa !5
  %420 = load i64, ptr %44, align 8, !tbaa !9
  %421 = add nsw i64 %420, 1
  %422 = getelementptr inbounds double, ptr %419, i64 %421
  %423 = load double, ptr %422, align 8, !tbaa !11
  %424 = fcmp olt double %418, %423
  br i1 %424, label %425, label %443

425:                                              ; preds = %416
  %426 = load ptr, ptr %30, align 8, !tbaa !5
  %427 = load double, ptr %426, align 8, !tbaa !11
  %428 = load ptr, ptr %27, align 8, !tbaa !5
  %429 = load i64, ptr %44, align 8, !tbaa !9
  %430 = add nsw i64 %429, 1
  %431 = getelementptr inbounds double, ptr %428, i64 %430
  %432 = load double, ptr %431, align 8, !tbaa !11
  %433 = fcmp oge double %427, %432
  br i1 %433, label %434, label %443

434:                                              ; preds = %425
  %435 = load ptr, ptr %34, align 8, !tbaa !5
  store i64 1, ptr %435, align 8, !tbaa !9
  %436 = load ptr, ptr %27, align 8, !tbaa !5
  %437 = load i64, ptr %44, align 8, !tbaa !9
  %438 = add nsw i64 %437, 1
  %439 = getelementptr inbounds double, ptr %436, i64 %438
  %440 = load double, ptr %439, align 8, !tbaa !11
  %441 = load ptr, ptr %35, align 8, !tbaa !5
  %442 = getelementptr inbounds double, ptr %441, i64 1
  store double %440, ptr %442, align 8, !tbaa !11
  br label %443

443:                                              ; preds = %434, %425, %416
  br label %444

444:                                              ; preds = %443, %407
  %445 = load i64, ptr %74, align 8, !tbaa !9
  %446 = icmp ne i64 %445, 0
  br i1 %446, label %447, label %452

447:                                              ; preds = %444
  %448 = load ptr, ptr %36, align 8, !tbaa !5
  %449 = load i64, ptr %46, align 8, !tbaa !9
  %450 = add nsw i64 %449, 1
  %451 = getelementptr inbounds double, ptr %448, i64 %450
  store double 1.000000e+00, ptr %451, align 8, !tbaa !11
  br label %452

452:                                              ; preds = %447, %444
  store i32 0, ptr %22, align 4
  store i32 1, ptr %97, align 4
  br label %990

453:                                              ; preds = %395
  %454 = call double @dlamch_(ptr noundef @.str.9)
  store double %454, ptr %82, align 8, !tbaa !11
  %455 = call double @dlamch_(ptr noundef @.str.10)
  store double %455, ptr %56, align 8, !tbaa !11
  %456 = load double, ptr %82, align 8, !tbaa !11
  %457 = load double, ptr %56, align 8, !tbaa !11
  %458 = fdiv double %456, %457
  store double %458, ptr %94, align 8, !tbaa !11
  %459 = load double, ptr %94, align 8, !tbaa !11
  %460 = fdiv double 1.000000e+00, %459
  store double %460, ptr %84, align 8, !tbaa !11
  %461 = load double, ptr %94, align 8, !tbaa !11
  %462 = call double @sqrt(double noundef %461) #4
  store double %462, ptr %64, align 8, !tbaa !11
  %463 = load double, ptr %84, align 8, !tbaa !11
  %464 = call double @sqrt(double noundef %463) #4
  store double %464, ptr %50, align 8, !tbaa !11
  %465 = load double, ptr %82, align 8, !tbaa !11
  %466 = call double @sqrt(double noundef %465) #4
  %467 = call double @sqrt(double noundef %466) #4
  %468 = fdiv double 1.000000e+00, %467
  store double %468, ptr %51, align 8, !tbaa !11
  %469 = load double, ptr %50, align 8, !tbaa !11
  %470 = load double, ptr %51, align 8, !tbaa !11
  %471 = fcmp ole double %469, %470
  br i1 %471, label %472, label %474

472:                                              ; preds = %453
  %473 = load double, ptr %50, align 8, !tbaa !11
  br label %476

474:                                              ; preds = %453
  %475 = load double, ptr %51, align 8, !tbaa !11
  br label %476

476:                                              ; preds = %474, %472
  %477 = phi double [ %473, %472 ], [ %475, %474 ]
  store double %477, ptr %65, align 8, !tbaa !11
  store i64 0, ptr %77, align 8, !tbaa !9
  %478 = load ptr, ptr %33, align 8, !tbaa !5
  %479 = load double, ptr %478, align 8, !tbaa !11
  store double %479, ptr %83, align 8, !tbaa !11
  %480 = load ptr, ptr %29, align 8, !tbaa !5
  %481 = load double, ptr %480, align 8, !tbaa !11
  store double %481, ptr %57, align 8, !tbaa !11
  %482 = load ptr, ptr %30, align 8, !tbaa !5
  %483 = load double, ptr %482, align 8, !tbaa !11
  store double %483, ptr %58, align 8, !tbaa !11
  %484 = load ptr, ptr %25, align 8, !tbaa !5
  %485 = load ptr, ptr %26, align 8, !tbaa !5
  %486 = load ptr, ptr %27, align 8, !tbaa !5
  %487 = load i64, ptr %45, align 8, !tbaa !9
  %488 = getelementptr inbounds double, ptr %486, i64 %487
  %489 = load ptr, ptr %28, align 8, !tbaa !5
  %490 = load ptr, ptr %39, align 8, !tbaa !5
  %491 = getelementptr inbounds double, ptr %490, i64 1
  %492 = call double @dlansy_(ptr noundef @.str.11, ptr noundef %484, ptr noundef %485, ptr noundef %488, ptr noundef %489, ptr noundef %491)
  store double %492, ptr %62, align 8, !tbaa !11
  %493 = load double, ptr %62, align 8, !tbaa !11
  %494 = fcmp ogt double %493, 0.000000e+00
  br i1 %494, label %495, label %503

495:                                              ; preds = %476
  %496 = load double, ptr %62, align 8, !tbaa !11
  %497 = load double, ptr %64, align 8, !tbaa !11
  %498 = fcmp olt double %496, %497
  br i1 %498, label %499, label %503

499:                                              ; preds = %495
  store i64 1, ptr %77, align 8, !tbaa !9
  %500 = load double, ptr %64, align 8, !tbaa !11
  %501 = load double, ptr %62, align 8, !tbaa !11
  %502 = fdiv double %500, %501
  store double %502, ptr %68, align 8, !tbaa !11
  br label %512

503:                                              ; preds = %495, %476
  %504 = load double, ptr %62, align 8, !tbaa !11
  %505 = load double, ptr %65, align 8, !tbaa !11
  %506 = fcmp ogt double %504, %505
  br i1 %506, label %507, label %511

507:                                              ; preds = %503
  store i64 1, ptr %77, align 8, !tbaa !9
  %508 = load double, ptr %65, align 8, !tbaa !11
  %509 = load double, ptr %62, align 8, !tbaa !11
  %510 = fdiv double %508, %509
  store double %510, ptr %68, align 8, !tbaa !11
  br label %511

511:                                              ; preds = %507, %503
  br label %512

512:                                              ; preds = %511, %499
  %513 = load i64, ptr %77, align 8, !tbaa !9
  %514 = icmp eq i64 %513, 1
  br i1 %514, label %515, label %584

515:                                              ; preds = %512
  %516 = load i64, ptr %73, align 8, !tbaa !9
  %517 = icmp ne i64 %516, 0
  br i1 %517, label %518, label %543

518:                                              ; preds = %515
  %519 = load ptr, ptr %26, align 8, !tbaa !5
  %520 = load i64, ptr %519, align 8, !tbaa !9
  store i64 %520, ptr %48, align 8, !tbaa !9
  store i64 1, ptr %53, align 8, !tbaa !9
  br label %521

521:                                              ; preds = %539, %518
  %522 = load i64, ptr %53, align 8, !tbaa !9
  %523 = load i64, ptr %48, align 8, !tbaa !9
  %524 = icmp sle i64 %522, %523
  br i1 %524, label %525, label %542

525:                                              ; preds = %521
  %526 = load ptr, ptr %26, align 8, !tbaa !5
  %527 = load i64, ptr %526, align 8, !tbaa !9
  %528 = load i64, ptr %53, align 8, !tbaa !9
  %529 = sub nsw i64 %527, %528
  %530 = add nsw i64 %529, 1
  store i64 %530, ptr %49, align 8, !tbaa !9
  %531 = load ptr, ptr %27, align 8, !tbaa !5
  %532 = load i64, ptr %53, align 8, !tbaa !9
  %533 = load i64, ptr %53, align 8, !tbaa !9
  %534 = load i64, ptr %44, align 8, !tbaa !9
  %535 = mul nsw i64 %533, %534
  %536 = add nsw i64 %532, %535
  %537 = getelementptr inbounds double, ptr %531, i64 %536
  %538 = call i32 @f2c_dscal(ptr noundef %49, ptr noundef %68, ptr noundef %537, ptr noundef @c__1)
  br label %539

539:                                              ; preds = %525
  %540 = load i64, ptr %53, align 8, !tbaa !9
  %541 = add nsw i64 %540, 1
  store i64 %541, ptr %53, align 8, !tbaa !9
  br label %521, !llvm.loop !13

542:                                              ; preds = %521
  br label %562

543:                                              ; preds = %515
  %544 = load ptr, ptr %26, align 8, !tbaa !5
  %545 = load i64, ptr %544, align 8, !tbaa !9
  store i64 %545, ptr %48, align 8, !tbaa !9
  store i64 1, ptr %53, align 8, !tbaa !9
  br label %546

546:                                              ; preds = %558, %543
  %547 = load i64, ptr %53, align 8, !tbaa !9
  %548 = load i64, ptr %48, align 8, !tbaa !9
  %549 = icmp sle i64 %547, %548
  br i1 %549, label %550, label %561

550:                                              ; preds = %546
  %551 = load ptr, ptr %27, align 8, !tbaa !5
  %552 = load i64, ptr %53, align 8, !tbaa !9
  %553 = load i64, ptr %44, align 8, !tbaa !9
  %554 = mul nsw i64 %552, %553
  %555 = add nsw i64 %554, 1
  %556 = getelementptr inbounds double, ptr %551, i64 %555
  %557 = call i32 @f2c_dscal(ptr noundef %53, ptr noundef %68, ptr noundef %556, ptr noundef @c__1)
  br label %558

558:                                              ; preds = %550
  %559 = load i64, ptr %53, align 8, !tbaa !9
  %560 = add nsw i64 %559, 1
  store i64 %560, ptr %53, align 8, !tbaa !9
  br label %546, !llvm.loop !15

561:                                              ; preds = %546
  br label %562

562:                                              ; preds = %561, %542
  %563 = load ptr, ptr %33, align 8, !tbaa !5
  %564 = load double, ptr %563, align 8, !tbaa !11
  %565 = fcmp ogt double %564, 0.000000e+00
  br i1 %565, label %566, label %571

566:                                              ; preds = %562
  %567 = load ptr, ptr %33, align 8, !tbaa !5
  %568 = load double, ptr %567, align 8, !tbaa !11
  %569 = load double, ptr %68, align 8, !tbaa !11
  %570 = fmul double %568, %569
  store double %570, ptr %83, align 8, !tbaa !11
  br label %571

571:                                              ; preds = %566, %562
  %572 = load i64, ptr %81, align 8, !tbaa !9
  %573 = icmp ne i64 %572, 0
  br i1 %573, label %574, label %583

574:                                              ; preds = %571
  %575 = load ptr, ptr %29, align 8, !tbaa !5
  %576 = load double, ptr %575, align 8, !tbaa !11
  %577 = load double, ptr %68, align 8, !tbaa !11
  %578 = fmul double %576, %577
  store double %578, ptr %57, align 8, !tbaa !11
  %579 = load ptr, ptr %30, align 8, !tbaa !5
  %580 = load double, ptr %579, align 8, !tbaa !11
  %581 = load double, ptr %68, align 8, !tbaa !11
  %582 = fmul double %580, %581
  store double %582, ptr %58, align 8, !tbaa !11
  br label %583

583:                                              ; preds = %574, %571
  br label %584

584:                                              ; preds = %583, %512
  store i64 1, ptr %85, align 8, !tbaa !9
  %585 = load i64, ptr %85, align 8, !tbaa !9
  %586 = load ptr, ptr %26, align 8, !tbaa !5
  %587 = load i64, ptr %586, align 8, !tbaa !9
  %588 = add nsw i64 %585, %587
  store i64 %588, ptr %60, align 8, !tbaa !9
  %589 = load i64, ptr %60, align 8, !tbaa !9
  %590 = load ptr, ptr %26, align 8, !tbaa !5
  %591 = load i64, ptr %590, align 8, !tbaa !9
  %592 = add nsw i64 %589, %591
  store i64 %592, ptr %61, align 8, !tbaa !9
  %593 = load i64, ptr %61, align 8, !tbaa !9
  %594 = load ptr, ptr %26, align 8, !tbaa !5
  %595 = load i64, ptr %594, align 8, !tbaa !9
  %596 = add nsw i64 %593, %595
  store i64 %596, ptr %66, align 8, !tbaa !9
  %597 = load i64, ptr %66, align 8, !tbaa !9
  %598 = load ptr, ptr %26, align 8, !tbaa !5
  %599 = load i64, ptr %598, align 8, !tbaa !9
  %600 = add nsw i64 %597, %599
  store i64 %600, ptr %67, align 8, !tbaa !9
  %601 = load i64, ptr %67, align 8, !tbaa !9
  %602 = load ptr, ptr %26, align 8, !tbaa !5
  %603 = load i64, ptr %602, align 8, !tbaa !9
  %604 = add nsw i64 %601, %603
  store i64 %604, ptr %71, align 8, !tbaa !9
  %605 = load ptr, ptr %40, align 8, !tbaa !5
  %606 = load i64, ptr %605, align 8, !tbaa !9
  %607 = load i64, ptr %71, align 8, !tbaa !9
  %608 = sub nsw i64 %606, %607
  %609 = add nsw i64 %608, 1
  store i64 %609, ptr %92, align 8, !tbaa !9
  store i64 1, ptr %79, align 8, !tbaa !9
  %610 = load i64, ptr %79, align 8, !tbaa !9
  %611 = load ptr, ptr %26, align 8, !tbaa !5
  %612 = load i64, ptr %611, align 8, !tbaa !9
  %613 = add nsw i64 %610, %612
  store i64 %613, ptr %86, align 8, !tbaa !9
  %614 = load i64, ptr %86, align 8, !tbaa !9
  %615 = load ptr, ptr %26, align 8, !tbaa !5
  %616 = load i64, ptr %615, align 8, !tbaa !9
  %617 = add nsw i64 %614, %616
  store i64 %617, ptr %80, align 8, !tbaa !9
  %618 = load i64, ptr %86, align 8, !tbaa !9
  %619 = load ptr, ptr %26, align 8, !tbaa !5
  %620 = load i64, ptr %619, align 8, !tbaa !9
  %621 = add nsw i64 %618, %620
  store i64 %621, ptr %87, align 8, !tbaa !9
  %622 = load ptr, ptr %25, align 8, !tbaa !5
  %623 = load ptr, ptr %26, align 8, !tbaa !5
  %624 = load ptr, ptr %27, align 8, !tbaa !5
  %625 = load i64, ptr %45, align 8, !tbaa !9
  %626 = getelementptr inbounds double, ptr %624, i64 %625
  %627 = load ptr, ptr %28, align 8, !tbaa !5
  %628 = load ptr, ptr %39, align 8, !tbaa !5
  %629 = load i64, ptr %60, align 8, !tbaa !9
  %630 = getelementptr inbounds double, ptr %628, i64 %629
  %631 = load ptr, ptr %39, align 8, !tbaa !5
  %632 = load i64, ptr %61, align 8, !tbaa !9
  %633 = getelementptr inbounds double, ptr %631, i64 %632
  %634 = load ptr, ptr %39, align 8, !tbaa !5
  %635 = load i64, ptr %85, align 8, !tbaa !9
  %636 = getelementptr inbounds double, ptr %634, i64 %635
  %637 = load ptr, ptr %39, align 8, !tbaa !5
  %638 = load i64, ptr %71, align 8, !tbaa !9
  %639 = getelementptr inbounds double, ptr %637, i64 %638
  %640 = call i32 @dsytrd_(ptr noundef %622, ptr noundef %623, ptr noundef %626, ptr noundef %627, ptr noundef %630, ptr noundef %633, ptr noundef %636, ptr noundef %639, ptr noundef %92, ptr noundef %69)
  %641 = load i64, ptr %75, align 8, !tbaa !9
  %642 = icmp ne i64 %641, 0
  br i1 %642, label %656, label %643

643:                                              ; preds = %584
  %644 = load i64, ptr %76, align 8, !tbaa !9
  %645 = icmp ne i64 %644, 0
  br i1 %645, label %646, label %792

646:                                              ; preds = %643
  %647 = load ptr, ptr %31, align 8, !tbaa !5
  %648 = load i64, ptr %647, align 8, !tbaa !9
  %649 = icmp eq i64 %648, 1
  br i1 %649, label %650, label %792

650:                                              ; preds = %646
  %651 = load ptr, ptr %32, align 8, !tbaa !5
  %652 = load i64, ptr %651, align 8, !tbaa !9
  %653 = load ptr, ptr %26, align 8, !tbaa !5
  %654 = load i64, ptr %653, align 8, !tbaa !9
  %655 = icmp eq i64 %652, %654
  br i1 %655, label %656, label %792

656:                                              ; preds = %650, %584
  %657 = load i64, ptr %78, align 8, !tbaa !9
  %658 = icmp eq i64 %657, 1
  br i1 %658, label %659, label %792

659:                                              ; preds = %656
  %660 = load i64, ptr %74, align 8, !tbaa !9
  %661 = icmp ne i64 %660, 0
  br i1 %661, label %688, label %662

662:                                              ; preds = %659
  %663 = load ptr, ptr %26, align 8, !tbaa !5
  %664 = load ptr, ptr %39, align 8, !tbaa !5
  %665 = load i64, ptr %60, align 8, !tbaa !9
  %666 = getelementptr inbounds double, ptr %664, i64 %665
  %667 = load ptr, ptr %35, align 8, !tbaa !5
  %668 = getelementptr inbounds double, ptr %667, i64 1
  %669 = call i32 @f2c_dcopy(ptr noundef %663, ptr noundef %666, ptr noundef @c__1, ptr noundef %668, ptr noundef @c__1)
  %670 = load ptr, ptr %26, align 8, !tbaa !5
  %671 = load i64, ptr %670, align 8, !tbaa !9
  %672 = sub nsw i64 %671, 1
  store i64 %672, ptr %48, align 8, !tbaa !9
  %673 = load ptr, ptr %39, align 8, !tbaa !5
  %674 = load i64, ptr %61, align 8, !tbaa !9
  %675 = getelementptr inbounds double, ptr %673, i64 %674
  %676 = load ptr, ptr %39, align 8, !tbaa !5
  %677 = load i64, ptr %67, align 8, !tbaa !9
  %678 = getelementptr inbounds double, ptr %676, i64 %677
  %679 = call i32 @f2c_dcopy(ptr noundef %48, ptr noundef %675, ptr noundef @c__1, ptr noundef %678, ptr noundef @c__1)
  %680 = load ptr, ptr %26, align 8, !tbaa !5
  %681 = load ptr, ptr %35, align 8, !tbaa !5
  %682 = getelementptr inbounds double, ptr %681, i64 1
  %683 = load ptr, ptr %39, align 8, !tbaa !5
  %684 = load i64, ptr %67, align 8, !tbaa !9
  %685 = getelementptr inbounds double, ptr %683, i64 %684
  %686 = load ptr, ptr %43, align 8, !tbaa !5
  %687 = call i32 @dsterf_(ptr noundef %680, ptr noundef %682, ptr noundef %685, ptr noundef %686)
  br label %782

688:                                              ; preds = %659
  %689 = load ptr, ptr %26, align 8, !tbaa !5
  %690 = load i64, ptr %689, align 8, !tbaa !9
  %691 = sub nsw i64 %690, 1
  store i64 %691, ptr %48, align 8, !tbaa !9
  %692 = load ptr, ptr %39, align 8, !tbaa !5
  %693 = load i64, ptr %61, align 8, !tbaa !9
  %694 = getelementptr inbounds double, ptr %692, i64 %693
  %695 = load ptr, ptr %39, align 8, !tbaa !5
  %696 = load i64, ptr %67, align 8, !tbaa !9
  %697 = getelementptr inbounds double, ptr %695, i64 %696
  %698 = call i32 @f2c_dcopy(ptr noundef %48, ptr noundef %694, ptr noundef @c__1, ptr noundef %697, ptr noundef @c__1)
  %699 = load ptr, ptr %26, align 8, !tbaa !5
  %700 = load ptr, ptr %39, align 8, !tbaa !5
  %701 = load i64, ptr %60, align 8, !tbaa !9
  %702 = getelementptr inbounds double, ptr %700, i64 %701
  %703 = load ptr, ptr %39, align 8, !tbaa !5
  %704 = load i64, ptr %66, align 8, !tbaa !9
  %705 = getelementptr inbounds double, ptr %703, i64 %704
  %706 = call i32 @f2c_dcopy(ptr noundef %699, ptr noundef %702, ptr noundef @c__1, ptr noundef %705, ptr noundef @c__1)
  %707 = load ptr, ptr %33, align 8, !tbaa !5
  %708 = load double, ptr %707, align 8, !tbaa !11
  %709 = load ptr, ptr %26, align 8, !tbaa !5
  %710 = load i64, ptr %709, align 8, !tbaa !9
  %711 = sitofp i64 %710 to double
  %712 = fmul double %711, 2.000000e+00
  %713 = load double, ptr %56, align 8, !tbaa !11
  %714 = fmul double %712, %713
  %715 = fcmp ole double %708, %714
  br i1 %715, label %716, label %717

716:                                              ; preds = %688
  store i64 1, ptr %90, align 8, !tbaa !9
  br label %718

717:                                              ; preds = %688
  store i64 0, ptr %90, align 8, !tbaa !9
  br label %718

718:                                              ; preds = %717, %716
  %719 = load ptr, ptr %23, align 8, !tbaa !5
  %720 = load ptr, ptr %26, align 8, !tbaa !5
  %721 = load ptr, ptr %39, align 8, !tbaa !5
  %722 = load i64, ptr %66, align 8, !tbaa !9
  %723 = getelementptr inbounds double, ptr %721, i64 %722
  %724 = load ptr, ptr %39, align 8, !tbaa !5
  %725 = load i64, ptr %67, align 8, !tbaa !9
  %726 = getelementptr inbounds double, ptr %724, i64 %725
  %727 = load ptr, ptr %29, align 8, !tbaa !5
  %728 = load ptr, ptr %30, align 8, !tbaa !5
  %729 = load ptr, ptr %31, align 8, !tbaa !5
  %730 = load ptr, ptr %32, align 8, !tbaa !5
  %731 = load ptr, ptr %34, align 8, !tbaa !5
  %732 = load ptr, ptr %35, align 8, !tbaa !5
  %733 = getelementptr inbounds double, ptr %732, i64 1
  %734 = load ptr, ptr %36, align 8, !tbaa !5
  %735 = load i64, ptr %47, align 8, !tbaa !9
  %736 = getelementptr inbounds double, ptr %734, i64 %735
  %737 = load ptr, ptr %37, align 8, !tbaa !5
  %738 = load ptr, ptr %26, align 8, !tbaa !5
  %739 = load ptr, ptr %38, align 8, !tbaa !5
  %740 = getelementptr inbounds i64, ptr %739, i64 1
  %741 = load ptr, ptr %39, align 8, !tbaa !5
  %742 = load i64, ptr %71, align 8, !tbaa !9
  %743 = getelementptr inbounds double, ptr %741, i64 %742
  %744 = load ptr, ptr %40, align 8, !tbaa !5
  %745 = load ptr, ptr %41, align 8, !tbaa !5
  %746 = getelementptr inbounds i64, ptr %745, i64 1
  %747 = load ptr, ptr %42, align 8, !tbaa !5
  %748 = load ptr, ptr %43, align 8, !tbaa !5
  %749 = call i32 @dstemr_(ptr noundef %719, ptr noundef @.str.4, ptr noundef %720, ptr noundef %723, ptr noundef %726, ptr noundef %727, ptr noundef %728, ptr noundef %729, ptr noundef %730, ptr noundef %731, ptr noundef %733, ptr noundef %736, ptr noundef %737, ptr noundef %738, ptr noundef %740, ptr noundef %90, ptr noundef %743, ptr noundef %744, ptr noundef %746, ptr noundef %747, ptr noundef %748)
  %750 = load i64, ptr %74, align 8, !tbaa !9
  %751 = icmp ne i64 %750, 0
  br i1 %751, label %752, label %781

752:                                              ; preds = %718
  %753 = load ptr, ptr %43, align 8, !tbaa !5
  %754 = load i64, ptr %753, align 8, !tbaa !9
  %755 = icmp eq i64 %754, 0
  br i1 %755, label %756, label %781

756:                                              ; preds = %752
  %757 = load i64, ptr %61, align 8, !tbaa !9
  store i64 %757, ptr %88, align 8, !tbaa !9
  %758 = load ptr, ptr %40, align 8, !tbaa !5
  %759 = load i64, ptr %758, align 8, !tbaa !9
  %760 = load i64, ptr %88, align 8, !tbaa !9
  %761 = sub nsw i64 %759, %760
  %762 = add nsw i64 %761, 1
  store i64 %762, ptr %91, align 8, !tbaa !9
  %763 = load ptr, ptr %25, align 8, !tbaa !5
  %764 = load ptr, ptr %26, align 8, !tbaa !5
  %765 = load ptr, ptr %34, align 8, !tbaa !5
  %766 = load ptr, ptr %27, align 8, !tbaa !5
  %767 = load i64, ptr %45, align 8, !tbaa !9
  %768 = getelementptr inbounds double, ptr %766, i64 %767
  %769 = load ptr, ptr %28, align 8, !tbaa !5
  %770 = load ptr, ptr %39, align 8, !tbaa !5
  %771 = load i64, ptr %85, align 8, !tbaa !9
  %772 = getelementptr inbounds double, ptr %770, i64 %771
  %773 = load ptr, ptr %36, align 8, !tbaa !5
  %774 = load i64, ptr %47, align 8, !tbaa !9
  %775 = getelementptr inbounds double, ptr %773, i64 %774
  %776 = load ptr, ptr %37, align 8, !tbaa !5
  %777 = load ptr, ptr %39, align 8, !tbaa !5
  %778 = load i64, ptr %88, align 8, !tbaa !9
  %779 = getelementptr inbounds double, ptr %777, i64 %778
  %780 = call i32 @dormtr_(ptr noundef @.str.2, ptr noundef %763, ptr noundef @.str.1, ptr noundef %764, ptr noundef %765, ptr noundef %768, ptr noundef %769, ptr noundef %772, ptr noundef %775, ptr noundef %776, ptr noundef %779, ptr noundef %91, ptr noundef %69)
  br label %781

781:                                              ; preds = %756, %752, %718
  br label %782

782:                                              ; preds = %781, %662
  %783 = load ptr, ptr %43, align 8, !tbaa !5
  %784 = load i64, ptr %783, align 8, !tbaa !9
  %785 = icmp eq i64 %784, 0
  br i1 %785, label %786, label %790

786:                                              ; preds = %782
  %787 = load ptr, ptr %26, align 8, !tbaa !5
  %788 = load i64, ptr %787, align 8, !tbaa !9
  %789 = load ptr, ptr %34, align 8, !tbaa !5
  store i64 %788, ptr %789, align 8, !tbaa !9
  br label %887

790:                                              ; preds = %782
  %791 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 0, ptr %791, align 8, !tbaa !9
  br label %792

792:                                              ; preds = %790, %656, %650, %646, %643
  %793 = load i64, ptr %74, align 8, !tbaa !9
  %794 = icmp ne i64 %793, 0
  br i1 %794, label %795, label %797

795:                                              ; preds = %792
  %796 = getelementptr inbounds [1 x i8], ptr %70, i64 0, i64 0
  store i8 66, ptr %796, align 1, !tbaa !16
  br label %799

797:                                              ; preds = %792
  %798 = getelementptr inbounds [1 x i8], ptr %70, i64 0, i64 0
  store i8 69, ptr %798, align 1, !tbaa !16
  br label %799

799:                                              ; preds = %797, %795
  %800 = load ptr, ptr %24, align 8, !tbaa !5
  %801 = getelementptr inbounds [1 x i8], ptr %70, i64 0, i64 0
  %802 = load ptr, ptr %26, align 8, !tbaa !5
  %803 = load ptr, ptr %31, align 8, !tbaa !5
  %804 = load ptr, ptr %32, align 8, !tbaa !5
  %805 = load ptr, ptr %39, align 8, !tbaa !5
  %806 = load i64, ptr %60, align 8, !tbaa !9
  %807 = getelementptr inbounds double, ptr %805, i64 %806
  %808 = load ptr, ptr %39, align 8, !tbaa !5
  %809 = load i64, ptr %61, align 8, !tbaa !9
  %810 = getelementptr inbounds double, ptr %808, i64 %809
  %811 = load ptr, ptr %34, align 8, !tbaa !5
  %812 = load ptr, ptr %35, align 8, !tbaa !5
  %813 = getelementptr inbounds double, ptr %812, i64 1
  %814 = load ptr, ptr %41, align 8, !tbaa !5
  %815 = load i64, ptr %79, align 8, !tbaa !9
  %816 = getelementptr inbounds i64, ptr %814, i64 %815
  %817 = load ptr, ptr %41, align 8, !tbaa !5
  %818 = load i64, ptr %86, align 8, !tbaa !9
  %819 = getelementptr inbounds i64, ptr %817, i64 %818
  %820 = load ptr, ptr %39, align 8, !tbaa !5
  %821 = load i64, ptr %71, align 8, !tbaa !9
  %822 = getelementptr inbounds double, ptr %820, i64 %821
  %823 = load ptr, ptr %41, align 8, !tbaa !5
  %824 = load i64, ptr %87, align 8, !tbaa !9
  %825 = getelementptr inbounds i64, ptr %823, i64 %824
  %826 = load ptr, ptr %43, align 8, !tbaa !5
  %827 = call i32 @dstebz_(ptr noundef %800, ptr noundef %801, ptr noundef %802, ptr noundef %57, ptr noundef %58, ptr noundef %803, ptr noundef %804, ptr noundef %83, ptr noundef %807, ptr noundef %810, ptr noundef %811, ptr noundef %93, ptr noundef %813, ptr noundef %816, ptr noundef %819, ptr noundef %822, ptr noundef %825, ptr noundef %826)
  %828 = load i64, ptr %74, align 8, !tbaa !9
  %829 = icmp ne i64 %828, 0
  br i1 %829, label %830, label %886

830:                                              ; preds = %799
  %831 = load ptr, ptr %26, align 8, !tbaa !5
  %832 = load ptr, ptr %39, align 8, !tbaa !5
  %833 = load i64, ptr %60, align 8, !tbaa !9
  %834 = getelementptr inbounds double, ptr %832, i64 %833
  %835 = load ptr, ptr %39, align 8, !tbaa !5
  %836 = load i64, ptr %61, align 8, !tbaa !9
  %837 = getelementptr inbounds double, ptr %835, i64 %836
  %838 = load ptr, ptr %34, align 8, !tbaa !5
  %839 = load ptr, ptr %35, align 8, !tbaa !5
  %840 = getelementptr inbounds double, ptr %839, i64 1
  %841 = load ptr, ptr %41, align 8, !tbaa !5
  %842 = load i64, ptr %79, align 8, !tbaa !9
  %843 = getelementptr inbounds i64, ptr %841, i64 %842
  %844 = load ptr, ptr %41, align 8, !tbaa !5
  %845 = load i64, ptr %86, align 8, !tbaa !9
  %846 = getelementptr inbounds i64, ptr %844, i64 %845
  %847 = load ptr, ptr %36, align 8, !tbaa !5
  %848 = load i64, ptr %47, align 8, !tbaa !9
  %849 = getelementptr inbounds double, ptr %847, i64 %848
  %850 = load ptr, ptr %37, align 8, !tbaa !5
  %851 = load ptr, ptr %39, align 8, !tbaa !5
  %852 = load i64, ptr %71, align 8, !tbaa !9
  %853 = getelementptr inbounds double, ptr %851, i64 %852
  %854 = load ptr, ptr %41, align 8, !tbaa !5
  %855 = load i64, ptr %87, align 8, !tbaa !9
  %856 = getelementptr inbounds i64, ptr %854, i64 %855
  %857 = load ptr, ptr %41, align 8, !tbaa !5
  %858 = load i64, ptr %80, align 8, !tbaa !9
  %859 = getelementptr inbounds i64, ptr %857, i64 %858
  %860 = load ptr, ptr %43, align 8, !tbaa !5
  %861 = call i32 @dstein_(ptr noundef %831, ptr noundef %834, ptr noundef %837, ptr noundef %838, ptr noundef %840, ptr noundef %843, ptr noundef %846, ptr noundef %849, ptr noundef %850, ptr noundef %853, ptr noundef %856, ptr noundef %859, ptr noundef %860)
  %862 = load i64, ptr %61, align 8, !tbaa !9
  store i64 %862, ptr %88, align 8, !tbaa !9
  %863 = load ptr, ptr %40, align 8, !tbaa !5
  %864 = load i64, ptr %863, align 8, !tbaa !9
  %865 = load i64, ptr %88, align 8, !tbaa !9
  %866 = sub nsw i64 %864, %865
  %867 = add nsw i64 %866, 1
  store i64 %867, ptr %91, align 8, !tbaa !9
  %868 = load ptr, ptr %25, align 8, !tbaa !5
  %869 = load ptr, ptr %26, align 8, !tbaa !5
  %870 = load ptr, ptr %34, align 8, !tbaa !5
  %871 = load ptr, ptr %27, align 8, !tbaa !5
  %872 = load i64, ptr %45, align 8, !tbaa !9
  %873 = getelementptr inbounds double, ptr %871, i64 %872
  %874 = load ptr, ptr %28, align 8, !tbaa !5
  %875 = load ptr, ptr %39, align 8, !tbaa !5
  %876 = load i64, ptr %85, align 8, !tbaa !9
  %877 = getelementptr inbounds double, ptr %875, i64 %876
  %878 = load ptr, ptr %36, align 8, !tbaa !5
  %879 = load i64, ptr %47, align 8, !tbaa !9
  %880 = getelementptr inbounds double, ptr %878, i64 %879
  %881 = load ptr, ptr %37, align 8, !tbaa !5
  %882 = load ptr, ptr %39, align 8, !tbaa !5
  %883 = load i64, ptr %88, align 8, !tbaa !9
  %884 = getelementptr inbounds double, ptr %882, i64 %883
  %885 = call i32 @dormtr_(ptr noundef @.str.2, ptr noundef %868, ptr noundef @.str.1, ptr noundef %869, ptr noundef %870, ptr noundef %873, ptr noundef %874, ptr noundef %877, ptr noundef %880, ptr noundef %881, ptr noundef %884, ptr noundef %91, ptr noundef %69)
  br label %886

886:                                              ; preds = %830, %799
  br label %887

887:                                              ; preds = %886, %786
  %888 = load i64, ptr %77, align 8, !tbaa !9
  %889 = icmp eq i64 %888, 1
  br i1 %889, label %890, label %907

890:                                              ; preds = %887
  %891 = load ptr, ptr %43, align 8, !tbaa !5
  %892 = load i64, ptr %891, align 8, !tbaa !9
  %893 = icmp eq i64 %892, 0
  br i1 %893, label %894, label %897

894:                                              ; preds = %890
  %895 = load ptr, ptr %34, align 8, !tbaa !5
  %896 = load i64, ptr %895, align 8, !tbaa !9
  store i64 %896, ptr %63, align 8, !tbaa !9
  br label %901

897:                                              ; preds = %890
  %898 = load ptr, ptr %43, align 8, !tbaa !5
  %899 = load i64, ptr %898, align 8, !tbaa !9
  %900 = sub nsw i64 %899, 1
  store i64 %900, ptr %63, align 8, !tbaa !9
  br label %901

901:                                              ; preds = %897, %894
  %902 = load double, ptr %68, align 8, !tbaa !11
  %903 = fdiv double 1.000000e+00, %902
  store double %903, ptr %50, align 8, !tbaa !11
  %904 = load ptr, ptr %35, align 8, !tbaa !5
  %905 = getelementptr inbounds double, ptr %904, i64 1
  %906 = call i32 @f2c_dscal(ptr noundef %63, ptr noundef %50, ptr noundef %905, ptr noundef @c__1)
  br label %907

907:                                              ; preds = %901, %887
  %908 = load i64, ptr %74, align 8, !tbaa !9
  %909 = icmp ne i64 %908, 0
  br i1 %909, label %910, label %982

910:                                              ; preds = %907
  %911 = load ptr, ptr %34, align 8, !tbaa !5
  %912 = load i64, ptr %911, align 8, !tbaa !9
  %913 = sub nsw i64 %912, 1
  store i64 %913, ptr %48, align 8, !tbaa !9
  store i64 1, ptr %53, align 8, !tbaa !9
  br label %914

914:                                              ; preds = %978, %910
  %915 = load i64, ptr %53, align 8, !tbaa !9
  %916 = load i64, ptr %48, align 8, !tbaa !9
  %917 = icmp sle i64 %915, %916
  br i1 %917, label %918, label %981

918:                                              ; preds = %914
  store i64 0, ptr %52, align 8, !tbaa !9
  %919 = load ptr, ptr %35, align 8, !tbaa !5
  %920 = load i64, ptr %53, align 8, !tbaa !9
  %921 = getelementptr inbounds double, ptr %919, i64 %920
  %922 = load double, ptr %921, align 8, !tbaa !11
  store double %922, ptr %59, align 8, !tbaa !11
  %923 = load ptr, ptr %34, align 8, !tbaa !5
  %924 = load i64, ptr %923, align 8, !tbaa !9
  store i64 %924, ptr %49, align 8, !tbaa !9
  %925 = load i64, ptr %53, align 8, !tbaa !9
  %926 = add nsw i64 %925, 1
  store i64 %926, ptr %55, align 8, !tbaa !9
  br label %927

927:                                              ; preds = %945, %918
  %928 = load i64, ptr %55, align 8, !tbaa !9
  %929 = load i64, ptr %49, align 8, !tbaa !9
  %930 = icmp sle i64 %928, %929
  br i1 %930, label %931, label %948

931:                                              ; preds = %927
  %932 = load ptr, ptr %35, align 8, !tbaa !5
  %933 = load i64, ptr %55, align 8, !tbaa !9
  %934 = getelementptr inbounds double, ptr %932, i64 %933
  %935 = load double, ptr %934, align 8, !tbaa !11
  %936 = load double, ptr %59, align 8, !tbaa !11
  %937 = fcmp olt double %935, %936
  br i1 %937, label %938, label %944

938:                                              ; preds = %931
  %939 = load i64, ptr %55, align 8, !tbaa !9
  store i64 %939, ptr %52, align 8, !tbaa !9
  %940 = load ptr, ptr %35, align 8, !tbaa !5
  %941 = load i64, ptr %55, align 8, !tbaa !9
  %942 = getelementptr inbounds double, ptr %940, i64 %941
  %943 = load double, ptr %942, align 8, !tbaa !11
  store double %943, ptr %59, align 8, !tbaa !11
  br label %944

944:                                              ; preds = %938, %931
  br label %945

945:                                              ; preds = %944
  %946 = load i64, ptr %55, align 8, !tbaa !9
  %947 = add nsw i64 %946, 1
  store i64 %947, ptr %55, align 8, !tbaa !9
  br label %927, !llvm.loop !17

948:                                              ; preds = %927
  %949 = load i64, ptr %52, align 8, !tbaa !9
  %950 = icmp ne i64 %949, 0
  br i1 %950, label %951, label %977

951:                                              ; preds = %948
  %952 = load ptr, ptr %35, align 8, !tbaa !5
  %953 = load i64, ptr %53, align 8, !tbaa !9
  %954 = getelementptr inbounds double, ptr %952, i64 %953
  %955 = load double, ptr %954, align 8, !tbaa !11
  %956 = load ptr, ptr %35, align 8, !tbaa !5
  %957 = load i64, ptr %52, align 8, !tbaa !9
  %958 = getelementptr inbounds double, ptr %956, i64 %957
  store double %955, ptr %958, align 8, !tbaa !11
  %959 = load double, ptr %59, align 8, !tbaa !11
  %960 = load ptr, ptr %35, align 8, !tbaa !5
  %961 = load i64, ptr %53, align 8, !tbaa !9
  %962 = getelementptr inbounds double, ptr %960, i64 %961
  store double %959, ptr %962, align 8, !tbaa !11
  %963 = load ptr, ptr %26, align 8, !tbaa !5
  %964 = load ptr, ptr %36, align 8, !tbaa !5
  %965 = load i64, ptr %52, align 8, !tbaa !9
  %966 = load i64, ptr %46, align 8, !tbaa !9
  %967 = mul nsw i64 %965, %966
  %968 = add nsw i64 %967, 1
  %969 = getelementptr inbounds double, ptr %964, i64 %968
  %970 = load ptr, ptr %36, align 8, !tbaa !5
  %971 = load i64, ptr %53, align 8, !tbaa !9
  %972 = load i64, ptr %46, align 8, !tbaa !9
  %973 = mul nsw i64 %971, %972
  %974 = add nsw i64 %973, 1
  %975 = getelementptr inbounds double, ptr %970, i64 %974
  %976 = call i32 @f2c_dswap(ptr noundef %963, ptr noundef %969, ptr noundef @c__1, ptr noundef %975, ptr noundef @c__1)
  br label %977

977:                                              ; preds = %951, %948
  br label %978

978:                                              ; preds = %977
  %979 = load i64, ptr %53, align 8, !tbaa !9
  %980 = add nsw i64 %979, 1
  store i64 %980, ptr %53, align 8, !tbaa !9
  br label %914, !llvm.loop !18

981:                                              ; preds = %914
  br label %982

982:                                              ; preds = %981, %907
  %983 = load i64, ptr %95, align 8, !tbaa !9
  %984 = sitofp i64 %983 to double
  %985 = load ptr, ptr %39, align 8, !tbaa !5
  %986 = getelementptr inbounds double, ptr %985, i64 1
  store double %984, ptr %986, align 8, !tbaa !11
  %987 = load i64, ptr %89, align 8, !tbaa !9
  %988 = load ptr, ptr %41, align 8, !tbaa !5
  %989 = getelementptr inbounds i64, ptr %988, i64 1
  store i64 %987, ptr %989, align 8, !tbaa !9
  store i32 0, ptr %22, align 4
  store i32 1, ptr %97, align 4
  br label %990

990:                                              ; preds = %982, %452, %392, %385, %377
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #4
  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 1, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 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
  %991 = load i32, ptr %22, align 4
  ret i32 %991
}

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

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

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

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

declare double @dlamch_(ptr noundef) #2

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

declare double @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 @dstemr_(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, 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 @dstebz_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = !{!7, !7, i64 0}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !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"

@c__10 = external hidden global i64, align 8
@.str = external hidden unnamed_addr constant [7 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8
@c__2 = external hidden global i64, align 8
@c__3 = external hidden global i64, align 8
@c__4 = external hidden global i64, align 8
@.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
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [7 x i8], align 1
@c_n1 = external hidden global i64, align 8
@.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 @dsyevr_(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 nocapture noundef readonly %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, ptr noundef %20) local_unnamed_addr #0 {
  %22 = alloca i64, align 8
  %23 = alloca i64, align 8
  %24 = alloca double, align 8
  %25 = alloca i64, align 8
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  %28 = alloca i64, align 8
  %29 = alloca double, align 8
  %30 = alloca i64, align 8
  %31 = alloca [1 x i8], align 1
  %32 = alloca double, align 8
  %33 = alloca i64, align 8
  %34 = alloca i64, align 8
  %35 = alloca i64, align 8
  %36 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %31) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #5
  %37 = load i64, ptr %5, align 8, !tbaa !5
  %38 = xor i64 %37, -1
  %39 = getelementptr inbounds double, ptr %4, i64 %38
  %40 = getelementptr inbounds i8, ptr %12, i64 -8
  %41 = load i64, ptr %14, align 8, !tbaa !5
  %42 = xor i64 %41, -1
  %43 = getelementptr inbounds double, ptr %13, i64 %42
  %44 = getelementptr inbounds i8, ptr %16, i64 -8
  %45 = tail call i64 @ilaenv_(ptr noundef nonnull @c__10, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull @c__1, ptr noundef nonnull @c__2, ptr noundef nonnull @c__3, ptr noundef nonnull @c__4) #5
  %46 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.2) #5
  %47 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.3) #5
  %48 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #5
  %49 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #5
  %50 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.5) #5
  %51 = load i64, ptr %17, align 8, !tbaa !5
  %52 = icmp eq i64 %51, -1
  br i1 %52, label %56, label %53

53:                                               ; preds = %21
  %54 = load i64, ptr %19, align 8, !tbaa !5
  %55 = icmp eq i64 %54, -1
  br label %56

56:                                               ; preds = %53, %21
  %57 = phi i1 [ true, %21 ], [ %55, %53 ]
  %58 = load i64, ptr %3, align 8, !tbaa !5
  %59 = mul nsw i64 %58, 26
  %60 = icmp slt i64 %58, 1
  %61 = select i1 %60, i64 1, i64 %59
  %62 = mul nsw i64 %58, 10
  %63 = select i1 %60, i64 1, i64 %62
  store i64 0, ptr %20, align 8, !tbaa !5
  %.not = icmp ne i64 %47, 0
  br i1 %.not, label %66, label %64

64:                                               ; preds = %56
  %65 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #5
  %.not388 = icmp eq i64 %65, 0
  br i1 %.not388, label %.thread420.sink.split, label %66

66:                                               ; preds = %64, %56
  %67 = icmp ne i64 %48, 0
  %68 = icmp ne i64 %49, 0
  %or.cond = select i1 %67, i1 true, i1 %68
  %69 = icmp ne i64 %50, 0
  %or.cond3 = select i1 %or.cond, i1 true, i1 %69
  br i1 %or.cond3, label %70, label %.thread420.sink.split

70:                                               ; preds = %66
  %.not389 = icmp eq i64 %46, 0
  br i1 %.not389, label %71, label %73

71:                                               ; preds = %70
  %72 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.6) #5
  %.not390 = icmp eq i64 %72, 0
  br i1 %.not390, label %.thread420.sink.split, label %73

73:                                               ; preds = %71, %70
  %74 = load i64, ptr %3, align 8, !tbaa !5
  %75 = icmp slt i64 %74, 0
  br i1 %75, label %.thread420.sink.split, label %76

76:                                               ; preds = %73
  %77 = load i64, ptr %5, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %74, i64 1)
  %78 = icmp slt i64 %77, %spec.select
  br i1 %78, label %.thread420.sink.split, label %79

79:                                               ; preds = %76
  br i1 %68, label %80, label %85

80:                                               ; preds = %79
  %.not435 = icmp eq i64 %74, 0
  br i1 %.not435, label %94, label %81

81:                                               ; preds = %80
  %82 = load double, ptr %7, align 8, !tbaa !9
  %83 = load double, ptr %6, align 8, !tbaa !9
  %84 = fcmp ugt double %82, %83
  br i1 %84, label %94, label %.thread420.sink.split

85:                                               ; preds = %79
  br i1 %69, label %86, label %94

86:                                               ; preds = %85
  %87 = load i64, ptr %8, align 8, !tbaa !5
  %88 = icmp slt i64 %87, 1
  %89 = icmp ugt i64 %87, %spec.select
  %or.cond433 = or i1 %88, %89
  br i1 %or.cond433, label %.thread420.sink.split, label %90

90:                                               ; preds = %86
  %91 = load i64, ptr %9, align 8, !tbaa !5
  %. = tail call i64 @llvm.umin.i64(i64 %74, i64 %87)
  %92 = icmp slt i64 %91, %.
  %93 = icmp ugt i64 %91, %74
  %or.cond434 = or i1 %92, %93
  br i1 %or.cond434, label %.thread420.sink.split, label %94

94:                                               ; preds = %90, %81, %80, %85
  %.pr = load i64, ptr %20, align 8, !tbaa !5
  %95 = icmp eq i64 %.pr, 0
  br i1 %95, label %96, label %.thread420

96:                                               ; preds = %94
  %97 = load i64, ptr %14, align 8, !tbaa !5
  %98 = icmp slt i64 %97, 1
  %99 = icmp ult i64 %97, %74
  %or.cond467 = and i1 %.not, %99
  %or.cond470 = or i1 %98, %or.cond467
  br i1 %or.cond470, label %.thread420.sink.split, label %100

100:                                              ; preds = %96
  %101 = load i64, ptr %17, align 8, !tbaa !5
  %102 = icmp sge i64 %101, %61
  %or.cond5 = select i1 %102, i1 true, i1 %57
  br i1 %or.cond5, label %103, label %.thread420.sink.split

103:                                              ; preds = %100
  %104 = load i64, ptr %19, align 8, !tbaa !5
  %105 = icmp sge i64 %104, %63
  %or.cond7 = select i1 %105, i1 true, i1 %57
  br i1 %or.cond7, label %.thread417, label %.thread420.sink.split

.thread417:                                       ; preds = %103
  %106 = 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) #5
  %107 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.8, ptr noundef %2, ptr noundef nonnull %3, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1) #5
  store i64 %107, ptr %23, align 8, !tbaa !5
  %108 = tail call i64 @llvm.smax.i64(i64 %106, i64 %107)
  %109 = add nsw i64 %108, 1
  %110 = load i64, ptr %3, align 8, !tbaa !5
  %111 = mul nsw i64 %109, %110
  store i64 %111, ptr %22, align 8, !tbaa !5
  %112 = tail call i64 @llvm.smax.i64(i64 %111, i64 %61)
  %113 = sitofp i64 %112 to double
  store double %113, ptr %16, align 8, !tbaa !9
  store i64 %63, ptr %18, align 8, !tbaa !5
  %.pr419.pr = load i64, ptr %20, align 8, !tbaa !5
  %.not394 = icmp eq i64 %.pr419.pr, 0
  br i1 %.not394, label %117, label %.thread420

.thread420.sink.split:                            ; preds = %103, %100, %96, %90, %86, %81, %76, %73, %71, %66, %64
  %.sink = phi i64 [ -1, %64 ], [ -2, %66 ], [ -3, %71 ], [ -4, %73 ], [ -6, %76 ], [ -8, %81 ], [ -9, %86 ], [ -10, %90 ], [ -15, %96 ], [ -18, %100 ], [ -20, %103 ]
  store i64 %.sink, ptr %20, align 8, !tbaa !5
  br label %.thread420

.thread420:                                       ; preds = %.thread420.sink.split, %94, %.thread417
  %114 = phi i64 [ %.pr419.pr, %.thread417 ], [ %.pr, %94 ], [ %.sink, %.thread420.sink.split ]
  %115 = sub nsw i64 0, %114
  store i64 %115, ptr %22, align 8, !tbaa !5
  %116 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %22) #5
  br label %289

117:                                              ; preds = %.thread417
  br i1 %57, label %289, label %118

118:                                              ; preds = %117
  store i64 0, ptr %11, align 8, !tbaa !5
  %119 = load i64, ptr %3, align 8, !tbaa !5
  switch i64 %119, label %134 [
    i64 0, label %120
    i64 1, label %121
  ]

120:                                              ; preds = %118
  store double 1.000000e+00, ptr %16, align 8, !tbaa !9
  br label %289

121:                                              ; preds = %118
  store double 7.000000e+00, ptr %16, align 8, !tbaa !9
  %or.cond9 = select i1 %67, i1 true, i1 %69
  br i1 %or.cond9, label %122, label %124

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

124:                                              ; preds = %121
  %125 = load double, ptr %6, align 8, !tbaa !9
  %126 = load double, ptr %4, align 8, !tbaa !9
  %127 = fcmp olt double %125, %126
  br i1 %127, label %128, label %132

128:                                              ; preds = %124
  %129 = load double, ptr %7, align 8, !tbaa !9
  %130 = fcmp ult double %129, %126
  br i1 %130, label %132, label %131

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

.sink.split:                                      ; preds = %122, %131
  %.sink468 = phi double [ %126, %131 ], [ %123, %122 ]
  store double %.sink468, ptr %12, align 8, !tbaa !9
  br label %132

132:                                              ; preds = %.sink.split, %124, %128
  br i1 %.not, label %133, label %289

133:                                              ; preds = %132
  store double 1.000000e+00, ptr %13, align 8, !tbaa !9
  br label %289

134:                                              ; preds = %118
  %135 = tail call double @dlamch_(ptr noundef nonnull @.str.9) #5
  %136 = tail call double @dlamch_(ptr noundef nonnull @.str.10) #5
  %137 = fdiv double %135, %136
  %138 = fdiv double 1.000000e+00, %137
  %139 = tail call double @sqrt(double noundef %137) #5
  %140 = tail call double @sqrt(double noundef %138) #5
  store double %140, ptr %24, align 8, !tbaa !9
  %141 = tail call double @sqrt(double noundef %135) #5
  %142 = tail call double @sqrt(double noundef %141) #5
  %143 = load double, ptr %10, align 8, !tbaa !9
  store double %143, ptr %32, align 8, !tbaa !9
  %144 = load double, ptr %6, align 8, !tbaa !9
  store double %144, ptr %26, align 8, !tbaa !9
  %145 = load double, ptr %7, align 8, !tbaa !9
  store double %145, ptr %27, align 8, !tbaa !9
  %146 = 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 %16) #5
  %147 = fcmp ogt double %146, 0.000000e+00
  %148 = fcmp olt double %146, %139
  %or.cond411 = select i1 %147, i1 %148, i1 false
  br i1 %or.cond411, label %154, label %149

149:                                              ; preds = %134
  %150 = fdiv double 1.000000e+00, %142
  %151 = fcmp ole double %140, %150
  %152 = select i1 %151, double %140, double %150
  %153 = fcmp ogt double %146, %152
  br i1 %153, label %154, label %185

154:                                              ; preds = %149, %134
  %.pn = phi double [ %139, %134 ], [ %152, %149 ]
  %storemerge436 = fdiv double %.pn, %146
  store double %storemerge436, ptr %29, align 8, !tbaa !9
  %155 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %155, ptr %22, align 8, !tbaa !5
  br i1 %.not389, label %167, label %156

156:                                              ; preds = %154
  store i64 1, ptr %25, align 8, !tbaa !5
  %.not398440 = icmp slt i64 %155, 1
  br i1 %.not398440, label %.loopexit438, label %.lr.ph

.lr.ph:                                           ; preds = %156
  %157 = add i64 %37, 1
  br label %158

158:                                              ; preds = %.lr.ph, %158
  %storemerge397441 = phi i64 [ 1, %.lr.ph ], [ %165, %158 ]
  %159 = load i64, ptr %3, align 8, !tbaa !5
  %reass.sub = sub i64 %159, %storemerge397441
  %160 = add i64 %reass.sub, 1
  store i64 %160, ptr %23, align 8, !tbaa !5
  %161 = mul i64 %storemerge397441, %157
  %162 = getelementptr inbounds double, ptr %39, i64 %161
  %163 = call i32 @f2c_dscal(ptr noundef nonnull %23, ptr noundef nonnull %29, ptr noundef %162, ptr noundef nonnull @c__1) #5
  %164 = load i64, ptr %25, align 8, !tbaa !5
  %165 = add nsw i64 %164, 1
  store i64 %165, ptr %25, align 8, !tbaa !5
  %166 = load i64, ptr %22, align 8, !tbaa !5
  %.not398.not = icmp slt i64 %164, %166
  br i1 %.not398.not, label %158, label %.loopexit438, !llvm.loop !11

167:                                              ; preds = %154
  %invariant.gep = getelementptr i8, ptr %39, i64 8
  store i64 1, ptr %25, align 8, !tbaa !5
  %.not396442 = icmp slt i64 %155, 1
  br i1 %.not396442, label %.loopexit438, label %.lr.ph444

.lr.ph444:                                        ; preds = %167, %.lr.ph444
  %storemerge443 = phi i64 [ %171, %.lr.ph444 ], [ 1, %167 ]
  %168 = mul nsw i64 %storemerge443, %37
  %gep = getelementptr double, ptr %invariant.gep, i64 %168
  %169 = call i32 @f2c_dscal(ptr noundef nonnull %25, ptr noundef nonnull %29, ptr noundef %gep, ptr noundef nonnull @c__1) #5
  %170 = load i64, ptr %25, align 8, !tbaa !5
  %171 = add nsw i64 %170, 1
  store i64 %171, ptr %25, align 8, !tbaa !5
  %172 = load i64, ptr %22, align 8, !tbaa !5
  %.not396.not = icmp slt i64 %170, %172
  br i1 %.not396.not, label %.lr.ph444, label %.loopexit438, !llvm.loop !13

.loopexit438:                                     ; preds = %158, %.lr.ph444, %156, %167
  %173 = load double, ptr %10, align 8, !tbaa !9
  %174 = fcmp ogt double %173, 0.000000e+00
  br i1 %174, label %175, label %178

175:                                              ; preds = %.loopexit438
  %176 = load double, ptr %29, align 8, !tbaa !9
  %177 = fmul double %173, %176
  store double %177, ptr %32, align 8, !tbaa !9
  br label %178

178:                                              ; preds = %175, %.loopexit438
  %.not399 = icmp eq i64 %49, 0
  br i1 %.not399, label %185, label %179

179:                                              ; preds = %178
  %180 = load double, ptr %6, align 8, !tbaa !9
  %181 = load double, ptr %29, align 8, !tbaa !9
  %182 = fmul double %180, %181
  store double %182, ptr %26, align 8, !tbaa !9
  %183 = load double, ptr %7, align 8, !tbaa !9
  %184 = fmul double %181, %183
  store double %184, ptr %27, align 8, !tbaa !9
  br label %185

185:                                              ; preds = %149, %178, %179
  %186 = phi i1 [ true, %178 ], [ true, %179 ], [ false, %149 ]
  %187 = load i64, ptr %3, align 8, !tbaa !5
  %reass.add = shl i64 %187, 1
  %188 = or disjoint i64 %reass.add, 1
  %189 = add nsw i64 %188, %187
  %190 = add nsw i64 %189, %187
  %191 = add nsw i64 %190, %187
  %192 = load i64, ptr %17, align 8, !tbaa !5
  %193 = add i64 %192, 1
  %194 = sub i64 %193, %191
  store i64 %194, ptr %35, align 8, !tbaa !5
  %195 = getelementptr double, ptr %16, i64 %187
  %196 = getelementptr double, ptr %16, i64 %reass.add
  %197 = getelementptr inbounds double, ptr %44, i64 %191
  %198 = call i32 @dsytrd_(ptr noundef %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %195, ptr noundef %196, ptr noundef nonnull %16, ptr noundef nonnull %197, ptr noundef nonnull %35, ptr noundef nonnull %30) #5
  %.not400 = icmp eq i64 %48, 0
  br i1 %.not400, label %199, label %208

199:                                              ; preds = %185
  %.not401 = icmp eq i64 %50, 0
  br i1 %.not401, label %241, label %200

200:                                              ; preds = %199
  %201 = load i64, ptr %8, align 8, !tbaa !5
  %202 = icmp eq i64 %201, 1
  br i1 %202, label %203, label %241

203:                                              ; preds = %200
  %204 = load i64, ptr %9, align 8, !tbaa !5
  %205 = load i64, ptr %3, align 8, !tbaa !5
  %206 = icmp eq i64 %204, %205
  %207 = icmp eq i64 %45, 1
  %or.cond11 = select i1 %206, i1 %207, i1 false
  br i1 %or.cond11, label %209, label %241

208:                                              ; preds = %185
  %.old10 = icmp eq i64 %45, 1
  br i1 %.old10, label %209, label %241

209:                                              ; preds = %203, %208
  br i1 %.not, label %217, label %210

210:                                              ; preds = %209
  %211 = call i32 @f2c_dcopy(ptr noundef nonnull %3, ptr noundef %195, ptr noundef nonnull @c__1, ptr noundef %12, ptr noundef nonnull @c__1) #5
  %212 = load i64, ptr %3, align 8, !tbaa !5
  %213 = add nsw i64 %212, -1
  store i64 %213, ptr %22, align 8, !tbaa !5
  %214 = getelementptr inbounds double, ptr %44, i64 %190
  %215 = call i32 @f2c_dcopy(ptr noundef nonnull %22, ptr noundef %196, ptr noundef nonnull @c__1, ptr noundef nonnull %214, ptr noundef nonnull @c__1) #5
  %216 = call i32 @dsterf_(ptr noundef nonnull %3, ptr noundef %12, ptr noundef nonnull %214, ptr noundef nonnull %20) #5
  br label %237

217:                                              ; preds = %209
  %218 = load i64, ptr %3, align 8, !tbaa !5
  %219 = add nsw i64 %218, -1
  store i64 %219, ptr %22, align 8, !tbaa !5
  %220 = getelementptr inbounds double, ptr %44, i64 %190
  %221 = call i32 @f2c_dcopy(ptr noundef nonnull %22, ptr noundef %196, ptr noundef nonnull @c__1, ptr noundef nonnull %220, ptr noundef nonnull @c__1) #5
  %222 = getelementptr inbounds double, ptr %44, i64 %189
  %223 = call i32 @f2c_dcopy(ptr noundef nonnull %3, ptr noundef %195, ptr noundef nonnull @c__1, ptr noundef nonnull %222, ptr noundef nonnull @c__1) #5
  %224 = load double, ptr %10, align 8, !tbaa !9
  %225 = load i64, ptr %3, align 8, !tbaa !5
  %226 = sitofp i64 %225 to double
  %227 = fmul double %226, 2.000000e+00
  %228 = fmul double %136, %227
  %229 = fcmp ole double %224, %228
  %.412 = zext i1 %229 to i64
  store i64 %.412, ptr %33, align 8, !tbaa !5
  %230 = call i32 @dstemr_(ptr noundef %0, ptr noundef nonnull @.str.4, ptr noundef nonnull %3, ptr noundef nonnull %222, ptr noundef nonnull %220, ptr noundef nonnull %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef %9, ptr noundef nonnull %11, ptr noundef %12, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %3, ptr noundef %15, ptr noundef nonnull %33, ptr noundef nonnull %197, ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef nonnull %20) #5
  %231 = load i64, ptr %20, align 8, !tbaa !5
  %232 = icmp eq i64 %231, 0
  br i1 %232, label %233, label %.thread427

233:                                              ; preds = %217
  %234 = load i64, ptr %17, align 8, !tbaa !5
  %reass.sub459 = sub i64 %234, %188
  %235 = add i64 %reass.sub459, 1
  store i64 %235, ptr %34, align 8, !tbaa !5
  %236 = call i32 @dormtr_(ptr noundef nonnull @.str.2, ptr noundef %2, ptr noundef nonnull @.str.1, ptr noundef nonnull %3, ptr noundef nonnull %11, ptr noundef %4, ptr noundef nonnull %5, ptr noundef nonnull %16, ptr noundef %13, ptr noundef nonnull %14, ptr noundef %196, ptr noundef nonnull %34, ptr noundef nonnull %30) #5
  br label %237

237:                                              ; preds = %233, %210
  %.pr426 = load i64, ptr %20, align 8, !tbaa !5
  %238 = icmp eq i64 %.pr426, 0
  br i1 %238, label %239, label %.thread427

239:                                              ; preds = %237
  %240 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %240, ptr %11, align 8, !tbaa !5
  br label %250

.thread427:                                       ; preds = %217, %237
  store i64 0, ptr %20, align 8, !tbaa !5
  br label %241

241:                                              ; preds = %.thread427, %208, %203, %200, %199
  %.413 = select i1 %.not, i8 66, i8 69
  store i8 %.413, ptr %31, align 1, !tbaa !14
  %242 = getelementptr i64, ptr %18, i64 %187
  %.idx = shl i64 %187, 4
  %243 = getelementptr i8, ptr %18, i64 %.idx
  %244 = call i32 @dstebz_(ptr noundef %1, ptr noundef nonnull %31, ptr noundef nonnull %3, ptr noundef nonnull %26, ptr noundef nonnull %27, ptr noundef %8, ptr noundef %9, ptr noundef nonnull %32, ptr noundef %195, ptr noundef %196, ptr noundef nonnull %11, ptr noundef nonnull %36, ptr noundef %12, ptr noundef nonnull %18, ptr noundef %242, ptr noundef nonnull %197, ptr noundef %243, ptr noundef nonnull %20) #5
  br i1 %.not, label %245, label %250

245:                                              ; preds = %241
  %246 = call i32 @dstein_(ptr noundef nonnull %3, ptr noundef %195, ptr noundef %196, ptr noundef nonnull %11, ptr noundef %12, ptr noundef nonnull %18, ptr noundef %242, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %197, ptr noundef %243, ptr noundef %243, ptr noundef nonnull %20) #5
  %247 = load i64, ptr %17, align 8, !tbaa !5
  %reass.sub460 = sub i64 %247, %188
  %248 = add i64 %reass.sub460, 1
  store i64 %248, ptr %34, align 8, !tbaa !5
  %249 = call i32 @dormtr_(ptr noundef nonnull @.str.2, ptr noundef %2, ptr noundef nonnull @.str.1, ptr noundef nonnull %3, ptr noundef nonnull %11, ptr noundef %4, ptr noundef nonnull %5, ptr noundef nonnull %16, ptr noundef %13, ptr noundef nonnull %14, ptr noundef %196, ptr noundef nonnull %34, ptr noundef nonnull %30) #5
  br label %250

250:                                              ; preds = %241, %245, %239
  br i1 %186, label %251, label %262

251:                                              ; preds = %250
  %252 = load i64, ptr %20, align 8, !tbaa !5
  %253 = icmp eq i64 %252, 0
  br i1 %253, label %254, label %256

254:                                              ; preds = %251
  %255 = load i64, ptr %11, align 8, !tbaa !5
  br label %258

256:                                              ; preds = %251
  %257 = add nsw i64 %252, -1
  br label %258

258:                                              ; preds = %256, %254
  %storemerge405 = phi i64 [ %257, %256 ], [ %255, %254 ]
  store i64 %storemerge405, ptr %28, align 8, !tbaa !5
  %259 = load double, ptr %29, align 8, !tbaa !9
  %260 = fdiv double 1.000000e+00, %259
  store double %260, ptr %24, align 8, !tbaa !9
  %261 = call i32 @f2c_dscal(ptr noundef nonnull %28, ptr noundef nonnull %24, ptr noundef %12, ptr noundef nonnull @c__1) #5
  br label %262

262:                                              ; preds = %258, %250
  br i1 %.not, label %263, label %.loopexit

263:                                              ; preds = %262
  %264 = load i64, ptr %11, align 8, !tbaa !5
  %265 = add nsw i64 %264, -1
  store i64 %265, ptr %22, align 8, !tbaa !5
  %invariant.gep451 = getelementptr i8, ptr %43, i64 8
  store i64 1, ptr %25, align 8, !tbaa !5
  %.not407455 = icmp slt i64 %264, 2
  br i1 %.not407455, label %.loopexit, label %.lr.ph458

.lr.ph458:                                        ; preds = %263, %._crit_edge.thread
  %266 = phi i64 [ %286, %._crit_edge.thread ], [ %265, %263 ]
  %storemerge406456 = phi i64 [ %288, %._crit_edge.thread ], [ 1, %263 ]
  %267 = getelementptr inbounds double, ptr %40, i64 %storemerge406456
  %268 = load double, ptr %267, align 8, !tbaa !9
  %269 = load i64, ptr %11, align 8, !tbaa !5
  store i64 %269, ptr %23, align 8, !tbaa !5
  %.not408.not445 = icmp slt i64 %storemerge406456, %269
  br i1 %.not408.not445, label %.lr.ph449.preheader, label %._crit_edge.thread

.lr.ph449.preheader:                              ; preds = %.lr.ph458
  %270 = sub i64 %269, %storemerge406456
  %.neg = add i64 %storemerge406456, 1
  %xtraiter = and i64 %270, 1
  %271 = icmp eq i64 %269, %.neg
  br i1 %271, label %._crit_edge.unr-lcssa, label %.lr.ph449.preheader.new

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

.lr.ph449:                                        ; preds = %.lr.ph449, %.lr.ph449.preheader.new
  %.0366448 = phi i64 [ 0, %.lr.ph449.preheader.new ], [ %.1.1, %.lr.ph449 ]
  %.0367.in447 = phi i64 [ %storemerge406456, %.lr.ph449.preheader.new ], [ %.0367.1, %.lr.ph449 ]
  %.0368446 = phi double [ %268, %.lr.ph449.preheader.new ], [ %.1369.1, %.lr.ph449 ]
  %niter = phi i64 [ 0, %.lr.ph449.preheader.new ], [ %niter.next.1, %.lr.ph449 ]
  %.0367 = add nsw i64 %.0367.in447, 1
  %272 = getelementptr double, ptr %12, i64 %.0367.in447
  %273 = load double, ptr %272, align 8, !tbaa !9
  %274 = fcmp olt double %273, %.0368446
  %.1369 = select i1 %274, double %273, double %.0368446
  %.1 = select i1 %274, i64 %.0367, i64 %.0366448
  %.0367.1 = add nsw i64 %.0367.in447, 2
  %275 = getelementptr double, ptr %12, i64 %.0367
  %276 = load double, ptr %275, align 8, !tbaa !9
  %277 = fcmp olt double %276, %.1369
  %.1369.1 = select i1 %277, double %276, double %.1369
  %.1.1 = select i1 %277, i64 %.0367.1, i64 %.1
  %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.ph449, !llvm.loop !15

._crit_edge.unr-lcssa:                            ; preds = %.lr.ph449, %.lr.ph449.preheader
  %.1369.lcssa.ph = phi double [ poison, %.lr.ph449.preheader ], [ %.1369.1, %.lr.ph449 ]
  %.1.lcssa.ph = phi i64 [ poison, %.lr.ph449.preheader ], [ %.1.1, %.lr.ph449 ]
  %.0366448.unr = phi i64 [ 0, %.lr.ph449.preheader ], [ %.1.1, %.lr.ph449 ]
  %.0367.in447.unr = phi i64 [ %storemerge406456, %.lr.ph449.preheader ], [ %.0367.1, %.lr.ph449 ]
  %.0368446.unr = phi double [ %268, %.lr.ph449.preheader ], [ %.1369.1, %.lr.ph449 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph449.epil

.lr.ph449.epil:                                   ; preds = %._crit_edge.unr-lcssa
  %.0367.epil = add nsw i64 %.0367.in447.unr, 1
  %278 = getelementptr double, ptr %12, i64 %.0367.in447.unr
  %279 = load double, ptr %278, align 8, !tbaa !9
  %280 = fcmp olt double %279, %.0368446.unr
  %.1369.epil = select i1 %280, double %279, double %.0368446.unr
  %.1.epil = select i1 %280, i64 %.0367.epil, i64 %.0366448.unr
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.unr-lcssa, %.lr.ph449.epil
  %.1369.lcssa = phi double [ %.1369.lcssa.ph, %._crit_edge.unr-lcssa ], [ %.1369.epil, %.lr.ph449.epil ]
  %.1.lcssa = phi i64 [ %.1.lcssa.ph, %._crit_edge.unr-lcssa ], [ %.1.epil, %.lr.ph449.epil ]
  %.not409 = icmp eq i64 %.1.lcssa, 0
  br i1 %.not409, label %._crit_edge.thread, label %281

281:                                              ; preds = %._crit_edge
  %282 = getelementptr inbounds double, ptr %40, i64 %.1.lcssa
  store double %268, ptr %282, align 8, !tbaa !9
  store double %.1369.lcssa, ptr %267, align 8, !tbaa !9
  %283 = mul nsw i64 %.1.lcssa, %41
  %gep452 = getelementptr double, ptr %invariant.gep451, i64 %283
  %284 = mul nsw i64 %storemerge406456, %41
  %gep454 = getelementptr double, ptr %invariant.gep451, i64 %284
  %285 = call i32 @f2c_dswap(ptr noundef nonnull %3, ptr noundef %gep452, ptr noundef nonnull @c__1, ptr noundef %gep454, ptr noundef nonnull @c__1) #5
  %.pre = load i64, ptr %25, align 8, !tbaa !5
  %.pre462 = load i64, ptr %22, align 8, !tbaa !5
  br label %._crit_edge.thread

._crit_edge.thread:                               ; preds = %.lr.ph458, %._crit_edge, %281
  %286 = phi i64 [ %266, %._crit_edge ], [ %.pre462, %281 ], [ %266, %.lr.ph458 ]
  %287 = phi i64 [ %storemerge406456, %._crit_edge ], [ %.pre, %281 ], [ %storemerge406456, %.lr.ph458 ]
  %288 = add nsw i64 %287, 1
  store i64 %288, ptr %25, align 8, !tbaa !5
  %.not407.not = icmp slt i64 %287, %286
  br i1 %.not407.not, label %.lr.ph458, label %.loopexit, !llvm.loop !16

.loopexit:                                        ; preds = %._crit_edge.thread, %263, %262
  store double %113, ptr %16, align 8, !tbaa !9
  store i64 %63, ptr %18, align 8, !tbaa !5
  br label %289

289:                                              ; preds = %132, %133, %117, %.loopexit, %120, %.thread420
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #5
  ret i32 0
}

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

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

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

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @sqrt(double noundef) local_unnamed_addr #3

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

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nofree nounwind willreturn memory(write) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"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,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass