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

; 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
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i32, align 4
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@c__0 = 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 [7 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 [2 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [5 x i8], align 1
@c_b59 = external hidden global double, align 8
@c_b60 = external hidden global double, align 8
@.str.17 = external hidden unnamed_addr constant [2 x i8], align 1

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

176:                                              ; preds = %29
  store i32 1, ptr %98, align 4, !tbaa !9
  store i32 0, ptr %79, align 4, !tbaa !9
  br label %184

177:                                              ; preds = %29
  %178 = load ptr, ptr %31, align 8, !tbaa !5
  %179 = call i32 @lsame_(ptr noundef %178, ptr noundef @.str.1)
  %180 = icmp ne i32 %179, 0
  br i1 %180, label %181, label %182

181:                                              ; preds = %177
  store i32 2, ptr %98, align 4, !tbaa !9
  store i32 1, ptr %79, align 4, !tbaa !9
  br label %183

182:                                              ; preds = %177
  store i32 -1, ptr %98, align 4, !tbaa !9
  store i32 0, ptr %79, align 4, !tbaa !9
  br label %183

183:                                              ; preds = %182, %181
  br label %184

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

188:                                              ; preds = %184
  store i32 1, ptr %99, align 4, !tbaa !9
  store i32 0, ptr %80, align 4, !tbaa !9
  br label %196

189:                                              ; preds = %184
  %190 = load ptr, ptr %32, align 8, !tbaa !5
  %191 = call i32 @lsame_(ptr noundef %190, ptr noundef @.str.1)
  %192 = icmp ne i32 %191, 0
  br i1 %192, label %193, label %194

193:                                              ; preds = %189
  store i32 2, ptr %99, align 4, !tbaa !9
  store i32 1, ptr %80, align 4, !tbaa !9
  br label %195

194:                                              ; preds = %189
  store i32 -1, ptr %99, align 4, !tbaa !9
  store i32 0, ptr %80, align 4, !tbaa !9
  br label %195

195:                                              ; preds = %194, %193
  br label %196

196:                                              ; preds = %195, %188
  %197 = load i32, ptr %79, align 4, !tbaa !9
  %198 = icmp ne i32 %197, 0
  br i1 %198, label %202, label %199

199:                                              ; preds = %196
  %200 = load i32, ptr %80, align 4, !tbaa !9
  %201 = icmp ne i32 %200, 0
  br label %202

202:                                              ; preds = %199, %196
  %203 = phi i1 [ true, %196 ], [ %201, %199 ]
  %204 = zext i1 %203 to i32
  store i32 %204, ptr %111, align 4, !tbaa !9
  %205 = load ptr, ptr %30, align 8, !tbaa !5
  %206 = call i32 @lsame_(ptr noundef %205, ptr noundef @.str)
  %207 = icmp ne i32 %206, 0
  br i1 %207, label %212, label %208

208:                                              ; preds = %202
  %209 = load ptr, ptr %30, align 8, !tbaa !5
  %210 = call i32 @lsame_(ptr noundef %209, ptr noundef @.str.2)
  %211 = icmp ne i32 %210, 0
  br label %212

212:                                              ; preds = %208, %202
  %213 = phi i1 [ true, %202 ], [ %211, %208 ]
  %214 = zext i1 %213 to i32
  store i32 %214, ptr %87, align 4, !tbaa !9
  %215 = load ptr, ptr %33, align 8, !tbaa !5
  %216 = call i32 @lsame_(ptr noundef %215, ptr noundef @.str)
  store i32 %216, ptr %106, align 4, !tbaa !9
  %217 = load ptr, ptr %33, align 8, !tbaa !5
  %218 = call i32 @lsame_(ptr noundef %217, ptr noundef @.str.3)
  store i32 %218, ptr %102, align 4, !tbaa !9
  %219 = load ptr, ptr %33, align 8, !tbaa !5
  %220 = call i32 @lsame_(ptr noundef %219, ptr noundef @.str.1)
  store i32 %220, ptr %109, align 4, !tbaa !9
  %221 = load ptr, ptr %33, align 8, !tbaa !5
  %222 = call i32 @lsame_(ptr noundef %221, ptr noundef @.str.4)
  store i32 %222, ptr %100, align 4, !tbaa !9
  %223 = load ptr, ptr %58, align 8, !tbaa !5
  store i32 0, ptr %223, align 4, !tbaa !9
  %224 = load ptr, ptr %55, align 8, !tbaa !5
  %225 = load i32, ptr %224, align 4, !tbaa !9
  %226 = icmp eq i32 %225, -1
  %227 = zext i1 %226 to i32
  store i32 %227, ptr %108, align 4, !tbaa !9
  %228 = load ptr, ptr %30, align 8, !tbaa !5
  %229 = call i32 @lsame_(ptr noundef %228, ptr noundef @.str)
  %230 = icmp ne i32 %229, 0
  br i1 %230, label %245, label %231

231:                                              ; preds = %212
  %232 = load ptr, ptr %30, align 8, !tbaa !5
  %233 = call i32 @lsame_(ptr noundef %232, ptr noundef @.str.5)
  %234 = icmp ne i32 %233, 0
  br i1 %234, label %245, label %235

235:                                              ; preds = %231
  %236 = load ptr, ptr %30, align 8, !tbaa !5
  %237 = call i32 @lsame_(ptr noundef %236, ptr noundef @.str.2)
  %238 = icmp ne i32 %237, 0
  br i1 %238, label %245, label %239

239:                                              ; preds = %235
  %240 = load ptr, ptr %30, align 8, !tbaa !5
  %241 = call i32 @lsame_(ptr noundef %240, ptr noundef @.str.4)
  %242 = icmp ne i32 %241, 0
  br i1 %242, label %245, label %243

243:                                              ; preds = %239
  %244 = load ptr, ptr %58, align 8, !tbaa !5
  store i32 -1, ptr %244, align 4, !tbaa !9
  br label %343

245:                                              ; preds = %239, %235, %231, %212
  %246 = load i32, ptr %98, align 4, !tbaa !9
  %247 = icmp sle i32 %246, 0
  br i1 %247, label %248, label %250

248:                                              ; preds = %245
  %249 = load ptr, ptr %58, align 8, !tbaa !5
  store i32 -2, ptr %249, align 4, !tbaa !9
  br label %342

250:                                              ; preds = %245
  %251 = load i32, ptr %99, align 4, !tbaa !9
  %252 = icmp sle i32 %251, 0
  br i1 %252, label %253, label %255

253:                                              ; preds = %250
  %254 = load ptr, ptr %58, align 8, !tbaa !5
  store i32 -3, ptr %254, align 4, !tbaa !9
  br label %341

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

258:                                              ; preds = %255
  %259 = load i32, ptr %102, align 4, !tbaa !9
  %260 = icmp ne i32 %259, 0
  br i1 %260, label %269, label %261

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

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

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

269:                                              ; preds = %264, %261, %258, %255
  %270 = load ptr, ptr %34, align 8, !tbaa !5
  %271 = load i32, ptr %270, align 4, !tbaa !9
  %272 = icmp slt i32 %271, 0
  br i1 %272, label %273, label %275

273:                                              ; preds = %269
  %274 = load ptr, ptr %58, align 8, !tbaa !5
  store i32 -5, ptr %274, align 4, !tbaa !9
  br label %339

275:                                              ; preds = %269
  %276 = load ptr, ptr %36, align 8, !tbaa !5
  %277 = load i32, ptr %276, align 4, !tbaa !9
  %278 = load ptr, ptr %34, align 8, !tbaa !5
  %279 = load i32, ptr %278, align 4, !tbaa !9
  %280 = icmp sge i32 1, %279
  br i1 %280, label %281, label %282

281:                                              ; preds = %275
  br label %285

282:                                              ; preds = %275
  %283 = load ptr, ptr %34, align 8, !tbaa !5
  %284 = load i32, ptr %283, align 4, !tbaa !9
  br label %285

285:                                              ; preds = %282, %281
  %286 = phi i32 [ 1, %281 ], [ %284, %282 ]
  %287 = icmp slt i32 %277, %286
  br i1 %287, label %288, label %290

288:                                              ; preds = %285
  %289 = load ptr, ptr %58, align 8, !tbaa !5
  store i32 -7, ptr %289, align 4, !tbaa !9
  br label %338

290:                                              ; preds = %285
  %291 = load ptr, ptr %38, align 8, !tbaa !5
  %292 = load i32, ptr %291, align 4, !tbaa !9
  %293 = load ptr, ptr %34, align 8, !tbaa !5
  %294 = load i32, ptr %293, align 4, !tbaa !9
  %295 = icmp sge i32 1, %294
  br i1 %295, label %296, label %297

296:                                              ; preds = %290
  br label %300

297:                                              ; preds = %290
  %298 = load ptr, ptr %34, align 8, !tbaa !5
  %299 = load i32, ptr %298, align 4, !tbaa !9
  br label %300

300:                                              ; preds = %297, %296
  %301 = phi i32 [ 1, %296 ], [ %299, %297 ]
  %302 = icmp slt i32 %292, %301
  br i1 %302, label %303, label %305

303:                                              ; preds = %300
  %304 = load ptr, ptr %58, align 8, !tbaa !5
  store i32 -9, ptr %304, align 4, !tbaa !9
  br label %337

305:                                              ; preds = %300
  %306 = load ptr, ptr %43, align 8, !tbaa !5
  %307 = load i32, ptr %306, align 4, !tbaa !9
  %308 = icmp slt i32 %307, 1
  br i1 %308, label %318, label %309

309:                                              ; preds = %305
  %310 = load i32, ptr %79, align 4, !tbaa !9
  %311 = icmp ne i32 %310, 0
  br i1 %311, label %312, label %320

312:                                              ; preds = %309
  %313 = load ptr, ptr %43, align 8, !tbaa !5
  %314 = load i32, ptr %313, align 4, !tbaa !9
  %315 = load ptr, ptr %34, align 8, !tbaa !5
  %316 = load i32, ptr %315, align 4, !tbaa !9
  %317 = icmp slt i32 %314, %316
  br i1 %317, label %318, label %320

318:                                              ; preds = %312, %305
  %319 = load ptr, ptr %58, align 8, !tbaa !5
  store i32 -14, ptr %319, align 4, !tbaa !9
  br label %336

320:                                              ; preds = %312, %309
  %321 = load ptr, ptr %45, align 8, !tbaa !5
  %322 = load i32, ptr %321, align 4, !tbaa !9
  %323 = icmp slt i32 %322, 1
  br i1 %323, label %333, label %324

324:                                              ; preds = %320
  %325 = load i32, ptr %80, align 4, !tbaa !9
  %326 = icmp ne i32 %325, 0
  br i1 %326, label %327, label %335

327:                                              ; preds = %324
  %328 = load ptr, ptr %45, align 8, !tbaa !5
  %329 = load i32, ptr %328, align 4, !tbaa !9
  %330 = load ptr, ptr %34, align 8, !tbaa !5
  %331 = load i32, ptr %330, align 4, !tbaa !9
  %332 = icmp slt i32 %329, %331
  br i1 %332, label %333, label %335

333:                                              ; preds = %327, %320
  %334 = load ptr, ptr %58, align 8, !tbaa !5
  store i32 -16, ptr %334, align 4, !tbaa !9
  br label %335

335:                                              ; preds = %333, %327, %324
  br label %336

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

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

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

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

340:                                              ; preds = %339, %267
  br label %341

341:                                              ; preds = %340, %253
  br label %342

342:                                              ; preds = %341, %248
  br label %343

343:                                              ; preds = %342, %243
  %344 = load ptr, ptr %58, align 8, !tbaa !5
  %345 = load i32, ptr %344, align 4, !tbaa !9
  %346 = icmp eq i32 %345, 0
  br i1 %346, label %347, label %479

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

351:                                              ; preds = %347
  store i32 1, ptr %104, align 4, !tbaa !9
  store i32 1, ptr %105, align 4, !tbaa !9
  br label %464

352:                                              ; preds = %347
  %353 = load i32, ptr %87, align 4, !tbaa !9
  %354 = icmp ne i32 %353, 0
  br i1 %354, label %355, label %362

355:                                              ; preds = %352
  %356 = load i32, ptr %111, align 4, !tbaa !9
  %357 = icmp ne i32 %356, 0
  br i1 %357, label %362, label %358

358:                                              ; preds = %355
  %359 = load ptr, ptr %34, align 8, !tbaa !5
  %360 = load i32, ptr %359, align 4, !tbaa !9
  %361 = shl i32 %360, 1
  store i32 %361, ptr %104, align 4, !tbaa !9
  br label %366

362:                                              ; preds = %355, %352
  %363 = load ptr, ptr %34, align 8, !tbaa !5
  %364 = load i32, ptr %363, align 4, !tbaa !9
  %365 = mul nsw i32 %364, 6
  store i32 %365, ptr %104, align 4, !tbaa !9
  br label %366

366:                                              ; preds = %362, %358
  %367 = load i32, ptr %102, align 4, !tbaa !9
  %368 = icmp ne i32 %367, 0
  br i1 %368, label %372, label %369

369:                                              ; preds = %366
  %370 = load i32, ptr %100, align 4, !tbaa !9
  %371 = icmp ne i32 %370, 0
  br i1 %371, label %372, label %376

372:                                              ; preds = %369, %366
  %373 = load ptr, ptr %34, align 8, !tbaa !5
  %374 = load i32, ptr %373, align 4, !tbaa !9
  %375 = mul nsw i32 %374, 10
  store i32 %375, ptr %104, align 4, !tbaa !9
  br label %376

376:                                              ; preds = %372, %369
  %377 = load i32, ptr %109, align 4, !tbaa !9
  %378 = icmp ne i32 %377, 0
  br i1 %378, label %382, label %379

379:                                              ; preds = %376
  %380 = load i32, ptr %100, align 4, !tbaa !9
  %381 = icmp ne i32 %380, 0
  br i1 %381, label %382, label %401

382:                                              ; preds = %379, %376
  %383 = load i32, ptr %104, align 4, !tbaa !9
  store i32 %383, ptr %67, align 4, !tbaa !9
  %384 = load ptr, ptr %34, align 8, !tbaa !5
  %385 = load i32, ptr %384, align 4, !tbaa !9
  %386 = shl i32 %385, 1
  %387 = load ptr, ptr %34, align 8, !tbaa !5
  %388 = load i32, ptr %387, align 4, !tbaa !9
  %389 = add nsw i32 %388, 4
  %390 = mul nsw i32 %386, %389
  %391 = add nsw i32 %390, 16
  store i32 %391, ptr %68, align 4, !tbaa !9
  %392 = load i32, ptr %67, align 4, !tbaa !9
  %393 = load i32, ptr %68, align 4, !tbaa !9
  %394 = icmp sge i32 %392, %393
  br i1 %394, label %395, label %397

395:                                              ; preds = %382
  %396 = load i32, ptr %67, align 4, !tbaa !9
  br label %399

397:                                              ; preds = %382
  %398 = load i32, ptr %68, align 4, !tbaa !9
  br label %399

399:                                              ; preds = %397, %395
  %400 = phi i32 [ %396, %395 ], [ %398, %397 ]
  store i32 %400, ptr %104, align 4, !tbaa !9
  br label %401

401:                                              ; preds = %399, %379
  %402 = load i32, ptr %104, align 4, !tbaa !9
  store i32 %402, ptr %105, align 4, !tbaa !9
  %403 = load i32, ptr %105, align 4, !tbaa !9
  store i32 %403, ptr %67, align 4, !tbaa !9
  %404 = load ptr, ptr %34, align 8, !tbaa !5
  %405 = load i32, ptr %404, align 4, !tbaa !9
  %406 = load ptr, ptr %34, align 8, !tbaa !5
  %407 = load i32, ptr %406, align 4, !tbaa !9
  %408 = load ptr, ptr %34, align 8, !tbaa !5
  %409 = load ptr, ptr %34, align 8, !tbaa !5
  %410 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %408, ptr noundef @c__1, ptr noundef %409, ptr noundef @c__0, i32 noundef 6, i32 noundef 1)
  %411 = mul nsw i32 %407, %410
  %412 = add nsw i32 %405, %411
  store i32 %412, ptr %68, align 4, !tbaa !9
  %413 = load i32, ptr %67, align 4, !tbaa !9
  %414 = load i32, ptr %68, align 4, !tbaa !9
  %415 = icmp sge i32 %413, %414
  br i1 %415, label %416, label %418

416:                                              ; preds = %401
  %417 = load i32, ptr %67, align 4, !tbaa !9
  br label %420

418:                                              ; preds = %401
  %419 = load i32, ptr %68, align 4, !tbaa !9
  br label %420

420:                                              ; preds = %418, %416
  %421 = phi i32 [ %417, %416 ], [ %419, %418 ]
  store i32 %421, ptr %105, align 4, !tbaa !9
  %422 = load i32, ptr %105, align 4, !tbaa !9
  store i32 %422, ptr %67, align 4, !tbaa !9
  %423 = load ptr, ptr %34, align 8, !tbaa !5
  %424 = load i32, ptr %423, align 4, !tbaa !9
  %425 = load ptr, ptr %34, align 8, !tbaa !5
  %426 = load i32, ptr %425, align 4, !tbaa !9
  %427 = load ptr, ptr %34, align 8, !tbaa !5
  %428 = load ptr, ptr %34, align 8, !tbaa !5
  %429 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.8, ptr noundef @.str.7, ptr noundef %427, ptr noundef @c__1, ptr noundef %428, ptr noundef @c__0, i32 noundef 6, i32 noundef 1)
  %430 = mul nsw i32 %426, %429
  %431 = add nsw i32 %424, %430
  store i32 %431, ptr %68, align 4, !tbaa !9
  %432 = load i32, ptr %67, align 4, !tbaa !9
  %433 = load i32, ptr %68, align 4, !tbaa !9
  %434 = icmp sge i32 %432, %433
  br i1 %434, label %435, label %437

435:                                              ; preds = %420
  %436 = load i32, ptr %67, align 4, !tbaa !9
  br label %439

437:                                              ; preds = %420
  %438 = load i32, ptr %68, align 4, !tbaa !9
  br label %439

439:                                              ; preds = %437, %435
  %440 = phi i32 [ %436, %435 ], [ %438, %437 ]
  store i32 %440, ptr %105, align 4, !tbaa !9
  %441 = load i32, ptr %79, align 4, !tbaa !9
  %442 = icmp ne i32 %441, 0
  br i1 %442, label %443, label %463

443:                                              ; preds = %439
  %444 = load i32, ptr %105, align 4, !tbaa !9
  store i32 %444, ptr %67, align 4, !tbaa !9
  %445 = load ptr, ptr %34, align 8, !tbaa !5
  %446 = load i32, ptr %445, align 4, !tbaa !9
  %447 = load ptr, ptr %34, align 8, !tbaa !5
  %448 = load i32, ptr %447, align 4, !tbaa !9
  %449 = load ptr, ptr %34, align 8, !tbaa !5
  %450 = load ptr, ptr %34, align 8, !tbaa !5
  %451 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.9, ptr noundef @.str.7, ptr noundef %449, ptr noundef @c__1, ptr noundef %450, ptr noundef @c__0, i32 noundef 6, i32 noundef 1)
  %452 = mul nsw i32 %448, %451
  %453 = add nsw i32 %446, %452
  store i32 %453, ptr %68, align 4, !tbaa !9
  %454 = load i32, ptr %67, align 4, !tbaa !9
  %455 = load i32, ptr %68, align 4, !tbaa !9
  %456 = icmp sge i32 %454, %455
  br i1 %456, label %457, label %459

457:                                              ; preds = %443
  %458 = load i32, ptr %67, align 4, !tbaa !9
  br label %461

459:                                              ; preds = %443
  %460 = load i32, ptr %68, align 4, !tbaa !9
  br label %461

461:                                              ; preds = %459, %457
  %462 = phi i32 [ %458, %457 ], [ %460, %459 ]
  store i32 %462, ptr %105, align 4, !tbaa !9
  br label %463

463:                                              ; preds = %461, %439
  br label %464

464:                                              ; preds = %463, %351
  %465 = load i32, ptr %105, align 4, !tbaa !9
  %466 = sitofp i32 %465 to double
  %467 = load ptr, ptr %54, align 8, !tbaa !5
  %468 = getelementptr inbounds double, ptr %467, i64 1
  store double %466, ptr %468, align 8, !tbaa !11
  %469 = load ptr, ptr %55, align 8, !tbaa !5
  %470 = load i32, ptr %469, align 4, !tbaa !9
  %471 = load i32, ptr %104, align 4, !tbaa !9
  %472 = icmp slt i32 %470, %471
  br i1 %472, label %473, label %478

473:                                              ; preds = %464
  %474 = load i32, ptr %108, align 4, !tbaa !9
  %475 = icmp ne i32 %474, 0
  br i1 %475, label %478, label %476

476:                                              ; preds = %473
  %477 = load ptr, ptr %58, align 8, !tbaa !5
  store i32 -26, ptr %477, align 4, !tbaa !9
  br label %478

478:                                              ; preds = %476, %473, %464
  br label %479

479:                                              ; preds = %478, %343
  %480 = load ptr, ptr %58, align 8, !tbaa !5
  %481 = load i32, ptr %480, align 4, !tbaa !9
  %482 = icmp ne i32 %481, 0
  br i1 %482, label %483, label %488

483:                                              ; preds = %479
  %484 = load ptr, ptr %58, align 8, !tbaa !5
  %485 = load i32, ptr %484, align 4, !tbaa !9
  %486 = sub nsw i32 0, %485
  store i32 %486, ptr %67, align 4, !tbaa !9
  %487 = call i32 @xerbla_(ptr noundef @.str.10, ptr noundef %67, i32 noundef 6)
  store i32 1, ptr %112, align 4
  br label %1647

488:                                              ; preds = %479
  %489 = load i32, ptr %108, align 4, !tbaa !9
  %490 = icmp ne i32 %489, 0
  br i1 %490, label %491, label %492

491:                                              ; preds = %488
  store i32 1, ptr %112, align 4
  br label %1647

492:                                              ; preds = %488
  br label %493

493:                                              ; preds = %492
  %494 = load ptr, ptr %34, align 8, !tbaa !5
  %495 = load i32, ptr %494, align 4, !tbaa !9
  %496 = icmp eq i32 %495, 0
  br i1 %496, label %497, label %498

497:                                              ; preds = %493
  store i32 1, ptr %112, align 4
  br label %1647

498:                                              ; preds = %493
  %499 = call double @dlamch_(ptr noundef @.str.2)
  store double %499, ptr %110, align 8, !tbaa !11
  %500 = call double @dlamch_(ptr noundef @.str.5)
  store double %500, ptr %107, align 8, !tbaa !11
  %501 = load double, ptr %107, align 8, !tbaa !11
  %502 = fdiv double 1.000000e+00, %501
  store double %502, ptr %97, align 8, !tbaa !11
  call void @dlabad_(ptr noundef %107, ptr noundef %97)
  %503 = load double, ptr %107, align 8, !tbaa !11
  %504 = call double @sqrt(double noundef %503) #4
  %505 = load double, ptr %110, align 8, !tbaa !11
  %506 = fdiv double %504, %505
  store double %506, ptr %107, align 8, !tbaa !11
  %507 = load double, ptr %107, align 8, !tbaa !11
  %508 = fdiv double 1.000000e+00, %507
  store double %508, ptr %97, align 8, !tbaa !11
  %509 = load ptr, ptr %34, align 8, !tbaa !5
  %510 = load ptr, ptr %34, align 8, !tbaa !5
  %511 = load ptr, ptr %35, align 8, !tbaa !5
  %512 = load i32, ptr %60, align 4, !tbaa !9
  %513 = sext i32 %512 to i64
  %514 = getelementptr inbounds double, ptr %511, i64 %513
  %515 = load ptr, ptr %36, align 8, !tbaa !5
  %516 = load ptr, ptr %54, align 8, !tbaa !5
  %517 = getelementptr inbounds double, ptr %516, i64 1
  %518 = call double @dlange_(ptr noundef @.str.11, ptr noundef %509, ptr noundef %510, ptr noundef %514, ptr noundef %515, ptr noundef %517)
  store double %518, ptr %74, align 8, !tbaa !11
  store i32 0, ptr %93, align 4, !tbaa !9
  %519 = load double, ptr %74, align 8, !tbaa !11
  %520 = fcmp ogt double %519, 0.000000e+00
  br i1 %520, label %521, label %527

521:                                              ; preds = %498
  %522 = load double, ptr %74, align 8, !tbaa !11
  %523 = load double, ptr %107, align 8, !tbaa !11
  %524 = fcmp olt double %522, %523
  br i1 %524, label %525, label %527

525:                                              ; preds = %521
  %526 = load double, ptr %107, align 8, !tbaa !11
  store double %526, ptr %101, align 8, !tbaa !11
  store i32 1, ptr %93, align 4, !tbaa !9
  br label %534

527:                                              ; preds = %521, %498
  %528 = load double, ptr %74, align 8, !tbaa !11
  %529 = load double, ptr %97, align 8, !tbaa !11
  %530 = fcmp ogt double %528, %529
  br i1 %530, label %531, label %533

531:                                              ; preds = %527
  %532 = load double, ptr %97, align 8, !tbaa !11
  store double %532, ptr %101, align 8, !tbaa !11
  store i32 1, ptr %93, align 4, !tbaa !9
  br label %533

533:                                              ; preds = %531, %527
  br label %534

534:                                              ; preds = %533, %525
  %535 = load i32, ptr %93, align 4, !tbaa !9
  %536 = icmp ne i32 %535, 0
  br i1 %536, label %537, label %545

537:                                              ; preds = %534
  %538 = load ptr, ptr %34, align 8, !tbaa !5
  %539 = load ptr, ptr %34, align 8, !tbaa !5
  %540 = load ptr, ptr %35, align 8, !tbaa !5
  %541 = load i32, ptr %60, align 4, !tbaa !9
  %542 = sext i32 %541 to i64
  %543 = getelementptr inbounds double, ptr %540, i64 %542
  %544 = 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 %74, ptr noundef %101, ptr noundef %538, ptr noundef %539, ptr noundef %543, ptr noundef %544, ptr noundef %76)
  br label %545

545:                                              ; preds = %537, %534
  %546 = load ptr, ptr %34, align 8, !tbaa !5
  %547 = load ptr, ptr %34, align 8, !tbaa !5
  %548 = load ptr, ptr %37, align 8, !tbaa !5
  %549 = load i32, ptr %62, align 4, !tbaa !9
  %550 = sext i32 %549 to i64
  %551 = getelementptr inbounds double, ptr %548, i64 %550
  %552 = load ptr, ptr %38, align 8, !tbaa !5
  %553 = load ptr, ptr %54, align 8, !tbaa !5
  %554 = getelementptr inbounds double, ptr %553, i64 1
  %555 = call double @dlange_(ptr noundef @.str.11, ptr noundef %546, ptr noundef %547, ptr noundef %551, ptr noundef %552, ptr noundef %554)
  store double %555, ptr %75, align 8, !tbaa !11
  store i32 0, ptr %94, align 4, !tbaa !9
  %556 = load double, ptr %75, align 8, !tbaa !11
  %557 = fcmp ogt double %556, 0.000000e+00
  br i1 %557, label %558, label %564

558:                                              ; preds = %545
  %559 = load double, ptr %75, align 8, !tbaa !11
  %560 = load double, ptr %107, align 8, !tbaa !11
  %561 = fcmp olt double %559, %560
  br i1 %561, label %562, label %564

562:                                              ; preds = %558
  %563 = load double, ptr %107, align 8, !tbaa !11
  store double %563, ptr %103, align 8, !tbaa !11
  store i32 1, ptr %94, align 4, !tbaa !9
  br label %571

564:                                              ; preds = %558, %545
  %565 = load double, ptr %75, align 8, !tbaa !11
  %566 = load double, ptr %97, align 8, !tbaa !11
  %567 = fcmp ogt double %565, %566
  br i1 %567, label %568, label %570

568:                                              ; preds = %564
  %569 = load double, ptr %97, align 8, !tbaa !11
  store double %569, ptr %103, align 8, !tbaa !11
  store i32 1, ptr %94, align 4, !tbaa !9
  br label %570

570:                                              ; preds = %568, %564
  br label %571

571:                                              ; preds = %570, %562
  %572 = load i32, ptr %94, align 4, !tbaa !9
  %573 = icmp ne i32 %572, 0
  br i1 %573, label %574, label %582

574:                                              ; preds = %571
  %575 = load ptr, ptr %34, align 8, !tbaa !5
  %576 = load ptr, ptr %34, align 8, !tbaa !5
  %577 = load ptr, ptr %37, align 8, !tbaa !5
  %578 = load i32, ptr %62, align 4, !tbaa !9
  %579 = sext i32 %578 to i64
  %580 = getelementptr inbounds double, ptr %577, i64 %579
  %581 = load ptr, ptr %38, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %75, ptr noundef %103, ptr noundef %575, ptr noundef %576, ptr noundef %580, ptr noundef %581, ptr noundef %76)
  br label %582

582:                                              ; preds = %574, %571
  %583 = load ptr, ptr %30, align 8, !tbaa !5
  %584 = load ptr, ptr %34, align 8, !tbaa !5
  %585 = load ptr, ptr %35, align 8, !tbaa !5
  %586 = load i32, ptr %60, align 4, !tbaa !9
  %587 = sext i32 %586 to i64
  %588 = getelementptr inbounds double, ptr %585, i64 %587
  %589 = load ptr, ptr %36, align 8, !tbaa !5
  %590 = load ptr, ptr %37, align 8, !tbaa !5
  %591 = load i32, ptr %62, align 4, !tbaa !9
  %592 = sext i32 %591 to i64
  %593 = getelementptr inbounds double, ptr %590, i64 %592
  %594 = load ptr, ptr %38, align 8, !tbaa !5
  %595 = load ptr, ptr %46, align 8, !tbaa !5
  %596 = load ptr, ptr %47, align 8, !tbaa !5
  %597 = load ptr, ptr %48, align 8, !tbaa !5
  %598 = getelementptr inbounds double, ptr %597, i64 1
  %599 = load ptr, ptr %49, align 8, !tbaa !5
  %600 = getelementptr inbounds double, ptr %599, i64 1
  %601 = load ptr, ptr %54, align 8, !tbaa !5
  %602 = getelementptr inbounds double, ptr %601, i64 1
  call void @dggbal_(ptr noundef %583, ptr noundef %584, ptr noundef %588, ptr noundef %589, ptr noundef %593, ptr noundef %594, ptr noundef %595, ptr noundef %596, ptr noundef %598, ptr noundef %600, ptr noundef %602, ptr noundef %76)
  %603 = load ptr, ptr %34, align 8, !tbaa !5
  %604 = load ptr, ptr %34, align 8, !tbaa !5
  %605 = load ptr, ptr %35, align 8, !tbaa !5
  %606 = load i32, ptr %60, align 4, !tbaa !9
  %607 = sext i32 %606 to i64
  %608 = getelementptr inbounds double, ptr %605, i64 %607
  %609 = load ptr, ptr %36, align 8, !tbaa !5
  %610 = load ptr, ptr %54, align 8, !tbaa !5
  %611 = getelementptr inbounds double, ptr %610, i64 1
  %612 = call double @dlange_(ptr noundef @.str.13, ptr noundef %603, ptr noundef %604, ptr noundef %608, ptr noundef %609, ptr noundef %611)
  %613 = load ptr, ptr %50, align 8, !tbaa !5
  store double %612, ptr %613, align 8, !tbaa !11
  %614 = load i32, ptr %93, align 4, !tbaa !9
  %615 = icmp ne i32 %614, 0
  br i1 %615, label %616, label %627

616:                                              ; preds = %582
  %617 = load ptr, ptr %50, align 8, !tbaa !5
  %618 = load double, ptr %617, align 8, !tbaa !11
  %619 = load ptr, ptr %54, align 8, !tbaa !5
  %620 = getelementptr inbounds double, ptr %619, i64 1
  store double %618, ptr %620, align 8, !tbaa !11
  %621 = load ptr, ptr %54, align 8, !tbaa !5
  %622 = getelementptr inbounds double, ptr %621, i64 1
  call void @dlascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %101, ptr noundef %74, ptr noundef @c__1, ptr noundef @c__1, ptr noundef %622, ptr noundef @c__1, ptr noundef %76)
  %623 = load ptr, ptr %54, align 8, !tbaa !5
  %624 = getelementptr inbounds double, ptr %623, i64 1
  %625 = load double, ptr %624, align 8, !tbaa !11
  %626 = load ptr, ptr %50, align 8, !tbaa !5
  store double %625, ptr %626, align 8, !tbaa !11
  br label %627

627:                                              ; preds = %616, %582
  %628 = load ptr, ptr %34, align 8, !tbaa !5
  %629 = load ptr, ptr %34, align 8, !tbaa !5
  %630 = load ptr, ptr %37, align 8, !tbaa !5
  %631 = load i32, ptr %62, align 4, !tbaa !9
  %632 = sext i32 %631 to i64
  %633 = getelementptr inbounds double, ptr %630, i64 %632
  %634 = load ptr, ptr %38, align 8, !tbaa !5
  %635 = load ptr, ptr %54, align 8, !tbaa !5
  %636 = getelementptr inbounds double, ptr %635, i64 1
  %637 = call double @dlange_(ptr noundef @.str.13, ptr noundef %628, ptr noundef %629, ptr noundef %633, ptr noundef %634, ptr noundef %636)
  %638 = load ptr, ptr %51, align 8, !tbaa !5
  store double %637, ptr %638, align 8, !tbaa !11
  %639 = load i32, ptr %94, align 4, !tbaa !9
  %640 = icmp ne i32 %639, 0
  br i1 %640, label %641, label %652

641:                                              ; preds = %627
  %642 = load ptr, ptr %51, align 8, !tbaa !5
  %643 = load double, ptr %642, align 8, !tbaa !11
  %644 = load ptr, ptr %54, align 8, !tbaa !5
  %645 = getelementptr inbounds double, ptr %644, i64 1
  store double %643, ptr %645, align 8, !tbaa !11
  %646 = load ptr, ptr %54, align 8, !tbaa !5
  %647 = getelementptr inbounds double, ptr %646, i64 1
  call void @dlascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %103, ptr noundef %75, ptr noundef @c__1, ptr noundef @c__1, ptr noundef %647, ptr noundef @c__1, ptr noundef %76)
  %648 = load ptr, ptr %54, align 8, !tbaa !5
  %649 = getelementptr inbounds double, ptr %648, i64 1
  %650 = load double, ptr %649, align 8, !tbaa !11
  %651 = load ptr, ptr %51, align 8, !tbaa !5
  store double %650, ptr %651, align 8, !tbaa !11
  br label %652

652:                                              ; preds = %641, %627
  %653 = load ptr, ptr %47, align 8, !tbaa !5
  %654 = load i32, ptr %653, align 4, !tbaa !9
  %655 = add nsw i32 %654, 1
  %656 = load ptr, ptr %46, align 8, !tbaa !5
  %657 = load i32, ptr %656, align 4, !tbaa !9
  %658 = sub nsw i32 %655, %657
  store i32 %658, ptr %88, align 4, !tbaa !9
  %659 = load i32, ptr %111, align 4, !tbaa !9
  %660 = icmp ne i32 %659, 0
  br i1 %660, label %664, label %661

661:                                              ; preds = %652
  %662 = load i32, ptr %106, align 4, !tbaa !9
  %663 = icmp ne i32 %662, 0
  br i1 %663, label %671, label %664

664:                                              ; preds = %661, %652
  %665 = load ptr, ptr %34, align 8, !tbaa !5
  %666 = load i32, ptr %665, align 4, !tbaa !9
  %667 = add nsw i32 %666, 1
  %668 = load ptr, ptr %46, align 8, !tbaa !5
  %669 = load i32, ptr %668, align 4, !tbaa !9
  %670 = sub nsw i32 %667, %669
  store i32 %670, ptr %86, align 4, !tbaa !9
  br label %673

671:                                              ; preds = %661
  %672 = load i32, ptr %88, align 4, !tbaa !9
  store i32 %672, ptr %86, align 4, !tbaa !9
  br label %673

673:                                              ; preds = %671, %664
  store i32 1, ptr %77, align 4, !tbaa !9
  %674 = load i32, ptr %77, align 4, !tbaa !9
  %675 = load i32, ptr %88, align 4, !tbaa !9
  %676 = add nsw i32 %674, %675
  store i32 %676, ptr %81, align 4, !tbaa !9
  %677 = load ptr, ptr %55, align 8, !tbaa !5
  %678 = load i32, ptr %677, align 4, !tbaa !9
  %679 = add nsw i32 %678, 1
  %680 = load i32, ptr %81, align 4, !tbaa !9
  %681 = sub nsw i32 %679, %680
  store i32 %681, ptr %67, align 4, !tbaa !9
  %682 = load ptr, ptr %37, align 8, !tbaa !5
  %683 = load ptr, ptr %46, align 8, !tbaa !5
  %684 = load i32, ptr %683, align 4, !tbaa !9
  %685 = load ptr, ptr %46, align 8, !tbaa !5
  %686 = load i32, ptr %685, align 4, !tbaa !9
  %687 = load i32, ptr %61, align 4, !tbaa !9
  %688 = mul nsw i32 %686, %687
  %689 = add nsw i32 %684, %688
  %690 = sext i32 %689 to i64
  %691 = getelementptr inbounds double, ptr %682, i64 %690
  %692 = load ptr, ptr %38, align 8, !tbaa !5
  %693 = load ptr, ptr %54, align 8, !tbaa !5
  %694 = load i32, ptr %77, align 4, !tbaa !9
  %695 = sext i32 %694 to i64
  %696 = getelementptr inbounds double, ptr %693, i64 %695
  %697 = load ptr, ptr %54, align 8, !tbaa !5
  %698 = load i32, ptr %81, align 4, !tbaa !9
  %699 = sext i32 %698 to i64
  %700 = getelementptr inbounds double, ptr %697, i64 %699
  call void @dgeqrf_(ptr noundef %88, ptr noundef %86, ptr noundef %691, ptr noundef %692, ptr noundef %696, ptr noundef %700, ptr noundef %67, ptr noundef %76)
  %701 = load ptr, ptr %55, align 8, !tbaa !5
  %702 = load i32, ptr %701, align 4, !tbaa !9
  %703 = add nsw i32 %702, 1
  %704 = load i32, ptr %81, align 4, !tbaa !9
  %705 = sub nsw i32 %703, %704
  store i32 %705, ptr %67, align 4, !tbaa !9
  %706 = load ptr, ptr %37, align 8, !tbaa !5
  %707 = load ptr, ptr %46, align 8, !tbaa !5
  %708 = load i32, ptr %707, align 4, !tbaa !9
  %709 = load ptr, ptr %46, align 8, !tbaa !5
  %710 = load i32, ptr %709, align 4, !tbaa !9
  %711 = load i32, ptr %61, align 4, !tbaa !9
  %712 = mul nsw i32 %710, %711
  %713 = add nsw i32 %708, %712
  %714 = sext i32 %713 to i64
  %715 = getelementptr inbounds double, ptr %706, i64 %714
  %716 = load ptr, ptr %38, align 8, !tbaa !5
  %717 = load ptr, ptr %54, align 8, !tbaa !5
  %718 = load i32, ptr %77, align 4, !tbaa !9
  %719 = sext i32 %718 to i64
  %720 = getelementptr inbounds double, ptr %717, i64 %719
  %721 = load ptr, ptr %35, align 8, !tbaa !5
  %722 = load ptr, ptr %46, align 8, !tbaa !5
  %723 = load i32, ptr %722, align 4, !tbaa !9
  %724 = load ptr, ptr %46, align 8, !tbaa !5
  %725 = load i32, ptr %724, align 4, !tbaa !9
  %726 = load i32, ptr %59, align 4, !tbaa !9
  %727 = mul nsw i32 %725, %726
  %728 = add nsw i32 %723, %727
  %729 = sext i32 %728 to i64
  %730 = getelementptr inbounds double, ptr %721, i64 %729
  %731 = load ptr, ptr %36, align 8, !tbaa !5
  %732 = load ptr, ptr %54, align 8, !tbaa !5
  %733 = load i32, ptr %81, align 4, !tbaa !9
  %734 = sext i32 %733 to i64
  %735 = getelementptr inbounds double, ptr %732, i64 %734
  call void @dormqr_(ptr noundef @.str.14, ptr noundef @.str.15, ptr noundef %88, ptr noundef %86, ptr noundef %88, ptr noundef %715, ptr noundef %716, ptr noundef %720, ptr noundef %730, ptr noundef %731, ptr noundef %735, ptr noundef %67, ptr noundef %76)
  %736 = load i32, ptr %79, align 4, !tbaa !9
  %737 = icmp ne i32 %736, 0
  br i1 %737, label %738, label %802

738:                                              ; preds = %673
  %739 = load ptr, ptr %34, align 8, !tbaa !5
  %740 = load ptr, ptr %34, align 8, !tbaa !5
  %741 = load ptr, ptr %42, align 8, !tbaa !5
  %742 = load i32, ptr %64, align 4, !tbaa !9
  %743 = sext i32 %742 to i64
  %744 = getelementptr inbounds double, ptr %741, i64 %743
  %745 = load ptr, ptr %43, align 8, !tbaa !5
  call void @dlaset_(ptr noundef @.str.16, ptr noundef %739, ptr noundef %740, ptr noundef @c_b59, ptr noundef @c_b60, ptr noundef %744, ptr noundef %745)
  %746 = load i32, ptr %88, align 4, !tbaa !9
  %747 = icmp sgt i32 %746, 1
  br i1 %747, label %748, label %777

748:                                              ; preds = %738
  %749 = load i32, ptr %88, align 4, !tbaa !9
  %750 = sub nsw i32 %749, 1
  store i32 %750, ptr %67, align 4, !tbaa !9
  %751 = load i32, ptr %88, align 4, !tbaa !9
  %752 = sub nsw i32 %751, 1
  store i32 %752, ptr %68, align 4, !tbaa !9
  %753 = load ptr, ptr %37, align 8, !tbaa !5
  %754 = load ptr, ptr %46, align 8, !tbaa !5
  %755 = load i32, ptr %754, align 4, !tbaa !9
  %756 = add nsw i32 %755, 1
  %757 = load ptr, ptr %46, align 8, !tbaa !5
  %758 = load i32, ptr %757, align 4, !tbaa !9
  %759 = load i32, ptr %61, align 4, !tbaa !9
  %760 = mul nsw i32 %758, %759
  %761 = add nsw i32 %756, %760
  %762 = sext i32 %761 to i64
  %763 = getelementptr inbounds double, ptr %753, i64 %762
  %764 = load ptr, ptr %38, align 8, !tbaa !5
  %765 = load ptr, ptr %42, align 8, !tbaa !5
  %766 = load ptr, ptr %46, align 8, !tbaa !5
  %767 = load i32, ptr %766, align 4, !tbaa !9
  %768 = add nsw i32 %767, 1
  %769 = load ptr, ptr %46, align 8, !tbaa !5
  %770 = load i32, ptr %769, align 4, !tbaa !9
  %771 = load i32, ptr %63, align 4, !tbaa !9
  %772 = mul nsw i32 %770, %771
  %773 = add nsw i32 %768, %772
  %774 = sext i32 %773 to i64
  %775 = getelementptr inbounds double, ptr %765, i64 %774
  %776 = load ptr, ptr %43, align 8, !tbaa !5
  call void @dlacpy_(ptr noundef @.str.14, ptr noundef %67, ptr noundef %68, ptr noundef %763, ptr noundef %764, ptr noundef %775, ptr noundef %776)
  br label %777

777:                                              ; preds = %748, %738
  %778 = load ptr, ptr %55, align 8, !tbaa !5
  %779 = load i32, ptr %778, align 4, !tbaa !9
  %780 = add nsw i32 %779, 1
  %781 = load i32, ptr %81, align 4, !tbaa !9
  %782 = sub nsw i32 %780, %781
  store i32 %782, ptr %67, align 4, !tbaa !9
  %783 = load ptr, ptr %42, align 8, !tbaa !5
  %784 = load ptr, ptr %46, align 8, !tbaa !5
  %785 = load i32, ptr %784, align 4, !tbaa !9
  %786 = load ptr, ptr %46, align 8, !tbaa !5
  %787 = load i32, ptr %786, align 4, !tbaa !9
  %788 = load i32, ptr %63, align 4, !tbaa !9
  %789 = mul nsw i32 %787, %788
  %790 = add nsw i32 %785, %789
  %791 = sext i32 %790 to i64
  %792 = getelementptr inbounds double, ptr %783, i64 %791
  %793 = load ptr, ptr %43, align 8, !tbaa !5
  %794 = load ptr, ptr %54, align 8, !tbaa !5
  %795 = load i32, ptr %77, align 4, !tbaa !9
  %796 = sext i32 %795 to i64
  %797 = getelementptr inbounds double, ptr %794, i64 %796
  %798 = load ptr, ptr %54, align 8, !tbaa !5
  %799 = load i32, ptr %81, align 4, !tbaa !9
  %800 = sext i32 %799 to i64
  %801 = getelementptr inbounds double, ptr %798, i64 %800
  call void @dorgqr_(ptr noundef %88, ptr noundef %88, ptr noundef %88, ptr noundef %792, ptr noundef %793, ptr noundef %797, ptr noundef %801, ptr noundef %67, ptr noundef %76)
  br label %802

802:                                              ; preds = %777, %673
  %803 = load i32, ptr %80, align 4, !tbaa !9
  %804 = icmp ne i32 %803, 0
  br i1 %804, label %805, label %813

805:                                              ; preds = %802
  %806 = load ptr, ptr %34, align 8, !tbaa !5
  %807 = load ptr, ptr %34, align 8, !tbaa !5
  %808 = load ptr, ptr %44, align 8, !tbaa !5
  %809 = load i32, ptr %66, align 4, !tbaa !9
  %810 = sext i32 %809 to i64
  %811 = getelementptr inbounds double, ptr %808, i64 %810
  %812 = load ptr, ptr %45, align 8, !tbaa !5
  call void @dlaset_(ptr noundef @.str.16, ptr noundef %806, ptr noundef %807, ptr noundef @c_b59, ptr noundef @c_b60, ptr noundef %811, ptr noundef %812)
  br label %813

813:                                              ; preds = %805, %802
  %814 = load i32, ptr %111, align 4, !tbaa !9
  %815 = icmp ne i32 %814, 0
  br i1 %815, label %819, label %816

816:                                              ; preds = %813
  %817 = load i32, ptr %106, align 4, !tbaa !9
  %818 = icmp ne i32 %817, 0
  br i1 %818, label %845, label %819

819:                                              ; preds = %816, %813
  %820 = load ptr, ptr %31, align 8, !tbaa !5
  %821 = load ptr, ptr %32, align 8, !tbaa !5
  %822 = load ptr, ptr %34, align 8, !tbaa !5
  %823 = load ptr, ptr %46, align 8, !tbaa !5
  %824 = load ptr, ptr %47, align 8, !tbaa !5
  %825 = load ptr, ptr %35, align 8, !tbaa !5
  %826 = load i32, ptr %60, align 4, !tbaa !9
  %827 = sext i32 %826 to i64
  %828 = getelementptr inbounds double, ptr %825, i64 %827
  %829 = load ptr, ptr %36, align 8, !tbaa !5
  %830 = load ptr, ptr %37, align 8, !tbaa !5
  %831 = load i32, ptr %62, align 4, !tbaa !9
  %832 = sext i32 %831 to i64
  %833 = getelementptr inbounds double, ptr %830, i64 %832
  %834 = load ptr, ptr %38, align 8, !tbaa !5
  %835 = load ptr, ptr %42, align 8, !tbaa !5
  %836 = load i32, ptr %64, align 4, !tbaa !9
  %837 = sext i32 %836 to i64
  %838 = getelementptr inbounds double, ptr %835, i64 %837
  %839 = load ptr, ptr %43, align 8, !tbaa !5
  %840 = load ptr, ptr %44, align 8, !tbaa !5
  %841 = load i32, ptr %66, align 4, !tbaa !9
  %842 = sext i32 %841 to i64
  %843 = getelementptr inbounds double, ptr %840, i64 %842
  %844 = load ptr, ptr %45, align 8, !tbaa !5
  call void @dgghrd_(ptr noundef %820, ptr noundef %821, ptr noundef %822, ptr noundef %823, ptr noundef %824, ptr noundef %828, ptr noundef %829, ptr noundef %833, ptr noundef %834, ptr noundef %838, ptr noundef %839, ptr noundef %843, ptr noundef %844, ptr noundef %76)
  br label %878

845:                                              ; preds = %816
  %846 = load ptr, ptr %35, align 8, !tbaa !5
  %847 = load ptr, ptr %46, align 8, !tbaa !5
  %848 = load i32, ptr %847, align 4, !tbaa !9
  %849 = load ptr, ptr %46, align 8, !tbaa !5
  %850 = load i32, ptr %849, align 4, !tbaa !9
  %851 = load i32, ptr %59, align 4, !tbaa !9
  %852 = mul nsw i32 %850, %851
  %853 = add nsw i32 %848, %852
  %854 = sext i32 %853 to i64
  %855 = getelementptr inbounds double, ptr %846, i64 %854
  %856 = load ptr, ptr %36, align 8, !tbaa !5
  %857 = load ptr, ptr %37, align 8, !tbaa !5
  %858 = load ptr, ptr %46, align 8, !tbaa !5
  %859 = load i32, ptr %858, align 4, !tbaa !9
  %860 = load ptr, ptr %46, align 8, !tbaa !5
  %861 = load i32, ptr %860, align 4, !tbaa !9
  %862 = load i32, ptr %61, align 4, !tbaa !9
  %863 = mul nsw i32 %861, %862
  %864 = add nsw i32 %859, %863
  %865 = sext i32 %864 to i64
  %866 = getelementptr inbounds double, ptr %857, i64 %865
  %867 = load ptr, ptr %38, align 8, !tbaa !5
  %868 = load ptr, ptr %42, align 8, !tbaa !5
  %869 = load i32, ptr %64, align 4, !tbaa !9
  %870 = sext i32 %869 to i64
  %871 = getelementptr inbounds double, ptr %868, i64 %870
  %872 = load ptr, ptr %43, align 8, !tbaa !5
  %873 = load ptr, ptr %44, align 8, !tbaa !5
  %874 = load i32, ptr %66, align 4, !tbaa !9
  %875 = sext i32 %874 to i64
  %876 = getelementptr inbounds double, ptr %873, i64 %875
  %877 = load ptr, ptr %45, align 8, !tbaa !5
  call void @dgghrd_(ptr noundef @.str, ptr noundef @.str, ptr noundef %88, ptr noundef @c__1, ptr noundef %88, ptr noundef %855, ptr noundef %856, ptr noundef %866, ptr noundef %867, ptr noundef %871, ptr noundef %872, ptr noundef %876, ptr noundef %877, ptr noundef %76)
  br label %878

878:                                              ; preds = %845, %819
  %879 = load i32, ptr %111, align 4, !tbaa !9
  %880 = icmp ne i32 %879, 0
  br i1 %880, label %884, label %881

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

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

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

888:                                              ; preds = %886, %884
  %889 = getelementptr inbounds [1 x i8], ptr %96, i64 0, i64 0
  %890 = load ptr, ptr %31, align 8, !tbaa !5
  %891 = load ptr, ptr %32, align 8, !tbaa !5
  %892 = load ptr, ptr %34, align 8, !tbaa !5
  %893 = load ptr, ptr %46, align 8, !tbaa !5
  %894 = load ptr, ptr %47, align 8, !tbaa !5
  %895 = load ptr, ptr %35, align 8, !tbaa !5
  %896 = load i32, ptr %60, align 4, !tbaa !9
  %897 = sext i32 %896 to i64
  %898 = getelementptr inbounds double, ptr %895, i64 %897
  %899 = load ptr, ptr %36, align 8, !tbaa !5
  %900 = load ptr, ptr %37, align 8, !tbaa !5
  %901 = load i32, ptr %62, align 4, !tbaa !9
  %902 = sext i32 %901 to i64
  %903 = getelementptr inbounds double, ptr %900, i64 %902
  %904 = load ptr, ptr %38, align 8, !tbaa !5
  %905 = load ptr, ptr %39, align 8, !tbaa !5
  %906 = getelementptr inbounds double, ptr %905, i64 1
  %907 = load ptr, ptr %40, align 8, !tbaa !5
  %908 = getelementptr inbounds double, ptr %907, i64 1
  %909 = load ptr, ptr %41, align 8, !tbaa !5
  %910 = getelementptr inbounds double, ptr %909, i64 1
  %911 = load ptr, ptr %42, align 8, !tbaa !5
  %912 = load i32, ptr %64, align 4, !tbaa !9
  %913 = sext i32 %912 to i64
  %914 = getelementptr inbounds double, ptr %911, i64 %913
  %915 = load ptr, ptr %43, align 8, !tbaa !5
  %916 = load ptr, ptr %44, align 8, !tbaa !5
  %917 = load i32, ptr %66, align 4, !tbaa !9
  %918 = sext i32 %917 to i64
  %919 = getelementptr inbounds double, ptr %916, i64 %918
  %920 = load ptr, ptr %45, align 8, !tbaa !5
  %921 = load ptr, ptr %54, align 8, !tbaa !5
  %922 = getelementptr inbounds double, ptr %921, i64 1
  %923 = load ptr, ptr %55, align 8, !tbaa !5
  call void @dhgeqz_(ptr noundef %889, ptr noundef %890, ptr noundef %891, ptr noundef %892, ptr noundef %893, ptr noundef %894, ptr noundef %898, ptr noundef %899, ptr noundef %903, ptr noundef %904, ptr noundef %906, ptr noundef %908, ptr noundef %910, ptr noundef %914, ptr noundef %915, ptr noundef %919, ptr noundef %920, ptr noundef %922, ptr noundef %923, ptr noundef %76)
  %924 = load i32, ptr %76, align 4, !tbaa !9
  %925 = icmp ne i32 %924, 0
  br i1 %925, label %926, label %961

926:                                              ; preds = %888
  %927 = load i32, ptr %76, align 4, !tbaa !9
  %928 = icmp sgt i32 %927, 0
  br i1 %928, label %929, label %937

929:                                              ; preds = %926
  %930 = load i32, ptr %76, align 4, !tbaa !9
  %931 = load ptr, ptr %34, align 8, !tbaa !5
  %932 = load i32, ptr %931, align 4, !tbaa !9
  %933 = icmp sle i32 %930, %932
  br i1 %933, label %934, label %937

934:                                              ; preds = %929
  %935 = load i32, ptr %76, align 4, !tbaa !9
  %936 = load ptr, ptr %58, align 8, !tbaa !5
  store i32 %935, ptr %936, align 4, !tbaa !9
  br label %960

937:                                              ; preds = %929, %926
  %938 = load i32, ptr %76, align 4, !tbaa !9
  %939 = load ptr, ptr %34, align 8, !tbaa !5
  %940 = load i32, ptr %939, align 4, !tbaa !9
  %941 = icmp sgt i32 %938, %940
  br i1 %941, label %942, label %954

942:                                              ; preds = %937
  %943 = load i32, ptr %76, align 4, !tbaa !9
  %944 = load ptr, ptr %34, align 8, !tbaa !5
  %945 = load i32, ptr %944, align 4, !tbaa !9
  %946 = shl i32 %945, 1
  %947 = icmp sle i32 %943, %946
  br i1 %947, label %948, label %954

948:                                              ; preds = %942
  %949 = load i32, ptr %76, align 4, !tbaa !9
  %950 = load ptr, ptr %34, align 8, !tbaa !5
  %951 = load i32, ptr %950, align 4, !tbaa !9
  %952 = sub nsw i32 %949, %951
  %953 = load ptr, ptr %58, align 8, !tbaa !5
  store i32 %952, ptr %953, align 4, !tbaa !9
  br label %959

954:                                              ; preds = %942, %937
  %955 = load ptr, ptr %34, align 8, !tbaa !5
  %956 = load i32, ptr %955, align 4, !tbaa !9
  %957 = add nsw i32 %956, 1
  %958 = load ptr, ptr %58, align 8, !tbaa !5
  store i32 %957, ptr %958, align 4, !tbaa !9
  br label %959

959:                                              ; preds = %954, %948
  br label %960

960:                                              ; preds = %959, %934
  br label %1622

961:                                              ; preds = %888
  %962 = load i32, ptr %111, align 4, !tbaa !9
  %963 = icmp ne i32 %962, 0
  br i1 %963, label %967, label %964

964:                                              ; preds = %961
  %965 = load i32, ptr %106, align 4, !tbaa !9
  %966 = icmp ne i32 %965, 0
  br i1 %966, label %1187, label %967

967:                                              ; preds = %964, %961
  %968 = load i32, ptr %111, align 4, !tbaa !9
  %969 = icmp ne i32 %968, 0
  br i1 %969, label %970, label %1018

970:                                              ; preds = %967
  %971 = load i32, ptr %79, align 4, !tbaa !9
  %972 = icmp ne i32 %971, 0
  br i1 %972, label %973, label %981

973:                                              ; preds = %970
  %974 = load i32, ptr %80, align 4, !tbaa !9
  %975 = icmp ne i32 %974, 0
  br i1 %975, label %976, label %978

976:                                              ; preds = %973
  %977 = getelementptr inbounds [1 x i8], ptr %96, i64 0, i64 0
  store i8 66, ptr %977, align 1, !tbaa !13
  br label %980

978:                                              ; preds = %973
  %979 = getelementptr inbounds [1 x i8], ptr %96, i64 0, i64 0
  store i8 76, ptr %979, align 1, !tbaa !13
  br label %980

980:                                              ; preds = %978, %976
  br label %983

981:                                              ; preds = %970
  %982 = getelementptr inbounds [1 x i8], ptr %96, i64 0, i64 0
  store i8 82, ptr %982, align 1, !tbaa !13
  br label %983

983:                                              ; preds = %981, %980
  %984 = getelementptr inbounds [1 x i8], ptr %96, i64 0, i64 0
  %985 = getelementptr inbounds [1 x i32], ptr %95, i64 0, i64 0
  %986 = load ptr, ptr %34, align 8, !tbaa !5
  %987 = load ptr, ptr %35, align 8, !tbaa !5
  %988 = load i32, ptr %60, align 4, !tbaa !9
  %989 = sext i32 %988 to i64
  %990 = getelementptr inbounds double, ptr %987, i64 %989
  %991 = load ptr, ptr %36, align 8, !tbaa !5
  %992 = load ptr, ptr %37, align 8, !tbaa !5
  %993 = load i32, ptr %62, align 4, !tbaa !9
  %994 = sext i32 %993 to i64
  %995 = getelementptr inbounds double, ptr %992, i64 %994
  %996 = load ptr, ptr %38, align 8, !tbaa !5
  %997 = load ptr, ptr %42, align 8, !tbaa !5
  %998 = load i32, ptr %64, align 4, !tbaa !9
  %999 = sext i32 %998 to i64
  %1000 = getelementptr inbounds double, ptr %997, i64 %999
  %1001 = load ptr, ptr %43, align 8, !tbaa !5
  %1002 = load ptr, ptr %44, align 8, !tbaa !5
  %1003 = load i32, ptr %66, align 4, !tbaa !9
  %1004 = sext i32 %1003 to i64
  %1005 = getelementptr inbounds double, ptr %1002, i64 %1004
  %1006 = load ptr, ptr %45, align 8, !tbaa !5
  %1007 = load ptr, ptr %34, align 8, !tbaa !5
  %1008 = load ptr, ptr %54, align 8, !tbaa !5
  %1009 = getelementptr inbounds double, ptr %1008, i64 1
  call void @dtgevc_(ptr noundef %984, ptr noundef @.str.4, ptr noundef %985, ptr noundef %986, ptr noundef %990, ptr noundef %991, ptr noundef %995, ptr noundef %996, ptr noundef %1000, ptr noundef %1001, ptr noundef %1005, ptr noundef %1006, ptr noundef %1007, ptr noundef %90, ptr noundef %1009, ptr noundef %76)
  %1010 = load i32, ptr %76, align 4, !tbaa !9
  %1011 = icmp ne i32 %1010, 0
  br i1 %1011, label %1012, label %1017

1012:                                             ; preds = %983
  %1013 = load ptr, ptr %34, align 8, !tbaa !5
  %1014 = load i32, ptr %1013, align 4, !tbaa !9
  %1015 = add nsw i32 %1014, 2
  %1016 = load ptr, ptr %58, align 8, !tbaa !5
  store i32 %1015, ptr %1016, align 4, !tbaa !9
  br label %1622

1017:                                             ; preds = %983
  br label %1018

1018:                                             ; preds = %1017, %967
  %1019 = load i32, ptr %106, align 4, !tbaa !9
  %1020 = icmp ne i32 %1019, 0
  br i1 %1020, label %1186, label %1021

1021:                                             ; preds = %1018
  store i32 0, ptr %73, align 4, !tbaa !9
  %1022 = load ptr, ptr %34, align 8, !tbaa !5
  %1023 = load i32, ptr %1022, align 4, !tbaa !9
  store i32 %1023, ptr %67, align 4, !tbaa !9
  store i32 1, ptr %83, align 4, !tbaa !9
  br label %1024

1024:                                             ; preds = %1182, %1021
  %1025 = load i32, ptr %83, align 4, !tbaa !9
  %1026 = load i32, ptr %67, align 4, !tbaa !9
  %1027 = icmp sle i32 %1025, %1026
  br i1 %1027, label %1028, label %1185

1028:                                             ; preds = %1024
  %1029 = load i32, ptr %73, align 4, !tbaa !9
  %1030 = icmp ne i32 %1029, 0
  br i1 %1030, label %1031, label %1032

1031:                                             ; preds = %1028
  store i32 0, ptr %73, align 4, !tbaa !9
  br label %1181

1032:                                             ; preds = %1028
  store i32 1, ptr %91, align 4, !tbaa !9
  %1033 = load i32, ptr %83, align 4, !tbaa !9
  %1034 = load ptr, ptr %34, align 8, !tbaa !5
  %1035 = load i32, ptr %1034, align 4, !tbaa !9
  %1036 = icmp slt i32 %1033, %1035
  br i1 %1036, label %1037, label %1051

1037:                                             ; preds = %1032
  %1038 = load ptr, ptr %35, align 8, !tbaa !5
  %1039 = load i32, ptr %83, align 4, !tbaa !9
  %1040 = add nsw i32 %1039, 1
  %1041 = load i32, ptr %83, align 4, !tbaa !9
  %1042 = load i32, ptr %59, align 4, !tbaa !9
  %1043 = mul nsw i32 %1041, %1042
  %1044 = add nsw i32 %1040, %1043
  %1045 = sext i32 %1044 to i64
  %1046 = getelementptr inbounds double, ptr %1038, i64 %1045
  %1047 = load double, ptr %1046, align 8, !tbaa !11
  %1048 = fcmp une double %1047, 0.000000e+00
  br i1 %1048, label %1049, label %1050

1049:                                             ; preds = %1037
  store i32 1, ptr %73, align 4, !tbaa !9
  store i32 2, ptr %91, align 4, !tbaa !9
  br label %1050

1050:                                             ; preds = %1049, %1037
  br label %1051

1051:                                             ; preds = %1050, %1032
  %1052 = load ptr, ptr %34, align 8, !tbaa !5
  %1053 = load i32, ptr %1052, align 4, !tbaa !9
  store i32 %1053, ptr %68, align 4, !tbaa !9
  store i32 1, ptr %84, align 4, !tbaa !9
  br label %1054

1054:                                             ; preds = %1063, %1051
  %1055 = load i32, ptr %84, align 4, !tbaa !9
  %1056 = load i32, ptr %68, align 4, !tbaa !9
  %1057 = icmp sle i32 %1055, %1056
  br i1 %1057, label %1058, label %1066

1058:                                             ; preds = %1054
  %1059 = load ptr, ptr %57, align 8, !tbaa !5
  %1060 = load i32, ptr %84, align 4, !tbaa !9
  %1061 = sext i32 %1060 to i64
  %1062 = getelementptr inbounds i32, ptr %1059, i64 %1061
  store i32 0, ptr %1062, align 4, !tbaa !9
  br label %1063

1063:                                             ; preds = %1058
  %1064 = load i32, ptr %84, align 4, !tbaa !9
  %1065 = add nsw i32 %1064, 1
  store i32 %1065, ptr %84, align 4, !tbaa !9
  br label %1054, !llvm.loop !14

1066:                                             ; preds = %1054
  %1067 = load i32, ptr %91, align 4, !tbaa !9
  %1068 = icmp eq i32 %1067, 1
  br i1 %1068, label %1069, label %1074

1069:                                             ; preds = %1066
  %1070 = load ptr, ptr %57, align 8, !tbaa !5
  %1071 = load i32, ptr %83, align 4, !tbaa !9
  %1072 = sext i32 %1071 to i64
  %1073 = getelementptr inbounds i32, ptr %1070, i64 %1072
  store i32 1, ptr %1073, align 4, !tbaa !9
  br label %1088

1074:                                             ; preds = %1066
  %1075 = load i32, ptr %91, align 4, !tbaa !9
  %1076 = icmp eq i32 %1075, 2
  br i1 %1076, label %1077, label %1087

1077:                                             ; preds = %1074
  %1078 = load ptr, ptr %57, align 8, !tbaa !5
  %1079 = load i32, ptr %83, align 4, !tbaa !9
  %1080 = sext i32 %1079 to i64
  %1081 = getelementptr inbounds i32, ptr %1078, i64 %1080
  store i32 1, ptr %1081, align 4, !tbaa !9
  %1082 = load ptr, ptr %57, align 8, !tbaa !5
  %1083 = load i32, ptr %83, align 4, !tbaa !9
  %1084 = add nsw i32 %1083, 1
  %1085 = sext i32 %1084 to i64
  %1086 = getelementptr inbounds i32, ptr %1082, i64 %1085
  store i32 1, ptr %1086, align 4, !tbaa !9
  br label %1087

1087:                                             ; preds = %1077, %1074
  br label %1088

1088:                                             ; preds = %1087, %1069
  %1089 = load i32, ptr %91, align 4, !tbaa !9
  %1090 = load ptr, ptr %34, align 8, !tbaa !5
  %1091 = load i32, ptr %1090, align 4, !tbaa !9
  %1092 = mul nsw i32 %1089, %1091
  %1093 = add nsw i32 %1092, 1
  store i32 %1093, ptr %81, align 4, !tbaa !9
  %1094 = load i32, ptr %81, align 4, !tbaa !9
  %1095 = load i32, ptr %91, align 4, !tbaa !9
  %1096 = load ptr, ptr %34, align 8, !tbaa !5
  %1097 = load i32, ptr %1096, align 4, !tbaa !9
  %1098 = mul nsw i32 %1095, %1097
  %1099 = add nsw i32 %1094, %1098
  store i32 %1099, ptr %82, align 4, !tbaa !9
  %1100 = load i32, ptr %102, align 4, !tbaa !9
  %1101 = icmp ne i32 %1100, 0
  br i1 %1101, label %1105, label %1102

1102:                                             ; preds = %1088
  %1103 = load i32, ptr %100, align 4, !tbaa !9
  %1104 = icmp ne i32 %1103, 0
  br i1 %1104, label %1105, label %1139

1105:                                             ; preds = %1102, %1088
  %1106 = load ptr, ptr %57, align 8, !tbaa !5
  %1107 = getelementptr inbounds i32, ptr %1106, i64 1
  %1108 = load ptr, ptr %34, align 8, !tbaa !5
  %1109 = load ptr, ptr %35, align 8, !tbaa !5
  %1110 = load i32, ptr %60, align 4, !tbaa !9
  %1111 = sext i32 %1110 to i64
  %1112 = getelementptr inbounds double, ptr %1109, i64 %1111
  %1113 = load ptr, ptr %36, align 8, !tbaa !5
  %1114 = load ptr, ptr %37, align 8, !tbaa !5
  %1115 = load i32, ptr %62, align 4, !tbaa !9
  %1116 = sext i32 %1115 to i64
  %1117 = getelementptr inbounds double, ptr %1114, i64 %1116
  %1118 = load ptr, ptr %38, align 8, !tbaa !5
  %1119 = load ptr, ptr %54, align 8, !tbaa !5
  %1120 = getelementptr inbounds double, ptr %1119, i64 1
  %1121 = load ptr, ptr %34, align 8, !tbaa !5
  %1122 = load ptr, ptr %54, align 8, !tbaa !5
  %1123 = load i32, ptr %81, align 4, !tbaa !9
  %1124 = sext i32 %1123 to i64
  %1125 = getelementptr inbounds double, ptr %1122, i64 %1124
  %1126 = load ptr, ptr %34, align 8, !tbaa !5
  %1127 = load ptr, ptr %54, align 8, !tbaa !5
  %1128 = load i32, ptr %82, align 4, !tbaa !9
  %1129 = sext i32 %1128 to i64
  %1130 = getelementptr inbounds double, ptr %1127, i64 %1129
  call void @dtgevc_(ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef %1107, ptr noundef %1108, ptr noundef %1112, ptr noundef %1113, ptr noundef %1117, ptr noundef %1118, ptr noundef %1120, ptr noundef %1121, ptr noundef %1125, ptr noundef %1126, ptr noundef %91, ptr noundef %85, ptr noundef %1130, ptr noundef %76)
  %1131 = load i32, ptr %76, align 4, !tbaa !9
  %1132 = icmp ne i32 %1131, 0
  br i1 %1132, label %1133, label %1138

1133:                                             ; preds = %1105
  %1134 = load ptr, ptr %34, align 8, !tbaa !5
  %1135 = load i32, ptr %1134, align 4, !tbaa !9
  %1136 = add nsw i32 %1135, 2
  %1137 = load ptr, ptr %58, align 8, !tbaa !5
  store i32 %1136, ptr %1137, align 4, !tbaa !9
  br label %1622

1138:                                             ; preds = %1105
  br label %1139

1139:                                             ; preds = %1138, %1102
  %1140 = load ptr, ptr %55, align 8, !tbaa !5
  %1141 = load i32, ptr %1140, align 4, !tbaa !9
  %1142 = load i32, ptr %82, align 4, !tbaa !9
  %1143 = sub nsw i32 %1141, %1142
  %1144 = add nsw i32 %1143, 1
  store i32 %1144, ptr %68, align 4, !tbaa !9
  %1145 = load ptr, ptr %33, align 8, !tbaa !5
  %1146 = load ptr, ptr %57, align 8, !tbaa !5
  %1147 = getelementptr inbounds i32, ptr %1146, i64 1
  %1148 = load ptr, ptr %34, align 8, !tbaa !5
  %1149 = load ptr, ptr %35, align 8, !tbaa !5
  %1150 = load i32, ptr %60, align 4, !tbaa !9
  %1151 = sext i32 %1150 to i64
  %1152 = getelementptr inbounds double, ptr %1149, i64 %1151
  %1153 = load ptr, ptr %36, align 8, !tbaa !5
  %1154 = load ptr, ptr %37, align 8, !tbaa !5
  %1155 = load i32, ptr %62, align 4, !tbaa !9
  %1156 = sext i32 %1155 to i64
  %1157 = getelementptr inbounds double, ptr %1154, i64 %1156
  %1158 = load ptr, ptr %38, align 8, !tbaa !5
  %1159 = load ptr, ptr %54, align 8, !tbaa !5
  %1160 = getelementptr inbounds double, ptr %1159, i64 1
  %1161 = load ptr, ptr %34, align 8, !tbaa !5
  %1162 = load ptr, ptr %54, align 8, !tbaa !5
  %1163 = load i32, ptr %81, align 4, !tbaa !9
  %1164 = sext i32 %1163 to i64
  %1165 = getelementptr inbounds double, ptr %1162, i64 %1164
  %1166 = load ptr, ptr %34, align 8, !tbaa !5
  %1167 = load ptr, ptr %52, align 8, !tbaa !5
  %1168 = load i32, ptr %83, align 4, !tbaa !9
  %1169 = sext i32 %1168 to i64
  %1170 = getelementptr inbounds double, ptr %1167, i64 %1169
  %1171 = load ptr, ptr %53, align 8, !tbaa !5
  %1172 = load i32, ptr %83, align 4, !tbaa !9
  %1173 = sext i32 %1172 to i64
  %1174 = getelementptr inbounds double, ptr %1171, i64 %1173
  %1175 = load ptr, ptr %54, align 8, !tbaa !5
  %1176 = load i32, ptr %82, align 4, !tbaa !9
  %1177 = sext i32 %1176 to i64
  %1178 = getelementptr inbounds double, ptr %1175, i64 %1177
  %1179 = load ptr, ptr %56, align 8, !tbaa !5
  %1180 = getelementptr inbounds i32, ptr %1179, i64 1
  call void @dtgsna_(ptr noundef %1145, ptr noundef @.str.5, ptr noundef %1147, ptr noundef %1148, ptr noundef %1152, ptr noundef %1153, ptr noundef %1157, ptr noundef %1158, ptr noundef %1160, ptr noundef %1161, ptr noundef %1165, ptr noundef %1166, ptr noundef %1170, ptr noundef %1174, ptr noundef %91, ptr noundef %85, ptr noundef %1178, ptr noundef %68, ptr noundef %1180, ptr noundef %76)
  br label %1181

1181:                                             ; preds = %1139, %1031
  br label %1182

1182:                                             ; preds = %1181
  %1183 = load i32, ptr %83, align 4, !tbaa !9
  %1184 = add nsw i32 %1183, 1
  store i32 %1184, ptr %83, align 4, !tbaa !9
  br label %1024, !llvm.loop !16

1185:                                             ; preds = %1024
  br label %1186

1186:                                             ; preds = %1185, %1018
  br label %1187

1187:                                             ; preds = %1186, %964
  %1188 = load i32, ptr %79, align 4, !tbaa !9
  %1189 = icmp ne i32 %1188, 0
  br i1 %1189, label %1190, label %1404

1190:                                             ; preds = %1187
  %1191 = load ptr, ptr %30, align 8, !tbaa !5
  %1192 = load ptr, ptr %34, align 8, !tbaa !5
  %1193 = load ptr, ptr %46, align 8, !tbaa !5
  %1194 = load ptr, ptr %47, align 8, !tbaa !5
  %1195 = load ptr, ptr %48, align 8, !tbaa !5
  %1196 = getelementptr inbounds double, ptr %1195, i64 1
  %1197 = load ptr, ptr %49, align 8, !tbaa !5
  %1198 = getelementptr inbounds double, ptr %1197, i64 1
  %1199 = load ptr, ptr %34, align 8, !tbaa !5
  %1200 = load ptr, ptr %42, align 8, !tbaa !5
  %1201 = load i32, ptr %64, align 4, !tbaa !9
  %1202 = sext i32 %1201 to i64
  %1203 = getelementptr inbounds double, ptr %1200, i64 %1202
  %1204 = load ptr, ptr %43, align 8, !tbaa !5
  call void @dggbak_(ptr noundef %1191, ptr noundef @.str.14, ptr noundef %1192, ptr noundef %1193, ptr noundef %1194, ptr noundef %1196, ptr noundef %1198, ptr noundef %1199, ptr noundef %1203, ptr noundef %1204, ptr noundef %76)
  %1205 = load ptr, ptr %34, align 8, !tbaa !5
  %1206 = load i32, ptr %1205, align 4, !tbaa !9
  store i32 %1206, ptr %67, align 4, !tbaa !9
  store i32 1, ptr %89, align 4, !tbaa !9
  br label %1207

1207:                                             ; preds = %1400, %1190
  %1208 = load i32, ptr %89, align 4, !tbaa !9
  %1209 = load i32, ptr %67, align 4, !tbaa !9
  %1210 = icmp sle i32 %1208, %1209
  br i1 %1210, label %1211, label %1403

1211:                                             ; preds = %1207
  %1212 = load ptr, ptr %40, align 8, !tbaa !5
  %1213 = load i32, ptr %89, align 4, !tbaa !9
  %1214 = sext i32 %1213 to i64
  %1215 = getelementptr inbounds double, ptr %1212, i64 %1214
  %1216 = load double, ptr %1215, align 8, !tbaa !11
  %1217 = fcmp olt double %1216, 0.000000e+00
  br i1 %1217, label %1218, label %1219

1218:                                             ; preds = %1211
  br label %1399

1219:                                             ; preds = %1211
  store double 0.000000e+00, ptr %78, align 8, !tbaa !11
  %1220 = load ptr, ptr %40, align 8, !tbaa !5
  %1221 = load i32, ptr %89, align 4, !tbaa !9
  %1222 = sext i32 %1221 to i64
  %1223 = getelementptr inbounds double, ptr %1220, i64 %1222
  %1224 = load double, ptr %1223, align 8, !tbaa !11
  %1225 = fcmp oeq double %1224, 0.000000e+00
  br i1 %1225, label %1226, label %1266

1226:                                             ; preds = %1219
  %1227 = load ptr, ptr %34, align 8, !tbaa !5
  %1228 = load i32, ptr %1227, align 4, !tbaa !9
  store i32 %1228, ptr %68, align 4, !tbaa !9
  store i32 1, ptr %92, align 4, !tbaa !9
  br label %1229

1229:                                             ; preds = %1262, %1226
  %1230 = load i32, ptr %92, align 4, !tbaa !9
  %1231 = load i32, ptr %68, align 4, !tbaa !9
  %1232 = icmp sle i32 %1230, %1231
  br i1 %1232, label %1233, label %1265

1233:                                             ; preds = %1229
  %1234 = load double, ptr %78, align 8, !tbaa !11
  store double %1234, ptr %70, align 8, !tbaa !11
  %1235 = load ptr, ptr %42, align 8, !tbaa !5
  %1236 = load i32, ptr %92, align 4, !tbaa !9
  %1237 = load i32, ptr %89, align 4, !tbaa !9
  %1238 = load i32, ptr %63, align 4, !tbaa !9
  %1239 = mul nsw i32 %1237, %1238
  %1240 = add nsw i32 %1236, %1239
  %1241 = sext i32 %1240 to i64
  %1242 = getelementptr inbounds double, ptr %1235, i64 %1241
  %1243 = load double, ptr %1242, align 8, !tbaa !11
  store double %1243, ptr %69, align 8, !tbaa !11
  %1244 = load double, ptr %69, align 8, !tbaa !11
  %1245 = fcmp oge double %1244, 0.000000e+00
  br i1 %1245, label %1246, label %1248

1246:                                             ; preds = %1233
  %1247 = load double, ptr %69, align 8, !tbaa !11
  br label %1251

1248:                                             ; preds = %1233
  %1249 = load double, ptr %69, align 8, !tbaa !11
  %1250 = fneg double %1249
  br label %1251

1251:                                             ; preds = %1248, %1246
  %1252 = phi double [ %1247, %1246 ], [ %1250, %1248 ]
  store double %1252, ptr %71, align 8, !tbaa !11
  %1253 = load double, ptr %70, align 8, !tbaa !11
  %1254 = load double, ptr %71, align 8, !tbaa !11
  %1255 = fcmp oge double %1253, %1254
  br i1 %1255, label %1256, label %1258

1256:                                             ; preds = %1251
  %1257 = load double, ptr %70, align 8, !tbaa !11
  br label %1260

1258:                                             ; preds = %1251
  %1259 = load double, ptr %71, align 8, !tbaa !11
  br label %1260

1260:                                             ; preds = %1258, %1256
  %1261 = phi double [ %1257, %1256 ], [ %1259, %1258 ]
  store double %1261, ptr %78, align 8, !tbaa !11
  br label %1262

1262:                                             ; preds = %1260
  %1263 = load i32, ptr %92, align 4, !tbaa !9
  %1264 = add nsw i32 %1263, 1
  store i32 %1264, ptr %92, align 4, !tbaa !9
  br label %1229, !llvm.loop !17

1265:                                             ; preds = %1229
  br label %1326

1266:                                             ; preds = %1219
  %1267 = load ptr, ptr %34, align 8, !tbaa !5
  %1268 = load i32, ptr %1267, align 4, !tbaa !9
  store i32 %1268, ptr %68, align 4, !tbaa !9
  store i32 1, ptr %92, align 4, !tbaa !9
  br label %1269

1269:                                             ; preds = %1322, %1266
  %1270 = load i32, ptr %92, align 4, !tbaa !9
  %1271 = load i32, ptr %68, align 4, !tbaa !9
  %1272 = icmp sle i32 %1270, %1271
  br i1 %1272, label %1273, label %1325

1273:                                             ; preds = %1269
  %1274 = load double, ptr %78, align 8, !tbaa !11
  store double %1274, ptr %71, align 8, !tbaa !11
  %1275 = load ptr, ptr %42, align 8, !tbaa !5
  %1276 = load i32, ptr %92, align 4, !tbaa !9
  %1277 = load i32, ptr %89, align 4, !tbaa !9
  %1278 = load i32, ptr %63, align 4, !tbaa !9
  %1279 = mul nsw i32 %1277, %1278
  %1280 = add nsw i32 %1276, %1279
  %1281 = sext i32 %1280 to i64
  %1282 = getelementptr inbounds double, ptr %1275, i64 %1281
  %1283 = load double, ptr %1282, align 8, !tbaa !11
  store double %1283, ptr %69, align 8, !tbaa !11
  %1284 = load double, ptr %69, align 8, !tbaa !11
  %1285 = fcmp oge double %1284, 0.000000e+00
  br i1 %1285, label %1286, label %1288

1286:                                             ; preds = %1273
  %1287 = load double, ptr %69, align 8, !tbaa !11
  br label %1291

1288:                                             ; preds = %1273
  %1289 = load double, ptr %69, align 8, !tbaa !11
  %1290 = fneg double %1289
  br label %1291

1291:                                             ; preds = %1288, %1286
  %1292 = phi double [ %1287, %1286 ], [ %1290, %1288 ]
  %1293 = load ptr, ptr %42, align 8, !tbaa !5
  %1294 = load i32, ptr %92, align 4, !tbaa !9
  %1295 = load i32, ptr %89, align 4, !tbaa !9
  %1296 = add nsw i32 %1295, 1
  %1297 = load i32, ptr %63, align 4, !tbaa !9
  %1298 = mul nsw i32 %1296, %1297
  %1299 = add nsw i32 %1294, %1298
  %1300 = sext i32 %1299 to i64
  %1301 = getelementptr inbounds double, ptr %1293, i64 %1300
  %1302 = load double, ptr %1301, align 8, !tbaa !11
  store double %1302, ptr %70, align 8, !tbaa !11
  %1303 = load double, ptr %70, align 8, !tbaa !11
  %1304 = fcmp oge double %1303, 0.000000e+00
  br i1 %1304, label %1305, label %1307

1305:                                             ; preds = %1291
  %1306 = load double, ptr %70, align 8, !tbaa !11
  br label %1310

1307:                                             ; preds = %1291
  %1308 = load double, ptr %70, align 8, !tbaa !11
  %1309 = fneg double %1308
  br label %1310

1310:                                             ; preds = %1307, %1305
  %1311 = phi double [ %1306, %1305 ], [ %1309, %1307 ]
  %1312 = fadd double %1292, %1311
  store double %1312, ptr %72, align 8, !tbaa !11
  %1313 = load double, ptr %71, align 8, !tbaa !11
  %1314 = load double, ptr %72, align 8, !tbaa !11
  %1315 = fcmp oge double %1313, %1314
  br i1 %1315, label %1316, label %1318

1316:                                             ; preds = %1310
  %1317 = load double, ptr %71, align 8, !tbaa !11
  br label %1320

1318:                                             ; preds = %1310
  %1319 = load double, ptr %72, align 8, !tbaa !11
  br label %1320

1320:                                             ; preds = %1318, %1316
  %1321 = phi double [ %1317, %1316 ], [ %1319, %1318 ]
  store double %1321, ptr %78, align 8, !tbaa !11
  br label %1322

1322:                                             ; preds = %1320
  %1323 = load i32, ptr %92, align 4, !tbaa !9
  %1324 = add nsw i32 %1323, 1
  store i32 %1324, ptr %92, align 4, !tbaa !9
  br label %1269, !llvm.loop !18

1325:                                             ; preds = %1269
  br label %1326

1326:                                             ; preds = %1325, %1265
  %1327 = load double, ptr %78, align 8, !tbaa !11
  %1328 = load double, ptr %107, align 8, !tbaa !11
  %1329 = fcmp olt double %1327, %1328
  br i1 %1329, label %1330, label %1331

1330:                                             ; preds = %1326
  br label %1399

1331:                                             ; preds = %1326
  %1332 = load double, ptr %78, align 8, !tbaa !11
  %1333 = fdiv double 1.000000e+00, %1332
  store double %1333, ptr %78, align 8, !tbaa !11
  %1334 = load ptr, ptr %40, align 8, !tbaa !5
  %1335 = load i32, ptr %89, align 4, !tbaa !9
  %1336 = sext i32 %1335 to i64
  %1337 = getelementptr inbounds double, ptr %1334, i64 %1336
  %1338 = load double, ptr %1337, align 8, !tbaa !11
  %1339 = fcmp oeq double %1338, 0.000000e+00
  br i1 %1339, label %1340, label %1363

1340:                                             ; preds = %1331
  %1341 = load ptr, ptr %34, align 8, !tbaa !5
  %1342 = load i32, ptr %1341, align 4, !tbaa !9
  store i32 %1342, ptr %68, align 4, !tbaa !9
  store i32 1, ptr %92, align 4, !tbaa !9
  br label %1343

1343:                                             ; preds = %1359, %1340
  %1344 = load i32, ptr %92, align 4, !tbaa !9
  %1345 = load i32, ptr %68, align 4, !tbaa !9
  %1346 = icmp sle i32 %1344, %1345
  br i1 %1346, label %1347, label %1362

1347:                                             ; preds = %1343
  %1348 = load double, ptr %78, align 8, !tbaa !11
  %1349 = load ptr, ptr %42, align 8, !tbaa !5
  %1350 = load i32, ptr %92, align 4, !tbaa !9
  %1351 = load i32, ptr %89, align 4, !tbaa !9
  %1352 = load i32, ptr %63, align 4, !tbaa !9
  %1353 = mul nsw i32 %1351, %1352
  %1354 = add nsw i32 %1350, %1353
  %1355 = sext i32 %1354 to i64
  %1356 = getelementptr inbounds double, ptr %1349, i64 %1355
  %1357 = load double, ptr %1356, align 8, !tbaa !11
  %1358 = fmul double %1357, %1348
  store double %1358, ptr %1356, align 8, !tbaa !11
  br label %1359

1359:                                             ; preds = %1347
  %1360 = load i32, ptr %92, align 4, !tbaa !9
  %1361 = add nsw i32 %1360, 1
  store i32 %1361, ptr %92, align 4, !tbaa !9
  br label %1343, !llvm.loop !19

1362:                                             ; preds = %1343
  br label %1398

1363:                                             ; preds = %1331
  %1364 = load ptr, ptr %34, align 8, !tbaa !5
  %1365 = load i32, ptr %1364, align 4, !tbaa !9
  store i32 %1365, ptr %68, align 4, !tbaa !9
  store i32 1, ptr %92, align 4, !tbaa !9
  br label %1366

1366:                                             ; preds = %1394, %1363
  %1367 = load i32, ptr %92, align 4, !tbaa !9
  %1368 = load i32, ptr %68, align 4, !tbaa !9
  %1369 = icmp sle i32 %1367, %1368
  br i1 %1369, label %1370, label %1397

1370:                                             ; preds = %1366
  %1371 = load double, ptr %78, align 8, !tbaa !11
  %1372 = load ptr, ptr %42, align 8, !tbaa !5
  %1373 = load i32, ptr %92, align 4, !tbaa !9
  %1374 = load i32, ptr %89, align 4, !tbaa !9
  %1375 = load i32, ptr %63, align 4, !tbaa !9
  %1376 = mul nsw i32 %1374, %1375
  %1377 = add nsw i32 %1373, %1376
  %1378 = sext i32 %1377 to i64
  %1379 = getelementptr inbounds double, ptr %1372, i64 %1378
  %1380 = load double, ptr %1379, align 8, !tbaa !11
  %1381 = fmul double %1380, %1371
  store double %1381, ptr %1379, align 8, !tbaa !11
  %1382 = load double, ptr %78, align 8, !tbaa !11
  %1383 = load ptr, ptr %42, align 8, !tbaa !5
  %1384 = load i32, ptr %92, align 4, !tbaa !9
  %1385 = load i32, ptr %89, align 4, !tbaa !9
  %1386 = add nsw i32 %1385, 1
  %1387 = load i32, ptr %63, align 4, !tbaa !9
  %1388 = mul nsw i32 %1386, %1387
  %1389 = add nsw i32 %1384, %1388
  %1390 = sext i32 %1389 to i64
  %1391 = getelementptr inbounds double, ptr %1383, i64 %1390
  %1392 = load double, ptr %1391, align 8, !tbaa !11
  %1393 = fmul double %1392, %1382
  store double %1393, ptr %1391, align 8, !tbaa !11
  br label %1394

1394:                                             ; preds = %1370
  %1395 = load i32, ptr %92, align 4, !tbaa !9
  %1396 = add nsw i32 %1395, 1
  store i32 %1396, ptr %92, align 4, !tbaa !9
  br label %1366, !llvm.loop !20

1397:                                             ; preds = %1366
  br label %1398

1398:                                             ; preds = %1397, %1362
  br label %1399

1399:                                             ; preds = %1398, %1330, %1218
  br label %1400

1400:                                             ; preds = %1399
  %1401 = load i32, ptr %89, align 4, !tbaa !9
  %1402 = add nsw i32 %1401, 1
  store i32 %1402, ptr %89, align 4, !tbaa !9
  br label %1207, !llvm.loop !21

1403:                                             ; preds = %1207
  br label %1404

1404:                                             ; preds = %1403, %1187
  %1405 = load i32, ptr %80, align 4, !tbaa !9
  %1406 = icmp ne i32 %1405, 0
  br i1 %1406, label %1407, label %1621

1407:                                             ; preds = %1404
  %1408 = load ptr, ptr %30, align 8, !tbaa !5
  %1409 = load ptr, ptr %34, align 8, !tbaa !5
  %1410 = load ptr, ptr %46, align 8, !tbaa !5
  %1411 = load ptr, ptr %47, align 8, !tbaa !5
  %1412 = load ptr, ptr %48, align 8, !tbaa !5
  %1413 = getelementptr inbounds double, ptr %1412, i64 1
  %1414 = load ptr, ptr %49, align 8, !tbaa !5
  %1415 = getelementptr inbounds double, ptr %1414, i64 1
  %1416 = load ptr, ptr %34, align 8, !tbaa !5
  %1417 = load ptr, ptr %44, align 8, !tbaa !5
  %1418 = load i32, ptr %66, align 4, !tbaa !9
  %1419 = sext i32 %1418 to i64
  %1420 = getelementptr inbounds double, ptr %1417, i64 %1419
  %1421 = load ptr, ptr %45, align 8, !tbaa !5
  call void @dggbak_(ptr noundef %1408, ptr noundef @.str.17, ptr noundef %1409, ptr noundef %1410, ptr noundef %1411, ptr noundef %1413, ptr noundef %1415, ptr noundef %1416, ptr noundef %1420, ptr noundef %1421, ptr noundef %76)
  %1422 = load ptr, ptr %34, align 8, !tbaa !5
  %1423 = load i32, ptr %1422, align 4, !tbaa !9
  store i32 %1423, ptr %67, align 4, !tbaa !9
  store i32 1, ptr %89, align 4, !tbaa !9
  br label %1424

1424:                                             ; preds = %1617, %1407
  %1425 = load i32, ptr %89, align 4, !tbaa !9
  %1426 = load i32, ptr %67, align 4, !tbaa !9
  %1427 = icmp sle i32 %1425, %1426
  br i1 %1427, label %1428, label %1620

1428:                                             ; preds = %1424
  %1429 = load ptr, ptr %40, align 8, !tbaa !5
  %1430 = load i32, ptr %89, align 4, !tbaa !9
  %1431 = sext i32 %1430 to i64
  %1432 = getelementptr inbounds double, ptr %1429, i64 %1431
  %1433 = load double, ptr %1432, align 8, !tbaa !11
  %1434 = fcmp olt double %1433, 0.000000e+00
  br i1 %1434, label %1435, label %1436

1435:                                             ; preds = %1428
  br label %1616

1436:                                             ; preds = %1428
  store double 0.000000e+00, ptr %78, align 8, !tbaa !11
  %1437 = load ptr, ptr %40, align 8, !tbaa !5
  %1438 = load i32, ptr %89, align 4, !tbaa !9
  %1439 = sext i32 %1438 to i64
  %1440 = getelementptr inbounds double, ptr %1437, i64 %1439
  %1441 = load double, ptr %1440, align 8, !tbaa !11
  %1442 = fcmp oeq double %1441, 0.000000e+00
  br i1 %1442, label %1443, label %1483

1443:                                             ; preds = %1436
  %1444 = load ptr, ptr %34, align 8, !tbaa !5
  %1445 = load i32, ptr %1444, align 4, !tbaa !9
  store i32 %1445, ptr %68, align 4, !tbaa !9
  store i32 1, ptr %92, align 4, !tbaa !9
  br label %1446

1446:                                             ; preds = %1479, %1443
  %1447 = load i32, ptr %92, align 4, !tbaa !9
  %1448 = load i32, ptr %68, align 4, !tbaa !9
  %1449 = icmp sle i32 %1447, %1448
  br i1 %1449, label %1450, label %1482

1450:                                             ; preds = %1446
  %1451 = load double, ptr %78, align 8, !tbaa !11
  store double %1451, ptr %70, align 8, !tbaa !11
  %1452 = load ptr, ptr %44, align 8, !tbaa !5
  %1453 = load i32, ptr %92, align 4, !tbaa !9
  %1454 = load i32, ptr %89, align 4, !tbaa !9
  %1455 = load i32, ptr %65, align 4, !tbaa !9
  %1456 = mul nsw i32 %1454, %1455
  %1457 = add nsw i32 %1453, %1456
  %1458 = sext i32 %1457 to i64
  %1459 = getelementptr inbounds double, ptr %1452, i64 %1458
  %1460 = load double, ptr %1459, align 8, !tbaa !11
  store double %1460, ptr %69, align 8, !tbaa !11
  %1461 = load double, ptr %69, align 8, !tbaa !11
  %1462 = fcmp oge double %1461, 0.000000e+00
  br i1 %1462, label %1463, label %1465

1463:                                             ; preds = %1450
  %1464 = load double, ptr %69, align 8, !tbaa !11
  br label %1468

1465:                                             ; preds = %1450
  %1466 = load double, ptr %69, align 8, !tbaa !11
  %1467 = fneg double %1466
  br label %1468

1468:                                             ; preds = %1465, %1463
  %1469 = phi double [ %1464, %1463 ], [ %1467, %1465 ]
  store double %1469, ptr %71, align 8, !tbaa !11
  %1470 = load double, ptr %70, align 8, !tbaa !11
  %1471 = load double, ptr %71, align 8, !tbaa !11
  %1472 = fcmp oge double %1470, %1471
  br i1 %1472, label %1473, label %1475

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

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

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

1479:                                             ; preds = %1477
  %1480 = load i32, ptr %92, align 4, !tbaa !9
  %1481 = add nsw i32 %1480, 1
  store i32 %1481, ptr %92, align 4, !tbaa !9
  br label %1446, !llvm.loop !22

1482:                                             ; preds = %1446
  br label %1543

1483:                                             ; preds = %1436
  %1484 = load ptr, ptr %34, align 8, !tbaa !5
  %1485 = load i32, ptr %1484, align 4, !tbaa !9
  store i32 %1485, ptr %68, align 4, !tbaa !9
  store i32 1, ptr %92, align 4, !tbaa !9
  br label %1486

1486:                                             ; preds = %1539, %1483
  %1487 = load i32, ptr %92, align 4, !tbaa !9
  %1488 = load i32, ptr %68, align 4, !tbaa !9
  %1489 = icmp sle i32 %1487, %1488
  br i1 %1489, label %1490, label %1542

1490:                                             ; preds = %1486
  %1491 = load double, ptr %78, align 8, !tbaa !11
  store double %1491, ptr %71, align 8, !tbaa !11
  %1492 = load ptr, ptr %44, align 8, !tbaa !5
  %1493 = load i32, ptr %92, align 4, !tbaa !9
  %1494 = load i32, ptr %89, align 4, !tbaa !9
  %1495 = load i32, ptr %65, align 4, !tbaa !9
  %1496 = mul nsw i32 %1494, %1495
  %1497 = add nsw i32 %1493, %1496
  %1498 = sext i32 %1497 to i64
  %1499 = getelementptr inbounds double, ptr %1492, i64 %1498
  %1500 = load double, ptr %1499, align 8, !tbaa !11
  store double %1500, ptr %69, align 8, !tbaa !11
  %1501 = load double, ptr %69, align 8, !tbaa !11
  %1502 = fcmp oge double %1501, 0.000000e+00
  br i1 %1502, label %1503, label %1505

1503:                                             ; preds = %1490
  %1504 = load double, ptr %69, align 8, !tbaa !11
  br label %1508

1505:                                             ; preds = %1490
  %1506 = load double, ptr %69, align 8, !tbaa !11
  %1507 = fneg double %1506
  br label %1508

1508:                                             ; preds = %1505, %1503
  %1509 = phi double [ %1504, %1503 ], [ %1507, %1505 ]
  %1510 = load ptr, ptr %44, align 8, !tbaa !5
  %1511 = load i32, ptr %92, align 4, !tbaa !9
  %1512 = load i32, ptr %89, align 4, !tbaa !9
  %1513 = add nsw i32 %1512, 1
  %1514 = load i32, ptr %65, align 4, !tbaa !9
  %1515 = mul nsw i32 %1513, %1514
  %1516 = add nsw i32 %1511, %1515
  %1517 = sext i32 %1516 to i64
  %1518 = getelementptr inbounds double, ptr %1510, i64 %1517
  %1519 = load double, ptr %1518, align 8, !tbaa !11
  store double %1519, ptr %70, align 8, !tbaa !11
  %1520 = load double, ptr %70, align 8, !tbaa !11
  %1521 = fcmp oge double %1520, 0.000000e+00
  br i1 %1521, label %1522, label %1524

1522:                                             ; preds = %1508
  %1523 = load double, ptr %70, align 8, !tbaa !11
  br label %1527

1524:                                             ; preds = %1508
  %1525 = load double, ptr %70, align 8, !tbaa !11
  %1526 = fneg double %1525
  br label %1527

1527:                                             ; preds = %1524, %1522
  %1528 = phi double [ %1523, %1522 ], [ %1526, %1524 ]
  %1529 = fadd double %1509, %1528
  store double %1529, ptr %72, align 8, !tbaa !11
  %1530 = load double, ptr %71, align 8, !tbaa !11
  %1531 = load double, ptr %72, align 8, !tbaa !11
  %1532 = fcmp oge double %1530, %1531
  br i1 %1532, label %1533, label %1535

1533:                                             ; preds = %1527
  %1534 = load double, ptr %71, align 8, !tbaa !11
  br label %1537

1535:                                             ; preds = %1527
  %1536 = load double, ptr %72, align 8, !tbaa !11
  br label %1537

1537:                                             ; preds = %1535, %1533
  %1538 = phi double [ %1534, %1533 ], [ %1536, %1535 ]
  store double %1538, ptr %78, align 8, !tbaa !11
  br label %1539

1539:                                             ; preds = %1537
  %1540 = load i32, ptr %92, align 4, !tbaa !9
  %1541 = add nsw i32 %1540, 1
  store i32 %1541, ptr %92, align 4, !tbaa !9
  br label %1486, !llvm.loop !23

1542:                                             ; preds = %1486
  br label %1543

1543:                                             ; preds = %1542, %1482
  %1544 = load double, ptr %78, align 8, !tbaa !11
  %1545 = load double, ptr %107, align 8, !tbaa !11
  %1546 = fcmp olt double %1544, %1545
  br i1 %1546, label %1547, label %1548

1547:                                             ; preds = %1543
  br label %1616

1548:                                             ; preds = %1543
  %1549 = load double, ptr %78, align 8, !tbaa !11
  %1550 = fdiv double 1.000000e+00, %1549
  store double %1550, ptr %78, align 8, !tbaa !11
  %1551 = load ptr, ptr %40, align 8, !tbaa !5
  %1552 = load i32, ptr %89, align 4, !tbaa !9
  %1553 = sext i32 %1552 to i64
  %1554 = getelementptr inbounds double, ptr %1551, i64 %1553
  %1555 = load double, ptr %1554, align 8, !tbaa !11
  %1556 = fcmp oeq double %1555, 0.000000e+00
  br i1 %1556, label %1557, label %1580

1557:                                             ; preds = %1548
  %1558 = load ptr, ptr %34, align 8, !tbaa !5
  %1559 = load i32, ptr %1558, align 4, !tbaa !9
  store i32 %1559, ptr %68, align 4, !tbaa !9
  store i32 1, ptr %92, align 4, !tbaa !9
  br label %1560

1560:                                             ; preds = %1576, %1557
  %1561 = load i32, ptr %92, align 4, !tbaa !9
  %1562 = load i32, ptr %68, align 4, !tbaa !9
  %1563 = icmp sle i32 %1561, %1562
  br i1 %1563, label %1564, label %1579

1564:                                             ; preds = %1560
  %1565 = load double, ptr %78, align 8, !tbaa !11
  %1566 = load ptr, ptr %44, align 8, !tbaa !5
  %1567 = load i32, ptr %92, align 4, !tbaa !9
  %1568 = load i32, ptr %89, align 4, !tbaa !9
  %1569 = load i32, ptr %65, align 4, !tbaa !9
  %1570 = mul nsw i32 %1568, %1569
  %1571 = add nsw i32 %1567, %1570
  %1572 = sext i32 %1571 to i64
  %1573 = getelementptr inbounds double, ptr %1566, i64 %1572
  %1574 = load double, ptr %1573, align 8, !tbaa !11
  %1575 = fmul double %1574, %1565
  store double %1575, ptr %1573, align 8, !tbaa !11
  br label %1576

1576:                                             ; preds = %1564
  %1577 = load i32, ptr %92, align 4, !tbaa !9
  %1578 = add nsw i32 %1577, 1
  store i32 %1578, ptr %92, align 4, !tbaa !9
  br label %1560, !llvm.loop !24

1579:                                             ; preds = %1560
  br label %1615

1580:                                             ; preds = %1548
  %1581 = load ptr, ptr %34, align 8, !tbaa !5
  %1582 = load i32, ptr %1581, align 4, !tbaa !9
  store i32 %1582, ptr %68, align 4, !tbaa !9
  store i32 1, ptr %92, align 4, !tbaa !9
  br label %1583

1583:                                             ; preds = %1611, %1580
  %1584 = load i32, ptr %92, align 4, !tbaa !9
  %1585 = load i32, ptr %68, align 4, !tbaa !9
  %1586 = icmp sle i32 %1584, %1585
  br i1 %1586, label %1587, label %1614

1587:                                             ; preds = %1583
  %1588 = load double, ptr %78, align 8, !tbaa !11
  %1589 = load ptr, ptr %44, align 8, !tbaa !5
  %1590 = load i32, ptr %92, align 4, !tbaa !9
  %1591 = load i32, ptr %89, align 4, !tbaa !9
  %1592 = load i32, ptr %65, align 4, !tbaa !9
  %1593 = mul nsw i32 %1591, %1592
  %1594 = add nsw i32 %1590, %1593
  %1595 = sext i32 %1594 to i64
  %1596 = getelementptr inbounds double, ptr %1589, i64 %1595
  %1597 = load double, ptr %1596, align 8, !tbaa !11
  %1598 = fmul double %1597, %1588
  store double %1598, ptr %1596, align 8, !tbaa !11
  %1599 = load double, ptr %78, align 8, !tbaa !11
  %1600 = load ptr, ptr %44, align 8, !tbaa !5
  %1601 = load i32, ptr %92, align 4, !tbaa !9
  %1602 = load i32, ptr %89, align 4, !tbaa !9
  %1603 = add nsw i32 %1602, 1
  %1604 = load i32, ptr %65, align 4, !tbaa !9
  %1605 = mul nsw i32 %1603, %1604
  %1606 = add nsw i32 %1601, %1605
  %1607 = sext i32 %1606 to i64
  %1608 = getelementptr inbounds double, ptr %1600, i64 %1607
  %1609 = load double, ptr %1608, align 8, !tbaa !11
  %1610 = fmul double %1609, %1599
  store double %1610, ptr %1608, align 8, !tbaa !11
  br label %1611

1611:                                             ; preds = %1587
  %1612 = load i32, ptr %92, align 4, !tbaa !9
  %1613 = add nsw i32 %1612, 1
  store i32 %1613, ptr %92, align 4, !tbaa !9
  br label %1583, !llvm.loop !25

1614:                                             ; preds = %1583
  br label %1615

1615:                                             ; preds = %1614, %1579
  br label %1616

1616:                                             ; preds = %1615, %1547, %1435
  br label %1617

1617:                                             ; preds = %1616
  %1618 = load i32, ptr %89, align 4, !tbaa !9
  %1619 = add nsw i32 %1618, 1
  store i32 %1619, ptr %89, align 4, !tbaa !9
  br label %1424, !llvm.loop !26

1620:                                             ; preds = %1424
  br label %1621

1621:                                             ; preds = %1620, %1404
  br label %1622

1622:                                             ; preds = %1621, %1133, %1012, %960
  %1623 = load i32, ptr %93, align 4, !tbaa !9
  %1624 = icmp ne i32 %1623, 0
  br i1 %1624, label %1625, label %1634

1625:                                             ; preds = %1622
  %1626 = load ptr, ptr %34, align 8, !tbaa !5
  %1627 = load ptr, ptr %39, align 8, !tbaa !5
  %1628 = getelementptr inbounds double, ptr %1627, i64 1
  %1629 = 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 %101, ptr noundef %74, ptr noundef %1626, ptr noundef @c__1, ptr noundef %1628, ptr noundef %1629, ptr noundef %76)
  %1630 = load ptr, ptr %34, align 8, !tbaa !5
  %1631 = load ptr, ptr %40, align 8, !tbaa !5
  %1632 = getelementptr inbounds double, ptr %1631, i64 1
  %1633 = 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 %101, ptr noundef %74, ptr noundef %1630, ptr noundef @c__1, ptr noundef %1632, ptr noundef %1633, ptr noundef %76)
  br label %1634

1634:                                             ; preds = %1625, %1622
  %1635 = load i32, ptr %94, align 4, !tbaa !9
  %1636 = icmp ne i32 %1635, 0
  br i1 %1636, label %1637, label %1642

1637:                                             ; preds = %1634
  %1638 = load ptr, ptr %34, align 8, !tbaa !5
  %1639 = load ptr, ptr %41, align 8, !tbaa !5
  %1640 = getelementptr inbounds double, ptr %1639, i64 1
  %1641 = 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 %103, ptr noundef %75, ptr noundef %1638, ptr noundef @c__1, ptr noundef %1640, ptr noundef %1641, ptr noundef %76)
  br label %1642

1642:                                             ; preds = %1637, %1634
  %1643 = load i32, ptr %105, align 4, !tbaa !9
  %1644 = sitofp i32 %1643 to double
  %1645 = load ptr, ptr %54, align 8, !tbaa !5
  %1646 = getelementptr inbounds double, ptr %1645, i64 1
  store double %1644, ptr %1646, align 8, !tbaa !11
  store i32 1, ptr %112, align 4
  br label %1647

1647:                                             ; preds = %1642, %497, %491, %483
  call void @llvm.lifetime.end.p0(i64 4, ptr %111) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %109) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %108) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 8, ptr %103) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %102) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %99) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %96) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %86) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 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
  ret void
}

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

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

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

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

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

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

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

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

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

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

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

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

declare void @dtgsna_(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 = !{!7, !7, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = distinct !{!16, !15}
!17 = distinct !{!17, !15}
!18 = distinct !{!18, !15}
!19 = distinct !{!19, !15}
!20 = distinct !{!20, !15}
!21 = distinct !{!21, !15}
!22 = distinct !{!22, !15}
!23 = distinct !{!23, !15}
!24 = distinct !{!24, !15}
!25 = distinct !{!25, !15}
!26 = distinct !{!26, !15}


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

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.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
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i32, align 4
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@c__0 = 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 [7 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 [2 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [5 x i8], align 1
@c_b59 = external hidden global double, align 8
@c_b60 = external hidden global double, align 8
@.str.17 = external hidden unnamed_addr constant [2 x i8], align 1

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

64:                                               ; preds = %29
  %65 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  %.not641 = icmp eq i32 %65, 0
  %not..not641 = xor i1 %.not641, true
  br label %66

66:                                               ; preds = %64, %29
  %67 = phi i1 [ false, %29 ], [ %not..not641, %64 ]
  %68 = phi i1 [ false, %29 ], [ %.not641, %64 ]
  %69 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str) #6
  %.not642 = icmp eq i32 %69, 0
  br i1 %.not642, label %70, label %72

70:                                               ; preds = %66
  %71 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.1) #6
  %.not643 = icmp eq i32 %71, 0
  %not..not643 = xor i1 %.not643, true
  br label %72

72:                                               ; preds = %70, %66
  %73 = phi i1 [ false, %66 ], [ %not..not643, %70 ]
  %74 = phi i1 [ false, %66 ], [ %.not643, %70 ]
  %75 = or i1 %67, %73
  %76 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #6
  %.not644 = icmp eq i32 %76, 0
  br i1 %.not644, label %77, label %80

77:                                               ; preds = %72
  %78 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #6
  %79 = icmp ne i32 %78, 0
  br label %80

80:                                               ; preds = %77, %72
  %81 = phi i1 [ true, %72 ], [ %79, %77 ]
  %82 = tail call i32 @lsame_(ptr noundef %3, ptr noundef nonnull @.str) #6
  %83 = tail call i32 @lsame_(ptr noundef %3, ptr noundef nonnull @.str.3) #6
  %84 = tail call i32 @lsame_(ptr noundef %3, ptr noundef nonnull @.str.1) #6
  %85 = tail call i32 @lsame_(ptr noundef %3, ptr noundef nonnull @.str.4) #6
  store i32 0, ptr %28, align 4, !tbaa !5
  %86 = load i32, ptr %25, align 4, !tbaa !5
  %87 = icmp eq i32 %86, -1
  %88 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #6
  %.not645 = icmp eq i32 %88, 0
  br i1 %.not645, label %89, label %95

89:                                               ; preds = %80
  %90 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.5) #6
  %.not646 = icmp eq i32 %90, 0
  br i1 %.not646, label %91, label %95

91:                                               ; preds = %89
  %92 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #6
  %.not647 = icmp eq i32 %92, 0
  br i1 %.not647, label %93, label %95

93:                                               ; preds = %91
  %94 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.4) #6
  %.not648 = icmp eq i32 %94, 0
  %brmerge = select i1 %.not648, i1 true, i1 %68
  %brmerge881 = select i1 %brmerge, i1 true, i1 %74
  %.mux = select i1 %68, i32 -2, i32 -3
  %.mux.mux = select i1 %.not648, i32 -1, i32 %.mux
  br i1 %brmerge881, label %.thread689.sink.split, label %96

95:                                               ; preds = %91, %89, %80
  %brmerge882 = select i1 %68, i1 true, i1 %74
  %.mux883 = select i1 %68, i32 -2, i32 -3
  br i1 %brmerge882, label %.thread689.sink.split, label %96

96:                                               ; preds = %95, %93
  %97 = icmp ne i32 %82, 0
  %98 = icmp ne i32 %83, 0
  %or.cond = select i1 %97, i1 true, i1 %98
  %99 = icmp ne i32 %85, 0
  %or.cond3 = select i1 %or.cond, i1 true, i1 %99
  %100 = icmp ne i32 %84, 0
  %or.cond5 = select i1 %or.cond3, i1 true, i1 %100
  br i1 %or.cond5, label %101, label %.thread689.sink.split

101:                                              ; preds = %96
  %102 = load i32, ptr %4, align 4, !tbaa !5
  %103 = icmp slt i32 %102, 0
  br i1 %103, label %.thread689.sink.split, label %104

104:                                              ; preds = %101
  %105 = load i32, ptr %6, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %102, i32 1)
  %106 = icmp slt i32 %105, %spec.select
  br i1 %106, label %.thread689.sink.split, label %107

107:                                              ; preds = %104
  %108 = load i32, ptr %8, align 4, !tbaa !5
  %109 = icmp slt i32 %108, %spec.select
  br i1 %109, label %.thread689.sink.split, label %110

110:                                              ; preds = %107
  %111 = load i32, ptr %13, align 4, !tbaa !5
  %112 = icmp slt i32 %111, 1
  %113 = icmp ult i32 %111, %102
  %or.cond705 = and i1 %67, %113
  %or.cond708 = select i1 %112, i1 true, i1 %or.cond705
  br i1 %or.cond708, label %.thread689.sink.split, label %114

114:                                              ; preds = %110
  %115 = load i32, ptr %15, align 4, !tbaa !5
  %116 = icmp slt i32 %115, 1
  %117 = icmp ult i32 %115, %102
  %or.cond706 = and i1 %73, %117
  %or.cond709 = select i1 %116, i1 true, i1 %or.cond706
  br i1 %or.cond709, label %.thread689.sink.split, label %118

118:                                              ; preds = %114
  %.pr = load i32, ptr %28, align 4, !tbaa !5
  %119 = icmp eq i32 %.pr, 0
  br i1 %119, label %120, label %.thread689

120:                                              ; preds = %118
  %121 = icmp eq i32 %102, 0
  br i1 %121, label %148, label %122

122:                                              ; preds = %120
  %123 = xor i1 %81, true
  %or.cond7 = or i1 %75, %123
  %124 = mul nuw nsw i32 %102, 6
  %125 = shl nuw i32 %102, 1
  %.0597 = select i1 %or.cond7, i32 %124, i32 %125
  %or.cond9 = select i1 %98, i1 true, i1 %99
  %126 = mul nuw nsw i32 %102, 10
  %spec.select707 = select i1 %or.cond9, i32 %126, i32 %.0597
  %or.cond11 = select i1 %100, i1 true, i1 %99
  br i1 %or.cond11, label %127, label %132

127:                                              ; preds = %122
  %128 = add nuw nsw i32 %102, 4
  %129 = mul nsw i32 %125, %128
  %130 = add nsw i32 %129, 16
  %131 = tail call i32 @llvm.smax.i32(i32 %spec.select707, i32 %130)
  br label %132

132:                                              ; preds = %122, %127
  %.2 = phi i32 [ %131, %127 ], [ %spec.select707, %122 ]
  %133 = tail call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef nonnull %4, ptr noundef nonnull @c__0, i32 noundef 6, i32 noundef 1) #6
  %134 = add i32 %133, 1
  %135 = mul i32 %134, %102
  %136 = tail call i32 @llvm.smax.i32(i32 %.2, i32 %135)
  store i32 %136, ptr %30, align 4, !tbaa !5
  %137 = load i32, ptr %4, align 4, !tbaa !5
  %138 = tail call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.7, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef nonnull %4, ptr noundef nonnull @c__0, i32 noundef 6, i32 noundef 1) #6
  %139 = add i32 %138, 1
  %140 = mul i32 %139, %137
  store i32 %140, ptr %31, align 4, !tbaa !5
  %141 = tail call i32 @llvm.smax.i32(i32 %136, i32 %140)
  br i1 %67, label %142, label %148

142:                                              ; preds = %132
  store i32 %141, ptr %30, align 4, !tbaa !5
  %143 = load i32, ptr %4, align 4, !tbaa !5
  %144 = tail call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.7, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef nonnull %4, ptr noundef nonnull @c__0, i32 noundef 6, i32 noundef 1) #6
  %145 = add i32 %144, 1
  %146 = mul i32 %145, %143
  store i32 %146, ptr %31, align 4, !tbaa !5
  %147 = tail call i32 @llvm.smax.i32(i32 %141, i32 %146)
  br label %148

148:                                              ; preds = %120, %132, %142
  %.3 = phi i32 [ %.2, %142 ], [ %.2, %132 ], [ 1, %120 ]
  %.0 = phi i32 [ %147, %142 ], [ %141, %132 ], [ 1, %120 ]
  %149 = sitofp i32 %.0 to double
  store double %149, ptr %24, align 8, !tbaa !9
  %150 = load i32, ptr %25, align 4, !tbaa !5
  %151 = icmp sge i32 %150, %.3
  %or.cond13 = select i1 %151, i1 true, i1 %87
  br i1 %or.cond13, label %.thread, label %.thread689.sink.split

.thread:                                          ; preds = %148
  %.pr686.pr = load i32, ptr %28, align 4, !tbaa !5
  %.not653 = icmp eq i32 %.pr686.pr, 0
  br i1 %.not653, label %155, label %.thread689

.thread689.sink.split:                            ; preds = %95, %93, %148, %114, %110, %107, %104, %101, %96
  %.sink = phi i32 [ %.mux.mux, %93 ], [ %.mux883, %95 ], [ -4, %96 ], [ -5, %101 ], [ -7, %104 ], [ -9, %107 ], [ -14, %110 ], [ -16, %114 ], [ -26, %148 ]
  store i32 %.sink, ptr %28, align 4, !tbaa !5
  br label %.thread689

.thread689:                                       ; preds = %.thread689.sink.split, %118, %.thread
  %152 = phi i32 [ %.pr686.pr, %.thread ], [ %.pr, %118 ], [ %.sink, %.thread689.sink.split ]
  %153 = sub nsw i32 0, %152
  store i32 %153, ptr %30, align 4, !tbaa !5
  %154 = call i32 @xerbla_(ptr noundef nonnull @.str.10, ptr noundef nonnull %30, i32 noundef 6) #6
  br label %534

155:                                              ; preds = %.thread
  br i1 %87, label %534, label %156

156:                                              ; preds = %155
  %157 = load i32, ptr %4, align 4, !tbaa !5
  %158 = icmp eq i32 %157, 0
  br i1 %158, label %534, label %159

159:                                              ; preds = %156
  %160 = tail call double @dlamch_(ptr noundef nonnull @.str.2) #6
  %161 = tail call double @dlamch_(ptr noundef nonnull @.str.5) #6
  store double %161, ptr %45, align 8, !tbaa !9
  %162 = fdiv double 1.000000e+00, %161
  store double %162, ptr %42, align 8, !tbaa !9
  call void @dlabad_(ptr noundef nonnull %45, ptr noundef nonnull %42) #6
  %163 = load double, ptr %45, align 8, !tbaa !9
  %164 = call double @sqrt(double noundef %163) #6
  %165 = fdiv double %164, %160
  store double %165, ptr %45, align 8, !tbaa !9
  %166 = fdiv double 1.000000e+00, %165
  store double %166, ptr %42, align 8, !tbaa !9
  %167 = call double @dlange_(ptr noundef nonnull @.str.11, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %24) #6
  store double %167, ptr %32, align 8, !tbaa !9
  %168 = fcmp ogt double %167, 0.000000e+00
  %169 = load double, ptr %45, align 8
  %170 = fcmp olt double %167, %169
  %or.cond713 = select i1 %168, i1 %170, i1 false
  br i1 %or.cond713, label %174, label %171

171:                                              ; preds = %159
  %172 = load double, ptr %42, align 8, !tbaa !9
  %173 = fcmp ogt double %167, %172
  br i1 %173, label %174, label %175

174:                                              ; preds = %159, %171
  %storemerge710 = phi double [ %172, %171 ], [ %169, %159 ]
  store double %storemerge710, ptr %43, 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 %32, ptr noundef nonnull %43, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %34) #6
  br label %175

175:                                              ; preds = %171, %174
  %.not654696 = phi i1 [ false, %174 ], [ true, %171 ]
  %176 = call double @dlange_(ptr noundef nonnull @.str.11, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull %24) #6
  store double %176, ptr %33, align 8, !tbaa !9
  %177 = fcmp ogt double %176, 0.000000e+00
  %178 = load double, ptr %45, align 8
  %179 = fcmp olt double %176, %178
  %or.cond715 = select i1 %177, i1 %179, i1 false
  br i1 %or.cond715, label %183, label %180

180:                                              ; preds = %175
  %181 = load double, ptr %42, align 8, !tbaa !9
  %182 = fcmp ogt double %176, %181
  br i1 %182, label %183, label %184

183:                                              ; preds = %175, %180
  %storemerge711 = phi double [ %181, %180 ], [ %178, %175 ]
  store double %storemerge711, ptr %44, 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 %33, ptr noundef nonnull %44, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull %34) #6
  br label %184

184:                                              ; preds = %180, %183
  %.not656701 = phi i1 [ false, %183 ], [ true, %180 ]
  call void @dggbal_(ptr noundef %0, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef nonnull %24, ptr noundef nonnull %34) #6
  %185 = call double @dlange_(ptr noundef nonnull @.str.13, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %24) #6
  store double %185, ptr %20, align 8, !tbaa !9
  br i1 %.not654696, label %188, label %186

186:                                              ; preds = %184
  store double %185, ptr %24, 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 %43, ptr noundef nonnull %32, ptr noundef nonnull @c__1, ptr noundef nonnull @c__1, ptr noundef nonnull %24, ptr noundef nonnull @c__1, ptr noundef nonnull %34) #6
  %187 = load double, ptr %24, align 8, !tbaa !9
  store double %187, ptr %20, align 8, !tbaa !9
  br label %188

188:                                              ; preds = %186, %184
  %189 = call double @dlange_(ptr noundef nonnull @.str.13, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull %24) #6
  store double %189, ptr %21, align 8, !tbaa !9
  br i1 %.not656701, label %192, label %190

190:                                              ; preds = %188
  store double %189, ptr %24, 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 %44, ptr noundef nonnull %33, ptr noundef nonnull @c__1, ptr noundef nonnull @c__1, ptr noundef nonnull %24, ptr noundef nonnull @c__1, ptr noundef nonnull %34) #6
  %191 = load double, ptr %24, align 8, !tbaa !9
  store double %191, ptr %21, align 8, !tbaa !9
  br label %192

192:                                              ; preds = %190, %188
  %193 = load i32, ptr %17, align 4, !tbaa !5
  %194 = add nsw i32 %193, 1
  %195 = load i32, ptr %16, align 4, !tbaa !5
  %196 = sub i32 %194, %195
  store i32 %196, ptr %37, align 4, !tbaa !5
  %197 = icmp eq i32 %82, 0
  %or.cond15.not = select i1 %75, i1 true, i1 %197
  br i1 %or.cond15.not, label %198, label %201

198:                                              ; preds = %192
  %199 = load i32, ptr %4, align 4, !tbaa !5
  %reass.sub = sub i32 %199, %195
  %200 = add i32 %reass.sub, 1
  br label %201

201:                                              ; preds = %192, %198
  %storemerge = phi i32 [ %200, %198 ], [ %196, %192 ]
  store i32 %storemerge, ptr %36, align 4, !tbaa !5
  %202 = load i32, ptr %25, align 4, !tbaa !5
  %203 = sub i32 %202, %196
  store i32 %203, ptr %30, align 4, !tbaa !5
  %204 = add i32 %49, 1
  %205 = mul i32 %195, %204
  %206 = sext i32 %205 to i64
  %207 = getelementptr inbounds double, ptr %51, i64 %206
  %208 = sext i32 %196 to i64
  %209 = getelementptr double, ptr %61, i64 %208
  %210 = getelementptr i8, ptr %209, i64 8
  call void @dgeqrf_(ptr noundef nonnull %37, ptr noundef nonnull %36, ptr noundef %207, ptr noundef nonnull %8, ptr noundef nonnull %24, ptr noundef nonnull %210, ptr noundef nonnull %30, ptr noundef nonnull %34) #6
  %211 = load i32, ptr %25, align 4, !tbaa !5
  %212 = sub i32 %211, %196
  store i32 %212, ptr %30, align 4, !tbaa !5
  %213 = load i32, ptr %16, align 4, !tbaa !5
  %214 = mul i32 %213, %204
  %215 = sext i32 %214 to i64
  %216 = getelementptr inbounds double, ptr %51, i64 %215
  %217 = add i32 %46, 1
  %218 = mul i32 %213, %217
  %219 = sext i32 %218 to i64
  %220 = getelementptr inbounds double, ptr %48, i64 %219
  call void @dormqr_(ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15, ptr noundef nonnull %37, ptr noundef nonnull %36, ptr noundef nonnull %37, ptr noundef %216, ptr noundef nonnull %8, ptr noundef nonnull %24, ptr noundef %220, ptr noundef nonnull %6, ptr noundef nonnull %210, ptr noundef nonnull %30, ptr noundef nonnull %34) #6
  br i1 %67, label %221, label %244

221:                                              ; preds = %201
  call void @dlaset_(ptr noundef nonnull @.str.16, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef nonnull @c_b59, ptr noundef nonnull @c_b60, ptr noundef %12, ptr noundef nonnull %13) #6
  %222 = load i32, ptr %37, align 4, !tbaa !5
  %223 = icmp sgt i32 %222, 1
  br i1 %223, label %224, label %236

224:                                              ; preds = %221
  %225 = add nsw i32 %222, -1
  store i32 %225, ptr %30, align 4, !tbaa !5
  store i32 %225, ptr %31, align 4, !tbaa !5
  %226 = load i32, ptr %16, align 4, !tbaa !5
  %227 = add nsw i32 %226, 1
  %228 = mul nsw i32 %226, %49
  %229 = add nsw i32 %227, %228
  %230 = sext i32 %229 to i64
  %231 = getelementptr inbounds double, ptr %51, i64 %230
  %232 = mul nsw i32 %226, %53
  %233 = add nsw i32 %227, %232
  %234 = sext i32 %233 to i64
  %235 = getelementptr inbounds double, ptr %55, i64 %234
  call void @dlacpy_(ptr noundef nonnull @.str.14, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef %231, ptr noundef nonnull %8, ptr noundef %235, ptr noundef nonnull %13) #6
  br label %236

236:                                              ; preds = %224, %221
  %237 = load i32, ptr %25, align 4, !tbaa !5
  %238 = sub i32 %237, %196
  store i32 %238, ptr %30, align 4, !tbaa !5
  %239 = load i32, ptr %16, align 4, !tbaa !5
  %240 = add i32 %53, 1
  %241 = mul i32 %239, %240
  %242 = sext i32 %241 to i64
  %243 = getelementptr inbounds double, ptr %55, i64 %242
  call void @dorgqr_(ptr noundef nonnull %37, ptr noundef nonnull %37, ptr noundef nonnull %37, ptr noundef %243, ptr noundef nonnull %13, ptr noundef nonnull %24, ptr noundef nonnull %210, ptr noundef nonnull %30, ptr noundef nonnull %34) #6
  br label %244

244:                                              ; preds = %236, %201
  br i1 %73, label %245, label %246

245:                                              ; preds = %244
  call void @dlaset_(ptr noundef nonnull @.str.16, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef nonnull @c_b59, ptr noundef nonnull @c_b60, ptr noundef %14, ptr noundef nonnull %15) #6
  br label %246

246:                                              ; preds = %245, %244
  br i1 %or.cond15.not, label %247, label %248

247:                                              ; preds = %246
  call void @dgghrd_(ptr noundef %1, ptr noundef %2, ptr noundef nonnull %4, ptr noundef nonnull %16, ptr noundef nonnull %17, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %12, ptr noundef nonnull %13, ptr noundef %14, ptr noundef nonnull %15, ptr noundef nonnull %34) #6
  br label %256

248:                                              ; preds = %246
  %249 = load i32, ptr %16, align 4, !tbaa !5
  %250 = mul i32 %249, %217
  %251 = sext i32 %250 to i64
  %252 = getelementptr inbounds double, ptr %48, i64 %251
  %253 = mul i32 %249, %204
  %254 = sext i32 %253 to i64
  %255 = getelementptr inbounds double, ptr %51, i64 %254
  call void @dgghrd_(ptr noundef nonnull @.str, ptr noundef nonnull @.str, ptr noundef nonnull %37, ptr noundef nonnull @c__1, ptr noundef nonnull %37, ptr noundef %252, ptr noundef nonnull %6, ptr noundef %255, ptr noundef nonnull %8, ptr noundef %12, ptr noundef nonnull %13, ptr noundef %14, ptr noundef nonnull %15, ptr noundef nonnull %34) #6
  br label %256

256:                                              ; preds = %248, %247
  %.683 = phi i8 [ 69, %248 ], [ 83, %247 ]
  store i8 %.683, ptr %41, align 1, !tbaa !11
  call void @dhgeqz_(ptr noundef nonnull %41, ptr noundef %1, ptr noundef %2, ptr noundef nonnull %4, ptr noundef nonnull %16, ptr noundef nonnull %17, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef nonnull %13, ptr noundef %14, ptr noundef nonnull %15, ptr noundef nonnull %24, ptr noundef nonnull %25, ptr noundef nonnull %34) #6
  %257 = load i32, ptr %34, align 4, !tbaa !5
  %.not661 = icmp eq i32 %257, 0
  br i1 %.not661, label %267, label %258

258:                                              ; preds = %256
  %259 = icmp slt i32 %257, 1
  %.pre = load i32, ptr %4, align 4, !tbaa !5
  %.not677 = icmp sgt i32 %257, %.pre
  %or.cond879 = select i1 %259, i1 true, i1 %.not677
  br i1 %or.cond879, label %260, label %.loopexit720.sink.split

260:                                              ; preds = %258
  %261 = icmp sle i32 %257, %.pre
  %262 = shl i32 %.pre, 1
  %.not678 = icmp sgt i32 %257, %262
  %or.cond684 = or i1 %261, %.not678
  br i1 %or.cond684, label %265, label %263

263:                                              ; preds = %260
  %264 = sub nsw i32 %257, %.pre
  br label %.loopexit720.sink.split

265:                                              ; preds = %260
  %266 = add nsw i32 %.pre, 1
  br label %.loopexit720.sink.split

267:                                              ; preds = %256
  br i1 %or.cond15.not, label %268, label %.loopexit726

268:                                              ; preds = %267
  br i1 %75, label %269, label %279

269:                                              ; preds = %268
  br i1 %67, label %270, label %273

270:                                              ; preds = %269
  br i1 %73, label %271, label %272

271:                                              ; preds = %270
  store i8 66, ptr %41, align 1, !tbaa !11
  br label %274

272:                                              ; preds = %270
  store i8 76, ptr %41, align 1, !tbaa !11
  br label %274

273:                                              ; preds = %269
  store i8 82, ptr %41, align 1, !tbaa !11
  br label %274

274:                                              ; preds = %271, %272, %273
  call void @dtgevc_(ptr noundef nonnull %41, ptr noundef nonnull @.str.4, ptr noundef nonnull %40, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %12, ptr noundef nonnull %13, ptr noundef %14, ptr noundef nonnull %15, ptr noundef nonnull %4, ptr noundef nonnull %38, ptr noundef nonnull %24, ptr noundef nonnull %34) #6
  %275 = load i32, ptr %34, align 4, !tbaa !5
  %.not662 = icmp eq i32 %275, 0
  br i1 %.not662, label %279, label %276

276:                                              ; preds = %274
  %277 = load i32, ptr %4, align 4, !tbaa !5
  %278 = add nsw i32 %277, 2
  br label %.loopexit720.sink.split

279:                                              ; preds = %274, %268
  br i1 %197, label %280, label %.loopexit726

280:                                              ; preds = %279
  %281 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %281, ptr %30, align 4, !tbaa !5
  %.not663729 = icmp slt i32 %281, 1
  br i1 %.not663729, label %.loopexit726, label %.lr.ph733

.lr.ph733:                                        ; preds = %280
  %or.cond23 = select i1 %98, i1 true, i1 %99
  %282 = sext i32 %46 to i64
  %invariant.gep = getelementptr i8, ptr %48, i64 8
  br label %283

283:                                              ; preds = %.lr.ph733, %323
  %284 = phi i32 [ %281, %.lr.ph733 ], [ %324, %323 ]
  %indvars.iv = phi i64 [ 1, %.lr.ph733 ], [ %indvars.iv.next, %323 ]
  %.0619730 = phi i32 [ 0, %.lr.ph733 ], [ %.2621, %323 ]
  %.not664 = icmp eq i32 %.0619730, 0
  br i1 %.not664, label %285, label %323

285:                                              ; preds = %283
  store i32 1, ptr %39, align 4, !tbaa !5
  %286 = load i32, ptr %4, align 4, !tbaa !5
  %287 = sext i32 %286 to i64
  %288 = icmp slt i64 %indvars.iv, %287
  br i1 %288, label %289, label %295

289:                                              ; preds = %285
  %290 = mul nsw i64 %indvars.iv, %282
  %gep = getelementptr double, ptr %invariant.gep, i64 %indvars.iv
  %291 = getelementptr double, ptr %gep, i64 %290
  %292 = load double, ptr %291, align 8, !tbaa !9
  %293 = fcmp une double %292, 0.000000e+00
  br i1 %293, label %294, label %295

294:                                              ; preds = %289
  store i32 2, ptr %39, align 4, !tbaa !5
  br label %295

295:                                              ; preds = %289, %294, %285
  %switch = phi i1 [ false, %294 ], [ true, %289 ], [ true, %285 ]
  %296 = phi i32 [ 2, %294 ], [ 1, %289 ], [ 1, %285 ]
  %.1620 = phi i32 [ 1, %294 ], [ 0, %289 ], [ 0, %285 ]
  store i32 %286, ptr %31, align 4, !tbaa !5
  %.not665727 = icmp slt i32 %286, 1
  br i1 %.not665727, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %295
  %297 = zext nneg i32 %286 to i64
  %298 = shl nuw nsw i64 %297, 2
  call void @llvm.memset.p0.i64(ptr align 4 %27, i8 0, i64 %298, i1 false), !tbaa !5
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.preheader, %295
  %299 = getelementptr inbounds i32, ptr %62, i64 %indvars.iv
  store i32 1, ptr %299, align 4, !tbaa !5
  br i1 %switch, label %302, label %300

300:                                              ; preds = %._crit_edge
  %301 = getelementptr inbounds i8, ptr %299, i64 4
  store i32 1, ptr %301, align 4, !tbaa !5
  br label %302

302:                                              ; preds = %._crit_edge, %300
  %303 = load i32, ptr %4, align 4, !tbaa !5
  %304 = mul nsw i32 %303, %296
  %305 = add nsw i32 %304, 1
  %306 = add nsw i32 %305, %304
  %307 = sext i32 %305 to i64
  br i1 %or.cond23, label %308, label %._crit_edge844

._crit_edge844:                                   ; preds = %302
  %.pre846 = sext i32 %306 to i64
  br label %316

308:                                              ; preds = %302
  %309 = getelementptr inbounds double, ptr %61, i64 %307
  %310 = sext i32 %306 to i64
  %311 = getelementptr inbounds double, ptr %61, i64 %310
  call void @dtgevc_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull %27, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull %24, ptr noundef nonnull %4, ptr noundef nonnull %309, ptr noundef nonnull %4, ptr noundef nonnull %39, ptr noundef nonnull %35, ptr noundef nonnull %311, ptr noundef nonnull %34) #6
  %312 = load i32, ptr %34, align 4, !tbaa !5
  %.not666 = icmp eq i32 %312, 0
  br i1 %.not666, label %316, label %313

313:                                              ; preds = %308
  %314 = load i32, ptr %4, align 4, !tbaa !5
  %315 = add nsw i32 %314, 2
  br label %.loopexit720.sink.split

316:                                              ; preds = %._crit_edge844, %308
  %.pre-phi847 = phi i64 [ %.pre846, %._crit_edge844 ], [ %310, %308 ]
  %317 = load i32, ptr %25, align 4, !tbaa !5
  %reass.sub781 = sub i32 %317, %306
  %318 = add i32 %reass.sub781, 1
  store i32 %318, ptr %31, align 4, !tbaa !5
  %319 = getelementptr inbounds double, ptr %61, i64 %307
  %320 = getelementptr inbounds double, ptr %59, i64 %indvars.iv
  %321 = getelementptr inbounds double, ptr %60, i64 %indvars.iv
  %322 = getelementptr inbounds double, ptr %61, i64 %.pre-phi847
  call void @dtgsna_(ptr noundef %3, ptr noundef nonnull @.str.5, ptr noundef nonnull %27, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull %24, ptr noundef nonnull %4, ptr noundef nonnull %319, ptr noundef nonnull %4, ptr noundef nonnull %320, ptr noundef nonnull %321, ptr noundef nonnull %39, ptr noundef nonnull %35, ptr noundef nonnull %322, ptr noundef nonnull %31, ptr noundef %26, ptr noundef nonnull %34) #6
  %.pre839 = load i32, ptr %30, align 4, !tbaa !5
  br label %323

323:                                              ; preds = %283, %316
  %324 = phi i32 [ %.pre839, %316 ], [ %284, %283 ]
  %.2621 = phi i32 [ %.1620, %316 ], [ 0, %283 ]
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %325 = sext i32 %324 to i64
  %.not663.not = icmp slt i64 %indvars.iv, %325
  br i1 %.not663.not, label %283, label %.loopexit726, !llvm.loop !12

.loopexit726:                                     ; preds = %323, %280, %279, %267
  br i1 %67, label %326, label %.loopexit725

326:                                              ; preds = %.loopexit726
  call void @dggbak_(ptr noundef %0, ptr noundef nonnull @.str.14, ptr noundef nonnull %4, ptr noundef nonnull %16, ptr noundef nonnull %17, ptr noundef %18, ptr noundef %19, ptr noundef nonnull %4, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %34) #6
  %327 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %327, ptr %30, align 4, !tbaa !5
  %.not667753 = icmp slt i32 %327, 1
  br i1 %.not667753, label %.loopexit725, label %.lr.ph756

.lr.ph756:                                        ; preds = %326
  %328 = load double, ptr %45, align 8
  %329 = add nuw i32 %327, 1
  %330 = sext i32 %53 to i64
  %wide.trip.count812 = zext i32 %329 to i64
  %331 = zext nneg i32 %327 to i64
  %332 = shl nsw i64 %330, 3
  %333 = shl nsw i64 %54, 3
  %334 = getelementptr i8, ptr %12, i64 %332
  %335 = getelementptr i8, ptr %334, i64 %333
  %scevgep = getelementptr i8, ptr %335, i64 8
  %336 = shl nuw nsw i64 %wide.trip.count812, 3
  %337 = add nsw i64 %336, -8
  %338 = mul i64 %337, %330
  %339 = getelementptr i8, ptr %12, i64 %338
  %340 = getelementptr i8, ptr %339, i64 %333
  %scevgep892 = getelementptr i8, ptr %340, i64 %336
  %341 = shl nsw i64 %330, 4
  %342 = getelementptr i8, ptr %12, i64 %341
  %343 = getelementptr i8, ptr %342, i64 %333
  %scevgep893 = getelementptr i8, ptr %343, i64 8
  %344 = add nsw i64 %332, 8
  %345 = mul i64 %344, %wide.trip.count812
  %346 = getelementptr i8, ptr %12, i64 %345
  %scevgep894 = getelementptr i8, ptr %346, i64 %333
  %347 = zext nneg i32 %327 to i64
  %348 = zext nneg i32 %327 to i64
  %349 = zext nneg i32 %327 to i64
  %xtraiter = and i64 %348, 1
  %350 = icmp eq i32 %329, 2
  %unroll_iter = and i64 %348, 2147483646
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  %min.iters.check898 = icmp ult i32 %327, 4
  %bound0 = icmp ult ptr %scevgep, %scevgep894
  %bound1 = icmp ult ptr %scevgep893, %scevgep892
  %found.conflict = and i1 %bound0, %bound1
  %stride.check = icmp slt i32 %53, 0
  %351 = or i1 %found.conflict, %stride.check
  %n.vec901 = and i64 %347, 2147483644
  %ind.end902 = or disjoint i64 %n.vec901, 1
  %cmp.n914 = icmp eq i64 %n.vec901, %347
  %352 = and i32 %327, 1
  %lcmp.mod970.not = icmp eq i32 %352, 0
  %min.iters.check = icmp ult i32 %327, 4
  %n.vec = and i64 %331, 2147483644
  %ind.end = or disjoint i64 %n.vec, 1
  %cmp.n = icmp eq i64 %n.vec, %331
  br label %353

353:                                              ; preds = %.lr.ph756, %.loopexit721
  %indvars.iv809 = phi i64 [ 1, %.lr.ph756 ], [ %indvars.iv.next810, %.loopexit721 ]
  %354 = getelementptr inbounds double, ptr %52, i64 %indvars.iv809
  %355 = load double, ptr %354, align 8, !tbaa !9
  %356 = fcmp olt double %355, 0.000000e+00
  br i1 %356, label %.loopexit721, label %357

357:                                              ; preds = %353
  %358 = fcmp oeq double %355, 0.000000e+00
  store i32 %327, ptr %31, align 4, !tbaa !5
  %359 = mul nsw i64 %indvars.iv809, %330
  br i1 %358, label %.lr.ph743, label %.lr.ph738

.lr.ph743:                                        ; preds = %357
  %invariant.gep859 = getelementptr double, ptr %55, i64 %359
  br i1 %350, label %.loopexit723.loopexit.unr-lcssa, label %.lr.ph743.new

.lr.ph743.new:                                    ; preds = %.lr.ph743
  %invariant.gep982 = getelementptr i8, ptr %invariant.gep859, i64 8
  br label %360

360:                                              ; preds = %360, %.lr.ph743.new
  %indvars.iv794 = phi i64 [ 1, %.lr.ph743.new ], [ %indvars.iv.next795.1, %360 ]
  %.0613740 = phi double [ 0.000000e+00, %.lr.ph743.new ], [ %372, %360 ]
  %niter = phi i64 [ 0, %.lr.ph743.new ], [ %niter.next.1, %360 ]
  %gep860 = getelementptr double, ptr %invariant.gep859, i64 %indvars.iv794
  %361 = load double, ptr %gep860, align 8, !tbaa !9
  %362 = fcmp oge double %361, 0.000000e+00
  %363 = fneg double %361
  %364 = select i1 %362, double %361, double %363
  %365 = fcmp oge double %.0613740, %364
  %366 = select i1 %365, double %.0613740, double %364
  %gep983 = getelementptr double, ptr %invariant.gep982, i64 %indvars.iv794
  %367 = load double, ptr %gep983, align 8, !tbaa !9
  %368 = fcmp oge double %367, 0.000000e+00
  %369 = fneg double %367
  %370 = select i1 %368, double %367, double %369
  %371 = fcmp oge double %366, %370
  %372 = select i1 %371, double %366, double %370
  %indvars.iv.next795.1 = add nuw nsw i64 %indvars.iv794, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %.loopexit723.loopexit.unr-lcssa, label %360, !llvm.loop !14

.lr.ph738:                                        ; preds = %357
  %373 = add nuw nsw i64 %indvars.iv809, 1
  %374 = mul nsw i64 %373, %330
  %invariant.gep855 = getelementptr double, ptr %55, i64 %359
  %invariant.gep857 = getelementptr double, ptr %55, i64 %374
  br label %375

375:                                              ; preds = %.lr.ph738, %375
  %indvars.iv791 = phi i64 [ 1, %.lr.ph738 ], [ %indvars.iv.next792, %375 ]
  %.1614735 = phi double [ 0.000000e+00, %.lr.ph738 ], [ %386, %375 ]
  %gep856 = getelementptr double, ptr %invariant.gep855, i64 %indvars.iv791
  %376 = load double, ptr %gep856, align 8, !tbaa !9
  %377 = fcmp oge double %376, 0.000000e+00
  %378 = fneg double %376
  %379 = select i1 %377, double %376, double %378
  %gep858 = getelementptr double, ptr %invariant.gep857, i64 %indvars.iv791
  %380 = load double, ptr %gep858, align 8, !tbaa !9
  %381 = fcmp oge double %380, 0.000000e+00
  %382 = fneg double %380
  %383 = select i1 %381, double %380, double %382
  %384 = fadd double %379, %383
  %385 = fcmp oge double %.1614735, %384
  %386 = select i1 %385, double %.1614735, double %384
  %indvars.iv.next792 = add nuw nsw i64 %indvars.iv791, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next792, %wide.trip.count812
  br i1 %exitcond.not, label %.loopexit723, label %375, !llvm.loop !15

.loopexit723.loopexit.unr-lcssa:                  ; preds = %360, %.lr.ph743
  %.lcssa967.ph = phi double [ poison, %.lr.ph743 ], [ %372, %360 ]
  %indvars.iv794.unr = phi i64 [ 1, %.lr.ph743 ], [ %indvars.iv.next795.1, %360 ]
  %.0613740.unr = phi double [ 0.000000e+00, %.lr.ph743 ], [ %372, %360 ]
  br i1 %lcmp.mod.not, label %.loopexit723, label %.loopexit723.loopexit.epilog-lcssa

.loopexit723.loopexit.epilog-lcssa:               ; preds = %.loopexit723.loopexit.unr-lcssa
  %gep860.epil = getelementptr double, ptr %invariant.gep859, i64 %indvars.iv794.unr
  %387 = load double, ptr %gep860.epil, align 8, !tbaa !9
  %388 = fcmp oge double %387, 0.000000e+00
  %389 = fneg double %387
  %390 = select i1 %388, double %387, double %389
  %391 = fcmp oge double %.0613740.unr, %390
  %392 = select i1 %391, double %.0613740.unr, double %390
  br label %.loopexit723

.loopexit723:                                     ; preds = %375, %.loopexit723.loopexit.epilog-lcssa, %.loopexit723.loopexit.unr-lcssa
  %.2615 = phi double [ %.lcssa967.ph, %.loopexit723.loopexit.unr-lcssa ], [ %392, %.loopexit723.loopexit.epilog-lcssa ], [ %386, %375 ]
  %393 = fcmp olt double %.2615, %328
  br i1 %393, label %.loopexit721, label %394

394:                                              ; preds = %.loopexit723
  %395 = fdiv double 1.000000e+00, %.2615
  store i32 %327, ptr %31, align 4, !tbaa !5
  %396 = mul nsw i64 %indvars.iv809, %330
  br i1 %358, label %.lr.ph752, label %.lr.ph748

.lr.ph752:                                        ; preds = %394
  %invariant.gep865 = getelementptr double, ptr %55, i64 %396
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.ph

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

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = or disjoint i64 %index, 1
  %397 = getelementptr double, ptr %invariant.gep865, i64 %offset.idx
  %398 = getelementptr i8, ptr %397, i64 16
  %wide.load = load <2 x double>, ptr %397, align 8, !tbaa !9
  %wide.load891 = load <2 x double>, ptr %398, align 8, !tbaa !9
  %399 = fmul <2 x double> %broadcast.splat, %wide.load
  %400 = fmul <2 x double> %broadcast.splat, %wide.load891
  store <2 x double> %399, ptr %397, align 8, !tbaa !9
  store <2 x double> %400, ptr %398, align 8, !tbaa !9
  %index.next = add nuw i64 %index, 4
  %401 = icmp eq i64 %index.next, %n.vec
  br i1 %401, label %middle.block, label %vector.body, !llvm.loop !16

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

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

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %indvars.iv804 = phi i64 [ %indvars.iv.next805, %scalar.ph ], [ %indvars.iv804.ph, %scalar.ph.preheader ]
  %gep866 = getelementptr double, ptr %invariant.gep865, i64 %indvars.iv804
  %402 = load double, ptr %gep866, align 8, !tbaa !9
  %403 = fmul double %395, %402
  store double %403, ptr %gep866, align 8, !tbaa !9
  %indvars.iv.next805 = add nuw nsw i64 %indvars.iv804, 1
  %exitcond808.not = icmp eq i64 %indvars.iv.next805, %wide.trip.count812
  br i1 %exitcond808.not, label %.loopexit721, label %scalar.ph, !llvm.loop !19

.lr.ph748:                                        ; preds = %394
  %404 = add nuw nsw i64 %indvars.iv809, 1
  %405 = mul nsw i64 %404, %330
  %invariant.gep861 = getelementptr double, ptr %55, i64 %396
  %invariant.gep863 = getelementptr double, ptr %55, i64 %405
  %brmerge986 = select i1 %min.iters.check898, i1 true, i1 %351
  br i1 %brmerge986, label %scalar.ph897.preheader, label %vector.ph899

vector.ph899:                                     ; preds = %.lr.ph748
  %broadcast.splatinsert909 = insertelement <2 x double> poison, double %395, i64 0
  %broadcast.splat910 = shufflevector <2 x double> %broadcast.splatinsert909, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body904

vector.body904:                                   ; preds = %vector.body904, %vector.ph899
  %index905 = phi i64 [ 0, %vector.ph899 ], [ %index.next913, %vector.body904 ]
  %offset.idx906 = or disjoint i64 %index905, 1
  %406 = getelementptr double, ptr %invariant.gep861, i64 %offset.idx906
  %407 = getelementptr i8, ptr %406, i64 16
  %wide.load907 = load <2 x double>, ptr %406, align 8, !tbaa !9, !alias.scope !20, !noalias !23
  %wide.load908 = load <2 x double>, ptr %407, align 8, !tbaa !9, !alias.scope !20, !noalias !23
  %408 = fmul <2 x double> %broadcast.splat910, %wide.load907
  %409 = fmul <2 x double> %broadcast.splat910, %wide.load908
  store <2 x double> %408, ptr %406, align 8, !tbaa !9, !alias.scope !20, !noalias !23
  store <2 x double> %409, ptr %407, align 8, !tbaa !9, !alias.scope !20, !noalias !23
  %410 = getelementptr double, ptr %invariant.gep863, i64 %offset.idx906
  %411 = getelementptr i8, ptr %410, i64 16
  %wide.load911 = load <2 x double>, ptr %410, align 8, !tbaa !9, !alias.scope !23
  %wide.load912 = load <2 x double>, ptr %411, align 8, !tbaa !9, !alias.scope !23
  %412 = fmul <2 x double> %broadcast.splat910, %wide.load911
  %413 = fmul <2 x double> %broadcast.splat910, %wide.load912
  store <2 x double> %412, ptr %410, align 8, !tbaa !9, !alias.scope !23
  store <2 x double> %413, ptr %411, align 8, !tbaa !9, !alias.scope !23
  %index.next913 = add nuw i64 %index905, 4
  %414 = icmp eq i64 %index.next913, %n.vec901
  br i1 %414, label %middle.block896, label %vector.body904, !llvm.loop !25

middle.block896:                                  ; preds = %vector.body904
  br i1 %cmp.n914, label %.loopexit721, label %scalar.ph897.preheader

scalar.ph897.preheader:                           ; preds = %.lr.ph748, %middle.block896
  %indvars.iv799.ph = phi i64 [ 1, %.lr.ph748 ], [ %ind.end902, %middle.block896 ]
  br i1 %lcmp.mod970.not, label %scalar.ph897.prol.loopexit, label %scalar.ph897.prol

scalar.ph897.prol:                                ; preds = %scalar.ph897.preheader
  %gep862.prol = getelementptr double, ptr %invariant.gep861, i64 %indvars.iv799.ph
  %415 = load double, ptr %gep862.prol, align 8, !tbaa !9
  %416 = fmul double %395, %415
  store double %416, ptr %gep862.prol, align 8, !tbaa !9
  %gep864.prol = getelementptr double, ptr %invariant.gep863, i64 %indvars.iv799.ph
  %417 = load double, ptr %gep864.prol, align 8, !tbaa !9
  %418 = fmul double %395, %417
  store double %418, ptr %gep864.prol, align 8, !tbaa !9
  %indvars.iv.next800.prol = add nuw nsw i64 %indvars.iv799.ph, 1
  br label %scalar.ph897.prol.loopexit

scalar.ph897.prol.loopexit:                       ; preds = %scalar.ph897.prol, %scalar.ph897.preheader
  %indvars.iv799.unr = phi i64 [ %indvars.iv799.ph, %scalar.ph897.preheader ], [ %indvars.iv.next800.prol, %scalar.ph897.prol ]
  %419 = icmp eq i64 %indvars.iv799.ph, %349
  br i1 %419, label %.loopexit721, label %scalar.ph897

scalar.ph897:                                     ; preds = %scalar.ph897.prol.loopexit, %scalar.ph897
  %indvars.iv799 = phi i64 [ %indvars.iv.next800.1, %scalar.ph897 ], [ %indvars.iv799.unr, %scalar.ph897.prol.loopexit ]
  %gep862 = getelementptr double, ptr %invariant.gep861, i64 %indvars.iv799
  %420 = load double, ptr %gep862, align 8, !tbaa !9
  %421 = fmul double %395, %420
  store double %421, ptr %gep862, align 8, !tbaa !9
  %gep864 = getelementptr double, ptr %invariant.gep863, i64 %indvars.iv799
  %422 = load double, ptr %gep864, align 8, !tbaa !9
  %423 = fmul double %395, %422
  store double %423, ptr %gep864, align 8, !tbaa !9
  %indvars.iv.next800 = add nuw nsw i64 %indvars.iv799, 1
  %gep862.1 = getelementptr double, ptr %invariant.gep861, i64 %indvars.iv.next800
  %424 = load double, ptr %gep862.1, align 8, !tbaa !9
  %425 = fmul double %395, %424
  store double %425, ptr %gep862.1, align 8, !tbaa !9
  %gep864.1 = getelementptr double, ptr %invariant.gep863, i64 %indvars.iv.next800
  %426 = load double, ptr %gep864.1, align 8, !tbaa !9
  %427 = fmul double %395, %426
  store double %427, ptr %gep864.1, align 8, !tbaa !9
  %indvars.iv.next800.1 = add nuw nsw i64 %indvars.iv799, 2
  %exitcond803.not.1 = icmp eq i64 %indvars.iv.next800.1, %wide.trip.count812
  br i1 %exitcond803.not.1, label %.loopexit721, label %scalar.ph897, !llvm.loop !26

.loopexit721:                                     ; preds = %scalar.ph897.prol.loopexit, %scalar.ph897, %scalar.ph, %middle.block896, %middle.block, %353, %.loopexit723
  %indvars.iv.next810 = add nuw nsw i64 %indvars.iv809, 1
  %exitcond813.not = icmp eq i64 %indvars.iv.next810, %wide.trip.count812
  br i1 %exitcond813.not, label %.loopexit725, label %353, !llvm.loop !27

.loopexit725:                                     ; preds = %.loopexit721, %326, %.loopexit726
  br i1 %73, label %428, label %.loopexit720

428:                                              ; preds = %.loopexit725
  call void @dggbak_(ptr noundef %0, ptr noundef nonnull @.str.17, ptr noundef nonnull %4, ptr noundef nonnull %16, ptr noundef nonnull %17, ptr noundef %18, ptr noundef %19, ptr noundef nonnull %4, ptr noundef %14, ptr noundef nonnull %15, ptr noundef nonnull %34) #6
  %429 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %429, ptr %30, align 4, !tbaa !5
  %.not668777 = icmp slt i32 %429, 1
  br i1 %.not668777, label %.loopexit720, label %.lr.ph780

.lr.ph780:                                        ; preds = %428
  %430 = load double, ptr %45, align 8
  %431 = add nuw i32 %429, 1
  %432 = sext i32 %56 to i64
  %wide.trip.count837 = zext i32 %431 to i64
  %433 = zext nneg i32 %429 to i64
  %434 = shl nsw i64 %432, 3
  %435 = shl nsw i64 %57, 3
  %436 = getelementptr i8, ptr %14, i64 %434
  %437 = getelementptr i8, ptr %436, i64 %435
  %scevgep933 = getelementptr i8, ptr %437, i64 8
  %438 = shl nuw nsw i64 %wide.trip.count837, 3
  %439 = add nsw i64 %438, -8
  %440 = mul i64 %439, %432
  %441 = getelementptr i8, ptr %14, i64 %440
  %442 = getelementptr i8, ptr %441, i64 %435
  %scevgep934 = getelementptr i8, ptr %442, i64 %438
  %443 = shl nsw i64 %432, 4
  %444 = getelementptr i8, ptr %14, i64 %443
  %445 = getelementptr i8, ptr %444, i64 %435
  %scevgep935 = getelementptr i8, ptr %445, i64 8
  %446 = add nsw i64 %434, 8
  %447 = mul i64 %446, %wide.trip.count837
  %448 = getelementptr i8, ptr %14, i64 %447
  %scevgep936 = getelementptr i8, ptr %448, i64 %435
  %449 = zext nneg i32 %429 to i64
  %450 = zext nneg i32 %429 to i64
  %451 = zext nneg i32 %429 to i64
  %xtraiter972 = and i64 %450, 1
  %452 = icmp eq i32 %431, 2
  %unroll_iter975 = and i64 %450, 2147483646
  %lcmp.mod973.not = icmp eq i64 %xtraiter972, 0
  %min.iters.check944 = icmp ult i32 %429, 4
  %bound0937 = icmp ult ptr %scevgep933, %scevgep936
  %bound1938 = icmp ult ptr %scevgep935, %scevgep934
  %found.conflict939 = and i1 %bound0937, %bound1938
  %stride.check940 = icmp slt i32 %56, 0
  %453 = or i1 %found.conflict939, %stride.check940
  %n.vec947 = and i64 %449, 2147483644
  %ind.end948 = or disjoint i64 %n.vec947, 1
  %cmp.n960 = icmp eq i64 %n.vec947, %449
  %454 = and i32 %429, 1
  %lcmp.mod978.not = icmp eq i32 %454, 0
  %min.iters.check917 = icmp ult i32 %429, 4
  %n.vec920 = and i64 %433, 2147483644
  %ind.end921 = or disjoint i64 %n.vec920, 1
  %cmp.n931 = icmp eq i64 %n.vec920, %433
  br label %455

455:                                              ; preds = %.lr.ph780, %.loopexit
  %indvars.iv834 = phi i64 [ 1, %.lr.ph780 ], [ %indvars.iv.next835, %.loopexit ]
  %456 = getelementptr inbounds double, ptr %52, i64 %indvars.iv834
  %457 = load double, ptr %456, align 8, !tbaa !9
  %458 = fcmp olt double %457, 0.000000e+00
  br i1 %458, label %.loopexit, label %459

459:                                              ; preds = %455
  %460 = fcmp oeq double %457, 0.000000e+00
  store i32 %429, ptr %31, align 4, !tbaa !5
  %461 = mul nsw i64 %indvars.iv834, %432
  br i1 %460, label %.lr.ph767, label %.lr.ph761

.lr.ph767:                                        ; preds = %459
  %invariant.gep871 = getelementptr double, ptr %58, i64 %461
  br i1 %452, label %.loopexit718.loopexit.unr-lcssa, label %.lr.ph767.new

.lr.ph767.new:                                    ; preds = %.lr.ph767
  %invariant.gep984 = getelementptr i8, ptr %invariant.gep871, i64 8
  br label %462

462:                                              ; preds = %462, %.lr.ph767.new
  %indvars.iv819 = phi i64 [ 1, %.lr.ph767.new ], [ %indvars.iv.next820.1, %462 ]
  %.3616764 = phi double [ 0.000000e+00, %.lr.ph767.new ], [ %474, %462 ]
  %niter976 = phi i64 [ 0, %.lr.ph767.new ], [ %niter976.next.1, %462 ]
  %gep872 = getelementptr double, ptr %invariant.gep871, i64 %indvars.iv819
  %463 = load double, ptr %gep872, align 8, !tbaa !9
  %464 = fcmp oge double %463, 0.000000e+00
  %465 = fneg double %463
  %466 = select i1 %464, double %463, double %465
  %467 = fcmp oge double %.3616764, %466
  %468 = select i1 %467, double %.3616764, double %466
  %gep985 = getelementptr double, ptr %invariant.gep984, i64 %indvars.iv819
  %469 = load double, ptr %gep985, align 8, !tbaa !9
  %470 = fcmp oge double %469, 0.000000e+00
  %471 = fneg double %469
  %472 = select i1 %470, double %469, double %471
  %473 = fcmp oge double %468, %472
  %474 = select i1 %473, double %468, double %472
  %indvars.iv.next820.1 = add nuw nsw i64 %indvars.iv819, 2
  %niter976.next.1 = add i64 %niter976, 2
  %niter976.ncmp.1 = icmp eq i64 %niter976.next.1, %unroll_iter975
  br i1 %niter976.ncmp.1, label %.loopexit718.loopexit.unr-lcssa, label %462, !llvm.loop !28

.lr.ph761:                                        ; preds = %459
  %475 = add nuw nsw i64 %indvars.iv834, 1
  %476 = mul nsw i64 %475, %432
  %invariant.gep867 = getelementptr double, ptr %58, i64 %461
  %invariant.gep869 = getelementptr double, ptr %58, i64 %476
  br label %477

477:                                              ; preds = %.lr.ph761, %477
  %indvars.iv814 = phi i64 [ 1, %.lr.ph761 ], [ %indvars.iv.next815, %477 ]
  %.4617758 = phi double [ 0.000000e+00, %.lr.ph761 ], [ %488, %477 ]
  %gep868 = getelementptr double, ptr %invariant.gep867, i64 %indvars.iv814
  %478 = load double, ptr %gep868, align 8, !tbaa !9
  %479 = fcmp oge double %478, 0.000000e+00
  %480 = fneg double %478
  %481 = select i1 %479, double %478, double %480
  %gep870 = getelementptr double, ptr %invariant.gep869, i64 %indvars.iv814
  %482 = load double, ptr %gep870, align 8, !tbaa !9
  %483 = fcmp oge double %482, 0.000000e+00
  %484 = fneg double %482
  %485 = select i1 %483, double %482, double %484
  %486 = fadd double %481, %485
  %487 = fcmp oge double %.4617758, %486
  %488 = select i1 %487, double %.4617758, double %486
  %indvars.iv.next815 = add nuw nsw i64 %indvars.iv814, 1
  %exitcond818.not = icmp eq i64 %indvars.iv.next815, %wide.trip.count837
  br i1 %exitcond818.not, label %.loopexit718, label %477, !llvm.loop !29

.loopexit718.loopexit.unr-lcssa:                  ; preds = %462, %.lr.ph767
  %.lcssa963.ph = phi double [ poison, %.lr.ph767 ], [ %474, %462 ]
  %indvars.iv819.unr = phi i64 [ 1, %.lr.ph767 ], [ %indvars.iv.next820.1, %462 ]
  %.3616764.unr = phi double [ 0.000000e+00, %.lr.ph767 ], [ %474, %462 ]
  br i1 %lcmp.mod973.not, label %.loopexit718, label %.loopexit718.loopexit.epilog-lcssa

.loopexit718.loopexit.epilog-lcssa:               ; preds = %.loopexit718.loopexit.unr-lcssa
  %gep872.epil = getelementptr double, ptr %invariant.gep871, i64 %indvars.iv819.unr
  %489 = load double, ptr %gep872.epil, align 8, !tbaa !9
  %490 = fcmp oge double %489, 0.000000e+00
  %491 = fneg double %489
  %492 = select i1 %490, double %489, double %491
  %493 = fcmp oge double %.3616764.unr, %492
  %494 = select i1 %493, double %.3616764.unr, double %492
  br label %.loopexit718

.loopexit718:                                     ; preds = %477, %.loopexit718.loopexit.epilog-lcssa, %.loopexit718.loopexit.unr-lcssa
  %.5618 = phi double [ %.lcssa963.ph, %.loopexit718.loopexit.unr-lcssa ], [ %494, %.loopexit718.loopexit.epilog-lcssa ], [ %488, %477 ]
  %495 = fcmp olt double %.5618, %430
  br i1 %495, label %.loopexit, label %496

496:                                              ; preds = %.loopexit718
  %497 = fdiv double 1.000000e+00, %.5618
  store i32 %429, ptr %31, align 4, !tbaa !5
  %498 = mul nsw i64 %indvars.iv834, %432
  br i1 %460, label %.lr.ph776, label %.lr.ph772

.lr.ph776:                                        ; preds = %496
  %invariant.gep877 = getelementptr double, ptr %58, i64 %498
  br i1 %min.iters.check917, label %scalar.ph916.preheader, label %vector.ph918

vector.ph918:                                     ; preds = %.lr.ph776
  %broadcast.splatinsert928 = insertelement <2 x double> poison, double %497, i64 0
  %broadcast.splat929 = shufflevector <2 x double> %broadcast.splatinsert928, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body923

vector.body923:                                   ; preds = %vector.body923, %vector.ph918
  %index924 = phi i64 [ 0, %vector.ph918 ], [ %index.next930, %vector.body923 ]
  %offset.idx925 = or disjoint i64 %index924, 1
  %499 = getelementptr double, ptr %invariant.gep877, i64 %offset.idx925
  %500 = getelementptr i8, ptr %499, i64 16
  %wide.load926 = load <2 x double>, ptr %499, align 8, !tbaa !9
  %wide.load927 = load <2 x double>, ptr %500, align 8, !tbaa !9
  %501 = fmul <2 x double> %broadcast.splat929, %wide.load926
  %502 = fmul <2 x double> %broadcast.splat929, %wide.load927
  store <2 x double> %501, ptr %499, align 8, !tbaa !9
  store <2 x double> %502, ptr %500, align 8, !tbaa !9
  %index.next930 = add nuw i64 %index924, 4
  %503 = icmp eq i64 %index.next930, %n.vec920
  br i1 %503, label %middle.block915, label %vector.body923, !llvm.loop !30

middle.block915:                                  ; preds = %vector.body923
  br i1 %cmp.n931, label %.loopexit, label %scalar.ph916.preheader

scalar.ph916.preheader:                           ; preds = %middle.block915, %.lr.ph776
  %indvars.iv829.ph = phi i64 [ 1, %.lr.ph776 ], [ %ind.end921, %middle.block915 ]
  br label %scalar.ph916

scalar.ph916:                                     ; preds = %scalar.ph916.preheader, %scalar.ph916
  %indvars.iv829 = phi i64 [ %indvars.iv.next830, %scalar.ph916 ], [ %indvars.iv829.ph, %scalar.ph916.preheader ]
  %gep878 = getelementptr double, ptr %invariant.gep877, i64 %indvars.iv829
  %504 = load double, ptr %gep878, align 8, !tbaa !9
  %505 = fmul double %497, %504
  store double %505, ptr %gep878, align 8, !tbaa !9
  %indvars.iv.next830 = add nuw nsw i64 %indvars.iv829, 1
  %exitcond833.not = icmp eq i64 %indvars.iv.next830, %wide.trip.count837
  br i1 %exitcond833.not, label %.loopexit, label %scalar.ph916, !llvm.loop !31

.lr.ph772:                                        ; preds = %496
  %506 = add nuw nsw i64 %indvars.iv834, 1
  %507 = mul nsw i64 %506, %432
  %invariant.gep873 = getelementptr double, ptr %58, i64 %498
  %invariant.gep875 = getelementptr double, ptr %58, i64 %507
  %brmerge987 = select i1 %min.iters.check944, i1 true, i1 %453
  br i1 %brmerge987, label %scalar.ph943.preheader, label %vector.ph945

vector.ph945:                                     ; preds = %.lr.ph772
  %broadcast.splatinsert955 = insertelement <2 x double> poison, double %497, i64 0
  %broadcast.splat956 = shufflevector <2 x double> %broadcast.splatinsert955, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body950

vector.body950:                                   ; preds = %vector.body950, %vector.ph945
  %index951 = phi i64 [ 0, %vector.ph945 ], [ %index.next959, %vector.body950 ]
  %offset.idx952 = or disjoint i64 %index951, 1
  %508 = getelementptr double, ptr %invariant.gep873, i64 %offset.idx952
  %509 = getelementptr i8, ptr %508, i64 16
  %wide.load953 = load <2 x double>, ptr %508, align 8, !tbaa !9, !alias.scope !32, !noalias !35
  %wide.load954 = load <2 x double>, ptr %509, align 8, !tbaa !9, !alias.scope !32, !noalias !35
  %510 = fmul <2 x double> %broadcast.splat956, %wide.load953
  %511 = fmul <2 x double> %broadcast.splat956, %wide.load954
  store <2 x double> %510, ptr %508, align 8, !tbaa !9, !alias.scope !32, !noalias !35
  store <2 x double> %511, ptr %509, align 8, !tbaa !9, !alias.scope !32, !noalias !35
  %512 = getelementptr double, ptr %invariant.gep875, i64 %offset.idx952
  %513 = getelementptr i8, ptr %512, i64 16
  %wide.load957 = load <2 x double>, ptr %512, align 8, !tbaa !9, !alias.scope !35
  %wide.load958 = load <2 x double>, ptr %513, align 8, !tbaa !9, !alias.scope !35
  %514 = fmul <2 x double> %broadcast.splat956, %wide.load957
  %515 = fmul <2 x double> %broadcast.splat956, %wide.load958
  store <2 x double> %514, ptr %512, align 8, !tbaa !9, !alias.scope !35
  store <2 x double> %515, ptr %513, align 8, !tbaa !9, !alias.scope !35
  %index.next959 = add nuw i64 %index951, 4
  %516 = icmp eq i64 %index.next959, %n.vec947
  br i1 %516, label %middle.block942, label %vector.body950, !llvm.loop !37

middle.block942:                                  ; preds = %vector.body950
  br i1 %cmp.n960, label %.loopexit, label %scalar.ph943.preheader

scalar.ph943.preheader:                           ; preds = %.lr.ph772, %middle.block942
  %indvars.iv824.ph = phi i64 [ 1, %.lr.ph772 ], [ %ind.end948, %middle.block942 ]
  br i1 %lcmp.mod978.not, label %scalar.ph943.prol.loopexit, label %scalar.ph943.prol

scalar.ph943.prol:                                ; preds = %scalar.ph943.preheader
  %gep874.prol = getelementptr double, ptr %invariant.gep873, i64 %indvars.iv824.ph
  %517 = load double, ptr %gep874.prol, align 8, !tbaa !9
  %518 = fmul double %497, %517
  store double %518, ptr %gep874.prol, align 8, !tbaa !9
  %gep876.prol = getelementptr double, ptr %invariant.gep875, i64 %indvars.iv824.ph
  %519 = load double, ptr %gep876.prol, align 8, !tbaa !9
  %520 = fmul double %497, %519
  store double %520, ptr %gep876.prol, align 8, !tbaa !9
  %indvars.iv.next825.prol = add nuw nsw i64 %indvars.iv824.ph, 1
  br label %scalar.ph943.prol.loopexit

scalar.ph943.prol.loopexit:                       ; preds = %scalar.ph943.prol, %scalar.ph943.preheader
  %indvars.iv824.unr = phi i64 [ %indvars.iv824.ph, %scalar.ph943.preheader ], [ %indvars.iv.next825.prol, %scalar.ph943.prol ]
  %521 = icmp eq i64 %indvars.iv824.ph, %451
  br i1 %521, label %.loopexit, label %scalar.ph943

scalar.ph943:                                     ; preds = %scalar.ph943.prol.loopexit, %scalar.ph943
  %indvars.iv824 = phi i64 [ %indvars.iv.next825.1, %scalar.ph943 ], [ %indvars.iv824.unr, %scalar.ph943.prol.loopexit ]
  %gep874 = getelementptr double, ptr %invariant.gep873, i64 %indvars.iv824
  %522 = load double, ptr %gep874, align 8, !tbaa !9
  %523 = fmul double %497, %522
  store double %523, ptr %gep874, align 8, !tbaa !9
  %gep876 = getelementptr double, ptr %invariant.gep875, i64 %indvars.iv824
  %524 = load double, ptr %gep876, align 8, !tbaa !9
  %525 = fmul double %497, %524
  store double %525, ptr %gep876, align 8, !tbaa !9
  %indvars.iv.next825 = add nuw nsw i64 %indvars.iv824, 1
  %gep874.1 = getelementptr double, ptr %invariant.gep873, i64 %indvars.iv.next825
  %526 = load double, ptr %gep874.1, align 8, !tbaa !9
  %527 = fmul double %497, %526
  store double %527, ptr %gep874.1, align 8, !tbaa !9
  %gep876.1 = getelementptr double, ptr %invariant.gep875, i64 %indvars.iv.next825
  %528 = load double, ptr %gep876.1, align 8, !tbaa !9
  %529 = fmul double %497, %528
  store double %529, ptr %gep876.1, align 8, !tbaa !9
  %indvars.iv.next825.1 = add nuw nsw i64 %indvars.iv824, 2
  %exitcond828.not.1 = icmp eq i64 %indvars.iv.next825.1, %wide.trip.count837
  br i1 %exitcond828.not.1, label %.loopexit, label %scalar.ph943, !llvm.loop !38

.loopexit:                                        ; preds = %scalar.ph943.prol.loopexit, %scalar.ph943, %scalar.ph916, %middle.block942, %middle.block915, %455, %.loopexit718
  %indvars.iv.next835 = add nuw nsw i64 %indvars.iv834, 1
  %exitcond838.not = icmp eq i64 %indvars.iv.next835, %wide.trip.count837
  br i1 %exitcond838.not, label %.loopexit720, label %455, !llvm.loop !39

.loopexit720.sink.split:                          ; preds = %258, %276, %313, %263, %265
  %.sink880 = phi i32 [ %266, %265 ], [ %264, %263 ], [ %315, %313 ], [ %278, %276 ], [ %257, %258 ]
  store i32 %.sink880, ptr %28, align 4, !tbaa !5
  br label %.loopexit720

.loopexit720:                                     ; preds = %.loopexit, %.loopexit720.sink.split, %428, %.loopexit725
  br i1 %.not654696, label %531, label %530

530:                                              ; preds = %.loopexit720
  call void @dlascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %43, ptr noundef nonnull %32, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef %9, ptr noundef nonnull %4, ptr noundef nonnull %34) #6
  call void @dlascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %43, ptr noundef nonnull %32, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef %10, ptr noundef nonnull %4, ptr noundef nonnull %34) #6
  br label %531

531:                                              ; preds = %530, %.loopexit720
  br i1 %.not656701, label %533, label %532

532:                                              ; preds = %531
  call void @dlascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %44, ptr noundef nonnull %33, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef %11, ptr noundef nonnull %4, ptr noundef nonnull %34) #6
  br label %533

533:                                              ; preds = %532, %531
  store double %149, ptr %24, align 8, !tbaa !9
  br label %534

534:                                              ; preds = %156, %155, %533, %.thread689
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %41) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %40) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %39) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %38) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %37) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %36) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %35) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %34) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #6
  ret void
}

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

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

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

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

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

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

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

declare void @dtgsna_(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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5

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 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #6 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = distinct !{!14, !13}
!15 = distinct !{!15, !13}
!16 = distinct !{!16, !13, !17, !18}
!17 = !{!"llvm.loop.isvectorized", i32 1}
!18 = !{!"llvm.loop.unroll.runtime.disable"}
!19 = distinct !{!19, !13, !18, !17}
!20 = !{!21}
!21 = distinct !{!21, !22}
!22 = distinct !{!22, !"LVerDomain"}
!23 = !{!24}
!24 = distinct !{!24, !22}
!25 = distinct !{!25, !13, !17, !18}
!26 = distinct !{!26, !13, !17}
!27 = distinct !{!27, !13}
!28 = distinct !{!28, !13}
!29 = distinct !{!29, !13}
!30 = distinct !{!30, !13, !17, !18}
!31 = distinct !{!31, !13, !18, !17}
!32 = !{!33}
!33 = distinct !{!33, !34}
!34 = distinct !{!34, !"LVerDomain"}
!35 = !{!36}
!36 = distinct !{!36, !34}
!37 = distinct !{!37, !13, !17, !18}
!38 = distinct !{!38, !13, !17}
!39 = distinct !{!39, !13}


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