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

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

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.2 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c_n1 = external hidden global i64, align 8
@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b27 = external hidden global double, align 8
@.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_b38 = external hidden global double, align 8
@.str.16 = external hidden unnamed_addr constant [2 x i8], align 1

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

140:                                              ; preds = %17
  store i64 1, ptr %88, align 8, !tbaa !9
  store i64 0, ptr %66, align 8, !tbaa !9
  br label %148

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

145:                                              ; preds = %141
  store i64 2, ptr %88, align 8, !tbaa !9
  store i64 1, ptr %66, align 8, !tbaa !9
  br label %147

146:                                              ; preds = %141
  store i64 -1, ptr %88, align 8, !tbaa !9
  store i64 0, ptr %66, align 8, !tbaa !9
  br label %147

147:                                              ; preds = %146, %145
  br label %148

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

152:                                              ; preds = %148
  store i64 1, ptr %91, align 8, !tbaa !9
  store i64 0, ptr %67, align 8, !tbaa !9
  br label %160

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

157:                                              ; preds = %153
  store i64 2, ptr %91, align 8, !tbaa !9
  store i64 1, ptr %67, align 8, !tbaa !9
  br label %159

158:                                              ; preds = %153
  store i64 -1, ptr %91, align 8, !tbaa !9
  store i64 0, ptr %67, align 8, !tbaa !9
  br label %159

159:                                              ; preds = %158, %157
  br label %160

160:                                              ; preds = %159, %152
  %161 = load i64, ptr %66, align 8, !tbaa !9
  %162 = icmp ne i64 %161, 0
  br i1 %162, label %166, label %163

163:                                              ; preds = %160
  %164 = load i64, ptr %67, align 8, !tbaa !9
  %165 = icmp ne i64 %164, 0
  br label %166

166:                                              ; preds = %163, %160
  %167 = phi i1 [ true, %160 ], [ %165, %163 ]
  %168 = zext i1 %167 to i32
  %169 = sext i32 %168 to i64
  store i64 %169, ptr %60, align 8, !tbaa !9
  %170 = load ptr, ptr %21, align 8, !tbaa !5
  %171 = load i64, ptr %170, align 8, !tbaa !9
  %172 = shl i64 %171, 3
  store i64 %172, ptr %44, align 8, !tbaa !9
  %173 = load i64, ptr %44, align 8, !tbaa !9
  %174 = icmp sge i64 %173, 1
  br i1 %174, label %175, label %177

175:                                              ; preds = %166
  %176 = load i64, ptr %44, align 8, !tbaa !9
  br label %178

177:                                              ; preds = %166
  br label %178

178:                                              ; preds = %177, %175
  %179 = phi i64 [ %176, %175 ], [ 1, %177 ]
  store i64 %179, ptr %93, align 8, !tbaa !9
  %180 = load i64, ptr %93, align 8, !tbaa !9
  store i64 %180, ptr %94, align 8, !tbaa !9
  %181 = load i64, ptr %94, align 8, !tbaa !9
  %182 = sitofp i64 %181 to double
  %183 = load ptr, ptr %33, align 8, !tbaa !5
  %184 = getelementptr inbounds double, ptr %183, i64 1
  store double %182, ptr %184, align 8, !tbaa !11
  %185 = load ptr, ptr %34, align 8, !tbaa !5
  %186 = load i64, ptr %185, align 8, !tbaa !9
  %187 = icmp eq i64 %186, -1
  %188 = zext i1 %187 to i32
  %189 = sext i32 %188 to i64
  store i64 %189, ptr %95, align 8, !tbaa !9
  %190 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 0, ptr %190, align 8, !tbaa !9
  %191 = load i64, ptr %88, align 8, !tbaa !9
  %192 = icmp sle i64 %191, 0
  br i1 %192, label %193, label %195

193:                                              ; preds = %178
  %194 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -1, ptr %194, align 8, !tbaa !9
  br label %283

195:                                              ; preds = %178
  %196 = load i64, ptr %91, align 8, !tbaa !9
  %197 = icmp sle i64 %196, 0
  br i1 %197, label %198, label %200

198:                                              ; preds = %195
  %199 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -2, ptr %199, align 8, !tbaa !9
  br label %282

200:                                              ; preds = %195
  %201 = load ptr, ptr %21, align 8, !tbaa !5
  %202 = load i64, ptr %201, align 8, !tbaa !9
  %203 = icmp slt i64 %202, 0
  br i1 %203, label %204, label %206

204:                                              ; preds = %200
  %205 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -3, ptr %205, align 8, !tbaa !9
  br label %281

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

212:                                              ; preds = %206
  br label %216

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

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

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

221:                                              ; preds = %216
  %222 = load ptr, ptr %25, align 8, !tbaa !5
  %223 = load i64, ptr %222, align 8, !tbaa !9
  %224 = load ptr, ptr %21, align 8, !tbaa !5
  %225 = load i64, ptr %224, align 8, !tbaa !9
  %226 = icmp sge i64 1, %225
  br i1 %226, label %227, label %228

227:                                              ; preds = %221
  br label %231

228:                                              ; preds = %221
  %229 = load ptr, ptr %21, align 8, !tbaa !5
  %230 = load i64, ptr %229, align 8, !tbaa !9
  br label %231

231:                                              ; preds = %228, %227
  %232 = phi i64 [ 1, %227 ], [ %230, %228 ]
  %233 = icmp slt i64 %223, %232
  br i1 %233, label %234, label %236

234:                                              ; preds = %231
  %235 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -7, ptr %235, align 8, !tbaa !9
  br label %279

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

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

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

249:                                              ; preds = %243, %236
  %250 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -12, ptr %250, align 8, !tbaa !9
  br label %278

251:                                              ; preds = %243, %240
  %252 = load ptr, ptr %32, align 8, !tbaa !5
  %253 = load i64, ptr %252, align 8, !tbaa !9
  %254 = icmp slt i64 %253, 1
  br i1 %254, label %264, label %255

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

258:                                              ; preds = %255
  %259 = load ptr, ptr %32, align 8, !tbaa !5
  %260 = load i64, ptr %259, align 8, !tbaa !9
  %261 = load ptr, ptr %21, align 8, !tbaa !5
  %262 = load i64, ptr %261, align 8, !tbaa !9
  %263 = icmp slt i64 %260, %262
  br i1 %263, label %264, label %266

264:                                              ; preds = %258, %251
  %265 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -14, ptr %265, align 8, !tbaa !9
  br label %277

266:                                              ; preds = %258, %255
  %267 = load ptr, ptr %34, align 8, !tbaa !5
  %268 = load i64, ptr %267, align 8, !tbaa !9
  %269 = load i64, ptr %93, align 8, !tbaa !9
  %270 = icmp slt i64 %268, %269
  br i1 %270, label %271, label %276

271:                                              ; preds = %266
  %272 = load i64, ptr %95, align 8, !tbaa !9
  %273 = icmp ne i64 %272, 0
  br i1 %273, label %276, label %274

274:                                              ; preds = %271
  %275 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -16, ptr %275, align 8, !tbaa !9
  br label %276

276:                                              ; preds = %274, %271, %266
  br label %277

277:                                              ; preds = %276, %264
  br label %278

278:                                              ; preds = %277, %249
  br label %279

279:                                              ; preds = %278, %234
  br label %280

280:                                              ; preds = %279, %219
  br label %281

281:                                              ; preds = %280, %204
  br label %282

282:                                              ; preds = %281, %198
  br label %283

283:                                              ; preds = %282, %193
  %284 = load ptr, ptr %35, align 8, !tbaa !5
  %285 = load i64, ptr %284, align 8, !tbaa !9
  %286 = icmp eq i64 %285, 0
  br i1 %286, label %287, label %342

287:                                              ; preds = %283
  %288 = load ptr, ptr %21, align 8, !tbaa !5
  %289 = load ptr, ptr %21, align 8, !tbaa !5
  %290 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef %288, ptr noundef %289, ptr noundef @c_n1, ptr noundef @c_n1)
  store i64 %290, ptr %54, align 8, !tbaa !9
  %291 = load ptr, ptr %21, align 8, !tbaa !5
  %292 = load ptr, ptr %21, align 8, !tbaa !5
  %293 = load ptr, ptr %21, align 8, !tbaa !5
  %294 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.4, ptr noundef @.str.3, ptr noundef %291, ptr noundef %292, ptr noundef %293, ptr noundef @c_n1)
  store i64 %294, ptr %55, align 8, !tbaa !9
  %295 = load ptr, ptr %21, align 8, !tbaa !5
  %296 = load ptr, ptr %21, align 8, !tbaa !5
  %297 = load ptr, ptr %21, align 8, !tbaa !5
  %298 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.5, ptr noundef @.str.3, ptr noundef %295, ptr noundef %296, ptr noundef %297, ptr noundef @c_n1)
  store i64 %298, ptr %56, align 8, !tbaa !9
  %299 = load i64, ptr %54, align 8, !tbaa !9
  %300 = load i64, ptr %55, align 8, !tbaa !9
  %301 = icmp sge i64 %299, %300
  br i1 %301, label %302, label %304

302:                                              ; preds = %287
  %303 = load i64, ptr %54, align 8, !tbaa !9
  br label %306

304:                                              ; preds = %287
  %305 = load i64, ptr %55, align 8, !tbaa !9
  br label %306

306:                                              ; preds = %304, %302
  %307 = phi i64 [ %303, %302 ], [ %305, %304 ]
  store i64 %307, ptr %44, align 8, !tbaa !9
  %308 = load i64, ptr %44, align 8, !tbaa !9
  %309 = load i64, ptr %56, align 8, !tbaa !9
  %310 = icmp sge i64 %308, %309
  br i1 %310, label %311, label %313

311:                                              ; preds = %306
  %312 = load i64, ptr %44, align 8, !tbaa !9
  br label %315

313:                                              ; preds = %306
  %314 = load i64, ptr %56, align 8, !tbaa !9
  br label %315

315:                                              ; preds = %313, %311
  %316 = phi i64 [ %312, %311 ], [ %314, %313 ]
  store i64 %316, ptr %51, align 8, !tbaa !9
  %317 = load ptr, ptr %21, align 8, !tbaa !5
  %318 = load i64, ptr %317, align 8, !tbaa !9
  %319 = mul nsw i64 %318, 6
  store i64 %319, ptr %44, align 8, !tbaa !9
  %320 = load ptr, ptr %21, align 8, !tbaa !5
  %321 = load i64, ptr %320, align 8, !tbaa !9
  %322 = load i64, ptr %51, align 8, !tbaa !9
  %323 = add nsw i64 %322, 1
  %324 = mul nsw i64 %321, %323
  store i64 %324, ptr %45, align 8, !tbaa !9
  %325 = load ptr, ptr %21, align 8, !tbaa !5
  %326 = load i64, ptr %325, align 8, !tbaa !9
  %327 = shl i64 %326, 1
  %328 = load i64, ptr %44, align 8, !tbaa !9
  %329 = load i64, ptr %45, align 8, !tbaa !9
  %330 = icmp sge i64 %328, %329
  br i1 %330, label %331, label %333

331:                                              ; preds = %315
  %332 = load i64, ptr %44, align 8, !tbaa !9
  br label %335

333:                                              ; preds = %315
  %334 = load i64, ptr %45, align 8, !tbaa !9
  br label %335

335:                                              ; preds = %333, %331
  %336 = phi i64 [ %332, %331 ], [ %334, %333 ]
  %337 = add nsw i64 %327, %336
  store i64 %337, ptr %68, align 8, !tbaa !9
  %338 = load i64, ptr %68, align 8, !tbaa !9
  %339 = sitofp i64 %338 to double
  %340 = load ptr, ptr %33, align 8, !tbaa !5
  %341 = getelementptr inbounds double, ptr %340, i64 1
  store double %339, ptr %341, align 8, !tbaa !11
  br label %342

342:                                              ; preds = %335, %283
  %343 = load ptr, ptr %35, align 8, !tbaa !5
  %344 = load i64, ptr %343, align 8, !tbaa !9
  %345 = icmp ne i64 %344, 0
  br i1 %345, label %346, label %351

346:                                              ; preds = %342
  %347 = load ptr, ptr %35, align 8, !tbaa !5
  %348 = load i64, ptr %347, align 8, !tbaa !9
  %349 = sub nsw i64 0, %348
  store i64 %349, ptr %44, align 8, !tbaa !9
  %350 = call i32 @xerbla_(ptr noundef @.str.6, ptr noundef %44)
  store i32 0, ptr %18, align 4
  store i32 1, ptr %96, align 4
  br label %1774

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

354:                                              ; preds = %351
  store i32 0, ptr %18, align 4
  store i32 1, ptr %96, align 4
  br label %1774

355:                                              ; preds = %351
  br label %356

356:                                              ; preds = %355
  %357 = load ptr, ptr %21, align 8, !tbaa !5
  %358 = load i64, ptr %357, align 8, !tbaa !9
  %359 = icmp eq i64 %358, 0
  br i1 %359, label %360, label %361

360:                                              ; preds = %356
  store i32 0, ptr %18, align 4
  store i32 1, ptr %96, align 4
  br label %1774

361:                                              ; preds = %356
  %362 = call double @dlamch_(ptr noundef @.str.7)
  %363 = call double @dlamch_(ptr noundef @.str.8)
  %364 = fmul double %362, %363
  store double %364, ptr %59, align 8, !tbaa !11
  %365 = call double @dlamch_(ptr noundef @.str.9)
  store double %365, ptr %84, align 8, !tbaa !11
  %366 = load double, ptr %84, align 8, !tbaa !11
  %367 = load double, ptr %84, align 8, !tbaa !11
  %368 = fadd double %367, %366
  store double %368, ptr %84, align 8, !tbaa !11
  %369 = load double, ptr %84, align 8, !tbaa !11
  %370 = fdiv double 1.000000e+00, %369
  store double %370, ptr %85, align 8, !tbaa !11
  %371 = load double, ptr %59, align 8, !tbaa !11
  %372 = call double @llvm.fmuladd.f64(double %371, double 4.000000e+00, double 1.000000e+00)
  store double %372, ptr %92, align 8, !tbaa !11
  %373 = load ptr, ptr %21, align 8, !tbaa !5
  %374 = load ptr, ptr %21, align 8, !tbaa !5
  %375 = load ptr, ptr %22, align 8, !tbaa !5
  %376 = load i64, ptr %37, align 8, !tbaa !9
  %377 = getelementptr inbounds double, ptr %375, i64 %376
  %378 = load ptr, ptr %23, align 8, !tbaa !5
  %379 = load ptr, ptr %33, align 8, !tbaa !5
  %380 = getelementptr inbounds double, ptr %379, i64 1
  %381 = call double @dlange_(ptr noundef @.str.10, ptr noundef %373, ptr noundef %374, ptr noundef %377, ptr noundef %378, ptr noundef %380)
  store double %381, ptr %62, align 8, !tbaa !11
  %382 = load double, ptr %62, align 8, !tbaa !11
  store double %382, ptr %69, align 8, !tbaa !11
  store double 1.000000e+00, ptr %70, align 8, !tbaa !11
  %383 = load double, ptr %62, align 8, !tbaa !11
  %384 = fcmp olt double %383, 1.000000e+00
  br i1 %384, label %385, label %396

385:                                              ; preds = %361
  %386 = load double, ptr %85, align 8, !tbaa !11
  %387 = load double, ptr %62, align 8, !tbaa !11
  %388 = fmul double %386, %387
  %389 = fcmp olt double %388, 1.000000e+00
  br i1 %389, label %390, label %395

390:                                              ; preds = %385
  %391 = load double, ptr %84, align 8, !tbaa !11
  store double %391, ptr %69, align 8, !tbaa !11
  %392 = load double, ptr %85, align 8, !tbaa !11
  %393 = load double, ptr %62, align 8, !tbaa !11
  %394 = fmul double %392, %393
  store double %394, ptr %70, align 8, !tbaa !11
  br label %395

395:                                              ; preds = %390, %385
  br label %396

396:                                              ; preds = %395, %361
  %397 = load double, ptr %62, align 8, !tbaa !11
  %398 = fcmp ogt double %397, 0.000000e+00
  br i1 %398, label %399, label %415

399:                                              ; preds = %396
  %400 = load ptr, ptr %21, align 8, !tbaa !5
  %401 = load ptr, ptr %21, align 8, !tbaa !5
  %402 = load ptr, ptr %22, align 8, !tbaa !5
  %403 = load i64, ptr %37, align 8, !tbaa !9
  %404 = getelementptr inbounds double, ptr %402, i64 %403
  %405 = load ptr, ptr %23, align 8, !tbaa !5
  %406 = call i32 @dlascl_(ptr noundef @.str.11, ptr noundef @c_n1, ptr noundef @c_n1, ptr noundef %62, ptr noundef @c_b27, ptr noundef %400, ptr noundef %401, ptr noundef %404, ptr noundef %405, ptr noundef %78)
  %407 = load i64, ptr %78, align 8, !tbaa !9
  %408 = icmp ne i64 %407, 0
  br i1 %408, label %409, label %414

409:                                              ; preds = %399
  %410 = load ptr, ptr %21, align 8, !tbaa !5
  %411 = load i64, ptr %410, align 8, !tbaa !9
  %412 = add nsw i64 %411, 10
  %413 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %412, ptr %413, align 8, !tbaa !9
  store i32 0, ptr %18, align 4
  store i32 1, ptr %96, align 4
  br label %1774

414:                                              ; preds = %399
  br label %415

415:                                              ; preds = %414, %396
  %416 = load ptr, ptr %21, align 8, !tbaa !5
  %417 = load ptr, ptr %21, align 8, !tbaa !5
  %418 = load ptr, ptr %24, align 8, !tbaa !5
  %419 = load i64, ptr %39, align 8, !tbaa !9
  %420 = getelementptr inbounds double, ptr %418, i64 %419
  %421 = load ptr, ptr %25, align 8, !tbaa !5
  %422 = load ptr, ptr %33, align 8, !tbaa !5
  %423 = getelementptr inbounds double, ptr %422, i64 1
  %424 = call double @dlange_(ptr noundef @.str.10, ptr noundef %416, ptr noundef %417, ptr noundef %420, ptr noundef %421, ptr noundef %423)
  store double %424, ptr %63, align 8, !tbaa !11
  %425 = load double, ptr %63, align 8, !tbaa !11
  store double %425, ptr %71, align 8, !tbaa !11
  store double 1.000000e+00, ptr %72, align 8, !tbaa !11
  %426 = load double, ptr %63, align 8, !tbaa !11
  %427 = fcmp olt double %426, 1.000000e+00
  br i1 %427, label %428, label %439

428:                                              ; preds = %415
  %429 = load double, ptr %85, align 8, !tbaa !11
  %430 = load double, ptr %63, align 8, !tbaa !11
  %431 = fmul double %429, %430
  %432 = fcmp olt double %431, 1.000000e+00
  br i1 %432, label %433, label %438

433:                                              ; preds = %428
  %434 = load double, ptr %84, align 8, !tbaa !11
  store double %434, ptr %71, align 8, !tbaa !11
  %435 = load double, ptr %85, align 8, !tbaa !11
  %436 = load double, ptr %63, align 8, !tbaa !11
  %437 = fmul double %435, %436
  store double %437, ptr %72, align 8, !tbaa !11
  br label %438

438:                                              ; preds = %433, %428
  br label %439

439:                                              ; preds = %438, %415
  %440 = load double, ptr %63, align 8, !tbaa !11
  %441 = fcmp ogt double %440, 0.000000e+00
  br i1 %441, label %442, label %458

442:                                              ; preds = %439
  %443 = load ptr, ptr %21, align 8, !tbaa !5
  %444 = load ptr, ptr %21, align 8, !tbaa !5
  %445 = load ptr, ptr %24, align 8, !tbaa !5
  %446 = load i64, ptr %39, align 8, !tbaa !9
  %447 = getelementptr inbounds double, ptr %445, i64 %446
  %448 = load ptr, ptr %25, align 8, !tbaa !5
  %449 = call i32 @dlascl_(ptr noundef @.str.11, ptr noundef @c_n1, ptr noundef @c_n1, ptr noundef %63, ptr noundef @c_b27, ptr noundef %443, ptr noundef %444, ptr noundef %447, ptr noundef %448, ptr noundef %78)
  %450 = load i64, ptr %78, align 8, !tbaa !9
  %451 = icmp ne i64 %450, 0
  br i1 %451, label %452, label %457

452:                                              ; preds = %442
  %453 = load ptr, ptr %21, align 8, !tbaa !5
  %454 = load i64, ptr %453, align 8, !tbaa !9
  %455 = add nsw i64 %454, 10
  %456 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %455, ptr %456, align 8, !tbaa !9
  store i32 0, ptr %18, align 4
  store i32 1, ptr %96, align 4
  br label %1774

457:                                              ; preds = %442
  br label %458

458:                                              ; preds = %457, %439
  store i64 1, ptr %77, align 8, !tbaa !9
  %459 = load ptr, ptr %21, align 8, !tbaa !5
  %460 = load i64, ptr %459, align 8, !tbaa !9
  %461 = add nsw i64 %460, 1
  store i64 %461, ptr %89, align 8, !tbaa !9
  %462 = load i64, ptr %89, align 8, !tbaa !9
  %463 = load ptr, ptr %21, align 8, !tbaa !5
  %464 = load i64, ptr %463, align 8, !tbaa !9
  %465 = add nsw i64 %462, %464
  store i64 %465, ptr %80, align 8, !tbaa !9
  %466 = load ptr, ptr %21, align 8, !tbaa !5
  %467 = load ptr, ptr %22, align 8, !tbaa !5
  %468 = load i64, ptr %37, align 8, !tbaa !9
  %469 = getelementptr inbounds double, ptr %467, i64 %468
  %470 = load ptr, ptr %23, align 8, !tbaa !5
  %471 = load ptr, ptr %24, align 8, !tbaa !5
  %472 = load i64, ptr %39, align 8, !tbaa !9
  %473 = getelementptr inbounds double, ptr %471, i64 %472
  %474 = load ptr, ptr %25, align 8, !tbaa !5
  %475 = load ptr, ptr %33, align 8, !tbaa !5
  %476 = load i64, ptr %77, align 8, !tbaa !9
  %477 = getelementptr inbounds double, ptr %475, i64 %476
  %478 = load ptr, ptr %33, align 8, !tbaa !5
  %479 = load i64, ptr %89, align 8, !tbaa !9
  %480 = getelementptr inbounds double, ptr %478, i64 %479
  %481 = load ptr, ptr %33, align 8, !tbaa !5
  %482 = load i64, ptr %80, align 8, !tbaa !9
  %483 = getelementptr inbounds double, ptr %481, i64 %482
  %484 = call i32 @dggbal_(ptr noundef @.str.12, ptr noundef %466, ptr noundef %469, ptr noundef %470, ptr noundef %473, ptr noundef %474, ptr noundef %58, ptr noundef %57, ptr noundef %477, ptr noundef %480, ptr noundef %483, ptr noundef %78)
  %485 = load i64, ptr %78, align 8, !tbaa !9
  %486 = icmp ne i64 %485, 0
  br i1 %486, label %487, label %492

487:                                              ; preds = %458
  %488 = load ptr, ptr %21, align 8, !tbaa !5
  %489 = load i64, ptr %488, align 8, !tbaa !9
  %490 = add nsw i64 %489, 1
  %491 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %490, ptr %491, align 8, !tbaa !9
  br label %1769

492:                                              ; preds = %458
  %493 = load i64, ptr %57, align 8, !tbaa !9
  %494 = add nsw i64 %493, 1
  %495 = load i64, ptr %58, align 8, !tbaa !9
  %496 = sub nsw i64 %494, %495
  store i64 %496, ptr %81, align 8, !tbaa !9
  %497 = load i64, ptr %60, align 8, !tbaa !9
  %498 = icmp ne i64 %497, 0
  br i1 %498, label %499, label %505

499:                                              ; preds = %492
  %500 = load ptr, ptr %21, align 8, !tbaa !5
  %501 = load i64, ptr %500, align 8, !tbaa !9
  %502 = add nsw i64 %501, 1
  %503 = load i64, ptr %58, align 8, !tbaa !9
  %504 = sub nsw i64 %502, %503
  store i64 %504, ptr %79, align 8, !tbaa !9
  br label %507

505:                                              ; preds = %492
  %506 = load i64, ptr %81, align 8, !tbaa !9
  store i64 %506, ptr %79, align 8, !tbaa !9
  br label %507

507:                                              ; preds = %505, %499
  %508 = load i64, ptr %80, align 8, !tbaa !9
  store i64 %508, ptr %64, align 8, !tbaa !9
  %509 = load i64, ptr %64, align 8, !tbaa !9
  %510 = load i64, ptr %81, align 8, !tbaa !9
  %511 = add nsw i64 %509, %510
  store i64 %511, ptr %80, align 8, !tbaa !9
  %512 = load ptr, ptr %34, align 8, !tbaa !5
  %513 = load i64, ptr %512, align 8, !tbaa !9
  %514 = add nsw i64 %513, 1
  %515 = load i64, ptr %80, align 8, !tbaa !9
  %516 = sub nsw i64 %514, %515
  store i64 %516, ptr %44, align 8, !tbaa !9
  %517 = load ptr, ptr %24, align 8, !tbaa !5
  %518 = load i64, ptr %58, align 8, !tbaa !9
  %519 = load i64, ptr %58, align 8, !tbaa !9
  %520 = load i64, ptr %38, align 8, !tbaa !9
  %521 = mul nsw i64 %519, %520
  %522 = add nsw i64 %518, %521
  %523 = getelementptr inbounds double, ptr %517, i64 %522
  %524 = load ptr, ptr %25, align 8, !tbaa !5
  %525 = load ptr, ptr %33, align 8, !tbaa !5
  %526 = load i64, ptr %64, align 8, !tbaa !9
  %527 = getelementptr inbounds double, ptr %525, i64 %526
  %528 = load ptr, ptr %33, align 8, !tbaa !5
  %529 = load i64, ptr %80, align 8, !tbaa !9
  %530 = getelementptr inbounds double, ptr %528, i64 %529
  %531 = call i32 @dgeqrf_(ptr noundef %81, ptr noundef %79, ptr noundef %523, ptr noundef %524, ptr noundef %527, ptr noundef %530, ptr noundef %44, ptr noundef %78)
  %532 = load i64, ptr %78, align 8, !tbaa !9
  %533 = icmp sge i64 %532, 0
  br i1 %533, label %534, label %553

534:                                              ; preds = %507
  %535 = load i64, ptr %94, align 8, !tbaa !9
  store i64 %535, ptr %44, align 8, !tbaa !9
  %536 = load ptr, ptr %33, align 8, !tbaa !5
  %537 = load i64, ptr %80, align 8, !tbaa !9
  %538 = getelementptr inbounds double, ptr %536, i64 %537
  %539 = load double, ptr %538, align 8, !tbaa !11
  %540 = fptosi double %539 to i64
  %541 = load i64, ptr %80, align 8, !tbaa !9
  %542 = add nsw i64 %540, %541
  %543 = sub nsw i64 %542, 1
  store i64 %543, ptr %45, align 8, !tbaa !9
  %544 = load i64, ptr %44, align 8, !tbaa !9
  %545 = load i64, ptr %45, align 8, !tbaa !9
  %546 = icmp sge i64 %544, %545
  br i1 %546, label %547, label %549

547:                                              ; preds = %534
  %548 = load i64, ptr %44, align 8, !tbaa !9
  br label %551

549:                                              ; preds = %534
  %550 = load i64, ptr %45, align 8, !tbaa !9
  br label %551

551:                                              ; preds = %549, %547
  %552 = phi i64 [ %548, %547 ], [ %550, %549 ]
  store i64 %552, ptr %94, align 8, !tbaa !9
  br label %553

553:                                              ; preds = %551, %507
  %554 = load i64, ptr %78, align 8, !tbaa !9
  %555 = icmp ne i64 %554, 0
  br i1 %555, label %556, label %561

556:                                              ; preds = %553
  %557 = load ptr, ptr %21, align 8, !tbaa !5
  %558 = load i64, ptr %557, align 8, !tbaa !9
  %559 = add nsw i64 %558, 2
  %560 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %559, ptr %560, align 8, !tbaa !9
  br label %1769

561:                                              ; preds = %553
  %562 = load ptr, ptr %34, align 8, !tbaa !5
  %563 = load i64, ptr %562, align 8, !tbaa !9
  %564 = add nsw i64 %563, 1
  %565 = load i64, ptr %80, align 8, !tbaa !9
  %566 = sub nsw i64 %564, %565
  store i64 %566, ptr %44, align 8, !tbaa !9
  %567 = load ptr, ptr %24, align 8, !tbaa !5
  %568 = load i64, ptr %58, align 8, !tbaa !9
  %569 = load i64, ptr %58, align 8, !tbaa !9
  %570 = load i64, ptr %38, align 8, !tbaa !9
  %571 = mul nsw i64 %569, %570
  %572 = add nsw i64 %568, %571
  %573 = getelementptr inbounds double, ptr %567, i64 %572
  %574 = load ptr, ptr %25, align 8, !tbaa !5
  %575 = load ptr, ptr %33, align 8, !tbaa !5
  %576 = load i64, ptr %64, align 8, !tbaa !9
  %577 = getelementptr inbounds double, ptr %575, i64 %576
  %578 = load ptr, ptr %22, align 8, !tbaa !5
  %579 = load i64, ptr %58, align 8, !tbaa !9
  %580 = load i64, ptr %58, align 8, !tbaa !9
  %581 = load i64, ptr %36, align 8, !tbaa !9
  %582 = mul nsw i64 %580, %581
  %583 = add nsw i64 %579, %582
  %584 = getelementptr inbounds double, ptr %578, i64 %583
  %585 = load ptr, ptr %23, align 8, !tbaa !5
  %586 = load ptr, ptr %33, align 8, !tbaa !5
  %587 = load i64, ptr %80, align 8, !tbaa !9
  %588 = getelementptr inbounds double, ptr %586, i64 %587
  %589 = call i32 @dormqr_(ptr noundef @.str.13, ptr noundef @.str.14, ptr noundef %81, ptr noundef %79, ptr noundef %81, ptr noundef %573, ptr noundef %574, ptr noundef %577, ptr noundef %584, ptr noundef %585, ptr noundef %588, ptr noundef %44, ptr noundef %78)
  %590 = load i64, ptr %78, align 8, !tbaa !9
  %591 = icmp sge i64 %590, 0
  br i1 %591, label %592, label %611

592:                                              ; preds = %561
  %593 = load i64, ptr %94, align 8, !tbaa !9
  store i64 %593, ptr %44, align 8, !tbaa !9
  %594 = load ptr, ptr %33, align 8, !tbaa !5
  %595 = load i64, ptr %80, align 8, !tbaa !9
  %596 = getelementptr inbounds double, ptr %594, i64 %595
  %597 = load double, ptr %596, align 8, !tbaa !11
  %598 = fptosi double %597 to i64
  %599 = load i64, ptr %80, align 8, !tbaa !9
  %600 = add nsw i64 %598, %599
  %601 = sub nsw i64 %600, 1
  store i64 %601, ptr %45, align 8, !tbaa !9
  %602 = load i64, ptr %44, align 8, !tbaa !9
  %603 = load i64, ptr %45, align 8, !tbaa !9
  %604 = icmp sge i64 %602, %603
  br i1 %604, label %605, label %607

605:                                              ; preds = %592
  %606 = load i64, ptr %44, align 8, !tbaa !9
  br label %609

607:                                              ; preds = %592
  %608 = load i64, ptr %45, align 8, !tbaa !9
  br label %609

609:                                              ; preds = %607, %605
  %610 = phi i64 [ %606, %605 ], [ %608, %607 ]
  store i64 %610, ptr %94, align 8, !tbaa !9
  br label %611

611:                                              ; preds = %609, %561
  %612 = load i64, ptr %78, align 8, !tbaa !9
  %613 = icmp ne i64 %612, 0
  br i1 %613, label %614, label %619

614:                                              ; preds = %611
  %615 = load ptr, ptr %21, align 8, !tbaa !5
  %616 = load i64, ptr %615, align 8, !tbaa !9
  %617 = add nsw i64 %616, 3
  %618 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %617, ptr %618, align 8, !tbaa !9
  br label %1769

619:                                              ; preds = %611
  %620 = load i64, ptr %66, align 8, !tbaa !9
  %621 = icmp ne i64 %620, 0
  br i1 %621, label %622, label %703

622:                                              ; preds = %619
  %623 = load ptr, ptr %21, align 8, !tbaa !5
  %624 = load ptr, ptr %21, align 8, !tbaa !5
  %625 = load ptr, ptr %29, align 8, !tbaa !5
  %626 = load i64, ptr %41, align 8, !tbaa !9
  %627 = getelementptr inbounds double, ptr %625, i64 %626
  %628 = load ptr, ptr %30, align 8, !tbaa !5
  %629 = call i32 @dlaset_(ptr noundef @.str.15, ptr noundef %623, ptr noundef %624, ptr noundef @c_b38, ptr noundef @c_b27, ptr noundef %627, ptr noundef %628)
  %630 = load i64, ptr %81, align 8, !tbaa !9
  %631 = sub nsw i64 %630, 1
  store i64 %631, ptr %44, align 8, !tbaa !9
  %632 = load i64, ptr %81, align 8, !tbaa !9
  %633 = sub nsw i64 %632, 1
  store i64 %633, ptr %45, align 8, !tbaa !9
  %634 = load ptr, ptr %24, align 8, !tbaa !5
  %635 = load i64, ptr %58, align 8, !tbaa !9
  %636 = add nsw i64 %635, 1
  %637 = load i64, ptr %58, align 8, !tbaa !9
  %638 = load i64, ptr %38, align 8, !tbaa !9
  %639 = mul nsw i64 %637, %638
  %640 = add nsw i64 %636, %639
  %641 = getelementptr inbounds double, ptr %634, i64 %640
  %642 = load ptr, ptr %25, align 8, !tbaa !5
  %643 = load ptr, ptr %29, align 8, !tbaa !5
  %644 = load i64, ptr %58, align 8, !tbaa !9
  %645 = add nsw i64 %644, 1
  %646 = load i64, ptr %58, align 8, !tbaa !9
  %647 = load i64, ptr %40, align 8, !tbaa !9
  %648 = mul nsw i64 %646, %647
  %649 = add nsw i64 %645, %648
  %650 = getelementptr inbounds double, ptr %643, i64 %649
  %651 = load ptr, ptr %30, align 8, !tbaa !5
  %652 = call i32 @dlacpy_(ptr noundef @.str.13, ptr noundef %44, ptr noundef %45, ptr noundef %641, ptr noundef %642, ptr noundef %650, ptr noundef %651)
  %653 = load ptr, ptr %34, align 8, !tbaa !5
  %654 = load i64, ptr %653, align 8, !tbaa !9
  %655 = add nsw i64 %654, 1
  %656 = load i64, ptr %80, align 8, !tbaa !9
  %657 = sub nsw i64 %655, %656
  store i64 %657, ptr %44, align 8, !tbaa !9
  %658 = load ptr, ptr %29, align 8, !tbaa !5
  %659 = load i64, ptr %58, align 8, !tbaa !9
  %660 = load i64, ptr %58, align 8, !tbaa !9
  %661 = load i64, ptr %40, 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 %30, align 8, !tbaa !5
  %666 = load ptr, ptr %33, align 8, !tbaa !5
  %667 = load i64, ptr %64, align 8, !tbaa !9
  %668 = getelementptr inbounds double, ptr %666, i64 %667
  %669 = load ptr, ptr %33, align 8, !tbaa !5
  %670 = load i64, ptr %80, align 8, !tbaa !9
  %671 = getelementptr inbounds double, ptr %669, i64 %670
  %672 = call i32 @dorgqr_(ptr noundef %81, ptr noundef %81, ptr noundef %81, ptr noundef %664, ptr noundef %665, ptr noundef %668, ptr noundef %671, ptr noundef %44, ptr noundef %78)
  %673 = load i64, ptr %78, align 8, !tbaa !9
  %674 = icmp sge i64 %673, 0
  br i1 %674, label %675, label %694

675:                                              ; preds = %622
  %676 = load i64, ptr %94, align 8, !tbaa !9
  store i64 %676, ptr %44, align 8, !tbaa !9
  %677 = load ptr, ptr %33, align 8, !tbaa !5
  %678 = load i64, ptr %80, align 8, !tbaa !9
  %679 = getelementptr inbounds double, ptr %677, i64 %678
  %680 = load double, ptr %679, align 8, !tbaa !11
  %681 = fptosi double %680 to i64
  %682 = load i64, ptr %80, align 8, !tbaa !9
  %683 = add nsw i64 %681, %682
  %684 = sub nsw i64 %683, 1
  store i64 %684, ptr %45, align 8, !tbaa !9
  %685 = load i64, ptr %44, align 8, !tbaa !9
  %686 = load i64, ptr %45, align 8, !tbaa !9
  %687 = icmp sge i64 %685, %686
  br i1 %687, label %688, label %690

688:                                              ; preds = %675
  %689 = load i64, ptr %44, align 8, !tbaa !9
  br label %692

690:                                              ; preds = %675
  %691 = load i64, ptr %45, align 8, !tbaa !9
  br label %692

692:                                              ; preds = %690, %688
  %693 = phi i64 [ %689, %688 ], [ %691, %690 ]
  store i64 %693, ptr %94, align 8, !tbaa !9
  br label %694

694:                                              ; preds = %692, %622
  %695 = load i64, ptr %78, align 8, !tbaa !9
  %696 = icmp ne i64 %695, 0
  br i1 %696, label %697, label %702

697:                                              ; preds = %694
  %698 = load ptr, ptr %21, align 8, !tbaa !5
  %699 = load i64, ptr %698, align 8, !tbaa !9
  %700 = add nsw i64 %699, 4
  %701 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %700, ptr %701, align 8, !tbaa !9
  br label %1769

702:                                              ; preds = %694
  br label %703

703:                                              ; preds = %702, %619
  %704 = load i64, ptr %67, align 8, !tbaa !9
  %705 = icmp ne i64 %704, 0
  br i1 %705, label %706, label %714

706:                                              ; preds = %703
  %707 = load ptr, ptr %21, align 8, !tbaa !5
  %708 = load ptr, ptr %21, align 8, !tbaa !5
  %709 = load ptr, ptr %31, align 8, !tbaa !5
  %710 = load i64, ptr %43, align 8, !tbaa !9
  %711 = getelementptr inbounds double, ptr %709, i64 %710
  %712 = load ptr, ptr %32, align 8, !tbaa !5
  %713 = call i32 @dlaset_(ptr noundef @.str.15, ptr noundef %707, ptr noundef %708, ptr noundef @c_b38, ptr noundef @c_b27, ptr noundef %711, ptr noundef %712)
  br label %714

714:                                              ; preds = %706, %703
  %715 = load i64, ptr %60, align 8, !tbaa !9
  %716 = icmp ne i64 %715, 0
  br i1 %716, label %717, label %738

717:                                              ; preds = %714
  %718 = load ptr, ptr %19, align 8, !tbaa !5
  %719 = load ptr, ptr %20, align 8, !tbaa !5
  %720 = load ptr, ptr %21, align 8, !tbaa !5
  %721 = load ptr, ptr %22, align 8, !tbaa !5
  %722 = load i64, ptr %37, align 8, !tbaa !9
  %723 = getelementptr inbounds double, ptr %721, i64 %722
  %724 = load ptr, ptr %23, align 8, !tbaa !5
  %725 = load ptr, ptr %24, align 8, !tbaa !5
  %726 = load i64, ptr %39, align 8, !tbaa !9
  %727 = getelementptr inbounds double, ptr %725, i64 %726
  %728 = load ptr, ptr %25, align 8, !tbaa !5
  %729 = load ptr, ptr %29, align 8, !tbaa !5
  %730 = load i64, ptr %41, align 8, !tbaa !9
  %731 = getelementptr inbounds double, ptr %729, i64 %730
  %732 = load ptr, ptr %30, align 8, !tbaa !5
  %733 = load ptr, ptr %31, align 8, !tbaa !5
  %734 = load i64, ptr %43, align 8, !tbaa !9
  %735 = getelementptr inbounds double, ptr %733, i64 %734
  %736 = load ptr, ptr %32, align 8, !tbaa !5
  %737 = call i32 @dgghrd_(ptr noundef %718, ptr noundef %719, ptr noundef %720, ptr noundef %58, ptr noundef %57, ptr noundef %723, ptr noundef %724, ptr noundef %727, ptr noundef %728, ptr noundef %731, ptr noundef %732, ptr noundef %735, ptr noundef %736, ptr noundef %78)
  br label %764

738:                                              ; preds = %714
  %739 = load ptr, ptr %22, align 8, !tbaa !5
  %740 = load i64, ptr %58, align 8, !tbaa !9
  %741 = load i64, ptr %58, align 8, !tbaa !9
  %742 = load i64, ptr %36, align 8, !tbaa !9
  %743 = mul nsw i64 %741, %742
  %744 = add nsw i64 %740, %743
  %745 = getelementptr inbounds double, ptr %739, i64 %744
  %746 = load ptr, ptr %23, align 8, !tbaa !5
  %747 = load ptr, ptr %24, align 8, !tbaa !5
  %748 = load i64, ptr %58, align 8, !tbaa !9
  %749 = load i64, ptr %58, align 8, !tbaa !9
  %750 = load i64, ptr %38, align 8, !tbaa !9
  %751 = mul nsw i64 %749, %750
  %752 = add nsw i64 %748, %751
  %753 = getelementptr inbounds double, ptr %747, i64 %752
  %754 = load ptr, ptr %25, align 8, !tbaa !5
  %755 = load ptr, ptr %29, align 8, !tbaa !5
  %756 = load i64, ptr %41, align 8, !tbaa !9
  %757 = getelementptr inbounds double, ptr %755, i64 %756
  %758 = load ptr, ptr %30, align 8, !tbaa !5
  %759 = load ptr, ptr %31, align 8, !tbaa !5
  %760 = load i64, ptr %43, align 8, !tbaa !9
  %761 = getelementptr inbounds double, ptr %759, i64 %760
  %762 = load ptr, ptr %32, align 8, !tbaa !5
  %763 = call i32 @dgghrd_(ptr noundef @.str, ptr noundef @.str, ptr noundef %81, ptr noundef @c__1, ptr noundef %81, ptr noundef %745, ptr noundef %746, ptr noundef %753, ptr noundef %754, ptr noundef %757, ptr noundef %758, ptr noundef %761, ptr noundef %762, ptr noundef %78)
  br label %764

764:                                              ; preds = %738, %717
  %765 = load i64, ptr %78, align 8, !tbaa !9
  %766 = icmp ne i64 %765, 0
  br i1 %766, label %767, label %772

767:                                              ; preds = %764
  %768 = load ptr, ptr %21, align 8, !tbaa !5
  %769 = load i64, ptr %768, align 8, !tbaa !9
  %770 = add nsw i64 %769, 5
  %771 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %770, ptr %771, align 8, !tbaa !9
  br label %1769

772:                                              ; preds = %764
  %773 = load i64, ptr %64, align 8, !tbaa !9
  store i64 %773, ptr %80, align 8, !tbaa !9
  %774 = load i64, ptr %60, align 8, !tbaa !9
  %775 = icmp ne i64 %774, 0
  br i1 %775, label %776, label %778

776:                                              ; preds = %772
  %777 = getelementptr inbounds [1 x i8], ptr %86, i64 0, i64 0
  store i8 83, ptr %777, align 1, !tbaa !13
  br label %780

778:                                              ; preds = %772
  %779 = getelementptr inbounds [1 x i8], ptr %86, i64 0, i64 0
  store i8 69, ptr %779, align 1, !tbaa !13
  br label %780

780:                                              ; preds = %778, %776
  %781 = load ptr, ptr %34, align 8, !tbaa !5
  %782 = load i64, ptr %781, align 8, !tbaa !9
  %783 = add nsw i64 %782, 1
  %784 = load i64, ptr %80, align 8, !tbaa !9
  %785 = sub nsw i64 %783, %784
  store i64 %785, ptr %44, align 8, !tbaa !9
  %786 = getelementptr inbounds [1 x i8], ptr %86, i64 0, i64 0
  %787 = load ptr, ptr %19, align 8, !tbaa !5
  %788 = load ptr, ptr %20, align 8, !tbaa !5
  %789 = load ptr, ptr %21, align 8, !tbaa !5
  %790 = load ptr, ptr %22, align 8, !tbaa !5
  %791 = load i64, ptr %37, align 8, !tbaa !9
  %792 = getelementptr inbounds double, ptr %790, i64 %791
  %793 = load ptr, ptr %23, align 8, !tbaa !5
  %794 = load ptr, ptr %24, align 8, !tbaa !5
  %795 = load i64, ptr %39, align 8, !tbaa !9
  %796 = getelementptr inbounds double, ptr %794, i64 %795
  %797 = load ptr, ptr %25, align 8, !tbaa !5
  %798 = load ptr, ptr %26, align 8, !tbaa !5
  %799 = getelementptr inbounds double, ptr %798, i64 1
  %800 = load ptr, ptr %27, align 8, !tbaa !5
  %801 = getelementptr inbounds double, ptr %800, i64 1
  %802 = load ptr, ptr %28, align 8, !tbaa !5
  %803 = getelementptr inbounds double, ptr %802, i64 1
  %804 = load ptr, ptr %29, align 8, !tbaa !5
  %805 = load i64, ptr %41, align 8, !tbaa !9
  %806 = getelementptr inbounds double, ptr %804, i64 %805
  %807 = load ptr, ptr %30, align 8, !tbaa !5
  %808 = load ptr, ptr %31, align 8, !tbaa !5
  %809 = load i64, ptr %43, align 8, !tbaa !9
  %810 = getelementptr inbounds double, ptr %808, i64 %809
  %811 = load ptr, ptr %32, align 8, !tbaa !5
  %812 = load ptr, ptr %33, align 8, !tbaa !5
  %813 = load i64, ptr %80, align 8, !tbaa !9
  %814 = getelementptr inbounds double, ptr %812, i64 %813
  %815 = call i32 @dhgeqz_(ptr noundef %786, ptr noundef %787, ptr noundef %788, ptr noundef %789, ptr noundef %58, ptr noundef %57, ptr noundef %792, ptr noundef %793, ptr noundef %796, ptr noundef %797, ptr noundef %799, ptr noundef %801, ptr noundef %803, ptr noundef %806, ptr noundef %807, ptr noundef %810, ptr noundef %811, ptr noundef %814, ptr noundef %44, ptr noundef %78)
  %816 = load i64, ptr %78, align 8, !tbaa !9
  %817 = icmp sge i64 %816, 0
  br i1 %817, label %818, label %837

818:                                              ; preds = %780
  %819 = load i64, ptr %94, align 8, !tbaa !9
  store i64 %819, ptr %44, align 8, !tbaa !9
  %820 = load ptr, ptr %33, align 8, !tbaa !5
  %821 = load i64, ptr %80, align 8, !tbaa !9
  %822 = getelementptr inbounds double, ptr %820, i64 %821
  %823 = load double, ptr %822, align 8, !tbaa !11
  %824 = fptosi double %823 to i64
  %825 = load i64, ptr %80, align 8, !tbaa !9
  %826 = add nsw i64 %824, %825
  %827 = sub nsw i64 %826, 1
  store i64 %827, ptr %45, align 8, !tbaa !9
  %828 = load i64, ptr %44, align 8, !tbaa !9
  %829 = load i64, ptr %45, align 8, !tbaa !9
  %830 = icmp sge i64 %828, %829
  br i1 %830, label %831, label %833

831:                                              ; preds = %818
  %832 = load i64, ptr %44, align 8, !tbaa !9
  br label %835

833:                                              ; preds = %818
  %834 = load i64, ptr %45, align 8, !tbaa !9
  br label %835

835:                                              ; preds = %833, %831
  %836 = phi i64 [ %832, %831 ], [ %834, %833 ]
  store i64 %836, ptr %94, align 8, !tbaa !9
  br label %837

837:                                              ; preds = %835, %780
  %838 = load i64, ptr %78, align 8, !tbaa !9
  %839 = icmp ne i64 %838, 0
  br i1 %839, label %840, label %875

840:                                              ; preds = %837
  %841 = load i64, ptr %78, align 8, !tbaa !9
  %842 = icmp sgt i64 %841, 0
  br i1 %842, label %843, label %851

843:                                              ; preds = %840
  %844 = load i64, ptr %78, align 8, !tbaa !9
  %845 = load ptr, ptr %21, align 8, !tbaa !5
  %846 = load i64, ptr %845, align 8, !tbaa !9
  %847 = icmp sle i64 %844, %846
  br i1 %847, label %848, label %851

848:                                              ; preds = %843
  %849 = load i64, ptr %78, align 8, !tbaa !9
  %850 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %849, ptr %850, align 8, !tbaa !9
  br label %874

851:                                              ; preds = %843, %840
  %852 = load i64, ptr %78, align 8, !tbaa !9
  %853 = load ptr, ptr %21, align 8, !tbaa !5
  %854 = load i64, ptr %853, align 8, !tbaa !9
  %855 = icmp sgt i64 %852, %854
  br i1 %855, label %856, label %868

856:                                              ; preds = %851
  %857 = load i64, ptr %78, align 8, !tbaa !9
  %858 = load ptr, ptr %21, align 8, !tbaa !5
  %859 = load i64, ptr %858, align 8, !tbaa !9
  %860 = shl i64 %859, 1
  %861 = icmp sle i64 %857, %860
  br i1 %861, label %862, label %868

862:                                              ; preds = %856
  %863 = load i64, ptr %78, align 8, !tbaa !9
  %864 = load ptr, ptr %21, align 8, !tbaa !5
  %865 = load i64, ptr %864, align 8, !tbaa !9
  %866 = sub nsw i64 %863, %865
  %867 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %866, ptr %867, align 8, !tbaa !9
  br label %873

868:                                              ; preds = %856, %851
  %869 = load ptr, ptr %21, align 8, !tbaa !5
  %870 = load i64, ptr %869, align 8, !tbaa !9
  %871 = add nsw i64 %870, 6
  %872 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %871, ptr %872, align 8, !tbaa !9
  br label %873

873:                                              ; preds = %868, %862
  br label %874

874:                                              ; preds = %873, %848
  br label %1769

875:                                              ; preds = %837
  %876 = load i64, ptr %60, align 8, !tbaa !9
  %877 = icmp ne i64 %876, 0
  br i1 %877, label %878, label %1354

878:                                              ; preds = %875
  %879 = load i64, ptr %66, align 8, !tbaa !9
  %880 = icmp ne i64 %879, 0
  br i1 %880, label %881, label %889

881:                                              ; preds = %878
  %882 = load i64, ptr %67, align 8, !tbaa !9
  %883 = icmp ne i64 %882, 0
  br i1 %883, label %884, label %886

884:                                              ; preds = %881
  %885 = getelementptr inbounds [1 x i8], ptr %86, i64 0, i64 0
  store i8 66, ptr %885, align 1, !tbaa !13
  br label %888

886:                                              ; preds = %881
  %887 = getelementptr inbounds [1 x i8], ptr %86, i64 0, i64 0
  store i8 76, ptr %887, align 1, !tbaa !13
  br label %888

888:                                              ; preds = %886, %884
  br label %891

889:                                              ; preds = %878
  %890 = getelementptr inbounds [1 x i8], ptr %86, i64 0, i64 0
  store i8 82, ptr %890, align 1, !tbaa !13
  br label %891

891:                                              ; preds = %889, %888
  %892 = getelementptr inbounds [1 x i8], ptr %86, i64 0, i64 0
  %893 = getelementptr inbounds [1 x i64], ptr %87, i64 0, i64 0
  %894 = load ptr, ptr %21, align 8, !tbaa !5
  %895 = load ptr, ptr %22, align 8, !tbaa !5
  %896 = load i64, ptr %37, align 8, !tbaa !9
  %897 = getelementptr inbounds double, ptr %895, i64 %896
  %898 = load ptr, ptr %23, align 8, !tbaa !5
  %899 = load ptr, ptr %24, align 8, !tbaa !5
  %900 = load i64, ptr %39, align 8, !tbaa !9
  %901 = getelementptr inbounds double, ptr %899, i64 %900
  %902 = load ptr, ptr %25, align 8, !tbaa !5
  %903 = load ptr, ptr %29, align 8, !tbaa !5
  %904 = load i64, ptr %41, align 8, !tbaa !9
  %905 = getelementptr inbounds double, ptr %903, i64 %904
  %906 = load ptr, ptr %30, align 8, !tbaa !5
  %907 = load ptr, ptr %31, align 8, !tbaa !5
  %908 = load i64, ptr %43, align 8, !tbaa !9
  %909 = getelementptr inbounds double, ptr %907, i64 %908
  %910 = load ptr, ptr %32, align 8, !tbaa !5
  %911 = load ptr, ptr %21, align 8, !tbaa !5
  %912 = load ptr, ptr %33, align 8, !tbaa !5
  %913 = load i64, ptr %80, align 8, !tbaa !9
  %914 = getelementptr inbounds double, ptr %912, i64 %913
  %915 = call i32 @dtgevc_(ptr noundef %892, ptr noundef @.str.8, ptr noundef %893, ptr noundef %894, ptr noundef %897, ptr noundef %898, ptr noundef %901, ptr noundef %902, ptr noundef %905, ptr noundef %906, ptr noundef %909, ptr noundef %910, ptr noundef %911, ptr noundef %52, ptr noundef %914, ptr noundef %78)
  %916 = load i64, ptr %78, align 8, !tbaa !9
  %917 = icmp ne i64 %916, 0
  br i1 %917, label %918, label %923

918:                                              ; preds = %891
  %919 = load ptr, ptr %21, align 8, !tbaa !5
  %920 = load i64, ptr %919, align 8, !tbaa !9
  %921 = add nsw i64 %920, 7
  %922 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %921, ptr %922, align 8, !tbaa !9
  br label %1769

923:                                              ; preds = %891
  %924 = load i64, ptr %66, align 8, !tbaa !9
  %925 = icmp ne i64 %924, 0
  br i1 %925, label %926, label %1138

926:                                              ; preds = %923
  %927 = load ptr, ptr %21, align 8, !tbaa !5
  %928 = load ptr, ptr %33, align 8, !tbaa !5
  %929 = load i64, ptr %77, align 8, !tbaa !9
  %930 = getelementptr inbounds double, ptr %928, i64 %929
  %931 = load ptr, ptr %33, align 8, !tbaa !5
  %932 = load i64, ptr %89, align 8, !tbaa !9
  %933 = getelementptr inbounds double, ptr %931, i64 %932
  %934 = load ptr, ptr %21, align 8, !tbaa !5
  %935 = load ptr, ptr %29, align 8, !tbaa !5
  %936 = load i64, ptr %41, align 8, !tbaa !9
  %937 = getelementptr inbounds double, ptr %935, i64 %936
  %938 = load ptr, ptr %30, align 8, !tbaa !5
  %939 = call i32 @dggbak_(ptr noundef @.str.12, ptr noundef @.str.13, ptr noundef %927, ptr noundef %58, ptr noundef %57, ptr noundef %930, ptr noundef %933, ptr noundef %934, ptr noundef %937, ptr noundef %938, ptr noundef %78)
  %940 = load i64, ptr %78, align 8, !tbaa !9
  %941 = icmp ne i64 %940, 0
  br i1 %941, label %942, label %947

942:                                              ; preds = %926
  %943 = load ptr, ptr %21, align 8, !tbaa !5
  %944 = load i64, ptr %943, align 8, !tbaa !9
  %945 = add nsw i64 %944, 8
  %946 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %945, ptr %946, align 8, !tbaa !9
  br label %1769

947:                                              ; preds = %926
  %948 = load ptr, ptr %21, align 8, !tbaa !5
  %949 = load i64, ptr %948, align 8, !tbaa !9
  store i64 %949, ptr %44, align 8, !tbaa !9
  store i64 1, ptr %50, align 8, !tbaa !9
  br label %950

950:                                              ; preds = %1134, %947
  %951 = load i64, ptr %50, align 8, !tbaa !9
  %952 = load i64, ptr %44, align 8, !tbaa !9
  %953 = icmp sle i64 %951, %952
  br i1 %953, label %954, label %1137

954:                                              ; preds = %950
  %955 = load ptr, ptr %27, align 8, !tbaa !5
  %956 = load i64, ptr %50, align 8, !tbaa !9
  %957 = getelementptr inbounds double, ptr %955, i64 %956
  %958 = load double, ptr %957, align 8, !tbaa !11
  %959 = fcmp olt double %958, 0.000000e+00
  br i1 %959, label %960, label %961

960:                                              ; preds = %954
  br label %1133

961:                                              ; preds = %954
  store double 0.000000e+00, ptr %65, align 8, !tbaa !11
  %962 = load ptr, ptr %27, align 8, !tbaa !5
  %963 = load i64, ptr %50, align 8, !tbaa !9
  %964 = getelementptr inbounds double, ptr %962, i64 %963
  %965 = load double, ptr %964, align 8, !tbaa !11
  %966 = fcmp oeq double %965, 0.000000e+00
  br i1 %966, label %967, label %1006

967:                                              ; preds = %961
  %968 = load ptr, ptr %21, align 8, !tbaa !5
  %969 = load i64, ptr %968, align 8, !tbaa !9
  store i64 %969, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %53, align 8, !tbaa !9
  br label %970

970:                                              ; preds = %1002, %967
  %971 = load i64, ptr %53, align 8, !tbaa !9
  %972 = load i64, ptr %45, align 8, !tbaa !9
  %973 = icmp sle i64 %971, %972
  br i1 %973, label %974, label %1005

974:                                              ; preds = %970
  %975 = load double, ptr %65, align 8, !tbaa !11
  store double %975, ptr %47, align 8, !tbaa !11
  %976 = load ptr, ptr %29, align 8, !tbaa !5
  %977 = load i64, ptr %53, align 8, !tbaa !9
  %978 = load i64, ptr %50, align 8, !tbaa !9
  %979 = load i64, ptr %40, align 8, !tbaa !9
  %980 = mul nsw i64 %978, %979
  %981 = add nsw i64 %977, %980
  %982 = getelementptr inbounds double, ptr %976, i64 %981
  %983 = load double, ptr %982, align 8, !tbaa !11
  store double %983, ptr %46, align 8, !tbaa !11
  %984 = load double, ptr %46, align 8, !tbaa !11
  %985 = fcmp oge double %984, 0.000000e+00
  br i1 %985, label %986, label %988

986:                                              ; preds = %974
  %987 = load double, ptr %46, align 8, !tbaa !11
  br label %991

988:                                              ; preds = %974
  %989 = load double, ptr %46, align 8, !tbaa !11
  %990 = fneg double %989
  br label %991

991:                                              ; preds = %988, %986
  %992 = phi double [ %987, %986 ], [ %990, %988 ]
  store double %992, ptr %48, align 8, !tbaa !11
  %993 = load double, ptr %47, align 8, !tbaa !11
  %994 = load double, ptr %48, align 8, !tbaa !11
  %995 = fcmp oge double %993, %994
  br i1 %995, label %996, label %998

996:                                              ; preds = %991
  %997 = load double, ptr %47, align 8, !tbaa !11
  br label %1000

998:                                              ; preds = %991
  %999 = load double, ptr %48, align 8, !tbaa !11
  br label %1000

1000:                                             ; preds = %998, %996
  %1001 = phi double [ %997, %996 ], [ %999, %998 ]
  store double %1001, ptr %65, align 8, !tbaa !11
  br label %1002

1002:                                             ; preds = %1000
  %1003 = load i64, ptr %53, align 8, !tbaa !9
  %1004 = add nsw i64 %1003, 1
  store i64 %1004, ptr %53, align 8, !tbaa !9
  br label %970, !llvm.loop !14

1005:                                             ; preds = %970
  br label %1064

1006:                                             ; preds = %961
  %1007 = load ptr, ptr %21, align 8, !tbaa !5
  %1008 = load i64, ptr %1007, align 8, !tbaa !9
  store i64 %1008, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %53, align 8, !tbaa !9
  br label %1009

1009:                                             ; preds = %1060, %1006
  %1010 = load i64, ptr %53, align 8, !tbaa !9
  %1011 = load i64, ptr %45, align 8, !tbaa !9
  %1012 = icmp sle i64 %1010, %1011
  br i1 %1012, label %1013, label %1063

1013:                                             ; preds = %1009
  %1014 = load double, ptr %65, align 8, !tbaa !11
  store double %1014, ptr %48, align 8, !tbaa !11
  %1015 = load ptr, ptr %29, align 8, !tbaa !5
  %1016 = load i64, ptr %53, align 8, !tbaa !9
  %1017 = load i64, ptr %50, align 8, !tbaa !9
  %1018 = load i64, ptr %40, align 8, !tbaa !9
  %1019 = mul nsw i64 %1017, %1018
  %1020 = add nsw i64 %1016, %1019
  %1021 = getelementptr inbounds double, ptr %1015, i64 %1020
  %1022 = load double, ptr %1021, align 8, !tbaa !11
  store double %1022, ptr %46, align 8, !tbaa !11
  %1023 = load double, ptr %46, align 8, !tbaa !11
  %1024 = fcmp oge double %1023, 0.000000e+00
  br i1 %1024, label %1025, label %1027

1025:                                             ; preds = %1013
  %1026 = load double, ptr %46, align 8, !tbaa !11
  br label %1030

1027:                                             ; preds = %1013
  %1028 = load double, ptr %46, align 8, !tbaa !11
  %1029 = fneg double %1028
  br label %1030

1030:                                             ; preds = %1027, %1025
  %1031 = phi double [ %1026, %1025 ], [ %1029, %1027 ]
  %1032 = load ptr, ptr %29, align 8, !tbaa !5
  %1033 = load i64, ptr %53, align 8, !tbaa !9
  %1034 = load i64, ptr %50, align 8, !tbaa !9
  %1035 = add nsw i64 %1034, 1
  %1036 = load i64, ptr %40, align 8, !tbaa !9
  %1037 = mul nsw i64 %1035, %1036
  %1038 = add nsw i64 %1033, %1037
  %1039 = getelementptr inbounds double, ptr %1032, i64 %1038
  %1040 = load double, ptr %1039, align 8, !tbaa !11
  store double %1040, ptr %47, align 8, !tbaa !11
  %1041 = load double, ptr %47, align 8, !tbaa !11
  %1042 = fcmp oge double %1041, 0.000000e+00
  br i1 %1042, label %1043, label %1045

1043:                                             ; preds = %1030
  %1044 = load double, ptr %47, align 8, !tbaa !11
  br label %1048

1045:                                             ; preds = %1030
  %1046 = load double, ptr %47, align 8, !tbaa !11
  %1047 = fneg double %1046
  br label %1048

1048:                                             ; preds = %1045, %1043
  %1049 = phi double [ %1044, %1043 ], [ %1047, %1045 ]
  %1050 = fadd double %1031, %1049
  store double %1050, ptr %49, align 8, !tbaa !11
  %1051 = load double, ptr %48, align 8, !tbaa !11
  %1052 = load double, ptr %49, align 8, !tbaa !11
  %1053 = fcmp oge double %1051, %1052
  br i1 %1053, label %1054, label %1056

1054:                                             ; preds = %1048
  %1055 = load double, ptr %48, align 8, !tbaa !11
  br label %1058

1056:                                             ; preds = %1048
  %1057 = load double, ptr %49, align 8, !tbaa !11
  br label %1058

1058:                                             ; preds = %1056, %1054
  %1059 = phi double [ %1055, %1054 ], [ %1057, %1056 ]
  store double %1059, ptr %65, align 8, !tbaa !11
  br label %1060

1060:                                             ; preds = %1058
  %1061 = load i64, ptr %53, align 8, !tbaa !9
  %1062 = add nsw i64 %1061, 1
  store i64 %1062, ptr %53, align 8, !tbaa !9
  br label %1009, !llvm.loop !16

1063:                                             ; preds = %1009
  br label %1064

1064:                                             ; preds = %1063, %1005
  %1065 = load double, ptr %65, align 8, !tbaa !11
  %1066 = load double, ptr %84, align 8, !tbaa !11
  %1067 = fcmp olt double %1065, %1066
  br i1 %1067, label %1068, label %1069

1068:                                             ; preds = %1064
  br label %1133

1069:                                             ; preds = %1064
  %1070 = load double, ptr %65, align 8, !tbaa !11
  %1071 = fdiv double 1.000000e+00, %1070
  store double %1071, ptr %65, align 8, !tbaa !11
  %1072 = load ptr, ptr %27, align 8, !tbaa !5
  %1073 = load i64, ptr %50, align 8, !tbaa !9
  %1074 = getelementptr inbounds double, ptr %1072, i64 %1073
  %1075 = load double, ptr %1074, align 8, !tbaa !11
  %1076 = fcmp oeq double %1075, 0.000000e+00
  br i1 %1076, label %1077, label %1099

1077:                                             ; preds = %1069
  %1078 = load ptr, ptr %21, align 8, !tbaa !5
  %1079 = load i64, ptr %1078, align 8, !tbaa !9
  store i64 %1079, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %53, align 8, !tbaa !9
  br label %1080

1080:                                             ; preds = %1095, %1077
  %1081 = load i64, ptr %53, align 8, !tbaa !9
  %1082 = load i64, ptr %45, align 8, !tbaa !9
  %1083 = icmp sle i64 %1081, %1082
  br i1 %1083, label %1084, label %1098

1084:                                             ; preds = %1080
  %1085 = load double, ptr %65, align 8, !tbaa !11
  %1086 = load ptr, ptr %29, align 8, !tbaa !5
  %1087 = load i64, ptr %53, align 8, !tbaa !9
  %1088 = load i64, ptr %50, align 8, !tbaa !9
  %1089 = load i64, ptr %40, align 8, !tbaa !9
  %1090 = mul nsw i64 %1088, %1089
  %1091 = add nsw i64 %1087, %1090
  %1092 = getelementptr inbounds double, ptr %1086, i64 %1091
  %1093 = load double, ptr %1092, align 8, !tbaa !11
  %1094 = fmul double %1093, %1085
  store double %1094, ptr %1092, align 8, !tbaa !11
  br label %1095

1095:                                             ; preds = %1084
  %1096 = load i64, ptr %53, align 8, !tbaa !9
  %1097 = add nsw i64 %1096, 1
  store i64 %1097, ptr %53, align 8, !tbaa !9
  br label %1080, !llvm.loop !17

1098:                                             ; preds = %1080
  br label %1132

1099:                                             ; preds = %1069
  %1100 = load ptr, ptr %21, align 8, !tbaa !5
  %1101 = load i64, ptr %1100, align 8, !tbaa !9
  store i64 %1101, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %53, align 8, !tbaa !9
  br label %1102

1102:                                             ; preds = %1128, %1099
  %1103 = load i64, ptr %53, align 8, !tbaa !9
  %1104 = load i64, ptr %45, align 8, !tbaa !9
  %1105 = icmp sle i64 %1103, %1104
  br i1 %1105, label %1106, label %1131

1106:                                             ; preds = %1102
  %1107 = load double, ptr %65, align 8, !tbaa !11
  %1108 = load ptr, ptr %29, align 8, !tbaa !5
  %1109 = load i64, ptr %53, align 8, !tbaa !9
  %1110 = load i64, ptr %50, align 8, !tbaa !9
  %1111 = load i64, ptr %40, align 8, !tbaa !9
  %1112 = mul nsw i64 %1110, %1111
  %1113 = add nsw i64 %1109, %1112
  %1114 = getelementptr inbounds double, ptr %1108, i64 %1113
  %1115 = load double, ptr %1114, align 8, !tbaa !11
  %1116 = fmul double %1115, %1107
  store double %1116, ptr %1114, align 8, !tbaa !11
  %1117 = load double, ptr %65, align 8, !tbaa !11
  %1118 = load ptr, ptr %29, align 8, !tbaa !5
  %1119 = load i64, ptr %53, align 8, !tbaa !9
  %1120 = load i64, ptr %50, align 8, !tbaa !9
  %1121 = add nsw i64 %1120, 1
  %1122 = load i64, ptr %40, align 8, !tbaa !9
  %1123 = mul nsw i64 %1121, %1122
  %1124 = add nsw i64 %1119, %1123
  %1125 = getelementptr inbounds double, ptr %1118, i64 %1124
  %1126 = load double, ptr %1125, align 8, !tbaa !11
  %1127 = fmul double %1126, %1117
  store double %1127, ptr %1125, align 8, !tbaa !11
  br label %1128

1128:                                             ; preds = %1106
  %1129 = load i64, ptr %53, align 8, !tbaa !9
  %1130 = add nsw i64 %1129, 1
  store i64 %1130, ptr %53, align 8, !tbaa !9
  br label %1102, !llvm.loop !18

1131:                                             ; preds = %1102
  br label %1132

1132:                                             ; preds = %1131, %1098
  br label %1133

1133:                                             ; preds = %1132, %1068, %960
  br label %1134

1134:                                             ; preds = %1133
  %1135 = load i64, ptr %50, align 8, !tbaa !9
  %1136 = add nsw i64 %1135, 1
  store i64 %1136, ptr %50, align 8, !tbaa !9
  br label %950, !llvm.loop !19

1137:                                             ; preds = %950
  br label %1138

1138:                                             ; preds = %1137, %923
  %1139 = load i64, ptr %67, align 8, !tbaa !9
  %1140 = icmp ne i64 %1139, 0
  br i1 %1140, label %1141, label %1353

1141:                                             ; preds = %1138
  %1142 = load ptr, ptr %21, align 8, !tbaa !5
  %1143 = load ptr, ptr %33, align 8, !tbaa !5
  %1144 = load i64, ptr %77, align 8, !tbaa !9
  %1145 = getelementptr inbounds double, ptr %1143, i64 %1144
  %1146 = load ptr, ptr %33, align 8, !tbaa !5
  %1147 = load i64, ptr %89, align 8, !tbaa !9
  %1148 = getelementptr inbounds double, ptr %1146, i64 %1147
  %1149 = load ptr, ptr %21, align 8, !tbaa !5
  %1150 = load ptr, ptr %31, align 8, !tbaa !5
  %1151 = load i64, ptr %43, align 8, !tbaa !9
  %1152 = getelementptr inbounds double, ptr %1150, i64 %1151
  %1153 = load ptr, ptr %32, align 8, !tbaa !5
  %1154 = call i32 @dggbak_(ptr noundef @.str.12, ptr noundef @.str.16, ptr noundef %1142, ptr noundef %58, ptr noundef %57, ptr noundef %1145, ptr noundef %1148, ptr noundef %1149, ptr noundef %1152, ptr noundef %1153, ptr noundef %78)
  %1155 = load i64, ptr %78, align 8, !tbaa !9
  %1156 = icmp ne i64 %1155, 0
  br i1 %1156, label %1157, label %1162

1157:                                             ; preds = %1141
  %1158 = load ptr, ptr %21, align 8, !tbaa !5
  %1159 = load i64, ptr %1158, align 8, !tbaa !9
  %1160 = add nsw i64 %1159, 9
  %1161 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %1160, ptr %1161, align 8, !tbaa !9
  br label %1769

1162:                                             ; preds = %1141
  %1163 = load ptr, ptr %21, align 8, !tbaa !5
  %1164 = load i64, ptr %1163, align 8, !tbaa !9
  store i64 %1164, ptr %44, align 8, !tbaa !9
  store i64 1, ptr %50, align 8, !tbaa !9
  br label %1165

1165:                                             ; preds = %1349, %1162
  %1166 = load i64, ptr %50, align 8, !tbaa !9
  %1167 = load i64, ptr %44, align 8, !tbaa !9
  %1168 = icmp sle i64 %1166, %1167
  br i1 %1168, label %1169, label %1352

1169:                                             ; preds = %1165
  %1170 = load ptr, ptr %27, align 8, !tbaa !5
  %1171 = load i64, ptr %50, align 8, !tbaa !9
  %1172 = getelementptr inbounds double, ptr %1170, i64 %1171
  %1173 = load double, ptr %1172, align 8, !tbaa !11
  %1174 = fcmp olt double %1173, 0.000000e+00
  br i1 %1174, label %1175, label %1176

1175:                                             ; preds = %1169
  br label %1348

1176:                                             ; preds = %1169
  store double 0.000000e+00, ptr %65, align 8, !tbaa !11
  %1177 = load ptr, ptr %27, align 8, !tbaa !5
  %1178 = load i64, ptr %50, align 8, !tbaa !9
  %1179 = getelementptr inbounds double, ptr %1177, i64 %1178
  %1180 = load double, ptr %1179, align 8, !tbaa !11
  %1181 = fcmp oeq double %1180, 0.000000e+00
  br i1 %1181, label %1182, label %1221

1182:                                             ; preds = %1176
  %1183 = load ptr, ptr %21, align 8, !tbaa !5
  %1184 = load i64, ptr %1183, align 8, !tbaa !9
  store i64 %1184, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %53, align 8, !tbaa !9
  br label %1185

1185:                                             ; preds = %1217, %1182
  %1186 = load i64, ptr %53, align 8, !tbaa !9
  %1187 = load i64, ptr %45, align 8, !tbaa !9
  %1188 = icmp sle i64 %1186, %1187
  br i1 %1188, label %1189, label %1220

1189:                                             ; preds = %1185
  %1190 = load double, ptr %65, align 8, !tbaa !11
  store double %1190, ptr %47, align 8, !tbaa !11
  %1191 = load ptr, ptr %31, align 8, !tbaa !5
  %1192 = load i64, ptr %53, align 8, !tbaa !9
  %1193 = load i64, ptr %50, align 8, !tbaa !9
  %1194 = load i64, ptr %42, align 8, !tbaa !9
  %1195 = mul nsw i64 %1193, %1194
  %1196 = add nsw i64 %1192, %1195
  %1197 = getelementptr inbounds double, ptr %1191, i64 %1196
  %1198 = load double, ptr %1197, align 8, !tbaa !11
  store double %1198, ptr %46, align 8, !tbaa !11
  %1199 = load double, ptr %46, align 8, !tbaa !11
  %1200 = fcmp oge double %1199, 0.000000e+00
  br i1 %1200, label %1201, label %1203

1201:                                             ; preds = %1189
  %1202 = load double, ptr %46, align 8, !tbaa !11
  br label %1206

1203:                                             ; preds = %1189
  %1204 = load double, ptr %46, align 8, !tbaa !11
  %1205 = fneg double %1204
  br label %1206

1206:                                             ; preds = %1203, %1201
  %1207 = phi double [ %1202, %1201 ], [ %1205, %1203 ]
  store double %1207, ptr %48, align 8, !tbaa !11
  %1208 = load double, ptr %47, align 8, !tbaa !11
  %1209 = load double, ptr %48, align 8, !tbaa !11
  %1210 = fcmp oge double %1208, %1209
  br i1 %1210, label %1211, label %1213

1211:                                             ; preds = %1206
  %1212 = load double, ptr %47, align 8, !tbaa !11
  br label %1215

1213:                                             ; preds = %1206
  %1214 = load double, ptr %48, align 8, !tbaa !11
  br label %1215

1215:                                             ; preds = %1213, %1211
  %1216 = phi double [ %1212, %1211 ], [ %1214, %1213 ]
  store double %1216, ptr %65, align 8, !tbaa !11
  br label %1217

1217:                                             ; preds = %1215
  %1218 = load i64, ptr %53, align 8, !tbaa !9
  %1219 = add nsw i64 %1218, 1
  store i64 %1219, ptr %53, align 8, !tbaa !9
  br label %1185, !llvm.loop !20

1220:                                             ; preds = %1185
  br label %1279

1221:                                             ; preds = %1176
  %1222 = load ptr, ptr %21, align 8, !tbaa !5
  %1223 = load i64, ptr %1222, align 8, !tbaa !9
  store i64 %1223, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %53, align 8, !tbaa !9
  br label %1224

1224:                                             ; preds = %1275, %1221
  %1225 = load i64, ptr %53, align 8, !tbaa !9
  %1226 = load i64, ptr %45, align 8, !tbaa !9
  %1227 = icmp sle i64 %1225, %1226
  br i1 %1227, label %1228, label %1278

1228:                                             ; preds = %1224
  %1229 = load double, ptr %65, align 8, !tbaa !11
  store double %1229, ptr %48, align 8, !tbaa !11
  %1230 = load ptr, ptr %31, align 8, !tbaa !5
  %1231 = load i64, ptr %53, align 8, !tbaa !9
  %1232 = load i64, ptr %50, align 8, !tbaa !9
  %1233 = load i64, ptr %42, align 8, !tbaa !9
  %1234 = mul nsw i64 %1232, %1233
  %1235 = add nsw i64 %1231, %1234
  %1236 = getelementptr inbounds double, ptr %1230, i64 %1235
  %1237 = load double, ptr %1236, align 8, !tbaa !11
  store double %1237, ptr %46, align 8, !tbaa !11
  %1238 = load double, ptr %46, align 8, !tbaa !11
  %1239 = fcmp oge double %1238, 0.000000e+00
  br i1 %1239, label %1240, label %1242

1240:                                             ; preds = %1228
  %1241 = load double, ptr %46, align 8, !tbaa !11
  br label %1245

1242:                                             ; preds = %1228
  %1243 = load double, ptr %46, align 8, !tbaa !11
  %1244 = fneg double %1243
  br label %1245

1245:                                             ; preds = %1242, %1240
  %1246 = phi double [ %1241, %1240 ], [ %1244, %1242 ]
  %1247 = load ptr, ptr %31, align 8, !tbaa !5
  %1248 = load i64, ptr %53, align 8, !tbaa !9
  %1249 = load i64, ptr %50, align 8, !tbaa !9
  %1250 = add nsw i64 %1249, 1
  %1251 = load i64, ptr %42, align 8, !tbaa !9
  %1252 = mul nsw i64 %1250, %1251
  %1253 = add nsw i64 %1248, %1252
  %1254 = getelementptr inbounds double, ptr %1247, i64 %1253
  %1255 = load double, ptr %1254, align 8, !tbaa !11
  store double %1255, ptr %47, align 8, !tbaa !11
  %1256 = load double, ptr %47, align 8, !tbaa !11
  %1257 = fcmp oge double %1256, 0.000000e+00
  br i1 %1257, label %1258, label %1260

1258:                                             ; preds = %1245
  %1259 = load double, ptr %47, align 8, !tbaa !11
  br label %1263

1260:                                             ; preds = %1245
  %1261 = load double, ptr %47, align 8, !tbaa !11
  %1262 = fneg double %1261
  br label %1263

1263:                                             ; preds = %1260, %1258
  %1264 = phi double [ %1259, %1258 ], [ %1262, %1260 ]
  %1265 = fadd double %1246, %1264
  store double %1265, ptr %49, align 8, !tbaa !11
  %1266 = load double, ptr %48, align 8, !tbaa !11
  %1267 = load double, ptr %49, align 8, !tbaa !11
  %1268 = fcmp oge double %1266, %1267
  br i1 %1268, label %1269, label %1271

1269:                                             ; preds = %1263
  %1270 = load double, ptr %48, align 8, !tbaa !11
  br label %1273

1271:                                             ; preds = %1263
  %1272 = load double, ptr %49, align 8, !tbaa !11
  br label %1273

1273:                                             ; preds = %1271, %1269
  %1274 = phi double [ %1270, %1269 ], [ %1272, %1271 ]
  store double %1274, ptr %65, align 8, !tbaa !11
  br label %1275

1275:                                             ; preds = %1273
  %1276 = load i64, ptr %53, align 8, !tbaa !9
  %1277 = add nsw i64 %1276, 1
  store i64 %1277, ptr %53, align 8, !tbaa !9
  br label %1224, !llvm.loop !21

1278:                                             ; preds = %1224
  br label %1279

1279:                                             ; preds = %1278, %1220
  %1280 = load double, ptr %65, align 8, !tbaa !11
  %1281 = load double, ptr %84, align 8, !tbaa !11
  %1282 = fcmp olt double %1280, %1281
  br i1 %1282, label %1283, label %1284

1283:                                             ; preds = %1279
  br label %1348

1284:                                             ; preds = %1279
  %1285 = load double, ptr %65, align 8, !tbaa !11
  %1286 = fdiv double 1.000000e+00, %1285
  store double %1286, ptr %65, align 8, !tbaa !11
  %1287 = load ptr, ptr %27, align 8, !tbaa !5
  %1288 = load i64, ptr %50, align 8, !tbaa !9
  %1289 = getelementptr inbounds double, ptr %1287, i64 %1288
  %1290 = load double, ptr %1289, align 8, !tbaa !11
  %1291 = fcmp oeq double %1290, 0.000000e+00
  br i1 %1291, label %1292, label %1314

1292:                                             ; preds = %1284
  %1293 = load ptr, ptr %21, align 8, !tbaa !5
  %1294 = load i64, ptr %1293, align 8, !tbaa !9
  store i64 %1294, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %53, align 8, !tbaa !9
  br label %1295

1295:                                             ; preds = %1310, %1292
  %1296 = load i64, ptr %53, align 8, !tbaa !9
  %1297 = load i64, ptr %45, align 8, !tbaa !9
  %1298 = icmp sle i64 %1296, %1297
  br i1 %1298, label %1299, label %1313

1299:                                             ; preds = %1295
  %1300 = load double, ptr %65, align 8, !tbaa !11
  %1301 = load ptr, ptr %31, align 8, !tbaa !5
  %1302 = load i64, ptr %53, align 8, !tbaa !9
  %1303 = load i64, ptr %50, align 8, !tbaa !9
  %1304 = load i64, ptr %42, align 8, !tbaa !9
  %1305 = mul nsw i64 %1303, %1304
  %1306 = add nsw i64 %1302, %1305
  %1307 = getelementptr inbounds double, ptr %1301, i64 %1306
  %1308 = load double, ptr %1307, align 8, !tbaa !11
  %1309 = fmul double %1308, %1300
  store double %1309, ptr %1307, align 8, !tbaa !11
  br label %1310

1310:                                             ; preds = %1299
  %1311 = load i64, ptr %53, align 8, !tbaa !9
  %1312 = add nsw i64 %1311, 1
  store i64 %1312, ptr %53, align 8, !tbaa !9
  br label %1295, !llvm.loop !22

1313:                                             ; preds = %1295
  br label %1347

1314:                                             ; preds = %1284
  %1315 = load ptr, ptr %21, align 8, !tbaa !5
  %1316 = load i64, ptr %1315, align 8, !tbaa !9
  store i64 %1316, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %53, align 8, !tbaa !9
  br label %1317

1317:                                             ; preds = %1343, %1314
  %1318 = load i64, ptr %53, align 8, !tbaa !9
  %1319 = load i64, ptr %45, align 8, !tbaa !9
  %1320 = icmp sle i64 %1318, %1319
  br i1 %1320, label %1321, label %1346

1321:                                             ; preds = %1317
  %1322 = load double, ptr %65, align 8, !tbaa !11
  %1323 = load ptr, ptr %31, align 8, !tbaa !5
  %1324 = load i64, ptr %53, align 8, !tbaa !9
  %1325 = load i64, ptr %50, align 8, !tbaa !9
  %1326 = load i64, ptr %42, align 8, !tbaa !9
  %1327 = mul nsw i64 %1325, %1326
  %1328 = add nsw i64 %1324, %1327
  %1329 = getelementptr inbounds double, ptr %1323, i64 %1328
  %1330 = load double, ptr %1329, align 8, !tbaa !11
  %1331 = fmul double %1330, %1322
  store double %1331, ptr %1329, align 8, !tbaa !11
  %1332 = load double, ptr %65, align 8, !tbaa !11
  %1333 = load ptr, ptr %31, align 8, !tbaa !5
  %1334 = load i64, ptr %53, align 8, !tbaa !9
  %1335 = load i64, ptr %50, align 8, !tbaa !9
  %1336 = add nsw i64 %1335, 1
  %1337 = load i64, ptr %42, align 8, !tbaa !9
  %1338 = mul nsw i64 %1336, %1337
  %1339 = add nsw i64 %1334, %1338
  %1340 = getelementptr inbounds double, ptr %1333, i64 %1339
  %1341 = load double, ptr %1340, align 8, !tbaa !11
  %1342 = fmul double %1341, %1332
  store double %1342, ptr %1340, align 8, !tbaa !11
  br label %1343

1343:                                             ; preds = %1321
  %1344 = load i64, ptr %53, align 8, !tbaa !9
  %1345 = add nsw i64 %1344, 1
  store i64 %1345, ptr %53, align 8, !tbaa !9
  br label %1317, !llvm.loop !23

1346:                                             ; preds = %1317
  br label %1347

1347:                                             ; preds = %1346, %1313
  br label %1348

1348:                                             ; preds = %1347, %1283, %1175
  br label %1349

1349:                                             ; preds = %1348
  %1350 = load i64, ptr %50, align 8, !tbaa !9
  %1351 = add nsw i64 %1350, 1
  store i64 %1351, ptr %50, align 8, !tbaa !9
  br label %1165, !llvm.loop !24

1352:                                             ; preds = %1165
  br label %1353

1353:                                             ; preds = %1352, %1138
  br label %1354

1354:                                             ; preds = %1353, %875
  %1355 = load ptr, ptr %21, align 8, !tbaa !5
  %1356 = load i64, ptr %1355, align 8, !tbaa !9
  store i64 %1356, ptr %44, align 8, !tbaa !9
  store i64 1, ptr %50, align 8, !tbaa !9
  br label %1357

1357:                                             ; preds = %1765, %1354
  %1358 = load i64, ptr %50, align 8, !tbaa !9
  %1359 = load i64, ptr %44, align 8, !tbaa !9
  %1360 = icmp sle i64 %1358, %1359
  br i1 %1360, label %1361, label %1768

1361:                                             ; preds = %1357
  %1362 = load ptr, ptr %26, align 8, !tbaa !5
  %1363 = load i64, ptr %50, align 8, !tbaa !9
  %1364 = getelementptr inbounds double, ptr %1362, i64 %1363
  %1365 = load double, ptr %1364, align 8, !tbaa !11
  store double %1365, ptr %46, align 8, !tbaa !11
  %1366 = load double, ptr %46, align 8, !tbaa !11
  %1367 = fcmp oge double %1366, 0.000000e+00
  br i1 %1367, label %1368, label %1370

1368:                                             ; preds = %1361
  %1369 = load double, ptr %46, align 8, !tbaa !11
  br label %1373

1370:                                             ; preds = %1361
  %1371 = load double, ptr %46, align 8, !tbaa !11
  %1372 = fneg double %1371
  br label %1373

1373:                                             ; preds = %1370, %1368
  %1374 = phi double [ %1369, %1368 ], [ %1372, %1370 ]
  store double %1374, ptr %75, align 8, !tbaa !11
  %1375 = load ptr, ptr %27, align 8, !tbaa !5
  %1376 = load i64, ptr %50, align 8, !tbaa !9
  %1377 = getelementptr inbounds double, ptr %1375, i64 %1376
  %1378 = load double, ptr %1377, align 8, !tbaa !11
  store double %1378, ptr %46, align 8, !tbaa !11
  %1379 = load double, ptr %46, align 8, !tbaa !11
  %1380 = fcmp oge double %1379, 0.000000e+00
  br i1 %1380, label %1381, label %1383

1381:                                             ; preds = %1373
  %1382 = load double, ptr %46, align 8, !tbaa !11
  br label %1386

1383:                                             ; preds = %1373
  %1384 = load double, ptr %46, align 8, !tbaa !11
  %1385 = fneg double %1384
  br label %1386

1386:                                             ; preds = %1383, %1381
  %1387 = phi double [ %1382, %1381 ], [ %1385, %1383 ]
  store double %1387, ptr %73, align 8, !tbaa !11
  %1388 = load ptr, ptr %28, align 8, !tbaa !5
  %1389 = load i64, ptr %50, align 8, !tbaa !9
  %1390 = getelementptr inbounds double, ptr %1388, i64 %1389
  %1391 = load double, ptr %1390, align 8, !tbaa !11
  store double %1391, ptr %46, align 8, !tbaa !11
  %1392 = load double, ptr %46, align 8, !tbaa !11
  %1393 = fcmp oge double %1392, 0.000000e+00
  br i1 %1393, label %1394, label %1396

1394:                                             ; preds = %1386
  %1395 = load double, ptr %46, align 8, !tbaa !11
  br label %1399

1396:                                             ; preds = %1386
  %1397 = load double, ptr %46, align 8, !tbaa !11
  %1398 = fneg double %1397
  br label %1399

1399:                                             ; preds = %1396, %1394
  %1400 = phi double [ %1395, %1394 ], [ %1398, %1396 ]
  store double %1400, ptr %61, align 8, !tbaa !11
  %1401 = load double, ptr %62, align 8, !tbaa !11
  %1402 = load ptr, ptr %26, align 8, !tbaa !5
  %1403 = load i64, ptr %50, align 8, !tbaa !9
  %1404 = getelementptr inbounds double, ptr %1402, i64 %1403
  %1405 = load double, ptr %1404, align 8, !tbaa !11
  %1406 = fmul double %1401, %1405
  store double %1406, ptr %83, align 8, !tbaa !11
  %1407 = load double, ptr %62, align 8, !tbaa !11
  %1408 = load ptr, ptr %27, align 8, !tbaa !5
  %1409 = load i64, ptr %50, align 8, !tbaa !9
  %1410 = getelementptr inbounds double, ptr %1408, i64 %1409
  %1411 = load double, ptr %1410, align 8, !tbaa !11
  %1412 = fmul double %1407, %1411
  store double %1412, ptr %82, align 8, !tbaa !11
  %1413 = load double, ptr %63, align 8, !tbaa !11
  %1414 = load ptr, ptr %28, align 8, !tbaa !5
  %1415 = load i64, ptr %50, align 8, !tbaa !9
  %1416 = getelementptr inbounds double, ptr %1414, i64 %1415
  %1417 = load double, ptr %1416, align 8, !tbaa !11
  %1418 = fmul double %1413, %1417
  store double %1418, ptr %76, align 8, !tbaa !11
  store i64 0, ptr %90, align 8, !tbaa !9
  store double 1.000000e+00, ptr %74, align 8, !tbaa !11
  %1419 = load double, ptr %84, align 8, !tbaa !11
  store double %1419, ptr %46, align 8, !tbaa !11
  %1420 = load double, ptr %59, align 8, !tbaa !11
  %1421 = load double, ptr %75, align 8, !tbaa !11
  %1422 = fmul double %1420, %1421
  store double %1422, ptr %47, align 8, !tbaa !11
  %1423 = load double, ptr %46, align 8, !tbaa !11
  %1424 = load double, ptr %47, align 8, !tbaa !11
  %1425 = fcmp oge double %1423, %1424
  br i1 %1425, label %1426, label %1428

1426:                                             ; preds = %1399
  %1427 = load double, ptr %46, align 8, !tbaa !11
  br label %1430

1428:                                             ; preds = %1399
  %1429 = load double, ptr %47, align 8, !tbaa !11
  br label %1430

1430:                                             ; preds = %1428, %1426
  %1431 = phi double [ %1427, %1426 ], [ %1429, %1428 ]
  store double %1431, ptr %46, align 8, !tbaa !11
  %1432 = load double, ptr %59, align 8, !tbaa !11
  %1433 = load double, ptr %61, align 8, !tbaa !11
  %1434 = fmul double %1432, %1433
  store double %1434, ptr %47, align 8, !tbaa !11
  %1435 = load double, ptr %82, align 8, !tbaa !11
  %1436 = fcmp oge double %1435, 0.000000e+00
  br i1 %1436, label %1437, label %1439

1437:                                             ; preds = %1430
  %1438 = load double, ptr %82, align 8, !tbaa !11
  br label %1442

1439:                                             ; preds = %1430
  %1440 = load double, ptr %82, align 8, !tbaa !11
  %1441 = fneg double %1440
  br label %1442

1442:                                             ; preds = %1439, %1437
  %1443 = phi double [ %1438, %1437 ], [ %1441, %1439 ]
  %1444 = load double, ptr %84, align 8, !tbaa !11
  %1445 = fcmp olt double %1443, %1444
  br i1 %1445, label %1446, label %1480

1446:                                             ; preds = %1442
  %1447 = load double, ptr %73, align 8, !tbaa !11
  %1448 = load double, ptr %46, align 8, !tbaa !11
  %1449 = load double, ptr %47, align 8, !tbaa !11
  %1450 = fcmp oge double %1448, %1449
  br i1 %1450, label %1451, label %1453

1451:                                             ; preds = %1446
  %1452 = load double, ptr %46, align 8, !tbaa !11
  br label %1455

1453:                                             ; preds = %1446
  %1454 = load double, ptr %47, align 8, !tbaa !11
  br label %1455

1455:                                             ; preds = %1453, %1451
  %1456 = phi double [ %1452, %1451 ], [ %1454, %1453 ]
  %1457 = fcmp oge double %1447, %1456
  br i1 %1457, label %1458, label %1480

1458:                                             ; preds = %1455
  store i64 1, ptr %90, align 8, !tbaa !9
  %1459 = load double, ptr %92, align 8, !tbaa !11
  %1460 = load double, ptr %84, align 8, !tbaa !11
  %1461 = fmul double %1459, %1460
  store double %1461, ptr %46, align 8, !tbaa !11
  %1462 = load double, ptr %70, align 8, !tbaa !11
  %1463 = load double, ptr %73, align 8, !tbaa !11
  %1464 = fmul double %1462, %1463
  store double %1464, ptr %47, align 8, !tbaa !11
  %1465 = load double, ptr %92, align 8, !tbaa !11
  %1466 = load double, ptr %84, align 8, !tbaa !11
  %1467 = fmul double %1465, %1466
  %1468 = load double, ptr %69, align 8, !tbaa !11
  %1469 = fdiv double %1467, %1468
  %1470 = load double, ptr %46, align 8, !tbaa !11
  %1471 = load double, ptr %47, align 8, !tbaa !11
  %1472 = fcmp oge double %1470, %1471
  br i1 %1472, label %1473, label %1475

1473:                                             ; preds = %1458
  %1474 = load double, ptr %46, align 8, !tbaa !11
  br label %1477

1475:                                             ; preds = %1458
  %1476 = load double, ptr %47, align 8, !tbaa !11
  br label %1477

1477:                                             ; preds = %1475, %1473
  %1478 = phi double [ %1474, %1473 ], [ %1476, %1475 ]
  %1479 = fdiv double %1469, %1478
  store double %1479, ptr %74, align 8, !tbaa !11
  br label %1516

1480:                                             ; preds = %1455, %1442
  %1481 = load double, ptr %82, align 8, !tbaa !11
  %1482 = fcmp oeq double %1481, 0.000000e+00
  br i1 %1482, label %1483, label %1515

1483:                                             ; preds = %1480
  %1484 = load ptr, ptr %27, align 8, !tbaa !5
  %1485 = load i64, ptr %50, align 8, !tbaa !9
  %1486 = getelementptr inbounds double, ptr %1484, i64 %1485
  %1487 = load double, ptr %1486, align 8, !tbaa !11
  %1488 = fcmp olt double %1487, 0.000000e+00
  br i1 %1488, label %1489, label %1497

1489:                                             ; preds = %1483
  %1490 = load i64, ptr %50, align 8, !tbaa !9
  %1491 = icmp sgt i64 %1490, 1
  br i1 %1491, label %1492, label %1497

1492:                                             ; preds = %1489
  %1493 = load ptr, ptr %27, align 8, !tbaa !5
  %1494 = load i64, ptr %50, align 8, !tbaa !9
  %1495 = sub nsw i64 %1494, 1
  %1496 = getelementptr inbounds double, ptr %1493, i64 %1495
  store double 0.000000e+00, ptr %1496, align 8, !tbaa !11
  br label %1514

1497:                                             ; preds = %1489, %1483
  %1498 = load ptr, ptr %27, align 8, !tbaa !5
  %1499 = load i64, ptr %50, align 8, !tbaa !9
  %1500 = getelementptr inbounds double, ptr %1498, i64 %1499
  %1501 = load double, ptr %1500, align 8, !tbaa !11
  %1502 = fcmp ogt double %1501, 0.000000e+00
  br i1 %1502, label %1503, label %1513

1503:                                             ; preds = %1497
  %1504 = load i64, ptr %50, align 8, !tbaa !9
  %1505 = load ptr, ptr %21, align 8, !tbaa !5
  %1506 = load i64, ptr %1505, align 8, !tbaa !9
  %1507 = icmp slt i64 %1504, %1506
  br i1 %1507, label %1508, label %1513

1508:                                             ; preds = %1503
  %1509 = load ptr, ptr %27, align 8, !tbaa !5
  %1510 = load i64, ptr %50, align 8, !tbaa !9
  %1511 = add nsw i64 %1510, 1
  %1512 = getelementptr inbounds double, ptr %1509, i64 %1511
  store double 0.000000e+00, ptr %1512, align 8, !tbaa !11
  br label %1513

1513:                                             ; preds = %1508, %1503, %1497
  br label %1514

1514:                                             ; preds = %1513, %1492
  br label %1515

1515:                                             ; preds = %1514, %1480
  br label %1516

1516:                                             ; preds = %1515, %1477
  %1517 = load double, ptr %84, align 8, !tbaa !11
  store double %1517, ptr %46, align 8, !tbaa !11
  %1518 = load double, ptr %59, align 8, !tbaa !11
  %1519 = load double, ptr %73, align 8, !tbaa !11
  %1520 = fmul double %1518, %1519
  store double %1520, ptr %47, align 8, !tbaa !11
  %1521 = load double, ptr %46, align 8, !tbaa !11
  %1522 = load double, ptr %47, align 8, !tbaa !11
  %1523 = fcmp oge double %1521, %1522
  br i1 %1523, label %1524, label %1526

1524:                                             ; preds = %1516
  %1525 = load double, ptr %46, align 8, !tbaa !11
  br label %1528

1526:                                             ; preds = %1516
  %1527 = load double, ptr %47, align 8, !tbaa !11
  br label %1528

1528:                                             ; preds = %1526, %1524
  %1529 = phi double [ %1525, %1524 ], [ %1527, %1526 ]
  store double %1529, ptr %46, align 8, !tbaa !11
  %1530 = load double, ptr %59, align 8, !tbaa !11
  %1531 = load double, ptr %61, align 8, !tbaa !11
  %1532 = fmul double %1530, %1531
  store double %1532, ptr %47, align 8, !tbaa !11
  %1533 = load double, ptr %83, align 8, !tbaa !11
  %1534 = fcmp oge double %1533, 0.000000e+00
  br i1 %1534, label %1535, label %1537

1535:                                             ; preds = %1528
  %1536 = load double, ptr %83, align 8, !tbaa !11
  br label %1540

1537:                                             ; preds = %1528
  %1538 = load double, ptr %83, align 8, !tbaa !11
  %1539 = fneg double %1538
  br label %1540

1540:                                             ; preds = %1537, %1535
  %1541 = phi double [ %1536, %1535 ], [ %1539, %1537 ]
  %1542 = load double, ptr %84, align 8, !tbaa !11
  %1543 = fcmp olt double %1541, %1542
  br i1 %1543, label %1544, label %1588

1544:                                             ; preds = %1540
  %1545 = load double, ptr %75, align 8, !tbaa !11
  %1546 = load double, ptr %46, align 8, !tbaa !11
  %1547 = load double, ptr %47, align 8, !tbaa !11
  %1548 = fcmp oge double %1546, %1547
  br i1 %1548, label %1549, label %1551

1549:                                             ; preds = %1544
  %1550 = load double, ptr %46, align 8, !tbaa !11
  br label %1553

1551:                                             ; preds = %1544
  %1552 = load double, ptr %47, align 8, !tbaa !11
  br label %1553

1553:                                             ; preds = %1551, %1549
  %1554 = phi double [ %1550, %1549 ], [ %1552, %1551 ]
  %1555 = fcmp oge double %1545, %1554
  br i1 %1555, label %1556, label %1588

1556:                                             ; preds = %1553
  store i64 1, ptr %90, align 8, !tbaa !9
  %1557 = load double, ptr %92, align 8, !tbaa !11
  %1558 = load double, ptr %84, align 8, !tbaa !11
  %1559 = fmul double %1557, %1558
  store double %1559, ptr %48, align 8, !tbaa !11
  %1560 = load double, ptr %70, align 8, !tbaa !11
  %1561 = load double, ptr %75, align 8, !tbaa !11
  %1562 = fmul double %1560, %1561
  store double %1562, ptr %49, align 8, !tbaa !11
  %1563 = load double, ptr %74, align 8, !tbaa !11
  store double %1563, ptr %46, align 8, !tbaa !11
  %1564 = load double, ptr %92, align 8, !tbaa !11
  %1565 = load double, ptr %84, align 8, !tbaa !11
  %1566 = fmul double %1564, %1565
  %1567 = load double, ptr %69, align 8, !tbaa !11
  %1568 = fdiv double %1566, %1567
  %1569 = load double, ptr %48, align 8, !tbaa !11
  %1570 = load double, ptr %49, align 8, !tbaa !11
  %1571 = fcmp oge double %1569, %1570
  br i1 %1571, label %1572, label %1574

1572:                                             ; preds = %1556
  %1573 = load double, ptr %48, align 8, !tbaa !11
  br label %1576

1574:                                             ; preds = %1556
  %1575 = load double, ptr %49, align 8, !tbaa !11
  br label %1576

1576:                                             ; preds = %1574, %1572
  %1577 = phi double [ %1573, %1572 ], [ %1575, %1574 ]
  %1578 = fdiv double %1568, %1577
  store double %1578, ptr %47, align 8, !tbaa !11
  %1579 = load double, ptr %46, align 8, !tbaa !11
  %1580 = load double, ptr %47, align 8, !tbaa !11
  %1581 = fcmp oge double %1579, %1580
  br i1 %1581, label %1582, label %1584

1582:                                             ; preds = %1576
  %1583 = load double, ptr %46, align 8, !tbaa !11
  br label %1586

1584:                                             ; preds = %1576
  %1585 = load double, ptr %47, align 8, !tbaa !11
  br label %1586

1586:                                             ; preds = %1584, %1582
  %1587 = phi double [ %1583, %1582 ], [ %1585, %1584 ]
  store double %1587, ptr %74, align 8, !tbaa !11
  br label %1588

1588:                                             ; preds = %1586, %1553, %1540
  %1589 = load double, ptr %84, align 8, !tbaa !11
  store double %1589, ptr %46, align 8, !tbaa !11
  %1590 = load double, ptr %59, align 8, !tbaa !11
  %1591 = load double, ptr %75, align 8, !tbaa !11
  %1592 = fmul double %1590, %1591
  store double %1592, ptr %47, align 8, !tbaa !11
  %1593 = load double, ptr %46, align 8, !tbaa !11
  %1594 = load double, ptr %47, align 8, !tbaa !11
  %1595 = fcmp oge double %1593, %1594
  br i1 %1595, label %1596, label %1598

1596:                                             ; preds = %1588
  %1597 = load double, ptr %46, align 8, !tbaa !11
  br label %1600

1598:                                             ; preds = %1588
  %1599 = load double, ptr %47, align 8, !tbaa !11
  br label %1600

1600:                                             ; preds = %1598, %1596
  %1601 = phi double [ %1597, %1596 ], [ %1599, %1598 ]
  store double %1601, ptr %46, align 8, !tbaa !11
  %1602 = load double, ptr %59, align 8, !tbaa !11
  %1603 = load double, ptr %73, align 8, !tbaa !11
  %1604 = fmul double %1602, %1603
  store double %1604, ptr %47, align 8, !tbaa !11
  %1605 = load double, ptr %76, align 8, !tbaa !11
  %1606 = fcmp oge double %1605, 0.000000e+00
  br i1 %1606, label %1607, label %1609

1607:                                             ; preds = %1600
  %1608 = load double, ptr %76, align 8, !tbaa !11
  br label %1612

1609:                                             ; preds = %1600
  %1610 = load double, ptr %76, align 8, !tbaa !11
  %1611 = fneg double %1610
  br label %1612

1612:                                             ; preds = %1609, %1607
  %1613 = phi double [ %1608, %1607 ], [ %1611, %1609 ]
  %1614 = load double, ptr %84, align 8, !tbaa !11
  %1615 = fcmp olt double %1613, %1614
  br i1 %1615, label %1616, label %1660

1616:                                             ; preds = %1612
  %1617 = load double, ptr %61, align 8, !tbaa !11
  %1618 = load double, ptr %46, align 8, !tbaa !11
  %1619 = load double, ptr %47, align 8, !tbaa !11
  %1620 = fcmp oge double %1618, %1619
  br i1 %1620, label %1621, label %1623

1621:                                             ; preds = %1616
  %1622 = load double, ptr %46, align 8, !tbaa !11
  br label %1625

1623:                                             ; preds = %1616
  %1624 = load double, ptr %47, align 8, !tbaa !11
  br label %1625

1625:                                             ; preds = %1623, %1621
  %1626 = phi double [ %1622, %1621 ], [ %1624, %1623 ]
  %1627 = fcmp oge double %1617, %1626
  br i1 %1627, label %1628, label %1660

1628:                                             ; preds = %1625
  store i64 1, ptr %90, align 8, !tbaa !9
  %1629 = load double, ptr %92, align 8, !tbaa !11
  %1630 = load double, ptr %84, align 8, !tbaa !11
  %1631 = fmul double %1629, %1630
  store double %1631, ptr %48, align 8, !tbaa !11
  %1632 = load double, ptr %72, align 8, !tbaa !11
  %1633 = load double, ptr %61, align 8, !tbaa !11
  %1634 = fmul double %1632, %1633
  store double %1634, ptr %49, align 8, !tbaa !11
  %1635 = load double, ptr %74, align 8, !tbaa !11
  store double %1635, ptr %46, align 8, !tbaa !11
  %1636 = load double, ptr %92, align 8, !tbaa !11
  %1637 = load double, ptr %84, align 8, !tbaa !11
  %1638 = fmul double %1636, %1637
  %1639 = load double, ptr %71, align 8, !tbaa !11
  %1640 = fdiv double %1638, %1639
  %1641 = load double, ptr %48, align 8, !tbaa !11
  %1642 = load double, ptr %49, align 8, !tbaa !11
  %1643 = fcmp oge double %1641, %1642
  br i1 %1643, label %1644, label %1646

1644:                                             ; preds = %1628
  %1645 = load double, ptr %48, align 8, !tbaa !11
  br label %1648

1646:                                             ; preds = %1628
  %1647 = load double, ptr %49, align 8, !tbaa !11
  br label %1648

1648:                                             ; preds = %1646, %1644
  %1649 = phi double [ %1645, %1644 ], [ %1647, %1646 ]
  %1650 = fdiv double %1640, %1649
  store double %1650, ptr %47, align 8, !tbaa !11
  %1651 = load double, ptr %46, align 8, !tbaa !11
  %1652 = load double, ptr %47, align 8, !tbaa !11
  %1653 = fcmp oge double %1651, %1652
  br i1 %1653, label %1654, label %1656

1654:                                             ; preds = %1648
  %1655 = load double, ptr %46, align 8, !tbaa !11
  br label %1658

1656:                                             ; preds = %1648
  %1657 = load double, ptr %47, align 8, !tbaa !11
  br label %1658

1658:                                             ; preds = %1656, %1654
  %1659 = phi double [ %1655, %1654 ], [ %1657, %1656 ]
  store double %1659, ptr %74, align 8, !tbaa !11
  br label %1660

1660:                                             ; preds = %1658, %1625, %1612
  %1661 = load i64, ptr %90, align 8, !tbaa !9
  %1662 = icmp ne i64 %1661, 0
  br i1 %1662, label %1663, label %1724

1663:                                             ; preds = %1660
  %1664 = load double, ptr %83, align 8, !tbaa !11
  %1665 = fcmp oge double %1664, 0.000000e+00
  br i1 %1665, label %1666, label %1668

1666:                                             ; preds = %1663
  %1667 = load double, ptr %83, align 8, !tbaa !11
  br label %1671

1668:                                             ; preds = %1663
  %1669 = load double, ptr %83, align 8, !tbaa !11
  %1670 = fneg double %1669
  br label %1671

1671:                                             ; preds = %1668, %1666
  %1672 = phi double [ %1667, %1666 ], [ %1670, %1668 ]
  store double %1672, ptr %46, align 8, !tbaa !11
  %1673 = load double, ptr %82, align 8, !tbaa !11
  %1674 = fcmp oge double %1673, 0.000000e+00
  br i1 %1674, label %1675, label %1677

1675:                                             ; preds = %1671
  %1676 = load double, ptr %82, align 8, !tbaa !11
  br label %1680

1677:                                             ; preds = %1671
  %1678 = load double, ptr %82, align 8, !tbaa !11
  %1679 = fneg double %1678
  br label %1680

1680:                                             ; preds = %1677, %1675
  %1681 = phi double [ %1676, %1675 ], [ %1679, %1677 ]
  store double %1681, ptr %47, align 8, !tbaa !11
  %1682 = load double, ptr %46, align 8, !tbaa !11
  %1683 = load double, ptr %47, align 8, !tbaa !11
  %1684 = fcmp oge double %1682, %1683
  br i1 %1684, label %1685, label %1687

1685:                                             ; preds = %1680
  %1686 = load double, ptr %46, align 8, !tbaa !11
  br label %1689

1687:                                             ; preds = %1680
  %1688 = load double, ptr %47, align 8, !tbaa !11
  br label %1689

1689:                                             ; preds = %1687, %1685
  %1690 = phi double [ %1686, %1685 ], [ %1688, %1687 ]
  store double %1690, ptr %46, align 8, !tbaa !11
  %1691 = load double, ptr %76, align 8, !tbaa !11
  %1692 = fcmp oge double %1691, 0.000000e+00
  br i1 %1692, label %1693, label %1695

1693:                                             ; preds = %1689
  %1694 = load double, ptr %76, align 8, !tbaa !11
  br label %1698

1695:                                             ; preds = %1689
  %1696 = load double, ptr %76, align 8, !tbaa !11
  %1697 = fneg double %1696
  br label %1698

1698:                                             ; preds = %1695, %1693
  %1699 = phi double [ %1694, %1693 ], [ %1697, %1695 ]
  store double %1699, ptr %47, align 8, !tbaa !11
  %1700 = load double, ptr %74, align 8, !tbaa !11
  %1701 = load double, ptr %84, align 8, !tbaa !11
  %1702 = fmul double %1700, %1701
  %1703 = load double, ptr %46, align 8, !tbaa !11
  %1704 = load double, ptr %47, align 8, !tbaa !11
  %1705 = fcmp oge double %1703, %1704
  br i1 %1705, label %1706, label %1708

1706:                                             ; preds = %1698
  %1707 = load double, ptr %46, align 8, !tbaa !11
  br label %1710

1708:                                             ; preds = %1698
  %1709 = load double, ptr %47, align 8, !tbaa !11
  br label %1710

1710:                                             ; preds = %1708, %1706
  %1711 = phi double [ %1707, %1706 ], [ %1709, %1708 ]
  %1712 = fmul double %1702, %1711
  store double %1712, ptr %65, align 8, !tbaa !11
  %1713 = load double, ptr %65, align 8, !tbaa !11
  %1714 = fcmp ogt double %1713, 1.000000e+00
  br i1 %1714, label %1715, label %1719

1715:                                             ; preds = %1710
  %1716 = load double, ptr %65, align 8, !tbaa !11
  %1717 = load double, ptr %74, align 8, !tbaa !11
  %1718 = fdiv double %1717, %1716
  store double %1718, ptr %74, align 8, !tbaa !11
  br label %1719

1719:                                             ; preds = %1715, %1710
  %1720 = load double, ptr %74, align 8, !tbaa !11
  %1721 = fcmp olt double %1720, 1.000000e+00
  br i1 %1721, label %1722, label %1723

1722:                                             ; preds = %1719
  store i64 0, ptr %90, align 8, !tbaa !9
  br label %1723

1723:                                             ; preds = %1722, %1719
  br label %1724

1724:                                             ; preds = %1723, %1660
  %1725 = load i64, ptr %90, align 8, !tbaa !9
  %1726 = icmp ne i64 %1725, 0
  br i1 %1726, label %1727, label %1752

1727:                                             ; preds = %1724
  %1728 = load double, ptr %74, align 8, !tbaa !11
  %1729 = load ptr, ptr %26, align 8, !tbaa !5
  %1730 = load i64, ptr %50, align 8, !tbaa !9
  %1731 = getelementptr inbounds double, ptr %1729, i64 %1730
  %1732 = load double, ptr %1731, align 8, !tbaa !11
  %1733 = fmul double %1728, %1732
  %1734 = load double, ptr %62, align 8, !tbaa !11
  %1735 = fmul double %1733, %1734
  store double %1735, ptr %83, align 8, !tbaa !11
  %1736 = load double, ptr %74, align 8, !tbaa !11
  %1737 = load ptr, ptr %27, align 8, !tbaa !5
  %1738 = load i64, ptr %50, align 8, !tbaa !9
  %1739 = getelementptr inbounds double, ptr %1737, i64 %1738
  %1740 = load double, ptr %1739, align 8, !tbaa !11
  %1741 = fmul double %1736, %1740
  %1742 = load double, ptr %62, align 8, !tbaa !11
  %1743 = fmul double %1741, %1742
  store double %1743, ptr %82, align 8, !tbaa !11
  %1744 = load double, ptr %74, align 8, !tbaa !11
  %1745 = load ptr, ptr %28, align 8, !tbaa !5
  %1746 = load i64, ptr %50, align 8, !tbaa !9
  %1747 = getelementptr inbounds double, ptr %1745, i64 %1746
  %1748 = load double, ptr %1747, align 8, !tbaa !11
  %1749 = fmul double %1744, %1748
  %1750 = load double, ptr %63, align 8, !tbaa !11
  %1751 = fmul double %1749, %1750
  store double %1751, ptr %76, align 8, !tbaa !11
  br label %1752

1752:                                             ; preds = %1727, %1724
  %1753 = load double, ptr %83, align 8, !tbaa !11
  %1754 = load ptr, ptr %26, align 8, !tbaa !5
  %1755 = load i64, ptr %50, align 8, !tbaa !9
  %1756 = getelementptr inbounds double, ptr %1754, i64 %1755
  store double %1753, ptr %1756, align 8, !tbaa !11
  %1757 = load double, ptr %82, align 8, !tbaa !11
  %1758 = load ptr, ptr %27, align 8, !tbaa !5
  %1759 = load i64, ptr %50, align 8, !tbaa !9
  %1760 = getelementptr inbounds double, ptr %1758, i64 %1759
  store double %1757, ptr %1760, align 8, !tbaa !11
  %1761 = load double, ptr %76, align 8, !tbaa !11
  %1762 = load ptr, ptr %28, align 8, !tbaa !5
  %1763 = load i64, ptr %50, align 8, !tbaa !9
  %1764 = getelementptr inbounds double, ptr %1762, i64 %1763
  store double %1761, ptr %1764, align 8, !tbaa !11
  br label %1765

1765:                                             ; preds = %1752
  %1766 = load i64, ptr %50, align 8, !tbaa !9
  %1767 = add nsw i64 %1766, 1
  store i64 %1767, ptr %50, align 8, !tbaa !9
  br label %1357, !llvm.loop !25

1768:                                             ; preds = %1357
  br label %1769

1769:                                             ; preds = %1768, %1157, %942, %918, %874, %767, %697, %614, %556, %487
  %1770 = load i64, ptr %94, align 8, !tbaa !9
  %1771 = sitofp i64 %1770 to double
  %1772 = load ptr, ptr %33, align 8, !tbaa !5
  %1773 = getelementptr inbounds double, ptr %1772, i64 1
  store double %1771, ptr %1773, align 8, !tbaa !11
  store i32 0, ptr %18, align 4
  store i32 1, ptr %96, align 4
  br label %1774

1774:                                             ; preds = %1769, %452, %409, %360, %354, %346
  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 1, ptr %86) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 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
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  %1775 = load i32, ptr %18, align 4
  ret i32 %1775
}

; 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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #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 @dtgevc_(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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"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 = !{!7, !7, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = distinct !{!16, !15}
!17 = distinct !{!17, !15}
!18 = distinct !{!18, !15}
!19 = distinct !{!19, !15}
!20 = distinct !{!20, !15}
!21 = distinct !{!21, !15}
!22 = distinct !{!22, !15}
!23 = distinct !{!23, !15}
!24 = distinct !{!24, !15}
!25 = distinct !{!25, !15}


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

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.2 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c_n1 = external hidden global i64, align 8
@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b27 = external hidden global double, align 8
@.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_b38 = external hidden global double, align 8
@.str.16 = external hidden unnamed_addr constant [2 x i8], align 1

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

47:                                               ; preds = %17
  %48 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #5
  %.not699 = icmp eq i64 %48, 0
  %not..not699 = xor i1 %.not699, true
  br label %49

49:                                               ; preds = %47, %17
  %50 = phi i1 [ false, %17 ], [ %not..not699, %47 ]
  %51 = phi i1 [ false, %17 ], [ %.not699, %47 ]
  %52 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #5
  %.not700 = icmp eq i64 %52, 0
  br i1 %.not700, label %53, label %55

53:                                               ; preds = %49
  %54 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #5
  %.not701 = icmp eq i64 %54, 0
  %not..not701 = xor i1 %.not701, true
  br label %55

55:                                               ; preds = %53, %49
  %56 = phi i1 [ false, %49 ], [ %not..not701, %53 ]
  %57 = phi i1 [ false, %49 ], [ %.not701, %53 ]
  %58 = or i1 %50, %56
  %59 = load i64, ptr %2, align 8, !tbaa !5
  %60 = shl i64 %59, 3
  %61 = tail call i64 @llvm.smax.i64(i64 %60, i64 1)
  %62 = uitofp nneg i64 %61 to double
  store double %62, ptr %14, align 8, !tbaa !9
  %63 = load i64, ptr %15, align 8, !tbaa !5
  %64 = icmp eq i64 %63, -1
  store i64 0, ptr %16, align 8, !tbaa !5
  %brmerge = select i1 %51, i1 true, i1 %57
  %.mux = select i1 %51, i64 -1, i64 -2
  br i1 %brmerge, label %.thread745.sink.split, label %65

65:                                               ; preds = %55
  %66 = load i64, ptr %2, align 8, !tbaa !5
  %67 = icmp slt i64 %66, 0
  br i1 %67, label %.thread745.sink.split, label %68

68:                                               ; preds = %65
  %69 = load i64, ptr %4, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %66, i64 1)
  %70 = icmp slt i64 %69, %spec.select
  br i1 %70, label %.thread745.sink.split, label %71

71:                                               ; preds = %68
  %72 = load i64, ptr %6, align 8, !tbaa !5
  %73 = icmp slt i64 %72, %spec.select
  br i1 %73, label %.thread745.sink.split, label %74

74:                                               ; preds = %71
  %75 = load i64, ptr %11, align 8, !tbaa !5
  %76 = icmp slt i64 %75, 1
  %77 = icmp ult i64 %75, %66
  %or.cond790 = and i1 %50, %77
  %or.cond793 = select i1 %76, i1 true, i1 %or.cond790
  br i1 %or.cond793, label %.thread745.sink.split, label %78

78:                                               ; preds = %74
  %79 = load i64, ptr %13, align 8, !tbaa !5
  %80 = icmp slt i64 %79, 1
  %81 = icmp ult i64 %79, %66
  %or.cond791 = and i1 %56, %81
  %or.cond794 = select i1 %80, i1 true, i1 %or.cond791
  br i1 %or.cond794, label %.thread745.sink.split, label %82

82:                                               ; preds = %78
  %83 = load i64, ptr %15, align 8, !tbaa !5
  %84 = icmp sge i64 %83, %61
  %or.cond = select i1 %84, i1 true, i1 %64
  br i1 %or.cond, label %.thread, label %.thread745.sink.split

.thread:                                          ; preds = %82
  %85 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1) #5
  %86 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_n1) #5
  %87 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_n1) #5
  %88 = tail call i64 @llvm.smax.i64(i64 %85, i64 %86)
  %89 = tail call i64 @llvm.smax.i64(i64 %88, i64 %87)
  %90 = load i64, ptr %2, align 8, !tbaa !5
  %91 = mul nsw i64 %90, 6
  store i64 %91, ptr %18, align 8, !tbaa !5
  %92 = add nsw i64 %89, 1
  %93 = mul nsw i64 %90, %92
  store i64 %93, ptr %19, align 8, !tbaa !5
  %94 = shl i64 %90, 1
  %95 = tail call i64 @llvm.smax.i64(i64 %91, i64 %93)
  %96 = add nsw i64 %95, %94
  %97 = sitofp i64 %96 to double
  store double %97, ptr %14, align 8, !tbaa !9
  %.pr744.pr = load i64, ptr %16, align 8, !tbaa !5
  %.not705 = icmp eq i64 %.pr744.pr, 0
  br i1 %.not705, label %101, label %.thread745

.thread745.sink.split:                            ; preds = %55, %82, %78, %74, %71, %68, %65
  %.sink = phi i64 [ %.mux, %55 ], [ -3, %65 ], [ -5, %68 ], [ -7, %71 ], [ -12, %74 ], [ -14, %78 ], [ -16, %82 ]
  store i64 %.sink, ptr %16, align 8, !tbaa !5
  br label %.thread745

.thread745:                                       ; preds = %.thread745.sink.split, %.thread
  %98 = phi i64 [ %.pr744.pr, %.thread ], [ %.sink, %.thread745.sink.split ]
  %99 = sub nsw i64 0, %98
  store i64 %99, ptr %18, align 8, !tbaa !5
  %100 = call i32 @xerbla_(ptr noundef nonnull @.str.6, ptr noundef nonnull %18) #5
  br label %602

101:                                              ; preds = %.thread
  %102 = icmp eq i64 %90, 0
  %or.cond885 = select i1 %64, i1 true, i1 %102
  br i1 %or.cond885, label %602, label %103

103:                                              ; preds = %101
  %104 = tail call double @dlamch_(ptr noundef nonnull @.str.7) #5
  %105 = tail call double @dlamch_(ptr noundef nonnull @.str.8) #5
  %106 = fmul double %104, %105
  %107 = tail call double @dlamch_(ptr noundef nonnull @.str.9) #5
  %108 = fadd double %107, %107
  %109 = fdiv double 1.000000e+00, %108
  %110 = tail call double @llvm.fmuladd.f64(double %106, double 4.000000e+00, double 1.000000e+00)
  %111 = tail call double @dlange_(ptr noundef nonnull @.str.10, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef nonnull %14) #5
  store double %111, ptr %23, align 8, !tbaa !9
  %112 = fcmp olt double %111, 1.000000e+00
  br i1 %112, label %113, label %117

113:                                              ; preds = %103
  %114 = fmul double %111, %109
  %115 = fcmp olt double %114, 1.000000e+00
  br i1 %115, label %116, label %117

116:                                              ; preds = %113
  br label %117

117:                                              ; preds = %113, %116, %103
  %.0659 = phi double [ %108, %116 ], [ %111, %113 ], [ %111, %103 ]
  %.0658 = phi double [ %114, %116 ], [ 1.000000e+00, %113 ], [ 1.000000e+00, %103 ]
  %118 = fcmp ogt double %111, 0.000000e+00
  br i1 %118, label %119, label %125

119:                                              ; preds = %117
  %120 = call i32 @dlascl_(ptr noundef nonnull @.str.11, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, ptr noundef nonnull %23, ptr noundef nonnull @c_b27, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef nonnull %25) #5
  %121 = load i64, ptr %25, align 8, !tbaa !5
  %.not706 = icmp eq i64 %121, 0
  br i1 %.not706, label %125, label %122

122:                                              ; preds = %119
  %123 = load i64, ptr %2, align 8, !tbaa !5
  %124 = add nsw i64 %123, 10
  store i64 %124, ptr %16, align 8, !tbaa !5
  br label %602

125:                                              ; preds = %119, %117
  %126 = call double @dlange_(ptr noundef nonnull @.str.10, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %14) #5
  store double %126, ptr %24, align 8, !tbaa !9
  %127 = fcmp olt double %126, 1.000000e+00
  br i1 %127, label %128, label %132

128:                                              ; preds = %125
  %129 = fmul double %109, %126
  %130 = fcmp olt double %129, 1.000000e+00
  br i1 %130, label %131, label %132

131:                                              ; preds = %128
  br label %132

132:                                              ; preds = %128, %131, %125
  %.0657 = phi double [ %108, %131 ], [ %126, %128 ], [ %126, %125 ]
  %.0656 = phi double [ %129, %131 ], [ 1.000000e+00, %128 ], [ 1.000000e+00, %125 ]
  %133 = fcmp ogt double %126, 0.000000e+00
  br i1 %133, label %134, label %140

134:                                              ; preds = %132
  %135 = call i32 @dlascl_(ptr noundef nonnull @.str.11, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, ptr noundef nonnull %24, ptr noundef nonnull @c_b27, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %25) #5
  %136 = load i64, ptr %25, align 8, !tbaa !5
  %.not707 = icmp eq i64 %136, 0
  br i1 %.not707, label %140, label %137

137:                                              ; preds = %134
  %138 = load i64, ptr %2, align 8, !tbaa !5
  %139 = add nsw i64 %138, 10
  store i64 %139, ptr %16, align 8, !tbaa !5
  br label %602

140:                                              ; preds = %134, %132
  %141 = load i64, ptr %2, align 8, !tbaa !5
  %reass.add = shl i64 %141, 1
  %142 = or disjoint i64 %reass.add, 1
  %143 = getelementptr double, ptr %14, i64 %141
  %144 = getelementptr double, ptr %14, i64 %reass.add
  %145 = call i32 @dggbal_(ptr noundef nonnull @.str.12, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %22, ptr noundef nonnull %21, ptr noundef nonnull %14, ptr noundef %143, ptr noundef %144, ptr noundef nonnull %25) #5
  %146 = load i64, ptr %25, align 8, !tbaa !5
  %.not708 = icmp eq i64 %146, 0
  br i1 %.not708, label %150, label %147

147:                                              ; preds = %140
  %148 = load i64, ptr %2, align 8, !tbaa !5
  %149 = add nsw i64 %148, 1
  br label %.loopexit.sink.split

150:                                              ; preds = %140
  %151 = load i64, ptr %21, align 8, !tbaa !5
  %152 = add nsw i64 %151, 1
  %153 = load i64, ptr %22, align 8, !tbaa !5
  %154 = sub i64 %152, %153
  store i64 %154, ptr %27, align 8, !tbaa !5
  br i1 %58, label %155, label %158

155:                                              ; preds = %150
  %156 = load i64, ptr %2, align 8, !tbaa !5
  %reass.sub = sub i64 %156, %153
  %157 = add i64 %reass.sub, 1
  br label %158

158:                                              ; preds = %150, %155
  %storemerge = phi i64 [ %157, %155 ], [ %154, %150 ]
  store i64 %storemerge, ptr %26, align 8, !tbaa !5
  %159 = add nsw i64 %154, %142
  %160 = load i64, ptr %15, align 8, !tbaa !5
  %reass.sub852 = sub i64 %160, %159
  %161 = add i64 %reass.sub852, 1
  store i64 %161, ptr %18, align 8, !tbaa !5
  %162 = add i64 %33, 1
  %163 = mul i64 %153, %162
  %164 = getelementptr inbounds double, ptr %35, i64 %163
  %165 = getelementptr inbounds double, ptr %45, i64 %159
  %166 = call i32 @dgeqrf_(ptr noundef nonnull %27, ptr noundef nonnull %26, ptr noundef %164, ptr noundef nonnull %6, ptr noundef %144, ptr noundef nonnull %165, ptr noundef nonnull %18, ptr noundef nonnull %25) #5
  %167 = load i64, ptr %25, align 8, !tbaa !5
  %168 = icmp sgt i64 %167, -1
  br i1 %168, label %169, label %.thread747

169:                                              ; preds = %158
  %170 = load double, ptr %165, align 8, !tbaa !9
  %171 = fptosi double %170 to i64
  %172 = add i64 %159, -1
  %173 = add i64 %172, %171
  store i64 %173, ptr %19, align 8, !tbaa !5
  %174 = call i64 @llvm.smax.i64(i64 %61, i64 %173)
  %.not710 = icmp eq i64 %167, 0
  br i1 %.not710, label %177, label %.thread747

.thread747:                                       ; preds = %158, %169
  %.0641750 = phi i64 [ %174, %169 ], [ %61, %158 ]
  %175 = load i64, ptr %2, align 8, !tbaa !5
  %176 = add nsw i64 %175, 2
  br label %.loopexit.sink.split

177:                                              ; preds = %169
  %178 = load i64, ptr %15, align 8, !tbaa !5
  %reass.sub853 = sub i64 %178, %159
  %179 = add i64 %reass.sub853, 1
  store i64 %179, ptr %18, align 8, !tbaa !5
  %180 = load i64, ptr %22, align 8, !tbaa !5
  %181 = mul i64 %180, %162
  %182 = getelementptr inbounds double, ptr %35, i64 %181
  %183 = add i64 %30, 1
  %184 = mul i64 %180, %183
  %185 = getelementptr inbounds double, ptr %32, i64 %184
  %186 = call i32 @dormqr_(ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.14, ptr noundef nonnull %27, ptr noundef nonnull %26, ptr noundef nonnull %27, ptr noundef %182, ptr noundef nonnull %6, ptr noundef %144, ptr noundef %185, ptr noundef nonnull %4, ptr noundef nonnull %165, ptr noundef nonnull %18, ptr noundef nonnull %25) #5
  %187 = load i64, ptr %25, align 8, !tbaa !5
  %188 = icmp sgt i64 %187, -1
  br i1 %188, label %189, label %.thread751

189:                                              ; preds = %177
  store i64 %174, ptr %18, align 8, !tbaa !5
  %190 = load double, ptr %165, align 8, !tbaa !9
  %191 = fptosi double %190 to i64
  %192 = add i64 %172, %191
  store i64 %192, ptr %19, align 8, !tbaa !5
  %193 = call i64 @llvm.smax.i64(i64 %174, i64 %192)
  %.not712 = icmp eq i64 %187, 0
  br i1 %.not712, label %196, label %.thread751

.thread751:                                       ; preds = %177, %189
  %.1754 = phi i64 [ %193, %189 ], [ %174, %177 ]
  %194 = load i64, ptr %2, align 8, !tbaa !5
  %195 = add nsw i64 %194, 3
  br label %.loopexit.sink.split

196:                                              ; preds = %189
  br i1 %50, label %197, label %226

197:                                              ; preds = %196
  %198 = call i32 @dlaset_(ptr noundef nonnull @.str.15, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_b38, ptr noundef nonnull @c_b27, ptr noundef %10, ptr noundef nonnull %11) #5
  %199 = load i64, ptr %27, align 8, !tbaa !5
  %200 = add nsw i64 %199, -1
  store i64 %200, ptr %18, align 8, !tbaa !5
  store i64 %200, ptr %19, align 8, !tbaa !5
  %201 = load i64, ptr %22, align 8, !tbaa !5
  %202 = add nsw i64 %201, 1
  %203 = mul nsw i64 %201, %33
  %204 = getelementptr double, ptr %35, i64 %202
  %205 = getelementptr double, ptr %204, i64 %203
  %206 = mul nsw i64 %201, %39
  %207 = getelementptr double, ptr %41, i64 %202
  %208 = getelementptr double, ptr %207, i64 %206
  %209 = call i32 @dlacpy_(ptr noundef nonnull @.str.13, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef %205, ptr noundef nonnull %6, ptr noundef %208, ptr noundef nonnull %11) #5
  %210 = load i64, ptr %15, align 8, !tbaa !5
  %reass.sub854 = sub i64 %210, %159
  %211 = add i64 %reass.sub854, 1
  store i64 %211, ptr %18, align 8, !tbaa !5
  %212 = load i64, ptr %22, align 8, !tbaa !5
  %213 = add i64 %39, 1
  %214 = mul i64 %212, %213
  %215 = getelementptr inbounds double, ptr %41, i64 %214
  %216 = call i32 @dorgqr_(ptr noundef nonnull %27, ptr noundef nonnull %27, ptr noundef nonnull %27, ptr noundef %215, ptr noundef nonnull %11, ptr noundef %144, ptr noundef nonnull %165, ptr noundef nonnull %18, ptr noundef nonnull %25) #5
  %217 = load i64, ptr %25, align 8, !tbaa !5
  %218 = icmp sgt i64 %217, -1
  br i1 %218, label %219, label %.thread755

219:                                              ; preds = %197
  store i64 %193, ptr %18, align 8, !tbaa !5
  %220 = load double, ptr %165, align 8, !tbaa !9
  %221 = fptosi double %220 to i64
  %222 = add i64 %172, %221
  store i64 %222, ptr %19, align 8, !tbaa !5
  %223 = call i64 @llvm.smax.i64(i64 %193, i64 %222)
  %.not714 = icmp eq i64 %217, 0
  br i1 %.not714, label %.thread760, label %.thread755

.thread755:                                       ; preds = %197, %219
  %.2758 = phi i64 [ %223, %219 ], [ %193, %197 ]
  %224 = load i64, ptr %2, align 8, !tbaa !5
  %225 = add nsw i64 %224, 4
  br label %.loopexit.sink.split

226:                                              ; preds = %196
  br i1 %56, label %.thread759, label %228

.thread760:                                       ; preds = %219
  br i1 %56, label %.thread759, label %.thread766

.thread759:                                       ; preds = %226, %.thread760
  %.3765 = phi i64 [ %223, %.thread760 ], [ %193, %226 ]
  %227 = call i32 @dlaset_(ptr noundef nonnull @.str.15, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_b38, ptr noundef nonnull @c_b27, ptr noundef %12, ptr noundef nonnull %13) #5
  br label %.thread766

228:                                              ; preds = %226
  br i1 %58, label %.thread766, label %230

.thread766:                                       ; preds = %.thread760, %.thread759, %228
  %.3763 = phi i64 [ %.3765, %.thread759 ], [ %193, %228 ], [ %223, %.thread760 ]
  %229 = call i32 @dgghrd_(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %22, ptr noundef nonnull %21, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %25) #5
  br label %237

230:                                              ; preds = %228
  %231 = load i64, ptr %22, align 8, !tbaa !5
  %232 = mul i64 %231, %183
  %233 = getelementptr inbounds double, ptr %32, i64 %232
  %234 = mul i64 %231, %162
  %235 = getelementptr inbounds double, ptr %35, i64 %234
  %236 = call i32 @dgghrd_(ptr noundef nonnull @.str, ptr noundef nonnull @.str, ptr noundef nonnull %27, ptr noundef nonnull @c__1, ptr noundef nonnull %27, ptr noundef %233, ptr noundef nonnull %4, ptr noundef %235, ptr noundef nonnull %6, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %25) #5
  br label %237

237:                                              ; preds = %230, %.thread766
  %.3762 = phi i64 [ %193, %230 ], [ %.3763, %.thread766 ]
  %238 = load i64, ptr %25, align 8, !tbaa !5
  %.not715 = icmp eq i64 %238, 0
  br i1 %.not715, label %242, label %239

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

242:                                              ; preds = %237
  %.741 = select i1 %58, i8 83, i8 69
  store i8 %.741, ptr %28, align 1, !tbaa !11
  %243 = load i64, ptr %15, align 8, !tbaa !5
  %reass.sub855 = sub i64 %243, %142
  %244 = add i64 %reass.sub855, 1
  store i64 %244, ptr %18, align 8, !tbaa !5
  %245 = call i32 @dhgeqz_(ptr noundef nonnull %28, ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %22, ptr noundef nonnull %21, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %12, ptr noundef nonnull %13, ptr noundef %144, ptr noundef nonnull %18, ptr noundef nonnull %25) #5
  %246 = load i64, ptr %25, align 8, !tbaa !5
  %247 = icmp sgt i64 %246, -1
  br i1 %247, label %248, label %._crit_edge

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

248:                                              ; preds = %242
  store i64 %.3762, ptr %18, align 8, !tbaa !5
  %249 = load double, ptr %144, align 8, !tbaa !9
  %250 = fptosi double %249 to i64
  %251 = add i64 %reass.add, %250
  store i64 %251, ptr %19, align 8, !tbaa !5
  %252 = call i64 @llvm.smax.i64(i64 %.3762, i64 %251)
  %.not718 = icmp eq i64 %246, 0
  br i1 %.not718, label %263, label %253

253:                                              ; preds = %248
  %254 = load i64, ptr %2, align 8, !tbaa !5
  %.not735 = icmp sgt i64 %246, %254
  br i1 %.not735, label %255, label %.loopexit.sink.split

255:                                              ; preds = %._crit_edge, %253
  %256 = phi i64 [ %254, %253 ], [ %.pre, %._crit_edge ]
  %.4771775 = phi i64 [ %252, %253 ], [ %.3762, %._crit_edge ]
  %257 = icmp sle i64 %246, %256
  %258 = shl i64 %256, 1
  %.not736 = icmp sgt i64 %246, %258
  %or.cond742 = or i1 %257, %.not736
  br i1 %or.cond742, label %261, label %259

259:                                              ; preds = %255
  %260 = sub nsw i64 %246, %256
  br label %.loopexit.sink.split

261:                                              ; preds = %255
  %262 = add nsw i64 %256, 6
  br label %.loopexit.sink.split

263:                                              ; preds = %248
  br i1 %58, label %264, label %.loopexit802

264:                                              ; preds = %263
  br i1 %50, label %265, label %.thread776

265:                                              ; preds = %264
  %. = select i1 %56, i8 66, i8 76
  store i8 %., ptr %28, align 1, !tbaa !11
  %266 = call i32 @dtgevc_(ptr noundef nonnull %28, ptr noundef nonnull @.str.8, ptr noundef nonnull %29, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %2, ptr noundef nonnull %20, ptr noundef nonnull %144, ptr noundef nonnull %25) #5
  %267 = load i64, ptr %25, align 8, !tbaa !5
  %.not719 = icmp eq i64 %267, 0
  br i1 %.not719, label %273, label %270

.thread776:                                       ; preds = %264
  store i8 82, ptr %28, align 1, !tbaa !11
  %268 = call i32 @dtgevc_(ptr noundef nonnull %28, ptr noundef nonnull @.str.8, ptr noundef nonnull %29, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %2, ptr noundef nonnull %20, ptr noundef nonnull %144, ptr noundef nonnull %25) #5
  %269 = load i64, ptr %25, align 8, !tbaa !5
  %.not719777 = icmp eq i64 %269, 0
  br i1 %.not719777, label %.thread778, label %270

270:                                              ; preds = %.thread776, %265
  %271 = load i64, ptr %2, align 8, !tbaa !5
  %272 = add nsw i64 %271, 7
  br label %.loopexit.sink.split

273:                                              ; preds = %265
  %274 = call i32 @dggbak_(ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.13, ptr noundef nonnull %2, ptr noundef nonnull %22, ptr noundef nonnull %21, ptr noundef nonnull %14, ptr noundef %143, ptr noundef nonnull %2, ptr noundef %10, ptr noundef nonnull %11, ptr noundef nonnull %25) #5
  %275 = load i64, ptr %25, align 8, !tbaa !5
  %.not720 = icmp eq i64 %275, 0
  %276 = load i64, ptr %2, align 8, !tbaa !5
  br i1 %.not720, label %279, label %277

277:                                              ; preds = %273
  %278 = add nsw i64 %276, 8
  br label %.loopexit.sink.split

279:                                              ; preds = %273
  store i64 %276, ptr %18, align 8, !tbaa !5
  %.not721823 = icmp slt i64 %276, 1
  br i1 %.not721823, label %.thread778, label %.lr.ph825.preheader

.lr.ph825.preheader:                              ; preds = %279
  %280 = add nuw i64 %276, 2305843009213693951
  %281 = mul i64 %39, %280
  %282 = add i64 %281, %276
  %283 = shl i64 %282, 3
  %scevgep = getelementptr i8, ptr %10, i64 %283
  %284 = shl i64 %39, 3
  %scevgep895 = getelementptr i8, ptr %10, i64 %284
  %285 = add i64 %284, 8
  %286 = mul i64 %276, %285
  %scevgep896 = getelementptr i8, ptr %10, i64 %286
  %xtraiter = and i64 %276, 1
  %287 = icmp eq i64 %276, 1
  %unroll_iter = and i64 %276, 9223372036854775806
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  %min.iters.check900 = icmp ult i64 %276, 4
  %bound0 = icmp ugt ptr %scevgep896, %10
  %bound1 = icmp ult ptr %scevgep895, %scevgep
  %found.conflict = and i1 %bound0, %bound1
  %stride.check = icmp slt i64 %284, 0
  %288 = or i1 %found.conflict, %stride.check
  %n.vec903 = and i64 %276, 9223372036854775804
  %ind.end904 = or disjoint i64 %n.vec903, 1
  %cmp.n916 = icmp eq i64 %276, %n.vec903
  %xtraiter970 = and i64 %276, 1
  %lcmp.mod971.not = icmp eq i64 %xtraiter970, 0
  %min.iters.check = icmp ult i64 %276, 4
  %n.vec = and i64 %276, 9223372036854775804
  %ind.end = or disjoint i64 %n.vec, 1
  %cmp.n = icmp eq i64 %276, %n.vec
  br label %.lr.ph825

.lr.ph825:                                        ; preds = %.lr.ph825.preheader, %.loopexit803
  %.0668824 = phi i64 [ %382, %.loopexit803 ], [ 1, %.lr.ph825.preheader ]
  %289 = getelementptr inbounds double, ptr %37, i64 %.0668824
  %290 = load double, ptr %289, align 8, !tbaa !9
  %291 = fcmp olt double %290, 0.000000e+00
  br i1 %291, label %.loopexit803, label %292

292:                                              ; preds = %.lr.ph825
  %293 = fcmp oeq double %290, 0.000000e+00
  store i64 %276, ptr %19, align 8, !tbaa !5
  %294 = mul nsw i64 %.0668824, %39
  br i1 %293, label %.lr.ph813, label %.lr.ph

.lr.ph813:                                        ; preds = %292
  %invariant.gep = getelementptr double, ptr %41, i64 %294
  br i1 %287, label %.loopexit805.loopexit.unr-lcssa, label %.lr.ph813.new

.lr.ph813.new:                                    ; preds = %.lr.ph813
  %invariant.gep985 = getelementptr i8, ptr %invariant.gep, i64 8
  br label %295

295:                                              ; preds = %295, %.lr.ph813.new
  %.0662812 = phi double [ 0.000000e+00, %.lr.ph813.new ], [ %307, %295 ]
  %.0671811 = phi i64 [ 1, %.lr.ph813.new ], [ %308, %295 ]
  %niter = phi i64 [ 0, %.lr.ph813.new ], [ %niter.next.1, %295 ]
  %gep = getelementptr double, ptr %invariant.gep, i64 %.0671811
  %296 = load double, ptr %gep, align 8, !tbaa !9
  %297 = fcmp oge double %296, 0.000000e+00
  %298 = fneg double %296
  %299 = select i1 %297, double %296, double %298
  %300 = fcmp oge double %.0662812, %299
  %301 = select i1 %300, double %.0662812, double %299
  %gep986 = getelementptr double, ptr %invariant.gep985, i64 %.0671811
  %302 = load double, ptr %gep986, align 8, !tbaa !9
  %303 = fcmp oge double %302, 0.000000e+00
  %304 = fneg double %302
  %305 = select i1 %303, double %302, double %304
  %306 = fcmp oge double %301, %305
  %307 = select i1 %306, double %301, double %305
  %308 = add nuw i64 %.0671811, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %.loopexit805.loopexit.unr-lcssa, label %295, !llvm.loop !12

.lr.ph:                                           ; preds = %292
  %309 = add nuw nsw i64 %.0668824, 1
  %310 = mul nsw i64 %309, %39
  br label %311

311:                                              ; preds = %.lr.ph, %311
  %.1663809 = phi double [ 0.000000e+00, %.lr.ph ], [ %325, %311 ]
  %.1672808 = phi i64 [ 1, %.lr.ph ], [ %326, %311 ]
  %312 = getelementptr double, ptr %41, i64 %.1672808
  %313 = getelementptr double, ptr %312, i64 %294
  %314 = load double, ptr %313, align 8, !tbaa !9
  %315 = fcmp oge double %314, 0.000000e+00
  %316 = fneg double %314
  %317 = select i1 %315, double %314, double %316
  %318 = getelementptr double, ptr %312, i64 %310
  %319 = load double, ptr %318, align 8, !tbaa !9
  %320 = fcmp oge double %319, 0.000000e+00
  %321 = fneg double %319
  %322 = select i1 %320, double %319, double %321
  %323 = fadd double %317, %322
  %324 = fcmp oge double %.1663809, %323
  %325 = select i1 %324, double %.1663809, double %323
  %326 = add nuw i64 %.1672808, 1
  %exitcond.not = icmp eq i64 %.1672808, %276
  br i1 %exitcond.not, label %.loopexit805, label %311, !llvm.loop !14

.loopexit805.loopexit.unr-lcssa:                  ; preds = %295, %.lr.ph813
  %.lcssa968.ph = phi double [ poison, %.lr.ph813 ], [ %307, %295 ]
  %.0662812.unr = phi double [ 0.000000e+00, %.lr.ph813 ], [ %307, %295 ]
  %.0671811.unr = phi i64 [ 1, %.lr.ph813 ], [ %308, %295 ]
  br i1 %lcmp.mod.not, label %.loopexit805, label %.loopexit805.loopexit.epilog-lcssa

.loopexit805.loopexit.epilog-lcssa:               ; preds = %.loopexit805.loopexit.unr-lcssa
  %gep.epil = getelementptr double, ptr %invariant.gep, i64 %.0671811.unr
  %327 = load double, ptr %gep.epil, align 8, !tbaa !9
  %328 = fcmp oge double %327, 0.000000e+00
  %329 = fneg double %327
  %330 = select i1 %328, double %327, double %329
  %331 = fcmp oge double %.0662812.unr, %330
  %332 = select i1 %331, double %.0662812.unr, double %330
  br label %.loopexit805

.loopexit805:                                     ; preds = %311, %.loopexit805.loopexit.epilog-lcssa, %.loopexit805.loopexit.unr-lcssa
  %.2664 = phi double [ %.lcssa968.ph, %.loopexit805.loopexit.unr-lcssa ], [ %332, %.loopexit805.loopexit.epilog-lcssa ], [ %325, %311 ]
  %333 = fcmp olt double %.2664, %108
  br i1 %333, label %.loopexit803, label %334

334:                                              ; preds = %.loopexit805
  %335 = fdiv double 1.000000e+00, %.2664
  store i64 %276, ptr %19, align 8, !tbaa !5
  %336 = mul nsw i64 %.0668824, %39
  br i1 %293, label %.lr.ph820, label %.lr.ph817

.lr.ph820:                                        ; preds = %334
  %invariant.gep821 = getelementptr double, ptr %41, i64 %336
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph820
  %broadcast.splatinsert = insertelement <2 x double> poison, double %335, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = or disjoint i64 %index, 1
  %337 = getelementptr double, ptr %invariant.gep821, i64 %offset.idx
  %338 = getelementptr i8, ptr %337, i64 16
  %wide.load = load <2 x double>, ptr %337, align 8, !tbaa !9
  %wide.load894 = load <2 x double>, ptr %338, align 8, !tbaa !9
  %339 = fmul <2 x double> %broadcast.splat, %wide.load
  %340 = fmul <2 x double> %broadcast.splat, %wide.load894
  store <2 x double> %339, ptr %337, align 8, !tbaa !9
  store <2 x double> %340, ptr %338, align 8, !tbaa !9
  %index.next = add nuw i64 %index, 4
  %341 = icmp eq i64 %index.next, %n.vec
  br i1 %341, label %middle.block, label %vector.body, !llvm.loop !15

middle.block:                                     ; preds = %vector.body
  br i1 %cmp.n, label %.loopexit803, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %.lr.ph820
  %.2673819.ph = phi i64 [ 1, %.lr.ph820 ], [ %ind.end, %middle.block ]
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %.2673819 = phi i64 [ %344, %scalar.ph ], [ %.2673819.ph, %scalar.ph.preheader ]
  %gep822 = getelementptr double, ptr %invariant.gep821, i64 %.2673819
  %342 = load double, ptr %gep822, align 8, !tbaa !9
  %343 = fmul double %335, %342
  store double %343, ptr %gep822, align 8, !tbaa !9
  %344 = add nuw i64 %.2673819, 1
  %exitcond865.not = icmp eq i64 %.2673819, %276
  br i1 %exitcond865.not, label %.loopexit803, label %scalar.ph, !llvm.loop !18

.lr.ph817:                                        ; preds = %334
  %345 = add nuw nsw i64 %.0668824, 1
  %346 = mul nsw i64 %345, %39
  %brmerge989 = select i1 %min.iters.check900, i1 true, i1 %288
  br i1 %brmerge989, label %scalar.ph899.preheader, label %vector.ph901

vector.ph901:                                     ; preds = %.lr.ph817
  %broadcast.splatinsert911 = insertelement <2 x double> poison, double %335, i64 0
  %broadcast.splat912 = shufflevector <2 x double> %broadcast.splatinsert911, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body906

vector.body906:                                   ; preds = %vector.body906, %vector.ph901
  %index907 = phi i64 [ 0, %vector.ph901 ], [ %index.next915, %vector.body906 ]
  %offset.idx908 = or disjoint i64 %index907, 1
  %347 = getelementptr double, ptr %41, i64 %offset.idx908
  %348 = getelementptr double, ptr %347, i64 %336
  %349 = getelementptr i8, ptr %348, i64 16
  %wide.load909 = load <2 x double>, ptr %348, align 8, !tbaa !9, !alias.scope !19, !noalias !22
  %wide.load910 = load <2 x double>, ptr %349, align 8, !tbaa !9, !alias.scope !19, !noalias !22
  %350 = fmul <2 x double> %broadcast.splat912, %wide.load909
  %351 = fmul <2 x double> %broadcast.splat912, %wide.load910
  store <2 x double> %350, ptr %348, align 8, !tbaa !9, !alias.scope !19, !noalias !22
  store <2 x double> %351, ptr %349, align 8, !tbaa !9, !alias.scope !19, !noalias !22
  %352 = getelementptr double, ptr %347, i64 %346
  %353 = getelementptr i8, ptr %352, i64 16
  %wide.load913 = load <2 x double>, ptr %352, align 8, !tbaa !9, !alias.scope !22
  %wide.load914 = load <2 x double>, ptr %353, align 8, !tbaa !9, !alias.scope !22
  %354 = fmul <2 x double> %broadcast.splat912, %wide.load913
  %355 = fmul <2 x double> %broadcast.splat912, %wide.load914
  store <2 x double> %354, ptr %352, align 8, !tbaa !9, !alias.scope !22
  store <2 x double> %355, ptr %353, align 8, !tbaa !9, !alias.scope !22
  %index.next915 = add nuw i64 %index907, 4
  %356 = icmp eq i64 %index.next915, %n.vec903
  br i1 %356, label %middle.block898, label %vector.body906, !llvm.loop !24

middle.block898:                                  ; preds = %vector.body906
  br i1 %cmp.n916, label %.loopexit803, label %scalar.ph899.preheader

scalar.ph899.preheader:                           ; preds = %.lr.ph817, %middle.block898
  %.3674816.ph = phi i64 [ 1, %.lr.ph817 ], [ %ind.end904, %middle.block898 ]
  br i1 %lcmp.mod971.not, label %scalar.ph899.prol.loopexit, label %scalar.ph899.prol

scalar.ph899.prol:                                ; preds = %scalar.ph899.preheader
  %357 = getelementptr double, ptr %41, i64 %.3674816.ph
  %358 = getelementptr double, ptr %357, i64 %336
  %359 = load double, ptr %358, align 8, !tbaa !9
  %360 = fmul double %335, %359
  store double %360, ptr %358, align 8, !tbaa !9
  %361 = getelementptr double, ptr %357, i64 %346
  %362 = load double, ptr %361, align 8, !tbaa !9
  %363 = fmul double %335, %362
  store double %363, ptr %361, align 8, !tbaa !9
  %364 = add nuw i64 %.3674816.ph, 1
  br label %scalar.ph899.prol.loopexit

scalar.ph899.prol.loopexit:                       ; preds = %scalar.ph899.prol, %scalar.ph899.preheader
  %.3674816.unr = phi i64 [ %.3674816.ph, %scalar.ph899.preheader ], [ %364, %scalar.ph899.prol ]
  %365 = icmp eq i64 %276, %.3674816.ph
  br i1 %365, label %.loopexit803, label %scalar.ph899

scalar.ph899:                                     ; preds = %scalar.ph899.prol.loopexit, %scalar.ph899
  %.3674816 = phi i64 [ %381, %scalar.ph899 ], [ %.3674816.unr, %scalar.ph899.prol.loopexit ]
  %366 = getelementptr double, ptr %41, i64 %.3674816
  %367 = getelementptr double, ptr %366, i64 %336
  %368 = load double, ptr %367, align 8, !tbaa !9
  %369 = fmul double %335, %368
  store double %369, ptr %367, align 8, !tbaa !9
  %370 = getelementptr double, ptr %366, i64 %346
  %371 = load double, ptr %370, align 8, !tbaa !9
  %372 = fmul double %335, %371
  store double %372, ptr %370, align 8, !tbaa !9
  %373 = add nuw i64 %.3674816, 1
  %374 = getelementptr double, ptr %41, i64 %373
  %375 = getelementptr double, ptr %374, i64 %336
  %376 = load double, ptr %375, align 8, !tbaa !9
  %377 = fmul double %335, %376
  store double %377, ptr %375, align 8, !tbaa !9
  %378 = getelementptr double, ptr %374, i64 %346
  %379 = load double, ptr %378, align 8, !tbaa !9
  %380 = fmul double %335, %379
  store double %380, ptr %378, align 8, !tbaa !9
  %381 = add nuw i64 %.3674816, 2
  %exitcond864.not.1 = icmp eq i64 %373, %276
  br i1 %exitcond864.not.1, label %.loopexit803, label %scalar.ph899, !llvm.loop !25

.loopexit803:                                     ; preds = %scalar.ph899.prol.loopexit, %scalar.ph899, %scalar.ph, %middle.block898, %middle.block, %.lr.ph825, %.loopexit805
  %382 = add nuw i64 %.0668824, 1
  %exitcond866.not = icmp eq i64 %.0668824, %276
  br i1 %exitcond866.not, label %.thread778, label %.lr.ph825, !llvm.loop !26

.thread778:                                       ; preds = %.loopexit803, %279, %.thread776
  br i1 %56, label %383, label %.loopexit802

383:                                              ; preds = %.thread778
  %384 = call i32 @dggbak_(ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.16, ptr noundef nonnull %2, ptr noundef nonnull %22, ptr noundef nonnull %21, ptr noundef nonnull %14, ptr noundef %143, ptr noundef nonnull %2, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %25) #5
  %385 = load i64, ptr %25, align 8, !tbaa !5
  %.not722 = icmp eq i64 %385, 0
  %386 = load i64, ptr %2, align 8, !tbaa !5
  br i1 %.not722, label %389, label %387

387:                                              ; preds = %383
  %388 = add nsw i64 %386, 9
  br label %.loopexit.sink.split

389:                                              ; preds = %383
  %.not723846 = icmp slt i64 %386, 1
  br i1 %.not723846, label %.loopexit, label %.lr.ph848.preheader

.lr.ph848.preheader:                              ; preds = %389
  %390 = add nuw i64 %386, 2305843009213693951
  %391 = mul i64 %42, %390
  %392 = add i64 %391, %386
  %393 = shl i64 %392, 3
  %scevgep935 = getelementptr i8, ptr %12, i64 %393
  %394 = shl i64 %42, 3
  %scevgep936 = getelementptr i8, ptr %12, i64 %394
  %395 = add i64 %394, 8
  %396 = mul i64 %386, %395
  %scevgep937 = getelementptr i8, ptr %12, i64 %396
  %xtraiter973 = and i64 %386, 1
  %397 = icmp eq i64 %386, 1
  %unroll_iter976 = and i64 %386, 9223372036854775806
  %lcmp.mod974.not = icmp eq i64 %xtraiter973, 0
  %min.iters.check945 = icmp ult i64 %386, 4
  %bound0938 = icmp ugt ptr %scevgep937, %12
  %bound1939 = icmp ult ptr %scevgep936, %scevgep935
  %found.conflict940 = and i1 %bound0938, %bound1939
  %stride.check941 = icmp slt i64 %394, 0
  %398 = or i1 %found.conflict940, %stride.check941
  %n.vec948 = and i64 %386, 9223372036854775804
  %ind.end949 = or disjoint i64 %n.vec948, 1
  %cmp.n961 = icmp eq i64 %386, %n.vec948
  %xtraiter978 = and i64 %386, 1
  %lcmp.mod979.not = icmp eq i64 %xtraiter978, 0
  %min.iters.check919 = icmp ult i64 %386, 4
  %n.vec922 = and i64 %386, 9223372036854775804
  %ind.end923 = or disjoint i64 %n.vec922, 1
  %cmp.n933 = icmp eq i64 %386, %n.vec922
  br label %.lr.ph848

.lr.ph848:                                        ; preds = %.lr.ph848.preheader, %.loopexit798
  %.1669847 = phi i64 [ %492, %.loopexit798 ], [ 1, %.lr.ph848.preheader ]
  %399 = getelementptr inbounds double, ptr %37, i64 %.1669847
  %400 = load double, ptr %399, align 8, !tbaa !9
  %401 = fcmp olt double %400, 0.000000e+00
  br i1 %401, label %.loopexit798, label %402

402:                                              ; preds = %.lr.ph848
  %403 = fcmp oeq double %400, 0.000000e+00
  %404 = mul nsw i64 %.1669847, %42
  br i1 %403, label %.lr.ph834, label %.lr.ph829

.lr.ph834:                                        ; preds = %402
  %invariant.gep836 = getelementptr double, ptr %44, i64 %404
  br i1 %397, label %.loopexit800.loopexit.unr-lcssa, label %.lr.ph834.new

.lr.ph834.new:                                    ; preds = %.lr.ph834
  %invariant.gep987 = getelementptr i8, ptr %invariant.gep836, i64 8
  br label %405

405:                                              ; preds = %405, %.lr.ph834.new
  %.3665833 = phi double [ 0.000000e+00, %.lr.ph834.new ], [ %417, %405 ]
  %.4675832 = phi i64 [ 1, %.lr.ph834.new ], [ %418, %405 ]
  %niter977 = phi i64 [ 0, %.lr.ph834.new ], [ %niter977.next.1, %405 ]
  %gep837 = getelementptr double, ptr %invariant.gep836, i64 %.4675832
  %406 = load double, ptr %gep837, align 8, !tbaa !9
  %407 = fcmp oge double %406, 0.000000e+00
  %408 = fneg double %406
  %409 = select i1 %407, double %406, double %408
  %410 = fcmp oge double %.3665833, %409
  %411 = select i1 %410, double %.3665833, double %409
  %gep988 = getelementptr double, ptr %invariant.gep987, i64 %.4675832
  %412 = load double, ptr %gep988, align 8, !tbaa !9
  %413 = fcmp oge double %412, 0.000000e+00
  %414 = fneg double %412
  %415 = select i1 %413, double %412, double %414
  %416 = fcmp oge double %411, %415
  %417 = select i1 %416, double %411, double %415
  %418 = add nuw i64 %.4675832, 2
  %niter977.next.1 = add i64 %niter977, 2
  %niter977.ncmp.1 = icmp eq i64 %niter977.next.1, %unroll_iter976
  br i1 %niter977.ncmp.1, label %.loopexit800.loopexit.unr-lcssa, label %405, !llvm.loop !27

.lr.ph829:                                        ; preds = %402
  %419 = add nuw nsw i64 %.1669847, 1
  %420 = mul nsw i64 %419, %42
  br label %421

421:                                              ; preds = %.lr.ph829, %421
  %.4666828 = phi double [ 0.000000e+00, %.lr.ph829 ], [ %435, %421 ]
  %.5676827 = phi i64 [ 1, %.lr.ph829 ], [ %436, %421 ]
  %422 = getelementptr double, ptr %44, i64 %.5676827
  %423 = getelementptr double, ptr %422, i64 %404
  %424 = load double, ptr %423, align 8, !tbaa !9
  %425 = fcmp oge double %424, 0.000000e+00
  %426 = fneg double %424
  %427 = select i1 %425, double %424, double %426
  %428 = getelementptr double, ptr %422, i64 %420
  %429 = load double, ptr %428, align 8, !tbaa !9
  %430 = fcmp oge double %429, 0.000000e+00
  %431 = fneg double %429
  %432 = select i1 %430, double %429, double %431
  %433 = fadd double %427, %432
  %434 = fcmp oge double %.4666828, %433
  %435 = select i1 %434, double %.4666828, double %433
  %436 = add nuw i64 %.5676827, 1
  %exitcond867.not = icmp eq i64 %.5676827, %386
  br i1 %exitcond867.not, label %.loopexit800, label %421, !llvm.loop !28

.loopexit800.loopexit.unr-lcssa:                  ; preds = %405, %.lr.ph834
  %.lcssa964.ph = phi double [ poison, %.lr.ph834 ], [ %417, %405 ]
  %.3665833.unr = phi double [ 0.000000e+00, %.lr.ph834 ], [ %417, %405 ]
  %.4675832.unr = phi i64 [ 1, %.lr.ph834 ], [ %418, %405 ]
  br i1 %lcmp.mod974.not, label %.loopexit800, label %.loopexit800.loopexit.epilog-lcssa

.loopexit800.loopexit.epilog-lcssa:               ; preds = %.loopexit800.loopexit.unr-lcssa
  %gep837.epil = getelementptr double, ptr %invariant.gep836, i64 %.4675832.unr
  %437 = load double, ptr %gep837.epil, align 8, !tbaa !9
  %438 = fcmp oge double %437, 0.000000e+00
  %439 = fneg double %437
  %440 = select i1 %438, double %437, double %439
  %441 = fcmp oge double %.3665833.unr, %440
  %442 = select i1 %441, double %.3665833.unr, double %440
  br label %.loopexit800

.loopexit800:                                     ; preds = %421, %.loopexit800.loopexit.epilog-lcssa, %.loopexit800.loopexit.unr-lcssa
  %.5667 = phi double [ %.lcssa964.ph, %.loopexit800.loopexit.unr-lcssa ], [ %442, %.loopexit800.loopexit.epilog-lcssa ], [ %435, %421 ]
  %443 = fcmp olt double %.5667, %108
  br i1 %443, label %.loopexit798, label %444

444:                                              ; preds = %.loopexit800
  %445 = fdiv double 1.000000e+00, %.5667
  %446 = mul nsw i64 %.1669847, %42
  br i1 %403, label %.lr.ph843, label %.lr.ph840

.lr.ph843:                                        ; preds = %444
  %invariant.gep844 = getelementptr double, ptr %44, i64 %446
  br i1 %min.iters.check919, label %scalar.ph918.preheader, label %vector.ph920

vector.ph920:                                     ; preds = %.lr.ph843
  %broadcast.splatinsert930 = insertelement <2 x double> poison, double %445, i64 0
  %broadcast.splat931 = shufflevector <2 x double> %broadcast.splatinsert930, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body925

vector.body925:                                   ; preds = %vector.body925, %vector.ph920
  %index926 = phi i64 [ 0, %vector.ph920 ], [ %index.next932, %vector.body925 ]
  %offset.idx927 = or disjoint i64 %index926, 1
  %447 = getelementptr double, ptr %invariant.gep844, i64 %offset.idx927
  %448 = getelementptr i8, ptr %447, i64 16
  %wide.load928 = load <2 x double>, ptr %447, align 8, !tbaa !9
  %wide.load929 = load <2 x double>, ptr %448, align 8, !tbaa !9
  %449 = fmul <2 x double> %broadcast.splat931, %wide.load928
  %450 = fmul <2 x double> %broadcast.splat931, %wide.load929
  store <2 x double> %449, ptr %447, align 8, !tbaa !9
  store <2 x double> %450, ptr %448, align 8, !tbaa !9
  %index.next932 = add nuw i64 %index926, 4
  %451 = icmp eq i64 %index.next932, %n.vec922
  br i1 %451, label %middle.block917, label %vector.body925, !llvm.loop !29

middle.block917:                                  ; preds = %vector.body925
  br i1 %cmp.n933, label %.loopexit798, label %scalar.ph918.preheader

scalar.ph918.preheader:                           ; preds = %middle.block917, %.lr.ph843
  %.6842.ph = phi i64 [ 1, %.lr.ph843 ], [ %ind.end923, %middle.block917 ]
  br label %scalar.ph918

scalar.ph918:                                     ; preds = %scalar.ph918.preheader, %scalar.ph918
  %.6842 = phi i64 [ %454, %scalar.ph918 ], [ %.6842.ph, %scalar.ph918.preheader ]
  %gep845 = getelementptr double, ptr %invariant.gep844, i64 %.6842
  %452 = load double, ptr %gep845, align 8, !tbaa !9
  %453 = fmul double %445, %452
  store double %453, ptr %gep845, align 8, !tbaa !9
  %454 = add nuw i64 %.6842, 1
  %exitcond870.not = icmp eq i64 %.6842, %386
  br i1 %exitcond870.not, label %.loopexit798, label %scalar.ph918, !llvm.loop !30

.lr.ph840:                                        ; preds = %444
  %455 = add nuw nsw i64 %.1669847, 1
  %456 = mul nsw i64 %455, %42
  %brmerge990 = select i1 %min.iters.check945, i1 true, i1 %398
  br i1 %brmerge990, label %scalar.ph944.preheader, label %vector.ph946

vector.ph946:                                     ; preds = %.lr.ph840
  %broadcast.splatinsert956 = insertelement <2 x double> poison, double %445, i64 0
  %broadcast.splat957 = shufflevector <2 x double> %broadcast.splatinsert956, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body951

vector.body951:                                   ; preds = %vector.body951, %vector.ph946
  %index952 = phi i64 [ 0, %vector.ph946 ], [ %index.next960, %vector.body951 ]
  %offset.idx953 = or disjoint i64 %index952, 1
  %457 = getelementptr double, ptr %44, i64 %offset.idx953
  %458 = getelementptr double, ptr %457, i64 %446
  %459 = getelementptr i8, ptr %458, i64 16
  %wide.load954 = load <2 x double>, ptr %458, align 8, !tbaa !9, !alias.scope !31, !noalias !34
  %wide.load955 = load <2 x double>, ptr %459, align 8, !tbaa !9, !alias.scope !31, !noalias !34
  %460 = fmul <2 x double> %broadcast.splat957, %wide.load954
  %461 = fmul <2 x double> %broadcast.splat957, %wide.load955
  store <2 x double> %460, ptr %458, align 8, !tbaa !9, !alias.scope !31, !noalias !34
  store <2 x double> %461, ptr %459, align 8, !tbaa !9, !alias.scope !31, !noalias !34
  %462 = getelementptr double, ptr %457, i64 %456
  %463 = getelementptr i8, ptr %462, i64 16
  %wide.load958 = load <2 x double>, ptr %462, align 8, !tbaa !9, !alias.scope !34
  %wide.load959 = load <2 x double>, ptr %463, align 8, !tbaa !9, !alias.scope !34
  %464 = fmul <2 x double> %broadcast.splat957, %wide.load958
  %465 = fmul <2 x double> %broadcast.splat957, %wide.load959
  store <2 x double> %464, ptr %462, align 8, !tbaa !9, !alias.scope !34
  store <2 x double> %465, ptr %463, align 8, !tbaa !9, !alias.scope !34
  %index.next960 = add nuw i64 %index952, 4
  %466 = icmp eq i64 %index.next960, %n.vec948
  br i1 %466, label %middle.block943, label %vector.body951, !llvm.loop !36

middle.block943:                                  ; preds = %vector.body951
  br i1 %cmp.n961, label %.loopexit798, label %scalar.ph944.preheader

scalar.ph944.preheader:                           ; preds = %.lr.ph840, %middle.block943
  %.7839.ph = phi i64 [ 1, %.lr.ph840 ], [ %ind.end949, %middle.block943 ]
  br i1 %lcmp.mod979.not, label %scalar.ph944.prol.loopexit, label %scalar.ph944.prol

scalar.ph944.prol:                                ; preds = %scalar.ph944.preheader
  %467 = getelementptr double, ptr %44, i64 %.7839.ph
  %468 = getelementptr double, ptr %467, i64 %446
  %469 = load double, ptr %468, align 8, !tbaa !9
  %470 = fmul double %445, %469
  store double %470, ptr %468, align 8, !tbaa !9
  %471 = getelementptr double, ptr %467, i64 %456
  %472 = load double, ptr %471, align 8, !tbaa !9
  %473 = fmul double %445, %472
  store double %473, ptr %471, align 8, !tbaa !9
  %474 = add nuw i64 %.7839.ph, 1
  br label %scalar.ph944.prol.loopexit

scalar.ph944.prol.loopexit:                       ; preds = %scalar.ph944.prol, %scalar.ph944.preheader
  %.7839.unr = phi i64 [ %.7839.ph, %scalar.ph944.preheader ], [ %474, %scalar.ph944.prol ]
  %475 = icmp eq i64 %386, %.7839.ph
  br i1 %475, label %.loopexit798, label %scalar.ph944

scalar.ph944:                                     ; preds = %scalar.ph944.prol.loopexit, %scalar.ph944
  %.7839 = phi i64 [ %491, %scalar.ph944 ], [ %.7839.unr, %scalar.ph944.prol.loopexit ]
  %476 = getelementptr double, ptr %44, i64 %.7839
  %477 = getelementptr double, ptr %476, i64 %446
  %478 = load double, ptr %477, align 8, !tbaa !9
  %479 = fmul double %445, %478
  store double %479, ptr %477, align 8, !tbaa !9
  %480 = getelementptr double, ptr %476, i64 %456
  %481 = load double, ptr %480, align 8, !tbaa !9
  %482 = fmul double %445, %481
  store double %482, ptr %480, align 8, !tbaa !9
  %483 = add nuw i64 %.7839, 1
  %484 = getelementptr double, ptr %44, i64 %483
  %485 = getelementptr double, ptr %484, i64 %446
  %486 = load double, ptr %485, align 8, !tbaa !9
  %487 = fmul double %445, %486
  store double %487, ptr %485, align 8, !tbaa !9
  %488 = getelementptr double, ptr %484, i64 %456
  %489 = load double, ptr %488, align 8, !tbaa !9
  %490 = fmul double %445, %489
  store double %490, ptr %488, align 8, !tbaa !9
  %491 = add nuw i64 %.7839, 2
  %exitcond869.not.1 = icmp eq i64 %483, %386
  br i1 %exitcond869.not.1, label %.loopexit798, label %scalar.ph944, !llvm.loop !37

.loopexit798:                                     ; preds = %scalar.ph944.prol.loopexit, %scalar.ph944, %scalar.ph918, %middle.block943, %middle.block917, %.lr.ph848, %.loopexit800
  %492 = add nuw i64 %.1669847, 1
  %exitcond871.not = icmp eq i64 %.1669847, %386
  br i1 %exitcond871.not, label %.loopexit802, label %.lr.ph848, !llvm.loop !38

.loopexit802:                                     ; preds = %.loopexit798, %.thread778, %263
  %.pr = load i64, ptr %2, align 8, !tbaa !5
  %.not724849 = icmp slt i64 %.pr, 1
  br i1 %.not724849, label %.loopexit, label %.lr.ph851

.lr.ph851:                                        ; preds = %.loopexit802
  %493 = load double, ptr %23, align 8, !tbaa !9
  %494 = load double, ptr %24, align 8, !tbaa !9
  %495 = fmul double %110, %108
  %496 = fdiv double %495, %.0659
  %497 = fdiv double %495, %.0657
  br label %498

498:                                              ; preds = %.lr.ph851, %.thread785
  %.2670850 = phi i64 [ 1, %.lr.ph851 ], [ %600, %.thread785 ]
  %499 = getelementptr inbounds double, ptr %36, i64 %.2670850
  %500 = load double, ptr %499, align 8, !tbaa !9
  %501 = fcmp oge double %500, 0.000000e+00
  %502 = fneg double %500
  %503 = select i1 %501, double %500, double %502
  %504 = getelementptr inbounds double, ptr %37, i64 %.2670850
  %505 = load double, ptr %504, align 8, !tbaa !9
  %506 = fcmp oge double %505, 0.000000e+00
  %507 = fneg double %505
  %508 = select i1 %506, double %505, double %507
  %509 = getelementptr inbounds double, ptr %38, i64 %.2670850
  %510 = load double, ptr %509, align 8, !tbaa !9
  %511 = fcmp oge double %510, 0.000000e+00
  %512 = fneg double %510
  %513 = select i1 %511, double %510, double %512
  %514 = fmul double %500, %493
  %515 = fmul double %505, %493
  %516 = fmul double %510, %494
  %517 = fmul double %106, %503
  %518 = fcmp oge double %108, %517
  %519 = select i1 %518, double %108, double %517
  %520 = fmul double %106, %513
  %521 = fcmp oge double %515, 0.000000e+00
  %522 = fneg double %515
  %523 = select i1 %521, double %515, double %522
  %524 = fcmp olt double %523, %108
  br i1 %524, label %525, label %534

525:                                              ; preds = %498
  %526 = fcmp oge double %519, %520
  %527 = select i1 %526, double %519, double %520
  %528 = fcmp ult double %508, %527
  br i1 %528, label %534, label %529

529:                                              ; preds = %525
  %530 = fmul double %.0658, %508
  %531 = fcmp oge double %495, %530
  %532 = select i1 %531, double %495, double %530
  %533 = fdiv double %496, %532
  br label %546

534:                                              ; preds = %525, %498
  %535 = fcmp oeq double %515, 0.000000e+00
  br i1 %535, label %536, label %546

536:                                              ; preds = %534
  %537 = fcmp olt double %505, 0.000000e+00
  %538 = icmp ugt i64 %.2670850, 1
  %or.cond3 = and i1 %538, %537
  br i1 %or.cond3, label %539, label %541

539:                                              ; preds = %536
  %540 = getelementptr i8, ptr %504, i64 -8
  store double 0.000000e+00, ptr %540, align 8, !tbaa !9
  br label %546

541:                                              ; preds = %536
  %542 = fcmp ogt double %505, 0.000000e+00
  %543 = icmp slt i64 %.2670850, %.pr
  %or.cond792 = and i1 %543, %542
  br i1 %or.cond792, label %544, label %546

544:                                              ; preds = %541
  %545 = getelementptr double, ptr %8, i64 %.2670850
  store double 0.000000e+00, ptr %545, align 8, !tbaa !9
  br label %546

546:                                              ; preds = %534, %541, %544, %539, %529
  %.0651 = phi double [ %533, %529 ], [ 1.000000e+00, %539 ], [ 1.000000e+00, %544 ], [ 1.000000e+00, %541 ], [ 1.000000e+00, %534 ]
  %.0643 = phi i64 [ 1, %529 ], [ 0, %539 ], [ 0, %544 ], [ 0, %541 ], [ 0, %534 ]
  %547 = fmul double %106, %508
  %548 = fcmp oge double %514, 0.000000e+00
  %549 = fneg double %514
  %550 = select i1 %548, double %514, double %549
  %551 = fcmp olt double %550, %108
  br i1 %551, label %552, label %565

552:                                              ; preds = %546
  %553 = fcmp oge double %108, %547
  %554 = select i1 %553, double %108, double %547
  %555 = fcmp oge double %554, %520
  %556 = select i1 %555, double %554, double %520
  %557 = fcmp ult double %503, %556
  br i1 %557, label %565, label %558

558:                                              ; preds = %552
  %559 = fmul double %.0658, %503
  %560 = fcmp oge double %495, %559
  %561 = select i1 %560, double %495, double %559
  %562 = fdiv double %496, %561
  %563 = fcmp oge double %.0651, %562
  %564 = select i1 %563, double %.0651, double %562
  br label %565

565:                                              ; preds = %558, %552, %546
  %.1652 = phi double [ %564, %558 ], [ %.0651, %552 ], [ %.0651, %546 ]
  %.1644 = phi i64 [ 1, %558 ], [ %.0643, %552 ], [ %.0643, %546 ]
  %566 = fcmp oge double %516, 0.000000e+00
  %567 = fneg double %516
  %568 = select i1 %566, double %516, double %567
  %569 = fcmp olt double %568, %108
  br i1 %569, label %570, label %580

570:                                              ; preds = %565
  %571 = fcmp oge double %519, %547
  %572 = select i1 %571, double %519, double %547
  %573 = fcmp ult double %513, %572
  br i1 %573, label %580, label %.thread779

.thread779:                                       ; preds = %570
  %574 = fmul double %.0656, %513
  %575 = fcmp oge double %495, %574
  %576 = select i1 %575, double %495, double %574
  %577 = fdiv double %497, %576
  %578 = fcmp oge double %.1652, %577
  %579 = select i1 %578, double %.1652, double %577
  br label %581

580:                                              ; preds = %570, %565
  %.not725 = icmp eq i64 %.1644, 0
  br i1 %.not725, label %.thread785, label %581

581:                                              ; preds = %.thread779, %580
  %.2653783 = phi double [ %579, %.thread779 ], [ %.1652, %580 ]
  %582 = fcmp oge double %550, %523
  %583 = select i1 %582, double %550, double %523
  %584 = fmul double %108, %.2653783
  %585 = fcmp oge double %583, %568
  %586 = select i1 %585, double %583, double %568
  %587 = fmul double %586, %584
  %588 = fcmp ogt double %587, 1.000000e+00
  %589 = fdiv double %.2653783, %587
  %.3654 = select i1 %588, double %589, double %.2653783
  %590 = fcmp olt double %.3654, 1.000000e+00
  br i1 %590, label %.thread785, label %591

591:                                              ; preds = %581
  %592 = load double, ptr %499, align 8, !tbaa !9
  %593 = fmul double %.3654, %592
  %594 = fmul double %493, %593
  %595 = fmul double %.3654, %505
  %596 = fmul double %493, %595
  %597 = load double, ptr %509, align 8, !tbaa !9
  %598 = fmul double %.3654, %597
  %599 = fmul double %494, %598
  br label %.thread785

.thread785:                                       ; preds = %581, %580, %591
  %.0650 = phi double [ %599, %591 ], [ %516, %580 ], [ %516, %581 ]
  %.0649 = phi double [ %596, %591 ], [ %515, %580 ], [ %515, %581 ]
  %.0648 = phi double [ %594, %591 ], [ %514, %580 ], [ %514, %581 ]
  store double %.0648, ptr %499, align 8, !tbaa !9
  store double %.0649, ptr %504, align 8, !tbaa !9
  store double %.0650, ptr %509, align 8, !tbaa !9
  %600 = add nuw i64 %.2670850, 1
  %exitcond872.not = icmp eq i64 %.2670850, %.pr
  br i1 %exitcond872.not, label %.loopexit, label %498, !llvm.loop !39

.loopexit.sink.split:                             ; preds = %253, %147, %.thread747, %.thread751, %.thread755, %239, %270, %277, %387, %259, %261
  %.sink886 = phi i64 [ %262, %261 ], [ %260, %259 ], [ %388, %387 ], [ %278, %277 ], [ %272, %270 ], [ %241, %239 ], [ %225, %.thread755 ], [ %195, %.thread751 ], [ %176, %.thread747 ], [ %149, %147 ], [ %246, %253 ]
  %.5.ph = phi i64 [ %.4771775, %261 ], [ %.4771775, %259 ], [ %252, %387 ], [ %252, %277 ], [ %252, %270 ], [ %.3762, %239 ], [ %.2758, %.thread755 ], [ %.1754, %.thread751 ], [ %.0641750, %.thread747 ], [ %61, %147 ], [ %252, %253 ]
  store i64 %.sink886, ptr %16, align 8, !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %.thread785, %.loopexit.sink.split, %389, %.loopexit802
  %.5 = phi i64 [ %252, %.loopexit802 ], [ %252, %389 ], [ %.5.ph, %.loopexit.sink.split ], [ %252, %.thread785 ]
  %601 = uitofp nneg i64 %.5 to double
  store double %601, ptr %14, align 8, !tbaa !9
  br label %602

602:                                              ; preds = %101, %.loopexit, %137, %122, %.thread745
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #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

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #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 @dtgevc_(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 nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 = !{!7, !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = distinct !{!14, !13}
!15 = distinct !{!15, !13, !16, !17}
!16 = !{!"llvm.loop.isvectorized", i32 1}
!17 = !{!"llvm.loop.unroll.runtime.disable"}
!18 = distinct !{!18, !13, !17, !16}
!19 = !{!20}
!20 = distinct !{!20, !21}
!21 = distinct !{!21, !"LVerDomain"}
!22 = !{!23}
!23 = distinct !{!23, !21}
!24 = distinct !{!24, !13, !16, !17}
!25 = distinct !{!25, !13, !16}
!26 = distinct !{!26, !13}
!27 = distinct !{!27, !13}
!28 = distinct !{!28, !13}
!29 = distinct !{!29, !13, !16, !17}
!30 = distinct !{!30, !13, !17, !16}
!31 = !{!32}
!32 = distinct !{!32, !33}
!33 = distinct !{!33, !"LVerDomain"}
!34 = !{!35}
!35 = distinct !{!35, !33}
!36 = distinct !{!36, !13, !16, !17}
!37 = distinct !{!37, !13, !16}
!38 = distinct !{!38, !13}
!39 = distinct !{!39, !13}


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass