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

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

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@c__0 = external hidden global i64, align 8
@.str.7 = external hidden unnamed_addr constant [7 x i8], align 1
@c_n1 = external hidden global i64, align 8
@.str.8 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [5 x i8], align 1
@c_b42 = external hidden global double, align 8
@c_b43 = external hidden global double, align 8
@.str.16 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [2 x i8], align 1

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

160:                                              ; preds = %26
  store i64 1, ptr %92, align 8, !tbaa !9
  store i64 0, ptr %83, align 8, !tbaa !9
  br label %168

161:                                              ; preds = %26
  %162 = load ptr, ptr %28, align 8, !tbaa !5
  %163 = call i64 @lsame_(ptr noundef %162, ptr noundef @.str.1)
  %164 = icmp ne i64 %163, 0
  br i1 %164, label %165, label %166

165:                                              ; preds = %161
  store i64 2, ptr %92, align 8, !tbaa !9
  store i64 1, ptr %83, align 8, !tbaa !9
  br label %167

166:                                              ; preds = %161
  store i64 -1, ptr %92, align 8, !tbaa !9
  store i64 0, ptr %83, align 8, !tbaa !9
  br label %167

167:                                              ; preds = %166, %165
  br label %168

168:                                              ; preds = %167, %160
  %169 = load ptr, ptr %29, align 8, !tbaa !5
  %170 = call i64 @lsame_(ptr noundef %169, ptr noundef @.str)
  %171 = icmp ne i64 %170, 0
  br i1 %171, label %172, label %173

172:                                              ; preds = %168
  store i64 1, ptr %94, align 8, !tbaa !9
  store i64 0, ptr %84, align 8, !tbaa !9
  br label %180

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

177:                                              ; preds = %173
  store i64 2, ptr %94, align 8, !tbaa !9
  store i64 1, ptr %84, align 8, !tbaa !9
  br label %179

178:                                              ; preds = %173
  store i64 -1, ptr %94, align 8, !tbaa !9
  store i64 0, ptr %84, align 8, !tbaa !9
  br label %179

179:                                              ; preds = %178, %177
  br label %180

180:                                              ; preds = %179, %172
  %181 = load ptr, ptr %30, align 8, !tbaa !5
  %182 = call i64 @lsame_(ptr noundef %181, ptr noundef @.str.2)
  store i64 %182, ptr %105, align 8, !tbaa !9
  %183 = load ptr, ptr %32, align 8, !tbaa !5
  %184 = call i64 @lsame_(ptr noundef %183, ptr noundef @.str)
  store i64 %184, ptr %103, align 8, !tbaa !9
  %185 = load ptr, ptr %32, align 8, !tbaa !5
  %186 = call i64 @lsame_(ptr noundef %185, ptr noundef @.str.3)
  store i64 %186, ptr %97, align 8, !tbaa !9
  %187 = load ptr, ptr %32, align 8, !tbaa !5
  %188 = call i64 @lsame_(ptr noundef %187, ptr noundef @.str.1)
  store i64 %188, ptr %107, align 8, !tbaa !9
  %189 = load ptr, ptr %32, align 8, !tbaa !5
  %190 = call i64 @lsame_(ptr noundef %189, ptr noundef @.str.4)
  store i64 %190, ptr %95, align 8, !tbaa !9
  %191 = load ptr, ptr %49, align 8, !tbaa !5
  %192 = load i64, ptr %191, align 8, !tbaa !9
  %193 = icmp eq i64 %192, -1
  br i1 %193, label %198, label %194

194:                                              ; preds = %180
  %195 = load ptr, ptr %51, align 8, !tbaa !5
  %196 = load i64, ptr %195, align 8, !tbaa !9
  %197 = icmp eq i64 %196, -1
  br label %198

198:                                              ; preds = %194, %180
  %199 = phi i1 [ true, %180 ], [ %197, %194 ]
  %200 = zext i1 %199 to i32
  %201 = sext i32 %200 to i64
  store i64 %201, ptr %106, align 8, !tbaa !9
  %202 = load i64, ptr %103, align 8, !tbaa !9
  %203 = icmp ne i64 %202, 0
  br i1 %203, label %204, label %205

204:                                              ; preds = %198
  store i64 0, ptr %73, align 8, !tbaa !9
  br label %220

205:                                              ; preds = %198
  %206 = load i64, ptr %97, align 8, !tbaa !9
  %207 = icmp ne i64 %206, 0
  br i1 %207, label %208, label %209

208:                                              ; preds = %205
  store i64 1, ptr %73, align 8, !tbaa !9
  br label %219

209:                                              ; preds = %205
  %210 = load i64, ptr %107, align 8, !tbaa !9
  %211 = icmp ne i64 %210, 0
  br i1 %211, label %212, label %213

212:                                              ; preds = %209
  store i64 2, ptr %73, align 8, !tbaa !9
  br label %218

213:                                              ; preds = %209
  %214 = load i64, ptr %95, align 8, !tbaa !9
  %215 = icmp ne i64 %214, 0
  br i1 %215, label %216, label %217

216:                                              ; preds = %213
  store i64 4, ptr %73, align 8, !tbaa !9
  br label %217

217:                                              ; preds = %216, %213
  br label %218

218:                                              ; preds = %217, %212
  br label %219

219:                                              ; preds = %218, %208
  br label %220

220:                                              ; preds = %219, %204
  %221 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 0, ptr %221, align 8, !tbaa !9
  %222 = load i64, ptr %92, align 8, !tbaa !9
  %223 = icmp sle i64 %222, 0
  br i1 %223, label %224, label %226

224:                                              ; preds = %220
  %225 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 -1, ptr %225, align 8, !tbaa !9
  br label %334

226:                                              ; preds = %220
  %227 = load i64, ptr %94, align 8, !tbaa !9
  %228 = icmp sle i64 %227, 0
  br i1 %228, label %229, label %231

229:                                              ; preds = %226
  %230 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 -2, ptr %230, align 8, !tbaa !9
  br label %333

231:                                              ; preds = %226
  %232 = load i64, ptr %105, align 8, !tbaa !9
  %233 = icmp ne i64 %232, 0
  br i1 %233, label %240, label %234

234:                                              ; preds = %231
  %235 = load ptr, ptr %30, align 8, !tbaa !5
  %236 = call i64 @lsame_(ptr noundef %235, ptr noundef @.str)
  %237 = icmp ne i64 %236, 0
  br i1 %237, label %240, label %238

238:                                              ; preds = %234
  %239 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 -3, ptr %239, align 8, !tbaa !9
  br label %332

240:                                              ; preds = %234, %231
  %241 = load i64, ptr %103, align 8, !tbaa !9
  %242 = icmp ne i64 %241, 0
  br i1 %242, label %252, label %243

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

246:                                              ; preds = %243
  %247 = load i64, ptr %107, align 8, !tbaa !9
  %248 = icmp ne i64 %247, 0
  br i1 %248, label %252, label %249

249:                                              ; preds = %246
  %250 = load i64, ptr %95, align 8, !tbaa !9
  %251 = icmp ne i64 %250, 0
  br i1 %251, label %252, label %258

252:                                              ; preds = %249, %246, %243, %240
  %253 = load i64, ptr %105, align 8, !tbaa !9
  %254 = icmp ne i64 %253, 0
  br i1 %254, label %260, label %255

255:                                              ; preds = %252
  %256 = load i64, ptr %103, align 8, !tbaa !9
  %257 = icmp ne i64 %256, 0
  br i1 %257, label %260, label %258

258:                                              ; preds = %255, %249
  %259 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 -5, ptr %259, align 8, !tbaa !9
  br label %331

260:                                              ; preds = %255, %252
  %261 = load ptr, ptr %33, align 8, !tbaa !5
  %262 = load i64, ptr %261, align 8, !tbaa !9
  %263 = icmp slt i64 %262, 0
  br i1 %263, label %264, label %266

264:                                              ; preds = %260
  %265 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 -6, ptr %265, align 8, !tbaa !9
  br label %330

266:                                              ; preds = %260
  %267 = load ptr, ptr %35, align 8, !tbaa !5
  %268 = load i64, ptr %267, align 8, !tbaa !9
  %269 = load ptr, ptr %33, align 8, !tbaa !5
  %270 = load i64, ptr %269, align 8, !tbaa !9
  %271 = icmp sge i64 1, %270
  br i1 %271, label %272, label %273

272:                                              ; preds = %266
  br label %276

273:                                              ; preds = %266
  %274 = load ptr, ptr %33, align 8, !tbaa !5
  %275 = load i64, ptr %274, align 8, !tbaa !9
  br label %276

276:                                              ; preds = %273, %272
  %277 = phi i64 [ 1, %272 ], [ %275, %273 ]
  %278 = icmp slt i64 %268, %277
  br i1 %278, label %279, label %281

279:                                              ; preds = %276
  %280 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 -8, ptr %280, align 8, !tbaa !9
  br label %329

281:                                              ; preds = %276
  %282 = load ptr, ptr %37, align 8, !tbaa !5
  %283 = load i64, ptr %282, align 8, !tbaa !9
  %284 = load ptr, ptr %33, align 8, !tbaa !5
  %285 = load i64, ptr %284, align 8, !tbaa !9
  %286 = icmp sge i64 1, %285
  br i1 %286, label %287, label %288

287:                                              ; preds = %281
  br label %291

288:                                              ; preds = %281
  %289 = load ptr, ptr %33, align 8, !tbaa !5
  %290 = load i64, ptr %289, align 8, !tbaa !9
  br label %291

291:                                              ; preds = %288, %287
  %292 = phi i64 [ 1, %287 ], [ %290, %288 ]
  %293 = icmp slt i64 %283, %292
  br i1 %293, label %294, label %296

294:                                              ; preds = %291
  %295 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 -10, ptr %295, align 8, !tbaa !9
  br label %328

296:                                              ; preds = %291
  %297 = load ptr, ptr %43, align 8, !tbaa !5
  %298 = load i64, ptr %297, align 8, !tbaa !9
  %299 = icmp slt i64 %298, 1
  br i1 %299, label %309, label %300

300:                                              ; preds = %296
  %301 = load i64, ptr %83, align 8, !tbaa !9
  %302 = icmp ne i64 %301, 0
  br i1 %302, label %303, label %311

303:                                              ; preds = %300
  %304 = load ptr, ptr %43, align 8, !tbaa !5
  %305 = load i64, ptr %304, align 8, !tbaa !9
  %306 = load ptr, ptr %33, align 8, !tbaa !5
  %307 = load i64, ptr %306, align 8, !tbaa !9
  %308 = icmp slt i64 %305, %307
  br i1 %308, label %309, label %311

309:                                              ; preds = %303, %296
  %310 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 -16, ptr %310, align 8, !tbaa !9
  br label %327

311:                                              ; preds = %303, %300
  %312 = load ptr, ptr %45, align 8, !tbaa !5
  %313 = load i64, ptr %312, align 8, !tbaa !9
  %314 = icmp slt i64 %313, 1
  br i1 %314, label %324, label %315

315:                                              ; preds = %311
  %316 = load i64, ptr %84, align 8, !tbaa !9
  %317 = icmp ne i64 %316, 0
  br i1 %317, label %318, label %326

318:                                              ; preds = %315
  %319 = load ptr, ptr %45, align 8, !tbaa !5
  %320 = load i64, ptr %319, align 8, !tbaa !9
  %321 = load ptr, ptr %33, align 8, !tbaa !5
  %322 = load i64, ptr %321, align 8, !tbaa !9
  %323 = icmp slt i64 %320, %322
  br i1 %323, label %324, label %326

324:                                              ; preds = %318, %311
  %325 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 -18, ptr %325, align 8, !tbaa !9
  br label %326

326:                                              ; preds = %324, %318, %315
  br label %327

327:                                              ; preds = %326, %309
  br label %328

328:                                              ; preds = %327, %294
  br label %329

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

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

331:                                              ; preds = %330, %258
  br label %332

332:                                              ; preds = %331, %238
  br label %333

333:                                              ; preds = %332, %229
  br label %334

334:                                              ; preds = %333, %224
  %335 = load ptr, ptr %53, align 8, !tbaa !5
  %336 = load i64, ptr %335, align 8, !tbaa !9
  %337 = icmp eq i64 %336, 0
  br i1 %337, label %338, label %479

338:                                              ; preds = %334
  %339 = load ptr, ptr %33, align 8, !tbaa !5
  %340 = load i64, ptr %339, align 8, !tbaa !9
  %341 = icmp sgt i64 %340, 0
  br i1 %341, label %342, label %437

342:                                              ; preds = %338
  %343 = load ptr, ptr %33, align 8, !tbaa !5
  %344 = load i64, ptr %343, align 8, !tbaa !9
  %345 = shl i64 %344, 3
  store i64 %345, ptr %62, align 8, !tbaa !9
  %346 = load ptr, ptr %33, align 8, !tbaa !5
  %347 = load i64, ptr %346, align 8, !tbaa !9
  %348 = mul nsw i64 %347, 6
  %349 = add nsw i64 %348, 16
  store i64 %349, ptr %63, align 8, !tbaa !9
  %350 = load i64, ptr %62, align 8, !tbaa !9
  %351 = load i64, ptr %63, align 8, !tbaa !9
  %352 = icmp sge i64 %350, %351
  br i1 %352, label %353, label %355

353:                                              ; preds = %342
  %354 = load i64, ptr %62, align 8, !tbaa !9
  br label %357

355:                                              ; preds = %342
  %356 = load i64, ptr %63, align 8, !tbaa !9
  br label %357

357:                                              ; preds = %355, %353
  %358 = phi i64 [ %354, %353 ], [ %356, %355 ]
  store i64 %358, ptr %101, align 8, !tbaa !9
  %359 = load i64, ptr %101, align 8, !tbaa !9
  %360 = load ptr, ptr %33, align 8, !tbaa !5
  %361 = load i64, ptr %360, align 8, !tbaa !9
  %362 = sub nsw i64 %359, %361
  %363 = load ptr, ptr %33, align 8, !tbaa !5
  %364 = load i64, ptr %363, align 8, !tbaa !9
  %365 = load ptr, ptr %33, align 8, !tbaa !5
  %366 = load ptr, ptr %33, align 8, !tbaa !5
  %367 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef %365, ptr noundef @c__1, ptr noundef %366, ptr noundef @c__0)
  %368 = mul nsw i64 %364, %367
  %369 = add nsw i64 %362, %368
  store i64 %369, ptr %102, align 8, !tbaa !9
  %370 = load i64, ptr %102, align 8, !tbaa !9
  store i64 %370, ptr %62, align 8, !tbaa !9
  %371 = load i64, ptr %101, align 8, !tbaa !9
  %372 = load ptr, ptr %33, align 8, !tbaa !5
  %373 = load i64, ptr %372, align 8, !tbaa !9
  %374 = sub nsw i64 %371, %373
  %375 = load ptr, ptr %33, align 8, !tbaa !5
  %376 = load i64, ptr %375, align 8, !tbaa !9
  %377 = load ptr, ptr %33, align 8, !tbaa !5
  %378 = load ptr, ptr %33, align 8, !tbaa !5
  %379 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.7, ptr noundef @.str.6, ptr noundef %377, ptr noundef @c__1, ptr noundef %378, ptr noundef @c_n1)
  %380 = mul nsw i64 %376, %379
  %381 = add nsw i64 %374, %380
  store i64 %381, ptr %63, align 8, !tbaa !9
  %382 = load i64, ptr %62, align 8, !tbaa !9
  %383 = load i64, ptr %63, align 8, !tbaa !9
  %384 = icmp sge i64 %382, %383
  br i1 %384, label %385, label %387

385:                                              ; preds = %357
  %386 = load i64, ptr %62, align 8, !tbaa !9
  br label %389

387:                                              ; preds = %357
  %388 = load i64, ptr %63, align 8, !tbaa !9
  br label %389

389:                                              ; preds = %387, %385
  %390 = phi i64 [ %386, %385 ], [ %388, %387 ]
  store i64 %390, ptr %102, align 8, !tbaa !9
  %391 = load i64, ptr %83, align 8, !tbaa !9
  %392 = icmp ne i64 %391, 0
  br i1 %392, label %393, label %415

393:                                              ; preds = %389
  %394 = load i64, ptr %102, align 8, !tbaa !9
  store i64 %394, ptr %62, align 8, !tbaa !9
  %395 = load i64, ptr %101, align 8, !tbaa !9
  %396 = load ptr, ptr %33, align 8, !tbaa !5
  %397 = load i64, ptr %396, align 8, !tbaa !9
  %398 = sub nsw i64 %395, %397
  %399 = load ptr, ptr %33, align 8, !tbaa !5
  %400 = load i64, ptr %399, align 8, !tbaa !9
  %401 = load ptr, ptr %33, align 8, !tbaa !5
  %402 = load ptr, ptr %33, align 8, !tbaa !5
  %403 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.8, ptr noundef @.str.6, ptr noundef %401, ptr noundef @c__1, ptr noundef %402, ptr noundef @c_n1)
  %404 = mul nsw i64 %400, %403
  %405 = add nsw i64 %398, %404
  store i64 %405, ptr %63, align 8, !tbaa !9
  %406 = load i64, ptr %62, align 8, !tbaa !9
  %407 = load i64, ptr %63, align 8, !tbaa !9
  %408 = icmp sge i64 %406, %407
  br i1 %408, label %409, label %411

409:                                              ; preds = %393
  %410 = load i64, ptr %62, align 8, !tbaa !9
  br label %413

411:                                              ; preds = %393
  %412 = load i64, ptr %63, align 8, !tbaa !9
  br label %413

413:                                              ; preds = %411, %409
  %414 = phi i64 [ %410, %409 ], [ %412, %411 ]
  store i64 %414, ptr %102, align 8, !tbaa !9
  br label %415

415:                                              ; preds = %413, %389
  %416 = load i64, ptr %102, align 8, !tbaa !9
  store i64 %416, ptr %79, align 8, !tbaa !9
  %417 = load i64, ptr %73, align 8, !tbaa !9
  %418 = icmp sge i64 %417, 1
  br i1 %418, label %419, label %436

419:                                              ; preds = %415
  %420 = load i64, ptr %79, align 8, !tbaa !9
  store i64 %420, ptr %62, align 8, !tbaa !9
  %421 = load ptr, ptr %33, align 8, !tbaa !5
  %422 = load i64, ptr %421, align 8, !tbaa !9
  %423 = load ptr, ptr %33, align 8, !tbaa !5
  %424 = load i64, ptr %423, align 8, !tbaa !9
  %425 = mul nsw i64 %422, %424
  %426 = sdiv i64 %425, 2
  store i64 %426, ptr %63, align 8, !tbaa !9
  %427 = load i64, ptr %62, align 8, !tbaa !9
  %428 = load i64, ptr %63, align 8, !tbaa !9
  %429 = icmp sge i64 %427, %428
  br i1 %429, label %430, label %432

430:                                              ; preds = %419
  %431 = load i64, ptr %62, align 8, !tbaa !9
  br label %434

432:                                              ; preds = %419
  %433 = load i64, ptr %63, align 8, !tbaa !9
  br label %434

434:                                              ; preds = %432, %430
  %435 = phi i64 [ %431, %430 ], [ %433, %432 ]
  store i64 %435, ptr %79, align 8, !tbaa !9
  br label %436

436:                                              ; preds = %434, %415
  br label %438

437:                                              ; preds = %338
  store i64 1, ptr %101, align 8, !tbaa !9
  store i64 1, ptr %102, align 8, !tbaa !9
  store i64 1, ptr %79, align 8, !tbaa !9
  br label %438

438:                                              ; preds = %437, %436
  %439 = load i64, ptr %79, align 8, !tbaa !9
  %440 = sitofp i64 %439 to double
  %441 = load ptr, ptr %48, align 8, !tbaa !5
  %442 = getelementptr inbounds double, ptr %441, i64 1
  store double %440, ptr %442, align 8, !tbaa !11
  %443 = load i64, ptr %103, align 8, !tbaa !9
  %444 = icmp ne i64 %443, 0
  br i1 %444, label %449, label %445

445:                                              ; preds = %438
  %446 = load ptr, ptr %33, align 8, !tbaa !5
  %447 = load i64, ptr %446, align 8, !tbaa !9
  %448 = icmp eq i64 %447, 0
  br i1 %448, label %449, label %450

449:                                              ; preds = %445, %438
  store i64 1, ptr %96, align 8, !tbaa !9
  br label %454

450:                                              ; preds = %445
  %451 = load ptr, ptr %33, align 8, !tbaa !5
  %452 = load i64, ptr %451, align 8, !tbaa !9
  %453 = add nsw i64 %452, 6
  store i64 %453, ptr %96, align 8, !tbaa !9
  br label %454

454:                                              ; preds = %450, %449
  %455 = load i64, ptr %96, align 8, !tbaa !9
  %456 = load ptr, ptr %50, align 8, !tbaa !5
  %457 = getelementptr inbounds i64, ptr %456, i64 1
  store i64 %455, ptr %457, align 8, !tbaa !9
  %458 = load ptr, ptr %49, align 8, !tbaa !5
  %459 = load i64, ptr %458, align 8, !tbaa !9
  %460 = load i64, ptr %101, align 8, !tbaa !9
  %461 = icmp slt i64 %459, %460
  br i1 %461, label %462, label %467

462:                                              ; preds = %454
  %463 = load i64, ptr %106, align 8, !tbaa !9
  %464 = icmp ne i64 %463, 0
  br i1 %464, label %467, label %465

465:                                              ; preds = %462
  %466 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 -22, ptr %466, align 8, !tbaa !9
  br label %478

467:                                              ; preds = %462, %454
  %468 = load ptr, ptr %51, align 8, !tbaa !5
  %469 = load i64, ptr %468, align 8, !tbaa !9
  %470 = load i64, ptr %96, align 8, !tbaa !9
  %471 = icmp slt i64 %469, %470
  br i1 %471, label %472, label %477

472:                                              ; preds = %467
  %473 = load i64, ptr %106, align 8, !tbaa !9
  %474 = icmp ne i64 %473, 0
  br i1 %474, label %477, label %475

475:                                              ; preds = %472
  %476 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 -24, ptr %476, align 8, !tbaa !9
  br label %477

477:                                              ; preds = %475, %472, %467
  br label %478

478:                                              ; preds = %477, %465
  br label %479

479:                                              ; preds = %478, %334
  %480 = load ptr, ptr %53, align 8, !tbaa !5
  %481 = load i64, ptr %480, align 8, !tbaa !9
  %482 = icmp ne i64 %481, 0
  br i1 %482, label %483, label %488

483:                                              ; preds = %479
  %484 = load ptr, ptr %53, align 8, !tbaa !5
  %485 = load i64, ptr %484, align 8, !tbaa !9
  %486 = sub nsw i64 0, %485
  store i64 %486, ptr %62, align 8, !tbaa !9
  %487 = call i32 @xerbla_(ptr noundef @.str.9, ptr noundef %62)
  store i32 0, ptr %27, align 4
  store i32 1, ptr %108, align 4
  br label %1415

488:                                              ; preds = %479
  %489 = load i64, ptr %106, align 8, !tbaa !9
  %490 = icmp ne i64 %489, 0
  br i1 %490, label %491, label %492

491:                                              ; preds = %488
  store i32 0, ptr %27, align 4
  store i32 1, ptr %108, align 4
  br label %1415

492:                                              ; preds = %488
  br label %493

493:                                              ; preds = %492
  %494 = load ptr, ptr %33, align 8, !tbaa !5
  %495 = load i64, ptr %494, align 8, !tbaa !9
  %496 = icmp eq i64 %495, 0
  br i1 %496, label %497, label %499

497:                                              ; preds = %493
  %498 = load ptr, ptr %38, align 8, !tbaa !5
  store i64 0, ptr %498, align 8, !tbaa !9
  store i32 0, ptr %27, align 4
  store i32 1, ptr %108, align 4
  br label %1415

499:                                              ; preds = %493
  %500 = call double @dlamch_(ptr noundef @.str.10)
  store double %500, ptr %72, align 8, !tbaa !11
  %501 = call double @dlamch_(ptr noundef @.str.2)
  store double %501, ptr %89, align 8, !tbaa !11
  %502 = load double, ptr %89, align 8, !tbaa !11
  %503 = fdiv double 1.000000e+00, %502
  store double %503, ptr %90, align 8, !tbaa !11
  %504 = call i32 @dlabad_(ptr noundef %89, ptr noundef %90)
  %505 = load double, ptr %89, align 8, !tbaa !11
  %506 = call double @sqrt(double noundef %505) #4
  %507 = load double, ptr %72, align 8, !tbaa !11
  %508 = fdiv double %506, %507
  store double %508, ptr %104, align 8, !tbaa !11
  %509 = load double, ptr %104, align 8, !tbaa !11
  %510 = fdiv double 1.000000e+00, %509
  store double %510, ptr %91, align 8, !tbaa !11
  %511 = load ptr, ptr %33, align 8, !tbaa !5
  %512 = load ptr, ptr %33, align 8, !tbaa !5
  %513 = load ptr, ptr %34, align 8, !tbaa !5
  %514 = load i64, ptr %55, align 8, !tbaa !9
  %515 = getelementptr inbounds double, ptr %513, i64 %514
  %516 = load ptr, ptr %35, align 8, !tbaa !5
  %517 = load ptr, ptr %48, align 8, !tbaa !5
  %518 = getelementptr inbounds double, ptr %517, i64 1
  %519 = call double @dlange_(ptr noundef @.str.11, ptr noundef %511, ptr noundef %512, ptr noundef %515, ptr noundef %516, ptr noundef %518)
  store double %519, ptr %74, align 8, !tbaa !11
  store i64 0, ptr %87, align 8, !tbaa !9
  %520 = load double, ptr %74, align 8, !tbaa !11
  %521 = fcmp ogt double %520, 0.000000e+00
  br i1 %521, label %522, label %528

522:                                              ; preds = %499
  %523 = load double, ptr %74, align 8, !tbaa !11
  %524 = load double, ptr %104, align 8, !tbaa !11
  %525 = fcmp olt double %523, %524
  br i1 %525, label %526, label %528

526:                                              ; preds = %522
  %527 = load double, ptr %104, align 8, !tbaa !11
  store double %527, ptr %99, align 8, !tbaa !11
  store i64 1, ptr %87, align 8, !tbaa !9
  br label %535

528:                                              ; preds = %522, %499
  %529 = load double, ptr %74, align 8, !tbaa !11
  %530 = load double, ptr %91, align 8, !tbaa !11
  %531 = fcmp ogt double %529, %530
  br i1 %531, label %532, label %534

532:                                              ; preds = %528
  %533 = load double, ptr %91, align 8, !tbaa !11
  store double %533, ptr %99, align 8, !tbaa !11
  store i64 1, ptr %87, align 8, !tbaa !9
  br label %534

534:                                              ; preds = %532, %528
  br label %535

535:                                              ; preds = %534, %526
  %536 = load i64, ptr %87, align 8, !tbaa !9
  %537 = icmp ne i64 %536, 0
  br i1 %537, label %538, label %546

538:                                              ; preds = %535
  %539 = load ptr, ptr %33, align 8, !tbaa !5
  %540 = load ptr, ptr %33, align 8, !tbaa !5
  %541 = load ptr, ptr %34, align 8, !tbaa !5
  %542 = load i64, ptr %55, align 8, !tbaa !9
  %543 = getelementptr inbounds double, ptr %541, i64 %542
  %544 = load ptr, ptr %35, align 8, !tbaa !5
  %545 = call i32 @dlascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %74, ptr noundef %99, ptr noundef %539, ptr noundef %540, ptr noundef %543, ptr noundef %544, ptr noundef %76)
  br label %546

546:                                              ; preds = %538, %535
  %547 = load ptr, ptr %33, align 8, !tbaa !5
  %548 = load ptr, ptr %33, align 8, !tbaa !5
  %549 = load ptr, ptr %36, align 8, !tbaa !5
  %550 = load i64, ptr %57, align 8, !tbaa !9
  %551 = getelementptr inbounds double, ptr %549, i64 %550
  %552 = load ptr, ptr %37, align 8, !tbaa !5
  %553 = load ptr, ptr %48, align 8, !tbaa !5
  %554 = getelementptr inbounds double, ptr %553, i64 1
  %555 = call double @dlange_(ptr noundef @.str.11, ptr noundef %547, ptr noundef %548, ptr noundef %551, ptr noundef %552, ptr noundef %554)
  store double %555, ptr %75, align 8, !tbaa !11
  store i64 0, ptr %88, align 8, !tbaa !9
  %556 = load double, ptr %75, align 8, !tbaa !11
  %557 = fcmp ogt double %556, 0.000000e+00
  br i1 %557, label %558, label %564

558:                                              ; preds = %546
  %559 = load double, ptr %75, align 8, !tbaa !11
  %560 = load double, ptr %104, align 8, !tbaa !11
  %561 = fcmp olt double %559, %560
  br i1 %561, label %562, label %564

562:                                              ; preds = %558
  %563 = load double, ptr %104, align 8, !tbaa !11
  store double %563, ptr %100, align 8, !tbaa !11
  store i64 1, ptr %88, align 8, !tbaa !9
  br label %571

564:                                              ; preds = %558, %546
  %565 = load double, ptr %75, align 8, !tbaa !11
  %566 = load double, ptr %91, align 8, !tbaa !11
  %567 = fcmp ogt double %565, %566
  br i1 %567, label %568, label %570

568:                                              ; preds = %564
  %569 = load double, ptr %91, align 8, !tbaa !11
  store double %569, ptr %100, align 8, !tbaa !11
  store i64 1, ptr %88, align 8, !tbaa !9
  br label %570

570:                                              ; preds = %568, %564
  br label %571

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

574:                                              ; preds = %571
  %575 = load ptr, ptr %33, align 8, !tbaa !5
  %576 = load ptr, ptr %33, align 8, !tbaa !5
  %577 = load ptr, ptr %36, align 8, !tbaa !5
  %578 = load i64, ptr %57, align 8, !tbaa !9
  %579 = getelementptr inbounds double, ptr %577, i64 %578
  %580 = load ptr, ptr %37, align 8, !tbaa !5
  %581 = call i32 @dlascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %75, ptr noundef %100, ptr noundef %575, ptr noundef %576, ptr noundef %579, ptr noundef %580, ptr noundef %76)
  br label %582

582:                                              ; preds = %574, %571
  store i64 1, ptr %80, align 8, !tbaa !9
  %583 = load ptr, ptr %33, align 8, !tbaa !5
  %584 = load i64, ptr %583, align 8, !tbaa !9
  %585 = add nsw i64 %584, 1
  store i64 %585, ptr %93, align 8, !tbaa !9
  %586 = load i64, ptr %93, align 8, !tbaa !9
  %587 = load ptr, ptr %33, align 8, !tbaa !5
  %588 = load i64, ptr %587, align 8, !tbaa !9
  %589 = add nsw i64 %586, %588
  store i64 %589, ptr %78, align 8, !tbaa !9
  %590 = load ptr, ptr %33, align 8, !tbaa !5
  %591 = load ptr, ptr %34, align 8, !tbaa !5
  %592 = load i64, ptr %55, align 8, !tbaa !9
  %593 = getelementptr inbounds double, ptr %591, i64 %592
  %594 = load ptr, ptr %35, align 8, !tbaa !5
  %595 = load ptr, ptr %36, align 8, !tbaa !5
  %596 = load i64, ptr %57, align 8, !tbaa !9
  %597 = getelementptr inbounds double, ptr %595, i64 %596
  %598 = load ptr, ptr %37, align 8, !tbaa !5
  %599 = load ptr, ptr %48, align 8, !tbaa !5
  %600 = load i64, ptr %80, align 8, !tbaa !9
  %601 = getelementptr inbounds double, ptr %599, i64 %600
  %602 = load ptr, ptr %48, align 8, !tbaa !5
  %603 = load i64, ptr %93, align 8, !tbaa !9
  %604 = getelementptr inbounds double, ptr %602, i64 %603
  %605 = load ptr, ptr %48, align 8, !tbaa !5
  %606 = load i64, ptr %78, align 8, !tbaa !9
  %607 = getelementptr inbounds double, ptr %605, i64 %606
  %608 = call i32 @dggbal_(ptr noundef @.str.10, ptr noundef %590, ptr noundef %593, ptr noundef %594, ptr noundef %597, ptr noundef %598, ptr noundef %71, ptr noundef %70, ptr noundef %601, ptr noundef %604, ptr noundef %607, ptr noundef %76)
  %609 = load i64, ptr %70, align 8, !tbaa !9
  %610 = add nsw i64 %609, 1
  %611 = load i64, ptr %71, align 8, !tbaa !9
  %612 = sub nsw i64 %610, %611
  store i64 %612, ptr %85, align 8, !tbaa !9
  %613 = load ptr, ptr %33, align 8, !tbaa !5
  %614 = load i64, ptr %613, align 8, !tbaa !9
  %615 = add nsw i64 %614, 1
  %616 = load i64, ptr %71, align 8, !tbaa !9
  %617 = sub nsw i64 %615, %616
  store i64 %617, ptr %81, align 8, !tbaa !9
  %618 = load i64, ptr %78, align 8, !tbaa !9
  store i64 %618, ptr %77, align 8, !tbaa !9
  %619 = load i64, ptr %77, align 8, !tbaa !9
  %620 = load i64, ptr %85, align 8, !tbaa !9
  %621 = add nsw i64 %619, %620
  store i64 %621, ptr %78, align 8, !tbaa !9
  %622 = load ptr, ptr %49, align 8, !tbaa !5
  %623 = load i64, ptr %622, align 8, !tbaa !9
  %624 = add nsw i64 %623, 1
  %625 = load i64, ptr %78, align 8, !tbaa !9
  %626 = sub nsw i64 %624, %625
  store i64 %626, ptr %62, align 8, !tbaa !9
  %627 = load ptr, ptr %36, align 8, !tbaa !5
  %628 = load i64, ptr %71, align 8, !tbaa !9
  %629 = load i64, ptr %71, align 8, !tbaa !9
  %630 = load i64, ptr %56, align 8, !tbaa !9
  %631 = mul nsw i64 %629, %630
  %632 = add nsw i64 %628, %631
  %633 = getelementptr inbounds double, ptr %627, i64 %632
  %634 = load ptr, ptr %37, align 8, !tbaa !5
  %635 = load ptr, ptr %48, align 8, !tbaa !5
  %636 = load i64, ptr %77, align 8, !tbaa !9
  %637 = getelementptr inbounds double, ptr %635, i64 %636
  %638 = load ptr, ptr %48, align 8, !tbaa !5
  %639 = load i64, ptr %78, align 8, !tbaa !9
  %640 = getelementptr inbounds double, ptr %638, i64 %639
  %641 = call i32 @dgeqrf_(ptr noundef %85, ptr noundef %81, ptr noundef %633, ptr noundef %634, ptr noundef %637, ptr noundef %640, ptr noundef %62, ptr noundef %76)
  %642 = load ptr, ptr %49, align 8, !tbaa !5
  %643 = load i64, ptr %642, align 8, !tbaa !9
  %644 = add nsw i64 %643, 1
  %645 = load i64, ptr %78, align 8, !tbaa !9
  %646 = sub nsw i64 %644, %645
  store i64 %646, ptr %62, align 8, !tbaa !9
  %647 = load ptr, ptr %36, align 8, !tbaa !5
  %648 = load i64, ptr %71, align 8, !tbaa !9
  %649 = load i64, ptr %71, align 8, !tbaa !9
  %650 = load i64, ptr %56, align 8, !tbaa !9
  %651 = mul nsw i64 %649, %650
  %652 = add nsw i64 %648, %651
  %653 = getelementptr inbounds double, ptr %647, i64 %652
  %654 = load ptr, ptr %37, align 8, !tbaa !5
  %655 = load ptr, ptr %48, align 8, !tbaa !5
  %656 = load i64, ptr %77, align 8, !tbaa !9
  %657 = getelementptr inbounds double, ptr %655, i64 %656
  %658 = load ptr, ptr %34, align 8, !tbaa !5
  %659 = load i64, ptr %71, align 8, !tbaa !9
  %660 = load i64, ptr %71, align 8, !tbaa !9
  %661 = load i64, ptr %54, align 8, !tbaa !9
  %662 = mul nsw i64 %660, %661
  %663 = add nsw i64 %659, %662
  %664 = getelementptr inbounds double, ptr %658, i64 %663
  %665 = load ptr, ptr %35, align 8, !tbaa !5
  %666 = load ptr, ptr %48, align 8, !tbaa !5
  %667 = load i64, ptr %78, align 8, !tbaa !9
  %668 = getelementptr inbounds double, ptr %666, i64 %667
  %669 = call i32 @dormqr_(ptr noundef @.str.13, ptr noundef @.str.14, ptr noundef %85, ptr noundef %81, ptr noundef %85, ptr noundef %653, ptr noundef %654, ptr noundef %657, ptr noundef %664, ptr noundef %665, ptr noundef %668, ptr noundef %62, ptr noundef %76)
  %670 = load i64, ptr %83, align 8, !tbaa !9
  %671 = icmp ne i64 %670, 0
  br i1 %671, label %672, label %727

672:                                              ; preds = %582
  %673 = load ptr, ptr %33, align 8, !tbaa !5
  %674 = load ptr, ptr %33, align 8, !tbaa !5
  %675 = load ptr, ptr %42, align 8, !tbaa !5
  %676 = load i64, ptr %59, align 8, !tbaa !9
  %677 = getelementptr inbounds double, ptr %675, i64 %676
  %678 = load ptr, ptr %43, align 8, !tbaa !5
  %679 = call i32 @dlaset_(ptr noundef @.str.15, ptr noundef %673, ptr noundef %674, ptr noundef @c_b42, ptr noundef @c_b43, ptr noundef %677, ptr noundef %678)
  %680 = load i64, ptr %85, align 8, !tbaa !9
  %681 = icmp sgt i64 %680, 1
  br i1 %681, label %682, label %706

682:                                              ; preds = %672
  %683 = load i64, ptr %85, align 8, !tbaa !9
  %684 = sub nsw i64 %683, 1
  store i64 %684, ptr %62, align 8, !tbaa !9
  %685 = load i64, ptr %85, align 8, !tbaa !9
  %686 = sub nsw i64 %685, 1
  store i64 %686, ptr %63, align 8, !tbaa !9
  %687 = load ptr, ptr %36, align 8, !tbaa !5
  %688 = load i64, ptr %71, align 8, !tbaa !9
  %689 = add nsw i64 %688, 1
  %690 = load i64, ptr %71, align 8, !tbaa !9
  %691 = load i64, ptr %56, align 8, !tbaa !9
  %692 = mul nsw i64 %690, %691
  %693 = add nsw i64 %689, %692
  %694 = getelementptr inbounds double, ptr %687, i64 %693
  %695 = load ptr, ptr %37, align 8, !tbaa !5
  %696 = load ptr, ptr %42, align 8, !tbaa !5
  %697 = load i64, ptr %71, align 8, !tbaa !9
  %698 = add nsw i64 %697, 1
  %699 = load i64, ptr %71, align 8, !tbaa !9
  %700 = load i64, ptr %58, align 8, !tbaa !9
  %701 = mul nsw i64 %699, %700
  %702 = add nsw i64 %698, %701
  %703 = getelementptr inbounds double, ptr %696, i64 %702
  %704 = load ptr, ptr %43, align 8, !tbaa !5
  %705 = call i32 @dlacpy_(ptr noundef @.str.13, ptr noundef %62, ptr noundef %63, ptr noundef %694, ptr noundef %695, ptr noundef %703, ptr noundef %704)
  br label %706

706:                                              ; preds = %682, %672
  %707 = load ptr, ptr %49, align 8, !tbaa !5
  %708 = load i64, ptr %707, align 8, !tbaa !9
  %709 = add nsw i64 %708, 1
  %710 = load i64, ptr %78, align 8, !tbaa !9
  %711 = sub nsw i64 %709, %710
  store i64 %711, ptr %62, align 8, !tbaa !9
  %712 = load ptr, ptr %42, align 8, !tbaa !5
  %713 = load i64, ptr %71, align 8, !tbaa !9
  %714 = load i64, ptr %71, align 8, !tbaa !9
  %715 = load i64, ptr %58, align 8, !tbaa !9
  %716 = mul nsw i64 %714, %715
  %717 = add nsw i64 %713, %716
  %718 = getelementptr inbounds double, ptr %712, i64 %717
  %719 = load ptr, ptr %43, align 8, !tbaa !5
  %720 = load ptr, ptr %48, align 8, !tbaa !5
  %721 = load i64, ptr %77, align 8, !tbaa !9
  %722 = getelementptr inbounds double, ptr %720, i64 %721
  %723 = load ptr, ptr %48, align 8, !tbaa !5
  %724 = load i64, ptr %78, align 8, !tbaa !9
  %725 = getelementptr inbounds double, ptr %723, i64 %724
  %726 = call i32 @dorgqr_(ptr noundef %85, ptr noundef %85, ptr noundef %85, ptr noundef %718, ptr noundef %719, ptr noundef %722, ptr noundef %725, ptr noundef %62, ptr noundef %76)
  br label %727

727:                                              ; preds = %706, %582
  %728 = load i64, ptr %84, align 8, !tbaa !9
  %729 = icmp ne i64 %728, 0
  br i1 %729, label %730, label %738

730:                                              ; preds = %727
  %731 = load ptr, ptr %33, align 8, !tbaa !5
  %732 = load ptr, ptr %33, align 8, !tbaa !5
  %733 = load ptr, ptr %44, align 8, !tbaa !5
  %734 = load i64, ptr %61, align 8, !tbaa !9
  %735 = getelementptr inbounds double, ptr %733, i64 %734
  %736 = load ptr, ptr %45, align 8, !tbaa !5
  %737 = call i32 @dlaset_(ptr noundef @.str.15, ptr noundef %731, ptr noundef %732, ptr noundef @c_b42, ptr noundef @c_b43, ptr noundef %735, ptr noundef %736)
  br label %738

738:                                              ; preds = %730, %727
  %739 = load ptr, ptr %28, align 8, !tbaa !5
  %740 = load ptr, ptr %29, align 8, !tbaa !5
  %741 = load ptr, ptr %33, align 8, !tbaa !5
  %742 = load ptr, ptr %34, align 8, !tbaa !5
  %743 = load i64, ptr %55, align 8, !tbaa !9
  %744 = getelementptr inbounds double, ptr %742, i64 %743
  %745 = load ptr, ptr %35, align 8, !tbaa !5
  %746 = load ptr, ptr %36, align 8, !tbaa !5
  %747 = load i64, ptr %57, align 8, !tbaa !9
  %748 = getelementptr inbounds double, ptr %746, i64 %747
  %749 = load ptr, ptr %37, align 8, !tbaa !5
  %750 = load ptr, ptr %42, align 8, !tbaa !5
  %751 = load i64, ptr %59, align 8, !tbaa !9
  %752 = getelementptr inbounds double, ptr %750, i64 %751
  %753 = load ptr, ptr %43, align 8, !tbaa !5
  %754 = load ptr, ptr %44, align 8, !tbaa !5
  %755 = load i64, ptr %61, align 8, !tbaa !9
  %756 = getelementptr inbounds double, ptr %754, i64 %755
  %757 = load ptr, ptr %45, align 8, !tbaa !5
  %758 = call i32 @dgghrd_(ptr noundef %739, ptr noundef %740, ptr noundef %741, ptr noundef %71, ptr noundef %70, ptr noundef %744, ptr noundef %745, ptr noundef %748, ptr noundef %749, ptr noundef %752, ptr noundef %753, ptr noundef %756, ptr noundef %757, ptr noundef %76)
  %759 = load ptr, ptr %38, align 8, !tbaa !5
  store i64 0, ptr %759, align 8, !tbaa !9
  %760 = load i64, ptr %77, align 8, !tbaa !9
  store i64 %760, ptr %78, align 8, !tbaa !9
  %761 = load ptr, ptr %49, align 8, !tbaa !5
  %762 = load i64, ptr %761, align 8, !tbaa !9
  %763 = add nsw i64 %762, 1
  %764 = load i64, ptr %78, align 8, !tbaa !9
  %765 = sub nsw i64 %763, %764
  store i64 %765, ptr %62, align 8, !tbaa !9
  %766 = load ptr, ptr %28, align 8, !tbaa !5
  %767 = load ptr, ptr %29, align 8, !tbaa !5
  %768 = load ptr, ptr %33, align 8, !tbaa !5
  %769 = load ptr, ptr %34, align 8, !tbaa !5
  %770 = load i64, ptr %55, align 8, !tbaa !9
  %771 = getelementptr inbounds double, ptr %769, i64 %770
  %772 = load ptr, ptr %35, align 8, !tbaa !5
  %773 = load ptr, ptr %36, align 8, !tbaa !5
  %774 = load i64, ptr %57, align 8, !tbaa !9
  %775 = getelementptr inbounds double, ptr %773, i64 %774
  %776 = load ptr, ptr %37, align 8, !tbaa !5
  %777 = load ptr, ptr %39, align 8, !tbaa !5
  %778 = getelementptr inbounds double, ptr %777, i64 1
  %779 = load ptr, ptr %40, align 8, !tbaa !5
  %780 = getelementptr inbounds double, ptr %779, i64 1
  %781 = load ptr, ptr %41, align 8, !tbaa !5
  %782 = getelementptr inbounds double, ptr %781, i64 1
  %783 = load ptr, ptr %42, align 8, !tbaa !5
  %784 = load i64, ptr %59, align 8, !tbaa !9
  %785 = getelementptr inbounds double, ptr %783, i64 %784
  %786 = load ptr, ptr %43, align 8, !tbaa !5
  %787 = load ptr, ptr %44, align 8, !tbaa !5
  %788 = load i64, ptr %61, align 8, !tbaa !9
  %789 = getelementptr inbounds double, ptr %787, i64 %788
  %790 = load ptr, ptr %45, align 8, !tbaa !5
  %791 = load ptr, ptr %48, align 8, !tbaa !5
  %792 = load i64, ptr %78, align 8, !tbaa !9
  %793 = getelementptr inbounds double, ptr %791, i64 %792
  %794 = call i32 @dhgeqz_(ptr noundef @.str.2, ptr noundef %766, ptr noundef %767, ptr noundef %768, ptr noundef %71, ptr noundef %70, 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 %793, ptr noundef %62, ptr noundef %76)
  %795 = load i64, ptr %76, align 8, !tbaa !9
  %796 = icmp ne i64 %795, 0
  br i1 %796, label %797, label %832

797:                                              ; preds = %738
  %798 = load i64, ptr %76, align 8, !tbaa !9
  %799 = icmp sgt i64 %798, 0
  br i1 %799, label %800, label %808

800:                                              ; preds = %797
  %801 = load i64, ptr %76, align 8, !tbaa !9
  %802 = load ptr, ptr %33, align 8, !tbaa !5
  %803 = load i64, ptr %802, align 8, !tbaa !9
  %804 = icmp sle i64 %801, %803
  br i1 %804, label %805, label %808

805:                                              ; preds = %800
  %806 = load i64, ptr %76, align 8, !tbaa !9
  %807 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 %806, ptr %807, align 8, !tbaa !9
  br label %831

808:                                              ; preds = %800, %797
  %809 = load i64, ptr %76, align 8, !tbaa !9
  %810 = load ptr, ptr %33, align 8, !tbaa !5
  %811 = load i64, ptr %810, align 8, !tbaa !9
  %812 = icmp sgt i64 %809, %811
  br i1 %812, label %813, label %825

813:                                              ; preds = %808
  %814 = load i64, ptr %76, align 8, !tbaa !9
  %815 = load ptr, ptr %33, align 8, !tbaa !5
  %816 = load i64, ptr %815, align 8, !tbaa !9
  %817 = shl i64 %816, 1
  %818 = icmp sle i64 %814, %817
  br i1 %818, label %819, label %825

819:                                              ; preds = %813
  %820 = load i64, ptr %76, align 8, !tbaa !9
  %821 = load ptr, ptr %33, align 8, !tbaa !5
  %822 = load i64, ptr %821, align 8, !tbaa !9
  %823 = sub nsw i64 %820, %822
  %824 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 %823, ptr %824, align 8, !tbaa !9
  br label %830

825:                                              ; preds = %813, %808
  %826 = load ptr, ptr %33, align 8, !tbaa !5
  %827 = load i64, ptr %826, align 8, !tbaa !9
  %828 = add nsw i64 %827, 1
  %829 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 %828, ptr %829, align 8, !tbaa !9
  br label %830

830:                                              ; preds = %825, %819
  br label %831

831:                                              ; preds = %830, %805
  br label %1407

832:                                              ; preds = %738
  %833 = load i64, ptr %105, align 8, !tbaa !9
  %834 = icmp ne i64 %833, 0
  br i1 %834, label %835, label %988

835:                                              ; preds = %832
  %836 = load i64, ptr %87, align 8, !tbaa !9
  %837 = icmp ne i64 %836, 0
  br i1 %837, label %838, label %849

838:                                              ; preds = %835
  %839 = load ptr, ptr %33, align 8, !tbaa !5
  %840 = load ptr, ptr %39, align 8, !tbaa !5
  %841 = getelementptr inbounds double, ptr %840, i64 1
  %842 = load ptr, ptr %33, align 8, !tbaa !5
  %843 = call i32 @dlascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %99, ptr noundef %74, ptr noundef %839, ptr noundef @c__1, ptr noundef %841, ptr noundef %842, ptr noundef %76)
  %844 = load ptr, ptr %33, align 8, !tbaa !5
  %845 = load ptr, ptr %40, align 8, !tbaa !5
  %846 = getelementptr inbounds double, ptr %845, i64 1
  %847 = load ptr, ptr %33, align 8, !tbaa !5
  %848 = call i32 @dlascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %99, ptr noundef %74, ptr noundef %844, ptr noundef @c__1, ptr noundef %846, ptr noundef %847, ptr noundef %76)
  br label %849

849:                                              ; preds = %838, %835
  %850 = load i64, ptr %88, align 8, !tbaa !9
  %851 = icmp ne i64 %850, 0
  br i1 %851, label %852, label %858

852:                                              ; preds = %849
  %853 = load ptr, ptr %33, align 8, !tbaa !5
  %854 = load ptr, ptr %41, align 8, !tbaa !5
  %855 = getelementptr inbounds double, ptr %854, i64 1
  %856 = load ptr, ptr %33, align 8, !tbaa !5
  %857 = call i32 @dlascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %100, ptr noundef %75, ptr noundef %853, ptr noundef @c__1, ptr noundef %855, ptr noundef %856, ptr noundef %76)
  br label %858

858:                                              ; preds = %852, %849
  %859 = load ptr, ptr %33, align 8, !tbaa !5
  %860 = load i64, ptr %859, align 8, !tbaa !9
  store i64 %860, ptr %62, align 8, !tbaa !9
  store i64 1, ptr %65, align 8, !tbaa !9
  br label %861

861:                                              ; preds = %880, %858
  %862 = load i64, ptr %65, align 8, !tbaa !9
  %863 = load i64, ptr %62, align 8, !tbaa !9
  %864 = icmp sle i64 %862, %863
  br i1 %864, label %865, label %883

865:                                              ; preds = %861
  %866 = load ptr, ptr %31, align 8, !tbaa !5
  %867 = load ptr, ptr %39, align 8, !tbaa !5
  %868 = load i64, ptr %65, align 8, !tbaa !9
  %869 = getelementptr inbounds double, ptr %867, i64 %868
  %870 = load ptr, ptr %40, align 8, !tbaa !5
  %871 = load i64, ptr %65, align 8, !tbaa !9
  %872 = getelementptr inbounds double, ptr %870, i64 %871
  %873 = load ptr, ptr %41, align 8, !tbaa !5
  %874 = load i64, ptr %65, align 8, !tbaa !9
  %875 = getelementptr inbounds double, ptr %873, i64 %874
  %876 = call i64 (ptr, ptr, ptr, ...) %866(ptr noundef %869, ptr noundef %872, ptr noundef %875)
  %877 = load ptr, ptr %52, align 8, !tbaa !5
  %878 = load i64, ptr %65, align 8, !tbaa !9
  %879 = getelementptr inbounds i64, ptr %877, i64 %878
  store i64 %876, ptr %879, align 8, !tbaa !9
  br label %880

880:                                              ; preds = %865
  %881 = load i64, ptr %65, align 8, !tbaa !9
  %882 = add nsw i64 %881, 1
  store i64 %882, ptr %65, align 8, !tbaa !9
  br label %861, !llvm.loop !13

883:                                              ; preds = %861
  %884 = load ptr, ptr %49, align 8, !tbaa !5
  %885 = load i64, ptr %884, align 8, !tbaa !9
  %886 = load i64, ptr %78, align 8, !tbaa !9
  %887 = sub nsw i64 %885, %886
  %888 = add nsw i64 %887, 1
  store i64 %888, ptr %62, align 8, !tbaa !9
  %889 = load ptr, ptr %52, align 8, !tbaa !5
  %890 = getelementptr inbounds i64, ptr %889, i64 1
  %891 = load ptr, ptr %33, align 8, !tbaa !5
  %892 = load ptr, ptr %34, align 8, !tbaa !5
  %893 = load i64, ptr %55, align 8, !tbaa !9
  %894 = getelementptr inbounds double, ptr %892, i64 %893
  %895 = load ptr, ptr %35, align 8, !tbaa !5
  %896 = load ptr, ptr %36, align 8, !tbaa !5
  %897 = load i64, ptr %57, align 8, !tbaa !9
  %898 = getelementptr inbounds double, ptr %896, i64 %897
  %899 = load ptr, ptr %37, align 8, !tbaa !5
  %900 = load ptr, ptr %39, align 8, !tbaa !5
  %901 = getelementptr inbounds double, ptr %900, i64 1
  %902 = load ptr, ptr %40, align 8, !tbaa !5
  %903 = getelementptr inbounds double, ptr %902, i64 1
  %904 = load ptr, ptr %41, align 8, !tbaa !5
  %905 = getelementptr inbounds double, ptr %904, i64 1
  %906 = load ptr, ptr %42, align 8, !tbaa !5
  %907 = load i64, ptr %59, align 8, !tbaa !9
  %908 = getelementptr inbounds double, ptr %906, i64 %907
  %909 = load ptr, ptr %43, align 8, !tbaa !5
  %910 = load ptr, ptr %44, align 8, !tbaa !5
  %911 = load i64, ptr %61, align 8, !tbaa !9
  %912 = getelementptr inbounds double, ptr %910, i64 %911
  %913 = load ptr, ptr %45, align 8, !tbaa !5
  %914 = load ptr, ptr %38, align 8, !tbaa !5
  %915 = getelementptr inbounds [2 x double], ptr %69, i64 0, i64 0
  %916 = load ptr, ptr %48, align 8, !tbaa !5
  %917 = load i64, ptr %78, align 8, !tbaa !9
  %918 = getelementptr inbounds double, ptr %916, i64 %917
  %919 = load ptr, ptr %50, align 8, !tbaa !5
  %920 = getelementptr inbounds i64, ptr %919, i64 1
  %921 = load ptr, ptr %51, align 8, !tbaa !5
  %922 = call i32 @dtgsen_(ptr noundef %73, ptr noundef %83, ptr noundef %84, ptr noundef %890, ptr noundef %891, ptr noundef %894, ptr noundef %895, ptr noundef %898, ptr noundef %899, ptr noundef %901, ptr noundef %903, ptr noundef %905, ptr noundef %908, ptr noundef %909, ptr noundef %912, ptr noundef %913, ptr noundef %914, ptr noundef %67, ptr noundef %68, ptr noundef %915, ptr noundef %918, ptr noundef %62, ptr noundef %920, ptr noundef %921, ptr noundef %76)
  %923 = load i64, ptr %73, align 8, !tbaa !9
  %924 = icmp sge i64 %923, 1
  br i1 %924, label %925, label %945

925:                                              ; preds = %883
  %926 = load i64, ptr %102, align 8, !tbaa !9
  store i64 %926, ptr %62, align 8, !tbaa !9
  %927 = load ptr, ptr %38, align 8, !tbaa !5
  %928 = load i64, ptr %927, align 8, !tbaa !9
  %929 = shl i64 %928, 1
  %930 = load ptr, ptr %33, align 8, !tbaa !5
  %931 = load i64, ptr %930, align 8, !tbaa !9
  %932 = load ptr, ptr %38, align 8, !tbaa !5
  %933 = load i64, ptr %932, align 8, !tbaa !9
  %934 = sub nsw i64 %931, %933
  %935 = mul nsw i64 %929, %934
  store i64 %935, ptr %63, align 8, !tbaa !9
  %936 = load i64, ptr %62, align 8, !tbaa !9
  %937 = load i64, ptr %63, align 8, !tbaa !9
  %938 = icmp sge i64 %936, %937
  br i1 %938, label %939, label %941

939:                                              ; preds = %925
  %940 = load i64, ptr %62, align 8, !tbaa !9
  br label %943

941:                                              ; preds = %925
  %942 = load i64, ptr %63, align 8, !tbaa !9
  br label %943

943:                                              ; preds = %941, %939
  %944 = phi i64 [ %940, %939 ], [ %942, %941 ]
  store i64 %944, ptr %102, align 8, !tbaa !9
  br label %945

945:                                              ; preds = %943, %883
  %946 = load i64, ptr %76, align 8, !tbaa !9
  %947 = icmp eq i64 %946, -22
  br i1 %947, label %948, label %950

948:                                              ; preds = %945
  %949 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 -22, ptr %949, align 8, !tbaa !9
  br label %987

950:                                              ; preds = %945
  %951 = load i64, ptr %73, align 8, !tbaa !9
  %952 = icmp eq i64 %951, 1
  br i1 %952, label %956, label %953

953:                                              ; preds = %950
  %954 = load i64, ptr %73, align 8, !tbaa !9
  %955 = icmp eq i64 %954, 4
  br i1 %955, label %956, label %963

956:                                              ; preds = %953, %950
  %957 = load double, ptr %67, align 8, !tbaa !11
  %958 = load ptr, ptr %46, align 8, !tbaa !5
  %959 = getelementptr inbounds double, ptr %958, i64 1
  store double %957, ptr %959, align 8, !tbaa !11
  %960 = load double, ptr %68, align 8, !tbaa !11
  %961 = load ptr, ptr %46, align 8, !tbaa !5
  %962 = getelementptr inbounds double, ptr %961, i64 2
  store double %960, ptr %962, align 8, !tbaa !11
  br label %963

963:                                              ; preds = %956, %953
  %964 = load i64, ptr %73, align 8, !tbaa !9
  %965 = icmp eq i64 %964, 2
  br i1 %965, label %969, label %966

966:                                              ; preds = %963
  %967 = load i64, ptr %73, align 8, !tbaa !9
  %968 = icmp eq i64 %967, 4
  br i1 %968, label %969, label %978

969:                                              ; preds = %966, %963
  %970 = getelementptr inbounds [2 x double], ptr %69, i64 0, i64 0
  %971 = load double, ptr %970, align 16, !tbaa !11
  %972 = load ptr, ptr %47, align 8, !tbaa !5
  %973 = getelementptr inbounds double, ptr %972, i64 1
  store double %971, ptr %973, align 8, !tbaa !11
  %974 = getelementptr inbounds [2 x double], ptr %69, i64 0, i64 1
  %975 = load double, ptr %974, align 8, !tbaa !11
  %976 = load ptr, ptr %47, align 8, !tbaa !5
  %977 = getelementptr inbounds double, ptr %976, i64 2
  store double %975, ptr %977, align 8, !tbaa !11
  br label %978

978:                                              ; preds = %969, %966
  %979 = load i64, ptr %76, align 8, !tbaa !9
  %980 = icmp eq i64 %979, 1
  br i1 %980, label %981, label %986

981:                                              ; preds = %978
  %982 = load ptr, ptr %33, align 8, !tbaa !5
  %983 = load i64, ptr %982, align 8, !tbaa !9
  %984 = add nsw i64 %983, 3
  %985 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 %984, ptr %985, align 8, !tbaa !9
  br label %986

986:                                              ; preds = %981, %978
  br label %987

987:                                              ; preds = %986, %948
  br label %988

988:                                              ; preds = %987, %832
  %989 = load i64, ptr %83, align 8, !tbaa !9
  %990 = icmp ne i64 %989, 0
  br i1 %990, label %991, label %1005

991:                                              ; preds = %988
  %992 = load ptr, ptr %33, align 8, !tbaa !5
  %993 = load ptr, ptr %48, align 8, !tbaa !5
  %994 = load i64, ptr %80, align 8, !tbaa !9
  %995 = getelementptr inbounds double, ptr %993, i64 %994
  %996 = load ptr, ptr %48, align 8, !tbaa !5
  %997 = load i64, ptr %93, align 8, !tbaa !9
  %998 = getelementptr inbounds double, ptr %996, i64 %997
  %999 = load ptr, ptr %33, align 8, !tbaa !5
  %1000 = load ptr, ptr %42, align 8, !tbaa !5
  %1001 = load i64, ptr %59, align 8, !tbaa !9
  %1002 = getelementptr inbounds double, ptr %1000, i64 %1001
  %1003 = load ptr, ptr %43, align 8, !tbaa !5
  %1004 = call i32 @dggbak_(ptr noundef @.str.10, ptr noundef @.str.13, ptr noundef %992, ptr noundef %71, ptr noundef %70, ptr noundef %995, ptr noundef %998, ptr noundef %999, ptr noundef %1002, ptr noundef %1003, ptr noundef %76)
  br label %1005

1005:                                             ; preds = %991, %988
  %1006 = load i64, ptr %84, align 8, !tbaa !9
  %1007 = icmp ne i64 %1006, 0
  br i1 %1007, label %1008, label %1022

1008:                                             ; preds = %1005
  %1009 = load ptr, ptr %33, align 8, !tbaa !5
  %1010 = load ptr, ptr %48, align 8, !tbaa !5
  %1011 = load i64, ptr %80, align 8, !tbaa !9
  %1012 = getelementptr inbounds double, ptr %1010, i64 %1011
  %1013 = load ptr, ptr %48, align 8, !tbaa !5
  %1014 = load i64, ptr %93, align 8, !tbaa !9
  %1015 = getelementptr inbounds double, ptr %1013, i64 %1014
  %1016 = load ptr, ptr %33, align 8, !tbaa !5
  %1017 = load ptr, ptr %44, align 8, !tbaa !5
  %1018 = load i64, ptr %61, align 8, !tbaa !9
  %1019 = getelementptr inbounds double, ptr %1017, i64 %1018
  %1020 = load ptr, ptr %45, align 8, !tbaa !5
  %1021 = call i32 @dggbak_(ptr noundef @.str.10, ptr noundef @.str.16, ptr noundef %1009, ptr noundef %71, ptr noundef %70, ptr noundef %1012, ptr noundef %1015, ptr noundef %1016, ptr noundef %1019, ptr noundef %1020, ptr noundef %76)
  br label %1022

1022:                                             ; preds = %1008, %1005
  %1023 = load i64, ptr %87, align 8, !tbaa !9
  %1024 = icmp ne i64 %1023, 0
  br i1 %1024, label %1025, label %1188

1025:                                             ; preds = %1022
  %1026 = load ptr, ptr %33, align 8, !tbaa !5
  %1027 = load i64, ptr %1026, align 8, !tbaa !9
  store i64 %1027, ptr %62, align 8, !tbaa !9
  store i64 1, ptr %65, align 8, !tbaa !9
  br label %1028

1028:                                             ; preds = %1184, %1025
  %1029 = load i64, ptr %65, align 8, !tbaa !9
  %1030 = load i64, ptr %62, align 8, !tbaa !9
  %1031 = icmp sle i64 %1029, %1030
  br i1 %1031, label %1032, label %1187

1032:                                             ; preds = %1028
  %1033 = load ptr, ptr %40, align 8, !tbaa !5
  %1034 = load i64, ptr %65, align 8, !tbaa !9
  %1035 = getelementptr inbounds double, ptr %1033, i64 %1034
  %1036 = load double, ptr %1035, align 8, !tbaa !11
  %1037 = fcmp une double %1036, 0.000000e+00
  br i1 %1037, label %1038, label %1183

1038:                                             ; preds = %1032
  %1039 = load ptr, ptr %39, align 8, !tbaa !5
  %1040 = load i64, ptr %65, align 8, !tbaa !9
  %1041 = getelementptr inbounds double, ptr %1039, i64 %1040
  %1042 = load double, ptr %1041, align 8, !tbaa !11
  %1043 = load double, ptr %90, align 8, !tbaa !11
  %1044 = fdiv double %1042, %1043
  %1045 = load double, ptr %99, align 8, !tbaa !11
  %1046 = load double, ptr %74, align 8, !tbaa !11
  %1047 = fdiv double %1045, %1046
  %1048 = fcmp ogt double %1044, %1047
  br i1 %1048, label %1060, label %1049

1049:                                             ; preds = %1038
  %1050 = load double, ptr %89, align 8, !tbaa !11
  %1051 = load ptr, ptr %39, align 8, !tbaa !5
  %1052 = load i64, ptr %65, align 8, !tbaa !9
  %1053 = getelementptr inbounds double, ptr %1051, i64 %1052
  %1054 = load double, ptr %1053, align 8, !tbaa !11
  %1055 = fdiv double %1050, %1054
  %1056 = load double, ptr %74, align 8, !tbaa !11
  %1057 = load double, ptr %99, align 8, !tbaa !11
  %1058 = fdiv double %1056, %1057
  %1059 = fcmp ogt double %1055, %1058
  br i1 %1059, label %1060, label %1109

1060:                                             ; preds = %1049, %1038
  %1061 = load ptr, ptr %34, align 8, !tbaa !5
  %1062 = load i64, ptr %65, align 8, !tbaa !9
  %1063 = load i64, ptr %65, align 8, !tbaa !9
  %1064 = load i64, ptr %54, align 8, !tbaa !9
  %1065 = mul nsw i64 %1063, %1064
  %1066 = add nsw i64 %1062, %1065
  %1067 = getelementptr inbounds double, ptr %1061, i64 %1066
  %1068 = load double, ptr %1067, align 8, !tbaa !11
  %1069 = load ptr, ptr %39, align 8, !tbaa !5
  %1070 = load i64, ptr %65, align 8, !tbaa !9
  %1071 = getelementptr inbounds double, ptr %1069, i64 %1070
  %1072 = load double, ptr %1071, align 8, !tbaa !11
  %1073 = fdiv double %1068, %1072
  store double %1073, ptr %64, align 8, !tbaa !11
  %1074 = load double, ptr %64, align 8, !tbaa !11
  %1075 = fcmp oge double %1074, 0.000000e+00
  br i1 %1075, label %1076, label %1078

1076:                                             ; preds = %1060
  %1077 = load double, ptr %64, align 8, !tbaa !11
  br label %1081

1078:                                             ; preds = %1060
  %1079 = load double, ptr %64, align 8, !tbaa !11
  %1080 = fneg double %1079
  br label %1081

1081:                                             ; preds = %1078, %1076
  %1082 = phi double [ %1077, %1076 ], [ %1080, %1078 ]
  %1083 = load ptr, ptr %48, align 8, !tbaa !5
  %1084 = getelementptr inbounds double, ptr %1083, i64 1
  store double %1082, ptr %1084, align 8, !tbaa !11
  %1085 = load ptr, ptr %48, 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 %41, align 8, !tbaa !5
  %1089 = load i64, ptr %65, 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
  %1093 = load ptr, ptr %48, align 8, !tbaa !5
  %1094 = getelementptr inbounds double, ptr %1093, i64 1
  %1095 = load double, ptr %1094, align 8, !tbaa !11
  %1096 = load ptr, ptr %39, align 8, !tbaa !5
  %1097 = load i64, ptr %65, align 8, !tbaa !9
  %1098 = getelementptr inbounds double, ptr %1096, i64 %1097
  %1099 = load double, ptr %1098, align 8, !tbaa !11
  %1100 = fmul double %1099, %1095
  store double %1100, ptr %1098, align 8, !tbaa !11
  %1101 = load ptr, ptr %48, align 8, !tbaa !5
  %1102 = getelementptr inbounds double, ptr %1101, i64 1
  %1103 = load double, ptr %1102, align 8, !tbaa !11
  %1104 = load ptr, ptr %40, align 8, !tbaa !5
  %1105 = load i64, ptr %65, align 8, !tbaa !9
  %1106 = getelementptr inbounds double, ptr %1104, i64 %1105
  %1107 = load double, ptr %1106, align 8, !tbaa !11
  %1108 = fmul double %1107, %1103
  store double %1108, ptr %1106, align 8, !tbaa !11
  br label %1182

1109:                                             ; preds = %1049
  %1110 = load ptr, ptr %40, align 8, !tbaa !5
  %1111 = load i64, ptr %65, align 8, !tbaa !9
  %1112 = getelementptr inbounds double, ptr %1110, i64 %1111
  %1113 = load double, ptr %1112, align 8, !tbaa !11
  %1114 = load double, ptr %90, align 8, !tbaa !11
  %1115 = fdiv double %1113, %1114
  %1116 = load double, ptr %99, align 8, !tbaa !11
  %1117 = load double, ptr %74, align 8, !tbaa !11
  %1118 = fdiv double %1116, %1117
  %1119 = fcmp ogt double %1115, %1118
  br i1 %1119, label %1131, label %1120

1120:                                             ; preds = %1109
  %1121 = load double, ptr %89, align 8, !tbaa !11
  %1122 = load ptr, ptr %40, align 8, !tbaa !5
  %1123 = load i64, ptr %65, align 8, !tbaa !9
  %1124 = getelementptr inbounds double, ptr %1122, i64 %1123
  %1125 = load double, ptr %1124, align 8, !tbaa !11
  %1126 = fdiv double %1121, %1125
  %1127 = load double, ptr %74, align 8, !tbaa !11
  %1128 = load double, ptr %99, align 8, !tbaa !11
  %1129 = fdiv double %1127, %1128
  %1130 = fcmp ogt double %1126, %1129
  br i1 %1130, label %1131, label %1181

1131:                                             ; preds = %1120, %1109
  %1132 = load ptr, ptr %34, align 8, !tbaa !5
  %1133 = load i64, ptr %65, align 8, !tbaa !9
  %1134 = load i64, ptr %65, align 8, !tbaa !9
  %1135 = add nsw i64 %1134, 1
  %1136 = load i64, ptr %54, align 8, !tbaa !9
  %1137 = mul nsw i64 %1135, %1136
  %1138 = add nsw i64 %1133, %1137
  %1139 = getelementptr inbounds double, ptr %1132, i64 %1138
  %1140 = load double, ptr %1139, align 8, !tbaa !11
  %1141 = load ptr, ptr %40, align 8, !tbaa !5
  %1142 = load i64, ptr %65, align 8, !tbaa !9
  %1143 = getelementptr inbounds double, ptr %1141, i64 %1142
  %1144 = load double, ptr %1143, align 8, !tbaa !11
  %1145 = fdiv double %1140, %1144
  store double %1145, ptr %64, align 8, !tbaa !11
  %1146 = load double, ptr %64, align 8, !tbaa !11
  %1147 = fcmp oge double %1146, 0.000000e+00
  br i1 %1147, label %1148, label %1150

1148:                                             ; preds = %1131
  %1149 = load double, ptr %64, align 8, !tbaa !11
  br label %1153

1150:                                             ; preds = %1131
  %1151 = load double, ptr %64, align 8, !tbaa !11
  %1152 = fneg double %1151
  br label %1153

1153:                                             ; preds = %1150, %1148
  %1154 = phi double [ %1149, %1148 ], [ %1152, %1150 ]
  %1155 = load ptr, ptr %48, align 8, !tbaa !5
  %1156 = getelementptr inbounds double, ptr %1155, i64 1
  store double %1154, ptr %1156, align 8, !tbaa !11
  %1157 = load ptr, ptr %48, align 8, !tbaa !5
  %1158 = getelementptr inbounds double, ptr %1157, i64 1
  %1159 = load double, ptr %1158, align 8, !tbaa !11
  %1160 = load ptr, ptr %41, align 8, !tbaa !5
  %1161 = load i64, ptr %65, align 8, !tbaa !9
  %1162 = getelementptr inbounds double, ptr %1160, i64 %1161
  %1163 = load double, ptr %1162, align 8, !tbaa !11
  %1164 = fmul double %1163, %1159
  store double %1164, ptr %1162, align 8, !tbaa !11
  %1165 = load ptr, ptr %48, align 8, !tbaa !5
  %1166 = getelementptr inbounds double, ptr %1165, i64 1
  %1167 = load double, ptr %1166, align 8, !tbaa !11
  %1168 = load ptr, ptr %39, align 8, !tbaa !5
  %1169 = load i64, ptr %65, align 8, !tbaa !9
  %1170 = getelementptr inbounds double, ptr %1168, i64 %1169
  %1171 = load double, ptr %1170, align 8, !tbaa !11
  %1172 = fmul double %1171, %1167
  store double %1172, ptr %1170, align 8, !tbaa !11
  %1173 = load ptr, ptr %48, align 8, !tbaa !5
  %1174 = getelementptr inbounds double, ptr %1173, i64 1
  %1175 = load double, ptr %1174, align 8, !tbaa !11
  %1176 = load ptr, ptr %40, align 8, !tbaa !5
  %1177 = load i64, ptr %65, align 8, !tbaa !9
  %1178 = getelementptr inbounds double, ptr %1176, i64 %1177
  %1179 = load double, ptr %1178, align 8, !tbaa !11
  %1180 = fmul double %1179, %1175
  store double %1180, ptr %1178, align 8, !tbaa !11
  br label %1181

1181:                                             ; preds = %1153, %1120
  br label %1182

1182:                                             ; preds = %1181, %1081
  br label %1183

1183:                                             ; preds = %1182, %1032
  br label %1184

1184:                                             ; preds = %1183
  %1185 = load i64, ptr %65, align 8, !tbaa !9
  %1186 = add nsw i64 %1185, 1
  store i64 %1186, ptr %65, align 8, !tbaa !9
  br label %1028, !llvm.loop !15

1187:                                             ; preds = %1028
  br label %1188

1188:                                             ; preds = %1187, %1022
  %1189 = load i64, ptr %88, align 8, !tbaa !9
  %1190 = icmp ne i64 %1189, 0
  br i1 %1190, label %1191, label %1281

1191:                                             ; preds = %1188
  %1192 = load ptr, ptr %33, align 8, !tbaa !5
  %1193 = load i64, ptr %1192, align 8, !tbaa !9
  store i64 %1193, ptr %62, align 8, !tbaa !9
  store i64 1, ptr %65, align 8, !tbaa !9
  br label %1194

1194:                                             ; preds = %1277, %1191
  %1195 = load i64, ptr %65, align 8, !tbaa !9
  %1196 = load i64, ptr %62, align 8, !tbaa !9
  %1197 = icmp sle i64 %1195, %1196
  br i1 %1197, label %1198, label %1280

1198:                                             ; preds = %1194
  %1199 = load ptr, ptr %40, align 8, !tbaa !5
  %1200 = load i64, ptr %65, align 8, !tbaa !9
  %1201 = getelementptr inbounds double, ptr %1199, i64 %1200
  %1202 = load double, ptr %1201, align 8, !tbaa !11
  %1203 = fcmp une double %1202, 0.000000e+00
  br i1 %1203, label %1204, label %1276

1204:                                             ; preds = %1198
  %1205 = load ptr, ptr %41, align 8, !tbaa !5
  %1206 = load i64, ptr %65, align 8, !tbaa !9
  %1207 = getelementptr inbounds double, ptr %1205, i64 %1206
  %1208 = load double, ptr %1207, align 8, !tbaa !11
  %1209 = load double, ptr %90, align 8, !tbaa !11
  %1210 = fdiv double %1208, %1209
  %1211 = load double, ptr %100, align 8, !tbaa !11
  %1212 = load double, ptr %75, align 8, !tbaa !11
  %1213 = fdiv double %1211, %1212
  %1214 = fcmp ogt double %1210, %1213
  br i1 %1214, label %1226, label %1215

1215:                                             ; preds = %1204
  %1216 = load double, ptr %89, align 8, !tbaa !11
  %1217 = load ptr, ptr %41, align 8, !tbaa !5
  %1218 = load i64, ptr %65, align 8, !tbaa !9
  %1219 = getelementptr inbounds double, ptr %1217, i64 %1218
  %1220 = load double, ptr %1219, align 8, !tbaa !11
  %1221 = fdiv double %1216, %1220
  %1222 = load double, ptr %75, align 8, !tbaa !11
  %1223 = load double, ptr %100, align 8, !tbaa !11
  %1224 = fdiv double %1222, %1223
  %1225 = fcmp ogt double %1221, %1224
  br i1 %1225, label %1226, label %1275

1226:                                             ; preds = %1215, %1204
  %1227 = load ptr, ptr %36, align 8, !tbaa !5
  %1228 = load i64, ptr %65, align 8, !tbaa !9
  %1229 = load i64, ptr %65, align 8, !tbaa !9
  %1230 = load i64, ptr %56, align 8, !tbaa !9
  %1231 = mul nsw i64 %1229, %1230
  %1232 = add nsw i64 %1228, %1231
  %1233 = getelementptr inbounds double, ptr %1227, i64 %1232
  %1234 = load double, ptr %1233, align 8, !tbaa !11
  %1235 = load ptr, ptr %41, align 8, !tbaa !5
  %1236 = load i64, ptr %65, align 8, !tbaa !9
  %1237 = getelementptr inbounds double, ptr %1235, i64 %1236
  %1238 = load double, ptr %1237, align 8, !tbaa !11
  %1239 = fdiv double %1234, %1238
  store double %1239, ptr %64, align 8, !tbaa !11
  %1240 = load double, ptr %64, align 8, !tbaa !11
  %1241 = fcmp oge double %1240, 0.000000e+00
  br i1 %1241, label %1242, label %1244

1242:                                             ; preds = %1226
  %1243 = load double, ptr %64, align 8, !tbaa !11
  br label %1247

1244:                                             ; preds = %1226
  %1245 = load double, ptr %64, align 8, !tbaa !11
  %1246 = fneg double %1245
  br label %1247

1247:                                             ; preds = %1244, %1242
  %1248 = phi double [ %1243, %1242 ], [ %1246, %1244 ]
  %1249 = load ptr, ptr %48, align 8, !tbaa !5
  %1250 = getelementptr inbounds double, ptr %1249, i64 1
  store double %1248, ptr %1250, align 8, !tbaa !11
  %1251 = load ptr, ptr %48, align 8, !tbaa !5
  %1252 = getelementptr inbounds double, ptr %1251, i64 1
  %1253 = load double, ptr %1252, align 8, !tbaa !11
  %1254 = load ptr, ptr %41, align 8, !tbaa !5
  %1255 = load i64, ptr %65, align 8, !tbaa !9
  %1256 = getelementptr inbounds double, ptr %1254, i64 %1255
  %1257 = load double, ptr %1256, align 8, !tbaa !11
  %1258 = fmul double %1257, %1253
  store double %1258, ptr %1256, align 8, !tbaa !11
  %1259 = load ptr, ptr %48, align 8, !tbaa !5
  %1260 = getelementptr inbounds double, ptr %1259, i64 1
  %1261 = load double, ptr %1260, align 8, !tbaa !11
  %1262 = load ptr, ptr %39, align 8, !tbaa !5
  %1263 = load i64, ptr %65, align 8, !tbaa !9
  %1264 = getelementptr inbounds double, ptr %1262, i64 %1263
  %1265 = load double, ptr %1264, align 8, !tbaa !11
  %1266 = fmul double %1265, %1261
  store double %1266, ptr %1264, align 8, !tbaa !11
  %1267 = load ptr, ptr %48, align 8, !tbaa !5
  %1268 = getelementptr inbounds double, ptr %1267, i64 1
  %1269 = load double, ptr %1268, align 8, !tbaa !11
  %1270 = load ptr, ptr %40, align 8, !tbaa !5
  %1271 = load i64, ptr %65, align 8, !tbaa !9
  %1272 = getelementptr inbounds double, ptr %1270, i64 %1271
  %1273 = load double, ptr %1272, align 8, !tbaa !11
  %1274 = fmul double %1273, %1269
  store double %1274, ptr %1272, align 8, !tbaa !11
  br label %1275

1275:                                             ; preds = %1247, %1215
  br label %1276

1276:                                             ; preds = %1275, %1198
  br label %1277

1277:                                             ; preds = %1276
  %1278 = load i64, ptr %65, align 8, !tbaa !9
  %1279 = add nsw i64 %1278, 1
  store i64 %1279, ptr %65, align 8, !tbaa !9
  br label %1194, !llvm.loop !16

1280:                                             ; preds = %1194
  br label %1281

1281:                                             ; preds = %1280, %1188
  %1282 = load i64, ptr %87, align 8, !tbaa !9
  %1283 = icmp ne i64 %1282, 0
  br i1 %1283, label %1284, label %1302

1284:                                             ; preds = %1281
  %1285 = load ptr, ptr %33, align 8, !tbaa !5
  %1286 = load ptr, ptr %33, align 8, !tbaa !5
  %1287 = load ptr, ptr %34, align 8, !tbaa !5
  %1288 = load i64, ptr %55, align 8, !tbaa !9
  %1289 = getelementptr inbounds double, ptr %1287, i64 %1288
  %1290 = load ptr, ptr %35, align 8, !tbaa !5
  %1291 = call i32 @dlascl_(ptr noundef @.str.17, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %99, ptr noundef %74, ptr noundef %1285, ptr noundef %1286, ptr noundef %1289, ptr noundef %1290, ptr noundef %76)
  %1292 = load ptr, ptr %33, align 8, !tbaa !5
  %1293 = load ptr, ptr %39, align 8, !tbaa !5
  %1294 = getelementptr inbounds double, ptr %1293, i64 1
  %1295 = load ptr, ptr %33, align 8, !tbaa !5
  %1296 = call i32 @dlascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %99, ptr noundef %74, ptr noundef %1292, ptr noundef @c__1, ptr noundef %1294, ptr noundef %1295, ptr noundef %76)
  %1297 = load ptr, ptr %33, align 8, !tbaa !5
  %1298 = load ptr, ptr %40, align 8, !tbaa !5
  %1299 = getelementptr inbounds double, ptr %1298, i64 1
  %1300 = load ptr, ptr %33, align 8, !tbaa !5
  %1301 = call i32 @dlascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %99, ptr noundef %74, ptr noundef %1297, ptr noundef @c__1, ptr noundef %1299, ptr noundef %1300, ptr noundef %76)
  br label %1302

1302:                                             ; preds = %1284, %1281
  %1303 = load i64, ptr %88, align 8, !tbaa !9
  %1304 = icmp ne i64 %1303, 0
  br i1 %1304, label %1305, label %1318

1305:                                             ; preds = %1302
  %1306 = load ptr, ptr %33, align 8, !tbaa !5
  %1307 = load ptr, ptr %33, align 8, !tbaa !5
  %1308 = load ptr, ptr %36, align 8, !tbaa !5
  %1309 = load i64, ptr %57, align 8, !tbaa !9
  %1310 = getelementptr inbounds double, ptr %1308, i64 %1309
  %1311 = load ptr, ptr %37, align 8, !tbaa !5
  %1312 = call i32 @dlascl_(ptr noundef @.str.18, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %100, ptr noundef %75, ptr noundef %1306, ptr noundef %1307, ptr noundef %1310, ptr noundef %1311, ptr noundef %76)
  %1313 = load ptr, ptr %33, align 8, !tbaa !5
  %1314 = load ptr, ptr %41, align 8, !tbaa !5
  %1315 = getelementptr inbounds double, ptr %1314, i64 1
  %1316 = load ptr, ptr %33, align 8, !tbaa !5
  %1317 = call i32 @dlascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %100, ptr noundef %75, ptr noundef %1313, ptr noundef @c__1, ptr noundef %1315, ptr noundef %1316, ptr noundef %76)
  br label %1318

1318:                                             ; preds = %1305, %1302
  %1319 = load i64, ptr %105, align 8, !tbaa !9
  %1320 = icmp ne i64 %1319, 0
  br i1 %1320, label %1321, label %1406

1321:                                             ; preds = %1318
  store i64 1, ptr %98, align 8, !tbaa !9
  store i64 1, ptr %86, align 8, !tbaa !9
  %1322 = load ptr, ptr %38, align 8, !tbaa !5
  store i64 0, ptr %1322, align 8, !tbaa !9
  store i64 0, ptr %66, align 8, !tbaa !9
  %1323 = load ptr, ptr %33, align 8, !tbaa !5
  %1324 = load i64, ptr %1323, align 8, !tbaa !9
  store i64 %1324, ptr %62, align 8, !tbaa !9
  store i64 1, ptr %65, align 8, !tbaa !9
  br label %1325

1325:                                             ; preds = %1402, %1321
  %1326 = load i64, ptr %65, align 8, !tbaa !9
  %1327 = load i64, ptr %62, align 8, !tbaa !9
  %1328 = icmp sle i64 %1326, %1327
  br i1 %1328, label %1329, label %1405

1329:                                             ; preds = %1325
  %1330 = load ptr, ptr %31, align 8, !tbaa !5
  %1331 = load ptr, ptr %39, align 8, !tbaa !5
  %1332 = load i64, ptr %65, align 8, !tbaa !9
  %1333 = getelementptr inbounds double, ptr %1331, i64 %1332
  %1334 = load ptr, ptr %40, align 8, !tbaa !5
  %1335 = load i64, ptr %65, align 8, !tbaa !9
  %1336 = getelementptr inbounds double, ptr %1334, i64 %1335
  %1337 = load ptr, ptr %41, align 8, !tbaa !5
  %1338 = load i64, ptr %65, align 8, !tbaa !9
  %1339 = getelementptr inbounds double, ptr %1337, i64 %1338
  %1340 = call i64 (ptr, ptr, ptr, ...) %1330(ptr noundef %1333, ptr noundef %1336, ptr noundef %1339)
  store i64 %1340, ptr %82, align 8, !tbaa !9
  %1341 = load ptr, ptr %40, align 8, !tbaa !5
  %1342 = load i64, ptr %65, align 8, !tbaa !9
  %1343 = getelementptr inbounds double, ptr %1341, i64 %1342
  %1344 = load double, ptr %1343, align 8, !tbaa !11
  %1345 = fcmp oeq double %1344, 0.000000e+00
  br i1 %1345, label %1346, label %1365

1346:                                             ; preds = %1329
  %1347 = load i64, ptr %82, align 8, !tbaa !9
  %1348 = icmp ne i64 %1347, 0
  br i1 %1348, label %1349, label %1353

1349:                                             ; preds = %1346
  %1350 = load ptr, ptr %38, align 8, !tbaa !5
  %1351 = load i64, ptr %1350, align 8, !tbaa !9
  %1352 = add nsw i64 %1351, 1
  store i64 %1352, ptr %1350, align 8, !tbaa !9
  br label %1353

1353:                                             ; preds = %1349, %1346
  store i64 0, ptr %66, align 8, !tbaa !9
  %1354 = load i64, ptr %82, align 8, !tbaa !9
  %1355 = icmp ne i64 %1354, 0
  br i1 %1355, label %1356, label %1364

1356:                                             ; preds = %1353
  %1357 = load i64, ptr %98, align 8, !tbaa !9
  %1358 = icmp ne i64 %1357, 0
  br i1 %1358, label %1364, label %1359

1359:                                             ; preds = %1356
  %1360 = load ptr, ptr %33, align 8, !tbaa !5
  %1361 = load i64, ptr %1360, align 8, !tbaa !9
  %1362 = add nsw i64 %1361, 2
  %1363 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 %1362, ptr %1363, align 8, !tbaa !9
  br label %1364

1364:                                             ; preds = %1359, %1356, %1353
  br label %1399

1365:                                             ; preds = %1329
  %1366 = load i64, ptr %66, align 8, !tbaa !9
  %1367 = icmp eq i64 %1366, 1
  br i1 %1367, label %1368, label %1397

1368:                                             ; preds = %1365
  %1369 = load i64, ptr %82, align 8, !tbaa !9
  %1370 = icmp ne i64 %1369, 0
  br i1 %1370, label %1374, label %1371

1371:                                             ; preds = %1368
  %1372 = load i64, ptr %98, align 8, !tbaa !9
  %1373 = icmp ne i64 %1372, 0
  br label %1374

1374:                                             ; preds = %1371, %1368
  %1375 = phi i1 [ true, %1368 ], [ %1373, %1371 ]
  %1376 = zext i1 %1375 to i32
  %1377 = sext i32 %1376 to i64
  store i64 %1377, ptr %82, align 8, !tbaa !9
  %1378 = load i64, ptr %82, align 8, !tbaa !9
  store i64 %1378, ptr %98, align 8, !tbaa !9
  %1379 = load i64, ptr %82, align 8, !tbaa !9
  %1380 = icmp ne i64 %1379, 0
  br i1 %1380, label %1381, label %1385

1381:                                             ; preds = %1374
  %1382 = load ptr, ptr %38, align 8, !tbaa !5
  %1383 = load i64, ptr %1382, align 8, !tbaa !9
  %1384 = add nsw i64 %1383, 2
  store i64 %1384, ptr %1382, align 8, !tbaa !9
  br label %1385

1385:                                             ; preds = %1381, %1374
  store i64 -1, ptr %66, align 8, !tbaa !9
  %1386 = load i64, ptr %82, align 8, !tbaa !9
  %1387 = icmp ne i64 %1386, 0
  br i1 %1387, label %1388, label %1396

1388:                                             ; preds = %1385
  %1389 = load i64, ptr %86, align 8, !tbaa !9
  %1390 = icmp ne i64 %1389, 0
  br i1 %1390, label %1396, label %1391

1391:                                             ; preds = %1388
  %1392 = load ptr, ptr %33, align 8, !tbaa !5
  %1393 = load i64, ptr %1392, align 8, !tbaa !9
  %1394 = add nsw i64 %1393, 2
  %1395 = load ptr, ptr %53, align 8, !tbaa !5
  store i64 %1394, ptr %1395, align 8, !tbaa !9
  br label %1396

1396:                                             ; preds = %1391, %1388, %1385
  br label %1398

1397:                                             ; preds = %1365
  store i64 1, ptr %66, align 8, !tbaa !9
  br label %1398

1398:                                             ; preds = %1397, %1396
  br label %1399

1399:                                             ; preds = %1398, %1364
  %1400 = load i64, ptr %98, align 8, !tbaa !9
  store i64 %1400, ptr %86, align 8, !tbaa !9
  %1401 = load i64, ptr %82, align 8, !tbaa !9
  store i64 %1401, ptr %98, align 8, !tbaa !9
  br label %1402

1402:                                             ; preds = %1399
  %1403 = load i64, ptr %65, align 8, !tbaa !9
  %1404 = add nsw i64 %1403, 1
  store i64 %1404, ptr %65, align 8, !tbaa !9
  br label %1325, !llvm.loop !17

1405:                                             ; preds = %1325
  br label %1406

1406:                                             ; preds = %1405, %1318
  br label %1407

1407:                                             ; preds = %1406, %831
  %1408 = load i64, ptr %102, align 8, !tbaa !9
  %1409 = sitofp i64 %1408 to double
  %1410 = load ptr, ptr %48, align 8, !tbaa !5
  %1411 = getelementptr inbounds double, ptr %1410, i64 1
  store double %1409, ptr %1411, align 8, !tbaa !11
  %1412 = load i64, ptr %96, align 8, !tbaa !9
  %1413 = load ptr, ptr %50, align 8, !tbaa !5
  %1414 = getelementptr inbounds i64, ptr %1413, i64 1
  store i64 %1412, ptr %1414, align 8, !tbaa !9
  store i32 0, ptr %27, align 4
  store i32 1, ptr %108, align 4
  br label %1415

1415:                                             ; preds = %1407, %497, %491, %483
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  %1416 = load i32, ptr %27, align 4
  ret i32 %1416
}

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

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

61:                                               ; preds = %26
  store i64 0, ptr %39, align 8, !tbaa !5
  br label %66

62:                                               ; preds = %26
  %63 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #5
  %.not537 = icmp eq i64 %63, 0
  br i1 %.not537, label %65, label %64

64:                                               ; preds = %62
  store i64 1, ptr %39, align 8, !tbaa !5
  br label %66

65:                                               ; preds = %62
  store i64 0, ptr %39, align 8, !tbaa !5
  br label %66

66:                                               ; preds = %64, %65, %61
  %.not545 = phi i1 [ false, %61 ], [ true, %64 ], [ false, %65 ]
  %.not549 = phi i1 [ true, %61 ], [ false, %64 ], [ true, %65 ]
  %67 = phi i1 [ false, %61 ], [ false, %64 ], [ true, %65 ]
  %68 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #5
  %.not538 = icmp eq i64 %68, 0
  br i1 %.not538, label %70, label %69

69:                                               ; preds = %66
  store i64 0, ptr %40, align 8, !tbaa !5
  br label %74

70:                                               ; preds = %66
  %71 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #5
  %.not539 = icmp eq i64 %71, 0
  br i1 %.not539, label %73, label %72

72:                                               ; preds = %70
  store i64 1, ptr %40, align 8, !tbaa !5
  br label %74

73:                                               ; preds = %70
  store i64 0, ptr %40, align 8, !tbaa !5
  br label %74

74:                                               ; preds = %72, %73, %69
  %.not546 = phi i1 [ false, %69 ], [ true, %72 ], [ false, %73 ]
  %75 = phi i1 [ false, %69 ], [ false, %72 ], [ true, %73 ]
  %76 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.2) #5
  %77 = tail call i64 @lsame_(ptr noundef %4, ptr noundef nonnull @.str) #5
  %78 = tail call i64 @lsame_(ptr noundef %4, ptr noundef nonnull @.str.3) #5
  %79 = tail call i64 @lsame_(ptr noundef %4, ptr noundef nonnull @.str.1) #5
  %80 = tail call i64 @lsame_(ptr noundef %4, ptr noundef nonnull @.str.4) #5
  %81 = load i64, ptr %21, align 8, !tbaa !5
  %82 = icmp eq i64 %81, -1
  br i1 %82, label %86, label %83

83:                                               ; preds = %74
  %84 = load i64, ptr %23, align 8, !tbaa !5
  %85 = icmp eq i64 %84, -1
  br label %86

86:                                               ; preds = %83, %74
  %87 = phi i1 [ true, %74 ], [ %85, %83 ]
  %88 = icmp eq i64 %77, 0
  br i1 %88, label %90, label %89

89:                                               ; preds = %86
  store i64 0, ptr %34, align 8, !tbaa !5
  br label %96

90:                                               ; preds = %86
  %.not540 = icmp eq i64 %78, 0
  br i1 %.not540, label %92, label %91

91:                                               ; preds = %90
  store i64 1, ptr %34, align 8, !tbaa !5
  br label %96

92:                                               ; preds = %90
  %.not541 = icmp eq i64 %79, 0
  br i1 %.not541, label %94, label %93

93:                                               ; preds = %92
  store i64 2, ptr %34, align 8, !tbaa !5
  br label %96

94:                                               ; preds = %92
  %.not542 = icmp eq i64 %80, 0
  br i1 %.not542, label %96, label %95

95:                                               ; preds = %94
  store i64 4, ptr %34, align 8, !tbaa !5
  br label %96

96:                                               ; preds = %91, %94, %95, %93, %89
  %97 = phi i1 [ true, %91 ], [ false, %94 ], [ true, %95 ], [ true, %93 ], [ false, %89 ]
  store i64 0, ptr %25, align 8, !tbaa !5
  %brmerge = or i1 %67, %75
  %.mux = select i1 %67, i64 -1, i64 -2
  br i1 %brmerge, label %.thread583.sink.split, label %98

98:                                               ; preds = %96
  %.not544 = icmp eq i64 %76, 0
  br i1 %.not544, label %99, label %101

99:                                               ; preds = %98
  %100 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str) #5
  %.not543 = icmp eq i64 %100, 0
  br i1 %.not543, label %.thread583.sink.split, label %101

101:                                              ; preds = %99, %98
  %102 = icmp eq i64 %78, 0
  %or.cond.not = select i1 %88, i1 %102, i1 false
  %103 = icmp eq i64 %79, 0
  %or.cond3 = select i1 %or.cond.not, i1 %103, i1 false
  %104 = icmp eq i64 %80, 0
  %or.cond5 = select i1 %or.cond3, i1 %104, i1 false
  %105 = or i64 %77, %76
  %or.cond7.not = icmp eq i64 %105, 0
  %or.cond570 = select i1 %or.cond5, i1 true, i1 %or.cond7.not
  br i1 %or.cond570, label %.thread583.sink.split, label %106

106:                                              ; preds = %101
  %107 = load i64, ptr %5, align 8, !tbaa !5
  %108 = icmp slt i64 %107, 0
  br i1 %108, label %.thread583.sink.split, label %109

109:                                              ; preds = %106
  %110 = load i64, ptr %7, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %107, i64 1)
  %111 = icmp slt i64 %110, %spec.select
  br i1 %111, label %.thread583.sink.split, label %112

112:                                              ; preds = %109
  %113 = load i64, ptr %9, align 8, !tbaa !5
  %114 = icmp slt i64 %113, %spec.select
  br i1 %114, label %.thread583.sink.split, label %115

115:                                              ; preds = %112
  %116 = load i64, ptr %15, align 8, !tbaa !5
  %117 = icmp slt i64 %116, 1
  %118 = icmp ult i64 %116, %107
  %or.cond605 = and i1 %118, %.not545
  %or.cond643 = or i1 %117, %or.cond605
  br i1 %or.cond643, label %.thread583.sink.split, label %119

119:                                              ; preds = %115
  %120 = load i64, ptr %17, align 8, !tbaa !5
  %121 = icmp slt i64 %120, 1
  %122 = icmp ult i64 %120, %107
  %or.cond606 = and i1 %122, %.not546
  %or.cond644 = or i1 %121, %or.cond606
  br i1 %or.cond644, label %.thread583.sink.split, label %123

123:                                              ; preds = %119
  %.pr = load i64, ptr %25, align 8, !tbaa !5
  %124 = icmp eq i64 %.pr, 0
  br i1 %124, label %125, label %.thread583

125:                                              ; preds = %123
  %.not642 = icmp eq i64 %107, 0
  br i1 %.not642, label %154, label %126

126:                                              ; preds = %125
  %127 = shl i64 %107, 3
  %128 = mul nuw nsw i64 %107, 6
  %129 = add nuw nsw i64 %128, 16
  %130 = tail call i64 @llvm.smax.i64(i64 %127, i64 %129)
  %131 = sub nsw i64 %130, %107
  %132 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull %5, ptr noundef nonnull @c__1, ptr noundef nonnull %5, ptr noundef nonnull @c__0) #5
  %133 = mul nsw i64 %132, %107
  %134 = add nsw i64 %131, %133
  store i64 %134, ptr %27, align 8, !tbaa !5
  %135 = load i64, ptr %5, align 8, !tbaa !5
  %136 = sub nsw i64 %130, %135
  %137 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.6, ptr noundef nonnull %5, ptr noundef nonnull @c__1, ptr noundef nonnull %5, ptr noundef nonnull @c_n1) #5
  %138 = mul nsw i64 %137, %135
  %139 = add nsw i64 %138, %136
  store i64 %139, ptr %28, align 8, !tbaa !5
  %140 = tail call i64 @llvm.smax.i64(i64 %134, i64 %139)
  br i1 %.not549, label %148, label %141

141:                                              ; preds = %126
  store i64 %140, ptr %27, align 8, !tbaa !5
  %142 = load i64, ptr %5, align 8, !tbaa !5
  %143 = sub nsw i64 %130, %142
  %144 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.6, ptr noundef nonnull %5, ptr noundef nonnull @c__1, ptr noundef nonnull %5, ptr noundef nonnull @c_n1) #5
  %145 = mul nsw i64 %144, %142
  %146 = add nsw i64 %145, %143
  store i64 %146, ptr %28, align 8, !tbaa !5
  %147 = tail call i64 @llvm.smax.i64(i64 %140, i64 %146)
  br label %148

148:                                              ; preds = %141, %126
  %.0497 = phi i64 [ %147, %141 ], [ %140, %126 ]
  br i1 %97, label %149, label %154

149:                                              ; preds = %148
  store i64 %.0497, ptr %27, align 8, !tbaa !5
  %150 = load i64, ptr %5, align 8, !tbaa !5
  %151 = mul nsw i64 %150, %150
  %152 = lshr i64 %151, 1
  store i64 %152, ptr %28, align 8, !tbaa !5
  %153 = tail call i64 @llvm.smax.i64(i64 %.0497, i64 %152)
  br label %154

154:                                              ; preds = %125, %148, %149
  %.0509 = phi i64 [ %153, %149 ], [ %.0497, %148 ], [ 1, %125 ]
  %.0498 = phi i64 [ %130, %149 ], [ %130, %148 ], [ 1, %125 ]
  %.1 = phi i64 [ %.0497, %149 ], [ %.0497, %148 ], [ 1, %125 ]
  %155 = sitofp i64 %.0509 to double
  store double %155, ptr %20, align 8, !tbaa !9
  br i1 %88, label %156, label %160

156:                                              ; preds = %154
  %157 = load i64, ptr %5, align 8, !tbaa !5
  %158 = icmp eq i64 %157, 0
  %159 = add nsw i64 %157, 6
  %spec.select577 = select i1 %158, i64 1, i64 %159
  br label %160

160:                                              ; preds = %156, %154
  %.0501 = phi i64 [ 1, %154 ], [ %spec.select577, %156 ]
  store i64 %.0501, ptr %22, align 8, !tbaa !5
  %161 = load i64, ptr %21, align 8, !tbaa !5
  %162 = icmp sge i64 %161, %.0498
  %or.cond9 = select i1 %162, i1 true, i1 %87
  br i1 %or.cond9, label %163, label %.thread583.sink.split

163:                                              ; preds = %160
  %164 = load i64, ptr %23, align 8, !tbaa !5
  %165 = icmp sge i64 %164, %.0501
  %or.cond11 = select i1 %165, i1 true, i1 %87
  br i1 %or.cond11, label %.thread, label %.thread583.sink.split

.thread:                                          ; preds = %163
  %.pr579.pr = load i64, ptr %25, align 8, !tbaa !5
  %.not552 = icmp eq i64 %.pr579.pr, 0
  br i1 %.not552, label %169, label %.thread583

.thread583.sink.split:                            ; preds = %96, %163, %160, %119, %115, %112, %109, %106, %101, %99
  %.sink = phi i64 [ %.mux, %96 ], [ -3, %99 ], [ -5, %101 ], [ -6, %106 ], [ -8, %109 ], [ -10, %112 ], [ -16, %115 ], [ -18, %119 ], [ -22, %160 ], [ -24, %163 ]
  store i64 %.sink, ptr %25, align 8, !tbaa !5
  br label %.thread583

.thread583:                                       ; preds = %.thread583.sink.split, %123, %.thread
  %166 = phi i64 [ %.pr579.pr, %.thread ], [ %.pr, %123 ], [ %.sink, %.thread583.sink.split ]
  %167 = sub nsw i64 0, %166
  store i64 %167, ptr %27, align 8, !tbaa !5
  %168 = call i32 @xerbla_(ptr noundef nonnull @.str.9, ptr noundef nonnull %27) #5
  br label %460

169:                                              ; preds = %.thread
  br i1 %87, label %460, label %170

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

173:                                              ; preds = %170
  store i64 0, ptr %10, align 8, !tbaa !5
  br label %460

174:                                              ; preds = %170
  %175 = tail call double @dlamch_(ptr noundef nonnull @.str.10) #5
  %176 = tail call double @dlamch_(ptr noundef nonnull @.str.2) #5
  store double %176, ptr %42, align 8, !tbaa !9
  %177 = fdiv double 1.000000e+00, %176
  store double %177, ptr %43, align 8, !tbaa !9
  %178 = call i32 @dlabad_(ptr noundef nonnull %42, ptr noundef nonnull %43) #5
  %179 = load double, ptr %42, align 8, !tbaa !9
  %180 = call double @sqrt(double noundef %179) #5
  %181 = fdiv double %180, %175
  %182 = fdiv double 1.000000e+00, %181
  %183 = call double @dlange_(ptr noundef nonnull @.str.11, ptr noundef nonnull %5, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull %20) #5
  store double %183, ptr %35, align 8, !tbaa !9
  %184 = fcmp ogt double %183, 0.000000e+00
  %185 = fcmp olt double %183, %181
  %or.cond572 = select i1 %184, i1 %185, i1 false
  br i1 %or.cond572, label %188, label %186

186:                                              ; preds = %174
  %187 = fcmp ogt double %183, %182
  br i1 %187, label %188, label %190

188:                                              ; preds = %186, %174
  %storemerge = phi double [ %181, %174 ], [ %182, %186 ]
  store double %storemerge, ptr %44, align 8, !tbaa !9
  %189 = call i32 @dlascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %35, ptr noundef nonnull %44, ptr noundef nonnull %5, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull %37) #5
  br label %190

190:                                              ; preds = %186, %188
  %.not553591 = phi i1 [ false, %188 ], [ true, %186 ]
  %191 = call double @dlange_(ptr noundef nonnull @.str.11, ptr noundef nonnull %5, ptr noundef nonnull %5, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull %20) #5
  store double %191, ptr %36, align 8, !tbaa !9
  %192 = fcmp ogt double %191, 0.000000e+00
  %193 = fcmp olt double %191, %181
  %or.cond573 = select i1 %192, i1 %193, i1 false
  br i1 %or.cond573, label %196, label %194

194:                                              ; preds = %190
  %195 = fcmp ogt double %191, %182
  br i1 %195, label %196, label %198

196:                                              ; preds = %194, %190
  %storemerge609 = phi double [ %181, %190 ], [ %182, %194 ]
  store double %storemerge609, ptr %45, align 8, !tbaa !9
  %197 = call i32 @dlascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %36, ptr noundef nonnull %45, ptr noundef nonnull %5, ptr noundef nonnull %5, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull %37) #5
  br label %198

198:                                              ; preds = %194, %196
  %.not554596 = phi i1 [ false, %196 ], [ true, %194 ]
  %199 = load i64, ptr %5, align 8, !tbaa !5
  %reass.add = shl i64 %199, 1
  %200 = or disjoint i64 %reass.add, 1
  %201 = getelementptr double, ptr %20, i64 %199
  %202 = getelementptr double, ptr %20, i64 %reass.add
  %203 = call i32 @dggbal_(ptr noundef nonnull @.str.10, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull %33, ptr noundef nonnull %32, ptr noundef nonnull %20, ptr noundef %201, ptr noundef %202, ptr noundef nonnull %37) #5
  %204 = load i64, ptr %32, align 8, !tbaa !5
  %205 = add nsw i64 %204, 1
  %206 = load i64, ptr %33, align 8, !tbaa !5
  %207 = sub i64 %205, %206
  store i64 %207, ptr %41, align 8, !tbaa !5
  %208 = load i64, ptr %5, align 8, !tbaa !5
  %reass.sub = sub i64 %208, %206
  %209 = add i64 %reass.sub, 1
  store i64 %209, ptr %38, align 8, !tbaa !5
  %210 = add nsw i64 %207, %200
  %211 = load i64, ptr %21, align 8, !tbaa !5
  %reass.sub636 = sub i64 %211, %210
  %212 = add i64 %reass.sub636, 1
  store i64 %212, ptr %27, align 8, !tbaa !5
  %213 = add i64 %49, 1
  %214 = mul i64 %206, %213
  %215 = getelementptr inbounds double, ptr %51, i64 %214
  %216 = getelementptr inbounds double, ptr %58, i64 %210
  %217 = call i32 @dgeqrf_(ptr noundef nonnull %41, ptr noundef nonnull %38, ptr noundef %215, ptr noundef nonnull %9, ptr noundef %202, ptr noundef nonnull %216, ptr noundef nonnull %27, ptr noundef nonnull %37) #5
  %218 = load i64, ptr %21, align 8, !tbaa !5
  %reass.sub637 = sub i64 %218, %210
  %219 = add i64 %reass.sub637, 1
  store i64 %219, ptr %27, align 8, !tbaa !5
  %220 = load i64, ptr %33, align 8, !tbaa !5
  %221 = mul i64 %220, %213
  %222 = getelementptr inbounds double, ptr %51, i64 %221
  %223 = add i64 %46, 1
  %224 = mul i64 %220, %223
  %225 = getelementptr inbounds double, ptr %48, i64 %224
  %226 = call i32 @dormqr_(ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.14, ptr noundef nonnull %41, ptr noundef nonnull %38, ptr noundef nonnull %41, ptr noundef %222, ptr noundef nonnull %9, ptr noundef %202, ptr noundef %225, ptr noundef nonnull %7, ptr noundef nonnull %216, ptr noundef nonnull %27, ptr noundef nonnull %37) #5
  %227 = load i64, ptr %39, align 8, !tbaa !5
  %.not555 = icmp eq i64 %227, 0
  br i1 %.not555, label %251, label %228

228:                                              ; preds = %198
  %229 = call i32 @dlaset_(ptr noundef nonnull @.str.15, ptr noundef nonnull %5, ptr noundef nonnull %5, ptr noundef nonnull @c_b42, ptr noundef nonnull @c_b43, ptr noundef %14, ptr noundef nonnull %15) #5
  %230 = load i64, ptr %41, align 8, !tbaa !5
  %231 = icmp sgt i64 %230, 1
  br i1 %231, label %232, label %243

232:                                              ; preds = %228
  %233 = add nsw i64 %230, -1
  store i64 %233, ptr %27, align 8, !tbaa !5
  store i64 %233, ptr %28, align 8, !tbaa !5
  %234 = load i64, ptr %33, align 8, !tbaa !5
  %235 = add nsw i64 %234, 1
  %236 = mul nsw i64 %234, %49
  %237 = getelementptr double, ptr %51, i64 %235
  %238 = getelementptr double, ptr %237, i64 %236
  %239 = mul nsw i64 %234, %55
  %240 = getelementptr double, ptr %57, i64 %235
  %241 = getelementptr double, ptr %240, i64 %239
  %242 = call i32 @dlacpy_(ptr noundef nonnull @.str.13, ptr noundef nonnull %27, ptr noundef nonnull %28, ptr noundef %238, ptr noundef nonnull %9, ptr noundef %241, ptr noundef nonnull %15) #5
  br label %243

243:                                              ; preds = %232, %228
  %244 = load i64, ptr %21, align 8, !tbaa !5
  %reass.sub638 = sub i64 %244, %210
  %245 = add i64 %reass.sub638, 1
  store i64 %245, ptr %27, align 8, !tbaa !5
  %246 = load i64, ptr %33, align 8, !tbaa !5
  %247 = add i64 %55, 1
  %248 = mul i64 %246, %247
  %249 = getelementptr inbounds double, ptr %57, i64 %248
  %250 = call i32 @dorgqr_(ptr noundef nonnull %41, ptr noundef nonnull %41, ptr noundef nonnull %41, ptr noundef %249, ptr noundef nonnull %15, ptr noundef %202, ptr noundef nonnull %216, ptr noundef nonnull %27, ptr noundef nonnull %37) #5
  br label %251

251:                                              ; preds = %243, %198
  %252 = load i64, ptr %40, align 8, !tbaa !5
  %.not556 = icmp eq i64 %252, 0
  br i1 %.not556, label %255, label %253

253:                                              ; preds = %251
  %254 = call i32 @dlaset_(ptr noundef nonnull @.str.15, ptr noundef nonnull %5, ptr noundef nonnull %5, ptr noundef nonnull @c_b42, ptr noundef nonnull @c_b43, ptr noundef %16, ptr noundef nonnull %17) #5
  br label %255

255:                                              ; preds = %253, %251
  %256 = call i32 @dgghrd_(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %5, ptr noundef nonnull %33, ptr noundef nonnull %32, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %14, ptr noundef nonnull %15, ptr noundef %16, ptr noundef nonnull %17, ptr noundef nonnull %37) #5
  store i64 0, ptr %10, align 8, !tbaa !5
  %257 = load i64, ptr %21, align 8, !tbaa !5
  %reass.sub639 = sub i64 %257, %200
  %258 = add i64 %reass.sub639, 1
  store i64 %258, ptr %27, align 8, !tbaa !5
  %259 = call i32 @dhgeqz_(ptr noundef nonnull @.str.2, ptr noundef %0, ptr noundef %1, ptr noundef nonnull %5, ptr noundef nonnull %33, ptr noundef nonnull %32, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef nonnull %15, ptr noundef %16, ptr noundef nonnull %17, ptr noundef %202, ptr noundef nonnull %27, ptr noundef nonnull %37) #5
  %260 = load i64, ptr %37, align 8, !tbaa !5
  %.not557 = icmp eq i64 %260, 0
  br i1 %.not557, label %270, label %261

261:                                              ; preds = %255
  %262 = icmp slt i64 %260, 1
  %.pre = load i64, ptr %5, align 8, !tbaa !5
  %.not568 = icmp sgt i64 %260, %.pre
  %or.cond645 = select i1 %262, i1 true, i1 %.not568
  br i1 %or.cond645, label %263, label %.loopexit.sink.split

263:                                              ; preds = %261
  %264 = icmp sle i64 %260, %.pre
  %265 = shl i64 %.pre, 1
  %.not569 = icmp sgt i64 %260, %265
  %or.cond574 = or i1 %264, %.not569
  br i1 %or.cond574, label %268, label %266

266:                                              ; preds = %263
  %267 = sub nsw i64 %260, %.pre
  br label %.loopexit.sink.split

268:                                              ; preds = %263
  %269 = add nsw i64 %.pre, 1
  br label %.loopexit.sink.split

270:                                              ; preds = %255
  br i1 %.not544, label %314, label %271

271:                                              ; preds = %270
  br i1 %.not553591, label %275, label %272

272:                                              ; preds = %271
  %273 = call i32 @dlascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %44, ptr noundef nonnull %35, ptr noundef nonnull %5, ptr noundef nonnull @c__1, ptr noundef %11, ptr noundef nonnull %5, ptr noundef nonnull %37) #5
  %274 = call i32 @dlascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %44, ptr noundef nonnull %35, ptr noundef nonnull %5, ptr noundef nonnull @c__1, ptr noundef %12, ptr noundef nonnull %5, ptr noundef nonnull %37) #5
  br label %275

275:                                              ; preds = %272, %271
  br i1 %.not554596, label %278, label %276

276:                                              ; preds = %275
  %277 = call i32 @dlascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %45, ptr noundef nonnull %36, ptr noundef nonnull %5, ptr noundef nonnull @c__1, ptr noundef %13, ptr noundef nonnull %5, ptr noundef nonnull %37) #5
  br label %278

278:                                              ; preds = %276, %275
  %279 = load i64, ptr %5, align 8, !tbaa !5
  store i64 %279, ptr %27, align 8, !tbaa !5
  %.not559616 = icmp slt i64 %279, 1
  br i1 %.not559616, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %278, %.lr.ph
  %.0512617 = phi i64 [ %285, %.lr.ph ], [ 1, %278 ]
  %280 = getelementptr inbounds double, ptr %52, i64 %.0512617
  %281 = getelementptr inbounds double, ptr %53, i64 %.0512617
  %282 = getelementptr inbounds double, ptr %54, i64 %.0512617
  %283 = call i64 (ptr, ptr, ptr, ...) %3(ptr noundef nonnull %280, ptr noundef nonnull %281, ptr noundef nonnull %282) #5
  %284 = getelementptr inbounds i64, ptr %59, i64 %.0512617
  store i64 %283, ptr %284, align 8, !tbaa !5
  %285 = add nuw nsw i64 %.0512617, 1
  %286 = load i64, ptr %27, align 8, !tbaa !5
  %.not559.not = icmp slt i64 %.0512617, %286
  br i1 %.not559.not, label %.lr.ph, label %._crit_edge, !llvm.loop !11

._crit_edge:                                      ; preds = %.lr.ph, %278
  %287 = load i64, ptr %21, align 8, !tbaa !5
  %reass.sub640 = sub i64 %287, %200
  %288 = add i64 %reass.sub640, 1
  store i64 %288, ptr %27, align 8, !tbaa !5
  %289 = call i32 @dtgsen_(ptr noundef nonnull %34, ptr noundef nonnull %39, ptr noundef nonnull %40, ptr noundef %24, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef nonnull %15, ptr noundef %16, ptr noundef nonnull %17, ptr noundef nonnull %10, ptr noundef nonnull %29, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef %202, ptr noundef nonnull %27, ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef nonnull %37) #5
  %290 = load i64, ptr %34, align 8
  %291 = icmp sgt i64 %290, 0
  br i1 %291, label %292, label %299

292:                                              ; preds = %._crit_edge
  store i64 %.1, ptr %27, align 8, !tbaa !5
  %293 = load i64, ptr %10, align 8, !tbaa !5
  %294 = shl i64 %293, 1
  %295 = load i64, ptr %5, align 8, !tbaa !5
  %296 = sub nsw i64 %295, %293
  %297 = mul nsw i64 %296, %294
  store i64 %297, ptr %28, align 8, !tbaa !5
  %298 = call i64 @llvm.smax.i64(i64 %.1, i64 %297)
  br label %299

299:                                              ; preds = %292, %._crit_edge
  %.3 = phi i64 [ %298, %292 ], [ %.1, %._crit_edge ]
  %300 = load i64, ptr %37, align 8, !tbaa !5
  %301 = icmp eq i64 %300, -22
  br i1 %301, label %.sink.split, label %302

302:                                              ; preds = %299
  switch i64 %290, label %309 [
    i64 4, label %303
    i64 1, label %303
    i64 2, label %307
  ]

303:                                              ; preds = %302, %302
  %304 = load double, ptr %29, align 8, !tbaa !9
  store double %304, ptr %18, align 8, !tbaa !9
  %305 = load double, ptr %30, align 8, !tbaa !9
  %306 = getelementptr inbounds i8, ptr %18, i64 8
  store double %305, ptr %306, align 8, !tbaa !9
  switch i64 %290, label %309 [
    i64 4, label %307
    i64 2, label %307
  ]

307:                                              ; preds = %302, %303, %303
  %308 = load <2 x double>, ptr %31, align 16, !tbaa !9
  store <2 x double> %308, ptr %19, align 8, !tbaa !9
  br label %309

309:                                              ; preds = %302, %303, %307
  %310 = icmp eq i64 %300, 1
  br i1 %310, label %311, label %314

311:                                              ; preds = %309
  %312 = load i64, ptr %5, align 8, !tbaa !5
  %313 = add nsw i64 %312, 3
  br label %.sink.split

.sink.split:                                      ; preds = %299, %311
  %.sink646 = phi i64 [ %313, %311 ], [ -22, %299 ]
  store i64 %.sink646, ptr %25, align 8, !tbaa !5
  br label %314

314:                                              ; preds = %.sink.split, %309, %270
  %.4 = phi i64 [ %.3, %309 ], [ %.1, %270 ], [ %.3, %.sink.split ]
  %315 = load i64, ptr %39, align 8, !tbaa !5
  %.not561 = icmp eq i64 %315, 0
  br i1 %.not561, label %318, label %316

316:                                              ; preds = %314
  %317 = call i32 @dggbak_(ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.13, ptr noundef nonnull %5, ptr noundef nonnull %33, ptr noundef nonnull %32, ptr noundef nonnull %20, ptr noundef %201, ptr noundef nonnull %5, ptr noundef %14, ptr noundef nonnull %15, ptr noundef nonnull %37) #5
  br label %318

318:                                              ; preds = %316, %314
  %319 = load i64, ptr %40, align 8, !tbaa !5
  %.not562 = icmp eq i64 %319, 0
  br i1 %.not562, label %322, label %320

320:                                              ; preds = %318
  %321 = call i32 @dggbak_(ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.16, ptr noundef nonnull %5, ptr noundef nonnull %33, ptr noundef nonnull %32, ptr noundef nonnull %20, ptr noundef %201, ptr noundef nonnull %5, ptr noundef %16, ptr noundef nonnull %17, ptr noundef nonnull %37) #5
  br label %322

322:                                              ; preds = %320, %318
  br i1 %.not553591, label %.loopexit615, label %323

323:                                              ; preds = %322
  %324 = load i64, ptr %5, align 8, !tbaa !5
  store i64 %324, ptr %27, align 8, !tbaa !5
  %.not563618 = icmp slt i64 %324, 1
  br i1 %.not563618, label %.loopexit615, label %.lr.ph621

.lr.ph621:                                        ; preds = %323
  %325 = load double, ptr %43, align 8
  %326 = load double, ptr %44, align 8
  %327 = load double, ptr %35, align 8
  %328 = load double, ptr %42, align 8
  %329 = insertelement <2 x double> poison, double %327, i64 0
  %330 = insertelement <2 x double> %329, double %326, i64 1
  %331 = insertelement <2 x double> poison, double %326, i64 0
  %332 = insertelement <2 x double> %331, double %327, i64 1
  %333 = fdiv <2 x double> %330, %332
  %334 = insertelement <2 x double> poison, double %328, i64 0
  %335 = insertelement <2 x double> poison, double %325, i64 1
  br label %336

336:                                              ; preds = %.lr.ph621, %377
  %.1513619 = phi i64 [ 1, %.lr.ph621 ], [ %378, %377 ]
  %337 = getelementptr inbounds double, ptr %53, i64 %.1513619
  %338 = load double, ptr %337, align 8, !tbaa !9
  %339 = fcmp une double %338, 0.000000e+00
  br i1 %339, label %340, label %377

340:                                              ; preds = %336
  %341 = getelementptr inbounds double, ptr %52, i64 %.1513619
  %342 = load double, ptr %341, align 8, !tbaa !9
  %343 = insertelement <2 x double> %334, double %342, i64 1
  %344 = insertelement <2 x double> %335, double %342, i64 0
  %345 = fdiv <2 x double> %343, %344
  %346 = fcmp ogt <2 x double> %345, %333
  %347 = extractelement <2 x i1> %346, i64 0
  %348 = extractelement <2 x i1> %346, i64 1
  %or.cond = select i1 %348, i1 true, i1 %347
  br i1 %or.cond, label %349, label %352

349:                                              ; preds = %340
  %350 = mul i64 %.1513619, %223
  %351 = getelementptr inbounds double, ptr %48, i64 %350
  br label %.sink.split647

352:                                              ; preds = %340
  %353 = insertelement <2 x double> %334, double %338, i64 1
  %354 = insertelement <2 x double> %335, double %338, i64 0
  %355 = fdiv <2 x double> %353, %354
  %356 = fcmp ogt <2 x double> %355, %333
  %shift = shufflevector <2 x i1> %356, <2 x i1> poison, <2 x i32> <i32 1, i32 poison>
  %357 = or <2 x i1> %shift, %356
  %or.cond576 = extractelement <2 x i1> %357, i64 0
  br i1 %or.cond576, label %358, label %377

358:                                              ; preds = %352
  %359 = add nuw nsw i64 %.1513619, 1
  %360 = mul nsw i64 %359, %46
  %361 = getelementptr double, ptr %48, i64 %.1513619
  %362 = getelementptr double, ptr %361, i64 %360
  br label %.sink.split647

.sink.split647:                                   ; preds = %349, %358
  %.sink667 = phi ptr [ %362, %358 ], [ %351, %349 ]
  %.sink666 = phi double [ %338, %358 ], [ %342, %349 ]
  %363 = load double, ptr %.sink667, align 8, !tbaa !9
  %364 = fdiv double %363, %.sink666
  %365 = fcmp oge double %364, 0.000000e+00
  %366 = fneg double %364
  %367 = select i1 %365, double %364, double %366
  store double %367, ptr %20, align 8, !tbaa !9
  %368 = getelementptr inbounds double, ptr %54, i64 %.1513619
  %369 = load double, ptr %368, align 8, !tbaa !9
  %370 = fmul double %369, %367
  store double %370, ptr %368, align 8, !tbaa !9
  %371 = load double, ptr %20, align 8, !tbaa !9
  %372 = load double, ptr %341, align 8, !tbaa !9
  %373 = fmul double %371, %372
  store double %373, ptr %341, align 8, !tbaa !9
  %374 = load double, ptr %20, align 8, !tbaa !9
  %375 = load double, ptr %337, align 8, !tbaa !9
  %376 = fmul double %374, %375
  store double %376, ptr %337, align 8, !tbaa !9
  br label %377

377:                                              ; preds = %.sink.split647, %352, %336
  %378 = add nuw i64 %.1513619, 1
  %exitcond.not = icmp eq i64 %.1513619, %324
  br i1 %exitcond.not, label %.loopexit615, label %336, !llvm.loop !13

.loopexit615:                                     ; preds = %377, %323, %322
  br i1 %.not554596, label %.loopexit614, label %379

379:                                              ; preds = %.loopexit615
  %380 = load i64, ptr %5, align 8, !tbaa !5
  store i64 %380, ptr %27, align 8, !tbaa !5
  %.not564622 = icmp slt i64 %380, 1
  br i1 %.not564622, label %.loopexit614, label %.lr.ph625

.lr.ph625:                                        ; preds = %379
  %381 = load double, ptr %43, align 8
  %382 = load double, ptr %45, align 8
  %383 = load double, ptr %36, align 8
  %384 = load double, ptr %42, align 8
  %385 = insertelement <2 x double> poison, double %382, i64 0
  %386 = insertelement <2 x double> %385, double %383, i64 1
  %387 = insertelement <2 x double> poison, double %383, i64 0
  %388 = insertelement <2 x double> %387, double %382, i64 1
  %389 = fdiv <2 x double> %386, %388
  %390 = insertelement <2 x double> poison, double %381, i64 0
  br label %391

391:                                              ; preds = %.lr.ph625, %422
  %.2514623 = phi i64 [ 1, %.lr.ph625 ], [ %423, %422 ]
  %392 = getelementptr inbounds double, ptr %53, i64 %.2514623
  %393 = load double, ptr %392, align 8, !tbaa !9
  %394 = fcmp une double %393, 0.000000e+00
  br i1 %394, label %395, label %422

395:                                              ; preds = %391
  %396 = getelementptr inbounds double, ptr %54, i64 %.2514623
  %397 = load double, ptr %396, align 8, !tbaa !9
  %398 = insertelement <2 x double> poison, double %397, i64 0
  %399 = insertelement <2 x double> %398, double %384, i64 1
  %400 = insertelement <2 x double> %390, double %397, i64 1
  %401 = fdiv <2 x double> %399, %400
  %402 = fcmp ogt <2 x double> %401, %389
  %403 = extractelement <2 x i1> %402, i64 0
  %404 = extractelement <2 x i1> %402, i64 1
  %or.cond635 = select i1 %403, i1 true, i1 %404
  br i1 %or.cond635, label %405, label %422

405:                                              ; preds = %395
  %406 = mul i64 %.2514623, %213
  %407 = getelementptr inbounds double, ptr %51, i64 %406
  %408 = load double, ptr %407, align 8, !tbaa !9
  %409 = fdiv double %408, %397
  %410 = fcmp oge double %409, 0.000000e+00
  %411 = fneg double %409
  %412 = select i1 %410, double %409, double %411
  store double %412, ptr %20, align 8, !tbaa !9
  %413 = load double, ptr %396, align 8, !tbaa !9
  %414 = fmul double %413, %412
  store double %414, ptr %396, align 8, !tbaa !9
  %415 = load double, ptr %20, align 8, !tbaa !9
  %416 = getelementptr inbounds double, ptr %52, i64 %.2514623
  %417 = load double, ptr %416, align 8, !tbaa !9
  %418 = fmul double %415, %417
  store double %418, ptr %416, align 8, !tbaa !9
  %419 = load double, ptr %20, align 8, !tbaa !9
  %420 = load double, ptr %392, align 8, !tbaa !9
  %421 = fmul double %419, %420
  store double %421, ptr %392, align 8, !tbaa !9
  br label %422

422:                                              ; preds = %395, %391, %405
  %423 = add nuw i64 %.2514623, 1
  %exitcond641.not = icmp eq i64 %.2514623, %380
  br i1 %exitcond641.not, label %.loopexit614, label %391, !llvm.loop !14

.loopexit614:                                     ; preds = %422, %379, %.loopexit615
  br i1 %.not553591, label %428, label %424

424:                                              ; preds = %.loopexit614
  %425 = call i32 @dlascl_(ptr noundef nonnull @.str.17, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %44, ptr noundef nonnull %35, ptr noundef nonnull %5, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull %37) #5
  %426 = call i32 @dlascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %44, ptr noundef nonnull %35, ptr noundef nonnull %5, ptr noundef nonnull @c__1, ptr noundef %11, ptr noundef nonnull %5, ptr noundef nonnull %37) #5
  %427 = call i32 @dlascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %44, ptr noundef nonnull %35, ptr noundef nonnull %5, ptr noundef nonnull @c__1, ptr noundef %12, ptr noundef nonnull %5, ptr noundef nonnull %37) #5
  br label %428

428:                                              ; preds = %424, %.loopexit614
  br i1 %.not554596, label %432, label %429

429:                                              ; preds = %428
  %430 = call i32 @dlascl_(ptr noundef nonnull @.str.18, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %45, ptr noundef nonnull %36, ptr noundef nonnull %5, ptr noundef nonnull %5, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull %37) #5
  %431 = call i32 @dlascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %45, ptr noundef nonnull %36, ptr noundef nonnull %5, ptr noundef nonnull @c__1, ptr noundef %13, ptr noundef nonnull %5, ptr noundef nonnull %37) #5
  br label %432

432:                                              ; preds = %429, %428
  br i1 %.not544, label %.loopexit, label %433

433:                                              ; preds = %432
  store i64 0, ptr %10, align 8, !tbaa !5
  %434 = load i64, ptr %5, align 8, !tbaa !5
  store i64 %434, ptr %27, align 8, !tbaa !5
  %.not565626 = icmp slt i64 %434, 1
  br i1 %.not565626, label %.loopexit, label %.lr.ph632

.lr.ph632:                                        ; preds = %433, %.thread597
  %.0499630 = phi i64 [ %.0508, %.thread597 ], [ 1, %433 ]
  %.0507629 = phi i64 [ %.1500, %.thread597 ], [ 1, %433 ]
  %.0510628 = phi i64 [ %.1511, %.thread597 ], [ 0, %433 ]
  %.3515627 = phi i64 [ %457, %.thread597 ], [ 1, %433 ]
  %435 = getelementptr inbounds double, ptr %52, i64 %.3515627
  %436 = getelementptr inbounds double, ptr %53, i64 %.3515627
  %437 = getelementptr inbounds double, ptr %54, i64 %.3515627
  %438 = call i64 (ptr, ptr, ptr, ...) %3(ptr noundef nonnull %435, ptr noundef nonnull %436, ptr noundef nonnull %437) #5
  %439 = load double, ptr %436, align 8, !tbaa !9
  %440 = fcmp oeq double %439, 0.000000e+00
  br i1 %440, label %441, label %445

441:                                              ; preds = %.lr.ph632
  %.not567 = icmp eq i64 %438, 0
  br i1 %.not567, label %.thread597, label %442

442:                                              ; preds = %441
  %443 = load i64, ptr %10, align 8, !tbaa !5
  %444 = add nsw i64 %443, 1
  store i64 %444, ptr %10, align 8, !tbaa !5
  %.not610 = icmp eq i64 %.0499630, 0
  br i1 %.not610, label %.thread597.sink.split, label %.thread597

445:                                              ; preds = %.lr.ph632
  %446 = icmp eq i64 %.0510628, 1
  br i1 %446, label %447, label %.thread597

447:                                              ; preds = %445
  %448 = icmp ne i64 %438, 0
  %449 = icmp ne i64 %.0499630, 0
  %450 = select i1 %448, i1 true, i1 %449
  br i1 %450, label %451, label %.thread597

451:                                              ; preds = %447
  %452 = load i64, ptr %10, align 8, !tbaa !5
  %453 = add nsw i64 %452, 2
  store i64 %453, ptr %10, align 8, !tbaa !5
  %454 = icmp eq i64 %.0507629, 0
  br i1 %454, label %.thread597.sink.split, label %.thread597

.thread597.sink.split:                            ; preds = %451, %442
  %.1511.ph = phi i64 [ 0, %442 ], [ -1, %451 ]
  %.0508.ph = phi i64 [ %438, %442 ], [ 1, %451 ]
  %.1500.ph = phi i64 [ 0, %442 ], [ 1, %451 ]
  %455 = load i64, ptr %5, align 8, !tbaa !5
  %456 = add nsw i64 %455, 2
  store i64 %456, ptr %25, align 8, !tbaa !5
  br label %.thread597

.thread597:                                       ; preds = %.thread597.sink.split, %447, %441, %445, %451, %442
  %.1511 = phi i64 [ 0, %442 ], [ -1, %451 ], [ 1, %445 ], [ 0, %441 ], [ -1, %447 ], [ %.1511.ph, %.thread597.sink.split ]
  %.0508 = phi i64 [ %438, %442 ], [ 1, %451 ], [ %438, %445 ], [ 0, %441 ], [ 0, %447 ], [ %.0508.ph, %.thread597.sink.split ]
  %.1500 = phi i64 [ %.0499630, %442 ], [ 1, %451 ], [ %.0499630, %445 ], [ %.0499630, %441 ], [ 0, %447 ], [ %.1500.ph, %.thread597.sink.split ]
  %457 = add nuw nsw i64 %.3515627, 1
  %458 = load i64, ptr %27, align 8, !tbaa !5
  %.not565.not = icmp slt i64 %.3515627, %458
  br i1 %.not565.not, label %.lr.ph632, label %.loopexit, !llvm.loop !15

.loopexit.sink.split:                             ; preds = %261, %266, %268
  %.sink670 = phi i64 [ %269, %268 ], [ %267, %266 ], [ %260, %261 ]
  store i64 %.sink670, ptr %25, align 8, !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %.thread597, %.loopexit.sink.split, %433, %432
  %.5 = phi i64 [ %.4, %432 ], [ %.4, %433 ], [ %.1, %.loopexit.sink.split ], [ %.4, %.thread597 ]
  %459 = sitofp i64 %.5 to double
  store double %459, ptr %20, align 8, !tbaa !9
  store i64 %.0501, ptr %22, align 8, !tbaa !5
  br label %460

460:                                              ; preds = %169, %.loopexit, %173, %.thread583
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #5
  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 16, 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
  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