; LLVM IR from OpenMathLib/OpenBLAS :: lapack-netlib/SRC (dgeesx)

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

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

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

130:                                              ; preds = %20
  %131 = load ptr, ptr %38, align 8, !tbaa !5
  %132 = load i32, ptr %131, align 4, !tbaa !9
  %133 = icmp eq i32 %132, -1
  br label %134

134:                                              ; preds = %130, %20
  %135 = phi i1 [ true, %20 ], [ %133, %130 ]
  %136 = zext i1 %135 to i32
  store i32 %136, ptr %76, align 4, !tbaa !9
  %137 = load i32, ptr %78, align 4, !tbaa !9
  %138 = icmp ne i32 %137, 0
  br i1 %138, label %145, label %139

139:                                              ; preds = %134
  %140 = load ptr, ptr %21, align 8, !tbaa !5
  %141 = call i32 @lsame_(ptr noundef %140, ptr noundef @.str.2)
  %142 = icmp ne i32 %141, 0
  br i1 %142, label %145, label %143

143:                                              ; preds = %139
  %144 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -1, ptr %144, align 4, !tbaa !9
  br label %215

145:                                              ; preds = %139, %134
  %146 = load i32, ptr %75, align 4, !tbaa !9
  %147 = icmp ne i32 %146, 0
  br i1 %147, label %154, label %148

148:                                              ; preds = %145
  %149 = load ptr, ptr %22, align 8, !tbaa !5
  %150 = call i32 @lsame_(ptr noundef %149, ptr noundef @.str.2)
  %151 = icmp ne i32 %150, 0
  br i1 %151, label %154, label %152

152:                                              ; preds = %148
  %153 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -2, ptr %153, align 4, !tbaa !9
  br label %214

154:                                              ; preds = %148, %145
  %155 = load i32, ptr %72, align 4, !tbaa !9
  %156 = icmp ne i32 %155, 0
  br i1 %156, label %166, label %157

157:                                              ; preds = %154
  %158 = load i32, ptr %68, align 4, !tbaa !9
  %159 = icmp ne i32 %158, 0
  br i1 %159, label %166, label %160

160:                                              ; preds = %157
  %161 = load i32, ptr %77, align 4, !tbaa !9
  %162 = icmp ne i32 %161, 0
  br i1 %162, label %166, label %163

163:                                              ; preds = %160
  %164 = load i32, ptr %67, align 4, !tbaa !9
  %165 = icmp ne i32 %164, 0
  br i1 %165, label %166, label %172

166:                                              ; preds = %163, %160, %157, %154
  %167 = load i32, ptr %75, align 4, !tbaa !9
  %168 = icmp ne i32 %167, 0
  br i1 %168, label %174, label %169

169:                                              ; preds = %166
  %170 = load i32, ptr %72, align 4, !tbaa !9
  %171 = icmp ne i32 %170, 0
  br i1 %171, label %174, label %172

172:                                              ; preds = %169, %163
  %173 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -4, ptr %173, align 4, !tbaa !9
  br label %213

174:                                              ; preds = %169, %166
  %175 = load ptr, ptr %25, align 8, !tbaa !5
  %176 = load i32, ptr %175, align 4, !tbaa !9
  %177 = icmp slt i32 %176, 0
  br i1 %177, label %178, label %180

178:                                              ; preds = %174
  %179 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -5, ptr %179, align 4, !tbaa !9
  br label %212

180:                                              ; preds = %174
  %181 = load ptr, ptr %27, align 8, !tbaa !5
  %182 = load i32, ptr %181, align 4, !tbaa !9
  %183 = load ptr, ptr %25, align 8, !tbaa !5
  %184 = load i32, ptr %183, align 4, !tbaa !9
  %185 = icmp sge i32 1, %184
  br i1 %185, label %186, label %187

186:                                              ; preds = %180
  br label %190

187:                                              ; preds = %180
  %188 = load ptr, ptr %25, align 8, !tbaa !5
  %189 = load i32, ptr %188, align 4, !tbaa !9
  br label %190

190:                                              ; preds = %187, %186
  %191 = phi i32 [ 1, %186 ], [ %189, %187 ]
  %192 = icmp slt i32 %182, %191
  br i1 %192, label %193, label %195

193:                                              ; preds = %190
  %194 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -7, ptr %194, align 4, !tbaa !9
  br label %211

195:                                              ; preds = %190
  %196 = load ptr, ptr %32, align 8, !tbaa !5
  %197 = load i32, ptr %196, align 4, !tbaa !9
  %198 = icmp slt i32 %197, 1
  br i1 %198, label %208, label %199

199:                                              ; preds = %195
  %200 = load i32, ptr %78, align 4, !tbaa !9
  %201 = icmp ne i32 %200, 0
  br i1 %201, label %202, label %210

202:                                              ; preds = %199
  %203 = load ptr, ptr %32, align 8, !tbaa !5
  %204 = load i32, ptr %203, align 4, !tbaa !9
  %205 = load ptr, ptr %25, align 8, !tbaa !5
  %206 = load i32, ptr %205, align 4, !tbaa !9
  %207 = icmp slt i32 %204, %206
  br i1 %207, label %208, label %210

208:                                              ; preds = %202, %195
  %209 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -12, ptr %209, align 4, !tbaa !9
  br label %210

210:                                              ; preds = %208, %202, %199
  br label %211

211:                                              ; preds = %210, %193
  br label %212

212:                                              ; preds = %211, %178
  br label %213

213:                                              ; preds = %212, %172
  br label %214

214:                                              ; preds = %213, %152
  br label %215

215:                                              ; preds = %214, %143
  %216 = load ptr, ptr %40, align 8, !tbaa !5
  %217 = load i32, ptr %216, align 4, !tbaa !9
  %218 = icmp eq i32 %217, 0
  br i1 %218, label %219, label %380

219:                                              ; preds = %215
  store i32 1, ptr %59, align 4, !tbaa !9
  %220 = load ptr, ptr %25, align 8, !tbaa !5
  %221 = load i32, ptr %220, align 4, !tbaa !9
  %222 = icmp eq i32 %221, 0
  br i1 %222, label %223, label %224

223:                                              ; preds = %219
  store i32 1, ptr %70, align 4, !tbaa !9
  store i32 1, ptr %53, align 4, !tbaa !9
  br label %352

224:                                              ; preds = %219
  %225 = load ptr, ptr %25, align 8, !tbaa !5
  %226 = load i32, ptr %225, align 4, !tbaa !9
  %227 = shl i32 %226, 1
  %228 = load ptr, ptr %25, align 8, !tbaa !5
  %229 = load i32, ptr %228, align 4, !tbaa !9
  %230 = load ptr, ptr %25, align 8, !tbaa !5
  %231 = load ptr, ptr %25, align 8, !tbaa !5
  %232 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef %230, ptr noundef @c__1, ptr noundef %231, ptr noundef @c__0, i32 noundef 6, i32 noundef 1)
  %233 = mul nsw i32 %229, %232
  %234 = add nsw i32 %227, %233
  store i32 %234, ptr %71, align 4, !tbaa !9
  %235 = load ptr, ptr %25, align 8, !tbaa !5
  %236 = load i32, ptr %235, align 4, !tbaa !9
  %237 = mul nsw i32 %236, 3
  store i32 %237, ptr %70, align 4, !tbaa !9
  %238 = load ptr, ptr %21, align 8, !tbaa !5
  %239 = load ptr, ptr %25, align 8, !tbaa !5
  %240 = load ptr, ptr %25, align 8, !tbaa !5
  %241 = load ptr, ptr %26, align 8, !tbaa !5
  %242 = load i32, ptr %42, align 4, !tbaa !9
  %243 = sext i32 %242 to i64
  %244 = getelementptr inbounds double, ptr %241, i64 %243
  %245 = load ptr, ptr %27, align 8, !tbaa !5
  %246 = load ptr, ptr %29, align 8, !tbaa !5
  %247 = getelementptr inbounds double, ptr %246, i64 1
  %248 = load ptr, ptr %30, align 8, !tbaa !5
  %249 = getelementptr inbounds double, ptr %248, i64 1
  %250 = load ptr, ptr %31, align 8, !tbaa !5
  %251 = load i32, ptr %44, align 4, !tbaa !9
  %252 = sext i32 %251 to i64
  %253 = getelementptr inbounds double, ptr %250, i64 %252
  %254 = load ptr, ptr %32, align 8, !tbaa !5
  %255 = load ptr, ptr %35, align 8, !tbaa !5
  %256 = getelementptr inbounds double, ptr %255, i64 1
  call void @dhseqr_(ptr noundef @.str.1, ptr noundef %238, ptr noundef %239, ptr noundef @c__1, ptr noundef %240, ptr noundef %244, ptr noundef %245, ptr noundef %247, ptr noundef %249, ptr noundef %253, ptr noundef %254, ptr noundef %256, ptr noundef @c_n1, ptr noundef %57)
  %257 = load ptr, ptr %35, align 8, !tbaa !5
  %258 = getelementptr inbounds double, ptr %257, i64 1
  %259 = load double, ptr %258, align 8, !tbaa !11
  %260 = fptosi double %259 to i32
  store i32 %260, ptr %74, align 4, !tbaa !9
  %261 = load i32, ptr %78, align 4, !tbaa !9
  %262 = icmp ne i32 %261, 0
  br i1 %262, label %278, label %263

263:                                              ; preds = %224
  %264 = load i32, ptr %71, align 4, !tbaa !9
  store i32 %264, ptr %45, align 4, !tbaa !9
  %265 = load ptr, ptr %25, align 8, !tbaa !5
  %266 = load i32, ptr %265, align 4, !tbaa !9
  %267 = load i32, ptr %74, align 4, !tbaa !9
  %268 = add nsw i32 %266, %267
  store i32 %268, ptr %46, align 4, !tbaa !9
  %269 = load i32, ptr %45, align 4, !tbaa !9
  %270 = load i32, ptr %46, align 4, !tbaa !9
  %271 = icmp sge i32 %269, %270
  br i1 %271, label %272, label %274

272:                                              ; preds = %263
  %273 = load i32, ptr %45, align 4, !tbaa !9
  br label %276

274:                                              ; preds = %263
  %275 = load i32, ptr %46, align 4, !tbaa !9
  br label %276

276:                                              ; preds = %274, %272
  %277 = phi i32 [ %273, %272 ], [ %275, %274 ]
  store i32 %277, ptr %71, align 4, !tbaa !9
  br label %314

278:                                              ; preds = %224
  %279 = load i32, ptr %71, align 4, !tbaa !9
  store i32 %279, ptr %45, align 4, !tbaa !9
  %280 = load ptr, ptr %25, align 8, !tbaa !5
  %281 = load i32, ptr %280, align 4, !tbaa !9
  %282 = shl i32 %281, 1
  %283 = load ptr, ptr %25, align 8, !tbaa !5
  %284 = load i32, ptr %283, align 4, !tbaa !9
  %285 = sub nsw i32 %284, 1
  %286 = load ptr, ptr %25, align 8, !tbaa !5
  %287 = load ptr, ptr %25, align 8, !tbaa !5
  %288 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.7, ptr noundef @.str.6, ptr noundef %286, ptr noundef @c__1, ptr noundef %287, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  %289 = mul nsw i32 %285, %288
  %290 = add nsw i32 %282, %289
  store i32 %290, ptr %46, align 4, !tbaa !9
  %291 = load i32, ptr %45, align 4, !tbaa !9
  %292 = load i32, ptr %46, align 4, !tbaa !9
  %293 = icmp sge i32 %291, %292
  br i1 %293, label %294, label %296

294:                                              ; preds = %278
  %295 = load i32, ptr %45, align 4, !tbaa !9
  br label %298

296:                                              ; preds = %278
  %297 = load i32, ptr %46, align 4, !tbaa !9
  br label %298

298:                                              ; preds = %296, %294
  %299 = phi i32 [ %295, %294 ], [ %297, %296 ]
  store i32 %299, ptr %71, align 4, !tbaa !9
  %300 = load i32, ptr %71, align 4, !tbaa !9
  store i32 %300, ptr %45, align 4, !tbaa !9
  %301 = load ptr, ptr %25, align 8, !tbaa !5
  %302 = load i32, ptr %301, align 4, !tbaa !9
  %303 = load i32, ptr %74, align 4, !tbaa !9
  %304 = add nsw i32 %302, %303
  store i32 %304, ptr %46, align 4, !tbaa !9
  %305 = load i32, ptr %45, align 4, !tbaa !9
  %306 = load i32, ptr %46, align 4, !tbaa !9
  %307 = icmp sge i32 %305, %306
  br i1 %307, label %308, label %310

308:                                              ; preds = %298
  %309 = load i32, ptr %45, align 4, !tbaa !9
  br label %312

310:                                              ; preds = %298
  %311 = load i32, ptr %46, align 4, !tbaa !9
  br label %312

312:                                              ; preds = %310, %308
  %313 = phi i32 [ %309, %308 ], [ %311, %310 ]
  store i32 %313, ptr %71, align 4, !tbaa !9
  br label %314

314:                                              ; preds = %312, %276
  %315 = load i32, ptr %71, align 4, !tbaa !9
  store i32 %315, ptr %53, align 4, !tbaa !9
  %316 = load i32, ptr %72, align 4, !tbaa !9
  %317 = icmp ne i32 %316, 0
  br i1 %317, label %338, label %318

318:                                              ; preds = %314
  %319 = load i32, ptr %53, align 4, !tbaa !9
  store i32 %319, ptr %45, align 4, !tbaa !9
  %320 = load ptr, ptr %25, align 8, !tbaa !5
  %321 = load i32, ptr %320, align 4, !tbaa !9
  %322 = load ptr, ptr %25, align 8, !tbaa !5
  %323 = load i32, ptr %322, align 4, !tbaa !9
  %324 = load ptr, ptr %25, align 8, !tbaa !5
  %325 = load i32, ptr %324, align 4, !tbaa !9
  %326 = mul nsw i32 %323, %325
  %327 = sdiv i32 %326, 2
  %328 = add nsw i32 %321, %327
  store i32 %328, ptr %46, align 4, !tbaa !9
  %329 = load i32, ptr %45, align 4, !tbaa !9
  %330 = load i32, ptr %46, align 4, !tbaa !9
  %331 = icmp sge i32 %329, %330
  br i1 %331, label %332, label %334

332:                                              ; preds = %318
  %333 = load i32, ptr %45, align 4, !tbaa !9
  br label %336

334:                                              ; preds = %318
  %335 = load i32, ptr %46, align 4, !tbaa !9
  br label %336

336:                                              ; preds = %334, %332
  %337 = phi i32 [ %333, %332 ], [ %335, %334 ]
  store i32 %337, ptr %53, align 4, !tbaa !9
  br label %338

338:                                              ; preds = %336, %314
  %339 = load i32, ptr %77, align 4, !tbaa !9
  %340 = icmp ne i32 %339, 0
  br i1 %340, label %344, label %341

341:                                              ; preds = %338
  %342 = load i32, ptr %67, align 4, !tbaa !9
  %343 = icmp ne i32 %342, 0
  br i1 %343, label %344, label %351

344:                                              ; preds = %341, %338
  %345 = load ptr, ptr %25, align 8, !tbaa !5
  %346 = load i32, ptr %345, align 4, !tbaa !9
  %347 = load ptr, ptr %25, align 8, !tbaa !5
  %348 = load i32, ptr %347, align 4, !tbaa !9
  %349 = mul nsw i32 %346, %348
  %350 = sdiv i32 %349, 4
  store i32 %350, ptr %59, align 4, !tbaa !9
  br label %351

351:                                              ; preds = %344, %341
  br label %352

352:                                              ; preds = %351, %223
  %353 = load i32, ptr %59, align 4, !tbaa !9
  %354 = load ptr, ptr %37, align 8, !tbaa !5
  %355 = getelementptr inbounds i32, ptr %354, i64 1
  store i32 %353, ptr %355, align 4, !tbaa !9
  %356 = load i32, ptr %53, align 4, !tbaa !9
  %357 = sitofp i32 %356 to double
  %358 = load ptr, ptr %35, align 8, !tbaa !5
  %359 = getelementptr inbounds double, ptr %358, i64 1
  store double %357, ptr %359, align 8, !tbaa !11
  %360 = load ptr, ptr %36, align 8, !tbaa !5
  %361 = load i32, ptr %360, align 4, !tbaa !9
  %362 = load i32, ptr %70, align 4, !tbaa !9
  %363 = icmp slt i32 %361, %362
  br i1 %363, label %364, label %369

364:                                              ; preds = %352
  %365 = load i32, ptr %76, align 4, !tbaa !9
  %366 = icmp ne i32 %365, 0
  br i1 %366, label %369, label %367

367:                                              ; preds = %364
  %368 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -16, ptr %368, align 4, !tbaa !9
  br label %379

369:                                              ; preds = %364, %352
  %370 = load ptr, ptr %38, align 8, !tbaa !5
  %371 = load i32, ptr %370, align 4, !tbaa !9
  %372 = icmp slt i32 %371, 1
  br i1 %372, label %373, label %378

373:                                              ; preds = %369
  %374 = load i32, ptr %76, align 4, !tbaa !9
  %375 = icmp ne i32 %374, 0
  br i1 %375, label %378, label %376

376:                                              ; preds = %373
  %377 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -18, ptr %377, align 4, !tbaa !9
  br label %378

378:                                              ; preds = %376, %373, %369
  br label %379

379:                                              ; preds = %378, %367
  br label %380

380:                                              ; preds = %379, %215
  %381 = load ptr, ptr %40, align 8, !tbaa !5
  %382 = load i32, ptr %381, align 4, !tbaa !9
  %383 = icmp ne i32 %382, 0
  br i1 %383, label %384, label %389

384:                                              ; preds = %380
  %385 = load ptr, ptr %40, align 8, !tbaa !5
  %386 = load i32, ptr %385, align 4, !tbaa !9
  %387 = sub nsw i32 0, %386
  store i32 %387, ptr %45, align 4, !tbaa !9
  %388 = call i32 @xerbla_(ptr noundef @.str.8, ptr noundef %45, i32 noundef 6)
  store i32 1, ptr %83, align 4
  br label %1097

389:                                              ; preds = %380
  %390 = load i32, ptr %76, align 4, !tbaa !9
  %391 = icmp ne i32 %390, 0
  br i1 %391, label %392, label %393

392:                                              ; preds = %389
  store i32 1, ptr %83, align 4
  br label %1097

393:                                              ; preds = %389
  br label %394

394:                                              ; preds = %393
  %395 = load ptr, ptr %25, align 8, !tbaa !5
  %396 = load i32, ptr %395, align 4, !tbaa !9
  %397 = icmp eq i32 %396, 0
  br i1 %397, label %398, label %400

398:                                              ; preds = %394
  %399 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 0, ptr %399, align 4, !tbaa !9
  store i32 1, ptr %83, align 4
  br label %1097

400:                                              ; preds = %394
  %401 = call double @dlamch_(ptr noundef @.str.9)
  store double %401, ptr %82, align 8, !tbaa !11
  %402 = call double @dlamch_(ptr noundef @.str.1)
  store double %402, ptr %73, align 8, !tbaa !11
  %403 = load double, ptr %73, align 8, !tbaa !11
  %404 = fdiv double 1.000000e+00, %403
  store double %404, ptr %66, align 8, !tbaa !11
  call void @dlabad_(ptr noundef %73, ptr noundef %66)
  %405 = load double, ptr %73, align 8, !tbaa !11
  %406 = call double @sqrt(double noundef %405) #4
  %407 = load double, ptr %82, align 8, !tbaa !11
  %408 = fdiv double %406, %407
  store double %408, ptr %73, align 8, !tbaa !11
  %409 = load double, ptr %73, align 8, !tbaa !11
  %410 = fdiv double 1.000000e+00, %409
  store double %410, ptr %66, align 8, !tbaa !11
  %411 = load ptr, ptr %25, align 8, !tbaa !5
  %412 = load ptr, ptr %25, align 8, !tbaa !5
  %413 = load ptr, ptr %26, align 8, !tbaa !5
  %414 = load i32, ptr %42, align 4, !tbaa !9
  %415 = sext i32 %414 to i64
  %416 = getelementptr inbounds double, ptr %413, i64 %415
  %417 = load ptr, ptr %27, align 8, !tbaa !5
  %418 = getelementptr inbounds [1 x double], ptr %81, i64 0, i64 0
  %419 = call double @dlange_(ptr noundef @.str.10, ptr noundef %411, ptr noundef %412, ptr noundef %416, ptr noundef %417, ptr noundef %418)
  store double %419, ptr %49, align 8, !tbaa !11
  store i32 0, ptr %63, align 4, !tbaa !9
  %420 = load double, ptr %49, align 8, !tbaa !11
  %421 = fcmp ogt double %420, 0.000000e+00
  br i1 %421, label %422, label %428

422:                                              ; preds = %400
  %423 = load double, ptr %49, align 8, !tbaa !11
  %424 = load double, ptr %73, align 8, !tbaa !11
  %425 = fcmp olt double %423, %424
  br i1 %425, label %426, label %428

426:                                              ; preds = %422
  store i32 1, ptr %63, align 4, !tbaa !9
  %427 = load double, ptr %73, align 8, !tbaa !11
  store double %427, ptr %65, align 8, !tbaa !11
  br label %435

428:                                              ; preds = %422, %400
  %429 = load double, ptr %49, align 8, !tbaa !11
  %430 = load double, ptr %66, align 8, !tbaa !11
  %431 = fcmp ogt double %429, %430
  br i1 %431, label %432, label %434

432:                                              ; preds = %428
  store i32 1, ptr %63, align 4, !tbaa !9
  %433 = load double, ptr %66, align 8, !tbaa !11
  store double %433, ptr %65, align 8, !tbaa !11
  br label %434

434:                                              ; preds = %432, %428
  br label %435

435:                                              ; preds = %434, %426
  %436 = load i32, ptr %63, align 4, !tbaa !9
  %437 = icmp ne i32 %436, 0
  br i1 %437, label %438, label %446

438:                                              ; preds = %435
  %439 = load ptr, ptr %25, align 8, !tbaa !5
  %440 = load ptr, ptr %25, align 8, !tbaa !5
  %441 = load ptr, ptr %26, align 8, !tbaa !5
  %442 = load i32, ptr %42, align 4, !tbaa !9
  %443 = sext i32 %442 to i64
  %444 = getelementptr inbounds double, ptr %441, i64 %443
  %445 = load ptr, ptr %27, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.11, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %49, ptr noundef %65, ptr noundef %439, ptr noundef %440, ptr noundef %444, ptr noundef %445, ptr noundef %50)
  br label %446

446:                                              ; preds = %438, %435
  store i32 1, ptr %48, align 4, !tbaa !9
  %447 = load ptr, ptr %25, align 8, !tbaa !5
  %448 = load ptr, ptr %26, align 8, !tbaa !5
  %449 = load i32, ptr %42, align 4, !tbaa !9
  %450 = sext i32 %449 to i64
  %451 = getelementptr inbounds double, ptr %448, i64 %450
  %452 = load ptr, ptr %27, align 8, !tbaa !5
  %453 = load ptr, ptr %35, align 8, !tbaa !5
  %454 = load i32, ptr %48, align 4, !tbaa !9
  %455 = sext i32 %454 to i64
  %456 = getelementptr inbounds double, ptr %453, i64 %455
  call void @dgebal_(ptr noundef @.str.9, ptr noundef %447, ptr noundef %451, ptr noundef %452, ptr noundef %80, ptr noundef %79, ptr noundef %456, ptr noundef %50)
  %457 = load ptr, ptr %25, align 8, !tbaa !5
  %458 = load i32, ptr %457, align 4, !tbaa !9
  %459 = load i32, ptr %48, align 4, !tbaa !9
  %460 = add nsw i32 %458, %459
  store i32 %460, ptr %51, align 4, !tbaa !9
  %461 = load ptr, ptr %25, align 8, !tbaa !5
  %462 = load i32, ptr %461, align 4, !tbaa !9
  %463 = load i32, ptr %51, align 4, !tbaa !9
  %464 = add nsw i32 %462, %463
  store i32 %464, ptr %52, align 4, !tbaa !9
  %465 = load ptr, ptr %36, align 8, !tbaa !5
  %466 = load i32, ptr %465, align 4, !tbaa !9
  %467 = load i32, ptr %52, align 4, !tbaa !9
  %468 = sub nsw i32 %466, %467
  %469 = add nsw i32 %468, 1
  store i32 %469, ptr %45, align 4, !tbaa !9
  %470 = load ptr, ptr %25, align 8, !tbaa !5
  %471 = load ptr, ptr %26, align 8, !tbaa !5
  %472 = load i32, ptr %42, align 4, !tbaa !9
  %473 = sext i32 %472 to i64
  %474 = getelementptr inbounds double, ptr %471, i64 %473
  %475 = load ptr, ptr %27, align 8, !tbaa !5
  %476 = load ptr, ptr %35, align 8, !tbaa !5
  %477 = load i32, ptr %51, align 4, !tbaa !9
  %478 = sext i32 %477 to i64
  %479 = getelementptr inbounds double, ptr %476, i64 %478
  %480 = load ptr, ptr %35, align 8, !tbaa !5
  %481 = load i32, ptr %52, align 4, !tbaa !9
  %482 = sext i32 %481 to i64
  %483 = getelementptr inbounds double, ptr %480, i64 %482
  call void @dgehrd_(ptr noundef %470, ptr noundef %80, ptr noundef %79, ptr noundef %474, ptr noundef %475, ptr noundef %479, ptr noundef %483, ptr noundef %45, ptr noundef %50)
  %484 = load i32, ptr %78, align 4, !tbaa !9
  %485 = icmp ne i32 %484, 0
  br i1 %485, label %486, label %518

486:                                              ; preds = %446
  %487 = load ptr, ptr %25, align 8, !tbaa !5
  %488 = load ptr, ptr %25, align 8, !tbaa !5
  %489 = load ptr, ptr %26, align 8, !tbaa !5
  %490 = load i32, ptr %42, align 4, !tbaa !9
  %491 = sext i32 %490 to i64
  %492 = getelementptr inbounds double, ptr %489, i64 %491
  %493 = load ptr, ptr %27, align 8, !tbaa !5
  %494 = load ptr, ptr %31, align 8, !tbaa !5
  %495 = load i32, ptr %44, align 4, !tbaa !9
  %496 = sext i32 %495 to i64
  %497 = getelementptr inbounds double, ptr %494, i64 %496
  %498 = load ptr, ptr %32, align 8, !tbaa !5
  call void @dlacpy_(ptr noundef @.str.12, ptr noundef %487, ptr noundef %488, ptr noundef %492, ptr noundef %493, ptr noundef %497, ptr noundef %498)
  %499 = load ptr, ptr %36, align 8, !tbaa !5
  %500 = load i32, ptr %499, align 4, !tbaa !9
  %501 = load i32, ptr %52, align 4, !tbaa !9
  %502 = sub nsw i32 %500, %501
  %503 = add nsw i32 %502, 1
  store i32 %503, ptr %45, align 4, !tbaa !9
  %504 = load ptr, ptr %25, align 8, !tbaa !5
  %505 = load ptr, ptr %31, align 8, !tbaa !5
  %506 = load i32, ptr %44, align 4, !tbaa !9
  %507 = sext i32 %506 to i64
  %508 = getelementptr inbounds double, ptr %505, i64 %507
  %509 = load ptr, ptr %32, align 8, !tbaa !5
  %510 = load ptr, ptr %35, align 8, !tbaa !5
  %511 = load i32, ptr %51, align 4, !tbaa !9
  %512 = sext i32 %511 to i64
  %513 = getelementptr inbounds double, ptr %510, i64 %512
  %514 = load ptr, ptr %35, align 8, !tbaa !5
  %515 = load i32, ptr %52, align 4, !tbaa !9
  %516 = sext i32 %515 to i64
  %517 = getelementptr inbounds double, ptr %514, i64 %516
  call void @dorghr_(ptr noundef %504, ptr noundef %80, ptr noundef %79, ptr noundef %508, ptr noundef %509, ptr noundef %513, ptr noundef %517, ptr noundef %45, ptr noundef %50)
  br label %518

518:                                              ; preds = %486, %446
  %519 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 0, ptr %519, align 4, !tbaa !9
  %520 = load i32, ptr %51, align 4, !tbaa !9
  store i32 %520, ptr %52, align 4, !tbaa !9
  %521 = load ptr, ptr %36, align 8, !tbaa !5
  %522 = load i32, ptr %521, align 4, !tbaa !9
  %523 = load i32, ptr %52, align 4, !tbaa !9
  %524 = sub nsw i32 %522, %523
  %525 = add nsw i32 %524, 1
  store i32 %525, ptr %45, align 4, !tbaa !9
  %526 = load ptr, ptr %21, align 8, !tbaa !5
  %527 = load ptr, ptr %25, align 8, !tbaa !5
  %528 = load ptr, ptr %26, align 8, !tbaa !5
  %529 = load i32, ptr %42, align 4, !tbaa !9
  %530 = sext i32 %529 to i64
  %531 = getelementptr inbounds double, ptr %528, i64 %530
  %532 = load ptr, ptr %27, align 8, !tbaa !5
  %533 = load ptr, ptr %29, align 8, !tbaa !5
  %534 = getelementptr inbounds double, ptr %533, i64 1
  %535 = load ptr, ptr %30, align 8, !tbaa !5
  %536 = getelementptr inbounds double, ptr %535, i64 1
  %537 = load ptr, ptr %31, align 8, !tbaa !5
  %538 = load i32, ptr %44, align 4, !tbaa !9
  %539 = sext i32 %538 to i64
  %540 = getelementptr inbounds double, ptr %537, i64 %539
  %541 = load ptr, ptr %32, align 8, !tbaa !5
  %542 = load ptr, ptr %35, align 8, !tbaa !5
  %543 = load i32, ptr %52, align 4, !tbaa !9
  %544 = sext i32 %543 to i64
  %545 = getelementptr inbounds double, ptr %542, i64 %544
  call void @dhseqr_(ptr noundef @.str.1, ptr noundef %526, ptr noundef %527, ptr noundef %80, ptr noundef %79, ptr noundef %531, ptr noundef %532, ptr noundef %534, ptr noundef %536, ptr noundef %540, ptr noundef %541, ptr noundef %545, ptr noundef %45, ptr noundef %57)
  %546 = load i32, ptr %57, align 4, !tbaa !9
  %547 = icmp sgt i32 %546, 0
  br i1 %547, label %548, label %551

548:                                              ; preds = %518
  %549 = load i32, ptr %57, align 4, !tbaa !9
  %550 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 %549, ptr %550, align 4, !tbaa !9
  br label %551

551:                                              ; preds = %548, %518
  %552 = load i32, ptr %75, align 4, !tbaa !9
  %553 = icmp ne i32 %552, 0
  br i1 %553, label %554, label %677

554:                                              ; preds = %551
  %555 = load ptr, ptr %40, align 8, !tbaa !5
  %556 = load i32, ptr %555, align 4, !tbaa !9
  %557 = icmp eq i32 %556, 0
  br i1 %557, label %558, label %677

558:                                              ; preds = %554
  %559 = load i32, ptr %63, align 4, !tbaa !9
  %560 = icmp ne i32 %559, 0
  br i1 %560, label %561, label %570

561:                                              ; preds = %558
  %562 = load ptr, ptr %25, align 8, !tbaa !5
  %563 = load ptr, ptr %29, align 8, !tbaa !5
  %564 = getelementptr inbounds double, ptr %563, i64 1
  %565 = load ptr, ptr %25, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.11, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %65, ptr noundef %49, ptr noundef %562, ptr noundef @c__1, ptr noundef %564, ptr noundef %565, ptr noundef %50)
  %566 = load ptr, ptr %25, align 8, !tbaa !5
  %567 = load ptr, ptr %30, align 8, !tbaa !5
  %568 = getelementptr inbounds double, ptr %567, i64 1
  %569 = load ptr, ptr %25, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.11, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %65, ptr noundef %49, ptr noundef %566, ptr noundef @c__1, ptr noundef %568, ptr noundef %569, ptr noundef %50)
  br label %570

570:                                              ; preds = %561, %558
  %571 = load ptr, ptr %25, align 8, !tbaa !5
  %572 = load i32, ptr %571, align 4, !tbaa !9
  store i32 %572, ptr %45, align 4, !tbaa !9
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %573

573:                                              ; preds = %592, %570
  %574 = load i32, ptr %55, align 4, !tbaa !9
  %575 = load i32, ptr %45, align 4, !tbaa !9
  %576 = icmp sle i32 %574, %575
  br i1 %576, label %577, label %595

577:                                              ; preds = %573
  %578 = load ptr, ptr %23, align 8, !tbaa !5
  %579 = load ptr, ptr %29, align 8, !tbaa !5
  %580 = load i32, ptr %55, align 4, !tbaa !9
  %581 = sext i32 %580 to i64
  %582 = getelementptr inbounds double, ptr %579, i64 %581
  %583 = load ptr, ptr %30, align 8, !tbaa !5
  %584 = load i32, ptr %55, align 4, !tbaa !9
  %585 = sext i32 %584 to i64
  %586 = getelementptr inbounds double, ptr %583, i64 %585
  %587 = call i32 (ptr, ptr, ...) %578(ptr noundef %582, ptr noundef %586)
  %588 = load ptr, ptr %39, align 8, !tbaa !5
  %589 = load i32, ptr %55, align 4, !tbaa !9
  %590 = sext i32 %589 to i64
  %591 = getelementptr inbounds i32, ptr %588, i64 %590
  store i32 %587, ptr %591, align 4, !tbaa !9
  br label %592

592:                                              ; preds = %577
  %593 = load i32, ptr %55, align 4, !tbaa !9
  %594 = add nsw i32 %593, 1
  store i32 %594, ptr %55, align 4, !tbaa !9
  br label %573, !llvm.loop !13

595:                                              ; preds = %573
  %596 = load ptr, ptr %36, align 8, !tbaa !5
  %597 = load i32, ptr %596, align 4, !tbaa !9
  %598 = load i32, ptr %52, align 4, !tbaa !9
  %599 = sub nsw i32 %597, %598
  %600 = add nsw i32 %599, 1
  store i32 %600, ptr %45, align 4, !tbaa !9
  %601 = load ptr, ptr %24, align 8, !tbaa !5
  %602 = load ptr, ptr %21, align 8, !tbaa !5
  %603 = load ptr, ptr %39, align 8, !tbaa !5
  %604 = getelementptr inbounds i32, ptr %603, i64 1
  %605 = load ptr, ptr %25, align 8, !tbaa !5
  %606 = load ptr, ptr %26, align 8, !tbaa !5
  %607 = load i32, ptr %42, align 4, !tbaa !9
  %608 = sext i32 %607 to i64
  %609 = getelementptr inbounds double, ptr %606, i64 %608
  %610 = load ptr, ptr %27, align 8, !tbaa !5
  %611 = load ptr, ptr %31, align 8, !tbaa !5
  %612 = load i32, ptr %44, align 4, !tbaa !9
  %613 = sext i32 %612 to i64
  %614 = getelementptr inbounds double, ptr %611, i64 %613
  %615 = load ptr, ptr %32, align 8, !tbaa !5
  %616 = load ptr, ptr %29, align 8, !tbaa !5
  %617 = getelementptr inbounds double, ptr %616, i64 1
  %618 = load ptr, ptr %30, align 8, !tbaa !5
  %619 = getelementptr inbounds double, ptr %618, i64 1
  %620 = load ptr, ptr %28, align 8, !tbaa !5
  %621 = load ptr, ptr %33, align 8, !tbaa !5
  %622 = load ptr, ptr %34, align 8, !tbaa !5
  %623 = load ptr, ptr %35, align 8, !tbaa !5
  %624 = load i32, ptr %52, align 4, !tbaa !9
  %625 = sext i32 %624 to i64
  %626 = getelementptr inbounds double, ptr %623, i64 %625
  %627 = load ptr, ptr %37, align 8, !tbaa !5
  %628 = getelementptr inbounds i32, ptr %627, i64 1
  %629 = load ptr, ptr %38, align 8, !tbaa !5
  call void @dtrsen_(ptr noundef %601, ptr noundef %602, ptr noundef %604, ptr noundef %605, ptr noundef %609, ptr noundef %610, ptr noundef %614, ptr noundef %615, ptr noundef %617, ptr noundef %619, ptr noundef %620, ptr noundef %621, ptr noundef %622, ptr noundef %626, ptr noundef %45, ptr noundef %628, ptr noundef %629, ptr noundef %56)
  %630 = load i32, ptr %72, align 4, !tbaa !9
  %631 = icmp ne i32 %630, 0
  br i1 %631, label %655, label %632

632:                                              ; preds = %595
  %633 = load i32, ptr %71, align 4, !tbaa !9
  store i32 %633, ptr %45, align 4, !tbaa !9
  %634 = load ptr, ptr %25, align 8, !tbaa !5
  %635 = load i32, ptr %634, align 4, !tbaa !9
  %636 = load ptr, ptr %28, align 8, !tbaa !5
  %637 = load i32, ptr %636, align 4, !tbaa !9
  %638 = shl i32 %637, 1
  %639 = load ptr, ptr %25, align 8, !tbaa !5
  %640 = load i32, ptr %639, align 4, !tbaa !9
  %641 = load ptr, ptr %28, align 8, !tbaa !5
  %642 = load i32, ptr %641, align 4, !tbaa !9
  %643 = sub nsw i32 %640, %642
  %644 = mul nsw i32 %638, %643
  %645 = add nsw i32 %635, %644
  store i32 %645, ptr %46, align 4, !tbaa !9
  %646 = load i32, ptr %45, align 4, !tbaa !9
  %647 = load i32, ptr %46, align 4, !tbaa !9
  %648 = icmp sge i32 %646, %647
  br i1 %648, label %649, label %651

649:                                              ; preds = %632
  %650 = load i32, ptr %45, align 4, !tbaa !9
  br label %653

651:                                              ; preds = %632
  %652 = load i32, ptr %46, align 4, !tbaa !9
  br label %653

653:                                              ; preds = %651, %649
  %654 = phi i32 [ %650, %649 ], [ %652, %651 ]
  store i32 %654, ptr %71, align 4, !tbaa !9
  br label %655

655:                                              ; preds = %653, %595
  %656 = load i32, ptr %56, align 4, !tbaa !9
  %657 = icmp eq i32 %656, -15
  br i1 %657, label %658, label %660

658:                                              ; preds = %655
  %659 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -16, ptr %659, align 4, !tbaa !9
  br label %676

660:                                              ; preds = %655
  %661 = load i32, ptr %56, align 4, !tbaa !9
  %662 = icmp eq i32 %661, -17
  br i1 %662, label %663, label %665

663:                                              ; preds = %660
  %664 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -18, ptr %664, align 4, !tbaa !9
  br label %675

665:                                              ; preds = %660
  %666 = load i32, ptr %56, align 4, !tbaa !9
  %667 = icmp sgt i32 %666, 0
  br i1 %667, label %668, label %674

668:                                              ; preds = %665
  %669 = load i32, ptr %56, align 4, !tbaa !9
  %670 = load ptr, ptr %25, align 8, !tbaa !5
  %671 = load i32, ptr %670, align 4, !tbaa !9
  %672 = add nsw i32 %669, %671
  %673 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 %672, ptr %673, align 4, !tbaa !9
  br label %674

674:                                              ; preds = %668, %665
  br label %675

675:                                              ; preds = %674, %663
  br label %676

676:                                              ; preds = %675, %658
  br label %677

677:                                              ; preds = %676, %554, %551
  %678 = load i32, ptr %78, align 4, !tbaa !9
  %679 = icmp ne i32 %678, 0
  br i1 %679, label %680, label %692

680:                                              ; preds = %677
  %681 = load ptr, ptr %25, align 8, !tbaa !5
  %682 = load ptr, ptr %35, align 8, !tbaa !5
  %683 = load i32, ptr %48, align 4, !tbaa !9
  %684 = sext i32 %683 to i64
  %685 = getelementptr inbounds double, ptr %682, i64 %684
  %686 = load ptr, ptr %25, align 8, !tbaa !5
  %687 = load ptr, ptr %31, align 8, !tbaa !5
  %688 = load i32, ptr %44, align 4, !tbaa !9
  %689 = sext i32 %688 to i64
  %690 = getelementptr inbounds double, ptr %687, i64 %689
  %691 = load ptr, ptr %32, align 8, !tbaa !5
  call void @dgebak_(ptr noundef @.str.9, ptr noundef @.str.13, ptr noundef %681, ptr noundef %80, ptr noundef %79, ptr noundef %685, ptr noundef %686, ptr noundef %690, ptr noundef %691, ptr noundef %50)
  br label %692

692:                                              ; preds = %680, %677
  %693 = load i32, ptr %63, align 4, !tbaa !9
  %694 = icmp ne i32 %693, 0
  br i1 %694, label %695, label %972

695:                                              ; preds = %692
  %696 = load ptr, ptr %25, align 8, !tbaa !5
  %697 = load ptr, ptr %25, align 8, !tbaa !5
  %698 = load ptr, ptr %26, align 8, !tbaa !5
  %699 = load i32, ptr %42, align 4, !tbaa !9
  %700 = sext i32 %699 to i64
  %701 = getelementptr inbounds double, ptr %698, i64 %700
  %702 = load ptr, ptr %27, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.14, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %65, ptr noundef %49, ptr noundef %696, ptr noundef %697, ptr noundef %701, ptr noundef %702, ptr noundef %50)
  %703 = load ptr, ptr %27, align 8, !tbaa !5
  %704 = load i32, ptr %703, align 4, !tbaa !9
  %705 = add nsw i32 %704, 1
  store i32 %705, ptr %45, align 4, !tbaa !9
  %706 = load ptr, ptr %25, align 8, !tbaa !5
  %707 = load ptr, ptr %26, align 8, !tbaa !5
  %708 = load i32, ptr %42, align 4, !tbaa !9
  %709 = sext i32 %708 to i64
  %710 = getelementptr inbounds double, ptr %707, i64 %709
  %711 = load ptr, ptr %29, align 8, !tbaa !5
  %712 = getelementptr inbounds double, ptr %711, i64 1
  call void @dcopy_(ptr noundef %706, ptr noundef %710, ptr noundef %45, ptr noundef %712, ptr noundef @c__1)
  %713 = load i32, ptr %77, align 4, !tbaa !9
  %714 = icmp ne i32 %713, 0
  br i1 %714, label %718, label %715

715:                                              ; preds = %695
  %716 = load i32, ptr %67, align 4, !tbaa !9
  %717 = icmp ne i32 %716, 0
  br i1 %717, label %718, label %730

718:                                              ; preds = %715, %695
  %719 = load ptr, ptr %40, align 8, !tbaa !5
  %720 = load i32, ptr %719, align 4, !tbaa !9
  %721 = icmp eq i32 %720, 0
  br i1 %721, label %722, label %730

722:                                              ; preds = %718
  %723 = load ptr, ptr %34, align 8, !tbaa !5
  %724 = load double, ptr %723, align 8, !tbaa !11
  %725 = getelementptr inbounds [1 x double], ptr %81, i64 0, i64 0
  store double %724, ptr %725, align 8, !tbaa !11
  %726 = getelementptr inbounds [1 x double], ptr %81, i64 0, i64 0
  call void @dlascl_(ptr noundef @.str.11, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %65, ptr noundef %49, ptr noundef @c__1, ptr noundef @c__1, ptr noundef %726, ptr noundef @c__1, ptr noundef %50)
  %727 = getelementptr inbounds [1 x double], ptr %81, i64 0, i64 0
  %728 = load double, ptr %727, align 8, !tbaa !11
  %729 = load ptr, ptr %34, align 8, !tbaa !5
  store double %728, ptr %729, align 8, !tbaa !11
  br label %730

730:                                              ; preds = %722, %718, %715
  %731 = load double, ptr %65, align 8, !tbaa !11
  %732 = load double, ptr %73, align 8, !tbaa !11
  %733 = fcmp oeq double %731, %732
  br i1 %733, label %734, label %951

734:                                              ; preds = %730
  %735 = load i32, ptr %57, align 4, !tbaa !9
  %736 = icmp sgt i32 %735, 0
  br i1 %736, label %737, label %747

737:                                              ; preds = %734
  %738 = load i32, ptr %57, align 4, !tbaa !9
  %739 = add nsw i32 %738, 1
  store i32 %739, ptr %60, align 4, !tbaa !9
  %740 = load i32, ptr %79, align 4, !tbaa !9
  %741 = sub nsw i32 %740, 1
  store i32 %741, ptr %61, align 4, !tbaa !9
  %742 = load i32, ptr %80, align 4, !tbaa !9
  %743 = sub nsw i32 %742, 1
  store i32 %743, ptr %45, align 4, !tbaa !9
  %744 = load ptr, ptr %30, align 8, !tbaa !5
  %745 = getelementptr inbounds double, ptr %744, i64 1
  %746 = load ptr, ptr %25, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.11, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %65, ptr noundef %49, ptr noundef %45, ptr noundef @c__1, ptr noundef %745, ptr noundef %746, ptr noundef %50)
  br label %759

747:                                              ; preds = %734
  %748 = load i32, ptr %75, align 4, !tbaa !9
  %749 = icmp ne i32 %748, 0
  br i1 %749, label %750, label %754

750:                                              ; preds = %747
  store i32 1, ptr %60, align 4, !tbaa !9
  %751 = load ptr, ptr %25, align 8, !tbaa !5
  %752 = load i32, ptr %751, align 4, !tbaa !9
  %753 = sub nsw i32 %752, 1
  store i32 %753, ptr %61, align 4, !tbaa !9
  br label %758

754:                                              ; preds = %747
  %755 = load i32, ptr %80, align 4, !tbaa !9
  store i32 %755, ptr %60, align 4, !tbaa !9
  %756 = load i32, ptr %79, align 4, !tbaa !9
  %757 = sub nsw i32 %756, 1
  store i32 %757, ptr %61, align 4, !tbaa !9
  br label %758

758:                                              ; preds = %754, %750
  br label %759

759:                                              ; preds = %758, %737
  %760 = load i32, ptr %60, align 4, !tbaa !9
  %761 = sub nsw i32 %760, 1
  store i32 %761, ptr %54, align 4, !tbaa !9
  %762 = load i32, ptr %61, align 4, !tbaa !9
  store i32 %762, ptr %45, align 4, !tbaa !9
  %763 = load i32, ptr %60, align 4, !tbaa !9
  store i32 %763, ptr %55, align 4, !tbaa !9
  br label %764

764:                                              ; preds = %947, %759
  %765 = load i32, ptr %55, align 4, !tbaa !9
  %766 = load i32, ptr %45, align 4, !tbaa !9
  %767 = icmp sle i32 %765, %766
  br i1 %767, label %768, label %950

768:                                              ; preds = %764
  %769 = load i32, ptr %55, align 4, !tbaa !9
  %770 = load i32, ptr %54, align 4, !tbaa !9
  %771 = icmp slt i32 %769, %770
  br i1 %771, label %772, label %773

772:                                              ; preds = %768
  br label %946

773:                                              ; preds = %768
  %774 = load ptr, ptr %30, align 8, !tbaa !5
  %775 = load i32, ptr %55, align 4, !tbaa !9
  %776 = sext i32 %775 to i64
  %777 = getelementptr inbounds double, ptr %774, i64 %776
  %778 = load double, ptr %777, align 8, !tbaa !11
  %779 = fcmp oeq double %778, 0.000000e+00
  br i1 %779, label %780, label %783

780:                                              ; preds = %773
  %781 = load i32, ptr %55, align 4, !tbaa !9
  %782 = add nsw i32 %781, 1
  store i32 %782, ptr %54, align 4, !tbaa !9
  br label %945

783:                                              ; preds = %773
  %784 = load ptr, ptr %26, align 8, !tbaa !5
  %785 = load i32, ptr %55, align 4, !tbaa !9
  %786 = add nsw i32 %785, 1
  %787 = load i32, ptr %55, align 4, !tbaa !9
  %788 = load i32, ptr %41, align 4, !tbaa !9
  %789 = mul nsw i32 %787, %788
  %790 = add nsw i32 %786, %789
  %791 = sext i32 %790 to i64
  %792 = getelementptr inbounds double, ptr %784, i64 %791
  %793 = load double, ptr %792, align 8, !tbaa !11
  %794 = fcmp oeq double %793, 0.000000e+00
  br i1 %794, label %795, label %805

795:                                              ; preds = %783
  %796 = load ptr, ptr %30, align 8, !tbaa !5
  %797 = load i32, ptr %55, align 4, !tbaa !9
  %798 = sext i32 %797 to i64
  %799 = getelementptr inbounds double, ptr %796, i64 %798
  store double 0.000000e+00, ptr %799, align 8, !tbaa !11
  %800 = load ptr, ptr %30, align 8, !tbaa !5
  %801 = load i32, ptr %55, align 4, !tbaa !9
  %802 = add nsw i32 %801, 1
  %803 = sext i32 %802 to i64
  %804 = getelementptr inbounds double, ptr %800, i64 %803
  store double 0.000000e+00, ptr %804, align 8, !tbaa !11
  br label %942

805:                                              ; preds = %783
  %806 = load ptr, ptr %26, align 8, !tbaa !5
  %807 = load i32, ptr %55, align 4, !tbaa !9
  %808 = add nsw i32 %807, 1
  %809 = load i32, ptr %55, align 4, !tbaa !9
  %810 = load i32, ptr %41, align 4, !tbaa !9
  %811 = mul nsw i32 %809, %810
  %812 = add nsw i32 %808, %811
  %813 = sext i32 %812 to i64
  %814 = getelementptr inbounds double, ptr %806, i64 %813
  %815 = load double, ptr %814, align 8, !tbaa !11
  %816 = fcmp une double %815, 0.000000e+00
  br i1 %816, label %817, label %941

817:                                              ; preds = %805
  %818 = load ptr, ptr %26, align 8, !tbaa !5
  %819 = load i32, ptr %55, align 4, !tbaa !9
  %820 = load i32, ptr %55, align 4, !tbaa !9
  %821 = add nsw i32 %820, 1
  %822 = load i32, ptr %41, align 4, !tbaa !9
  %823 = mul nsw i32 %821, %822
  %824 = add nsw i32 %819, %823
  %825 = sext i32 %824 to i64
  %826 = getelementptr inbounds double, ptr %818, i64 %825
  %827 = load double, ptr %826, align 8, !tbaa !11
  %828 = fcmp oeq double %827, 0.000000e+00
  br i1 %828, label %829, label %941

829:                                              ; preds = %817
  %830 = load ptr, ptr %30, align 8, !tbaa !5
  %831 = load i32, ptr %55, align 4, !tbaa !9
  %832 = sext i32 %831 to i64
  %833 = getelementptr inbounds double, ptr %830, i64 %832
  store double 0.000000e+00, ptr %833, align 8, !tbaa !11
  %834 = load ptr, ptr %30, align 8, !tbaa !5
  %835 = load i32, ptr %55, align 4, !tbaa !9
  %836 = add nsw i32 %835, 1
  %837 = sext i32 %836 to i64
  %838 = getelementptr inbounds double, ptr %834, i64 %837
  store double 0.000000e+00, ptr %838, align 8, !tbaa !11
  %839 = load i32, ptr %55, align 4, !tbaa !9
  %840 = icmp sgt i32 %839, 1
  br i1 %840, label %841, label %859

841:                                              ; preds = %829
  %842 = load i32, ptr %55, align 4, !tbaa !9
  %843 = sub nsw i32 %842, 1
  store i32 %843, ptr %46, align 4, !tbaa !9
  %844 = load ptr, ptr %26, align 8, !tbaa !5
  %845 = load i32, ptr %55, align 4, !tbaa !9
  %846 = load i32, ptr %41, align 4, !tbaa !9
  %847 = mul nsw i32 %845, %846
  %848 = add nsw i32 %847, 1
  %849 = sext i32 %848 to i64
  %850 = getelementptr inbounds double, ptr %844, i64 %849
  %851 = load ptr, ptr %26, align 8, !tbaa !5
  %852 = load i32, ptr %55, align 4, !tbaa !9
  %853 = add nsw i32 %852, 1
  %854 = load i32, ptr %41, align 4, !tbaa !9
  %855 = mul nsw i32 %853, %854
  %856 = add nsw i32 %855, 1
  %857 = sext i32 %856 to i64
  %858 = getelementptr inbounds double, ptr %851, i64 %857
  call void @dswap_(ptr noundef %46, ptr noundef %850, ptr noundef @c__1, ptr noundef %858, ptr noundef @c__1)
  br label %859

859:                                              ; preds = %841, %829
  %860 = load ptr, ptr %25, align 8, !tbaa !5
  %861 = load i32, ptr %860, align 4, !tbaa !9
  %862 = load i32, ptr %55, align 4, !tbaa !9
  %863 = add nsw i32 %862, 1
  %864 = icmp sgt i32 %861, %863
  br i1 %864, label %865, label %892

865:                                              ; preds = %859
  %866 = load ptr, ptr %25, align 8, !tbaa !5
  %867 = load i32, ptr %866, align 4, !tbaa !9
  %868 = load i32, ptr %55, align 4, !tbaa !9
  %869 = sub nsw i32 %867, %868
  %870 = sub nsw i32 %869, 1
  store i32 %870, ptr %46, align 4, !tbaa !9
  %871 = load ptr, ptr %26, align 8, !tbaa !5
  %872 = load i32, ptr %55, align 4, !tbaa !9
  %873 = load i32, ptr %55, align 4, !tbaa !9
  %874 = add nsw i32 %873, 2
  %875 = load i32, ptr %41, align 4, !tbaa !9
  %876 = mul nsw i32 %874, %875
  %877 = add nsw i32 %872, %876
  %878 = sext i32 %877 to i64
  %879 = getelementptr inbounds double, ptr %871, i64 %878
  %880 = load ptr, ptr %27, align 8, !tbaa !5
  %881 = load ptr, ptr %26, align 8, !tbaa !5
  %882 = load i32, ptr %55, align 4, !tbaa !9
  %883 = add nsw i32 %882, 1
  %884 = load i32, ptr %55, align 4, !tbaa !9
  %885 = add nsw i32 %884, 2
  %886 = load i32, ptr %41, align 4, !tbaa !9
  %887 = mul nsw i32 %885, %886
  %888 = add nsw i32 %883, %887
  %889 = sext i32 %888 to i64
  %890 = getelementptr inbounds double, ptr %881, i64 %889
  %891 = load ptr, ptr %27, align 8, !tbaa !5
  call void @dswap_(ptr noundef %46, ptr noundef %879, ptr noundef %880, ptr noundef %890, ptr noundef %891)
  br label %892

892:                                              ; preds = %865, %859
  %893 = load i32, ptr %78, align 4, !tbaa !9
  %894 = icmp ne i32 %893, 0
  br i1 %894, label %895, label %912

895:                                              ; preds = %892
  %896 = load ptr, ptr %25, align 8, !tbaa !5
  %897 = load ptr, ptr %31, align 8, !tbaa !5
  %898 = load i32, ptr %55, align 4, !tbaa !9
  %899 = load i32, ptr %43, align 4, !tbaa !9
  %900 = mul nsw i32 %898, %899
  %901 = add nsw i32 %900, 1
  %902 = sext i32 %901 to i64
  %903 = getelementptr inbounds double, ptr %897, i64 %902
  %904 = load ptr, ptr %31, align 8, !tbaa !5
  %905 = load i32, ptr %55, align 4, !tbaa !9
  %906 = add nsw i32 %905, 1
  %907 = load i32, ptr %43, align 4, !tbaa !9
  %908 = mul nsw i32 %906, %907
  %909 = add nsw i32 %908, 1
  %910 = sext i32 %909 to i64
  %911 = getelementptr inbounds double, ptr %904, i64 %910
  call void @dswap_(ptr noundef %896, ptr noundef %903, ptr noundef @c__1, ptr noundef %911, ptr noundef @c__1)
  br label %912

912:                                              ; preds = %895, %892
  %913 = load ptr, ptr %26, align 8, !tbaa !5
  %914 = load i32, ptr %55, align 4, !tbaa !9
  %915 = add nsw i32 %914, 1
  %916 = load i32, ptr %55, align 4, !tbaa !9
  %917 = load i32, ptr %41, align 4, !tbaa !9
  %918 = mul nsw i32 %916, %917
  %919 = add nsw i32 %915, %918
  %920 = sext i32 %919 to i64
  %921 = getelementptr inbounds double, ptr %913, i64 %920
  %922 = load double, ptr %921, align 8, !tbaa !11
  %923 = load ptr, ptr %26, align 8, !tbaa !5
  %924 = load i32, ptr %55, align 4, !tbaa !9
  %925 = load i32, ptr %55, align 4, !tbaa !9
  %926 = add nsw i32 %925, 1
  %927 = load i32, ptr %41, align 4, !tbaa !9
  %928 = mul nsw i32 %926, %927
  %929 = add nsw i32 %924, %928
  %930 = sext i32 %929 to i64
  %931 = getelementptr inbounds double, ptr %923, i64 %930
  store double %922, ptr %931, align 8, !tbaa !11
  %932 = load ptr, ptr %26, align 8, !tbaa !5
  %933 = load i32, ptr %55, align 4, !tbaa !9
  %934 = add nsw i32 %933, 1
  %935 = load i32, ptr %55, align 4, !tbaa !9
  %936 = load i32, ptr %41, align 4, !tbaa !9
  %937 = mul nsw i32 %935, %936
  %938 = add nsw i32 %934, %937
  %939 = sext i32 %938 to i64
  %940 = getelementptr inbounds double, ptr %932, i64 %939
  store double 0.000000e+00, ptr %940, align 8, !tbaa !11
  br label %941

941:                                              ; preds = %912, %817, %805
  br label %942

942:                                              ; preds = %941, %795
  %943 = load i32, ptr %55, align 4, !tbaa !9
  %944 = add nsw i32 %943, 2
  store i32 %944, ptr %54, align 4, !tbaa !9
  br label %945

945:                                              ; preds = %942, %780
  br label %946

946:                                              ; preds = %945, %772
  br label %947

947:                                              ; preds = %946
  %948 = load i32, ptr %55, align 4, !tbaa !9
  %949 = add nsw i32 %948, 1
  store i32 %949, ptr %55, align 4, !tbaa !9
  br label %764, !llvm.loop !15

950:                                              ; preds = %764
  br label %951

951:                                              ; preds = %950, %730
  %952 = load ptr, ptr %25, align 8, !tbaa !5
  %953 = load i32, ptr %952, align 4, !tbaa !9
  %954 = load i32, ptr %57, align 4, !tbaa !9
  %955 = sub nsw i32 %953, %954
  store i32 %955, ptr %45, align 4, !tbaa !9
  %956 = load ptr, ptr %25, align 8, !tbaa !5
  %957 = load i32, ptr %956, align 4, !tbaa !9
  %958 = load i32, ptr %57, align 4, !tbaa !9
  %959 = sub nsw i32 %957, %958
  store i32 %959, ptr %47, align 4, !tbaa !9
  %960 = load i32, ptr %47, align 4, !tbaa !9
  %961 = icmp sge i32 %960, 1
  br i1 %961, label %962, label %964

962:                                              ; preds = %951
  %963 = load i32, ptr %47, align 4, !tbaa !9
  br label %965

964:                                              ; preds = %951
  br label %965

965:                                              ; preds = %964, %962
  %966 = phi i32 [ %963, %962 ], [ 1, %964 ]
  store i32 %966, ptr %46, align 4, !tbaa !9
  %967 = load ptr, ptr %30, align 8, !tbaa !5
  %968 = load i32, ptr %57, align 4, !tbaa !9
  %969 = add nsw i32 %968, 1
  %970 = sext i32 %969 to i64
  %971 = getelementptr inbounds double, ptr %967, i64 %970
  call void @dlascl_(ptr noundef @.str.11, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %65, ptr noundef %49, ptr noundef %45, ptr noundef @c__1, ptr noundef %971, ptr noundef %46, ptr noundef %50)
  br label %972

972:                                              ; preds = %965, %692
  %973 = load i32, ptr %75, align 4, !tbaa !9
  %974 = icmp ne i32 %973, 0
  br i1 %974, label %975, label %1063

975:                                              ; preds = %972
  %976 = load ptr, ptr %40, align 8, !tbaa !5
  %977 = load i32, ptr %976, align 4, !tbaa !9
  %978 = icmp eq i32 %977, 0
  br i1 %978, label %979, label %1063

979:                                              ; preds = %975
  store i32 1, ptr %69, align 4, !tbaa !9
  store i32 1, ptr %62, align 4, !tbaa !9
  %980 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 0, ptr %980, align 4, !tbaa !9
  store i32 0, ptr %64, align 4, !tbaa !9
  %981 = load ptr, ptr %25, align 8, !tbaa !5
  %982 = load i32, ptr %981, align 4, !tbaa !9
  store i32 %982, ptr %45, align 4, !tbaa !9
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %983

983:                                              ; preds = %1059, %979
  %984 = load i32, ptr %55, align 4, !tbaa !9
  %985 = load i32, ptr %45, align 4, !tbaa !9
  %986 = icmp sle i32 %984, %985
  br i1 %986, label %987, label %1062

987:                                              ; preds = %983
  %988 = load ptr, ptr %23, align 8, !tbaa !5
  %989 = load ptr, ptr %29, align 8, !tbaa !5
  %990 = load i32, ptr %55, align 4, !tbaa !9
  %991 = sext i32 %990 to i64
  %992 = getelementptr inbounds double, ptr %989, i64 %991
  %993 = load ptr, ptr %30, align 8, !tbaa !5
  %994 = load i32, ptr %55, align 4, !tbaa !9
  %995 = sext i32 %994 to i64
  %996 = getelementptr inbounds double, ptr %993, i64 %995
  %997 = call i32 (ptr, ptr, ...) %988(ptr noundef %992, ptr noundef %996)
  store i32 %997, ptr %58, align 4, !tbaa !9
  %998 = load ptr, ptr %30, align 8, !tbaa !5
  %999 = load i32, ptr %55, align 4, !tbaa !9
  %1000 = sext i32 %999 to i64
  %1001 = getelementptr inbounds double, ptr %998, i64 %1000
  %1002 = load double, ptr %1001, align 8, !tbaa !11
  %1003 = fcmp oeq double %1002, 0.000000e+00
  br i1 %1003, label %1004, label %1023

1004:                                             ; preds = %987
  %1005 = load i32, ptr %58, align 4, !tbaa !9
  %1006 = icmp ne i32 %1005, 0
  br i1 %1006, label %1007, label %1011

1007:                                             ; preds = %1004
  %1008 = load ptr, ptr %28, align 8, !tbaa !5
  %1009 = load i32, ptr %1008, align 4, !tbaa !9
  %1010 = add nsw i32 %1009, 1
  store i32 %1010, ptr %1008, align 4, !tbaa !9
  br label %1011

1011:                                             ; preds = %1007, %1004
  store i32 0, ptr %64, align 4, !tbaa !9
  %1012 = load i32, ptr %58, align 4, !tbaa !9
  %1013 = icmp ne i32 %1012, 0
  br i1 %1013, label %1014, label %1022

1014:                                             ; preds = %1011
  %1015 = load i32, ptr %69, align 4, !tbaa !9
  %1016 = icmp ne i32 %1015, 0
  br i1 %1016, label %1022, label %1017

1017:                                             ; preds = %1014
  %1018 = load ptr, ptr %25, align 8, !tbaa !5
  %1019 = load i32, ptr %1018, align 4, !tbaa !9
  %1020 = add nsw i32 %1019, 2
  %1021 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 %1020, ptr %1021, align 4, !tbaa !9
  br label %1022

1022:                                             ; preds = %1017, %1014, %1011
  br label %1056

1023:                                             ; preds = %987
  %1024 = load i32, ptr %64, align 4, !tbaa !9
  %1025 = icmp eq i32 %1024, 1
  br i1 %1025, label %1026, label %1054

1026:                                             ; preds = %1023
  %1027 = load i32, ptr %58, align 4, !tbaa !9
  %1028 = icmp ne i32 %1027, 0
  br i1 %1028, label %1032, label %1029

1029:                                             ; preds = %1026
  %1030 = load i32, ptr %69, align 4, !tbaa !9
  %1031 = icmp ne i32 %1030, 0
  br label %1032

1032:                                             ; preds = %1029, %1026
  %1033 = phi i1 [ true, %1026 ], [ %1031, %1029 ]
  %1034 = zext i1 %1033 to i32
  store i32 %1034, ptr %58, align 4, !tbaa !9
  %1035 = load i32, ptr %58, align 4, !tbaa !9
  store i32 %1035, ptr %69, align 4, !tbaa !9
  %1036 = load i32, ptr %58, align 4, !tbaa !9
  %1037 = icmp ne i32 %1036, 0
  br i1 %1037, label %1038, label %1042

1038:                                             ; preds = %1032
  %1039 = load ptr, ptr %28, align 8, !tbaa !5
  %1040 = load i32, ptr %1039, align 4, !tbaa !9
  %1041 = add nsw i32 %1040, 2
  store i32 %1041, ptr %1039, align 4, !tbaa !9
  br label %1042

1042:                                             ; preds = %1038, %1032
  store i32 -1, ptr %64, align 4, !tbaa !9
  %1043 = load i32, ptr %58, align 4, !tbaa !9
  %1044 = icmp ne i32 %1043, 0
  br i1 %1044, label %1045, label %1053

1045:                                             ; preds = %1042
  %1046 = load i32, ptr %62, align 4, !tbaa !9
  %1047 = icmp ne i32 %1046, 0
  br i1 %1047, label %1053, label %1048

1048:                                             ; preds = %1045
  %1049 = load ptr, ptr %25, align 8, !tbaa !5
  %1050 = load i32, ptr %1049, align 4, !tbaa !9
  %1051 = add nsw i32 %1050, 2
  %1052 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 %1051, ptr %1052, align 4, !tbaa !9
  br label %1053

1053:                                             ; preds = %1048, %1045, %1042
  br label %1055

1054:                                             ; preds = %1023
  store i32 1, ptr %64, align 4, !tbaa !9
  br label %1055

1055:                                             ; preds = %1054, %1053
  br label %1056

1056:                                             ; preds = %1055, %1022
  %1057 = load i32, ptr %69, align 4, !tbaa !9
  store i32 %1057, ptr %62, align 4, !tbaa !9
  %1058 = load i32, ptr %58, align 4, !tbaa !9
  store i32 %1058, ptr %69, align 4, !tbaa !9
  br label %1059

1059:                                             ; preds = %1056
  %1060 = load i32, ptr %55, align 4, !tbaa !9
  %1061 = add nsw i32 %1060, 1
  store i32 %1061, ptr %55, align 4, !tbaa !9
  br label %983, !llvm.loop !16

1062:                                             ; preds = %983
  br label %1063

1063:                                             ; preds = %1062, %975, %972
  %1064 = load i32, ptr %71, align 4, !tbaa !9
  %1065 = sitofp i32 %1064 to double
  %1066 = load ptr, ptr %35, align 8, !tbaa !5
  %1067 = getelementptr inbounds double, ptr %1066, i64 1
  store double %1065, ptr %1067, align 8, !tbaa !11
  %1068 = load i32, ptr %77, align 4, !tbaa !9
  %1069 = icmp ne i32 %1068, 0
  br i1 %1069, label %1073, label %1070

1070:                                             ; preds = %1063
  %1071 = load i32, ptr %67, align 4, !tbaa !9
  %1072 = icmp ne i32 %1071, 0
  br i1 %1072, label %1073, label %1093

1073:                                             ; preds = %1070, %1063
  store i32 1, ptr %45, align 4, !tbaa !9
  %1074 = load ptr, ptr %28, align 8, !tbaa !5
  %1075 = load i32, ptr %1074, align 4, !tbaa !9
  %1076 = load ptr, ptr %25, align 8, !tbaa !5
  %1077 = load i32, ptr %1076, align 4, !tbaa !9
  %1078 = load ptr, ptr %28, align 8, !tbaa !5
  %1079 = load i32, ptr %1078, align 4, !tbaa !9
  %1080 = sub nsw i32 %1077, %1079
  %1081 = mul nsw i32 %1075, %1080
  store i32 %1081, ptr %46, align 4, !tbaa !9
  %1082 = load i32, ptr %45, align 4, !tbaa !9
  %1083 = load i32, ptr %46, align 4, !tbaa !9
  %1084 = icmp sge i32 %1082, %1083
  br i1 %1084, label %1085, label %1087

1085:                                             ; preds = %1073
  %1086 = load i32, ptr %45, align 4, !tbaa !9
  br label %1089

1087:                                             ; preds = %1073
  %1088 = load i32, ptr %46, align 4, !tbaa !9
  br label %1089

1089:                                             ; preds = %1087, %1085
  %1090 = phi i32 [ %1086, %1085 ], [ %1088, %1087 ]
  %1091 = load ptr, ptr %37, align 8, !tbaa !5
  %1092 = getelementptr inbounds i32, ptr %1091, i64 1
  store i32 %1090, ptr %1092, align 4, !tbaa !9
  br label %1096

1093:                                             ; preds = %1070
  %1094 = load ptr, ptr %37, align 8, !tbaa !5
  %1095 = getelementptr inbounds i32, ptr %1094, i64 1
  store i32 1, ptr %1095, align 4, !tbaa !9
  br label %1096

1096:                                             ; preds = %1093, %1089
  store i32 1, ptr %83, align 4
  br label %1097

1097:                                             ; preds = %1096, %398, %392, %384
  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 4, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #4
  ret void
}

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

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

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

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

51:                                               ; preds = %20
  %52 = load i32, ptr %17, align 4, !tbaa !5
  %53 = icmp eq i32 %52, -1
  br label %54

54:                                               ; preds = %51, %20
  %55 = phi i1 [ true, %20 ], [ %53, %51 ]
  %.not = icmp ne i32 %43, 0
  br i1 %.not, label %58, label %56

56:                                               ; preds = %54
  %57 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #5
  %.not421 = icmp eq i32 %57, 0
  br i1 %.not421, label %.thread445.sink.split, label %58

58:                                               ; preds = %56, %54
  %.not423 = icmp eq i32 %44, 0
  br i1 %.not423, label %59, label %61

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

61:                                               ; preds = %59, %58
  %62 = icmp eq i32 %45, 0
  %63 = icmp eq i32 %46, 0
  %or.cond.not467 = select i1 %62, i1 %63, i1 false
  %64 = icmp eq i32 %47, 0
  %or.cond3.not464 = select i1 %or.cond.not467, i1 %64, i1 false
  %65 = icmp eq i32 %48, 0
  %or.cond5.not462 = select i1 %or.cond3.not464, i1 %65, i1 false
  %66 = or i32 %45, %44
  %or.cond7.not = icmp eq i32 %66, 0
  %or.cond440 = select i1 %or.cond5.not462, i1 true, i1 %or.cond7.not
  br i1 %or.cond440, label %.thread445.sink.split, label %67

67:                                               ; preds = %61
  %68 = load i32, ptr %4, align 4, !tbaa !5
  %69 = icmp slt i32 %68, 0
  br i1 %69, label %.thread445.sink.split, label %70

70:                                               ; preds = %67
  %71 = load i32, ptr %6, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %68, i32 1)
  %72 = icmp slt i32 %71, %spec.select
  br i1 %72, label %.thread445.sink.split, label %73

73:                                               ; preds = %70
  %74 = load i32, ptr %11, align 4, !tbaa !5
  %75 = icmp slt i32 %74, 1
  %76 = icmp ult i32 %74, %68
  %or.cond460 = and i1 %.not, %76
  %or.cond = or i1 %75, %or.cond460
  br i1 %or.cond, label %.thread445.sink.split, label %77

77:                                               ; preds = %73
  %.pr = load i32, ptr %19, align 4, !tbaa !5
  %78 = icmp eq i32 %.pr, 0
  br i1 %78, label %79, label %.thread445

79:                                               ; preds = %77
  %80 = icmp eq i32 %68, 0
  br i1 %80, label %113, label %81

81:                                               ; preds = %79
  %82 = tail call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef nonnull %4, ptr noundef nonnull @c__0, i32 noundef 6, i32 noundef 1) #5
  %83 = add i32 %82, 2
  %84 = mul i32 %83, %68
  %85 = load i32, ptr %4, align 4, !tbaa !5
  %86 = mul nsw i32 %85, 3
  call void @dhseqr_(ptr noundef nonnull @.str.1, ptr noundef %0, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %14, ptr noundef nonnull @c_n1, ptr noundef nonnull %26) #5
  %87 = load double, ptr %14, align 8, !tbaa !9
  %88 = fptosi double %87 to i32
  br i1 %.not, label %89, label %98

89:                                               ; preds = %81
  store i32 %84, ptr %21, align 4, !tbaa !5
  %90 = load i32, ptr %4, align 4, !tbaa !5
  %91 = shl i32 %90, 1
  %92 = add nsw i32 %90, -1
  %93 = call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.6, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef nonnull %4, ptr noundef nonnull @c_n1, i32 noundef 6, i32 noundef 1) #5
  %94 = mul nsw i32 %92, %93
  %95 = add nsw i32 %94, %91
  %96 = load i32, ptr %21, align 4
  %97 = call i32 @llvm.smax.i32(i32 %96, i32 %95)
  br label %98

98:                                               ; preds = %81, %89
  %.sink508 = phi i32 [ %97, %89 ], [ %84, %81 ]
  %99 = load i32, ptr %4, align 4, !tbaa !5
  %100 = add nsw i32 %99, %88
  %101 = call i32 @llvm.smax.i32(i32 %.sink508, i32 %100)
  store i32 %.sink508, ptr %21, align 4
  store i32 %100, ptr %22, align 4
  br i1 %62, label %102, label %107

102:                                              ; preds = %98
  store i32 %101, ptr %21, align 4, !tbaa !5
  %103 = mul nsw i32 %99, %99
  %104 = lshr i32 %103, 1
  %105 = add nsw i32 %104, %99
  store i32 %105, ptr %22, align 4, !tbaa !5
  %106 = call i32 @llvm.smax.i32(i32 %101, i32 %105)
  br label %107

107:                                              ; preds = %102, %98
  %.0391 = phi i32 [ %101, %98 ], [ %106, %102 ]
  %108 = icmp ne i32 %47, 0
  %109 = icmp ne i32 %48, 0
  %or.cond9 = select i1 %108, i1 true, i1 %109
  br i1 %or.cond9, label %110, label %113

110:                                              ; preds = %107
  %111 = mul nsw i32 %99, %99
  %112 = lshr i32 %111, 2
  br label %113

113:                                              ; preds = %79, %110, %107
  %.0399 = phi i32 [ %112, %110 ], [ 1, %107 ], [ 1, %79 ]
  %.1392 = phi i32 [ %.0391, %110 ], [ %.0391, %107 ], [ 1, %79 ]
  %.0388 = phi i32 [ %86, %110 ], [ %86, %107 ], [ 1, %79 ]
  %.1 = phi i32 [ %101, %110 ], [ %101, %107 ], [ undef, %79 ]
  store i32 %.0399, ptr %16, align 4, !tbaa !5
  %114 = sitofp i32 %.1392 to double
  store double %114, ptr %14, align 8, !tbaa !9
  %115 = load i32, ptr %15, align 4, !tbaa !5
  %116 = icmp sge i32 %115, %.0388
  %or.cond11 = select i1 %116, i1 true, i1 %55
  br i1 %or.cond11, label %117, label %.thread445.sink.split

117:                                              ; preds = %113
  %118 = load i32, ptr %17, align 4, !tbaa !5
  %119 = icmp sgt i32 %118, 0
  %or.cond13 = select i1 %119, i1 true, i1 %55
  br i1 %or.cond13, label %.thread, label %.thread445.sink.split

.thread:                                          ; preds = %117
  %.pr442.pr = load i32, ptr %19, align 4, !tbaa !5
  %.not429 = icmp eq i32 %.pr442.pr, 0
  br i1 %.not429, label %123, label %.thread445

.thread445.sink.split:                            ; preds = %117, %113, %73, %70, %67, %61, %59, %56
  %.sink = phi i32 [ -1, %56 ], [ -2, %59 ], [ -4, %61 ], [ -5, %67 ], [ -7, %70 ], [ -12, %73 ], [ -16, %113 ], [ -18, %117 ]
  store i32 %.sink, ptr %19, align 4, !tbaa !5
  br label %.thread445

.thread445:                                       ; preds = %.thread445.sink.split, %77, %.thread
  %120 = phi i32 [ %.pr442.pr, %.thread ], [ %.pr, %77 ], [ %.sink, %.thread445.sink.split ]
  %121 = sub nsw i32 0, %120
  store i32 %121, ptr %21, align 4, !tbaa !5
  %122 = call i32 @xerbla_(ptr noundef nonnull @.str.8, ptr noundef nonnull %21, i32 noundef 6) #5
  br label %337

123:                                              ; preds = %.thread
  br i1 %55, label %337, label %124

124:                                              ; preds = %123
  %125 = load i32, ptr %4, align 4, !tbaa !5
  %126 = icmp eq i32 %125, 0
  br i1 %126, label %127, label %128

127:                                              ; preds = %124
  store i32 0, ptr %7, align 4, !tbaa !5
  br label %337

128:                                              ; preds = %124
  %129 = call double @dlamch_(ptr noundef nonnull @.str.9) #5
  %130 = call double @dlamch_(ptr noundef nonnull @.str.1) #5
  store double %130, ptr %29, align 8, !tbaa !9
  %131 = fdiv double 1.000000e+00, %130
  store double %131, ptr %28, align 8, !tbaa !9
  call void @dlabad_(ptr noundef nonnull %29, ptr noundef nonnull %28) #5
  %132 = load double, ptr %29, align 8, !tbaa !9
  %133 = call double @sqrt(double noundef %132) #5
  %134 = fdiv double %133, %129
  store double %134, ptr %29, align 8, !tbaa !9
  %135 = fdiv double 1.000000e+00, %134
  store double %135, ptr %28, align 8, !tbaa !9
  %136 = call double @dlange_(ptr noundef nonnull @.str.10, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %32) #5
  store double %136, ptr %23, align 8, !tbaa !9
  %137 = fcmp ogt double %136, 0.000000e+00
  %138 = load double, ptr %29, align 8
  %139 = fcmp olt double %136, %138
  %or.cond471 = select i1 %137, i1 %139, i1 false
  br i1 %or.cond471, label %143, label %140

140:                                              ; preds = %128
  %141 = load double, ptr %28, align 8, !tbaa !9
  %142 = fcmp ogt double %136, %141
  br i1 %142, label %143, label %144

143:                                              ; preds = %128, %140
  %storemerge468 = phi double [ %141, %140 ], [ %138, %128 ]
  store double %storemerge468, ptr %27, align 8, !tbaa !9
  call void @dlascl_(ptr noundef nonnull @.str.11, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %23, ptr noundef nonnull %27, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %24) #5
  br label %144

144:                                              ; preds = %140, %143
  %.not430452 = phi i1 [ false, %143 ], [ true, %140 ]
  call void @dgebal_(ptr noundef nonnull @.str.9, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %31, ptr noundef nonnull %30, ptr noundef nonnull %14, ptr noundef nonnull %24) #5
  %145 = load i32, ptr %4, align 4, !tbaa !5
  %146 = add nsw i32 %145, 1
  %147 = add nsw i32 %146, %145
  %148 = load i32, ptr %15, align 4, !tbaa !5
  %149 = add i32 %148, 1
  %150 = sub i32 %149, %147
  store i32 %150, ptr %21, align 4, !tbaa !5
  %151 = sext i32 %146 to i64
  %152 = getelementptr inbounds double, ptr %41, i64 %151
  %153 = sext i32 %147 to i64
  %154 = getelementptr inbounds double, ptr %41, i64 %153
  call void @dgehrd_(ptr noundef nonnull %4, ptr noundef nonnull %31, ptr noundef nonnull %30, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %152, ptr noundef nonnull %154, ptr noundef nonnull %21, ptr noundef nonnull %24) #5
  br i1 %.not, label %155, label %158

155:                                              ; preds = %144
  call void @dlacpy_(ptr noundef nonnull @.str.12, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %10, ptr noundef nonnull %11) #5
  %156 = load i32, ptr %15, align 4, !tbaa !5
  %reass.sub = sub i32 %156, %147
  %157 = add i32 %reass.sub, 1
  store i32 %157, ptr %21, align 4, !tbaa !5
  call void @dorghr_(ptr noundef nonnull %4, ptr noundef nonnull %31, ptr noundef nonnull %30, ptr noundef %10, ptr noundef nonnull %11, ptr noundef nonnull %152, ptr noundef nonnull %154, ptr noundef nonnull %21, ptr noundef nonnull %24) #5
  br label %158

158:                                              ; preds = %155, %144
  store i32 0, ptr %7, align 4, !tbaa !5
  %159 = load i32, ptr %15, align 4, !tbaa !5
  %160 = sub i32 %159, %145
  store i32 %160, ptr %21, align 4, !tbaa !5
  call void @dhseqr_(ptr noundef nonnull @.str.1, ptr noundef %0, ptr noundef nonnull %4, ptr noundef nonnull %31, ptr noundef nonnull %30, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef nonnull %11, ptr noundef nonnull %152, ptr noundef nonnull %21, ptr noundef nonnull %26) #5
  %161 = load i32, ptr %26, align 4, !tbaa !5
  %162 = icmp sgt i32 %161, 0
  br i1 %162, label %163, label %164

163:                                              ; preds = %158
  store i32 %161, ptr %19, align 4, !tbaa !5
  br label %164

164:                                              ; preds = %163, %158
  br i1 %.not423, label %196, label %165

165:                                              ; preds = %164
  %166 = load i32, ptr %19, align 4, !tbaa !5
  %167 = icmp eq i32 %166, 0
  br i1 %167, label %168, label %196

168:                                              ; preds = %165
  br i1 %.not430452, label %170, label %169

169:                                              ; preds = %168
  call void @dlascl_(ptr noundef nonnull @.str.11, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %27, ptr noundef nonnull %23, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef %8, ptr noundef nonnull %4, ptr noundef nonnull %24) #5
  call void @dlascl_(ptr noundef nonnull @.str.11, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %27, ptr noundef nonnull %23, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef %9, ptr noundef nonnull %4, ptr noundef nonnull %24) #5
  br label %170

170:                                              ; preds = %169, %168
  %171 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %171, ptr %21, align 4, !tbaa !5
  %.not433474 = icmp slt i32 %171, 1
  br i1 %.not433474, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %170, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 1, %170 ]
  %172 = getelementptr inbounds double, ptr %36, i64 %indvars.iv
  %173 = getelementptr inbounds double, ptr %37, i64 %indvars.iv
  %174 = call i32 (ptr, ptr, ...) %2(ptr noundef nonnull %172, ptr noundef nonnull %173) #5
  %175 = getelementptr inbounds i32, ptr %42, i64 %indvars.iv
  store i32 %174, ptr %175, align 4, !tbaa !5
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %176 = load i32, ptr %21, align 4, !tbaa !5
  %177 = sext i32 %176 to i64
  %.not433.not = icmp slt i64 %indvars.iv, %177
  br i1 %.not433.not, label %.lr.ph, label %._crit_edge, !llvm.loop !11

._crit_edge:                                      ; preds = %.lr.ph, %170
  %178 = load i32, ptr %15, align 4, !tbaa !5
  %179 = sub i32 %178, %145
  store i32 %179, ptr %21, align 4, !tbaa !5
  call void @dtrsen_(ptr noundef %3, ptr noundef %0, ptr noundef %18, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %8, ptr noundef %9, ptr noundef nonnull %7, ptr noundef %12, ptr noundef %13, ptr noundef nonnull %152, ptr noundef nonnull %21, ptr noundef nonnull %16, ptr noundef nonnull %17, ptr noundef nonnull %25) #5
  br i1 %62, label %180, label %188

180:                                              ; preds = %._crit_edge
  store i32 %.1, ptr %21, align 4, !tbaa !5
  %181 = load i32, ptr %4, align 4, !tbaa !5
  %182 = load i32, ptr %7, align 4, !tbaa !5
  %183 = shl i32 %182, 1
  %184 = sub nsw i32 %181, %182
  %185 = mul nsw i32 %183, %184
  %186 = add nsw i32 %185, %181
  store i32 %186, ptr %22, align 4, !tbaa !5
  %187 = call i32 @llvm.smax.i32(i32 %.1, i32 %186)
  br label %188

188:                                              ; preds = %180, %._crit_edge
  %.3 = phi i32 [ %.1, %._crit_edge ], [ %187, %180 ]
  %189 = load i32, ptr %25, align 4, !tbaa !5
  switch i32 %189, label %191 [
    i32 -15, label %.sink.split
    i32 -17, label %190
  ]

190:                                              ; preds = %188
  br label %.sink.split

191:                                              ; preds = %188
  %192 = icmp sgt i32 %189, 0
  br i1 %192, label %193, label %196

193:                                              ; preds = %191
  %194 = load i32, ptr %4, align 4, !tbaa !5
  %195 = add nsw i32 %194, %189
  br label %.sink.split

.sink.split:                                      ; preds = %188, %190, %193
  %.sink511 = phi i32 [ %195, %193 ], [ -18, %190 ], [ -16, %188 ]
  store i32 %.sink511, ptr %19, align 4, !tbaa !5
  br label %196

196:                                              ; preds = %.sink.split, %191, %165, %164
  %.4 = phi i32 [ %.3, %191 ], [ %.1, %165 ], [ %.1, %164 ], [ %.3, %.sink.split ]
  br i1 %.not, label %197, label %198

197:                                              ; preds = %196
  call void @dgebak_(ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.13, ptr noundef nonnull %4, ptr noundef nonnull %31, ptr noundef nonnull %30, ptr noundef nonnull %14, ptr noundef nonnull %4, ptr noundef %10, ptr noundef nonnull %11, ptr noundef nonnull %24) #5
  br label %198

198:                                              ; preds = %197, %196
  br i1 %.not430452, label %298, label %199

199:                                              ; preds = %198
  call void @dlascl_(ptr noundef nonnull @.str.14, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %27, ptr noundef nonnull %23, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %24) #5
  %200 = load i32, ptr %6, align 4, !tbaa !5
  %201 = add nsw i32 %200, 1
  store i32 %201, ptr %21, align 4, !tbaa !5
  call void @dcopy_(ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %21, ptr noundef %8, ptr noundef nonnull @c__1) #5
  %202 = icmp ne i32 %47, 0
  %203 = icmp ne i32 %48, 0
  %or.cond15 = select i1 %202, i1 true, i1 %203
  br i1 %or.cond15, label %204, label %210

204:                                              ; preds = %199
  %205 = load i32, ptr %19, align 4, !tbaa !5
  %206 = icmp eq i32 %205, 0
  br i1 %206, label %207, label %210

207:                                              ; preds = %204
  %208 = load double, ptr %13, align 8, !tbaa !9
  store double %208, ptr %32, align 8, !tbaa !9
  call void @dlascl_(ptr noundef nonnull @.str.11, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %27, ptr noundef nonnull %23, ptr noundef nonnull @c__1, ptr noundef nonnull @c__1, ptr noundef nonnull %32, ptr noundef nonnull @c__1, ptr noundef nonnull %24) #5
  %209 = load double, ptr %32, align 8, !tbaa !9
  store double %209, ptr %13, align 8, !tbaa !9
  br label %210

210:                                              ; preds = %199, %207, %204
  %211 = load double, ptr %27, align 8, !tbaa !9
  %212 = load double, ptr %29, align 8, !tbaa !9
  %213 = fcmp oeq double %211, %212
  br i1 %213, label %214, label %.loopexit473

214:                                              ; preds = %210
  %215 = load i32, ptr %26, align 4, !tbaa !5
  %216 = icmp sgt i32 %215, 0
  br i1 %216, label %217, label %222

217:                                              ; preds = %214
  %218 = add nuw nsw i32 %215, 1
  %219 = load i32, ptr %30, align 4, !tbaa !5
  %220 = load i32, ptr %31, align 4, !tbaa !5
  %221 = add nsw i32 %220, -1
  store i32 %221, ptr %21, align 4, !tbaa !5
  call void @dlascl_(ptr noundef nonnull @.str.11, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %27, ptr noundef nonnull %23, ptr noundef nonnull %21, ptr noundef nonnull @c__1, ptr noundef %9, ptr noundef nonnull %4, ptr noundef nonnull %24) #5
  br label %228

222:                                              ; preds = %214
  br i1 %.not423, label %225, label %223

223:                                              ; preds = %222
  %224 = load i32, ptr %4, align 4, !tbaa !5
  br label %228

225:                                              ; preds = %222
  %226 = load i32, ptr %31, align 4, !tbaa !5
  %227 = load i32, ptr %30, align 4, !tbaa !5
  br label %228

228:                                              ; preds = %223, %225, %217
  %.0398 = phi i32 [ %218, %217 ], [ 1, %223 ], [ %226, %225 ]
  %.0397.in = phi i32 [ %219, %217 ], [ %224, %223 ], [ %227, %225 ]
  %.0397 = add nsw i32 %.0397.in, -1
  store i32 %.0397, ptr %21, align 4, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %35, i64 8
  %invariant.gep478 = getelementptr i8, ptr %40, i64 8
  %.not436482.not = icmp slt i32 %.0398, %.0397.in
  br i1 %.not436482.not, label %.lr.ph488.preheader, label %.loopexit473

.lr.ph488.preheader:                              ; preds = %228
  %229 = add nsw i32 %.0398, -1
  %230 = sext i32 %.0398 to i64
  %231 = sext i32 %33 to i64
  %232 = sext i32 %38 to i64
  br label %.lr.ph488

.lr.ph488:                                        ; preds = %.lr.ph488.preheader, %288
  %.pre504 = phi i32 [ %.0397, %.lr.ph488.preheader ], [ %.pre505, %288 ]
  %233 = phi i32 [ %.0397, %.lr.ph488.preheader ], [ %289, %288 ]
  %indvars.iv497 = phi i64 [ %230, %.lr.ph488.preheader ], [ %indvars.iv.next498.pre-phi, %288 ]
  %.0404483 = phi i32 [ %229, %.lr.ph488.preheader ], [ %.1405, %288 ]
  %indvars499 = trunc i64 %indvars.iv497 to i32
  %234 = sext i32 %.0404483 to i64
  %235 = icmp slt i64 %indvars.iv497, %234
  br i1 %235, label %.lr.ph488._crit_edge, label %236

.lr.ph488._crit_edge:                             ; preds = %.lr.ph488
  %.pre507 = add nsw i64 %indvars.iv497, 1
  br label %288

236:                                              ; preds = %.lr.ph488
  %237 = getelementptr inbounds double, ptr %37, i64 %indvars.iv497
  %238 = load double, ptr %237, align 8, !tbaa !9
  %239 = fcmp oeq double %238, 0.000000e+00
  %240 = add nsw i64 %indvars.iv497, 1
  br i1 %239, label %241, label %243

241:                                              ; preds = %236
  %242 = trunc nsw i64 %240 to i32
  br label %288

243:                                              ; preds = %236
  %244 = mul nsw i64 %indvars.iv497, %231
  %245 = getelementptr double, ptr %35, i64 %240
  %246 = getelementptr double, ptr %245, i64 %244
  %247 = load double, ptr %246, align 8, !tbaa !9
  %248 = fcmp oeq double %247, 0.000000e+00
  br i1 %248, label %249, label %250

249:                                              ; preds = %243
  store <2 x double> zeroinitializer, ptr %237, align 8, !tbaa !9
  br label %286

250:                                              ; preds = %243
  %251 = add nsw i32 %indvars499, 1
  %252 = mul nsw i64 %240, %231
  %253 = mul nsw i32 %251, %33
  %254 = sext i32 %253 to i64
  %255 = getelementptr double, ptr %35, i64 %indvars.iv497
  %256 = getelementptr double, ptr %255, i64 %254
  %257 = load double, ptr %256, align 8, !tbaa !9
  %258 = fcmp oeq double %257, 0.000000e+00
  br i1 %258, label %259, label %286

259:                                              ; preds = %250
  store <2 x double> zeroinitializer, ptr %237, align 8, !tbaa !9
  %260 = icmp sgt i64 %indvars.iv497, 1
  br i1 %260, label %261, label %264

261:                                              ; preds = %259
  %262 = trunc i64 %indvars.iv497 to i32
  %263 = add i32 %262, -1
  store i32 %263, ptr %22, align 4, !tbaa !5
  %gep = getelementptr double, ptr %invariant.gep, i64 %244
  %gep477 = getelementptr double, ptr %invariant.gep, i64 %252
  call void @dswap_(ptr noundef nonnull %22, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %gep477, ptr noundef nonnull @c__1) #5
  br label %264

264:                                              ; preds = %261, %259
  %265 = load i32, ptr %4, align 4, !tbaa !5
  %266 = sext i32 %265 to i64
  %267 = icmp slt i64 %240, %266
  br i1 %267, label %268, label %280

268:                                              ; preds = %264
  %269 = xor i32 %indvars499, -1
  %270 = add i32 %265, %269
  store i32 %270, ptr %22, align 4, !tbaa !5
  %271 = add nsw i64 %indvars.iv497, 2
  %272 = add nsw i32 %indvars499, 2
  %273 = mul nsw i64 %271, %231
  %274 = mul nsw i32 %272, %33
  %275 = sext i32 %274 to i64
  %276 = getelementptr double, ptr %35, i64 %indvars.iv497
  %277 = getelementptr double, ptr %276, i64 %275
  %278 = getelementptr double, ptr %35, i64 %273
  %279 = getelementptr double, ptr %278, i64 %240
  call void @dswap_(ptr noundef nonnull %22, ptr noundef %277, ptr noundef nonnull %6, ptr noundef %279, ptr noundef nonnull %6) #5
  br label %280

280:                                              ; preds = %268, %264
  br i1 %.not, label %281, label %284

281:                                              ; preds = %280
  %282 = mul nsw i64 %indvars.iv497, %232
  %gep479 = getelementptr double, ptr %invariant.gep478, i64 %282
  %283 = mul nsw i64 %240, %232
  %gep481 = getelementptr double, ptr %invariant.gep478, i64 %283
  call void @dswap_(ptr noundef nonnull %4, ptr noundef %gep479, ptr noundef nonnull @c__1, ptr noundef %gep481, ptr noundef nonnull @c__1) #5
  br label %284

284:                                              ; preds = %281, %280
  %285 = load double, ptr %246, align 8, !tbaa !9
  store double %285, ptr %256, align 8, !tbaa !9
  store double 0.000000e+00, ptr %246, align 8, !tbaa !9
  %.pre.pre = load i32, ptr %21, align 4, !tbaa !5
  br label %286

286:                                              ; preds = %250, %284, %249
  %.pre = phi i32 [ %.pre504, %250 ], [ %.pre.pre, %284 ], [ %.pre504, %249 ]
  %287 = add nsw i32 %indvars499, 2
  br label %288

288:                                              ; preds = %.lr.ph488._crit_edge, %286, %241
  %indvars.iv.next498.pre-phi = phi i64 [ %.pre507, %.lr.ph488._crit_edge ], [ %240, %286 ], [ %240, %241 ]
  %.pre505 = phi i32 [ %.pre504, %.lr.ph488._crit_edge ], [ %.pre, %286 ], [ %.pre504, %241 ]
  %289 = phi i32 [ %233, %.lr.ph488._crit_edge ], [ %.pre, %286 ], [ %233, %241 ]
  %.1405 = phi i32 [ %.0404483, %.lr.ph488._crit_edge ], [ %287, %286 ], [ %242, %241 ]
  %290 = sext i32 %289 to i64
  %.not436.not = icmp slt i64 %indvars.iv497, %290
  br i1 %.not436.not, label %.lr.ph488, label %.loopexit473, !llvm.loop !13

.loopexit473:                                     ; preds = %288, %228, %210
  %291 = load i32, ptr %4, align 4, !tbaa !5
  %292 = load i32, ptr %26, align 4, !tbaa !5
  %293 = sub nsw i32 %291, %292
  store i32 %293, ptr %21, align 4, !tbaa !5
  %294 = call i32 @llvm.smax.i32(i32 %293, i32 1)
  store i32 %294, ptr %22, align 4, !tbaa !5
  %295 = sext i32 %292 to i64
  %296 = getelementptr double, ptr %37, i64 %295
  %297 = getelementptr i8, ptr %296, i64 8
  call void @dlascl_(ptr noundef nonnull @.str.11, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %27, ptr noundef nonnull %23, ptr noundef nonnull %21, ptr noundef nonnull @c__1, ptr noundef %297, ptr noundef nonnull %22, ptr noundef nonnull %24) #5
  br label %298

298:                                              ; preds = %.loopexit473, %198
  br i1 %.not423, label %.loopexit, label %299

299:                                              ; preds = %298
  %300 = load i32, ptr %19, align 4, !tbaa !5
  %301 = icmp eq i32 %300, 0
  br i1 %301, label %302, label %.loopexit

302:                                              ; preds = %299
  store i32 0, ptr %7, align 4, !tbaa !5
  %303 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %303, ptr %21, align 4, !tbaa !5
  %.not437489 = icmp slt i32 %303, 1
  br i1 %.not437489, label %.loopexit, label %.lr.ph495

.lr.ph495:                                        ; preds = %302, %.thread453
  %indvars.iv500 = phi i64 [ %indvars.iv.next501, %.thread453 ], [ 1, %302 ]
  %.0389493 = phi i32 [ %.0400, %.thread453 ], [ 1, %302 ]
  %.0393492 = phi i32 [ %.1394, %.thread453 ], [ 0, %302 ]
  %.0396491 = phi i32 [ %.1390, %.thread453 ], [ 1, %302 ]
  %304 = getelementptr inbounds double, ptr %36, i64 %indvars.iv500
  %305 = getelementptr inbounds double, ptr %37, i64 %indvars.iv500
  %306 = call i32 (ptr, ptr, ...) %2(ptr noundef nonnull %304, ptr noundef nonnull %305) #5
  %307 = load double, ptr %305, align 8, !tbaa !9
  %308 = fcmp oeq double %307, 0.000000e+00
  br i1 %308, label %309, label %313

309:                                              ; preds = %.lr.ph495
  %.not439 = icmp eq i32 %306, 0
  br i1 %.not439, label %.thread453, label %310

310:                                              ; preds = %309
  %311 = load i32, ptr %7, align 4, !tbaa !5
  %312 = add nsw i32 %311, 1
  store i32 %312, ptr %7, align 4, !tbaa !5
  %.not469 = icmp eq i32 %.0389493, 0
  br i1 %.not469, label %.thread453.sink.split, label %.thread453

313:                                              ; preds = %.lr.ph495
  %314 = icmp eq i32 %.0393492, 1
  br i1 %314, label %315, label %.thread453

315:                                              ; preds = %313
  %316 = icmp ne i32 %306, 0
  %317 = icmp ne i32 %.0389493, 0
  %318 = select i1 %316, i1 true, i1 %317
  br i1 %318, label %319, label %.thread453

319:                                              ; preds = %315
  %320 = load i32, ptr %7, align 4, !tbaa !5
  %321 = add nsw i32 %320, 2
  store i32 %321, ptr %7, align 4, !tbaa !5
  %322 = icmp eq i32 %.0396491, 0
  br i1 %322, label %.thread453.sink.split, label %.thread453

.thread453.sink.split:                            ; preds = %319, %310
  %.0400.ph = phi i32 [ %306, %310 ], [ 1, %319 ]
  %.1394.ph = phi i32 [ 0, %310 ], [ -1, %319 ]
  %.1390.ph = phi i32 [ 0, %310 ], [ 1, %319 ]
  %323 = load i32, ptr %4, align 4, !tbaa !5
  %324 = add nsw i32 %323, 2
  store i32 %324, ptr %19, align 4, !tbaa !5
  br label %.thread453

.thread453:                                       ; preds = %.thread453.sink.split, %315, %309, %313, %319, %310
  %.0400 = phi i32 [ %306, %310 ], [ 1, %319 ], [ %306, %313 ], [ 0, %309 ], [ 0, %315 ], [ %.0400.ph, %.thread453.sink.split ]
  %.1394 = phi i32 [ 0, %310 ], [ -1, %319 ], [ 1, %313 ], [ 0, %309 ], [ -1, %315 ], [ %.1394.ph, %.thread453.sink.split ]
  %.1390 = phi i32 [ %.0389493, %310 ], [ 1, %319 ], [ %.0389493, %313 ], [ %.0389493, %309 ], [ 0, %315 ], [ %.1390.ph, %.thread453.sink.split ]
  %indvars.iv.next501 = add nuw nsw i64 %indvars.iv500, 1
  %325 = load i32, ptr %21, align 4, !tbaa !5
  %326 = sext i32 %325 to i64
  %.not437.not = icmp slt i64 %indvars.iv500, %326
  br i1 %.not437.not, label %.lr.ph495, label %.loopexit, !llvm.loop !14

.loopexit:                                        ; preds = %.thread453, %302, %299, %298
  %327 = sitofp i32 %.4 to double
  store double %327, ptr %14, align 8, !tbaa !9
  %328 = icmp ne i32 %47, 0
  %329 = icmp ne i32 %48, 0
  %or.cond21 = select i1 %328, i1 true, i1 %329
  br i1 %or.cond21, label %330, label %336

330:                                              ; preds = %.loopexit
  %331 = load i32, ptr %7, align 4, !tbaa !5
  %332 = load i32, ptr %4, align 4, !tbaa !5
  %333 = sub nsw i32 %332, %331
  %334 = mul nsw i32 %333, %331
  %335 = call i32 @llvm.smax.i32(i32 %334, i32 1)
  br label %336

336:                                              ; preds = %.loopexit, %330
  %storemerge = phi i32 [ %335, %330 ], [ 1, %.loopexit ]
  store i32 %storemerge, ptr %16, align 4, !tbaa !5
  br label %337

337:                                              ; preds = %123, %336, %127, %.thread445
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #5
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr nonnull %26) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #5
  ret void
}

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

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

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

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

declare void @dlabad_(ptr noundef, 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 @dlange_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.umax.i32(i32, i32) #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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = distinct !{!14, !12}


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