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

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

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

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

167:                                              ; preds = %26
  store i32 1, ptr %87, align 4, !tbaa !9
  store i32 0, ptr %75, align 4, !tbaa !9
  br label %175

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

172:                                              ; preds = %168
  store i32 2, ptr %87, align 4, !tbaa !9
  store i32 1, ptr %75, align 4, !tbaa !9
  br label %174

173:                                              ; preds = %168
  store i32 -1, ptr %87, align 4, !tbaa !9
  store i32 0, ptr %75, align 4, !tbaa !9
  br label %174

174:                                              ; preds = %173, %172
  br label %175

175:                                              ; preds = %174, %167
  %176 = load ptr, ptr %28, align 8, !tbaa !5
  %177 = call i32 @lsame_(ptr noundef %176, ptr noundef @.str)
  %178 = icmp ne i32 %177, 0
  br i1 %178, label %179, label %180

179:                                              ; preds = %175
  store i32 1, ptr %89, align 4, !tbaa !9
  store i32 0, ptr %76, align 4, !tbaa !9
  br label %187

180:                                              ; preds = %175
  %181 = load ptr, ptr %28, align 8, !tbaa !5
  %182 = call i32 @lsame_(ptr noundef %181, ptr noundef @.str.1)
  %183 = icmp ne i32 %182, 0
  br i1 %183, label %184, label %185

184:                                              ; preds = %180
  store i32 2, ptr %89, align 4, !tbaa !9
  store i32 1, ptr %76, align 4, !tbaa !9
  br label %186

185:                                              ; preds = %180
  store i32 -1, ptr %89, align 4, !tbaa !9
  store i32 0, ptr %76, align 4, !tbaa !9
  br label %186

186:                                              ; preds = %185, %184
  br label %187

187:                                              ; preds = %186, %179
  %188 = load ptr, ptr %29, align 8, !tbaa !5
  %189 = call i32 @lsame_(ptr noundef %188, ptr noundef @.str.2)
  store i32 %189, ptr %100, align 4, !tbaa !9
  %190 = load ptr, ptr %31, align 8, !tbaa !5
  %191 = call i32 @lsame_(ptr noundef %190, ptr noundef @.str)
  store i32 %191, ptr %98, align 4, !tbaa !9
  %192 = load ptr, ptr %31, align 8, !tbaa !5
  %193 = call i32 @lsame_(ptr noundef %192, ptr noundef @.str.3)
  store i32 %193, ptr %92, align 4, !tbaa !9
  %194 = load ptr, ptr %31, align 8, !tbaa !5
  %195 = call i32 @lsame_(ptr noundef %194, ptr noundef @.str.1)
  store i32 %195, ptr %102, align 4, !tbaa !9
  %196 = load ptr, ptr %31, align 8, !tbaa !5
  %197 = call i32 @lsame_(ptr noundef %196, ptr noundef @.str.4)
  store i32 %197, ptr %90, align 4, !tbaa !9
  %198 = load ptr, ptr %48, align 8, !tbaa !5
  %199 = load i32, ptr %198, align 4, !tbaa !9
  %200 = icmp eq i32 %199, -1
  br i1 %200, label %205, label %201

201:                                              ; preds = %187
  %202 = load ptr, ptr %50, align 8, !tbaa !5
  %203 = load i32, ptr %202, align 4, !tbaa !9
  %204 = icmp eq i32 %203, -1
  br label %205

205:                                              ; preds = %201, %187
  %206 = phi i1 [ true, %187 ], [ %204, %201 ]
  %207 = zext i1 %206 to i32
  store i32 %207, ptr %101, align 4, !tbaa !9
  %208 = load i32, ptr %98, align 4, !tbaa !9
  %209 = icmp ne i32 %208, 0
  br i1 %209, label %210, label %211

210:                                              ; preds = %205
  store i32 0, ptr %64, align 4, !tbaa !9
  br label %226

211:                                              ; preds = %205
  %212 = load i32, ptr %92, align 4, !tbaa !9
  %213 = icmp ne i32 %212, 0
  br i1 %213, label %214, label %215

214:                                              ; preds = %211
  store i32 1, ptr %64, align 4, !tbaa !9
  br label %225

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

218:                                              ; preds = %215
  store i32 2, ptr %64, align 4, !tbaa !9
  br label %224

219:                                              ; preds = %215
  %220 = load i32, ptr %90, align 4, !tbaa !9
  %221 = icmp ne i32 %220, 0
  br i1 %221, label %222, label %223

222:                                              ; preds = %219
  store i32 4, ptr %64, align 4, !tbaa !9
  br label %223

223:                                              ; preds = %222, %219
  br label %224

224:                                              ; preds = %223, %218
  br label %225

225:                                              ; preds = %224, %214
  br label %226

226:                                              ; preds = %225, %210
  %227 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 0, ptr %227, align 4, !tbaa !9
  %228 = load i32, ptr %87, align 4, !tbaa !9
  %229 = icmp sle i32 %228, 0
  br i1 %229, label %230, label %232

230:                                              ; preds = %226
  %231 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 -1, ptr %231, align 4, !tbaa !9
  br label %340

232:                                              ; preds = %226
  %233 = load i32, ptr %89, align 4, !tbaa !9
  %234 = icmp sle i32 %233, 0
  br i1 %234, label %235, label %237

235:                                              ; preds = %232
  %236 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 -2, ptr %236, align 4, !tbaa !9
  br label %339

237:                                              ; preds = %232
  %238 = load i32, ptr %100, align 4, !tbaa !9
  %239 = icmp ne i32 %238, 0
  br i1 %239, label %246, label %240

240:                                              ; preds = %237
  %241 = load ptr, ptr %29, align 8, !tbaa !5
  %242 = call i32 @lsame_(ptr noundef %241, ptr noundef @.str)
  %243 = icmp ne i32 %242, 0
  br i1 %243, label %246, label %244

244:                                              ; preds = %240
  %245 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 -3, ptr %245, align 4, !tbaa !9
  br label %338

246:                                              ; preds = %240, %237
  %247 = load i32, ptr %98, align 4, !tbaa !9
  %248 = icmp ne i32 %247, 0
  br i1 %248, label %258, label %249

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

252:                                              ; preds = %249
  %253 = load i32, ptr %102, align 4, !tbaa !9
  %254 = icmp ne i32 %253, 0
  br i1 %254, label %258, label %255

255:                                              ; preds = %252
  %256 = load i32, ptr %90, align 4, !tbaa !9
  %257 = icmp ne i32 %256, 0
  br i1 %257, label %258, label %264

258:                                              ; preds = %255, %252, %249, %246
  %259 = load i32, ptr %100, align 4, !tbaa !9
  %260 = icmp ne i32 %259, 0
  br i1 %260, label %266, label %261

261:                                              ; preds = %258
  %262 = load i32, ptr %98, align 4, !tbaa !9
  %263 = icmp ne i32 %262, 0
  br i1 %263, label %266, label %264

264:                                              ; preds = %261, %255
  %265 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 -5, ptr %265, align 4, !tbaa !9
  br label %337

266:                                              ; preds = %261, %258
  %267 = load ptr, ptr %32, align 8, !tbaa !5
  %268 = load i32, ptr %267, align 4, !tbaa !9
  %269 = icmp slt i32 %268, 0
  br i1 %269, label %270, label %272

270:                                              ; preds = %266
  %271 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 -6, ptr %271, align 4, !tbaa !9
  br label %336

272:                                              ; preds = %266
  %273 = load ptr, ptr %34, align 8, !tbaa !5
  %274 = load i32, ptr %273, align 4, !tbaa !9
  %275 = load ptr, ptr %32, align 8, !tbaa !5
  %276 = load i32, ptr %275, align 4, !tbaa !9
  %277 = icmp sge i32 1, %276
  br i1 %277, label %278, label %279

278:                                              ; preds = %272
  br label %282

279:                                              ; preds = %272
  %280 = load ptr, ptr %32, align 8, !tbaa !5
  %281 = load i32, ptr %280, align 4, !tbaa !9
  br label %282

282:                                              ; preds = %279, %278
  %283 = phi i32 [ 1, %278 ], [ %281, %279 ]
  %284 = icmp slt i32 %274, %283
  br i1 %284, label %285, label %287

285:                                              ; preds = %282
  %286 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 -8, ptr %286, align 4, !tbaa !9
  br label %335

287:                                              ; preds = %282
  %288 = load ptr, ptr %36, align 8, !tbaa !5
  %289 = load i32, ptr %288, align 4, !tbaa !9
  %290 = load ptr, ptr %32, align 8, !tbaa !5
  %291 = load i32, ptr %290, align 4, !tbaa !9
  %292 = icmp sge i32 1, %291
  br i1 %292, label %293, label %294

293:                                              ; preds = %287
  br label %297

294:                                              ; preds = %287
  %295 = load ptr, ptr %32, align 8, !tbaa !5
  %296 = load i32, ptr %295, align 4, !tbaa !9
  br label %297

297:                                              ; preds = %294, %293
  %298 = phi i32 [ 1, %293 ], [ %296, %294 ]
  %299 = icmp slt i32 %289, %298
  br i1 %299, label %300, label %302

300:                                              ; preds = %297
  %301 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 -10, ptr %301, align 4, !tbaa !9
  br label %334

302:                                              ; preds = %297
  %303 = load ptr, ptr %42, align 8, !tbaa !5
  %304 = load i32, ptr %303, align 4, !tbaa !9
  %305 = icmp slt i32 %304, 1
  br i1 %305, label %315, label %306

306:                                              ; preds = %302
  %307 = load i32, ptr %75, align 4, !tbaa !9
  %308 = icmp ne i32 %307, 0
  br i1 %308, label %309, label %317

309:                                              ; preds = %306
  %310 = load ptr, ptr %42, align 8, !tbaa !5
  %311 = load i32, ptr %310, align 4, !tbaa !9
  %312 = load ptr, ptr %32, align 8, !tbaa !5
  %313 = load i32, ptr %312, align 4, !tbaa !9
  %314 = icmp slt i32 %311, %313
  br i1 %314, label %315, label %317

315:                                              ; preds = %309, %302
  %316 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 -16, ptr %316, align 4, !tbaa !9
  br label %333

317:                                              ; preds = %309, %306
  %318 = load ptr, ptr %44, align 8, !tbaa !5
  %319 = load i32, ptr %318, align 4, !tbaa !9
  %320 = icmp slt i32 %319, 1
  br i1 %320, label %330, label %321

321:                                              ; preds = %317
  %322 = load i32, ptr %76, align 4, !tbaa !9
  %323 = icmp ne i32 %322, 0
  br i1 %323, label %324, label %332

324:                                              ; preds = %321
  %325 = load ptr, ptr %44, align 8, !tbaa !5
  %326 = load i32, ptr %325, align 4, !tbaa !9
  %327 = load ptr, ptr %32, align 8, !tbaa !5
  %328 = load i32, ptr %327, align 4, !tbaa !9
  %329 = icmp slt i32 %326, %328
  br i1 %329, label %330, label %332

330:                                              ; preds = %324, %317
  %331 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 -18, ptr %331, align 4, !tbaa !9
  br label %332

332:                                              ; preds = %330, %324, %321
  br label %333

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

334:                                              ; preds = %333, %300
  br label %335

335:                                              ; preds = %334, %285
  br label %336

336:                                              ; preds = %335, %270
  br label %337

337:                                              ; preds = %336, %264
  br label %338

338:                                              ; preds = %337, %244
  br label %339

339:                                              ; preds = %338, %235
  br label %340

340:                                              ; preds = %339, %230
  %341 = load ptr, ptr %52, align 8, !tbaa !5
  %342 = load i32, ptr %341, align 4, !tbaa !9
  %343 = icmp eq i32 %342, 0
  br i1 %343, label %344, label %485

344:                                              ; preds = %340
  %345 = load ptr, ptr %32, align 8, !tbaa !5
  %346 = load i32, ptr %345, align 4, !tbaa !9
  %347 = icmp sgt i32 %346, 0
  br i1 %347, label %348, label %443

348:                                              ; preds = %344
  %349 = load ptr, ptr %32, align 8, !tbaa !5
  %350 = load i32, ptr %349, align 4, !tbaa !9
  %351 = shl i32 %350, 3
  store i32 %351, ptr %61, align 4, !tbaa !9
  %352 = load ptr, ptr %32, align 8, !tbaa !5
  %353 = load i32, ptr %352, align 4, !tbaa !9
  %354 = mul nsw i32 %353, 6
  %355 = add nsw i32 %354, 16
  store i32 %355, ptr %62, align 4, !tbaa !9
  %356 = load i32, ptr %61, align 4, !tbaa !9
  %357 = load i32, ptr %62, align 4, !tbaa !9
  %358 = icmp sge i32 %356, %357
  br i1 %358, label %359, label %361

359:                                              ; preds = %348
  %360 = load i32, ptr %61, align 4, !tbaa !9
  br label %363

361:                                              ; preds = %348
  %362 = load i32, ptr %62, align 4, !tbaa !9
  br label %363

363:                                              ; preds = %361, %359
  %364 = phi i32 [ %360, %359 ], [ %362, %361 ]
  store i32 %364, ptr %96, align 4, !tbaa !9
  %365 = load i32, ptr %96, align 4, !tbaa !9
  %366 = load ptr, ptr %32, align 8, !tbaa !5
  %367 = load i32, ptr %366, align 4, !tbaa !9
  %368 = sub nsw i32 %365, %367
  %369 = load ptr, ptr %32, align 8, !tbaa !5
  %370 = load i32, ptr %369, align 4, !tbaa !9
  %371 = load ptr, ptr %32, align 8, !tbaa !5
  %372 = load ptr, ptr %32, align 8, !tbaa !5
  %373 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef %371, ptr noundef @c__1, ptr noundef %372, ptr noundef @c__0, i32 noundef 6, i32 noundef 1)
  %374 = mul nsw i32 %370, %373
  %375 = add nsw i32 %368, %374
  store i32 %375, ptr %97, align 4, !tbaa !9
  %376 = load i32, ptr %97, align 4, !tbaa !9
  store i32 %376, ptr %61, align 4, !tbaa !9
  %377 = load i32, ptr %96, align 4, !tbaa !9
  %378 = load ptr, ptr %32, align 8, !tbaa !5
  %379 = load i32, ptr %378, align 4, !tbaa !9
  %380 = sub nsw i32 %377, %379
  %381 = load ptr, ptr %32, align 8, !tbaa !5
  %382 = load i32, ptr %381, align 4, !tbaa !9
  %383 = load ptr, ptr %32, align 8, !tbaa !5
  %384 = load ptr, ptr %32, align 8, !tbaa !5
  %385 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.7, ptr noundef @.str.6, ptr noundef %383, ptr noundef @c__1, ptr noundef %384, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  %386 = mul nsw i32 %382, %385
  %387 = add nsw i32 %380, %386
  store i32 %387, ptr %62, align 4, !tbaa !9
  %388 = load i32, ptr %61, align 4, !tbaa !9
  %389 = load i32, ptr %62, align 4, !tbaa !9
  %390 = icmp sge i32 %388, %389
  br i1 %390, label %391, label %393

391:                                              ; preds = %363
  %392 = load i32, ptr %61, align 4, !tbaa !9
  br label %395

393:                                              ; preds = %363
  %394 = load i32, ptr %62, align 4, !tbaa !9
  br label %395

395:                                              ; preds = %393, %391
  %396 = phi i32 [ %392, %391 ], [ %394, %393 ]
  store i32 %396, ptr %97, align 4, !tbaa !9
  %397 = load i32, ptr %75, align 4, !tbaa !9
  %398 = icmp ne i32 %397, 0
  br i1 %398, label %399, label %421

399:                                              ; preds = %395
  %400 = load i32, ptr %97, align 4, !tbaa !9
  store i32 %400, ptr %61, align 4, !tbaa !9
  %401 = load i32, ptr %96, align 4, !tbaa !9
  %402 = load ptr, ptr %32, align 8, !tbaa !5
  %403 = load i32, ptr %402, align 4, !tbaa !9
  %404 = sub nsw i32 %401, %403
  %405 = load ptr, ptr %32, align 8, !tbaa !5
  %406 = load i32, ptr %405, align 4, !tbaa !9
  %407 = load ptr, ptr %32, align 8, !tbaa !5
  %408 = load ptr, ptr %32, align 8, !tbaa !5
  %409 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.8, ptr noundef @.str.6, ptr noundef %407, ptr noundef @c__1, ptr noundef %408, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  %410 = mul nsw i32 %406, %409
  %411 = add nsw i32 %404, %410
  store i32 %411, ptr %62, align 4, !tbaa !9
  %412 = load i32, ptr %61, align 4, !tbaa !9
  %413 = load i32, ptr %62, align 4, !tbaa !9
  %414 = icmp sge i32 %412, %413
  br i1 %414, label %415, label %417

415:                                              ; preds = %399
  %416 = load i32, ptr %61, align 4, !tbaa !9
  br label %419

417:                                              ; preds = %399
  %418 = load i32, ptr %62, align 4, !tbaa !9
  br label %419

419:                                              ; preds = %417, %415
  %420 = phi i32 [ %416, %415 ], [ %418, %417 ]
  store i32 %420, ptr %97, align 4, !tbaa !9
  br label %421

421:                                              ; preds = %419, %395
  %422 = load i32, ptr %97, align 4, !tbaa !9
  store i32 %422, ptr %70, align 4, !tbaa !9
  %423 = load i32, ptr %64, align 4, !tbaa !9
  %424 = icmp sge i32 %423, 1
  br i1 %424, label %425, label %442

425:                                              ; preds = %421
  %426 = load i32, ptr %70, align 4, !tbaa !9
  store i32 %426, ptr %61, align 4, !tbaa !9
  %427 = load ptr, ptr %32, align 8, !tbaa !5
  %428 = load i32, ptr %427, align 4, !tbaa !9
  %429 = load ptr, ptr %32, align 8, !tbaa !5
  %430 = load i32, ptr %429, align 4, !tbaa !9
  %431 = mul nsw i32 %428, %430
  %432 = sdiv i32 %431, 2
  store i32 %432, ptr %62, align 4, !tbaa !9
  %433 = load i32, ptr %61, align 4, !tbaa !9
  %434 = load i32, ptr %62, align 4, !tbaa !9
  %435 = icmp sge i32 %433, %434
  br i1 %435, label %436, label %438

436:                                              ; preds = %425
  %437 = load i32, ptr %61, align 4, !tbaa !9
  br label %440

438:                                              ; preds = %425
  %439 = load i32, ptr %62, align 4, !tbaa !9
  br label %440

440:                                              ; preds = %438, %436
  %441 = phi i32 [ %437, %436 ], [ %439, %438 ]
  store i32 %441, ptr %70, align 4, !tbaa !9
  br label %442

442:                                              ; preds = %440, %421
  br label %444

443:                                              ; preds = %344
  store i32 1, ptr %96, align 4, !tbaa !9
  store i32 1, ptr %97, align 4, !tbaa !9
  store i32 1, ptr %70, align 4, !tbaa !9
  br label %444

444:                                              ; preds = %443, %442
  %445 = load i32, ptr %70, align 4, !tbaa !9
  %446 = sitofp i32 %445 to double
  %447 = load ptr, ptr %47, align 8, !tbaa !5
  %448 = getelementptr inbounds double, ptr %447, i64 1
  store double %446, ptr %448, align 8, !tbaa !11
  %449 = load i32, ptr %98, align 4, !tbaa !9
  %450 = icmp ne i32 %449, 0
  br i1 %450, label %455, label %451

451:                                              ; preds = %444
  %452 = load ptr, ptr %32, align 8, !tbaa !5
  %453 = load i32, ptr %452, align 4, !tbaa !9
  %454 = icmp eq i32 %453, 0
  br i1 %454, label %455, label %456

455:                                              ; preds = %451, %444
  store i32 1, ptr %91, align 4, !tbaa !9
  br label %460

456:                                              ; preds = %451
  %457 = load ptr, ptr %32, align 8, !tbaa !5
  %458 = load i32, ptr %457, align 4, !tbaa !9
  %459 = add nsw i32 %458, 6
  store i32 %459, ptr %91, align 4, !tbaa !9
  br label %460

460:                                              ; preds = %456, %455
  %461 = load i32, ptr %91, align 4, !tbaa !9
  %462 = load ptr, ptr %49, align 8, !tbaa !5
  %463 = getelementptr inbounds i32, ptr %462, i64 1
  store i32 %461, ptr %463, align 4, !tbaa !9
  %464 = load ptr, ptr %48, align 8, !tbaa !5
  %465 = load i32, ptr %464, align 4, !tbaa !9
  %466 = load i32, ptr %96, align 4, !tbaa !9
  %467 = icmp slt i32 %465, %466
  br i1 %467, label %468, label %473

468:                                              ; preds = %460
  %469 = load i32, ptr %101, align 4, !tbaa !9
  %470 = icmp ne i32 %469, 0
  br i1 %470, label %473, label %471

471:                                              ; preds = %468
  %472 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 -22, ptr %472, align 4, !tbaa !9
  br label %484

473:                                              ; preds = %468, %460
  %474 = load ptr, ptr %50, align 8, !tbaa !5
  %475 = load i32, ptr %474, align 4, !tbaa !9
  %476 = load i32, ptr %91, align 4, !tbaa !9
  %477 = icmp slt i32 %475, %476
  br i1 %477, label %478, label %483

478:                                              ; preds = %473
  %479 = load i32, ptr %101, align 4, !tbaa !9
  %480 = icmp ne i32 %479, 0
  br i1 %480, label %483, label %481

481:                                              ; preds = %478
  %482 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 -24, ptr %482, align 4, !tbaa !9
  br label %483

483:                                              ; preds = %481, %478, %473
  br label %484

484:                                              ; preds = %483, %471
  br label %485

485:                                              ; preds = %484, %340
  %486 = load ptr, ptr %52, align 8, !tbaa !5
  %487 = load i32, ptr %486, align 4, !tbaa !9
  %488 = icmp ne i32 %487, 0
  br i1 %488, label %489, label %494

489:                                              ; preds = %485
  %490 = load ptr, ptr %52, align 8, !tbaa !5
  %491 = load i32, ptr %490, align 4, !tbaa !9
  %492 = sub nsw i32 0, %491
  store i32 %492, ptr %61, align 4, !tbaa !9
  %493 = call i32 @xerbla_(ptr noundef @.str.9, ptr noundef %61, i32 noundef 6)
  store i32 1, ptr %107, align 4
  br label %1473

494:                                              ; preds = %485
  %495 = load i32, ptr %101, align 4, !tbaa !9
  %496 = icmp ne i32 %495, 0
  br i1 %496, label %497, label %498

497:                                              ; preds = %494
  store i32 1, ptr %107, align 4
  br label %1473

498:                                              ; preds = %494
  br label %499

499:                                              ; preds = %498
  %500 = load ptr, ptr %32, align 8, !tbaa !5
  %501 = load i32, ptr %500, align 4, !tbaa !9
  %502 = icmp eq i32 %501, 0
  br i1 %502, label %503, label %505

503:                                              ; preds = %499
  %504 = load ptr, ptr %37, align 8, !tbaa !5
  store i32 0, ptr %504, align 4, !tbaa !9
  store i32 1, ptr %107, align 4
  br label %1473

505:                                              ; preds = %499
  %506 = call double @dlamch_(ptr noundef @.str.10)
  store double %506, ptr %106, align 8, !tbaa !11
  %507 = call double @dlamch_(ptr noundef @.str.2)
  store double %507, ptr %84, align 8, !tbaa !11
  %508 = load double, ptr %84, align 8, !tbaa !11
  %509 = fdiv double 1.000000e+00, %508
  store double %509, ptr %85, align 8, !tbaa !11
  call void @dlabad_(ptr noundef %84, ptr noundef %85)
  %510 = load double, ptr %84, align 8, !tbaa !11
  %511 = call double @sqrt(double noundef %510) #4
  %512 = load double, ptr %106, align 8, !tbaa !11
  %513 = fdiv double %511, %512
  store double %513, ptr %99, align 8, !tbaa !11
  %514 = load double, ptr %99, align 8, !tbaa !11
  %515 = fdiv double 1.000000e+00, %514
  store double %515, ptr %86, align 8, !tbaa !11
  %516 = load ptr, ptr %32, align 8, !tbaa !5
  %517 = load ptr, ptr %32, align 8, !tbaa !5
  %518 = load ptr, ptr %33, align 8, !tbaa !5
  %519 = load i32, ptr %54, align 4, !tbaa !9
  %520 = sext i32 %519 to i64
  %521 = getelementptr inbounds double, ptr %518, i64 %520
  %522 = load ptr, ptr %34, align 8, !tbaa !5
  %523 = load ptr, ptr %47, align 8, !tbaa !5
  %524 = getelementptr inbounds double, ptr %523, i64 1
  %525 = call double @dlange_(ptr noundef @.str.11, ptr noundef %516, ptr noundef %517, ptr noundef %521, ptr noundef %522, ptr noundef %524)
  store double %525, ptr %65, align 8, !tbaa !11
  store i32 0, ptr %82, align 4, !tbaa !9
  %526 = load double, ptr %65, align 8, !tbaa !11
  %527 = fcmp ogt double %526, 0.000000e+00
  br i1 %527, label %528, label %534

528:                                              ; preds = %505
  %529 = load double, ptr %65, align 8, !tbaa !11
  %530 = load double, ptr %99, align 8, !tbaa !11
  %531 = fcmp olt double %529, %530
  br i1 %531, label %532, label %534

532:                                              ; preds = %528
  %533 = load double, ptr %99, align 8, !tbaa !11
  store double %533, ptr %94, align 8, !tbaa !11
  store i32 1, ptr %82, align 4, !tbaa !9
  br label %541

534:                                              ; preds = %528, %505
  %535 = load double, ptr %65, align 8, !tbaa !11
  %536 = load double, ptr %86, align 8, !tbaa !11
  %537 = fcmp ogt double %535, %536
  br i1 %537, label %538, label %540

538:                                              ; preds = %534
  %539 = load double, ptr %86, align 8, !tbaa !11
  store double %539, ptr %94, align 8, !tbaa !11
  store i32 1, ptr %82, align 4, !tbaa !9
  br label %540

540:                                              ; preds = %538, %534
  br label %541

541:                                              ; preds = %540, %532
  %542 = load i32, ptr %82, align 4, !tbaa !9
  %543 = icmp ne i32 %542, 0
  br i1 %543, label %544, label %552

544:                                              ; preds = %541
  %545 = load ptr, ptr %32, align 8, !tbaa !5
  %546 = load ptr, ptr %32, align 8, !tbaa !5
  %547 = load ptr, ptr %33, align 8, !tbaa !5
  %548 = load i32, ptr %54, align 4, !tbaa !9
  %549 = sext i32 %548 to i64
  %550 = getelementptr inbounds double, ptr %547, i64 %549
  %551 = load ptr, ptr %34, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %65, ptr noundef %94, ptr noundef %545, ptr noundef %546, ptr noundef %550, ptr noundef %551, ptr noundef %67)
  br label %552

552:                                              ; preds = %544, %541
  %553 = load ptr, ptr %32, align 8, !tbaa !5
  %554 = load ptr, ptr %32, align 8, !tbaa !5
  %555 = load ptr, ptr %35, align 8, !tbaa !5
  %556 = load i32, ptr %56, align 4, !tbaa !9
  %557 = sext i32 %556 to i64
  %558 = getelementptr inbounds double, ptr %555, i64 %557
  %559 = load ptr, ptr %36, align 8, !tbaa !5
  %560 = load ptr, ptr %47, align 8, !tbaa !5
  %561 = getelementptr inbounds double, ptr %560, i64 1
  %562 = call double @dlange_(ptr noundef @.str.11, ptr noundef %553, ptr noundef %554, ptr noundef %558, ptr noundef %559, ptr noundef %561)
  store double %562, ptr %66, align 8, !tbaa !11
  store i32 0, ptr %83, align 4, !tbaa !9
  %563 = load double, ptr %66, align 8, !tbaa !11
  %564 = fcmp ogt double %563, 0.000000e+00
  br i1 %564, label %565, label %571

565:                                              ; preds = %552
  %566 = load double, ptr %66, align 8, !tbaa !11
  %567 = load double, ptr %99, align 8, !tbaa !11
  %568 = fcmp olt double %566, %567
  br i1 %568, label %569, label %571

569:                                              ; preds = %565
  %570 = load double, ptr %99, align 8, !tbaa !11
  store double %570, ptr %95, align 8, !tbaa !11
  store i32 1, ptr %83, align 4, !tbaa !9
  br label %578

571:                                              ; preds = %565, %552
  %572 = load double, ptr %66, align 8, !tbaa !11
  %573 = load double, ptr %86, align 8, !tbaa !11
  %574 = fcmp ogt double %572, %573
  br i1 %574, label %575, label %577

575:                                              ; preds = %571
  %576 = load double, ptr %86, align 8, !tbaa !11
  store double %576, ptr %95, align 8, !tbaa !11
  store i32 1, ptr %83, align 4, !tbaa !9
  br label %577

577:                                              ; preds = %575, %571
  br label %578

578:                                              ; preds = %577, %569
  %579 = load i32, ptr %83, align 4, !tbaa !9
  %580 = icmp ne i32 %579, 0
  br i1 %580, label %581, label %589

581:                                              ; preds = %578
  %582 = load ptr, ptr %32, align 8, !tbaa !5
  %583 = load ptr, ptr %32, align 8, !tbaa !5
  %584 = load ptr, ptr %35, align 8, !tbaa !5
  %585 = load i32, ptr %56, align 4, !tbaa !9
  %586 = sext i32 %585 to i64
  %587 = getelementptr inbounds double, ptr %584, i64 %586
  %588 = load ptr, ptr %36, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %66, ptr noundef %95, ptr noundef %582, ptr noundef %583, ptr noundef %587, ptr noundef %588, ptr noundef %67)
  br label %589

589:                                              ; preds = %581, %578
  store i32 1, ptr %72, align 4, !tbaa !9
  %590 = load ptr, ptr %32, align 8, !tbaa !5
  %591 = load i32, ptr %590, align 4, !tbaa !9
  %592 = add nsw i32 %591, 1
  store i32 %592, ptr %88, align 4, !tbaa !9
  %593 = load i32, ptr %88, align 4, !tbaa !9
  %594 = load ptr, ptr %32, align 8, !tbaa !5
  %595 = load i32, ptr %594, align 4, !tbaa !9
  %596 = add nsw i32 %593, %595
  store i32 %596, ptr %69, align 4, !tbaa !9
  %597 = load ptr, ptr %32, align 8, !tbaa !5
  %598 = load ptr, ptr %33, align 8, !tbaa !5
  %599 = load i32, ptr %54, align 4, !tbaa !9
  %600 = sext i32 %599 to i64
  %601 = getelementptr inbounds double, ptr %598, i64 %600
  %602 = load ptr, ptr %34, align 8, !tbaa !5
  %603 = load ptr, ptr %35, align 8, !tbaa !5
  %604 = load i32, ptr %56, align 4, !tbaa !9
  %605 = sext i32 %604 to i64
  %606 = getelementptr inbounds double, ptr %603, i64 %605
  %607 = load ptr, ptr %36, align 8, !tbaa !5
  %608 = load ptr, ptr %47, align 8, !tbaa !5
  %609 = load i32, ptr %72, align 4, !tbaa !9
  %610 = sext i32 %609 to i64
  %611 = getelementptr inbounds double, ptr %608, i64 %610
  %612 = load ptr, ptr %47, align 8, !tbaa !5
  %613 = load i32, ptr %88, align 4, !tbaa !9
  %614 = sext i32 %613 to i64
  %615 = getelementptr inbounds double, ptr %612, i64 %614
  %616 = load ptr, ptr %47, align 8, !tbaa !5
  %617 = load i32, ptr %69, align 4, !tbaa !9
  %618 = sext i32 %617 to i64
  %619 = getelementptr inbounds double, ptr %616, i64 %618
  call void @dggbal_(ptr noundef @.str.10, ptr noundef %597, ptr noundef %601, ptr noundef %602, ptr noundef %606, ptr noundef %607, ptr noundef %105, ptr noundef %104, ptr noundef %611, ptr noundef %615, ptr noundef %619, ptr noundef %67)
  %620 = load i32, ptr %104, align 4, !tbaa !9
  %621 = add nsw i32 %620, 1
  %622 = load i32, ptr %105, align 4, !tbaa !9
  %623 = sub nsw i32 %621, %622
  store i32 %623, ptr %77, align 4, !tbaa !9
  %624 = load ptr, ptr %32, align 8, !tbaa !5
  %625 = load i32, ptr %624, align 4, !tbaa !9
  %626 = add nsw i32 %625, 1
  %627 = load i32, ptr %105, align 4, !tbaa !9
  %628 = sub nsw i32 %626, %627
  store i32 %628, ptr %73, align 4, !tbaa !9
  %629 = load i32, ptr %69, align 4, !tbaa !9
  store i32 %629, ptr %68, align 4, !tbaa !9
  %630 = load i32, ptr %68, align 4, !tbaa !9
  %631 = load i32, ptr %77, align 4, !tbaa !9
  %632 = add nsw i32 %630, %631
  store i32 %632, ptr %69, align 4, !tbaa !9
  %633 = load ptr, ptr %48, align 8, !tbaa !5
  %634 = load i32, ptr %633, align 4, !tbaa !9
  %635 = add nsw i32 %634, 1
  %636 = load i32, ptr %69, align 4, !tbaa !9
  %637 = sub nsw i32 %635, %636
  store i32 %637, ptr %61, align 4, !tbaa !9
  %638 = load ptr, ptr %35, align 8, !tbaa !5
  %639 = load i32, ptr %105, align 4, !tbaa !9
  %640 = load i32, ptr %105, align 4, !tbaa !9
  %641 = load i32, ptr %55, align 4, !tbaa !9
  %642 = mul nsw i32 %640, %641
  %643 = add nsw i32 %639, %642
  %644 = sext i32 %643 to i64
  %645 = getelementptr inbounds double, ptr %638, i64 %644
  %646 = load ptr, ptr %36, align 8, !tbaa !5
  %647 = load ptr, ptr %47, align 8, !tbaa !5
  %648 = load i32, ptr %68, align 4, !tbaa !9
  %649 = sext i32 %648 to i64
  %650 = getelementptr inbounds double, ptr %647, i64 %649
  %651 = load ptr, ptr %47, align 8, !tbaa !5
  %652 = load i32, ptr %69, align 4, !tbaa !9
  %653 = sext i32 %652 to i64
  %654 = getelementptr inbounds double, ptr %651, i64 %653
  call void @dgeqrf_(ptr noundef %77, ptr noundef %73, ptr noundef %645, ptr noundef %646, ptr noundef %650, ptr noundef %654, ptr noundef %61, ptr noundef %67)
  %655 = load ptr, ptr %48, align 8, !tbaa !5
  %656 = load i32, ptr %655, align 4, !tbaa !9
  %657 = add nsw i32 %656, 1
  %658 = load i32, ptr %69, align 4, !tbaa !9
  %659 = sub nsw i32 %657, %658
  store i32 %659, ptr %61, align 4, !tbaa !9
  %660 = load ptr, ptr %35, align 8, !tbaa !5
  %661 = load i32, ptr %105, align 4, !tbaa !9
  %662 = load i32, ptr %105, align 4, !tbaa !9
  %663 = load i32, ptr %55, align 4, !tbaa !9
  %664 = mul nsw i32 %662, %663
  %665 = add nsw i32 %661, %664
  %666 = sext i32 %665 to i64
  %667 = getelementptr inbounds double, ptr %660, i64 %666
  %668 = load ptr, ptr %36, align 8, !tbaa !5
  %669 = load ptr, ptr %47, align 8, !tbaa !5
  %670 = load i32, ptr %68, align 4, !tbaa !9
  %671 = sext i32 %670 to i64
  %672 = getelementptr inbounds double, ptr %669, i64 %671
  %673 = load ptr, ptr %33, align 8, !tbaa !5
  %674 = load i32, ptr %105, align 4, !tbaa !9
  %675 = load i32, ptr %105, align 4, !tbaa !9
  %676 = load i32, ptr %53, align 4, !tbaa !9
  %677 = mul nsw i32 %675, %676
  %678 = add nsw i32 %674, %677
  %679 = sext i32 %678 to i64
  %680 = getelementptr inbounds double, ptr %673, i64 %679
  %681 = load ptr, ptr %34, align 8, !tbaa !5
  %682 = load ptr, ptr %47, align 8, !tbaa !5
  %683 = load i32, ptr %69, align 4, !tbaa !9
  %684 = sext i32 %683 to i64
  %685 = getelementptr inbounds double, ptr %682, i64 %684
  call void @dormqr_(ptr noundef @.str.13, ptr noundef @.str.14, ptr noundef %77, ptr noundef %73, ptr noundef %77, ptr noundef %667, ptr noundef %668, ptr noundef %672, ptr noundef %680, ptr noundef %681, ptr noundef %685, ptr noundef %61, ptr noundef %67)
  %686 = load i32, ptr %75, align 4, !tbaa !9
  %687 = icmp ne i32 %686, 0
  br i1 %687, label %688, label %746

688:                                              ; preds = %589
  %689 = load ptr, ptr %32, align 8, !tbaa !5
  %690 = load ptr, ptr %32, align 8, !tbaa !5
  %691 = load ptr, ptr %41, align 8, !tbaa !5
  %692 = load i32, ptr %58, align 4, !tbaa !9
  %693 = sext i32 %692 to i64
  %694 = getelementptr inbounds double, ptr %691, i64 %693
  %695 = load ptr, ptr %42, align 8, !tbaa !5
  call void @dlaset_(ptr noundef @.str.15, ptr noundef %689, ptr noundef %690, ptr noundef @c_b42, ptr noundef @c_b43, ptr noundef %694, ptr noundef %695)
  %696 = load i32, ptr %77, align 4, !tbaa !9
  %697 = icmp sgt i32 %696, 1
  br i1 %697, label %698, label %723

698:                                              ; preds = %688
  %699 = load i32, ptr %77, align 4, !tbaa !9
  %700 = sub nsw i32 %699, 1
  store i32 %700, ptr %61, align 4, !tbaa !9
  %701 = load i32, ptr %77, align 4, !tbaa !9
  %702 = sub nsw i32 %701, 1
  store i32 %702, ptr %62, align 4, !tbaa !9
  %703 = load ptr, ptr %35, align 8, !tbaa !5
  %704 = load i32, ptr %105, align 4, !tbaa !9
  %705 = add nsw i32 %704, 1
  %706 = load i32, ptr %105, align 4, !tbaa !9
  %707 = load i32, ptr %55, align 4, !tbaa !9
  %708 = mul nsw i32 %706, %707
  %709 = add nsw i32 %705, %708
  %710 = sext i32 %709 to i64
  %711 = getelementptr inbounds double, ptr %703, i64 %710
  %712 = load ptr, ptr %36, align 8, !tbaa !5
  %713 = load ptr, ptr %41, align 8, !tbaa !5
  %714 = load i32, ptr %105, align 4, !tbaa !9
  %715 = add nsw i32 %714, 1
  %716 = load i32, ptr %105, align 4, !tbaa !9
  %717 = load i32, ptr %57, align 4, !tbaa !9
  %718 = mul nsw i32 %716, %717
  %719 = add nsw i32 %715, %718
  %720 = sext i32 %719 to i64
  %721 = getelementptr inbounds double, ptr %713, i64 %720
  %722 = load ptr, ptr %42, align 8, !tbaa !5
  call void @dlacpy_(ptr noundef @.str.13, ptr noundef %61, ptr noundef %62, ptr noundef %711, ptr noundef %712, ptr noundef %721, ptr noundef %722)
  br label %723

723:                                              ; preds = %698, %688
  %724 = load ptr, ptr %48, align 8, !tbaa !5
  %725 = load i32, ptr %724, align 4, !tbaa !9
  %726 = add nsw i32 %725, 1
  %727 = load i32, ptr %69, align 4, !tbaa !9
  %728 = sub nsw i32 %726, %727
  store i32 %728, ptr %61, align 4, !tbaa !9
  %729 = load ptr, ptr %41, align 8, !tbaa !5
  %730 = load i32, ptr %105, align 4, !tbaa !9
  %731 = load i32, ptr %105, align 4, !tbaa !9
  %732 = load i32, ptr %57, align 4, !tbaa !9
  %733 = mul nsw i32 %731, %732
  %734 = add nsw i32 %730, %733
  %735 = sext i32 %734 to i64
  %736 = getelementptr inbounds double, ptr %729, i64 %735
  %737 = load ptr, ptr %42, align 8, !tbaa !5
  %738 = load ptr, ptr %47, align 8, !tbaa !5
  %739 = load i32, ptr %68, align 4, !tbaa !9
  %740 = sext i32 %739 to i64
  %741 = getelementptr inbounds double, ptr %738, i64 %740
  %742 = load ptr, ptr %47, align 8, !tbaa !5
  %743 = load i32, ptr %69, align 4, !tbaa !9
  %744 = sext i32 %743 to i64
  %745 = getelementptr inbounds double, ptr %742, i64 %744
  call void @dorgqr_(ptr noundef %77, ptr noundef %77, ptr noundef %77, ptr noundef %736, ptr noundef %737, ptr noundef %741, ptr noundef %745, ptr noundef %61, ptr noundef %67)
  br label %746

746:                                              ; preds = %723, %589
  %747 = load i32, ptr %76, align 4, !tbaa !9
  %748 = icmp ne i32 %747, 0
  br i1 %748, label %749, label %757

749:                                              ; preds = %746
  %750 = load ptr, ptr %32, align 8, !tbaa !5
  %751 = load ptr, ptr %32, align 8, !tbaa !5
  %752 = load ptr, ptr %43, align 8, !tbaa !5
  %753 = load i32, ptr %60, align 4, !tbaa !9
  %754 = sext i32 %753 to i64
  %755 = getelementptr inbounds double, ptr %752, i64 %754
  %756 = load ptr, ptr %44, align 8, !tbaa !5
  call void @dlaset_(ptr noundef @.str.15, ptr noundef %750, ptr noundef %751, ptr noundef @c_b42, ptr noundef @c_b43, ptr noundef %755, ptr noundef %756)
  br label %757

757:                                              ; preds = %749, %746
  %758 = load ptr, ptr %27, align 8, !tbaa !5
  %759 = load ptr, ptr %28, align 8, !tbaa !5
  %760 = load ptr, ptr %32, align 8, !tbaa !5
  %761 = load ptr, ptr %33, align 8, !tbaa !5
  %762 = load i32, ptr %54, align 4, !tbaa !9
  %763 = sext i32 %762 to i64
  %764 = getelementptr inbounds double, ptr %761, i64 %763
  %765 = load ptr, ptr %34, align 8, !tbaa !5
  %766 = load ptr, ptr %35, align 8, !tbaa !5
  %767 = load i32, ptr %56, align 4, !tbaa !9
  %768 = sext i32 %767 to i64
  %769 = getelementptr inbounds double, ptr %766, i64 %768
  %770 = load ptr, ptr %36, align 8, !tbaa !5
  %771 = load ptr, ptr %41, align 8, !tbaa !5
  %772 = load i32, ptr %58, align 4, !tbaa !9
  %773 = sext i32 %772 to i64
  %774 = getelementptr inbounds double, ptr %771, i64 %773
  %775 = load ptr, ptr %42, align 8, !tbaa !5
  %776 = load ptr, ptr %43, align 8, !tbaa !5
  %777 = load i32, ptr %60, align 4, !tbaa !9
  %778 = sext i32 %777 to i64
  %779 = getelementptr inbounds double, ptr %776, i64 %778
  %780 = load ptr, ptr %44, align 8, !tbaa !5
  call void @dgghrd_(ptr noundef %758, ptr noundef %759, ptr noundef %760, ptr noundef %105, ptr noundef %104, ptr noundef %764, ptr noundef %765, ptr noundef %769, ptr noundef %770, ptr noundef %774, ptr noundef %775, ptr noundef %779, ptr noundef %780, ptr noundef %67)
  %781 = load ptr, ptr %37, align 8, !tbaa !5
  store i32 0, ptr %781, align 4, !tbaa !9
  %782 = load i32, ptr %68, align 4, !tbaa !9
  store i32 %782, ptr %69, align 4, !tbaa !9
  %783 = load ptr, ptr %48, align 8, !tbaa !5
  %784 = load i32, ptr %783, align 4, !tbaa !9
  %785 = add nsw i32 %784, 1
  %786 = load i32, ptr %69, align 4, !tbaa !9
  %787 = sub nsw i32 %785, %786
  store i32 %787, ptr %61, align 4, !tbaa !9
  %788 = load ptr, ptr %27, align 8, !tbaa !5
  %789 = load ptr, ptr %28, align 8, !tbaa !5
  %790 = load ptr, ptr %32, align 8, !tbaa !5
  %791 = load ptr, ptr %33, align 8, !tbaa !5
  %792 = load i32, ptr %54, align 4, !tbaa !9
  %793 = sext i32 %792 to i64
  %794 = getelementptr inbounds double, ptr %791, i64 %793
  %795 = load ptr, ptr %34, align 8, !tbaa !5
  %796 = load ptr, ptr %35, align 8, !tbaa !5
  %797 = load i32, ptr %56, align 4, !tbaa !9
  %798 = sext i32 %797 to i64
  %799 = getelementptr inbounds double, ptr %796, i64 %798
  %800 = load ptr, ptr %36, align 8, !tbaa !5
  %801 = load ptr, ptr %38, align 8, !tbaa !5
  %802 = getelementptr inbounds double, ptr %801, i64 1
  %803 = load ptr, ptr %39, align 8, !tbaa !5
  %804 = getelementptr inbounds double, ptr %803, i64 1
  %805 = load ptr, ptr %40, align 8, !tbaa !5
  %806 = getelementptr inbounds double, ptr %805, i64 1
  %807 = load ptr, ptr %41, align 8, !tbaa !5
  %808 = load i32, ptr %58, align 4, !tbaa !9
  %809 = sext i32 %808 to i64
  %810 = getelementptr inbounds double, ptr %807, i64 %809
  %811 = load ptr, ptr %42, align 8, !tbaa !5
  %812 = load ptr, ptr %43, align 8, !tbaa !5
  %813 = load i32, ptr %60, align 4, !tbaa !9
  %814 = sext i32 %813 to i64
  %815 = getelementptr inbounds double, ptr %812, i64 %814
  %816 = load ptr, ptr %44, align 8, !tbaa !5
  %817 = load ptr, ptr %47, align 8, !tbaa !5
  %818 = load i32, ptr %69, align 4, !tbaa !9
  %819 = sext i32 %818 to i64
  %820 = getelementptr inbounds double, ptr %817, i64 %819
  call void @dhgeqz_(ptr noundef @.str.2, ptr noundef %788, ptr noundef %789, ptr noundef %790, ptr noundef %105, ptr noundef %104, ptr noundef %794, ptr noundef %795, ptr noundef %799, ptr noundef %800, ptr noundef %802, ptr noundef %804, ptr noundef %806, ptr noundef %810, ptr noundef %811, ptr noundef %815, ptr noundef %816, ptr noundef %820, ptr noundef %61, ptr noundef %67)
  %821 = load i32, ptr %67, align 4, !tbaa !9
  %822 = icmp ne i32 %821, 0
  br i1 %822, label %823, label %858

823:                                              ; preds = %757
  %824 = load i32, ptr %67, align 4, !tbaa !9
  %825 = icmp sgt i32 %824, 0
  br i1 %825, label %826, label %834

826:                                              ; preds = %823
  %827 = load i32, ptr %67, align 4, !tbaa !9
  %828 = load ptr, ptr %32, align 8, !tbaa !5
  %829 = load i32, ptr %828, align 4, !tbaa !9
  %830 = icmp sle i32 %827, %829
  br i1 %830, label %831, label %834

831:                                              ; preds = %826
  %832 = load i32, ptr %67, align 4, !tbaa !9
  %833 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 %832, ptr %833, align 4, !tbaa !9
  br label %857

834:                                              ; preds = %826, %823
  %835 = load i32, ptr %67, align 4, !tbaa !9
  %836 = load ptr, ptr %32, align 8, !tbaa !5
  %837 = load i32, ptr %836, align 4, !tbaa !9
  %838 = icmp sgt i32 %835, %837
  br i1 %838, label %839, label %851

839:                                              ; preds = %834
  %840 = load i32, ptr %67, align 4, !tbaa !9
  %841 = load ptr, ptr %32, align 8, !tbaa !5
  %842 = load i32, ptr %841, align 4, !tbaa !9
  %843 = shl i32 %842, 1
  %844 = icmp sle i32 %840, %843
  br i1 %844, label %845, label %851

845:                                              ; preds = %839
  %846 = load i32, ptr %67, align 4, !tbaa !9
  %847 = load ptr, ptr %32, align 8, !tbaa !5
  %848 = load i32, ptr %847, align 4, !tbaa !9
  %849 = sub nsw i32 %846, %848
  %850 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 %849, ptr %850, align 4, !tbaa !9
  br label %856

851:                                              ; preds = %839, %834
  %852 = load ptr, ptr %32, align 8, !tbaa !5
  %853 = load i32, ptr %852, align 4, !tbaa !9
  %854 = add nsw i32 %853, 1
  %855 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 %854, ptr %855, align 4, !tbaa !9
  br label %856

856:                                              ; preds = %851, %845
  br label %857

857:                                              ; preds = %856, %831
  br label %1465

858:                                              ; preds = %757
  %859 = load i32, ptr %100, align 4, !tbaa !9
  %860 = icmp ne i32 %859, 0
  br i1 %860, label %861, label %1019

861:                                              ; preds = %858
  %862 = load i32, ptr %82, align 4, !tbaa !9
  %863 = icmp ne i32 %862, 0
  br i1 %863, label %864, label %873

864:                                              ; preds = %861
  %865 = load ptr, ptr %32, align 8, !tbaa !5
  %866 = load ptr, ptr %38, align 8, !tbaa !5
  %867 = getelementptr inbounds double, ptr %866, i64 1
  %868 = load ptr, ptr %32, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %94, ptr noundef %65, ptr noundef %865, ptr noundef @c__1, ptr noundef %867, ptr noundef %868, ptr noundef %67)
  %869 = load ptr, ptr %32, align 8, !tbaa !5
  %870 = load ptr, ptr %39, align 8, !tbaa !5
  %871 = getelementptr inbounds double, ptr %870, i64 1
  %872 = load ptr, ptr %32, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %94, ptr noundef %65, ptr noundef %869, ptr noundef @c__1, ptr noundef %871, ptr noundef %872, ptr noundef %67)
  br label %873

873:                                              ; preds = %864, %861
  %874 = load i32, ptr %83, align 4, !tbaa !9
  %875 = icmp ne i32 %874, 0
  br i1 %875, label %876, label %881

876:                                              ; preds = %873
  %877 = load ptr, ptr %32, align 8, !tbaa !5
  %878 = load ptr, ptr %40, align 8, !tbaa !5
  %879 = getelementptr inbounds double, ptr %878, i64 1
  %880 = load ptr, ptr %32, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %95, ptr noundef %66, ptr noundef %877, ptr noundef @c__1, ptr noundef %879, ptr noundef %880, ptr noundef %67)
  br label %881

881:                                              ; preds = %876, %873
  %882 = load ptr, ptr %32, align 8, !tbaa !5
  %883 = load i32, ptr %882, align 4, !tbaa !9
  store i32 %883, ptr %61, align 4, !tbaa !9
  store i32 1, ptr %71, align 4, !tbaa !9
  br label %884

884:                                              ; preds = %907, %881
  %885 = load i32, ptr %71, align 4, !tbaa !9
  %886 = load i32, ptr %61, align 4, !tbaa !9
  %887 = icmp sle i32 %885, %886
  br i1 %887, label %888, label %910

888:                                              ; preds = %884
  %889 = load ptr, ptr %30, align 8, !tbaa !5
  %890 = load ptr, ptr %38, align 8, !tbaa !5
  %891 = load i32, ptr %71, align 4, !tbaa !9
  %892 = sext i32 %891 to i64
  %893 = getelementptr inbounds double, ptr %890, i64 %892
  %894 = load ptr, ptr %39, align 8, !tbaa !5
  %895 = load i32, ptr %71, align 4, !tbaa !9
  %896 = sext i32 %895 to i64
  %897 = getelementptr inbounds double, ptr %894, i64 %896
  %898 = load ptr, ptr %40, align 8, !tbaa !5
  %899 = load i32, ptr %71, align 4, !tbaa !9
  %900 = sext i32 %899 to i64
  %901 = getelementptr inbounds double, ptr %898, i64 %900
  %902 = call i32 (ptr, ptr, ptr, ...) %889(ptr noundef %893, ptr noundef %897, ptr noundef %901)
  %903 = load ptr, ptr %51, align 8, !tbaa !5
  %904 = load i32, ptr %71, align 4, !tbaa !9
  %905 = sext i32 %904 to i64
  %906 = getelementptr inbounds i32, ptr %903, i64 %905
  store i32 %902, ptr %906, align 4, !tbaa !9
  br label %907

907:                                              ; preds = %888
  %908 = load i32, ptr %71, align 4, !tbaa !9
  %909 = add nsw i32 %908, 1
  store i32 %909, ptr %71, align 4, !tbaa !9
  br label %884, !llvm.loop !13

910:                                              ; preds = %884
  %911 = load ptr, ptr %48, align 8, !tbaa !5
  %912 = load i32, ptr %911, align 4, !tbaa !9
  %913 = load i32, ptr %69, align 4, !tbaa !9
  %914 = sub nsw i32 %912, %913
  %915 = add nsw i32 %914, 1
  store i32 %915, ptr %61, align 4, !tbaa !9
  %916 = load ptr, ptr %51, align 8, !tbaa !5
  %917 = getelementptr inbounds i32, ptr %916, i64 1
  %918 = load ptr, ptr %32, align 8, !tbaa !5
  %919 = load ptr, ptr %33, align 8, !tbaa !5
  %920 = load i32, ptr %54, align 4, !tbaa !9
  %921 = sext i32 %920 to i64
  %922 = getelementptr inbounds double, ptr %919, i64 %921
  %923 = load ptr, ptr %34, align 8, !tbaa !5
  %924 = load ptr, ptr %35, align 8, !tbaa !5
  %925 = load i32, ptr %56, align 4, !tbaa !9
  %926 = sext i32 %925 to i64
  %927 = getelementptr inbounds double, ptr %924, i64 %926
  %928 = load ptr, ptr %36, align 8, !tbaa !5
  %929 = load ptr, ptr %38, align 8, !tbaa !5
  %930 = getelementptr inbounds double, ptr %929, i64 1
  %931 = load ptr, ptr %39, align 8, !tbaa !5
  %932 = getelementptr inbounds double, ptr %931, i64 1
  %933 = load ptr, ptr %40, align 8, !tbaa !5
  %934 = getelementptr inbounds double, ptr %933, i64 1
  %935 = load ptr, ptr %41, align 8, !tbaa !5
  %936 = load i32, ptr %58, align 4, !tbaa !9
  %937 = sext i32 %936 to i64
  %938 = getelementptr inbounds double, ptr %935, i64 %937
  %939 = load ptr, ptr %42, align 8, !tbaa !5
  %940 = load ptr, ptr %43, align 8, !tbaa !5
  %941 = load i32, ptr %60, align 4, !tbaa !9
  %942 = sext i32 %941 to i64
  %943 = getelementptr inbounds double, ptr %940, i64 %942
  %944 = load ptr, ptr %44, align 8, !tbaa !5
  %945 = load ptr, ptr %37, align 8, !tbaa !5
  %946 = getelementptr inbounds [2 x double], ptr %103, i64 0, i64 0
  %947 = load ptr, ptr %47, align 8, !tbaa !5
  %948 = load i32, ptr %69, align 4, !tbaa !9
  %949 = sext i32 %948 to i64
  %950 = getelementptr inbounds double, ptr %947, i64 %949
  %951 = load ptr, ptr %49, align 8, !tbaa !5
  %952 = getelementptr inbounds i32, ptr %951, i64 1
  %953 = load ptr, ptr %50, align 8, !tbaa !5
  call void @dtgsen_(ptr noundef %64, ptr noundef %75, ptr noundef %76, ptr noundef %917, ptr noundef %918, ptr noundef %922, ptr noundef %923, ptr noundef %927, ptr noundef %928, ptr noundef %930, ptr noundef %932, ptr noundef %934, ptr noundef %938, ptr noundef %939, ptr noundef %943, ptr noundef %944, ptr noundef %945, ptr noundef %80, ptr noundef %81, ptr noundef %946, ptr noundef %950, ptr noundef %61, ptr noundef %952, ptr noundef %953, ptr noundef %67)
  %954 = load i32, ptr %64, align 4, !tbaa !9
  %955 = icmp sge i32 %954, 1
  br i1 %955, label %956, label %976

956:                                              ; preds = %910
  %957 = load i32, ptr %97, align 4, !tbaa !9
  store i32 %957, ptr %61, align 4, !tbaa !9
  %958 = load ptr, ptr %37, align 8, !tbaa !5
  %959 = load i32, ptr %958, align 4, !tbaa !9
  %960 = shl i32 %959, 1
  %961 = load ptr, ptr %32, align 8, !tbaa !5
  %962 = load i32, ptr %961, align 4, !tbaa !9
  %963 = load ptr, ptr %37, align 8, !tbaa !5
  %964 = load i32, ptr %963, align 4, !tbaa !9
  %965 = sub nsw i32 %962, %964
  %966 = mul nsw i32 %960, %965
  store i32 %966, ptr %62, align 4, !tbaa !9
  %967 = load i32, ptr %61, align 4, !tbaa !9
  %968 = load i32, ptr %62, align 4, !tbaa !9
  %969 = icmp sge i32 %967, %968
  br i1 %969, label %970, label %972

970:                                              ; preds = %956
  %971 = load i32, ptr %61, align 4, !tbaa !9
  br label %974

972:                                              ; preds = %956
  %973 = load i32, ptr %62, align 4, !tbaa !9
  br label %974

974:                                              ; preds = %972, %970
  %975 = phi i32 [ %971, %970 ], [ %973, %972 ]
  store i32 %975, ptr %97, align 4, !tbaa !9
  br label %976

976:                                              ; preds = %974, %910
  %977 = load i32, ptr %67, align 4, !tbaa !9
  %978 = icmp eq i32 %977, -22
  br i1 %978, label %979, label %981

979:                                              ; preds = %976
  %980 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 -22, ptr %980, align 4, !tbaa !9
  br label %1018

981:                                              ; preds = %976
  %982 = load i32, ptr %64, align 4, !tbaa !9
  %983 = icmp eq i32 %982, 1
  br i1 %983, label %987, label %984

984:                                              ; preds = %981
  %985 = load i32, ptr %64, align 4, !tbaa !9
  %986 = icmp eq i32 %985, 4
  br i1 %986, label %987, label %994

987:                                              ; preds = %984, %981
  %988 = load double, ptr %80, align 8, !tbaa !11
  %989 = load ptr, ptr %45, align 8, !tbaa !5
  %990 = getelementptr inbounds double, ptr %989, i64 1
  store double %988, ptr %990, align 8, !tbaa !11
  %991 = load double, ptr %81, align 8, !tbaa !11
  %992 = load ptr, ptr %45, align 8, !tbaa !5
  %993 = getelementptr inbounds double, ptr %992, i64 2
  store double %991, ptr %993, align 8, !tbaa !11
  br label %994

994:                                              ; preds = %987, %984
  %995 = load i32, ptr %64, align 4, !tbaa !9
  %996 = icmp eq i32 %995, 2
  br i1 %996, label %1000, label %997

997:                                              ; preds = %994
  %998 = load i32, ptr %64, align 4, !tbaa !9
  %999 = icmp eq i32 %998, 4
  br i1 %999, label %1000, label %1009

1000:                                             ; preds = %997, %994
  %1001 = getelementptr inbounds [2 x double], ptr %103, i64 0, i64 0
  %1002 = load double, ptr %1001, align 16, !tbaa !11
  %1003 = load ptr, ptr %46, align 8, !tbaa !5
  %1004 = getelementptr inbounds double, ptr %1003, i64 1
  store double %1002, ptr %1004, align 8, !tbaa !11
  %1005 = getelementptr inbounds [2 x double], ptr %103, i64 0, i64 1
  %1006 = load double, ptr %1005, align 8, !tbaa !11
  %1007 = load ptr, ptr %46, align 8, !tbaa !5
  %1008 = getelementptr inbounds double, ptr %1007, i64 2
  store double %1006, ptr %1008, align 8, !tbaa !11
  br label %1009

1009:                                             ; preds = %1000, %997
  %1010 = load i32, ptr %67, align 4, !tbaa !9
  %1011 = icmp eq i32 %1010, 1
  br i1 %1011, label %1012, label %1017

1012:                                             ; preds = %1009
  %1013 = load ptr, ptr %32, align 8, !tbaa !5
  %1014 = load i32, ptr %1013, align 4, !tbaa !9
  %1015 = add nsw i32 %1014, 3
  %1016 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 %1015, ptr %1016, align 4, !tbaa !9
  br label %1017

1017:                                             ; preds = %1012, %1009
  br label %1018

1018:                                             ; preds = %1017, %979
  br label %1019

1019:                                             ; preds = %1018, %858
  %1020 = load i32, ptr %75, align 4, !tbaa !9
  %1021 = icmp ne i32 %1020, 0
  br i1 %1021, label %1022, label %1038

1022:                                             ; preds = %1019
  %1023 = load ptr, ptr %32, align 8, !tbaa !5
  %1024 = load ptr, ptr %47, align 8, !tbaa !5
  %1025 = load i32, ptr %72, align 4, !tbaa !9
  %1026 = sext i32 %1025 to i64
  %1027 = getelementptr inbounds double, ptr %1024, i64 %1026
  %1028 = load ptr, ptr %47, align 8, !tbaa !5
  %1029 = load i32, ptr %88, align 4, !tbaa !9
  %1030 = sext i32 %1029 to i64
  %1031 = getelementptr inbounds double, ptr %1028, i64 %1030
  %1032 = load ptr, ptr %32, align 8, !tbaa !5
  %1033 = load ptr, ptr %41, align 8, !tbaa !5
  %1034 = load i32, ptr %58, align 4, !tbaa !9
  %1035 = sext i32 %1034 to i64
  %1036 = getelementptr inbounds double, ptr %1033, i64 %1035
  %1037 = load ptr, ptr %42, align 8, !tbaa !5
  call void @dggbak_(ptr noundef @.str.10, ptr noundef @.str.13, ptr noundef %1023, ptr noundef %105, ptr noundef %104, ptr noundef %1027, ptr noundef %1031, ptr noundef %1032, ptr noundef %1036, ptr noundef %1037, ptr noundef %67)
  br label %1038

1038:                                             ; preds = %1022, %1019
  %1039 = load i32, ptr %76, align 4, !tbaa !9
  %1040 = icmp ne i32 %1039, 0
  br i1 %1040, label %1041, label %1057

1041:                                             ; preds = %1038
  %1042 = load ptr, ptr %32, align 8, !tbaa !5
  %1043 = load ptr, ptr %47, align 8, !tbaa !5
  %1044 = load i32, ptr %72, align 4, !tbaa !9
  %1045 = sext i32 %1044 to i64
  %1046 = getelementptr inbounds double, ptr %1043, i64 %1045
  %1047 = load ptr, ptr %47, align 8, !tbaa !5
  %1048 = load i32, ptr %88, align 4, !tbaa !9
  %1049 = sext i32 %1048 to i64
  %1050 = getelementptr inbounds double, ptr %1047, i64 %1049
  %1051 = load ptr, ptr %32, align 8, !tbaa !5
  %1052 = load ptr, ptr %43, align 8, !tbaa !5
  %1053 = load i32, ptr %60, align 4, !tbaa !9
  %1054 = sext i32 %1053 to i64
  %1055 = getelementptr inbounds double, ptr %1052, i64 %1054
  %1056 = load ptr, ptr %44, align 8, !tbaa !5
  call void @dggbak_(ptr noundef @.str.10, ptr noundef @.str.16, ptr noundef %1042, ptr noundef %105, ptr noundef %104, ptr noundef %1046, ptr noundef %1050, ptr noundef %1051, ptr noundef %1055, ptr noundef %1056, ptr noundef %67)
  br label %1057

1057:                                             ; preds = %1041, %1038
  %1058 = load i32, ptr %82, align 4, !tbaa !9
  %1059 = icmp ne i32 %1058, 0
  br i1 %1059, label %1060, label %1238

1060:                                             ; preds = %1057
  %1061 = load ptr, ptr %32, align 8, !tbaa !5
  %1062 = load i32, ptr %1061, align 4, !tbaa !9
  store i32 %1062, ptr %61, align 4, !tbaa !9
  store i32 1, ptr %71, align 4, !tbaa !9
  br label %1063

1063:                                             ; preds = %1234, %1060
  %1064 = load i32, ptr %71, align 4, !tbaa !9
  %1065 = load i32, ptr %61, align 4, !tbaa !9
  %1066 = icmp sle i32 %1064, %1065
  br i1 %1066, label %1067, label %1237

1067:                                             ; preds = %1063
  %1068 = load ptr, ptr %39, align 8, !tbaa !5
  %1069 = load i32, ptr %71, align 4, !tbaa !9
  %1070 = sext i32 %1069 to i64
  %1071 = getelementptr inbounds double, ptr %1068, i64 %1070
  %1072 = load double, ptr %1071, align 8, !tbaa !11
  %1073 = fcmp une double %1072, 0.000000e+00
  br i1 %1073, label %1074, label %1233

1074:                                             ; preds = %1067
  %1075 = load ptr, ptr %38, align 8, !tbaa !5
  %1076 = load i32, ptr %71, align 4, !tbaa !9
  %1077 = sext i32 %1076 to i64
  %1078 = getelementptr inbounds double, ptr %1075, i64 %1077
  %1079 = load double, ptr %1078, align 8, !tbaa !11
  %1080 = load double, ptr %85, align 8, !tbaa !11
  %1081 = fdiv double %1079, %1080
  %1082 = load double, ptr %94, align 8, !tbaa !11
  %1083 = load double, ptr %65, align 8, !tbaa !11
  %1084 = fdiv double %1082, %1083
  %1085 = fcmp ogt double %1081, %1084
  br i1 %1085, label %1098, label %1086

1086:                                             ; preds = %1074
  %1087 = load double, ptr %84, align 8, !tbaa !11
  %1088 = load ptr, ptr %38, align 8, !tbaa !5
  %1089 = load i32, ptr %71, align 4, !tbaa !9
  %1090 = sext i32 %1089 to i64
  %1091 = getelementptr inbounds double, ptr %1088, i64 %1090
  %1092 = load double, ptr %1091, align 8, !tbaa !11
  %1093 = fdiv double %1087, %1092
  %1094 = load double, ptr %65, align 8, !tbaa !11
  %1095 = load double, ptr %94, align 8, !tbaa !11
  %1096 = fdiv double %1094, %1095
  %1097 = fcmp ogt double %1093, %1096
  br i1 %1097, label %1098, label %1152

1098:                                             ; preds = %1086, %1074
  %1099 = load ptr, ptr %33, align 8, !tbaa !5
  %1100 = load i32, ptr %71, align 4, !tbaa !9
  %1101 = load i32, ptr %71, align 4, !tbaa !9
  %1102 = load i32, ptr %53, align 4, !tbaa !9
  %1103 = mul nsw i32 %1101, %1102
  %1104 = add nsw i32 %1100, %1103
  %1105 = sext i32 %1104 to i64
  %1106 = getelementptr inbounds double, ptr %1099, i64 %1105
  %1107 = load double, ptr %1106, align 8, !tbaa !11
  %1108 = load ptr, ptr %38, align 8, !tbaa !5
  %1109 = load i32, ptr %71, align 4, !tbaa !9
  %1110 = sext i32 %1109 to i64
  %1111 = getelementptr inbounds double, ptr %1108, i64 %1110
  %1112 = load double, ptr %1111, align 8, !tbaa !11
  %1113 = fdiv double %1107, %1112
  store double %1113, ptr %63, align 8, !tbaa !11
  %1114 = load double, ptr %63, align 8, !tbaa !11
  %1115 = fcmp oge double %1114, 0.000000e+00
  br i1 %1115, label %1116, label %1118

1116:                                             ; preds = %1098
  %1117 = load double, ptr %63, align 8, !tbaa !11
  br label %1121

1118:                                             ; preds = %1098
  %1119 = load double, ptr %63, align 8, !tbaa !11
  %1120 = fneg double %1119
  br label %1121

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

1152:                                             ; preds = %1086
  %1153 = load ptr, ptr %39, align 8, !tbaa !5
  %1154 = load i32, ptr %71, align 4, !tbaa !9
  %1155 = sext i32 %1154 to i64
  %1156 = getelementptr inbounds double, ptr %1153, i64 %1155
  %1157 = load double, ptr %1156, align 8, !tbaa !11
  %1158 = load double, ptr %85, align 8, !tbaa !11
  %1159 = fdiv double %1157, %1158
  %1160 = load double, ptr %94, align 8, !tbaa !11
  %1161 = load double, ptr %65, align 8, !tbaa !11
  %1162 = fdiv double %1160, %1161
  %1163 = fcmp ogt double %1159, %1162
  br i1 %1163, label %1176, label %1164

1164:                                             ; preds = %1152
  %1165 = load double, ptr %84, align 8, !tbaa !11
  %1166 = load ptr, ptr %39, align 8, !tbaa !5
  %1167 = load i32, ptr %71, align 4, !tbaa !9
  %1168 = sext i32 %1167 to i64
  %1169 = getelementptr inbounds double, ptr %1166, i64 %1168
  %1170 = load double, ptr %1169, align 8, !tbaa !11
  %1171 = fdiv double %1165, %1170
  %1172 = load double, ptr %65, align 8, !tbaa !11
  %1173 = load double, ptr %94, align 8, !tbaa !11
  %1174 = fdiv double %1172, %1173
  %1175 = fcmp ogt double %1171, %1174
  br i1 %1175, label %1176, label %1231

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

1195:                                             ; preds = %1176
  %1196 = load double, ptr %63, align 8, !tbaa !11
  br label %1200

1197:                                             ; preds = %1176
  %1198 = load double, ptr %63, align 8, !tbaa !11
  %1199 = fneg double %1198
  br label %1200

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

1231:                                             ; preds = %1200, %1164
  br label %1232

1232:                                             ; preds = %1231, %1121
  br label %1233

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

1234:                                             ; preds = %1233
  %1235 = load i32, ptr %71, align 4, !tbaa !9
  %1236 = add nsw i32 %1235, 1
  store i32 %1236, ptr %71, align 4, !tbaa !9
  br label %1063, !llvm.loop !15

1237:                                             ; preds = %1063
  br label %1238

1238:                                             ; preds = %1237, %1057
  %1239 = load i32, ptr %83, align 4, !tbaa !9
  %1240 = icmp ne i32 %1239, 0
  br i1 %1240, label %1241, label %1339

1241:                                             ; preds = %1238
  %1242 = load ptr, ptr %32, align 8, !tbaa !5
  %1243 = load i32, ptr %1242, align 4, !tbaa !9
  store i32 %1243, ptr %61, align 4, !tbaa !9
  store i32 1, ptr %71, align 4, !tbaa !9
  br label %1244

1244:                                             ; preds = %1335, %1241
  %1245 = load i32, ptr %71, align 4, !tbaa !9
  %1246 = load i32, ptr %61, align 4, !tbaa !9
  %1247 = icmp sle i32 %1245, %1246
  br i1 %1247, label %1248, label %1338

1248:                                             ; preds = %1244
  %1249 = load ptr, ptr %39, align 8, !tbaa !5
  %1250 = load i32, ptr %71, align 4, !tbaa !9
  %1251 = sext i32 %1250 to i64
  %1252 = getelementptr inbounds double, ptr %1249, i64 %1251
  %1253 = load double, ptr %1252, align 8, !tbaa !11
  %1254 = fcmp une double %1253, 0.000000e+00
  br i1 %1254, label %1255, label %1334

1255:                                             ; preds = %1248
  %1256 = load ptr, ptr %40, align 8, !tbaa !5
  %1257 = load i32, ptr %71, align 4, !tbaa !9
  %1258 = sext i32 %1257 to i64
  %1259 = getelementptr inbounds double, ptr %1256, i64 %1258
  %1260 = load double, ptr %1259, align 8, !tbaa !11
  %1261 = load double, ptr %85, align 8, !tbaa !11
  %1262 = fdiv double %1260, %1261
  %1263 = load double, ptr %95, align 8, !tbaa !11
  %1264 = load double, ptr %66, align 8, !tbaa !11
  %1265 = fdiv double %1263, %1264
  %1266 = fcmp ogt double %1262, %1265
  br i1 %1266, label %1279, label %1267

1267:                                             ; preds = %1255
  %1268 = load double, ptr %84, align 8, !tbaa !11
  %1269 = load ptr, ptr %40, align 8, !tbaa !5
  %1270 = load i32, ptr %71, align 4, !tbaa !9
  %1271 = sext i32 %1270 to i64
  %1272 = getelementptr inbounds double, ptr %1269, i64 %1271
  %1273 = load double, ptr %1272, align 8, !tbaa !11
  %1274 = fdiv double %1268, %1273
  %1275 = load double, ptr %66, align 8, !tbaa !11
  %1276 = load double, ptr %95, align 8, !tbaa !11
  %1277 = fdiv double %1275, %1276
  %1278 = fcmp ogt double %1274, %1277
  br i1 %1278, label %1279, label %1333

1279:                                             ; preds = %1267, %1255
  %1280 = load ptr, ptr %35, align 8, !tbaa !5
  %1281 = load i32, ptr %71, align 4, !tbaa !9
  %1282 = load i32, ptr %71, align 4, !tbaa !9
  %1283 = load i32, ptr %55, align 4, !tbaa !9
  %1284 = mul nsw i32 %1282, %1283
  %1285 = add nsw i32 %1281, %1284
  %1286 = sext i32 %1285 to i64
  %1287 = getelementptr inbounds double, ptr %1280, i64 %1286
  %1288 = load double, ptr %1287, align 8, !tbaa !11
  %1289 = load ptr, ptr %40, align 8, !tbaa !5
  %1290 = load i32, ptr %71, align 4, !tbaa !9
  %1291 = sext i32 %1290 to i64
  %1292 = getelementptr inbounds double, ptr %1289, i64 %1291
  %1293 = load double, ptr %1292, align 8, !tbaa !11
  %1294 = fdiv double %1288, %1293
  store double %1294, ptr %63, align 8, !tbaa !11
  %1295 = load double, ptr %63, align 8, !tbaa !11
  %1296 = fcmp oge double %1295, 0.000000e+00
  br i1 %1296, label %1297, label %1299

1297:                                             ; preds = %1279
  %1298 = load double, ptr %63, align 8, !tbaa !11
  br label %1302

1299:                                             ; preds = %1279
  %1300 = load double, ptr %63, align 8, !tbaa !11
  %1301 = fneg double %1300
  br label %1302

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

1333:                                             ; preds = %1302, %1267
  br label %1334

1334:                                             ; preds = %1333, %1248
  br label %1335

1335:                                             ; preds = %1334
  %1336 = load i32, ptr %71, align 4, !tbaa !9
  %1337 = add nsw i32 %1336, 1
  store i32 %1337, ptr %71, align 4, !tbaa !9
  br label %1244, !llvm.loop !16

1338:                                             ; preds = %1244
  br label %1339

1339:                                             ; preds = %1338, %1238
  %1340 = load i32, ptr %82, align 4, !tbaa !9
  %1341 = icmp ne i32 %1340, 0
  br i1 %1341, label %1342, label %1358

1342:                                             ; preds = %1339
  %1343 = load ptr, ptr %32, align 8, !tbaa !5
  %1344 = load ptr, ptr %32, align 8, !tbaa !5
  %1345 = load ptr, ptr %33, align 8, !tbaa !5
  %1346 = load i32, ptr %54, align 4, !tbaa !9
  %1347 = sext i32 %1346 to i64
  %1348 = getelementptr inbounds double, ptr %1345, i64 %1347
  %1349 = load ptr, ptr %34, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.17, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %94, ptr noundef %65, ptr noundef %1343, ptr noundef %1344, ptr noundef %1348, ptr noundef %1349, ptr noundef %67)
  %1350 = load ptr, ptr %32, align 8, !tbaa !5
  %1351 = load ptr, ptr %38, align 8, !tbaa !5
  %1352 = getelementptr inbounds double, ptr %1351, i64 1
  %1353 = load ptr, ptr %32, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %94, ptr noundef %65, ptr noundef %1350, ptr noundef @c__1, ptr noundef %1352, ptr noundef %1353, ptr noundef %67)
  %1354 = load ptr, ptr %32, align 8, !tbaa !5
  %1355 = load ptr, ptr %39, align 8, !tbaa !5
  %1356 = getelementptr inbounds double, ptr %1355, i64 1
  %1357 = load ptr, ptr %32, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %94, ptr noundef %65, ptr noundef %1354, ptr noundef @c__1, ptr noundef %1356, ptr noundef %1357, ptr noundef %67)
  br label %1358

1358:                                             ; preds = %1342, %1339
  %1359 = load i32, ptr %83, align 4, !tbaa !9
  %1360 = icmp ne i32 %1359, 0
  br i1 %1360, label %1361, label %1373

1361:                                             ; preds = %1358
  %1362 = load ptr, ptr %32, align 8, !tbaa !5
  %1363 = load ptr, ptr %32, align 8, !tbaa !5
  %1364 = load ptr, ptr %35, align 8, !tbaa !5
  %1365 = load i32, ptr %56, align 4, !tbaa !9
  %1366 = sext i32 %1365 to i64
  %1367 = getelementptr inbounds double, ptr %1364, i64 %1366
  %1368 = load ptr, ptr %36, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.18, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %95, ptr noundef %66, ptr noundef %1362, ptr noundef %1363, ptr noundef %1367, ptr noundef %1368, ptr noundef %67)
  %1369 = load ptr, ptr %32, align 8, !tbaa !5
  %1370 = load ptr, ptr %40, align 8, !tbaa !5
  %1371 = getelementptr inbounds double, ptr %1370, i64 1
  %1372 = load ptr, ptr %32, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %95, ptr noundef %66, ptr noundef %1369, ptr noundef @c__1, ptr noundef %1371, ptr noundef %1372, ptr noundef %67)
  br label %1373

1373:                                             ; preds = %1361, %1358
  %1374 = load i32, ptr %100, align 4, !tbaa !9
  %1375 = icmp ne i32 %1374, 0
  br i1 %1375, label %1376, label %1464

1376:                                             ; preds = %1373
  store i32 1, ptr %93, align 4, !tbaa !9
  store i32 1, ptr %78, align 4, !tbaa !9
  %1377 = load ptr, ptr %37, align 8, !tbaa !5
  store i32 0, ptr %1377, align 4, !tbaa !9
  store i32 0, ptr %79, align 4, !tbaa !9
  %1378 = load ptr, ptr %32, align 8, !tbaa !5
  %1379 = load i32, ptr %1378, align 4, !tbaa !9
  store i32 %1379, ptr %61, align 4, !tbaa !9
  store i32 1, ptr %71, align 4, !tbaa !9
  br label %1380

1380:                                             ; preds = %1460, %1376
  %1381 = load i32, ptr %71, align 4, !tbaa !9
  %1382 = load i32, ptr %61, align 4, !tbaa !9
  %1383 = icmp sle i32 %1381, %1382
  br i1 %1383, label %1384, label %1463

1384:                                             ; preds = %1380
  %1385 = load ptr, ptr %30, align 8, !tbaa !5
  %1386 = load ptr, ptr %38, align 8, !tbaa !5
  %1387 = load i32, ptr %71, align 4, !tbaa !9
  %1388 = sext i32 %1387 to i64
  %1389 = getelementptr inbounds double, ptr %1386, i64 %1388
  %1390 = load ptr, ptr %39, align 8, !tbaa !5
  %1391 = load i32, ptr %71, align 4, !tbaa !9
  %1392 = sext i32 %1391 to i64
  %1393 = getelementptr inbounds double, ptr %1390, i64 %1392
  %1394 = load ptr, ptr %40, align 8, !tbaa !5
  %1395 = load i32, ptr %71, align 4, !tbaa !9
  %1396 = sext i32 %1395 to i64
  %1397 = getelementptr inbounds double, ptr %1394, i64 %1396
  %1398 = call i32 (ptr, ptr, ptr, ...) %1385(ptr noundef %1389, ptr noundef %1393, ptr noundef %1397)
  store i32 %1398, ptr %74, align 4, !tbaa !9
  %1399 = load ptr, ptr %39, align 8, !tbaa !5
  %1400 = load i32, ptr %71, align 4, !tbaa !9
  %1401 = sext i32 %1400 to i64
  %1402 = getelementptr inbounds double, ptr %1399, i64 %1401
  %1403 = load double, ptr %1402, align 8, !tbaa !11
  %1404 = fcmp oeq double %1403, 0.000000e+00
  br i1 %1404, label %1405, label %1424

1405:                                             ; preds = %1384
  %1406 = load i32, ptr %74, align 4, !tbaa !9
  %1407 = icmp ne i32 %1406, 0
  br i1 %1407, label %1408, label %1412

1408:                                             ; preds = %1405
  %1409 = load ptr, ptr %37, align 8, !tbaa !5
  %1410 = load i32, ptr %1409, align 4, !tbaa !9
  %1411 = add nsw i32 %1410, 1
  store i32 %1411, ptr %1409, align 4, !tbaa !9
  br label %1412

1412:                                             ; preds = %1408, %1405
  store i32 0, ptr %79, align 4, !tbaa !9
  %1413 = load i32, ptr %74, align 4, !tbaa !9
  %1414 = icmp ne i32 %1413, 0
  br i1 %1414, label %1415, label %1423

1415:                                             ; preds = %1412
  %1416 = load i32, ptr %93, align 4, !tbaa !9
  %1417 = icmp ne i32 %1416, 0
  br i1 %1417, label %1423, label %1418

1418:                                             ; preds = %1415
  %1419 = load ptr, ptr %32, align 8, !tbaa !5
  %1420 = load i32, ptr %1419, align 4, !tbaa !9
  %1421 = add nsw i32 %1420, 2
  %1422 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 %1421, ptr %1422, align 4, !tbaa !9
  br label %1423

1423:                                             ; preds = %1418, %1415, %1412
  br label %1457

1424:                                             ; preds = %1384
  %1425 = load i32, ptr %79, align 4, !tbaa !9
  %1426 = icmp eq i32 %1425, 1
  br i1 %1426, label %1427, label %1455

1427:                                             ; preds = %1424
  %1428 = load i32, ptr %74, align 4, !tbaa !9
  %1429 = icmp ne i32 %1428, 0
  br i1 %1429, label %1433, label %1430

1430:                                             ; preds = %1427
  %1431 = load i32, ptr %93, align 4, !tbaa !9
  %1432 = icmp ne i32 %1431, 0
  br label %1433

1433:                                             ; preds = %1430, %1427
  %1434 = phi i1 [ true, %1427 ], [ %1432, %1430 ]
  %1435 = zext i1 %1434 to i32
  store i32 %1435, ptr %74, align 4, !tbaa !9
  %1436 = load i32, ptr %74, align 4, !tbaa !9
  store i32 %1436, ptr %93, align 4, !tbaa !9
  %1437 = load i32, ptr %74, align 4, !tbaa !9
  %1438 = icmp ne i32 %1437, 0
  br i1 %1438, label %1439, label %1443

1439:                                             ; preds = %1433
  %1440 = load ptr, ptr %37, align 8, !tbaa !5
  %1441 = load i32, ptr %1440, align 4, !tbaa !9
  %1442 = add nsw i32 %1441, 2
  store i32 %1442, ptr %1440, align 4, !tbaa !9
  br label %1443

1443:                                             ; preds = %1439, %1433
  store i32 -1, ptr %79, align 4, !tbaa !9
  %1444 = load i32, ptr %74, align 4, !tbaa !9
  %1445 = icmp ne i32 %1444, 0
  br i1 %1445, label %1446, label %1454

1446:                                             ; preds = %1443
  %1447 = load i32, ptr %78, align 4, !tbaa !9
  %1448 = icmp ne i32 %1447, 0
  br i1 %1448, label %1454, label %1449

1449:                                             ; preds = %1446
  %1450 = load ptr, ptr %32, align 8, !tbaa !5
  %1451 = load i32, ptr %1450, align 4, !tbaa !9
  %1452 = add nsw i32 %1451, 2
  %1453 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 %1452, ptr %1453, align 4, !tbaa !9
  br label %1454

1454:                                             ; preds = %1449, %1446, %1443
  br label %1456

1455:                                             ; preds = %1424
  store i32 1, ptr %79, align 4, !tbaa !9
  br label %1456

1456:                                             ; preds = %1455, %1454
  br label %1457

1457:                                             ; preds = %1456, %1423
  %1458 = load i32, ptr %93, align 4, !tbaa !9
  store i32 %1458, ptr %78, align 4, !tbaa !9
  %1459 = load i32, ptr %74, align 4, !tbaa !9
  store i32 %1459, ptr %93, align 4, !tbaa !9
  br label %1460

1460:                                             ; preds = %1457
  %1461 = load i32, ptr %71, align 4, !tbaa !9
  %1462 = add nsw i32 %1461, 1
  store i32 %1462, ptr %71, align 4, !tbaa !9
  br label %1380, !llvm.loop !17

1463:                                             ; preds = %1380
  br label %1464

1464:                                             ; preds = %1463, %1373
  br label %1465

1465:                                             ; preds = %1464, %857
  %1466 = load i32, ptr %97, align 4, !tbaa !9
  %1467 = sitofp i32 %1466 to double
  %1468 = load ptr, ptr %47, align 8, !tbaa !5
  %1469 = getelementptr inbounds double, ptr %1468, i64 1
  store double %1467, ptr %1469, align 8, !tbaa !11
  %1470 = load i32, ptr %91, align 4, !tbaa !9
  %1471 = load ptr, ptr %49, align 8, !tbaa !5
  %1472 = getelementptr inbounds i32, ptr %1471, i64 1
  store i32 %1470, ptr %1472, align 4, !tbaa !9
  store i32 1, ptr %107, align 4
  br label %1473

1473:                                             ; preds = %1465, %503, %497, %489
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %105) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %104) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %103) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %102) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %101) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 8, ptr %86) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 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 8, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #4
  ret void
}

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

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

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

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

61:                                               ; preds = %26
  store i32 0, ptr %34, align 4, !tbaa !5
  br label %66

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

64:                                               ; preds = %62
  store i32 1, ptr %34, align 4, !tbaa !5
  br label %66

65:                                               ; preds = %62
  store i32 0, ptr %34, align 4, !tbaa !5
  br label %66

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

69:                                               ; preds = %66
  store i32 0, ptr %35, align 4, !tbaa !5
  br label %74

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

72:                                               ; preds = %70
  store i32 1, ptr %35, align 4, !tbaa !5
  br label %74

73:                                               ; preds = %70
  store i32 0, ptr %35, align 4, !tbaa !5
  br label %74

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

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

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

89:                                               ; preds = %86
  store i32 0, ptr %29, align 4, !tbaa !5
  br label %96

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

91:                                               ; preds = %90
  store i32 1, ptr %29, align 4, !tbaa !5
  br label %96

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

93:                                               ; preds = %92
  store i32 2, ptr %29, align 4, !tbaa !5
  br label %96

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

95:                                               ; preds = %94
  store i32 4, ptr %29, align 4, !tbaa !5
  br label %96

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

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

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

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

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

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

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

115:                                              ; preds = %112
  %116 = load i32, ptr %15, align 4, !tbaa !5
  %117 = icmp slt i32 %116, 1
  %118 = icmp ult i32 %116, %107
  %or.cond606 = and i1 %118, %.not544
  %or.cond655 = or i1 %117, %or.cond606
  br i1 %or.cond655, label %.thread584.sink.split, label %119

119:                                              ; preds = %115
  %120 = load i32, ptr %17, align 4, !tbaa !5
  %121 = icmp slt i32 %120, 1
  %122 = icmp ult i32 %120, %107
  %or.cond607 = and i1 %122, %.not545
  %or.cond656 = or i1 %121, %or.cond607
  br i1 %or.cond656, label %.thread584.sink.split, label %123

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

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

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

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

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

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

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

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

160:                                              ; preds = %156, %154
  %.0499 = phi i32 [ 1, %154 ], [ %spec.select578, %156 ]
  store i32 %.0499, ptr %22, align 4, !tbaa !5
  %161 = load i32, ptr %21, align 4, !tbaa !5
  %162 = icmp sge i32 %161, %.0496
  %or.cond9 = select i1 %162, i1 true, i1 %87
  br i1 %or.cond9, label %163, label %.thread584.sink.split

163:                                              ; preds = %160
  %164 = load i32, ptr %23, align 4, !tbaa !5
  %165 = icmp sge i32 %164, %.0499
  %or.cond11 = select i1 %165, i1 true, i1 %87
  br i1 %or.cond11, label %.thread, label %.thread584.sink.split

.thread:                                          ; preds = %163
  %.pr580.pr = load i32, ptr %25, align 4, !tbaa !5
  %.not551 = icmp eq i32 %.pr580.pr, 0
  br i1 %.not551, label %169, label %.thread584

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

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

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

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

173:                                              ; preds = %170
  store i32 0, ptr %10, align 4, !tbaa !5
  br label %451

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

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

187:                                              ; preds = %185, %174
  %storemerge = phi double [ %180, %174 ], [ %181, %185 ]
  store double %storemerge, ptr %41, align 8, !tbaa !9
  call void @dlascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %30, ptr noundef nonnull %41, ptr noundef nonnull %5, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull %32) #5
  br label %188

188:                                              ; preds = %185, %187
  %.not552592 = phi i1 [ false, %187 ], [ true, %185 ]
  %189 = call double @dlange_(ptr noundef nonnull @.str.11, ptr noundef nonnull %5, ptr noundef nonnull %5, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull %20) #5
  store double %189, ptr %31, align 8, !tbaa !9
  %190 = fcmp ogt double %189, 0.000000e+00
  %191 = fcmp olt double %189, %180
  %or.cond574 = select i1 %190, i1 %191, i1 false
  br i1 %or.cond574, label %194, label %192

192:                                              ; preds = %188
  %193 = fcmp ogt double %189, %181
  br i1 %193, label %194, label %195

194:                                              ; preds = %192, %188
  %storemerge610 = phi double [ %180, %188 ], [ %181, %192 ]
  store double %storemerge610, ptr %42, align 8, !tbaa !9
  call void @dlascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %31, ptr noundef nonnull %42, ptr noundef nonnull %5, ptr noundef nonnull %5, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull %32) #5
  br label %195

195:                                              ; preds = %192, %194
  %.not554597 = phi i1 [ false, %194 ], [ true, %192 ]
  %196 = load i32, ptr %5, align 4, !tbaa !5
  %197 = add nsw i32 %196, 1
  %198 = add nsw i32 %197, %196
  %199 = sext i32 %197 to i64
  %200 = getelementptr inbounds double, ptr %58, i64 %199
  %201 = sext i32 %198 to i64
  %202 = getelementptr inbounds double, ptr %58, i64 %201
  call void @dggbal_(ptr noundef nonnull @.str.10, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull %45, ptr noundef nonnull %44, ptr noundef nonnull %20, ptr noundef nonnull %200, ptr noundef nonnull %202, ptr noundef nonnull %32) #5
  %203 = load i32, ptr %44, align 4, !tbaa !5
  %204 = add nsw i32 %203, 1
  %205 = load i32, ptr %45, align 4, !tbaa !5
  %206 = sub i32 %204, %205
  store i32 %206, ptr %36, align 4, !tbaa !5
  %207 = load i32, ptr %5, align 4, !tbaa !5
  %reass.sub = sub i32 %207, %205
  %208 = add i32 %reass.sub, 1
  store i32 %208, ptr %33, align 4, !tbaa !5
  %209 = add nsw i32 %206, %198
  %210 = load i32, ptr %21, align 4, !tbaa !5
  %reass.sub637 = sub i32 %210, %209
  %211 = add i32 %reass.sub637, 1
  store i32 %211, ptr %27, align 4, !tbaa !5
  %212 = add i32 %49, 1
  %213 = mul i32 %205, %212
  %214 = sext i32 %213 to i64
  %215 = getelementptr inbounds double, ptr %51, i64 %214
  %216 = sext i32 %209 to i64
  %217 = getelementptr inbounds double, ptr %58, i64 %216
  call void @dgeqrf_(ptr noundef nonnull %36, ptr noundef nonnull %33, ptr noundef %215, ptr noundef nonnull %9, ptr noundef nonnull %202, ptr noundef nonnull %217, ptr noundef nonnull %27, ptr noundef nonnull %32) #5
  %218 = load i32, ptr %21, align 4, !tbaa !5
  %reass.sub638 = sub i32 %218, %209
  %219 = add i32 %reass.sub638, 1
  store i32 %219, ptr %27, align 4, !tbaa !5
  %220 = load i32, ptr %45, align 4, !tbaa !5
  %221 = mul i32 %220, %212
  %222 = sext i32 %221 to i64
  %223 = getelementptr inbounds double, ptr %51, i64 %222
  %224 = add i32 %46, 1
  %225 = mul i32 %220, %224
  %226 = sext i32 %225 to i64
  %227 = getelementptr inbounds double, ptr %48, i64 %226
  call void @dormqr_(ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.14, ptr noundef nonnull %36, ptr noundef nonnull %33, ptr noundef nonnull %36, ptr noundef %223, ptr noundef nonnull %9, ptr noundef nonnull %202, ptr noundef %227, ptr noundef nonnull %7, ptr noundef nonnull %217, ptr noundef nonnull %27, ptr noundef nonnull %32) #5
  %228 = load i32, ptr %34, align 4, !tbaa !5
  %.not555 = icmp eq i32 %228, 0
  br i1 %.not555, label %252, label %229

229:                                              ; preds = %195
  call void @dlaset_(ptr noundef nonnull @.str.15, ptr noundef nonnull %5, ptr noundef nonnull %5, ptr noundef nonnull @c_b42, ptr noundef nonnull @c_b43, ptr noundef %14, ptr noundef nonnull %15) #5
  %230 = load i32, ptr %36, align 4, !tbaa !5
  %231 = icmp sgt i32 %230, 1
  br i1 %231, label %232, label %244

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

244:                                              ; preds = %232, %229
  %245 = load i32, ptr %21, align 4, !tbaa !5
  %reass.sub639 = sub i32 %245, %209
  %246 = add i32 %reass.sub639, 1
  store i32 %246, ptr %27, align 4, !tbaa !5
  %247 = load i32, ptr %45, align 4, !tbaa !5
  %248 = add i32 %55, 1
  %249 = mul i32 %247, %248
  %250 = sext i32 %249 to i64
  %251 = getelementptr inbounds double, ptr %57, i64 %250
  call void @dorgqr_(ptr noundef nonnull %36, ptr noundef nonnull %36, ptr noundef nonnull %36, ptr noundef %251, ptr noundef nonnull %15, ptr noundef nonnull %202, ptr noundef nonnull %217, ptr noundef nonnull %27, ptr noundef nonnull %32) #5
  br label %252

252:                                              ; preds = %244, %195
  %253 = load i32, ptr %35, align 4, !tbaa !5
  %.not556 = icmp eq i32 %253, 0
  br i1 %.not556, label %255, label %254

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

255:                                              ; preds = %254, %252
  call void @dgghrd_(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %5, ptr noundef nonnull %45, ptr noundef nonnull %44, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %14, ptr noundef nonnull %15, ptr noundef %16, ptr noundef nonnull %17, ptr noundef nonnull %32) #5
  store i32 0, ptr %10, align 4, !tbaa !5
  %256 = load i32, ptr %21, align 4, !tbaa !5
  %reass.sub640 = sub i32 %256, %198
  %257 = add i32 %reass.sub640, 1
  store i32 %257, ptr %27, align 4, !tbaa !5
  call void @dhgeqz_(ptr noundef nonnull @.str.2, ptr noundef %0, ptr noundef %1, ptr noundef nonnull %5, ptr noundef nonnull %45, ptr noundef nonnull %44, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef nonnull %15, ptr noundef %16, ptr noundef nonnull %17, ptr noundef nonnull %202, ptr noundef nonnull %27, ptr noundef nonnull %32) #5
  %258 = load i32, ptr %32, align 4, !tbaa !5
  %.not558 = icmp eq i32 %258, 0
  br i1 %.not558, label %268, label %259

259:                                              ; preds = %255
  %260 = icmp slt i32 %258, 1
  %.pre = load i32, ptr %5, align 4, !tbaa !5
  %.not569 = icmp sgt i32 %258, %.pre
  %or.cond657 = select i1 %260, i1 true, i1 %.not569
  br i1 %or.cond657, label %261, label %.loopexit.sink.split

261:                                              ; preds = %259
  %262 = icmp sle i32 %258, %.pre
  %263 = shl i32 %.pre, 1
  %.not570 = icmp sgt i32 %258, %263
  %or.cond575 = or i1 %262, %.not570
  br i1 %or.cond575, label %266, label %264

264:                                              ; preds = %261
  %265 = sub nsw i32 %258, %.pre
  br label %.loopexit.sink.split

266:                                              ; preds = %261
  %267 = add nsw i32 %.pre, 1
  br label %.loopexit.sink.split

268:                                              ; preds = %255
  br i1 %.not543, label %308, label %269

269:                                              ; preds = %268
  br i1 %.not552592, label %271, label %270

270:                                              ; preds = %269
  call void @dlascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %41, ptr noundef nonnull %30, ptr noundef nonnull %5, ptr noundef nonnull @c__1, ptr noundef %11, ptr noundef nonnull %5, ptr noundef nonnull %32) #5
  call void @dlascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %41, ptr noundef nonnull %30, ptr noundef nonnull %5, ptr noundef nonnull @c__1, ptr noundef %12, ptr noundef nonnull %5, ptr noundef nonnull %32) #5
  br label %271

271:                                              ; preds = %270, %269
  br i1 %.not554597, label %273, label %272

272:                                              ; preds = %271
  call void @dlascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %42, ptr noundef nonnull %31, ptr noundef nonnull %5, ptr noundef nonnull @c__1, ptr noundef %13, ptr noundef nonnull %5, ptr noundef nonnull %32) #5
  br label %273

273:                                              ; preds = %272, %271
  %274 = load i32, ptr %5, align 4, !tbaa !5
  store i32 %274, ptr %27, align 4, !tbaa !5
  %.not560617 = icmp slt i32 %274, 1
  br i1 %.not560617, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %273, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 1, %273 ]
  %275 = getelementptr inbounds double, ptr %52, i64 %indvars.iv
  %276 = getelementptr inbounds double, ptr %53, i64 %indvars.iv
  %277 = getelementptr inbounds double, ptr %54, i64 %indvars.iv
  %278 = call i32 (ptr, ptr, ptr, ...) %3(ptr noundef nonnull %275, ptr noundef nonnull %276, ptr noundef nonnull %277) #5
  %279 = getelementptr inbounds i32, ptr %59, i64 %indvars.iv
  store i32 %278, ptr %279, align 4, !tbaa !5
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %280 = load i32, ptr %27, align 4, !tbaa !5
  %281 = sext i32 %280 to i64
  %.not560.not = icmp slt i64 %indvars.iv, %281
  br i1 %.not560.not, label %.lr.ph, label %._crit_edge, !llvm.loop !11

._crit_edge:                                      ; preds = %.lr.ph, %273
  %282 = load i32, ptr %21, align 4, !tbaa !5
  %reass.sub641 = sub i32 %282, %198
  %283 = add i32 %reass.sub641, 1
  store i32 %283, ptr %27, align 4, !tbaa !5
  call void @dtgsen_(ptr noundef nonnull %29, ptr noundef nonnull %34, ptr noundef nonnull %35, ptr noundef %24, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef nonnull %15, ptr noundef %16, ptr noundef nonnull %17, ptr noundef nonnull %10, ptr noundef nonnull %37, ptr noundef nonnull %38, ptr noundef nonnull %43, ptr noundef nonnull %202, ptr noundef nonnull %27, ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef nonnull %32) #5
  %284 = load i32, ptr %29, align 4
  %285 = icmp sgt i32 %284, 0
  br i1 %285, label %286, label %293

286:                                              ; preds = %._crit_edge
  store i32 %.1, ptr %27, align 4, !tbaa !5
  %287 = load i32, ptr %10, align 4, !tbaa !5
  %288 = shl i32 %287, 1
  %289 = load i32, ptr %5, align 4, !tbaa !5
  %290 = sub nsw i32 %289, %287
  %291 = mul nsw i32 %290, %288
  store i32 %291, ptr %28, align 4, !tbaa !5
  %292 = call i32 @llvm.smax.i32(i32 %.1, i32 %291)
  br label %293

293:                                              ; preds = %286, %._crit_edge
  %.3 = phi i32 [ %292, %286 ], [ %.1, %._crit_edge ]
  %294 = load i32, ptr %32, align 4, !tbaa !5
  %295 = icmp eq i32 %294, -22
  br i1 %295, label %.sink.split, label %296

296:                                              ; preds = %293
  switch i32 %284, label %303 [
    i32 4, label %297
    i32 1, label %297
    i32 2, label %301
  ]

297:                                              ; preds = %296, %296
  %298 = load double, ptr %37, align 8, !tbaa !9
  store double %298, ptr %18, align 8, !tbaa !9
  %299 = load double, ptr %38, align 8, !tbaa !9
  %300 = getelementptr inbounds i8, ptr %18, i64 8
  store double %299, ptr %300, align 8, !tbaa !9
  switch i32 %284, label %303 [
    i32 4, label %301
    i32 2, label %301
  ]

301:                                              ; preds = %296, %297, %297
  %302 = load <2 x double>, ptr %43, align 16, !tbaa !9
  store <2 x double> %302, ptr %19, align 8, !tbaa !9
  br label %303

303:                                              ; preds = %296, %297, %301
  %304 = icmp eq i32 %294, 1
  br i1 %304, label %305, label %308

305:                                              ; preds = %303
  %306 = load i32, ptr %5, align 4, !tbaa !5
  %307 = add nsw i32 %306, 3
  br label %.sink.split

.sink.split:                                      ; preds = %293, %305
  %.sink658 = phi i32 [ %307, %305 ], [ -22, %293 ]
  store i32 %.sink658, ptr %25, align 4, !tbaa !5
  br label %308

308:                                              ; preds = %.sink.split, %303, %268
  %.4 = phi i32 [ %.3, %303 ], [ %.1, %268 ], [ %.3, %.sink.split ]
  %309 = load i32, ptr %34, align 4, !tbaa !5
  %.not562 = icmp eq i32 %309, 0
  br i1 %.not562, label %311, label %310

310:                                              ; preds = %308
  call void @dggbak_(ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.13, ptr noundef nonnull %5, ptr noundef nonnull %45, ptr noundef nonnull %44, ptr noundef nonnull %20, ptr noundef nonnull %200, ptr noundef nonnull %5, ptr noundef %14, ptr noundef nonnull %15, ptr noundef nonnull %32) #5
  br label %311

311:                                              ; preds = %310, %308
  %312 = load i32, ptr %35, align 4, !tbaa !5
  %.not563 = icmp eq i32 %312, 0
  br i1 %.not563, label %314, label %313

313:                                              ; preds = %311
  call void @dggbak_(ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.16, ptr noundef nonnull %5, ptr noundef nonnull %45, ptr noundef nonnull %44, ptr noundef nonnull %20, ptr noundef nonnull %200, ptr noundef nonnull %5, ptr noundef %16, ptr noundef nonnull %17, ptr noundef nonnull %32) #5
  br label %314

314:                                              ; preds = %313, %311
  br i1 %.not552592, label %.loopexit616, label %315

315:                                              ; preds = %314
  %316 = load i32, ptr %5, align 4, !tbaa !5
  store i32 %316, ptr %27, align 4, !tbaa !5
  %.not564619 = icmp slt i32 %316, 1
  br i1 %.not564619, label %.loopexit616, label %.lr.ph622

.lr.ph622:                                        ; preds = %315
  %317 = load double, ptr %40, align 8
  %318 = load double, ptr %41, align 8
  %319 = load double, ptr %30, align 8
  %320 = load double, ptr %39, align 8
  %321 = insertelement <2 x double> poison, double %319, i64 0
  %322 = insertelement <2 x double> %321, double %318, i64 1
  %323 = insertelement <2 x double> poison, double %318, i64 0
  %324 = insertelement <2 x double> %323, double %319, i64 1
  %325 = fdiv <2 x double> %322, %324
  %326 = add nuw i32 %316, 1
  %wide.trip.count = zext i32 %326 to i64
  %327 = insertelement <2 x double> poison, double %320, i64 0
  %328 = insertelement <2 x double> poison, double %317, i64 1
  br label %329

329:                                              ; preds = %.lr.ph622, %372
  %indvars.iv643 = phi i64 [ 1, %.lr.ph622 ], [ %indvars.iv.next644, %372 ]
  %indvars645 = trunc i64 %indvars.iv643 to i32
  %330 = getelementptr inbounds double, ptr %53, i64 %indvars.iv643
  %331 = load double, ptr %330, align 8, !tbaa !9
  %332 = fcmp une double %331, 0.000000e+00
  br i1 %332, label %333, label %372

333:                                              ; preds = %329
  %334 = getelementptr inbounds double, ptr %52, i64 %indvars.iv643
  %335 = load double, ptr %334, align 8, !tbaa !9
  %336 = insertelement <2 x double> %327, double %335, i64 1
  %337 = insertelement <2 x double> %328, double %335, i64 0
  %338 = fdiv <2 x double> %336, %337
  %339 = fcmp ogt <2 x double> %338, %325
  %340 = extractelement <2 x i1> %339, i64 0
  %341 = extractelement <2 x i1> %339, i64 1
  %or.cond = select i1 %341, i1 true, i1 %340
  br i1 %or.cond, label %342, label %346

342:                                              ; preds = %333
  %343 = mul i32 %224, %indvars645
  %344 = sext i32 %343 to i64
  %345 = getelementptr inbounds double, ptr %48, i64 %344
  br label %.sink.split659

346:                                              ; preds = %333
  %347 = insertelement <2 x double> %327, double %331, i64 1
  %348 = insertelement <2 x double> %328, double %331, i64 0
  %349 = fdiv <2 x double> %347, %348
  %350 = fcmp ogt <2 x double> %349, %325
  %shift = shufflevector <2 x i1> %350, <2 x i1> poison, <2 x i32> <i32 1, i32 poison>
  %351 = or <2 x i1> %shift, %350
  %or.cond577 = extractelement <2 x i1> %351, i64 0
  br i1 %or.cond577, label %352, label %372

352:                                              ; preds = %346
  %353 = add nuw nsw i32 %indvars645, 1
  %354 = mul nsw i32 %353, %46
  %355 = sext i32 %354 to i64
  %356 = getelementptr double, ptr %48, i64 %indvars.iv643
  %357 = getelementptr double, ptr %356, i64 %355
  br label %.sink.split659

.sink.split659:                                   ; preds = %342, %352
  %.sink679 = phi ptr [ %357, %352 ], [ %345, %342 ]
  %.sink678 = phi double [ %331, %352 ], [ %335, %342 ]
  %358 = load double, ptr %.sink679, align 8, !tbaa !9
  %359 = fdiv double %358, %.sink678
  %360 = fcmp oge double %359, 0.000000e+00
  %361 = fneg double %359
  %362 = select i1 %360, double %359, double %361
  store double %362, ptr %20, align 8, !tbaa !9
  %363 = getelementptr inbounds double, ptr %54, i64 %indvars.iv643
  %364 = load double, ptr %363, align 8, !tbaa !9
  %365 = fmul double %364, %362
  store double %365, ptr %363, align 8, !tbaa !9
  %366 = load double, ptr %20, align 8, !tbaa !9
  %367 = load double, ptr %334, align 8, !tbaa !9
  %368 = fmul double %366, %367
  store double %368, ptr %334, align 8, !tbaa !9
  %369 = load double, ptr %20, align 8, !tbaa !9
  %370 = load double, ptr %330, align 8, !tbaa !9
  %371 = fmul double %369, %370
  store double %371, ptr %330, align 8, !tbaa !9
  br label %372

372:                                              ; preds = %.sink.split659, %346, %329
  %indvars.iv.next644 = add nuw nsw i64 %indvars.iv643, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next644, %wide.trip.count
  br i1 %exitcond.not, label %.loopexit616, label %329, !llvm.loop !13

.loopexit616:                                     ; preds = %372, %315, %314
  br i1 %.not554597, label %.loopexit615, label %373

373:                                              ; preds = %.loopexit616
  %374 = load i32, ptr %5, align 4, !tbaa !5
  store i32 %374, ptr %27, align 4, !tbaa !5
  %.not565623 = icmp slt i32 %374, 1
  br i1 %.not565623, label %.loopexit615, label %.lr.ph626

.lr.ph626:                                        ; preds = %373
  %375 = load double, ptr %40, align 8
  %376 = load double, ptr %42, align 8
  %377 = load double, ptr %31, align 8
  %378 = load double, ptr %39, align 8
  %379 = insertelement <2 x double> poison, double %376, i64 0
  %380 = insertelement <2 x double> %379, double %377, i64 1
  %381 = insertelement <2 x double> poison, double %377, i64 0
  %382 = insertelement <2 x double> %381, double %376, i64 1
  %383 = fdiv <2 x double> %380, %382
  %384 = add nuw i32 %374, 1
  %wide.trip.count649 = zext i32 %384 to i64
  %385 = insertelement <2 x double> poison, double %375, i64 0
  br label %386

386:                                              ; preds = %.lr.ph626, %419
  %indvars.iv646 = phi i64 [ 1, %.lr.ph626 ], [ %indvars.iv.next647, %419 ]
  %387 = getelementptr inbounds double, ptr %53, i64 %indvars.iv646
  %388 = load double, ptr %387, align 8, !tbaa !9
  %389 = fcmp une double %388, 0.000000e+00
  br i1 %389, label %390, label %419

390:                                              ; preds = %386
  %391 = getelementptr inbounds double, ptr %54, i64 %indvars.iv646
  %392 = load double, ptr %391, align 8, !tbaa !9
  %393 = insertelement <2 x double> poison, double %392, i64 0
  %394 = insertelement <2 x double> %393, double %378, i64 1
  %395 = insertelement <2 x double> %385, double %392, i64 1
  %396 = fdiv <2 x double> %394, %395
  %397 = fcmp ogt <2 x double> %396, %383
  %398 = extractelement <2 x i1> %397, i64 0
  %399 = extractelement <2 x i1> %397, i64 1
  %or.cond636 = select i1 %398, i1 true, i1 %399
  br i1 %or.cond636, label %400, label %419

400:                                              ; preds = %390
  %401 = trunc nuw nsw i64 %indvars.iv646 to i32
  %402 = mul i32 %212, %401
  %403 = sext i32 %402 to i64
  %404 = getelementptr inbounds double, ptr %51, i64 %403
  %405 = load double, ptr %404, align 8, !tbaa !9
  %406 = fdiv double %405, %392
  %407 = fcmp oge double %406, 0.000000e+00
  %408 = fneg double %406
  %409 = select i1 %407, double %406, double %408
  store double %409, ptr %20, align 8, !tbaa !9
  %410 = load double, ptr %391, align 8, !tbaa !9
  %411 = fmul double %410, %409
  store double %411, ptr %391, align 8, !tbaa !9
  %412 = load double, ptr %20, align 8, !tbaa !9
  %413 = getelementptr inbounds double, ptr %52, i64 %indvars.iv646
  %414 = load double, ptr %413, align 8, !tbaa !9
  %415 = fmul double %412, %414
  store double %415, ptr %413, align 8, !tbaa !9
  %416 = load double, ptr %20, align 8, !tbaa !9
  %417 = load double, ptr %387, align 8, !tbaa !9
  %418 = fmul double %416, %417
  store double %418, ptr %387, align 8, !tbaa !9
  br label %419

419:                                              ; preds = %390, %386, %400
  %indvars.iv.next647 = add nuw nsw i64 %indvars.iv646, 1
  %exitcond650.not = icmp eq i64 %indvars.iv.next647, %wide.trip.count649
  br i1 %exitcond650.not, label %.loopexit615, label %386, !llvm.loop !14

.loopexit615:                                     ; preds = %419, %373, %.loopexit616
  br i1 %.not552592, label %421, label %420

420:                                              ; preds = %.loopexit615
  call void @dlascl_(ptr noundef nonnull @.str.17, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %41, ptr noundef nonnull %30, ptr noundef nonnull %5, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull %32) #5
  call void @dlascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %41, ptr noundef nonnull %30, ptr noundef nonnull %5, ptr noundef nonnull @c__1, ptr noundef %11, ptr noundef nonnull %5, ptr noundef nonnull %32) #5
  call void @dlascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %41, ptr noundef nonnull %30, ptr noundef nonnull %5, ptr noundef nonnull @c__1, ptr noundef %12, ptr noundef nonnull %5, ptr noundef nonnull %32) #5
  br label %421

421:                                              ; preds = %420, %.loopexit615
  br i1 %.not554597, label %423, label %422

422:                                              ; preds = %421
  call void @dlascl_(ptr noundef nonnull @.str.18, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %42, ptr noundef nonnull %31, ptr noundef nonnull %5, ptr noundef nonnull %5, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull %32) #5
  call void @dlascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %42, ptr noundef nonnull %31, ptr noundef nonnull %5, ptr noundef nonnull @c__1, ptr noundef %13, ptr noundef nonnull %5, ptr noundef nonnull %32) #5
  br label %423

423:                                              ; preds = %422, %421
  br i1 %.not543, label %.loopexit, label %424

424:                                              ; preds = %423
  store i32 0, ptr %10, align 4, !tbaa !5
  %425 = load i32, ptr %5, align 4, !tbaa !5
  store i32 %425, ptr %27, align 4, !tbaa !5
  %.not566627 = icmp slt i32 %425, 1
  br i1 %.not566627, label %.loopexit, label %.lr.ph633

.lr.ph633:                                        ; preds = %424, %.thread598
  %indvars.iv651 = phi i64 [ %indvars.iv.next652, %.thread598 ], [ 1, %424 ]
  %.0497631 = phi i32 [ %.0508, %.thread598 ], [ 1, %424 ]
  %.0505630 = phi i32 [ %.1506, %.thread598 ], [ 0, %424 ]
  %.0507629 = phi i32 [ %.1498, %.thread598 ], [ 1, %424 ]
  %426 = getelementptr inbounds double, ptr %52, i64 %indvars.iv651
  %427 = getelementptr inbounds double, ptr %53, i64 %indvars.iv651
  %428 = getelementptr inbounds double, ptr %54, i64 %indvars.iv651
  %429 = call i32 (ptr, ptr, ptr, ...) %3(ptr noundef nonnull %426, ptr noundef nonnull %427, ptr noundef nonnull %428) #5
  %430 = load double, ptr %427, align 8, !tbaa !9
  %431 = fcmp oeq double %430, 0.000000e+00
  br i1 %431, label %432, label %436

432:                                              ; preds = %.lr.ph633
  %.not568 = icmp eq i32 %429, 0
  br i1 %.not568, label %.thread598, label %433

433:                                              ; preds = %432
  %434 = load i32, ptr %10, align 4, !tbaa !5
  %435 = add nsw i32 %434, 1
  store i32 %435, ptr %10, align 4, !tbaa !5
  %.not611 = icmp eq i32 %.0497631, 0
  br i1 %.not611, label %.thread598.sink.split, label %.thread598

436:                                              ; preds = %.lr.ph633
  %437 = icmp eq i32 %.0505630, 1
  br i1 %437, label %438, label %.thread598

438:                                              ; preds = %436
  %439 = icmp ne i32 %429, 0
  %440 = icmp ne i32 %.0497631, 0
  %441 = select i1 %439, i1 true, i1 %440
  br i1 %441, label %442, label %.thread598

442:                                              ; preds = %438
  %443 = load i32, ptr %10, align 4, !tbaa !5
  %444 = add nsw i32 %443, 2
  store i32 %444, ptr %10, align 4, !tbaa !5
  %445 = icmp eq i32 %.0507629, 0
  br i1 %445, label %.thread598.sink.split, label %.thread598

.thread598.sink.split:                            ; preds = %442, %433
  %.0508.ph = phi i32 [ %429, %433 ], [ 1, %442 ]
  %.1506.ph = phi i32 [ 0, %433 ], [ -1, %442 ]
  %.1498.ph = phi i32 [ 0, %433 ], [ 1, %442 ]
  %446 = load i32, ptr %5, align 4, !tbaa !5
  %447 = add nsw i32 %446, 2
  store i32 %447, ptr %25, align 4, !tbaa !5
  br label %.thread598

.thread598:                                       ; preds = %.thread598.sink.split, %438, %432, %436, %442, %433
  %.0508 = phi i32 [ %429, %433 ], [ 1, %442 ], [ %429, %436 ], [ 0, %432 ], [ 0, %438 ], [ %.0508.ph, %.thread598.sink.split ]
  %.1506 = phi i32 [ 0, %433 ], [ -1, %442 ], [ 1, %436 ], [ 0, %432 ], [ -1, %438 ], [ %.1506.ph, %.thread598.sink.split ]
  %.1498 = phi i32 [ %.0497631, %433 ], [ 1, %442 ], [ %.0497631, %436 ], [ %.0497631, %432 ], [ 0, %438 ], [ %.1498.ph, %.thread598.sink.split ]
  %indvars.iv.next652 = add nuw nsw i64 %indvars.iv651, 1
  %448 = load i32, ptr %27, align 4, !tbaa !5
  %449 = sext i32 %448 to i64
  %.not566.not = icmp slt i64 %indvars.iv651, %449
  br i1 %.not566.not, label %.lr.ph633, label %.loopexit, !llvm.loop !15

.loopexit.sink.split:                             ; preds = %259, %264, %266
  %.sink682 = phi i32 [ %267, %266 ], [ %265, %264 ], [ %258, %259 ]
  store i32 %.sink682, ptr %25, align 4, !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %.thread598, %.loopexit.sink.split, %424, %423
  %.5 = phi i32 [ %.4, %423 ], [ %.4, %424 ], [ %.1, %.loopexit.sink.split ], [ %.4, %.thread598 ]
  %450 = sitofp i32 %.5 to double
  store double %450, ptr %20, align 8, !tbaa !9
  store i32 %.0499, ptr %22, align 4, !tbaa !5
  br label %451

451:                                              ; preds = %169, %.loopexit, %173, %.thread584
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %45) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %44) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %43) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %36) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %35) #5
  call void @llvm.lifetime.end.p0(i64 4, 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 8, ptr nonnull %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #5
  ret void
}

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

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

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

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

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

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

declare void @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 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,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass,VectorCombinePass