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

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

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.3 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@c__0 = external hidden global i64, align 8
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@c_n1 = external hidden global i64, align 8
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [7 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 [5 x i8], align 1
@c_b38 = external hidden global double, align 8
@c_b39 = external hidden global double, align 8
@.str.14 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [2 x i8], align 1

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

138:                                              ; preds = %21
  store i64 1, ptr %81, align 8, !tbaa !9
  store i64 0, ptr %72, align 8, !tbaa !9
  br label %146

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

143:                                              ; preds = %139
  store i64 2, ptr %81, align 8, !tbaa !9
  store i64 1, ptr %72, align 8, !tbaa !9
  br label %145

144:                                              ; preds = %139
  store i64 -1, ptr %81, align 8, !tbaa !9
  store i64 0, ptr %72, align 8, !tbaa !9
  br label %145

145:                                              ; preds = %144, %143
  br label %146

146:                                              ; preds = %145, %138
  %147 = load ptr, ptr %24, align 8, !tbaa !5
  %148 = call i64 @lsame_(ptr noundef %147, ptr noundef @.str)
  %149 = icmp ne i64 %148, 0
  br i1 %149, label %150, label %151

150:                                              ; preds = %146
  store i64 1, ptr %83, align 8, !tbaa !9
  store i64 0, ptr %73, align 8, !tbaa !9
  br label %158

151:                                              ; preds = %146
  %152 = load ptr, ptr %24, align 8, !tbaa !5
  %153 = call i64 @lsame_(ptr noundef %152, ptr noundef @.str.1)
  %154 = icmp ne i64 %153, 0
  br i1 %154, label %155, label %156

155:                                              ; preds = %151
  store i64 2, ptr %83, align 8, !tbaa !9
  store i64 1, ptr %73, align 8, !tbaa !9
  br label %157

156:                                              ; preds = %151
  store i64 -1, ptr %83, align 8, !tbaa !9
  store i64 0, ptr %73, align 8, !tbaa !9
  br label %157

157:                                              ; preds = %156, %155
  br label %158

158:                                              ; preds = %157, %150
  %159 = load ptr, ptr %25, align 8, !tbaa !5
  %160 = call i64 @lsame_(ptr noundef %159, ptr noundef @.str.2)
  store i64 %160, ptr %90, align 8, !tbaa !9
  %161 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 0, ptr %161, align 8, !tbaa !9
  %162 = load ptr, ptr %41, align 8, !tbaa !5
  %163 = load i64, ptr %162, align 8, !tbaa !9
  %164 = icmp eq i64 %163, -1
  %165 = zext i1 %164 to i32
  %166 = sext i32 %165 to i64
  store i64 %166, ptr %91, align 8, !tbaa !9
  %167 = load i64, ptr %81, align 8, !tbaa !9
  %168 = icmp sle i64 %167, 0
  br i1 %168, label %169, label %171

169:                                              ; preds = %158
  %170 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -1, ptr %170, align 8, !tbaa !9
  br label %258

171:                                              ; preds = %158
  %172 = load i64, ptr %83, align 8, !tbaa !9
  %173 = icmp sle i64 %172, 0
  br i1 %173, label %174, label %176

174:                                              ; preds = %171
  %175 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -2, ptr %175, align 8, !tbaa !9
  br label %257

176:                                              ; preds = %171
  %177 = load i64, ptr %90, align 8, !tbaa !9
  %178 = icmp ne i64 %177, 0
  br i1 %178, label %185, label %179

179:                                              ; preds = %176
  %180 = load ptr, ptr %25, align 8, !tbaa !5
  %181 = call i64 @lsame_(ptr noundef %180, ptr noundef @.str)
  %182 = icmp ne i64 %181, 0
  br i1 %182, label %185, label %183

183:                                              ; preds = %179
  %184 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -3, ptr %184, align 8, !tbaa !9
  br label %256

185:                                              ; preds = %179, %176
  %186 = load ptr, ptr %27, align 8, !tbaa !5
  %187 = load i64, ptr %186, align 8, !tbaa !9
  %188 = icmp slt i64 %187, 0
  br i1 %188, label %189, label %191

189:                                              ; preds = %185
  %190 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -5, ptr %190, align 8, !tbaa !9
  br label %255

191:                                              ; preds = %185
  %192 = load ptr, ptr %29, align 8, !tbaa !5
  %193 = load i64, ptr %192, align 8, !tbaa !9
  %194 = load ptr, ptr %27, align 8, !tbaa !5
  %195 = load i64, ptr %194, align 8, !tbaa !9
  %196 = icmp sge i64 1, %195
  br i1 %196, label %197, label %198

197:                                              ; preds = %191
  br label %201

198:                                              ; preds = %191
  %199 = load ptr, ptr %27, align 8, !tbaa !5
  %200 = load i64, ptr %199, align 8, !tbaa !9
  br label %201

201:                                              ; preds = %198, %197
  %202 = phi i64 [ 1, %197 ], [ %200, %198 ]
  %203 = icmp slt i64 %193, %202
  br i1 %203, label %204, label %206

204:                                              ; preds = %201
  %205 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -7, ptr %205, align 8, !tbaa !9
  br label %254

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

212:                                              ; preds = %206
  br label %216

213:                                              ; preds = %206
  %214 = load ptr, ptr %27, align 8, !tbaa !5
  %215 = load i64, ptr %214, align 8, !tbaa !9
  br label %216

216:                                              ; preds = %213, %212
  %217 = phi i64 [ 1, %212 ], [ %215, %213 ]
  %218 = icmp slt i64 %208, %217
  br i1 %218, label %219, label %221

219:                                              ; preds = %216
  %220 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -9, ptr %220, align 8, !tbaa !9
  br label %253

221:                                              ; preds = %216
  %222 = load ptr, ptr %37, align 8, !tbaa !5
  %223 = load i64, ptr %222, align 8, !tbaa !9
  %224 = icmp slt i64 %223, 1
  br i1 %224, label %234, label %225

225:                                              ; preds = %221
  %226 = load i64, ptr %72, align 8, !tbaa !9
  %227 = icmp ne i64 %226, 0
  br i1 %227, label %228, label %236

228:                                              ; preds = %225
  %229 = load ptr, ptr %37, align 8, !tbaa !5
  %230 = load i64, ptr %229, align 8, !tbaa !9
  %231 = load ptr, ptr %27, align 8, !tbaa !5
  %232 = load i64, ptr %231, align 8, !tbaa !9
  %233 = icmp slt i64 %230, %232
  br i1 %233, label %234, label %236

234:                                              ; preds = %228, %221
  %235 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -15, ptr %235, align 8, !tbaa !9
  br label %252

236:                                              ; preds = %228, %225
  %237 = load ptr, ptr %39, align 8, !tbaa !5
  %238 = load i64, ptr %237, align 8, !tbaa !9
  %239 = icmp slt i64 %238, 1
  br i1 %239, label %249, label %240

240:                                              ; preds = %236
  %241 = load i64, ptr %73, align 8, !tbaa !9
  %242 = icmp ne i64 %241, 0
  br i1 %242, label %243, label %251

243:                                              ; preds = %240
  %244 = load ptr, ptr %39, align 8, !tbaa !5
  %245 = load i64, ptr %244, align 8, !tbaa !9
  %246 = load ptr, ptr %27, align 8, !tbaa !5
  %247 = load i64, ptr %246, align 8, !tbaa !9
  %248 = icmp slt i64 %245, %247
  br i1 %248, label %249, label %251

249:                                              ; preds = %243, %236
  %250 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -17, ptr %250, align 8, !tbaa !9
  br label %251

251:                                              ; preds = %249, %243, %240
  br label %252

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

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

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

255:                                              ; preds = %254, %189
  br label %256

256:                                              ; preds = %255, %183
  br label %257

257:                                              ; preds = %256, %174
  br label %258

258:                                              ; preds = %257, %169
  %259 = load ptr, ptr %43, align 8, !tbaa !5
  %260 = load i64, ptr %259, align 8, !tbaa !9
  %261 = icmp eq i64 %260, 0
  br i1 %261, label %262, label %356

262:                                              ; preds = %258
  %263 = load ptr, ptr %27, align 8, !tbaa !5
  %264 = load i64, ptr %263, align 8, !tbaa !9
  %265 = icmp sgt i64 %264, 0
  br i1 %265, label %266, label %340

266:                                              ; preds = %262
  %267 = load ptr, ptr %27, align 8, !tbaa !5
  %268 = load i64, ptr %267, align 8, !tbaa !9
  %269 = shl i64 %268, 3
  store i64 %269, ptr %52, align 8, !tbaa !9
  %270 = load ptr, ptr %27, align 8, !tbaa !5
  %271 = load i64, ptr %270, align 8, !tbaa !9
  %272 = mul nsw i64 %271, 6
  %273 = add nsw i64 %272, 16
  store i64 %273, ptr %53, align 8, !tbaa !9
  %274 = load i64, ptr %52, align 8, !tbaa !9
  %275 = load i64, ptr %53, align 8, !tbaa !9
  %276 = icmp sge i64 %274, %275
  br i1 %276, label %277, label %279

277:                                              ; preds = %266
  %278 = load i64, ptr %52, align 8, !tbaa !9
  br label %281

279:                                              ; preds = %266
  %280 = load i64, ptr %53, align 8, !tbaa !9
  br label %281

281:                                              ; preds = %279, %277
  %282 = phi i64 [ %278, %277 ], [ %280, %279 ]
  store i64 %282, ptr %87, align 8, !tbaa !9
  %283 = load i64, ptr %87, align 8, !tbaa !9
  %284 = load ptr, ptr %27, align 8, !tbaa !5
  %285 = load i64, ptr %284, align 8, !tbaa !9
  %286 = sub nsw i64 %283, %285
  %287 = load ptr, ptr %27, align 8, !tbaa !5
  %288 = load i64, ptr %287, align 8, !tbaa !9
  %289 = load ptr, ptr %27, align 8, !tbaa !5
  %290 = load ptr, ptr %27, align 8, !tbaa !5
  %291 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef %289, ptr noundef @c__1, ptr noundef %290, ptr noundef @c__0)
  %292 = mul nsw i64 %288, %291
  %293 = add nsw i64 %286, %292
  store i64 %293, ptr %88, align 8, !tbaa !9
  %294 = load i64, ptr %88, align 8, !tbaa !9
  store i64 %294, ptr %52, align 8, !tbaa !9
  %295 = load i64, ptr %87, align 8, !tbaa !9
  %296 = load ptr, ptr %27, align 8, !tbaa !5
  %297 = load i64, ptr %296, align 8, !tbaa !9
  %298 = sub nsw i64 %295, %297
  %299 = load ptr, ptr %27, align 8, !tbaa !5
  %300 = load i64, ptr %299, align 8, !tbaa !9
  %301 = load ptr, ptr %27, align 8, !tbaa !5
  %302 = load ptr, ptr %27, align 8, !tbaa !5
  %303 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.5, ptr noundef @.str.4, ptr noundef %301, ptr noundef @c__1, ptr noundef %302, ptr noundef @c_n1)
  %304 = mul nsw i64 %300, %303
  %305 = add nsw i64 %298, %304
  store i64 %305, ptr %53, align 8, !tbaa !9
  %306 = load i64, ptr %52, align 8, !tbaa !9
  %307 = load i64, ptr %53, align 8, !tbaa !9
  %308 = icmp sge i64 %306, %307
  br i1 %308, label %309, label %311

309:                                              ; preds = %281
  %310 = load i64, ptr %52, align 8, !tbaa !9
  br label %313

311:                                              ; preds = %281
  %312 = load i64, ptr %53, align 8, !tbaa !9
  br label %313

313:                                              ; preds = %311, %309
  %314 = phi i64 [ %310, %309 ], [ %312, %311 ]
  store i64 %314, ptr %88, align 8, !tbaa !9
  %315 = load i64, ptr %72, align 8, !tbaa !9
  %316 = icmp ne i64 %315, 0
  br i1 %316, label %317, label %339

317:                                              ; preds = %313
  %318 = load i64, ptr %88, align 8, !tbaa !9
  store i64 %318, ptr %52, align 8, !tbaa !9
  %319 = load i64, ptr %87, align 8, !tbaa !9
  %320 = load ptr, ptr %27, align 8, !tbaa !5
  %321 = load i64, ptr %320, align 8, !tbaa !9
  %322 = sub nsw i64 %319, %321
  %323 = load ptr, ptr %27, align 8, !tbaa !5
  %324 = load i64, ptr %323, align 8, !tbaa !9
  %325 = load ptr, ptr %27, align 8, !tbaa !5
  %326 = load ptr, ptr %27, align 8, !tbaa !5
  %327 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.6, ptr noundef @.str.4, ptr noundef %325, ptr noundef @c__1, ptr noundef %326, ptr noundef @c_n1)
  %328 = mul nsw i64 %324, %327
  %329 = add nsw i64 %322, %328
  store i64 %329, ptr %53, align 8, !tbaa !9
  %330 = load i64, ptr %52, align 8, !tbaa !9
  %331 = load i64, ptr %53, align 8, !tbaa !9
  %332 = icmp sge i64 %330, %331
  br i1 %332, label %333, label %335

333:                                              ; preds = %317
  %334 = load i64, ptr %52, align 8, !tbaa !9
  br label %337

335:                                              ; preds = %317
  %336 = load i64, ptr %53, align 8, !tbaa !9
  br label %337

337:                                              ; preds = %335, %333
  %338 = phi i64 [ %334, %333 ], [ %336, %335 ]
  store i64 %338, ptr %88, align 8, !tbaa !9
  br label %339

339:                                              ; preds = %337, %313
  br label %341

340:                                              ; preds = %262
  store i64 1, ptr %87, align 8, !tbaa !9
  store i64 1, ptr %88, align 8, !tbaa !9
  br label %341

341:                                              ; preds = %340, %339
  %342 = load i64, ptr %88, align 8, !tbaa !9
  %343 = sitofp i64 %342 to double
  %344 = load ptr, ptr %40, align 8, !tbaa !5
  %345 = getelementptr inbounds double, ptr %344, i64 1
  store double %343, ptr %345, align 8, !tbaa !11
  %346 = load ptr, ptr %41, align 8, !tbaa !5
  %347 = load i64, ptr %346, align 8, !tbaa !9
  %348 = load i64, ptr %87, align 8, !tbaa !9
  %349 = icmp slt i64 %347, %348
  br i1 %349, label %350, label %355

350:                                              ; preds = %341
  %351 = load i64, ptr %91, align 8, !tbaa !9
  %352 = icmp ne i64 %351, 0
  br i1 %352, label %355, label %353

353:                                              ; preds = %350
  %354 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -19, ptr %354, align 8, !tbaa !9
  br label %355

355:                                              ; preds = %353, %350, %341
  br label %356

356:                                              ; preds = %355, %258
  %357 = load ptr, ptr %43, align 8, !tbaa !5
  %358 = load i64, ptr %357, align 8, !tbaa !9
  %359 = icmp ne i64 %358, 0
  br i1 %359, label %360, label %365

360:                                              ; preds = %356
  %361 = load ptr, ptr %43, align 8, !tbaa !5
  %362 = load i64, ptr %361, align 8, !tbaa !9
  %363 = sub nsw i64 0, %362
  store i64 %363, ptr %52, align 8, !tbaa !9
  %364 = call i32 @xerbla_(ptr noundef @.str.7, ptr noundef %52)
  store i32 0, ptr %22, align 4
  store i32 1, ptr %92, align 4
  br label %1230

365:                                              ; preds = %356
  %366 = load i64, ptr %91, align 8, !tbaa !9
  %367 = icmp ne i64 %366, 0
  br i1 %367, label %368, label %369

368:                                              ; preds = %365
  store i32 0, ptr %22, align 4
  store i32 1, ptr %92, align 4
  br label %1230

369:                                              ; preds = %365
  br label %370

370:                                              ; preds = %369
  %371 = load ptr, ptr %27, align 8, !tbaa !5
  %372 = load i64, ptr %371, align 8, !tbaa !9
  %373 = icmp eq i64 %372, 0
  br i1 %373, label %374, label %376

374:                                              ; preds = %370
  %375 = load ptr, ptr %32, align 8, !tbaa !5
  store i64 0, ptr %375, align 8, !tbaa !9
  store i32 0, ptr %22, align 4
  store i32 1, ptr %92, align 4
  br label %1230

376:                                              ; preds = %370
  %377 = call double @dlamch_(ptr noundef @.str.8)
  store double %377, ptr %60, align 8, !tbaa !11
  %378 = call double @dlamch_(ptr noundef @.str.2)
  store double %378, ptr %78, align 8, !tbaa !11
  %379 = load double, ptr %78, align 8, !tbaa !11
  %380 = fdiv double 1.000000e+00, %379
  store double %380, ptr %79, align 8, !tbaa !11
  %381 = call i32 @dlabad_(ptr noundef %78, ptr noundef %79)
  %382 = load double, ptr %78, align 8, !tbaa !11
  %383 = call double @sqrt(double noundef %382) #4
  %384 = load double, ptr %60, align 8, !tbaa !11
  %385 = fdiv double %383, %384
  store double %385, ptr %89, align 8, !tbaa !11
  %386 = load double, ptr %89, align 8, !tbaa !11
  %387 = fdiv double 1.000000e+00, %386
  store double %387, ptr %80, align 8, !tbaa !11
  %388 = load ptr, ptr %27, align 8, !tbaa !5
  %389 = load ptr, ptr %27, align 8, !tbaa !5
  %390 = load ptr, ptr %28, align 8, !tbaa !5
  %391 = load i64, ptr %45, align 8, !tbaa !9
  %392 = getelementptr inbounds double, ptr %390, i64 %391
  %393 = load ptr, ptr %29, align 8, !tbaa !5
  %394 = load ptr, ptr %40, align 8, !tbaa !5
  %395 = getelementptr inbounds double, ptr %394, i64 1
  %396 = call double @dlange_(ptr noundef @.str.9, ptr noundef %388, ptr noundef %389, ptr noundef %392, ptr noundef %393, ptr noundef %395)
  store double %396, ptr %61, align 8, !tbaa !11
  store i64 0, ptr %76, align 8, !tbaa !9
  %397 = load double, ptr %61, align 8, !tbaa !11
  %398 = fcmp ogt double %397, 0.000000e+00
  br i1 %398, label %399, label %405

399:                                              ; preds = %376
  %400 = load double, ptr %61, align 8, !tbaa !11
  %401 = load double, ptr %89, align 8, !tbaa !11
  %402 = fcmp olt double %400, %401
  br i1 %402, label %403, label %405

403:                                              ; preds = %399
  %404 = load double, ptr %89, align 8, !tbaa !11
  store double %404, ptr %84, align 8, !tbaa !11
  store i64 1, ptr %76, align 8, !tbaa !9
  br label %412

405:                                              ; preds = %399, %376
  %406 = load double, ptr %61, align 8, !tbaa !11
  %407 = load double, ptr %80, align 8, !tbaa !11
  %408 = fcmp ogt double %406, %407
  br i1 %408, label %409, label %411

409:                                              ; preds = %405
  %410 = load double, ptr %80, align 8, !tbaa !11
  store double %410, ptr %84, align 8, !tbaa !11
  store i64 1, ptr %76, align 8, !tbaa !9
  br label %411

411:                                              ; preds = %409, %405
  br label %412

412:                                              ; preds = %411, %403
  %413 = load i64, ptr %76, align 8, !tbaa !9
  %414 = icmp ne i64 %413, 0
  br i1 %414, label %415, label %423

415:                                              ; preds = %412
  %416 = load ptr, ptr %27, align 8, !tbaa !5
  %417 = load ptr, ptr %27, align 8, !tbaa !5
  %418 = load ptr, ptr %28, align 8, !tbaa !5
  %419 = load i64, ptr %45, align 8, !tbaa !9
  %420 = getelementptr inbounds double, ptr %418, i64 %419
  %421 = load ptr, ptr %29, align 8, !tbaa !5
  %422 = call i32 @dlascl_(ptr noundef @.str.10, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %61, ptr noundef %84, ptr noundef %416, ptr noundef %417, ptr noundef %420, ptr noundef %421, ptr noundef %64)
  br label %423

423:                                              ; preds = %415, %412
  %424 = load ptr, ptr %27, align 8, !tbaa !5
  %425 = load ptr, ptr %27, align 8, !tbaa !5
  %426 = load ptr, ptr %30, align 8, !tbaa !5
  %427 = load i64, ptr %47, align 8, !tbaa !9
  %428 = getelementptr inbounds double, ptr %426, i64 %427
  %429 = load ptr, ptr %31, align 8, !tbaa !5
  %430 = load ptr, ptr %40, align 8, !tbaa !5
  %431 = getelementptr inbounds double, ptr %430, i64 1
  %432 = call double @dlange_(ptr noundef @.str.9, ptr noundef %424, ptr noundef %425, ptr noundef %428, ptr noundef %429, ptr noundef %431)
  store double %432, ptr %62, align 8, !tbaa !11
  store i64 0, ptr %77, align 8, !tbaa !9
  %433 = load double, ptr %62, align 8, !tbaa !11
  %434 = fcmp ogt double %433, 0.000000e+00
  br i1 %434, label %435, label %441

435:                                              ; preds = %423
  %436 = load double, ptr %62, align 8, !tbaa !11
  %437 = load double, ptr %89, align 8, !tbaa !11
  %438 = fcmp olt double %436, %437
  br i1 %438, label %439, label %441

439:                                              ; preds = %435
  %440 = load double, ptr %89, align 8, !tbaa !11
  store double %440, ptr %85, align 8, !tbaa !11
  store i64 1, ptr %77, align 8, !tbaa !9
  br label %448

441:                                              ; preds = %435, %423
  %442 = load double, ptr %62, align 8, !tbaa !11
  %443 = load double, ptr %80, align 8, !tbaa !11
  %444 = fcmp ogt double %442, %443
  br i1 %444, label %445, label %447

445:                                              ; preds = %441
  %446 = load double, ptr %80, align 8, !tbaa !11
  store double %446, ptr %85, align 8, !tbaa !11
  store i64 1, ptr %77, align 8, !tbaa !9
  br label %447

447:                                              ; preds = %445, %441
  br label %448

448:                                              ; preds = %447, %439
  %449 = load i64, ptr %77, align 8, !tbaa !9
  %450 = icmp ne i64 %449, 0
  br i1 %450, label %451, label %459

451:                                              ; preds = %448
  %452 = load ptr, ptr %27, align 8, !tbaa !5
  %453 = load ptr, ptr %27, align 8, !tbaa !5
  %454 = load ptr, ptr %30, align 8, !tbaa !5
  %455 = load i64, ptr %47, align 8, !tbaa !9
  %456 = getelementptr inbounds double, ptr %454, i64 %455
  %457 = load ptr, ptr %31, align 8, !tbaa !5
  %458 = call i32 @dlascl_(ptr noundef @.str.10, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %62, ptr noundef %85, ptr noundef %452, ptr noundef %453, ptr noundef %456, ptr noundef %457, ptr noundef %64)
  br label %459

459:                                              ; preds = %451, %448
  store i64 1, ptr %69, align 8, !tbaa !9
  %460 = load ptr, ptr %27, align 8, !tbaa !5
  %461 = load i64, ptr %460, align 8, !tbaa !9
  %462 = add nsw i64 %461, 1
  store i64 %462, ptr %82, align 8, !tbaa !9
  %463 = load i64, ptr %82, align 8, !tbaa !9
  %464 = load ptr, ptr %27, align 8, !tbaa !5
  %465 = load i64, ptr %464, align 8, !tbaa !9
  %466 = add nsw i64 %463, %465
  store i64 %466, ptr %66, align 8, !tbaa !9
  %467 = load ptr, ptr %27, align 8, !tbaa !5
  %468 = load ptr, ptr %28, align 8, !tbaa !5
  %469 = load i64, ptr %45, align 8, !tbaa !9
  %470 = getelementptr inbounds double, ptr %468, i64 %469
  %471 = load ptr, ptr %29, align 8, !tbaa !5
  %472 = load ptr, ptr %30, align 8, !tbaa !5
  %473 = load i64, ptr %47, align 8, !tbaa !9
  %474 = getelementptr inbounds double, ptr %472, i64 %473
  %475 = load ptr, ptr %31, align 8, !tbaa !5
  %476 = load ptr, ptr %40, align 8, !tbaa !5
  %477 = load i64, ptr %69, align 8, !tbaa !9
  %478 = getelementptr inbounds double, ptr %476, i64 %477
  %479 = load ptr, ptr %40, align 8, !tbaa !5
  %480 = load i64, ptr %82, align 8, !tbaa !9
  %481 = getelementptr inbounds double, ptr %479, i64 %480
  %482 = load ptr, ptr %40, align 8, !tbaa !5
  %483 = load i64, ptr %66, align 8, !tbaa !9
  %484 = getelementptr inbounds double, ptr %482, i64 %483
  %485 = call i32 @dggbal_(ptr noundef @.str.8, ptr noundef %467, ptr noundef %470, ptr noundef %471, ptr noundef %474, ptr noundef %475, ptr noundef %59, ptr noundef %58, ptr noundef %478, ptr noundef %481, ptr noundef %484, ptr noundef %64)
  %486 = load i64, ptr %58, align 8, !tbaa !9
  %487 = add nsw i64 %486, 1
  %488 = load i64, ptr %59, align 8, !tbaa !9
  %489 = sub nsw i64 %487, %488
  store i64 %489, ptr %74, align 8, !tbaa !9
  %490 = load ptr, ptr %27, align 8, !tbaa !5
  %491 = load i64, ptr %490, align 8, !tbaa !9
  %492 = add nsw i64 %491, 1
  %493 = load i64, ptr %59, align 8, !tbaa !9
  %494 = sub nsw i64 %492, %493
  store i64 %494, ptr %70, align 8, !tbaa !9
  %495 = load i64, ptr %66, align 8, !tbaa !9
  store i64 %495, ptr %65, align 8, !tbaa !9
  %496 = load i64, ptr %65, align 8, !tbaa !9
  %497 = load i64, ptr %74, align 8, !tbaa !9
  %498 = add nsw i64 %496, %497
  store i64 %498, ptr %66, align 8, !tbaa !9
  %499 = load ptr, ptr %41, align 8, !tbaa !5
  %500 = load i64, ptr %499, align 8, !tbaa !9
  %501 = add nsw i64 %500, 1
  %502 = load i64, ptr %66, align 8, !tbaa !9
  %503 = sub nsw i64 %501, %502
  store i64 %503, ptr %52, align 8, !tbaa !9
  %504 = load ptr, ptr %30, align 8, !tbaa !5
  %505 = load i64, ptr %59, align 8, !tbaa !9
  %506 = load i64, ptr %59, align 8, !tbaa !9
  %507 = load i64, ptr %46, align 8, !tbaa !9
  %508 = mul nsw i64 %506, %507
  %509 = add nsw i64 %505, %508
  %510 = getelementptr inbounds double, ptr %504, i64 %509
  %511 = load ptr, ptr %31, align 8, !tbaa !5
  %512 = load ptr, ptr %40, align 8, !tbaa !5
  %513 = load i64, ptr %65, align 8, !tbaa !9
  %514 = getelementptr inbounds double, ptr %512, i64 %513
  %515 = load ptr, ptr %40, align 8, !tbaa !5
  %516 = load i64, ptr %66, align 8, !tbaa !9
  %517 = getelementptr inbounds double, ptr %515, i64 %516
  %518 = call i32 @dgeqrf_(ptr noundef %74, ptr noundef %70, ptr noundef %510, ptr noundef %511, ptr noundef %514, ptr noundef %517, ptr noundef %52, ptr noundef %64)
  %519 = load ptr, ptr %41, align 8, !tbaa !5
  %520 = load i64, ptr %519, align 8, !tbaa !9
  %521 = add nsw i64 %520, 1
  %522 = load i64, ptr %66, align 8, !tbaa !9
  %523 = sub nsw i64 %521, %522
  store i64 %523, ptr %52, align 8, !tbaa !9
  %524 = load ptr, ptr %30, align 8, !tbaa !5
  %525 = load i64, ptr %59, align 8, !tbaa !9
  %526 = load i64, ptr %59, align 8, !tbaa !9
  %527 = load i64, ptr %46, align 8, !tbaa !9
  %528 = mul nsw i64 %526, %527
  %529 = add nsw i64 %525, %528
  %530 = getelementptr inbounds double, ptr %524, i64 %529
  %531 = load ptr, ptr %31, align 8, !tbaa !5
  %532 = load ptr, ptr %40, align 8, !tbaa !5
  %533 = load i64, ptr %65, align 8, !tbaa !9
  %534 = getelementptr inbounds double, ptr %532, i64 %533
  %535 = load ptr, ptr %28, align 8, !tbaa !5
  %536 = load i64, ptr %59, align 8, !tbaa !9
  %537 = load i64, ptr %59, align 8, !tbaa !9
  %538 = load i64, ptr %44, align 8, !tbaa !9
  %539 = mul nsw i64 %537, %538
  %540 = add nsw i64 %536, %539
  %541 = getelementptr inbounds double, ptr %535, i64 %540
  %542 = load ptr, ptr %29, align 8, !tbaa !5
  %543 = load ptr, ptr %40, align 8, !tbaa !5
  %544 = load i64, ptr %66, align 8, !tbaa !9
  %545 = getelementptr inbounds double, ptr %543, i64 %544
  %546 = call i32 @dormqr_(ptr noundef @.str.11, ptr noundef @.str.12, ptr noundef %74, ptr noundef %70, ptr noundef %74, ptr noundef %530, ptr noundef %531, ptr noundef %534, ptr noundef %541, ptr noundef %542, ptr noundef %545, ptr noundef %52, ptr noundef %64)
  %547 = load i64, ptr %72, align 8, !tbaa !9
  %548 = icmp ne i64 %547, 0
  br i1 %548, label %549, label %604

549:                                              ; preds = %459
  %550 = load ptr, ptr %27, align 8, !tbaa !5
  %551 = load ptr, ptr %27, align 8, !tbaa !5
  %552 = load ptr, ptr %36, align 8, !tbaa !5
  %553 = load i64, ptr %49, align 8, !tbaa !9
  %554 = getelementptr inbounds double, ptr %552, i64 %553
  %555 = load ptr, ptr %37, align 8, !tbaa !5
  %556 = call i32 @dlaset_(ptr noundef @.str.13, ptr noundef %550, ptr noundef %551, ptr noundef @c_b38, ptr noundef @c_b39, ptr noundef %554, ptr noundef %555)
  %557 = load i64, ptr %74, align 8, !tbaa !9
  %558 = icmp sgt i64 %557, 1
  br i1 %558, label %559, label %583

559:                                              ; preds = %549
  %560 = load i64, ptr %74, align 8, !tbaa !9
  %561 = sub nsw i64 %560, 1
  store i64 %561, ptr %52, align 8, !tbaa !9
  %562 = load i64, ptr %74, align 8, !tbaa !9
  %563 = sub nsw i64 %562, 1
  store i64 %563, ptr %53, align 8, !tbaa !9
  %564 = load ptr, ptr %30, align 8, !tbaa !5
  %565 = load i64, ptr %59, align 8, !tbaa !9
  %566 = add nsw i64 %565, 1
  %567 = load i64, ptr %59, align 8, !tbaa !9
  %568 = load i64, ptr %46, align 8, !tbaa !9
  %569 = mul nsw i64 %567, %568
  %570 = add nsw i64 %566, %569
  %571 = getelementptr inbounds double, ptr %564, i64 %570
  %572 = load ptr, ptr %31, align 8, !tbaa !5
  %573 = load ptr, ptr %36, align 8, !tbaa !5
  %574 = load i64, ptr %59, align 8, !tbaa !9
  %575 = add nsw i64 %574, 1
  %576 = load i64, ptr %59, align 8, !tbaa !9
  %577 = load i64, ptr %48, align 8, !tbaa !9
  %578 = mul nsw i64 %576, %577
  %579 = add nsw i64 %575, %578
  %580 = getelementptr inbounds double, ptr %573, i64 %579
  %581 = load ptr, ptr %37, align 8, !tbaa !5
  %582 = call i32 @dlacpy_(ptr noundef @.str.11, ptr noundef %52, ptr noundef %53, ptr noundef %571, ptr noundef %572, ptr noundef %580, ptr noundef %581)
  br label %583

583:                                              ; preds = %559, %549
  %584 = load ptr, ptr %41, align 8, !tbaa !5
  %585 = load i64, ptr %584, align 8, !tbaa !9
  %586 = add nsw i64 %585, 1
  %587 = load i64, ptr %66, align 8, !tbaa !9
  %588 = sub nsw i64 %586, %587
  store i64 %588, ptr %52, align 8, !tbaa !9
  %589 = load ptr, ptr %36, align 8, !tbaa !5
  %590 = load i64, ptr %59, align 8, !tbaa !9
  %591 = load i64, ptr %59, align 8, !tbaa !9
  %592 = load i64, ptr %48, align 8, !tbaa !9
  %593 = mul nsw i64 %591, %592
  %594 = add nsw i64 %590, %593
  %595 = getelementptr inbounds double, ptr %589, i64 %594
  %596 = load ptr, ptr %37, align 8, !tbaa !5
  %597 = load ptr, ptr %40, align 8, !tbaa !5
  %598 = load i64, ptr %65, align 8, !tbaa !9
  %599 = getelementptr inbounds double, ptr %597, i64 %598
  %600 = load ptr, ptr %40, align 8, !tbaa !5
  %601 = load i64, ptr %66, align 8, !tbaa !9
  %602 = getelementptr inbounds double, ptr %600, i64 %601
  %603 = call i32 @dorgqr_(ptr noundef %74, ptr noundef %74, ptr noundef %74, ptr noundef %595, ptr noundef %596, ptr noundef %599, ptr noundef %602, ptr noundef %52, ptr noundef %64)
  br label %604

604:                                              ; preds = %583, %459
  %605 = load i64, ptr %73, align 8, !tbaa !9
  %606 = icmp ne i64 %605, 0
  br i1 %606, label %607, label %615

607:                                              ; preds = %604
  %608 = load ptr, ptr %27, align 8, !tbaa !5
  %609 = load ptr, ptr %27, align 8, !tbaa !5
  %610 = load ptr, ptr %38, align 8, !tbaa !5
  %611 = load i64, ptr %51, align 8, !tbaa !9
  %612 = getelementptr inbounds double, ptr %610, i64 %611
  %613 = load ptr, ptr %39, align 8, !tbaa !5
  %614 = call i32 @dlaset_(ptr noundef @.str.13, ptr noundef %608, ptr noundef %609, ptr noundef @c_b38, ptr noundef @c_b39, ptr noundef %612, ptr noundef %613)
  br label %615

615:                                              ; preds = %607, %604
  %616 = load ptr, ptr %23, align 8, !tbaa !5
  %617 = load ptr, ptr %24, align 8, !tbaa !5
  %618 = load ptr, ptr %27, align 8, !tbaa !5
  %619 = load ptr, ptr %28, align 8, !tbaa !5
  %620 = load i64, ptr %45, align 8, !tbaa !9
  %621 = getelementptr inbounds double, ptr %619, i64 %620
  %622 = load ptr, ptr %29, align 8, !tbaa !5
  %623 = load ptr, ptr %30, align 8, !tbaa !5
  %624 = load i64, ptr %47, align 8, !tbaa !9
  %625 = getelementptr inbounds double, ptr %623, i64 %624
  %626 = load ptr, ptr %31, align 8, !tbaa !5
  %627 = load ptr, ptr %36, align 8, !tbaa !5
  %628 = load i64, ptr %49, align 8, !tbaa !9
  %629 = getelementptr inbounds double, ptr %627, i64 %628
  %630 = load ptr, ptr %37, align 8, !tbaa !5
  %631 = load ptr, ptr %38, align 8, !tbaa !5
  %632 = load i64, ptr %51, align 8, !tbaa !9
  %633 = getelementptr inbounds double, ptr %631, i64 %632
  %634 = load ptr, ptr %39, align 8, !tbaa !5
  %635 = call i32 @dgghrd_(ptr noundef %616, ptr noundef %617, ptr noundef %618, ptr noundef %59, ptr noundef %58, ptr noundef %621, ptr noundef %622, ptr noundef %625, ptr noundef %626, ptr noundef %629, ptr noundef %630, ptr noundef %633, ptr noundef %634, ptr noundef %64)
  %636 = load i64, ptr %65, align 8, !tbaa !9
  store i64 %636, ptr %66, align 8, !tbaa !9
  %637 = load ptr, ptr %41, align 8, !tbaa !5
  %638 = load i64, ptr %637, align 8, !tbaa !9
  %639 = add nsw i64 %638, 1
  %640 = load i64, ptr %66, align 8, !tbaa !9
  %641 = sub nsw i64 %639, %640
  store i64 %641, ptr %52, align 8, !tbaa !9
  %642 = load ptr, ptr %23, align 8, !tbaa !5
  %643 = load ptr, ptr %24, align 8, !tbaa !5
  %644 = load ptr, ptr %27, align 8, !tbaa !5
  %645 = load ptr, ptr %28, align 8, !tbaa !5
  %646 = load i64, ptr %45, align 8, !tbaa !9
  %647 = getelementptr inbounds double, ptr %645, i64 %646
  %648 = load ptr, ptr %29, align 8, !tbaa !5
  %649 = load ptr, ptr %30, align 8, !tbaa !5
  %650 = load i64, ptr %47, align 8, !tbaa !9
  %651 = getelementptr inbounds double, ptr %649, i64 %650
  %652 = load ptr, ptr %31, align 8, !tbaa !5
  %653 = load ptr, ptr %33, align 8, !tbaa !5
  %654 = getelementptr inbounds double, ptr %653, i64 1
  %655 = load ptr, ptr %34, align 8, !tbaa !5
  %656 = getelementptr inbounds double, ptr %655, i64 1
  %657 = load ptr, ptr %35, align 8, !tbaa !5
  %658 = getelementptr inbounds double, ptr %657, i64 1
  %659 = load ptr, ptr %36, align 8, !tbaa !5
  %660 = load i64, ptr %49, align 8, !tbaa !9
  %661 = getelementptr inbounds double, ptr %659, i64 %660
  %662 = load ptr, ptr %37, align 8, !tbaa !5
  %663 = load ptr, ptr %38, align 8, !tbaa !5
  %664 = load i64, ptr %51, align 8, !tbaa !9
  %665 = getelementptr inbounds double, ptr %663, i64 %664
  %666 = load ptr, ptr %39, align 8, !tbaa !5
  %667 = load ptr, ptr %40, align 8, !tbaa !5
  %668 = load i64, ptr %66, align 8, !tbaa !9
  %669 = getelementptr inbounds double, ptr %667, i64 %668
  %670 = call i32 @dhgeqz_(ptr noundef @.str.2, ptr noundef %642, ptr noundef %643, ptr noundef %644, ptr noundef %59, ptr noundef %58, ptr noundef %647, ptr noundef %648, ptr noundef %651, ptr noundef %652, ptr noundef %654, ptr noundef %656, ptr noundef %658, ptr noundef %661, ptr noundef %662, ptr noundef %665, ptr noundef %666, ptr noundef %669, ptr noundef %52, ptr noundef %64)
  %671 = load i64, ptr %64, align 8, !tbaa !9
  %672 = icmp ne i64 %671, 0
  br i1 %672, label %673, label %708

673:                                              ; preds = %615
  %674 = load i64, ptr %64, align 8, !tbaa !9
  %675 = icmp sgt i64 %674, 0
  br i1 %675, label %676, label %684

676:                                              ; preds = %673
  %677 = load i64, ptr %64, align 8, !tbaa !9
  %678 = load ptr, ptr %27, align 8, !tbaa !5
  %679 = load i64, ptr %678, align 8, !tbaa !9
  %680 = icmp sle i64 %677, %679
  br i1 %680, label %681, label %684

681:                                              ; preds = %676
  %682 = load i64, ptr %64, align 8, !tbaa !9
  %683 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 %682, ptr %683, align 8, !tbaa !9
  br label %707

684:                                              ; preds = %676, %673
  %685 = load i64, ptr %64, align 8, !tbaa !9
  %686 = load ptr, ptr %27, align 8, !tbaa !5
  %687 = load i64, ptr %686, align 8, !tbaa !9
  %688 = icmp sgt i64 %685, %687
  br i1 %688, label %689, label %701

689:                                              ; preds = %684
  %690 = load i64, ptr %64, align 8, !tbaa !9
  %691 = load ptr, ptr %27, align 8, !tbaa !5
  %692 = load i64, ptr %691, align 8, !tbaa !9
  %693 = shl i64 %692, 1
  %694 = icmp sle i64 %690, %693
  br i1 %694, label %695, label %701

695:                                              ; preds = %689
  %696 = load i64, ptr %64, align 8, !tbaa !9
  %697 = load ptr, ptr %27, align 8, !tbaa !5
  %698 = load i64, ptr %697, align 8, !tbaa !9
  %699 = sub nsw i64 %696, %698
  %700 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 %699, ptr %700, align 8, !tbaa !9
  br label %706

701:                                              ; preds = %689, %684
  %702 = load ptr, ptr %27, align 8, !tbaa !5
  %703 = load i64, ptr %702, align 8, !tbaa !9
  %704 = add nsw i64 %703, 1
  %705 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 %704, ptr %705, align 8, !tbaa !9
  br label %706

706:                                              ; preds = %701, %695
  br label %707

707:                                              ; preds = %706, %681
  br label %1225

708:                                              ; preds = %615
  %709 = load ptr, ptr %32, align 8, !tbaa !5
  store i64 0, ptr %709, align 8, !tbaa !9
  %710 = load i64, ptr %90, align 8, !tbaa !9
  %711 = icmp ne i64 %710, 0
  br i1 %711, label %712, label %806

712:                                              ; preds = %708
  %713 = load i64, ptr %76, align 8, !tbaa !9
  %714 = icmp ne i64 %713, 0
  br i1 %714, label %715, label %726

715:                                              ; preds = %712
  %716 = load ptr, ptr %27, align 8, !tbaa !5
  %717 = load ptr, ptr %33, align 8, !tbaa !5
  %718 = getelementptr inbounds double, ptr %717, i64 1
  %719 = load ptr, ptr %27, align 8, !tbaa !5
  %720 = call i32 @dlascl_(ptr noundef @.str.10, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %84, ptr noundef %61, ptr noundef %716, ptr noundef @c__1, ptr noundef %718, ptr noundef %719, ptr noundef %64)
  %721 = load ptr, ptr %27, align 8, !tbaa !5
  %722 = load ptr, ptr %34, align 8, !tbaa !5
  %723 = getelementptr inbounds double, ptr %722, i64 1
  %724 = load ptr, ptr %27, align 8, !tbaa !5
  %725 = call i32 @dlascl_(ptr noundef @.str.10, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %84, ptr noundef %61, ptr noundef %721, ptr noundef @c__1, ptr noundef %723, ptr noundef %724, ptr noundef %64)
  br label %726

726:                                              ; preds = %715, %712
  %727 = load i64, ptr %77, align 8, !tbaa !9
  %728 = icmp ne i64 %727, 0
  br i1 %728, label %729, label %735

729:                                              ; preds = %726
  %730 = load ptr, ptr %27, align 8, !tbaa !5
  %731 = load ptr, ptr %35, align 8, !tbaa !5
  %732 = getelementptr inbounds double, ptr %731, i64 1
  %733 = load ptr, ptr %27, align 8, !tbaa !5
  %734 = call i32 @dlascl_(ptr noundef @.str.10, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %85, ptr noundef %62, ptr noundef %730, ptr noundef @c__1, ptr noundef %732, ptr noundef %733, ptr noundef %64)
  br label %735

735:                                              ; preds = %729, %726
  %736 = load ptr, ptr %27, align 8, !tbaa !5
  %737 = load i64, ptr %736, align 8, !tbaa !9
  store i64 %737, ptr %52, align 8, !tbaa !9
  store i64 1, ptr %55, align 8, !tbaa !9
  br label %738

738:                                              ; preds = %757, %735
  %739 = load i64, ptr %55, align 8, !tbaa !9
  %740 = load i64, ptr %52, align 8, !tbaa !9
  %741 = icmp sle i64 %739, %740
  br i1 %741, label %742, label %760

742:                                              ; preds = %738
  %743 = load ptr, ptr %26, align 8, !tbaa !5
  %744 = load ptr, ptr %33, align 8, !tbaa !5
  %745 = load i64, ptr %55, align 8, !tbaa !9
  %746 = getelementptr inbounds double, ptr %744, i64 %745
  %747 = load ptr, ptr %34, align 8, !tbaa !5
  %748 = load i64, ptr %55, align 8, !tbaa !9
  %749 = getelementptr inbounds double, ptr %747, i64 %748
  %750 = load ptr, ptr %35, align 8, !tbaa !5
  %751 = load i64, ptr %55, align 8, !tbaa !9
  %752 = getelementptr inbounds double, ptr %750, i64 %751
  %753 = call i64 (ptr, ptr, ptr, ...) %743(ptr noundef %746, ptr noundef %749, ptr noundef %752)
  %754 = load ptr, ptr %42, align 8, !tbaa !5
  %755 = load i64, ptr %55, align 8, !tbaa !9
  %756 = getelementptr inbounds i64, ptr %754, i64 %755
  store i64 %753, ptr %756, align 8, !tbaa !9
  br label %757

757:                                              ; preds = %742
  %758 = load i64, ptr %55, align 8, !tbaa !9
  %759 = add nsw i64 %758, 1
  store i64 %759, ptr %55, align 8, !tbaa !9
  br label %738, !llvm.loop !13

760:                                              ; preds = %738
  %761 = load ptr, ptr %41, align 8, !tbaa !5
  %762 = load i64, ptr %761, align 8, !tbaa !9
  %763 = load i64, ptr %66, align 8, !tbaa !9
  %764 = sub nsw i64 %762, %763
  %765 = add nsw i64 %764, 1
  store i64 %765, ptr %52, align 8, !tbaa !9
  %766 = load ptr, ptr %42, align 8, !tbaa !5
  %767 = getelementptr inbounds i64, ptr %766, i64 1
  %768 = load ptr, ptr %27, align 8, !tbaa !5
  %769 = load ptr, ptr %28, align 8, !tbaa !5
  %770 = load i64, ptr %45, align 8, !tbaa !9
  %771 = getelementptr inbounds double, ptr %769, i64 %770
  %772 = load ptr, ptr %29, align 8, !tbaa !5
  %773 = load ptr, ptr %30, align 8, !tbaa !5
  %774 = load i64, ptr %47, align 8, !tbaa !9
  %775 = getelementptr inbounds double, ptr %773, i64 %774
  %776 = load ptr, ptr %31, align 8, !tbaa !5
  %777 = load ptr, ptr %33, align 8, !tbaa !5
  %778 = getelementptr inbounds double, ptr %777, i64 1
  %779 = load ptr, ptr %34, align 8, !tbaa !5
  %780 = getelementptr inbounds double, ptr %779, i64 1
  %781 = load ptr, ptr %35, align 8, !tbaa !5
  %782 = getelementptr inbounds double, ptr %781, i64 1
  %783 = load ptr, ptr %36, align 8, !tbaa !5
  %784 = load i64, ptr %49, align 8, !tbaa !9
  %785 = getelementptr inbounds double, ptr %783, i64 %784
  %786 = load ptr, ptr %37, align 8, !tbaa !5
  %787 = load ptr, ptr %38, align 8, !tbaa !5
  %788 = load i64, ptr %51, align 8, !tbaa !9
  %789 = getelementptr inbounds double, ptr %787, i64 %788
  %790 = load ptr, ptr %39, align 8, !tbaa !5
  %791 = load ptr, ptr %32, align 8, !tbaa !5
  %792 = getelementptr inbounds [2 x double], ptr %57, i64 0, i64 0
  %793 = load ptr, ptr %40, align 8, !tbaa !5
  %794 = load i64, ptr %66, align 8, !tbaa !9
  %795 = getelementptr inbounds double, ptr %793, i64 %794
  %796 = getelementptr inbounds [1 x i64], ptr %63, i64 0, i64 0
  %797 = call i32 @dtgsen_(ptr noundef @c__0, ptr noundef %72, ptr noundef %73, ptr noundef %767, ptr noundef %768, ptr noundef %771, ptr noundef %772, ptr noundef %775, ptr noundef %776, ptr noundef %778, ptr noundef %780, ptr noundef %782, ptr noundef %785, ptr noundef %786, ptr noundef %789, ptr noundef %790, ptr noundef %791, ptr noundef %67, ptr noundef %68, ptr noundef %792, ptr noundef %795, ptr noundef %52, ptr noundef %796, ptr noundef @c__1, ptr noundef %64)
  %798 = load i64, ptr %64, align 8, !tbaa !9
  %799 = icmp eq i64 %798, 1
  br i1 %799, label %800, label %805

800:                                              ; preds = %760
  %801 = load ptr, ptr %27, align 8, !tbaa !5
  %802 = load i64, ptr %801, align 8, !tbaa !9
  %803 = add nsw i64 %802, 3
  %804 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 %803, ptr %804, align 8, !tbaa !9
  br label %805

805:                                              ; preds = %800, %760
  br label %806

806:                                              ; preds = %805, %708
  %807 = load i64, ptr %72, align 8, !tbaa !9
  %808 = icmp ne i64 %807, 0
  br i1 %808, label %809, label %823

809:                                              ; preds = %806
  %810 = load ptr, ptr %27, align 8, !tbaa !5
  %811 = load ptr, ptr %40, align 8, !tbaa !5
  %812 = load i64, ptr %69, align 8, !tbaa !9
  %813 = getelementptr inbounds double, ptr %811, i64 %812
  %814 = load ptr, ptr %40, align 8, !tbaa !5
  %815 = load i64, ptr %82, align 8, !tbaa !9
  %816 = getelementptr inbounds double, ptr %814, i64 %815
  %817 = load ptr, ptr %27, align 8, !tbaa !5
  %818 = load ptr, ptr %36, align 8, !tbaa !5
  %819 = load i64, ptr %49, align 8, !tbaa !9
  %820 = getelementptr inbounds double, ptr %818, i64 %819
  %821 = load ptr, ptr %37, align 8, !tbaa !5
  %822 = call i32 @dggbak_(ptr noundef @.str.8, ptr noundef @.str.11, ptr noundef %810, ptr noundef %59, ptr noundef %58, ptr noundef %813, ptr noundef %816, ptr noundef %817, ptr noundef %820, ptr noundef %821, ptr noundef %64)
  br label %823

823:                                              ; preds = %809, %806
  %824 = load i64, ptr %73, align 8, !tbaa !9
  %825 = icmp ne i64 %824, 0
  br i1 %825, label %826, label %840

826:                                              ; preds = %823
  %827 = load ptr, ptr %27, align 8, !tbaa !5
  %828 = load ptr, ptr %40, 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 %40, align 8, !tbaa !5
  %832 = load i64, ptr %82, align 8, !tbaa !9
  %833 = getelementptr inbounds double, ptr %831, i64 %832
  %834 = load ptr, ptr %27, align 8, !tbaa !5
  %835 = load ptr, ptr %38, align 8, !tbaa !5
  %836 = load i64, ptr %51, align 8, !tbaa !9
  %837 = getelementptr inbounds double, ptr %835, i64 %836
  %838 = load ptr, ptr %39, align 8, !tbaa !5
  %839 = call i32 @dggbak_(ptr noundef @.str.8, ptr noundef @.str.14, ptr noundef %827, ptr noundef %59, ptr noundef %58, ptr noundef %830, ptr noundef %833, ptr noundef %834, ptr noundef %837, ptr noundef %838, ptr noundef %64)
  br label %840

840:                                              ; preds = %826, %823
  %841 = load i64, ptr %76, align 8, !tbaa !9
  %842 = icmp ne i64 %841, 0
  br i1 %842, label %843, label %1006

843:                                              ; preds = %840
  %844 = load ptr, ptr %27, align 8, !tbaa !5
  %845 = load i64, ptr %844, align 8, !tbaa !9
  store i64 %845, ptr %52, align 8, !tbaa !9
  store i64 1, ptr %55, align 8, !tbaa !9
  br label %846

846:                                              ; preds = %1002, %843
  %847 = load i64, ptr %55, align 8, !tbaa !9
  %848 = load i64, ptr %52, align 8, !tbaa !9
  %849 = icmp sle i64 %847, %848
  br i1 %849, label %850, label %1005

850:                                              ; preds = %846
  %851 = load ptr, ptr %34, align 8, !tbaa !5
  %852 = load i64, ptr %55, align 8, !tbaa !9
  %853 = getelementptr inbounds double, ptr %851, i64 %852
  %854 = load double, ptr %853, align 8, !tbaa !11
  %855 = fcmp une double %854, 0.000000e+00
  br i1 %855, label %856, label %1001

856:                                              ; preds = %850
  %857 = load ptr, ptr %33, align 8, !tbaa !5
  %858 = load i64, ptr %55, align 8, !tbaa !9
  %859 = getelementptr inbounds double, ptr %857, i64 %858
  %860 = load double, ptr %859, align 8, !tbaa !11
  %861 = load double, ptr %79, align 8, !tbaa !11
  %862 = fdiv double %860, %861
  %863 = load double, ptr %84, align 8, !tbaa !11
  %864 = load double, ptr %61, align 8, !tbaa !11
  %865 = fdiv double %863, %864
  %866 = fcmp ogt double %862, %865
  br i1 %866, label %878, label %867

867:                                              ; preds = %856
  %868 = load double, ptr %78, align 8, !tbaa !11
  %869 = load ptr, ptr %33, align 8, !tbaa !5
  %870 = load i64, ptr %55, align 8, !tbaa !9
  %871 = getelementptr inbounds double, ptr %869, i64 %870
  %872 = load double, ptr %871, align 8, !tbaa !11
  %873 = fdiv double %868, %872
  %874 = load double, ptr %61, align 8, !tbaa !11
  %875 = load double, ptr %84, align 8, !tbaa !11
  %876 = fdiv double %874, %875
  %877 = fcmp ogt double %873, %876
  br i1 %877, label %878, label %927

878:                                              ; preds = %867, %856
  %879 = load ptr, ptr %28, align 8, !tbaa !5
  %880 = load i64, ptr %55, align 8, !tbaa !9
  %881 = load i64, ptr %55, align 8, !tbaa !9
  %882 = load i64, ptr %44, align 8, !tbaa !9
  %883 = mul nsw i64 %881, %882
  %884 = add nsw i64 %880, %883
  %885 = getelementptr inbounds double, ptr %879, i64 %884
  %886 = load double, ptr %885, align 8, !tbaa !11
  %887 = load ptr, ptr %33, align 8, !tbaa !5
  %888 = load i64, ptr %55, align 8, !tbaa !9
  %889 = getelementptr inbounds double, ptr %887, i64 %888
  %890 = load double, ptr %889, align 8, !tbaa !11
  %891 = fdiv double %886, %890
  store double %891, ptr %54, align 8, !tbaa !11
  %892 = load double, ptr %54, align 8, !tbaa !11
  %893 = fcmp oge double %892, 0.000000e+00
  br i1 %893, label %894, label %896

894:                                              ; preds = %878
  %895 = load double, ptr %54, align 8, !tbaa !11
  br label %899

896:                                              ; preds = %878
  %897 = load double, ptr %54, align 8, !tbaa !11
  %898 = fneg double %897
  br label %899

899:                                              ; preds = %896, %894
  %900 = phi double [ %895, %894 ], [ %898, %896 ]
  %901 = load ptr, ptr %40, align 8, !tbaa !5
  %902 = getelementptr inbounds double, ptr %901, i64 1
  store double %900, ptr %902, align 8, !tbaa !11
  %903 = load ptr, ptr %40, align 8, !tbaa !5
  %904 = getelementptr inbounds double, ptr %903, i64 1
  %905 = load double, ptr %904, align 8, !tbaa !11
  %906 = load ptr, ptr %35, align 8, !tbaa !5
  %907 = load i64, ptr %55, align 8, !tbaa !9
  %908 = getelementptr inbounds double, ptr %906, i64 %907
  %909 = load double, ptr %908, align 8, !tbaa !11
  %910 = fmul double %909, %905
  store double %910, ptr %908, align 8, !tbaa !11
  %911 = load ptr, ptr %40, align 8, !tbaa !5
  %912 = getelementptr inbounds double, ptr %911, i64 1
  %913 = load double, ptr %912, align 8, !tbaa !11
  %914 = load ptr, ptr %33, align 8, !tbaa !5
  %915 = load i64, ptr %55, align 8, !tbaa !9
  %916 = getelementptr inbounds double, ptr %914, i64 %915
  %917 = load double, ptr %916, align 8, !tbaa !11
  %918 = fmul double %917, %913
  store double %918, ptr %916, align 8, !tbaa !11
  %919 = load ptr, ptr %40, align 8, !tbaa !5
  %920 = getelementptr inbounds double, ptr %919, i64 1
  %921 = load double, ptr %920, align 8, !tbaa !11
  %922 = load ptr, ptr %34, align 8, !tbaa !5
  %923 = load i64, ptr %55, align 8, !tbaa !9
  %924 = getelementptr inbounds double, ptr %922, i64 %923
  %925 = load double, ptr %924, align 8, !tbaa !11
  %926 = fmul double %925, %921
  store double %926, ptr %924, align 8, !tbaa !11
  br label %1000

927:                                              ; preds = %867
  %928 = load ptr, ptr %34, align 8, !tbaa !5
  %929 = load i64, ptr %55, align 8, !tbaa !9
  %930 = getelementptr inbounds double, ptr %928, i64 %929
  %931 = load double, ptr %930, align 8, !tbaa !11
  %932 = load double, ptr %79, align 8, !tbaa !11
  %933 = fdiv double %931, %932
  %934 = load double, ptr %84, align 8, !tbaa !11
  %935 = load double, ptr %61, align 8, !tbaa !11
  %936 = fdiv double %934, %935
  %937 = fcmp ogt double %933, %936
  br i1 %937, label %949, label %938

938:                                              ; preds = %927
  %939 = load double, ptr %78, align 8, !tbaa !11
  %940 = load ptr, ptr %34, align 8, !tbaa !5
  %941 = load i64, ptr %55, align 8, !tbaa !9
  %942 = getelementptr inbounds double, ptr %940, i64 %941
  %943 = load double, ptr %942, align 8, !tbaa !11
  %944 = fdiv double %939, %943
  %945 = load double, ptr %61, align 8, !tbaa !11
  %946 = load double, ptr %84, align 8, !tbaa !11
  %947 = fdiv double %945, %946
  %948 = fcmp ogt double %944, %947
  br i1 %948, label %949, label %999

949:                                              ; preds = %938, %927
  %950 = load ptr, ptr %28, align 8, !tbaa !5
  %951 = load i64, ptr %55, align 8, !tbaa !9
  %952 = load i64, ptr %55, align 8, !tbaa !9
  %953 = add nsw i64 %952, 1
  %954 = load i64, ptr %44, align 8, !tbaa !9
  %955 = mul nsw i64 %953, %954
  %956 = add nsw i64 %951, %955
  %957 = getelementptr inbounds double, ptr %950, i64 %956
  %958 = load double, ptr %957, align 8, !tbaa !11
  %959 = load ptr, ptr %34, align 8, !tbaa !5
  %960 = load i64, ptr %55, align 8, !tbaa !9
  %961 = getelementptr inbounds double, ptr %959, i64 %960
  %962 = load double, ptr %961, align 8, !tbaa !11
  %963 = fdiv double %958, %962
  store double %963, ptr %54, align 8, !tbaa !11
  %964 = load double, ptr %54, align 8, !tbaa !11
  %965 = fcmp oge double %964, 0.000000e+00
  br i1 %965, label %966, label %968

966:                                              ; preds = %949
  %967 = load double, ptr %54, align 8, !tbaa !11
  br label %971

968:                                              ; preds = %949
  %969 = load double, ptr %54, align 8, !tbaa !11
  %970 = fneg double %969
  br label %971

971:                                              ; preds = %968, %966
  %972 = phi double [ %967, %966 ], [ %970, %968 ]
  %973 = load ptr, ptr %40, align 8, !tbaa !5
  %974 = getelementptr inbounds double, ptr %973, i64 1
  store double %972, ptr %974, align 8, !tbaa !11
  %975 = load ptr, ptr %40, align 8, !tbaa !5
  %976 = getelementptr inbounds double, ptr %975, i64 1
  %977 = load double, ptr %976, align 8, !tbaa !11
  %978 = load ptr, ptr %35, align 8, !tbaa !5
  %979 = load i64, ptr %55, align 8, !tbaa !9
  %980 = getelementptr inbounds double, ptr %978, i64 %979
  %981 = load double, ptr %980, align 8, !tbaa !11
  %982 = fmul double %981, %977
  store double %982, ptr %980, align 8, !tbaa !11
  %983 = load ptr, ptr %40, align 8, !tbaa !5
  %984 = getelementptr inbounds double, ptr %983, i64 1
  %985 = load double, ptr %984, align 8, !tbaa !11
  %986 = load ptr, ptr %33, align 8, !tbaa !5
  %987 = load i64, ptr %55, align 8, !tbaa !9
  %988 = getelementptr inbounds double, ptr %986, i64 %987
  %989 = load double, ptr %988, align 8, !tbaa !11
  %990 = fmul double %989, %985
  store double %990, ptr %988, align 8, !tbaa !11
  %991 = load ptr, ptr %40, align 8, !tbaa !5
  %992 = getelementptr inbounds double, ptr %991, i64 1
  %993 = load double, ptr %992, align 8, !tbaa !11
  %994 = load ptr, ptr %34, align 8, !tbaa !5
  %995 = load i64, ptr %55, align 8, !tbaa !9
  %996 = getelementptr inbounds double, ptr %994, i64 %995
  %997 = load double, ptr %996, align 8, !tbaa !11
  %998 = fmul double %997, %993
  store double %998, ptr %996, align 8, !tbaa !11
  br label %999

999:                                              ; preds = %971, %938
  br label %1000

1000:                                             ; preds = %999, %899
  br label %1001

1001:                                             ; preds = %1000, %850
  br label %1002

1002:                                             ; preds = %1001
  %1003 = load i64, ptr %55, align 8, !tbaa !9
  %1004 = add nsw i64 %1003, 1
  store i64 %1004, ptr %55, align 8, !tbaa !9
  br label %846, !llvm.loop !15

1005:                                             ; preds = %846
  br label %1006

1006:                                             ; preds = %1005, %840
  %1007 = load i64, ptr %77, align 8, !tbaa !9
  %1008 = icmp ne i64 %1007, 0
  br i1 %1008, label %1009, label %1099

1009:                                             ; preds = %1006
  %1010 = load ptr, ptr %27, align 8, !tbaa !5
  %1011 = load i64, ptr %1010, align 8, !tbaa !9
  store i64 %1011, ptr %52, align 8, !tbaa !9
  store i64 1, ptr %55, align 8, !tbaa !9
  br label %1012

1012:                                             ; preds = %1095, %1009
  %1013 = load i64, ptr %55, align 8, !tbaa !9
  %1014 = load i64, ptr %52, align 8, !tbaa !9
  %1015 = icmp sle i64 %1013, %1014
  br i1 %1015, label %1016, label %1098

1016:                                             ; preds = %1012
  %1017 = load ptr, ptr %34, align 8, !tbaa !5
  %1018 = load i64, ptr %55, align 8, !tbaa !9
  %1019 = getelementptr inbounds double, ptr %1017, i64 %1018
  %1020 = load double, ptr %1019, align 8, !tbaa !11
  %1021 = fcmp une double %1020, 0.000000e+00
  br i1 %1021, label %1022, label %1094

1022:                                             ; preds = %1016
  %1023 = load ptr, ptr %35, align 8, !tbaa !5
  %1024 = load i64, ptr %55, align 8, !tbaa !9
  %1025 = getelementptr inbounds double, ptr %1023, i64 %1024
  %1026 = load double, ptr %1025, align 8, !tbaa !11
  %1027 = load double, ptr %79, align 8, !tbaa !11
  %1028 = fdiv double %1026, %1027
  %1029 = load double, ptr %85, align 8, !tbaa !11
  %1030 = load double, ptr %62, align 8, !tbaa !11
  %1031 = fdiv double %1029, %1030
  %1032 = fcmp ogt double %1028, %1031
  br i1 %1032, label %1044, label %1033

1033:                                             ; preds = %1022
  %1034 = load double, ptr %78, align 8, !tbaa !11
  %1035 = load ptr, ptr %35, align 8, !tbaa !5
  %1036 = load i64, ptr %55, align 8, !tbaa !9
  %1037 = getelementptr inbounds double, ptr %1035, i64 %1036
  %1038 = load double, ptr %1037, align 8, !tbaa !11
  %1039 = fdiv double %1034, %1038
  %1040 = load double, ptr %62, align 8, !tbaa !11
  %1041 = load double, ptr %85, align 8, !tbaa !11
  %1042 = fdiv double %1040, %1041
  %1043 = fcmp ogt double %1039, %1042
  br i1 %1043, label %1044, label %1093

1044:                                             ; preds = %1033, %1022
  %1045 = load ptr, ptr %30, align 8, !tbaa !5
  %1046 = load i64, ptr %55, align 8, !tbaa !9
  %1047 = load i64, ptr %55, align 8, !tbaa !9
  %1048 = load i64, ptr %46, align 8, !tbaa !9
  %1049 = mul nsw i64 %1047, %1048
  %1050 = add nsw i64 %1046, %1049
  %1051 = getelementptr inbounds double, ptr %1045, i64 %1050
  %1052 = load double, ptr %1051, align 8, !tbaa !11
  %1053 = load ptr, ptr %35, align 8, !tbaa !5
  %1054 = load i64, ptr %55, align 8, !tbaa !9
  %1055 = getelementptr inbounds double, ptr %1053, i64 %1054
  %1056 = load double, ptr %1055, align 8, !tbaa !11
  %1057 = fdiv double %1052, %1056
  store double %1057, ptr %54, align 8, !tbaa !11
  %1058 = load double, ptr %54, align 8, !tbaa !11
  %1059 = fcmp oge double %1058, 0.000000e+00
  br i1 %1059, label %1060, label %1062

1060:                                             ; preds = %1044
  %1061 = load double, ptr %54, align 8, !tbaa !11
  br label %1065

1062:                                             ; preds = %1044
  %1063 = load double, ptr %54, align 8, !tbaa !11
  %1064 = fneg double %1063
  br label %1065

1065:                                             ; preds = %1062, %1060
  %1066 = phi double [ %1061, %1060 ], [ %1064, %1062 ]
  %1067 = load ptr, ptr %40, align 8, !tbaa !5
  %1068 = getelementptr inbounds double, ptr %1067, i64 1
  store double %1066, ptr %1068, align 8, !tbaa !11
  %1069 = load ptr, ptr %40, align 8, !tbaa !5
  %1070 = getelementptr inbounds double, ptr %1069, i64 1
  %1071 = load double, ptr %1070, align 8, !tbaa !11
  %1072 = load ptr, ptr %35, align 8, !tbaa !5
  %1073 = load i64, ptr %55, align 8, !tbaa !9
  %1074 = getelementptr inbounds double, ptr %1072, i64 %1073
  %1075 = load double, ptr %1074, align 8, !tbaa !11
  %1076 = fmul double %1075, %1071
  store double %1076, ptr %1074, align 8, !tbaa !11
  %1077 = load ptr, ptr %40, align 8, !tbaa !5
  %1078 = getelementptr inbounds double, ptr %1077, i64 1
  %1079 = load double, ptr %1078, align 8, !tbaa !11
  %1080 = load ptr, ptr %33, align 8, !tbaa !5
  %1081 = load i64, ptr %55, align 8, !tbaa !9
  %1082 = getelementptr inbounds double, ptr %1080, i64 %1081
  %1083 = load double, ptr %1082, align 8, !tbaa !11
  %1084 = fmul double %1083, %1079
  store double %1084, ptr %1082, align 8, !tbaa !11
  %1085 = load ptr, ptr %40, align 8, !tbaa !5
  %1086 = getelementptr inbounds double, ptr %1085, i64 1
  %1087 = load double, ptr %1086, align 8, !tbaa !11
  %1088 = load ptr, ptr %34, align 8, !tbaa !5
  %1089 = load i64, ptr %55, align 8, !tbaa !9
  %1090 = getelementptr inbounds double, ptr %1088, i64 %1089
  %1091 = load double, ptr %1090, align 8, !tbaa !11
  %1092 = fmul double %1091, %1087
  store double %1092, ptr %1090, align 8, !tbaa !11
  br label %1093

1093:                                             ; preds = %1065, %1033
  br label %1094

1094:                                             ; preds = %1093, %1016
  br label %1095

1095:                                             ; preds = %1094
  %1096 = load i64, ptr %55, align 8, !tbaa !9
  %1097 = add nsw i64 %1096, 1
  store i64 %1097, ptr %55, align 8, !tbaa !9
  br label %1012, !llvm.loop !16

1098:                                             ; preds = %1012
  br label %1099

1099:                                             ; preds = %1098, %1006
  %1100 = load i64, ptr %76, align 8, !tbaa !9
  %1101 = icmp ne i64 %1100, 0
  br i1 %1101, label %1102, label %1120

1102:                                             ; preds = %1099
  %1103 = load ptr, ptr %27, align 8, !tbaa !5
  %1104 = load ptr, ptr %27, align 8, !tbaa !5
  %1105 = load ptr, ptr %28, align 8, !tbaa !5
  %1106 = load i64, ptr %45, align 8, !tbaa !9
  %1107 = getelementptr inbounds double, ptr %1105, i64 %1106
  %1108 = load ptr, ptr %29, align 8, !tbaa !5
  %1109 = call i32 @dlascl_(ptr noundef @.str.15, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %84, ptr noundef %61, ptr noundef %1103, ptr noundef %1104, ptr noundef %1107, ptr noundef %1108, ptr noundef %64)
  %1110 = load ptr, ptr %27, align 8, !tbaa !5
  %1111 = load ptr, ptr %33, align 8, !tbaa !5
  %1112 = getelementptr inbounds double, ptr %1111, i64 1
  %1113 = load ptr, ptr %27, align 8, !tbaa !5
  %1114 = call i32 @dlascl_(ptr noundef @.str.10, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %84, ptr noundef %61, ptr noundef %1110, ptr noundef @c__1, ptr noundef %1112, ptr noundef %1113, ptr noundef %64)
  %1115 = load ptr, ptr %27, align 8, !tbaa !5
  %1116 = load ptr, ptr %34, align 8, !tbaa !5
  %1117 = getelementptr inbounds double, ptr %1116, i64 1
  %1118 = load ptr, ptr %27, align 8, !tbaa !5
  %1119 = call i32 @dlascl_(ptr noundef @.str.10, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %84, ptr noundef %61, ptr noundef %1115, ptr noundef @c__1, ptr noundef %1117, ptr noundef %1118, ptr noundef %64)
  br label %1120

1120:                                             ; preds = %1102, %1099
  %1121 = load i64, ptr %77, align 8, !tbaa !9
  %1122 = icmp ne i64 %1121, 0
  br i1 %1122, label %1123, label %1136

1123:                                             ; preds = %1120
  %1124 = load ptr, ptr %27, align 8, !tbaa !5
  %1125 = load ptr, ptr %27, align 8, !tbaa !5
  %1126 = load ptr, ptr %30, align 8, !tbaa !5
  %1127 = load i64, ptr %47, align 8, !tbaa !9
  %1128 = getelementptr inbounds double, ptr %1126, i64 %1127
  %1129 = load ptr, ptr %31, align 8, !tbaa !5
  %1130 = call i32 @dlascl_(ptr noundef @.str.16, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %85, ptr noundef %62, ptr noundef %1124, ptr noundef %1125, ptr noundef %1128, ptr noundef %1129, ptr noundef %64)
  %1131 = load ptr, ptr %27, align 8, !tbaa !5
  %1132 = load ptr, ptr %35, align 8, !tbaa !5
  %1133 = getelementptr inbounds double, ptr %1132, i64 1
  %1134 = load ptr, ptr %27, align 8, !tbaa !5
  %1135 = call i32 @dlascl_(ptr noundef @.str.10, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %85, ptr noundef %62, ptr noundef %1131, ptr noundef @c__1, ptr noundef %1133, ptr noundef %1134, ptr noundef %64)
  br label %1136

1136:                                             ; preds = %1123, %1120
  %1137 = load i64, ptr %90, align 8, !tbaa !9
  %1138 = icmp ne i64 %1137, 0
  br i1 %1138, label %1139, label %1224

1139:                                             ; preds = %1136
  store i64 1, ptr %86, align 8, !tbaa !9
  store i64 1, ptr %75, align 8, !tbaa !9
  %1140 = load ptr, ptr %32, align 8, !tbaa !5
  store i64 0, ptr %1140, align 8, !tbaa !9
  store i64 0, ptr %56, align 8, !tbaa !9
  %1141 = load ptr, ptr %27, align 8, !tbaa !5
  %1142 = load i64, ptr %1141, align 8, !tbaa !9
  store i64 %1142, ptr %52, align 8, !tbaa !9
  store i64 1, ptr %55, align 8, !tbaa !9
  br label %1143

1143:                                             ; preds = %1220, %1139
  %1144 = load i64, ptr %55, align 8, !tbaa !9
  %1145 = load i64, ptr %52, align 8, !tbaa !9
  %1146 = icmp sle i64 %1144, %1145
  br i1 %1146, label %1147, label %1223

1147:                                             ; preds = %1143
  %1148 = load ptr, ptr %26, align 8, !tbaa !5
  %1149 = load ptr, ptr %33, align 8, !tbaa !5
  %1150 = load i64, ptr %55, align 8, !tbaa !9
  %1151 = getelementptr inbounds double, ptr %1149, i64 %1150
  %1152 = load ptr, ptr %34, align 8, !tbaa !5
  %1153 = load i64, ptr %55, align 8, !tbaa !9
  %1154 = getelementptr inbounds double, ptr %1152, i64 %1153
  %1155 = load ptr, ptr %35, align 8, !tbaa !5
  %1156 = load i64, ptr %55, align 8, !tbaa !9
  %1157 = getelementptr inbounds double, ptr %1155, i64 %1156
  %1158 = call i64 (ptr, ptr, ptr, ...) %1148(ptr noundef %1151, ptr noundef %1154, ptr noundef %1157)
  store i64 %1158, ptr %71, align 8, !tbaa !9
  %1159 = load ptr, ptr %34, align 8, !tbaa !5
  %1160 = load i64, ptr %55, align 8, !tbaa !9
  %1161 = getelementptr inbounds double, ptr %1159, i64 %1160
  %1162 = load double, ptr %1161, align 8, !tbaa !11
  %1163 = fcmp oeq double %1162, 0.000000e+00
  br i1 %1163, label %1164, label %1183

1164:                                             ; preds = %1147
  %1165 = load i64, ptr %71, align 8, !tbaa !9
  %1166 = icmp ne i64 %1165, 0
  br i1 %1166, label %1167, label %1171

1167:                                             ; preds = %1164
  %1168 = load ptr, ptr %32, align 8, !tbaa !5
  %1169 = load i64, ptr %1168, align 8, !tbaa !9
  %1170 = add nsw i64 %1169, 1
  store i64 %1170, ptr %1168, align 8, !tbaa !9
  br label %1171

1171:                                             ; preds = %1167, %1164
  store i64 0, ptr %56, align 8, !tbaa !9
  %1172 = load i64, ptr %71, align 8, !tbaa !9
  %1173 = icmp ne i64 %1172, 0
  br i1 %1173, label %1174, label %1182

1174:                                             ; preds = %1171
  %1175 = load i64, ptr %86, align 8, !tbaa !9
  %1176 = icmp ne i64 %1175, 0
  br i1 %1176, label %1182, label %1177

1177:                                             ; preds = %1174
  %1178 = load ptr, ptr %27, align 8, !tbaa !5
  %1179 = load i64, ptr %1178, align 8, !tbaa !9
  %1180 = add nsw i64 %1179, 2
  %1181 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 %1180, ptr %1181, align 8, !tbaa !9
  br label %1182

1182:                                             ; preds = %1177, %1174, %1171
  br label %1217

1183:                                             ; preds = %1147
  %1184 = load i64, ptr %56, align 8, !tbaa !9
  %1185 = icmp eq i64 %1184, 1
  br i1 %1185, label %1186, label %1215

1186:                                             ; preds = %1183
  %1187 = load i64, ptr %71, align 8, !tbaa !9
  %1188 = icmp ne i64 %1187, 0
  br i1 %1188, label %1192, label %1189

1189:                                             ; preds = %1186
  %1190 = load i64, ptr %86, align 8, !tbaa !9
  %1191 = icmp ne i64 %1190, 0
  br label %1192

1192:                                             ; preds = %1189, %1186
  %1193 = phi i1 [ true, %1186 ], [ %1191, %1189 ]
  %1194 = zext i1 %1193 to i32
  %1195 = sext i32 %1194 to i64
  store i64 %1195, ptr %71, align 8, !tbaa !9
  %1196 = load i64, ptr %71, align 8, !tbaa !9
  store i64 %1196, ptr %86, align 8, !tbaa !9
  %1197 = load i64, ptr %71, align 8, !tbaa !9
  %1198 = icmp ne i64 %1197, 0
  br i1 %1198, label %1199, label %1203

1199:                                             ; preds = %1192
  %1200 = load ptr, ptr %32, align 8, !tbaa !5
  %1201 = load i64, ptr %1200, align 8, !tbaa !9
  %1202 = add nsw i64 %1201, 2
  store i64 %1202, ptr %1200, align 8, !tbaa !9
  br label %1203

1203:                                             ; preds = %1199, %1192
  store i64 -1, ptr %56, align 8, !tbaa !9
  %1204 = load i64, ptr %71, align 8, !tbaa !9
  %1205 = icmp ne i64 %1204, 0
  br i1 %1205, label %1206, label %1214

1206:                                             ; preds = %1203
  %1207 = load i64, ptr %75, align 8, !tbaa !9
  %1208 = icmp ne i64 %1207, 0
  br i1 %1208, label %1214, label %1209

1209:                                             ; preds = %1206
  %1210 = load ptr, ptr %27, align 8, !tbaa !5
  %1211 = load i64, ptr %1210, align 8, !tbaa !9
  %1212 = add nsw i64 %1211, 2
  %1213 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 %1212, ptr %1213, align 8, !tbaa !9
  br label %1214

1214:                                             ; preds = %1209, %1206, %1203
  br label %1216

1215:                                             ; preds = %1183
  store i64 1, ptr %56, align 8, !tbaa !9
  br label %1216

1216:                                             ; preds = %1215, %1214
  br label %1217

1217:                                             ; preds = %1216, %1182
  %1218 = load i64, ptr %86, align 8, !tbaa !9
  store i64 %1218, ptr %75, align 8, !tbaa !9
  %1219 = load i64, ptr %71, align 8, !tbaa !9
  store i64 %1219, ptr %86, align 8, !tbaa !9
  br label %1220

1220:                                             ; preds = %1217
  %1221 = load i64, ptr %55, align 8, !tbaa !9
  %1222 = add nsw i64 %1221, 1
  store i64 %1222, ptr %55, align 8, !tbaa !9
  br label %1143, !llvm.loop !17

1223:                                             ; preds = %1143
  br label %1224

1224:                                             ; preds = %1223, %1136
  br label %1225

1225:                                             ; preds = %1224, %707
  %1226 = load i64, ptr %88, align 8, !tbaa !9
  %1227 = sitofp i64 %1226 to double
  %1228 = load ptr, ptr %40, align 8, !tbaa !5
  %1229 = getelementptr inbounds double, ptr %1228, i64 1
  store double %1227, ptr %1229, align 8, !tbaa !11
  store i32 0, ptr %22, align 4
  store i32 1, ptr %92, align 4
  br label %1230

1230:                                             ; preds = %1225, %374, %368, %360
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  %1231 = load i32, ptr %22, align 4
  ret i32 %1231
}

; 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 i32 @dlabad_(ptr noundef, ptr noundef) #2

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

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

declare 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 @dtgsen_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, 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 "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind }

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

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


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

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.3 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@c__0 = external hidden global i64, align 8
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@c_n1 = external hidden global i64, align 8
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [7 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 [5 x i8], align 1
@c_b38 = external hidden global double, align 8
@c_b39 = external hidden global double, align 8
@.str.14 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [2 x i8], align 1

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

56:                                               ; preds = %21
  store i64 0, ptr %34, align 8, !tbaa !5
  br label %61

57:                                               ; preds = %21
  %58 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #5
  %.not472 = icmp eq i64 %58, 0
  br i1 %.not472, label %60, label %59

59:                                               ; preds = %57
  store i64 1, ptr %34, align 8, !tbaa !5
  br label %61

60:                                               ; preds = %57
  store i64 0, ptr %34, align 8, !tbaa !5
  br label %61

61:                                               ; preds = %59, %60, %56
  %.not477 = phi i1 [ false, %56 ], [ true, %59 ], [ false, %60 ]
  %.not481 = phi i1 [ true, %56 ], [ false, %59 ], [ true, %60 ]
  %62 = phi i1 [ false, %56 ], [ false, %59 ], [ true, %60 ]
  %63 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #5
  %.not473 = icmp eq i64 %63, 0
  br i1 %.not473, label %65, label %64

64:                                               ; preds = %61
  store i64 0, ptr %35, align 8, !tbaa !5
  br label %69

65:                                               ; preds = %61
  %66 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #5
  %.not474 = icmp eq i64 %66, 0
  br i1 %.not474, label %68, label %67

67:                                               ; preds = %65
  store i64 1, ptr %35, align 8, !tbaa !5
  br label %69

68:                                               ; preds = %65
  store i64 0, ptr %35, align 8, !tbaa !5
  br label %69

69:                                               ; preds = %67, %68, %64
  %.not478 = phi i1 [ false, %64 ], [ true, %67 ], [ false, %68 ]
  %70 = phi i1 [ false, %64 ], [ false, %67 ], [ true, %68 ]
  %71 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.2) #5
  store i64 0, ptr %20, align 8, !tbaa !5
  %72 = load i64, ptr %18, align 8, !tbaa !5
  %73 = icmp eq i64 %72, -1
  %brmerge = or i1 %62, %70
  %.mux = select i1 %62, i64 -1, i64 -2
  br i1 %brmerge, label %.thread510.sink.split, label %74

74:                                               ; preds = %69
  %.not475 = icmp eq i64 %71, 0
  br i1 %.not475, label %75, label %77

75:                                               ; preds = %74
  %76 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str) #5
  %.not476 = icmp eq i64 %76, 0
  br i1 %.not476, label %.thread510.sink.split, label %77

77:                                               ; preds = %75, %74
  %78 = load i64, ptr %4, align 8, !tbaa !5
  %79 = icmp slt i64 %78, 0
  br i1 %79, label %.thread510.sink.split, label %80

80:                                               ; preds = %77
  %81 = load i64, ptr %6, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %78, i64 1)
  %82 = icmp slt i64 %81, %spec.select
  br i1 %82, label %.thread510.sink.split, label %83

83:                                               ; preds = %80
  %84 = load i64, ptr %8, align 8, !tbaa !5
  %85 = icmp slt i64 %84, %spec.select
  br i1 %85, label %.thread510.sink.split, label %86

86:                                               ; preds = %83
  %87 = load i64, ptr %14, align 8, !tbaa !5
  %88 = icmp slt i64 %87, 1
  %89 = icmp ult i64 %87, %78
  %or.cond530 = and i1 %89, %.not477
  %or.cond567 = or i1 %88, %or.cond530
  br i1 %or.cond567, label %.thread510.sink.split, label %90

90:                                               ; preds = %86
  %91 = load i64, ptr %16, align 8, !tbaa !5
  %92 = icmp slt i64 %91, 1
  %93 = icmp ult i64 %91, %78
  %or.cond531 = and i1 %93, %.not478
  %or.cond568 = or i1 %92, %or.cond531
  br i1 %or.cond568, label %.thread510.sink.split, label %94

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

96:                                               ; preds = %94
  %.not566 = icmp eq i64 %78, 0
  br i1 %.not566, label %119, label %97

97:                                               ; preds = %96
  %98 = shl i64 %78, 3
  %99 = mul nuw nsw i64 %78, 6
  %100 = add nuw nsw i64 %99, 16
  %101 = tail call i64 @llvm.smax.i64(i64 %98, i64 %100)
  %102 = sub nsw i64 %101, %78
  %103 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef nonnull %4, ptr noundef nonnull @c__0) #5
  %104 = mul nsw i64 %103, %78
  %105 = add nsw i64 %102, %104
  store i64 %105, ptr %22, align 8, !tbaa !5
  %106 = load i64, ptr %4, align 8, !tbaa !5
  %107 = sub nsw i64 %101, %106
  %108 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.4, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef nonnull %4, ptr noundef nonnull @c_n1) #5
  %109 = mul nsw i64 %108, %106
  %110 = add nsw i64 %109, %107
  store i64 %110, ptr %23, align 8, !tbaa !5
  %111 = tail call i64 @llvm.smax.i64(i64 %105, i64 %110)
  br i1 %.not481, label %119, label %112

112:                                              ; preds = %97
  store i64 %111, ptr %22, align 8, !tbaa !5
  %113 = load i64, ptr %4, align 8, !tbaa !5
  %114 = sub nsw i64 %101, %113
  %115 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.4, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef nonnull %4, ptr noundef nonnull @c_n1) #5
  %116 = mul nsw i64 %115, %113
  %117 = add nsw i64 %116, %114
  store i64 %117, ptr %23, align 8, !tbaa !5
  %118 = tail call i64 @llvm.smax.i64(i64 %111, i64 %117)
  br label %119

119:                                              ; preds = %96, %97, %112
  %.0439 = phi i64 [ %101, %112 ], [ %101, %97 ], [ 1, %96 ]
  %.0438 = phi i64 [ %118, %112 ], [ %111, %97 ], [ 1, %96 ]
  %120 = sitofp i64 %.0438 to double
  store double %120, ptr %17, align 8, !tbaa !9
  %121 = load i64, ptr %18, align 8, !tbaa !5
  %122 = icmp sge i64 %121, %.0439
  %or.cond = select i1 %122, i1 true, i1 %73
  br i1 %or.cond, label %.thread, label %.thread510.sink.split

.thread:                                          ; preds = %119
  %.pr507.pr = load i64, ptr %20, align 8, !tbaa !5
  %.not483 = icmp eq i64 %.pr507.pr, 0
  br i1 %.not483, label %126, label %.thread510

.thread510.sink.split:                            ; preds = %69, %119, %90, %86, %83, %80, %77, %75
  %.sink = phi i64 [ %.mux, %69 ], [ -3, %75 ], [ -5, %77 ], [ -7, %80 ], [ -9, %83 ], [ -15, %86 ], [ -17, %90 ], [ -19, %119 ]
  store i64 %.sink, ptr %20, align 8, !tbaa !5
  br label %.thread510

.thread510:                                       ; preds = %.thread510.sink.split, %94, %.thread
  %123 = phi i64 [ %.pr507.pr, %.thread ], [ %.pr, %94 ], [ %.sink, %.thread510.sink.split ]
  %124 = sub nsw i64 0, %123
  store i64 %124, ptr %22, align 8, !tbaa !5
  %125 = call i32 @xerbla_(ptr noundef nonnull @.str.7, ptr noundef nonnull %22) #5
  br label %397

126:                                              ; preds = %.thread
  br i1 %73, label %397, label %127

127:                                              ; preds = %126
  %128 = load i64, ptr %4, align 8, !tbaa !5
  %129 = icmp eq i64 %128, 0
  br i1 %129, label %130, label %131

130:                                              ; preds = %127
  store i64 0, ptr %9, align 8, !tbaa !5
  br label %397

131:                                              ; preds = %127
  %132 = tail call double @dlamch_(ptr noundef nonnull @.str.8) #5
  %133 = tail call double @dlamch_(ptr noundef nonnull @.str.2) #5
  store double %133, ptr %37, align 8, !tbaa !9
  %134 = fdiv double 1.000000e+00, %133
  store double %134, ptr %38, align 8, !tbaa !9
  %135 = call i32 @dlabad_(ptr noundef nonnull %37, ptr noundef nonnull %38) #5
  %136 = load double, ptr %37, align 8, !tbaa !9
  %137 = call double @sqrt(double noundef %136) #5
  %138 = fdiv double %137, %132
  %139 = fdiv double 1.000000e+00, %138
  %140 = call double @dlange_(ptr noundef nonnull @.str.9, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %17) #5
  store double %140, ptr %27, align 8, !tbaa !9
  %141 = fcmp ogt double %140, 0.000000e+00
  %142 = fcmp olt double %140, %138
  %or.cond501 = select i1 %141, i1 %142, i1 false
  br i1 %or.cond501, label %145, label %143

143:                                              ; preds = %131
  %144 = fcmp ogt double %140, %139
  br i1 %144, label %145, label %147

145:                                              ; preds = %143, %131
  %storemerge = phi double [ %138, %131 ], [ %139, %143 ]
  store double %storemerge, ptr %39, align 8, !tbaa !9
  %146 = call i32 @dlascl_(ptr noundef nonnull @.str.10, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %27, ptr noundef nonnull %39, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %30) #5
  br label %147

147:                                              ; preds = %143, %145
  %.not484517 = phi i1 [ false, %145 ], [ true, %143 ]
  %148 = call double @dlange_(ptr noundef nonnull @.str.9, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull %17) #5
  store double %148, ptr %28, align 8, !tbaa !9
  %149 = fcmp ogt double %148, 0.000000e+00
  %150 = fcmp olt double %148, %138
  %or.cond502 = select i1 %149, i1 %150, i1 false
  br i1 %or.cond502, label %153, label %151

151:                                              ; preds = %147
  %152 = fcmp ogt double %148, %139
  br i1 %152, label %153, label %155

153:                                              ; preds = %151, %147
  %storemerge532 = phi double [ %138, %147 ], [ %139, %151 ]
  store double %storemerge532, ptr %40, align 8, !tbaa !9
  %154 = call i32 @dlascl_(ptr noundef nonnull @.str.10, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %28, ptr noundef nonnull %40, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull %30) #5
  br label %155

155:                                              ; preds = %151, %153
  %.not485522 = phi i1 [ false, %153 ], [ true, %151 ]
  %156 = load i64, ptr %4, align 8, !tbaa !5
  %reass.add = shl i64 %156, 1
  %157 = or disjoint i64 %reass.add, 1
  %158 = getelementptr double, ptr %17, i64 %156
  %159 = getelementptr double, ptr %17, i64 %reass.add
  %160 = call i32 @dggbal_(ptr noundef nonnull @.str.8, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull %26, ptr noundef nonnull %25, ptr noundef nonnull %17, ptr noundef %158, ptr noundef %159, ptr noundef nonnull %30) #5
  %161 = load i64, ptr %25, align 8, !tbaa !5
  %162 = add nsw i64 %161, 1
  %163 = load i64, ptr %26, align 8, !tbaa !5
  %164 = sub i64 %162, %163
  store i64 %164, ptr %36, align 8, !tbaa !5
  %165 = load i64, ptr %4, align 8, !tbaa !5
  %reass.sub = sub i64 %165, %163
  %166 = add i64 %reass.sub, 1
  store i64 %166, ptr %33, align 8, !tbaa !5
  %167 = add nsw i64 %164, %157
  %168 = load i64, ptr %18, align 8, !tbaa !5
  %reass.sub560 = sub i64 %168, %167
  %169 = add i64 %reass.sub560, 1
  store i64 %169, ptr %22, align 8, !tbaa !5
  %170 = add i64 %44, 1
  %171 = mul i64 %163, %170
  %172 = getelementptr inbounds double, ptr %46, i64 %171
  %173 = getelementptr inbounds double, ptr %53, i64 %167
  %174 = call i32 @dgeqrf_(ptr noundef nonnull %36, ptr noundef nonnull %33, ptr noundef %172, ptr noundef nonnull %8, ptr noundef %159, ptr noundef nonnull %173, ptr noundef nonnull %22, ptr noundef nonnull %30) #5
  %175 = load i64, ptr %18, align 8, !tbaa !5
  %reass.sub561 = sub i64 %175, %167
  %176 = add i64 %reass.sub561, 1
  store i64 %176, ptr %22, align 8, !tbaa !5
  %177 = load i64, ptr %26, align 8, !tbaa !5
  %178 = mul i64 %177, %170
  %179 = getelementptr inbounds double, ptr %46, i64 %178
  %180 = add i64 %41, 1
  %181 = mul i64 %177, %180
  %182 = getelementptr inbounds double, ptr %43, i64 %181
  %183 = call i32 @dormqr_(ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.12, ptr noundef nonnull %36, ptr noundef nonnull %33, ptr noundef nonnull %36, ptr noundef %179, ptr noundef nonnull %8, ptr noundef %159, ptr noundef %182, ptr noundef nonnull %6, ptr noundef nonnull %173, ptr noundef nonnull %22, ptr noundef nonnull %30) #5
  %184 = load i64, ptr %34, align 8, !tbaa !5
  %.not486 = icmp eq i64 %184, 0
  br i1 %.not486, label %208, label %185

185:                                              ; preds = %155
  %186 = call i32 @dlaset_(ptr noundef nonnull @.str.13, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef nonnull @c_b38, ptr noundef nonnull @c_b39, ptr noundef %13, ptr noundef nonnull %14) #5
  %187 = load i64, ptr %36, align 8, !tbaa !5
  %188 = icmp sgt i64 %187, 1
  br i1 %188, label %189, label %200

189:                                              ; preds = %185
  %190 = add nsw i64 %187, -1
  store i64 %190, ptr %22, align 8, !tbaa !5
  store i64 %190, ptr %23, align 8, !tbaa !5
  %191 = load i64, ptr %26, align 8, !tbaa !5
  %192 = add nsw i64 %191, 1
  %193 = mul nsw i64 %191, %44
  %194 = getelementptr double, ptr %46, i64 %192
  %195 = getelementptr double, ptr %194, i64 %193
  %196 = mul nsw i64 %191, %50
  %197 = getelementptr double, ptr %52, i64 %192
  %198 = getelementptr double, ptr %197, i64 %196
  %199 = call i32 @dlacpy_(ptr noundef nonnull @.str.11, ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef %195, ptr noundef nonnull %8, ptr noundef %198, ptr noundef nonnull %14) #5
  br label %200

200:                                              ; preds = %189, %185
  %201 = load i64, ptr %18, align 8, !tbaa !5
  %reass.sub562 = sub i64 %201, %167
  %202 = add i64 %reass.sub562, 1
  store i64 %202, ptr %22, align 8, !tbaa !5
  %203 = load i64, ptr %26, align 8, !tbaa !5
  %204 = add i64 %50, 1
  %205 = mul i64 %203, %204
  %206 = getelementptr inbounds double, ptr %52, i64 %205
  %207 = call i32 @dorgqr_(ptr noundef nonnull %36, ptr noundef nonnull %36, ptr noundef nonnull %36, ptr noundef %206, ptr noundef nonnull %14, ptr noundef %159, ptr noundef nonnull %173, ptr noundef nonnull %22, ptr noundef nonnull %30) #5
  br label %208

208:                                              ; preds = %200, %155
  %209 = load i64, ptr %35, align 8, !tbaa !5
  %.not487 = icmp eq i64 %209, 0
  br i1 %.not487, label %212, label %210

210:                                              ; preds = %208
  %211 = call i32 @dlaset_(ptr noundef nonnull @.str.13, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef nonnull @c_b38, ptr noundef nonnull @c_b39, ptr noundef %15, ptr noundef nonnull %16) #5
  br label %212

212:                                              ; preds = %210, %208
  %213 = call i32 @dgghrd_(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %4, ptr noundef nonnull %26, ptr noundef nonnull %25, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %13, ptr noundef nonnull %14, ptr noundef %15, ptr noundef nonnull %16, ptr noundef nonnull %30) #5
  %214 = load i64, ptr %18, align 8, !tbaa !5
  %reass.sub563 = sub i64 %214, %157
  %215 = add i64 %reass.sub563, 1
  store i64 %215, ptr %22, align 8, !tbaa !5
  %216 = call i32 @dhgeqz_(ptr noundef nonnull @.str.2, ptr noundef %0, ptr noundef %1, ptr noundef nonnull %4, ptr noundef nonnull %26, ptr noundef nonnull %25, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef nonnull %14, ptr noundef %15, ptr noundef nonnull %16, ptr noundef %159, ptr noundef nonnull %22, ptr noundef nonnull %30) #5
  %217 = load i64, ptr %30, align 8, !tbaa !5
  %.not488 = icmp eq i64 %217, 0
  br i1 %.not488, label %227, label %218

218:                                              ; preds = %212
  %219 = icmp slt i64 %217, 1
  %.pre = load i64, ptr %4, align 8, !tbaa !5
  %.not498 = icmp sgt i64 %217, %.pre
  %or.cond569 = select i1 %219, i1 true, i1 %.not498
  br i1 %or.cond569, label %220, label %.loopexit.sink.split

220:                                              ; preds = %218
  %221 = icmp sle i64 %217, %.pre
  %222 = shl i64 %.pre, 1
  %.not499 = icmp sgt i64 %217, %222
  %or.cond503 = or i1 %221, %.not499
  br i1 %or.cond503, label %225, label %223

223:                                              ; preds = %220
  %224 = sub nsw i64 %217, %.pre
  br label %.loopexit.sink.split

225:                                              ; preds = %220
  %226 = add nsw i64 %.pre, 1
  br label %.loopexit.sink.split

227:                                              ; preds = %212
  store i64 0, ptr %9, align 8, !tbaa !5
  br i1 %.not475, label %252, label %228

228:                                              ; preds = %227
  br i1 %.not484517, label %232, label %229

229:                                              ; preds = %228
  %230 = call i32 @dlascl_(ptr noundef nonnull @.str.10, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %39, ptr noundef nonnull %27, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef %10, ptr noundef nonnull %4, ptr noundef nonnull %30) #5
  %231 = call i32 @dlascl_(ptr noundef nonnull @.str.10, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %39, ptr noundef nonnull %27, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef %11, ptr noundef nonnull %4, ptr noundef nonnull %30) #5
  br label %232

232:                                              ; preds = %229, %228
  br i1 %.not485522, label %235, label %233

233:                                              ; preds = %232
  %234 = call i32 @dlascl_(ptr noundef nonnull @.str.10, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %40, ptr noundef nonnull %28, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef %12, ptr noundef nonnull %4, ptr noundef nonnull %30) #5
  br label %235

235:                                              ; preds = %233, %232
  %236 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %236, ptr %22, align 8, !tbaa !5
  %.not490539 = icmp slt i64 %236, 1
  br i1 %.not490539, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %235, %.lr.ph
  %.0450540 = phi i64 [ %242, %.lr.ph ], [ 1, %235 ]
  %237 = getelementptr inbounds double, ptr %47, i64 %.0450540
  %238 = getelementptr inbounds double, ptr %48, i64 %.0450540
  %239 = getelementptr inbounds double, ptr %49, i64 %.0450540
  %240 = call i64 (ptr, ptr, ptr, ...) %3(ptr noundef nonnull %237, ptr noundef nonnull %238, ptr noundef nonnull %239) #5
  %241 = getelementptr inbounds i64, ptr %54, i64 %.0450540
  store i64 %240, ptr %241, align 8, !tbaa !5
  %242 = add nuw nsw i64 %.0450540, 1
  %243 = load i64, ptr %22, align 8, !tbaa !5
  %.not490.not = icmp slt i64 %.0450540, %243
  br i1 %.not490.not, label %.lr.ph, label %._crit_edge, !llvm.loop !11

._crit_edge:                                      ; preds = %.lr.ph, %235
  %244 = load i64, ptr %18, align 8, !tbaa !5
  %reass.sub564 = sub i64 %244, %157
  %245 = add i64 %reass.sub564, 1
  store i64 %245, ptr %22, align 8, !tbaa !5
  %246 = call i32 @dtgsen_(ptr noundef nonnull @c__0, ptr noundef nonnull %34, ptr noundef nonnull %35, ptr noundef %19, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef nonnull %14, ptr noundef %15, ptr noundef nonnull %16, ptr noundef nonnull %9, ptr noundef nonnull %31, ptr noundef nonnull %32, ptr noundef nonnull %24, ptr noundef %159, ptr noundef nonnull %22, ptr noundef nonnull %29, ptr noundef nonnull @c__1, ptr noundef nonnull %30) #5
  %247 = load i64, ptr %30, align 8, !tbaa !5
  %248 = icmp eq i64 %247, 1
  br i1 %248, label %249, label %252

249:                                              ; preds = %._crit_edge
  %250 = load i64, ptr %4, align 8, !tbaa !5
  %251 = add nsw i64 %250, 3
  store i64 %251, ptr %20, align 8, !tbaa !5
  br label %252

252:                                              ; preds = %._crit_edge, %249, %227
  %253 = load i64, ptr %34, align 8, !tbaa !5
  %.not491 = icmp eq i64 %253, 0
  br i1 %.not491, label %256, label %254

254:                                              ; preds = %252
  %255 = call i32 @dggbak_(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.11, ptr noundef nonnull %4, ptr noundef nonnull %26, ptr noundef nonnull %25, ptr noundef nonnull %17, ptr noundef %158, ptr noundef nonnull %4, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %30) #5
  br label %256

256:                                              ; preds = %254, %252
  %257 = load i64, ptr %35, align 8, !tbaa !5
  %.not492 = icmp eq i64 %257, 0
  br i1 %.not492, label %260, label %258

258:                                              ; preds = %256
  %259 = call i32 @dggbak_(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.14, ptr noundef nonnull %4, ptr noundef nonnull %26, ptr noundef nonnull %25, ptr noundef nonnull %17, ptr noundef %158, ptr noundef nonnull %4, ptr noundef %15, ptr noundef nonnull %16, ptr noundef nonnull %30) #5
  br label %260

260:                                              ; preds = %258, %256
  br i1 %.not484517, label %.loopexit538, label %261

261:                                              ; preds = %260
  %262 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %262, ptr %22, align 8, !tbaa !5
  %.not493541 = icmp slt i64 %262, 1
  br i1 %.not493541, label %.loopexit538, label %.lr.ph544

.lr.ph544:                                        ; preds = %261
  %263 = load double, ptr %38, align 8
  %264 = load double, ptr %39, align 8
  %265 = load double, ptr %27, align 8
  %266 = load double, ptr %37, align 8
  %267 = insertelement <2 x double> poison, double %265, i64 0
  %268 = insertelement <2 x double> %267, double %264, i64 1
  %269 = insertelement <2 x double> poison, double %264, i64 0
  %270 = insertelement <2 x double> %269, double %265, i64 1
  %271 = fdiv <2 x double> %268, %270
  %272 = insertelement <2 x double> poison, double %266, i64 0
  %273 = insertelement <2 x double> poison, double %263, i64 1
  br label %274

274:                                              ; preds = %.lr.ph544, %315
  %.1451542 = phi i64 [ 1, %.lr.ph544 ], [ %316, %315 ]
  %275 = getelementptr inbounds double, ptr %48, i64 %.1451542
  %276 = load double, ptr %275, align 8, !tbaa !9
  %277 = fcmp une double %276, 0.000000e+00
  br i1 %277, label %278, label %315

278:                                              ; preds = %274
  %279 = getelementptr inbounds double, ptr %47, i64 %.1451542
  %280 = load double, ptr %279, align 8, !tbaa !9
  %281 = insertelement <2 x double> %272, double %280, i64 1
  %282 = insertelement <2 x double> %273, double %280, i64 0
  %283 = fdiv <2 x double> %281, %282
  %284 = fcmp ogt <2 x double> %283, %271
  %285 = extractelement <2 x i1> %284, i64 0
  %286 = extractelement <2 x i1> %284, i64 1
  %or.cond557 = select i1 %286, i1 true, i1 %285
  br i1 %or.cond557, label %287, label %290

287:                                              ; preds = %278
  %288 = mul i64 %.1451542, %180
  %289 = getelementptr inbounds double, ptr %43, i64 %288
  br label %.sink.split

290:                                              ; preds = %278
  %291 = insertelement <2 x double> %272, double %276, i64 1
  %292 = insertelement <2 x double> %273, double %276, i64 0
  %293 = fdiv <2 x double> %291, %292
  %294 = fcmp ogt <2 x double> %293, %271
  %shift = shufflevector <2 x i1> %294, <2 x i1> poison, <2 x i32> <i32 1, i32 poison>
  %295 = or <2 x i1> %shift, %294
  %or.cond505 = extractelement <2 x i1> %295, i64 0
  br i1 %or.cond505, label %296, label %315

296:                                              ; preds = %290
  %297 = add nuw nsw i64 %.1451542, 1
  %298 = mul nsw i64 %297, %41
  %299 = getelementptr double, ptr %43, i64 %.1451542
  %300 = getelementptr double, ptr %299, i64 %298
  br label %.sink.split

.sink.split:                                      ; preds = %287, %296
  %.sink589 = phi ptr [ %300, %296 ], [ %289, %287 ]
  %.sink588 = phi double [ %276, %296 ], [ %280, %287 ]
  %301 = load double, ptr %.sink589, align 8, !tbaa !9
  %302 = fdiv double %301, %.sink588
  %303 = fcmp oge double %302, 0.000000e+00
  %304 = fneg double %302
  %305 = select i1 %303, double %302, double %304
  store double %305, ptr %17, align 8, !tbaa !9
  %306 = getelementptr inbounds double, ptr %49, i64 %.1451542
  %307 = load double, ptr %306, align 8, !tbaa !9
  %308 = fmul double %307, %305
  store double %308, ptr %306, align 8, !tbaa !9
  %309 = load double, ptr %17, align 8, !tbaa !9
  %310 = load double, ptr %279, align 8, !tbaa !9
  %311 = fmul double %309, %310
  store double %311, ptr %279, align 8, !tbaa !9
  %312 = load double, ptr %17, align 8, !tbaa !9
  %313 = load double, ptr %275, align 8, !tbaa !9
  %314 = fmul double %312, %313
  store double %314, ptr %275, align 8, !tbaa !9
  br label %315

315:                                              ; preds = %.sink.split, %290, %274
  %316 = add nuw i64 %.1451542, 1
  %exitcond.not = icmp eq i64 %.1451542, %262
  br i1 %exitcond.not, label %.loopexit538, label %274, !llvm.loop !13

.loopexit538:                                     ; preds = %315, %261, %260
  br i1 %.not485522, label %.loopexit537, label %317

317:                                              ; preds = %.loopexit538
  %318 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %318, ptr %22, align 8, !tbaa !5
  %.not494545 = icmp slt i64 %318, 1
  br i1 %.not494545, label %.loopexit537, label %.lr.ph548

.lr.ph548:                                        ; preds = %317
  %319 = load double, ptr %38, align 8
  %320 = load double, ptr %40, align 8
  %321 = load double, ptr %28, align 8
  %322 = load double, ptr %37, align 8
  %323 = insertelement <2 x double> poison, double %320, i64 0
  %324 = insertelement <2 x double> %323, double %321, i64 1
  %325 = insertelement <2 x double> poison, double %321, i64 0
  %326 = insertelement <2 x double> %325, double %320, i64 1
  %327 = fdiv <2 x double> %324, %326
  %328 = insertelement <2 x double> poison, double %319, i64 0
  br label %329

329:                                              ; preds = %.lr.ph548, %360
  %.2546 = phi i64 [ 1, %.lr.ph548 ], [ %361, %360 ]
  %330 = getelementptr inbounds double, ptr %48, i64 %.2546
  %331 = load double, ptr %330, align 8, !tbaa !9
  %332 = fcmp une double %331, 0.000000e+00
  br i1 %332, label %333, label %360

333:                                              ; preds = %329
  %334 = getelementptr inbounds double, ptr %49, i64 %.2546
  %335 = load double, ptr %334, align 8, !tbaa !9
  %336 = insertelement <2 x double> poison, double %335, i64 0
  %337 = insertelement <2 x double> %336, double %322, i64 1
  %338 = insertelement <2 x double> %328, double %335, i64 1
  %339 = fdiv <2 x double> %337, %338
  %340 = fcmp ogt <2 x double> %339, %327
  %341 = extractelement <2 x i1> %340, i64 0
  %342 = extractelement <2 x i1> %340, i64 1
  %or.cond559 = select i1 %341, i1 true, i1 %342
  br i1 %or.cond559, label %343, label %360

343:                                              ; preds = %333
  %344 = mul i64 %.2546, %170
  %345 = getelementptr inbounds double, ptr %46, i64 %344
  %346 = load double, ptr %345, align 8, !tbaa !9
  %347 = fdiv double %346, %335
  %348 = fcmp oge double %347, 0.000000e+00
  %349 = fneg double %347
  %350 = select i1 %348, double %347, double %349
  store double %350, ptr %17, align 8, !tbaa !9
  %351 = load double, ptr %334, align 8, !tbaa !9
  %352 = fmul double %351, %350
  store double %352, ptr %334, align 8, !tbaa !9
  %353 = load double, ptr %17, align 8, !tbaa !9
  %354 = getelementptr inbounds double, ptr %47, i64 %.2546
  %355 = load double, ptr %354, align 8, !tbaa !9
  %356 = fmul double %353, %355
  store double %356, ptr %354, align 8, !tbaa !9
  %357 = load double, ptr %17, align 8, !tbaa !9
  %358 = load double, ptr %330, align 8, !tbaa !9
  %359 = fmul double %357, %358
  store double %359, ptr %330, align 8, !tbaa !9
  br label %360

360:                                              ; preds = %333, %329, %343
  %361 = add nuw i64 %.2546, 1
  %exitcond565.not = icmp eq i64 %.2546, %318
  br i1 %exitcond565.not, label %.loopexit537, label %329, !llvm.loop !14

.loopexit537:                                     ; preds = %360, %317, %.loopexit538
  br i1 %.not484517, label %366, label %362

362:                                              ; preds = %.loopexit537
  %363 = call i32 @dlascl_(ptr noundef nonnull @.str.15, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %39, ptr noundef nonnull %27, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %30) #5
  %364 = call i32 @dlascl_(ptr noundef nonnull @.str.10, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %39, ptr noundef nonnull %27, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef %10, ptr noundef nonnull %4, ptr noundef nonnull %30) #5
  %365 = call i32 @dlascl_(ptr noundef nonnull @.str.10, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %39, ptr noundef nonnull %27, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef %11, ptr noundef nonnull %4, ptr noundef nonnull %30) #5
  br label %366

366:                                              ; preds = %362, %.loopexit537
  br i1 %.not485522, label %370, label %367

367:                                              ; preds = %366
  %368 = call i32 @dlascl_(ptr noundef nonnull @.str.16, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %40, ptr noundef nonnull %28, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull %30) #5
  %369 = call i32 @dlascl_(ptr noundef nonnull @.str.10, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %40, ptr noundef nonnull %28, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef %12, ptr noundef nonnull %4, ptr noundef nonnull %30) #5
  br label %370

370:                                              ; preds = %367, %366
  br i1 %.not475, label %.loopexit, label %371

371:                                              ; preds = %370
  store i64 0, ptr %9, align 8, !tbaa !5
  %372 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %372, ptr %22, align 8, !tbaa !5
  %.not495549 = icmp slt i64 %372, 1
  br i1 %.not495549, label %.loopexit, label %.lr.ph555

.lr.ph555:                                        ; preds = %371, %.thread523
  %.0440553 = phi i64 [ %.0447, %.thread523 ], [ 1, %371 ]
  %.0446552 = phi i64 [ %.1441, %.thread523 ], [ 1, %371 ]
  %.0448551 = phi i64 [ %.1449, %.thread523 ], [ 0, %371 ]
  %.3550 = phi i64 [ %395, %.thread523 ], [ 1, %371 ]
  %373 = getelementptr inbounds double, ptr %47, i64 %.3550
  %374 = getelementptr inbounds double, ptr %48, i64 %.3550
  %375 = getelementptr inbounds double, ptr %49, i64 %.3550
  %376 = call i64 (ptr, ptr, ptr, ...) %3(ptr noundef nonnull %373, ptr noundef nonnull %374, ptr noundef nonnull %375) #5
  %377 = load double, ptr %374, align 8, !tbaa !9
  %378 = fcmp oeq double %377, 0.000000e+00
  br i1 %378, label %379, label %383

379:                                              ; preds = %.lr.ph555
  %.not497 = icmp eq i64 %376, 0
  br i1 %.not497, label %.thread523, label %380

380:                                              ; preds = %379
  %381 = load i64, ptr %9, align 8, !tbaa !5
  %382 = add nsw i64 %381, 1
  store i64 %382, ptr %9, align 8, !tbaa !5
  %.not533 = icmp eq i64 %.0440553, 0
  br i1 %.not533, label %.thread523.sink.split, label %.thread523

383:                                              ; preds = %.lr.ph555
  %384 = icmp eq i64 %.0448551, 1
  br i1 %384, label %385, label %.thread523

385:                                              ; preds = %383
  %386 = icmp ne i64 %376, 0
  %387 = icmp ne i64 %.0440553, 0
  %388 = select i1 %386, i1 true, i1 %387
  br i1 %388, label %389, label %.thread523

389:                                              ; preds = %385
  %390 = load i64, ptr %9, align 8, !tbaa !5
  %391 = add nsw i64 %390, 2
  store i64 %391, ptr %9, align 8, !tbaa !5
  %392 = icmp eq i64 %.0446552, 0
  br i1 %392, label %.thread523.sink.split, label %.thread523

.thread523.sink.split:                            ; preds = %389, %380
  %.1449.ph = phi i64 [ 0, %380 ], [ -1, %389 ]
  %.0447.ph = phi i64 [ %376, %380 ], [ 1, %389 ]
  %.1441.ph = phi i64 [ 0, %380 ], [ 1, %389 ]
  %393 = load i64, ptr %4, align 8, !tbaa !5
  %394 = add nsw i64 %393, 2
  store i64 %394, ptr %20, align 8, !tbaa !5
  br label %.thread523

.thread523:                                       ; preds = %.thread523.sink.split, %385, %379, %383, %389, %380
  %.1449 = phi i64 [ 0, %380 ], [ -1, %389 ], [ 1, %383 ], [ 0, %379 ], [ -1, %385 ], [ %.1449.ph, %.thread523.sink.split ]
  %.0447 = phi i64 [ %376, %380 ], [ 1, %389 ], [ %376, %383 ], [ 0, %379 ], [ 0, %385 ], [ %.0447.ph, %.thread523.sink.split ]
  %.1441 = phi i64 [ %.0440553, %380 ], [ 1, %389 ], [ %.0440553, %383 ], [ %.0440553, %379 ], [ 0, %385 ], [ %.1441.ph, %.thread523.sink.split ]
  %395 = add nuw nsw i64 %.3550, 1
  %396 = load i64, ptr %22, align 8, !tbaa !5
  %.not495.not = icmp slt i64 %.3550, %396
  br i1 %.not495.not, label %.lr.ph555, label %.loopexit, !llvm.loop !15

.loopexit.sink.split:                             ; preds = %218, %223, %225
  %.sink592 = phi i64 [ %226, %225 ], [ %224, %223 ], [ %217, %218 ]
  store i64 %.sink592, ptr %20, align 8, !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %.thread523, %.loopexit.sink.split, %371, %370
  store double %120, ptr %17, align 8, !tbaa !9
  br label %397

397:                                              ; preds = %126, %.loopexit, %130, %.thread510
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #5
  ret i32 0
}

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

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

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

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

declare 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 @dtgsen_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, 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) #4

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

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

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

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


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