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

; 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
@c__1 = external hidden global i64, align 8
@.str.2 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c_n1 = external hidden global i64, align 8
@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1
@.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
@.str.13 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [5 x i8], align 1
@c_b36 = external hidden global double, align 8
@c_b37 = external hidden global double, align 8
@.str.16 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [2 x i8], align 1

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

121:                                              ; preds = %17
  store i64 1, ptr %68, align 8, !tbaa !9
  store i64 0, ptr %60, align 8, !tbaa !9
  br label %129

122:                                              ; preds = %17
  %123 = load ptr, ptr %19, align 8, !tbaa !5
  %124 = call i64 @lsame_(ptr noundef %123, ptr noundef @.str.1)
  %125 = icmp ne i64 %124, 0
  br i1 %125, label %126, label %127

126:                                              ; preds = %122
  store i64 2, ptr %68, align 8, !tbaa !9
  store i64 1, ptr %60, align 8, !tbaa !9
  br label %128

127:                                              ; preds = %122
  store i64 -1, ptr %68, align 8, !tbaa !9
  store i64 0, ptr %60, align 8, !tbaa !9
  br label %128

128:                                              ; preds = %127, %126
  br label %129

129:                                              ; preds = %128, %121
  %130 = load ptr, ptr %20, align 8, !tbaa !5
  %131 = call i64 @lsame_(ptr noundef %130, ptr noundef @.str)
  %132 = icmp ne i64 %131, 0
  br i1 %132, label %133, label %134

133:                                              ; preds = %129
  store i64 1, ptr %70, align 8, !tbaa !9
  store i64 0, ptr %62, align 8, !tbaa !9
  br label %141

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

138:                                              ; preds = %134
  store i64 2, ptr %70, align 8, !tbaa !9
  store i64 1, ptr %62, align 8, !tbaa !9
  br label %140

139:                                              ; preds = %134
  store i64 -1, ptr %70, align 8, !tbaa !9
  store i64 0, ptr %62, align 8, !tbaa !9
  br label %140

140:                                              ; preds = %139, %138
  br label %141

141:                                              ; preds = %140, %133
  %142 = load ptr, ptr %21, align 8, !tbaa !5
  %143 = load i64, ptr %142, align 8, !tbaa !9
  %144 = shl i64 %143, 2
  store i64 %144, ptr %44, align 8, !tbaa !9
  %145 = load i64, ptr %44, align 8, !tbaa !9
  %146 = icmp sge i64 %145, 1
  br i1 %146, label %147, label %149

147:                                              ; preds = %141
  %148 = load i64, ptr %44, align 8, !tbaa !9
  br label %150

149:                                              ; preds = %141
  br label %150

150:                                              ; preds = %149, %147
  %151 = phi i64 [ %148, %147 ], [ 1, %149 ]
  store i64 %151, ptr %72, align 8, !tbaa !9
  %152 = load i64, ptr %72, align 8, !tbaa !9
  store i64 %152, ptr %75, align 8, !tbaa !9
  %153 = load i64, ptr %75, align 8, !tbaa !9
  %154 = sitofp i64 %153 to double
  %155 = load ptr, ptr %33, align 8, !tbaa !5
  %156 = getelementptr inbounds double, ptr %155, i64 1
  store double %154, ptr %156, align 8, !tbaa !11
  %157 = load ptr, ptr %34, align 8, !tbaa !5
  %158 = load i64, ptr %157, align 8, !tbaa !9
  %159 = icmp eq i64 %158, -1
  %160 = zext i1 %159 to i32
  %161 = sext i32 %160 to i64
  store i64 %161, ptr %76, align 8, !tbaa !9
  %162 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 0, ptr %162, align 8, !tbaa !9
  %163 = load i64, ptr %68, align 8, !tbaa !9
  %164 = icmp sle i64 %163, 0
  br i1 %164, label %165, label %167

165:                                              ; preds = %150
  %166 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -1, ptr %166, align 8, !tbaa !9
  br label %255

167:                                              ; preds = %150
  %168 = load i64, ptr %70, align 8, !tbaa !9
  %169 = icmp sle i64 %168, 0
  br i1 %169, label %170, label %172

170:                                              ; preds = %167
  %171 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -2, ptr %171, align 8, !tbaa !9
  br label %254

172:                                              ; preds = %167
  %173 = load ptr, ptr %21, align 8, !tbaa !5
  %174 = load i64, ptr %173, align 8, !tbaa !9
  %175 = icmp slt i64 %174, 0
  br i1 %175, label %176, label %178

176:                                              ; preds = %172
  %177 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -3, ptr %177, align 8, !tbaa !9
  br label %253

178:                                              ; preds = %172
  %179 = load ptr, ptr %23, align 8, !tbaa !5
  %180 = load i64, ptr %179, align 8, !tbaa !9
  %181 = load ptr, ptr %21, align 8, !tbaa !5
  %182 = load i64, ptr %181, align 8, !tbaa !9
  %183 = icmp sge i64 1, %182
  br i1 %183, label %184, label %185

184:                                              ; preds = %178
  br label %188

185:                                              ; preds = %178
  %186 = load ptr, ptr %21, align 8, !tbaa !5
  %187 = load i64, ptr %186, align 8, !tbaa !9
  br label %188

188:                                              ; preds = %185, %184
  %189 = phi i64 [ 1, %184 ], [ %187, %185 ]
  %190 = icmp slt i64 %180, %189
  br i1 %190, label %191, label %193

191:                                              ; preds = %188
  %192 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -5, ptr %192, align 8, !tbaa !9
  br label %252

193:                                              ; preds = %188
  %194 = load ptr, ptr %25, align 8, !tbaa !5
  %195 = load i64, ptr %194, align 8, !tbaa !9
  %196 = load ptr, ptr %21, align 8, !tbaa !5
  %197 = load i64, ptr %196, align 8, !tbaa !9
  %198 = icmp sge i64 1, %197
  br i1 %198, label %199, label %200

199:                                              ; preds = %193
  br label %203

200:                                              ; preds = %193
  %201 = load ptr, ptr %21, align 8, !tbaa !5
  %202 = load i64, ptr %201, align 8, !tbaa !9
  br label %203

203:                                              ; preds = %200, %199
  %204 = phi i64 [ 1, %199 ], [ %202, %200 ]
  %205 = icmp slt i64 %195, %204
  br i1 %205, label %206, label %208

206:                                              ; preds = %203
  %207 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -7, ptr %207, align 8, !tbaa !9
  br label %251

208:                                              ; preds = %203
  %209 = load ptr, ptr %30, align 8, !tbaa !5
  %210 = load i64, ptr %209, align 8, !tbaa !9
  %211 = icmp slt i64 %210, 1
  br i1 %211, label %221, label %212

212:                                              ; preds = %208
  %213 = load i64, ptr %60, align 8, !tbaa !9
  %214 = icmp ne i64 %213, 0
  br i1 %214, label %215, label %223

215:                                              ; preds = %212
  %216 = load ptr, ptr %30, align 8, !tbaa !5
  %217 = load i64, ptr %216, align 8, !tbaa !9
  %218 = load ptr, ptr %21, align 8, !tbaa !5
  %219 = load i64, ptr %218, align 8, !tbaa !9
  %220 = icmp slt i64 %217, %219
  br i1 %220, label %221, label %223

221:                                              ; preds = %215, %208
  %222 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -12, ptr %222, align 8, !tbaa !9
  br label %250

223:                                              ; preds = %215, %212
  %224 = load ptr, ptr %32, align 8, !tbaa !5
  %225 = load i64, ptr %224, align 8, !tbaa !9
  %226 = icmp slt i64 %225, 1
  br i1 %226, label %236, label %227

227:                                              ; preds = %223
  %228 = load i64, ptr %62, align 8, !tbaa !9
  %229 = icmp ne i64 %228, 0
  br i1 %229, label %230, label %238

230:                                              ; preds = %227
  %231 = load ptr, ptr %32, align 8, !tbaa !5
  %232 = load i64, ptr %231, align 8, !tbaa !9
  %233 = load ptr, ptr %21, align 8, !tbaa !5
  %234 = load i64, ptr %233, align 8, !tbaa !9
  %235 = icmp slt i64 %232, %234
  br i1 %235, label %236, label %238

236:                                              ; preds = %230, %223
  %237 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -14, ptr %237, align 8, !tbaa !9
  br label %249

238:                                              ; preds = %230, %227
  %239 = load ptr, ptr %34, align 8, !tbaa !5
  %240 = load i64, ptr %239, align 8, !tbaa !9
  %241 = load i64, ptr %72, align 8, !tbaa !9
  %242 = icmp slt i64 %240, %241
  br i1 %242, label %243, label %248

243:                                              ; preds = %238
  %244 = load i64, ptr %76, align 8, !tbaa !9
  %245 = icmp ne i64 %244, 0
  br i1 %245, label %248, label %246

246:                                              ; preds = %243
  %247 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -16, ptr %247, align 8, !tbaa !9
  br label %248

248:                                              ; preds = %246, %243, %238
  br label %249

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

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

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

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

253:                                              ; preds = %252, %176
  br label %254

254:                                              ; preds = %253, %170
  br label %255

255:                                              ; preds = %254, %165
  %256 = load ptr, ptr %35, align 8, !tbaa !5
  %257 = load i64, ptr %256, align 8, !tbaa !9
  %258 = icmp eq i64 %257, 0
  br i1 %258, label %259, label %302

259:                                              ; preds = %255
  %260 = load ptr, ptr %21, align 8, !tbaa !5
  %261 = load ptr, ptr %21, align 8, !tbaa !5
  %262 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef %260, ptr noundef %261, ptr noundef @c_n1, ptr noundef @c_n1)
  store i64 %262, ptr %47, align 8, !tbaa !9
  %263 = load ptr, ptr %21, align 8, !tbaa !5
  %264 = load ptr, ptr %21, align 8, !tbaa !5
  %265 = load ptr, ptr %21, align 8, !tbaa !5
  %266 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.4, ptr noundef @.str.3, ptr noundef %263, ptr noundef %264, ptr noundef %265, ptr noundef @c_n1)
  store i64 %266, ptr %48, align 8, !tbaa !9
  %267 = load ptr, ptr %21, align 8, !tbaa !5
  %268 = load ptr, ptr %21, align 8, !tbaa !5
  %269 = load ptr, ptr %21, align 8, !tbaa !5
  %270 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.5, ptr noundef @.str.3, ptr noundef %267, ptr noundef %268, ptr noundef %269, ptr noundef @c_n1)
  store i64 %270, ptr %49, align 8, !tbaa !9
  %271 = load i64, ptr %47, align 8, !tbaa !9
  %272 = load i64, ptr %48, align 8, !tbaa !9
  %273 = icmp sge i64 %271, %272
  br i1 %273, label %274, label %276

274:                                              ; preds = %259
  %275 = load i64, ptr %47, align 8, !tbaa !9
  br label %278

276:                                              ; preds = %259
  %277 = load i64, ptr %48, align 8, !tbaa !9
  br label %278

278:                                              ; preds = %276, %274
  %279 = phi i64 [ %275, %274 ], [ %277, %276 ]
  store i64 %279, ptr %44, align 8, !tbaa !9
  %280 = load i64, ptr %44, align 8, !tbaa !9
  %281 = load i64, ptr %49, align 8, !tbaa !9
  %282 = icmp sge i64 %280, %281
  br i1 %282, label %283, label %285

283:                                              ; preds = %278
  %284 = load i64, ptr %44, align 8, !tbaa !9
  br label %287

285:                                              ; preds = %278
  %286 = load i64, ptr %49, align 8, !tbaa !9
  br label %287

287:                                              ; preds = %285, %283
  %288 = phi i64 [ %284, %283 ], [ %286, %285 ]
  store i64 %288, ptr %46, align 8, !tbaa !9
  %289 = load ptr, ptr %21, align 8, !tbaa !5
  %290 = load i64, ptr %289, align 8, !tbaa !9
  %291 = shl i64 %290, 1
  %292 = load ptr, ptr %21, align 8, !tbaa !5
  %293 = load i64, ptr %292, align 8, !tbaa !9
  %294 = load i64, ptr %46, align 8, !tbaa !9
  %295 = add nsw i64 %294, 1
  %296 = mul nsw i64 %293, %295
  %297 = add nsw i64 %291, %296
  store i64 %297, ptr %56, align 8, !tbaa !9
  %298 = load i64, ptr %56, align 8, !tbaa !9
  %299 = sitofp i64 %298 to double
  %300 = load ptr, ptr %33, align 8, !tbaa !5
  %301 = getelementptr inbounds double, ptr %300, i64 1
  store double %299, ptr %301, align 8, !tbaa !11
  br label %302

302:                                              ; preds = %287, %255
  %303 = load ptr, ptr %35, align 8, !tbaa !5
  %304 = load i64, ptr %303, align 8, !tbaa !9
  %305 = icmp ne i64 %304, 0
  br i1 %305, label %306, label %311

306:                                              ; preds = %302
  %307 = load ptr, ptr %35, align 8, !tbaa !5
  %308 = load i64, ptr %307, align 8, !tbaa !9
  %309 = sub nsw i64 0, %308
  store i64 %309, ptr %44, align 8, !tbaa !9
  %310 = call i32 @xerbla_(ptr noundef @.str.6, ptr noundef %44)
  store i32 0, ptr %18, align 4
  store i32 1, ptr %77, align 4
  br label %928

311:                                              ; preds = %302
  %312 = load i64, ptr %76, align 8, !tbaa !9
  %313 = icmp ne i64 %312, 0
  br i1 %313, label %314, label %315

314:                                              ; preds = %311
  store i32 0, ptr %18, align 4
  store i32 1, ptr %77, align 4
  br label %928

315:                                              ; preds = %311
  br label %316

316:                                              ; preds = %315
  %317 = load ptr, ptr %21, align 8, !tbaa !5
  %318 = load i64, ptr %317, align 8, !tbaa !9
  %319 = icmp eq i64 %318, 0
  br i1 %319, label %320, label %321

320:                                              ; preds = %316
  store i32 0, ptr %18, align 4
  store i32 1, ptr %77, align 4
  br label %928

321:                                              ; preds = %316
  %322 = call double @dlamch_(ptr noundef @.str.7)
  %323 = call double @dlamch_(ptr noundef @.str.8)
  %324 = fmul double %322, %323
  store double %324, ptr %52, align 8, !tbaa !11
  %325 = call double @dlamch_(ptr noundef @.str.9)
  store double %325, ptr %66, align 8, !tbaa !11
  %326 = load ptr, ptr %21, align 8, !tbaa !5
  %327 = load i64, ptr %326, align 8, !tbaa !9
  %328 = sitofp i64 %327 to double
  %329 = load double, ptr %66, align 8, !tbaa !11
  %330 = fmul double %328, %329
  %331 = load double, ptr %52, align 8, !tbaa !11
  %332 = fdiv double %330, %331
  store double %332, ptr %74, align 8, !tbaa !11
  %333 = load double, ptr %74, align 8, !tbaa !11
  %334 = fdiv double 1.000000e+00, %333
  store double %334, ptr %67, align 8, !tbaa !11
  %335 = load ptr, ptr %21, align 8, !tbaa !5
  %336 = load ptr, ptr %21, align 8, !tbaa !5
  %337 = load ptr, ptr %22, align 8, !tbaa !5
  %338 = load i64, ptr %37, align 8, !tbaa !9
  %339 = getelementptr inbounds double, ptr %337, i64 %338
  %340 = load ptr, ptr %23, align 8, !tbaa !5
  %341 = load ptr, ptr %33, align 8, !tbaa !5
  %342 = getelementptr inbounds double, ptr %341, i64 1
  %343 = call double @dlange_(ptr noundef @.str.10, ptr noundef %335, ptr noundef %336, ptr noundef %339, ptr noundef %340, ptr noundef %342)
  store double %343, ptr %53, align 8, !tbaa !11
  store i64 0, ptr %64, align 8, !tbaa !9
  %344 = load double, ptr %53, align 8, !tbaa !11
  %345 = fcmp ogt double %344, 0.000000e+00
  br i1 %345, label %346, label %352

346:                                              ; preds = %321
  %347 = load double, ptr %53, align 8, !tbaa !11
  %348 = load double, ptr %74, align 8, !tbaa !11
  %349 = fcmp olt double %347, %348
  br i1 %349, label %350, label %352

350:                                              ; preds = %346
  %351 = load double, ptr %74, align 8, !tbaa !11
  store double %351, ptr %71, align 8, !tbaa !11
  store i64 1, ptr %64, align 8, !tbaa !9
  br label %359

352:                                              ; preds = %346, %321
  %353 = load double, ptr %53, align 8, !tbaa !11
  %354 = load double, ptr %67, align 8, !tbaa !11
  %355 = fcmp ogt double %353, %354
  br i1 %355, label %356, label %358

356:                                              ; preds = %352
  %357 = load double, ptr %67, align 8, !tbaa !11
  store double %357, ptr %71, align 8, !tbaa !11
  store i64 1, ptr %64, align 8, !tbaa !9
  br label %358

358:                                              ; preds = %356, %352
  br label %359

359:                                              ; preds = %358, %350
  %360 = load i64, ptr %64, align 8, !tbaa !9
  %361 = icmp ne i64 %360, 0
  br i1 %361, label %362, label %378

362:                                              ; preds = %359
  %363 = load ptr, ptr %21, align 8, !tbaa !5
  %364 = load ptr, ptr %21, align 8, !tbaa !5
  %365 = load ptr, ptr %22, align 8, !tbaa !5
  %366 = load i64, ptr %37, align 8, !tbaa !9
  %367 = getelementptr inbounds double, ptr %365, i64 %366
  %368 = load ptr, ptr %23, align 8, !tbaa !5
  %369 = call i32 @dlascl_(ptr noundef @.str.11, ptr noundef @c_n1, ptr noundef @c_n1, ptr noundef %53, ptr noundef %71, ptr noundef %363, ptr noundef %364, ptr noundef %367, ptr noundef %368, ptr noundef %58)
  %370 = load i64, ptr %58, align 8, !tbaa !9
  %371 = icmp ne i64 %370, 0
  br i1 %371, label %372, label %377

372:                                              ; preds = %362
  %373 = load ptr, ptr %21, align 8, !tbaa !5
  %374 = load i64, ptr %373, align 8, !tbaa !9
  %375 = add nsw i64 %374, 9
  %376 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %375, ptr %376, align 8, !tbaa !9
  store i32 0, ptr %18, align 4
  store i32 1, ptr %77, align 4
  br label %928

377:                                              ; preds = %362
  br label %378

378:                                              ; preds = %377, %359
  %379 = load ptr, ptr %21, align 8, !tbaa !5
  %380 = load ptr, ptr %21, align 8, !tbaa !5
  %381 = load ptr, ptr %24, align 8, !tbaa !5
  %382 = load i64, ptr %39, align 8, !tbaa !9
  %383 = getelementptr inbounds double, ptr %381, i64 %382
  %384 = load ptr, ptr %25, align 8, !tbaa !5
  %385 = load ptr, ptr %33, align 8, !tbaa !5
  %386 = getelementptr inbounds double, ptr %385, i64 1
  %387 = call double @dlange_(ptr noundef @.str.10, ptr noundef %379, ptr noundef %380, ptr noundef %383, ptr noundef %384, ptr noundef %386)
  store double %387, ptr %54, align 8, !tbaa !11
  store i64 0, ptr %65, align 8, !tbaa !9
  %388 = load double, ptr %54, align 8, !tbaa !11
  %389 = fcmp ogt double %388, 0.000000e+00
  br i1 %389, label %390, label %396

390:                                              ; preds = %378
  %391 = load double, ptr %54, align 8, !tbaa !11
  %392 = load double, ptr %74, align 8, !tbaa !11
  %393 = fcmp olt double %391, %392
  br i1 %393, label %394, label %396

394:                                              ; preds = %390
  %395 = load double, ptr %74, align 8, !tbaa !11
  store double %395, ptr %73, align 8, !tbaa !11
  store i64 1, ptr %65, align 8, !tbaa !9
  br label %403

396:                                              ; preds = %390, %378
  %397 = load double, ptr %54, align 8, !tbaa !11
  %398 = load double, ptr %67, align 8, !tbaa !11
  %399 = fcmp ogt double %397, %398
  br i1 %399, label %400, label %402

400:                                              ; preds = %396
  %401 = load double, ptr %67, align 8, !tbaa !11
  store double %401, ptr %73, align 8, !tbaa !11
  store i64 1, ptr %65, align 8, !tbaa !9
  br label %402

402:                                              ; preds = %400, %396
  br label %403

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

406:                                              ; preds = %403
  %407 = load ptr, ptr %21, align 8, !tbaa !5
  %408 = load ptr, ptr %21, align 8, !tbaa !5
  %409 = load ptr, ptr %24, align 8, !tbaa !5
  %410 = load i64, ptr %39, align 8, !tbaa !9
  %411 = getelementptr inbounds double, ptr %409, i64 %410
  %412 = load ptr, ptr %25, align 8, !tbaa !5
  %413 = call i32 @dlascl_(ptr noundef @.str.11, ptr noundef @c_n1, ptr noundef @c_n1, ptr noundef %54, ptr noundef %73, ptr noundef %407, ptr noundef %408, ptr noundef %411, ptr noundef %412, ptr noundef %58)
  %414 = load i64, ptr %58, align 8, !tbaa !9
  %415 = icmp ne i64 %414, 0
  br i1 %415, label %416, label %421

416:                                              ; preds = %406
  %417 = load ptr, ptr %21, align 8, !tbaa !5
  %418 = load i64, ptr %417, align 8, !tbaa !9
  %419 = add nsw i64 %418, 9
  %420 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %419, ptr %420, align 8, !tbaa !9
  store i32 0, ptr %18, align 4
  store i32 1, ptr %77, align 4
  br label %928

421:                                              ; preds = %406
  br label %422

422:                                              ; preds = %421, %403
  store i64 1, ptr %57, align 8, !tbaa !9
  %423 = load ptr, ptr %21, align 8, !tbaa !5
  %424 = load i64, ptr %423, align 8, !tbaa !9
  %425 = add nsw i64 %424, 1
  store i64 %425, ptr %69, align 8, !tbaa !9
  %426 = load i64, ptr %69, align 8, !tbaa !9
  %427 = load ptr, ptr %21, align 8, !tbaa !5
  %428 = load i64, ptr %427, align 8, !tbaa !9
  %429 = add nsw i64 %426, %428
  store i64 %429, ptr %61, align 8, !tbaa !9
  %430 = load ptr, ptr %21, align 8, !tbaa !5
  %431 = load ptr, ptr %22, align 8, !tbaa !5
  %432 = load i64, ptr %37, align 8, !tbaa !9
  %433 = getelementptr inbounds double, ptr %431, i64 %432
  %434 = load ptr, ptr %23, align 8, !tbaa !5
  %435 = load ptr, ptr %24, align 8, !tbaa !5
  %436 = load i64, ptr %39, align 8, !tbaa !9
  %437 = getelementptr inbounds double, ptr %435, i64 %436
  %438 = load ptr, ptr %25, align 8, !tbaa !5
  %439 = load ptr, ptr %33, align 8, !tbaa !5
  %440 = load i64, ptr %57, align 8, !tbaa !9
  %441 = getelementptr inbounds double, ptr %439, i64 %440
  %442 = load ptr, ptr %33, align 8, !tbaa !5
  %443 = load i64, ptr %69, align 8, !tbaa !9
  %444 = getelementptr inbounds double, ptr %442, i64 %443
  %445 = load ptr, ptr %33, align 8, !tbaa !5
  %446 = load i64, ptr %61, align 8, !tbaa !9
  %447 = getelementptr inbounds double, ptr %445, i64 %446
  %448 = call i32 @dggbal_(ptr noundef @.str.12, ptr noundef %430, ptr noundef %433, ptr noundef %434, ptr noundef %437, ptr noundef %438, ptr noundef %51, ptr noundef %50, ptr noundef %441, ptr noundef %444, ptr noundef %447, ptr noundef %58)
  %449 = load i64, ptr %58, align 8, !tbaa !9
  %450 = icmp ne i64 %449, 0
  br i1 %450, label %451, label %456

451:                                              ; preds = %422
  %452 = load ptr, ptr %21, align 8, !tbaa !5
  %453 = load i64, ptr %452, align 8, !tbaa !9
  %454 = add nsw i64 %453, 1
  %455 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %454, ptr %455, align 8, !tbaa !9
  br label %923

456:                                              ; preds = %422
  %457 = load i64, ptr %50, align 8, !tbaa !9
  %458 = add nsw i64 %457, 1
  %459 = load i64, ptr %51, align 8, !tbaa !9
  %460 = sub nsw i64 %458, %459
  store i64 %460, ptr %63, align 8, !tbaa !9
  %461 = load ptr, ptr %21, align 8, !tbaa !5
  %462 = load i64, ptr %461, align 8, !tbaa !9
  %463 = add nsw i64 %462, 1
  %464 = load i64, ptr %51, align 8, !tbaa !9
  %465 = sub nsw i64 %463, %464
  store i64 %465, ptr %59, align 8, !tbaa !9
  %466 = load i64, ptr %61, align 8, !tbaa !9
  store i64 %466, ptr %55, align 8, !tbaa !9
  %467 = load i64, ptr %55, align 8, !tbaa !9
  %468 = load i64, ptr %63, align 8, !tbaa !9
  %469 = add nsw i64 %467, %468
  store i64 %469, ptr %61, align 8, !tbaa !9
  %470 = load ptr, ptr %34, align 8, !tbaa !5
  %471 = load i64, ptr %470, align 8, !tbaa !9
  %472 = add nsw i64 %471, 1
  %473 = load i64, ptr %61, align 8, !tbaa !9
  %474 = sub nsw i64 %472, %473
  store i64 %474, ptr %44, align 8, !tbaa !9
  %475 = load ptr, ptr %24, align 8, !tbaa !5
  %476 = load i64, ptr %51, align 8, !tbaa !9
  %477 = load i64, ptr %51, align 8, !tbaa !9
  %478 = load i64, ptr %38, align 8, !tbaa !9
  %479 = mul nsw i64 %477, %478
  %480 = add nsw i64 %476, %479
  %481 = getelementptr inbounds double, ptr %475, i64 %480
  %482 = load ptr, ptr %25, align 8, !tbaa !5
  %483 = load ptr, ptr %33, align 8, !tbaa !5
  %484 = load i64, ptr %55, align 8, !tbaa !9
  %485 = getelementptr inbounds double, ptr %483, i64 %484
  %486 = load ptr, ptr %33, align 8, !tbaa !5
  %487 = load i64, ptr %61, align 8, !tbaa !9
  %488 = getelementptr inbounds double, ptr %486, i64 %487
  %489 = call i32 @dgeqrf_(ptr noundef %63, ptr noundef %59, ptr noundef %481, ptr noundef %482, ptr noundef %485, ptr noundef %488, ptr noundef %44, ptr noundef %58)
  %490 = load i64, ptr %58, align 8, !tbaa !9
  %491 = icmp sge i64 %490, 0
  br i1 %491, label %492, label %511

492:                                              ; preds = %456
  %493 = load i64, ptr %75, align 8, !tbaa !9
  store i64 %493, ptr %44, align 8, !tbaa !9
  %494 = load ptr, ptr %33, align 8, !tbaa !5
  %495 = load i64, ptr %61, align 8, !tbaa !9
  %496 = getelementptr inbounds double, ptr %494, i64 %495
  %497 = load double, ptr %496, align 8, !tbaa !11
  %498 = fptosi double %497 to i64
  %499 = load i64, ptr %61, align 8, !tbaa !9
  %500 = add nsw i64 %498, %499
  %501 = sub nsw i64 %500, 1
  store i64 %501, ptr %45, align 8, !tbaa !9
  %502 = load i64, ptr %44, align 8, !tbaa !9
  %503 = load i64, ptr %45, align 8, !tbaa !9
  %504 = icmp sge i64 %502, %503
  br i1 %504, label %505, label %507

505:                                              ; preds = %492
  %506 = load i64, ptr %44, align 8, !tbaa !9
  br label %509

507:                                              ; preds = %492
  %508 = load i64, ptr %45, align 8, !tbaa !9
  br label %509

509:                                              ; preds = %507, %505
  %510 = phi i64 [ %506, %505 ], [ %508, %507 ]
  store i64 %510, ptr %75, align 8, !tbaa !9
  br label %511

511:                                              ; preds = %509, %456
  %512 = load i64, ptr %58, align 8, !tbaa !9
  %513 = icmp ne i64 %512, 0
  br i1 %513, label %514, label %519

514:                                              ; preds = %511
  %515 = load ptr, ptr %21, align 8, !tbaa !5
  %516 = load i64, ptr %515, align 8, !tbaa !9
  %517 = add nsw i64 %516, 2
  %518 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %517, ptr %518, align 8, !tbaa !9
  br label %923

519:                                              ; preds = %511
  %520 = load ptr, ptr %34, align 8, !tbaa !5
  %521 = load i64, ptr %520, align 8, !tbaa !9
  %522 = add nsw i64 %521, 1
  %523 = load i64, ptr %61, align 8, !tbaa !9
  %524 = sub nsw i64 %522, %523
  store i64 %524, ptr %44, align 8, !tbaa !9
  %525 = load ptr, ptr %24, align 8, !tbaa !5
  %526 = load i64, ptr %51, align 8, !tbaa !9
  %527 = load i64, ptr %51, align 8, !tbaa !9
  %528 = load i64, ptr %38, align 8, !tbaa !9
  %529 = mul nsw i64 %527, %528
  %530 = add nsw i64 %526, %529
  %531 = getelementptr inbounds double, ptr %525, i64 %530
  %532 = load ptr, ptr %25, align 8, !tbaa !5
  %533 = load ptr, ptr %33, align 8, !tbaa !5
  %534 = load i64, ptr %55, align 8, !tbaa !9
  %535 = getelementptr inbounds double, ptr %533, i64 %534
  %536 = load ptr, ptr %22, align 8, !tbaa !5
  %537 = load i64, ptr %51, align 8, !tbaa !9
  %538 = load i64, ptr %51, align 8, !tbaa !9
  %539 = load i64, ptr %36, align 8, !tbaa !9
  %540 = mul nsw i64 %538, %539
  %541 = add nsw i64 %537, %540
  %542 = getelementptr inbounds double, ptr %536, i64 %541
  %543 = load ptr, ptr %23, align 8, !tbaa !5
  %544 = load ptr, ptr %33, align 8, !tbaa !5
  %545 = load i64, ptr %61, align 8, !tbaa !9
  %546 = getelementptr inbounds double, ptr %544, i64 %545
  %547 = call i32 @dormqr_(ptr noundef @.str.13, ptr noundef @.str.14, ptr noundef %63, ptr noundef %59, ptr noundef %63, ptr noundef %531, ptr noundef %532, ptr noundef %535, ptr noundef %542, ptr noundef %543, ptr noundef %546, ptr noundef %44, ptr noundef %58)
  %548 = load i64, ptr %58, align 8, !tbaa !9
  %549 = icmp sge i64 %548, 0
  br i1 %549, label %550, label %569

550:                                              ; preds = %519
  %551 = load i64, ptr %75, align 8, !tbaa !9
  store i64 %551, ptr %44, align 8, !tbaa !9
  %552 = load ptr, ptr %33, align 8, !tbaa !5
  %553 = load i64, ptr %61, align 8, !tbaa !9
  %554 = getelementptr inbounds double, ptr %552, i64 %553
  %555 = load double, ptr %554, align 8, !tbaa !11
  %556 = fptosi double %555 to i64
  %557 = load i64, ptr %61, align 8, !tbaa !9
  %558 = add nsw i64 %556, %557
  %559 = sub nsw i64 %558, 1
  store i64 %559, ptr %45, align 8, !tbaa !9
  %560 = load i64, ptr %44, align 8, !tbaa !9
  %561 = load i64, ptr %45, align 8, !tbaa !9
  %562 = icmp sge i64 %560, %561
  br i1 %562, label %563, label %565

563:                                              ; preds = %550
  %564 = load i64, ptr %44, align 8, !tbaa !9
  br label %567

565:                                              ; preds = %550
  %566 = load i64, ptr %45, align 8, !tbaa !9
  br label %567

567:                                              ; preds = %565, %563
  %568 = phi i64 [ %564, %563 ], [ %566, %565 ]
  store i64 %568, ptr %75, align 8, !tbaa !9
  br label %569

569:                                              ; preds = %567, %519
  %570 = load i64, ptr %58, align 8, !tbaa !9
  %571 = icmp ne i64 %570, 0
  br i1 %571, label %572, label %577

572:                                              ; preds = %569
  %573 = load ptr, ptr %21, align 8, !tbaa !5
  %574 = load i64, ptr %573, align 8, !tbaa !9
  %575 = add nsw i64 %574, 3
  %576 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %575, ptr %576, align 8, !tbaa !9
  br label %923

577:                                              ; preds = %569
  %578 = load i64, ptr %60, align 8, !tbaa !9
  %579 = icmp ne i64 %578, 0
  br i1 %579, label %580, label %661

580:                                              ; preds = %577
  %581 = load ptr, ptr %21, align 8, !tbaa !5
  %582 = load ptr, ptr %21, align 8, !tbaa !5
  %583 = load ptr, ptr %29, align 8, !tbaa !5
  %584 = load i64, ptr %41, align 8, !tbaa !9
  %585 = getelementptr inbounds double, ptr %583, i64 %584
  %586 = load ptr, ptr %30, align 8, !tbaa !5
  %587 = call i32 @dlaset_(ptr noundef @.str.15, ptr noundef %581, ptr noundef %582, ptr noundef @c_b36, ptr noundef @c_b37, ptr noundef %585, ptr noundef %586)
  %588 = load i64, ptr %63, align 8, !tbaa !9
  %589 = sub nsw i64 %588, 1
  store i64 %589, ptr %44, align 8, !tbaa !9
  %590 = load i64, ptr %63, align 8, !tbaa !9
  %591 = sub nsw i64 %590, 1
  store i64 %591, ptr %45, align 8, !tbaa !9
  %592 = load ptr, ptr %24, align 8, !tbaa !5
  %593 = load i64, ptr %51, align 8, !tbaa !9
  %594 = add nsw i64 %593, 1
  %595 = load i64, ptr %51, align 8, !tbaa !9
  %596 = load i64, ptr %38, align 8, !tbaa !9
  %597 = mul nsw i64 %595, %596
  %598 = add nsw i64 %594, %597
  %599 = getelementptr inbounds double, ptr %592, i64 %598
  %600 = load ptr, ptr %25, align 8, !tbaa !5
  %601 = load ptr, ptr %29, align 8, !tbaa !5
  %602 = load i64, ptr %51, align 8, !tbaa !9
  %603 = add nsw i64 %602, 1
  %604 = load i64, ptr %51, align 8, !tbaa !9
  %605 = load i64, ptr %40, align 8, !tbaa !9
  %606 = mul nsw i64 %604, %605
  %607 = add nsw i64 %603, %606
  %608 = getelementptr inbounds double, ptr %601, i64 %607
  %609 = load ptr, ptr %30, align 8, !tbaa !5
  %610 = call i32 @dlacpy_(ptr noundef @.str.13, ptr noundef %44, ptr noundef %45, ptr noundef %599, ptr noundef %600, ptr noundef %608, ptr noundef %609)
  %611 = load ptr, ptr %34, align 8, !tbaa !5
  %612 = load i64, ptr %611, align 8, !tbaa !9
  %613 = add nsw i64 %612, 1
  %614 = load i64, ptr %61, align 8, !tbaa !9
  %615 = sub nsw i64 %613, %614
  store i64 %615, ptr %44, align 8, !tbaa !9
  %616 = load ptr, ptr %29, align 8, !tbaa !5
  %617 = load i64, ptr %51, align 8, !tbaa !9
  %618 = load i64, ptr %51, align 8, !tbaa !9
  %619 = load i64, ptr %40, align 8, !tbaa !9
  %620 = mul nsw i64 %618, %619
  %621 = add nsw i64 %617, %620
  %622 = getelementptr inbounds double, ptr %616, i64 %621
  %623 = load ptr, ptr %30, align 8, !tbaa !5
  %624 = load ptr, ptr %33, align 8, !tbaa !5
  %625 = load i64, ptr %55, align 8, !tbaa !9
  %626 = getelementptr inbounds double, ptr %624, i64 %625
  %627 = load ptr, ptr %33, align 8, !tbaa !5
  %628 = load i64, ptr %61, align 8, !tbaa !9
  %629 = getelementptr inbounds double, ptr %627, i64 %628
  %630 = call i32 @dorgqr_(ptr noundef %63, ptr noundef %63, ptr noundef %63, ptr noundef %622, ptr noundef %623, ptr noundef %626, ptr noundef %629, ptr noundef %44, ptr noundef %58)
  %631 = load i64, ptr %58, align 8, !tbaa !9
  %632 = icmp sge i64 %631, 0
  br i1 %632, label %633, label %652

633:                                              ; preds = %580
  %634 = load i64, ptr %75, align 8, !tbaa !9
  store i64 %634, ptr %44, align 8, !tbaa !9
  %635 = load ptr, ptr %33, align 8, !tbaa !5
  %636 = load i64, ptr %61, align 8, !tbaa !9
  %637 = getelementptr inbounds double, ptr %635, i64 %636
  %638 = load double, ptr %637, align 8, !tbaa !11
  %639 = fptosi double %638 to i64
  %640 = load i64, ptr %61, align 8, !tbaa !9
  %641 = add nsw i64 %639, %640
  %642 = sub nsw i64 %641, 1
  store i64 %642, ptr %45, align 8, !tbaa !9
  %643 = load i64, ptr %44, align 8, !tbaa !9
  %644 = load i64, ptr %45, align 8, !tbaa !9
  %645 = icmp sge i64 %643, %644
  br i1 %645, label %646, label %648

646:                                              ; preds = %633
  %647 = load i64, ptr %44, align 8, !tbaa !9
  br label %650

648:                                              ; preds = %633
  %649 = load i64, ptr %45, align 8, !tbaa !9
  br label %650

650:                                              ; preds = %648, %646
  %651 = phi i64 [ %647, %646 ], [ %649, %648 ]
  store i64 %651, ptr %75, align 8, !tbaa !9
  br label %652

652:                                              ; preds = %650, %580
  %653 = load i64, ptr %58, align 8, !tbaa !9
  %654 = icmp ne i64 %653, 0
  br i1 %654, label %655, label %660

655:                                              ; preds = %652
  %656 = load ptr, ptr %21, align 8, !tbaa !5
  %657 = load i64, ptr %656, align 8, !tbaa !9
  %658 = add nsw i64 %657, 4
  %659 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %658, ptr %659, align 8, !tbaa !9
  br label %923

660:                                              ; preds = %652
  br label %661

661:                                              ; preds = %660, %577
  %662 = load i64, ptr %62, align 8, !tbaa !9
  %663 = icmp ne i64 %662, 0
  br i1 %663, label %664, label %672

664:                                              ; preds = %661
  %665 = load ptr, ptr %21, align 8, !tbaa !5
  %666 = load ptr, ptr %21, align 8, !tbaa !5
  %667 = load ptr, ptr %31, align 8, !tbaa !5
  %668 = load i64, ptr %43, align 8, !tbaa !9
  %669 = getelementptr inbounds double, ptr %667, i64 %668
  %670 = load ptr, ptr %32, align 8, !tbaa !5
  %671 = call i32 @dlaset_(ptr noundef @.str.15, ptr noundef %665, ptr noundef %666, ptr noundef @c_b36, ptr noundef @c_b37, ptr noundef %669, ptr noundef %670)
  br label %672

672:                                              ; preds = %664, %661
  %673 = load ptr, ptr %19, align 8, !tbaa !5
  %674 = load ptr, ptr %20, align 8, !tbaa !5
  %675 = load ptr, ptr %21, align 8, !tbaa !5
  %676 = load ptr, ptr %22, align 8, !tbaa !5
  %677 = load i64, ptr %37, align 8, !tbaa !9
  %678 = getelementptr inbounds double, ptr %676, i64 %677
  %679 = load ptr, ptr %23, align 8, !tbaa !5
  %680 = load ptr, ptr %24, align 8, !tbaa !5
  %681 = load i64, ptr %39, align 8, !tbaa !9
  %682 = getelementptr inbounds double, ptr %680, i64 %681
  %683 = load ptr, ptr %25, align 8, !tbaa !5
  %684 = load ptr, ptr %29, align 8, !tbaa !5
  %685 = load i64, ptr %41, align 8, !tbaa !9
  %686 = getelementptr inbounds double, ptr %684, i64 %685
  %687 = load ptr, ptr %30, align 8, !tbaa !5
  %688 = load ptr, ptr %31, align 8, !tbaa !5
  %689 = load i64, ptr %43, align 8, !tbaa !9
  %690 = getelementptr inbounds double, ptr %688, i64 %689
  %691 = load ptr, ptr %32, align 8, !tbaa !5
  %692 = call i32 @dgghrd_(ptr noundef %673, ptr noundef %674, ptr noundef %675, ptr noundef %51, ptr noundef %50, ptr noundef %678, ptr noundef %679, ptr noundef %682, ptr noundef %683, ptr noundef %686, ptr noundef %687, ptr noundef %690, ptr noundef %691, ptr noundef %58)
  %693 = load i64, ptr %58, align 8, !tbaa !9
  %694 = icmp ne i64 %693, 0
  br i1 %694, label %695, label %700

695:                                              ; preds = %672
  %696 = load ptr, ptr %21, align 8, !tbaa !5
  %697 = load i64, ptr %696, align 8, !tbaa !9
  %698 = add nsw i64 %697, 5
  %699 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %698, ptr %699, align 8, !tbaa !9
  br label %923

700:                                              ; preds = %672
  %701 = load i64, ptr %55, align 8, !tbaa !9
  store i64 %701, ptr %61, align 8, !tbaa !9
  %702 = load ptr, ptr %34, align 8, !tbaa !5
  %703 = load i64, ptr %702, align 8, !tbaa !9
  %704 = add nsw i64 %703, 1
  %705 = load i64, ptr %61, align 8, !tbaa !9
  %706 = sub nsw i64 %704, %705
  store i64 %706, ptr %44, align 8, !tbaa !9
  %707 = load ptr, ptr %19, align 8, !tbaa !5
  %708 = load ptr, ptr %20, align 8, !tbaa !5
  %709 = load ptr, ptr %21, align 8, !tbaa !5
  %710 = load ptr, ptr %22, align 8, !tbaa !5
  %711 = load i64, ptr %37, align 8, !tbaa !9
  %712 = getelementptr inbounds double, ptr %710, i64 %711
  %713 = load ptr, ptr %23, align 8, !tbaa !5
  %714 = load ptr, ptr %24, align 8, !tbaa !5
  %715 = load i64, ptr %39, align 8, !tbaa !9
  %716 = getelementptr inbounds double, ptr %714, i64 %715
  %717 = load ptr, ptr %25, align 8, !tbaa !5
  %718 = load ptr, ptr %26, align 8, !tbaa !5
  %719 = getelementptr inbounds double, ptr %718, i64 1
  %720 = load ptr, ptr %27, align 8, !tbaa !5
  %721 = getelementptr inbounds double, ptr %720, i64 1
  %722 = load ptr, ptr %28, align 8, !tbaa !5
  %723 = getelementptr inbounds double, ptr %722, i64 1
  %724 = load ptr, ptr %29, align 8, !tbaa !5
  %725 = load i64, ptr %41, align 8, !tbaa !9
  %726 = getelementptr inbounds double, ptr %724, i64 %725
  %727 = load ptr, ptr %30, align 8, !tbaa !5
  %728 = load ptr, ptr %31, align 8, !tbaa !5
  %729 = load i64, ptr %43, align 8, !tbaa !9
  %730 = getelementptr inbounds double, ptr %728, i64 %729
  %731 = load ptr, ptr %32, align 8, !tbaa !5
  %732 = load ptr, ptr %33, align 8, !tbaa !5
  %733 = load i64, ptr %61, align 8, !tbaa !9
  %734 = getelementptr inbounds double, ptr %732, i64 %733
  %735 = call i32 @dhgeqz_(ptr noundef @.str.9, ptr noundef %707, ptr noundef %708, ptr noundef %709, ptr noundef %51, ptr noundef %50, ptr noundef %712, ptr noundef %713, ptr noundef %716, ptr noundef %717, ptr noundef %719, ptr noundef %721, ptr noundef %723, ptr noundef %726, ptr noundef %727, ptr noundef %730, ptr noundef %731, ptr noundef %734, ptr noundef %44, ptr noundef %58)
  %736 = load i64, ptr %58, align 8, !tbaa !9
  %737 = icmp sge i64 %736, 0
  br i1 %737, label %738, label %757

738:                                              ; preds = %700
  %739 = load i64, ptr %75, align 8, !tbaa !9
  store i64 %739, ptr %44, align 8, !tbaa !9
  %740 = load ptr, ptr %33, align 8, !tbaa !5
  %741 = load i64, ptr %61, align 8, !tbaa !9
  %742 = getelementptr inbounds double, ptr %740, i64 %741
  %743 = load double, ptr %742, align 8, !tbaa !11
  %744 = fptosi double %743 to i64
  %745 = load i64, ptr %61, align 8, !tbaa !9
  %746 = add nsw i64 %744, %745
  %747 = sub nsw i64 %746, 1
  store i64 %747, ptr %45, align 8, !tbaa !9
  %748 = load i64, ptr %44, align 8, !tbaa !9
  %749 = load i64, ptr %45, align 8, !tbaa !9
  %750 = icmp sge i64 %748, %749
  br i1 %750, label %751, label %753

751:                                              ; preds = %738
  %752 = load i64, ptr %44, align 8, !tbaa !9
  br label %755

753:                                              ; preds = %738
  %754 = load i64, ptr %45, align 8, !tbaa !9
  br label %755

755:                                              ; preds = %753, %751
  %756 = phi i64 [ %752, %751 ], [ %754, %753 ]
  store i64 %756, ptr %75, align 8, !tbaa !9
  br label %757

757:                                              ; preds = %755, %700
  %758 = load i64, ptr %58, align 8, !tbaa !9
  %759 = icmp ne i64 %758, 0
  br i1 %759, label %760, label %795

760:                                              ; preds = %757
  %761 = load i64, ptr %58, align 8, !tbaa !9
  %762 = icmp sgt i64 %761, 0
  br i1 %762, label %763, label %771

763:                                              ; preds = %760
  %764 = load i64, ptr %58, align 8, !tbaa !9
  %765 = load ptr, ptr %21, align 8, !tbaa !5
  %766 = load i64, ptr %765, align 8, !tbaa !9
  %767 = icmp sle i64 %764, %766
  br i1 %767, label %768, label %771

768:                                              ; preds = %763
  %769 = load i64, ptr %58, align 8, !tbaa !9
  %770 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %769, ptr %770, align 8, !tbaa !9
  br label %794

771:                                              ; preds = %763, %760
  %772 = load i64, ptr %58, align 8, !tbaa !9
  %773 = load ptr, ptr %21, align 8, !tbaa !5
  %774 = load i64, ptr %773, align 8, !tbaa !9
  %775 = icmp sgt i64 %772, %774
  br i1 %775, label %776, label %788

776:                                              ; preds = %771
  %777 = load i64, ptr %58, align 8, !tbaa !9
  %778 = load ptr, ptr %21, align 8, !tbaa !5
  %779 = load i64, ptr %778, align 8, !tbaa !9
  %780 = shl i64 %779, 1
  %781 = icmp sle i64 %777, %780
  br i1 %781, label %782, label %788

782:                                              ; preds = %776
  %783 = load i64, ptr %58, align 8, !tbaa !9
  %784 = load ptr, ptr %21, align 8, !tbaa !5
  %785 = load i64, ptr %784, align 8, !tbaa !9
  %786 = sub nsw i64 %783, %785
  %787 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %786, ptr %787, align 8, !tbaa !9
  br label %793

788:                                              ; preds = %776, %771
  %789 = load ptr, ptr %21, align 8, !tbaa !5
  %790 = load i64, ptr %789, align 8, !tbaa !9
  %791 = add nsw i64 %790, 6
  %792 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %791, ptr %792, align 8, !tbaa !9
  br label %793

793:                                              ; preds = %788, %782
  br label %794

794:                                              ; preds = %793, %768
  br label %923

795:                                              ; preds = %757
  %796 = load i64, ptr %60, align 8, !tbaa !9
  %797 = icmp ne i64 %796, 0
  br i1 %797, label %798, label %820

798:                                              ; preds = %795
  %799 = load ptr, ptr %21, align 8, !tbaa !5
  %800 = load ptr, ptr %33, align 8, !tbaa !5
  %801 = load i64, ptr %57, align 8, !tbaa !9
  %802 = getelementptr inbounds double, ptr %800, i64 %801
  %803 = load ptr, ptr %33, align 8, !tbaa !5
  %804 = load i64, ptr %69, align 8, !tbaa !9
  %805 = getelementptr inbounds double, ptr %803, i64 %804
  %806 = load ptr, ptr %21, align 8, !tbaa !5
  %807 = load ptr, ptr %29, align 8, !tbaa !5
  %808 = load i64, ptr %41, align 8, !tbaa !9
  %809 = getelementptr inbounds double, ptr %807, i64 %808
  %810 = load ptr, ptr %30, align 8, !tbaa !5
  %811 = call i32 @dggbak_(ptr noundef @.str.12, ptr noundef @.str.13, ptr noundef %799, ptr noundef %51, ptr noundef %50, ptr noundef %802, ptr noundef %805, ptr noundef %806, ptr noundef %809, ptr noundef %810, ptr noundef %58)
  %812 = load i64, ptr %58, align 8, !tbaa !9
  %813 = icmp ne i64 %812, 0
  br i1 %813, label %814, label %819

814:                                              ; preds = %798
  %815 = load ptr, ptr %21, align 8, !tbaa !5
  %816 = load i64, ptr %815, align 8, !tbaa !9
  %817 = add nsw i64 %816, 7
  %818 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %817, ptr %818, align 8, !tbaa !9
  br label %923

819:                                              ; preds = %798
  br label %820

820:                                              ; preds = %819, %795
  %821 = load i64, ptr %62, align 8, !tbaa !9
  %822 = icmp ne i64 %821, 0
  br i1 %822, label %823, label %845

823:                                              ; preds = %820
  %824 = load ptr, ptr %21, align 8, !tbaa !5
  %825 = load ptr, ptr %33, align 8, !tbaa !5
  %826 = load i64, ptr %57, align 8, !tbaa !9
  %827 = getelementptr inbounds double, ptr %825, i64 %826
  %828 = load ptr, ptr %33, align 8, !tbaa !5
  %829 = load i64, ptr %69, align 8, !tbaa !9
  %830 = getelementptr inbounds double, ptr %828, i64 %829
  %831 = load ptr, ptr %21, align 8, !tbaa !5
  %832 = load ptr, ptr %31, align 8, !tbaa !5
  %833 = load i64, ptr %43, align 8, !tbaa !9
  %834 = getelementptr inbounds double, ptr %832, i64 %833
  %835 = load ptr, ptr %32, align 8, !tbaa !5
  %836 = call i32 @dggbak_(ptr noundef @.str.12, ptr noundef @.str.16, ptr noundef %824, ptr noundef %51, ptr noundef %50, ptr noundef %827, ptr noundef %830, ptr noundef %831, ptr noundef %834, ptr noundef %835, ptr noundef %58)
  %837 = load i64, ptr %58, align 8, !tbaa !9
  %838 = icmp ne i64 %837, 0
  br i1 %838, label %839, label %844

839:                                              ; preds = %823
  %840 = load ptr, ptr %21, align 8, !tbaa !5
  %841 = load i64, ptr %840, align 8, !tbaa !9
  %842 = add nsw i64 %841, 8
  %843 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %842, ptr %843, align 8, !tbaa !9
  br label %923

844:                                              ; preds = %823
  br label %845

845:                                              ; preds = %844, %820
  %846 = load i64, ptr %64, align 8, !tbaa !9
  %847 = icmp ne i64 %846, 0
  br i1 %847, label %848, label %890

848:                                              ; preds = %845
  %849 = load ptr, ptr %21, align 8, !tbaa !5
  %850 = load ptr, ptr %21, align 8, !tbaa !5
  %851 = load ptr, ptr %22, align 8, !tbaa !5
  %852 = load i64, ptr %37, align 8, !tbaa !9
  %853 = getelementptr inbounds double, ptr %851, i64 %852
  %854 = load ptr, ptr %23, align 8, !tbaa !5
  %855 = call i32 @dlascl_(ptr noundef @.str.17, ptr noundef @c_n1, ptr noundef @c_n1, ptr noundef %71, ptr noundef %53, ptr noundef %849, ptr noundef %850, ptr noundef %853, ptr noundef %854, ptr noundef %58)
  %856 = load i64, ptr %58, align 8, !tbaa !9
  %857 = icmp ne i64 %856, 0
  br i1 %857, label %858, label %863

858:                                              ; preds = %848
  %859 = load ptr, ptr %21, align 8, !tbaa !5
  %860 = load i64, ptr %859, align 8, !tbaa !9
  %861 = add nsw i64 %860, 9
  %862 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %861, ptr %862, align 8, !tbaa !9
  store i32 0, ptr %18, align 4
  store i32 1, ptr %77, align 4
  br label %928

863:                                              ; preds = %848
  %864 = load ptr, ptr %21, align 8, !tbaa !5
  %865 = load ptr, ptr %26, align 8, !tbaa !5
  %866 = getelementptr inbounds double, ptr %865, i64 1
  %867 = load ptr, ptr %21, align 8, !tbaa !5
  %868 = call i32 @dlascl_(ptr noundef @.str.11, ptr noundef @c_n1, ptr noundef @c_n1, ptr noundef %71, ptr noundef %53, ptr noundef %864, ptr noundef @c__1, ptr noundef %866, ptr noundef %867, ptr noundef %58)
  %869 = load i64, ptr %58, align 8, !tbaa !9
  %870 = icmp ne i64 %869, 0
  br i1 %870, label %871, label %876

871:                                              ; preds = %863
  %872 = load ptr, ptr %21, align 8, !tbaa !5
  %873 = load i64, ptr %872, align 8, !tbaa !9
  %874 = add nsw i64 %873, 9
  %875 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %874, ptr %875, align 8, !tbaa !9
  store i32 0, ptr %18, align 4
  store i32 1, ptr %77, align 4
  br label %928

876:                                              ; preds = %863
  %877 = load ptr, ptr %21, align 8, !tbaa !5
  %878 = load ptr, ptr %27, align 8, !tbaa !5
  %879 = getelementptr inbounds double, ptr %878, i64 1
  %880 = load ptr, ptr %21, align 8, !tbaa !5
  %881 = call i32 @dlascl_(ptr noundef @.str.11, ptr noundef @c_n1, ptr noundef @c_n1, ptr noundef %71, ptr noundef %53, ptr noundef %877, ptr noundef @c__1, ptr noundef %879, ptr noundef %880, ptr noundef %58)
  %882 = load i64, ptr %58, align 8, !tbaa !9
  %883 = icmp ne i64 %882, 0
  br i1 %883, label %884, label %889

884:                                              ; preds = %876
  %885 = load ptr, ptr %21, align 8, !tbaa !5
  %886 = load i64, ptr %885, align 8, !tbaa !9
  %887 = add nsw i64 %886, 9
  %888 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %887, ptr %888, align 8, !tbaa !9
  store i32 0, ptr %18, align 4
  store i32 1, ptr %77, align 4
  br label %928

889:                                              ; preds = %876
  br label %890

890:                                              ; preds = %889, %845
  %891 = load i64, ptr %65, align 8, !tbaa !9
  %892 = icmp ne i64 %891, 0
  br i1 %892, label %893, label %922

893:                                              ; preds = %890
  %894 = load ptr, ptr %21, align 8, !tbaa !5
  %895 = load ptr, ptr %21, align 8, !tbaa !5
  %896 = load ptr, ptr %24, align 8, !tbaa !5
  %897 = load i64, ptr %39, align 8, !tbaa !9
  %898 = getelementptr inbounds double, ptr %896, i64 %897
  %899 = load ptr, ptr %25, align 8, !tbaa !5
  %900 = call i32 @dlascl_(ptr noundef @.str.18, ptr noundef @c_n1, ptr noundef @c_n1, ptr noundef %73, ptr noundef %54, ptr noundef %894, ptr noundef %895, ptr noundef %898, ptr noundef %899, ptr noundef %58)
  %901 = load i64, ptr %58, align 8, !tbaa !9
  %902 = icmp ne i64 %901, 0
  br i1 %902, label %903, label %908

903:                                              ; preds = %893
  %904 = load ptr, ptr %21, align 8, !tbaa !5
  %905 = load i64, ptr %904, align 8, !tbaa !9
  %906 = add nsw i64 %905, 9
  %907 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %906, ptr %907, align 8, !tbaa !9
  store i32 0, ptr %18, align 4
  store i32 1, ptr %77, align 4
  br label %928

908:                                              ; preds = %893
  %909 = load ptr, ptr %21, align 8, !tbaa !5
  %910 = load ptr, ptr %28, align 8, !tbaa !5
  %911 = getelementptr inbounds double, ptr %910, i64 1
  %912 = load ptr, ptr %21, align 8, !tbaa !5
  %913 = call i32 @dlascl_(ptr noundef @.str.11, ptr noundef @c_n1, ptr noundef @c_n1, ptr noundef %73, ptr noundef %54, ptr noundef %909, ptr noundef @c__1, ptr noundef %911, ptr noundef %912, ptr noundef %58)
  %914 = load i64, ptr %58, align 8, !tbaa !9
  %915 = icmp ne i64 %914, 0
  br i1 %915, label %916, label %921

916:                                              ; preds = %908
  %917 = load ptr, ptr %21, align 8, !tbaa !5
  %918 = load i64, ptr %917, align 8, !tbaa !9
  %919 = add nsw i64 %918, 9
  %920 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %919, ptr %920, align 8, !tbaa !9
  store i32 0, ptr %18, align 4
  store i32 1, ptr %77, align 4
  br label %928

921:                                              ; preds = %908
  br label %922

922:                                              ; preds = %921, %890
  br label %923

923:                                              ; preds = %922, %839, %814, %794, %695, %655, %572, %514, %451
  %924 = load i64, ptr %75, align 8, !tbaa !9
  %925 = sitofp i64 %924 to double
  %926 = load ptr, ptr %33, align 8, !tbaa !5
  %927 = getelementptr inbounds double, ptr %926, i64 1
  store double %925, ptr %927, align 8, !tbaa !11
  store i32 0, ptr %18, align 4
  store i32 1, ptr %77, align 4
  br label %928

928:                                              ; preds = %923, %916, %903, %884, %871, %858, %416, %372, %320, %314, %306
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #3
  %929 = load i32, ptr %18, align 4
  ret i32 %929
}

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

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

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

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

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

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

declare i32 @dggbak_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, 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 }

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

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


; 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
@c__1 = external hidden global i64, align 8
@.str.2 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c_n1 = external hidden global i64, align 8
@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1
@.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
@.str.13 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [5 x i8], align 1
@c_b36 = external hidden global double, align 8
@c_b37 = external hidden global double, align 8
@.str.16 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @dgegs_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr nocapture noundef readonly %15, ptr nocapture noundef %16) local_unnamed_addr #0 {
  %18 = alloca i64, align 8
  %19 = alloca i64, align 8
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  %24 = alloca i64, align 8
  %25 = alloca i64, align 8
  %26 = alloca i64, align 8
  %27 = alloca double, align 8
  %28 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #4
  %29 = load i64, ptr %4, align 8, !tbaa !5
  %30 = xor i64 %29, -1
  %31 = getelementptr inbounds double, ptr %3, i64 %30
  %32 = load i64, ptr %6, align 8, !tbaa !5
  %33 = xor i64 %32, -1
  %34 = getelementptr inbounds double, ptr %5, i64 %33
  %35 = load i64, ptr %11, align 8, !tbaa !5
  %36 = xor i64 %35, -1
  %37 = getelementptr inbounds double, ptr %10, i64 %36
  %38 = getelementptr inbounds i8, ptr %14, i64 -8
  %39 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #4
  %.not = icmp eq i64 %39, 0
  br i1 %.not, label %40, label %42

40:                                               ; preds = %17
  %41 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #4
  %.not339 = icmp eq i64 %41, 0
  br label %42

42:                                               ; preds = %40, %17
  %.not342 = phi i1 [ true, %17 ], [ %.not339, %40 ]
  %43 = phi i1 [ false, %17 ], [ %.not339, %40 ]
  %44 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #4
  %.not340 = icmp eq i64 %44, 0
  br i1 %.not340, label %45, label %47

45:                                               ; preds = %42
  %46 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #4
  %.not341 = icmp eq i64 %46, 0
  br label %47

47:                                               ; preds = %45, %42
  %.not343 = phi i1 [ true, %42 ], [ %.not341, %45 ]
  %48 = phi i1 [ false, %42 ], [ %.not341, %45 ]
  %49 = load i64, ptr %2, align 8, !tbaa !5
  %50 = shl i64 %49, 2
  %51 = tail call i64 @llvm.smax.i64(i64 %50, i64 1)
  %52 = uitofp nneg i64 %51 to double
  store double %52, ptr %14, align 8, !tbaa !9
  %53 = load i64, ptr %15, align 8, !tbaa !5
  %54 = icmp eq i64 %53, -1
  store i64 0, ptr %16, align 8, !tbaa !5
  %brmerge = select i1 %43, i1 true, i1 %48
  %.mux = select i1 %43, i64 -1, i64 -2
  br i1 %brmerge, label %.thread379.sink.split, label %55

55:                                               ; preds = %47
  %56 = load i64, ptr %2, align 8, !tbaa !5
  %57 = icmp slt i64 %56, 0
  br i1 %57, label %.thread379.sink.split, label %58

58:                                               ; preds = %55
  %59 = load i64, ptr %4, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %56, i64 1)
  %60 = icmp slt i64 %59, %spec.select
  br i1 %60, label %.thread379.sink.split, label %61

61:                                               ; preds = %58
  %62 = load i64, ptr %6, align 8, !tbaa !5
  %63 = icmp slt i64 %62, %spec.select
  br i1 %63, label %.thread379.sink.split, label %64

64:                                               ; preds = %61
  %65 = load i64, ptr %11, align 8, !tbaa !5
  %66 = icmp sgt i64 %65, 0
  %67 = icmp uge i64 %65, %56
  %or.cond413.not = or i1 %.not342, %67
  %or.cond418 = select i1 %66, i1 %or.cond413.not, i1 false
  br i1 %or.cond418, label %68, label %.thread379.sink.split

68:                                               ; preds = %64
  %69 = load i64, ptr %13, align 8, !tbaa !5
  %70 = icmp sgt i64 %69, 0
  %71 = icmp uge i64 %69, %56
  %or.cond414.not = or i1 %.not343, %71
  %or.cond419 = select i1 %70, i1 %or.cond414.not, i1 false
  br i1 %or.cond419, label %72, label %.thread379.sink.split

72:                                               ; preds = %68
  %73 = load i64, ptr %15, align 8, !tbaa !5
  %74 = icmp sge i64 %73, %51
  %or.cond = select i1 %74, i1 true, i1 %54
  br i1 %or.cond, label %.thread, label %.thread379.sink.split

.thread:                                          ; preds = %72
  %75 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1) #4
  %76 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_n1) #4
  %77 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_n1) #4
  %78 = tail call i64 @llvm.smax.i64(i64 %75, i64 %76)
  store i64 %78, ptr %18, align 8, !tbaa !5
  %79 = tail call i64 @llvm.smax.i64(i64 %78, i64 %77)
  %80 = load i64, ptr %2, align 8, !tbaa !5
  %81 = add i64 %79, 3
  %82 = mul i64 %80, %81
  %83 = sitofp i64 %82 to double
  store double %83, ptr %14, align 8, !tbaa !9
  %.pr378.pr = load i64, ptr %16, align 8, !tbaa !5
  %.not346 = icmp eq i64 %.pr378.pr, 0
  br i1 %.not346, label %87, label %.thread379

.thread379.sink.split:                            ; preds = %47, %72, %68, %64, %61, %58, %55
  %.sink = phi i64 [ %.mux, %47 ], [ -3, %55 ], [ -5, %58 ], [ -7, %61 ], [ -12, %64 ], [ -14, %68 ], [ -16, %72 ]
  store i64 %.sink, ptr %16, align 8, !tbaa !5
  br label %.thread379

.thread379:                                       ; preds = %.thread379.sink.split, %.thread
  %84 = phi i64 [ %.pr378.pr, %.thread ], [ %.sink, %.thread379.sink.split ]
  %85 = sub nsw i64 0, %84
  store i64 %85, ptr %18, align 8, !tbaa !5
  %86 = call i32 @xerbla_(ptr noundef nonnull @.str.6, ptr noundef nonnull %18) #4
  br label %284

87:                                               ; preds = %.thread
  %88 = icmp eq i64 %80, 0
  %or.cond426 = select i1 %54, i1 true, i1 %88
  br i1 %or.cond426, label %284, label %89

89:                                               ; preds = %87
  %90 = tail call double @dlamch_(ptr noundef nonnull @.str.7) #4
  %91 = tail call double @dlamch_(ptr noundef nonnull @.str.8) #4
  %92 = fmul double %90, %91
  %93 = tail call double @dlamch_(ptr noundef nonnull @.str.9) #4
  %94 = load i64, ptr %2, align 8, !tbaa !5
  %95 = sitofp i64 %94 to double
  %96 = fmul double %93, %95
  %97 = fdiv double %96, %92
  %98 = fdiv double 1.000000e+00, %97
  %99 = tail call double @dlange_(ptr noundef nonnull @.str.10, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef nonnull %14) #4
  store double %99, ptr %22, align 8, !tbaa !9
  %100 = fcmp ogt double %99, 0.000000e+00
  %101 = fcmp olt double %99, %97
  %or.cond374 = select i1 %100, i1 %101, i1 false
  br i1 %or.cond374, label %104, label %102

102:                                              ; preds = %89
  %103 = fcmp ogt double %99, %98
  br i1 %103, label %104, label %110

104:                                              ; preds = %102, %89
  %storemerge = phi double [ %97, %89 ], [ %98, %102 ]
  store double %storemerge, ptr %27, align 8, !tbaa !9
  %105 = call i32 @dlascl_(ptr noundef nonnull @.str.11, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, ptr noundef nonnull %22, ptr noundef nonnull %27, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef nonnull %24) #4
  %106 = load i64, ptr %24, align 8, !tbaa !5
  %.not348 = icmp eq i64 %106, 0
  br i1 %.not348, label %110, label %107

107:                                              ; preds = %104
  %108 = load i64, ptr %2, align 8, !tbaa !5
  %109 = add nsw i64 %108, 9
  store i64 %109, ptr %16, align 8, !tbaa !5
  br label %284

110:                                              ; preds = %102, %104
  %.not347385 = phi i1 [ false, %104 ], [ true, %102 ]
  %111 = call double @dlange_(ptr noundef nonnull @.str.10, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %14) #4
  store double %111, ptr %23, align 8, !tbaa !9
  %112 = fcmp ogt double %111, 0.000000e+00
  %113 = fcmp olt double %111, %97
  %or.cond375 = select i1 %112, i1 %113, i1 false
  br i1 %or.cond375, label %116, label %114

114:                                              ; preds = %110
  %115 = fcmp ogt double %111, %98
  br i1 %115, label %116, label %122

116:                                              ; preds = %114, %110
  %storemerge417 = phi double [ %97, %110 ], [ %98, %114 ]
  store double %storemerge417, ptr %28, align 8, !tbaa !9
  %117 = call i32 @dlascl_(ptr noundef nonnull @.str.11, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, ptr noundef nonnull %23, ptr noundef nonnull %28, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %24) #4
  %118 = load i64, ptr %24, align 8, !tbaa !5
  %.not350 = icmp eq i64 %118, 0
  br i1 %.not350, label %122, label %119

119:                                              ; preds = %116
  %120 = load i64, ptr %2, align 8, !tbaa !5
  %121 = add nsw i64 %120, 9
  store i64 %121, ptr %16, align 8, !tbaa !5
  br label %284

122:                                              ; preds = %114, %116
  %.not349390 = phi i1 [ false, %116 ], [ true, %114 ]
  %123 = load i64, ptr %2, align 8, !tbaa !5
  %reass.add = shl i64 %123, 1
  %124 = or disjoint i64 %reass.add, 1
  %125 = getelementptr double, ptr %14, i64 %123
  %126 = getelementptr double, ptr %14, i64 %reass.add
  %127 = call i32 @dggbal_(ptr noundef nonnull @.str.12, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %21, ptr noundef nonnull %20, ptr noundef nonnull %14, ptr noundef %125, ptr noundef %126, ptr noundef nonnull %24) #4
  %128 = load i64, ptr %24, align 8, !tbaa !5
  %.not351 = icmp eq i64 %128, 0
  br i1 %.not351, label %132, label %129

129:                                              ; preds = %122
  %130 = load i64, ptr %2, align 8, !tbaa !5
  %131 = add nsw i64 %130, 1
  br label %.sink.split

132:                                              ; preds = %122
  %133 = load i64, ptr %20, align 8, !tbaa !5
  %134 = add nsw i64 %133, 1
  %135 = load i64, ptr %21, align 8, !tbaa !5
  %136 = sub i64 %134, %135
  store i64 %136, ptr %26, align 8, !tbaa !5
  %137 = load i64, ptr %2, align 8, !tbaa !5
  %reass.sub = sub i64 %137, %135
  %138 = add i64 %reass.sub, 1
  store i64 %138, ptr %25, align 8, !tbaa !5
  %139 = add nsw i64 %136, %124
  %140 = load i64, ptr %15, align 8, !tbaa !5
  %reass.sub422 = sub i64 %140, %139
  %141 = add i64 %reass.sub422, 1
  store i64 %141, ptr %18, align 8, !tbaa !5
  %142 = add i64 %32, 1
  %143 = mul i64 %135, %142
  %144 = getelementptr inbounds double, ptr %34, i64 %143
  %145 = getelementptr inbounds double, ptr %38, i64 %139
  %146 = call i32 @dgeqrf_(ptr noundef nonnull %26, ptr noundef nonnull %25, ptr noundef %144, ptr noundef nonnull %6, ptr noundef %126, ptr noundef nonnull %145, ptr noundef nonnull %18, ptr noundef nonnull %24) #4
  %147 = load i64, ptr %24, align 8, !tbaa !5
  %148 = icmp sgt i64 %147, -1
  br i1 %148, label %149, label %.thread391

149:                                              ; preds = %132
  %150 = load double, ptr %145, align 8, !tbaa !9
  %151 = fptosi double %150 to i64
  %152 = add i64 %139, -1
  %153 = add i64 %152, %151
  store i64 %153, ptr %19, align 8, !tbaa !5
  %154 = call i64 @llvm.smax.i64(i64 %51, i64 %153)
  %.not353 = icmp eq i64 %147, 0
  br i1 %.not353, label %157, label %.thread391

.thread391:                                       ; preds = %132, %149
  %.0319394 = phi i64 [ %154, %149 ], [ %51, %132 ]
  %155 = load i64, ptr %2, align 8, !tbaa !5
  %156 = add nsw i64 %155, 2
  br label %.sink.split

157:                                              ; preds = %149
  %158 = load i64, ptr %15, align 8, !tbaa !5
  %reass.sub423 = sub i64 %158, %139
  %159 = add i64 %reass.sub423, 1
  store i64 %159, ptr %18, align 8, !tbaa !5
  %160 = load i64, ptr %21, align 8, !tbaa !5
  %161 = mul i64 %160, %142
  %162 = getelementptr inbounds double, ptr %34, i64 %161
  %163 = add i64 %29, 1
  %164 = mul i64 %160, %163
  %165 = getelementptr inbounds double, ptr %31, i64 %164
  %166 = call i32 @dormqr_(ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.14, ptr noundef nonnull %26, ptr noundef nonnull %25, ptr noundef nonnull %26, ptr noundef %162, ptr noundef nonnull %6, ptr noundef %126, ptr noundef %165, ptr noundef nonnull %4, ptr noundef nonnull %145, ptr noundef nonnull %18, ptr noundef nonnull %24) #4
  %167 = load i64, ptr %24, align 8, !tbaa !5
  %168 = icmp sgt i64 %167, -1
  br i1 %168, label %169, label %.thread395

169:                                              ; preds = %157
  store i64 %154, ptr %18, align 8, !tbaa !5
  %170 = load double, ptr %145, align 8, !tbaa !9
  %171 = fptosi double %170 to i64
  %172 = add i64 %152, %171
  store i64 %172, ptr %19, align 8, !tbaa !5
  %173 = call i64 @llvm.smax.i64(i64 %154, i64 %172)
  %.not355 = icmp eq i64 %167, 0
  br i1 %.not355, label %176, label %.thread395

.thread395:                                       ; preds = %157, %169
  %.1398 = phi i64 [ %173, %169 ], [ %154, %157 ]
  %174 = load i64, ptr %2, align 8, !tbaa !5
  %175 = add nsw i64 %174, 3
  br label %.sink.split

176:                                              ; preds = %169
  br i1 %.not342, label %206, label %177

177:                                              ; preds = %176
  %178 = call i32 @dlaset_(ptr noundef nonnull @.str.15, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_b36, ptr noundef nonnull @c_b37, ptr noundef %10, ptr noundef nonnull %11) #4
  %179 = load i64, ptr %26, align 8, !tbaa !5
  %180 = add nsw i64 %179, -1
  store i64 %180, ptr %18, align 8, !tbaa !5
  store i64 %180, ptr %19, align 8, !tbaa !5
  %181 = load i64, ptr %21, align 8, !tbaa !5
  %182 = add nsw i64 %181, 1
  %183 = mul nsw i64 %181, %32
  %184 = getelementptr double, ptr %34, i64 %182
  %185 = getelementptr double, ptr %184, i64 %183
  %186 = mul nsw i64 %181, %35
  %187 = getelementptr double, ptr %37, i64 %182
  %188 = getelementptr double, ptr %187, i64 %186
  %189 = call i32 @dlacpy_(ptr noundef nonnull @.str.13, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef %185, ptr noundef nonnull %6, ptr noundef %188, ptr noundef nonnull %11) #4
  %190 = load i64, ptr %15, align 8, !tbaa !5
  %reass.sub424 = sub i64 %190, %139
  %191 = add i64 %reass.sub424, 1
  store i64 %191, ptr %18, align 8, !tbaa !5
  %192 = load i64, ptr %21, align 8, !tbaa !5
  %193 = add i64 %35, 1
  %194 = mul i64 %192, %193
  %195 = getelementptr inbounds double, ptr %37, i64 %194
  %196 = call i32 @dorgqr_(ptr noundef nonnull %26, ptr noundef nonnull %26, ptr noundef nonnull %26, ptr noundef %195, ptr noundef nonnull %11, ptr noundef %126, ptr noundef nonnull %145, ptr noundef nonnull %18, ptr noundef nonnull %24) #4
  %197 = load i64, ptr %24, align 8, !tbaa !5
  %198 = icmp sgt i64 %197, -1
  br i1 %198, label %199, label %.thread399

199:                                              ; preds = %177
  store i64 %173, ptr %18, align 8, !tbaa !5
  %200 = load double, ptr %145, align 8, !tbaa !9
  %201 = fptosi double %200 to i64
  %202 = add i64 %152, %201
  store i64 %202, ptr %19, align 8, !tbaa !5
  %203 = call i64 @llvm.smax.i64(i64 %173, i64 %202)
  %.not358 = icmp eq i64 %197, 0
  br i1 %.not358, label %206, label %.thread399

.thread399:                                       ; preds = %177, %199
  %.2402 = phi i64 [ %203, %199 ], [ %173, %177 ]
  %204 = load i64, ptr %2, align 8, !tbaa !5
  %205 = add nsw i64 %204, 4
  br label %.sink.split

206:                                              ; preds = %199, %176
  %.3 = phi i64 [ %203, %199 ], [ %173, %176 ]
  br i1 %.not343, label %209, label %207

207:                                              ; preds = %206
  %208 = call i32 @dlaset_(ptr noundef nonnull @.str.15, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_b36, ptr noundef nonnull @c_b37, ptr noundef %12, ptr noundef nonnull %13) #4
  br label %209

209:                                              ; preds = %207, %206
  %210 = call i32 @dgghrd_(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %21, ptr noundef nonnull %20, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %24) #4
  %211 = load i64, ptr %24, align 8, !tbaa !5
  %.not360 = icmp eq i64 %211, 0
  br i1 %.not360, label %215, label %212

212:                                              ; preds = %209
  %213 = load i64, ptr %2, align 8, !tbaa !5
  %214 = add nsw i64 %213, 5
  br label %.sink.split

215:                                              ; preds = %209
  %216 = load i64, ptr %15, align 8, !tbaa !5
  %reass.sub425 = sub i64 %216, %124
  %217 = add i64 %reass.sub425, 1
  store i64 %217, ptr %18, align 8, !tbaa !5
  %218 = call i32 @dhgeqz_(ptr noundef nonnull @.str.9, ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %21, ptr noundef nonnull %20, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %12, ptr noundef nonnull %13, ptr noundef %126, ptr noundef nonnull %18, ptr noundef nonnull %24) #4
  %219 = load i64, ptr %24, align 8, !tbaa !5
  %220 = icmp sgt i64 %219, -1
  br i1 %220, label %221, label %._crit_edge

._crit_edge:                                      ; preds = %215
  %.pre = load i64, ptr %2, align 8, !tbaa !5
  br label %228

221:                                              ; preds = %215
  store i64 %.3, ptr %18, align 8, !tbaa !5
  %222 = load double, ptr %126, align 8, !tbaa !9
  %223 = fptosi double %222 to i64
  %224 = add i64 %reass.add, %223
  store i64 %224, ptr %19, align 8, !tbaa !5
  %225 = call i64 @llvm.smax.i64(i64 %.3, i64 %224)
  %.not362 = icmp eq i64 %219, 0
  br i1 %.not362, label %236, label %226

226:                                              ; preds = %221
  %227 = load i64, ptr %2, align 8, !tbaa !5
  %.not370 = icmp sgt i64 %219, %227
  br i1 %.not370, label %228, label %.sink.split

228:                                              ; preds = %._crit_edge, %226
  %229 = phi i64 [ %227, %226 ], [ %.pre, %._crit_edge ]
  %.4406410 = phi i64 [ %225, %226 ], [ %.3, %._crit_edge ]
  %230 = icmp sle i64 %219, %229
  %231 = shl i64 %229, 1
  %.not371 = icmp sgt i64 %219, %231
  %or.cond376 = or i1 %230, %.not371
  br i1 %or.cond376, label %234, label %232

232:                                              ; preds = %228
  %233 = sub nsw i64 %219, %229
  br label %.sink.split

234:                                              ; preds = %228
  %235 = add nsw i64 %229, 6
  br label %.sink.split

236:                                              ; preds = %221
  br i1 %.not342, label %243, label %237

237:                                              ; preds = %236
  %238 = call i32 @dggbak_(ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.13, ptr noundef nonnull %2, ptr noundef nonnull %21, ptr noundef nonnull %20, ptr noundef nonnull %14, ptr noundef %125, ptr noundef nonnull %2, ptr noundef %10, ptr noundef nonnull %11, ptr noundef nonnull %24) #4
  %239 = load i64, ptr %24, align 8, !tbaa !5
  %.not363 = icmp eq i64 %239, 0
  br i1 %.not363, label %243, label %240

240:                                              ; preds = %237
  %241 = load i64, ptr %2, align 8, !tbaa !5
  %242 = add nsw i64 %241, 7
  br label %.sink.split

243:                                              ; preds = %237, %236
  br i1 %.not343, label %250, label %244

244:                                              ; preds = %243
  %245 = call i32 @dggbak_(ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.16, ptr noundef nonnull %2, ptr noundef nonnull %21, ptr noundef nonnull %20, ptr noundef nonnull %14, ptr noundef %125, ptr noundef nonnull %2, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %24) #4
  %246 = load i64, ptr %24, align 8, !tbaa !5
  %.not364 = icmp eq i64 %246, 0
  br i1 %.not364, label %250, label %247

247:                                              ; preds = %244
  %248 = load i64, ptr %2, align 8, !tbaa !5
  %249 = add nsw i64 %248, 8
  br label %.sink.split

250:                                              ; preds = %244, %243
  br i1 %.not347385, label %269, label %251

251:                                              ; preds = %250
  %252 = call i32 @dlascl_(ptr noundef nonnull @.str.17, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, ptr noundef nonnull %27, ptr noundef nonnull %22, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef nonnull %24) #4
  %253 = load i64, ptr %24, align 8, !tbaa !5
  %.not365 = icmp eq i64 %253, 0
  br i1 %.not365, label %257, label %254

254:                                              ; preds = %251
  %255 = load i64, ptr %2, align 8, !tbaa !5
  %256 = add nsw i64 %255, 9
  store i64 %256, ptr %16, align 8, !tbaa !5
  br label %284

257:                                              ; preds = %251
  %258 = call i32 @dlascl_(ptr noundef nonnull @.str.11, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, ptr noundef nonnull %27, ptr noundef nonnull %22, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef %7, ptr noundef nonnull %2, ptr noundef nonnull %24) #4
  %259 = load i64, ptr %24, align 8, !tbaa !5
  %.not366 = icmp eq i64 %259, 0
  br i1 %.not366, label %263, label %260

260:                                              ; preds = %257
  %261 = load i64, ptr %2, align 8, !tbaa !5
  %262 = add nsw i64 %261, 9
  store i64 %262, ptr %16, align 8, !tbaa !5
  br label %284

263:                                              ; preds = %257
  %264 = call i32 @dlascl_(ptr noundef nonnull @.str.11, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, ptr noundef nonnull %27, ptr noundef nonnull %22, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef %8, ptr noundef nonnull %2, ptr noundef nonnull %24) #4
  %265 = load i64, ptr %24, align 8, !tbaa !5
  %.not367 = icmp eq i64 %265, 0
  br i1 %.not367, label %269, label %266

266:                                              ; preds = %263
  %267 = load i64, ptr %2, align 8, !tbaa !5
  %268 = add nsw i64 %267, 9
  store i64 %268, ptr %16, align 8, !tbaa !5
  br label %284

269:                                              ; preds = %263, %250
  br i1 %.not349390, label %282, label %270

270:                                              ; preds = %269
  %271 = call i32 @dlascl_(ptr noundef nonnull @.str.18, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, ptr noundef nonnull %28, ptr noundef nonnull %23, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %24) #4
  %272 = load i64, ptr %24, align 8, !tbaa !5
  %.not368 = icmp eq i64 %272, 0
  br i1 %.not368, label %276, label %273

273:                                              ; preds = %270
  %274 = load i64, ptr %2, align 8, !tbaa !5
  %275 = add nsw i64 %274, 9
  store i64 %275, ptr %16, align 8, !tbaa !5
  br label %284

276:                                              ; preds = %270
  %277 = call i32 @dlascl_(ptr noundef nonnull @.str.11, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, ptr noundef nonnull %28, ptr noundef nonnull %23, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef %9, ptr noundef nonnull %2, ptr noundef nonnull %24) #4
  %278 = load i64, ptr %24, align 8, !tbaa !5
  %.not369 = icmp eq i64 %278, 0
  br i1 %.not369, label %282, label %279

279:                                              ; preds = %276
  %280 = load i64, ptr %2, align 8, !tbaa !5
  %281 = add nsw i64 %280, 9
  store i64 %281, ptr %16, align 8, !tbaa !5
  br label %284

.sink.split:                                      ; preds = %226, %129, %.thread391, %.thread395, %.thread399, %212, %240, %247, %232, %234
  %.sink427 = phi i64 [ %235, %234 ], [ %233, %232 ], [ %249, %247 ], [ %242, %240 ], [ %214, %212 ], [ %205, %.thread399 ], [ %175, %.thread395 ], [ %156, %.thread391 ], [ %131, %129 ], [ %219, %226 ]
  %.5.ph = phi i64 [ %.4406410, %234 ], [ %.4406410, %232 ], [ %225, %247 ], [ %225, %240 ], [ %.3, %212 ], [ %.2402, %.thread399 ], [ %.1398, %.thread395 ], [ %.0319394, %.thread391 ], [ %51, %129 ], [ %225, %226 ]
  store i64 %.sink427, ptr %16, align 8, !tbaa !5
  br label %282

282:                                              ; preds = %.sink.split, %269, %276
  %.5 = phi i64 [ %225, %276 ], [ %225, %269 ], [ %.5.ph, %.sink.split ]
  %283 = uitofp nneg i64 %.5 to double
  store double %283, ptr %14, align 8, !tbaa !9
  br label %284

284:                                              ; preds = %87, %282, %279, %273, %266, %260, %254, %119, %107, %.thread379
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #4
  ret i32 0
}

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

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

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

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

declare i32 @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 i32 @dggbal_(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 @dgeqrf_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @dormqr_(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 @dlaset_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

declare i32 @dgghrd_(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 @dhgeqz_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @dggbak_(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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.umax.i64(i64, i64) #3

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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass