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

; 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 i32, align 4
@.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__0 = external hidden global i32, align 4
@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@c_n1 = external hidden global i32, align 4
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [5 x i8], align 1
@c_b36 = external hidden global double, align 8
@c_b37 = external hidden global double, align 8
@.str.14 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [2 x i8], align 1

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

133:                                              ; preds = %17
  store i32 1, ptr %68, align 4, !tbaa !9
  store i32 0, ptr %54, align 4, !tbaa !9
  br label %141

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

138:                                              ; preds = %134
  store i32 2, ptr %68, align 4, !tbaa !9
  store i32 1, ptr %54, align 4, !tbaa !9
  br label %140

139:                                              ; preds = %134
  store i32 -1, ptr %68, align 4, !tbaa !9
  store i32 0, ptr %54, align 4, !tbaa !9
  br label %140

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

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

145:                                              ; preds = %141
  store i32 1, ptr %70, align 4, !tbaa !9
  store i32 0, ptr %55, align 4, !tbaa !9
  br label %153

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

150:                                              ; preds = %146
  store i32 2, ptr %70, align 4, !tbaa !9
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %152

151:                                              ; preds = %146
  store i32 -1, ptr %70, align 4, !tbaa !9
  store i32 0, ptr %55, align 4, !tbaa !9
  br label %152

152:                                              ; preds = %151, %150
  br label %153

153:                                              ; preds = %152, %145
  %154 = load i32, ptr %54, align 4, !tbaa !9
  %155 = icmp ne i32 %154, 0
  br i1 %155, label %159, label %156

156:                                              ; preds = %153
  %157 = load i32, ptr %55, align 4, !tbaa !9
  %158 = icmp ne i32 %157, 0
  br label %159

159:                                              ; preds = %156, %153
  %160 = phi i1 [ true, %153 ], [ %158, %156 ]
  %161 = zext i1 %160 to i32
  store i32 %161, ptr %80, align 4, !tbaa !9
  %162 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 0, ptr %162, align 4, !tbaa !9
  %163 = load ptr, ptr %33, align 8, !tbaa !5
  %164 = load i32, ptr %163, align 4, !tbaa !9
  %165 = icmp eq i32 %164, -1
  %166 = zext i1 %165 to i32
  store i32 %166, ptr %76, align 4, !tbaa !9
  %167 = load i32, ptr %68, align 4, !tbaa !9
  %168 = icmp sle i32 %167, 0
  br i1 %168, label %169, label %171

169:                                              ; preds = %159
  %170 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -1, ptr %170, align 4, !tbaa !9
  br label %248

171:                                              ; preds = %159
  %172 = load i32, ptr %70, align 4, !tbaa !9
  %173 = icmp sle i32 %172, 0
  br i1 %173, label %174, label %176

174:                                              ; preds = %171
  %175 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -2, ptr %175, align 4, !tbaa !9
  br label %247

176:                                              ; preds = %171
  %177 = load ptr, ptr %20, align 8, !tbaa !5
  %178 = load i32, ptr %177, align 4, !tbaa !9
  %179 = icmp slt i32 %178, 0
  br i1 %179, label %180, label %182

180:                                              ; preds = %176
  %181 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -3, ptr %181, align 4, !tbaa !9
  br label %246

182:                                              ; preds = %176
  %183 = load ptr, ptr %22, align 8, !tbaa !5
  %184 = load i32, ptr %183, align 4, !tbaa !9
  %185 = load ptr, ptr %20, align 8, !tbaa !5
  %186 = load i32, ptr %185, align 4, !tbaa !9
  %187 = icmp sge i32 1, %186
  br i1 %187, label %188, label %189

188:                                              ; preds = %182
  br label %192

189:                                              ; preds = %182
  %190 = load ptr, ptr %20, align 8, !tbaa !5
  %191 = load i32, ptr %190, align 4, !tbaa !9
  br label %192

192:                                              ; preds = %189, %188
  %193 = phi i32 [ 1, %188 ], [ %191, %189 ]
  %194 = icmp slt i32 %184, %193
  br i1 %194, label %195, label %197

195:                                              ; preds = %192
  %196 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -5, ptr %196, align 4, !tbaa !9
  br label %245

197:                                              ; preds = %192
  %198 = load ptr, ptr %24, align 8, !tbaa !5
  %199 = load i32, ptr %198, align 4, !tbaa !9
  %200 = load ptr, ptr %20, align 8, !tbaa !5
  %201 = load i32, ptr %200, align 4, !tbaa !9
  %202 = icmp sge i32 1, %201
  br i1 %202, label %203, label %204

203:                                              ; preds = %197
  br label %207

204:                                              ; preds = %197
  %205 = load ptr, ptr %20, align 8, !tbaa !5
  %206 = load i32, ptr %205, align 4, !tbaa !9
  br label %207

207:                                              ; preds = %204, %203
  %208 = phi i32 [ 1, %203 ], [ %206, %204 ]
  %209 = icmp slt i32 %199, %208
  br i1 %209, label %210, label %212

210:                                              ; preds = %207
  %211 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -7, ptr %211, align 4, !tbaa !9
  br label %244

212:                                              ; preds = %207
  %213 = load ptr, ptr %29, align 8, !tbaa !5
  %214 = load i32, ptr %213, align 4, !tbaa !9
  %215 = icmp slt i32 %214, 1
  br i1 %215, label %225, label %216

216:                                              ; preds = %212
  %217 = load i32, ptr %54, align 4, !tbaa !9
  %218 = icmp ne i32 %217, 0
  br i1 %218, label %219, label %227

219:                                              ; preds = %216
  %220 = load ptr, ptr %29, align 8, !tbaa !5
  %221 = load i32, ptr %220, align 4, !tbaa !9
  %222 = load ptr, ptr %20, align 8, !tbaa !5
  %223 = load i32, ptr %222, align 4, !tbaa !9
  %224 = icmp slt i32 %221, %223
  br i1 %224, label %225, label %227

225:                                              ; preds = %219, %212
  %226 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -12, ptr %226, align 4, !tbaa !9
  br label %243

227:                                              ; preds = %219, %216
  %228 = load ptr, ptr %31, align 8, !tbaa !5
  %229 = load i32, ptr %228, align 4, !tbaa !9
  %230 = icmp slt i32 %229, 1
  br i1 %230, label %240, label %231

231:                                              ; preds = %227
  %232 = load i32, ptr %55, align 4, !tbaa !9
  %233 = icmp ne i32 %232, 0
  br i1 %233, label %234, label %242

234:                                              ; preds = %231
  %235 = load ptr, ptr %31, align 8, !tbaa !5
  %236 = load i32, ptr %235, align 4, !tbaa !9
  %237 = load ptr, ptr %20, align 8, !tbaa !5
  %238 = load i32, ptr %237, align 4, !tbaa !9
  %239 = icmp slt i32 %236, %238
  br i1 %239, label %240, label %242

240:                                              ; preds = %234, %227
  %241 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -14, ptr %241, align 4, !tbaa !9
  br label %242

242:                                              ; preds = %240, %234, %231
  br label %243

243:                                              ; preds = %242, %225
  br label %244

244:                                              ; preds = %243, %210
  br label %245

245:                                              ; preds = %244, %195
  br label %246

246:                                              ; preds = %245, %180
  br label %247

247:                                              ; preds = %246, %174
  br label %248

248:                                              ; preds = %247, %169
  %249 = load ptr, ptr %34, align 8, !tbaa !5
  %250 = load i32, ptr %249, align 4, !tbaa !9
  %251 = icmp eq i32 %250, 0
  br i1 %251, label %252, label %333

252:                                              ; preds = %248
  store i32 1, ptr %43, align 4, !tbaa !9
  %253 = load ptr, ptr %20, align 8, !tbaa !5
  %254 = load i32, ptr %253, align 4, !tbaa !9
  %255 = shl i32 %254, 3
  store i32 %255, ptr %44, align 4, !tbaa !9
  %256 = load i32, ptr %43, align 4, !tbaa !9
  %257 = load i32, ptr %44, align 4, !tbaa !9
  %258 = icmp sge i32 %256, %257
  br i1 %258, label %259, label %261

259:                                              ; preds = %252
  %260 = load i32, ptr %43, align 4, !tbaa !9
  br label %263

261:                                              ; preds = %252
  %262 = load i32, ptr %44, align 4, !tbaa !9
  br label %263

263:                                              ; preds = %261, %259
  %264 = phi i32 [ %260, %259 ], [ %262, %261 ]
  store i32 %264, ptr %73, align 4, !tbaa !9
  store i32 1, ptr %43, align 4, !tbaa !9
  %265 = load ptr, ptr %20, align 8, !tbaa !5
  %266 = load i32, ptr %265, align 4, !tbaa !9
  %267 = load ptr, ptr %20, align 8, !tbaa !5
  %268 = load ptr, ptr %20, align 8, !tbaa !5
  %269 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef %267, ptr noundef @c__1, ptr noundef %268, ptr noundef @c__0, i32 noundef 6, i32 noundef 1)
  %270 = add nsw i32 %269, 7
  %271 = mul nsw i32 %266, %270
  store i32 %271, ptr %44, align 4, !tbaa !9
  %272 = load i32, ptr %43, align 4, !tbaa !9
  %273 = load i32, ptr %44, align 4, !tbaa !9
  %274 = icmp sge i32 %272, %273
  br i1 %274, label %275, label %277

275:                                              ; preds = %263
  %276 = load i32, ptr %43, align 4, !tbaa !9
  br label %279

277:                                              ; preds = %263
  %278 = load i32, ptr %44, align 4, !tbaa !9
  br label %279

279:                                              ; preds = %277, %275
  %280 = phi i32 [ %276, %275 ], [ %278, %277 ]
  store i32 %280, ptr %74, align 4, !tbaa !9
  %281 = load i32, ptr %74, align 4, !tbaa !9
  store i32 %281, ptr %43, align 4, !tbaa !9
  %282 = load ptr, ptr %20, align 8, !tbaa !5
  %283 = load i32, ptr %282, align 4, !tbaa !9
  %284 = load ptr, ptr %20, align 8, !tbaa !5
  %285 = load ptr, ptr %20, align 8, !tbaa !5
  %286 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.4, ptr noundef @.str.3, ptr noundef %284, ptr noundef @c__1, ptr noundef %285, ptr noundef @c__0, i32 noundef 6, i32 noundef 1)
  %287 = add nsw i32 %286, 7
  %288 = mul nsw i32 %283, %287
  store i32 %288, ptr %44, align 4, !tbaa !9
  %289 = load i32, ptr %43, align 4, !tbaa !9
  %290 = load i32, ptr %44, align 4, !tbaa !9
  %291 = icmp sge i32 %289, %290
  br i1 %291, label %292, label %294

292:                                              ; preds = %279
  %293 = load i32, ptr %43, align 4, !tbaa !9
  br label %296

294:                                              ; preds = %279
  %295 = load i32, ptr %44, align 4, !tbaa !9
  br label %296

296:                                              ; preds = %294, %292
  %297 = phi i32 [ %293, %292 ], [ %295, %294 ]
  store i32 %297, ptr %74, align 4, !tbaa !9
  %298 = load i32, ptr %54, align 4, !tbaa !9
  %299 = icmp ne i32 %298, 0
  br i1 %299, label %300, label %318

300:                                              ; preds = %296
  %301 = load i32, ptr %74, align 4, !tbaa !9
  store i32 %301, ptr %43, align 4, !tbaa !9
  %302 = load ptr, ptr %20, align 8, !tbaa !5
  %303 = load i32, ptr %302, align 4, !tbaa !9
  %304 = load ptr, ptr %20, align 8, !tbaa !5
  %305 = load ptr, ptr %20, align 8, !tbaa !5
  %306 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.5, ptr noundef @.str.3, ptr noundef %304, ptr noundef @c__1, ptr noundef %305, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  %307 = add nsw i32 %306, 7
  %308 = mul nsw i32 %303, %307
  store i32 %308, ptr %44, align 4, !tbaa !9
  %309 = load i32, ptr %43, align 4, !tbaa !9
  %310 = load i32, ptr %44, align 4, !tbaa !9
  %311 = icmp sge i32 %309, %310
  br i1 %311, label %312, label %314

312:                                              ; preds = %300
  %313 = load i32, ptr %43, align 4, !tbaa !9
  br label %316

314:                                              ; preds = %300
  %315 = load i32, ptr %44, align 4, !tbaa !9
  br label %316

316:                                              ; preds = %314, %312
  %317 = phi i32 [ %313, %312 ], [ %315, %314 ]
  store i32 %317, ptr %74, align 4, !tbaa !9
  br label %318

318:                                              ; preds = %316, %296
  %319 = load i32, ptr %74, align 4, !tbaa !9
  %320 = sitofp i32 %319 to double
  %321 = load ptr, ptr %32, align 8, !tbaa !5
  %322 = getelementptr inbounds double, ptr %321, i64 1
  store double %320, ptr %322, align 8, !tbaa !11
  %323 = load ptr, ptr %33, align 8, !tbaa !5
  %324 = load i32, ptr %323, align 4, !tbaa !9
  %325 = load i32, ptr %73, align 4, !tbaa !9
  %326 = icmp slt i32 %324, %325
  br i1 %326, label %327, label %332

327:                                              ; preds = %318
  %328 = load i32, ptr %76, align 4, !tbaa !9
  %329 = icmp ne i32 %328, 0
  br i1 %329, label %332, label %330

330:                                              ; preds = %327
  %331 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -16, ptr %331, align 4, !tbaa !9
  br label %332

332:                                              ; preds = %330, %327, %318
  br label %333

333:                                              ; preds = %332, %248
  %334 = load ptr, ptr %34, align 8, !tbaa !5
  %335 = load i32, ptr %334, align 4, !tbaa !9
  %336 = icmp ne i32 %335, 0
  br i1 %336, label %337, label %342

337:                                              ; preds = %333
  %338 = load ptr, ptr %34, align 8, !tbaa !5
  %339 = load i32, ptr %338, align 4, !tbaa !9
  %340 = sub nsw i32 0, %339
  store i32 %340, ptr %43, align 4, !tbaa !9
  %341 = call i32 @xerbla_(ptr noundef @.str.6, ptr noundef %43, i32 noundef 6)
  store i32 1, ptr %81, align 4
  br label %1266

342:                                              ; preds = %333
  %343 = load i32, ptr %76, align 4, !tbaa !9
  %344 = icmp ne i32 %343, 0
  br i1 %344, label %345, label %346

345:                                              ; preds = %342
  store i32 1, ptr %81, align 4
  br label %1266

346:                                              ; preds = %342
  br label %347

347:                                              ; preds = %346
  %348 = load ptr, ptr %20, align 8, !tbaa !5
  %349 = load i32, ptr %348, align 4, !tbaa !9
  %350 = icmp eq i32 %349, 0
  br i1 %350, label %351, label %352

351:                                              ; preds = %347
  store i32 1, ptr %81, align 4
  br label %1266

352:                                              ; preds = %347
  %353 = call double @dlamch_(ptr noundef @.str.7)
  store double %353, ptr %79, align 8, !tbaa !11
  %354 = call double @dlamch_(ptr noundef @.str.8)
  store double %354, ptr %75, align 8, !tbaa !11
  %355 = load double, ptr %75, align 8, !tbaa !11
  %356 = fdiv double 1.000000e+00, %355
  store double %356, ptr %67, align 8, !tbaa !11
  call void @dlabad_(ptr noundef %75, ptr noundef %67)
  %357 = load double, ptr %75, align 8, !tbaa !11
  %358 = call double @sqrt(double noundef %357) #4
  %359 = load double, ptr %79, align 8, !tbaa !11
  %360 = fdiv double %358, %359
  store double %360, ptr %75, align 8, !tbaa !11
  %361 = load double, ptr %75, align 8, !tbaa !11
  %362 = fdiv double 1.000000e+00, %361
  store double %362, ptr %67, align 8, !tbaa !11
  %363 = load ptr, ptr %20, align 8, !tbaa !5
  %364 = load ptr, ptr %20, align 8, !tbaa !5
  %365 = load ptr, ptr %21, align 8, !tbaa !5
  %366 = load i32, ptr %36, align 4, !tbaa !9
  %367 = sext i32 %366 to i64
  %368 = getelementptr inbounds double, ptr %365, i64 %367
  %369 = load ptr, ptr %22, align 8, !tbaa !5
  %370 = load ptr, ptr %32, align 8, !tbaa !5
  %371 = getelementptr inbounds double, ptr %370, i64 1
  %372 = call double @dlange_(ptr noundef @.str.9, ptr noundef %363, ptr noundef %364, ptr noundef %368, ptr noundef %369, ptr noundef %371)
  store double %372, ptr %49, align 8, !tbaa !11
  store i32 0, ptr %63, align 4, !tbaa !9
  %373 = load double, ptr %49, align 8, !tbaa !11
  %374 = fcmp ogt double %373, 0.000000e+00
  br i1 %374, label %375, label %381

375:                                              ; preds = %352
  %376 = load double, ptr %49, align 8, !tbaa !11
  %377 = load double, ptr %75, align 8, !tbaa !11
  %378 = fcmp olt double %376, %377
  br i1 %378, label %379, label %381

379:                                              ; preds = %375
  %380 = load double, ptr %75, align 8, !tbaa !11
  store double %380, ptr %71, align 8, !tbaa !11
  store i32 1, ptr %63, align 4, !tbaa !9
  br label %388

381:                                              ; preds = %375, %352
  %382 = load double, ptr %49, align 8, !tbaa !11
  %383 = load double, ptr %67, align 8, !tbaa !11
  %384 = fcmp ogt double %382, %383
  br i1 %384, label %385, label %387

385:                                              ; preds = %381
  %386 = load double, ptr %67, align 8, !tbaa !11
  store double %386, ptr %71, align 8, !tbaa !11
  store i32 1, ptr %63, align 4, !tbaa !9
  br label %387

387:                                              ; preds = %385, %381
  br label %388

388:                                              ; preds = %387, %379
  %389 = load i32, ptr %63, align 4, !tbaa !9
  %390 = icmp ne i32 %389, 0
  br i1 %390, label %391, label %399

391:                                              ; preds = %388
  %392 = load ptr, ptr %20, align 8, !tbaa !5
  %393 = load ptr, ptr %20, align 8, !tbaa !5
  %394 = load ptr, ptr %21, align 8, !tbaa !5
  %395 = load i32, ptr %36, align 4, !tbaa !9
  %396 = sext i32 %395 to i64
  %397 = getelementptr inbounds double, ptr %394, i64 %396
  %398 = load ptr, ptr %22, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.10, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %49, ptr noundef %71, ptr noundef %392, ptr noundef %393, ptr noundef %397, ptr noundef %398, ptr noundef %51)
  br label %399

399:                                              ; preds = %391, %388
  %400 = load ptr, ptr %20, align 8, !tbaa !5
  %401 = load ptr, ptr %20, align 8, !tbaa !5
  %402 = load ptr, ptr %23, align 8, !tbaa !5
  %403 = load i32, ptr %38, align 4, !tbaa !9
  %404 = sext i32 %403 to i64
  %405 = getelementptr inbounds double, ptr %402, i64 %404
  %406 = load ptr, ptr %24, align 8, !tbaa !5
  %407 = load ptr, ptr %32, align 8, !tbaa !5
  %408 = getelementptr inbounds double, ptr %407, i64 1
  %409 = call double @dlange_(ptr noundef @.str.9, ptr noundef %400, ptr noundef %401, ptr noundef %405, ptr noundef %406, ptr noundef %408)
  store double %409, ptr %50, align 8, !tbaa !11
  store i32 0, ptr %64, align 4, !tbaa !9
  %410 = load double, ptr %50, align 8, !tbaa !11
  %411 = fcmp ogt double %410, 0.000000e+00
  br i1 %411, label %412, label %418

412:                                              ; preds = %399
  %413 = load double, ptr %50, align 8, !tbaa !11
  %414 = load double, ptr %75, align 8, !tbaa !11
  %415 = fcmp olt double %413, %414
  br i1 %415, label %416, label %418

416:                                              ; preds = %412
  %417 = load double, ptr %75, align 8, !tbaa !11
  store double %417, ptr %72, align 8, !tbaa !11
  store i32 1, ptr %64, align 4, !tbaa !9
  br label %425

418:                                              ; preds = %412, %399
  %419 = load double, ptr %50, align 8, !tbaa !11
  %420 = load double, ptr %67, align 8, !tbaa !11
  %421 = fcmp ogt double %419, %420
  br i1 %421, label %422, label %424

422:                                              ; preds = %418
  %423 = load double, ptr %67, align 8, !tbaa !11
  store double %423, ptr %72, align 8, !tbaa !11
  store i32 1, ptr %64, align 4, !tbaa !9
  br label %424

424:                                              ; preds = %422, %418
  br label %425

425:                                              ; preds = %424, %416
  %426 = load i32, ptr %64, align 4, !tbaa !9
  %427 = icmp ne i32 %426, 0
  br i1 %427, label %428, label %436

428:                                              ; preds = %425
  %429 = load ptr, ptr %20, align 8, !tbaa !5
  %430 = load ptr, ptr %20, align 8, !tbaa !5
  %431 = load ptr, ptr %23, align 8, !tbaa !5
  %432 = load i32, ptr %38, align 4, !tbaa !9
  %433 = sext i32 %432 to i64
  %434 = getelementptr inbounds double, ptr %431, i64 %433
  %435 = load ptr, ptr %24, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.10, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %50, ptr noundef %72, ptr noundef %429, ptr noundef %430, ptr noundef %434, ptr noundef %435, ptr noundef %51)
  br label %436

436:                                              ; preds = %428, %425
  store i32 1, ptr %57, align 4, !tbaa !9
  %437 = load ptr, ptr %20, align 8, !tbaa !5
  %438 = load i32, ptr %437, align 4, !tbaa !9
  %439 = add nsw i32 %438, 1
  store i32 %439, ptr %69, align 4, !tbaa !9
  %440 = load i32, ptr %69, align 4, !tbaa !9
  %441 = load ptr, ptr %20, align 8, !tbaa !5
  %442 = load i32, ptr %441, align 4, !tbaa !9
  %443 = add nsw i32 %440, %442
  store i32 %443, ptr %56, align 4, !tbaa !9
  %444 = load ptr, ptr %20, align 8, !tbaa !5
  %445 = load ptr, ptr %21, align 8, !tbaa !5
  %446 = load i32, ptr %36, align 4, !tbaa !9
  %447 = sext i32 %446 to i64
  %448 = getelementptr inbounds double, ptr %445, i64 %447
  %449 = load ptr, ptr %22, align 8, !tbaa !5
  %450 = load ptr, ptr %23, align 8, !tbaa !5
  %451 = load i32, ptr %38, align 4, !tbaa !9
  %452 = sext i32 %451 to i64
  %453 = getelementptr inbounds double, ptr %450, i64 %452
  %454 = load ptr, ptr %24, align 8, !tbaa !5
  %455 = load ptr, ptr %32, align 8, !tbaa !5
  %456 = load i32, ptr %57, align 4, !tbaa !9
  %457 = sext i32 %456 to i64
  %458 = getelementptr inbounds double, ptr %455, i64 %457
  %459 = load ptr, ptr %32, align 8, !tbaa !5
  %460 = load i32, ptr %69, align 4, !tbaa !9
  %461 = sext i32 %460 to i64
  %462 = getelementptr inbounds double, ptr %459, i64 %461
  %463 = load ptr, ptr %32, align 8, !tbaa !5
  %464 = load i32, ptr %56, align 4, !tbaa !9
  %465 = sext i32 %464 to i64
  %466 = getelementptr inbounds double, ptr %463, i64 %465
  call void @dggbal_(ptr noundef @.str.7, ptr noundef %444, ptr noundef %448, ptr noundef %449, ptr noundef %453, ptr noundef %454, ptr noundef %78, ptr noundef %77, ptr noundef %458, ptr noundef %462, ptr noundef %466, ptr noundef %51)
  %467 = load i32, ptr %77, align 4, !tbaa !9
  %468 = add nsw i32 %467, 1
  %469 = load i32, ptr %78, align 4, !tbaa !9
  %470 = sub nsw i32 %468, %469
  store i32 %470, ptr %59, align 4, !tbaa !9
  %471 = load i32, ptr %80, align 4, !tbaa !9
  %472 = icmp ne i32 %471, 0
  br i1 %472, label %473, label %479

473:                                              ; preds = %436
  %474 = load ptr, ptr %20, align 8, !tbaa !5
  %475 = load i32, ptr %474, align 4, !tbaa !9
  %476 = add nsw i32 %475, 1
  %477 = load i32, ptr %78, align 4, !tbaa !9
  %478 = sub nsw i32 %476, %477
  store i32 %478, ptr %58, align 4, !tbaa !9
  br label %481

479:                                              ; preds = %436
  %480 = load i32, ptr %59, align 4, !tbaa !9
  store i32 %480, ptr %58, align 4, !tbaa !9
  br label %481

481:                                              ; preds = %479, %473
  %482 = load i32, ptr %56, align 4, !tbaa !9
  store i32 %482, ptr %52, align 4, !tbaa !9
  %483 = load i32, ptr %52, align 4, !tbaa !9
  %484 = load i32, ptr %59, align 4, !tbaa !9
  %485 = add nsw i32 %483, %484
  store i32 %485, ptr %56, align 4, !tbaa !9
  %486 = load ptr, ptr %33, align 8, !tbaa !5
  %487 = load i32, ptr %486, align 4, !tbaa !9
  %488 = add nsw i32 %487, 1
  %489 = load i32, ptr %56, align 4, !tbaa !9
  %490 = sub nsw i32 %488, %489
  store i32 %490, ptr %43, align 4, !tbaa !9
  %491 = load ptr, ptr %23, align 8, !tbaa !5
  %492 = load i32, ptr %78, align 4, !tbaa !9
  %493 = load i32, ptr %78, align 4, !tbaa !9
  %494 = load i32, ptr %37, align 4, !tbaa !9
  %495 = mul nsw i32 %493, %494
  %496 = add nsw i32 %492, %495
  %497 = sext i32 %496 to i64
  %498 = getelementptr inbounds double, ptr %491, i64 %497
  %499 = load ptr, ptr %24, align 8, !tbaa !5
  %500 = load ptr, ptr %32, align 8, !tbaa !5
  %501 = load i32, ptr %52, align 4, !tbaa !9
  %502 = sext i32 %501 to i64
  %503 = getelementptr inbounds double, ptr %500, i64 %502
  %504 = load ptr, ptr %32, align 8, !tbaa !5
  %505 = load i32, ptr %56, align 4, !tbaa !9
  %506 = sext i32 %505 to i64
  %507 = getelementptr inbounds double, ptr %504, i64 %506
  call void @dgeqrf_(ptr noundef %59, ptr noundef %58, ptr noundef %498, ptr noundef %499, ptr noundef %503, ptr noundef %507, ptr noundef %43, ptr noundef %51)
  %508 = load ptr, ptr %33, align 8, !tbaa !5
  %509 = load i32, ptr %508, align 4, !tbaa !9
  %510 = add nsw i32 %509, 1
  %511 = load i32, ptr %56, align 4, !tbaa !9
  %512 = sub nsw i32 %510, %511
  store i32 %512, ptr %43, align 4, !tbaa !9
  %513 = load ptr, ptr %23, align 8, !tbaa !5
  %514 = load i32, ptr %78, align 4, !tbaa !9
  %515 = load i32, ptr %78, align 4, !tbaa !9
  %516 = load i32, ptr %37, align 4, !tbaa !9
  %517 = mul nsw i32 %515, %516
  %518 = add nsw i32 %514, %517
  %519 = sext i32 %518 to i64
  %520 = getelementptr inbounds double, ptr %513, i64 %519
  %521 = load ptr, ptr %24, align 8, !tbaa !5
  %522 = load ptr, ptr %32, align 8, !tbaa !5
  %523 = load i32, ptr %52, align 4, !tbaa !9
  %524 = sext i32 %523 to i64
  %525 = getelementptr inbounds double, ptr %522, i64 %524
  %526 = load ptr, ptr %21, align 8, !tbaa !5
  %527 = load i32, ptr %78, align 4, !tbaa !9
  %528 = load i32, ptr %78, align 4, !tbaa !9
  %529 = load i32, ptr %35, align 4, !tbaa !9
  %530 = mul nsw i32 %528, %529
  %531 = add nsw i32 %527, %530
  %532 = sext i32 %531 to i64
  %533 = getelementptr inbounds double, ptr %526, i64 %532
  %534 = load ptr, ptr %22, align 8, !tbaa !5
  %535 = load ptr, ptr %32, align 8, !tbaa !5
  %536 = load i32, ptr %56, align 4, !tbaa !9
  %537 = sext i32 %536 to i64
  %538 = getelementptr inbounds double, ptr %535, i64 %537
  call void @dormqr_(ptr noundef @.str.11, ptr noundef @.str.12, ptr noundef %59, ptr noundef %58, ptr noundef %59, ptr noundef %520, ptr noundef %521, ptr noundef %525, ptr noundef %533, ptr noundef %534, ptr noundef %538, ptr noundef %43, ptr noundef %51)
  %539 = load i32, ptr %54, align 4, !tbaa !9
  %540 = icmp ne i32 %539, 0
  br i1 %540, label %541, label %599

541:                                              ; preds = %481
  %542 = load ptr, ptr %20, align 8, !tbaa !5
  %543 = load ptr, ptr %20, align 8, !tbaa !5
  %544 = load ptr, ptr %28, align 8, !tbaa !5
  %545 = load i32, ptr %40, align 4, !tbaa !9
  %546 = sext i32 %545 to i64
  %547 = getelementptr inbounds double, ptr %544, i64 %546
  %548 = load ptr, ptr %29, align 8, !tbaa !5
  call void @dlaset_(ptr noundef @.str.13, ptr noundef %542, ptr noundef %543, ptr noundef @c_b36, ptr noundef @c_b37, ptr noundef %547, ptr noundef %548)
  %549 = load i32, ptr %59, align 4, !tbaa !9
  %550 = icmp sgt i32 %549, 1
  br i1 %550, label %551, label %576

551:                                              ; preds = %541
  %552 = load i32, ptr %59, align 4, !tbaa !9
  %553 = sub nsw i32 %552, 1
  store i32 %553, ptr %43, align 4, !tbaa !9
  %554 = load i32, ptr %59, align 4, !tbaa !9
  %555 = sub nsw i32 %554, 1
  store i32 %555, ptr %44, align 4, !tbaa !9
  %556 = load ptr, ptr %23, align 8, !tbaa !5
  %557 = load i32, ptr %78, align 4, !tbaa !9
  %558 = add nsw i32 %557, 1
  %559 = load i32, ptr %78, align 4, !tbaa !9
  %560 = load i32, ptr %37, align 4, !tbaa !9
  %561 = mul nsw i32 %559, %560
  %562 = add nsw i32 %558, %561
  %563 = sext i32 %562 to i64
  %564 = getelementptr inbounds double, ptr %556, i64 %563
  %565 = load ptr, ptr %24, align 8, !tbaa !5
  %566 = load ptr, ptr %28, align 8, !tbaa !5
  %567 = load i32, ptr %78, align 4, !tbaa !9
  %568 = add nsw i32 %567, 1
  %569 = load i32, ptr %78, align 4, !tbaa !9
  %570 = load i32, ptr %39, align 4, !tbaa !9
  %571 = mul nsw i32 %569, %570
  %572 = add nsw i32 %568, %571
  %573 = sext i32 %572 to i64
  %574 = getelementptr inbounds double, ptr %566, i64 %573
  %575 = load ptr, ptr %29, align 8, !tbaa !5
  call void @dlacpy_(ptr noundef @.str.11, ptr noundef %43, ptr noundef %44, ptr noundef %564, ptr noundef %565, ptr noundef %574, ptr noundef %575)
  br label %576

576:                                              ; preds = %551, %541
  %577 = load ptr, ptr %33, align 8, !tbaa !5
  %578 = load i32, ptr %577, align 4, !tbaa !9
  %579 = add nsw i32 %578, 1
  %580 = load i32, ptr %56, align 4, !tbaa !9
  %581 = sub nsw i32 %579, %580
  store i32 %581, ptr %43, align 4, !tbaa !9
  %582 = load ptr, ptr %28, align 8, !tbaa !5
  %583 = load i32, ptr %78, align 4, !tbaa !9
  %584 = load i32, ptr %78, align 4, !tbaa !9
  %585 = load i32, ptr %39, align 4, !tbaa !9
  %586 = mul nsw i32 %584, %585
  %587 = add nsw i32 %583, %586
  %588 = sext i32 %587 to i64
  %589 = getelementptr inbounds double, ptr %582, i64 %588
  %590 = load ptr, ptr %29, align 8, !tbaa !5
  %591 = load ptr, ptr %32, align 8, !tbaa !5
  %592 = load i32, ptr %52, align 4, !tbaa !9
  %593 = sext i32 %592 to i64
  %594 = getelementptr inbounds double, ptr %591, i64 %593
  %595 = load ptr, ptr %32, align 8, !tbaa !5
  %596 = load i32, ptr %56, align 4, !tbaa !9
  %597 = sext i32 %596 to i64
  %598 = getelementptr inbounds double, ptr %595, i64 %597
  call void @dorgqr_(ptr noundef %59, ptr noundef %59, ptr noundef %59, ptr noundef %589, ptr noundef %590, ptr noundef %594, ptr noundef %598, ptr noundef %43, ptr noundef %51)
  br label %599

599:                                              ; preds = %576, %481
  %600 = load i32, ptr %55, align 4, !tbaa !9
  %601 = icmp ne i32 %600, 0
  br i1 %601, label %602, label %610

602:                                              ; preds = %599
  %603 = load ptr, ptr %20, align 8, !tbaa !5
  %604 = load ptr, ptr %20, align 8, !tbaa !5
  %605 = load ptr, ptr %30, align 8, !tbaa !5
  %606 = load i32, ptr %42, align 4, !tbaa !9
  %607 = sext i32 %606 to i64
  %608 = getelementptr inbounds double, ptr %605, i64 %607
  %609 = load ptr, ptr %31, align 8, !tbaa !5
  call void @dlaset_(ptr noundef @.str.13, ptr noundef %603, ptr noundef %604, ptr noundef @c_b36, ptr noundef @c_b37, ptr noundef %608, ptr noundef %609)
  br label %610

610:                                              ; preds = %602, %599
  %611 = load i32, ptr %80, align 4, !tbaa !9
  %612 = icmp ne i32 %611, 0
  br i1 %612, label %613, label %637

613:                                              ; preds = %610
  %614 = load ptr, ptr %18, align 8, !tbaa !5
  %615 = load ptr, ptr %19, align 8, !tbaa !5
  %616 = load ptr, ptr %20, align 8, !tbaa !5
  %617 = load ptr, ptr %21, align 8, !tbaa !5
  %618 = load i32, ptr %36, align 4, !tbaa !9
  %619 = sext i32 %618 to i64
  %620 = getelementptr inbounds double, ptr %617, i64 %619
  %621 = load ptr, ptr %22, align 8, !tbaa !5
  %622 = load ptr, ptr %23, align 8, !tbaa !5
  %623 = load i32, ptr %38, align 4, !tbaa !9
  %624 = sext i32 %623 to i64
  %625 = getelementptr inbounds double, ptr %622, i64 %624
  %626 = load ptr, ptr %24, align 8, !tbaa !5
  %627 = load ptr, ptr %28, align 8, !tbaa !5
  %628 = load i32, ptr %40, align 4, !tbaa !9
  %629 = sext i32 %628 to i64
  %630 = getelementptr inbounds double, ptr %627, i64 %629
  %631 = load ptr, ptr %29, align 8, !tbaa !5
  %632 = load ptr, ptr %30, align 8, !tbaa !5
  %633 = load i32, ptr %42, align 4, !tbaa !9
  %634 = sext i32 %633 to i64
  %635 = getelementptr inbounds double, ptr %632, i64 %634
  %636 = load ptr, ptr %31, align 8, !tbaa !5
  call void @dgghrd_(ptr noundef %614, ptr noundef %615, ptr noundef %616, ptr noundef %78, ptr noundef %77, ptr noundef %620, ptr noundef %621, ptr noundef %625, ptr noundef %626, ptr noundef %630, ptr noundef %631, ptr noundef %635, ptr noundef %636, ptr noundef %51)
  br label %666

637:                                              ; preds = %610
  %638 = load ptr, ptr %21, align 8, !tbaa !5
  %639 = load i32, ptr %78, align 4, !tbaa !9
  %640 = load i32, ptr %78, align 4, !tbaa !9
  %641 = load i32, ptr %35, align 4, !tbaa !9
  %642 = mul nsw i32 %640, %641
  %643 = add nsw i32 %639, %642
  %644 = sext i32 %643 to i64
  %645 = getelementptr inbounds double, ptr %638, i64 %644
  %646 = load ptr, ptr %22, align 8, !tbaa !5
  %647 = load ptr, ptr %23, align 8, !tbaa !5
  %648 = load i32, ptr %78, align 4, !tbaa !9
  %649 = load i32, ptr %78, align 4, !tbaa !9
  %650 = load i32, ptr %37, align 4, !tbaa !9
  %651 = mul nsw i32 %649, %650
  %652 = add nsw i32 %648, %651
  %653 = sext i32 %652 to i64
  %654 = getelementptr inbounds double, ptr %647, i64 %653
  %655 = load ptr, ptr %24, align 8, !tbaa !5
  %656 = load ptr, ptr %28, align 8, !tbaa !5
  %657 = load i32, ptr %40, align 4, !tbaa !9
  %658 = sext i32 %657 to i64
  %659 = getelementptr inbounds double, ptr %656, i64 %658
  %660 = load ptr, ptr %29, align 8, !tbaa !5
  %661 = load ptr, ptr %30, align 8, !tbaa !5
  %662 = load i32, ptr %42, align 4, !tbaa !9
  %663 = sext i32 %662 to i64
  %664 = getelementptr inbounds double, ptr %661, i64 %663
  %665 = load ptr, ptr %31, align 8, !tbaa !5
  call void @dgghrd_(ptr noundef @.str, ptr noundef @.str, ptr noundef %59, ptr noundef @c__1, ptr noundef %59, ptr noundef %645, ptr noundef %646, ptr noundef %654, ptr noundef %655, ptr noundef %659, ptr noundef %660, ptr noundef %664, ptr noundef %665, ptr noundef %51)
  br label %666

666:                                              ; preds = %637, %613
  %667 = load i32, ptr %52, align 4, !tbaa !9
  store i32 %667, ptr %56, align 4, !tbaa !9
  %668 = load i32, ptr %80, align 4, !tbaa !9
  %669 = icmp ne i32 %668, 0
  br i1 %669, label %670, label %672

670:                                              ; preds = %666
  %671 = getelementptr inbounds [1 x i8], ptr %66, i64 0, i64 0
  store i8 83, ptr %671, align 1, !tbaa !13
  br label %674

672:                                              ; preds = %666
  %673 = getelementptr inbounds [1 x i8], ptr %66, i64 0, i64 0
  store i8 69, ptr %673, align 1, !tbaa !13
  br label %674

674:                                              ; preds = %672, %670
  %675 = load ptr, ptr %33, align 8, !tbaa !5
  %676 = load i32, ptr %675, align 4, !tbaa !9
  %677 = add nsw i32 %676, 1
  %678 = load i32, ptr %56, align 4, !tbaa !9
  %679 = sub nsw i32 %677, %678
  store i32 %679, ptr %43, align 4, !tbaa !9
  %680 = getelementptr inbounds [1 x i8], ptr %66, i64 0, i64 0
  %681 = load ptr, ptr %18, align 8, !tbaa !5
  %682 = load ptr, ptr %19, align 8, !tbaa !5
  %683 = load ptr, ptr %20, align 8, !tbaa !5
  %684 = load ptr, ptr %21, align 8, !tbaa !5
  %685 = load i32, ptr %36, align 4, !tbaa !9
  %686 = sext i32 %685 to i64
  %687 = getelementptr inbounds double, ptr %684, i64 %686
  %688 = load ptr, ptr %22, align 8, !tbaa !5
  %689 = load ptr, ptr %23, align 8, !tbaa !5
  %690 = load i32, ptr %38, align 4, !tbaa !9
  %691 = sext i32 %690 to i64
  %692 = getelementptr inbounds double, ptr %689, i64 %691
  %693 = load ptr, ptr %24, align 8, !tbaa !5
  %694 = load ptr, ptr %25, align 8, !tbaa !5
  %695 = getelementptr inbounds double, ptr %694, i64 1
  %696 = load ptr, ptr %26, align 8, !tbaa !5
  %697 = getelementptr inbounds double, ptr %696, i64 1
  %698 = load ptr, ptr %27, align 8, !tbaa !5
  %699 = getelementptr inbounds double, ptr %698, i64 1
  %700 = load ptr, ptr %28, align 8, !tbaa !5
  %701 = load i32, ptr %40, align 4, !tbaa !9
  %702 = sext i32 %701 to i64
  %703 = getelementptr inbounds double, ptr %700, i64 %702
  %704 = load ptr, ptr %29, align 8, !tbaa !5
  %705 = load ptr, ptr %30, align 8, !tbaa !5
  %706 = load i32, ptr %42, align 4, !tbaa !9
  %707 = sext i32 %706 to i64
  %708 = getelementptr inbounds double, ptr %705, i64 %707
  %709 = load ptr, ptr %31, align 8, !tbaa !5
  %710 = load ptr, ptr %32, align 8, !tbaa !5
  %711 = load i32, ptr %56, align 4, !tbaa !9
  %712 = sext i32 %711 to i64
  %713 = getelementptr inbounds double, ptr %710, i64 %712
  call void @dhgeqz_(ptr noundef %680, ptr noundef %681, ptr noundef %682, ptr noundef %683, ptr noundef %78, ptr noundef %77, ptr noundef %687, ptr noundef %688, ptr noundef %692, ptr noundef %693, ptr noundef %695, ptr noundef %697, ptr noundef %699, ptr noundef %703, ptr noundef %704, ptr noundef %708, ptr noundef %709, ptr noundef %713, ptr noundef %43, ptr noundef %51)
  %714 = load i32, ptr %51, align 4, !tbaa !9
  %715 = icmp ne i32 %714, 0
  br i1 %715, label %716, label %751

716:                                              ; preds = %674
  %717 = load i32, ptr %51, align 4, !tbaa !9
  %718 = icmp sgt i32 %717, 0
  br i1 %718, label %719, label %727

719:                                              ; preds = %716
  %720 = load i32, ptr %51, align 4, !tbaa !9
  %721 = load ptr, ptr %20, align 8, !tbaa !5
  %722 = load i32, ptr %721, align 4, !tbaa !9
  %723 = icmp sle i32 %720, %722
  br i1 %723, label %724, label %727

724:                                              ; preds = %719
  %725 = load i32, ptr %51, align 4, !tbaa !9
  %726 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 %725, ptr %726, align 4, !tbaa !9
  br label %750

727:                                              ; preds = %719, %716
  %728 = load i32, ptr %51, align 4, !tbaa !9
  %729 = load ptr, ptr %20, align 8, !tbaa !5
  %730 = load i32, ptr %729, align 4, !tbaa !9
  %731 = icmp sgt i32 %728, %730
  br i1 %731, label %732, label %744

732:                                              ; preds = %727
  %733 = load i32, ptr %51, align 4, !tbaa !9
  %734 = load ptr, ptr %20, align 8, !tbaa !5
  %735 = load i32, ptr %734, align 4, !tbaa !9
  %736 = shl i32 %735, 1
  %737 = icmp sle i32 %733, %736
  br i1 %737, label %738, label %744

738:                                              ; preds = %732
  %739 = load i32, ptr %51, align 4, !tbaa !9
  %740 = load ptr, ptr %20, align 8, !tbaa !5
  %741 = load i32, ptr %740, align 4, !tbaa !9
  %742 = sub nsw i32 %739, %741
  %743 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 %742, ptr %743, align 4, !tbaa !9
  br label %749

744:                                              ; preds = %732, %727
  %745 = load ptr, ptr %20, align 8, !tbaa !5
  %746 = load i32, ptr %745, align 4, !tbaa !9
  %747 = add nsw i32 %746, 1
  %748 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 %747, ptr %748, align 4, !tbaa !9
  br label %749

749:                                              ; preds = %744, %738
  br label %750

750:                                              ; preds = %749, %724
  br label %1241

751:                                              ; preds = %674
  %752 = load i32, ptr %80, align 4, !tbaa !9
  %753 = icmp ne i32 %752, 0
  br i1 %753, label %754, label %1240

754:                                              ; preds = %751
  %755 = load i32, ptr %54, align 4, !tbaa !9
  %756 = icmp ne i32 %755, 0
  br i1 %756, label %757, label %765

757:                                              ; preds = %754
  %758 = load i32, ptr %55, align 4, !tbaa !9
  %759 = icmp ne i32 %758, 0
  br i1 %759, label %760, label %762

760:                                              ; preds = %757
  %761 = getelementptr inbounds [1 x i8], ptr %66, i64 0, i64 0
  store i8 66, ptr %761, align 1, !tbaa !13
  br label %764

762:                                              ; preds = %757
  %763 = getelementptr inbounds [1 x i8], ptr %66, i64 0, i64 0
  store i8 76, ptr %763, align 1, !tbaa !13
  br label %764

764:                                              ; preds = %762, %760
  br label %767

765:                                              ; preds = %754
  %766 = getelementptr inbounds [1 x i8], ptr %66, i64 0, i64 0
  store i8 82, ptr %766, align 1, !tbaa !13
  br label %767

767:                                              ; preds = %765, %764
  %768 = getelementptr inbounds [1 x i8], ptr %66, i64 0, i64 0
  %769 = getelementptr inbounds [1 x i32], ptr %65, i64 0, i64 0
  %770 = load ptr, ptr %20, align 8, !tbaa !5
  %771 = load ptr, ptr %21, align 8, !tbaa !5
  %772 = load i32, ptr %36, align 4, !tbaa !9
  %773 = sext i32 %772 to i64
  %774 = getelementptr inbounds double, ptr %771, i64 %773
  %775 = load ptr, ptr %22, align 8, !tbaa !5
  %776 = load ptr, ptr %23, align 8, !tbaa !5
  %777 = load i32, ptr %38, align 4, !tbaa !9
  %778 = sext i32 %777 to i64
  %779 = getelementptr inbounds double, ptr %776, i64 %778
  %780 = load ptr, ptr %24, align 8, !tbaa !5
  %781 = load ptr, ptr %28, align 8, !tbaa !5
  %782 = load i32, ptr %40, align 4, !tbaa !9
  %783 = sext i32 %782 to i64
  %784 = getelementptr inbounds double, ptr %781, i64 %783
  %785 = load ptr, ptr %29, align 8, !tbaa !5
  %786 = load ptr, ptr %30, align 8, !tbaa !5
  %787 = load i32, ptr %42, align 4, !tbaa !9
  %788 = sext i32 %787 to i64
  %789 = getelementptr inbounds double, ptr %786, i64 %788
  %790 = load ptr, ptr %31, align 8, !tbaa !5
  %791 = load ptr, ptr %20, align 8, !tbaa !5
  %792 = load ptr, ptr %32, align 8, !tbaa !5
  %793 = load i32, ptr %56, align 4, !tbaa !9
  %794 = sext i32 %793 to i64
  %795 = getelementptr inbounds double, ptr %792, i64 %794
  call void @dtgevc_(ptr noundef %768, ptr noundef @.str.14, ptr noundef %769, ptr noundef %770, ptr noundef %774, ptr noundef %775, ptr noundef %779, ptr noundef %780, ptr noundef %784, ptr noundef %785, ptr noundef %789, ptr noundef %790, ptr noundef %791, ptr noundef %61, ptr noundef %795, ptr noundef %51)
  %796 = load i32, ptr %51, align 4, !tbaa !9
  %797 = icmp ne i32 %796, 0
  br i1 %797, label %798, label %803

798:                                              ; preds = %767
  %799 = load ptr, ptr %20, align 8, !tbaa !5
  %800 = load i32, ptr %799, align 4, !tbaa !9
  %801 = add nsw i32 %800, 2
  %802 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 %801, ptr %802, align 4, !tbaa !9
  br label %1241

803:                                              ; preds = %767
  %804 = load i32, ptr %54, align 4, !tbaa !9
  %805 = icmp ne i32 %804, 0
  br i1 %805, label %806, label %1021

806:                                              ; preds = %803
  %807 = load ptr, ptr %20, align 8, !tbaa !5
  %808 = load ptr, ptr %32, align 8, !tbaa !5
  %809 = load i32, ptr %57, align 4, !tbaa !9
  %810 = sext i32 %809 to i64
  %811 = getelementptr inbounds double, ptr %808, i64 %810
  %812 = load ptr, ptr %32, align 8, !tbaa !5
  %813 = load i32, ptr %69, align 4, !tbaa !9
  %814 = sext i32 %813 to i64
  %815 = getelementptr inbounds double, ptr %812, i64 %814
  %816 = load ptr, ptr %20, align 8, !tbaa !5
  %817 = load ptr, ptr %28, align 8, !tbaa !5
  %818 = load i32, ptr %40, align 4, !tbaa !9
  %819 = sext i32 %818 to i64
  %820 = getelementptr inbounds double, ptr %817, i64 %819
  %821 = load ptr, ptr %29, align 8, !tbaa !5
  call void @dggbak_(ptr noundef @.str.7, ptr noundef @.str.11, ptr noundef %807, ptr noundef %78, ptr noundef %77, ptr noundef %811, ptr noundef %815, ptr noundef %816, ptr noundef %820, ptr noundef %821, ptr noundef %51)
  %822 = load ptr, ptr %20, align 8, !tbaa !5
  %823 = load i32, ptr %822, align 4, !tbaa !9
  store i32 %823, ptr %43, align 4, !tbaa !9
  store i32 1, ptr %60, align 4, !tbaa !9
  br label %824

824:                                              ; preds = %1017, %806
  %825 = load i32, ptr %60, align 4, !tbaa !9
  %826 = load i32, ptr %43, align 4, !tbaa !9
  %827 = icmp sle i32 %825, %826
  br i1 %827, label %828, label %1020

828:                                              ; preds = %824
  %829 = load ptr, ptr %26, align 8, !tbaa !5
  %830 = load i32, ptr %60, align 4, !tbaa !9
  %831 = sext i32 %830 to i64
  %832 = getelementptr inbounds double, ptr %829, i64 %831
  %833 = load double, ptr %832, align 8, !tbaa !11
  %834 = fcmp olt double %833, 0.000000e+00
  br i1 %834, label %835, label %836

835:                                              ; preds = %828
  br label %1016

836:                                              ; preds = %828
  store double 0.000000e+00, ptr %53, align 8, !tbaa !11
  %837 = load ptr, ptr %26, align 8, !tbaa !5
  %838 = load i32, ptr %60, align 4, !tbaa !9
  %839 = sext i32 %838 to i64
  %840 = getelementptr inbounds double, ptr %837, i64 %839
  %841 = load double, ptr %840, align 8, !tbaa !11
  %842 = fcmp oeq double %841, 0.000000e+00
  br i1 %842, label %843, label %883

843:                                              ; preds = %836
  %844 = load ptr, ptr %20, align 8, !tbaa !5
  %845 = load i32, ptr %844, align 4, !tbaa !9
  store i32 %845, ptr %44, align 4, !tbaa !9
  store i32 1, ptr %62, align 4, !tbaa !9
  br label %846

846:                                              ; preds = %879, %843
  %847 = load i32, ptr %62, align 4, !tbaa !9
  %848 = load i32, ptr %44, align 4, !tbaa !9
  %849 = icmp sle i32 %847, %848
  br i1 %849, label %850, label %882

850:                                              ; preds = %846
  %851 = load double, ptr %53, align 8, !tbaa !11
  store double %851, ptr %46, align 8, !tbaa !11
  %852 = load ptr, ptr %28, align 8, !tbaa !5
  %853 = load i32, ptr %62, align 4, !tbaa !9
  %854 = load i32, ptr %60, align 4, !tbaa !9
  %855 = load i32, ptr %39, align 4, !tbaa !9
  %856 = mul nsw i32 %854, %855
  %857 = add nsw i32 %853, %856
  %858 = sext i32 %857 to i64
  %859 = getelementptr inbounds double, ptr %852, i64 %858
  %860 = load double, ptr %859, align 8, !tbaa !11
  store double %860, ptr %45, align 8, !tbaa !11
  %861 = load double, ptr %45, align 8, !tbaa !11
  %862 = fcmp oge double %861, 0.000000e+00
  br i1 %862, label %863, label %865

863:                                              ; preds = %850
  %864 = load double, ptr %45, align 8, !tbaa !11
  br label %868

865:                                              ; preds = %850
  %866 = load double, ptr %45, align 8, !tbaa !11
  %867 = fneg double %866
  br label %868

868:                                              ; preds = %865, %863
  %869 = phi double [ %864, %863 ], [ %867, %865 ]
  store double %869, ptr %47, align 8, !tbaa !11
  %870 = load double, ptr %46, align 8, !tbaa !11
  %871 = load double, ptr %47, align 8, !tbaa !11
  %872 = fcmp oge double %870, %871
  br i1 %872, label %873, label %875

873:                                              ; preds = %868
  %874 = load double, ptr %46, align 8, !tbaa !11
  br label %877

875:                                              ; preds = %868
  %876 = load double, ptr %47, align 8, !tbaa !11
  br label %877

877:                                              ; preds = %875, %873
  %878 = phi double [ %874, %873 ], [ %876, %875 ]
  store double %878, ptr %53, align 8, !tbaa !11
  br label %879

879:                                              ; preds = %877
  %880 = load i32, ptr %62, align 4, !tbaa !9
  %881 = add nsw i32 %880, 1
  store i32 %881, ptr %62, align 4, !tbaa !9
  br label %846, !llvm.loop !14

882:                                              ; preds = %846
  br label %943

883:                                              ; preds = %836
  %884 = load ptr, ptr %20, align 8, !tbaa !5
  %885 = load i32, ptr %884, align 4, !tbaa !9
  store i32 %885, ptr %44, align 4, !tbaa !9
  store i32 1, ptr %62, align 4, !tbaa !9
  br label %886

886:                                              ; preds = %939, %883
  %887 = load i32, ptr %62, align 4, !tbaa !9
  %888 = load i32, ptr %44, align 4, !tbaa !9
  %889 = icmp sle i32 %887, %888
  br i1 %889, label %890, label %942

890:                                              ; preds = %886
  %891 = load double, ptr %53, align 8, !tbaa !11
  store double %891, ptr %47, align 8, !tbaa !11
  %892 = load ptr, ptr %28, align 8, !tbaa !5
  %893 = load i32, ptr %62, align 4, !tbaa !9
  %894 = load i32, ptr %60, align 4, !tbaa !9
  %895 = load i32, ptr %39, align 4, !tbaa !9
  %896 = mul nsw i32 %894, %895
  %897 = add nsw i32 %893, %896
  %898 = sext i32 %897 to i64
  %899 = getelementptr inbounds double, ptr %892, i64 %898
  %900 = load double, ptr %899, align 8, !tbaa !11
  store double %900, ptr %45, align 8, !tbaa !11
  %901 = load double, ptr %45, align 8, !tbaa !11
  %902 = fcmp oge double %901, 0.000000e+00
  br i1 %902, label %903, label %905

903:                                              ; preds = %890
  %904 = load double, ptr %45, align 8, !tbaa !11
  br label %908

905:                                              ; preds = %890
  %906 = load double, ptr %45, align 8, !tbaa !11
  %907 = fneg double %906
  br label %908

908:                                              ; preds = %905, %903
  %909 = phi double [ %904, %903 ], [ %907, %905 ]
  %910 = load ptr, ptr %28, align 8, !tbaa !5
  %911 = load i32, ptr %62, align 4, !tbaa !9
  %912 = load i32, ptr %60, align 4, !tbaa !9
  %913 = add nsw i32 %912, 1
  %914 = load i32, ptr %39, align 4, !tbaa !9
  %915 = mul nsw i32 %913, %914
  %916 = add nsw i32 %911, %915
  %917 = sext i32 %916 to i64
  %918 = getelementptr inbounds double, ptr %910, i64 %917
  %919 = load double, ptr %918, align 8, !tbaa !11
  store double %919, ptr %46, align 8, !tbaa !11
  %920 = load double, ptr %46, align 8, !tbaa !11
  %921 = fcmp oge double %920, 0.000000e+00
  br i1 %921, label %922, label %924

922:                                              ; preds = %908
  %923 = load double, ptr %46, align 8, !tbaa !11
  br label %927

924:                                              ; preds = %908
  %925 = load double, ptr %46, align 8, !tbaa !11
  %926 = fneg double %925
  br label %927

927:                                              ; preds = %924, %922
  %928 = phi double [ %923, %922 ], [ %926, %924 ]
  %929 = fadd double %909, %928
  store double %929, ptr %48, align 8, !tbaa !11
  %930 = load double, ptr %47, align 8, !tbaa !11
  %931 = load double, ptr %48, align 8, !tbaa !11
  %932 = fcmp oge double %930, %931
  br i1 %932, label %933, label %935

933:                                              ; preds = %927
  %934 = load double, ptr %47, align 8, !tbaa !11
  br label %937

935:                                              ; preds = %927
  %936 = load double, ptr %48, align 8, !tbaa !11
  br label %937

937:                                              ; preds = %935, %933
  %938 = phi double [ %934, %933 ], [ %936, %935 ]
  store double %938, ptr %53, align 8, !tbaa !11
  br label %939

939:                                              ; preds = %937
  %940 = load i32, ptr %62, align 4, !tbaa !9
  %941 = add nsw i32 %940, 1
  store i32 %941, ptr %62, align 4, !tbaa !9
  br label %886, !llvm.loop !16

942:                                              ; preds = %886
  br label %943

943:                                              ; preds = %942, %882
  %944 = load double, ptr %53, align 8, !tbaa !11
  %945 = load double, ptr %75, align 8, !tbaa !11
  %946 = fcmp olt double %944, %945
  br i1 %946, label %947, label %948

947:                                              ; preds = %943
  br label %1016

948:                                              ; preds = %943
  %949 = load double, ptr %53, align 8, !tbaa !11
  %950 = fdiv double 1.000000e+00, %949
  store double %950, ptr %53, align 8, !tbaa !11
  %951 = load ptr, ptr %26, align 8, !tbaa !5
  %952 = load i32, ptr %60, align 4, !tbaa !9
  %953 = sext i32 %952 to i64
  %954 = getelementptr inbounds double, ptr %951, i64 %953
  %955 = load double, ptr %954, align 8, !tbaa !11
  %956 = fcmp oeq double %955, 0.000000e+00
  br i1 %956, label %957, label %980

957:                                              ; preds = %948
  %958 = load ptr, ptr %20, align 8, !tbaa !5
  %959 = load i32, ptr %958, align 4, !tbaa !9
  store i32 %959, ptr %44, align 4, !tbaa !9
  store i32 1, ptr %62, align 4, !tbaa !9
  br label %960

960:                                              ; preds = %976, %957
  %961 = load i32, ptr %62, align 4, !tbaa !9
  %962 = load i32, ptr %44, align 4, !tbaa !9
  %963 = icmp sle i32 %961, %962
  br i1 %963, label %964, label %979

964:                                              ; preds = %960
  %965 = load double, ptr %53, align 8, !tbaa !11
  %966 = load ptr, ptr %28, align 8, !tbaa !5
  %967 = load i32, ptr %62, align 4, !tbaa !9
  %968 = load i32, ptr %60, align 4, !tbaa !9
  %969 = load i32, ptr %39, align 4, !tbaa !9
  %970 = mul nsw i32 %968, %969
  %971 = add nsw i32 %967, %970
  %972 = sext i32 %971 to i64
  %973 = getelementptr inbounds double, ptr %966, i64 %972
  %974 = load double, ptr %973, align 8, !tbaa !11
  %975 = fmul double %974, %965
  store double %975, ptr %973, align 8, !tbaa !11
  br label %976

976:                                              ; preds = %964
  %977 = load i32, ptr %62, align 4, !tbaa !9
  %978 = add nsw i32 %977, 1
  store i32 %978, ptr %62, align 4, !tbaa !9
  br label %960, !llvm.loop !17

979:                                              ; preds = %960
  br label %1015

980:                                              ; preds = %948
  %981 = load ptr, ptr %20, align 8, !tbaa !5
  %982 = load i32, ptr %981, align 4, !tbaa !9
  store i32 %982, ptr %44, align 4, !tbaa !9
  store i32 1, ptr %62, align 4, !tbaa !9
  br label %983

983:                                              ; preds = %1011, %980
  %984 = load i32, ptr %62, align 4, !tbaa !9
  %985 = load i32, ptr %44, align 4, !tbaa !9
  %986 = icmp sle i32 %984, %985
  br i1 %986, label %987, label %1014

987:                                              ; preds = %983
  %988 = load double, ptr %53, align 8, !tbaa !11
  %989 = load ptr, ptr %28, align 8, !tbaa !5
  %990 = load i32, ptr %62, align 4, !tbaa !9
  %991 = load i32, ptr %60, align 4, !tbaa !9
  %992 = load i32, ptr %39, align 4, !tbaa !9
  %993 = mul nsw i32 %991, %992
  %994 = add nsw i32 %990, %993
  %995 = sext i32 %994 to i64
  %996 = getelementptr inbounds double, ptr %989, i64 %995
  %997 = load double, ptr %996, align 8, !tbaa !11
  %998 = fmul double %997, %988
  store double %998, ptr %996, align 8, !tbaa !11
  %999 = load double, ptr %53, align 8, !tbaa !11
  %1000 = load ptr, ptr %28, align 8, !tbaa !5
  %1001 = load i32, ptr %62, align 4, !tbaa !9
  %1002 = load i32, ptr %60, align 4, !tbaa !9
  %1003 = add nsw i32 %1002, 1
  %1004 = load i32, ptr %39, align 4, !tbaa !9
  %1005 = mul nsw i32 %1003, %1004
  %1006 = add nsw i32 %1001, %1005
  %1007 = sext i32 %1006 to i64
  %1008 = getelementptr inbounds double, ptr %1000, i64 %1007
  %1009 = load double, ptr %1008, align 8, !tbaa !11
  %1010 = fmul double %1009, %999
  store double %1010, ptr %1008, align 8, !tbaa !11
  br label %1011

1011:                                             ; preds = %987
  %1012 = load i32, ptr %62, align 4, !tbaa !9
  %1013 = add nsw i32 %1012, 1
  store i32 %1013, ptr %62, align 4, !tbaa !9
  br label %983, !llvm.loop !18

1014:                                             ; preds = %983
  br label %1015

1015:                                             ; preds = %1014, %979
  br label %1016

1016:                                             ; preds = %1015, %947, %835
  br label %1017

1017:                                             ; preds = %1016
  %1018 = load i32, ptr %60, align 4, !tbaa !9
  %1019 = add nsw i32 %1018, 1
  store i32 %1019, ptr %60, align 4, !tbaa !9
  br label %824, !llvm.loop !19

1020:                                             ; preds = %824
  br label %1021

1021:                                             ; preds = %1020, %803
  %1022 = load i32, ptr %55, align 4, !tbaa !9
  %1023 = icmp ne i32 %1022, 0
  br i1 %1023, label %1024, label %1239

1024:                                             ; preds = %1021
  %1025 = load ptr, ptr %20, align 8, !tbaa !5
  %1026 = load ptr, ptr %32, align 8, !tbaa !5
  %1027 = load i32, ptr %57, align 4, !tbaa !9
  %1028 = sext i32 %1027 to i64
  %1029 = getelementptr inbounds double, ptr %1026, i64 %1028
  %1030 = load ptr, ptr %32, align 8, !tbaa !5
  %1031 = load i32, ptr %69, align 4, !tbaa !9
  %1032 = sext i32 %1031 to i64
  %1033 = getelementptr inbounds double, ptr %1030, i64 %1032
  %1034 = load ptr, ptr %20, align 8, !tbaa !5
  %1035 = load ptr, ptr %30, align 8, !tbaa !5
  %1036 = load i32, ptr %42, align 4, !tbaa !9
  %1037 = sext i32 %1036 to i64
  %1038 = getelementptr inbounds double, ptr %1035, i64 %1037
  %1039 = load ptr, ptr %31, align 8, !tbaa !5
  call void @dggbak_(ptr noundef @.str.7, ptr noundef @.str.15, ptr noundef %1025, ptr noundef %78, ptr noundef %77, ptr noundef %1029, ptr noundef %1033, ptr noundef %1034, ptr noundef %1038, ptr noundef %1039, ptr noundef %51)
  %1040 = load ptr, ptr %20, align 8, !tbaa !5
  %1041 = load i32, ptr %1040, align 4, !tbaa !9
  store i32 %1041, ptr %43, align 4, !tbaa !9
  store i32 1, ptr %60, align 4, !tbaa !9
  br label %1042

1042:                                             ; preds = %1235, %1024
  %1043 = load i32, ptr %60, align 4, !tbaa !9
  %1044 = load i32, ptr %43, align 4, !tbaa !9
  %1045 = icmp sle i32 %1043, %1044
  br i1 %1045, label %1046, label %1238

1046:                                             ; preds = %1042
  %1047 = load ptr, ptr %26, align 8, !tbaa !5
  %1048 = load i32, ptr %60, align 4, !tbaa !9
  %1049 = sext i32 %1048 to i64
  %1050 = getelementptr inbounds double, ptr %1047, i64 %1049
  %1051 = load double, ptr %1050, align 8, !tbaa !11
  %1052 = fcmp olt double %1051, 0.000000e+00
  br i1 %1052, label %1053, label %1054

1053:                                             ; preds = %1046
  br label %1234

1054:                                             ; preds = %1046
  store double 0.000000e+00, ptr %53, align 8, !tbaa !11
  %1055 = load ptr, ptr %26, align 8, !tbaa !5
  %1056 = load i32, ptr %60, align 4, !tbaa !9
  %1057 = sext i32 %1056 to i64
  %1058 = getelementptr inbounds double, ptr %1055, i64 %1057
  %1059 = load double, ptr %1058, align 8, !tbaa !11
  %1060 = fcmp oeq double %1059, 0.000000e+00
  br i1 %1060, label %1061, label %1101

1061:                                             ; preds = %1054
  %1062 = load ptr, ptr %20, align 8, !tbaa !5
  %1063 = load i32, ptr %1062, align 4, !tbaa !9
  store i32 %1063, ptr %44, align 4, !tbaa !9
  store i32 1, ptr %62, align 4, !tbaa !9
  br label %1064

1064:                                             ; preds = %1097, %1061
  %1065 = load i32, ptr %62, align 4, !tbaa !9
  %1066 = load i32, ptr %44, align 4, !tbaa !9
  %1067 = icmp sle i32 %1065, %1066
  br i1 %1067, label %1068, label %1100

1068:                                             ; preds = %1064
  %1069 = load double, ptr %53, align 8, !tbaa !11
  store double %1069, ptr %46, align 8, !tbaa !11
  %1070 = load ptr, ptr %30, align 8, !tbaa !5
  %1071 = load i32, ptr %62, align 4, !tbaa !9
  %1072 = load i32, ptr %60, align 4, !tbaa !9
  %1073 = load i32, ptr %41, align 4, !tbaa !9
  %1074 = mul nsw i32 %1072, %1073
  %1075 = add nsw i32 %1071, %1074
  %1076 = sext i32 %1075 to i64
  %1077 = getelementptr inbounds double, ptr %1070, i64 %1076
  %1078 = load double, ptr %1077, align 8, !tbaa !11
  store double %1078, ptr %45, align 8, !tbaa !11
  %1079 = load double, ptr %45, align 8, !tbaa !11
  %1080 = fcmp oge double %1079, 0.000000e+00
  br i1 %1080, label %1081, label %1083

1081:                                             ; preds = %1068
  %1082 = load double, ptr %45, align 8, !tbaa !11
  br label %1086

1083:                                             ; preds = %1068
  %1084 = load double, ptr %45, align 8, !tbaa !11
  %1085 = fneg double %1084
  br label %1086

1086:                                             ; preds = %1083, %1081
  %1087 = phi double [ %1082, %1081 ], [ %1085, %1083 ]
  store double %1087, ptr %47, align 8, !tbaa !11
  %1088 = load double, ptr %46, align 8, !tbaa !11
  %1089 = load double, ptr %47, align 8, !tbaa !11
  %1090 = fcmp oge double %1088, %1089
  br i1 %1090, label %1091, label %1093

1091:                                             ; preds = %1086
  %1092 = load double, ptr %46, align 8, !tbaa !11
  br label %1095

1093:                                             ; preds = %1086
  %1094 = load double, ptr %47, align 8, !tbaa !11
  br label %1095

1095:                                             ; preds = %1093, %1091
  %1096 = phi double [ %1092, %1091 ], [ %1094, %1093 ]
  store double %1096, ptr %53, align 8, !tbaa !11
  br label %1097

1097:                                             ; preds = %1095
  %1098 = load i32, ptr %62, align 4, !tbaa !9
  %1099 = add nsw i32 %1098, 1
  store i32 %1099, ptr %62, align 4, !tbaa !9
  br label %1064, !llvm.loop !20

1100:                                             ; preds = %1064
  br label %1161

1101:                                             ; preds = %1054
  %1102 = load ptr, ptr %20, align 8, !tbaa !5
  %1103 = load i32, ptr %1102, align 4, !tbaa !9
  store i32 %1103, ptr %44, align 4, !tbaa !9
  store i32 1, ptr %62, align 4, !tbaa !9
  br label %1104

1104:                                             ; preds = %1157, %1101
  %1105 = load i32, ptr %62, align 4, !tbaa !9
  %1106 = load i32, ptr %44, align 4, !tbaa !9
  %1107 = icmp sle i32 %1105, %1106
  br i1 %1107, label %1108, label %1160

1108:                                             ; preds = %1104
  %1109 = load double, ptr %53, align 8, !tbaa !11
  store double %1109, ptr %47, align 8, !tbaa !11
  %1110 = load ptr, ptr %30, align 8, !tbaa !5
  %1111 = load i32, ptr %62, align 4, !tbaa !9
  %1112 = load i32, ptr %60, align 4, !tbaa !9
  %1113 = load i32, ptr %41, align 4, !tbaa !9
  %1114 = mul nsw i32 %1112, %1113
  %1115 = add nsw i32 %1111, %1114
  %1116 = sext i32 %1115 to i64
  %1117 = getelementptr inbounds double, ptr %1110, i64 %1116
  %1118 = load double, ptr %1117, align 8, !tbaa !11
  store double %1118, ptr %45, align 8, !tbaa !11
  %1119 = load double, ptr %45, align 8, !tbaa !11
  %1120 = fcmp oge double %1119, 0.000000e+00
  br i1 %1120, label %1121, label %1123

1121:                                             ; preds = %1108
  %1122 = load double, ptr %45, align 8, !tbaa !11
  br label %1126

1123:                                             ; preds = %1108
  %1124 = load double, ptr %45, align 8, !tbaa !11
  %1125 = fneg double %1124
  br label %1126

1126:                                             ; preds = %1123, %1121
  %1127 = phi double [ %1122, %1121 ], [ %1125, %1123 ]
  %1128 = load ptr, ptr %30, align 8, !tbaa !5
  %1129 = load i32, ptr %62, align 4, !tbaa !9
  %1130 = load i32, ptr %60, align 4, !tbaa !9
  %1131 = add nsw i32 %1130, 1
  %1132 = load i32, ptr %41, align 4, !tbaa !9
  %1133 = mul nsw i32 %1131, %1132
  %1134 = add nsw i32 %1129, %1133
  %1135 = sext i32 %1134 to i64
  %1136 = getelementptr inbounds double, ptr %1128, i64 %1135
  %1137 = load double, ptr %1136, align 8, !tbaa !11
  store double %1137, ptr %46, align 8, !tbaa !11
  %1138 = load double, ptr %46, align 8, !tbaa !11
  %1139 = fcmp oge double %1138, 0.000000e+00
  br i1 %1139, label %1140, label %1142

1140:                                             ; preds = %1126
  %1141 = load double, ptr %46, align 8, !tbaa !11
  br label %1145

1142:                                             ; preds = %1126
  %1143 = load double, ptr %46, align 8, !tbaa !11
  %1144 = fneg double %1143
  br label %1145

1145:                                             ; preds = %1142, %1140
  %1146 = phi double [ %1141, %1140 ], [ %1144, %1142 ]
  %1147 = fadd double %1127, %1146
  store double %1147, ptr %48, align 8, !tbaa !11
  %1148 = load double, ptr %47, align 8, !tbaa !11
  %1149 = load double, ptr %48, align 8, !tbaa !11
  %1150 = fcmp oge double %1148, %1149
  br i1 %1150, label %1151, label %1153

1151:                                             ; preds = %1145
  %1152 = load double, ptr %47, align 8, !tbaa !11
  br label %1155

1153:                                             ; preds = %1145
  %1154 = load double, ptr %48, align 8, !tbaa !11
  br label %1155

1155:                                             ; preds = %1153, %1151
  %1156 = phi double [ %1152, %1151 ], [ %1154, %1153 ]
  store double %1156, ptr %53, align 8, !tbaa !11
  br label %1157

1157:                                             ; preds = %1155
  %1158 = load i32, ptr %62, align 4, !tbaa !9
  %1159 = add nsw i32 %1158, 1
  store i32 %1159, ptr %62, align 4, !tbaa !9
  br label %1104, !llvm.loop !21

1160:                                             ; preds = %1104
  br label %1161

1161:                                             ; preds = %1160, %1100
  %1162 = load double, ptr %53, align 8, !tbaa !11
  %1163 = load double, ptr %75, align 8, !tbaa !11
  %1164 = fcmp olt double %1162, %1163
  br i1 %1164, label %1165, label %1166

1165:                                             ; preds = %1161
  br label %1234

1166:                                             ; preds = %1161
  %1167 = load double, ptr %53, align 8, !tbaa !11
  %1168 = fdiv double 1.000000e+00, %1167
  store double %1168, ptr %53, align 8, !tbaa !11
  %1169 = load ptr, ptr %26, align 8, !tbaa !5
  %1170 = load i32, ptr %60, align 4, !tbaa !9
  %1171 = sext i32 %1170 to i64
  %1172 = getelementptr inbounds double, ptr %1169, i64 %1171
  %1173 = load double, ptr %1172, align 8, !tbaa !11
  %1174 = fcmp oeq double %1173, 0.000000e+00
  br i1 %1174, label %1175, label %1198

1175:                                             ; preds = %1166
  %1176 = load ptr, ptr %20, align 8, !tbaa !5
  %1177 = load i32, ptr %1176, align 4, !tbaa !9
  store i32 %1177, ptr %44, align 4, !tbaa !9
  store i32 1, ptr %62, align 4, !tbaa !9
  br label %1178

1178:                                             ; preds = %1194, %1175
  %1179 = load i32, ptr %62, align 4, !tbaa !9
  %1180 = load i32, ptr %44, align 4, !tbaa !9
  %1181 = icmp sle i32 %1179, %1180
  br i1 %1181, label %1182, label %1197

1182:                                             ; preds = %1178
  %1183 = load double, ptr %53, align 8, !tbaa !11
  %1184 = load ptr, ptr %30, align 8, !tbaa !5
  %1185 = load i32, ptr %62, align 4, !tbaa !9
  %1186 = load i32, ptr %60, align 4, !tbaa !9
  %1187 = load i32, ptr %41, align 4, !tbaa !9
  %1188 = mul nsw i32 %1186, %1187
  %1189 = add nsw i32 %1185, %1188
  %1190 = sext i32 %1189 to i64
  %1191 = getelementptr inbounds double, ptr %1184, i64 %1190
  %1192 = load double, ptr %1191, align 8, !tbaa !11
  %1193 = fmul double %1192, %1183
  store double %1193, ptr %1191, align 8, !tbaa !11
  br label %1194

1194:                                             ; preds = %1182
  %1195 = load i32, ptr %62, align 4, !tbaa !9
  %1196 = add nsw i32 %1195, 1
  store i32 %1196, ptr %62, align 4, !tbaa !9
  br label %1178, !llvm.loop !22

1197:                                             ; preds = %1178
  br label %1233

1198:                                             ; preds = %1166
  %1199 = load ptr, ptr %20, align 8, !tbaa !5
  %1200 = load i32, ptr %1199, align 4, !tbaa !9
  store i32 %1200, ptr %44, align 4, !tbaa !9
  store i32 1, ptr %62, align 4, !tbaa !9
  br label %1201

1201:                                             ; preds = %1229, %1198
  %1202 = load i32, ptr %62, align 4, !tbaa !9
  %1203 = load i32, ptr %44, align 4, !tbaa !9
  %1204 = icmp sle i32 %1202, %1203
  br i1 %1204, label %1205, label %1232

1205:                                             ; preds = %1201
  %1206 = load double, ptr %53, align 8, !tbaa !11
  %1207 = load ptr, ptr %30, align 8, !tbaa !5
  %1208 = load i32, ptr %62, align 4, !tbaa !9
  %1209 = load i32, ptr %60, align 4, !tbaa !9
  %1210 = load i32, ptr %41, align 4, !tbaa !9
  %1211 = mul nsw i32 %1209, %1210
  %1212 = add nsw i32 %1208, %1211
  %1213 = sext i32 %1212 to i64
  %1214 = getelementptr inbounds double, ptr %1207, i64 %1213
  %1215 = load double, ptr %1214, align 8, !tbaa !11
  %1216 = fmul double %1215, %1206
  store double %1216, ptr %1214, align 8, !tbaa !11
  %1217 = load double, ptr %53, align 8, !tbaa !11
  %1218 = load ptr, ptr %30, align 8, !tbaa !5
  %1219 = load i32, ptr %62, align 4, !tbaa !9
  %1220 = load i32, ptr %60, align 4, !tbaa !9
  %1221 = add nsw i32 %1220, 1
  %1222 = load i32, ptr %41, align 4, !tbaa !9
  %1223 = mul nsw i32 %1221, %1222
  %1224 = add nsw i32 %1219, %1223
  %1225 = sext i32 %1224 to i64
  %1226 = getelementptr inbounds double, ptr %1218, i64 %1225
  %1227 = load double, ptr %1226, align 8, !tbaa !11
  %1228 = fmul double %1227, %1217
  store double %1228, ptr %1226, align 8, !tbaa !11
  br label %1229

1229:                                             ; preds = %1205
  %1230 = load i32, ptr %62, align 4, !tbaa !9
  %1231 = add nsw i32 %1230, 1
  store i32 %1231, ptr %62, align 4, !tbaa !9
  br label %1201, !llvm.loop !23

1232:                                             ; preds = %1201
  br label %1233

1233:                                             ; preds = %1232, %1197
  br label %1234

1234:                                             ; preds = %1233, %1165, %1053
  br label %1235

1235:                                             ; preds = %1234
  %1236 = load i32, ptr %60, align 4, !tbaa !9
  %1237 = add nsw i32 %1236, 1
  store i32 %1237, ptr %60, align 4, !tbaa !9
  br label %1042, !llvm.loop !24

1238:                                             ; preds = %1042
  br label %1239

1239:                                             ; preds = %1238, %1021
  br label %1240

1240:                                             ; preds = %1239, %751
  br label %1241

1241:                                             ; preds = %1240, %798, %750
  %1242 = load i32, ptr %63, align 4, !tbaa !9
  %1243 = icmp ne i32 %1242, 0
  br i1 %1243, label %1244, label %1253

1244:                                             ; preds = %1241
  %1245 = load ptr, ptr %20, align 8, !tbaa !5
  %1246 = load ptr, ptr %25, align 8, !tbaa !5
  %1247 = getelementptr inbounds double, ptr %1246, i64 1
  %1248 = load ptr, ptr %20, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.10, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %71, ptr noundef %49, ptr noundef %1245, ptr noundef @c__1, ptr noundef %1247, ptr noundef %1248, ptr noundef %51)
  %1249 = load ptr, ptr %20, align 8, !tbaa !5
  %1250 = load ptr, ptr %26, align 8, !tbaa !5
  %1251 = getelementptr inbounds double, ptr %1250, i64 1
  %1252 = load ptr, ptr %20, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.10, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %71, ptr noundef %49, ptr noundef %1249, ptr noundef @c__1, ptr noundef %1251, ptr noundef %1252, ptr noundef %51)
  br label %1253

1253:                                             ; preds = %1244, %1241
  %1254 = load i32, ptr %64, align 4, !tbaa !9
  %1255 = icmp ne i32 %1254, 0
  br i1 %1255, label %1256, label %1261

1256:                                             ; preds = %1253
  %1257 = load ptr, ptr %20, align 8, !tbaa !5
  %1258 = load ptr, ptr %27, align 8, !tbaa !5
  %1259 = getelementptr inbounds double, ptr %1258, i64 1
  %1260 = load ptr, ptr %20, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.10, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %72, ptr noundef %50, ptr noundef %1257, ptr noundef @c__1, ptr noundef %1259, ptr noundef %1260, ptr noundef %51)
  br label %1261

1261:                                             ; preds = %1256, %1253
  %1262 = load i32, ptr %74, align 4, !tbaa !9
  %1263 = sitofp i32 %1262 to double
  %1264 = load ptr, ptr %32, align 8, !tbaa !5
  %1265 = getelementptr inbounds double, ptr %1264, i64 1
  store double %1263, ptr %1265, align 8, !tbaa !11
  store i32 1, ptr %81, align 4
  br label %1266

1266:                                             ; preds = %1261, %351, %345, %337
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 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 4, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #4
  ret void
}

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

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

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

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

declare double @dlamch_(ptr noundef) #2

declare void @dlabad_(ptr noundef, ptr noundef) #2

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

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

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

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

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

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

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

declare void @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 void @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 void @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 void @dggbak_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

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


; 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 i32, align 4
@.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__0 = external hidden global i32, align 4
@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@c_n1 = external hidden global i32, align 4
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [5 x i8], align 1
@c_b36 = external hidden global double, align 8
@c_b37 = external hidden global double, align 8
@.str.14 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @dggev_(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 i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca double, align 8
  %21 = alloca double, align 8
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca [1 x i32], align 4
  %27 = alloca [1 x i8], align 1
  %28 = alloca double, align 8
  %29 = alloca double, align 8
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #5
  call void @llvm.lifetime.start.p0(i64 4, 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 4, ptr nonnull %22) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %25) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %27) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %32) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %33) #5
  %34 = load i32, ptr %4, align 4, !tbaa !5
  %narrow = xor i32 %34, -1
  %35 = sext i32 %narrow to i64
  %36 = getelementptr inbounds double, ptr %3, i64 %35
  %37 = load i32, ptr %6, align 4, !tbaa !5
  %narrow462 = xor i32 %37, -1
  %38 = sext i32 %narrow462 to i64
  %39 = getelementptr inbounds double, ptr %5, i64 %38
  %40 = getelementptr inbounds i8, ptr %8, i64 -8
  %41 = load i32, ptr %11, align 4, !tbaa !5
  %narrow465 = xor i32 %41, -1
  %42 = sext i32 %narrow465 to i64
  %43 = getelementptr inbounds double, ptr %10, i64 %42
  %44 = load i32, ptr %13, align 4, !tbaa !5
  %narrow466 = xor i32 %44, -1
  %45 = sext i32 %narrow466 to i64
  %46 = getelementptr inbounds double, ptr %12, i64 %45
  %47 = getelementptr inbounds i8, ptr %14, i64 -8
  %48 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #5
  %.not = icmp eq i32 %48, 0
  br i1 %.not, label %49, label %.thread639

49:                                               ; preds = %17
  %50 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #5
  %.not454 = icmp ne i32 %50, 0
  %51 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #5
  %.not455 = icmp eq i32 %51, 0
  br i1 %.not455, label %54, label %.thread

.thread639:                                       ; preds = %17
  %52 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #5
  %.not455640 = icmp eq i32 %52, 0
  br i1 %.not455640, label %.thread645, label %.thread.thread

.thread645:                                       ; preds = %.thread639
  %53 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #5
  store i32 0, ptr %16, align 4, !tbaa !5
  br label %56

.thread.thread:                                   ; preds = %.thread639
  store i32 0, ptr %16, align 4, !tbaa !5
  br label %.thread487

54:                                               ; preds = %49
  %55 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #5
  store i32 0, ptr %16, align 4, !tbaa !5
  br i1 %.not454, label %56, label %.thread499.sink.split

.thread:                                          ; preds = %49
  store i32 0, ptr %16, align 4, !tbaa !5
  br i1 %.not454, label %.thread487, label %.thread499.sink.split

56:                                               ; preds = %.thread645, %54
  %57 = phi i32 [ %53, %.thread645 ], [ %55, %54 ]
  %.not456.not = icmp eq i32 %57, 0
  br i1 %.not456.not, label %.thread499.sink.split, label %.thread487

.thread487:                                       ; preds = %.thread.thread, %.thread, %56
  %.not455641 = phi i1 [ true, %56 ], [ false, %.thread ], [ false, %.thread.thread ]
  %58 = phi i1 [ %.not, %56 ], [ %.not454, %.thread ], [ false, %.thread.thread ]
  %59 = phi i1 [ true, %56 ], [ %.not454, %.thread ], [ false, %.thread.thread ]
  %.in = load i32, ptr %15, align 4, !tbaa !5
  %60 = icmp eq i32 %.in, -1
  %61 = load i32, ptr %2, align 4, !tbaa !5
  %62 = icmp slt i32 %61, 0
  br i1 %62, label %.thread499.sink.split, label %63

63:                                               ; preds = %.thread487
  %64 = load i32, ptr %4, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %61, i32 1)
  %65 = icmp slt i32 %64, %spec.select
  br i1 %65, label %.thread499.sink.split, label %66

66:                                               ; preds = %63
  %67 = load i32, ptr %6, align 4, !tbaa !5
  %68 = icmp slt i32 %67, %spec.select
  br i1 %68, label %.thread499.sink.split, label %69

69:                                               ; preds = %66
  %70 = load i32, ptr %11, align 4, !tbaa !5
  %71 = icmp slt i32 %70, 1
  %72 = icmp ult i32 %70, %61
  %or.cond521 = and i1 %58, %72
  %or.cond523 = select i1 %71, i1 true, i1 %or.cond521
  br i1 %or.cond523, label %.thread499.sink.split, label %73

73:                                               ; preds = %69
  %74 = load i32, ptr %13, align 4, !tbaa !5
  %75 = icmp slt i32 %74, 1
  %76 = icmp ult i32 %74, %61
  %or.cond522 = and i1 %.not455641, %76
  %or.cond524 = or i1 %75, %or.cond522
  br i1 %or.cond524, label %.thread499.sink.split, label %77

77:                                               ; preds = %73
  %78 = shl i32 %61, 3
  %79 = tail call i32 @llvm.smax.i32(i32 %78, i32 1)
  %80 = tail call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef nonnull %2, ptr noundef nonnull @c__0, i32 noundef 6, i32 noundef 1) #5
  %81 = add nsw i32 %80, 7
  %82 = mul nsw i32 %81, %61
  %83 = tail call i32 @llvm.smax.i32(i32 %82, i32 1)
  store i32 %83, ptr %18, align 4, !tbaa !5
  %84 = load i32, ptr %2, align 4, !tbaa !5
  %85 = tail call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef nonnull %2, ptr noundef nonnull @c__0, i32 noundef 6, i32 noundef 1) #5
  %86 = add nsw i32 %85, 7
  %87 = mul nsw i32 %86, %84
  store i32 %87, ptr %19, align 4, !tbaa !5
  %88 = tail call i32 @llvm.smax.i32(i32 %83, i32 %87)
  br i1 %58, label %89, label %95

89:                                               ; preds = %77
  store i32 %88, ptr %18, align 4, !tbaa !5
  %90 = load i32, ptr %2, align 4, !tbaa !5
  %91 = tail call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef nonnull %2, ptr noundef nonnull @c_n1, i32 noundef 6, i32 noundef 1) #5
  %92 = add nsw i32 %91, 7
  %93 = mul nsw i32 %92, %90
  store i32 %93, ptr %19, align 4, !tbaa !5
  %94 = tail call i32 @llvm.smax.i32(i32 %88, i32 %93)
  br label %95

95:                                               ; preds = %89, %77
  %.0 = phi i32 [ %94, %89 ], [ %88, %77 ]
  %96 = uitofp nneg i32 %.0 to double
  store double %96, ptr %14, align 8, !tbaa !9
  %97 = load i32, ptr %15, align 4, !tbaa !5
  %98 = icmp sge i32 %97, %79
  %or.cond = select i1 %98, i1 true, i1 %60
  br i1 %or.cond, label %.thread491, label %.thread499.sink.split

.thread491:                                       ; preds = %95
  %.pr495.pr = load i32, ptr %16, align 4, !tbaa !5
  %.not460 = icmp eq i32 %.pr495.pr, 0
  br i1 %.not460, label %102, label %.thread499

.thread499.sink.split:                            ; preds = %95, %73, %69, %66, %63, %.thread487, %56, %54, %.thread
  %.sink = phi i32 [ -1, %.thread ], [ -1, %54 ], [ -2, %56 ], [ -3, %.thread487 ], [ -5, %63 ], [ -7, %66 ], [ -12, %69 ], [ -14, %73 ], [ -16, %95 ]
  store i32 %.sink, ptr %16, align 4, !tbaa !5
  br label %.thread499

.thread499:                                       ; preds = %.thread499.sink.split, %.thread491
  %99 = phi i32 [ %.pr495.pr, %.thread491 ], [ %.sink, %.thread499.sink.split ]
  %100 = sub nsw i32 0, %99
  store i32 %100, ptr %18, align 4, !tbaa !5
  %101 = call i32 @xerbla_(ptr noundef nonnull @.str.6, ptr noundef nonnull %18, i32 noundef 6) #5
  br label %430

102:                                              ; preds = %.thread491
  br i1 %60, label %430, label %103

103:                                              ; preds = %102
  %104 = load i32, ptr %2, align 4, !tbaa !5
  %105 = icmp eq i32 %104, 0
  br i1 %105, label %430, label %106

106:                                              ; preds = %103
  %107 = tail call double @dlamch_(ptr noundef nonnull @.str.7) #5
  %108 = tail call double @dlamch_(ptr noundef nonnull @.str.8) #5
  store double %108, ptr %31, align 8, !tbaa !9
  %109 = fdiv double 1.000000e+00, %108
  store double %109, ptr %28, align 8, !tbaa !9
  call void @dlabad_(ptr noundef nonnull %31, ptr noundef nonnull %28) #5
  %110 = load double, ptr %31, align 8, !tbaa !9
  %111 = call double @sqrt(double noundef %110) #5
  %112 = fdiv double %111, %107
  store double %112, ptr %31, align 8, !tbaa !9
  %113 = fdiv double 1.000000e+00, %112
  store double %113, ptr %28, align 8, !tbaa !9
  %114 = call double @dlange_(ptr noundef nonnull @.str.9, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef nonnull %14) #5
  store double %114, ptr %20, align 8, !tbaa !9
  %115 = fcmp ogt double %114, 0.000000e+00
  %116 = load double, ptr %31, align 8
  %117 = fcmp olt double %114, %116
  %or.cond529 = select i1 %115, i1 %117, i1 false
  br i1 %or.cond529, label %121, label %118

118:                                              ; preds = %106
  %119 = load double, ptr %28, align 8, !tbaa !9
  %120 = fcmp ogt double %114, %119
  br i1 %120, label %121, label %122

121:                                              ; preds = %106, %118
  %storemerge525 = phi double [ %119, %118 ], [ %116, %106 ]
  store double %storemerge525, ptr %29, align 8, !tbaa !9
  call void @dlascl_(ptr noundef nonnull @.str.10, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %20, ptr noundef nonnull %29, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef nonnull %22) #5
  br label %122

122:                                              ; preds = %118, %121
  %.not461506 = phi i1 [ false, %121 ], [ true, %118 ]
  %123 = call double @dlange_(ptr noundef nonnull @.str.9, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %14) #5
  store double %123, ptr %21, align 8, !tbaa !9
  %124 = fcmp ogt double %123, 0.000000e+00
  %125 = load double, ptr %31, align 8
  %126 = fcmp olt double %123, %125
  %or.cond531 = select i1 %124, i1 %126, i1 false
  br i1 %or.cond531, label %130, label %127

127:                                              ; preds = %122
  %128 = load double, ptr %28, align 8, !tbaa !9
  %129 = fcmp ogt double %123, %128
  br i1 %129, label %130, label %131

130:                                              ; preds = %122, %127
  %storemerge526 = phi double [ %128, %127 ], [ %125, %122 ]
  store double %storemerge526, ptr %30, align 8, !tbaa !9
  call void @dlascl_(ptr noundef nonnull @.str.10, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %21, ptr noundef nonnull %30, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %22) #5
  br label %131

131:                                              ; preds = %127, %130
  %.not463511 = phi i1 [ false, %130 ], [ true, %127 ]
  %132 = load i32, ptr %2, align 4, !tbaa !5
  %133 = add nsw i32 %132, 1
  %134 = add nsw i32 %133, %132
  %135 = sext i32 %133 to i64
  %136 = getelementptr inbounds double, ptr %47, i64 %135
  %137 = sext i32 %134 to i64
  %138 = getelementptr inbounds double, ptr %47, i64 %137
  call void @dggbal_(ptr noundef nonnull @.str.7, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %33, ptr noundef nonnull %32, ptr noundef nonnull %14, ptr noundef nonnull %136, ptr noundef nonnull %138, ptr noundef nonnull %22) #5
  %139 = load i32, ptr %32, align 4, !tbaa !5
  %140 = add nsw i32 %139, 1
  %141 = load i32, ptr %33, align 4, !tbaa !5
  %142 = sub i32 %140, %141
  store i32 %142, ptr %24, align 4, !tbaa !5
  br i1 %59, label %143, label %146

143:                                              ; preds = %131
  %144 = load i32, ptr %2, align 4, !tbaa !5
  %reass.sub = sub i32 %144, %141
  %145 = add i32 %reass.sub, 1
  br label %146

146:                                              ; preds = %131, %143
  %storemerge = phi i32 [ %145, %143 ], [ %142, %131 ]
  store i32 %storemerge, ptr %23, align 4, !tbaa !5
  %147 = add nsw i32 %142, %134
  %148 = load i32, ptr %15, align 4, !tbaa !5
  %reass.sub578 = sub i32 %148, %147
  %149 = add i32 %reass.sub578, 1
  store i32 %149, ptr %18, align 4, !tbaa !5
  %150 = add i32 %37, 1
  %151 = mul i32 %141, %150
  %152 = sext i32 %151 to i64
  %153 = getelementptr inbounds double, ptr %39, i64 %152
  %154 = sext i32 %147 to i64
  %155 = getelementptr inbounds double, ptr %47, i64 %154
  call void @dgeqrf_(ptr noundef nonnull %24, ptr noundef nonnull %23, ptr noundef %153, ptr noundef nonnull %6, ptr noundef nonnull %138, ptr noundef nonnull %155, ptr noundef nonnull %18, ptr noundef nonnull %22) #5
  %156 = load i32, ptr %15, align 4, !tbaa !5
  %reass.sub579 = sub i32 %156, %147
  %157 = add i32 %reass.sub579, 1
  store i32 %157, ptr %18, align 4, !tbaa !5
  %158 = load i32, ptr %33, align 4, !tbaa !5
  %159 = mul i32 %158, %150
  %160 = sext i32 %159 to i64
  %161 = getelementptr inbounds double, ptr %39, i64 %160
  %162 = add i32 %34, 1
  %163 = mul i32 %158, %162
  %164 = sext i32 %163 to i64
  %165 = getelementptr inbounds double, ptr %36, i64 %164
  call void @dormqr_(ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.12, ptr noundef nonnull %24, ptr noundef nonnull %23, ptr noundef nonnull %24, ptr noundef %161, ptr noundef nonnull %6, ptr noundef nonnull %138, ptr noundef %165, ptr noundef nonnull %4, ptr noundef nonnull %155, ptr noundef nonnull %18, ptr noundef nonnull %22) #5
  br i1 %58, label %166, label %189

166:                                              ; preds = %146
  call void @dlaset_(ptr noundef nonnull @.str.13, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_b36, ptr noundef nonnull @c_b37, ptr noundef %10, ptr noundef nonnull %11) #5
  %167 = load i32, ptr %24, align 4, !tbaa !5
  %168 = icmp sgt i32 %167, 1
  br i1 %168, label %169, label %181

169:                                              ; preds = %166
  %170 = add nsw i32 %167, -1
  store i32 %170, ptr %18, align 4, !tbaa !5
  store i32 %170, ptr %19, align 4, !tbaa !5
  %171 = load i32, ptr %33, align 4, !tbaa !5
  %172 = add nsw i32 %171, 1
  %173 = mul nsw i32 %171, %37
  %174 = add nsw i32 %172, %173
  %175 = sext i32 %174 to i64
  %176 = getelementptr inbounds double, ptr %39, i64 %175
  %177 = mul nsw i32 %171, %41
  %178 = add nsw i32 %172, %177
  %179 = sext i32 %178 to i64
  %180 = getelementptr inbounds double, ptr %43, i64 %179
  call void @dlacpy_(ptr noundef nonnull @.str.11, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef %176, ptr noundef nonnull %6, ptr noundef %180, ptr noundef nonnull %11) #5
  br label %181

181:                                              ; preds = %169, %166
  %182 = load i32, ptr %15, align 4, !tbaa !5
  %reass.sub580 = sub i32 %182, %147
  %183 = add i32 %reass.sub580, 1
  store i32 %183, ptr %18, align 4, !tbaa !5
  %184 = load i32, ptr %33, align 4, !tbaa !5
  %185 = add i32 %41, 1
  %186 = mul i32 %184, %185
  %187 = sext i32 %186 to i64
  %188 = getelementptr inbounds double, ptr %43, i64 %187
  call void @dorgqr_(ptr noundef nonnull %24, ptr noundef nonnull %24, ptr noundef nonnull %24, ptr noundef %188, ptr noundef nonnull %11, ptr noundef nonnull %138, ptr noundef nonnull %155, ptr noundef nonnull %18, ptr noundef nonnull %22) #5
  br label %189

189:                                              ; preds = %181, %146
  br i1 %.not455641, label %190, label %191

190:                                              ; preds = %189
  call void @dlaset_(ptr noundef nonnull @.str.13, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_b36, ptr noundef nonnull @c_b37, ptr noundef %12, ptr noundef nonnull %13) #5
  br label %191

191:                                              ; preds = %190, %189
  br i1 %59, label %192, label %193

192:                                              ; preds = %191
  call void @dgghrd_(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %33, ptr noundef nonnull %32, 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 %22) #5
  br label %201

193:                                              ; preds = %191
  %194 = load i32, ptr %33, align 4, !tbaa !5
  %195 = mul i32 %194, %162
  %196 = sext i32 %195 to i64
  %197 = getelementptr inbounds double, ptr %36, i64 %196
  %198 = mul i32 %194, %150
  %199 = sext i32 %198 to i64
  %200 = getelementptr inbounds double, ptr %39, i64 %199
  call void @dgghrd_(ptr noundef nonnull @.str, ptr noundef nonnull @.str, ptr noundef nonnull %24, ptr noundef nonnull @c__1, ptr noundef nonnull %24, ptr noundef %197, ptr noundef nonnull %4, ptr noundef %200, ptr noundef nonnull %6, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %22) #5
  br label %201

201:                                              ; preds = %193, %192
  %.485 = phi i8 [ 69, %193 ], [ 83, %192 ]
  store i8 %.485, ptr %27, align 1, !tbaa !11
  %202 = load i32, ptr %15, align 4, !tbaa !5
  %reass.sub581 = sub i32 %202, %134
  %203 = add i32 %reass.sub581, 1
  store i32 %203, ptr %18, align 4, !tbaa !5
  call void @dhgeqz_(ptr noundef nonnull %27, ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %33, ptr noundef nonnull %32, 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 nonnull %138, ptr noundef nonnull %18, ptr noundef nonnull %22) #5
  %204 = load i32, ptr %22, align 4, !tbaa !5
  %.not467 = icmp eq i32 %204, 0
  br i1 %.not467, label %214, label %205

205:                                              ; preds = %201
  %206 = icmp slt i32 %204, 1
  %.pre = load i32, ptr %2, align 4, !tbaa !5
  %.not479 = icmp sgt i32 %204, %.pre
  %or.cond677 = select i1 %206, i1 true, i1 %.not479
  br i1 %or.cond677, label %207, label %.loopexit537.sink.split

207:                                              ; preds = %205
  %208 = icmp sle i32 %204, %.pre
  %209 = shl i32 %.pre, 1
  %.not480 = icmp sgt i32 %204, %209
  %or.cond486 = or i1 %208, %.not480
  br i1 %or.cond486, label %212, label %210

210:                                              ; preds = %207
  %211 = sub nsw i32 %204, %.pre
  br label %.loopexit537.sink.split

212:                                              ; preds = %207
  %213 = add nsw i32 %.pre, 1
  br label %.loopexit537.sink.split

214:                                              ; preds = %201
  br i1 %59, label %215, label %.loopexit537

215:                                              ; preds = %214
  br i1 %58, label %216, label %.thread512

216:                                              ; preds = %215
  %. = select i1 %.not455641, i8 66, i8 76
  store i8 %., ptr %27, align 1, !tbaa !11
  call void @dtgevc_(ptr noundef nonnull %27, ptr noundef nonnull @.str.14, ptr noundef nonnull %26, 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 %25, ptr noundef nonnull %138, ptr noundef nonnull %22) #5
  %217 = load i32, ptr %22, align 4, !tbaa !5
  %.not468 = icmp eq i32 %217, 0
  br i1 %.not468, label %222, label %219

.thread512:                                       ; preds = %215
  store i8 82, ptr %27, align 1, !tbaa !11
  call void @dtgevc_(ptr noundef nonnull %27, ptr noundef nonnull @.str.14, ptr noundef nonnull %26, 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 %25, ptr noundef nonnull %138, ptr noundef nonnull %22) #5
  %218 = load i32, ptr %22, align 4, !tbaa !5
  %.not468513 = icmp eq i32 %218, 0
  br i1 %.not468513, label %.thread514, label %219

219:                                              ; preds = %.thread512, %216
  %220 = load i32, ptr %2, align 4, !tbaa !5
  %221 = add nsw i32 %220, 2
  br label %.loopexit537.sink.split

222:                                              ; preds = %216
  call void @dggbak_(ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.11, ptr noundef nonnull %2, ptr noundef nonnull %33, ptr noundef nonnull %32, ptr noundef nonnull %14, ptr noundef nonnull %136, ptr noundef nonnull %2, ptr noundef %10, ptr noundef nonnull %11, ptr noundef nonnull %22) #5
  %223 = load i32, ptr %2, align 4, !tbaa !5
  store i32 %223, ptr %18, align 4, !tbaa !5
  %.not469556 = icmp slt i32 %223, 1
  br i1 %.not469556, label %.thread514, label %.lr.ph558

.lr.ph558:                                        ; preds = %222
  %224 = load double, ptr %31, align 8
  %225 = add nuw i32 %223, 1
  %226 = sext i32 %41 to i64
  %wide.trip.count608 = zext i32 %225 to i64
  %227 = zext nneg i32 %223 to i64
  %228 = shl nsw i64 %226, 3
  %229 = shl nsw i64 %42, 3
  %230 = getelementptr i8, ptr %10, i64 %228
  %231 = getelementptr i8, ptr %230, i64 %229
  %scevgep = getelementptr i8, ptr %231, i64 8
  %232 = shl nuw nsw i64 %wide.trip.count608, 3
  %233 = add nsw i64 %232, -8
  %234 = mul i64 %233, %226
  %235 = getelementptr i8, ptr %10, i64 %234
  %236 = getelementptr i8, ptr %235, i64 %229
  %scevgep687 = getelementptr i8, ptr %236, i64 %232
  %237 = shl nsw i64 %226, 4
  %238 = getelementptr i8, ptr %10, i64 %237
  %239 = getelementptr i8, ptr %238, i64 %229
  %scevgep688 = getelementptr i8, ptr %239, i64 8
  %240 = add nsw i64 %228, 8
  %241 = mul i64 %240, %wide.trip.count608
  %242 = getelementptr i8, ptr %10, i64 %241
  %scevgep689 = getelementptr i8, ptr %242, i64 %229
  %243 = zext nneg i32 %223 to i64
  %244 = zext nneg i32 %223 to i64
  %245 = zext nneg i32 %223 to i64
  %xtraiter = and i64 %244, 1
  %246 = icmp eq i32 %225, 2
  %unroll_iter = and i64 %244, 2147483646
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  %min.iters.check693 = icmp ult i32 %223, 4
  %bound0 = icmp ult ptr %scevgep, %scevgep689
  %bound1 = icmp ult ptr %scevgep688, %scevgep687
  %found.conflict = and i1 %bound0, %bound1
  %stride.check = icmp slt i32 %41, 0
  %247 = or i1 %found.conflict, %stride.check
  %n.vec696 = and i64 %243, 2147483644
  %ind.end697 = or disjoint i64 %n.vec696, 1
  %cmp.n709 = icmp eq i64 %n.vec696, %243
  %248 = and i32 %223, 1
  %lcmp.mod765.not = icmp eq i32 %248, 0
  %min.iters.check = icmp ult i32 %223, 4
  %n.vec = and i64 %227, 2147483644
  %ind.end = or disjoint i64 %n.vec, 1
  %cmp.n = icmp eq i64 %n.vec, %227
  br label %249

249:                                              ; preds = %.lr.ph558, %.loopexit538
  %indvars.iv605 = phi i64 [ 1, %.lr.ph558 ], [ %indvars.iv.next606, %.loopexit538 ]
  %250 = getelementptr inbounds double, ptr %40, i64 %indvars.iv605
  %251 = load double, ptr %250, align 8, !tbaa !9
  %252 = fcmp olt double %251, 0.000000e+00
  br i1 %252, label %.loopexit538, label %253

253:                                              ; preds = %249
  %254 = fcmp oeq double %251, 0.000000e+00
  store i32 %223, ptr %19, align 4, !tbaa !5
  %255 = mul nsw i64 %indvars.iv605, %226
  br i1 %254, label %.lr.ph548, label %.lr.ph

.lr.ph548:                                        ; preds = %253
  %invariant.gep657 = getelementptr double, ptr %43, i64 %255
  br i1 %246, label %.loopexit540.loopexit.unr-lcssa, label %.lr.ph548.new

.lr.ph548.new:                                    ; preds = %.lr.ph548
  %invariant.gep777 = getelementptr i8, ptr %invariant.gep657, i64 8
  br label %256

256:                                              ; preds = %256, %.lr.ph548.new
  %indvars.iv590 = phi i64 [ 1, %.lr.ph548.new ], [ %indvars.iv.next591.1, %256 ]
  %.0431546 = phi double [ 0.000000e+00, %.lr.ph548.new ], [ %268, %256 ]
  %niter = phi i64 [ 0, %.lr.ph548.new ], [ %niter.next.1, %256 ]
  %gep658 = getelementptr double, ptr %invariant.gep657, i64 %indvars.iv590
  %257 = load double, ptr %gep658, align 8, !tbaa !9
  %258 = fcmp oge double %257, 0.000000e+00
  %259 = fneg double %257
  %260 = select i1 %258, double %257, double %259
  %261 = fcmp oge double %.0431546, %260
  %262 = select i1 %261, double %.0431546, double %260
  %gep778 = getelementptr double, ptr %invariant.gep777, i64 %indvars.iv590
  %263 = load double, ptr %gep778, align 8, !tbaa !9
  %264 = fcmp oge double %263, 0.000000e+00
  %265 = fneg double %263
  %266 = select i1 %264, double %263, double %265
  %267 = fcmp oge double %262, %266
  %268 = select i1 %267, double %262, double %266
  %indvars.iv.next591.1 = add nuw nsw i64 %indvars.iv590, 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 %.loopexit540.loopexit.unr-lcssa, label %256, !llvm.loop !12

.lr.ph:                                           ; preds = %253
  %269 = add nuw nsw i64 %indvars.iv605, 1
  %270 = mul nsw i64 %269, %226
  %invariant.gep = getelementptr double, ptr %43, i64 %255
  %invariant.gep655 = getelementptr double, ptr %43, i64 %270
  br label %271

271:                                              ; preds = %.lr.ph, %271
  %indvars.iv = phi i64 [ 1, %.lr.ph ], [ %indvars.iv.next, %271 ]
  %.1432543 = phi double [ 0.000000e+00, %.lr.ph ], [ %282, %271 ]
  %gep = getelementptr double, ptr %invariant.gep, i64 %indvars.iv
  %272 = load double, ptr %gep, align 8, !tbaa !9
  %273 = fcmp oge double %272, 0.000000e+00
  %274 = fneg double %272
  %275 = select i1 %273, double %272, double %274
  %gep656 = getelementptr double, ptr %invariant.gep655, i64 %indvars.iv
  %276 = load double, ptr %gep656, align 8, !tbaa !9
  %277 = fcmp oge double %276, 0.000000e+00
  %278 = fneg double %276
  %279 = select i1 %277, double %276, double %278
  %280 = fadd double %275, %279
  %281 = fcmp oge double %.1432543, %280
  %282 = select i1 %281, double %.1432543, double %280
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count608
  br i1 %exitcond.not, label %.loopexit540, label %271, !llvm.loop !14

.loopexit540.loopexit.unr-lcssa:                  ; preds = %256, %.lr.ph548
  %.lcssa762.ph = phi double [ poison, %.lr.ph548 ], [ %268, %256 ]
  %indvars.iv590.unr = phi i64 [ 1, %.lr.ph548 ], [ %indvars.iv.next591.1, %256 ]
  %.0431546.unr = phi double [ 0.000000e+00, %.lr.ph548 ], [ %268, %256 ]
  br i1 %lcmp.mod.not, label %.loopexit540, label %.loopexit540.loopexit.epilog-lcssa

.loopexit540.loopexit.epilog-lcssa:               ; preds = %.loopexit540.loopexit.unr-lcssa
  %gep658.epil = getelementptr double, ptr %invariant.gep657, i64 %indvars.iv590.unr
  %283 = load double, ptr %gep658.epil, align 8, !tbaa !9
  %284 = fcmp oge double %283, 0.000000e+00
  %285 = fneg double %283
  %286 = select i1 %284, double %283, double %285
  %287 = fcmp oge double %.0431546.unr, %286
  %288 = select i1 %287, double %.0431546.unr, double %286
  br label %.loopexit540

.loopexit540:                                     ; preds = %271, %.loopexit540.loopexit.epilog-lcssa, %.loopexit540.loopexit.unr-lcssa
  %.2433 = phi double [ %.lcssa762.ph, %.loopexit540.loopexit.unr-lcssa ], [ %288, %.loopexit540.loopexit.epilog-lcssa ], [ %282, %271 ]
  %289 = fcmp olt double %.2433, %224
  br i1 %289, label %.loopexit538, label %290

290:                                              ; preds = %.loopexit540
  %291 = fdiv double 1.000000e+00, %.2433
  store i32 %223, ptr %19, align 4, !tbaa !5
  %292 = mul nsw i64 %indvars.iv605, %226
  br i1 %254, label %.lr.ph555, label %.lr.ph552

.lr.ph555:                                        ; preds = %290
  %invariant.gep663 = getelementptr double, ptr %43, i64 %292
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph555
  %broadcast.splatinsert = insertelement <2 x double> poison, double %291, 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
  %293 = getelementptr double, ptr %invariant.gep663, i64 %offset.idx
  %294 = getelementptr i8, ptr %293, i64 16
  %wide.load = load <2 x double>, ptr %293, align 8, !tbaa !9
  %wide.load686 = load <2 x double>, ptr %294, align 8, !tbaa !9
  %295 = fmul <2 x double> %broadcast.splat, %wide.load
  %296 = fmul <2 x double> %broadcast.splat, %wide.load686
  store <2 x double> %295, ptr %293, align 8, !tbaa !9
  store <2 x double> %296, ptr %294, align 8, !tbaa !9
  %index.next = add nuw i64 %index, 4
  %297 = icmp eq i64 %index.next, %n.vec
  br i1 %297, label %middle.block, label %vector.body, !llvm.loop !15

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

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

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %indvars.iv600 = phi i64 [ %indvars.iv.next601, %scalar.ph ], [ %indvars.iv600.ph, %scalar.ph.preheader ]
  %gep664 = getelementptr double, ptr %invariant.gep663, i64 %indvars.iv600
  %298 = load double, ptr %gep664, align 8, !tbaa !9
  %299 = fmul double %291, %298
  store double %299, ptr %gep664, align 8, !tbaa !9
  %indvars.iv.next601 = add nuw nsw i64 %indvars.iv600, 1
  %exitcond604.not = icmp eq i64 %indvars.iv.next601, %wide.trip.count608
  br i1 %exitcond604.not, label %.loopexit538, label %scalar.ph, !llvm.loop !18

.lr.ph552:                                        ; preds = %290
  %300 = add nuw nsw i64 %indvars.iv605, 1
  %301 = mul nsw i64 %300, %226
  %invariant.gep659 = getelementptr double, ptr %43, i64 %292
  %invariant.gep661 = getelementptr double, ptr %43, i64 %301
  %brmerge = select i1 %min.iters.check693, i1 true, i1 %247
  br i1 %brmerge, label %scalar.ph692.preheader, label %vector.ph694

vector.ph694:                                     ; preds = %.lr.ph552
  %broadcast.splatinsert704 = insertelement <2 x double> poison, double %291, i64 0
  %broadcast.splat705 = shufflevector <2 x double> %broadcast.splatinsert704, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body699

vector.body699:                                   ; preds = %vector.body699, %vector.ph694
  %index700 = phi i64 [ 0, %vector.ph694 ], [ %index.next708, %vector.body699 ]
  %offset.idx701 = or disjoint i64 %index700, 1
  %302 = getelementptr double, ptr %invariant.gep659, i64 %offset.idx701
  %303 = getelementptr i8, ptr %302, i64 16
  %wide.load702 = load <2 x double>, ptr %302, align 8, !tbaa !9, !alias.scope !19, !noalias !22
  %wide.load703 = load <2 x double>, ptr %303, align 8, !tbaa !9, !alias.scope !19, !noalias !22
  %304 = fmul <2 x double> %broadcast.splat705, %wide.load702
  %305 = fmul <2 x double> %broadcast.splat705, %wide.load703
  store <2 x double> %304, ptr %302, align 8, !tbaa !9, !alias.scope !19, !noalias !22
  store <2 x double> %305, ptr %303, align 8, !tbaa !9, !alias.scope !19, !noalias !22
  %306 = getelementptr double, ptr %invariant.gep661, i64 %offset.idx701
  %307 = getelementptr i8, ptr %306, i64 16
  %wide.load706 = load <2 x double>, ptr %306, align 8, !tbaa !9, !alias.scope !22
  %wide.load707 = load <2 x double>, ptr %307, align 8, !tbaa !9, !alias.scope !22
  %308 = fmul <2 x double> %broadcast.splat705, %wide.load706
  %309 = fmul <2 x double> %broadcast.splat705, %wide.load707
  store <2 x double> %308, ptr %306, align 8, !tbaa !9, !alias.scope !22
  store <2 x double> %309, ptr %307, align 8, !tbaa !9, !alias.scope !22
  %index.next708 = add nuw i64 %index700, 4
  %310 = icmp eq i64 %index.next708, %n.vec696
  br i1 %310, label %middle.block691, label %vector.body699, !llvm.loop !24

middle.block691:                                  ; preds = %vector.body699
  br i1 %cmp.n709, label %.loopexit538, label %scalar.ph692.preheader

scalar.ph692.preheader:                           ; preds = %.lr.ph552, %middle.block691
  %indvars.iv595.ph = phi i64 [ 1, %.lr.ph552 ], [ %ind.end697, %middle.block691 ]
  br i1 %lcmp.mod765.not, label %scalar.ph692.prol.loopexit, label %scalar.ph692.prol

scalar.ph692.prol:                                ; preds = %scalar.ph692.preheader
  %gep660.prol = getelementptr double, ptr %invariant.gep659, i64 %indvars.iv595.ph
  %311 = load double, ptr %gep660.prol, align 8, !tbaa !9
  %312 = fmul double %291, %311
  store double %312, ptr %gep660.prol, align 8, !tbaa !9
  %gep662.prol = getelementptr double, ptr %invariant.gep661, i64 %indvars.iv595.ph
  %313 = load double, ptr %gep662.prol, align 8, !tbaa !9
  %314 = fmul double %291, %313
  store double %314, ptr %gep662.prol, align 8, !tbaa !9
  %indvars.iv.next596.prol = add nuw nsw i64 %indvars.iv595.ph, 1
  br label %scalar.ph692.prol.loopexit

scalar.ph692.prol.loopexit:                       ; preds = %scalar.ph692.prol, %scalar.ph692.preheader
  %indvars.iv595.unr = phi i64 [ %indvars.iv595.ph, %scalar.ph692.preheader ], [ %indvars.iv.next596.prol, %scalar.ph692.prol ]
  %315 = icmp eq i64 %indvars.iv595.ph, %245
  br i1 %315, label %.loopexit538, label %scalar.ph692

scalar.ph692:                                     ; preds = %scalar.ph692.prol.loopexit, %scalar.ph692
  %indvars.iv595 = phi i64 [ %indvars.iv.next596.1, %scalar.ph692 ], [ %indvars.iv595.unr, %scalar.ph692.prol.loopexit ]
  %gep660 = getelementptr double, ptr %invariant.gep659, i64 %indvars.iv595
  %316 = load double, ptr %gep660, align 8, !tbaa !9
  %317 = fmul double %291, %316
  store double %317, ptr %gep660, align 8, !tbaa !9
  %gep662 = getelementptr double, ptr %invariant.gep661, i64 %indvars.iv595
  %318 = load double, ptr %gep662, align 8, !tbaa !9
  %319 = fmul double %291, %318
  store double %319, ptr %gep662, align 8, !tbaa !9
  %indvars.iv.next596 = add nuw nsw i64 %indvars.iv595, 1
  %gep660.1 = getelementptr double, ptr %invariant.gep659, i64 %indvars.iv.next596
  %320 = load double, ptr %gep660.1, align 8, !tbaa !9
  %321 = fmul double %291, %320
  store double %321, ptr %gep660.1, align 8, !tbaa !9
  %gep662.1 = getelementptr double, ptr %invariant.gep661, i64 %indvars.iv.next596
  %322 = load double, ptr %gep662.1, align 8, !tbaa !9
  %323 = fmul double %291, %322
  store double %323, ptr %gep662.1, align 8, !tbaa !9
  %indvars.iv.next596.1 = add nuw nsw i64 %indvars.iv595, 2
  %exitcond599.not.1 = icmp eq i64 %indvars.iv.next596.1, %wide.trip.count608
  br i1 %exitcond599.not.1, label %.loopexit538, label %scalar.ph692, !llvm.loop !25

.loopexit538:                                     ; preds = %scalar.ph692.prol.loopexit, %scalar.ph692, %scalar.ph, %middle.block691, %middle.block, %249, %.loopexit540
  %indvars.iv.next606 = add nuw nsw i64 %indvars.iv605, 1
  %exitcond609.not = icmp eq i64 %indvars.iv.next606, %wide.trip.count608
  br i1 %exitcond609.not, label %.thread514, label %249, !llvm.loop !26

.thread514:                                       ; preds = %.loopexit538, %222, %.thread512
  br i1 %.not455641, label %324, label %.loopexit537

324:                                              ; preds = %.thread514
  call void @dggbak_(ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.15, ptr noundef nonnull %2, ptr noundef nonnull %33, ptr noundef nonnull %32, ptr noundef nonnull %14, ptr noundef nonnull %136, ptr noundef nonnull %2, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %22) #5
  %325 = load i32, ptr %2, align 4, !tbaa !5
  store i32 %325, ptr %18, align 4, !tbaa !5
  %.not470575 = icmp slt i32 %325, 1
  br i1 %.not470575, label %.loopexit537, label %.lr.ph577

.lr.ph577:                                        ; preds = %324
  %326 = load double, ptr %31, align 8
  %327 = add nuw i32 %325, 1
  %328 = sext i32 %44 to i64
  %wide.trip.count633 = zext i32 %327 to i64
  %329 = zext nneg i32 %325 to i64
  %330 = shl nsw i64 %328, 3
  %331 = shl nsw i64 %45, 3
  %332 = getelementptr i8, ptr %12, i64 %330
  %333 = getelementptr i8, ptr %332, i64 %331
  %scevgep728 = getelementptr i8, ptr %333, i64 8
  %334 = shl nuw nsw i64 %wide.trip.count633, 3
  %335 = add nsw i64 %334, -8
  %336 = mul i64 %335, %328
  %337 = getelementptr i8, ptr %12, i64 %336
  %338 = getelementptr i8, ptr %337, i64 %331
  %scevgep729 = getelementptr i8, ptr %338, i64 %334
  %339 = shl nsw i64 %328, 4
  %340 = getelementptr i8, ptr %12, i64 %339
  %341 = getelementptr i8, ptr %340, i64 %331
  %scevgep730 = getelementptr i8, ptr %341, i64 8
  %342 = add nsw i64 %330, 8
  %343 = mul i64 %342, %wide.trip.count633
  %344 = getelementptr i8, ptr %12, i64 %343
  %scevgep731 = getelementptr i8, ptr %344, i64 %331
  %345 = zext nneg i32 %325 to i64
  %346 = zext nneg i32 %325 to i64
  %347 = zext nneg i32 %325 to i64
  %xtraiter767 = and i64 %346, 1
  %348 = icmp eq i32 %327, 2
  %unroll_iter770 = and i64 %346, 2147483646
  %lcmp.mod768.not = icmp eq i64 %xtraiter767, 0
  %min.iters.check739 = icmp ult i32 %325, 4
  %bound0732 = icmp ult ptr %scevgep728, %scevgep731
  %bound1733 = icmp ult ptr %scevgep730, %scevgep729
  %found.conflict734 = and i1 %bound0732, %bound1733
  %stride.check735 = icmp slt i32 %44, 0
  %349 = or i1 %found.conflict734, %stride.check735
  %n.vec742 = and i64 %345, 2147483644
  %ind.end743 = or disjoint i64 %n.vec742, 1
  %cmp.n755 = icmp eq i64 %n.vec742, %345
  %350 = and i32 %325, 1
  %lcmp.mod773.not = icmp eq i32 %350, 0
  %min.iters.check712 = icmp ult i32 %325, 4
  %n.vec715 = and i64 %329, 2147483644
  %ind.end716 = or disjoint i64 %n.vec715, 1
  %cmp.n726 = icmp eq i64 %n.vec715, %329
  br label %351

351:                                              ; preds = %.lr.ph577, %.loopexit
  %indvars.iv630 = phi i64 [ 1, %.lr.ph577 ], [ %indvars.iv.next631, %.loopexit ]
  %352 = getelementptr inbounds double, ptr %40, i64 %indvars.iv630
  %353 = load double, ptr %352, align 8, !tbaa !9
  %354 = fcmp olt double %353, 0.000000e+00
  br i1 %354, label %.loopexit, label %355

355:                                              ; preds = %351
  %356 = fcmp oeq double %353, 0.000000e+00
  store i32 %325, ptr %19, align 4, !tbaa !5
  %357 = mul nsw i64 %indvars.iv630, %328
  br i1 %356, label %.lr.ph567, label %.lr.ph562

.lr.ph567:                                        ; preds = %355
  %invariant.gep669 = getelementptr double, ptr %46, i64 %357
  br i1 %348, label %.loopexit535.loopexit.unr-lcssa, label %.lr.ph567.new

.lr.ph567.new:                                    ; preds = %.lr.ph567
  %invariant.gep779 = getelementptr i8, ptr %invariant.gep669, i64 8
  br label %358

358:                                              ; preds = %358, %.lr.ph567.new
  %indvars.iv615 = phi i64 [ 1, %.lr.ph567.new ], [ %indvars.iv.next616.1, %358 ]
  %.3434565 = phi double [ 0.000000e+00, %.lr.ph567.new ], [ %370, %358 ]
  %niter771 = phi i64 [ 0, %.lr.ph567.new ], [ %niter771.next.1, %358 ]
  %gep670 = getelementptr double, ptr %invariant.gep669, i64 %indvars.iv615
  %359 = load double, ptr %gep670, align 8, !tbaa !9
  %360 = fcmp oge double %359, 0.000000e+00
  %361 = fneg double %359
  %362 = select i1 %360, double %359, double %361
  %363 = fcmp oge double %.3434565, %362
  %364 = select i1 %363, double %.3434565, double %362
  %gep780 = getelementptr double, ptr %invariant.gep779, i64 %indvars.iv615
  %365 = load double, ptr %gep780, align 8, !tbaa !9
  %366 = fcmp oge double %365, 0.000000e+00
  %367 = fneg double %365
  %368 = select i1 %366, double %365, double %367
  %369 = fcmp oge double %364, %368
  %370 = select i1 %369, double %364, double %368
  %indvars.iv.next616.1 = add nuw nsw i64 %indvars.iv615, 2
  %niter771.next.1 = add i64 %niter771, 2
  %niter771.ncmp.1 = icmp eq i64 %niter771.next.1, %unroll_iter770
  br i1 %niter771.ncmp.1, label %.loopexit535.loopexit.unr-lcssa, label %358, !llvm.loop !27

.lr.ph562:                                        ; preds = %355
  %371 = add nuw nsw i64 %indvars.iv630, 1
  %372 = mul nsw i64 %371, %328
  %invariant.gep665 = getelementptr double, ptr %46, i64 %357
  %invariant.gep667 = getelementptr double, ptr %46, i64 %372
  br label %373

373:                                              ; preds = %.lr.ph562, %373
  %indvars.iv610 = phi i64 [ 1, %.lr.ph562 ], [ %indvars.iv.next611, %373 ]
  %.4435560 = phi double [ 0.000000e+00, %.lr.ph562 ], [ %384, %373 ]
  %gep666 = getelementptr double, ptr %invariant.gep665, i64 %indvars.iv610
  %374 = load double, ptr %gep666, align 8, !tbaa !9
  %375 = fcmp oge double %374, 0.000000e+00
  %376 = fneg double %374
  %377 = select i1 %375, double %374, double %376
  %gep668 = getelementptr double, ptr %invariant.gep667, i64 %indvars.iv610
  %378 = load double, ptr %gep668, align 8, !tbaa !9
  %379 = fcmp oge double %378, 0.000000e+00
  %380 = fneg double %378
  %381 = select i1 %379, double %378, double %380
  %382 = fadd double %377, %381
  %383 = fcmp oge double %.4435560, %382
  %384 = select i1 %383, double %.4435560, double %382
  %indvars.iv.next611 = add nuw nsw i64 %indvars.iv610, 1
  %exitcond614.not = icmp eq i64 %indvars.iv.next611, %wide.trip.count633
  br i1 %exitcond614.not, label %.loopexit535, label %373, !llvm.loop !28

.loopexit535.loopexit.unr-lcssa:                  ; preds = %358, %.lr.ph567
  %.lcssa758.ph = phi double [ poison, %.lr.ph567 ], [ %370, %358 ]
  %indvars.iv615.unr = phi i64 [ 1, %.lr.ph567 ], [ %indvars.iv.next616.1, %358 ]
  %.3434565.unr = phi double [ 0.000000e+00, %.lr.ph567 ], [ %370, %358 ]
  br i1 %lcmp.mod768.not, label %.loopexit535, label %.loopexit535.loopexit.epilog-lcssa

.loopexit535.loopexit.epilog-lcssa:               ; preds = %.loopexit535.loopexit.unr-lcssa
  %gep670.epil = getelementptr double, ptr %invariant.gep669, i64 %indvars.iv615.unr
  %385 = load double, ptr %gep670.epil, align 8, !tbaa !9
  %386 = fcmp oge double %385, 0.000000e+00
  %387 = fneg double %385
  %388 = select i1 %386, double %385, double %387
  %389 = fcmp oge double %.3434565.unr, %388
  %390 = select i1 %389, double %.3434565.unr, double %388
  br label %.loopexit535

.loopexit535:                                     ; preds = %373, %.loopexit535.loopexit.epilog-lcssa, %.loopexit535.loopexit.unr-lcssa
  %.5436 = phi double [ %.lcssa758.ph, %.loopexit535.loopexit.unr-lcssa ], [ %390, %.loopexit535.loopexit.epilog-lcssa ], [ %384, %373 ]
  %391 = fcmp olt double %.5436, %326
  br i1 %391, label %.loopexit, label %392

392:                                              ; preds = %.loopexit535
  %393 = fdiv double 1.000000e+00, %.5436
  store i32 %325, ptr %19, align 4, !tbaa !5
  %394 = mul nsw i64 %indvars.iv630, %328
  br i1 %356, label %.lr.ph574, label %.lr.ph571

.lr.ph574:                                        ; preds = %392
  %invariant.gep675 = getelementptr double, ptr %46, i64 %394
  br i1 %min.iters.check712, label %scalar.ph711.preheader, label %vector.ph713

vector.ph713:                                     ; preds = %.lr.ph574
  %broadcast.splatinsert723 = insertelement <2 x double> poison, double %393, i64 0
  %broadcast.splat724 = shufflevector <2 x double> %broadcast.splatinsert723, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body718

vector.body718:                                   ; preds = %vector.body718, %vector.ph713
  %index719 = phi i64 [ 0, %vector.ph713 ], [ %index.next725, %vector.body718 ]
  %offset.idx720 = or disjoint i64 %index719, 1
  %395 = getelementptr double, ptr %invariant.gep675, i64 %offset.idx720
  %396 = getelementptr i8, ptr %395, i64 16
  %wide.load721 = load <2 x double>, ptr %395, align 8, !tbaa !9
  %wide.load722 = load <2 x double>, ptr %396, align 8, !tbaa !9
  %397 = fmul <2 x double> %broadcast.splat724, %wide.load721
  %398 = fmul <2 x double> %broadcast.splat724, %wide.load722
  store <2 x double> %397, ptr %395, align 8, !tbaa !9
  store <2 x double> %398, ptr %396, align 8, !tbaa !9
  %index.next725 = add nuw i64 %index719, 4
  %399 = icmp eq i64 %index.next725, %n.vec715
  br i1 %399, label %middle.block710, label %vector.body718, !llvm.loop !29

middle.block710:                                  ; preds = %vector.body718
  br i1 %cmp.n726, label %.loopexit, label %scalar.ph711.preheader

scalar.ph711.preheader:                           ; preds = %middle.block710, %.lr.ph574
  %indvars.iv625.ph = phi i64 [ 1, %.lr.ph574 ], [ %ind.end716, %middle.block710 ]
  br label %scalar.ph711

scalar.ph711:                                     ; preds = %scalar.ph711.preheader, %scalar.ph711
  %indvars.iv625 = phi i64 [ %indvars.iv.next626, %scalar.ph711 ], [ %indvars.iv625.ph, %scalar.ph711.preheader ]
  %gep676 = getelementptr double, ptr %invariant.gep675, i64 %indvars.iv625
  %400 = load double, ptr %gep676, align 8, !tbaa !9
  %401 = fmul double %393, %400
  store double %401, ptr %gep676, align 8, !tbaa !9
  %indvars.iv.next626 = add nuw nsw i64 %indvars.iv625, 1
  %exitcond629.not = icmp eq i64 %indvars.iv.next626, %wide.trip.count633
  br i1 %exitcond629.not, label %.loopexit, label %scalar.ph711, !llvm.loop !30

.lr.ph571:                                        ; preds = %392
  %402 = add nuw nsw i64 %indvars.iv630, 1
  %403 = mul nsw i64 %402, %328
  %invariant.gep671 = getelementptr double, ptr %46, i64 %394
  %invariant.gep673 = getelementptr double, ptr %46, i64 %403
  %brmerge781 = select i1 %min.iters.check739, i1 true, i1 %349
  br i1 %brmerge781, label %scalar.ph738.preheader, label %vector.ph740

vector.ph740:                                     ; preds = %.lr.ph571
  %broadcast.splatinsert750 = insertelement <2 x double> poison, double %393, i64 0
  %broadcast.splat751 = shufflevector <2 x double> %broadcast.splatinsert750, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body745

vector.body745:                                   ; preds = %vector.body745, %vector.ph740
  %index746 = phi i64 [ 0, %vector.ph740 ], [ %index.next754, %vector.body745 ]
  %offset.idx747 = or disjoint i64 %index746, 1
  %404 = getelementptr double, ptr %invariant.gep671, i64 %offset.idx747
  %405 = getelementptr i8, ptr %404, i64 16
  %wide.load748 = load <2 x double>, ptr %404, align 8, !tbaa !9, !alias.scope !31, !noalias !34
  %wide.load749 = load <2 x double>, ptr %405, align 8, !tbaa !9, !alias.scope !31, !noalias !34
  %406 = fmul <2 x double> %broadcast.splat751, %wide.load748
  %407 = fmul <2 x double> %broadcast.splat751, %wide.load749
  store <2 x double> %406, ptr %404, align 8, !tbaa !9, !alias.scope !31, !noalias !34
  store <2 x double> %407, ptr %405, align 8, !tbaa !9, !alias.scope !31, !noalias !34
  %408 = getelementptr double, ptr %invariant.gep673, i64 %offset.idx747
  %409 = getelementptr i8, ptr %408, i64 16
  %wide.load752 = load <2 x double>, ptr %408, align 8, !tbaa !9, !alias.scope !34
  %wide.load753 = load <2 x double>, ptr %409, align 8, !tbaa !9, !alias.scope !34
  %410 = fmul <2 x double> %broadcast.splat751, %wide.load752
  %411 = fmul <2 x double> %broadcast.splat751, %wide.load753
  store <2 x double> %410, ptr %408, align 8, !tbaa !9, !alias.scope !34
  store <2 x double> %411, ptr %409, align 8, !tbaa !9, !alias.scope !34
  %index.next754 = add nuw i64 %index746, 4
  %412 = icmp eq i64 %index.next754, %n.vec742
  br i1 %412, label %middle.block737, label %vector.body745, !llvm.loop !36

middle.block737:                                  ; preds = %vector.body745
  br i1 %cmp.n755, label %.loopexit, label %scalar.ph738.preheader

scalar.ph738.preheader:                           ; preds = %.lr.ph571, %middle.block737
  %indvars.iv620.ph = phi i64 [ 1, %.lr.ph571 ], [ %ind.end743, %middle.block737 ]
  br i1 %lcmp.mod773.not, label %scalar.ph738.prol.loopexit, label %scalar.ph738.prol

scalar.ph738.prol:                                ; preds = %scalar.ph738.preheader
  %gep672.prol = getelementptr double, ptr %invariant.gep671, i64 %indvars.iv620.ph
  %413 = load double, ptr %gep672.prol, align 8, !tbaa !9
  %414 = fmul double %393, %413
  store double %414, ptr %gep672.prol, align 8, !tbaa !9
  %gep674.prol = getelementptr double, ptr %invariant.gep673, i64 %indvars.iv620.ph
  %415 = load double, ptr %gep674.prol, align 8, !tbaa !9
  %416 = fmul double %393, %415
  store double %416, ptr %gep674.prol, align 8, !tbaa !9
  %indvars.iv.next621.prol = add nuw nsw i64 %indvars.iv620.ph, 1
  br label %scalar.ph738.prol.loopexit

scalar.ph738.prol.loopexit:                       ; preds = %scalar.ph738.prol, %scalar.ph738.preheader
  %indvars.iv620.unr = phi i64 [ %indvars.iv620.ph, %scalar.ph738.preheader ], [ %indvars.iv.next621.prol, %scalar.ph738.prol ]
  %417 = icmp eq i64 %indvars.iv620.ph, %347
  br i1 %417, label %.loopexit, label %scalar.ph738

scalar.ph738:                                     ; preds = %scalar.ph738.prol.loopexit, %scalar.ph738
  %indvars.iv620 = phi i64 [ %indvars.iv.next621.1, %scalar.ph738 ], [ %indvars.iv620.unr, %scalar.ph738.prol.loopexit ]
  %gep672 = getelementptr double, ptr %invariant.gep671, i64 %indvars.iv620
  %418 = load double, ptr %gep672, align 8, !tbaa !9
  %419 = fmul double %393, %418
  store double %419, ptr %gep672, align 8, !tbaa !9
  %gep674 = getelementptr double, ptr %invariant.gep673, i64 %indvars.iv620
  %420 = load double, ptr %gep674, align 8, !tbaa !9
  %421 = fmul double %393, %420
  store double %421, ptr %gep674, align 8, !tbaa !9
  %indvars.iv.next621 = add nuw nsw i64 %indvars.iv620, 1
  %gep672.1 = getelementptr double, ptr %invariant.gep671, i64 %indvars.iv.next621
  %422 = load double, ptr %gep672.1, align 8, !tbaa !9
  %423 = fmul double %393, %422
  store double %423, ptr %gep672.1, align 8, !tbaa !9
  %gep674.1 = getelementptr double, ptr %invariant.gep673, i64 %indvars.iv.next621
  %424 = load double, ptr %gep674.1, align 8, !tbaa !9
  %425 = fmul double %393, %424
  store double %425, ptr %gep674.1, align 8, !tbaa !9
  %indvars.iv.next621.1 = add nuw nsw i64 %indvars.iv620, 2
  %exitcond624.not.1 = icmp eq i64 %indvars.iv.next621.1, %wide.trip.count633
  br i1 %exitcond624.not.1, label %.loopexit, label %scalar.ph738, !llvm.loop !37

.loopexit:                                        ; preds = %scalar.ph738.prol.loopexit, %scalar.ph738, %scalar.ph711, %middle.block737, %middle.block710, %351, %.loopexit535
  %indvars.iv.next631 = add nuw nsw i64 %indvars.iv630, 1
  %exitcond634.not = icmp eq i64 %indvars.iv.next631, %wide.trip.count633
  br i1 %exitcond634.not, label %.loopexit537, label %351, !llvm.loop !38

.loopexit537.sink.split:                          ; preds = %205, %219, %210, %212
  %.sink678 = phi i32 [ %213, %212 ], [ %211, %210 ], [ %221, %219 ], [ %204, %205 ]
  store i32 %.sink678, ptr %16, align 4, !tbaa !5
  br label %.loopexit537

.loopexit537:                                     ; preds = %.loopexit, %.loopexit537.sink.split, %324, %214, %.thread514
  br i1 %.not461506, label %427, label %426

426:                                              ; preds = %.loopexit537
  call void @dlascl_(ptr noundef nonnull @.str.10, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %29, ptr noundef nonnull %20, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef %7, ptr noundef nonnull %2, ptr noundef nonnull %22) #5
  call void @dlascl_(ptr noundef nonnull @.str.10, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %29, ptr noundef nonnull %20, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef %8, ptr noundef nonnull %2, ptr noundef nonnull %22) #5
  br label %427

427:                                              ; preds = %426, %.loopexit537
  br i1 %.not463511, label %429, label %428

428:                                              ; preds = %427
  call void @dlascl_(ptr noundef nonnull @.str.10, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %30, ptr noundef nonnull %21, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef %9, ptr noundef nonnull %2, ptr noundef nonnull %22) #5
  br label %429

429:                                              ; preds = %428, %427
  store double %96, ptr %14, align 8, !tbaa !9
  br label %430

430:                                              ; preds = %103, %102, %429, %.thread499
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %33) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #5
  ret void
}

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

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

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

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

declare void @dlabad_(ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

declare void @dlascl_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

declare void @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 void @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 void @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 void @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 i32 @llvm.smax.i32(i32, i32) #4

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

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

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

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


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