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

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

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

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

145:                                              ; preds = %21
  %146 = load ptr, ptr %22, 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 %76, align 4, !tbaa !9
  store i32 1, ptr %66, align 4, !tbaa !9
  br label %151

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

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

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

156:                                              ; preds = %152
  store i32 1, ptr %78, align 4, !tbaa !9
  store i32 0, ptr %67, align 4, !tbaa !9
  br label %164

157:                                              ; preds = %152
  %158 = load ptr, ptr %23, align 8, !tbaa !5
  %159 = call i32 @lsame_(ptr noundef %158, ptr noundef @.str.1)
  %160 = icmp ne i32 %159, 0
  br i1 %160, label %161, label %162

161:                                              ; preds = %157
  store i32 2, ptr %78, align 4, !tbaa !9
  store i32 1, ptr %67, align 4, !tbaa !9
  br label %163

162:                                              ; preds = %157
  store i32 -1, ptr %78, align 4, !tbaa !9
  store i32 0, ptr %67, align 4, !tbaa !9
  br label %163

163:                                              ; preds = %162, %161
  br label %164

164:                                              ; preds = %163, %156
  %165 = load ptr, ptr %24, align 8, !tbaa !5
  %166 = call i32 @lsame_(ptr noundef %165, ptr noundef @.str.2)
  store i32 %166, ptr %83, align 4, !tbaa !9
  %167 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 0, ptr %167, align 4, !tbaa !9
  %168 = load ptr, ptr %40, align 8, !tbaa !5
  %169 = load i32, ptr %168, align 4, !tbaa !9
  %170 = icmp eq i32 %169, -1
  %171 = zext i1 %170 to i32
  store i32 %171, ptr %84, align 4, !tbaa !9
  %172 = load i32, ptr %76, align 4, !tbaa !9
  %173 = icmp sle i32 %172, 0
  br i1 %173, label %174, label %176

174:                                              ; preds = %164
  %175 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -1, ptr %175, align 4, !tbaa !9
  br label %277

176:                                              ; preds = %164
  %177 = load i32, ptr %78, align 4, !tbaa !9
  %178 = icmp sle i32 %177, 0
  br i1 %178, label %179, label %181

179:                                              ; preds = %176
  %180 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -2, ptr %180, align 4, !tbaa !9
  br label %276

181:                                              ; preds = %176
  %182 = load i32, ptr %83, align 4, !tbaa !9
  %183 = icmp ne i32 %182, 0
  br i1 %183, label %190, label %184

184:                                              ; preds = %181
  %185 = load ptr, ptr %24, align 8, !tbaa !5
  %186 = call i32 @lsame_(ptr noundef %185, ptr noundef @.str)
  %187 = icmp ne i32 %186, 0
  br i1 %187, label %190, label %188

188:                                              ; preds = %184
  %189 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -3, ptr %189, align 4, !tbaa !9
  br label %275

190:                                              ; preds = %184, %181
  %191 = load ptr, ptr %26, align 8, !tbaa !5
  %192 = load i32, ptr %191, align 4, !tbaa !9
  %193 = icmp slt i32 %192, 0
  br i1 %193, label %194, label %196

194:                                              ; preds = %190
  %195 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -5, ptr %195, align 4, !tbaa !9
  br label %274

196:                                              ; preds = %190
  %197 = load ptr, ptr %28, align 8, !tbaa !5
  %198 = load i32, ptr %197, align 4, !tbaa !9
  %199 = load ptr, ptr %26, 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 %26, 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 %42, align 8, !tbaa !5
  store i32 -7, ptr %210, align 4, !tbaa !9
  br label %273

211:                                              ; preds = %206
  %212 = load ptr, ptr %30, align 8, !tbaa !5
  %213 = load i32, ptr %212, align 4, !tbaa !9
  %214 = load ptr, ptr %26, align 8, !tbaa !5
  %215 = load i32, ptr %214, align 4, !tbaa !9
  %216 = icmp sge i32 1, %215
  br i1 %216, label %217, label %218

217:                                              ; preds = %211
  br label %221

218:                                              ; preds = %211
  %219 = load ptr, ptr %26, align 8, !tbaa !5
  %220 = load i32, ptr %219, align 4, !tbaa !9
  br label %221

221:                                              ; preds = %218, %217
  %222 = phi i32 [ 1, %217 ], [ %220, %218 ]
  %223 = icmp slt i32 %213, %222
  br i1 %223, label %224, label %226

224:                                              ; preds = %221
  %225 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -9, ptr %225, align 4, !tbaa !9
  br label %272

226:                                              ; preds = %221
  %227 = load ptr, ptr %36, 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 %66, align 4, !tbaa !9
  %232 = icmp ne i32 %231, 0
  br i1 %232, label %233, label %241

233:                                              ; preds = %230
  %234 = load ptr, ptr %36, align 8, !tbaa !5
  %235 = load i32, ptr %234, align 4, !tbaa !9
  %236 = load ptr, ptr %26, 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 %42, align 8, !tbaa !5
  store i32 -15, ptr %240, align 4, !tbaa !9
  br label %271

241:                                              ; preds = %233, %230
  %242 = load ptr, ptr %38, align 8, !tbaa !5
  %243 = load i32, ptr %242, align 4, !tbaa !9
  %244 = icmp slt i32 %243, 1
  br i1 %244, label %254, label %245

245:                                              ; preds = %241
  %246 = load i32, ptr %67, align 4, !tbaa !9
  %247 = icmp ne i32 %246, 0
  br i1 %247, label %248, label %256

248:                                              ; preds = %245
  %249 = load ptr, ptr %38, align 8, !tbaa !5
  %250 = load i32, ptr %249, align 4, !tbaa !9
  %251 = load ptr, ptr %26, align 8, !tbaa !5
  %252 = load i32, ptr %251, align 4, !tbaa !9
  %253 = icmp slt i32 %250, %252
  br i1 %253, label %254, label %256

254:                                              ; preds = %248, %241
  %255 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -17, ptr %255, align 4, !tbaa !9
  br label %270

256:                                              ; preds = %248, %245
  %257 = load ptr, ptr %40, align 8, !tbaa !5
  %258 = load i32, ptr %257, align 4, !tbaa !9
  %259 = load ptr, ptr %26, align 8, !tbaa !5
  %260 = load i32, ptr %259, align 4, !tbaa !9
  %261 = mul nsw i32 %260, 6
  %262 = add nsw i32 %261, 16
  %263 = icmp slt i32 %258, %262
  br i1 %263, label %264, label %269

264:                                              ; preds = %256
  %265 = load i32, ptr %84, align 4, !tbaa !9
  %266 = icmp ne i32 %265, 0
  br i1 %266, label %269, label %267

267:                                              ; preds = %264
  %268 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -19, ptr %268, align 4, !tbaa !9
  br label %269

269:                                              ; preds = %267, %264, %256
  br label %270

270:                                              ; preds = %269, %254
  br label %271

271:                                              ; preds = %270, %239
  br label %272

272:                                              ; preds = %271, %224
  br label %273

273:                                              ; preds = %272, %209
  br label %274

274:                                              ; preds = %273, %194
  br label %275

275:                                              ; preds = %274, %188
  br label %276

276:                                              ; preds = %275, %179
  br label %277

277:                                              ; preds = %276, %174
  %278 = load ptr, ptr %42, align 8, !tbaa !5
  %279 = load i32, ptr %278, align 4, !tbaa !9
  %280 = icmp eq i32 %279, 0
  br i1 %280, label %281, label %537

281:                                              ; preds = %277
  %282 = load ptr, ptr %26, align 8, !tbaa !5
  %283 = load ptr, ptr %26, align 8, !tbaa !5
  %284 = load ptr, ptr %29, align 8, !tbaa !5
  %285 = load i32, ptr %46, align 4, !tbaa !9
  %286 = sext i32 %285 to i64
  %287 = getelementptr inbounds double, ptr %284, i64 %286
  %288 = load ptr, ptr %30, align 8, !tbaa !5
  %289 = load ptr, ptr %39, align 8, !tbaa !5
  %290 = getelementptr inbounds double, ptr %289, i64 1
  %291 = load ptr, ptr %39, align 8, !tbaa !5
  %292 = getelementptr inbounds double, ptr %291, i64 1
  call void @dgeqrf_(ptr noundef %282, ptr noundef %283, ptr noundef %287, ptr noundef %288, ptr noundef %290, ptr noundef %292, ptr noundef @c_n1, ptr noundef %57)
  %293 = load ptr, ptr %26, align 8, !tbaa !5
  %294 = load i32, ptr %293, align 4, !tbaa !9
  %295 = mul nsw i32 %294, 6
  %296 = add nsw i32 %295, 16
  store i32 %296, ptr %51, align 4, !tbaa !9
  %297 = load ptr, ptr %26, align 8, !tbaa !5
  %298 = load i32, ptr %297, align 4, !tbaa !9
  %299 = mul nsw i32 %298, 3
  %300 = load ptr, ptr %39, 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 %52, align 4, !tbaa !9
  %305 = load i32, ptr %51, align 4, !tbaa !9
  %306 = load i32, ptr %52, align 4, !tbaa !9
  %307 = icmp sge i32 %305, %306
  br i1 %307, label %308, label %310

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

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

312:                                              ; preds = %310, %308
  %313 = phi i32 [ %309, %308 ], [ %311, %310 ]
  store i32 %313, ptr %85, align 4, !tbaa !9
  %314 = load ptr, ptr %26, align 8, !tbaa !5
  %315 = load ptr, ptr %26, align 8, !tbaa !5
  %316 = load ptr, ptr %26, align 8, !tbaa !5
  %317 = load ptr, ptr %29, align 8, !tbaa !5
  %318 = load i32, ptr %46, align 4, !tbaa !9
  %319 = sext i32 %318 to i64
  %320 = getelementptr inbounds double, ptr %317, i64 %319
  %321 = load ptr, ptr %30, align 8, !tbaa !5
  %322 = load ptr, ptr %39, align 8, !tbaa !5
  %323 = getelementptr inbounds double, ptr %322, i64 1
  %324 = load ptr, ptr %27, align 8, !tbaa !5
  %325 = load i32, ptr %44, align 4, !tbaa !9
  %326 = sext i32 %325 to i64
  %327 = getelementptr inbounds double, ptr %324, i64 %326
  %328 = load ptr, ptr %28, align 8, !tbaa !5
  %329 = load ptr, ptr %39, align 8, !tbaa !5
  %330 = getelementptr inbounds double, ptr %329, i64 1
  call void @dormqr_(ptr noundef @.str.3, ptr noundef @.str.4, 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 %57)
  %331 = load i32, ptr %85, align 4, !tbaa !9
  store i32 %331, ptr %51, align 4, !tbaa !9
  %332 = load ptr, ptr %26, align 8, !tbaa !5
  %333 = load i32, ptr %332, align 4, !tbaa !9
  %334 = mul nsw i32 %333, 3
  %335 = load ptr, ptr %39, 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 %52, align 4, !tbaa !9
  %340 = load i32, ptr %51, align 4, !tbaa !9
  %341 = load i32, ptr %52, align 4, !tbaa !9
  %342 = icmp sge i32 %340, %341
  br i1 %342, label %343, label %345

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

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

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

351:                                              ; preds = %347
  %352 = load ptr, ptr %26, align 8, !tbaa !5
  %353 = load ptr, ptr %26, align 8, !tbaa !5
  %354 = load ptr, ptr %26, align 8, !tbaa !5
  %355 = load ptr, ptr %35, align 8, !tbaa !5
  %356 = load i32, ptr %48, align 4, !tbaa !9
  %357 = sext i32 %356 to i64
  %358 = getelementptr inbounds double, ptr %355, i64 %357
  %359 = load ptr, ptr %36, align 8, !tbaa !5
  %360 = load ptr, ptr %39, align 8, !tbaa !5
  %361 = getelementptr inbounds double, ptr %360, i64 1
  %362 = load ptr, ptr %39, 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 %57)
  %364 = load i32, ptr %85, align 4, !tbaa !9
  store i32 %364, ptr %51, align 4, !tbaa !9
  %365 = load ptr, ptr %26, align 8, !tbaa !5
  %366 = load i32, ptr %365, align 4, !tbaa !9
  %367 = mul nsw i32 %366, 3
  %368 = load ptr, ptr %39, 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 %52, align 4, !tbaa !9
  %373 = load i32, ptr %51, align 4, !tbaa !9
  %374 = load i32, ptr %52, align 4, !tbaa !9
  %375 = icmp sge i32 %373, %374
  br i1 %375, label %376, label %378

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

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

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

382:                                              ; preds = %380, %347
  %383 = load ptr, ptr %22, align 8, !tbaa !5
  %384 = load ptr, ptr %23, align 8, !tbaa !5
  %385 = load ptr, ptr %26, align 8, !tbaa !5
  %386 = load ptr, ptr %26, align 8, !tbaa !5
  %387 = load ptr, ptr %27, align 8, !tbaa !5
  %388 = load i32, ptr %44, align 4, !tbaa !9
  %389 = sext i32 %388 to i64
  %390 = getelementptr inbounds double, ptr %387, i64 %389
  %391 = load ptr, ptr %28, align 8, !tbaa !5
  %392 = load ptr, ptr %29, align 8, !tbaa !5
  %393 = load i32, ptr %46, align 4, !tbaa !9
  %394 = sext i32 %393 to i64
  %395 = getelementptr inbounds double, ptr %392, i64 %394
  %396 = load ptr, ptr %30, align 8, !tbaa !5
  %397 = load ptr, ptr %35, align 8, !tbaa !5
  %398 = load i32, ptr %48, align 4, !tbaa !9
  %399 = sext i32 %398 to i64
  %400 = getelementptr inbounds double, ptr %397, i64 %399
  %401 = load ptr, ptr %36, align 8, !tbaa !5
  %402 = load ptr, ptr %37, align 8, !tbaa !5
  %403 = load i32, ptr %50, align 4, !tbaa !9
  %404 = sext i32 %403 to i64
  %405 = getelementptr inbounds double, ptr %402, i64 %404
  %406 = load ptr, ptr %38, align 8, !tbaa !5
  %407 = load ptr, ptr %39, align 8, !tbaa !5
  %408 = getelementptr inbounds double, ptr %407, i64 1
  call void @dgghd3_(ptr noundef %383, ptr noundef %384, ptr noundef %385, ptr noundef @c__1, ptr noundef %386, ptr noundef %390, ptr noundef %391, ptr noundef %395, ptr noundef %396, ptr noundef %400, ptr noundef %401, ptr noundef %405, ptr noundef %406, ptr noundef %408, ptr noundef @c_n1, ptr noundef %57)
  %409 = load i32, ptr %85, align 4, !tbaa !9
  store i32 %409, ptr %51, align 4, !tbaa !9
  %410 = load ptr, ptr %26, align 8, !tbaa !5
  %411 = load i32, ptr %410, align 4, !tbaa !9
  %412 = mul nsw i32 %411, 3
  %413 = load ptr, ptr %39, align 8, !tbaa !5
  %414 = getelementptr inbounds double, ptr %413, i64 1
  %415 = load double, ptr %414, align 8, !tbaa !11
  %416 = fptosi double %415 to i32
  %417 = add nsw i32 %412, %416
  store i32 %417, ptr %52, align 4, !tbaa !9
  %418 = load i32, ptr %51, align 4, !tbaa !9
  %419 = load i32, ptr %52, align 4, !tbaa !9
  %420 = icmp sge i32 %418, %419
  br i1 %420, label %421, label %423

421:                                              ; preds = %382
  %422 = load i32, ptr %51, align 4, !tbaa !9
  br label %425

423:                                              ; preds = %382
  %424 = load i32, ptr %52, align 4, !tbaa !9
  br label %425

425:                                              ; preds = %423, %421
  %426 = phi i32 [ %422, %421 ], [ %424, %423 ]
  store i32 %426, ptr %85, align 4, !tbaa !9
  %427 = load ptr, ptr %22, align 8, !tbaa !5
  %428 = load ptr, ptr %23, align 8, !tbaa !5
  %429 = load ptr, ptr %26, align 8, !tbaa !5
  %430 = load ptr, ptr %26, align 8, !tbaa !5
  %431 = load ptr, ptr %27, align 8, !tbaa !5
  %432 = load i32, ptr %44, align 4, !tbaa !9
  %433 = sext i32 %432 to i64
  %434 = getelementptr inbounds double, ptr %431, i64 %433
  %435 = load ptr, ptr %28, align 8, !tbaa !5
  %436 = load ptr, ptr %29, align 8, !tbaa !5
  %437 = load i32, ptr %46, align 4, !tbaa !9
  %438 = sext i32 %437 to i64
  %439 = getelementptr inbounds double, ptr %436, i64 %438
  %440 = load ptr, ptr %30, align 8, !tbaa !5
  %441 = load ptr, ptr %32, align 8, !tbaa !5
  %442 = getelementptr inbounds double, ptr %441, i64 1
  %443 = load ptr, ptr %33, align 8, !tbaa !5
  %444 = getelementptr inbounds double, ptr %443, i64 1
  %445 = load ptr, ptr %34, align 8, !tbaa !5
  %446 = getelementptr inbounds double, ptr %445, i64 1
  %447 = load ptr, ptr %35, align 8, !tbaa !5
  %448 = load i32, ptr %48, align 4, !tbaa !9
  %449 = sext i32 %448 to i64
  %450 = getelementptr inbounds double, ptr %447, i64 %449
  %451 = load ptr, ptr %36, align 8, !tbaa !5
  %452 = load ptr, ptr %37, align 8, !tbaa !5
  %453 = load i32, ptr %50, align 4, !tbaa !9
  %454 = sext i32 %453 to i64
  %455 = getelementptr inbounds double, ptr %452, i64 %454
  %456 = load ptr, ptr %38, align 8, !tbaa !5
  %457 = load ptr, ptr %39, align 8, !tbaa !5
  %458 = getelementptr inbounds double, ptr %457, i64 1
  call void @dhgeqz_(ptr noundef @.str.2, ptr noundef %427, ptr noundef %428, ptr noundef %429, ptr noundef @c__1, ptr noundef %430, ptr noundef %434, ptr noundef %435, ptr noundef %439, ptr noundef %440, ptr noundef %442, ptr noundef %444, ptr noundef %446, ptr noundef %450, ptr noundef %451, ptr noundef %455, ptr noundef %456, ptr noundef %458, ptr noundef @c_n1, ptr noundef %57)
  %459 = load i32, ptr %85, align 4, !tbaa !9
  store i32 %459, ptr %51, align 4, !tbaa !9
  %460 = load ptr, ptr %26, align 8, !tbaa !5
  %461 = load i32, ptr %460, align 4, !tbaa !9
  %462 = shl i32 %461, 1
  %463 = load ptr, ptr %39, align 8, !tbaa !5
  %464 = getelementptr inbounds double, ptr %463, i64 1
  %465 = load double, ptr %464, align 8, !tbaa !11
  %466 = fptosi double %465 to i32
  %467 = add nsw i32 %462, %466
  store i32 %467, ptr %52, align 4, !tbaa !9
  %468 = load i32, ptr %51, align 4, !tbaa !9
  %469 = load i32, ptr %52, align 4, !tbaa !9
  %470 = icmp sge i32 %468, %469
  br i1 %470, label %471, label %473

471:                                              ; preds = %425
  %472 = load i32, ptr %51, align 4, !tbaa !9
  br label %475

473:                                              ; preds = %425
  %474 = load i32, ptr %52, align 4, !tbaa !9
  br label %475

475:                                              ; preds = %473, %471
  %476 = phi i32 [ %472, %471 ], [ %474, %473 ]
  store i32 %476, ptr %85, align 4, !tbaa !9
  %477 = load i32, ptr %83, align 4, !tbaa !9
  %478 = icmp ne i32 %477, 0
  br i1 %478, label %479, label %532

479:                                              ; preds = %475
  %480 = load ptr, ptr %41, align 8, !tbaa !5
  %481 = getelementptr inbounds i32, ptr %480, i64 1
  %482 = load ptr, ptr %26, align 8, !tbaa !5
  %483 = load ptr, ptr %27, align 8, !tbaa !5
  %484 = load i32, ptr %44, align 4, !tbaa !9
  %485 = sext i32 %484 to i64
  %486 = getelementptr inbounds double, ptr %483, i64 %485
  %487 = load ptr, ptr %28, align 8, !tbaa !5
  %488 = load ptr, ptr %29, align 8, !tbaa !5
  %489 = load i32, ptr %46, align 4, !tbaa !9
  %490 = sext i32 %489 to i64
  %491 = getelementptr inbounds double, ptr %488, i64 %490
  %492 = load ptr, ptr %30, align 8, !tbaa !5
  %493 = load ptr, ptr %32, align 8, !tbaa !5
  %494 = getelementptr inbounds double, ptr %493, i64 1
  %495 = load ptr, ptr %33, align 8, !tbaa !5
  %496 = getelementptr inbounds double, ptr %495, i64 1
  %497 = load ptr, ptr %34, align 8, !tbaa !5
  %498 = getelementptr inbounds double, ptr %497, i64 1
  %499 = load ptr, ptr %35, align 8, !tbaa !5
  %500 = load i32, ptr %48, align 4, !tbaa !9
  %501 = sext i32 %500 to i64
  %502 = getelementptr inbounds double, ptr %499, i64 %501
  %503 = load ptr, ptr %36, align 8, !tbaa !5
  %504 = load ptr, ptr %37, align 8, !tbaa !5
  %505 = load i32, ptr %50, align 4, !tbaa !9
  %506 = sext i32 %505 to i64
  %507 = getelementptr inbounds double, ptr %504, i64 %506
  %508 = load ptr, ptr %38, align 8, !tbaa !5
  %509 = load ptr, ptr %31, align 8, !tbaa !5
  %510 = getelementptr inbounds [2 x double], ptr %86, i64 0, i64 0
  %511 = load ptr, ptr %39, align 8, !tbaa !5
  %512 = getelementptr inbounds double, ptr %511, i64 1
  %513 = getelementptr inbounds [1 x i32], ptr %56, i64 0, i64 0
  call void @dtgsen_(ptr noundef @c__0, ptr noundef %66, ptr noundef %67, ptr noundef %481, ptr noundef %482, ptr noundef %486, ptr noundef %487, ptr noundef %491, ptr noundef %492, ptr noundef %494, ptr noundef %496, ptr noundef %498, ptr noundef %502, ptr noundef %503, ptr noundef %507, ptr noundef %508, ptr noundef %509, ptr noundef %60, ptr noundef %61, ptr noundef %510, ptr noundef %512, ptr noundef @c_n1, ptr noundef %513, ptr noundef @c__1, ptr noundef %57)
  %514 = load i32, ptr %85, align 4, !tbaa !9
  store i32 %514, ptr %51, align 4, !tbaa !9
  %515 = load ptr, ptr %26, align 8, !tbaa !5
  %516 = load i32, ptr %515, align 4, !tbaa !9
  %517 = shl i32 %516, 1
  %518 = load ptr, ptr %39, align 8, !tbaa !5
  %519 = getelementptr inbounds double, ptr %518, i64 1
  %520 = load double, ptr %519, align 8, !tbaa !11
  %521 = fptosi double %520 to i32
  %522 = add nsw i32 %517, %521
  store i32 %522, ptr %52, align 4, !tbaa !9
  %523 = load i32, ptr %51, align 4, !tbaa !9
  %524 = load i32, ptr %52, align 4, !tbaa !9
  %525 = icmp sge i32 %523, %524
  br i1 %525, label %526, label %528

526:                                              ; preds = %479
  %527 = load i32, ptr %51, align 4, !tbaa !9
  br label %530

528:                                              ; preds = %479
  %529 = load i32, ptr %52, align 4, !tbaa !9
  br label %530

530:                                              ; preds = %528, %526
  %531 = phi i32 [ %527, %526 ], [ %529, %528 ]
  store i32 %531, ptr %85, align 4, !tbaa !9
  br label %532

532:                                              ; preds = %530, %475
  %533 = load i32, ptr %85, align 4, !tbaa !9
  %534 = sitofp i32 %533 to double
  %535 = load ptr, ptr %39, align 8, !tbaa !5
  %536 = getelementptr inbounds double, ptr %535, i64 1
  store double %534, ptr %536, align 8, !tbaa !11
  br label %537

537:                                              ; preds = %532, %277
  %538 = load ptr, ptr %42, align 8, !tbaa !5
  %539 = load i32, ptr %538, align 4, !tbaa !9
  %540 = icmp ne i32 %539, 0
  br i1 %540, label %541, label %546

541:                                              ; preds = %537
  %542 = load ptr, ptr %42, align 8, !tbaa !5
  %543 = load i32, ptr %542, align 4, !tbaa !9
  %544 = sub nsw i32 0, %543
  store i32 %544, ptr %51, align 4, !tbaa !9
  %545 = call i32 @xerbla_(ptr noundef @.str.5, ptr noundef %51, i32 noundef 6)
  store i32 1, ptr %90, align 4
  br label %1472

546:                                              ; preds = %537
  %547 = load i32, ptr %84, align 4, !tbaa !9
  %548 = icmp ne i32 %547, 0
  br i1 %548, label %549, label %550

549:                                              ; preds = %546
  store i32 1, ptr %90, align 4
  br label %1472

550:                                              ; preds = %546
  br label %551

551:                                              ; preds = %550
  %552 = load ptr, ptr %26, align 8, !tbaa !5
  %553 = load i32, ptr %552, align 4, !tbaa !9
  %554 = icmp eq i32 %553, 0
  br i1 %554, label %555, label %557

555:                                              ; preds = %551
  %556 = load ptr, ptr %31, align 8, !tbaa !5
  store i32 0, ptr %556, align 4, !tbaa !9
  store i32 1, ptr %90, align 4
  br label %1472

557:                                              ; preds = %551
  %558 = call double @dlamch_(ptr noundef @.str.6)
  store double %558, ptr %89, align 8, !tbaa !11
  %559 = call double @dlamch_(ptr noundef @.str.2)
  store double %559, ptr %73, align 8, !tbaa !11
  %560 = load double, ptr %73, align 8, !tbaa !11
  %561 = fdiv double 1.000000e+00, %560
  store double %561, ptr %74, align 8, !tbaa !11
  call void @dlabad_(ptr noundef %73, ptr noundef %74)
  %562 = load double, ptr %73, align 8, !tbaa !11
  %563 = call double @sqrt(double noundef %562) #4
  %564 = load double, ptr %89, align 8, !tbaa !11
  %565 = fdiv double %563, %564
  store double %565, ptr %82, align 8, !tbaa !11
  %566 = load double, ptr %82, align 8, !tbaa !11
  %567 = fdiv double 1.000000e+00, %566
  store double %567, ptr %75, align 8, !tbaa !11
  %568 = load ptr, ptr %26, align 8, !tbaa !5
  %569 = load ptr, ptr %26, align 8, !tbaa !5
  %570 = load ptr, ptr %27, align 8, !tbaa !5
  %571 = load i32, ptr %44, align 4, !tbaa !9
  %572 = sext i32 %571 to i64
  %573 = getelementptr inbounds double, ptr %570, i64 %572
  %574 = load ptr, ptr %28, align 8, !tbaa !5
  %575 = load ptr, ptr %39, align 8, !tbaa !5
  %576 = getelementptr inbounds double, ptr %575, i64 1
  %577 = call double @dlange_(ptr noundef @.str.7, ptr noundef %568, ptr noundef %569, ptr noundef %573, ptr noundef %574, ptr noundef %576)
  store double %577, ptr %54, align 8, !tbaa !11
  store i32 0, ptr %71, align 4, !tbaa !9
  %578 = load double, ptr %54, align 8, !tbaa !11
  %579 = fcmp ogt double %578, 0.000000e+00
  br i1 %579, label %580, label %586

580:                                              ; preds = %557
  %581 = load double, ptr %54, align 8, !tbaa !11
  %582 = load double, ptr %82, align 8, !tbaa !11
  %583 = fcmp olt double %581, %582
  br i1 %583, label %584, label %586

584:                                              ; preds = %580
  %585 = load double, ptr %82, align 8, !tbaa !11
  store double %585, ptr %79, align 8, !tbaa !11
  store i32 1, ptr %71, align 4, !tbaa !9
  br label %593

586:                                              ; preds = %580, %557
  %587 = load double, ptr %54, align 8, !tbaa !11
  %588 = load double, ptr %75, align 8, !tbaa !11
  %589 = fcmp ogt double %587, %588
  br i1 %589, label %590, label %592

590:                                              ; preds = %586
  %591 = load double, ptr %75, align 8, !tbaa !11
  store double %591, ptr %79, align 8, !tbaa !11
  store i32 1, ptr %71, align 4, !tbaa !9
  br label %592

592:                                              ; preds = %590, %586
  br label %593

593:                                              ; preds = %592, %584
  %594 = load i32, ptr %71, align 4, !tbaa !9
  %595 = icmp ne i32 %594, 0
  br i1 %595, label %596, label %604

596:                                              ; preds = %593
  %597 = load ptr, ptr %26, align 8, !tbaa !5
  %598 = load ptr, ptr %26, align 8, !tbaa !5
  %599 = load ptr, ptr %27, align 8, !tbaa !5
  %600 = load i32, ptr %44, align 4, !tbaa !9
  %601 = sext i32 %600 to i64
  %602 = getelementptr inbounds double, ptr %599, i64 %601
  %603 = load ptr, ptr %28, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.8, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %54, ptr noundef %79, ptr noundef %597, ptr noundef %598, ptr noundef %602, ptr noundef %603, ptr noundef %57)
  br label %604

604:                                              ; preds = %596, %593
  %605 = load ptr, ptr %26, align 8, !tbaa !5
  %606 = load ptr, ptr %26, align 8, !tbaa !5
  %607 = load ptr, ptr %29, align 8, !tbaa !5
  %608 = load i32, ptr %46, align 4, !tbaa !9
  %609 = sext i32 %608 to i64
  %610 = getelementptr inbounds double, ptr %607, i64 %609
  %611 = load ptr, ptr %30, align 8, !tbaa !5
  %612 = load ptr, ptr %39, align 8, !tbaa !5
  %613 = getelementptr inbounds double, ptr %612, i64 1
  %614 = call double @dlange_(ptr noundef @.str.7, ptr noundef %605, ptr noundef %606, ptr noundef %610, ptr noundef %611, ptr noundef %613)
  store double %614, ptr %55, align 8, !tbaa !11
  store i32 0, ptr %72, align 4, !tbaa !9
  %615 = load double, ptr %55, align 8, !tbaa !11
  %616 = fcmp ogt double %615, 0.000000e+00
  br i1 %616, label %617, label %623

617:                                              ; preds = %604
  %618 = load double, ptr %55, align 8, !tbaa !11
  %619 = load double, ptr %82, align 8, !tbaa !11
  %620 = fcmp olt double %618, %619
  br i1 %620, label %621, label %623

621:                                              ; preds = %617
  %622 = load double, ptr %82, align 8, !tbaa !11
  store double %622, ptr %80, align 8, !tbaa !11
  store i32 1, ptr %72, align 4, !tbaa !9
  br label %630

623:                                              ; preds = %617, %604
  %624 = load double, ptr %55, align 8, !tbaa !11
  %625 = load double, ptr %75, align 8, !tbaa !11
  %626 = fcmp ogt double %624, %625
  br i1 %626, label %627, label %629

627:                                              ; preds = %623
  %628 = load double, ptr %75, align 8, !tbaa !11
  store double %628, ptr %80, align 8, !tbaa !11
  store i32 1, ptr %72, align 4, !tbaa !9
  br label %629

629:                                              ; preds = %627, %623
  br label %630

630:                                              ; preds = %629, %621
  %631 = load i32, ptr %72, align 4, !tbaa !9
  %632 = icmp ne i32 %631, 0
  br i1 %632, label %633, label %641

633:                                              ; preds = %630
  %634 = load ptr, ptr %26, align 8, !tbaa !5
  %635 = load ptr, ptr %26, align 8, !tbaa !5
  %636 = load ptr, ptr %29, align 8, !tbaa !5
  %637 = load i32, ptr %46, align 4, !tbaa !9
  %638 = sext i32 %637 to i64
  %639 = getelementptr inbounds double, ptr %636, i64 %638
  %640 = load ptr, ptr %30, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.8, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %55, ptr noundef %80, ptr noundef %634, ptr noundef %635, ptr noundef %639, ptr noundef %640, ptr noundef %57)
  br label %641

641:                                              ; preds = %633, %630
  store i32 1, ptr %63, align 4, !tbaa !9
  %642 = load ptr, ptr %26, align 8, !tbaa !5
  %643 = load i32, ptr %642, align 4, !tbaa !9
  %644 = add nsw i32 %643, 1
  store i32 %644, ptr %77, align 4, !tbaa !9
  %645 = load i32, ptr %77, align 4, !tbaa !9
  %646 = load ptr, ptr %26, align 8, !tbaa !5
  %647 = load i32, ptr %646, align 4, !tbaa !9
  %648 = add nsw i32 %645, %647
  store i32 %648, ptr %59, align 4, !tbaa !9
  %649 = load ptr, ptr %26, align 8, !tbaa !5
  %650 = load ptr, ptr %27, align 8, !tbaa !5
  %651 = load i32, ptr %44, align 4, !tbaa !9
  %652 = sext i32 %651 to i64
  %653 = getelementptr inbounds double, ptr %650, i64 %652
  %654 = load ptr, ptr %28, align 8, !tbaa !5
  %655 = load ptr, ptr %29, align 8, !tbaa !5
  %656 = load i32, ptr %46, align 4, !tbaa !9
  %657 = sext i32 %656 to i64
  %658 = getelementptr inbounds double, ptr %655, i64 %657
  %659 = load ptr, ptr %30, align 8, !tbaa !5
  %660 = load ptr, ptr %39, align 8, !tbaa !5
  %661 = load i32, ptr %63, align 4, !tbaa !9
  %662 = sext i32 %661 to i64
  %663 = getelementptr inbounds double, ptr %660, i64 %662
  %664 = load ptr, ptr %39, align 8, !tbaa !5
  %665 = load i32, ptr %77, align 4, !tbaa !9
  %666 = sext i32 %665 to i64
  %667 = getelementptr inbounds double, ptr %664, i64 %666
  %668 = load ptr, ptr %39, align 8, !tbaa !5
  %669 = load i32, ptr %59, align 4, !tbaa !9
  %670 = sext i32 %669 to i64
  %671 = getelementptr inbounds double, ptr %668, i64 %670
  call void @dggbal_(ptr noundef @.str.6, ptr noundef %649, ptr noundef %653, ptr noundef %654, ptr noundef %658, ptr noundef %659, ptr noundef %88, ptr noundef %87, ptr noundef %663, ptr noundef %667, ptr noundef %671, ptr noundef %57)
  %672 = load i32, ptr %87, align 4, !tbaa !9
  %673 = add nsw i32 %672, 1
  %674 = load i32, ptr %88, align 4, !tbaa !9
  %675 = sub nsw i32 %673, %674
  store i32 %675, ptr %68, align 4, !tbaa !9
  %676 = load ptr, ptr %26, align 8, !tbaa !5
  %677 = load i32, ptr %676, align 4, !tbaa !9
  %678 = add nsw i32 %677, 1
  %679 = load i32, ptr %88, align 4, !tbaa !9
  %680 = sub nsw i32 %678, %679
  store i32 %680, ptr %64, align 4, !tbaa !9
  %681 = load i32, ptr %59, align 4, !tbaa !9
  store i32 %681, ptr %58, align 4, !tbaa !9
  %682 = load i32, ptr %58, align 4, !tbaa !9
  %683 = load i32, ptr %68, align 4, !tbaa !9
  %684 = add nsw i32 %682, %683
  store i32 %684, ptr %59, align 4, !tbaa !9
  %685 = load ptr, ptr %40, align 8, !tbaa !5
  %686 = load i32, ptr %685, align 4, !tbaa !9
  %687 = add nsw i32 %686, 1
  %688 = load i32, ptr %59, align 4, !tbaa !9
  %689 = sub nsw i32 %687, %688
  store i32 %689, ptr %51, align 4, !tbaa !9
  %690 = load ptr, ptr %29, align 8, !tbaa !5
  %691 = load i32, ptr %88, align 4, !tbaa !9
  %692 = load i32, ptr %88, align 4, !tbaa !9
  %693 = load i32, ptr %45, align 4, !tbaa !9
  %694 = mul nsw i32 %692, %693
  %695 = add nsw i32 %691, %694
  %696 = sext i32 %695 to i64
  %697 = getelementptr inbounds double, ptr %690, i64 %696
  %698 = load ptr, ptr %30, align 8, !tbaa !5
  %699 = load ptr, ptr %39, align 8, !tbaa !5
  %700 = load i32, ptr %58, align 4, !tbaa !9
  %701 = sext i32 %700 to i64
  %702 = getelementptr inbounds double, ptr %699, i64 %701
  %703 = load ptr, ptr %39, align 8, !tbaa !5
  %704 = load i32, ptr %59, align 4, !tbaa !9
  %705 = sext i32 %704 to i64
  %706 = getelementptr inbounds double, ptr %703, i64 %705
  call void @dgeqrf_(ptr noundef %68, ptr noundef %64, ptr noundef %697, ptr noundef %698, ptr noundef %702, ptr noundef %706, ptr noundef %51, ptr noundef %57)
  %707 = load ptr, ptr %40, align 8, !tbaa !5
  %708 = load i32, ptr %707, align 4, !tbaa !9
  %709 = add nsw i32 %708, 1
  %710 = load i32, ptr %59, align 4, !tbaa !9
  %711 = sub nsw i32 %709, %710
  store i32 %711, ptr %51, align 4, !tbaa !9
  %712 = load ptr, ptr %29, align 8, !tbaa !5
  %713 = load i32, ptr %88, align 4, !tbaa !9
  %714 = load i32, ptr %88, align 4, !tbaa !9
  %715 = load i32, ptr %45, align 4, !tbaa !9
  %716 = mul nsw i32 %714, %715
  %717 = add nsw i32 %713, %716
  %718 = sext i32 %717 to i64
  %719 = getelementptr inbounds double, ptr %712, i64 %718
  %720 = load ptr, ptr %30, align 8, !tbaa !5
  %721 = load ptr, ptr %39, align 8, !tbaa !5
  %722 = load i32, ptr %58, align 4, !tbaa !9
  %723 = sext i32 %722 to i64
  %724 = getelementptr inbounds double, ptr %721, i64 %723
  %725 = load ptr, ptr %27, align 8, !tbaa !5
  %726 = load i32, ptr %88, align 4, !tbaa !9
  %727 = load i32, ptr %88, align 4, !tbaa !9
  %728 = load i32, ptr %43, align 4, !tbaa !9
  %729 = mul nsw i32 %727, %728
  %730 = add nsw i32 %726, %729
  %731 = sext i32 %730 to i64
  %732 = getelementptr inbounds double, ptr %725, i64 %731
  %733 = load ptr, ptr %28, align 8, !tbaa !5
  %734 = load ptr, ptr %39, align 8, !tbaa !5
  %735 = load i32, ptr %59, align 4, !tbaa !9
  %736 = sext i32 %735 to i64
  %737 = getelementptr inbounds double, ptr %734, i64 %736
  call void @dormqr_(ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef %68, ptr noundef %64, ptr noundef %68, ptr noundef %719, ptr noundef %720, ptr noundef %724, ptr noundef %732, ptr noundef %733, ptr noundef %737, ptr noundef %51, ptr noundef %57)
  %738 = load i32, ptr %66, align 4, !tbaa !9
  %739 = icmp ne i32 %738, 0
  br i1 %739, label %740, label %798

740:                                              ; preds = %641
  %741 = load ptr, ptr %26, align 8, !tbaa !5
  %742 = load ptr, ptr %26, align 8, !tbaa !5
  %743 = load ptr, ptr %35, align 8, !tbaa !5
  %744 = load i32, ptr %48, align 4, !tbaa !9
  %745 = sext i32 %744 to i64
  %746 = getelementptr inbounds double, ptr %743, i64 %745
  %747 = load ptr, ptr %36, align 8, !tbaa !5
  call void @dlaset_(ptr noundef @.str.9, ptr noundef %741, ptr noundef %742, ptr noundef @c_b36, ptr noundef @c_b37, ptr noundef %746, ptr noundef %747)
  %748 = load i32, ptr %68, align 4, !tbaa !9
  %749 = icmp sgt i32 %748, 1
  br i1 %749, label %750, label %775

750:                                              ; preds = %740
  %751 = load i32, ptr %68, align 4, !tbaa !9
  %752 = sub nsw i32 %751, 1
  store i32 %752, ptr %51, align 4, !tbaa !9
  %753 = load i32, ptr %68, align 4, !tbaa !9
  %754 = sub nsw i32 %753, 1
  store i32 %754, ptr %52, align 4, !tbaa !9
  %755 = load ptr, ptr %29, align 8, !tbaa !5
  %756 = load i32, ptr %88, align 4, !tbaa !9
  %757 = add nsw i32 %756, 1
  %758 = load i32, ptr %88, align 4, !tbaa !9
  %759 = load i32, ptr %45, align 4, !tbaa !9
  %760 = mul nsw i32 %758, %759
  %761 = add nsw i32 %757, %760
  %762 = sext i32 %761 to i64
  %763 = getelementptr inbounds double, ptr %755, i64 %762
  %764 = load ptr, ptr %30, align 8, !tbaa !5
  %765 = load ptr, ptr %35, align 8, !tbaa !5
  %766 = load i32, ptr %88, align 4, !tbaa !9
  %767 = add nsw i32 %766, 1
  %768 = load i32, ptr %88, align 4, !tbaa !9
  %769 = load i32, ptr %47, align 4, !tbaa !9
  %770 = mul nsw i32 %768, %769
  %771 = add nsw i32 %767, %770
  %772 = sext i32 %771 to i64
  %773 = getelementptr inbounds double, ptr %765, i64 %772
  %774 = load ptr, ptr %36, align 8, !tbaa !5
  call void @dlacpy_(ptr noundef @.str.3, ptr noundef %51, ptr noundef %52, ptr noundef %763, ptr noundef %764, ptr noundef %773, ptr noundef %774)
  br label %775

775:                                              ; preds = %750, %740
  %776 = load ptr, ptr %40, align 8, !tbaa !5
  %777 = load i32, ptr %776, align 4, !tbaa !9
  %778 = add nsw i32 %777, 1
  %779 = load i32, ptr %59, align 4, !tbaa !9
  %780 = sub nsw i32 %778, %779
  store i32 %780, ptr %51, align 4, !tbaa !9
  %781 = load ptr, ptr %35, align 8, !tbaa !5
  %782 = load i32, ptr %88, align 4, !tbaa !9
  %783 = load i32, ptr %88, align 4, !tbaa !9
  %784 = load i32, ptr %47, align 4, !tbaa !9
  %785 = mul nsw i32 %783, %784
  %786 = add nsw i32 %782, %785
  %787 = sext i32 %786 to i64
  %788 = getelementptr inbounds double, ptr %781, i64 %787
  %789 = load ptr, ptr %36, align 8, !tbaa !5
  %790 = load ptr, ptr %39, align 8, !tbaa !5
  %791 = load i32, ptr %58, align 4, !tbaa !9
  %792 = sext i32 %791 to i64
  %793 = getelementptr inbounds double, ptr %790, i64 %792
  %794 = load ptr, ptr %39, align 8, !tbaa !5
  %795 = load i32, ptr %59, align 4, !tbaa !9
  %796 = sext i32 %795 to i64
  %797 = getelementptr inbounds double, ptr %794, i64 %796
  call void @dorgqr_(ptr noundef %68, ptr noundef %68, ptr noundef %68, ptr noundef %788, ptr noundef %789, ptr noundef %793, ptr noundef %797, ptr noundef %51, ptr noundef %57)
  br label %798

798:                                              ; preds = %775, %641
  %799 = load i32, ptr %67, align 4, !tbaa !9
  %800 = icmp ne i32 %799, 0
  br i1 %800, label %801, label %809

801:                                              ; preds = %798
  %802 = load ptr, ptr %26, align 8, !tbaa !5
  %803 = load ptr, ptr %26, align 8, !tbaa !5
  %804 = load ptr, ptr %37, align 8, !tbaa !5
  %805 = load i32, ptr %50, align 4, !tbaa !9
  %806 = sext i32 %805 to i64
  %807 = getelementptr inbounds double, ptr %804, i64 %806
  %808 = load ptr, ptr %38, align 8, !tbaa !5
  call void @dlaset_(ptr noundef @.str.9, ptr noundef %802, ptr noundef %803, ptr noundef @c_b36, ptr noundef @c_b37, ptr noundef %807, ptr noundef %808)
  br label %809

809:                                              ; preds = %801, %798
  %810 = load ptr, ptr %40, align 8, !tbaa !5
  %811 = load i32, ptr %810, align 4, !tbaa !9
  %812 = add nsw i32 %811, 1
  %813 = load i32, ptr %59, align 4, !tbaa !9
  %814 = sub nsw i32 %812, %813
  store i32 %814, ptr %51, align 4, !tbaa !9
  %815 = load ptr, ptr %22, align 8, !tbaa !5
  %816 = load ptr, ptr %23, align 8, !tbaa !5
  %817 = load ptr, ptr %26, align 8, !tbaa !5
  %818 = load ptr, ptr %27, align 8, !tbaa !5
  %819 = load i32, ptr %44, align 4, !tbaa !9
  %820 = sext i32 %819 to i64
  %821 = getelementptr inbounds double, ptr %818, i64 %820
  %822 = load ptr, ptr %28, align 8, !tbaa !5
  %823 = load ptr, ptr %29, align 8, !tbaa !5
  %824 = load i32, ptr %46, align 4, !tbaa !9
  %825 = sext i32 %824 to i64
  %826 = getelementptr inbounds double, ptr %823, i64 %825
  %827 = load ptr, ptr %30, align 8, !tbaa !5
  %828 = load ptr, ptr %35, align 8, !tbaa !5
  %829 = load i32, ptr %48, align 4, !tbaa !9
  %830 = sext i32 %829 to i64
  %831 = getelementptr inbounds double, ptr %828, i64 %830
  %832 = load ptr, ptr %36, align 8, !tbaa !5
  %833 = load ptr, ptr %37, align 8, !tbaa !5
  %834 = load i32, ptr %50, align 4, !tbaa !9
  %835 = sext i32 %834 to i64
  %836 = getelementptr inbounds double, ptr %833, i64 %835
  %837 = load ptr, ptr %38, align 8, !tbaa !5
  %838 = load ptr, ptr %39, align 8, !tbaa !5
  %839 = load i32, ptr %59, align 4, !tbaa !9
  %840 = sext i32 %839 to i64
  %841 = getelementptr inbounds double, ptr %838, i64 %840
  call void @dgghd3_(ptr noundef %815, ptr noundef %816, ptr noundef %817, ptr noundef %88, ptr noundef %87, ptr noundef %821, ptr noundef %822, ptr noundef %826, ptr noundef %827, ptr noundef %831, ptr noundef %832, ptr noundef %836, ptr noundef %837, ptr noundef %841, ptr noundef %51, ptr noundef %57)
  %842 = load i32, ptr %58, align 4, !tbaa !9
  store i32 %842, ptr %59, align 4, !tbaa !9
  %843 = load ptr, ptr %40, align 8, !tbaa !5
  %844 = load i32, ptr %843, align 4, !tbaa !9
  %845 = add nsw i32 %844, 1
  %846 = load i32, ptr %59, align 4, !tbaa !9
  %847 = sub nsw i32 %845, %846
  store i32 %847, ptr %51, align 4, !tbaa !9
  %848 = load ptr, ptr %22, align 8, !tbaa !5
  %849 = load ptr, ptr %23, align 8, !tbaa !5
  %850 = load ptr, ptr %26, align 8, !tbaa !5
  %851 = load ptr, ptr %27, align 8, !tbaa !5
  %852 = load i32, ptr %44, align 4, !tbaa !9
  %853 = sext i32 %852 to i64
  %854 = getelementptr inbounds double, ptr %851, i64 %853
  %855 = load ptr, ptr %28, align 8, !tbaa !5
  %856 = load ptr, ptr %29, align 8, !tbaa !5
  %857 = load i32, ptr %46, align 4, !tbaa !9
  %858 = sext i32 %857 to i64
  %859 = getelementptr inbounds double, ptr %856, i64 %858
  %860 = load ptr, ptr %30, align 8, !tbaa !5
  %861 = load ptr, ptr %32, align 8, !tbaa !5
  %862 = getelementptr inbounds double, ptr %861, i64 1
  %863 = load ptr, ptr %33, align 8, !tbaa !5
  %864 = getelementptr inbounds double, ptr %863, i64 1
  %865 = load ptr, ptr %34, align 8, !tbaa !5
  %866 = getelementptr inbounds double, ptr %865, i64 1
  %867 = load ptr, ptr %35, align 8, !tbaa !5
  %868 = load i32, ptr %48, align 4, !tbaa !9
  %869 = sext i32 %868 to i64
  %870 = getelementptr inbounds double, ptr %867, i64 %869
  %871 = load ptr, ptr %36, align 8, !tbaa !5
  %872 = load ptr, ptr %37, align 8, !tbaa !5
  %873 = load i32, ptr %50, align 4, !tbaa !9
  %874 = sext i32 %873 to i64
  %875 = getelementptr inbounds double, ptr %872, i64 %874
  %876 = load ptr, ptr %38, align 8, !tbaa !5
  %877 = load ptr, ptr %39, align 8, !tbaa !5
  %878 = load i32, ptr %59, align 4, !tbaa !9
  %879 = sext i32 %878 to i64
  %880 = getelementptr inbounds double, ptr %877, i64 %879
  call void @dhgeqz_(ptr noundef @.str.2, ptr noundef %848, ptr noundef %849, ptr noundef %850, ptr noundef %88, ptr noundef %87, ptr noundef %854, ptr noundef %855, ptr noundef %859, ptr noundef %860, ptr noundef %862, ptr noundef %864, ptr noundef %866, ptr noundef %870, ptr noundef %871, ptr noundef %875, ptr noundef %876, ptr noundef %880, ptr noundef %51, ptr noundef %57)
  %881 = load i32, ptr %57, align 4, !tbaa !9
  %882 = icmp ne i32 %881, 0
  br i1 %882, label %883, label %918

883:                                              ; preds = %809
  %884 = load i32, ptr %57, align 4, !tbaa !9
  %885 = icmp sgt i32 %884, 0
  br i1 %885, label %886, label %894

886:                                              ; preds = %883
  %887 = load i32, ptr %57, align 4, !tbaa !9
  %888 = load ptr, ptr %26, align 8, !tbaa !5
  %889 = load i32, ptr %888, align 4, !tbaa !9
  %890 = icmp sle i32 %887, %889
  br i1 %890, label %891, label %894

891:                                              ; preds = %886
  %892 = load i32, ptr %57, align 4, !tbaa !9
  %893 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 %892, ptr %893, align 4, !tbaa !9
  br label %917

894:                                              ; preds = %886, %883
  %895 = load i32, ptr %57, align 4, !tbaa !9
  %896 = load ptr, ptr %26, align 8, !tbaa !5
  %897 = load i32, ptr %896, align 4, !tbaa !9
  %898 = icmp sgt i32 %895, %897
  br i1 %898, label %899, label %911

899:                                              ; preds = %894
  %900 = load i32, ptr %57, align 4, !tbaa !9
  %901 = load ptr, ptr %26, align 8, !tbaa !5
  %902 = load i32, ptr %901, align 4, !tbaa !9
  %903 = shl i32 %902, 1
  %904 = icmp sle i32 %900, %903
  br i1 %904, label %905, label %911

905:                                              ; preds = %899
  %906 = load i32, ptr %57, align 4, !tbaa !9
  %907 = load ptr, ptr %26, align 8, !tbaa !5
  %908 = load i32, ptr %907, align 4, !tbaa !9
  %909 = sub nsw i32 %906, %908
  %910 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 %909, ptr %910, align 4, !tbaa !9
  br label %916

911:                                              ; preds = %899, %894
  %912 = load ptr, ptr %26, align 8, !tbaa !5
  %913 = load i32, ptr %912, align 4, !tbaa !9
  %914 = add nsw i32 %913, 1
  %915 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 %914, ptr %915, align 4, !tbaa !9
  br label %916

916:                                              ; preds = %911, %905
  br label %917

917:                                              ; preds = %916, %891
  br label %1467

918:                                              ; preds = %809
  %919 = load ptr, ptr %31, align 8, !tbaa !5
  store i32 0, ptr %919, align 4, !tbaa !9
  %920 = load i32, ptr %83, align 4, !tbaa !9
  %921 = icmp ne i32 %920, 0
  br i1 %921, label %922, label %1021

922:                                              ; preds = %918
  %923 = load i32, ptr %71, align 4, !tbaa !9
  %924 = icmp ne i32 %923, 0
  br i1 %924, label %925, label %934

925:                                              ; preds = %922
  %926 = load ptr, ptr %26, align 8, !tbaa !5
  %927 = load ptr, ptr %32, align 8, !tbaa !5
  %928 = getelementptr inbounds double, ptr %927, i64 1
  %929 = load ptr, ptr %26, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.8, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %79, ptr noundef %54, ptr noundef %926, ptr noundef @c__1, ptr noundef %928, ptr noundef %929, ptr noundef %57)
  %930 = load ptr, ptr %26, align 8, !tbaa !5
  %931 = load ptr, ptr %33, align 8, !tbaa !5
  %932 = getelementptr inbounds double, ptr %931, i64 1
  %933 = load ptr, ptr %26, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.8, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %79, ptr noundef %54, ptr noundef %930, ptr noundef @c__1, ptr noundef %932, ptr noundef %933, ptr noundef %57)
  br label %934

934:                                              ; preds = %925, %922
  %935 = load i32, ptr %72, align 4, !tbaa !9
  %936 = icmp ne i32 %935, 0
  br i1 %936, label %937, label %942

937:                                              ; preds = %934
  %938 = load ptr, ptr %26, align 8, !tbaa !5
  %939 = load ptr, ptr %34, align 8, !tbaa !5
  %940 = getelementptr inbounds double, ptr %939, i64 1
  %941 = load ptr, ptr %26, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.8, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %80, ptr noundef %55, ptr noundef %938, ptr noundef @c__1, ptr noundef %940, ptr noundef %941, ptr noundef %57)
  br label %942

942:                                              ; preds = %937, %934
  %943 = load ptr, ptr %26, align 8, !tbaa !5
  %944 = load i32, ptr %943, align 4, !tbaa !9
  store i32 %944, ptr %51, align 4, !tbaa !9
  store i32 1, ptr %62, align 4, !tbaa !9
  br label %945

945:                                              ; preds = %968, %942
  %946 = load i32, ptr %62, align 4, !tbaa !9
  %947 = load i32, ptr %51, align 4, !tbaa !9
  %948 = icmp sle i32 %946, %947
  br i1 %948, label %949, label %971

949:                                              ; preds = %945
  %950 = load ptr, ptr %25, align 8, !tbaa !5
  %951 = load ptr, ptr %32, align 8, !tbaa !5
  %952 = load i32, ptr %62, align 4, !tbaa !9
  %953 = sext i32 %952 to i64
  %954 = getelementptr inbounds double, ptr %951, i64 %953
  %955 = load ptr, ptr %33, align 8, !tbaa !5
  %956 = load i32, ptr %62, align 4, !tbaa !9
  %957 = sext i32 %956 to i64
  %958 = getelementptr inbounds double, ptr %955, i64 %957
  %959 = load ptr, ptr %34, align 8, !tbaa !5
  %960 = load i32, ptr %62, align 4, !tbaa !9
  %961 = sext i32 %960 to i64
  %962 = getelementptr inbounds double, ptr %959, i64 %961
  %963 = call i32 (ptr, ptr, ptr, ...) %950(ptr noundef %954, ptr noundef %958, ptr noundef %962)
  %964 = load ptr, ptr %41, align 8, !tbaa !5
  %965 = load i32, ptr %62, align 4, !tbaa !9
  %966 = sext i32 %965 to i64
  %967 = getelementptr inbounds i32, ptr %964, i64 %966
  store i32 %963, ptr %967, align 4, !tbaa !9
  br label %968

968:                                              ; preds = %949
  %969 = load i32, ptr %62, align 4, !tbaa !9
  %970 = add nsw i32 %969, 1
  store i32 %970, ptr %62, align 4, !tbaa !9
  br label %945, !llvm.loop !13

971:                                              ; preds = %945
  %972 = load ptr, ptr %40, align 8, !tbaa !5
  %973 = load i32, ptr %972, align 4, !tbaa !9
  %974 = load i32, ptr %59, align 4, !tbaa !9
  %975 = sub nsw i32 %973, %974
  %976 = add nsw i32 %975, 1
  store i32 %976, ptr %51, align 4, !tbaa !9
  %977 = load ptr, ptr %41, align 8, !tbaa !5
  %978 = getelementptr inbounds i32, ptr %977, i64 1
  %979 = load ptr, ptr %26, align 8, !tbaa !5
  %980 = load ptr, ptr %27, align 8, !tbaa !5
  %981 = load i32, ptr %44, align 4, !tbaa !9
  %982 = sext i32 %981 to i64
  %983 = getelementptr inbounds double, ptr %980, i64 %982
  %984 = load ptr, ptr %28, align 8, !tbaa !5
  %985 = load ptr, ptr %29, align 8, !tbaa !5
  %986 = load i32, ptr %46, align 4, !tbaa !9
  %987 = sext i32 %986 to i64
  %988 = getelementptr inbounds double, ptr %985, i64 %987
  %989 = load ptr, ptr %30, align 8, !tbaa !5
  %990 = load ptr, ptr %32, align 8, !tbaa !5
  %991 = getelementptr inbounds double, ptr %990, i64 1
  %992 = load ptr, ptr %33, align 8, !tbaa !5
  %993 = getelementptr inbounds double, ptr %992, i64 1
  %994 = load ptr, ptr %34, align 8, !tbaa !5
  %995 = getelementptr inbounds double, ptr %994, i64 1
  %996 = load ptr, ptr %35, align 8, !tbaa !5
  %997 = load i32, ptr %48, align 4, !tbaa !9
  %998 = sext i32 %997 to i64
  %999 = getelementptr inbounds double, ptr %996, i64 %998
  %1000 = load ptr, ptr %36, align 8, !tbaa !5
  %1001 = load ptr, ptr %37, align 8, !tbaa !5
  %1002 = load i32, ptr %50, align 4, !tbaa !9
  %1003 = sext i32 %1002 to i64
  %1004 = getelementptr inbounds double, ptr %1001, i64 %1003
  %1005 = load ptr, ptr %38, align 8, !tbaa !5
  %1006 = load ptr, ptr %31, align 8, !tbaa !5
  %1007 = getelementptr inbounds [2 x double], ptr %86, i64 0, i64 0
  %1008 = load ptr, ptr %39, align 8, !tbaa !5
  %1009 = load i32, ptr %59, align 4, !tbaa !9
  %1010 = sext i32 %1009 to i64
  %1011 = getelementptr inbounds double, ptr %1008, i64 %1010
  %1012 = getelementptr inbounds [1 x i32], ptr %56, i64 0, i64 0
  call void @dtgsen_(ptr noundef @c__0, ptr noundef %66, ptr noundef %67, ptr noundef %978, ptr noundef %979, ptr noundef %983, ptr noundef %984, ptr noundef %988, ptr noundef %989, ptr noundef %991, ptr noundef %993, ptr noundef %995, ptr noundef %999, ptr noundef %1000, ptr noundef %1004, ptr noundef %1005, ptr noundef %1006, ptr noundef %60, ptr noundef %61, ptr noundef %1007, ptr noundef %1011, ptr noundef %51, ptr noundef %1012, ptr noundef @c__1, ptr noundef %57)
  %1013 = load i32, ptr %57, align 4, !tbaa !9
  %1014 = icmp eq i32 %1013, 1
  br i1 %1014, label %1015, label %1020

1015:                                             ; preds = %971
  %1016 = load ptr, ptr %26, align 8, !tbaa !5
  %1017 = load i32, ptr %1016, align 4, !tbaa !9
  %1018 = add nsw i32 %1017, 3
  %1019 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 %1018, ptr %1019, align 4, !tbaa !9
  br label %1020

1020:                                             ; preds = %1015, %971
  br label %1021

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

1024:                                             ; preds = %1021
  %1025 = load ptr, ptr %26, align 8, !tbaa !5
  %1026 = load ptr, ptr %39, align 8, !tbaa !5
  %1027 = load i32, ptr %63, align 4, !tbaa !9
  %1028 = sext i32 %1027 to i64
  %1029 = getelementptr inbounds double, ptr %1026, i64 %1028
  %1030 = load ptr, ptr %39, align 8, !tbaa !5
  %1031 = load i32, ptr %77, align 4, !tbaa !9
  %1032 = sext i32 %1031 to i64
  %1033 = getelementptr inbounds double, ptr %1030, i64 %1032
  %1034 = load ptr, ptr %26, align 8, !tbaa !5
  %1035 = load ptr, ptr %35, align 8, !tbaa !5
  %1036 = load i32, ptr %48, align 4, !tbaa !9
  %1037 = sext i32 %1036 to i64
  %1038 = getelementptr inbounds double, ptr %1035, i64 %1037
  %1039 = load ptr, ptr %36, align 8, !tbaa !5
  call void @dggbak_(ptr noundef @.str.6, ptr noundef @.str.3, ptr noundef %1025, ptr noundef %88, ptr noundef %87, ptr noundef %1029, ptr noundef %1033, ptr noundef %1034, ptr noundef %1038, ptr noundef %1039, ptr noundef %57)
  br label %1040

1040:                                             ; preds = %1024, %1021
  %1041 = load i32, ptr %67, align 4, !tbaa !9
  %1042 = icmp ne i32 %1041, 0
  br i1 %1042, label %1043, label %1059

1043:                                             ; preds = %1040
  %1044 = load ptr, ptr %26, align 8, !tbaa !5
  %1045 = load ptr, ptr %39, align 8, !tbaa !5
  %1046 = load i32, ptr %63, align 4, !tbaa !9
  %1047 = sext i32 %1046 to i64
  %1048 = getelementptr inbounds double, ptr %1045, i64 %1047
  %1049 = load ptr, ptr %39, align 8, !tbaa !5
  %1050 = load i32, ptr %77, align 4, !tbaa !9
  %1051 = sext i32 %1050 to i64
  %1052 = getelementptr inbounds double, ptr %1049, i64 %1051
  %1053 = load ptr, ptr %26, align 8, !tbaa !5
  %1054 = load ptr, ptr %37, align 8, !tbaa !5
  %1055 = load i32, ptr %50, align 4, !tbaa !9
  %1056 = sext i32 %1055 to i64
  %1057 = getelementptr inbounds double, ptr %1054, i64 %1056
  %1058 = load ptr, ptr %38, align 8, !tbaa !5
  call void @dggbak_(ptr noundef @.str.6, ptr noundef @.str.10, ptr noundef %1044, ptr noundef %88, ptr noundef %87, ptr noundef %1048, ptr noundef %1052, ptr noundef %1053, ptr noundef %1057, ptr noundef %1058, ptr noundef %57)
  br label %1059

1059:                                             ; preds = %1043, %1040
  %1060 = load i32, ptr %71, align 4, !tbaa !9
  %1061 = icmp ne i32 %1060, 0
  br i1 %1061, label %1062, label %1240

1062:                                             ; preds = %1059
  %1063 = load ptr, ptr %26, align 8, !tbaa !5
  %1064 = load i32, ptr %1063, align 4, !tbaa !9
  store i32 %1064, ptr %51, align 4, !tbaa !9
  store i32 1, ptr %62, align 4, !tbaa !9
  br label %1065

1065:                                             ; preds = %1236, %1062
  %1066 = load i32, ptr %62, align 4, !tbaa !9
  %1067 = load i32, ptr %51, align 4, !tbaa !9
  %1068 = icmp sle i32 %1066, %1067
  br i1 %1068, label %1069, label %1239

1069:                                             ; preds = %1065
  %1070 = load ptr, ptr %33, align 8, !tbaa !5
  %1071 = load i32, ptr %62, align 4, !tbaa !9
  %1072 = sext i32 %1071 to i64
  %1073 = getelementptr inbounds double, ptr %1070, i64 %1072
  %1074 = load double, ptr %1073, align 8, !tbaa !11
  %1075 = fcmp une double %1074, 0.000000e+00
  br i1 %1075, label %1076, label %1235

1076:                                             ; preds = %1069
  %1077 = load ptr, ptr %32, align 8, !tbaa !5
  %1078 = load i32, ptr %62, align 4, !tbaa !9
  %1079 = sext i32 %1078 to i64
  %1080 = getelementptr inbounds double, ptr %1077, i64 %1079
  %1081 = load double, ptr %1080, align 8, !tbaa !11
  %1082 = load double, ptr %74, align 8, !tbaa !11
  %1083 = fdiv double %1081, %1082
  %1084 = load double, ptr %79, align 8, !tbaa !11
  %1085 = load double, ptr %54, align 8, !tbaa !11
  %1086 = fdiv double %1084, %1085
  %1087 = fcmp ogt double %1083, %1086
  br i1 %1087, label %1100, label %1088

1088:                                             ; preds = %1076
  %1089 = load double, ptr %73, align 8, !tbaa !11
  %1090 = load ptr, ptr %32, align 8, !tbaa !5
  %1091 = load i32, ptr %62, align 4, !tbaa !9
  %1092 = sext i32 %1091 to i64
  %1093 = getelementptr inbounds double, ptr %1090, i64 %1092
  %1094 = load double, ptr %1093, align 8, !tbaa !11
  %1095 = fdiv double %1089, %1094
  %1096 = load double, ptr %54, align 8, !tbaa !11
  %1097 = load double, ptr %79, align 8, !tbaa !11
  %1098 = fdiv double %1096, %1097
  %1099 = fcmp ogt double %1095, %1098
  br i1 %1099, label %1100, label %1154

1100:                                             ; preds = %1088, %1076
  %1101 = load ptr, ptr %27, align 8, !tbaa !5
  %1102 = load i32, ptr %62, align 4, !tbaa !9
  %1103 = load i32, ptr %62, align 4, !tbaa !9
  %1104 = load i32, ptr %43, align 4, !tbaa !9
  %1105 = mul nsw i32 %1103, %1104
  %1106 = add nsw i32 %1102, %1105
  %1107 = sext i32 %1106 to i64
  %1108 = getelementptr inbounds double, ptr %1101, i64 %1107
  %1109 = load double, ptr %1108, align 8, !tbaa !11
  %1110 = load ptr, ptr %32, align 8, !tbaa !5
  %1111 = load i32, ptr %62, align 4, !tbaa !9
  %1112 = sext i32 %1111 to i64
  %1113 = getelementptr inbounds double, ptr %1110, i64 %1112
  %1114 = load double, ptr %1113, align 8, !tbaa !11
  %1115 = fdiv double %1109, %1114
  store double %1115, ptr %53, align 8, !tbaa !11
  %1116 = load double, ptr %53, align 8, !tbaa !11
  %1117 = fcmp oge double %1116, 0.000000e+00
  br i1 %1117, label %1118, label %1120

1118:                                             ; preds = %1100
  %1119 = load double, ptr %53, align 8, !tbaa !11
  br label %1123

1120:                                             ; preds = %1100
  %1121 = load double, ptr %53, align 8, !tbaa !11
  %1122 = fneg double %1121
  br label %1123

1123:                                             ; preds = %1120, %1118
  %1124 = phi double [ %1119, %1118 ], [ %1122, %1120 ]
  %1125 = load ptr, ptr %39, align 8, !tbaa !5
  %1126 = getelementptr inbounds double, ptr %1125, i64 1
  store double %1124, ptr %1126, align 8, !tbaa !11
  %1127 = load ptr, ptr %39, align 8, !tbaa !5
  %1128 = getelementptr inbounds double, ptr %1127, i64 1
  %1129 = load double, ptr %1128, align 8, !tbaa !11
  %1130 = load ptr, ptr %34, align 8, !tbaa !5
  %1131 = load i32, ptr %62, align 4, !tbaa !9
  %1132 = sext i32 %1131 to i64
  %1133 = getelementptr inbounds double, ptr %1130, i64 %1132
  %1134 = load double, ptr %1133, align 8, !tbaa !11
  %1135 = fmul double %1134, %1129
  store double %1135, ptr %1133, align 8, !tbaa !11
  %1136 = load ptr, ptr %39, align 8, !tbaa !5
  %1137 = getelementptr inbounds double, ptr %1136, i64 1
  %1138 = load double, ptr %1137, align 8, !tbaa !11
  %1139 = load ptr, ptr %32, align 8, !tbaa !5
  %1140 = load i32, ptr %62, align 4, !tbaa !9
  %1141 = sext i32 %1140 to i64
  %1142 = getelementptr inbounds double, ptr %1139, i64 %1141
  %1143 = load double, ptr %1142, align 8, !tbaa !11
  %1144 = fmul double %1143, %1138
  store double %1144, ptr %1142, align 8, !tbaa !11
  %1145 = load ptr, ptr %39, align 8, !tbaa !5
  %1146 = getelementptr inbounds double, ptr %1145, i64 1
  %1147 = load double, ptr %1146, align 8, !tbaa !11
  %1148 = load ptr, ptr %33, align 8, !tbaa !5
  %1149 = load i32, ptr %62, align 4, !tbaa !9
  %1150 = sext i32 %1149 to i64
  %1151 = getelementptr inbounds double, ptr %1148, i64 %1150
  %1152 = load double, ptr %1151, align 8, !tbaa !11
  %1153 = fmul double %1152, %1147
  store double %1153, ptr %1151, align 8, !tbaa !11
  br label %1234

1154:                                             ; preds = %1088
  %1155 = load ptr, ptr %33, align 8, !tbaa !5
  %1156 = load i32, ptr %62, align 4, !tbaa !9
  %1157 = sext i32 %1156 to i64
  %1158 = getelementptr inbounds double, ptr %1155, i64 %1157
  %1159 = load double, ptr %1158, align 8, !tbaa !11
  %1160 = load double, ptr %74, align 8, !tbaa !11
  %1161 = fdiv double %1159, %1160
  %1162 = load double, ptr %79, align 8, !tbaa !11
  %1163 = load double, ptr %54, align 8, !tbaa !11
  %1164 = fdiv double %1162, %1163
  %1165 = fcmp ogt double %1161, %1164
  br i1 %1165, label %1178, label %1166

1166:                                             ; preds = %1154
  %1167 = load double, ptr %73, align 8, !tbaa !11
  %1168 = load ptr, ptr %33, align 8, !tbaa !5
  %1169 = load i32, ptr %62, align 4, !tbaa !9
  %1170 = sext i32 %1169 to i64
  %1171 = getelementptr inbounds double, ptr %1168, i64 %1170
  %1172 = load double, ptr %1171, align 8, !tbaa !11
  %1173 = fdiv double %1167, %1172
  %1174 = load double, ptr %54, align 8, !tbaa !11
  %1175 = load double, ptr %79, align 8, !tbaa !11
  %1176 = fdiv double %1174, %1175
  %1177 = fcmp ogt double %1173, %1176
  br i1 %1177, label %1178, label %1233

1178:                                             ; preds = %1166, %1154
  %1179 = load ptr, ptr %27, align 8, !tbaa !5
  %1180 = load i32, ptr %62, align 4, !tbaa !9
  %1181 = load i32, ptr %62, align 4, !tbaa !9
  %1182 = add nsw i32 %1181, 1
  %1183 = load i32, ptr %43, align 4, !tbaa !9
  %1184 = mul nsw i32 %1182, %1183
  %1185 = add nsw i32 %1180, %1184
  %1186 = sext i32 %1185 to i64
  %1187 = getelementptr inbounds double, ptr %1179, i64 %1186
  %1188 = load double, ptr %1187, align 8, !tbaa !11
  %1189 = load ptr, ptr %33, align 8, !tbaa !5
  %1190 = load i32, ptr %62, align 4, !tbaa !9
  %1191 = sext i32 %1190 to i64
  %1192 = getelementptr inbounds double, ptr %1189, i64 %1191
  %1193 = load double, ptr %1192, align 8, !tbaa !11
  %1194 = fdiv double %1188, %1193
  store double %1194, ptr %53, align 8, !tbaa !11
  %1195 = load double, ptr %53, align 8, !tbaa !11
  %1196 = fcmp oge double %1195, 0.000000e+00
  br i1 %1196, label %1197, label %1199

1197:                                             ; preds = %1178
  %1198 = load double, ptr %53, align 8, !tbaa !11
  br label %1202

1199:                                             ; preds = %1178
  %1200 = load double, ptr %53, align 8, !tbaa !11
  %1201 = fneg double %1200
  br label %1202

1202:                                             ; preds = %1199, %1197
  %1203 = phi double [ %1198, %1197 ], [ %1201, %1199 ]
  %1204 = load ptr, ptr %39, align 8, !tbaa !5
  %1205 = getelementptr inbounds double, ptr %1204, i64 1
  store double %1203, ptr %1205, align 8, !tbaa !11
  %1206 = load ptr, ptr %39, align 8, !tbaa !5
  %1207 = getelementptr inbounds double, ptr %1206, i64 1
  %1208 = load double, ptr %1207, align 8, !tbaa !11
  %1209 = load ptr, ptr %34, align 8, !tbaa !5
  %1210 = load i32, ptr %62, align 4, !tbaa !9
  %1211 = sext i32 %1210 to i64
  %1212 = getelementptr inbounds double, ptr %1209, i64 %1211
  %1213 = load double, ptr %1212, align 8, !tbaa !11
  %1214 = fmul double %1213, %1208
  store double %1214, ptr %1212, align 8, !tbaa !11
  %1215 = load ptr, ptr %39, align 8, !tbaa !5
  %1216 = getelementptr inbounds double, ptr %1215, i64 1
  %1217 = load double, ptr %1216, align 8, !tbaa !11
  %1218 = load ptr, ptr %32, align 8, !tbaa !5
  %1219 = load i32, ptr %62, align 4, !tbaa !9
  %1220 = sext i32 %1219 to i64
  %1221 = getelementptr inbounds double, ptr %1218, i64 %1220
  %1222 = load double, ptr %1221, align 8, !tbaa !11
  %1223 = fmul double %1222, %1217
  store double %1223, ptr %1221, align 8, !tbaa !11
  %1224 = load ptr, ptr %39, align 8, !tbaa !5
  %1225 = getelementptr inbounds double, ptr %1224, i64 1
  %1226 = load double, ptr %1225, align 8, !tbaa !11
  %1227 = load ptr, ptr %33, align 8, !tbaa !5
  %1228 = load i32, ptr %62, align 4, !tbaa !9
  %1229 = sext i32 %1228 to i64
  %1230 = getelementptr inbounds double, ptr %1227, i64 %1229
  %1231 = load double, ptr %1230, align 8, !tbaa !11
  %1232 = fmul double %1231, %1226
  store double %1232, ptr %1230, align 8, !tbaa !11
  br label %1233

1233:                                             ; preds = %1202, %1166
  br label %1234

1234:                                             ; preds = %1233, %1123
  br label %1235

1235:                                             ; preds = %1234, %1069
  br label %1236

1236:                                             ; preds = %1235
  %1237 = load i32, ptr %62, align 4, !tbaa !9
  %1238 = add nsw i32 %1237, 1
  store i32 %1238, ptr %62, align 4, !tbaa !9
  br label %1065, !llvm.loop !15

1239:                                             ; preds = %1065
  br label %1240

1240:                                             ; preds = %1239, %1059
  %1241 = load i32, ptr %72, align 4, !tbaa !9
  %1242 = icmp ne i32 %1241, 0
  br i1 %1242, label %1243, label %1341

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

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

1250:                                             ; preds = %1246
  %1251 = load ptr, ptr %33, align 8, !tbaa !5
  %1252 = load i32, ptr %62, align 4, !tbaa !9
  %1253 = sext i32 %1252 to i64
  %1254 = getelementptr inbounds double, ptr %1251, i64 %1253
  %1255 = load double, ptr %1254, align 8, !tbaa !11
  %1256 = fcmp une double %1255, 0.000000e+00
  br i1 %1256, label %1257, label %1336

1257:                                             ; preds = %1250
  %1258 = load ptr, ptr %34, align 8, !tbaa !5
  %1259 = load i32, ptr %62, align 4, !tbaa !9
  %1260 = sext i32 %1259 to i64
  %1261 = getelementptr inbounds double, ptr %1258, i64 %1260
  %1262 = load double, ptr %1261, align 8, !tbaa !11
  %1263 = load double, ptr %74, align 8, !tbaa !11
  %1264 = fdiv double %1262, %1263
  %1265 = load double, ptr %80, align 8, !tbaa !11
  %1266 = load double, ptr %55, align 8, !tbaa !11
  %1267 = fdiv double %1265, %1266
  %1268 = fcmp ogt double %1264, %1267
  br i1 %1268, label %1281, label %1269

1269:                                             ; preds = %1257
  %1270 = load double, ptr %73, align 8, !tbaa !11
  %1271 = load ptr, ptr %34, align 8, !tbaa !5
  %1272 = load i32, ptr %62, align 4, !tbaa !9
  %1273 = sext i32 %1272 to i64
  %1274 = getelementptr inbounds double, ptr %1271, i64 %1273
  %1275 = load double, ptr %1274, align 8, !tbaa !11
  %1276 = fdiv double %1270, %1275
  %1277 = load double, ptr %55, align 8, !tbaa !11
  %1278 = load double, ptr %80, align 8, !tbaa !11
  %1279 = fdiv double %1277, %1278
  %1280 = fcmp ogt double %1276, %1279
  br i1 %1280, label %1281, label %1335

1281:                                             ; preds = %1269, %1257
  %1282 = load ptr, ptr %29, align 8, !tbaa !5
  %1283 = load i32, ptr %62, align 4, !tbaa !9
  %1284 = load i32, ptr %62, align 4, !tbaa !9
  %1285 = load i32, ptr %45, align 4, !tbaa !9
  %1286 = mul nsw i32 %1284, %1285
  %1287 = add nsw i32 %1283, %1286
  %1288 = sext i32 %1287 to i64
  %1289 = getelementptr inbounds double, ptr %1282, i64 %1288
  %1290 = load double, ptr %1289, align 8, !tbaa !11
  %1291 = load ptr, ptr %34, align 8, !tbaa !5
  %1292 = load i32, ptr %62, align 4, !tbaa !9
  %1293 = sext i32 %1292 to i64
  %1294 = getelementptr inbounds double, ptr %1291, i64 %1293
  %1295 = load double, ptr %1294, align 8, !tbaa !11
  %1296 = fdiv double %1290, %1295
  store double %1296, ptr %53, align 8, !tbaa !11
  %1297 = load double, ptr %53, align 8, !tbaa !11
  %1298 = fcmp oge double %1297, 0.000000e+00
  br i1 %1298, label %1299, label %1301

1299:                                             ; preds = %1281
  %1300 = load double, ptr %53, align 8, !tbaa !11
  br label %1304

1301:                                             ; preds = %1281
  %1302 = load double, ptr %53, align 8, !tbaa !11
  %1303 = fneg double %1302
  br label %1304

1304:                                             ; preds = %1301, %1299
  %1305 = phi double [ %1300, %1299 ], [ %1303, %1301 ]
  %1306 = load ptr, ptr %39, align 8, !tbaa !5
  %1307 = getelementptr inbounds double, ptr %1306, i64 1
  store double %1305, ptr %1307, align 8, !tbaa !11
  %1308 = load ptr, ptr %39, align 8, !tbaa !5
  %1309 = getelementptr inbounds double, ptr %1308, i64 1
  %1310 = load double, ptr %1309, align 8, !tbaa !11
  %1311 = load ptr, ptr %34, align 8, !tbaa !5
  %1312 = load i32, ptr %62, align 4, !tbaa !9
  %1313 = sext i32 %1312 to i64
  %1314 = getelementptr inbounds double, ptr %1311, i64 %1313
  %1315 = load double, ptr %1314, align 8, !tbaa !11
  %1316 = fmul double %1315, %1310
  store double %1316, ptr %1314, align 8, !tbaa !11
  %1317 = load ptr, ptr %39, align 8, !tbaa !5
  %1318 = getelementptr inbounds double, ptr %1317, i64 1
  %1319 = load double, ptr %1318, align 8, !tbaa !11
  %1320 = load ptr, ptr %32, align 8, !tbaa !5
  %1321 = load i32, ptr %62, align 4, !tbaa !9
  %1322 = sext i32 %1321 to i64
  %1323 = getelementptr inbounds double, ptr %1320, i64 %1322
  %1324 = load double, ptr %1323, align 8, !tbaa !11
  %1325 = fmul double %1324, %1319
  store double %1325, ptr %1323, align 8, !tbaa !11
  %1326 = load ptr, ptr %39, align 8, !tbaa !5
  %1327 = getelementptr inbounds double, ptr %1326, i64 1
  %1328 = load double, ptr %1327, align 8, !tbaa !11
  %1329 = load ptr, ptr %33, align 8, !tbaa !5
  %1330 = load i32, ptr %62, align 4, !tbaa !9
  %1331 = sext i32 %1330 to i64
  %1332 = getelementptr inbounds double, ptr %1329, i64 %1331
  %1333 = load double, ptr %1332, align 8, !tbaa !11
  %1334 = fmul double %1333, %1328
  store double %1334, ptr %1332, align 8, !tbaa !11
  br label %1335

1335:                                             ; preds = %1304, %1269
  br label %1336

1336:                                             ; preds = %1335, %1250
  br label %1337

1337:                                             ; preds = %1336
  %1338 = load i32, ptr %62, align 4, !tbaa !9
  %1339 = add nsw i32 %1338, 1
  store i32 %1339, ptr %62, align 4, !tbaa !9
  br label %1246, !llvm.loop !16

1340:                                             ; preds = %1246
  br label %1341

1341:                                             ; preds = %1340, %1240
  %1342 = load i32, ptr %71, align 4, !tbaa !9
  %1343 = icmp ne i32 %1342, 0
  br i1 %1343, label %1344, label %1360

1344:                                             ; preds = %1341
  %1345 = load ptr, ptr %26, align 8, !tbaa !5
  %1346 = load ptr, ptr %26, align 8, !tbaa !5
  %1347 = load ptr, ptr %27, align 8, !tbaa !5
  %1348 = load i32, ptr %44, align 4, !tbaa !9
  %1349 = sext i32 %1348 to i64
  %1350 = getelementptr inbounds double, ptr %1347, i64 %1349
  %1351 = load ptr, ptr %28, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.11, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %79, ptr noundef %54, ptr noundef %1345, ptr noundef %1346, ptr noundef %1350, ptr noundef %1351, ptr noundef %57)
  %1352 = load ptr, ptr %26, align 8, !tbaa !5
  %1353 = load ptr, ptr %32, align 8, !tbaa !5
  %1354 = getelementptr inbounds double, ptr %1353, i64 1
  %1355 = load ptr, ptr %26, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.8, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %79, ptr noundef %54, ptr noundef %1352, ptr noundef @c__1, ptr noundef %1354, ptr noundef %1355, ptr noundef %57)
  %1356 = load ptr, ptr %26, align 8, !tbaa !5
  %1357 = load ptr, ptr %33, align 8, !tbaa !5
  %1358 = getelementptr inbounds double, ptr %1357, i64 1
  %1359 = load ptr, ptr %26, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.8, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %79, ptr noundef %54, ptr noundef %1356, ptr noundef @c__1, ptr noundef %1358, ptr noundef %1359, ptr noundef %57)
  br label %1360

1360:                                             ; preds = %1344, %1341
  %1361 = load i32, ptr %72, align 4, !tbaa !9
  %1362 = icmp ne i32 %1361, 0
  br i1 %1362, label %1363, label %1375

1363:                                             ; preds = %1360
  %1364 = load ptr, ptr %26, align 8, !tbaa !5
  %1365 = load ptr, ptr %26, align 8, !tbaa !5
  %1366 = load ptr, ptr %29, align 8, !tbaa !5
  %1367 = load i32, ptr %46, align 4, !tbaa !9
  %1368 = sext i32 %1367 to i64
  %1369 = getelementptr inbounds double, ptr %1366, i64 %1368
  %1370 = load ptr, ptr %30, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %80, ptr noundef %55, ptr noundef %1364, ptr noundef %1365, ptr noundef %1369, ptr noundef %1370, ptr noundef %57)
  %1371 = load ptr, ptr %26, align 8, !tbaa !5
  %1372 = load ptr, ptr %34, align 8, !tbaa !5
  %1373 = getelementptr inbounds double, ptr %1372, i64 1
  %1374 = load ptr, ptr %26, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.8, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %80, ptr noundef %55, ptr noundef %1371, ptr noundef @c__1, ptr noundef %1373, ptr noundef %1374, ptr noundef %57)
  br label %1375

1375:                                             ; preds = %1363, %1360
  %1376 = load i32, ptr %83, align 4, !tbaa !9
  %1377 = icmp ne i32 %1376, 0
  br i1 %1377, label %1378, label %1466

1378:                                             ; preds = %1375
  store i32 1, ptr %81, align 4, !tbaa !9
  store i32 1, ptr %69, align 4, !tbaa !9
  %1379 = load ptr, ptr %31, align 8, !tbaa !5
  store i32 0, ptr %1379, align 4, !tbaa !9
  store i32 0, ptr %70, align 4, !tbaa !9
  %1380 = load ptr, ptr %26, align 8, !tbaa !5
  %1381 = load i32, ptr %1380, align 4, !tbaa !9
  store i32 %1381, ptr %51, align 4, !tbaa !9
  store i32 1, ptr %62, align 4, !tbaa !9
  br label %1382

1382:                                             ; preds = %1462, %1378
  %1383 = load i32, ptr %62, align 4, !tbaa !9
  %1384 = load i32, ptr %51, align 4, !tbaa !9
  %1385 = icmp sle i32 %1383, %1384
  br i1 %1385, label %1386, label %1465

1386:                                             ; preds = %1382
  %1387 = load ptr, ptr %25, align 8, !tbaa !5
  %1388 = load ptr, ptr %32, align 8, !tbaa !5
  %1389 = load i32, ptr %62, align 4, !tbaa !9
  %1390 = sext i32 %1389 to i64
  %1391 = getelementptr inbounds double, ptr %1388, i64 %1390
  %1392 = load ptr, ptr %33, align 8, !tbaa !5
  %1393 = load i32, ptr %62, align 4, !tbaa !9
  %1394 = sext i32 %1393 to i64
  %1395 = getelementptr inbounds double, ptr %1392, i64 %1394
  %1396 = load ptr, ptr %34, align 8, !tbaa !5
  %1397 = load i32, ptr %62, align 4, !tbaa !9
  %1398 = sext i32 %1397 to i64
  %1399 = getelementptr inbounds double, ptr %1396, i64 %1398
  %1400 = call i32 (ptr, ptr, ptr, ...) %1387(ptr noundef %1391, ptr noundef %1395, ptr noundef %1399)
  store i32 %1400, ptr %65, align 4, !tbaa !9
  %1401 = load ptr, ptr %33, align 8, !tbaa !5
  %1402 = load i32, ptr %62, align 4, !tbaa !9
  %1403 = sext i32 %1402 to i64
  %1404 = getelementptr inbounds double, ptr %1401, i64 %1403
  %1405 = load double, ptr %1404, align 8, !tbaa !11
  %1406 = fcmp oeq double %1405, 0.000000e+00
  br i1 %1406, label %1407, label %1426

1407:                                             ; preds = %1386
  %1408 = load i32, ptr %65, align 4, !tbaa !9
  %1409 = icmp ne i32 %1408, 0
  br i1 %1409, label %1410, label %1414

1410:                                             ; preds = %1407
  %1411 = load ptr, ptr %31, align 8, !tbaa !5
  %1412 = load i32, ptr %1411, align 4, !tbaa !9
  %1413 = add nsw i32 %1412, 1
  store i32 %1413, ptr %1411, align 4, !tbaa !9
  br label %1414

1414:                                             ; preds = %1410, %1407
  store i32 0, ptr %70, align 4, !tbaa !9
  %1415 = load i32, ptr %65, align 4, !tbaa !9
  %1416 = icmp ne i32 %1415, 0
  br i1 %1416, label %1417, label %1425

1417:                                             ; preds = %1414
  %1418 = load i32, ptr %81, align 4, !tbaa !9
  %1419 = icmp ne i32 %1418, 0
  br i1 %1419, label %1425, label %1420

1420:                                             ; preds = %1417
  %1421 = load ptr, ptr %26, align 8, !tbaa !5
  %1422 = load i32, ptr %1421, align 4, !tbaa !9
  %1423 = add nsw i32 %1422, 2
  %1424 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 %1423, ptr %1424, align 4, !tbaa !9
  br label %1425

1425:                                             ; preds = %1420, %1417, %1414
  br label %1459

1426:                                             ; preds = %1386
  %1427 = load i32, ptr %70, align 4, !tbaa !9
  %1428 = icmp eq i32 %1427, 1
  br i1 %1428, label %1429, label %1457

1429:                                             ; preds = %1426
  %1430 = load i32, ptr %65, align 4, !tbaa !9
  %1431 = icmp ne i32 %1430, 0
  br i1 %1431, label %1435, label %1432

1432:                                             ; preds = %1429
  %1433 = load i32, ptr %81, align 4, !tbaa !9
  %1434 = icmp ne i32 %1433, 0
  br label %1435

1435:                                             ; preds = %1432, %1429
  %1436 = phi i1 [ true, %1429 ], [ %1434, %1432 ]
  %1437 = zext i1 %1436 to i32
  store i32 %1437, ptr %65, align 4, !tbaa !9
  %1438 = load i32, ptr %65, align 4, !tbaa !9
  store i32 %1438, ptr %81, align 4, !tbaa !9
  %1439 = load i32, ptr %65, align 4, !tbaa !9
  %1440 = icmp ne i32 %1439, 0
  br i1 %1440, label %1441, label %1445

1441:                                             ; preds = %1435
  %1442 = load ptr, ptr %31, align 8, !tbaa !5
  %1443 = load i32, ptr %1442, align 4, !tbaa !9
  %1444 = add nsw i32 %1443, 2
  store i32 %1444, ptr %1442, align 4, !tbaa !9
  br label %1445

1445:                                             ; preds = %1441, %1435
  store i32 -1, ptr %70, align 4, !tbaa !9
  %1446 = load i32, ptr %65, align 4, !tbaa !9
  %1447 = icmp ne i32 %1446, 0
  br i1 %1447, label %1448, label %1456

1448:                                             ; preds = %1445
  %1449 = load i32, ptr %69, align 4, !tbaa !9
  %1450 = icmp ne i32 %1449, 0
  br i1 %1450, label %1456, label %1451

1451:                                             ; preds = %1448
  %1452 = load ptr, ptr %26, align 8, !tbaa !5
  %1453 = load i32, ptr %1452, align 4, !tbaa !9
  %1454 = add nsw i32 %1453, 2
  %1455 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 %1454, ptr %1455, align 4, !tbaa !9
  br label %1456

1456:                                             ; preds = %1451, %1448, %1445
  br label %1458

1457:                                             ; preds = %1426
  store i32 1, ptr %70, align 4, !tbaa !9
  br label %1458

1458:                                             ; preds = %1457, %1456
  br label %1459

1459:                                             ; preds = %1458, %1425
  %1460 = load i32, ptr %81, align 4, !tbaa !9
  store i32 %1460, ptr %69, align 4, !tbaa !9
  %1461 = load i32, ptr %65, align 4, !tbaa !9
  store i32 %1461, ptr %81, align 4, !tbaa !9
  br label %1462

1462:                                             ; preds = %1459
  %1463 = load i32, ptr %62, align 4, !tbaa !9
  %1464 = add nsw i32 %1463, 1
  store i32 %1464, ptr %62, align 4, !tbaa !9
  br label %1382, !llvm.loop !17

1465:                                             ; preds = %1382
  br label %1466

1466:                                             ; preds = %1465, %1375
  br label %1467

1467:                                             ; preds = %1466, %917
  %1468 = load i32, ptr %85, align 4, !tbaa !9
  %1469 = sitofp i32 %1468 to double
  %1470 = load ptr, ptr %39, align 8, !tbaa !5
  %1471 = getelementptr inbounds double, ptr %1470, i64 1
  store double %1469, ptr %1471, align 8, !tbaa !11
  store i32 1, ptr %90, align 4
  br label %1472

1472:                                             ; preds = %1467, %555, %549, %541
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %86) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 4, 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
  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 void @dtgsen_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare i32 @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 @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 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = distinct !{!17, !14}


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

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

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

56:                                               ; preds = %21
  store i32 0, ptr %31, align 4, !tbaa !5
  br label %61

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

59:                                               ; preds = %57
  store i32 1, ptr %31, align 4, !tbaa !5
  br label %61

60:                                               ; preds = %57
  store i32 0, ptr %31, align 4, !tbaa !5
  br label %61

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

64:                                               ; preds = %61
  store i32 0, ptr %32, align 4, !tbaa !5
  br label %69

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

67:                                               ; preds = %65
  store i32 1, ptr %32, align 4, !tbaa !5
  br label %69

68:                                               ; preds = %65
  store i32 0, ptr %32, align 4, !tbaa !5
  br label %69

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

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

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

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

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

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

86:                                               ; preds = %83
  %87 = load i32, ptr %14, align 4, !tbaa !5
  %88 = icmp slt i32 %87, 1
  %89 = icmp ult i32 %87, %78
  %or.cond617 = and i1 %89, %.not560
  %or.cond664 = or i1 %88, %or.cond617
  br i1 %or.cond664, label %.thread597.sink.split, label %90

90:                                               ; preds = %86
  %91 = load i32, ptr %16, align 4, !tbaa !5
  %92 = icmp slt i32 %91, 1
  %93 = icmp ult i32 %91, %78
  %or.cond618 = and i1 %93, %.not561
  %or.cond665 = or i1 %92, %or.cond618
  br i1 %or.cond665, label %.thread597.sink.split, label %94

94:                                               ; preds = %90
  %95 = load i32, ptr %18, align 4, !tbaa !5
  %96 = mul nuw nsw i32 %78, 6
  %97 = add nuw nsw i32 %96, 16
  %98 = icmp sge i32 %95, %97
  %or.cond = select i1 %98, i1 true, i1 %73
  br i1 %or.cond, label %99, label %.thread597.sink.split

99:                                               ; preds = %94
  %.pr = load i32, ptr %20, align 4, !tbaa !5
  %100 = icmp eq i32 %.pr, 0
  br i1 %100, label %101, label %.thread597

101:                                              ; preds = %99
  call void @dgeqrf_(ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %17, ptr noundef %17, ptr noundef nonnull @c_n1, ptr noundef nonnull %27) #5
  %102 = load i32, ptr %4, align 4, !tbaa !5
  %103 = mul nsw i32 %102, 6
  %104 = add nsw i32 %103, 16
  store i32 %104, ptr %22, align 4, !tbaa !5
  %105 = mul nsw i32 %102, 3
  %106 = load double, ptr %17, align 8, !tbaa !9
  %107 = fptosi double %106 to i32
  %108 = add nsw i32 %105, %107
  store i32 %108, ptr %23, align 4, !tbaa !5
  %109 = call i32 @llvm.smax.i32(i32 %104, i32 %108)
  call void @dormqr_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull %17, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %17, ptr noundef nonnull @c_n1, ptr noundef nonnull %27) #5
  store i32 %109, ptr %22, align 4, !tbaa !5
  %110 = load i32, ptr %4, align 4, !tbaa !5
  %111 = mul nsw i32 %110, 3
  %112 = load double, ptr %17, align 8, !tbaa !9
  %113 = fptosi double %112 to i32
  %114 = add nsw i32 %111, %113
  store i32 %114, ptr %23, align 4, !tbaa !5
  %115 = call i32 @llvm.smax.i32(i32 %109, i32 %114)
  %116 = load i32, ptr %31, align 4, !tbaa !5
  %.not564 = icmp eq i32 %116, 0
  br i1 %.not564, label %124, label %117

117:                                              ; preds = %101
  call void @dorgqr_(ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %17, ptr noundef nonnull %17, ptr noundef nonnull @c_n1, ptr noundef nonnull %27) #5
  store i32 %115, ptr %22, align 4, !tbaa !5
  %118 = load i32, ptr %4, align 4, !tbaa !5
  %119 = mul nsw i32 %118, 3
  %120 = load double, ptr %17, align 8, !tbaa !9
  %121 = fptosi double %120 to i32
  %122 = add nsw i32 %119, %121
  store i32 %122, ptr %23, align 4, !tbaa !5
  %123 = call i32 @llvm.smax.i32(i32 %115, i32 %122)
  br label %124

124:                                              ; preds = %117, %101
  %.0 = phi i32 [ %123, %117 ], [ %115, %101 ]
  call void @dgghd3_(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %13, ptr noundef nonnull %14, ptr noundef %15, ptr noundef nonnull %16, ptr noundef nonnull %17, ptr noundef nonnull @c_n1, ptr noundef nonnull %27) #5
  store i32 %.0, ptr %22, align 4, !tbaa !5
  %125 = load i32, ptr %4, align 4, !tbaa !5
  %126 = mul nsw i32 %125, 3
  %127 = load double, ptr %17, align 8, !tbaa !9
  %128 = fptosi double %127 to i32
  %129 = add nsw i32 %126, %128
  store i32 %129, ptr %23, align 4, !tbaa !5
  %130 = call i32 @llvm.smax.i32(i32 %.0, i32 %129)
  call void @dhgeqz_(ptr noundef nonnull @.str.2, ptr noundef %0, ptr noundef %1, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef nonnull %14, ptr noundef %15, ptr noundef nonnull %16, ptr noundef nonnull %17, ptr noundef nonnull @c_n1, ptr noundef nonnull %27) #5
  store i32 %130, ptr %22, align 4, !tbaa !5
  %131 = load i32, ptr %4, align 4, !tbaa !5
  %132 = shl i32 %131, 1
  %133 = load double, ptr %17, align 8, !tbaa !9
  %134 = fptosi double %133 to i32
  %135 = add nsw i32 %132, %134
  store i32 %135, ptr %23, align 4, !tbaa !5
  %136 = call i32 @llvm.smax.i32(i32 %130, i32 %135)
  br i1 %.not558, label %.thread, label %137

137:                                              ; preds = %124
  call void @dtgsen_(ptr noundef nonnull @c__0, ptr noundef nonnull %31, ptr noundef nonnull %32, ptr noundef %19, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef nonnull %14, ptr noundef %15, ptr noundef nonnull %16, ptr noundef %9, ptr noundef nonnull %28, ptr noundef nonnull %29, ptr noundef nonnull %38, ptr noundef nonnull %17, ptr noundef nonnull @c_n1, ptr noundef nonnull %26, ptr noundef nonnull @c__1, ptr noundef nonnull %27) #5
  store i32 %136, ptr %22, align 4, !tbaa !5
  %138 = load i32, ptr %4, align 4, !tbaa !5
  %139 = shl i32 %138, 1
  %140 = load double, ptr %17, align 8, !tbaa !9
  %141 = fptosi double %140 to i32
  %142 = add nsw i32 %139, %141
  store i32 %142, ptr %23, align 4, !tbaa !5
  %143 = call i32 @llvm.smax.i32(i32 %136, i32 %142)
  br label %.thread

.thread:                                          ; preds = %124, %137
  %144 = phi i32 [ %138, %137 ], [ %131, %124 ]
  %.1 = phi i32 [ %143, %137 ], [ %136, %124 ]
  %145 = sitofp i32 %.1 to double
  store double %145, ptr %17, align 8, !tbaa !9
  %.pr596.pr = load i32, ptr %20, align 4, !tbaa !5
  %.not570 = icmp eq i32 %.pr596.pr, 0
  br i1 %.not570, label %149, label %.thread597

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

.thread597:                                       ; preds = %.thread597.sink.split, %99, %.thread
  %146 = phi i32 [ %.pr596.pr, %.thread ], [ %.pr, %99 ], [ %.sink, %.thread597.sink.split ]
  %147 = sub nsw i32 0, %146
  store i32 %147, ptr %22, align 4, !tbaa !5
  %148 = call i32 @xerbla_(ptr noundef nonnull @.str.5, ptr noundef nonnull %22, i32 noundef 6) #5
  br label %412

149:                                              ; preds = %.thread
  br i1 %73, label %412, label %150

150:                                              ; preds = %149
  %151 = icmp eq i32 %144, 0
  br i1 %151, label %152, label %153

152:                                              ; preds = %150
  store i32 0, ptr %9, align 4, !tbaa !5
  br label %412

153:                                              ; preds = %150
  %154 = call double @dlamch_(ptr noundef nonnull @.str.6) #5
  %155 = call double @dlamch_(ptr noundef nonnull @.str.2) #5
  store double %155, ptr %34, align 8, !tbaa !9
  %156 = fdiv double 1.000000e+00, %155
  store double %156, ptr %35, align 8, !tbaa !9
  call void @dlabad_(ptr noundef nonnull %34, ptr noundef nonnull %35) #5
  %157 = load double, ptr %34, align 8, !tbaa !9
  %158 = call double @sqrt(double noundef %157) #5
  %159 = fdiv double %158, %154
  %160 = fdiv double 1.000000e+00, %159
  %161 = call double @dlange_(ptr noundef nonnull @.str.7, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %17) #5
  store double %161, ptr %24, align 8, !tbaa !9
  %162 = fcmp ogt double %161, 0.000000e+00
  %163 = fcmp olt double %161, %159
  %or.cond590 = select i1 %162, i1 %163, i1 false
  br i1 %or.cond590, label %166, label %164

164:                                              ; preds = %153
  %165 = fcmp ogt double %161, %160
  br i1 %165, label %166, label %167

166:                                              ; preds = %164, %153
  %storemerge = phi double [ %159, %153 ], [ %160, %164 ]
  store double %storemerge, ptr %36, align 8, !tbaa !9
  call void @dlascl_(ptr noundef nonnull @.str.8, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %24, ptr noundef nonnull %36, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %27) #5
  br label %167

167:                                              ; preds = %164, %166
  %.not571604 = phi i1 [ false, %166 ], [ true, %164 ]
  %168 = call double @dlange_(ptr noundef nonnull @.str.7, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull %17) #5
  store double %168, ptr %25, align 8, !tbaa !9
  %169 = fcmp ogt double %168, 0.000000e+00
  %170 = fcmp olt double %168, %159
  %or.cond591 = select i1 %169, i1 %170, i1 false
  br i1 %or.cond591, label %173, label %171

171:                                              ; preds = %167
  %172 = fcmp ogt double %168, %160
  br i1 %172, label %173, label %174

173:                                              ; preds = %171, %167
  %storemerge619 = phi double [ %159, %167 ], [ %160, %171 ]
  store double %storemerge619, ptr %37, align 8, !tbaa !9
  call void @dlascl_(ptr noundef nonnull @.str.8, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %25, ptr noundef nonnull %37, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull %27) #5
  br label %174

174:                                              ; preds = %171, %173
  %.not573609 = phi i1 [ false, %173 ], [ true, %171 ]
  %175 = load i32, ptr %4, align 4, !tbaa !5
  %176 = add nsw i32 %175, 1
  %177 = add nsw i32 %176, %175
  %178 = sext i32 %176 to i64
  %179 = getelementptr inbounds double, ptr %53, i64 %178
  %180 = sext i32 %177 to i64
  %181 = getelementptr inbounds double, ptr %53, i64 %180
  call void @dggbal_(ptr noundef nonnull @.str.6, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull %40, ptr noundef nonnull %39, ptr noundef nonnull %17, ptr noundef nonnull %179, ptr noundef nonnull %181, ptr noundef nonnull %27) #5
  %182 = load i32, ptr %39, align 4, !tbaa !5
  %183 = add nsw i32 %182, 1
  %184 = load i32, ptr %40, align 4, !tbaa !5
  %185 = sub i32 %183, %184
  store i32 %185, ptr %33, align 4, !tbaa !5
  %186 = load i32, ptr %4, align 4, !tbaa !5
  %reass.sub = sub i32 %186, %184
  %187 = add i32 %reass.sub, 1
  store i32 %187, ptr %30, align 4, !tbaa !5
  %188 = add nsw i32 %185, %177
  %189 = load i32, ptr %18, align 4, !tbaa !5
  %reass.sub646 = sub i32 %189, %188
  %190 = add i32 %reass.sub646, 1
  store i32 %190, ptr %22, align 4, !tbaa !5
  %191 = add i32 %44, 1
  %192 = mul i32 %184, %191
  %193 = sext i32 %192 to i64
  %194 = getelementptr inbounds double, ptr %46, i64 %193
  %195 = sext i32 %188 to i64
  %196 = getelementptr inbounds double, ptr %53, i64 %195
  call void @dgeqrf_(ptr noundef nonnull %33, ptr noundef nonnull %30, ptr noundef %194, ptr noundef nonnull %8, ptr noundef nonnull %181, ptr noundef nonnull %196, ptr noundef nonnull %22, ptr noundef nonnull %27) #5
  %197 = load i32, ptr %18, align 4, !tbaa !5
  %reass.sub647 = sub i32 %197, %188
  %198 = add i32 %reass.sub647, 1
  store i32 %198, ptr %22, align 4, !tbaa !5
  %199 = load i32, ptr %40, align 4, !tbaa !5
  %200 = mul i32 %199, %191
  %201 = sext i32 %200 to i64
  %202 = getelementptr inbounds double, ptr %46, i64 %201
  %203 = add i32 %41, 1
  %204 = mul i32 %199, %203
  %205 = sext i32 %204 to i64
  %206 = getelementptr inbounds double, ptr %43, i64 %205
  call void @dormqr_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull %33, ptr noundef nonnull %30, ptr noundef nonnull %33, ptr noundef %202, ptr noundef nonnull %8, ptr noundef nonnull %181, ptr noundef %206, ptr noundef nonnull %6, ptr noundef nonnull %196, ptr noundef nonnull %22, ptr noundef nonnull %27) #5
  %207 = load i32, ptr %31, align 4, !tbaa !5
  %.not574 = icmp eq i32 %207, 0
  br i1 %.not574, label %231, label %208

208:                                              ; preds = %174
  call void @dlaset_(ptr noundef nonnull @.str.9, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef nonnull @c_b36, ptr noundef nonnull @c_b37, ptr noundef %13, ptr noundef nonnull %14) #5
  %209 = load i32, ptr %33, align 4, !tbaa !5
  %210 = icmp sgt i32 %209, 1
  br i1 %210, label %211, label %223

211:                                              ; preds = %208
  %212 = add nsw i32 %209, -1
  store i32 %212, ptr %22, align 4, !tbaa !5
  store i32 %212, ptr %23, align 4, !tbaa !5
  %213 = load i32, ptr %40, align 4, !tbaa !5
  %214 = add nsw i32 %213, 1
  %215 = mul nsw i32 %213, %44
  %216 = add nsw i32 %214, %215
  %217 = sext i32 %216 to i64
  %218 = getelementptr inbounds double, ptr %46, i64 %217
  %219 = mul nsw i32 %213, %50
  %220 = add nsw i32 %214, %219
  %221 = sext i32 %220 to i64
  %222 = getelementptr inbounds double, ptr %52, i64 %221
  call void @dlacpy_(ptr noundef nonnull @.str.3, ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef %218, ptr noundef nonnull %8, ptr noundef %222, ptr noundef nonnull %14) #5
  br label %223

223:                                              ; preds = %211, %208
  %224 = load i32, ptr %18, align 4, !tbaa !5
  %reass.sub648 = sub i32 %224, %188
  %225 = add i32 %reass.sub648, 1
  store i32 %225, ptr %22, align 4, !tbaa !5
  %226 = load i32, ptr %40, align 4, !tbaa !5
  %227 = add i32 %50, 1
  %228 = mul i32 %226, %227
  %229 = sext i32 %228 to i64
  %230 = getelementptr inbounds double, ptr %52, i64 %229
  call void @dorgqr_(ptr noundef nonnull %33, ptr noundef nonnull %33, ptr noundef nonnull %33, ptr noundef %230, ptr noundef nonnull %14, ptr noundef nonnull %181, ptr noundef nonnull %196, ptr noundef nonnull %22, ptr noundef nonnull %27) #5
  br label %231

231:                                              ; preds = %223, %174
  %232 = load i32, ptr %32, align 4, !tbaa !5
  %.not575 = icmp eq i32 %232, 0
  br i1 %.not575, label %234, label %233

233:                                              ; preds = %231
  call void @dlaset_(ptr noundef nonnull @.str.9, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef nonnull @c_b36, ptr noundef nonnull @c_b37, ptr noundef %15, ptr noundef nonnull %16) #5
  br label %234

234:                                              ; preds = %233, %231
  %235 = load i32, ptr %18, align 4, !tbaa !5
  %reass.sub649 = sub i32 %235, %188
  %236 = add i32 %reass.sub649, 1
  store i32 %236, ptr %22, align 4, !tbaa !5
  call void @dgghd3_(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %4, ptr noundef nonnull %40, ptr noundef nonnull %39, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %13, ptr noundef nonnull %14, ptr noundef %15, ptr noundef nonnull %16, ptr noundef nonnull %196, ptr noundef nonnull %22, ptr noundef nonnull %27) #5
  %237 = load i32, ptr %18, align 4, !tbaa !5
  %reass.sub650 = sub i32 %237, %177
  %238 = add i32 %reass.sub650, 1
  store i32 %238, ptr %22, align 4, !tbaa !5
  call void @dhgeqz_(ptr noundef nonnull @.str.2, ptr noundef %0, ptr noundef %1, ptr noundef nonnull %4, ptr noundef nonnull %40, ptr noundef nonnull %39, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef nonnull %14, ptr noundef %15, ptr noundef nonnull %16, ptr noundef nonnull %181, ptr noundef nonnull %22, ptr noundef nonnull %27) #5
  %239 = load i32, ptr %27, align 4, !tbaa !5
  %.not577 = icmp eq i32 %239, 0
  br i1 %.not577, label %249, label %240

240:                                              ; preds = %234
  %241 = icmp slt i32 %239, 1
  %.pre = load i32, ptr %4, align 4, !tbaa !5
  %.not587 = icmp sgt i32 %239, %.pre
  %or.cond666 = select i1 %241, i1 true, i1 %.not587
  br i1 %or.cond666, label %242, label %.loopexit.sink.split

242:                                              ; preds = %240
  %243 = icmp sle i32 %239, %.pre
  %244 = shl i32 %.pre, 1
  %.not588 = icmp sgt i32 %239, %244
  %or.cond592 = or i1 %243, %.not588
  br i1 %or.cond592, label %247, label %245

245:                                              ; preds = %242
  %246 = sub nsw i32 %239, %.pre
  br label %.loopexit.sink.split

247:                                              ; preds = %242
  %248 = add nsw i32 %.pre, 1
  br label %.loopexit.sink.split

249:                                              ; preds = %234
  store i32 0, ptr %9, align 4, !tbaa !5
  br i1 %.not558, label %270, label %250

250:                                              ; preds = %249
  br i1 %.not571604, label %252, label %251

251:                                              ; preds = %250
  call void @dlascl_(ptr noundef nonnull @.str.8, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %36, ptr noundef nonnull %24, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef %10, ptr noundef nonnull %4, ptr noundef nonnull %27) #5
  call void @dlascl_(ptr noundef nonnull @.str.8, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %36, ptr noundef nonnull %24, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef %11, ptr noundef nonnull %4, ptr noundef nonnull %27) #5
  br label %252

252:                                              ; preds = %251, %250
  br i1 %.not573609, label %254, label %253

253:                                              ; preds = %252
  call void @dlascl_(ptr noundef nonnull @.str.8, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %37, ptr noundef nonnull %25, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef %12, ptr noundef nonnull %4, ptr noundef nonnull %27) #5
  br label %254

254:                                              ; preds = %253, %252
  %255 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %255, ptr %22, align 4, !tbaa !5
  %.not579625 = icmp slt i32 %255, 1
  br i1 %.not579625, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %254, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 1, %254 ]
  %256 = getelementptr inbounds double, ptr %47, i64 %indvars.iv
  %257 = getelementptr inbounds double, ptr %48, i64 %indvars.iv
  %258 = getelementptr inbounds double, ptr %49, i64 %indvars.iv
  %259 = call i32 (ptr, ptr, ptr, ...) %3(ptr noundef nonnull %256, ptr noundef nonnull %257, ptr noundef nonnull %258) #5
  %260 = getelementptr inbounds i32, ptr %54, i64 %indvars.iv
  store i32 %259, ptr %260, align 4, !tbaa !5
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %261 = load i32, ptr %22, align 4, !tbaa !5
  %262 = sext i32 %261 to i64
  %.not579.not = icmp slt i64 %indvars.iv, %262
  br i1 %.not579.not, label %.lr.ph, label %._crit_edge, !llvm.loop !11

._crit_edge:                                      ; preds = %.lr.ph, %254
  %263 = load i32, ptr %18, align 4, !tbaa !5
  %reass.sub651 = sub i32 %263, %177
  %264 = add i32 %reass.sub651, 1
  store i32 %264, ptr %22, align 4, !tbaa !5
  call void @dtgsen_(ptr noundef nonnull @c__0, ptr noundef nonnull %31, ptr noundef nonnull %32, ptr noundef %19, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef nonnull %14, ptr noundef %15, ptr noundef nonnull %16, ptr noundef nonnull %9, ptr noundef nonnull %28, ptr noundef nonnull %29, ptr noundef nonnull %38, ptr noundef nonnull %181, ptr noundef nonnull %22, ptr noundef nonnull %26, ptr noundef nonnull @c__1, ptr noundef nonnull %27) #5
  %265 = load i32, ptr %27, align 4, !tbaa !5
  %266 = icmp eq i32 %265, 1
  br i1 %266, label %267, label %270

267:                                              ; preds = %._crit_edge
  %268 = load i32, ptr %4, align 4, !tbaa !5
  %269 = add nsw i32 %268, 3
  store i32 %269, ptr %20, align 4, !tbaa !5
  br label %270

270:                                              ; preds = %._crit_edge, %267, %249
  %271 = load i32, ptr %31, align 4, !tbaa !5
  %.not580 = icmp eq i32 %271, 0
  br i1 %.not580, label %273, label %272

272:                                              ; preds = %270
  call void @dggbak_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.3, ptr noundef nonnull %4, ptr noundef nonnull %40, ptr noundef nonnull %39, ptr noundef nonnull %17, ptr noundef nonnull %179, ptr noundef nonnull %4, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %27) #5
  br label %273

273:                                              ; preds = %272, %270
  %274 = load i32, ptr %32, align 4, !tbaa !5
  %.not581 = icmp eq i32 %274, 0
  br i1 %.not581, label %276, label %275

275:                                              ; preds = %273
  call void @dggbak_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.10, ptr noundef nonnull %4, ptr noundef nonnull %40, ptr noundef nonnull %39, ptr noundef nonnull %17, ptr noundef nonnull %179, ptr noundef nonnull %4, ptr noundef %15, ptr noundef nonnull %16, ptr noundef nonnull %27) #5
  br label %276

276:                                              ; preds = %275, %273
  br i1 %.not571604, label %.loopexit624, label %277

277:                                              ; preds = %276
  %278 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %278, ptr %22, align 4, !tbaa !5
  %.not582627 = icmp slt i32 %278, 1
  br i1 %.not582627, label %.loopexit624, label %.lr.ph630

.lr.ph630:                                        ; preds = %277
  %279 = load double, ptr %35, align 8
  %280 = load double, ptr %36, align 8
  %281 = load double, ptr %24, align 8
  %282 = load double, ptr %34, align 8
  %283 = insertelement <2 x double> poison, double %281, i64 0
  %284 = insertelement <2 x double> %283, double %280, i64 1
  %285 = insertelement <2 x double> poison, double %280, i64 0
  %286 = insertelement <2 x double> %285, double %281, i64 1
  %287 = fdiv <2 x double> %284, %286
  %288 = add nuw i32 %278, 1
  %wide.trip.count = zext i32 %288 to i64
  %289 = insertelement <2 x double> poison, double %282, i64 0
  %290 = insertelement <2 x double> poison, double %279, i64 1
  br label %291

291:                                              ; preds = %.lr.ph630, %334
  %indvars.iv653 = phi i64 [ 1, %.lr.ph630 ], [ %indvars.iv.next654, %334 ]
  %indvars655 = trunc i64 %indvars.iv653 to i32
  %292 = getelementptr inbounds double, ptr %48, i64 %indvars.iv653
  %293 = load double, ptr %292, align 8, !tbaa !9
  %294 = fcmp une double %293, 0.000000e+00
  br i1 %294, label %295, label %334

295:                                              ; preds = %291
  %296 = getelementptr inbounds double, ptr %47, i64 %indvars.iv653
  %297 = load double, ptr %296, align 8, !tbaa !9
  %298 = insertelement <2 x double> %289, double %297, i64 1
  %299 = insertelement <2 x double> %290, double %297, i64 0
  %300 = fdiv <2 x double> %298, %299
  %301 = fcmp ogt <2 x double> %300, %287
  %302 = extractelement <2 x i1> %301, i64 0
  %303 = extractelement <2 x i1> %301, i64 1
  %or.cond643 = select i1 %303, i1 true, i1 %302
  br i1 %or.cond643, label %304, label %308

304:                                              ; preds = %295
  %305 = mul i32 %203, %indvars655
  %306 = sext i32 %305 to i64
  %307 = getelementptr inbounds double, ptr %43, i64 %306
  br label %.sink.split

308:                                              ; preds = %295
  %309 = insertelement <2 x double> %289, double %293, i64 1
  %310 = insertelement <2 x double> %290, double %293, i64 0
  %311 = fdiv <2 x double> %309, %310
  %312 = fcmp ogt <2 x double> %311, %287
  %shift = shufflevector <2 x i1> %312, <2 x i1> poison, <2 x i32> <i32 1, i32 poison>
  %313 = or <2 x i1> %shift, %312
  %or.cond594 = extractelement <2 x i1> %313, i64 0
  br i1 %or.cond594, label %314, label %334

314:                                              ; preds = %308
  %315 = add nuw nsw i32 %indvars655, 1
  %316 = mul nsw i32 %315, %41
  %317 = sext i32 %316 to i64
  %318 = getelementptr double, ptr %43, i64 %indvars.iv653
  %319 = getelementptr double, ptr %318, i64 %317
  br label %.sink.split

.sink.split:                                      ; preds = %304, %314
  %.sink686 = phi ptr [ %319, %314 ], [ %307, %304 ]
  %.sink685 = phi double [ %293, %314 ], [ %297, %304 ]
  %320 = load double, ptr %.sink686, align 8, !tbaa !9
  %321 = fdiv double %320, %.sink685
  %322 = fcmp oge double %321, 0.000000e+00
  %323 = fneg double %321
  %324 = select i1 %322, double %321, double %323
  store double %324, ptr %17, align 8, !tbaa !9
  %325 = getelementptr inbounds double, ptr %49, i64 %indvars.iv653
  %326 = load double, ptr %325, align 8, !tbaa !9
  %327 = fmul double %326, %324
  store double %327, ptr %325, align 8, !tbaa !9
  %328 = load double, ptr %17, align 8, !tbaa !9
  %329 = load double, ptr %296, align 8, !tbaa !9
  %330 = fmul double %328, %329
  store double %330, ptr %296, align 8, !tbaa !9
  %331 = load double, ptr %17, align 8, !tbaa !9
  %332 = load double, ptr %292, align 8, !tbaa !9
  %333 = fmul double %331, %332
  store double %333, ptr %292, align 8, !tbaa !9
  br label %334

334:                                              ; preds = %.sink.split, %308, %291
  %indvars.iv.next654 = add nuw nsw i64 %indvars.iv653, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next654, %wide.trip.count
  br i1 %exitcond.not, label %.loopexit624, label %291, !llvm.loop !13

.loopexit624:                                     ; preds = %334, %277, %276
  br i1 %.not573609, label %.loopexit623, label %335

335:                                              ; preds = %.loopexit624
  %336 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %336, ptr %22, align 4, !tbaa !5
  %.not583631 = icmp slt i32 %336, 1
  br i1 %.not583631, label %.loopexit623, label %.lr.ph634

.lr.ph634:                                        ; preds = %335
  %337 = load double, ptr %35, align 8
  %338 = load double, ptr %37, align 8
  %339 = load double, ptr %25, align 8
  %340 = load double, ptr %34, align 8
  %341 = insertelement <2 x double> poison, double %338, i64 0
  %342 = insertelement <2 x double> %341, double %339, i64 1
  %343 = insertelement <2 x double> poison, double %339, i64 0
  %344 = insertelement <2 x double> %343, double %338, i64 1
  %345 = fdiv <2 x double> %342, %344
  %346 = add nuw i32 %336, 1
  %wide.trip.count659 = zext i32 %346 to i64
  %347 = insertelement <2 x double> poison, double %337, i64 0
  br label %348

348:                                              ; preds = %.lr.ph634, %381
  %indvars.iv656 = phi i64 [ 1, %.lr.ph634 ], [ %indvars.iv.next657, %381 ]
  %349 = getelementptr inbounds double, ptr %48, i64 %indvars.iv656
  %350 = load double, ptr %349, align 8, !tbaa !9
  %351 = fcmp une double %350, 0.000000e+00
  br i1 %351, label %352, label %381

352:                                              ; preds = %348
  %353 = getelementptr inbounds double, ptr %49, i64 %indvars.iv656
  %354 = load double, ptr %353, align 8, !tbaa !9
  %355 = insertelement <2 x double> poison, double %354, i64 0
  %356 = insertelement <2 x double> %355, double %340, i64 1
  %357 = insertelement <2 x double> %347, double %354, i64 1
  %358 = fdiv <2 x double> %356, %357
  %359 = fcmp ogt <2 x double> %358, %345
  %360 = extractelement <2 x i1> %359, i64 0
  %361 = extractelement <2 x i1> %359, i64 1
  %or.cond645 = select i1 %360, i1 true, i1 %361
  br i1 %or.cond645, label %362, label %381

362:                                              ; preds = %352
  %363 = trunc nuw nsw i64 %indvars.iv656 to i32
  %364 = mul i32 %191, %363
  %365 = sext i32 %364 to i64
  %366 = getelementptr inbounds double, ptr %46, i64 %365
  %367 = load double, ptr %366, align 8, !tbaa !9
  %368 = fdiv double %367, %354
  %369 = fcmp oge double %368, 0.000000e+00
  %370 = fneg double %368
  %371 = select i1 %369, double %368, double %370
  store double %371, ptr %17, align 8, !tbaa !9
  %372 = load double, ptr %353, align 8, !tbaa !9
  %373 = fmul double %372, %371
  store double %373, ptr %353, align 8, !tbaa !9
  %374 = load double, ptr %17, align 8, !tbaa !9
  %375 = getelementptr inbounds double, ptr %47, i64 %indvars.iv656
  %376 = load double, ptr %375, align 8, !tbaa !9
  %377 = fmul double %374, %376
  store double %377, ptr %375, align 8, !tbaa !9
  %378 = load double, ptr %17, align 8, !tbaa !9
  %379 = load double, ptr %349, align 8, !tbaa !9
  %380 = fmul double %378, %379
  store double %380, ptr %349, align 8, !tbaa !9
  br label %381

381:                                              ; preds = %352, %348, %362
  %indvars.iv.next657 = add nuw nsw i64 %indvars.iv656, 1
  %exitcond660.not = icmp eq i64 %indvars.iv.next657, %wide.trip.count659
  br i1 %exitcond660.not, label %.loopexit623, label %348, !llvm.loop !14

.loopexit623:                                     ; preds = %381, %335, %.loopexit624
  br i1 %.not571604, label %383, label %382

382:                                              ; preds = %.loopexit623
  call void @dlascl_(ptr noundef nonnull @.str.11, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %36, ptr noundef nonnull %24, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %27) #5
  call void @dlascl_(ptr noundef nonnull @.str.8, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %36, ptr noundef nonnull %24, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef %10, ptr noundef nonnull %4, ptr noundef nonnull %27) #5
  call void @dlascl_(ptr noundef nonnull @.str.8, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %36, ptr noundef nonnull %24, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef %11, ptr noundef nonnull %4, ptr noundef nonnull %27) #5
  br label %383

383:                                              ; preds = %382, %.loopexit623
  br i1 %.not573609, label %385, label %384

384:                                              ; preds = %383
  call void @dlascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %37, ptr noundef nonnull %25, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull %27) #5
  call void @dlascl_(ptr noundef nonnull @.str.8, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %37, ptr noundef nonnull %25, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef %12, ptr noundef nonnull %4, ptr noundef nonnull %27) #5
  br label %385

385:                                              ; preds = %384, %383
  br i1 %.not558, label %.loopexit, label %386

386:                                              ; preds = %385
  store i32 0, ptr %9, align 4, !tbaa !5
  %387 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %387, ptr %22, align 4, !tbaa !5
  %.not584635 = icmp slt i32 %387, 1
  br i1 %.not584635, label %.loopexit, label %.lr.ph641

.lr.ph641:                                        ; preds = %386, %.thread610
  %indvars.iv661 = phi i64 [ %indvars.iv.next662, %.thread610 ], [ 1, %386 ]
  %.0522639 = phi i32 [ %.0531, %.thread610 ], [ 1, %386 ]
  %.0528638 = phi i32 [ %.1529, %.thread610 ], [ 0, %386 ]
  %.0530637 = phi i32 [ %.1523, %.thread610 ], [ 1, %386 ]
  %388 = getelementptr inbounds double, ptr %47, i64 %indvars.iv661
  %389 = getelementptr inbounds double, ptr %48, i64 %indvars.iv661
  %390 = getelementptr inbounds double, ptr %49, i64 %indvars.iv661
  %391 = call i32 (ptr, ptr, ptr, ...) %3(ptr noundef nonnull %388, ptr noundef nonnull %389, ptr noundef nonnull %390) #5
  %392 = load double, ptr %389, align 8, !tbaa !9
  %393 = fcmp oeq double %392, 0.000000e+00
  br i1 %393, label %394, label %398

394:                                              ; preds = %.lr.ph641
  %.not586 = icmp eq i32 %391, 0
  br i1 %.not586, label %.thread610, label %395

395:                                              ; preds = %394
  %396 = load i32, ptr %9, align 4, !tbaa !5
  %397 = add nsw i32 %396, 1
  store i32 %397, ptr %9, align 4, !tbaa !5
  %.not620 = icmp eq i32 %.0522639, 0
  br i1 %.not620, label %.thread610.sink.split, label %.thread610

398:                                              ; preds = %.lr.ph641
  %399 = icmp eq i32 %.0528638, 1
  br i1 %399, label %400, label %.thread610

400:                                              ; preds = %398
  %401 = icmp ne i32 %391, 0
  %402 = icmp ne i32 %.0522639, 0
  %403 = select i1 %401, i1 true, i1 %402
  br i1 %403, label %404, label %.thread610

404:                                              ; preds = %400
  %405 = load i32, ptr %9, align 4, !tbaa !5
  %406 = add nsw i32 %405, 2
  store i32 %406, ptr %9, align 4, !tbaa !5
  %407 = icmp eq i32 %.0530637, 0
  br i1 %407, label %.thread610.sink.split, label %.thread610

.thread610.sink.split:                            ; preds = %404, %395
  %.0531.ph = phi i32 [ %391, %395 ], [ 1, %404 ]
  %.1529.ph = phi i32 [ 0, %395 ], [ -1, %404 ]
  %.1523.ph = phi i32 [ 0, %395 ], [ 1, %404 ]
  %408 = load i32, ptr %4, align 4, !tbaa !5
  %409 = add nsw i32 %408, 2
  store i32 %409, ptr %20, align 4, !tbaa !5
  br label %.thread610

.thread610:                                       ; preds = %.thread610.sink.split, %400, %394, %398, %404, %395
  %.0531 = phi i32 [ %391, %395 ], [ 1, %404 ], [ %391, %398 ], [ 0, %394 ], [ 0, %400 ], [ %.0531.ph, %.thread610.sink.split ]
  %.1529 = phi i32 [ 0, %395 ], [ -1, %404 ], [ 1, %398 ], [ 0, %394 ], [ -1, %400 ], [ %.1529.ph, %.thread610.sink.split ]
  %.1523 = phi i32 [ %.0522639, %395 ], [ 1, %404 ], [ %.0522639, %398 ], [ %.0522639, %394 ], [ 0, %400 ], [ %.1523.ph, %.thread610.sink.split ]
  %indvars.iv.next662 = add nuw nsw i64 %indvars.iv661, 1
  %410 = load i32, ptr %22, align 4, !tbaa !5
  %411 = sext i32 %410 to i64
  %.not584.not = icmp slt i64 %indvars.iv661, %411
  br i1 %.not584.not, label %.lr.ph641, label %.loopexit, !llvm.loop !15

.loopexit.sink.split:                             ; preds = %240, %245, %247
  %.sink689 = phi i32 [ %248, %247 ], [ %246, %245 ], [ %239, %240 ]
  store i32 %.sink689, ptr %20, align 4, !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %.thread610, %.loopexit.sink.split, %386, %385
  store double %145, ptr %17, align 8, !tbaa !9
  br label %412

412:                                              ; preds = %149, %.loopexit, %152, %.thread597
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %40) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %39) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %38) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %33) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #5
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #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 void @dtgsen_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @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 @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 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = distinct !{!14, !12}
!15 = distinct !{!15, !12}


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