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

; 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
@c__1 = external hidden global i32, align 4
@.str.3 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.4 = 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.5 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 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

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

110:                                              ; preds = %15
  %111 = load ptr, ptr %16, align 8, !tbaa !5
  %112 = call i32 @lsame_(ptr noundef %111, ptr noundef @.str.2)
  %113 = icmp ne i32 %112, 0
  br i1 %113, label %116, label %114

114:                                              ; preds = %110
  %115 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 -1, ptr %115, align 4, !tbaa !9
  br label %165

116:                                              ; preds = %110, %15
  %117 = load i32, ptr %62, align 4, !tbaa !9
  %118 = icmp ne i32 %117, 0
  br i1 %118, label %125, label %119

119:                                              ; preds = %116
  %120 = load ptr, ptr %17, align 8, !tbaa !5
  %121 = call i32 @lsame_(ptr noundef %120, ptr noundef @.str.2)
  %122 = icmp ne i32 %121, 0
  br i1 %122, label %125, label %123

123:                                              ; preds = %119
  %124 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 -2, ptr %124, align 4, !tbaa !9
  br label %164

125:                                              ; preds = %119, %116
  %126 = load ptr, ptr %19, align 8, !tbaa !5
  %127 = load i32, ptr %126, align 4, !tbaa !9
  %128 = icmp slt i32 %127, 0
  br i1 %128, label %129, label %131

129:                                              ; preds = %125
  %130 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 -4, ptr %130, align 4, !tbaa !9
  br label %163

131:                                              ; preds = %125
  %132 = load ptr, ptr %21, align 8, !tbaa !5
  %133 = load i32, ptr %132, align 4, !tbaa !9
  %134 = load ptr, ptr %19, align 8, !tbaa !5
  %135 = load i32, ptr %134, align 4, !tbaa !9
  %136 = icmp sge i32 1, %135
  br i1 %136, label %137, label %138

137:                                              ; preds = %131
  br label %141

138:                                              ; preds = %131
  %139 = load ptr, ptr %19, align 8, !tbaa !5
  %140 = load i32, ptr %139, align 4, !tbaa !9
  br label %141

141:                                              ; preds = %138, %137
  %142 = phi i32 [ 1, %137 ], [ %140, %138 ]
  %143 = icmp slt i32 %133, %142
  br i1 %143, label %144, label %146

144:                                              ; preds = %141
  %145 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 -6, ptr %145, align 4, !tbaa !9
  br label %162

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

150:                                              ; preds = %146
  %151 = load i32, ptr %64, align 4, !tbaa !9
  %152 = icmp ne i32 %151, 0
  br i1 %152, label %153, label %161

153:                                              ; preds = %150
  %154 = load ptr, ptr %26, align 8, !tbaa !5
  %155 = load i32, ptr %154, align 4, !tbaa !9
  %156 = load ptr, ptr %19, align 8, !tbaa !5
  %157 = load i32, ptr %156, align 4, !tbaa !9
  %158 = icmp slt i32 %155, %157
  br i1 %158, label %159, label %161

159:                                              ; preds = %153, %146
  %160 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 -11, ptr %160, align 4, !tbaa !9
  br label %161

161:                                              ; preds = %159, %153, %150
  br label %162

162:                                              ; preds = %161, %144
  br label %163

163:                                              ; preds = %162, %129
  br label %164

164:                                              ; preds = %163, %123
  br label %165

165:                                              ; preds = %164, %114
  %166 = load ptr, ptr %30, align 8, !tbaa !5
  %167 = load i32, ptr %166, align 4, !tbaa !9
  %168 = icmp eq i32 %167, 0
  br i1 %168, label %169, label %280

169:                                              ; preds = %165
  %170 = load ptr, ptr %19, align 8, !tbaa !5
  %171 = load i32, ptr %170, align 4, !tbaa !9
  %172 = icmp eq i32 %171, 0
  br i1 %172, label %173, label %174

173:                                              ; preds = %169
  store i32 1, ptr %58, align 4, !tbaa !9
  store i32 1, ptr %59, align 4, !tbaa !9
  br label %265

174:                                              ; preds = %169
  %175 = load ptr, ptr %19, align 8, !tbaa !5
  %176 = load i32, ptr %175, align 4, !tbaa !9
  %177 = shl i32 %176, 1
  %178 = load ptr, ptr %19, align 8, !tbaa !5
  %179 = load i32, ptr %178, align 4, !tbaa !9
  %180 = load ptr, ptr %19, align 8, !tbaa !5
  %181 = load ptr, ptr %19, align 8, !tbaa !5
  %182 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef %180, ptr noundef @c__1, ptr noundef %181, ptr noundef @c__0, i32 noundef 6, i32 noundef 1)
  %183 = mul nsw i32 %179, %182
  %184 = add nsw i32 %177, %183
  store i32 %184, ptr %59, align 4, !tbaa !9
  %185 = load ptr, ptr %19, align 8, !tbaa !5
  %186 = load i32, ptr %185, align 4, !tbaa !9
  %187 = mul nsw i32 %186, 3
  store i32 %187, ptr %58, align 4, !tbaa !9
  %188 = load ptr, ptr %16, align 8, !tbaa !5
  %189 = load ptr, ptr %19, align 8, !tbaa !5
  %190 = load ptr, ptr %19, align 8, !tbaa !5
  %191 = load ptr, ptr %20, align 8, !tbaa !5
  %192 = load i32, ptr %32, align 4, !tbaa !9
  %193 = sext i32 %192 to i64
  %194 = getelementptr inbounds double, ptr %191, i64 %193
  %195 = load ptr, ptr %21, align 8, !tbaa !5
  %196 = load ptr, ptr %23, align 8, !tbaa !5
  %197 = getelementptr inbounds double, ptr %196, i64 1
  %198 = load ptr, ptr %24, align 8, !tbaa !5
  %199 = getelementptr inbounds double, ptr %198, i64 1
  %200 = load ptr, ptr %25, align 8, !tbaa !5
  %201 = load i32, ptr %34, align 4, !tbaa !9
  %202 = sext i32 %201 to i64
  %203 = getelementptr inbounds double, ptr %200, i64 %202
  %204 = load ptr, ptr %26, align 8, !tbaa !5
  %205 = load ptr, ptr %27, align 8, !tbaa !5
  %206 = getelementptr inbounds double, ptr %205, i64 1
  call void @dhseqr_(ptr noundef @.str.1, ptr noundef %188, ptr noundef %189, ptr noundef @c__1, ptr noundef %190, ptr noundef %194, ptr noundef %195, ptr noundef %197, ptr noundef %199, ptr noundef %203, ptr noundef %204, ptr noundef %206, ptr noundef @c_n1, ptr noundef %48)
  %207 = load ptr, ptr %27, align 8, !tbaa !5
  %208 = getelementptr inbounds double, ptr %207, i64 1
  %209 = load double, ptr %208, align 8, !tbaa !11
  %210 = fptosi double %209 to i32
  store i32 %210, ptr %61, align 4, !tbaa !9
  %211 = load i32, ptr %64, align 4, !tbaa !9
  %212 = icmp ne i32 %211, 0
  br i1 %212, label %228, label %213

213:                                              ; preds = %174
  %214 = load i32, ptr %59, align 4, !tbaa !9
  store i32 %214, ptr %35, align 4, !tbaa !9
  %215 = load ptr, ptr %19, align 8, !tbaa !5
  %216 = load i32, ptr %215, align 4, !tbaa !9
  %217 = load i32, ptr %61, align 4, !tbaa !9
  %218 = add nsw i32 %216, %217
  store i32 %218, ptr %36, align 4, !tbaa !9
  %219 = load i32, ptr %35, align 4, !tbaa !9
  %220 = load i32, ptr %36, align 4, !tbaa !9
  %221 = icmp sge i32 %219, %220
  br i1 %221, label %222, label %224

222:                                              ; preds = %213
  %223 = load i32, ptr %35, align 4, !tbaa !9
  br label %226

224:                                              ; preds = %213
  %225 = load i32, ptr %36, align 4, !tbaa !9
  br label %226

226:                                              ; preds = %224, %222
  %227 = phi i32 [ %223, %222 ], [ %225, %224 ]
  store i32 %227, ptr %59, align 4, !tbaa !9
  br label %264

228:                                              ; preds = %174
  %229 = load i32, ptr %59, align 4, !tbaa !9
  store i32 %229, ptr %35, align 4, !tbaa !9
  %230 = load ptr, ptr %19, align 8, !tbaa !5
  %231 = load i32, ptr %230, align 4, !tbaa !9
  %232 = shl i32 %231, 1
  %233 = load ptr, ptr %19, align 8, !tbaa !5
  %234 = load i32, ptr %233, align 4, !tbaa !9
  %235 = sub nsw i32 %234, 1
  %236 = load ptr, ptr %19, align 8, !tbaa !5
  %237 = load ptr, ptr %19, align 8, !tbaa !5
  %238 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.5, ptr noundef @.str.4, ptr noundef %236, ptr noundef @c__1, ptr noundef %237, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  %239 = mul nsw i32 %235, %238
  %240 = add nsw i32 %232, %239
  store i32 %240, ptr %36, align 4, !tbaa !9
  %241 = load i32, ptr %35, align 4, !tbaa !9
  %242 = load i32, ptr %36, align 4, !tbaa !9
  %243 = icmp sge i32 %241, %242
  br i1 %243, label %244, label %246

244:                                              ; preds = %228
  %245 = load i32, ptr %35, align 4, !tbaa !9
  br label %248

246:                                              ; preds = %228
  %247 = load i32, ptr %36, align 4, !tbaa !9
  br label %248

248:                                              ; preds = %246, %244
  %249 = phi i32 [ %245, %244 ], [ %247, %246 ]
  store i32 %249, ptr %59, align 4, !tbaa !9
  %250 = load i32, ptr %59, align 4, !tbaa !9
  store i32 %250, ptr %35, align 4, !tbaa !9
  %251 = load ptr, ptr %19, align 8, !tbaa !5
  %252 = load i32, ptr %251, align 4, !tbaa !9
  %253 = load i32, ptr %61, align 4, !tbaa !9
  %254 = add nsw i32 %252, %253
  store i32 %254, ptr %36, align 4, !tbaa !9
  %255 = load i32, ptr %35, align 4, !tbaa !9
  %256 = load i32, ptr %36, align 4, !tbaa !9
  %257 = icmp sge i32 %255, %256
  br i1 %257, label %258, label %260

258:                                              ; preds = %248
  %259 = load i32, ptr %35, align 4, !tbaa !9
  br label %262

260:                                              ; preds = %248
  %261 = load i32, ptr %36, align 4, !tbaa !9
  br label %262

262:                                              ; preds = %260, %258
  %263 = phi i32 [ %259, %258 ], [ %261, %260 ]
  store i32 %263, ptr %59, align 4, !tbaa !9
  br label %264

264:                                              ; preds = %262, %226
  br label %265

265:                                              ; preds = %264, %173
  %266 = load i32, ptr %59, align 4, !tbaa !9
  %267 = sitofp i32 %266 to double
  %268 = load ptr, ptr %27, align 8, !tbaa !5
  %269 = getelementptr inbounds double, ptr %268, i64 1
  store double %267, ptr %269, align 8, !tbaa !11
  %270 = load ptr, ptr %28, align 8, !tbaa !5
  %271 = load i32, ptr %270, align 4, !tbaa !9
  %272 = load i32, ptr %58, align 4, !tbaa !9
  %273 = icmp slt i32 %271, %272
  br i1 %273, label %274, label %279

274:                                              ; preds = %265
  %275 = load i32, ptr %63, align 4, !tbaa !9
  %276 = icmp ne i32 %275, 0
  br i1 %276, label %279, label %277

277:                                              ; preds = %274
  %278 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 -13, ptr %278, align 4, !tbaa !9
  br label %279

279:                                              ; preds = %277, %274, %265
  br label %280

280:                                              ; preds = %279, %165
  %281 = load ptr, ptr %30, align 8, !tbaa !5
  %282 = load i32, ptr %281, align 4, !tbaa !9
  %283 = icmp ne i32 %282, 0
  br i1 %283, label %284, label %289

284:                                              ; preds = %280
  %285 = load ptr, ptr %30, align 8, !tbaa !5
  %286 = load i32, ptr %285, align 4, !tbaa !9
  %287 = sub nsw i32 0, %286
  store i32 %287, ptr %35, align 4, !tbaa !9
  %288 = call i32 @xerbla_(ptr noundef @.str.6, ptr noundef %35, i32 noundef 6)
  store i32 1, ptr %70, align 4
  br label %915

289:                                              ; preds = %280
  %290 = load i32, ptr %63, align 4, !tbaa !9
  %291 = icmp ne i32 %290, 0
  br i1 %291, label %292, label %293

292:                                              ; preds = %289
  store i32 1, ptr %70, align 4
  br label %915

293:                                              ; preds = %289
  br label %294

294:                                              ; preds = %293
  %295 = load ptr, ptr %19, align 8, !tbaa !5
  %296 = load i32, ptr %295, align 4, !tbaa !9
  %297 = icmp eq i32 %296, 0
  br i1 %297, label %298, label %300

298:                                              ; preds = %294
  %299 = load ptr, ptr %22, align 8, !tbaa !5
  store i32 0, ptr %299, align 4, !tbaa !9
  store i32 1, ptr %70, align 4
  br label %915

300:                                              ; preds = %294
  %301 = call double @dlamch_(ptr noundef @.str.7)
  store double %301, ptr %68, align 8, !tbaa !11
  %302 = call double @dlamch_(ptr noundef @.str.1)
  store double %302, ptr %60, align 8, !tbaa !11
  %303 = load double, ptr %60, align 8, !tbaa !11
  %304 = fdiv double 1.000000e+00, %303
  store double %304, ptr %56, align 8, !tbaa !11
  call void @dlabad_(ptr noundef %60, ptr noundef %56)
  %305 = load double, ptr %60, align 8, !tbaa !11
  %306 = call double @sqrt(double noundef %305) #4
  %307 = load double, ptr %68, align 8, !tbaa !11
  %308 = fdiv double %306, %307
  store double %308, ptr %60, align 8, !tbaa !11
  %309 = load double, ptr %60, align 8, !tbaa !11
  %310 = fdiv double 1.000000e+00, %309
  store double %310, ptr %56, align 8, !tbaa !11
  %311 = load ptr, ptr %19, align 8, !tbaa !5
  %312 = load ptr, ptr %19, align 8, !tbaa !5
  %313 = load ptr, ptr %20, align 8, !tbaa !5
  %314 = load i32, ptr %32, align 4, !tbaa !9
  %315 = sext i32 %314 to i64
  %316 = getelementptr inbounds double, ptr %313, i64 %315
  %317 = load ptr, ptr %21, align 8, !tbaa !5
  %318 = getelementptr inbounds [1 x double], ptr %67, i64 0, i64 0
  %319 = call double @dlange_(ptr noundef @.str.8, ptr noundef %311, ptr noundef %312, ptr noundef %316, ptr noundef %317, ptr noundef %318)
  store double %319, ptr %39, align 8, !tbaa !11
  store i32 0, ptr %53, align 4, !tbaa !9
  %320 = load double, ptr %39, align 8, !tbaa !11
  %321 = fcmp ogt double %320, 0.000000e+00
  br i1 %321, label %322, label %328

322:                                              ; preds = %300
  %323 = load double, ptr %39, align 8, !tbaa !11
  %324 = load double, ptr %60, align 8, !tbaa !11
  %325 = fcmp olt double %323, %324
  br i1 %325, label %326, label %328

326:                                              ; preds = %322
  store i32 1, ptr %53, align 4, !tbaa !9
  %327 = load double, ptr %60, align 8, !tbaa !11
  store double %327, ptr %55, align 8, !tbaa !11
  br label %335

328:                                              ; preds = %322, %300
  %329 = load double, ptr %39, align 8, !tbaa !11
  %330 = load double, ptr %56, align 8, !tbaa !11
  %331 = fcmp ogt double %329, %330
  br i1 %331, label %332, label %334

332:                                              ; preds = %328
  store i32 1, ptr %53, align 4, !tbaa !9
  %333 = load double, ptr %56, align 8, !tbaa !11
  store double %333, ptr %55, align 8, !tbaa !11
  br label %334

334:                                              ; preds = %332, %328
  br label %335

335:                                              ; preds = %334, %326
  %336 = load i32, ptr %53, align 4, !tbaa !9
  %337 = icmp ne i32 %336, 0
  br i1 %337, label %338, label %346

338:                                              ; preds = %335
  %339 = load ptr, ptr %19, align 8, !tbaa !5
  %340 = load ptr, ptr %19, align 8, !tbaa !5
  %341 = load ptr, ptr %20, align 8, !tbaa !5
  %342 = load i32, ptr %32, align 4, !tbaa !9
  %343 = sext i32 %342 to i64
  %344 = getelementptr inbounds double, ptr %341, i64 %343
  %345 = load ptr, ptr %21, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.9, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %39, ptr noundef %55, ptr noundef %339, ptr noundef %340, ptr noundef %344, ptr noundef %345, ptr noundef %41)
  br label %346

346:                                              ; preds = %338, %335
  store i32 1, ptr %38, align 4, !tbaa !9
  %347 = load ptr, ptr %19, align 8, !tbaa !5
  %348 = load ptr, ptr %20, align 8, !tbaa !5
  %349 = load i32, ptr %32, align 4, !tbaa !9
  %350 = sext i32 %349 to i64
  %351 = getelementptr inbounds double, ptr %348, i64 %350
  %352 = load ptr, ptr %21, align 8, !tbaa !5
  %353 = load ptr, ptr %27, align 8, !tbaa !5
  %354 = load i32, ptr %38, align 4, !tbaa !9
  %355 = sext i32 %354 to i64
  %356 = getelementptr inbounds double, ptr %353, i64 %355
  call void @dgebal_(ptr noundef @.str.7, ptr noundef %347, ptr noundef %351, ptr noundef %352, ptr noundef %66, ptr noundef %65, ptr noundef %356, ptr noundef %41)
  %357 = load ptr, ptr %19, align 8, !tbaa !5
  %358 = load i32, ptr %357, align 4, !tbaa !9
  %359 = load i32, ptr %38, align 4, !tbaa !9
  %360 = add nsw i32 %358, %359
  store i32 %360, ptr %42, align 4, !tbaa !9
  %361 = load ptr, ptr %19, align 8, !tbaa !5
  %362 = load i32, ptr %361, align 4, !tbaa !9
  %363 = load i32, ptr %42, align 4, !tbaa !9
  %364 = add nsw i32 %362, %363
  store i32 %364, ptr %43, align 4, !tbaa !9
  %365 = load ptr, ptr %28, align 8, !tbaa !5
  %366 = load i32, ptr %365, align 4, !tbaa !9
  %367 = load i32, ptr %43, align 4, !tbaa !9
  %368 = sub nsw i32 %366, %367
  %369 = add nsw i32 %368, 1
  store i32 %369, ptr %35, align 4, !tbaa !9
  %370 = load ptr, ptr %19, align 8, !tbaa !5
  %371 = load ptr, ptr %20, align 8, !tbaa !5
  %372 = load i32, ptr %32, align 4, !tbaa !9
  %373 = sext i32 %372 to i64
  %374 = getelementptr inbounds double, ptr %371, i64 %373
  %375 = load ptr, ptr %21, align 8, !tbaa !5
  %376 = load ptr, ptr %27, align 8, !tbaa !5
  %377 = load i32, ptr %42, align 4, !tbaa !9
  %378 = sext i32 %377 to i64
  %379 = getelementptr inbounds double, ptr %376, i64 %378
  %380 = load ptr, ptr %27, align 8, !tbaa !5
  %381 = load i32, ptr %43, align 4, !tbaa !9
  %382 = sext i32 %381 to i64
  %383 = getelementptr inbounds double, ptr %380, i64 %382
  call void @dgehrd_(ptr noundef %370, ptr noundef %66, ptr noundef %65, ptr noundef %374, ptr noundef %375, ptr noundef %379, ptr noundef %383, ptr noundef %35, ptr noundef %41)
  %384 = load i32, ptr %64, align 4, !tbaa !9
  %385 = icmp ne i32 %384, 0
  br i1 %385, label %386, label %418

386:                                              ; preds = %346
  %387 = load ptr, ptr %19, align 8, !tbaa !5
  %388 = load ptr, ptr %19, align 8, !tbaa !5
  %389 = load ptr, ptr %20, align 8, !tbaa !5
  %390 = load i32, ptr %32, align 4, !tbaa !9
  %391 = sext i32 %390 to i64
  %392 = getelementptr inbounds double, ptr %389, i64 %391
  %393 = load ptr, ptr %21, align 8, !tbaa !5
  %394 = load ptr, ptr %25, align 8, !tbaa !5
  %395 = load i32, ptr %34, align 4, !tbaa !9
  %396 = sext i32 %395 to i64
  %397 = getelementptr inbounds double, ptr %394, i64 %396
  %398 = load ptr, ptr %26, align 8, !tbaa !5
  call void @dlacpy_(ptr noundef @.str.10, ptr noundef %387, ptr noundef %388, ptr noundef %392, ptr noundef %393, ptr noundef %397, ptr noundef %398)
  %399 = load ptr, ptr %28, align 8, !tbaa !5
  %400 = load i32, ptr %399, align 4, !tbaa !9
  %401 = load i32, ptr %43, align 4, !tbaa !9
  %402 = sub nsw i32 %400, %401
  %403 = add nsw i32 %402, 1
  store i32 %403, ptr %35, align 4, !tbaa !9
  %404 = load ptr, ptr %19, align 8, !tbaa !5
  %405 = load ptr, ptr %25, align 8, !tbaa !5
  %406 = load i32, ptr %34, align 4, !tbaa !9
  %407 = sext i32 %406 to i64
  %408 = getelementptr inbounds double, ptr %405, i64 %407
  %409 = load ptr, ptr %26, align 8, !tbaa !5
  %410 = load ptr, ptr %27, align 8, !tbaa !5
  %411 = load i32, ptr %42, align 4, !tbaa !9
  %412 = sext i32 %411 to i64
  %413 = getelementptr inbounds double, ptr %410, i64 %412
  %414 = load ptr, ptr %27, align 8, !tbaa !5
  %415 = load i32, ptr %43, align 4, !tbaa !9
  %416 = sext i32 %415 to i64
  %417 = getelementptr inbounds double, ptr %414, i64 %416
  call void @dorghr_(ptr noundef %404, ptr noundef %66, ptr noundef %65, ptr noundef %408, ptr noundef %409, ptr noundef %413, ptr noundef %417, ptr noundef %35, ptr noundef %41)
  br label %418

418:                                              ; preds = %386, %346
  %419 = load ptr, ptr %22, align 8, !tbaa !5
  store i32 0, ptr %419, align 4, !tbaa !9
  %420 = load i32, ptr %42, align 4, !tbaa !9
  store i32 %420, ptr %43, align 4, !tbaa !9
  %421 = load ptr, ptr %28, align 8, !tbaa !5
  %422 = load i32, ptr %421, align 4, !tbaa !9
  %423 = load i32, ptr %43, align 4, !tbaa !9
  %424 = sub nsw i32 %422, %423
  %425 = add nsw i32 %424, 1
  store i32 %425, ptr %35, align 4, !tbaa !9
  %426 = load ptr, ptr %16, align 8, !tbaa !5
  %427 = load ptr, ptr %19, align 8, !tbaa !5
  %428 = load ptr, ptr %20, align 8, !tbaa !5
  %429 = load i32, ptr %32, align 4, !tbaa !9
  %430 = sext i32 %429 to i64
  %431 = getelementptr inbounds double, ptr %428, i64 %430
  %432 = load ptr, ptr %21, align 8, !tbaa !5
  %433 = load ptr, ptr %23, align 8, !tbaa !5
  %434 = getelementptr inbounds double, ptr %433, i64 1
  %435 = load ptr, ptr %24, align 8, !tbaa !5
  %436 = getelementptr inbounds double, ptr %435, i64 1
  %437 = load ptr, ptr %25, align 8, !tbaa !5
  %438 = load i32, ptr %34, align 4, !tbaa !9
  %439 = sext i32 %438 to i64
  %440 = getelementptr inbounds double, ptr %437, i64 %439
  %441 = load ptr, ptr %26, align 8, !tbaa !5
  %442 = load ptr, ptr %27, align 8, !tbaa !5
  %443 = load i32, ptr %43, align 4, !tbaa !9
  %444 = sext i32 %443 to i64
  %445 = getelementptr inbounds double, ptr %442, i64 %444
  call void @dhseqr_(ptr noundef @.str.1, ptr noundef %426, ptr noundef %427, ptr noundef %66, ptr noundef %65, ptr noundef %431, ptr noundef %432, ptr noundef %434, ptr noundef %436, ptr noundef %440, ptr noundef %441, ptr noundef %445, ptr noundef %35, ptr noundef %48)
  %446 = load i32, ptr %48, align 4, !tbaa !9
  %447 = icmp sgt i32 %446, 0
  br i1 %447, label %448, label %451

448:                                              ; preds = %418
  %449 = load i32, ptr %48, align 4, !tbaa !9
  %450 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 %449, ptr %450, align 4, !tbaa !9
  br label %451

451:                                              ; preds = %448, %418
  %452 = load i32, ptr %62, align 4, !tbaa !9
  %453 = icmp ne i32 %452, 0
  br i1 %453, label %454, label %534

454:                                              ; preds = %451
  %455 = load ptr, ptr %30, align 8, !tbaa !5
  %456 = load i32, ptr %455, align 4, !tbaa !9
  %457 = icmp eq i32 %456, 0
  br i1 %457, label %458, label %534

458:                                              ; preds = %454
  %459 = load i32, ptr %53, align 4, !tbaa !9
  %460 = icmp ne i32 %459, 0
  br i1 %460, label %461, label %470

461:                                              ; preds = %458
  %462 = load ptr, ptr %19, align 8, !tbaa !5
  %463 = load ptr, ptr %23, align 8, !tbaa !5
  %464 = getelementptr inbounds double, ptr %463, i64 1
  %465 = load ptr, ptr %19, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.9, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %55, ptr noundef %39, ptr noundef %462, ptr noundef @c__1, ptr noundef %464, ptr noundef %465, ptr noundef %41)
  %466 = load ptr, ptr %19, align 8, !tbaa !5
  %467 = load ptr, ptr %24, align 8, !tbaa !5
  %468 = getelementptr inbounds double, ptr %467, i64 1
  %469 = load ptr, ptr %19, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.9, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %55, ptr noundef %39, ptr noundef %466, ptr noundef @c__1, ptr noundef %468, ptr noundef %469, ptr noundef %41)
  br label %470

470:                                              ; preds = %461, %458
  %471 = load ptr, ptr %19, align 8, !tbaa !5
  %472 = load i32, ptr %471, align 4, !tbaa !9
  store i32 %472, ptr %35, align 4, !tbaa !9
  store i32 1, ptr %45, align 4, !tbaa !9
  br label %473

473:                                              ; preds = %492, %470
  %474 = load i32, ptr %45, align 4, !tbaa !9
  %475 = load i32, ptr %35, align 4, !tbaa !9
  %476 = icmp sle i32 %474, %475
  br i1 %476, label %477, label %495

477:                                              ; preds = %473
  %478 = load ptr, ptr %18, align 8, !tbaa !5
  %479 = load ptr, ptr %23, align 8, !tbaa !5
  %480 = load i32, ptr %45, align 4, !tbaa !9
  %481 = sext i32 %480 to i64
  %482 = getelementptr inbounds double, ptr %479, i64 %481
  %483 = load ptr, ptr %24, align 8, !tbaa !5
  %484 = load i32, ptr %45, align 4, !tbaa !9
  %485 = sext i32 %484 to i64
  %486 = getelementptr inbounds double, ptr %483, i64 %485
  %487 = call i32 (ptr, ptr, ...) %478(ptr noundef %482, ptr noundef %486)
  %488 = load ptr, ptr %29, align 8, !tbaa !5
  %489 = load i32, ptr %45, align 4, !tbaa !9
  %490 = sext i32 %489 to i64
  %491 = getelementptr inbounds i32, ptr %488, i64 %490
  store i32 %487, ptr %491, align 4, !tbaa !9
  br label %492

492:                                              ; preds = %477
  %493 = load i32, ptr %45, align 4, !tbaa !9
  %494 = add nsw i32 %493, 1
  store i32 %494, ptr %45, align 4, !tbaa !9
  br label %473, !llvm.loop !13

495:                                              ; preds = %473
  %496 = load ptr, ptr %28, align 8, !tbaa !5
  %497 = load i32, ptr %496, align 4, !tbaa !9
  %498 = load i32, ptr %43, align 4, !tbaa !9
  %499 = sub nsw i32 %497, %498
  %500 = add nsw i32 %499, 1
  store i32 %500, ptr %35, align 4, !tbaa !9
  %501 = load ptr, ptr %16, align 8, !tbaa !5
  %502 = load ptr, ptr %29, align 8, !tbaa !5
  %503 = getelementptr inbounds i32, ptr %502, i64 1
  %504 = load ptr, ptr %19, align 8, !tbaa !5
  %505 = load ptr, ptr %20, align 8, !tbaa !5
  %506 = load i32, ptr %32, align 4, !tbaa !9
  %507 = sext i32 %506 to i64
  %508 = getelementptr inbounds double, ptr %505, i64 %507
  %509 = load ptr, ptr %21, align 8, !tbaa !5
  %510 = load ptr, ptr %25, align 8, !tbaa !5
  %511 = load i32, ptr %34, align 4, !tbaa !9
  %512 = sext i32 %511 to i64
  %513 = getelementptr inbounds double, ptr %510, i64 %512
  %514 = load ptr, ptr %26, align 8, !tbaa !5
  %515 = load ptr, ptr %23, align 8, !tbaa !5
  %516 = getelementptr inbounds double, ptr %515, i64 1
  %517 = load ptr, ptr %24, align 8, !tbaa !5
  %518 = getelementptr inbounds double, ptr %517, i64 1
  %519 = load ptr, ptr %22, align 8, !tbaa !5
  %520 = load ptr, ptr %27, align 8, !tbaa !5
  %521 = load i32, ptr %43, align 4, !tbaa !9
  %522 = sext i32 %521 to i64
  %523 = getelementptr inbounds double, ptr %520, i64 %522
  %524 = getelementptr inbounds [1 x i32], ptr %40, i64 0, i64 0
  call void @dtrsen_(ptr noundef @.str.2, ptr noundef %501, ptr noundef %503, ptr noundef %504, ptr noundef %508, ptr noundef %509, ptr noundef %513, ptr noundef %514, ptr noundef %516, ptr noundef %518, ptr noundef %519, ptr noundef %46, ptr noundef %69, ptr noundef %523, ptr noundef %35, ptr noundef %524, ptr noundef @c__1, ptr noundef %47)
  %525 = load i32, ptr %47, align 4, !tbaa !9
  %526 = icmp sgt i32 %525, 0
  br i1 %526, label %527, label %533

527:                                              ; preds = %495
  %528 = load ptr, ptr %19, align 8, !tbaa !5
  %529 = load i32, ptr %528, align 4, !tbaa !9
  %530 = load i32, ptr %47, align 4, !tbaa !9
  %531 = add nsw i32 %529, %530
  %532 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 %531, ptr %532, align 4, !tbaa !9
  br label %533

533:                                              ; preds = %527, %495
  br label %534

534:                                              ; preds = %533, %454, %451
  %535 = load i32, ptr %64, align 4, !tbaa !9
  %536 = icmp ne i32 %535, 0
  br i1 %536, label %537, label %549

537:                                              ; preds = %534
  %538 = load ptr, ptr %19, align 8, !tbaa !5
  %539 = load ptr, ptr %27, align 8, !tbaa !5
  %540 = load i32, ptr %38, align 4, !tbaa !9
  %541 = sext i32 %540 to i64
  %542 = getelementptr inbounds double, ptr %539, i64 %541
  %543 = load ptr, ptr %19, align 8, !tbaa !5
  %544 = load ptr, ptr %25, align 8, !tbaa !5
  %545 = load i32, ptr %34, align 4, !tbaa !9
  %546 = sext i32 %545 to i64
  %547 = getelementptr inbounds double, ptr %544, i64 %546
  %548 = load ptr, ptr %26, align 8, !tbaa !5
  call void @dgebak_(ptr noundef @.str.7, ptr noundef @.str.11, ptr noundef %538, ptr noundef %66, ptr noundef %65, ptr noundef %542, ptr noundef %543, ptr noundef %547, ptr noundef %548, ptr noundef %41)
  br label %549

549:                                              ; preds = %537, %534
  %550 = load i32, ptr %53, align 4, !tbaa !9
  %551 = icmp ne i32 %550, 0
  br i1 %551, label %552, label %819

552:                                              ; preds = %549
  %553 = load ptr, ptr %19, align 8, !tbaa !5
  %554 = load ptr, ptr %19, align 8, !tbaa !5
  %555 = load ptr, ptr %20, align 8, !tbaa !5
  %556 = load i32, ptr %32, align 4, !tbaa !9
  %557 = sext i32 %556 to i64
  %558 = getelementptr inbounds double, ptr %555, i64 %557
  %559 = load ptr, ptr %21, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %55, ptr noundef %39, ptr noundef %553, ptr noundef %554, ptr noundef %558, ptr noundef %559, ptr noundef %41)
  %560 = load ptr, ptr %21, align 8, !tbaa !5
  %561 = load i32, ptr %560, align 4, !tbaa !9
  %562 = add nsw i32 %561, 1
  store i32 %562, ptr %35, align 4, !tbaa !9
  %563 = load ptr, ptr %19, align 8, !tbaa !5
  %564 = load ptr, ptr %20, align 8, !tbaa !5
  %565 = load i32, ptr %32, align 4, !tbaa !9
  %566 = sext i32 %565 to i64
  %567 = getelementptr inbounds double, ptr %564, i64 %566
  %568 = load ptr, ptr %23, align 8, !tbaa !5
  %569 = getelementptr inbounds double, ptr %568, i64 1
  call void @dcopy_(ptr noundef %563, ptr noundef %567, ptr noundef %35, ptr noundef %569, ptr noundef @c__1)
  %570 = load double, ptr %55, align 8, !tbaa !11
  %571 = load double, ptr %60, align 8, !tbaa !11
  %572 = fcmp oeq double %570, %571
  br i1 %572, label %573, label %798

573:                                              ; preds = %552
  %574 = load i32, ptr %48, align 4, !tbaa !9
  %575 = icmp sgt i32 %574, 0
  br i1 %575, label %576, label %594

576:                                              ; preds = %573
  %577 = load i32, ptr %48, align 4, !tbaa !9
  %578 = add nsw i32 %577, 1
  store i32 %578, ptr %50, align 4, !tbaa !9
  %579 = load i32, ptr %65, align 4, !tbaa !9
  %580 = sub nsw i32 %579, 1
  store i32 %580, ptr %51, align 4, !tbaa !9
  %581 = load i32, ptr %66, align 4, !tbaa !9
  %582 = sub nsw i32 %581, 1
  store i32 %582, ptr %35, align 4, !tbaa !9
  %583 = load i32, ptr %66, align 4, !tbaa !9
  %584 = sub nsw i32 %583, 1
  store i32 %584, ptr %37, align 4, !tbaa !9
  %585 = load i32, ptr %37, align 4, !tbaa !9
  %586 = icmp sge i32 %585, 1
  br i1 %586, label %587, label %589

587:                                              ; preds = %576
  %588 = load i32, ptr %37, align 4, !tbaa !9
  br label %590

589:                                              ; preds = %576
  br label %590

590:                                              ; preds = %589, %587
  %591 = phi i32 [ %588, %587 ], [ 1, %589 ]
  store i32 %591, ptr %36, align 4, !tbaa !9
  %592 = load ptr, ptr %24, align 8, !tbaa !5
  %593 = getelementptr inbounds double, ptr %592, i64 1
  call void @dlascl_(ptr noundef @.str.9, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %55, ptr noundef %39, ptr noundef %35, ptr noundef @c__1, ptr noundef %593, ptr noundef %36, ptr noundef %41)
  br label %606

594:                                              ; preds = %573
  %595 = load i32, ptr %62, align 4, !tbaa !9
  %596 = icmp ne i32 %595, 0
  br i1 %596, label %597, label %601

597:                                              ; preds = %594
  store i32 1, ptr %50, align 4, !tbaa !9
  %598 = load ptr, ptr %19, align 8, !tbaa !5
  %599 = load i32, ptr %598, align 4, !tbaa !9
  %600 = sub nsw i32 %599, 1
  store i32 %600, ptr %51, align 4, !tbaa !9
  br label %605

601:                                              ; preds = %594
  %602 = load i32, ptr %66, align 4, !tbaa !9
  store i32 %602, ptr %50, align 4, !tbaa !9
  %603 = load i32, ptr %65, align 4, !tbaa !9
  %604 = sub nsw i32 %603, 1
  store i32 %604, ptr %51, align 4, !tbaa !9
  br label %605

605:                                              ; preds = %601, %597
  br label %606

606:                                              ; preds = %605, %590
  %607 = load i32, ptr %50, align 4, !tbaa !9
  %608 = sub nsw i32 %607, 1
  store i32 %608, ptr %44, align 4, !tbaa !9
  %609 = load i32, ptr %51, align 4, !tbaa !9
  store i32 %609, ptr %35, align 4, !tbaa !9
  %610 = load i32, ptr %50, align 4, !tbaa !9
  store i32 %610, ptr %45, align 4, !tbaa !9
  br label %611

611:                                              ; preds = %794, %606
  %612 = load i32, ptr %45, align 4, !tbaa !9
  %613 = load i32, ptr %35, align 4, !tbaa !9
  %614 = icmp sle i32 %612, %613
  br i1 %614, label %615, label %797

615:                                              ; preds = %611
  %616 = load i32, ptr %45, align 4, !tbaa !9
  %617 = load i32, ptr %44, align 4, !tbaa !9
  %618 = icmp slt i32 %616, %617
  br i1 %618, label %619, label %620

619:                                              ; preds = %615
  br label %793

620:                                              ; preds = %615
  %621 = load ptr, ptr %24, align 8, !tbaa !5
  %622 = load i32, ptr %45, align 4, !tbaa !9
  %623 = sext i32 %622 to i64
  %624 = getelementptr inbounds double, ptr %621, i64 %623
  %625 = load double, ptr %624, align 8, !tbaa !11
  %626 = fcmp oeq double %625, 0.000000e+00
  br i1 %626, label %627, label %630

627:                                              ; preds = %620
  %628 = load i32, ptr %45, align 4, !tbaa !9
  %629 = add nsw i32 %628, 1
  store i32 %629, ptr %44, align 4, !tbaa !9
  br label %792

630:                                              ; preds = %620
  %631 = load ptr, ptr %20, align 8, !tbaa !5
  %632 = load i32, ptr %45, align 4, !tbaa !9
  %633 = add nsw i32 %632, 1
  %634 = load i32, ptr %45, align 4, !tbaa !9
  %635 = load i32, ptr %31, align 4, !tbaa !9
  %636 = mul nsw i32 %634, %635
  %637 = add nsw i32 %633, %636
  %638 = sext i32 %637 to i64
  %639 = getelementptr inbounds double, ptr %631, i64 %638
  %640 = load double, ptr %639, align 8, !tbaa !11
  %641 = fcmp oeq double %640, 0.000000e+00
  br i1 %641, label %642, label %652

642:                                              ; preds = %630
  %643 = load ptr, ptr %24, align 8, !tbaa !5
  %644 = load i32, ptr %45, align 4, !tbaa !9
  %645 = sext i32 %644 to i64
  %646 = getelementptr inbounds double, ptr %643, i64 %645
  store double 0.000000e+00, ptr %646, align 8, !tbaa !11
  %647 = load ptr, ptr %24, align 8, !tbaa !5
  %648 = load i32, ptr %45, align 4, !tbaa !9
  %649 = add nsw i32 %648, 1
  %650 = sext i32 %649 to i64
  %651 = getelementptr inbounds double, ptr %647, i64 %650
  store double 0.000000e+00, ptr %651, align 8, !tbaa !11
  br label %789

652:                                              ; preds = %630
  %653 = load ptr, ptr %20, align 8, !tbaa !5
  %654 = load i32, ptr %45, align 4, !tbaa !9
  %655 = add nsw i32 %654, 1
  %656 = load i32, ptr %45, align 4, !tbaa !9
  %657 = load i32, ptr %31, align 4, !tbaa !9
  %658 = mul nsw i32 %656, %657
  %659 = add nsw i32 %655, %658
  %660 = sext i32 %659 to i64
  %661 = getelementptr inbounds double, ptr %653, i64 %660
  %662 = load double, ptr %661, align 8, !tbaa !11
  %663 = fcmp une double %662, 0.000000e+00
  br i1 %663, label %664, label %788

664:                                              ; preds = %652
  %665 = load ptr, ptr %20, align 8, !tbaa !5
  %666 = load i32, ptr %45, align 4, !tbaa !9
  %667 = load i32, ptr %45, align 4, !tbaa !9
  %668 = add nsw i32 %667, 1
  %669 = load i32, ptr %31, align 4, !tbaa !9
  %670 = mul nsw i32 %668, %669
  %671 = add nsw i32 %666, %670
  %672 = sext i32 %671 to i64
  %673 = getelementptr inbounds double, ptr %665, i64 %672
  %674 = load double, ptr %673, align 8, !tbaa !11
  %675 = fcmp oeq double %674, 0.000000e+00
  br i1 %675, label %676, label %788

676:                                              ; preds = %664
  %677 = load ptr, ptr %24, align 8, !tbaa !5
  %678 = load i32, ptr %45, align 4, !tbaa !9
  %679 = sext i32 %678 to i64
  %680 = getelementptr inbounds double, ptr %677, i64 %679
  store double 0.000000e+00, ptr %680, align 8, !tbaa !11
  %681 = load ptr, ptr %24, align 8, !tbaa !5
  %682 = load i32, ptr %45, align 4, !tbaa !9
  %683 = add nsw i32 %682, 1
  %684 = sext i32 %683 to i64
  %685 = getelementptr inbounds double, ptr %681, i64 %684
  store double 0.000000e+00, ptr %685, align 8, !tbaa !11
  %686 = load i32, ptr %45, align 4, !tbaa !9
  %687 = icmp sgt i32 %686, 1
  br i1 %687, label %688, label %706

688:                                              ; preds = %676
  %689 = load i32, ptr %45, align 4, !tbaa !9
  %690 = sub nsw i32 %689, 1
  store i32 %690, ptr %36, align 4, !tbaa !9
  %691 = load ptr, ptr %20, align 8, !tbaa !5
  %692 = load i32, ptr %45, align 4, !tbaa !9
  %693 = load i32, ptr %31, align 4, !tbaa !9
  %694 = mul nsw i32 %692, %693
  %695 = add nsw i32 %694, 1
  %696 = sext i32 %695 to i64
  %697 = getelementptr inbounds double, ptr %691, i64 %696
  %698 = load ptr, ptr %20, align 8, !tbaa !5
  %699 = load i32, ptr %45, align 4, !tbaa !9
  %700 = add nsw i32 %699, 1
  %701 = load i32, ptr %31, align 4, !tbaa !9
  %702 = mul nsw i32 %700, %701
  %703 = add nsw i32 %702, 1
  %704 = sext i32 %703 to i64
  %705 = getelementptr inbounds double, ptr %698, i64 %704
  call void @dswap_(ptr noundef %36, ptr noundef %697, ptr noundef @c__1, ptr noundef %705, ptr noundef @c__1)
  br label %706

706:                                              ; preds = %688, %676
  %707 = load ptr, ptr %19, align 8, !tbaa !5
  %708 = load i32, ptr %707, align 4, !tbaa !9
  %709 = load i32, ptr %45, align 4, !tbaa !9
  %710 = add nsw i32 %709, 1
  %711 = icmp sgt i32 %708, %710
  br i1 %711, label %712, label %739

712:                                              ; preds = %706
  %713 = load ptr, ptr %19, align 8, !tbaa !5
  %714 = load i32, ptr %713, align 4, !tbaa !9
  %715 = load i32, ptr %45, align 4, !tbaa !9
  %716 = sub nsw i32 %714, %715
  %717 = sub nsw i32 %716, 1
  store i32 %717, ptr %36, align 4, !tbaa !9
  %718 = load ptr, ptr %20, align 8, !tbaa !5
  %719 = load i32, ptr %45, align 4, !tbaa !9
  %720 = load i32, ptr %45, align 4, !tbaa !9
  %721 = add nsw i32 %720, 2
  %722 = load i32, ptr %31, align 4, !tbaa !9
  %723 = mul nsw i32 %721, %722
  %724 = add nsw i32 %719, %723
  %725 = sext i32 %724 to i64
  %726 = getelementptr inbounds double, ptr %718, i64 %725
  %727 = load ptr, ptr %21, align 8, !tbaa !5
  %728 = load ptr, ptr %20, align 8, !tbaa !5
  %729 = load i32, ptr %45, align 4, !tbaa !9
  %730 = add nsw i32 %729, 1
  %731 = load i32, ptr %45, align 4, !tbaa !9
  %732 = add nsw i32 %731, 2
  %733 = load i32, ptr %31, align 4, !tbaa !9
  %734 = mul nsw i32 %732, %733
  %735 = add nsw i32 %730, %734
  %736 = sext i32 %735 to i64
  %737 = getelementptr inbounds double, ptr %728, i64 %736
  %738 = load ptr, ptr %21, align 8, !tbaa !5
  call void @dswap_(ptr noundef %36, ptr noundef %726, ptr noundef %727, ptr noundef %737, ptr noundef %738)
  br label %739

739:                                              ; preds = %712, %706
  %740 = load i32, ptr %64, align 4, !tbaa !9
  %741 = icmp ne i32 %740, 0
  br i1 %741, label %742, label %759

742:                                              ; preds = %739
  %743 = load ptr, ptr %19, align 8, !tbaa !5
  %744 = load ptr, ptr %25, align 8, !tbaa !5
  %745 = load i32, ptr %45, align 4, !tbaa !9
  %746 = load i32, ptr %33, align 4, !tbaa !9
  %747 = mul nsw i32 %745, %746
  %748 = add nsw i32 %747, 1
  %749 = sext i32 %748 to i64
  %750 = getelementptr inbounds double, ptr %744, i64 %749
  %751 = load ptr, ptr %25, align 8, !tbaa !5
  %752 = load i32, ptr %45, align 4, !tbaa !9
  %753 = add nsw i32 %752, 1
  %754 = load i32, ptr %33, align 4, !tbaa !9
  %755 = mul nsw i32 %753, %754
  %756 = add nsw i32 %755, 1
  %757 = sext i32 %756 to i64
  %758 = getelementptr inbounds double, ptr %751, i64 %757
  call void @dswap_(ptr noundef %743, ptr noundef %750, ptr noundef @c__1, ptr noundef %758, ptr noundef @c__1)
  br label %759

759:                                              ; preds = %742, %739
  %760 = load ptr, ptr %20, align 8, !tbaa !5
  %761 = load i32, ptr %45, align 4, !tbaa !9
  %762 = add nsw i32 %761, 1
  %763 = load i32, ptr %45, align 4, !tbaa !9
  %764 = load i32, ptr %31, align 4, !tbaa !9
  %765 = mul nsw i32 %763, %764
  %766 = add nsw i32 %762, %765
  %767 = sext i32 %766 to i64
  %768 = getelementptr inbounds double, ptr %760, i64 %767
  %769 = load double, ptr %768, align 8, !tbaa !11
  %770 = load ptr, ptr %20, align 8, !tbaa !5
  %771 = load i32, ptr %45, align 4, !tbaa !9
  %772 = load i32, ptr %45, align 4, !tbaa !9
  %773 = add nsw i32 %772, 1
  %774 = load i32, ptr %31, align 4, !tbaa !9
  %775 = mul nsw i32 %773, %774
  %776 = add nsw i32 %771, %775
  %777 = sext i32 %776 to i64
  %778 = getelementptr inbounds double, ptr %770, i64 %777
  store double %769, ptr %778, align 8, !tbaa !11
  %779 = load ptr, ptr %20, align 8, !tbaa !5
  %780 = load i32, ptr %45, align 4, !tbaa !9
  %781 = add nsw i32 %780, 1
  %782 = load i32, ptr %45, align 4, !tbaa !9
  %783 = load i32, ptr %31, align 4, !tbaa !9
  %784 = mul nsw i32 %782, %783
  %785 = add nsw i32 %781, %784
  %786 = sext i32 %785 to i64
  %787 = getelementptr inbounds double, ptr %779, i64 %786
  store double 0.000000e+00, ptr %787, align 8, !tbaa !11
  br label %788

788:                                              ; preds = %759, %664, %652
  br label %789

789:                                              ; preds = %788, %642
  %790 = load i32, ptr %45, align 4, !tbaa !9
  %791 = add nsw i32 %790, 2
  store i32 %791, ptr %44, align 4, !tbaa !9
  br label %792

792:                                              ; preds = %789, %627
  br label %793

793:                                              ; preds = %792, %619
  br label %794

794:                                              ; preds = %793
  %795 = load i32, ptr %45, align 4, !tbaa !9
  %796 = add nsw i32 %795, 1
  store i32 %796, ptr %45, align 4, !tbaa !9
  br label %611, !llvm.loop !15

797:                                              ; preds = %611
  br label %798

798:                                              ; preds = %797, %552
  %799 = load ptr, ptr %19, align 8, !tbaa !5
  %800 = load i32, ptr %799, align 4, !tbaa !9
  %801 = load i32, ptr %48, align 4, !tbaa !9
  %802 = sub nsw i32 %800, %801
  store i32 %802, ptr %35, align 4, !tbaa !9
  %803 = load ptr, ptr %19, align 8, !tbaa !5
  %804 = load i32, ptr %803, align 4, !tbaa !9
  %805 = load i32, ptr %48, align 4, !tbaa !9
  %806 = sub nsw i32 %804, %805
  store i32 %806, ptr %37, align 4, !tbaa !9
  %807 = load i32, ptr %37, align 4, !tbaa !9
  %808 = icmp sge i32 %807, 1
  br i1 %808, label %809, label %811

809:                                              ; preds = %798
  %810 = load i32, ptr %37, align 4, !tbaa !9
  br label %812

811:                                              ; preds = %798
  br label %812

812:                                              ; preds = %811, %809
  %813 = phi i32 [ %810, %809 ], [ 1, %811 ]
  store i32 %813, ptr %36, align 4, !tbaa !9
  %814 = load ptr, ptr %24, align 8, !tbaa !5
  %815 = load i32, ptr %48, align 4, !tbaa !9
  %816 = add nsw i32 %815, 1
  %817 = sext i32 %816 to i64
  %818 = getelementptr inbounds double, ptr %814, i64 %817
  call void @dlascl_(ptr noundef @.str.9, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %55, ptr noundef %39, ptr noundef %35, ptr noundef @c__1, ptr noundef %818, ptr noundef %36, ptr noundef %41)
  br label %819

819:                                              ; preds = %812, %549
  %820 = load i32, ptr %62, align 4, !tbaa !9
  %821 = icmp ne i32 %820, 0
  br i1 %821, label %822, label %910

822:                                              ; preds = %819
  %823 = load ptr, ptr %30, align 8, !tbaa !5
  %824 = load i32, ptr %823, align 4, !tbaa !9
  %825 = icmp eq i32 %824, 0
  br i1 %825, label %826, label %910

826:                                              ; preds = %822
  store i32 1, ptr %57, align 4, !tbaa !9
  store i32 1, ptr %52, align 4, !tbaa !9
  %827 = load ptr, ptr %22, align 8, !tbaa !5
  store i32 0, ptr %827, align 4, !tbaa !9
  store i32 0, ptr %54, align 4, !tbaa !9
  %828 = load ptr, ptr %19, align 8, !tbaa !5
  %829 = load i32, ptr %828, align 4, !tbaa !9
  store i32 %829, ptr %35, align 4, !tbaa !9
  store i32 1, ptr %45, align 4, !tbaa !9
  br label %830

830:                                              ; preds = %906, %826
  %831 = load i32, ptr %45, align 4, !tbaa !9
  %832 = load i32, ptr %35, align 4, !tbaa !9
  %833 = icmp sle i32 %831, %832
  br i1 %833, label %834, label %909

834:                                              ; preds = %830
  %835 = load ptr, ptr %18, align 8, !tbaa !5
  %836 = load ptr, ptr %23, align 8, !tbaa !5
  %837 = load i32, ptr %45, align 4, !tbaa !9
  %838 = sext i32 %837 to i64
  %839 = getelementptr inbounds double, ptr %836, i64 %838
  %840 = load ptr, ptr %24, align 8, !tbaa !5
  %841 = load i32, ptr %45, align 4, !tbaa !9
  %842 = sext i32 %841 to i64
  %843 = getelementptr inbounds double, ptr %840, i64 %842
  %844 = call i32 (ptr, ptr, ...) %835(ptr noundef %839, ptr noundef %843)
  store i32 %844, ptr %49, align 4, !tbaa !9
  %845 = load ptr, ptr %24, align 8, !tbaa !5
  %846 = load i32, ptr %45, align 4, !tbaa !9
  %847 = sext i32 %846 to i64
  %848 = getelementptr inbounds double, ptr %845, i64 %847
  %849 = load double, ptr %848, align 8, !tbaa !11
  %850 = fcmp oeq double %849, 0.000000e+00
  br i1 %850, label %851, label %870

851:                                              ; preds = %834
  %852 = load i32, ptr %49, align 4, !tbaa !9
  %853 = icmp ne i32 %852, 0
  br i1 %853, label %854, label %858

854:                                              ; preds = %851
  %855 = load ptr, ptr %22, align 8, !tbaa !5
  %856 = load i32, ptr %855, align 4, !tbaa !9
  %857 = add nsw i32 %856, 1
  store i32 %857, ptr %855, align 4, !tbaa !9
  br label %858

858:                                              ; preds = %854, %851
  store i32 0, ptr %54, align 4, !tbaa !9
  %859 = load i32, ptr %49, align 4, !tbaa !9
  %860 = icmp ne i32 %859, 0
  br i1 %860, label %861, label %869

861:                                              ; preds = %858
  %862 = load i32, ptr %57, align 4, !tbaa !9
  %863 = icmp ne i32 %862, 0
  br i1 %863, label %869, label %864

864:                                              ; preds = %861
  %865 = load ptr, ptr %19, align 8, !tbaa !5
  %866 = load i32, ptr %865, align 4, !tbaa !9
  %867 = add nsw i32 %866, 2
  %868 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 %867, ptr %868, align 4, !tbaa !9
  br label %869

869:                                              ; preds = %864, %861, %858
  br label %903

870:                                              ; preds = %834
  %871 = load i32, ptr %54, align 4, !tbaa !9
  %872 = icmp eq i32 %871, 1
  br i1 %872, label %873, label %901

873:                                              ; preds = %870
  %874 = load i32, ptr %49, align 4, !tbaa !9
  %875 = icmp ne i32 %874, 0
  br i1 %875, label %879, label %876

876:                                              ; preds = %873
  %877 = load i32, ptr %57, align 4, !tbaa !9
  %878 = icmp ne i32 %877, 0
  br label %879

879:                                              ; preds = %876, %873
  %880 = phi i1 [ true, %873 ], [ %878, %876 ]
  %881 = zext i1 %880 to i32
  store i32 %881, ptr %49, align 4, !tbaa !9
  %882 = load i32, ptr %49, align 4, !tbaa !9
  store i32 %882, ptr %57, align 4, !tbaa !9
  %883 = load i32, ptr %49, align 4, !tbaa !9
  %884 = icmp ne i32 %883, 0
  br i1 %884, label %885, label %889

885:                                              ; preds = %879
  %886 = load ptr, ptr %22, align 8, !tbaa !5
  %887 = load i32, ptr %886, align 4, !tbaa !9
  %888 = add nsw i32 %887, 2
  store i32 %888, ptr %886, align 4, !tbaa !9
  br label %889

889:                                              ; preds = %885, %879
  store i32 -1, ptr %54, align 4, !tbaa !9
  %890 = load i32, ptr %49, align 4, !tbaa !9
  %891 = icmp ne i32 %890, 0
  br i1 %891, label %892, label %900

892:                                              ; preds = %889
  %893 = load i32, ptr %52, align 4, !tbaa !9
  %894 = icmp ne i32 %893, 0
  br i1 %894, label %900, label %895

895:                                              ; preds = %892
  %896 = load ptr, ptr %19, align 8, !tbaa !5
  %897 = load i32, ptr %896, align 4, !tbaa !9
  %898 = add nsw i32 %897, 2
  %899 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 %898, ptr %899, align 4, !tbaa !9
  br label %900

900:                                              ; preds = %895, %892, %889
  br label %902

901:                                              ; preds = %870
  store i32 1, ptr %54, align 4, !tbaa !9
  br label %902

902:                                              ; preds = %901, %900
  br label %903

903:                                              ; preds = %902, %869
  %904 = load i32, ptr %57, align 4, !tbaa !9
  store i32 %904, ptr %52, align 4, !tbaa !9
  %905 = load i32, ptr %49, align 4, !tbaa !9
  store i32 %905, ptr %57, align 4, !tbaa !9
  br label %906

906:                                              ; preds = %903
  %907 = load i32, ptr %45, align 4, !tbaa !9
  %908 = add nsw i32 %907, 1
  store i32 %908, ptr %45, align 4, !tbaa !9
  br label %830, !llvm.loop !16

909:                                              ; preds = %830
  br label %910

910:                                              ; preds = %909, %822, %819
  %911 = load i32, ptr %59, align 4, !tbaa !9
  %912 = sitofp i32 %911 to double
  %913 = load ptr, ptr %27, align 8, !tbaa !5
  %914 = getelementptr inbounds double, ptr %913, i64 1
  store double %912, ptr %914, align 8, !tbaa !11
  store i32 1, ptr %70, align 4
  br label %915

915:                                              ; preds = %910, %298, %292, %284
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, 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 4, 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 8, 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
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #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
@c__1 = external hidden global i32, align 4
@.str.3 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.4 = 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.5 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 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

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

45:                                               ; preds = %15
  %46 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #5
  %.not349 = icmp eq i32 %46, 0
  br i1 %.not349, label %.thread368.sink.split, label %47

47:                                               ; preds = %45, %15
  %.not350 = icmp eq i32 %44, 0
  br i1 %.not350, label %48, label %50

48:                                               ; preds = %47
  %49 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.2) #5
  %.not351 = icmp eq i32 %49, 0
  br i1 %.not351, label %.thread368.sink.split, label %50

50:                                               ; preds = %48, %47
  %51 = load i32, ptr %3, align 4, !tbaa !5
  %52 = icmp slt i32 %51, 0
  br i1 %52, label %.thread368.sink.split, label %53

53:                                               ; preds = %50
  %54 = load i32, ptr %5, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %51, i32 1)
  %55 = icmp slt i32 %54, %spec.select
  br i1 %55, label %.thread368.sink.split, label %56

56:                                               ; preds = %53
  %57 = load i32, ptr %10, align 4, !tbaa !5
  %58 = icmp slt i32 %57, 1
  %59 = icmp ult i32 %57, %51
  %or.cond383 = and i1 %.not, %59
  %or.cond385 = or i1 %58, %or.cond383
  br i1 %or.cond385, label %.thread368.sink.split, label %60

60:                                               ; preds = %56
  %.pr = load i32, ptr %14, align 4, !tbaa !5
  %61 = icmp eq i32 %.pr, 0
  br i1 %61, label %62, label %.thread368

62:                                               ; preds = %60
  %63 = icmp eq i32 %51, 0
  br i1 %63, label %87, label %64

64:                                               ; preds = %62
  %65 = tail call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull %3, ptr noundef nonnull @c__1, ptr noundef nonnull %3, ptr noundef nonnull @c__0, i32 noundef 6, i32 noundef 1) #5
  %66 = add i32 %65, 2
  %67 = mul i32 %66, %51
  %68 = load i32, ptr %3, align 4, !tbaa !5
  %69 = mul nsw i32 %68, 3
  call void @dhseqr_(ptr noundef nonnull @.str.1, ptr noundef %0, ptr noundef nonnull %3, ptr noundef nonnull @c__1, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull @c_n1, ptr noundef nonnull %23) #5
  %70 = load double, ptr %11, align 8, !tbaa !9
  %71 = fptosi double %70 to i32
  store i32 %67, ptr %16, align 4, !tbaa !5
  %72 = load i32, ptr %3, align 4, !tbaa !5
  br i1 %.not, label %76, label %73

73:                                               ; preds = %64
  %74 = add nsw i32 %72, %71
  store i32 %74, ptr %17, align 4, !tbaa !5
  %75 = call i32 @llvm.smax.i32(i32 %67, i32 %74)
  br label %87

76:                                               ; preds = %64
  %77 = shl i32 %72, 1
  %78 = add nsw i32 %72, -1
  %79 = call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.4, ptr noundef nonnull %3, ptr noundef nonnull @c__1, ptr noundef nonnull %3, ptr noundef nonnull @c_n1, i32 noundef 6, i32 noundef 1) #5
  %80 = mul nsw i32 %78, %79
  %81 = add nsw i32 %80, %77
  %82 = load i32, ptr %16, align 4
  %83 = call i32 @llvm.smax.i32(i32 %82, i32 %81)
  store i32 %83, ptr %16, align 4, !tbaa !5
  %84 = load i32, ptr %3, align 4, !tbaa !5
  %85 = add nsw i32 %84, %71
  store i32 %85, ptr %17, align 4, !tbaa !5
  %86 = call i32 @llvm.smax.i32(i32 %83, i32 %85)
  br label %87

87:                                               ; preds = %62, %73, %76
  %88 = phi i32 [ %84, %76 ], [ %72, %73 ], [ 0, %62 ]
  %.0320 = phi i32 [ %69, %76 ], [ %69, %73 ], [ 1, %62 ]
  %.0 = phi i32 [ %86, %76 ], [ %75, %73 ], [ 1, %62 ]
  %89 = sitofp i32 %.0 to double
  store double %89, ptr %11, align 8, !tbaa !9
  %90 = load i32, ptr %12, align 4, !tbaa !5
  %91 = icmp sge i32 %90, %.0320
  %or.cond = select i1 %91, i1 true, i1 %42
  br i1 %or.cond, label %.thread, label %.thread368.sink.split

.thread:                                          ; preds = %87
  %.pr365.pr = load i32, ptr %14, align 4, !tbaa !5
  %.not355 = icmp eq i32 %.pr365.pr, 0
  br i1 %.not355, label %95, label %.thread368

.thread368.sink.split:                            ; preds = %87, %56, %53, %50, %48, %45
  %.sink = phi i32 [ -1, %45 ], [ -2, %48 ], [ -4, %50 ], [ -6, %53 ], [ -11, %56 ], [ -13, %87 ]
  store i32 %.sink, ptr %14, align 4, !tbaa !5
  br label %.thread368

.thread368:                                       ; preds = %.thread368.sink.split, %60, %.thread
  %92 = phi i32 [ %.pr365.pr, %.thread ], [ %.pr, %60 ], [ %.sink, %.thread368.sink.split ]
  %93 = sub nsw i32 0, %92
  store i32 %93, ptr %16, align 4, !tbaa !5
  %94 = call i32 @xerbla_(ptr noundef nonnull @.str.6, ptr noundef nonnull %16, i32 noundef 6) #5
  br label %280

95:                                               ; preds = %.thread
  br i1 %42, label %280, label %96

96:                                               ; preds = %95
  %97 = icmp eq i32 %88, 0
  br i1 %97, label %98, label %99

98:                                               ; preds = %96
  store i32 0, ptr %6, align 4, !tbaa !5
  br label %280

99:                                               ; preds = %96
  %100 = call double @dlamch_(ptr noundef nonnull @.str.7) #5
  %101 = call double @dlamch_(ptr noundef nonnull @.str.1) #5
  store double %101, ptr %26, align 8, !tbaa !9
  %102 = fdiv double 1.000000e+00, %101
  store double %102, ptr %25, align 8, !tbaa !9
  call void @dlabad_(ptr noundef nonnull %26, ptr noundef nonnull %25) #5
  %103 = load double, ptr %26, align 8, !tbaa !9
  %104 = call double @sqrt(double noundef %103) #5
  %105 = fdiv double %104, %100
  store double %105, ptr %26, align 8, !tbaa !9
  %106 = fdiv double 1.000000e+00, %105
  store double %106, ptr %25, align 8, !tbaa !9
  %107 = call double @dlange_(ptr noundef nonnull @.str.8, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef nonnull %29) #5
  store double %107, ptr %18, align 8, !tbaa !9
  %108 = fcmp ogt double %107, 0.000000e+00
  %109 = load double, ptr %26, align 8
  %110 = fcmp olt double %107, %109
  %or.cond387 = select i1 %108, i1 %110, i1 false
  br i1 %or.cond387, label %114, label %111

111:                                              ; preds = %99
  %112 = load double, ptr %25, align 8, !tbaa !9
  %113 = fcmp ogt double %107, %112
  br i1 %113, label %114, label %115

114:                                              ; preds = %99, %111
  %storemerge = phi double [ %112, %111 ], [ %109, %99 ]
  store double %storemerge, ptr %24, align 8, !tbaa !9
  call void @dlascl_(ptr noundef nonnull @.str.9, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %18, ptr noundef nonnull %24, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef nonnull %20) #5
  br label %115

115:                                              ; preds = %111, %114
  %.not356375 = phi i1 [ false, %114 ], [ true, %111 ]
  call void @dgebal_(ptr noundef nonnull @.str.7, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef nonnull %28, ptr noundef nonnull %27, ptr noundef nonnull %11, ptr noundef nonnull %20) #5
  %116 = load i32, ptr %3, align 4, !tbaa !5
  %117 = add nsw i32 %116, 1
  %118 = add nsw i32 %117, %116
  %119 = load i32, ptr %12, align 4, !tbaa !5
  %120 = add i32 %119, 1
  %121 = sub i32 %120, %118
  store i32 %121, ptr %16, align 4, !tbaa !5
  %122 = sext i32 %117 to i64
  %123 = getelementptr inbounds double, ptr %39, i64 %122
  %124 = sext i32 %118 to i64
  %125 = getelementptr inbounds double, ptr %39, i64 %124
  call void @dgehrd_(ptr noundef nonnull %3, ptr noundef nonnull %28, ptr noundef nonnull %27, ptr noundef %4, ptr noundef nonnull %5, ptr noundef nonnull %123, ptr noundef nonnull %125, ptr noundef nonnull %16, ptr noundef nonnull %20) #5
  br i1 %.not, label %126, label %129

126:                                              ; preds = %115
  call void @dlacpy_(ptr noundef nonnull @.str.10, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %9, ptr noundef nonnull %10) #5
  %127 = load i32, ptr %12, align 4, !tbaa !5
  %reass.sub = sub i32 %127, %118
  %128 = add i32 %reass.sub, 1
  store i32 %128, ptr %16, align 4, !tbaa !5
  call void @dorghr_(ptr noundef nonnull %3, ptr noundef nonnull %28, ptr noundef nonnull %27, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %123, ptr noundef nonnull %125, ptr noundef nonnull %16, ptr noundef nonnull %20) #5
  br label %129

129:                                              ; preds = %126, %115
  store i32 0, ptr %6, align 4, !tbaa !5
  %130 = load i32, ptr %12, align 4, !tbaa !5
  %131 = sub i32 %130, %116
  store i32 %131, ptr %16, align 4, !tbaa !5
  call void @dhseqr_(ptr noundef nonnull @.str.1, ptr noundef %0, ptr noundef nonnull %3, ptr noundef nonnull %28, ptr noundef nonnull %27, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %123, ptr noundef nonnull %16, ptr noundef nonnull %23) #5
  %132 = load i32, ptr %23, align 4, !tbaa !5
  %133 = icmp sgt i32 %132, 0
  br i1 %133, label %134, label %135

134:                                              ; preds = %129
  store i32 %132, ptr %14, align 4, !tbaa !5
  br label %135

135:                                              ; preds = %134, %129
  br i1 %.not350, label %156, label %136

136:                                              ; preds = %135
  %137 = load i32, ptr %14, align 4, !tbaa !5
  %138 = icmp eq i32 %137, 0
  br i1 %138, label %139, label %156

139:                                              ; preds = %136
  br i1 %.not356375, label %141, label %140

140:                                              ; preds = %139
  call void @dlascl_(ptr noundef nonnull @.str.9, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %24, ptr noundef nonnull %18, ptr noundef nonnull %3, ptr noundef nonnull @c__1, ptr noundef %7, ptr noundef nonnull %3, ptr noundef nonnull %20) #5
  call void @dlascl_(ptr noundef nonnull @.str.9, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %24, ptr noundef nonnull %18, ptr noundef nonnull %3, ptr noundef nonnull @c__1, ptr noundef %8, ptr noundef nonnull %3, ptr noundef nonnull %20) #5
  br label %141

141:                                              ; preds = %140, %139
  %142 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %142, ptr %16, align 4, !tbaa !5
  %.not359390 = icmp slt i32 %142, 1
  br i1 %.not359390, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %141, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 1, %141 ]
  %143 = getelementptr inbounds double, ptr %34, i64 %indvars.iv
  %144 = getelementptr inbounds double, ptr %35, i64 %indvars.iv
  %145 = call i32 (ptr, ptr, ...) %2(ptr noundef nonnull %143, ptr noundef nonnull %144) #5
  %146 = getelementptr inbounds i32, ptr %40, i64 %indvars.iv
  store i32 %145, ptr %146, align 4, !tbaa !5
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %147 = load i32, ptr %16, align 4, !tbaa !5
  %148 = sext i32 %147 to i64
  %.not359.not = icmp slt i64 %indvars.iv, %148
  br i1 %.not359.not, label %.lr.ph, label %._crit_edge, !llvm.loop !11

._crit_edge:                                      ; preds = %.lr.ph, %141
  %149 = load i32, ptr %12, align 4, !tbaa !5
  %150 = sub i32 %149, %116
  store i32 %150, ptr %16, align 4, !tbaa !5
  call void @dtrsen_(ptr noundef nonnull @.str.2, ptr noundef %0, ptr noundef %13, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %7, ptr noundef %8, ptr noundef nonnull %6, ptr noundef nonnull %21, ptr noundef nonnull %30, ptr noundef nonnull %123, ptr noundef nonnull %16, ptr noundef nonnull %19, ptr noundef nonnull @c__1, ptr noundef nonnull %22) #5
  %151 = load i32, ptr %22, align 4, !tbaa !5
  %152 = icmp sgt i32 %151, 0
  br i1 %152, label %153, label %156

153:                                              ; preds = %._crit_edge
  %154 = load i32, ptr %3, align 4, !tbaa !5
  %155 = add nsw i32 %154, %151
  store i32 %155, ptr %14, align 4, !tbaa !5
  br label %156

156:                                              ; preds = %._crit_edge, %153, %136, %135
  br i1 %.not, label %157, label %158

157:                                              ; preds = %156
  call void @dgebak_(ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.11, ptr noundef nonnull %3, ptr noundef nonnull %28, ptr noundef nonnull %27, ptr noundef nonnull %11, ptr noundef nonnull %3, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %20) #5
  br label %158

158:                                              ; preds = %157, %156
  br i1 %.not356375, label %251, label %159

159:                                              ; preds = %158
  call void @dlascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %24, ptr noundef nonnull %18, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef nonnull %20) #5
  %160 = load i32, ptr %5, align 4, !tbaa !5
  %161 = add nsw i32 %160, 1
  store i32 %161, ptr %16, align 4, !tbaa !5
  call void @dcopy_(ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %16, ptr noundef %7, ptr noundef nonnull @c__1) #5
  %162 = load double, ptr %24, align 8, !tbaa !9
  %163 = load double, ptr %26, align 8, !tbaa !9
  %164 = fcmp oeq double %162, %163
  br i1 %164, label %165, label %.loopexit389

165:                                              ; preds = %159
  %166 = load i32, ptr %23, align 4, !tbaa !5
  %167 = icmp sgt i32 %166, 0
  br i1 %167, label %168, label %175

168:                                              ; preds = %165
  %169 = add nuw nsw i32 %166, 1
  %170 = load i32, ptr %27, align 4, !tbaa !5
  %171 = load i32, ptr %28, align 4, !tbaa !5
  %172 = add nsw i32 %171, -1
  store i32 %172, ptr %16, align 4, !tbaa !5
  %173 = icmp sgt i32 %171, 1
  %174 = select i1 %173, i32 %172, i32 1
  store i32 %174, ptr %17, align 4, !tbaa !5
  call void @dlascl_(ptr noundef nonnull @.str.9, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %24, ptr noundef nonnull %18, ptr noundef nonnull %16, ptr noundef nonnull @c__1, ptr noundef %8, ptr noundef nonnull %17, ptr noundef nonnull %20) #5
  br label %181

175:                                              ; preds = %165
  br i1 %.not350, label %178, label %176

176:                                              ; preds = %175
  %177 = load i32, ptr %3, align 4, !tbaa !5
  br label %181

178:                                              ; preds = %175
  %179 = load i32, ptr %28, align 4, !tbaa !5
  %180 = load i32, ptr %27, align 4, !tbaa !5
  br label %181

181:                                              ; preds = %176, %178, %168
  %.0328 = phi i32 [ %169, %168 ], [ 1, %176 ], [ %179, %178 ]
  %.0327.in = phi i32 [ %170, %168 ], [ %177, %176 ], [ %180, %178 ]
  %.0327 = add nsw i32 %.0327.in, -1
  store i32 %.0327, ptr %16, align 4, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %33, i64 8
  %invariant.gep394 = getelementptr i8, ptr %38, i64 8
  %.not360398.not = icmp slt i32 %.0328, %.0327.in
  br i1 %.not360398.not, label %.lr.ph404.preheader, label %.loopexit389

.lr.ph404.preheader:                              ; preds = %181
  %182 = add nsw i32 %.0328, -1
  %183 = sext i32 %.0328 to i64
  %184 = sext i32 %31 to i64
  %185 = sext i32 %36 to i64
  br label %.lr.ph404

.lr.ph404:                                        ; preds = %.lr.ph404.preheader, %241
  %.pre419 = phi i32 [ %.0327, %.lr.ph404.preheader ], [ %.pre420, %241 ]
  %186 = phi i32 [ %.0327, %.lr.ph404.preheader ], [ %242, %241 ]
  %indvars.iv413 = phi i64 [ %183, %.lr.ph404.preheader ], [ %indvars.iv.next414.pre-phi, %241 ]
  %.0332399 = phi i32 [ %182, %.lr.ph404.preheader ], [ %.1333, %241 ]
  %indvars415 = trunc i64 %indvars.iv413 to i32
  %187 = sext i32 %.0332399 to i64
  %188 = icmp slt i64 %indvars.iv413, %187
  br i1 %188, label %.lr.ph404._crit_edge, label %189

.lr.ph404._crit_edge:                             ; preds = %.lr.ph404
  %.pre422 = add nsw i64 %indvars.iv413, 1
  br label %241

189:                                              ; preds = %.lr.ph404
  %190 = getelementptr inbounds double, ptr %35, i64 %indvars.iv413
  %191 = load double, ptr %190, align 8, !tbaa !9
  %192 = fcmp oeq double %191, 0.000000e+00
  %193 = add nsw i64 %indvars.iv413, 1
  br i1 %192, label %194, label %196

194:                                              ; preds = %189
  %195 = trunc nsw i64 %193 to i32
  br label %241

196:                                              ; preds = %189
  %197 = mul nsw i64 %indvars.iv413, %184
  %198 = getelementptr double, ptr %33, i64 %193
  %199 = getelementptr double, ptr %198, i64 %197
  %200 = load double, ptr %199, align 8, !tbaa !9
  %201 = fcmp oeq double %200, 0.000000e+00
  br i1 %201, label %202, label %203

202:                                              ; preds = %196
  store <2 x double> zeroinitializer, ptr %190, align 8, !tbaa !9
  br label %239

203:                                              ; preds = %196
  %204 = add nsw i32 %indvars415, 1
  %205 = mul nsw i64 %193, %184
  %206 = mul nsw i32 %204, %31
  %207 = sext i32 %206 to i64
  %208 = getelementptr double, ptr %33, i64 %indvars.iv413
  %209 = getelementptr double, ptr %208, i64 %207
  %210 = load double, ptr %209, align 8, !tbaa !9
  %211 = fcmp oeq double %210, 0.000000e+00
  br i1 %211, label %212, label %239

212:                                              ; preds = %203
  store <2 x double> zeroinitializer, ptr %190, align 8, !tbaa !9
  %213 = icmp sgt i64 %indvars.iv413, 1
  br i1 %213, label %214, label %217

214:                                              ; preds = %212
  %215 = trunc i64 %indvars.iv413 to i32
  %216 = add i32 %215, -1
  store i32 %216, ptr %17, align 4, !tbaa !5
  %gep = getelementptr double, ptr %invariant.gep, i64 %197
  %gep393 = getelementptr double, ptr %invariant.gep, i64 %205
  call void @dswap_(ptr noundef nonnull %17, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %gep393, ptr noundef nonnull @c__1) #5
  br label %217

217:                                              ; preds = %214, %212
  %218 = load i32, ptr %3, align 4, !tbaa !5
  %219 = sext i32 %218 to i64
  %220 = icmp slt i64 %193, %219
  br i1 %220, label %221, label %233

221:                                              ; preds = %217
  %222 = xor i32 %indvars415, -1
  %223 = add i32 %218, %222
  store i32 %223, ptr %17, align 4, !tbaa !5
  %224 = add nsw i64 %indvars.iv413, 2
  %225 = add nsw i32 %indvars415, 2
  %226 = mul nsw i64 %224, %184
  %227 = mul nsw i32 %225, %31
  %228 = sext i32 %227 to i64
  %229 = getelementptr double, ptr %33, i64 %indvars.iv413
  %230 = getelementptr double, ptr %229, i64 %228
  %231 = getelementptr double, ptr %33, i64 %226
  %232 = getelementptr double, ptr %231, i64 %193
  call void @dswap_(ptr noundef nonnull %17, ptr noundef %230, ptr noundef nonnull %5, ptr noundef %232, ptr noundef nonnull %5) #5
  br label %233

233:                                              ; preds = %221, %217
  br i1 %.not, label %234, label %237

234:                                              ; preds = %233
  %235 = mul nsw i64 %indvars.iv413, %185
  %gep395 = getelementptr double, ptr %invariant.gep394, i64 %235
  %236 = mul nsw i64 %193, %185
  %gep397 = getelementptr double, ptr %invariant.gep394, i64 %236
  call void @dswap_(ptr noundef nonnull %3, ptr noundef %gep395, ptr noundef nonnull @c__1, ptr noundef %gep397, ptr noundef nonnull @c__1) #5
  br label %237

237:                                              ; preds = %234, %233
  %238 = load double, ptr %199, align 8, !tbaa !9
  store double %238, ptr %209, align 8, !tbaa !9
  store double 0.000000e+00, ptr %199, align 8, !tbaa !9
  %.pre.pre = load i32, ptr %16, align 4, !tbaa !5
  br label %239

239:                                              ; preds = %203, %237, %202
  %.pre = phi i32 [ %.pre419, %203 ], [ %.pre.pre, %237 ], [ %.pre419, %202 ]
  %240 = add nsw i32 %indvars415, 2
  br label %241

241:                                              ; preds = %.lr.ph404._crit_edge, %239, %194
  %indvars.iv.next414.pre-phi = phi i64 [ %.pre422, %.lr.ph404._crit_edge ], [ %193, %239 ], [ %193, %194 ]
  %.pre420 = phi i32 [ %.pre419, %.lr.ph404._crit_edge ], [ %.pre, %239 ], [ %.pre419, %194 ]
  %242 = phi i32 [ %186, %.lr.ph404._crit_edge ], [ %.pre, %239 ], [ %186, %194 ]
  %.1333 = phi i32 [ %.0332399, %.lr.ph404._crit_edge ], [ %240, %239 ], [ %195, %194 ]
  %243 = sext i32 %242 to i64
  %.not360.not = icmp slt i64 %indvars.iv413, %243
  br i1 %.not360.not, label %.lr.ph404, label %.loopexit389, !llvm.loop !13

.loopexit389:                                     ; preds = %241, %181, %159
  %244 = load i32, ptr %3, align 4, !tbaa !5
  %245 = load i32, ptr %23, align 4, !tbaa !5
  %246 = sub nsw i32 %244, %245
  store i32 %246, ptr %16, align 4, !tbaa !5
  %247 = call i32 @llvm.smax.i32(i32 %246, i32 1)
  store i32 %247, ptr %17, align 4, !tbaa !5
  %248 = sext i32 %245 to i64
  %249 = getelementptr double, ptr %35, i64 %248
  %250 = getelementptr i8, ptr %249, i64 8
  call void @dlascl_(ptr noundef nonnull @.str.9, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %24, ptr noundef nonnull %18, ptr noundef nonnull %16, ptr noundef nonnull @c__1, ptr noundef %250, ptr noundef nonnull %17, ptr noundef nonnull %20) #5
  br label %251

251:                                              ; preds = %.loopexit389, %158
  br i1 %.not350, label %.loopexit, label %252

252:                                              ; preds = %251
  %253 = load i32, ptr %14, align 4, !tbaa !5
  %254 = icmp eq i32 %253, 0
  br i1 %254, label %255, label %.loopexit

255:                                              ; preds = %252
  store i32 0, ptr %6, align 4, !tbaa !5
  %256 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %256, ptr %16, align 4, !tbaa !5
  %.not361405 = icmp slt i32 %256, 1
  br i1 %.not361405, label %.loopexit, label %.lr.ph411

.lr.ph411:                                        ; preds = %255, %.thread376
  %indvars.iv416 = phi i64 [ %indvars.iv.next417, %.thread376 ], [ 1, %255 ]
  %.0321409 = phi i32 [ %.0329, %.thread376 ], [ 1, %255 ]
  %.0323408 = phi i32 [ %.1324, %.thread376 ], [ 0, %255 ]
  %.0326407 = phi i32 [ %.1322, %.thread376 ], [ 1, %255 ]
  %257 = getelementptr inbounds double, ptr %34, i64 %indvars.iv416
  %258 = getelementptr inbounds double, ptr %35, i64 %indvars.iv416
  %259 = call i32 (ptr, ptr, ...) %2(ptr noundef nonnull %257, ptr noundef nonnull %258) #5
  %260 = load double, ptr %258, align 8, !tbaa !9
  %261 = fcmp oeq double %260, 0.000000e+00
  br i1 %261, label %262, label %266

262:                                              ; preds = %.lr.ph411
  %.not363 = icmp eq i32 %259, 0
  br i1 %.not363, label %.thread376, label %263

263:                                              ; preds = %262
  %264 = load i32, ptr %6, align 4, !tbaa !5
  %265 = add nsw i32 %264, 1
  store i32 %265, ptr %6, align 4, !tbaa !5
  %.not384 = icmp eq i32 %.0321409, 0
  br i1 %.not384, label %.thread376.sink.split, label %.thread376

266:                                              ; preds = %.lr.ph411
  %267 = icmp eq i32 %.0323408, 1
  br i1 %267, label %268, label %.thread376

268:                                              ; preds = %266
  %269 = icmp ne i32 %259, 0
  %270 = icmp ne i32 %.0321409, 0
  %271 = select i1 %269, i1 true, i1 %270
  br i1 %271, label %272, label %.thread376

272:                                              ; preds = %268
  %273 = load i32, ptr %6, align 4, !tbaa !5
  %274 = add nsw i32 %273, 2
  store i32 %274, ptr %6, align 4, !tbaa !5
  %275 = icmp eq i32 %.0326407, 0
  br i1 %275, label %.thread376.sink.split, label %.thread376

.thread376.sink.split:                            ; preds = %272, %263
  %.0329.ph = phi i32 [ %259, %263 ], [ 1, %272 ]
  %.1324.ph = phi i32 [ 0, %263 ], [ -1, %272 ]
  %.1322.ph = phi i32 [ 0, %263 ], [ 1, %272 ]
  %276 = load i32, ptr %3, align 4, !tbaa !5
  %277 = add nsw i32 %276, 2
  store i32 %277, ptr %14, align 4, !tbaa !5
  br label %.thread376

.thread376:                                       ; preds = %.thread376.sink.split, %268, %262, %266, %272, %263
  %.0329 = phi i32 [ %259, %263 ], [ 1, %272 ], [ %259, %266 ], [ 0, %262 ], [ 0, %268 ], [ %.0329.ph, %.thread376.sink.split ]
  %.1324 = phi i32 [ 0, %263 ], [ -1, %272 ], [ 1, %266 ], [ 0, %262 ], [ -1, %268 ], [ %.1324.ph, %.thread376.sink.split ]
  %.1322 = phi i32 [ %.0321409, %263 ], [ 1, %272 ], [ %.0321409, %266 ], [ %.0321409, %262 ], [ 0, %268 ], [ %.1322.ph, %.thread376.sink.split ]
  %indvars.iv.next417 = add nuw nsw i64 %indvars.iv416, 1
  %278 = load i32, ptr %16, align 4, !tbaa !5
  %279 = sext i32 %278 to i64
  %.not361.not = icmp slt i64 %indvars.iv416, %279
  br i1 %.not361.not, label %.lr.ph411, label %.loopexit, !llvm.loop !14

.loopexit:                                        ; preds = %.thread376, %255, %252, %251
  store double %89, ptr %11, align 8, !tbaa !9
  br label %280

280:                                              ; preds = %95, %.loopexit, %98, %.thread368
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #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,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass