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

; 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_n1 = external hidden global i32, align 4
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i32, align 4
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [8 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
@c__0 = external hidden global i32, align 4
@.str.10 = external hidden unnamed_addr constant [5 x i8], align 1
@c_b38 = external hidden global double, align 8
@c_b39 = external hidden global double, align 8
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @dggev3_(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 double, align 8
  %74 = alloca i32, align 4
  %75 = alloca i32, align 4
  %76 = alloca i32, align 4
  %77 = alloca i32, align 4
  %78 = alloca double, align 8
  %79 = alloca i32, align 4
  %80 = 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 8, ptr %73) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #4
  call void @llvm.lifetime.start.p0(i64 4, 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 8, ptr %78) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #4
  %81 = load ptr, ptr %22, align 8, !tbaa !5
  %82 = load i32, ptr %81, align 4, !tbaa !9
  store i32 %82, ptr %35, align 4, !tbaa !9
  %83 = load i32, ptr %35, align 4, !tbaa !9
  %84 = mul nsw i32 %83, 1
  %85 = add nsw i32 1, %84
  store i32 %85, ptr %36, align 4, !tbaa !9
  %86 = load i32, ptr %36, align 4, !tbaa !9
  %87 = load ptr, ptr %21, align 8, !tbaa !5
  %88 = sext i32 %86 to i64
  %89 = sub i64 0, %88
  %90 = getelementptr inbounds double, ptr %87, i64 %89
  store ptr %90, ptr %21, align 8, !tbaa !5
  %91 = load ptr, ptr %24, align 8, !tbaa !5
  %92 = load i32, ptr %91, align 4, !tbaa !9
  store i32 %92, ptr %37, align 4, !tbaa !9
  %93 = load i32, ptr %37, align 4, !tbaa !9
  %94 = mul nsw i32 %93, 1
  %95 = add nsw i32 1, %94
  store i32 %95, ptr %38, align 4, !tbaa !9
  %96 = load i32, ptr %38, align 4, !tbaa !9
  %97 = load ptr, ptr %23, align 8, !tbaa !5
  %98 = sext i32 %96 to i64
  %99 = sub i64 0, %98
  %100 = getelementptr inbounds double, ptr %97, i64 %99
  store ptr %100, ptr %23, align 8, !tbaa !5
  %101 = load ptr, ptr %25, align 8, !tbaa !5
  %102 = getelementptr inbounds double, ptr %101, i32 -1
  store ptr %102, ptr %25, align 8, !tbaa !5
  %103 = load ptr, ptr %26, align 8, !tbaa !5
  %104 = getelementptr inbounds double, ptr %103, i32 -1
  store ptr %104, ptr %26, align 8, !tbaa !5
  %105 = load ptr, ptr %27, align 8, !tbaa !5
  %106 = getelementptr inbounds double, ptr %105, i32 -1
  store ptr %106, ptr %27, align 8, !tbaa !5
  %107 = load ptr, ptr %29, align 8, !tbaa !5
  %108 = load i32, ptr %107, align 4, !tbaa !9
  store i32 %108, ptr %39, align 4, !tbaa !9
  %109 = load i32, ptr %39, align 4, !tbaa !9
  %110 = mul nsw i32 %109, 1
  %111 = add nsw i32 1, %110
  store i32 %111, ptr %40, align 4, !tbaa !9
  %112 = load i32, ptr %40, align 4, !tbaa !9
  %113 = load ptr, ptr %28, align 8, !tbaa !5
  %114 = sext i32 %112 to i64
  %115 = sub i64 0, %114
  %116 = getelementptr inbounds double, ptr %113, i64 %115
  store ptr %116, ptr %28, align 8, !tbaa !5
  %117 = load ptr, ptr %31, align 8, !tbaa !5
  %118 = load i32, ptr %117, align 4, !tbaa !9
  store i32 %118, ptr %41, align 4, !tbaa !9
  %119 = load i32, ptr %41, align 4, !tbaa !9
  %120 = mul nsw i32 %119, 1
  %121 = add nsw i32 1, %120
  store i32 %121, ptr %42, align 4, !tbaa !9
  %122 = load i32, ptr %42, align 4, !tbaa !9
  %123 = load ptr, ptr %30, align 8, !tbaa !5
  %124 = sext i32 %122 to i64
  %125 = sub i64 0, %124
  %126 = getelementptr inbounds double, ptr %123, i64 %125
  store ptr %126, ptr %30, align 8, !tbaa !5
  %127 = load ptr, ptr %32, align 8, !tbaa !5
  %128 = getelementptr inbounds double, ptr %127, i32 -1
  store ptr %128, ptr %32, align 8, !tbaa !5
  %129 = load ptr, ptr %18, align 8, !tbaa !5
  %130 = call i32 @lsame_(ptr noundef %129, ptr noundef @.str)
  %131 = icmp ne i32 %130, 0
  br i1 %131, label %132, label %133

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

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

137:                                              ; preds = %133
  store i32 2, ptr %68, align 4, !tbaa !9
  store i32 1, ptr %54, align 4, !tbaa !9
  br label %139

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

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

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

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

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

149:                                              ; preds = %145
  store i32 2, ptr %70, align 4, !tbaa !9
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %151

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

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

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

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

158:                                              ; preds = %155, %152
  %159 = phi i1 [ true, %152 ], [ %157, %155 ]
  %160 = zext i1 %159 to i32
  store i32 %160, ptr %79, align 4, !tbaa !9
  %161 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 0, ptr %161, align 4, !tbaa !9
  %162 = load ptr, ptr %33, align 8, !tbaa !5
  %163 = load i32, ptr %162, align 4, !tbaa !9
  %164 = icmp eq i32 %163, -1
  %165 = zext i1 %164 to i32
  store i32 %165, ptr %75, align 4, !tbaa !9
  %166 = load i32, ptr %68, align 4, !tbaa !9
  %167 = icmp sle i32 %166, 0
  br i1 %167, label %168, label %170

168:                                              ; preds = %158
  %169 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -1, ptr %169, align 4, !tbaa !9
  br label %269

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

173:                                              ; preds = %170
  %174 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -2, ptr %174, align 4, !tbaa !9
  br label %268

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

179:                                              ; preds = %175
  %180 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -3, ptr %180, align 4, !tbaa !9
  br label %267

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

187:                                              ; preds = %181
  br label %191

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

191:                                              ; preds = %188, %187
  %192 = phi i32 [ 1, %187 ], [ %190, %188 ]
  %193 = icmp slt i32 %183, %192
  br i1 %193, label %194, label %196

194:                                              ; preds = %191
  %195 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -5, ptr %195, align 4, !tbaa !9
  br label %266

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

202:                                              ; preds = %196
  br label %206

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

206:                                              ; preds = %203, %202
  %207 = phi i32 [ 1, %202 ], [ %205, %203 ]
  %208 = icmp slt i32 %198, %207
  br i1 %208, label %209, label %211

209:                                              ; preds = %206
  %210 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -7, ptr %210, align 4, !tbaa !9
  br label %265

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

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

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

224:                                              ; preds = %218, %211
  %225 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -12, ptr %225, align 4, !tbaa !9
  br label %264

226:                                              ; preds = %218, %215
  %227 = load ptr, ptr %31, align 8, !tbaa !5
  %228 = load i32, ptr %227, align 4, !tbaa !9
  %229 = icmp slt i32 %228, 1
  br i1 %229, label %239, label %230

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

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

239:                                              ; preds = %233, %226
  %240 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -14, ptr %240, align 4, !tbaa !9
  br label %263

241:                                              ; preds = %233, %230
  store i32 1, ptr %43, align 4, !tbaa !9
  %242 = load ptr, ptr %20, align 8, !tbaa !5
  %243 = load i32, ptr %242, align 4, !tbaa !9
  %244 = shl i32 %243, 3
  store i32 %244, ptr %44, align 4, !tbaa !9
  %245 = load ptr, ptr %33, align 8, !tbaa !5
  %246 = load i32, ptr %245, align 4, !tbaa !9
  %247 = load i32, ptr %43, align 4, !tbaa !9
  %248 = load i32, ptr %44, align 4, !tbaa !9
  %249 = icmp sge i32 %247, %248
  br i1 %249, label %250, label %252

250:                                              ; preds = %241
  %251 = load i32, ptr %43, align 4, !tbaa !9
  br label %254

252:                                              ; preds = %241
  %253 = load i32, ptr %44, align 4, !tbaa !9
  br label %254

254:                                              ; preds = %252, %250
  %255 = phi i32 [ %251, %250 ], [ %253, %252 ]
  %256 = icmp slt i32 %246, %255
  br i1 %256, label %257, label %262

257:                                              ; preds = %254
  %258 = load i32, ptr %75, align 4, !tbaa !9
  %259 = icmp ne i32 %258, 0
  br i1 %259, label %262, label %260

260:                                              ; preds = %257
  %261 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -16, ptr %261, align 4, !tbaa !9
  br label %262

262:                                              ; preds = %260, %257, %254
  br label %263

263:                                              ; preds = %262, %239
  br label %264

264:                                              ; preds = %263, %224
  br label %265

265:                                              ; preds = %264, %209
  br label %266

266:                                              ; preds = %265, %194
  br label %267

267:                                              ; preds = %266, %179
  br label %268

268:                                              ; preds = %267, %173
  br label %269

269:                                              ; preds = %268, %168
  %270 = load ptr, ptr %34, align 8, !tbaa !5
  %271 = load i32, ptr %270, align 4, !tbaa !9
  %272 = icmp eq i32 %271, 0
  br i1 %272, label %273, label %578

273:                                              ; preds = %269
  %274 = load ptr, ptr %20, align 8, !tbaa !5
  %275 = load ptr, ptr %20, align 8, !tbaa !5
  %276 = load ptr, ptr %23, align 8, !tbaa !5
  %277 = load i32, ptr %38, align 4, !tbaa !9
  %278 = sext i32 %277 to i64
  %279 = getelementptr inbounds double, ptr %276, i64 %278
  %280 = load ptr, ptr %24, align 8, !tbaa !5
  %281 = load ptr, ptr %32, align 8, !tbaa !5
  %282 = getelementptr inbounds double, ptr %281, i64 1
  %283 = load ptr, ptr %32, align 8, !tbaa !5
  %284 = getelementptr inbounds double, ptr %283, i64 1
  call void @dgeqrf_(ptr noundef %274, ptr noundef %275, ptr noundef %279, ptr noundef %280, ptr noundef %282, ptr noundef %284, ptr noundef @c_n1, ptr noundef %51)
  store i32 1, ptr %43, align 4, !tbaa !9
  %285 = load ptr, ptr %20, align 8, !tbaa !5
  %286 = load i32, ptr %285, align 4, !tbaa !9
  %287 = shl i32 %286, 3
  store i32 %287, ptr %44, align 4, !tbaa !9
  %288 = load i32, ptr %43, align 4, !tbaa !9
  %289 = load i32, ptr %44, align 4, !tbaa !9
  %290 = icmp sge i32 %288, %289
  br i1 %290, label %291, label %293

291:                                              ; preds = %273
  %292 = load i32, ptr %43, align 4, !tbaa !9
  br label %295

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

295:                                              ; preds = %293, %291
  %296 = phi i32 [ %292, %291 ], [ %294, %293 ]
  store i32 %296, ptr %43, align 4, !tbaa !9
  %297 = load ptr, ptr %20, align 8, !tbaa !5
  %298 = load i32, ptr %297, align 4, !tbaa !9
  %299 = mul nsw i32 %298, 3
  %300 = load ptr, ptr %32, align 8, !tbaa !5
  %301 = getelementptr inbounds double, ptr %300, i64 1
  %302 = load double, ptr %301, align 8, !tbaa !11
  %303 = fptosi double %302 to i32
  %304 = add nsw i32 %299, %303
  store i32 %304, ptr %44, align 4, !tbaa !9
  %305 = load i32, ptr %43, align 4, !tbaa !9
  %306 = load i32, ptr %44, align 4, !tbaa !9
  %307 = icmp sge i32 %305, %306
  br i1 %307, label %308, label %310

308:                                              ; preds = %295
  %309 = load i32, ptr %43, align 4, !tbaa !9
  br label %312

310:                                              ; preds = %295
  %311 = load i32, ptr %44, align 4, !tbaa !9
  br label %312

312:                                              ; preds = %310, %308
  %313 = phi i32 [ %309, %308 ], [ %311, %310 ]
  store i32 %313, ptr %74, align 4, !tbaa !9
  %314 = load ptr, ptr %20, align 8, !tbaa !5
  %315 = load ptr, ptr %20, align 8, !tbaa !5
  %316 = load ptr, ptr %20, align 8, !tbaa !5
  %317 = load ptr, ptr %23, align 8, !tbaa !5
  %318 = load i32, ptr %38, align 4, !tbaa !9
  %319 = sext i32 %318 to i64
  %320 = getelementptr inbounds double, ptr %317, i64 %319
  %321 = load ptr, ptr %24, align 8, !tbaa !5
  %322 = load ptr, ptr %32, align 8, !tbaa !5
  %323 = getelementptr inbounds double, ptr %322, i64 1
  %324 = load ptr, ptr %21, align 8, !tbaa !5
  %325 = load i32, ptr %36, align 4, !tbaa !9
  %326 = sext i32 %325 to i64
  %327 = getelementptr inbounds double, ptr %324, i64 %326
  %328 = load ptr, ptr %22, align 8, !tbaa !5
  %329 = load ptr, ptr %32, align 8, !tbaa !5
  %330 = getelementptr inbounds double, ptr %329, i64 1
  call void @dormqr_(ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef %314, ptr noundef %315, ptr noundef %316, ptr noundef %320, ptr noundef %321, ptr noundef %323, ptr noundef %327, ptr noundef %328, ptr noundef %330, ptr noundef @c_n1, ptr noundef %51)
  %331 = load i32, ptr %74, align 4, !tbaa !9
  store i32 %331, ptr %43, align 4, !tbaa !9
  %332 = load ptr, ptr %20, align 8, !tbaa !5
  %333 = load i32, ptr %332, align 4, !tbaa !9
  %334 = mul nsw i32 %333, 3
  %335 = load ptr, ptr %32, align 8, !tbaa !5
  %336 = getelementptr inbounds double, ptr %335, i64 1
  %337 = load double, ptr %336, align 8, !tbaa !11
  %338 = fptosi double %337 to i32
  %339 = add nsw i32 %334, %338
  store i32 %339, ptr %44, align 4, !tbaa !9
  %340 = load i32, ptr %43, align 4, !tbaa !9
  %341 = load i32, ptr %44, align 4, !tbaa !9
  %342 = icmp sge i32 %340, %341
  br i1 %342, label %343, label %345

343:                                              ; preds = %312
  %344 = load i32, ptr %43, align 4, !tbaa !9
  br label %347

345:                                              ; preds = %312
  %346 = load i32, ptr %44, align 4, !tbaa !9
  br label %347

347:                                              ; preds = %345, %343
  %348 = phi i32 [ %344, %343 ], [ %346, %345 ]
  store i32 %348, ptr %74, align 4, !tbaa !9
  %349 = load i32, ptr %54, align 4, !tbaa !9
  %350 = icmp ne i32 %349, 0
  br i1 %350, label %351, label %382

351:                                              ; preds = %347
  %352 = load ptr, ptr %20, align 8, !tbaa !5
  %353 = load ptr, ptr %20, align 8, !tbaa !5
  %354 = load ptr, ptr %20, align 8, !tbaa !5
  %355 = load ptr, ptr %28, align 8, !tbaa !5
  %356 = load i32, ptr %40, align 4, !tbaa !9
  %357 = sext i32 %356 to i64
  %358 = getelementptr inbounds double, ptr %355, i64 %357
  %359 = load ptr, ptr %29, align 8, !tbaa !5
  %360 = load ptr, ptr %32, align 8, !tbaa !5
  %361 = getelementptr inbounds double, ptr %360, i64 1
  %362 = load ptr, ptr %32, align 8, !tbaa !5
  %363 = getelementptr inbounds double, ptr %362, i64 1
  call void @dorgqr_(ptr noundef %352, ptr noundef %353, ptr noundef %354, ptr noundef %358, ptr noundef %359, ptr noundef %361, ptr noundef %363, ptr noundef @c_n1, ptr noundef %51)
  %364 = load i32, ptr %74, align 4, !tbaa !9
  store i32 %364, ptr %43, align 4, !tbaa !9
  %365 = load ptr, ptr %20, align 8, !tbaa !5
  %366 = load i32, ptr %365, align 4, !tbaa !9
  %367 = mul nsw i32 %366, 3
  %368 = load ptr, ptr %32, align 8, !tbaa !5
  %369 = getelementptr inbounds double, ptr %368, i64 1
  %370 = load double, ptr %369, align 8, !tbaa !11
  %371 = fptosi double %370 to i32
  %372 = add nsw i32 %367, %371
  store i32 %372, ptr %44, align 4, !tbaa !9
  %373 = load i32, ptr %43, align 4, !tbaa !9
  %374 = load i32, ptr %44, align 4, !tbaa !9
  %375 = icmp sge i32 %373, %374
  br i1 %375, label %376, label %378

376:                                              ; preds = %351
  %377 = load i32, ptr %43, align 4, !tbaa !9
  br label %380

378:                                              ; preds = %351
  %379 = load i32, ptr %44, align 4, !tbaa !9
  br label %380

380:                                              ; preds = %378, %376
  %381 = phi i32 [ %377, %376 ], [ %379, %378 ]
  store i32 %381, ptr %74, align 4, !tbaa !9
  br label %382

382:                                              ; preds = %380, %347
  %383 = load i32, ptr %79, align 4, !tbaa !9
  %384 = icmp ne i32 %383, 0
  br i1 %384, label %385, label %480

385:                                              ; preds = %382
  %386 = load ptr, ptr %18, align 8, !tbaa !5
  %387 = load ptr, ptr %19, align 8, !tbaa !5
  %388 = load ptr, ptr %20, align 8, !tbaa !5
  %389 = load ptr, ptr %20, align 8, !tbaa !5
  %390 = load ptr, ptr %21, align 8, !tbaa !5
  %391 = load i32, ptr %36, align 4, !tbaa !9
  %392 = sext i32 %391 to i64
  %393 = getelementptr inbounds double, ptr %390, i64 %392
  %394 = load ptr, ptr %22, align 8, !tbaa !5
  %395 = load ptr, ptr %23, align 8, !tbaa !5
  %396 = load i32, ptr %38, align 4, !tbaa !9
  %397 = sext i32 %396 to i64
  %398 = getelementptr inbounds double, ptr %395, i64 %397
  %399 = load ptr, ptr %24, align 8, !tbaa !5
  %400 = load ptr, ptr %28, align 8, !tbaa !5
  %401 = load i32, ptr %40, align 4, !tbaa !9
  %402 = sext i32 %401 to i64
  %403 = getelementptr inbounds double, ptr %400, i64 %402
  %404 = load ptr, ptr %29, align 8, !tbaa !5
  %405 = load ptr, ptr %30, align 8, !tbaa !5
  %406 = load i32, ptr %42, align 4, !tbaa !9
  %407 = sext i32 %406 to i64
  %408 = getelementptr inbounds double, ptr %405, i64 %407
  %409 = load ptr, ptr %31, align 8, !tbaa !5
  %410 = load ptr, ptr %32, align 8, !tbaa !5
  %411 = getelementptr inbounds double, ptr %410, i64 1
  call void @dgghd3_(ptr noundef %386, ptr noundef %387, ptr noundef %388, ptr noundef @c__1, ptr noundef %389, ptr noundef %393, ptr noundef %394, ptr noundef %398, ptr noundef %399, ptr noundef %403, ptr noundef %404, ptr noundef %408, ptr noundef %409, ptr noundef %411, ptr noundef @c_n1, ptr noundef %51)
  %412 = load i32, ptr %74, align 4, !tbaa !9
  store i32 %412, ptr %43, align 4, !tbaa !9
  %413 = load ptr, ptr %20, align 8, !tbaa !5
  %414 = load i32, ptr %413, align 4, !tbaa !9
  %415 = mul nsw i32 %414, 3
  %416 = load ptr, ptr %32, align 8, !tbaa !5
  %417 = getelementptr inbounds double, ptr %416, i64 1
  %418 = load double, ptr %417, align 8, !tbaa !11
  %419 = fptosi double %418 to i32
  %420 = add nsw i32 %415, %419
  store i32 %420, ptr %44, align 4, !tbaa !9
  %421 = load i32, ptr %43, align 4, !tbaa !9
  %422 = load i32, ptr %44, align 4, !tbaa !9
  %423 = icmp sge i32 %421, %422
  br i1 %423, label %424, label %426

424:                                              ; preds = %385
  %425 = load i32, ptr %43, align 4, !tbaa !9
  br label %428

426:                                              ; preds = %385
  %427 = load i32, ptr %44, align 4, !tbaa !9
  br label %428

428:                                              ; preds = %426, %424
  %429 = phi i32 [ %425, %424 ], [ %427, %426 ]
  store i32 %429, ptr %74, align 4, !tbaa !9
  %430 = load ptr, ptr %18, align 8, !tbaa !5
  %431 = load ptr, ptr %19, align 8, !tbaa !5
  %432 = load ptr, ptr %20, align 8, !tbaa !5
  %433 = load ptr, ptr %20, align 8, !tbaa !5
  %434 = load ptr, ptr %21, align 8, !tbaa !5
  %435 = load i32, ptr %36, align 4, !tbaa !9
  %436 = sext i32 %435 to i64
  %437 = getelementptr inbounds double, ptr %434, i64 %436
  %438 = load ptr, ptr %22, align 8, !tbaa !5
  %439 = load ptr, ptr %23, align 8, !tbaa !5
  %440 = load i32, ptr %38, align 4, !tbaa !9
  %441 = sext i32 %440 to i64
  %442 = getelementptr inbounds double, ptr %439, i64 %441
  %443 = load ptr, ptr %24, align 8, !tbaa !5
  %444 = load ptr, ptr %25, align 8, !tbaa !5
  %445 = getelementptr inbounds double, ptr %444, i64 1
  %446 = load ptr, ptr %26, align 8, !tbaa !5
  %447 = getelementptr inbounds double, ptr %446, i64 1
  %448 = load ptr, ptr %27, align 8, !tbaa !5
  %449 = getelementptr inbounds double, ptr %448, i64 1
  %450 = load ptr, ptr %28, align 8, !tbaa !5
  %451 = load i32, ptr %40, align 4, !tbaa !9
  %452 = sext i32 %451 to i64
  %453 = getelementptr inbounds double, ptr %450, i64 %452
  %454 = load ptr, ptr %29, align 8, !tbaa !5
  %455 = load ptr, ptr %30, align 8, !tbaa !5
  %456 = load i32, ptr %42, align 4, !tbaa !9
  %457 = sext i32 %456 to i64
  %458 = getelementptr inbounds double, ptr %455, i64 %457
  %459 = load ptr, ptr %31, align 8, !tbaa !5
  %460 = load ptr, ptr %32, align 8, !tbaa !5
  %461 = getelementptr inbounds double, ptr %460, i64 1
  call void @dhgeqz_(ptr noundef @.str.4, ptr noundef %430, ptr noundef %431, ptr noundef %432, ptr noundef @c__1, ptr noundef %433, ptr noundef %437, ptr noundef %438, ptr noundef %442, ptr noundef %443, ptr noundef %445, ptr noundef %447, ptr noundef %449, ptr noundef %453, ptr noundef %454, ptr noundef %458, ptr noundef %459, ptr noundef %461, ptr noundef @c_n1, ptr noundef %51)
  %462 = load i32, ptr %74, align 4, !tbaa !9
  store i32 %462, ptr %43, align 4, !tbaa !9
  %463 = load ptr, ptr %20, align 8, !tbaa !5
  %464 = load i32, ptr %463, align 4, !tbaa !9
  %465 = shl i32 %464, 1
  %466 = load ptr, ptr %32, align 8, !tbaa !5
  %467 = getelementptr inbounds double, ptr %466, i64 1
  %468 = load double, ptr %467, align 8, !tbaa !11
  %469 = fptosi double %468 to i32
  %470 = add nsw i32 %465, %469
  store i32 %470, ptr %44, align 4, !tbaa !9
  %471 = load i32, ptr %43, align 4, !tbaa !9
  %472 = load i32, ptr %44, align 4, !tbaa !9
  %473 = icmp sge i32 %471, %472
  br i1 %473, label %474, label %476

474:                                              ; preds = %428
  %475 = load i32, ptr %43, align 4, !tbaa !9
  br label %478

476:                                              ; preds = %428
  %477 = load i32, ptr %44, align 4, !tbaa !9
  br label %478

478:                                              ; preds = %476, %474
  %479 = phi i32 [ %475, %474 ], [ %477, %476 ]
  store i32 %479, ptr %74, align 4, !tbaa !9
  br label %573

480:                                              ; preds = %382
  %481 = load ptr, ptr %20, align 8, !tbaa !5
  %482 = load ptr, ptr %20, align 8, !tbaa !5
  %483 = load ptr, ptr %21, align 8, !tbaa !5
  %484 = load i32, ptr %36, align 4, !tbaa !9
  %485 = sext i32 %484 to i64
  %486 = getelementptr inbounds double, ptr %483, i64 %485
  %487 = load ptr, ptr %22, align 8, !tbaa !5
  %488 = load ptr, ptr %23, align 8, !tbaa !5
  %489 = load i32, ptr %38, align 4, !tbaa !9
  %490 = sext i32 %489 to i64
  %491 = getelementptr inbounds double, ptr %488, i64 %490
  %492 = load ptr, ptr %24, align 8, !tbaa !5
  %493 = load ptr, ptr %28, align 8, !tbaa !5
  %494 = load i32, ptr %40, align 4, !tbaa !9
  %495 = sext i32 %494 to i64
  %496 = getelementptr inbounds double, ptr %493, i64 %495
  %497 = load ptr, ptr %29, align 8, !tbaa !5
  %498 = load ptr, ptr %30, align 8, !tbaa !5
  %499 = load i32, ptr %42, align 4, !tbaa !9
  %500 = sext i32 %499 to i64
  %501 = getelementptr inbounds double, ptr %498, i64 %500
  %502 = load ptr, ptr %31, align 8, !tbaa !5
  %503 = load ptr, ptr %32, align 8, !tbaa !5
  %504 = getelementptr inbounds double, ptr %503, i64 1
  call void @dgghd3_(ptr noundef @.str, ptr noundef @.str, ptr noundef %481, ptr noundef @c__1, ptr noundef %482, ptr noundef %486, ptr noundef %487, ptr noundef %491, ptr noundef %492, ptr noundef %496, ptr noundef %497, ptr noundef %501, ptr noundef %502, ptr noundef %504, ptr noundef @c_n1, ptr noundef %51)
  %505 = load i32, ptr %74, align 4, !tbaa !9
  store i32 %505, ptr %43, align 4, !tbaa !9
  %506 = load ptr, ptr %20, align 8, !tbaa !5
  %507 = load i32, ptr %506, align 4, !tbaa !9
  %508 = mul nsw i32 %507, 3
  %509 = load ptr, ptr %32, align 8, !tbaa !5
  %510 = getelementptr inbounds double, ptr %509, i64 1
  %511 = load double, ptr %510, align 8, !tbaa !11
  %512 = fptosi double %511 to i32
  %513 = add nsw i32 %508, %512
  store i32 %513, ptr %44, align 4, !tbaa !9
  %514 = load i32, ptr %43, align 4, !tbaa !9
  %515 = load i32, ptr %44, align 4, !tbaa !9
  %516 = icmp sge i32 %514, %515
  br i1 %516, label %517, label %519

517:                                              ; preds = %480
  %518 = load i32, ptr %43, align 4, !tbaa !9
  br label %521

519:                                              ; preds = %480
  %520 = load i32, ptr %44, align 4, !tbaa !9
  br label %521

521:                                              ; preds = %519, %517
  %522 = phi i32 [ %518, %517 ], [ %520, %519 ]
  store i32 %522, ptr %74, align 4, !tbaa !9
  %523 = load ptr, ptr %18, align 8, !tbaa !5
  %524 = load ptr, ptr %19, align 8, !tbaa !5
  %525 = load ptr, ptr %20, align 8, !tbaa !5
  %526 = load ptr, ptr %20, align 8, !tbaa !5
  %527 = load ptr, ptr %21, align 8, !tbaa !5
  %528 = load i32, ptr %36, align 4, !tbaa !9
  %529 = sext i32 %528 to i64
  %530 = getelementptr inbounds double, ptr %527, i64 %529
  %531 = load ptr, ptr %22, align 8, !tbaa !5
  %532 = load ptr, ptr %23, align 8, !tbaa !5
  %533 = load i32, ptr %38, align 4, !tbaa !9
  %534 = sext i32 %533 to i64
  %535 = getelementptr inbounds double, ptr %532, i64 %534
  %536 = load ptr, ptr %24, align 8, !tbaa !5
  %537 = load ptr, ptr %25, align 8, !tbaa !5
  %538 = getelementptr inbounds double, ptr %537, i64 1
  %539 = load ptr, ptr %26, align 8, !tbaa !5
  %540 = getelementptr inbounds double, ptr %539, i64 1
  %541 = load ptr, ptr %27, align 8, !tbaa !5
  %542 = getelementptr inbounds double, ptr %541, i64 1
  %543 = load ptr, ptr %28, align 8, !tbaa !5
  %544 = load i32, ptr %40, align 4, !tbaa !9
  %545 = sext i32 %544 to i64
  %546 = getelementptr inbounds double, ptr %543, i64 %545
  %547 = load ptr, ptr %29, align 8, !tbaa !5
  %548 = load ptr, ptr %30, align 8, !tbaa !5
  %549 = load i32, ptr %42, align 4, !tbaa !9
  %550 = sext i32 %549 to i64
  %551 = getelementptr inbounds double, ptr %548, i64 %550
  %552 = load ptr, ptr %31, align 8, !tbaa !5
  %553 = load ptr, ptr %32, align 8, !tbaa !5
  %554 = getelementptr inbounds double, ptr %553, i64 1
  call void @dhgeqz_(ptr noundef @.str.5, ptr noundef %523, ptr noundef %524, ptr noundef %525, ptr noundef @c__1, ptr noundef %526, ptr noundef %530, ptr noundef %531, ptr noundef %535, ptr noundef %536, ptr noundef %538, ptr noundef %540, ptr noundef %542, ptr noundef %546, ptr noundef %547, ptr noundef %551, ptr noundef %552, ptr noundef %554, ptr noundef @c_n1, ptr noundef %51)
  %555 = load i32, ptr %74, align 4, !tbaa !9
  store i32 %555, ptr %43, align 4, !tbaa !9
  %556 = load ptr, ptr %20, align 8, !tbaa !5
  %557 = load i32, ptr %556, align 4, !tbaa !9
  %558 = shl i32 %557, 1
  %559 = load ptr, ptr %32, align 8, !tbaa !5
  %560 = getelementptr inbounds double, ptr %559, i64 1
  %561 = load double, ptr %560, align 8, !tbaa !11
  %562 = fptosi double %561 to i32
  %563 = add nsw i32 %558, %562
  store i32 %563, ptr %44, align 4, !tbaa !9
  %564 = load i32, ptr %43, align 4, !tbaa !9
  %565 = load i32, ptr %44, align 4, !tbaa !9
  %566 = icmp sge i32 %564, %565
  br i1 %566, label %567, label %569

567:                                              ; preds = %521
  %568 = load i32, ptr %43, align 4, !tbaa !9
  br label %571

569:                                              ; preds = %521
  %570 = load i32, ptr %44, align 4, !tbaa !9
  br label %571

571:                                              ; preds = %569, %567
  %572 = phi i32 [ %568, %567 ], [ %570, %569 ]
  store i32 %572, ptr %74, align 4, !tbaa !9
  br label %573

573:                                              ; preds = %571, %478
  %574 = load i32, ptr %74, align 4, !tbaa !9
  %575 = sitofp i32 %574 to double
  %576 = load ptr, ptr %32, align 8, !tbaa !5
  %577 = getelementptr inbounds double, ptr %576, i64 1
  store double %575, ptr %577, align 8, !tbaa !11
  br label %578

578:                                              ; preds = %573, %269
  %579 = load ptr, ptr %34, align 8, !tbaa !5
  %580 = load i32, ptr %579, align 4, !tbaa !9
  %581 = icmp ne i32 %580, 0
  br i1 %581, label %582, label %587

582:                                              ; preds = %578
  %583 = load ptr, ptr %34, align 8, !tbaa !5
  %584 = load i32, ptr %583, align 4, !tbaa !9
  %585 = sub nsw i32 0, %584
  store i32 %585, ptr %43, align 4, !tbaa !9
  %586 = call i32 @xerbla_(ptr noundef @.str.6, ptr noundef %43, i32 noundef 6)
  store i32 1, ptr %80, align 4
  br label %1529

587:                                              ; preds = %578
  %588 = load i32, ptr %75, align 4, !tbaa !9
  %589 = icmp ne i32 %588, 0
  br i1 %589, label %590, label %591

590:                                              ; preds = %587
  store i32 1, ptr %80, align 4
  br label %1529

591:                                              ; preds = %587
  br label %592

592:                                              ; preds = %591
  %593 = load ptr, ptr %20, align 8, !tbaa !5
  %594 = load i32, ptr %593, align 4, !tbaa !9
  %595 = icmp eq i32 %594, 0
  br i1 %595, label %596, label %597

596:                                              ; preds = %592
  store i32 1, ptr %80, align 4
  br label %1529

597:                                              ; preds = %592
  %598 = call double @dlamch_(ptr noundef @.str.7)
  store double %598, ptr %78, align 8, !tbaa !11
  %599 = call double @dlamch_(ptr noundef @.str.4)
  store double %599, ptr %73, align 8, !tbaa !11
  %600 = load double, ptr %73, align 8, !tbaa !11
  %601 = fdiv double 1.000000e+00, %600
  store double %601, ptr %67, align 8, !tbaa !11
  call void @dlabad_(ptr noundef %73, ptr noundef %67)
  %602 = load double, ptr %73, align 8, !tbaa !11
  %603 = call double @sqrt(double noundef %602) #4
  %604 = load double, ptr %78, align 8, !tbaa !11
  %605 = fdiv double %603, %604
  store double %605, ptr %73, align 8, !tbaa !11
  %606 = load double, ptr %73, align 8, !tbaa !11
  %607 = fdiv double 1.000000e+00, %606
  store double %607, ptr %67, align 8, !tbaa !11
  %608 = load ptr, ptr %20, align 8, !tbaa !5
  %609 = load ptr, ptr %20, align 8, !tbaa !5
  %610 = load ptr, ptr %21, align 8, !tbaa !5
  %611 = load i32, ptr %36, align 4, !tbaa !9
  %612 = sext i32 %611 to i64
  %613 = getelementptr inbounds double, ptr %610, i64 %612
  %614 = load ptr, ptr %22, align 8, !tbaa !5
  %615 = load ptr, ptr %32, align 8, !tbaa !5
  %616 = getelementptr inbounds double, ptr %615, i64 1
  %617 = call double @dlange_(ptr noundef @.str.8, ptr noundef %608, ptr noundef %609, ptr noundef %613, ptr noundef %614, ptr noundef %616)
  store double %617, ptr %49, align 8, !tbaa !11
  store i32 0, ptr %63, align 4, !tbaa !9
  %618 = load double, ptr %49, align 8, !tbaa !11
  %619 = fcmp ogt double %618, 0.000000e+00
  br i1 %619, label %620, label %626

620:                                              ; preds = %597
  %621 = load double, ptr %49, align 8, !tbaa !11
  %622 = load double, ptr %73, align 8, !tbaa !11
  %623 = fcmp olt double %621, %622
  br i1 %623, label %624, label %626

624:                                              ; preds = %620
  %625 = load double, ptr %73, align 8, !tbaa !11
  store double %625, ptr %71, align 8, !tbaa !11
  store i32 1, ptr %63, align 4, !tbaa !9
  br label %633

626:                                              ; preds = %620, %597
  %627 = load double, ptr %49, align 8, !tbaa !11
  %628 = load double, ptr %67, align 8, !tbaa !11
  %629 = fcmp ogt double %627, %628
  br i1 %629, label %630, label %632

630:                                              ; preds = %626
  %631 = load double, ptr %67, align 8, !tbaa !11
  store double %631, ptr %71, align 8, !tbaa !11
  store i32 1, ptr %63, align 4, !tbaa !9
  br label %632

632:                                              ; preds = %630, %626
  br label %633

633:                                              ; preds = %632, %624
  %634 = load i32, ptr %63, align 4, !tbaa !9
  %635 = icmp ne i32 %634, 0
  br i1 %635, label %636, label %644

636:                                              ; preds = %633
  %637 = load ptr, ptr %20, align 8, !tbaa !5
  %638 = load ptr, ptr %20, align 8, !tbaa !5
  %639 = load ptr, ptr %21, align 8, !tbaa !5
  %640 = load i32, ptr %36, align 4, !tbaa !9
  %641 = sext i32 %640 to i64
  %642 = getelementptr inbounds double, ptr %639, i64 %641
  %643 = load ptr, ptr %22, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.9, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %49, ptr noundef %71, ptr noundef %637, ptr noundef %638, ptr noundef %642, ptr noundef %643, ptr noundef %51)
  br label %644

644:                                              ; preds = %636, %633
  %645 = load ptr, ptr %20, align 8, !tbaa !5
  %646 = load ptr, ptr %20, align 8, !tbaa !5
  %647 = load ptr, ptr %23, align 8, !tbaa !5
  %648 = load i32, ptr %38, align 4, !tbaa !9
  %649 = sext i32 %648 to i64
  %650 = getelementptr inbounds double, ptr %647, i64 %649
  %651 = load ptr, ptr %24, align 8, !tbaa !5
  %652 = load ptr, ptr %32, align 8, !tbaa !5
  %653 = getelementptr inbounds double, ptr %652, i64 1
  %654 = call double @dlange_(ptr noundef @.str.8, ptr noundef %645, ptr noundef %646, ptr noundef %650, ptr noundef %651, ptr noundef %653)
  store double %654, ptr %50, align 8, !tbaa !11
  store i32 0, ptr %64, align 4, !tbaa !9
  %655 = load double, ptr %50, align 8, !tbaa !11
  %656 = fcmp ogt double %655, 0.000000e+00
  br i1 %656, label %657, label %663

657:                                              ; preds = %644
  %658 = load double, ptr %50, align 8, !tbaa !11
  %659 = load double, ptr %73, align 8, !tbaa !11
  %660 = fcmp olt double %658, %659
  br i1 %660, label %661, label %663

661:                                              ; preds = %657
  %662 = load double, ptr %73, align 8, !tbaa !11
  store double %662, ptr %72, align 8, !tbaa !11
  store i32 1, ptr %64, align 4, !tbaa !9
  br label %670

663:                                              ; preds = %657, %644
  %664 = load double, ptr %50, align 8, !tbaa !11
  %665 = load double, ptr %67, align 8, !tbaa !11
  %666 = fcmp ogt double %664, %665
  br i1 %666, label %667, label %669

667:                                              ; preds = %663
  %668 = load double, ptr %67, align 8, !tbaa !11
  store double %668, ptr %72, align 8, !tbaa !11
  store i32 1, ptr %64, align 4, !tbaa !9
  br label %669

669:                                              ; preds = %667, %663
  br label %670

670:                                              ; preds = %669, %661
  %671 = load i32, ptr %64, align 4, !tbaa !9
  %672 = icmp ne i32 %671, 0
  br i1 %672, label %673, label %681

673:                                              ; preds = %670
  %674 = load ptr, ptr %20, align 8, !tbaa !5
  %675 = load ptr, ptr %20, align 8, !tbaa !5
  %676 = load ptr, ptr %23, align 8, !tbaa !5
  %677 = load i32, ptr %38, align 4, !tbaa !9
  %678 = sext i32 %677 to i64
  %679 = getelementptr inbounds double, ptr %676, i64 %678
  %680 = load ptr, ptr %24, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.9, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %50, ptr noundef %72, ptr noundef %674, ptr noundef %675, ptr noundef %679, ptr noundef %680, ptr noundef %51)
  br label %681

681:                                              ; preds = %673, %670
  store i32 1, ptr %57, align 4, !tbaa !9
  %682 = load ptr, ptr %20, align 8, !tbaa !5
  %683 = load i32, ptr %682, align 4, !tbaa !9
  %684 = add nsw i32 %683, 1
  store i32 %684, ptr %69, align 4, !tbaa !9
  %685 = load i32, ptr %69, align 4, !tbaa !9
  %686 = load ptr, ptr %20, align 8, !tbaa !5
  %687 = load i32, ptr %686, align 4, !tbaa !9
  %688 = add nsw i32 %685, %687
  store i32 %688, ptr %56, align 4, !tbaa !9
  %689 = load ptr, ptr %20, align 8, !tbaa !5
  %690 = load ptr, ptr %21, align 8, !tbaa !5
  %691 = load i32, ptr %36, align 4, !tbaa !9
  %692 = sext i32 %691 to i64
  %693 = getelementptr inbounds double, ptr %690, i64 %692
  %694 = load ptr, ptr %22, align 8, !tbaa !5
  %695 = load ptr, ptr %23, align 8, !tbaa !5
  %696 = load i32, ptr %38, align 4, !tbaa !9
  %697 = sext i32 %696 to i64
  %698 = getelementptr inbounds double, ptr %695, i64 %697
  %699 = load ptr, ptr %24, align 8, !tbaa !5
  %700 = load ptr, ptr %32, align 8, !tbaa !5
  %701 = load i32, ptr %57, align 4, !tbaa !9
  %702 = sext i32 %701 to i64
  %703 = getelementptr inbounds double, ptr %700, i64 %702
  %704 = load ptr, ptr %32, align 8, !tbaa !5
  %705 = load i32, ptr %69, align 4, !tbaa !9
  %706 = sext i32 %705 to i64
  %707 = getelementptr inbounds double, ptr %704, i64 %706
  %708 = load ptr, ptr %32, align 8, !tbaa !5
  %709 = load i32, ptr %56, align 4, !tbaa !9
  %710 = sext i32 %709 to i64
  %711 = getelementptr inbounds double, ptr %708, i64 %710
  call void @dggbal_(ptr noundef @.str.7, ptr noundef %689, ptr noundef %693, ptr noundef %694, ptr noundef %698, ptr noundef %699, ptr noundef %77, ptr noundef %76, ptr noundef %703, ptr noundef %707, ptr noundef %711, ptr noundef %51)
  %712 = load i32, ptr %76, align 4, !tbaa !9
  %713 = add nsw i32 %712, 1
  %714 = load i32, ptr %77, align 4, !tbaa !9
  %715 = sub nsw i32 %713, %714
  store i32 %715, ptr %59, align 4, !tbaa !9
  %716 = load i32, ptr %79, align 4, !tbaa !9
  %717 = icmp ne i32 %716, 0
  br i1 %717, label %718, label %724

718:                                              ; preds = %681
  %719 = load ptr, ptr %20, align 8, !tbaa !5
  %720 = load i32, ptr %719, align 4, !tbaa !9
  %721 = add nsw i32 %720, 1
  %722 = load i32, ptr %77, align 4, !tbaa !9
  %723 = sub nsw i32 %721, %722
  store i32 %723, ptr %58, align 4, !tbaa !9
  br label %726

724:                                              ; preds = %681
  %725 = load i32, ptr %59, align 4, !tbaa !9
  store i32 %725, ptr %58, align 4, !tbaa !9
  br label %726

726:                                              ; preds = %724, %718
  %727 = load i32, ptr %56, align 4, !tbaa !9
  store i32 %727, ptr %52, align 4, !tbaa !9
  %728 = load i32, ptr %52, align 4, !tbaa !9
  %729 = load i32, ptr %59, align 4, !tbaa !9
  %730 = add nsw i32 %728, %729
  store i32 %730, ptr %56, align 4, !tbaa !9
  %731 = load ptr, ptr %33, align 8, !tbaa !5
  %732 = load i32, ptr %731, align 4, !tbaa !9
  %733 = add nsw i32 %732, 1
  %734 = load i32, ptr %56, align 4, !tbaa !9
  %735 = sub nsw i32 %733, %734
  store i32 %735, ptr %43, align 4, !tbaa !9
  %736 = load ptr, ptr %23, align 8, !tbaa !5
  %737 = load i32, ptr %77, align 4, !tbaa !9
  %738 = load i32, ptr %77, align 4, !tbaa !9
  %739 = load i32, ptr %37, align 4, !tbaa !9
  %740 = mul nsw i32 %738, %739
  %741 = add nsw i32 %737, %740
  %742 = sext i32 %741 to i64
  %743 = getelementptr inbounds double, ptr %736, i64 %742
  %744 = load ptr, ptr %24, align 8, !tbaa !5
  %745 = load ptr, ptr %32, align 8, !tbaa !5
  %746 = load i32, ptr %52, align 4, !tbaa !9
  %747 = sext i32 %746 to i64
  %748 = getelementptr inbounds double, ptr %745, i64 %747
  %749 = load ptr, ptr %32, align 8, !tbaa !5
  %750 = load i32, ptr %56, align 4, !tbaa !9
  %751 = sext i32 %750 to i64
  %752 = getelementptr inbounds double, ptr %749, i64 %751
  call void @dgeqrf_(ptr noundef %59, ptr noundef %58, ptr noundef %743, ptr noundef %744, ptr noundef %748, ptr noundef %752, ptr noundef %43, ptr noundef %51)
  %753 = load ptr, ptr %33, align 8, !tbaa !5
  %754 = load i32, ptr %753, align 4, !tbaa !9
  %755 = add nsw i32 %754, 1
  %756 = load i32, ptr %56, align 4, !tbaa !9
  %757 = sub nsw i32 %755, %756
  store i32 %757, ptr %43, align 4, !tbaa !9
  %758 = load ptr, ptr %23, align 8, !tbaa !5
  %759 = load i32, ptr %77, align 4, !tbaa !9
  %760 = load i32, ptr %77, align 4, !tbaa !9
  %761 = load i32, ptr %37, align 4, !tbaa !9
  %762 = mul nsw i32 %760, %761
  %763 = add nsw i32 %759, %762
  %764 = sext i32 %763 to i64
  %765 = getelementptr inbounds double, ptr %758, i64 %764
  %766 = load ptr, ptr %24, align 8, !tbaa !5
  %767 = load ptr, ptr %32, align 8, !tbaa !5
  %768 = load i32, ptr %52, align 4, !tbaa !9
  %769 = sext i32 %768 to i64
  %770 = getelementptr inbounds double, ptr %767, i64 %769
  %771 = load ptr, ptr %21, align 8, !tbaa !5
  %772 = load i32, ptr %77, align 4, !tbaa !9
  %773 = load i32, ptr %77, align 4, !tbaa !9
  %774 = load i32, ptr %35, align 4, !tbaa !9
  %775 = mul nsw i32 %773, %774
  %776 = add nsw i32 %772, %775
  %777 = sext i32 %776 to i64
  %778 = getelementptr inbounds double, ptr %771, i64 %777
  %779 = load ptr, ptr %22, align 8, !tbaa !5
  %780 = load ptr, ptr %32, align 8, !tbaa !5
  %781 = load i32, ptr %56, align 4, !tbaa !9
  %782 = sext i32 %781 to i64
  %783 = getelementptr inbounds double, ptr %780, i64 %782
  call void @dormqr_(ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef %59, ptr noundef %58, ptr noundef %59, ptr noundef %765, ptr noundef %766, ptr noundef %770, ptr noundef %778, ptr noundef %779, ptr noundef %783, ptr noundef %43, ptr noundef %51)
  %784 = load i32, ptr %54, align 4, !tbaa !9
  %785 = icmp ne i32 %784, 0
  br i1 %785, label %786, label %844

786:                                              ; preds = %726
  %787 = load ptr, ptr %20, align 8, !tbaa !5
  %788 = load ptr, ptr %20, align 8, !tbaa !5
  %789 = load ptr, ptr %28, align 8, !tbaa !5
  %790 = load i32, ptr %40, align 4, !tbaa !9
  %791 = sext i32 %790 to i64
  %792 = getelementptr inbounds double, ptr %789, i64 %791
  %793 = load ptr, ptr %29, align 8, !tbaa !5
  call void @dlaset_(ptr noundef @.str.10, ptr noundef %787, ptr noundef %788, ptr noundef @c_b38, ptr noundef @c_b39, ptr noundef %792, ptr noundef %793)
  %794 = load i32, ptr %59, align 4, !tbaa !9
  %795 = icmp sgt i32 %794, 1
  br i1 %795, label %796, label %821

796:                                              ; preds = %786
  %797 = load i32, ptr %59, align 4, !tbaa !9
  %798 = sub nsw i32 %797, 1
  store i32 %798, ptr %43, align 4, !tbaa !9
  %799 = load i32, ptr %59, align 4, !tbaa !9
  %800 = sub nsw i32 %799, 1
  store i32 %800, ptr %44, align 4, !tbaa !9
  %801 = load ptr, ptr %23, align 8, !tbaa !5
  %802 = load i32, ptr %77, align 4, !tbaa !9
  %803 = add nsw i32 %802, 1
  %804 = load i32, ptr %77, align 4, !tbaa !9
  %805 = load i32, ptr %37, align 4, !tbaa !9
  %806 = mul nsw i32 %804, %805
  %807 = add nsw i32 %803, %806
  %808 = sext i32 %807 to i64
  %809 = getelementptr inbounds double, ptr %801, i64 %808
  %810 = load ptr, ptr %24, align 8, !tbaa !5
  %811 = load ptr, ptr %28, align 8, !tbaa !5
  %812 = load i32, ptr %77, align 4, !tbaa !9
  %813 = add nsw i32 %812, 1
  %814 = load i32, ptr %77, align 4, !tbaa !9
  %815 = load i32, ptr %39, align 4, !tbaa !9
  %816 = mul nsw i32 %814, %815
  %817 = add nsw i32 %813, %816
  %818 = sext i32 %817 to i64
  %819 = getelementptr inbounds double, ptr %811, i64 %818
  %820 = load ptr, ptr %29, align 8, !tbaa !5
  call void @dlacpy_(ptr noundef @.str.2, ptr noundef %43, ptr noundef %44, ptr noundef %809, ptr noundef %810, ptr noundef %819, ptr noundef %820)
  br label %821

821:                                              ; preds = %796, %786
  %822 = load ptr, ptr %33, align 8, !tbaa !5
  %823 = load i32, ptr %822, align 4, !tbaa !9
  %824 = add nsw i32 %823, 1
  %825 = load i32, ptr %56, align 4, !tbaa !9
  %826 = sub nsw i32 %824, %825
  store i32 %826, ptr %43, align 4, !tbaa !9
  %827 = load ptr, ptr %28, align 8, !tbaa !5
  %828 = load i32, ptr %77, align 4, !tbaa !9
  %829 = load i32, ptr %77, align 4, !tbaa !9
  %830 = load i32, ptr %39, align 4, !tbaa !9
  %831 = mul nsw i32 %829, %830
  %832 = add nsw i32 %828, %831
  %833 = sext i32 %832 to i64
  %834 = getelementptr inbounds double, ptr %827, i64 %833
  %835 = load ptr, ptr %29, align 8, !tbaa !5
  %836 = load ptr, ptr %32, align 8, !tbaa !5
  %837 = load i32, ptr %52, align 4, !tbaa !9
  %838 = sext i32 %837 to i64
  %839 = getelementptr inbounds double, ptr %836, i64 %838
  %840 = load ptr, ptr %32, align 8, !tbaa !5
  %841 = load i32, ptr %56, align 4, !tbaa !9
  %842 = sext i32 %841 to i64
  %843 = getelementptr inbounds double, ptr %840, i64 %842
  call void @dorgqr_(ptr noundef %59, ptr noundef %59, ptr noundef %59, ptr noundef %834, ptr noundef %835, ptr noundef %839, ptr noundef %843, ptr noundef %43, ptr noundef %51)
  br label %844

844:                                              ; preds = %821, %726
  %845 = load i32, ptr %55, align 4, !tbaa !9
  %846 = icmp ne i32 %845, 0
  br i1 %846, label %847, label %855

847:                                              ; preds = %844
  %848 = load ptr, ptr %20, align 8, !tbaa !5
  %849 = load ptr, ptr %20, align 8, !tbaa !5
  %850 = load ptr, ptr %30, align 8, !tbaa !5
  %851 = load i32, ptr %42, align 4, !tbaa !9
  %852 = sext i32 %851 to i64
  %853 = getelementptr inbounds double, ptr %850, i64 %852
  %854 = load ptr, ptr %31, align 8, !tbaa !5
  call void @dlaset_(ptr noundef @.str.10, ptr noundef %848, ptr noundef %849, ptr noundef @c_b38, ptr noundef @c_b39, ptr noundef %853, ptr noundef %854)
  br label %855

855:                                              ; preds = %847, %844
  %856 = load i32, ptr %79, align 4, !tbaa !9
  %857 = icmp ne i32 %856, 0
  br i1 %857, label %858, label %891

858:                                              ; preds = %855
  %859 = load ptr, ptr %33, align 8, !tbaa !5
  %860 = load i32, ptr %859, align 4, !tbaa !9
  %861 = add nsw i32 %860, 1
  %862 = load i32, ptr %56, align 4, !tbaa !9
  %863 = sub nsw i32 %861, %862
  store i32 %863, ptr %43, align 4, !tbaa !9
  %864 = load ptr, ptr %18, align 8, !tbaa !5
  %865 = load ptr, ptr %19, align 8, !tbaa !5
  %866 = load ptr, ptr %20, align 8, !tbaa !5
  %867 = load ptr, ptr %21, align 8, !tbaa !5
  %868 = load i32, ptr %36, align 4, !tbaa !9
  %869 = sext i32 %868 to i64
  %870 = getelementptr inbounds double, ptr %867, i64 %869
  %871 = load ptr, ptr %22, align 8, !tbaa !5
  %872 = load ptr, ptr %23, align 8, !tbaa !5
  %873 = load i32, ptr %38, align 4, !tbaa !9
  %874 = sext i32 %873 to i64
  %875 = getelementptr inbounds double, ptr %872, i64 %874
  %876 = load ptr, ptr %24, align 8, !tbaa !5
  %877 = load ptr, ptr %28, align 8, !tbaa !5
  %878 = load i32, ptr %40, align 4, !tbaa !9
  %879 = sext i32 %878 to i64
  %880 = getelementptr inbounds double, ptr %877, i64 %879
  %881 = load ptr, ptr %29, align 8, !tbaa !5
  %882 = load ptr, ptr %30, align 8, !tbaa !5
  %883 = load i32, ptr %42, align 4, !tbaa !9
  %884 = sext i32 %883 to i64
  %885 = getelementptr inbounds double, ptr %882, i64 %884
  %886 = load ptr, ptr %31, align 8, !tbaa !5
  %887 = load ptr, ptr %32, align 8, !tbaa !5
  %888 = load i32, ptr %56, align 4, !tbaa !9
  %889 = sext i32 %888 to i64
  %890 = getelementptr inbounds double, ptr %887, i64 %889
  call void @dgghd3_(ptr noundef %864, ptr noundef %865, ptr noundef %866, ptr noundef %77, ptr noundef %76, ptr noundef %870, ptr noundef %871, ptr noundef %875, ptr noundef %876, ptr noundef %880, ptr noundef %881, ptr noundef %885, ptr noundef %886, ptr noundef %890, ptr noundef %43, ptr noundef %51)
  br label %929

891:                                              ; preds = %855
  %892 = load ptr, ptr %33, align 8, !tbaa !5
  %893 = load i32, ptr %892, align 4, !tbaa !9
  %894 = add nsw i32 %893, 1
  %895 = load i32, ptr %56, align 4, !tbaa !9
  %896 = sub nsw i32 %894, %895
  store i32 %896, ptr %43, align 4, !tbaa !9
  %897 = load ptr, ptr %21, align 8, !tbaa !5
  %898 = load i32, ptr %77, align 4, !tbaa !9
  %899 = load i32, ptr %77, align 4, !tbaa !9
  %900 = load i32, ptr %35, align 4, !tbaa !9
  %901 = mul nsw i32 %899, %900
  %902 = add nsw i32 %898, %901
  %903 = sext i32 %902 to i64
  %904 = getelementptr inbounds double, ptr %897, i64 %903
  %905 = load ptr, ptr %22, align 8, !tbaa !5
  %906 = load ptr, ptr %23, align 8, !tbaa !5
  %907 = load i32, ptr %77, align 4, !tbaa !9
  %908 = load i32, ptr %77, align 4, !tbaa !9
  %909 = load i32, ptr %37, align 4, !tbaa !9
  %910 = mul nsw i32 %908, %909
  %911 = add nsw i32 %907, %910
  %912 = sext i32 %911 to i64
  %913 = getelementptr inbounds double, ptr %906, i64 %912
  %914 = load ptr, ptr %24, align 8, !tbaa !5
  %915 = load ptr, ptr %28, align 8, !tbaa !5
  %916 = load i32, ptr %40, align 4, !tbaa !9
  %917 = sext i32 %916 to i64
  %918 = getelementptr inbounds double, ptr %915, i64 %917
  %919 = load ptr, ptr %29, align 8, !tbaa !5
  %920 = load ptr, ptr %30, align 8, !tbaa !5
  %921 = load i32, ptr %42, align 4, !tbaa !9
  %922 = sext i32 %921 to i64
  %923 = getelementptr inbounds double, ptr %920, i64 %922
  %924 = load ptr, ptr %31, align 8, !tbaa !5
  %925 = load ptr, ptr %32, align 8, !tbaa !5
  %926 = load i32, ptr %56, align 4, !tbaa !9
  %927 = sext i32 %926 to i64
  %928 = getelementptr inbounds double, ptr %925, i64 %927
  call void @dgghd3_(ptr noundef @.str, ptr noundef @.str, ptr noundef %59, ptr noundef @c__1, ptr noundef %59, ptr noundef %904, ptr noundef %905, ptr noundef %913, ptr noundef %914, ptr noundef %918, ptr noundef %919, ptr noundef %923, ptr noundef %924, ptr noundef %928, ptr noundef %43, ptr noundef %51)
  br label %929

929:                                              ; preds = %891, %858
  %930 = load i32, ptr %52, align 4, !tbaa !9
  store i32 %930, ptr %56, align 4, !tbaa !9
  %931 = load i32, ptr %79, align 4, !tbaa !9
  %932 = icmp ne i32 %931, 0
  br i1 %932, label %933, label %935

933:                                              ; preds = %929
  %934 = getelementptr inbounds [1 x i8], ptr %66, i64 0, i64 0
  store i8 83, ptr %934, align 1, !tbaa !13
  br label %937

935:                                              ; preds = %929
  %936 = getelementptr inbounds [1 x i8], ptr %66, i64 0, i64 0
  store i8 69, ptr %936, align 1, !tbaa !13
  br label %937

937:                                              ; preds = %935, %933
  %938 = load ptr, ptr %33, align 8, !tbaa !5
  %939 = load i32, ptr %938, align 4, !tbaa !9
  %940 = add nsw i32 %939, 1
  %941 = load i32, ptr %56, align 4, !tbaa !9
  %942 = sub nsw i32 %940, %941
  store i32 %942, ptr %43, align 4, !tbaa !9
  %943 = getelementptr inbounds [1 x i8], ptr %66, i64 0, i64 0
  %944 = load ptr, ptr %18, align 8, !tbaa !5
  %945 = load ptr, ptr %19, align 8, !tbaa !5
  %946 = load ptr, ptr %20, align 8, !tbaa !5
  %947 = load ptr, ptr %21, align 8, !tbaa !5
  %948 = load i32, ptr %36, align 4, !tbaa !9
  %949 = sext i32 %948 to i64
  %950 = getelementptr inbounds double, ptr %947, i64 %949
  %951 = load ptr, ptr %22, align 8, !tbaa !5
  %952 = load ptr, ptr %23, align 8, !tbaa !5
  %953 = load i32, ptr %38, align 4, !tbaa !9
  %954 = sext i32 %953 to i64
  %955 = getelementptr inbounds double, ptr %952, i64 %954
  %956 = load ptr, ptr %24, align 8, !tbaa !5
  %957 = load ptr, ptr %25, align 8, !tbaa !5
  %958 = getelementptr inbounds double, ptr %957, i64 1
  %959 = load ptr, ptr %26, align 8, !tbaa !5
  %960 = getelementptr inbounds double, ptr %959, i64 1
  %961 = load ptr, ptr %27, align 8, !tbaa !5
  %962 = getelementptr inbounds double, ptr %961, i64 1
  %963 = load ptr, ptr %28, align 8, !tbaa !5
  %964 = load i32, ptr %40, align 4, !tbaa !9
  %965 = sext i32 %964 to i64
  %966 = getelementptr inbounds double, ptr %963, i64 %965
  %967 = load ptr, ptr %29, align 8, !tbaa !5
  %968 = load ptr, ptr %30, align 8, !tbaa !5
  %969 = load i32, ptr %42, align 4, !tbaa !9
  %970 = sext i32 %969 to i64
  %971 = getelementptr inbounds double, ptr %968, i64 %970
  %972 = load ptr, ptr %31, align 8, !tbaa !5
  %973 = load ptr, ptr %32, align 8, !tbaa !5
  %974 = load i32, ptr %56, align 4, !tbaa !9
  %975 = sext i32 %974 to i64
  %976 = getelementptr inbounds double, ptr %973, i64 %975
  call void @dhgeqz_(ptr noundef %943, ptr noundef %944, ptr noundef %945, ptr noundef %946, ptr noundef %77, ptr noundef %76, ptr noundef %950, ptr noundef %951, ptr noundef %955, ptr noundef %956, ptr noundef %958, ptr noundef %960, ptr noundef %962, ptr noundef %966, ptr noundef %967, ptr noundef %971, ptr noundef %972, ptr noundef %976, ptr noundef %43, ptr noundef %51)
  %977 = load i32, ptr %51, align 4, !tbaa !9
  %978 = icmp ne i32 %977, 0
  br i1 %978, label %979, label %1014

979:                                              ; preds = %937
  %980 = load i32, ptr %51, align 4, !tbaa !9
  %981 = icmp sgt i32 %980, 0
  br i1 %981, label %982, label %990

982:                                              ; preds = %979
  %983 = load i32, ptr %51, align 4, !tbaa !9
  %984 = load ptr, ptr %20, align 8, !tbaa !5
  %985 = load i32, ptr %984, align 4, !tbaa !9
  %986 = icmp sle i32 %983, %985
  br i1 %986, label %987, label %990

987:                                              ; preds = %982
  %988 = load i32, ptr %51, align 4, !tbaa !9
  %989 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 %988, ptr %989, align 4, !tbaa !9
  br label %1013

990:                                              ; preds = %982, %979
  %991 = load i32, ptr %51, align 4, !tbaa !9
  %992 = load ptr, ptr %20, align 8, !tbaa !5
  %993 = load i32, ptr %992, align 4, !tbaa !9
  %994 = icmp sgt i32 %991, %993
  br i1 %994, label %995, label %1007

995:                                              ; preds = %990
  %996 = load i32, ptr %51, align 4, !tbaa !9
  %997 = load ptr, ptr %20, align 8, !tbaa !5
  %998 = load i32, ptr %997, align 4, !tbaa !9
  %999 = shl i32 %998, 1
  %1000 = icmp sle i32 %996, %999
  br i1 %1000, label %1001, label %1007

1001:                                             ; preds = %995
  %1002 = load i32, ptr %51, align 4, !tbaa !9
  %1003 = load ptr, ptr %20, align 8, !tbaa !5
  %1004 = load i32, ptr %1003, align 4, !tbaa !9
  %1005 = sub nsw i32 %1002, %1004
  %1006 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 %1005, ptr %1006, align 4, !tbaa !9
  br label %1012

1007:                                             ; preds = %995, %990
  %1008 = load ptr, ptr %20, align 8, !tbaa !5
  %1009 = load i32, ptr %1008, align 4, !tbaa !9
  %1010 = add nsw i32 %1009, 1
  %1011 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 %1010, ptr %1011, align 4, !tbaa !9
  br label %1012

1012:                                             ; preds = %1007, %1001
  br label %1013

1013:                                             ; preds = %1012, %987
  br label %1504

1014:                                             ; preds = %937
  %1015 = load i32, ptr %79, align 4, !tbaa !9
  %1016 = icmp ne i32 %1015, 0
  br i1 %1016, label %1017, label %1503

1017:                                             ; preds = %1014
  %1018 = load i32, ptr %54, align 4, !tbaa !9
  %1019 = icmp ne i32 %1018, 0
  br i1 %1019, label %1020, label %1028

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

1023:                                             ; preds = %1020
  %1024 = getelementptr inbounds [1 x i8], ptr %66, i64 0, i64 0
  store i8 66, ptr %1024, align 1, !tbaa !13
  br label %1027

1025:                                             ; preds = %1020
  %1026 = getelementptr inbounds [1 x i8], ptr %66, i64 0, i64 0
  store i8 76, ptr %1026, align 1, !tbaa !13
  br label %1027

1027:                                             ; preds = %1025, %1023
  br label %1030

1028:                                             ; preds = %1017
  %1029 = getelementptr inbounds [1 x i8], ptr %66, i64 0, i64 0
  store i8 82, ptr %1029, align 1, !tbaa !13
  br label %1030

1030:                                             ; preds = %1028, %1027
  %1031 = getelementptr inbounds [1 x i8], ptr %66, i64 0, i64 0
  %1032 = getelementptr inbounds [1 x i32], ptr %65, i64 0, i64 0
  %1033 = load ptr, ptr %20, align 8, !tbaa !5
  %1034 = load ptr, ptr %21, align 8, !tbaa !5
  %1035 = load i32, ptr %36, align 4, !tbaa !9
  %1036 = sext i32 %1035 to i64
  %1037 = getelementptr inbounds double, ptr %1034, i64 %1036
  %1038 = load ptr, ptr %22, align 8, !tbaa !5
  %1039 = load ptr, ptr %23, align 8, !tbaa !5
  %1040 = load i32, ptr %38, align 4, !tbaa !9
  %1041 = sext i32 %1040 to i64
  %1042 = getelementptr inbounds double, ptr %1039, i64 %1041
  %1043 = load ptr, ptr %24, align 8, !tbaa !5
  %1044 = load ptr, ptr %28, align 8, !tbaa !5
  %1045 = load i32, ptr %40, align 4, !tbaa !9
  %1046 = sext i32 %1045 to i64
  %1047 = getelementptr inbounds double, ptr %1044, i64 %1046
  %1048 = load ptr, ptr %29, align 8, !tbaa !5
  %1049 = load ptr, ptr %30, align 8, !tbaa !5
  %1050 = load i32, ptr %42, align 4, !tbaa !9
  %1051 = sext i32 %1050 to i64
  %1052 = getelementptr inbounds double, ptr %1049, i64 %1051
  %1053 = load ptr, ptr %31, align 8, !tbaa !5
  %1054 = load ptr, ptr %20, align 8, !tbaa !5
  %1055 = load ptr, ptr %32, align 8, !tbaa !5
  %1056 = load i32, ptr %56, align 4, !tbaa !9
  %1057 = sext i32 %1056 to i64
  %1058 = getelementptr inbounds double, ptr %1055, i64 %1057
  call void @dtgevc_(ptr noundef %1031, ptr noundef @.str.11, ptr noundef %1032, ptr noundef %1033, ptr noundef %1037, ptr noundef %1038, ptr noundef %1042, ptr noundef %1043, ptr noundef %1047, ptr noundef %1048, ptr noundef %1052, ptr noundef %1053, ptr noundef %1054, ptr noundef %61, ptr noundef %1058, ptr noundef %51)
  %1059 = load i32, ptr %51, align 4, !tbaa !9
  %1060 = icmp ne i32 %1059, 0
  br i1 %1060, label %1061, label %1066

1061:                                             ; preds = %1030
  %1062 = load ptr, ptr %20, align 8, !tbaa !5
  %1063 = load i32, ptr %1062, align 4, !tbaa !9
  %1064 = add nsw i32 %1063, 2
  %1065 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 %1064, ptr %1065, align 4, !tbaa !9
  br label %1504

1066:                                             ; preds = %1030
  %1067 = load i32, ptr %54, align 4, !tbaa !9
  %1068 = icmp ne i32 %1067, 0
  br i1 %1068, label %1069, label %1284

1069:                                             ; preds = %1066
  %1070 = load ptr, ptr %20, align 8, !tbaa !5
  %1071 = load ptr, ptr %32, align 8, !tbaa !5
  %1072 = load i32, ptr %57, align 4, !tbaa !9
  %1073 = sext i32 %1072 to i64
  %1074 = getelementptr inbounds double, ptr %1071, i64 %1073
  %1075 = load ptr, ptr %32, align 8, !tbaa !5
  %1076 = load i32, ptr %69, align 4, !tbaa !9
  %1077 = sext i32 %1076 to i64
  %1078 = getelementptr inbounds double, ptr %1075, i64 %1077
  %1079 = load ptr, ptr %20, align 8, !tbaa !5
  %1080 = load ptr, ptr %28, align 8, !tbaa !5
  %1081 = load i32, ptr %40, align 4, !tbaa !9
  %1082 = sext i32 %1081 to i64
  %1083 = getelementptr inbounds double, ptr %1080, i64 %1082
  %1084 = load ptr, ptr %29, align 8, !tbaa !5
  call void @dggbak_(ptr noundef @.str.7, ptr noundef @.str.2, ptr noundef %1070, ptr noundef %77, ptr noundef %76, ptr noundef %1074, ptr noundef %1078, ptr noundef %1079, ptr noundef %1083, ptr noundef %1084, ptr noundef %51)
  %1085 = load ptr, ptr %20, align 8, !tbaa !5
  %1086 = load i32, ptr %1085, align 4, !tbaa !9
  store i32 %1086, ptr %43, align 4, !tbaa !9
  store i32 1, ptr %60, align 4, !tbaa !9
  br label %1087

1087:                                             ; preds = %1280, %1069
  %1088 = load i32, ptr %60, align 4, !tbaa !9
  %1089 = load i32, ptr %43, align 4, !tbaa !9
  %1090 = icmp sle i32 %1088, %1089
  br i1 %1090, label %1091, label %1283

1091:                                             ; preds = %1087
  %1092 = load ptr, ptr %26, align 8, !tbaa !5
  %1093 = load i32, ptr %60, align 4, !tbaa !9
  %1094 = sext i32 %1093 to i64
  %1095 = getelementptr inbounds double, ptr %1092, i64 %1094
  %1096 = load double, ptr %1095, align 8, !tbaa !11
  %1097 = fcmp olt double %1096, 0.000000e+00
  br i1 %1097, label %1098, label %1099

1098:                                             ; preds = %1091
  br label %1279

1099:                                             ; preds = %1091
  store double 0.000000e+00, ptr %53, align 8, !tbaa !11
  %1100 = load ptr, ptr %26, align 8, !tbaa !5
  %1101 = load i32, ptr %60, align 4, !tbaa !9
  %1102 = sext i32 %1101 to i64
  %1103 = getelementptr inbounds double, ptr %1100, i64 %1102
  %1104 = load double, ptr %1103, align 8, !tbaa !11
  %1105 = fcmp oeq double %1104, 0.000000e+00
  br i1 %1105, label %1106, label %1146

1106:                                             ; preds = %1099
  %1107 = load ptr, ptr %20, align 8, !tbaa !5
  %1108 = load i32, ptr %1107, align 4, !tbaa !9
  store i32 %1108, ptr %44, align 4, !tbaa !9
  store i32 1, ptr %62, align 4, !tbaa !9
  br label %1109

1109:                                             ; preds = %1142, %1106
  %1110 = load i32, ptr %62, align 4, !tbaa !9
  %1111 = load i32, ptr %44, align 4, !tbaa !9
  %1112 = icmp sle i32 %1110, %1111
  br i1 %1112, label %1113, label %1145

1113:                                             ; preds = %1109
  %1114 = load double, ptr %53, align 8, !tbaa !11
  store double %1114, ptr %46, align 8, !tbaa !11
  %1115 = load ptr, ptr %28, align 8, !tbaa !5
  %1116 = load i32, ptr %62, align 4, !tbaa !9
  %1117 = load i32, ptr %60, align 4, !tbaa !9
  %1118 = load i32, ptr %39, align 4, !tbaa !9
  %1119 = mul nsw i32 %1117, %1118
  %1120 = add nsw i32 %1116, %1119
  %1121 = sext i32 %1120 to i64
  %1122 = getelementptr inbounds double, ptr %1115, i64 %1121
  %1123 = load double, ptr %1122, align 8, !tbaa !11
  store double %1123, ptr %45, align 8, !tbaa !11
  %1124 = load double, ptr %45, align 8, !tbaa !11
  %1125 = fcmp oge double %1124, 0.000000e+00
  br i1 %1125, label %1126, label %1128

1126:                                             ; preds = %1113
  %1127 = load double, ptr %45, align 8, !tbaa !11
  br label %1131

1128:                                             ; preds = %1113
  %1129 = load double, ptr %45, align 8, !tbaa !11
  %1130 = fneg double %1129
  br label %1131

1131:                                             ; preds = %1128, %1126
  %1132 = phi double [ %1127, %1126 ], [ %1130, %1128 ]
  store double %1132, ptr %47, align 8, !tbaa !11
  %1133 = load double, ptr %46, align 8, !tbaa !11
  %1134 = load double, ptr %47, align 8, !tbaa !11
  %1135 = fcmp oge double %1133, %1134
  br i1 %1135, label %1136, label %1138

1136:                                             ; preds = %1131
  %1137 = load double, ptr %46, align 8, !tbaa !11
  br label %1140

1138:                                             ; preds = %1131
  %1139 = load double, ptr %47, align 8, !tbaa !11
  br label %1140

1140:                                             ; preds = %1138, %1136
  %1141 = phi double [ %1137, %1136 ], [ %1139, %1138 ]
  store double %1141, ptr %53, align 8, !tbaa !11
  br label %1142

1142:                                             ; preds = %1140
  %1143 = load i32, ptr %62, align 4, !tbaa !9
  %1144 = add nsw i32 %1143, 1
  store i32 %1144, ptr %62, align 4, !tbaa !9
  br label %1109, !llvm.loop !14

1145:                                             ; preds = %1109
  br label %1206

1146:                                             ; preds = %1099
  %1147 = load ptr, ptr %20, align 8, !tbaa !5
  %1148 = load i32, ptr %1147, align 4, !tbaa !9
  store i32 %1148, ptr %44, align 4, !tbaa !9
  store i32 1, ptr %62, align 4, !tbaa !9
  br label %1149

1149:                                             ; preds = %1202, %1146
  %1150 = load i32, ptr %62, align 4, !tbaa !9
  %1151 = load i32, ptr %44, align 4, !tbaa !9
  %1152 = icmp sle i32 %1150, %1151
  br i1 %1152, label %1153, label %1205

1153:                                             ; preds = %1149
  %1154 = load double, ptr %53, align 8, !tbaa !11
  store double %1154, ptr %47, align 8, !tbaa !11
  %1155 = load ptr, ptr %28, align 8, !tbaa !5
  %1156 = load i32, ptr %62, align 4, !tbaa !9
  %1157 = load i32, ptr %60, align 4, !tbaa !9
  %1158 = load i32, ptr %39, align 4, !tbaa !9
  %1159 = mul nsw i32 %1157, %1158
  %1160 = add nsw i32 %1156, %1159
  %1161 = sext i32 %1160 to i64
  %1162 = getelementptr inbounds double, ptr %1155, i64 %1161
  %1163 = load double, ptr %1162, align 8, !tbaa !11
  store double %1163, ptr %45, align 8, !tbaa !11
  %1164 = load double, ptr %45, align 8, !tbaa !11
  %1165 = fcmp oge double %1164, 0.000000e+00
  br i1 %1165, label %1166, label %1168

1166:                                             ; preds = %1153
  %1167 = load double, ptr %45, align 8, !tbaa !11
  br label %1171

1168:                                             ; preds = %1153
  %1169 = load double, ptr %45, align 8, !tbaa !11
  %1170 = fneg double %1169
  br label %1171

1171:                                             ; preds = %1168, %1166
  %1172 = phi double [ %1167, %1166 ], [ %1170, %1168 ]
  %1173 = load ptr, ptr %28, align 8, !tbaa !5
  %1174 = load i32, ptr %62, align 4, !tbaa !9
  %1175 = load i32, ptr %60, align 4, !tbaa !9
  %1176 = add nsw i32 %1175, 1
  %1177 = load i32, ptr %39, align 4, !tbaa !9
  %1178 = mul nsw i32 %1176, %1177
  %1179 = add nsw i32 %1174, %1178
  %1180 = sext i32 %1179 to i64
  %1181 = getelementptr inbounds double, ptr %1173, i64 %1180
  %1182 = load double, ptr %1181, align 8, !tbaa !11
  store double %1182, ptr %46, align 8, !tbaa !11
  %1183 = load double, ptr %46, align 8, !tbaa !11
  %1184 = fcmp oge double %1183, 0.000000e+00
  br i1 %1184, label %1185, label %1187

1185:                                             ; preds = %1171
  %1186 = load double, ptr %46, align 8, !tbaa !11
  br label %1190

1187:                                             ; preds = %1171
  %1188 = load double, ptr %46, align 8, !tbaa !11
  %1189 = fneg double %1188
  br label %1190

1190:                                             ; preds = %1187, %1185
  %1191 = phi double [ %1186, %1185 ], [ %1189, %1187 ]
  %1192 = fadd double %1172, %1191
  store double %1192, ptr %48, align 8, !tbaa !11
  %1193 = load double, ptr %47, align 8, !tbaa !11
  %1194 = load double, ptr %48, align 8, !tbaa !11
  %1195 = fcmp oge double %1193, %1194
  br i1 %1195, label %1196, label %1198

1196:                                             ; preds = %1190
  %1197 = load double, ptr %47, align 8, !tbaa !11
  br label %1200

1198:                                             ; preds = %1190
  %1199 = load double, ptr %48, align 8, !tbaa !11
  br label %1200

1200:                                             ; preds = %1198, %1196
  %1201 = phi double [ %1197, %1196 ], [ %1199, %1198 ]
  store double %1201, ptr %53, align 8, !tbaa !11
  br label %1202

1202:                                             ; preds = %1200
  %1203 = load i32, ptr %62, align 4, !tbaa !9
  %1204 = add nsw i32 %1203, 1
  store i32 %1204, ptr %62, align 4, !tbaa !9
  br label %1149, !llvm.loop !16

1205:                                             ; preds = %1149
  br label %1206

1206:                                             ; preds = %1205, %1145
  %1207 = load double, ptr %53, align 8, !tbaa !11
  %1208 = load double, ptr %73, align 8, !tbaa !11
  %1209 = fcmp olt double %1207, %1208
  br i1 %1209, label %1210, label %1211

1210:                                             ; preds = %1206
  br label %1279

1211:                                             ; preds = %1206
  %1212 = load double, ptr %53, align 8, !tbaa !11
  %1213 = fdiv double 1.000000e+00, %1212
  store double %1213, ptr %53, align 8, !tbaa !11
  %1214 = load ptr, ptr %26, align 8, !tbaa !5
  %1215 = load i32, ptr %60, align 4, !tbaa !9
  %1216 = sext i32 %1215 to i64
  %1217 = getelementptr inbounds double, ptr %1214, i64 %1216
  %1218 = load double, ptr %1217, align 8, !tbaa !11
  %1219 = fcmp oeq double %1218, 0.000000e+00
  br i1 %1219, label %1220, label %1243

1220:                                             ; preds = %1211
  %1221 = load ptr, ptr %20, align 8, !tbaa !5
  %1222 = load i32, ptr %1221, align 4, !tbaa !9
  store i32 %1222, ptr %44, align 4, !tbaa !9
  store i32 1, ptr %62, align 4, !tbaa !9
  br label %1223

1223:                                             ; preds = %1239, %1220
  %1224 = load i32, ptr %62, align 4, !tbaa !9
  %1225 = load i32, ptr %44, align 4, !tbaa !9
  %1226 = icmp sle i32 %1224, %1225
  br i1 %1226, label %1227, label %1242

1227:                                             ; preds = %1223
  %1228 = load double, ptr %53, align 8, !tbaa !11
  %1229 = load ptr, ptr %28, align 8, !tbaa !5
  %1230 = load i32, ptr %62, align 4, !tbaa !9
  %1231 = load i32, ptr %60, align 4, !tbaa !9
  %1232 = load i32, ptr %39, align 4, !tbaa !9
  %1233 = mul nsw i32 %1231, %1232
  %1234 = add nsw i32 %1230, %1233
  %1235 = sext i32 %1234 to i64
  %1236 = getelementptr inbounds double, ptr %1229, i64 %1235
  %1237 = load double, ptr %1236, align 8, !tbaa !11
  %1238 = fmul double %1237, %1228
  store double %1238, ptr %1236, align 8, !tbaa !11
  br label %1239

1239:                                             ; preds = %1227
  %1240 = load i32, ptr %62, align 4, !tbaa !9
  %1241 = add nsw i32 %1240, 1
  store i32 %1241, ptr %62, align 4, !tbaa !9
  br label %1223, !llvm.loop !17

1242:                                             ; preds = %1223
  br label %1278

1243:                                             ; preds = %1211
  %1244 = load ptr, ptr %20, align 8, !tbaa !5
  %1245 = load i32, ptr %1244, align 4, !tbaa !9
  store i32 %1245, ptr %44, align 4, !tbaa !9
  store i32 1, ptr %62, align 4, !tbaa !9
  br label %1246

1246:                                             ; preds = %1274, %1243
  %1247 = load i32, ptr %62, align 4, !tbaa !9
  %1248 = load i32, ptr %44, align 4, !tbaa !9
  %1249 = icmp sle i32 %1247, %1248
  br i1 %1249, label %1250, label %1277

1250:                                             ; preds = %1246
  %1251 = load double, ptr %53, align 8, !tbaa !11
  %1252 = load ptr, ptr %28, align 8, !tbaa !5
  %1253 = load i32, ptr %62, align 4, !tbaa !9
  %1254 = load i32, ptr %60, align 4, !tbaa !9
  %1255 = load i32, ptr %39, align 4, !tbaa !9
  %1256 = mul nsw i32 %1254, %1255
  %1257 = add nsw i32 %1253, %1256
  %1258 = sext i32 %1257 to i64
  %1259 = getelementptr inbounds double, ptr %1252, i64 %1258
  %1260 = load double, ptr %1259, align 8, !tbaa !11
  %1261 = fmul double %1260, %1251
  store double %1261, ptr %1259, align 8, !tbaa !11
  %1262 = load double, ptr %53, align 8, !tbaa !11
  %1263 = load ptr, ptr %28, align 8, !tbaa !5
  %1264 = load i32, ptr %62, align 4, !tbaa !9
  %1265 = load i32, ptr %60, align 4, !tbaa !9
  %1266 = add nsw i32 %1265, 1
  %1267 = load i32, ptr %39, align 4, !tbaa !9
  %1268 = mul nsw i32 %1266, %1267
  %1269 = add nsw i32 %1264, %1268
  %1270 = sext i32 %1269 to i64
  %1271 = getelementptr inbounds double, ptr %1263, i64 %1270
  %1272 = load double, ptr %1271, align 8, !tbaa !11
  %1273 = fmul double %1272, %1262
  store double %1273, ptr %1271, align 8, !tbaa !11
  br label %1274

1274:                                             ; preds = %1250
  %1275 = load i32, ptr %62, align 4, !tbaa !9
  %1276 = add nsw i32 %1275, 1
  store i32 %1276, ptr %62, align 4, !tbaa !9
  br label %1246, !llvm.loop !18

1277:                                             ; preds = %1246
  br label %1278

1278:                                             ; preds = %1277, %1242
  br label %1279

1279:                                             ; preds = %1278, %1210, %1098
  br label %1280

1280:                                             ; preds = %1279
  %1281 = load i32, ptr %60, align 4, !tbaa !9
  %1282 = add nsw i32 %1281, 1
  store i32 %1282, ptr %60, align 4, !tbaa !9
  br label %1087, !llvm.loop !19

1283:                                             ; preds = %1087
  br label %1284

1284:                                             ; preds = %1283, %1066
  %1285 = load i32, ptr %55, align 4, !tbaa !9
  %1286 = icmp ne i32 %1285, 0
  br i1 %1286, label %1287, label %1502

1287:                                             ; preds = %1284
  %1288 = load ptr, ptr %20, align 8, !tbaa !5
  %1289 = load ptr, ptr %32, align 8, !tbaa !5
  %1290 = load i32, ptr %57, align 4, !tbaa !9
  %1291 = sext i32 %1290 to i64
  %1292 = getelementptr inbounds double, ptr %1289, i64 %1291
  %1293 = load ptr, ptr %32, align 8, !tbaa !5
  %1294 = load i32, ptr %69, align 4, !tbaa !9
  %1295 = sext i32 %1294 to i64
  %1296 = getelementptr inbounds double, ptr %1293, i64 %1295
  %1297 = load ptr, ptr %20, align 8, !tbaa !5
  %1298 = load ptr, ptr %30, align 8, !tbaa !5
  %1299 = load i32, ptr %42, align 4, !tbaa !9
  %1300 = sext i32 %1299 to i64
  %1301 = getelementptr inbounds double, ptr %1298, i64 %1300
  %1302 = load ptr, ptr %31, align 8, !tbaa !5
  call void @dggbak_(ptr noundef @.str.7, ptr noundef @.str.12, ptr noundef %1288, ptr noundef %77, ptr noundef %76, ptr noundef %1292, ptr noundef %1296, ptr noundef %1297, ptr noundef %1301, ptr noundef %1302, ptr noundef %51)
  %1303 = load ptr, ptr %20, align 8, !tbaa !5
  %1304 = load i32, ptr %1303, align 4, !tbaa !9
  store i32 %1304, ptr %43, align 4, !tbaa !9
  store i32 1, ptr %60, align 4, !tbaa !9
  br label %1305

1305:                                             ; preds = %1498, %1287
  %1306 = load i32, ptr %60, align 4, !tbaa !9
  %1307 = load i32, ptr %43, align 4, !tbaa !9
  %1308 = icmp sle i32 %1306, %1307
  br i1 %1308, label %1309, label %1501

1309:                                             ; preds = %1305
  %1310 = load ptr, ptr %26, align 8, !tbaa !5
  %1311 = load i32, ptr %60, align 4, !tbaa !9
  %1312 = sext i32 %1311 to i64
  %1313 = getelementptr inbounds double, ptr %1310, i64 %1312
  %1314 = load double, ptr %1313, align 8, !tbaa !11
  %1315 = fcmp olt double %1314, 0.000000e+00
  br i1 %1315, label %1316, label %1317

1316:                                             ; preds = %1309
  br label %1497

1317:                                             ; preds = %1309
  store double 0.000000e+00, ptr %53, align 8, !tbaa !11
  %1318 = load ptr, ptr %26, align 8, !tbaa !5
  %1319 = load i32, ptr %60, align 4, !tbaa !9
  %1320 = sext i32 %1319 to i64
  %1321 = getelementptr inbounds double, ptr %1318, i64 %1320
  %1322 = load double, ptr %1321, align 8, !tbaa !11
  %1323 = fcmp oeq double %1322, 0.000000e+00
  br i1 %1323, label %1324, label %1364

1324:                                             ; preds = %1317
  %1325 = load ptr, ptr %20, align 8, !tbaa !5
  %1326 = load i32, ptr %1325, align 4, !tbaa !9
  store i32 %1326, ptr %44, align 4, !tbaa !9
  store i32 1, ptr %62, align 4, !tbaa !9
  br label %1327

1327:                                             ; preds = %1360, %1324
  %1328 = load i32, ptr %62, align 4, !tbaa !9
  %1329 = load i32, ptr %44, align 4, !tbaa !9
  %1330 = icmp sle i32 %1328, %1329
  br i1 %1330, label %1331, label %1363

1331:                                             ; preds = %1327
  %1332 = load double, ptr %53, align 8, !tbaa !11
  store double %1332, ptr %46, align 8, !tbaa !11
  %1333 = load ptr, ptr %30, align 8, !tbaa !5
  %1334 = load i32, ptr %62, align 4, !tbaa !9
  %1335 = load i32, ptr %60, align 4, !tbaa !9
  %1336 = load i32, ptr %41, align 4, !tbaa !9
  %1337 = mul nsw i32 %1335, %1336
  %1338 = add nsw i32 %1334, %1337
  %1339 = sext i32 %1338 to i64
  %1340 = getelementptr inbounds double, ptr %1333, i64 %1339
  %1341 = load double, ptr %1340, align 8, !tbaa !11
  store double %1341, ptr %45, align 8, !tbaa !11
  %1342 = load double, ptr %45, align 8, !tbaa !11
  %1343 = fcmp oge double %1342, 0.000000e+00
  br i1 %1343, label %1344, label %1346

1344:                                             ; preds = %1331
  %1345 = load double, ptr %45, align 8, !tbaa !11
  br label %1349

1346:                                             ; preds = %1331
  %1347 = load double, ptr %45, align 8, !tbaa !11
  %1348 = fneg double %1347
  br label %1349

1349:                                             ; preds = %1346, %1344
  %1350 = phi double [ %1345, %1344 ], [ %1348, %1346 ]
  store double %1350, ptr %47, align 8, !tbaa !11
  %1351 = load double, ptr %46, align 8, !tbaa !11
  %1352 = load double, ptr %47, align 8, !tbaa !11
  %1353 = fcmp oge double %1351, %1352
  br i1 %1353, label %1354, label %1356

1354:                                             ; preds = %1349
  %1355 = load double, ptr %46, align 8, !tbaa !11
  br label %1358

1356:                                             ; preds = %1349
  %1357 = load double, ptr %47, align 8, !tbaa !11
  br label %1358

1358:                                             ; preds = %1356, %1354
  %1359 = phi double [ %1355, %1354 ], [ %1357, %1356 ]
  store double %1359, ptr %53, align 8, !tbaa !11
  br label %1360

1360:                                             ; preds = %1358
  %1361 = load i32, ptr %62, align 4, !tbaa !9
  %1362 = add nsw i32 %1361, 1
  store i32 %1362, ptr %62, align 4, !tbaa !9
  br label %1327, !llvm.loop !20

1363:                                             ; preds = %1327
  br label %1424

1364:                                             ; preds = %1317
  %1365 = load ptr, ptr %20, align 8, !tbaa !5
  %1366 = load i32, ptr %1365, align 4, !tbaa !9
  store i32 %1366, ptr %44, align 4, !tbaa !9
  store i32 1, ptr %62, align 4, !tbaa !9
  br label %1367

1367:                                             ; preds = %1420, %1364
  %1368 = load i32, ptr %62, align 4, !tbaa !9
  %1369 = load i32, ptr %44, align 4, !tbaa !9
  %1370 = icmp sle i32 %1368, %1369
  br i1 %1370, label %1371, label %1423

1371:                                             ; preds = %1367
  %1372 = load double, ptr %53, align 8, !tbaa !11
  store double %1372, ptr %47, align 8, !tbaa !11
  %1373 = load ptr, ptr %30, align 8, !tbaa !5
  %1374 = load i32, ptr %62, align 4, !tbaa !9
  %1375 = load i32, ptr %60, align 4, !tbaa !9
  %1376 = load i32, ptr %41, align 4, !tbaa !9
  %1377 = mul nsw i32 %1375, %1376
  %1378 = add nsw i32 %1374, %1377
  %1379 = sext i32 %1378 to i64
  %1380 = getelementptr inbounds double, ptr %1373, i64 %1379
  %1381 = load double, ptr %1380, align 8, !tbaa !11
  store double %1381, ptr %45, align 8, !tbaa !11
  %1382 = load double, ptr %45, align 8, !tbaa !11
  %1383 = fcmp oge double %1382, 0.000000e+00
  br i1 %1383, label %1384, label %1386

1384:                                             ; preds = %1371
  %1385 = load double, ptr %45, align 8, !tbaa !11
  br label %1389

1386:                                             ; preds = %1371
  %1387 = load double, ptr %45, align 8, !tbaa !11
  %1388 = fneg double %1387
  br label %1389

1389:                                             ; preds = %1386, %1384
  %1390 = phi double [ %1385, %1384 ], [ %1388, %1386 ]
  %1391 = load ptr, ptr %30, align 8, !tbaa !5
  %1392 = load i32, ptr %62, align 4, !tbaa !9
  %1393 = load i32, ptr %60, align 4, !tbaa !9
  %1394 = add nsw i32 %1393, 1
  %1395 = load i32, ptr %41, align 4, !tbaa !9
  %1396 = mul nsw i32 %1394, %1395
  %1397 = add nsw i32 %1392, %1396
  %1398 = sext i32 %1397 to i64
  %1399 = getelementptr inbounds double, ptr %1391, i64 %1398
  %1400 = load double, ptr %1399, align 8, !tbaa !11
  store double %1400, ptr %46, align 8, !tbaa !11
  %1401 = load double, ptr %46, align 8, !tbaa !11
  %1402 = fcmp oge double %1401, 0.000000e+00
  br i1 %1402, label %1403, label %1405

1403:                                             ; preds = %1389
  %1404 = load double, ptr %46, align 8, !tbaa !11
  br label %1408

1405:                                             ; preds = %1389
  %1406 = load double, ptr %46, align 8, !tbaa !11
  %1407 = fneg double %1406
  br label %1408

1408:                                             ; preds = %1405, %1403
  %1409 = phi double [ %1404, %1403 ], [ %1407, %1405 ]
  %1410 = fadd double %1390, %1409
  store double %1410, ptr %48, align 8, !tbaa !11
  %1411 = load double, ptr %47, align 8, !tbaa !11
  %1412 = load double, ptr %48, align 8, !tbaa !11
  %1413 = fcmp oge double %1411, %1412
  br i1 %1413, label %1414, label %1416

1414:                                             ; preds = %1408
  %1415 = load double, ptr %47, align 8, !tbaa !11
  br label %1418

1416:                                             ; preds = %1408
  %1417 = load double, ptr %48, align 8, !tbaa !11
  br label %1418

1418:                                             ; preds = %1416, %1414
  %1419 = phi double [ %1415, %1414 ], [ %1417, %1416 ]
  store double %1419, ptr %53, align 8, !tbaa !11
  br label %1420

1420:                                             ; preds = %1418
  %1421 = load i32, ptr %62, align 4, !tbaa !9
  %1422 = add nsw i32 %1421, 1
  store i32 %1422, ptr %62, align 4, !tbaa !9
  br label %1367, !llvm.loop !21

1423:                                             ; preds = %1367
  br label %1424

1424:                                             ; preds = %1423, %1363
  %1425 = load double, ptr %53, align 8, !tbaa !11
  %1426 = load double, ptr %73, align 8, !tbaa !11
  %1427 = fcmp olt double %1425, %1426
  br i1 %1427, label %1428, label %1429

1428:                                             ; preds = %1424
  br label %1497

1429:                                             ; preds = %1424
  %1430 = load double, ptr %53, align 8, !tbaa !11
  %1431 = fdiv double 1.000000e+00, %1430
  store double %1431, ptr %53, align 8, !tbaa !11
  %1432 = load ptr, ptr %26, align 8, !tbaa !5
  %1433 = load i32, ptr %60, align 4, !tbaa !9
  %1434 = sext i32 %1433 to i64
  %1435 = getelementptr inbounds double, ptr %1432, i64 %1434
  %1436 = load double, ptr %1435, align 8, !tbaa !11
  %1437 = fcmp oeq double %1436, 0.000000e+00
  br i1 %1437, label %1438, label %1461

1438:                                             ; preds = %1429
  %1439 = load ptr, ptr %20, align 8, !tbaa !5
  %1440 = load i32, ptr %1439, align 4, !tbaa !9
  store i32 %1440, ptr %44, align 4, !tbaa !9
  store i32 1, ptr %62, align 4, !tbaa !9
  br label %1441

1441:                                             ; preds = %1457, %1438
  %1442 = load i32, ptr %62, align 4, !tbaa !9
  %1443 = load i32, ptr %44, align 4, !tbaa !9
  %1444 = icmp sle i32 %1442, %1443
  br i1 %1444, label %1445, label %1460

1445:                                             ; preds = %1441
  %1446 = load double, ptr %53, align 8, !tbaa !11
  %1447 = load ptr, ptr %30, align 8, !tbaa !5
  %1448 = load i32, ptr %62, align 4, !tbaa !9
  %1449 = load i32, ptr %60, align 4, !tbaa !9
  %1450 = load i32, ptr %41, align 4, !tbaa !9
  %1451 = mul nsw i32 %1449, %1450
  %1452 = add nsw i32 %1448, %1451
  %1453 = sext i32 %1452 to i64
  %1454 = getelementptr inbounds double, ptr %1447, i64 %1453
  %1455 = load double, ptr %1454, align 8, !tbaa !11
  %1456 = fmul double %1455, %1446
  store double %1456, ptr %1454, align 8, !tbaa !11
  br label %1457

1457:                                             ; preds = %1445
  %1458 = load i32, ptr %62, align 4, !tbaa !9
  %1459 = add nsw i32 %1458, 1
  store i32 %1459, ptr %62, align 4, !tbaa !9
  br label %1441, !llvm.loop !22

1460:                                             ; preds = %1441
  br label %1496

1461:                                             ; preds = %1429
  %1462 = load ptr, ptr %20, align 8, !tbaa !5
  %1463 = load i32, ptr %1462, align 4, !tbaa !9
  store i32 %1463, ptr %44, align 4, !tbaa !9
  store i32 1, ptr %62, align 4, !tbaa !9
  br label %1464

1464:                                             ; preds = %1492, %1461
  %1465 = load i32, ptr %62, align 4, !tbaa !9
  %1466 = load i32, ptr %44, align 4, !tbaa !9
  %1467 = icmp sle i32 %1465, %1466
  br i1 %1467, label %1468, label %1495

1468:                                             ; preds = %1464
  %1469 = load double, ptr %53, align 8, !tbaa !11
  %1470 = load ptr, ptr %30, align 8, !tbaa !5
  %1471 = load i32, ptr %62, align 4, !tbaa !9
  %1472 = load i32, ptr %60, align 4, !tbaa !9
  %1473 = load i32, ptr %41, align 4, !tbaa !9
  %1474 = mul nsw i32 %1472, %1473
  %1475 = add nsw i32 %1471, %1474
  %1476 = sext i32 %1475 to i64
  %1477 = getelementptr inbounds double, ptr %1470, i64 %1476
  %1478 = load double, ptr %1477, align 8, !tbaa !11
  %1479 = fmul double %1478, %1469
  store double %1479, ptr %1477, align 8, !tbaa !11
  %1480 = load double, ptr %53, align 8, !tbaa !11
  %1481 = load ptr, ptr %30, align 8, !tbaa !5
  %1482 = load i32, ptr %62, align 4, !tbaa !9
  %1483 = load i32, ptr %60, align 4, !tbaa !9
  %1484 = add nsw i32 %1483, 1
  %1485 = load i32, ptr %41, align 4, !tbaa !9
  %1486 = mul nsw i32 %1484, %1485
  %1487 = add nsw i32 %1482, %1486
  %1488 = sext i32 %1487 to i64
  %1489 = getelementptr inbounds double, ptr %1481, i64 %1488
  %1490 = load double, ptr %1489, align 8, !tbaa !11
  %1491 = fmul double %1490, %1480
  store double %1491, ptr %1489, align 8, !tbaa !11
  br label %1492

1492:                                             ; preds = %1468
  %1493 = load i32, ptr %62, align 4, !tbaa !9
  %1494 = add nsw i32 %1493, 1
  store i32 %1494, ptr %62, align 4, !tbaa !9
  br label %1464, !llvm.loop !23

1495:                                             ; preds = %1464
  br label %1496

1496:                                             ; preds = %1495, %1460
  br label %1497

1497:                                             ; preds = %1496, %1428, %1316
  br label %1498

1498:                                             ; preds = %1497
  %1499 = load i32, ptr %60, align 4, !tbaa !9
  %1500 = add nsw i32 %1499, 1
  store i32 %1500, ptr %60, align 4, !tbaa !9
  br label %1305, !llvm.loop !24

1501:                                             ; preds = %1305
  br label %1502

1502:                                             ; preds = %1501, %1284
  br label %1503

1503:                                             ; preds = %1502, %1014
  br label %1504

1504:                                             ; preds = %1503, %1061, %1013
  %1505 = load i32, ptr %63, align 4, !tbaa !9
  %1506 = icmp ne i32 %1505, 0
  br i1 %1506, label %1507, label %1516

1507:                                             ; preds = %1504
  %1508 = load ptr, ptr %20, align 8, !tbaa !5
  %1509 = load ptr, ptr %25, align 8, !tbaa !5
  %1510 = getelementptr inbounds double, ptr %1509, i64 1
  %1511 = load ptr, ptr %20, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.9, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %71, ptr noundef %49, ptr noundef %1508, ptr noundef @c__1, ptr noundef %1510, ptr noundef %1511, ptr noundef %51)
  %1512 = load ptr, ptr %20, align 8, !tbaa !5
  %1513 = load ptr, ptr %26, align 8, !tbaa !5
  %1514 = getelementptr inbounds double, ptr %1513, i64 1
  %1515 = load ptr, ptr %20, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.9, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %71, ptr noundef %49, ptr noundef %1512, ptr noundef @c__1, ptr noundef %1514, ptr noundef %1515, ptr noundef %51)
  br label %1516

1516:                                             ; preds = %1507, %1504
  %1517 = load i32, ptr %64, align 4, !tbaa !9
  %1518 = icmp ne i32 %1517, 0
  br i1 %1518, label %1519, label %1524

1519:                                             ; preds = %1516
  %1520 = load ptr, ptr %20, align 8, !tbaa !5
  %1521 = load ptr, ptr %27, align 8, !tbaa !5
  %1522 = getelementptr inbounds double, ptr %1521, i64 1
  %1523 = load ptr, ptr %20, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.9, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %72, ptr noundef %50, ptr noundef %1520, ptr noundef @c__1, ptr noundef %1522, ptr noundef %1523, ptr noundef %51)
  br label %1524

1524:                                             ; preds = %1519, %1516
  %1525 = load i32, ptr %74, align 4, !tbaa !9
  %1526 = sitofp i32 %1525 to double
  %1527 = load ptr, ptr %32, align 8, !tbaa !5
  %1528 = getelementptr inbounds double, ptr %1527, i64 1
  store double %1526, ptr %1528, align 8, !tbaa !11
  store i32 1, ptr %80, align 4
  br label %1529

1529:                                             ; preds = %1524, %596, %590, %582
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 8, 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 4, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 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 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 @dorgqr_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

declare i32 @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 @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 @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_n1 = external hidden global i32, align 4
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i32, align 4
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [8 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
@c__0 = external hidden global i32, align 4
@.str.10 = external hidden unnamed_addr constant [5 x i8], align 1
@c_b38 = external hidden global double, align 8
@c_b39 = external hidden global double, align 8
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @dggev3_(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
  %narrow583 = xor i32 %37, -1
  %38 = sext i32 %narrow583 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
  %narrow586 = xor i32 %41, -1
  %42 = sext i32 %narrow586 to i64
  %43 = getelementptr inbounds double, ptr %10, i64 %42
  %44 = load i32, ptr %13, align 4, !tbaa !5
  %narrow587 = xor i32 %44, -1
  %45 = sext i32 %narrow587 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 %.thread760

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

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

.thread766:                                       ; preds = %.thread760
  %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 = %.thread760
  store i32 0, ptr %16, align 4, !tbaa !5
  br label %.thread608

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 %.not571, label %56, label %.thread617.sink.split

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

56:                                               ; preds = %.thread766, %54
  %57 = phi i32 [ %53, %.thread766 ], [ %55, %54 ]
  %.not573.not = icmp eq i32 %57, 0
  br i1 %.not573.not, label %.thread617.sink.split, label %.thread608

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

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

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

70:                                               ; preds = %67
  %71 = load i32, ptr %11, align 4, !tbaa !5
  %72 = icmp slt i32 %71, 1
  %73 = icmp ult i32 %71, %62
  %or.cond639 = and i1 %58, %73
  %or.cond641 = select i1 %72, i1 true, i1 %or.cond639
  br i1 %or.cond641, label %.thread617.sink.split, label %74

74:                                               ; preds = %70
  %75 = load i32, ptr %13, align 4, !tbaa !5
  %76 = icmp slt i32 %75, 1
  %77 = icmp ult i32 %75, %62
  %or.cond640 = and i1 %.not572762, %77
  %or.cond642 = or i1 %76, %or.cond640
  br i1 %or.cond642, label %.thread617.sink.split, label %78

78:                                               ; preds = %74
  store i32 1, ptr %18, align 4, !tbaa !5
  %79 = shl i32 %62, 3
  store i32 %79, ptr %19, align 4, !tbaa !5
  %80 = tail call i32 @llvm.smax.i32(i32 %79, i32 1)
  %81 = icmp sge i32 %60, %80
  %or.cond = or i1 %61, %81
  br i1 %or.cond, label %82, label %.thread617.sink.split

82:                                               ; preds = %78
  call void @dgeqrf_(ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %14, ptr noundef %14, ptr noundef nonnull @c_n1, ptr noundef nonnull %22) #5
  %83 = load i32, ptr %2, align 4, !tbaa !5
  %84 = shl i32 %83, 3
  %85 = call i32 @llvm.smax.i32(i32 %84, i32 1)
  store i32 %85, ptr %18, align 4, !tbaa !5
  %86 = mul nsw i32 %83, 3
  %87 = load double, ptr %14, align 8, !tbaa !9
  %88 = fptosi double %87 to i32
  %89 = add nsw i32 %86, %88
  store i32 %89, ptr %19, align 4, !tbaa !5
  %90 = call i32 @llvm.smax.i32(i32 %85, i32 %89)
  call void @dormqr_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %14, ptr noundef %3, ptr noundef nonnull %4, ptr noundef nonnull %14, ptr noundef nonnull @c_n1, ptr noundef nonnull %22) #5
  store i32 %90, ptr %18, align 4, !tbaa !5
  %91 = load i32, ptr %2, align 4, !tbaa !5
  %92 = mul nsw i32 %91, 3
  %93 = load double, ptr %14, align 8, !tbaa !9
  %94 = fptosi double %93 to i32
  %95 = add nsw i32 %92, %94
  store i32 %95, ptr %19, align 4, !tbaa !5
  %96 = call i32 @llvm.smax.i32(i32 %90, i32 %95)
  br i1 %58, label %97, label %104

97:                                               ; preds = %82
  call void @dorgqr_(ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %10, ptr noundef nonnull %11, ptr noundef nonnull %14, ptr noundef nonnull %14, ptr noundef nonnull @c_n1, ptr noundef nonnull %22) #5
  store i32 %96, ptr %18, align 4, !tbaa !5
  %98 = load i32, ptr %2, align 4, !tbaa !5
  %99 = mul nsw i32 %98, 3
  %100 = load double, ptr %14, align 8, !tbaa !9
  %101 = fptosi double %100 to i32
  %102 = add nsw i32 %99, %101
  store i32 %102, ptr %19, align 4, !tbaa !5
  %103 = call i32 @llvm.smax.i32(i32 %96, i32 %102)
  br label %104

104:                                              ; preds = %97, %82
  %.0 = phi i32 [ %103, %97 ], [ %96, %82 ]
  br i1 %59, label %105, label %106

105:                                              ; preds = %104
  call void @dgghd3_(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull @c__1, 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 %14, ptr noundef nonnull @c_n1, ptr noundef nonnull %22) #5
  br label %.thread612

106:                                              ; preds = %104
  call void @dgghd3_(ptr noundef nonnull @.str, ptr noundef nonnull @.str, ptr noundef nonnull %2, ptr noundef nonnull @c__1, 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 %14, ptr noundef nonnull @c_n1, ptr noundef nonnull %22) #5
  br label %.thread612

.thread612:                                       ; preds = %105, %106
  %.str.4.sink = phi ptr [ @.str.5, %106 ], [ @.str.4, %105 ]
  store i32 %.0, ptr %18, align 4, !tbaa !5
  %107 = load i32, ptr %2, align 4, !tbaa !5
  %108 = mul nsw i32 %107, 3
  %109 = load double, ptr %14, align 8, !tbaa !9
  %110 = fptosi double %109 to i32
  %111 = add nsw i32 %108, %110
  store i32 %111, ptr %19, align 4, !tbaa !5
  %112 = call i32 @llvm.smax.i32(i32 %.0, i32 %111)
  call void @dhgeqz_(ptr noundef nonnull %.str.4.sink, ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef nonnull %2, 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 %14, ptr noundef nonnull @c_n1, ptr noundef nonnull %22) #5
  %113 = load i32, ptr %2, align 4, !tbaa !5
  %114 = shl i32 %113, 1
  %115 = load double, ptr %14, align 8, !tbaa !9
  %116 = fptosi double %115 to i32
  %117 = add nsw i32 %114, %116
  %118 = call i32 @llvm.smax.i32(i32 %112, i32 %117)
  store i32 %112, ptr %18, align 4
  store i32 %117, ptr %19, align 4
  %119 = uitofp nneg i32 %118 to double
  store double %119, ptr %14, align 8, !tbaa !9
  %.pr616.pr = load i32, ptr %16, align 4, !tbaa !5
  %.not581 = icmp eq i32 %.pr616.pr, 0
  br i1 %.not581, label %123, label %.thread617

.thread617.sink.split:                            ; preds = %78, %74, %70, %67, %64, %.thread608, %56, %54, %.thread
  %.sink802 = phi i32 [ -1, %.thread ], [ -1, %54 ], [ -2, %56 ], [ -3, %.thread608 ], [ -5, %64 ], [ -7, %67 ], [ -12, %70 ], [ -14, %74 ], [ -16, %78 ]
  store i32 %.sink802, ptr %16, align 4, !tbaa !5
  br label %.thread617

.thread617:                                       ; preds = %.thread617.sink.split, %.thread612
  %120 = phi i32 [ %.pr616.pr, %.thread612 ], [ %.sink802, %.thread617.sink.split ]
  %121 = sub nsw i32 0, %120
  store i32 %121, ptr %18, align 4, !tbaa !5
  %122 = call i32 @xerbla_(ptr noundef nonnull @.str.6, ptr noundef nonnull %18, i32 noundef 6) #5
  br label %452

123:                                              ; preds = %.thread612
  %124 = icmp eq i32 %113, 0
  %or.cond803 = select i1 %61, i1 true, i1 %124
  br i1 %or.cond803, label %452, label %125

125:                                              ; preds = %123
  %126 = call double @dlamch_(ptr noundef nonnull @.str.7) #5
  %127 = call double @dlamch_(ptr noundef nonnull @.str.4) #5
  store double %127, ptr %31, align 8, !tbaa !9
  %128 = fdiv double 1.000000e+00, %127
  store double %128, ptr %28, align 8, !tbaa !9
  call void @dlabad_(ptr noundef nonnull %31, ptr noundef nonnull %28) #5
  %129 = load double, ptr %31, align 8, !tbaa !9
  %130 = call double @sqrt(double noundef %129) #5
  %131 = fdiv double %130, %126
  store double %131, ptr %31, align 8, !tbaa !9
  %132 = fdiv double 1.000000e+00, %131
  store double %132, ptr %28, align 8, !tbaa !9
  %133 = call double @dlange_(ptr noundef nonnull @.str.8, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef nonnull %14) #5
  store double %133, ptr %20, align 8, !tbaa !9
  %134 = fcmp ogt double %133, 0.000000e+00
  %135 = load double, ptr %31, align 8
  %136 = fcmp olt double %133, %135
  %or.cond647 = select i1 %134, i1 %136, i1 false
  br i1 %or.cond647, label %140, label %137

137:                                              ; preds = %125
  %138 = load double, ptr %28, align 8, !tbaa !9
  %139 = fcmp ogt double %133, %138
  br i1 %139, label %140, label %141

140:                                              ; preds = %125, %137
  %storemerge643 = phi double [ %138, %137 ], [ %135, %125 ]
  store double %storemerge643, ptr %29, align 8, !tbaa !9
  call void @dlascl_(ptr noundef nonnull @.str.9, 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 %141

141:                                              ; preds = %137, %140
  %.not582624 = phi i1 [ false, %140 ], [ true, %137 ]
  %142 = call double @dlange_(ptr noundef nonnull @.str.8, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %14) #5
  store double %142, ptr %21, align 8, !tbaa !9
  %143 = fcmp ogt double %142, 0.000000e+00
  %144 = load double, ptr %31, align 8
  %145 = fcmp olt double %142, %144
  %or.cond649 = select i1 %143, i1 %145, i1 false
  br i1 %or.cond649, label %149, label %146

146:                                              ; preds = %141
  %147 = load double, ptr %28, align 8, !tbaa !9
  %148 = fcmp ogt double %142, %147
  br i1 %148, label %149, label %150

149:                                              ; preds = %141, %146
  %storemerge644 = phi double [ %147, %146 ], [ %144, %141 ]
  store double %storemerge644, ptr %30, align 8, !tbaa !9
  call void @dlascl_(ptr noundef nonnull @.str.9, 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 %150

150:                                              ; preds = %146, %149
  %.not584629 = phi i1 [ false, %149 ], [ true, %146 ]
  %151 = load i32, ptr %2, align 4, !tbaa !5
  %152 = add nsw i32 %151, 1
  %153 = add nsw i32 %152, %151
  %154 = sext i32 %152 to i64
  %155 = getelementptr inbounds double, ptr %47, i64 %154
  %156 = sext i32 %153 to i64
  %157 = getelementptr inbounds double, ptr %47, i64 %156
  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 %155, ptr noundef nonnull %157, ptr noundef nonnull %22) #5
  %158 = load i32, ptr %32, align 4, !tbaa !5
  %159 = add nsw i32 %158, 1
  %160 = load i32, ptr %33, align 4, !tbaa !5
  %161 = sub i32 %159, %160
  store i32 %161, ptr %24, align 4, !tbaa !5
  br i1 %59, label %162, label %165

162:                                              ; preds = %150
  %163 = load i32, ptr %2, align 4, !tbaa !5
  %reass.sub = sub i32 %163, %160
  %164 = add i32 %reass.sub, 1
  br label %165

165:                                              ; preds = %150, %162
  %storemerge = phi i32 [ %164, %162 ], [ %161, %150 ]
  store i32 %storemerge, ptr %23, align 4, !tbaa !5
  %166 = add nsw i32 %161, %153
  %167 = load i32, ptr %15, align 4, !tbaa !5
  %reass.sub696 = sub i32 %167, %166
  %168 = add i32 %reass.sub696, 1
  store i32 %168, ptr %18, align 4, !tbaa !5
  %169 = add i32 %37, 1
  %170 = mul i32 %160, %169
  %171 = sext i32 %170 to i64
  %172 = getelementptr inbounds double, ptr %39, i64 %171
  %173 = sext i32 %166 to i64
  %174 = getelementptr inbounds double, ptr %47, i64 %173
  call void @dgeqrf_(ptr noundef nonnull %24, ptr noundef nonnull %23, ptr noundef %172, ptr noundef nonnull %6, ptr noundef nonnull %157, ptr noundef nonnull %174, ptr noundef nonnull %18, ptr noundef nonnull %22) #5
  %175 = load i32, ptr %15, align 4, !tbaa !5
  %reass.sub697 = sub i32 %175, %166
  %176 = add i32 %reass.sub697, 1
  store i32 %176, ptr %18, align 4, !tbaa !5
  %177 = load i32, ptr %33, align 4, !tbaa !5
  %178 = mul i32 %177, %169
  %179 = sext i32 %178 to i64
  %180 = getelementptr inbounds double, ptr %39, i64 %179
  %181 = add i32 %34, 1
  %182 = mul i32 %177, %181
  %183 = sext i32 %182 to i64
  %184 = getelementptr inbounds double, ptr %36, i64 %183
  call void @dormqr_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull %24, ptr noundef nonnull %23, ptr noundef nonnull %24, ptr noundef %180, ptr noundef nonnull %6, ptr noundef nonnull %157, ptr noundef %184, ptr noundef nonnull %4, ptr noundef nonnull %174, ptr noundef nonnull %18, ptr noundef nonnull %22) #5
  br i1 %58, label %185, label %208

185:                                              ; preds = %165
  call void @dlaset_(ptr noundef nonnull @.str.10, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_b38, ptr noundef nonnull @c_b39, ptr noundef %10, ptr noundef nonnull %11) #5
  %186 = load i32, ptr %24, align 4, !tbaa !5
  %187 = icmp sgt i32 %186, 1
  br i1 %187, label %188, label %200

188:                                              ; preds = %185
  %189 = add nsw i32 %186, -1
  store i32 %189, ptr %18, align 4, !tbaa !5
  store i32 %189, ptr %19, align 4, !tbaa !5
  %190 = load i32, ptr %33, align 4, !tbaa !5
  %191 = add nsw i32 %190, 1
  %192 = mul nsw i32 %190, %37
  %193 = add nsw i32 %191, %192
  %194 = sext i32 %193 to i64
  %195 = getelementptr inbounds double, ptr %39, i64 %194
  %196 = mul nsw i32 %190, %41
  %197 = add nsw i32 %191, %196
  %198 = sext i32 %197 to i64
  %199 = getelementptr inbounds double, ptr %43, i64 %198
  call void @dlacpy_(ptr noundef nonnull @.str.2, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef %195, ptr noundef nonnull %6, ptr noundef %199, ptr noundef nonnull %11) #5
  br label %200

200:                                              ; preds = %188, %185
  %201 = load i32, ptr %15, align 4, !tbaa !5
  %reass.sub698 = sub i32 %201, %166
  %202 = add i32 %reass.sub698, 1
  store i32 %202, ptr %18, align 4, !tbaa !5
  %203 = load i32, ptr %33, align 4, !tbaa !5
  %204 = add i32 %41, 1
  %205 = mul i32 %203, %204
  %206 = sext i32 %205 to i64
  %207 = getelementptr inbounds double, ptr %43, i64 %206
  call void @dorgqr_(ptr noundef nonnull %24, ptr noundef nonnull %24, ptr noundef nonnull %24, ptr noundef %207, ptr noundef nonnull %11, ptr noundef nonnull %157, ptr noundef nonnull %174, ptr noundef nonnull %18, ptr noundef nonnull %22) #5
  br label %208

208:                                              ; preds = %200, %165
  br i1 %.not572762, label %209, label %210

209:                                              ; preds = %208
  call void @dlaset_(ptr noundef nonnull @.str.10, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_b38, ptr noundef nonnull @c_b39, ptr noundef %12, ptr noundef nonnull %13) #5
  br label %210

210:                                              ; preds = %209, %208
  %211 = load i32, ptr %15, align 4, !tbaa !5
  %reass.sub700 = sub i32 %211, %166
  %212 = add i32 %reass.sub700, 1
  store i32 %212, ptr %18, align 4, !tbaa !5
  br i1 %59, label %213, label %214

213:                                              ; preds = %210
  call void @dgghd3_(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 %174, ptr noundef nonnull %18, ptr noundef nonnull %22) #5
  br label %222

214:                                              ; preds = %210
  %215 = load i32, ptr %33, align 4, !tbaa !5
  %216 = mul i32 %215, %181
  %217 = sext i32 %216 to i64
  %218 = getelementptr inbounds double, ptr %36, i64 %217
  %219 = mul i32 %215, %169
  %220 = sext i32 %219 to i64
  %221 = getelementptr inbounds double, ptr %39, i64 %220
  call void @dgghd3_(ptr noundef nonnull @.str, ptr noundef nonnull @.str, ptr noundef nonnull %24, ptr noundef nonnull @c__1, ptr noundef nonnull %24, ptr noundef %218, ptr noundef nonnull %4, ptr noundef %221, ptr noundef nonnull %6, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %174, ptr noundef nonnull %18, ptr noundef nonnull %22) #5
  br label %222

222:                                              ; preds = %214, %213
  %.606 = phi i8 [ 69, %214 ], [ 83, %213 ]
  store i8 %.606, ptr %27, align 1, !tbaa !11
  %223 = load i32, ptr %15, align 4, !tbaa !5
  %reass.sub701 = sub i32 %223, %153
  %224 = add i32 %reass.sub701, 1
  store i32 %224, 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 %157, ptr noundef nonnull %18, ptr noundef nonnull %22) #5
  %225 = load i32, ptr %22, align 4, !tbaa !5
  %.not588 = icmp eq i32 %225, 0
  br i1 %.not588, label %235, label %226

226:                                              ; preds = %222
  %227 = icmp slt i32 %225, 1
  %.pre = load i32, ptr %2, align 4, !tbaa !5
  %.not600 = icmp sgt i32 %225, %.pre
  %or.cond804 = select i1 %227, i1 true, i1 %.not600
  br i1 %or.cond804, label %228, label %.loopexit655.sink.split

228:                                              ; preds = %226
  %229 = icmp sle i32 %225, %.pre
  %230 = shl i32 %.pre, 1
  %.not601 = icmp sgt i32 %225, %230
  %or.cond607 = or i1 %229, %.not601
  br i1 %or.cond607, label %233, label %231

231:                                              ; preds = %228
  %232 = sub nsw i32 %225, %.pre
  br label %.loopexit655.sink.split

233:                                              ; preds = %228
  %234 = add nsw i32 %.pre, 1
  br label %.loopexit655.sink.split

235:                                              ; preds = %222
  br i1 %59, label %236, label %.loopexit655

236:                                              ; preds = %235
  br i1 %58, label %237, label %.thread630

237:                                              ; preds = %236
  %. = select i1 %.not572762, i8 66, i8 76
  store i8 %., ptr %27, align 1, !tbaa !11
  call void @dtgevc_(ptr noundef nonnull %27, ptr noundef nonnull @.str.11, 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 %157, ptr noundef nonnull %22) #5
  %238 = load i32, ptr %22, align 4, !tbaa !5
  %.not589 = icmp eq i32 %238, 0
  br i1 %.not589, label %243, label %240

.thread630:                                       ; preds = %236
  store i8 82, ptr %27, align 1, !tbaa !11
  call void @dtgevc_(ptr noundef nonnull %27, ptr noundef nonnull @.str.11, 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 %157, ptr noundef nonnull %22) #5
  %239 = load i32, ptr %22, align 4, !tbaa !5
  %.not589631 = icmp eq i32 %239, 0
  br i1 %.not589631, label %.thread632, label %240

240:                                              ; preds = %.thread630, %237
  %241 = load i32, ptr %2, align 4, !tbaa !5
  %242 = add nsw i32 %241, 2
  br label %.loopexit655.sink.split

243:                                              ; preds = %237
  call void @dggbak_(ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.2, ptr noundef nonnull %2, ptr noundef nonnull %33, ptr noundef nonnull %32, ptr noundef nonnull %14, ptr noundef nonnull %155, ptr noundef nonnull %2, ptr noundef %10, ptr noundef nonnull %11, ptr noundef nonnull %22) #5
  %244 = load i32, ptr %2, align 4, !tbaa !5
  store i32 %244, ptr %18, align 4, !tbaa !5
  %.not590674 = icmp slt i32 %244, 1
  br i1 %.not590674, label %.thread632, label %.lr.ph676

.lr.ph676:                                        ; preds = %243
  %245 = load double, ptr %31, align 8
  %246 = add nuw i32 %244, 1
  %247 = sext i32 %41 to i64
  %wide.trip.count728 = zext i32 %246 to i64
  %248 = zext nneg i32 %244 to i64
  %249 = shl nsw i64 %247, 3
  %250 = shl nsw i64 %42, 3
  %251 = getelementptr i8, ptr %10, i64 %249
  %252 = getelementptr i8, ptr %251, i64 %250
  %scevgep = getelementptr i8, ptr %252, i64 8
  %253 = shl nuw nsw i64 %wide.trip.count728, 3
  %254 = add nsw i64 %253, -8
  %255 = mul i64 %254, %247
  %256 = getelementptr i8, ptr %10, i64 %255
  %257 = getelementptr i8, ptr %256, i64 %250
  %scevgep815 = getelementptr i8, ptr %257, i64 %253
  %258 = shl nsw i64 %247, 4
  %259 = getelementptr i8, ptr %10, i64 %258
  %260 = getelementptr i8, ptr %259, i64 %250
  %scevgep816 = getelementptr i8, ptr %260, i64 8
  %261 = add nsw i64 %249, 8
  %262 = mul i64 %261, %wide.trip.count728
  %263 = getelementptr i8, ptr %10, i64 %262
  %scevgep817 = getelementptr i8, ptr %263, i64 %250
  %264 = zext nneg i32 %244 to i64
  %265 = zext nneg i32 %244 to i64
  %266 = zext nneg i32 %244 to i64
  %xtraiter = and i64 %265, 1
  %267 = icmp eq i32 %246, 2
  %unroll_iter = and i64 %265, 2147483646
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  %min.iters.check821 = icmp ult i32 %244, 4
  %bound0 = icmp ult ptr %scevgep, %scevgep817
  %bound1 = icmp ult ptr %scevgep816, %scevgep815
  %found.conflict = and i1 %bound0, %bound1
  %stride.check = icmp slt i32 %41, 0
  %268 = or i1 %found.conflict, %stride.check
  %n.vec824 = and i64 %264, 2147483644
  %ind.end825 = or disjoint i64 %n.vec824, 1
  %cmp.n837 = icmp eq i64 %n.vec824, %264
  %269 = and i32 %244, 1
  %lcmp.mod896.not = icmp eq i32 %269, 0
  %min.iters.check = icmp ult i32 %244, 4
  %n.vec = and i64 %248, 2147483644
  %ind.end = or disjoint i64 %n.vec, 1
  %cmp.n = icmp eq i64 %n.vec, %248
  br label %270

270:                                              ; preds = %.lr.ph676, %.loopexit656
  %indvars.iv725 = phi i64 [ 1, %.lr.ph676 ], [ %indvars.iv.next726, %.loopexit656 ]
  %271 = getelementptr inbounds double, ptr %40, i64 %indvars.iv725
  %272 = load double, ptr %271, align 8, !tbaa !9
  %273 = fcmp olt double %272, 0.000000e+00
  br i1 %273, label %.loopexit656, label %274

274:                                              ; preds = %270
  %275 = fcmp oeq double %272, 0.000000e+00
  store i32 %244, ptr %19, align 4, !tbaa !5
  %276 = mul nsw i64 %indvars.iv725, %247
  br i1 %275, label %.lr.ph666, label %.lr.ph

.lr.ph666:                                        ; preds = %274
  %invariant.gep778 = getelementptr double, ptr %43, i64 %276
  br i1 %267, label %.loopexit658.loopexit.unr-lcssa, label %.lr.ph666.new

.lr.ph666.new:                                    ; preds = %.lr.ph666
  %invariant.gep908 = getelementptr i8, ptr %invariant.gep778, i64 8
  br label %277

277:                                              ; preds = %277, %.lr.ph666.new
  %indvars.iv710 = phi i64 [ 1, %.lr.ph666.new ], [ %indvars.iv.next711.1, %277 ]
  %.0548664 = phi double [ 0.000000e+00, %.lr.ph666.new ], [ %289, %277 ]
  %niter = phi i64 [ 0, %.lr.ph666.new ], [ %niter.next.1, %277 ]
  %gep779 = getelementptr double, ptr %invariant.gep778, i64 %indvars.iv710
  %278 = load double, ptr %gep779, align 8, !tbaa !9
  %279 = fcmp oge double %278, 0.000000e+00
  %280 = fneg double %278
  %281 = select i1 %279, double %278, double %280
  %282 = fcmp oge double %.0548664, %281
  %283 = select i1 %282, double %.0548664, double %281
  %gep909 = getelementptr double, ptr %invariant.gep908, i64 %indvars.iv710
  %284 = load double, ptr %gep909, align 8, !tbaa !9
  %285 = fcmp oge double %284, 0.000000e+00
  %286 = fneg double %284
  %287 = select i1 %285, double %284, double %286
  %288 = fcmp oge double %283, %287
  %289 = select i1 %288, double %283, double %287
  %indvars.iv.next711.1 = add nuw nsw i64 %indvars.iv710, 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 %.loopexit658.loopexit.unr-lcssa, label %277, !llvm.loop !12

.lr.ph:                                           ; preds = %274
  %290 = add nuw nsw i64 %indvars.iv725, 1
  %291 = mul nsw i64 %290, %247
  %invariant.gep = getelementptr double, ptr %43, i64 %276
  %invariant.gep776 = getelementptr double, ptr %43, i64 %291
  br label %292

292:                                              ; preds = %.lr.ph, %292
  %indvars.iv = phi i64 [ 1, %.lr.ph ], [ %indvars.iv.next, %292 ]
  %.1549661 = phi double [ 0.000000e+00, %.lr.ph ], [ %303, %292 ]
  %gep = getelementptr double, ptr %invariant.gep, i64 %indvars.iv
  %293 = load double, ptr %gep, align 8, !tbaa !9
  %294 = fcmp oge double %293, 0.000000e+00
  %295 = fneg double %293
  %296 = select i1 %294, double %293, double %295
  %gep777 = getelementptr double, ptr %invariant.gep776, i64 %indvars.iv
  %297 = load double, ptr %gep777, align 8, !tbaa !9
  %298 = fcmp oge double %297, 0.000000e+00
  %299 = fneg double %297
  %300 = select i1 %298, double %297, double %299
  %301 = fadd double %296, %300
  %302 = fcmp oge double %.1549661, %301
  %303 = select i1 %302, double %.1549661, double %301
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count728
  br i1 %exitcond.not, label %.loopexit658, label %292, !llvm.loop !14

.loopexit658.loopexit.unr-lcssa:                  ; preds = %277, %.lr.ph666
  %.lcssa893.ph = phi double [ poison, %.lr.ph666 ], [ %289, %277 ]
  %indvars.iv710.unr = phi i64 [ 1, %.lr.ph666 ], [ %indvars.iv.next711.1, %277 ]
  %.0548664.unr = phi double [ 0.000000e+00, %.lr.ph666 ], [ %289, %277 ]
  br i1 %lcmp.mod.not, label %.loopexit658, label %.loopexit658.loopexit.epilog-lcssa

.loopexit658.loopexit.epilog-lcssa:               ; preds = %.loopexit658.loopexit.unr-lcssa
  %gep779.epil = getelementptr double, ptr %invariant.gep778, i64 %indvars.iv710.unr
  %304 = load double, ptr %gep779.epil, align 8, !tbaa !9
  %305 = fcmp oge double %304, 0.000000e+00
  %306 = fneg double %304
  %307 = select i1 %305, double %304, double %306
  %308 = fcmp oge double %.0548664.unr, %307
  %309 = select i1 %308, double %.0548664.unr, double %307
  br label %.loopexit658

.loopexit658:                                     ; preds = %292, %.loopexit658.loopexit.epilog-lcssa, %.loopexit658.loopexit.unr-lcssa
  %.2550 = phi double [ %.lcssa893.ph, %.loopexit658.loopexit.unr-lcssa ], [ %309, %.loopexit658.loopexit.epilog-lcssa ], [ %303, %292 ]
  %310 = fcmp olt double %.2550, %245
  br i1 %310, label %.loopexit656, label %311

311:                                              ; preds = %.loopexit658
  %312 = fdiv double 1.000000e+00, %.2550
  store i32 %244, ptr %19, align 4, !tbaa !5
  %313 = mul nsw i64 %indvars.iv725, %247
  br i1 %275, label %.lr.ph673, label %.lr.ph670

.lr.ph673:                                        ; preds = %311
  %invariant.gep784 = getelementptr double, ptr %43, i64 %313
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph673
  %broadcast.splatinsert = insertelement <2 x double> poison, double %312, 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
  %314 = getelementptr double, ptr %invariant.gep784, i64 %offset.idx
  %315 = getelementptr i8, ptr %314, i64 16
  %wide.load = load <2 x double>, ptr %314, align 8, !tbaa !9
  %wide.load814 = load <2 x double>, ptr %315, align 8, !tbaa !9
  %316 = fmul <2 x double> %broadcast.splat, %wide.load
  %317 = fmul <2 x double> %broadcast.splat, %wide.load814
  store <2 x double> %316, ptr %314, align 8, !tbaa !9
  store <2 x double> %317, ptr %315, align 8, !tbaa !9
  %index.next = add nuw i64 %index, 4
  %318 = icmp eq i64 %index.next, %n.vec
  br i1 %318, label %middle.block, label %vector.body, !llvm.loop !15

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

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

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %indvars.iv720 = phi i64 [ %indvars.iv.next721, %scalar.ph ], [ %indvars.iv720.ph, %scalar.ph.preheader ]
  %gep785 = getelementptr double, ptr %invariant.gep784, i64 %indvars.iv720
  %319 = load double, ptr %gep785, align 8, !tbaa !9
  %320 = fmul double %312, %319
  store double %320, ptr %gep785, align 8, !tbaa !9
  %indvars.iv.next721 = add nuw nsw i64 %indvars.iv720, 1
  %exitcond724.not = icmp eq i64 %indvars.iv.next721, %wide.trip.count728
  br i1 %exitcond724.not, label %.loopexit656, label %scalar.ph, !llvm.loop !18

.lr.ph670:                                        ; preds = %311
  %321 = add nuw nsw i64 %indvars.iv725, 1
  %322 = mul nsw i64 %321, %247
  %invariant.gep780 = getelementptr double, ptr %43, i64 %313
  %invariant.gep782 = getelementptr double, ptr %43, i64 %322
  %brmerge = select i1 %min.iters.check821, i1 true, i1 %268
  br i1 %brmerge, label %scalar.ph820.preheader, label %vector.ph822

vector.ph822:                                     ; preds = %.lr.ph670
  %broadcast.splatinsert832 = insertelement <2 x double> poison, double %312, i64 0
  %broadcast.splat833 = shufflevector <2 x double> %broadcast.splatinsert832, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body827

vector.body827:                                   ; preds = %vector.body827, %vector.ph822
  %index828 = phi i64 [ 0, %vector.ph822 ], [ %index.next836, %vector.body827 ]
  %offset.idx829 = or disjoint i64 %index828, 1
  %323 = getelementptr double, ptr %invariant.gep780, i64 %offset.idx829
  %324 = getelementptr i8, ptr %323, i64 16
  %wide.load830 = load <2 x double>, ptr %323, align 8, !tbaa !9, !alias.scope !19, !noalias !22
  %wide.load831 = load <2 x double>, ptr %324, align 8, !tbaa !9, !alias.scope !19, !noalias !22
  %325 = fmul <2 x double> %broadcast.splat833, %wide.load830
  %326 = fmul <2 x double> %broadcast.splat833, %wide.load831
  store <2 x double> %325, ptr %323, align 8, !tbaa !9, !alias.scope !19, !noalias !22
  store <2 x double> %326, ptr %324, align 8, !tbaa !9, !alias.scope !19, !noalias !22
  %327 = getelementptr double, ptr %invariant.gep782, i64 %offset.idx829
  %328 = getelementptr i8, ptr %327, i64 16
  %wide.load834 = load <2 x double>, ptr %327, align 8, !tbaa !9, !alias.scope !22
  %wide.load835 = load <2 x double>, ptr %328, align 8, !tbaa !9, !alias.scope !22
  %329 = fmul <2 x double> %broadcast.splat833, %wide.load834
  %330 = fmul <2 x double> %broadcast.splat833, %wide.load835
  store <2 x double> %329, ptr %327, align 8, !tbaa !9, !alias.scope !22
  store <2 x double> %330, ptr %328, align 8, !tbaa !9, !alias.scope !22
  %index.next836 = add nuw i64 %index828, 4
  %331 = icmp eq i64 %index.next836, %n.vec824
  br i1 %331, label %middle.block819, label %vector.body827, !llvm.loop !24

middle.block819:                                  ; preds = %vector.body827
  br i1 %cmp.n837, label %.loopexit656, label %scalar.ph820.preheader

scalar.ph820.preheader:                           ; preds = %.lr.ph670, %middle.block819
  %indvars.iv715.ph = phi i64 [ 1, %.lr.ph670 ], [ %ind.end825, %middle.block819 ]
  br i1 %lcmp.mod896.not, label %scalar.ph820.prol.loopexit, label %scalar.ph820.prol

scalar.ph820.prol:                                ; preds = %scalar.ph820.preheader
  %gep781.prol = getelementptr double, ptr %invariant.gep780, i64 %indvars.iv715.ph
  %332 = load double, ptr %gep781.prol, align 8, !tbaa !9
  %333 = fmul double %312, %332
  store double %333, ptr %gep781.prol, align 8, !tbaa !9
  %gep783.prol = getelementptr double, ptr %invariant.gep782, i64 %indvars.iv715.ph
  %334 = load double, ptr %gep783.prol, align 8, !tbaa !9
  %335 = fmul double %312, %334
  store double %335, ptr %gep783.prol, align 8, !tbaa !9
  %indvars.iv.next716.prol = add nuw nsw i64 %indvars.iv715.ph, 1
  br label %scalar.ph820.prol.loopexit

scalar.ph820.prol.loopexit:                       ; preds = %scalar.ph820.prol, %scalar.ph820.preheader
  %indvars.iv715.unr = phi i64 [ %indvars.iv715.ph, %scalar.ph820.preheader ], [ %indvars.iv.next716.prol, %scalar.ph820.prol ]
  %336 = icmp eq i64 %indvars.iv715.ph, %266
  br i1 %336, label %.loopexit656, label %scalar.ph820

scalar.ph820:                                     ; preds = %scalar.ph820.prol.loopexit, %scalar.ph820
  %indvars.iv715 = phi i64 [ %indvars.iv.next716.1, %scalar.ph820 ], [ %indvars.iv715.unr, %scalar.ph820.prol.loopexit ]
  %gep781 = getelementptr double, ptr %invariant.gep780, i64 %indvars.iv715
  %337 = load double, ptr %gep781, align 8, !tbaa !9
  %338 = fmul double %312, %337
  store double %338, ptr %gep781, align 8, !tbaa !9
  %gep783 = getelementptr double, ptr %invariant.gep782, i64 %indvars.iv715
  %339 = load double, ptr %gep783, align 8, !tbaa !9
  %340 = fmul double %312, %339
  store double %340, ptr %gep783, align 8, !tbaa !9
  %indvars.iv.next716 = add nuw nsw i64 %indvars.iv715, 1
  %gep781.1 = getelementptr double, ptr %invariant.gep780, i64 %indvars.iv.next716
  %341 = load double, ptr %gep781.1, align 8, !tbaa !9
  %342 = fmul double %312, %341
  store double %342, ptr %gep781.1, align 8, !tbaa !9
  %gep783.1 = getelementptr double, ptr %invariant.gep782, i64 %indvars.iv.next716
  %343 = load double, ptr %gep783.1, align 8, !tbaa !9
  %344 = fmul double %312, %343
  store double %344, ptr %gep783.1, align 8, !tbaa !9
  %indvars.iv.next716.1 = add nuw nsw i64 %indvars.iv715, 2
  %exitcond719.not.1 = icmp eq i64 %indvars.iv.next716.1, %wide.trip.count728
  br i1 %exitcond719.not.1, label %.loopexit656, label %scalar.ph820, !llvm.loop !25

.loopexit656:                                     ; preds = %scalar.ph820.prol.loopexit, %scalar.ph820, %scalar.ph, %middle.block819, %middle.block, %270, %.loopexit658
  %indvars.iv.next726 = add nuw nsw i64 %indvars.iv725, 1
  %exitcond729.not = icmp eq i64 %indvars.iv.next726, %wide.trip.count728
  br i1 %exitcond729.not, label %.thread632, label %270, !llvm.loop !26

.thread632:                                       ; preds = %.loopexit656, %243, %.thread630
  br i1 %.not572762, label %345, label %.loopexit655

345:                                              ; preds = %.thread632
  call void @dggbak_(ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.12, ptr noundef nonnull %2, ptr noundef nonnull %33, ptr noundef nonnull %32, ptr noundef nonnull %14, ptr noundef nonnull %155, ptr noundef nonnull %2, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %22) #5
  %346 = load i32, ptr %2, align 4, !tbaa !5
  store i32 %346, ptr %18, align 4, !tbaa !5
  %.not591693 = icmp slt i32 %346, 1
  br i1 %.not591693, label %.loopexit655, label %.lr.ph695

.lr.ph695:                                        ; preds = %345
  %347 = load double, ptr %31, align 8
  %348 = add nuw i32 %346, 1
  %349 = sext i32 %44 to i64
  %wide.trip.count753 = zext i32 %348 to i64
  %350 = zext nneg i32 %346 to i64
  %351 = shl nsw i64 %349, 3
  %352 = shl nsw i64 %45, 3
  %353 = getelementptr i8, ptr %12, i64 %351
  %354 = getelementptr i8, ptr %353, i64 %352
  %scevgep856 = getelementptr i8, ptr %354, i64 8
  %355 = shl nuw nsw i64 %wide.trip.count753, 3
  %356 = add nsw i64 %355, -8
  %357 = mul i64 %356, %349
  %358 = getelementptr i8, ptr %12, i64 %357
  %359 = getelementptr i8, ptr %358, i64 %352
  %scevgep857 = getelementptr i8, ptr %359, i64 %355
  %360 = shl nsw i64 %349, 4
  %361 = getelementptr i8, ptr %12, i64 %360
  %362 = getelementptr i8, ptr %361, i64 %352
  %scevgep858 = getelementptr i8, ptr %362, i64 8
  %363 = add nsw i64 %351, 8
  %364 = mul i64 %363, %wide.trip.count753
  %365 = getelementptr i8, ptr %12, i64 %364
  %scevgep859 = getelementptr i8, ptr %365, i64 %352
  %366 = zext nneg i32 %346 to i64
  %367 = zext nneg i32 %346 to i64
  %368 = zext nneg i32 %346 to i64
  %xtraiter898 = and i64 %367, 1
  %369 = icmp eq i32 %348, 2
  %unroll_iter901 = and i64 %367, 2147483646
  %lcmp.mod899.not = icmp eq i64 %xtraiter898, 0
  %min.iters.check867 = icmp ult i32 %346, 4
  %bound0860 = icmp ult ptr %scevgep856, %scevgep859
  %bound1861 = icmp ult ptr %scevgep858, %scevgep857
  %found.conflict862 = and i1 %bound0860, %bound1861
  %stride.check863 = icmp slt i32 %44, 0
  %370 = or i1 %found.conflict862, %stride.check863
  %n.vec870 = and i64 %366, 2147483644
  %ind.end871 = or disjoint i64 %n.vec870, 1
  %cmp.n883 = icmp eq i64 %n.vec870, %366
  %371 = and i32 %346, 1
  %lcmp.mod904.not = icmp eq i32 %371, 0
  %min.iters.check840 = icmp ult i32 %346, 4
  %n.vec843 = and i64 %350, 2147483644
  %ind.end844 = or disjoint i64 %n.vec843, 1
  %cmp.n854 = icmp eq i64 %n.vec843, %350
  br label %372

372:                                              ; preds = %.lr.ph695, %.loopexit
  %indvars.iv750 = phi i64 [ 1, %.lr.ph695 ], [ %indvars.iv.next751, %.loopexit ]
  %373 = getelementptr inbounds double, ptr %40, i64 %indvars.iv750
  %374 = load double, ptr %373, align 8, !tbaa !9
  %375 = fcmp olt double %374, 0.000000e+00
  br i1 %375, label %.loopexit, label %376

376:                                              ; preds = %372
  %377 = fcmp oeq double %374, 0.000000e+00
  store i32 %346, ptr %19, align 4, !tbaa !5
  %378 = mul nsw i64 %indvars.iv750, %349
  br i1 %377, label %.lr.ph685, label %.lr.ph680

.lr.ph685:                                        ; preds = %376
  %invariant.gep790 = getelementptr double, ptr %46, i64 %378
  br i1 %369, label %.loopexit653.loopexit.unr-lcssa, label %.lr.ph685.new

.lr.ph685.new:                                    ; preds = %.lr.ph685
  %invariant.gep910 = getelementptr i8, ptr %invariant.gep790, i64 8
  br label %379

379:                                              ; preds = %379, %.lr.ph685.new
  %indvars.iv735 = phi i64 [ 1, %.lr.ph685.new ], [ %indvars.iv.next736.1, %379 ]
  %.3551683 = phi double [ 0.000000e+00, %.lr.ph685.new ], [ %391, %379 ]
  %niter902 = phi i64 [ 0, %.lr.ph685.new ], [ %niter902.next.1, %379 ]
  %gep791 = getelementptr double, ptr %invariant.gep790, i64 %indvars.iv735
  %380 = load double, ptr %gep791, align 8, !tbaa !9
  %381 = fcmp oge double %380, 0.000000e+00
  %382 = fneg double %380
  %383 = select i1 %381, double %380, double %382
  %384 = fcmp oge double %.3551683, %383
  %385 = select i1 %384, double %.3551683, double %383
  %gep911 = getelementptr double, ptr %invariant.gep910, i64 %indvars.iv735
  %386 = load double, ptr %gep911, align 8, !tbaa !9
  %387 = fcmp oge double %386, 0.000000e+00
  %388 = fneg double %386
  %389 = select i1 %387, double %386, double %388
  %390 = fcmp oge double %385, %389
  %391 = select i1 %390, double %385, double %389
  %indvars.iv.next736.1 = add nuw nsw i64 %indvars.iv735, 2
  %niter902.next.1 = add i64 %niter902, 2
  %niter902.ncmp.1 = icmp eq i64 %niter902.next.1, %unroll_iter901
  br i1 %niter902.ncmp.1, label %.loopexit653.loopexit.unr-lcssa, label %379, !llvm.loop !27

.lr.ph680:                                        ; preds = %376
  %392 = add nuw nsw i64 %indvars.iv750, 1
  %393 = mul nsw i64 %392, %349
  %invariant.gep786 = getelementptr double, ptr %46, i64 %378
  %invariant.gep788 = getelementptr double, ptr %46, i64 %393
  br label %394

394:                                              ; preds = %.lr.ph680, %394
  %indvars.iv730 = phi i64 [ 1, %.lr.ph680 ], [ %indvars.iv.next731, %394 ]
  %.4552678 = phi double [ 0.000000e+00, %.lr.ph680 ], [ %405, %394 ]
  %gep787 = getelementptr double, ptr %invariant.gep786, i64 %indvars.iv730
  %395 = load double, ptr %gep787, align 8, !tbaa !9
  %396 = fcmp oge double %395, 0.000000e+00
  %397 = fneg double %395
  %398 = select i1 %396, double %395, double %397
  %gep789 = getelementptr double, ptr %invariant.gep788, i64 %indvars.iv730
  %399 = load double, ptr %gep789, align 8, !tbaa !9
  %400 = fcmp oge double %399, 0.000000e+00
  %401 = fneg double %399
  %402 = select i1 %400, double %399, double %401
  %403 = fadd double %398, %402
  %404 = fcmp oge double %.4552678, %403
  %405 = select i1 %404, double %.4552678, double %403
  %indvars.iv.next731 = add nuw nsw i64 %indvars.iv730, 1
  %exitcond734.not = icmp eq i64 %indvars.iv.next731, %wide.trip.count753
  br i1 %exitcond734.not, label %.loopexit653, label %394, !llvm.loop !28

.loopexit653.loopexit.unr-lcssa:                  ; preds = %379, %.lr.ph685
  %.lcssa889.ph = phi double [ poison, %.lr.ph685 ], [ %391, %379 ]
  %indvars.iv735.unr = phi i64 [ 1, %.lr.ph685 ], [ %indvars.iv.next736.1, %379 ]
  %.3551683.unr = phi double [ 0.000000e+00, %.lr.ph685 ], [ %391, %379 ]
  br i1 %lcmp.mod899.not, label %.loopexit653, label %.loopexit653.loopexit.epilog-lcssa

.loopexit653.loopexit.epilog-lcssa:               ; preds = %.loopexit653.loopexit.unr-lcssa
  %gep791.epil = getelementptr double, ptr %invariant.gep790, i64 %indvars.iv735.unr
  %406 = load double, ptr %gep791.epil, align 8, !tbaa !9
  %407 = fcmp oge double %406, 0.000000e+00
  %408 = fneg double %406
  %409 = select i1 %407, double %406, double %408
  %410 = fcmp oge double %.3551683.unr, %409
  %411 = select i1 %410, double %.3551683.unr, double %409
  br label %.loopexit653

.loopexit653:                                     ; preds = %394, %.loopexit653.loopexit.epilog-lcssa, %.loopexit653.loopexit.unr-lcssa
  %.5553 = phi double [ %.lcssa889.ph, %.loopexit653.loopexit.unr-lcssa ], [ %411, %.loopexit653.loopexit.epilog-lcssa ], [ %405, %394 ]
  %412 = fcmp olt double %.5553, %347
  br i1 %412, label %.loopexit, label %413

413:                                              ; preds = %.loopexit653
  %414 = fdiv double 1.000000e+00, %.5553
  store i32 %346, ptr %19, align 4, !tbaa !5
  %415 = mul nsw i64 %indvars.iv750, %349
  br i1 %377, label %.lr.ph692, label %.lr.ph689

.lr.ph692:                                        ; preds = %413
  %invariant.gep796 = getelementptr double, ptr %46, i64 %415
  br i1 %min.iters.check840, label %scalar.ph839.preheader, label %vector.ph841

vector.ph841:                                     ; preds = %.lr.ph692
  %broadcast.splatinsert851 = insertelement <2 x double> poison, double %414, i64 0
  %broadcast.splat852 = shufflevector <2 x double> %broadcast.splatinsert851, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body846

vector.body846:                                   ; preds = %vector.body846, %vector.ph841
  %index847 = phi i64 [ 0, %vector.ph841 ], [ %index.next853, %vector.body846 ]
  %offset.idx848 = or disjoint i64 %index847, 1
  %416 = getelementptr double, ptr %invariant.gep796, i64 %offset.idx848
  %417 = getelementptr i8, ptr %416, i64 16
  %wide.load849 = load <2 x double>, ptr %416, align 8, !tbaa !9
  %wide.load850 = load <2 x double>, ptr %417, align 8, !tbaa !9
  %418 = fmul <2 x double> %broadcast.splat852, %wide.load849
  %419 = fmul <2 x double> %broadcast.splat852, %wide.load850
  store <2 x double> %418, ptr %416, align 8, !tbaa !9
  store <2 x double> %419, ptr %417, align 8, !tbaa !9
  %index.next853 = add nuw i64 %index847, 4
  %420 = icmp eq i64 %index.next853, %n.vec843
  br i1 %420, label %middle.block838, label %vector.body846, !llvm.loop !29

middle.block838:                                  ; preds = %vector.body846
  br i1 %cmp.n854, label %.loopexit, label %scalar.ph839.preheader

scalar.ph839.preheader:                           ; preds = %middle.block838, %.lr.ph692
  %indvars.iv745.ph = phi i64 [ 1, %.lr.ph692 ], [ %ind.end844, %middle.block838 ]
  br label %scalar.ph839

scalar.ph839:                                     ; preds = %scalar.ph839.preheader, %scalar.ph839
  %indvars.iv745 = phi i64 [ %indvars.iv.next746, %scalar.ph839 ], [ %indvars.iv745.ph, %scalar.ph839.preheader ]
  %gep797 = getelementptr double, ptr %invariant.gep796, i64 %indvars.iv745
  %421 = load double, ptr %gep797, align 8, !tbaa !9
  %422 = fmul double %414, %421
  store double %422, ptr %gep797, align 8, !tbaa !9
  %indvars.iv.next746 = add nuw nsw i64 %indvars.iv745, 1
  %exitcond749.not = icmp eq i64 %indvars.iv.next746, %wide.trip.count753
  br i1 %exitcond749.not, label %.loopexit, label %scalar.ph839, !llvm.loop !30

.lr.ph689:                                        ; preds = %413
  %423 = add nuw nsw i64 %indvars.iv750, 1
  %424 = mul nsw i64 %423, %349
  %invariant.gep792 = getelementptr double, ptr %46, i64 %415
  %invariant.gep794 = getelementptr double, ptr %46, i64 %424
  %brmerge912 = select i1 %min.iters.check867, i1 true, i1 %370
  br i1 %brmerge912, label %scalar.ph866.preheader, label %vector.ph868

vector.ph868:                                     ; preds = %.lr.ph689
  %broadcast.splatinsert878 = insertelement <2 x double> poison, double %414, i64 0
  %broadcast.splat879 = shufflevector <2 x double> %broadcast.splatinsert878, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body873

vector.body873:                                   ; preds = %vector.body873, %vector.ph868
  %index874 = phi i64 [ 0, %vector.ph868 ], [ %index.next882, %vector.body873 ]
  %offset.idx875 = or disjoint i64 %index874, 1
  %425 = getelementptr double, ptr %invariant.gep792, i64 %offset.idx875
  %426 = getelementptr i8, ptr %425, i64 16
  %wide.load876 = load <2 x double>, ptr %425, align 8, !tbaa !9, !alias.scope !31, !noalias !34
  %wide.load877 = load <2 x double>, ptr %426, align 8, !tbaa !9, !alias.scope !31, !noalias !34
  %427 = fmul <2 x double> %broadcast.splat879, %wide.load876
  %428 = fmul <2 x double> %broadcast.splat879, %wide.load877
  store <2 x double> %427, ptr %425, align 8, !tbaa !9, !alias.scope !31, !noalias !34
  store <2 x double> %428, ptr %426, align 8, !tbaa !9, !alias.scope !31, !noalias !34
  %429 = getelementptr double, ptr %invariant.gep794, i64 %offset.idx875
  %430 = getelementptr i8, ptr %429, i64 16
  %wide.load880 = load <2 x double>, ptr %429, align 8, !tbaa !9, !alias.scope !34
  %wide.load881 = load <2 x double>, ptr %430, align 8, !tbaa !9, !alias.scope !34
  %431 = fmul <2 x double> %broadcast.splat879, %wide.load880
  %432 = fmul <2 x double> %broadcast.splat879, %wide.load881
  store <2 x double> %431, ptr %429, align 8, !tbaa !9, !alias.scope !34
  store <2 x double> %432, ptr %430, align 8, !tbaa !9, !alias.scope !34
  %index.next882 = add nuw i64 %index874, 4
  %433 = icmp eq i64 %index.next882, %n.vec870
  br i1 %433, label %middle.block865, label %vector.body873, !llvm.loop !36

middle.block865:                                  ; preds = %vector.body873
  br i1 %cmp.n883, label %.loopexit, label %scalar.ph866.preheader

scalar.ph866.preheader:                           ; preds = %.lr.ph689, %middle.block865
  %indvars.iv740.ph = phi i64 [ 1, %.lr.ph689 ], [ %ind.end871, %middle.block865 ]
  br i1 %lcmp.mod904.not, label %scalar.ph866.prol.loopexit, label %scalar.ph866.prol

scalar.ph866.prol:                                ; preds = %scalar.ph866.preheader
  %gep793.prol = getelementptr double, ptr %invariant.gep792, i64 %indvars.iv740.ph
  %434 = load double, ptr %gep793.prol, align 8, !tbaa !9
  %435 = fmul double %414, %434
  store double %435, ptr %gep793.prol, align 8, !tbaa !9
  %gep795.prol = getelementptr double, ptr %invariant.gep794, i64 %indvars.iv740.ph
  %436 = load double, ptr %gep795.prol, align 8, !tbaa !9
  %437 = fmul double %414, %436
  store double %437, ptr %gep795.prol, align 8, !tbaa !9
  %indvars.iv.next741.prol = add nuw nsw i64 %indvars.iv740.ph, 1
  br label %scalar.ph866.prol.loopexit

scalar.ph866.prol.loopexit:                       ; preds = %scalar.ph866.prol, %scalar.ph866.preheader
  %indvars.iv740.unr = phi i64 [ %indvars.iv740.ph, %scalar.ph866.preheader ], [ %indvars.iv.next741.prol, %scalar.ph866.prol ]
  %438 = icmp eq i64 %indvars.iv740.ph, %368
  br i1 %438, label %.loopexit, label %scalar.ph866

scalar.ph866:                                     ; preds = %scalar.ph866.prol.loopexit, %scalar.ph866
  %indvars.iv740 = phi i64 [ %indvars.iv.next741.1, %scalar.ph866 ], [ %indvars.iv740.unr, %scalar.ph866.prol.loopexit ]
  %gep793 = getelementptr double, ptr %invariant.gep792, i64 %indvars.iv740
  %439 = load double, ptr %gep793, align 8, !tbaa !9
  %440 = fmul double %414, %439
  store double %440, ptr %gep793, align 8, !tbaa !9
  %gep795 = getelementptr double, ptr %invariant.gep794, i64 %indvars.iv740
  %441 = load double, ptr %gep795, align 8, !tbaa !9
  %442 = fmul double %414, %441
  store double %442, ptr %gep795, align 8, !tbaa !9
  %indvars.iv.next741 = add nuw nsw i64 %indvars.iv740, 1
  %gep793.1 = getelementptr double, ptr %invariant.gep792, i64 %indvars.iv.next741
  %443 = load double, ptr %gep793.1, align 8, !tbaa !9
  %444 = fmul double %414, %443
  store double %444, ptr %gep793.1, align 8, !tbaa !9
  %gep795.1 = getelementptr double, ptr %invariant.gep794, i64 %indvars.iv.next741
  %445 = load double, ptr %gep795.1, align 8, !tbaa !9
  %446 = fmul double %414, %445
  store double %446, ptr %gep795.1, align 8, !tbaa !9
  %indvars.iv.next741.1 = add nuw nsw i64 %indvars.iv740, 2
  %exitcond744.not.1 = icmp eq i64 %indvars.iv.next741.1, %wide.trip.count753
  br i1 %exitcond744.not.1, label %.loopexit, label %scalar.ph866, !llvm.loop !37

.loopexit:                                        ; preds = %scalar.ph866.prol.loopexit, %scalar.ph866, %scalar.ph839, %middle.block865, %middle.block838, %372, %.loopexit653
  %indvars.iv.next751 = add nuw nsw i64 %indvars.iv750, 1
  %exitcond754.not = icmp eq i64 %indvars.iv.next751, %wide.trip.count753
  br i1 %exitcond754.not, label %.loopexit655, label %372, !llvm.loop !38

.loopexit655.sink.split:                          ; preds = %226, %240, %231, %233
  %.sink805 = phi i32 [ %234, %233 ], [ %232, %231 ], [ %242, %240 ], [ %225, %226 ]
  store i32 %.sink805, ptr %16, align 4, !tbaa !5
  br label %.loopexit655

.loopexit655:                                     ; preds = %.loopexit, %.loopexit655.sink.split, %345, %235, %.thread632
  br i1 %.not582624, label %448, label %447

447:                                              ; preds = %.loopexit655
  call void @dlascl_(ptr noundef nonnull @.str.9, 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.9, 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 %448

448:                                              ; preds = %447, %.loopexit655
  br i1 %.not584629, label %450, label %449

449:                                              ; preds = %448
  call void @dlascl_(ptr noundef nonnull @.str.9, 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 %450

450:                                              ; preds = %449, %448
  %451 = uitofp nneg i32 %118 to double
  store double %451, ptr %14, align 8, !tbaa !9
  br label %452

452:                                              ; preds = %123, %450, %.thread617
  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 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 @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 @dgghd3_(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 @dhgeqz_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @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 @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 @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,MergedLoadStoreMotionPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass