; LLVM IR from niuyishuai/PDCABB :: LAPACK_BLAS/LAPACK (dggev)

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

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.2 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c__0 = external hidden global i64, align 8
@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@c_n1 = external hidden global i64, align 8
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [5 x i8], align 1
@c_b36 = external hidden global double, align 8
@c_b37 = external hidden global double, align 8
@.str.14 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [2 x i8], align 1

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

126:                                              ; preds = %17
  store i64 1, ptr %73, align 8, !tbaa !9
  store i64 0, ptr %62, align 8, !tbaa !9
  br label %134

127:                                              ; preds = %17
  %128 = load ptr, ptr %19, align 8, !tbaa !5
  %129 = call i64 @lsame_(ptr noundef %128, ptr noundef @.str.1)
  %130 = icmp ne i64 %129, 0
  br i1 %130, label %131, label %132

131:                                              ; preds = %127
  store i64 2, ptr %73, align 8, !tbaa !9
  store i64 1, ptr %62, align 8, !tbaa !9
  br label %133

132:                                              ; preds = %127
  store i64 -1, ptr %73, align 8, !tbaa !9
  store i64 0, ptr %62, align 8, !tbaa !9
  br label %133

133:                                              ; preds = %132, %131
  br label %134

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

138:                                              ; preds = %134
  store i64 1, ptr %75, align 8, !tbaa !9
  store i64 0, ptr %63, align 8, !tbaa !9
  br label %146

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

143:                                              ; preds = %139
  store i64 2, ptr %75, align 8, !tbaa !9
  store i64 1, ptr %63, align 8, !tbaa !9
  br label %145

144:                                              ; preds = %139
  store i64 -1, ptr %75, align 8, !tbaa !9
  store i64 0, ptr %63, align 8, !tbaa !9
  br label %145

145:                                              ; preds = %144, %143
  br label %146

146:                                              ; preds = %145, %138
  %147 = load i64, ptr %62, align 8, !tbaa !9
  %148 = icmp ne i64 %147, 0
  br i1 %148, label %152, label %149

149:                                              ; preds = %146
  %150 = load i64, ptr %63, align 8, !tbaa !9
  %151 = icmp ne i64 %150, 0
  br label %152

152:                                              ; preds = %149, %146
  %153 = phi i1 [ true, %146 ], [ %151, %149 ]
  %154 = zext i1 %153 to i32
  %155 = sext i32 %154 to i64
  store i64 %155, ptr %56, align 8, !tbaa !9
  %156 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 0, ptr %156, align 8, !tbaa !9
  %157 = load ptr, ptr %34, align 8, !tbaa !5
  %158 = load i64, ptr %157, align 8, !tbaa !9
  %159 = icmp eq i64 %158, -1
  %160 = zext i1 %159 to i32
  %161 = sext i32 %160 to i64
  store i64 %161, ptr %81, align 8, !tbaa !9
  %162 = load i64, ptr %73, align 8, !tbaa !9
  %163 = icmp sle i64 %162, 0
  br i1 %163, label %164, label %166

164:                                              ; preds = %152
  %165 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -1, ptr %165, align 8, !tbaa !9
  br label %243

166:                                              ; preds = %152
  %167 = load i64, ptr %75, align 8, !tbaa !9
  %168 = icmp sle i64 %167, 0
  br i1 %168, label %169, label %171

169:                                              ; preds = %166
  %170 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -2, ptr %170, align 8, !tbaa !9
  br label %242

171:                                              ; preds = %166
  %172 = load ptr, ptr %21, align 8, !tbaa !5
  %173 = load i64, ptr %172, align 8, !tbaa !9
  %174 = icmp slt i64 %173, 0
  br i1 %174, label %175, label %177

175:                                              ; preds = %171
  %176 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -3, ptr %176, align 8, !tbaa !9
  br label %241

177:                                              ; preds = %171
  %178 = load ptr, ptr %23, align 8, !tbaa !5
  %179 = load i64, ptr %178, align 8, !tbaa !9
  %180 = load ptr, ptr %21, align 8, !tbaa !5
  %181 = load i64, ptr %180, align 8, !tbaa !9
  %182 = icmp sge i64 1, %181
  br i1 %182, label %183, label %184

183:                                              ; preds = %177
  br label %187

184:                                              ; preds = %177
  %185 = load ptr, ptr %21, align 8, !tbaa !5
  %186 = load i64, ptr %185, align 8, !tbaa !9
  br label %187

187:                                              ; preds = %184, %183
  %188 = phi i64 [ 1, %183 ], [ %186, %184 ]
  %189 = icmp slt i64 %179, %188
  br i1 %189, label %190, label %192

190:                                              ; preds = %187
  %191 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -5, ptr %191, align 8, !tbaa !9
  br label %240

192:                                              ; preds = %187
  %193 = load ptr, ptr %25, align 8, !tbaa !5
  %194 = load i64, ptr %193, align 8, !tbaa !9
  %195 = load ptr, ptr %21, align 8, !tbaa !5
  %196 = load i64, ptr %195, align 8, !tbaa !9
  %197 = icmp sge i64 1, %196
  br i1 %197, label %198, label %199

198:                                              ; preds = %192
  br label %202

199:                                              ; preds = %192
  %200 = load ptr, ptr %21, align 8, !tbaa !5
  %201 = load i64, ptr %200, align 8, !tbaa !9
  br label %202

202:                                              ; preds = %199, %198
  %203 = phi i64 [ 1, %198 ], [ %201, %199 ]
  %204 = icmp slt i64 %194, %203
  br i1 %204, label %205, label %207

205:                                              ; preds = %202
  %206 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -7, ptr %206, align 8, !tbaa !9
  br label %239

207:                                              ; preds = %202
  %208 = load ptr, ptr %30, align 8, !tbaa !5
  %209 = load i64, ptr %208, align 8, !tbaa !9
  %210 = icmp slt i64 %209, 1
  br i1 %210, label %220, label %211

211:                                              ; preds = %207
  %212 = load i64, ptr %62, align 8, !tbaa !9
  %213 = icmp ne i64 %212, 0
  br i1 %213, label %214, label %222

214:                                              ; preds = %211
  %215 = load ptr, ptr %30, align 8, !tbaa !5
  %216 = load i64, ptr %215, align 8, !tbaa !9
  %217 = load ptr, ptr %21, align 8, !tbaa !5
  %218 = load i64, ptr %217, align 8, !tbaa !9
  %219 = icmp slt i64 %216, %218
  br i1 %219, label %220, label %222

220:                                              ; preds = %214, %207
  %221 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -12, ptr %221, align 8, !tbaa !9
  br label %238

222:                                              ; preds = %214, %211
  %223 = load ptr, ptr %32, align 8, !tbaa !5
  %224 = load i64, ptr %223, align 8, !tbaa !9
  %225 = icmp slt i64 %224, 1
  br i1 %225, label %235, label %226

226:                                              ; preds = %222
  %227 = load i64, ptr %63, align 8, !tbaa !9
  %228 = icmp ne i64 %227, 0
  br i1 %228, label %229, label %237

229:                                              ; preds = %226
  %230 = load ptr, ptr %32, align 8, !tbaa !5
  %231 = load i64, ptr %230, align 8, !tbaa !9
  %232 = load ptr, ptr %21, align 8, !tbaa !5
  %233 = load i64, ptr %232, align 8, !tbaa !9
  %234 = icmp slt i64 %231, %233
  br i1 %234, label %235, label %237

235:                                              ; preds = %229, %222
  %236 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -14, ptr %236, align 8, !tbaa !9
  br label %237

237:                                              ; preds = %235, %229, %226
  br label %238

238:                                              ; preds = %237, %220
  br label %239

239:                                              ; preds = %238, %205
  br label %240

240:                                              ; preds = %239, %190
  br label %241

241:                                              ; preds = %240, %175
  br label %242

242:                                              ; preds = %241, %169
  br label %243

243:                                              ; preds = %242, %164
  %244 = load ptr, ptr %35, align 8, !tbaa !5
  %245 = load i64, ptr %244, align 8, !tbaa !9
  %246 = icmp eq i64 %245, 0
  br i1 %246, label %247, label %328

247:                                              ; preds = %243
  store i64 1, ptr %44, align 8, !tbaa !9
  %248 = load ptr, ptr %21, align 8, !tbaa !5
  %249 = load i64, ptr %248, align 8, !tbaa !9
  %250 = shl i64 %249, 3
  store i64 %250, ptr %45, align 8, !tbaa !9
  %251 = load i64, ptr %44, align 8, !tbaa !9
  %252 = load i64, ptr %45, align 8, !tbaa !9
  %253 = icmp sge i64 %251, %252
  br i1 %253, label %254, label %256

254:                                              ; preds = %247
  %255 = load i64, ptr %44, align 8, !tbaa !9
  br label %258

256:                                              ; preds = %247
  %257 = load i64, ptr %45, align 8, !tbaa !9
  br label %258

258:                                              ; preds = %256, %254
  %259 = phi i64 [ %255, %254 ], [ %257, %256 ]
  store i64 %259, ptr %78, align 8, !tbaa !9
  store i64 1, ptr %44, align 8, !tbaa !9
  %260 = load ptr, ptr %21, align 8, !tbaa !5
  %261 = load i64, ptr %260, align 8, !tbaa !9
  %262 = load ptr, ptr %21, align 8, !tbaa !5
  %263 = load ptr, ptr %21, align 8, !tbaa !5
  %264 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef %262, ptr noundef @c__1, ptr noundef %263, ptr noundef @c__0)
  %265 = add nsw i64 %264, 7
  %266 = mul nsw i64 %261, %265
  store i64 %266, ptr %45, align 8, !tbaa !9
  %267 = load i64, ptr %44, align 8, !tbaa !9
  %268 = load i64, ptr %45, align 8, !tbaa !9
  %269 = icmp sge i64 %267, %268
  br i1 %269, label %270, label %272

270:                                              ; preds = %258
  %271 = load i64, ptr %44, align 8, !tbaa !9
  br label %274

272:                                              ; preds = %258
  %273 = load i64, ptr %45, align 8, !tbaa !9
  br label %274

274:                                              ; preds = %272, %270
  %275 = phi i64 [ %271, %270 ], [ %273, %272 ]
  store i64 %275, ptr %79, align 8, !tbaa !9
  %276 = load i64, ptr %79, align 8, !tbaa !9
  store i64 %276, ptr %44, align 8, !tbaa !9
  %277 = load ptr, ptr %21, align 8, !tbaa !5
  %278 = load i64, ptr %277, align 8, !tbaa !9
  %279 = load ptr, ptr %21, align 8, !tbaa !5
  %280 = load ptr, ptr %21, align 8, !tbaa !5
  %281 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.4, ptr noundef @.str.3, ptr noundef %279, ptr noundef @c__1, ptr noundef %280, ptr noundef @c__0)
  %282 = add nsw i64 %281, 7
  %283 = mul nsw i64 %278, %282
  store i64 %283, ptr %45, align 8, !tbaa !9
  %284 = load i64, ptr %44, align 8, !tbaa !9
  %285 = load i64, ptr %45, align 8, !tbaa !9
  %286 = icmp sge i64 %284, %285
  br i1 %286, label %287, label %289

287:                                              ; preds = %274
  %288 = load i64, ptr %44, align 8, !tbaa !9
  br label %291

289:                                              ; preds = %274
  %290 = load i64, ptr %45, align 8, !tbaa !9
  br label %291

291:                                              ; preds = %289, %287
  %292 = phi i64 [ %288, %287 ], [ %290, %289 ]
  store i64 %292, ptr %79, align 8, !tbaa !9
  %293 = load i64, ptr %62, align 8, !tbaa !9
  %294 = icmp ne i64 %293, 0
  br i1 %294, label %295, label %313

295:                                              ; preds = %291
  %296 = load i64, ptr %79, align 8, !tbaa !9
  store i64 %296, ptr %44, align 8, !tbaa !9
  %297 = load ptr, ptr %21, align 8, !tbaa !5
  %298 = load i64, ptr %297, align 8, !tbaa !9
  %299 = load ptr, ptr %21, align 8, !tbaa !5
  %300 = load ptr, ptr %21, align 8, !tbaa !5
  %301 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.5, ptr noundef @.str.3, ptr noundef %299, ptr noundef @c__1, ptr noundef %300, ptr noundef @c_n1)
  %302 = add nsw i64 %301, 7
  %303 = mul nsw i64 %298, %302
  store i64 %303, ptr %45, align 8, !tbaa !9
  %304 = load i64, ptr %44, align 8, !tbaa !9
  %305 = load i64, ptr %45, align 8, !tbaa !9
  %306 = icmp sge i64 %304, %305
  br i1 %306, label %307, label %309

307:                                              ; preds = %295
  %308 = load i64, ptr %44, align 8, !tbaa !9
  br label %311

309:                                              ; preds = %295
  %310 = load i64, ptr %45, align 8, !tbaa !9
  br label %311

311:                                              ; preds = %309, %307
  %312 = phi i64 [ %308, %307 ], [ %310, %309 ]
  store i64 %312, ptr %79, align 8, !tbaa !9
  br label %313

313:                                              ; preds = %311, %291
  %314 = load i64, ptr %79, align 8, !tbaa !9
  %315 = sitofp i64 %314 to double
  %316 = load ptr, ptr %33, align 8, !tbaa !5
  %317 = getelementptr inbounds double, ptr %316, i64 1
  store double %315, ptr %317, align 8, !tbaa !11
  %318 = load ptr, ptr %34, align 8, !tbaa !5
  %319 = load i64, ptr %318, align 8, !tbaa !9
  %320 = load i64, ptr %78, align 8, !tbaa !9
  %321 = icmp slt i64 %319, %320
  br i1 %321, label %322, label %327

322:                                              ; preds = %313
  %323 = load i64, ptr %81, align 8, !tbaa !9
  %324 = icmp ne i64 %323, 0
  br i1 %324, label %327, label %325

325:                                              ; preds = %322
  %326 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -16, ptr %326, align 8, !tbaa !9
  br label %327

327:                                              ; preds = %325, %322, %313
  br label %328

328:                                              ; preds = %327, %243
  %329 = load ptr, ptr %35, align 8, !tbaa !5
  %330 = load i64, ptr %329, align 8, !tbaa !9
  %331 = icmp ne i64 %330, 0
  br i1 %331, label %332, label %337

332:                                              ; preds = %328
  %333 = load ptr, ptr %35, align 8, !tbaa !5
  %334 = load i64, ptr %333, align 8, !tbaa !9
  %335 = sub nsw i64 0, %334
  store i64 %335, ptr %44, align 8, !tbaa !9
  %336 = call i32 @xerbla_(ptr noundef @.str.6, ptr noundef %44)
  store i32 0, ptr %18, align 4
  store i32 1, ptr %82, align 4
  br label %1215

337:                                              ; preds = %328
  %338 = load i64, ptr %81, align 8, !tbaa !9
  %339 = icmp ne i64 %338, 0
  br i1 %339, label %340, label %341

340:                                              ; preds = %337
  store i32 0, ptr %18, align 4
  store i32 1, ptr %82, align 4
  br label %1215

341:                                              ; preds = %337
  br label %342

342:                                              ; preds = %341
  %343 = load ptr, ptr %21, align 8, !tbaa !5
  %344 = load i64, ptr %343, align 8, !tbaa !9
  %345 = icmp eq i64 %344, 0
  br i1 %345, label %346, label %347

346:                                              ; preds = %342
  store i32 0, ptr %18, align 4
  store i32 1, ptr %82, align 4
  br label %1215

347:                                              ; preds = %342
  %348 = call double @dlamch_(ptr noundef @.str.7)
  store double %348, ptr %55, align 8, !tbaa !11
  %349 = call double @dlamch_(ptr noundef @.str.8)
  store double %349, ptr %80, align 8, !tbaa !11
  %350 = load double, ptr %80, align 8, !tbaa !11
  %351 = fdiv double 1.000000e+00, %350
  store double %351, ptr %72, align 8, !tbaa !11
  %352 = call i32 @dlabad_(ptr noundef %80, ptr noundef %72)
  %353 = load double, ptr %80, align 8, !tbaa !11
  %354 = call double @sqrt(double noundef %353) #4
  %355 = load double, ptr %55, align 8, !tbaa !11
  %356 = fdiv double %354, %355
  store double %356, ptr %80, align 8, !tbaa !11
  %357 = load double, ptr %80, align 8, !tbaa !11
  %358 = fdiv double 1.000000e+00, %357
  store double %358, ptr %72, align 8, !tbaa !11
  %359 = load ptr, ptr %21, align 8, !tbaa !5
  %360 = load ptr, ptr %21, align 8, !tbaa !5
  %361 = load ptr, ptr %22, align 8, !tbaa !5
  %362 = load i64, ptr %37, align 8, !tbaa !9
  %363 = getelementptr inbounds double, ptr %361, i64 %362
  %364 = load ptr, ptr %23, align 8, !tbaa !5
  %365 = load ptr, ptr %33, align 8, !tbaa !5
  %366 = getelementptr inbounds double, ptr %365, i64 1
  %367 = call double @dlange_(ptr noundef @.str.9, ptr noundef %359, ptr noundef %360, ptr noundef %363, ptr noundef %364, ptr noundef %366)
  store double %367, ptr %57, align 8, !tbaa !11
  store i64 0, ptr %68, align 8, !tbaa !9
  %368 = load double, ptr %57, align 8, !tbaa !11
  %369 = fcmp ogt double %368, 0.000000e+00
  br i1 %369, label %370, label %376

370:                                              ; preds = %347
  %371 = load double, ptr %57, align 8, !tbaa !11
  %372 = load double, ptr %80, align 8, !tbaa !11
  %373 = fcmp olt double %371, %372
  br i1 %373, label %374, label %376

374:                                              ; preds = %370
  %375 = load double, ptr %80, align 8, !tbaa !11
  store double %375, ptr %76, align 8, !tbaa !11
  store i64 1, ptr %68, align 8, !tbaa !9
  br label %383

376:                                              ; preds = %370, %347
  %377 = load double, ptr %57, align 8, !tbaa !11
  %378 = load double, ptr %72, align 8, !tbaa !11
  %379 = fcmp ogt double %377, %378
  br i1 %379, label %380, label %382

380:                                              ; preds = %376
  %381 = load double, ptr %72, align 8, !tbaa !11
  store double %381, ptr %76, align 8, !tbaa !11
  store i64 1, ptr %68, align 8, !tbaa !9
  br label %382

382:                                              ; preds = %380, %376
  br label %383

383:                                              ; preds = %382, %374
  %384 = load i64, ptr %68, align 8, !tbaa !9
  %385 = icmp ne i64 %384, 0
  br i1 %385, label %386, label %394

386:                                              ; preds = %383
  %387 = load ptr, ptr %21, align 8, !tbaa !5
  %388 = load ptr, ptr %21, align 8, !tbaa !5
  %389 = load ptr, ptr %22, align 8, !tbaa !5
  %390 = load i64, ptr %37, align 8, !tbaa !9
  %391 = getelementptr inbounds double, ptr %389, i64 %390
  %392 = load ptr, ptr %23, align 8, !tbaa !5
  %393 = call i32 @dlascl_(ptr noundef @.str.10, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %57, ptr noundef %76, ptr noundef %387, ptr noundef %388, ptr noundef %391, ptr noundef %392, ptr noundef %59)
  br label %394

394:                                              ; preds = %386, %383
  %395 = load ptr, ptr %21, align 8, !tbaa !5
  %396 = load ptr, ptr %21, align 8, !tbaa !5
  %397 = load ptr, ptr %24, align 8, !tbaa !5
  %398 = load i64, ptr %39, align 8, !tbaa !9
  %399 = getelementptr inbounds double, ptr %397, i64 %398
  %400 = load ptr, ptr %25, align 8, !tbaa !5
  %401 = load ptr, ptr %33, align 8, !tbaa !5
  %402 = getelementptr inbounds double, ptr %401, i64 1
  %403 = call double @dlange_(ptr noundef @.str.9, ptr noundef %395, ptr noundef %396, ptr noundef %399, ptr noundef %400, ptr noundef %402)
  store double %403, ptr %58, align 8, !tbaa !11
  store i64 0, ptr %69, align 8, !tbaa !9
  %404 = load double, ptr %58, align 8, !tbaa !11
  %405 = fcmp ogt double %404, 0.000000e+00
  br i1 %405, label %406, label %412

406:                                              ; preds = %394
  %407 = load double, ptr %58, align 8, !tbaa !11
  %408 = load double, ptr %80, align 8, !tbaa !11
  %409 = fcmp olt double %407, %408
  br i1 %409, label %410, label %412

410:                                              ; preds = %406
  %411 = load double, ptr %80, align 8, !tbaa !11
  store double %411, ptr %77, align 8, !tbaa !11
  store i64 1, ptr %69, align 8, !tbaa !9
  br label %419

412:                                              ; preds = %406, %394
  %413 = load double, ptr %58, align 8, !tbaa !11
  %414 = load double, ptr %72, align 8, !tbaa !11
  %415 = fcmp ogt double %413, %414
  br i1 %415, label %416, label %418

416:                                              ; preds = %412
  %417 = load double, ptr %72, align 8, !tbaa !11
  store double %417, ptr %77, align 8, !tbaa !11
  store i64 1, ptr %69, align 8, !tbaa !9
  br label %418

418:                                              ; preds = %416, %412
  br label %419

419:                                              ; preds = %418, %410
  %420 = load i64, ptr %69, align 8, !tbaa !9
  %421 = icmp ne i64 %420, 0
  br i1 %421, label %422, label %430

422:                                              ; preds = %419
  %423 = load ptr, ptr %21, align 8, !tbaa !5
  %424 = load ptr, ptr %21, align 8, !tbaa !5
  %425 = load ptr, ptr %24, align 8, !tbaa !5
  %426 = load i64, ptr %39, align 8, !tbaa !9
  %427 = getelementptr inbounds double, ptr %425, i64 %426
  %428 = load ptr, ptr %25, align 8, !tbaa !5
  %429 = call i32 @dlascl_(ptr noundef @.str.10, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %58, ptr noundef %77, ptr noundef %423, ptr noundef %424, ptr noundef %427, ptr noundef %428, ptr noundef %59)
  br label %430

430:                                              ; preds = %422, %419
  store i64 1, ptr %65, align 8, !tbaa !9
  %431 = load ptr, ptr %21, align 8, !tbaa !5
  %432 = load i64, ptr %431, align 8, !tbaa !9
  %433 = add nsw i64 %432, 1
  store i64 %433, ptr %74, align 8, !tbaa !9
  %434 = load i64, ptr %74, align 8, !tbaa !9
  %435 = load ptr, ptr %21, align 8, !tbaa !5
  %436 = load i64, ptr %435, align 8, !tbaa !9
  %437 = add nsw i64 %434, %436
  store i64 %437, ptr %64, align 8, !tbaa !9
  %438 = load ptr, ptr %21, align 8, !tbaa !5
  %439 = load ptr, ptr %22, align 8, !tbaa !5
  %440 = load i64, ptr %37, align 8, !tbaa !9
  %441 = getelementptr inbounds double, ptr %439, i64 %440
  %442 = load ptr, ptr %23, align 8, !tbaa !5
  %443 = load ptr, ptr %24, align 8, !tbaa !5
  %444 = load i64, ptr %39, align 8, !tbaa !9
  %445 = getelementptr inbounds double, ptr %443, i64 %444
  %446 = load ptr, ptr %25, align 8, !tbaa !5
  %447 = load ptr, ptr %33, align 8, !tbaa !5
  %448 = load i64, ptr %65, align 8, !tbaa !9
  %449 = getelementptr inbounds double, ptr %447, i64 %448
  %450 = load ptr, ptr %33, align 8, !tbaa !5
  %451 = load i64, ptr %74, align 8, !tbaa !9
  %452 = getelementptr inbounds double, ptr %450, i64 %451
  %453 = load ptr, ptr %33, align 8, !tbaa !5
  %454 = load i64, ptr %64, align 8, !tbaa !9
  %455 = getelementptr inbounds double, ptr %453, i64 %454
  %456 = call i32 @dggbal_(ptr noundef @.str.7, ptr noundef %438, ptr noundef %441, ptr noundef %442, ptr noundef %445, ptr noundef %446, ptr noundef %54, ptr noundef %53, ptr noundef %449, ptr noundef %452, ptr noundef %455, ptr noundef %59)
  %457 = load i64, ptr %53, align 8, !tbaa !9
  %458 = add nsw i64 %457, 1
  %459 = load i64, ptr %54, align 8, !tbaa !9
  %460 = sub nsw i64 %458, %459
  store i64 %460, ptr %67, align 8, !tbaa !9
  %461 = load i64, ptr %56, align 8, !tbaa !9
  %462 = icmp ne i64 %461, 0
  br i1 %462, label %463, label %469

463:                                              ; preds = %430
  %464 = load ptr, ptr %21, align 8, !tbaa !5
  %465 = load i64, ptr %464, align 8, !tbaa !9
  %466 = add nsw i64 %465, 1
  %467 = load i64, ptr %54, align 8, !tbaa !9
  %468 = sub nsw i64 %466, %467
  store i64 %468, ptr %66, align 8, !tbaa !9
  br label %471

469:                                              ; preds = %430
  %470 = load i64, ptr %67, align 8, !tbaa !9
  store i64 %470, ptr %66, align 8, !tbaa !9
  br label %471

471:                                              ; preds = %469, %463
  %472 = load i64, ptr %64, align 8, !tbaa !9
  store i64 %472, ptr %60, align 8, !tbaa !9
  %473 = load i64, ptr %60, align 8, !tbaa !9
  %474 = load i64, ptr %67, align 8, !tbaa !9
  %475 = add nsw i64 %473, %474
  store i64 %475, ptr %64, align 8, !tbaa !9
  %476 = load ptr, ptr %34, align 8, !tbaa !5
  %477 = load i64, ptr %476, align 8, !tbaa !9
  %478 = add nsw i64 %477, 1
  %479 = load i64, ptr %64, align 8, !tbaa !9
  %480 = sub nsw i64 %478, %479
  store i64 %480, ptr %44, align 8, !tbaa !9
  %481 = load ptr, ptr %24, align 8, !tbaa !5
  %482 = load i64, ptr %54, align 8, !tbaa !9
  %483 = load i64, ptr %54, align 8, !tbaa !9
  %484 = load i64, ptr %38, align 8, !tbaa !9
  %485 = mul nsw i64 %483, %484
  %486 = add nsw i64 %482, %485
  %487 = getelementptr inbounds double, ptr %481, i64 %486
  %488 = load ptr, ptr %25, align 8, !tbaa !5
  %489 = load ptr, ptr %33, align 8, !tbaa !5
  %490 = load i64, ptr %60, align 8, !tbaa !9
  %491 = getelementptr inbounds double, ptr %489, i64 %490
  %492 = load ptr, ptr %33, align 8, !tbaa !5
  %493 = load i64, ptr %64, align 8, !tbaa !9
  %494 = getelementptr inbounds double, ptr %492, i64 %493
  %495 = call i32 @dgeqrf_(ptr noundef %67, ptr noundef %66, ptr noundef %487, ptr noundef %488, ptr noundef %491, ptr noundef %494, ptr noundef %44, ptr noundef %59)
  %496 = load ptr, ptr %34, align 8, !tbaa !5
  %497 = load i64, ptr %496, align 8, !tbaa !9
  %498 = add nsw i64 %497, 1
  %499 = load i64, ptr %64, align 8, !tbaa !9
  %500 = sub nsw i64 %498, %499
  store i64 %500, ptr %44, align 8, !tbaa !9
  %501 = load ptr, ptr %24, align 8, !tbaa !5
  %502 = load i64, ptr %54, align 8, !tbaa !9
  %503 = load i64, ptr %54, align 8, !tbaa !9
  %504 = load i64, ptr %38, align 8, !tbaa !9
  %505 = mul nsw i64 %503, %504
  %506 = add nsw i64 %502, %505
  %507 = getelementptr inbounds double, ptr %501, i64 %506
  %508 = load ptr, ptr %25, align 8, !tbaa !5
  %509 = load ptr, ptr %33, align 8, !tbaa !5
  %510 = load i64, ptr %60, align 8, !tbaa !9
  %511 = getelementptr inbounds double, ptr %509, i64 %510
  %512 = load ptr, ptr %22, align 8, !tbaa !5
  %513 = load i64, ptr %54, align 8, !tbaa !9
  %514 = load i64, ptr %54, align 8, !tbaa !9
  %515 = load i64, ptr %36, align 8, !tbaa !9
  %516 = mul nsw i64 %514, %515
  %517 = add nsw i64 %513, %516
  %518 = getelementptr inbounds double, ptr %512, i64 %517
  %519 = load ptr, ptr %23, align 8, !tbaa !5
  %520 = load ptr, ptr %33, align 8, !tbaa !5
  %521 = load i64, ptr %64, align 8, !tbaa !9
  %522 = getelementptr inbounds double, ptr %520, i64 %521
  %523 = call i32 @dormqr_(ptr noundef @.str.11, ptr noundef @.str.12, ptr noundef %67, ptr noundef %66, ptr noundef %67, ptr noundef %507, ptr noundef %508, ptr noundef %511, ptr noundef %518, ptr noundef %519, ptr noundef %522, ptr noundef %44, ptr noundef %59)
  %524 = load i64, ptr %62, align 8, !tbaa !9
  %525 = icmp ne i64 %524, 0
  br i1 %525, label %526, label %581

526:                                              ; preds = %471
  %527 = load ptr, ptr %21, align 8, !tbaa !5
  %528 = load ptr, ptr %21, align 8, !tbaa !5
  %529 = load ptr, ptr %29, align 8, !tbaa !5
  %530 = load i64, ptr %41, align 8, !tbaa !9
  %531 = getelementptr inbounds double, ptr %529, i64 %530
  %532 = load ptr, ptr %30, align 8, !tbaa !5
  %533 = call i32 @dlaset_(ptr noundef @.str.13, ptr noundef %527, ptr noundef %528, ptr noundef @c_b36, ptr noundef @c_b37, ptr noundef %531, ptr noundef %532)
  %534 = load i64, ptr %67, align 8, !tbaa !9
  %535 = icmp sgt i64 %534, 1
  br i1 %535, label %536, label %560

536:                                              ; preds = %526
  %537 = load i64, ptr %67, align 8, !tbaa !9
  %538 = sub nsw i64 %537, 1
  store i64 %538, ptr %44, align 8, !tbaa !9
  %539 = load i64, ptr %67, align 8, !tbaa !9
  %540 = sub nsw i64 %539, 1
  store i64 %540, ptr %45, align 8, !tbaa !9
  %541 = load ptr, ptr %24, align 8, !tbaa !5
  %542 = load i64, ptr %54, align 8, !tbaa !9
  %543 = add nsw i64 %542, 1
  %544 = load i64, ptr %54, align 8, !tbaa !9
  %545 = load i64, ptr %38, align 8, !tbaa !9
  %546 = mul nsw i64 %544, %545
  %547 = add nsw i64 %543, %546
  %548 = getelementptr inbounds double, ptr %541, i64 %547
  %549 = load ptr, ptr %25, align 8, !tbaa !5
  %550 = load ptr, ptr %29, align 8, !tbaa !5
  %551 = load i64, ptr %54, align 8, !tbaa !9
  %552 = add nsw i64 %551, 1
  %553 = load i64, ptr %54, align 8, !tbaa !9
  %554 = load i64, ptr %40, align 8, !tbaa !9
  %555 = mul nsw i64 %553, %554
  %556 = add nsw i64 %552, %555
  %557 = getelementptr inbounds double, ptr %550, i64 %556
  %558 = load ptr, ptr %30, align 8, !tbaa !5
  %559 = call i32 @dlacpy_(ptr noundef @.str.11, ptr noundef %44, ptr noundef %45, ptr noundef %548, ptr noundef %549, ptr noundef %557, ptr noundef %558)
  br label %560

560:                                              ; preds = %536, %526
  %561 = load ptr, ptr %34, align 8, !tbaa !5
  %562 = load i64, ptr %561, align 8, !tbaa !9
  %563 = add nsw i64 %562, 1
  %564 = load i64, ptr %64, align 8, !tbaa !9
  %565 = sub nsw i64 %563, %564
  store i64 %565, ptr %44, align 8, !tbaa !9
  %566 = load ptr, ptr %29, align 8, !tbaa !5
  %567 = load i64, ptr %54, align 8, !tbaa !9
  %568 = load i64, ptr %54, align 8, !tbaa !9
  %569 = load i64, ptr %40, align 8, !tbaa !9
  %570 = mul nsw i64 %568, %569
  %571 = add nsw i64 %567, %570
  %572 = getelementptr inbounds double, ptr %566, i64 %571
  %573 = load ptr, ptr %30, align 8, !tbaa !5
  %574 = load ptr, ptr %33, align 8, !tbaa !5
  %575 = load i64, ptr %60, align 8, !tbaa !9
  %576 = getelementptr inbounds double, ptr %574, i64 %575
  %577 = load ptr, ptr %33, align 8, !tbaa !5
  %578 = load i64, ptr %64, align 8, !tbaa !9
  %579 = getelementptr inbounds double, ptr %577, i64 %578
  %580 = call i32 @dorgqr_(ptr noundef %67, ptr noundef %67, ptr noundef %67, ptr noundef %572, ptr noundef %573, ptr noundef %576, ptr noundef %579, ptr noundef %44, ptr noundef %59)
  br label %581

581:                                              ; preds = %560, %471
  %582 = load i64, ptr %63, align 8, !tbaa !9
  %583 = icmp ne i64 %582, 0
  br i1 %583, label %584, label %592

584:                                              ; preds = %581
  %585 = load ptr, ptr %21, align 8, !tbaa !5
  %586 = load ptr, ptr %21, align 8, !tbaa !5
  %587 = load ptr, ptr %31, align 8, !tbaa !5
  %588 = load i64, ptr %43, align 8, !tbaa !9
  %589 = getelementptr inbounds double, ptr %587, i64 %588
  %590 = load ptr, ptr %32, align 8, !tbaa !5
  %591 = call i32 @dlaset_(ptr noundef @.str.13, ptr noundef %585, ptr noundef %586, ptr noundef @c_b36, ptr noundef @c_b37, ptr noundef %589, ptr noundef %590)
  br label %592

592:                                              ; preds = %584, %581
  %593 = load i64, ptr %56, align 8, !tbaa !9
  %594 = icmp ne i64 %593, 0
  br i1 %594, label %595, label %616

595:                                              ; preds = %592
  %596 = load ptr, ptr %19, align 8, !tbaa !5
  %597 = load ptr, ptr %20, align 8, !tbaa !5
  %598 = load ptr, ptr %21, align 8, !tbaa !5
  %599 = load ptr, ptr %22, align 8, !tbaa !5
  %600 = load i64, ptr %37, align 8, !tbaa !9
  %601 = getelementptr inbounds double, ptr %599, i64 %600
  %602 = load ptr, ptr %23, align 8, !tbaa !5
  %603 = load ptr, ptr %24, align 8, !tbaa !5
  %604 = load i64, ptr %39, align 8, !tbaa !9
  %605 = getelementptr inbounds double, ptr %603, i64 %604
  %606 = load ptr, ptr %25, align 8, !tbaa !5
  %607 = load ptr, ptr %29, align 8, !tbaa !5
  %608 = load i64, ptr %41, align 8, !tbaa !9
  %609 = getelementptr inbounds double, ptr %607, i64 %608
  %610 = load ptr, ptr %30, align 8, !tbaa !5
  %611 = load ptr, ptr %31, align 8, !tbaa !5
  %612 = load i64, ptr %43, align 8, !tbaa !9
  %613 = getelementptr inbounds double, ptr %611, i64 %612
  %614 = load ptr, ptr %32, align 8, !tbaa !5
  %615 = call i32 @dgghrd_(ptr noundef %596, ptr noundef %597, ptr noundef %598, ptr noundef %54, ptr noundef %53, ptr noundef %601, ptr noundef %602, ptr noundef %605, ptr noundef %606, ptr noundef %609, ptr noundef %610, ptr noundef %613, ptr noundef %614, ptr noundef %59)
  br label %642

616:                                              ; preds = %592
  %617 = load ptr, ptr %22, align 8, !tbaa !5
  %618 = load i64, ptr %54, align 8, !tbaa !9
  %619 = load i64, ptr %54, align 8, !tbaa !9
  %620 = load i64, ptr %36, align 8, !tbaa !9
  %621 = mul nsw i64 %619, %620
  %622 = add nsw i64 %618, %621
  %623 = getelementptr inbounds double, ptr %617, i64 %622
  %624 = load ptr, ptr %23, align 8, !tbaa !5
  %625 = load ptr, ptr %24, align 8, !tbaa !5
  %626 = load i64, ptr %54, align 8, !tbaa !9
  %627 = load i64, ptr %54, align 8, !tbaa !9
  %628 = load i64, ptr %38, align 8, !tbaa !9
  %629 = mul nsw i64 %627, %628
  %630 = add nsw i64 %626, %629
  %631 = getelementptr inbounds double, ptr %625, i64 %630
  %632 = load ptr, ptr %25, align 8, !tbaa !5
  %633 = load ptr, ptr %29, align 8, !tbaa !5
  %634 = load i64, ptr %41, align 8, !tbaa !9
  %635 = getelementptr inbounds double, ptr %633, i64 %634
  %636 = load ptr, ptr %30, align 8, !tbaa !5
  %637 = load ptr, ptr %31, align 8, !tbaa !5
  %638 = load i64, ptr %43, align 8, !tbaa !9
  %639 = getelementptr inbounds double, ptr %637, i64 %638
  %640 = load ptr, ptr %32, align 8, !tbaa !5
  %641 = call i32 @dgghrd_(ptr noundef @.str, ptr noundef @.str, ptr noundef %67, ptr noundef @c__1, ptr noundef %67, ptr noundef %623, ptr noundef %624, ptr noundef %631, ptr noundef %632, ptr noundef %635, ptr noundef %636, ptr noundef %639, ptr noundef %640, ptr noundef %59)
  br label %642

642:                                              ; preds = %616, %595
  %643 = load i64, ptr %60, align 8, !tbaa !9
  store i64 %643, ptr %64, align 8, !tbaa !9
  %644 = load i64, ptr %56, align 8, !tbaa !9
  %645 = icmp ne i64 %644, 0
  br i1 %645, label %646, label %648

646:                                              ; preds = %642
  %647 = getelementptr inbounds [1 x i8], ptr %71, i64 0, i64 0
  store i8 83, ptr %647, align 1, !tbaa !13
  br label %650

648:                                              ; preds = %642
  %649 = getelementptr inbounds [1 x i8], ptr %71, i64 0, i64 0
  store i8 69, ptr %649, align 1, !tbaa !13
  br label %650

650:                                              ; preds = %648, %646
  %651 = load ptr, ptr %34, align 8, !tbaa !5
  %652 = load i64, ptr %651, align 8, !tbaa !9
  %653 = add nsw i64 %652, 1
  %654 = load i64, ptr %64, align 8, !tbaa !9
  %655 = sub nsw i64 %653, %654
  store i64 %655, ptr %44, align 8, !tbaa !9
  %656 = getelementptr inbounds [1 x i8], ptr %71, i64 0, i64 0
  %657 = load ptr, ptr %19, align 8, !tbaa !5
  %658 = load ptr, ptr %20, align 8, !tbaa !5
  %659 = load ptr, ptr %21, align 8, !tbaa !5
  %660 = load ptr, ptr %22, align 8, !tbaa !5
  %661 = load i64, ptr %37, align 8, !tbaa !9
  %662 = getelementptr inbounds double, ptr %660, i64 %661
  %663 = load ptr, ptr %23, align 8, !tbaa !5
  %664 = load ptr, ptr %24, align 8, !tbaa !5
  %665 = load i64, ptr %39, align 8, !tbaa !9
  %666 = getelementptr inbounds double, ptr %664, i64 %665
  %667 = load ptr, ptr %25, align 8, !tbaa !5
  %668 = load ptr, ptr %26, align 8, !tbaa !5
  %669 = getelementptr inbounds double, ptr %668, i64 1
  %670 = load ptr, ptr %27, align 8, !tbaa !5
  %671 = getelementptr inbounds double, ptr %670, i64 1
  %672 = load ptr, ptr %28, align 8, !tbaa !5
  %673 = getelementptr inbounds double, ptr %672, i64 1
  %674 = load ptr, ptr %29, align 8, !tbaa !5
  %675 = load i64, ptr %41, align 8, !tbaa !9
  %676 = getelementptr inbounds double, ptr %674, i64 %675
  %677 = load ptr, ptr %30, align 8, !tbaa !5
  %678 = load ptr, ptr %31, align 8, !tbaa !5
  %679 = load i64, ptr %43, align 8, !tbaa !9
  %680 = getelementptr inbounds double, ptr %678, i64 %679
  %681 = load ptr, ptr %32, align 8, !tbaa !5
  %682 = load ptr, ptr %33, align 8, !tbaa !5
  %683 = load i64, ptr %64, align 8, !tbaa !9
  %684 = getelementptr inbounds double, ptr %682, i64 %683
  %685 = call i32 @dhgeqz_(ptr noundef %656, ptr noundef %657, ptr noundef %658, ptr noundef %659, ptr noundef %54, ptr noundef %53, ptr noundef %662, ptr noundef %663, ptr noundef %666, ptr noundef %667, ptr noundef %669, ptr noundef %671, ptr noundef %673, ptr noundef %676, ptr noundef %677, ptr noundef %680, ptr noundef %681, ptr noundef %684, ptr noundef %44, ptr noundef %59)
  %686 = load i64, ptr %59, align 8, !tbaa !9
  %687 = icmp ne i64 %686, 0
  br i1 %687, label %688, label %723

688:                                              ; preds = %650
  %689 = load i64, ptr %59, align 8, !tbaa !9
  %690 = icmp sgt i64 %689, 0
  br i1 %690, label %691, label %699

691:                                              ; preds = %688
  %692 = load i64, ptr %59, align 8, !tbaa !9
  %693 = load ptr, ptr %21, align 8, !tbaa !5
  %694 = load i64, ptr %693, align 8, !tbaa !9
  %695 = icmp sle i64 %692, %694
  br i1 %695, label %696, label %699

696:                                              ; preds = %691
  %697 = load i64, ptr %59, align 8, !tbaa !9
  %698 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %697, ptr %698, align 8, !tbaa !9
  br label %722

699:                                              ; preds = %691, %688
  %700 = load i64, ptr %59, align 8, !tbaa !9
  %701 = load ptr, ptr %21, align 8, !tbaa !5
  %702 = load i64, ptr %701, align 8, !tbaa !9
  %703 = icmp sgt i64 %700, %702
  br i1 %703, label %704, label %716

704:                                              ; preds = %699
  %705 = load i64, ptr %59, align 8, !tbaa !9
  %706 = load ptr, ptr %21, align 8, !tbaa !5
  %707 = load i64, ptr %706, align 8, !tbaa !9
  %708 = shl i64 %707, 1
  %709 = icmp sle i64 %705, %708
  br i1 %709, label %710, label %716

710:                                              ; preds = %704
  %711 = load i64, ptr %59, align 8, !tbaa !9
  %712 = load ptr, ptr %21, align 8, !tbaa !5
  %713 = load i64, ptr %712, align 8, !tbaa !9
  %714 = sub nsw i64 %711, %713
  %715 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %714, ptr %715, align 8, !tbaa !9
  br label %721

716:                                              ; preds = %704, %699
  %717 = load ptr, ptr %21, align 8, !tbaa !5
  %718 = load i64, ptr %717, align 8, !tbaa !9
  %719 = add nsw i64 %718, 1
  %720 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %719, ptr %720, align 8, !tbaa !9
  br label %721

721:                                              ; preds = %716, %710
  br label %722

722:                                              ; preds = %721, %696
  br label %1210

723:                                              ; preds = %650
  %724 = load i64, ptr %56, align 8, !tbaa !9
  %725 = icmp ne i64 %724, 0
  br i1 %725, label %726, label %1186

726:                                              ; preds = %723
  %727 = load i64, ptr %62, align 8, !tbaa !9
  %728 = icmp ne i64 %727, 0
  br i1 %728, label %729, label %737

729:                                              ; preds = %726
  %730 = load i64, ptr %63, align 8, !tbaa !9
  %731 = icmp ne i64 %730, 0
  br i1 %731, label %732, label %734

732:                                              ; preds = %729
  %733 = getelementptr inbounds [1 x i8], ptr %71, i64 0, i64 0
  store i8 66, ptr %733, align 1, !tbaa !13
  br label %736

734:                                              ; preds = %729
  %735 = getelementptr inbounds [1 x i8], ptr %71, i64 0, i64 0
  store i8 76, ptr %735, align 1, !tbaa !13
  br label %736

736:                                              ; preds = %734, %732
  br label %739

737:                                              ; preds = %726
  %738 = getelementptr inbounds [1 x i8], ptr %71, i64 0, i64 0
  store i8 82, ptr %738, align 1, !tbaa !13
  br label %739

739:                                              ; preds = %737, %736
  %740 = getelementptr inbounds [1 x i8], ptr %71, i64 0, i64 0
  %741 = getelementptr inbounds [1 x i64], ptr %70, i64 0, i64 0
  %742 = load ptr, ptr %21, align 8, !tbaa !5
  %743 = load ptr, ptr %22, align 8, !tbaa !5
  %744 = load i64, ptr %37, align 8, !tbaa !9
  %745 = getelementptr inbounds double, ptr %743, i64 %744
  %746 = load ptr, ptr %23, align 8, !tbaa !5
  %747 = load ptr, ptr %24, align 8, !tbaa !5
  %748 = load i64, ptr %39, align 8, !tbaa !9
  %749 = getelementptr inbounds double, ptr %747, i64 %748
  %750 = load ptr, ptr %25, align 8, !tbaa !5
  %751 = load ptr, ptr %29, align 8, !tbaa !5
  %752 = load i64, ptr %41, align 8, !tbaa !9
  %753 = getelementptr inbounds double, ptr %751, i64 %752
  %754 = load ptr, ptr %30, align 8, !tbaa !5
  %755 = load ptr, ptr %31, align 8, !tbaa !5
  %756 = load i64, ptr %43, align 8, !tbaa !9
  %757 = getelementptr inbounds double, ptr %755, i64 %756
  %758 = load ptr, ptr %32, align 8, !tbaa !5
  %759 = load ptr, ptr %21, align 8, !tbaa !5
  %760 = load ptr, ptr %33, align 8, !tbaa !5
  %761 = load i64, ptr %64, align 8, !tbaa !9
  %762 = getelementptr inbounds double, ptr %760, i64 %761
  %763 = call i32 @dtgevc_(ptr noundef %740, ptr noundef @.str.14, ptr noundef %741, ptr noundef %742, ptr noundef %745, ptr noundef %746, ptr noundef %749, ptr noundef %750, ptr noundef %753, ptr noundef %754, ptr noundef %757, ptr noundef %758, ptr noundef %759, ptr noundef %51, ptr noundef %762, ptr noundef %59)
  %764 = load i64, ptr %59, align 8, !tbaa !9
  %765 = icmp ne i64 %764, 0
  br i1 %765, label %766, label %771

766:                                              ; preds = %739
  %767 = load ptr, ptr %21, align 8, !tbaa !5
  %768 = load i64, ptr %767, align 8, !tbaa !9
  %769 = add nsw i64 %768, 2
  %770 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %769, ptr %770, align 8, !tbaa !9
  br label %1210

771:                                              ; preds = %739
  %772 = load i64, ptr %62, align 8, !tbaa !9
  %773 = icmp ne i64 %772, 0
  br i1 %773, label %774, label %978

774:                                              ; preds = %771
  %775 = load ptr, ptr %21, align 8, !tbaa !5
  %776 = load ptr, ptr %33, align 8, !tbaa !5
  %777 = load i64, ptr %65, align 8, !tbaa !9
  %778 = getelementptr inbounds double, ptr %776, i64 %777
  %779 = load ptr, ptr %33, align 8, !tbaa !5
  %780 = load i64, ptr %74, align 8, !tbaa !9
  %781 = getelementptr inbounds double, ptr %779, i64 %780
  %782 = load ptr, ptr %21, align 8, !tbaa !5
  %783 = load ptr, ptr %29, align 8, !tbaa !5
  %784 = load i64, ptr %41, align 8, !tbaa !9
  %785 = getelementptr inbounds double, ptr %783, i64 %784
  %786 = load ptr, ptr %30, align 8, !tbaa !5
  %787 = call i32 @dggbak_(ptr noundef @.str.7, ptr noundef @.str.11, ptr noundef %775, ptr noundef %54, ptr noundef %53, ptr noundef %778, ptr noundef %781, ptr noundef %782, ptr noundef %785, ptr noundef %786, ptr noundef %59)
  %788 = load ptr, ptr %21, align 8, !tbaa !5
  %789 = load i64, ptr %788, align 8, !tbaa !9
  store i64 %789, ptr %44, align 8, !tbaa !9
  store i64 1, ptr %50, align 8, !tbaa !9
  br label %790

790:                                              ; preds = %974, %774
  %791 = load i64, ptr %50, align 8, !tbaa !9
  %792 = load i64, ptr %44, align 8, !tbaa !9
  %793 = icmp sle i64 %791, %792
  br i1 %793, label %794, label %977

794:                                              ; preds = %790
  %795 = load ptr, ptr %27, align 8, !tbaa !5
  %796 = load i64, ptr %50, align 8, !tbaa !9
  %797 = getelementptr inbounds double, ptr %795, i64 %796
  %798 = load double, ptr %797, align 8, !tbaa !11
  %799 = fcmp olt double %798, 0.000000e+00
  br i1 %799, label %800, label %801

800:                                              ; preds = %794
  br label %973

801:                                              ; preds = %794
  store double 0.000000e+00, ptr %61, align 8, !tbaa !11
  %802 = load ptr, ptr %27, align 8, !tbaa !5
  %803 = load i64, ptr %50, align 8, !tbaa !9
  %804 = getelementptr inbounds double, ptr %802, i64 %803
  %805 = load double, ptr %804, align 8, !tbaa !11
  %806 = fcmp oeq double %805, 0.000000e+00
  br i1 %806, label %807, label %846

807:                                              ; preds = %801
  %808 = load ptr, ptr %21, align 8, !tbaa !5
  %809 = load i64, ptr %808, align 8, !tbaa !9
  store i64 %809, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %52, align 8, !tbaa !9
  br label %810

810:                                              ; preds = %842, %807
  %811 = load i64, ptr %52, align 8, !tbaa !9
  %812 = load i64, ptr %45, align 8, !tbaa !9
  %813 = icmp sle i64 %811, %812
  br i1 %813, label %814, label %845

814:                                              ; preds = %810
  %815 = load double, ptr %61, align 8, !tbaa !11
  store double %815, ptr %47, align 8, !tbaa !11
  %816 = load ptr, ptr %29, align 8, !tbaa !5
  %817 = load i64, ptr %52, align 8, !tbaa !9
  %818 = load i64, ptr %50, align 8, !tbaa !9
  %819 = load i64, ptr %40, align 8, !tbaa !9
  %820 = mul nsw i64 %818, %819
  %821 = add nsw i64 %817, %820
  %822 = getelementptr inbounds double, ptr %816, i64 %821
  %823 = load double, ptr %822, align 8, !tbaa !11
  store double %823, ptr %46, align 8, !tbaa !11
  %824 = load double, ptr %46, align 8, !tbaa !11
  %825 = fcmp oge double %824, 0.000000e+00
  br i1 %825, label %826, label %828

826:                                              ; preds = %814
  %827 = load double, ptr %46, align 8, !tbaa !11
  br label %831

828:                                              ; preds = %814
  %829 = load double, ptr %46, align 8, !tbaa !11
  %830 = fneg double %829
  br label %831

831:                                              ; preds = %828, %826
  %832 = phi double [ %827, %826 ], [ %830, %828 ]
  store double %832, ptr %48, align 8, !tbaa !11
  %833 = load double, ptr %47, align 8, !tbaa !11
  %834 = load double, ptr %48, align 8, !tbaa !11
  %835 = fcmp oge double %833, %834
  br i1 %835, label %836, label %838

836:                                              ; preds = %831
  %837 = load double, ptr %47, align 8, !tbaa !11
  br label %840

838:                                              ; preds = %831
  %839 = load double, ptr %48, align 8, !tbaa !11
  br label %840

840:                                              ; preds = %838, %836
  %841 = phi double [ %837, %836 ], [ %839, %838 ]
  store double %841, ptr %61, align 8, !tbaa !11
  br label %842

842:                                              ; preds = %840
  %843 = load i64, ptr %52, align 8, !tbaa !9
  %844 = add nsw i64 %843, 1
  store i64 %844, ptr %52, align 8, !tbaa !9
  br label %810, !llvm.loop !14

845:                                              ; preds = %810
  br label %904

846:                                              ; preds = %801
  %847 = load ptr, ptr %21, align 8, !tbaa !5
  %848 = load i64, ptr %847, align 8, !tbaa !9
  store i64 %848, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %52, align 8, !tbaa !9
  br label %849

849:                                              ; preds = %900, %846
  %850 = load i64, ptr %52, align 8, !tbaa !9
  %851 = load i64, ptr %45, align 8, !tbaa !9
  %852 = icmp sle i64 %850, %851
  br i1 %852, label %853, label %903

853:                                              ; preds = %849
  %854 = load double, ptr %61, align 8, !tbaa !11
  store double %854, ptr %48, align 8, !tbaa !11
  %855 = load ptr, ptr %29, align 8, !tbaa !5
  %856 = load i64, ptr %52, align 8, !tbaa !9
  %857 = load i64, ptr %50, align 8, !tbaa !9
  %858 = load i64, ptr %40, align 8, !tbaa !9
  %859 = mul nsw i64 %857, %858
  %860 = add nsw i64 %856, %859
  %861 = getelementptr inbounds double, ptr %855, i64 %860
  %862 = load double, ptr %861, align 8, !tbaa !11
  store double %862, ptr %46, align 8, !tbaa !11
  %863 = load double, ptr %46, align 8, !tbaa !11
  %864 = fcmp oge double %863, 0.000000e+00
  br i1 %864, label %865, label %867

865:                                              ; preds = %853
  %866 = load double, ptr %46, align 8, !tbaa !11
  br label %870

867:                                              ; preds = %853
  %868 = load double, ptr %46, align 8, !tbaa !11
  %869 = fneg double %868
  br label %870

870:                                              ; preds = %867, %865
  %871 = phi double [ %866, %865 ], [ %869, %867 ]
  %872 = load ptr, ptr %29, align 8, !tbaa !5
  %873 = load i64, ptr %52, align 8, !tbaa !9
  %874 = load i64, ptr %50, align 8, !tbaa !9
  %875 = add nsw i64 %874, 1
  %876 = load i64, ptr %40, align 8, !tbaa !9
  %877 = mul nsw i64 %875, %876
  %878 = add nsw i64 %873, %877
  %879 = getelementptr inbounds double, ptr %872, i64 %878
  %880 = load double, ptr %879, align 8, !tbaa !11
  store double %880, ptr %47, align 8, !tbaa !11
  %881 = load double, ptr %47, align 8, !tbaa !11
  %882 = fcmp oge double %881, 0.000000e+00
  br i1 %882, label %883, label %885

883:                                              ; preds = %870
  %884 = load double, ptr %47, align 8, !tbaa !11
  br label %888

885:                                              ; preds = %870
  %886 = load double, ptr %47, align 8, !tbaa !11
  %887 = fneg double %886
  br label %888

888:                                              ; preds = %885, %883
  %889 = phi double [ %884, %883 ], [ %887, %885 ]
  %890 = fadd double %871, %889
  store double %890, ptr %49, align 8, !tbaa !11
  %891 = load double, ptr %48, align 8, !tbaa !11
  %892 = load double, ptr %49, align 8, !tbaa !11
  %893 = fcmp oge double %891, %892
  br i1 %893, label %894, label %896

894:                                              ; preds = %888
  %895 = load double, ptr %48, align 8, !tbaa !11
  br label %898

896:                                              ; preds = %888
  %897 = load double, ptr %49, align 8, !tbaa !11
  br label %898

898:                                              ; preds = %896, %894
  %899 = phi double [ %895, %894 ], [ %897, %896 ]
  store double %899, ptr %61, align 8, !tbaa !11
  br label %900

900:                                              ; preds = %898
  %901 = load i64, ptr %52, align 8, !tbaa !9
  %902 = add nsw i64 %901, 1
  store i64 %902, ptr %52, align 8, !tbaa !9
  br label %849, !llvm.loop !16

903:                                              ; preds = %849
  br label %904

904:                                              ; preds = %903, %845
  %905 = load double, ptr %61, align 8, !tbaa !11
  %906 = load double, ptr %80, align 8, !tbaa !11
  %907 = fcmp olt double %905, %906
  br i1 %907, label %908, label %909

908:                                              ; preds = %904
  br label %973

909:                                              ; preds = %904
  %910 = load double, ptr %61, align 8, !tbaa !11
  %911 = fdiv double 1.000000e+00, %910
  store double %911, ptr %61, align 8, !tbaa !11
  %912 = load ptr, ptr %27, align 8, !tbaa !5
  %913 = load i64, ptr %50, align 8, !tbaa !9
  %914 = getelementptr inbounds double, ptr %912, i64 %913
  %915 = load double, ptr %914, align 8, !tbaa !11
  %916 = fcmp oeq double %915, 0.000000e+00
  br i1 %916, label %917, label %939

917:                                              ; preds = %909
  %918 = load ptr, ptr %21, align 8, !tbaa !5
  %919 = load i64, ptr %918, align 8, !tbaa !9
  store i64 %919, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %52, align 8, !tbaa !9
  br label %920

920:                                              ; preds = %935, %917
  %921 = load i64, ptr %52, align 8, !tbaa !9
  %922 = load i64, ptr %45, align 8, !tbaa !9
  %923 = icmp sle i64 %921, %922
  br i1 %923, label %924, label %938

924:                                              ; preds = %920
  %925 = load double, ptr %61, align 8, !tbaa !11
  %926 = load ptr, ptr %29, align 8, !tbaa !5
  %927 = load i64, ptr %52, align 8, !tbaa !9
  %928 = load i64, ptr %50, align 8, !tbaa !9
  %929 = load i64, ptr %40, align 8, !tbaa !9
  %930 = mul nsw i64 %928, %929
  %931 = add nsw i64 %927, %930
  %932 = getelementptr inbounds double, ptr %926, i64 %931
  %933 = load double, ptr %932, align 8, !tbaa !11
  %934 = fmul double %933, %925
  store double %934, ptr %932, align 8, !tbaa !11
  br label %935

935:                                              ; preds = %924
  %936 = load i64, ptr %52, align 8, !tbaa !9
  %937 = add nsw i64 %936, 1
  store i64 %937, ptr %52, align 8, !tbaa !9
  br label %920, !llvm.loop !17

938:                                              ; preds = %920
  br label %972

939:                                              ; preds = %909
  %940 = load ptr, ptr %21, align 8, !tbaa !5
  %941 = load i64, ptr %940, align 8, !tbaa !9
  store i64 %941, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %52, align 8, !tbaa !9
  br label %942

942:                                              ; preds = %968, %939
  %943 = load i64, ptr %52, align 8, !tbaa !9
  %944 = load i64, ptr %45, align 8, !tbaa !9
  %945 = icmp sle i64 %943, %944
  br i1 %945, label %946, label %971

946:                                              ; preds = %942
  %947 = load double, ptr %61, align 8, !tbaa !11
  %948 = load ptr, ptr %29, align 8, !tbaa !5
  %949 = load i64, ptr %52, align 8, !tbaa !9
  %950 = load i64, ptr %50, align 8, !tbaa !9
  %951 = load i64, ptr %40, align 8, !tbaa !9
  %952 = mul nsw i64 %950, %951
  %953 = add nsw i64 %949, %952
  %954 = getelementptr inbounds double, ptr %948, i64 %953
  %955 = load double, ptr %954, align 8, !tbaa !11
  %956 = fmul double %955, %947
  store double %956, ptr %954, align 8, !tbaa !11
  %957 = load double, ptr %61, align 8, !tbaa !11
  %958 = load ptr, ptr %29, align 8, !tbaa !5
  %959 = load i64, ptr %52, align 8, !tbaa !9
  %960 = load i64, ptr %50, align 8, !tbaa !9
  %961 = add nsw i64 %960, 1
  %962 = load i64, ptr %40, align 8, !tbaa !9
  %963 = mul nsw i64 %961, %962
  %964 = add nsw i64 %959, %963
  %965 = getelementptr inbounds double, ptr %958, i64 %964
  %966 = load double, ptr %965, align 8, !tbaa !11
  %967 = fmul double %966, %957
  store double %967, ptr %965, align 8, !tbaa !11
  br label %968

968:                                              ; preds = %946
  %969 = load i64, ptr %52, align 8, !tbaa !9
  %970 = add nsw i64 %969, 1
  store i64 %970, ptr %52, align 8, !tbaa !9
  br label %942, !llvm.loop !18

971:                                              ; preds = %942
  br label %972

972:                                              ; preds = %971, %938
  br label %973

973:                                              ; preds = %972, %908, %800
  br label %974

974:                                              ; preds = %973
  %975 = load i64, ptr %50, align 8, !tbaa !9
  %976 = add nsw i64 %975, 1
  store i64 %976, ptr %50, align 8, !tbaa !9
  br label %790, !llvm.loop !19

977:                                              ; preds = %790
  br label %978

978:                                              ; preds = %977, %771
  %979 = load i64, ptr %63, align 8, !tbaa !9
  %980 = icmp ne i64 %979, 0
  br i1 %980, label %981, label %1185

981:                                              ; preds = %978
  %982 = load ptr, ptr %21, align 8, !tbaa !5
  %983 = load ptr, ptr %33, align 8, !tbaa !5
  %984 = load i64, ptr %65, align 8, !tbaa !9
  %985 = getelementptr inbounds double, ptr %983, i64 %984
  %986 = load ptr, ptr %33, align 8, !tbaa !5
  %987 = load i64, ptr %74, align 8, !tbaa !9
  %988 = getelementptr inbounds double, ptr %986, i64 %987
  %989 = load ptr, ptr %21, align 8, !tbaa !5
  %990 = load ptr, ptr %31, align 8, !tbaa !5
  %991 = load i64, ptr %43, align 8, !tbaa !9
  %992 = getelementptr inbounds double, ptr %990, i64 %991
  %993 = load ptr, ptr %32, align 8, !tbaa !5
  %994 = call i32 @dggbak_(ptr noundef @.str.7, ptr noundef @.str.15, ptr noundef %982, ptr noundef %54, ptr noundef %53, ptr noundef %985, ptr noundef %988, ptr noundef %989, ptr noundef %992, ptr noundef %993, ptr noundef %59)
  %995 = load ptr, ptr %21, align 8, !tbaa !5
  %996 = load i64, ptr %995, align 8, !tbaa !9
  store i64 %996, ptr %44, align 8, !tbaa !9
  store i64 1, ptr %50, align 8, !tbaa !9
  br label %997

997:                                              ; preds = %1181, %981
  %998 = load i64, ptr %50, align 8, !tbaa !9
  %999 = load i64, ptr %44, align 8, !tbaa !9
  %1000 = icmp sle i64 %998, %999
  br i1 %1000, label %1001, label %1184

1001:                                             ; preds = %997
  %1002 = load ptr, ptr %27, align 8, !tbaa !5
  %1003 = load i64, ptr %50, align 8, !tbaa !9
  %1004 = getelementptr inbounds double, ptr %1002, i64 %1003
  %1005 = load double, ptr %1004, align 8, !tbaa !11
  %1006 = fcmp olt double %1005, 0.000000e+00
  br i1 %1006, label %1007, label %1008

1007:                                             ; preds = %1001
  br label %1180

1008:                                             ; preds = %1001
  store double 0.000000e+00, ptr %61, align 8, !tbaa !11
  %1009 = load ptr, ptr %27, align 8, !tbaa !5
  %1010 = load i64, ptr %50, align 8, !tbaa !9
  %1011 = getelementptr inbounds double, ptr %1009, i64 %1010
  %1012 = load double, ptr %1011, align 8, !tbaa !11
  %1013 = fcmp oeq double %1012, 0.000000e+00
  br i1 %1013, label %1014, label %1053

1014:                                             ; preds = %1008
  %1015 = load ptr, ptr %21, align 8, !tbaa !5
  %1016 = load i64, ptr %1015, align 8, !tbaa !9
  store i64 %1016, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %52, align 8, !tbaa !9
  br label %1017

1017:                                             ; preds = %1049, %1014
  %1018 = load i64, ptr %52, align 8, !tbaa !9
  %1019 = load i64, ptr %45, align 8, !tbaa !9
  %1020 = icmp sle i64 %1018, %1019
  br i1 %1020, label %1021, label %1052

1021:                                             ; preds = %1017
  %1022 = load double, ptr %61, align 8, !tbaa !11
  store double %1022, ptr %47, align 8, !tbaa !11
  %1023 = load ptr, ptr %31, align 8, !tbaa !5
  %1024 = load i64, ptr %52, align 8, !tbaa !9
  %1025 = load i64, ptr %50, align 8, !tbaa !9
  %1026 = load i64, ptr %42, align 8, !tbaa !9
  %1027 = mul nsw i64 %1025, %1026
  %1028 = add nsw i64 %1024, %1027
  %1029 = getelementptr inbounds double, ptr %1023, i64 %1028
  %1030 = load double, ptr %1029, align 8, !tbaa !11
  store double %1030, ptr %46, align 8, !tbaa !11
  %1031 = load double, ptr %46, align 8, !tbaa !11
  %1032 = fcmp oge double %1031, 0.000000e+00
  br i1 %1032, label %1033, label %1035

1033:                                             ; preds = %1021
  %1034 = load double, ptr %46, align 8, !tbaa !11
  br label %1038

1035:                                             ; preds = %1021
  %1036 = load double, ptr %46, align 8, !tbaa !11
  %1037 = fneg double %1036
  br label %1038

1038:                                             ; preds = %1035, %1033
  %1039 = phi double [ %1034, %1033 ], [ %1037, %1035 ]
  store double %1039, ptr %48, align 8, !tbaa !11
  %1040 = load double, ptr %47, align 8, !tbaa !11
  %1041 = load double, ptr %48, align 8, !tbaa !11
  %1042 = fcmp oge double %1040, %1041
  br i1 %1042, label %1043, label %1045

1043:                                             ; preds = %1038
  %1044 = load double, ptr %47, align 8, !tbaa !11
  br label %1047

1045:                                             ; preds = %1038
  %1046 = load double, ptr %48, align 8, !tbaa !11
  br label %1047

1047:                                             ; preds = %1045, %1043
  %1048 = phi double [ %1044, %1043 ], [ %1046, %1045 ]
  store double %1048, ptr %61, align 8, !tbaa !11
  br label %1049

1049:                                             ; preds = %1047
  %1050 = load i64, ptr %52, align 8, !tbaa !9
  %1051 = add nsw i64 %1050, 1
  store i64 %1051, ptr %52, align 8, !tbaa !9
  br label %1017, !llvm.loop !20

1052:                                             ; preds = %1017
  br label %1111

1053:                                             ; preds = %1008
  %1054 = load ptr, ptr %21, align 8, !tbaa !5
  %1055 = load i64, ptr %1054, align 8, !tbaa !9
  store i64 %1055, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %52, align 8, !tbaa !9
  br label %1056

1056:                                             ; preds = %1107, %1053
  %1057 = load i64, ptr %52, align 8, !tbaa !9
  %1058 = load i64, ptr %45, align 8, !tbaa !9
  %1059 = icmp sle i64 %1057, %1058
  br i1 %1059, label %1060, label %1110

1060:                                             ; preds = %1056
  %1061 = load double, ptr %61, align 8, !tbaa !11
  store double %1061, ptr %48, align 8, !tbaa !11
  %1062 = load ptr, ptr %31, align 8, !tbaa !5
  %1063 = load i64, ptr %52, align 8, !tbaa !9
  %1064 = load i64, ptr %50, align 8, !tbaa !9
  %1065 = load i64, ptr %42, align 8, !tbaa !9
  %1066 = mul nsw i64 %1064, %1065
  %1067 = add nsw i64 %1063, %1066
  %1068 = getelementptr inbounds double, ptr %1062, i64 %1067
  %1069 = load double, ptr %1068, align 8, !tbaa !11
  store double %1069, ptr %46, align 8, !tbaa !11
  %1070 = load double, ptr %46, align 8, !tbaa !11
  %1071 = fcmp oge double %1070, 0.000000e+00
  br i1 %1071, label %1072, label %1074

1072:                                             ; preds = %1060
  %1073 = load double, ptr %46, align 8, !tbaa !11
  br label %1077

1074:                                             ; preds = %1060
  %1075 = load double, ptr %46, align 8, !tbaa !11
  %1076 = fneg double %1075
  br label %1077

1077:                                             ; preds = %1074, %1072
  %1078 = phi double [ %1073, %1072 ], [ %1076, %1074 ]
  %1079 = load ptr, ptr %31, align 8, !tbaa !5
  %1080 = load i64, ptr %52, align 8, !tbaa !9
  %1081 = load i64, ptr %50, align 8, !tbaa !9
  %1082 = add nsw i64 %1081, 1
  %1083 = load i64, ptr %42, align 8, !tbaa !9
  %1084 = mul nsw i64 %1082, %1083
  %1085 = add nsw i64 %1080, %1084
  %1086 = getelementptr inbounds double, ptr %1079, i64 %1085
  %1087 = load double, ptr %1086, align 8, !tbaa !11
  store double %1087, ptr %47, align 8, !tbaa !11
  %1088 = load double, ptr %47, align 8, !tbaa !11
  %1089 = fcmp oge double %1088, 0.000000e+00
  br i1 %1089, label %1090, label %1092

1090:                                             ; preds = %1077
  %1091 = load double, ptr %47, align 8, !tbaa !11
  br label %1095

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

1095:                                             ; preds = %1092, %1090
  %1096 = phi double [ %1091, %1090 ], [ %1094, %1092 ]
  %1097 = fadd double %1078, %1096
  store double %1097, ptr %49, align 8, !tbaa !11
  %1098 = load double, ptr %48, align 8, !tbaa !11
  %1099 = load double, ptr %49, align 8, !tbaa !11
  %1100 = fcmp oge double %1098, %1099
  br i1 %1100, label %1101, label %1103

1101:                                             ; preds = %1095
  %1102 = load double, ptr %48, align 8, !tbaa !11
  br label %1105

1103:                                             ; preds = %1095
  %1104 = load double, ptr %49, align 8, !tbaa !11
  br label %1105

1105:                                             ; preds = %1103, %1101
  %1106 = phi double [ %1102, %1101 ], [ %1104, %1103 ]
  store double %1106, ptr %61, align 8, !tbaa !11
  br label %1107

1107:                                             ; preds = %1105
  %1108 = load i64, ptr %52, align 8, !tbaa !9
  %1109 = add nsw i64 %1108, 1
  store i64 %1109, ptr %52, align 8, !tbaa !9
  br label %1056, !llvm.loop !21

1110:                                             ; preds = %1056
  br label %1111

1111:                                             ; preds = %1110, %1052
  %1112 = load double, ptr %61, align 8, !tbaa !11
  %1113 = load double, ptr %80, align 8, !tbaa !11
  %1114 = fcmp olt double %1112, %1113
  br i1 %1114, label %1115, label %1116

1115:                                             ; preds = %1111
  br label %1180

1116:                                             ; preds = %1111
  %1117 = load double, ptr %61, align 8, !tbaa !11
  %1118 = fdiv double 1.000000e+00, %1117
  store double %1118, ptr %61, align 8, !tbaa !11
  %1119 = load ptr, ptr %27, align 8, !tbaa !5
  %1120 = load i64, ptr %50, align 8, !tbaa !9
  %1121 = getelementptr inbounds double, ptr %1119, i64 %1120
  %1122 = load double, ptr %1121, align 8, !tbaa !11
  %1123 = fcmp oeq double %1122, 0.000000e+00
  br i1 %1123, label %1124, label %1146

1124:                                             ; preds = %1116
  %1125 = load ptr, ptr %21, align 8, !tbaa !5
  %1126 = load i64, ptr %1125, align 8, !tbaa !9
  store i64 %1126, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %52, align 8, !tbaa !9
  br label %1127

1127:                                             ; preds = %1142, %1124
  %1128 = load i64, ptr %52, align 8, !tbaa !9
  %1129 = load i64, ptr %45, align 8, !tbaa !9
  %1130 = icmp sle i64 %1128, %1129
  br i1 %1130, label %1131, label %1145

1131:                                             ; preds = %1127
  %1132 = load double, ptr %61, align 8, !tbaa !11
  %1133 = load ptr, ptr %31, align 8, !tbaa !5
  %1134 = load i64, ptr %52, align 8, !tbaa !9
  %1135 = load i64, ptr %50, align 8, !tbaa !9
  %1136 = load i64, ptr %42, align 8, !tbaa !9
  %1137 = mul nsw i64 %1135, %1136
  %1138 = add nsw i64 %1134, %1137
  %1139 = getelementptr inbounds double, ptr %1133, i64 %1138
  %1140 = load double, ptr %1139, align 8, !tbaa !11
  %1141 = fmul double %1140, %1132
  store double %1141, ptr %1139, align 8, !tbaa !11
  br label %1142

1142:                                             ; preds = %1131
  %1143 = load i64, ptr %52, align 8, !tbaa !9
  %1144 = add nsw i64 %1143, 1
  store i64 %1144, ptr %52, align 8, !tbaa !9
  br label %1127, !llvm.loop !22

1145:                                             ; preds = %1127
  br label %1179

1146:                                             ; preds = %1116
  %1147 = load ptr, ptr %21, align 8, !tbaa !5
  %1148 = load i64, ptr %1147, align 8, !tbaa !9
  store i64 %1148, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %52, align 8, !tbaa !9
  br label %1149

1149:                                             ; preds = %1175, %1146
  %1150 = load i64, ptr %52, align 8, !tbaa !9
  %1151 = load i64, ptr %45, align 8, !tbaa !9
  %1152 = icmp sle i64 %1150, %1151
  br i1 %1152, label %1153, label %1178

1153:                                             ; preds = %1149
  %1154 = load double, ptr %61, align 8, !tbaa !11
  %1155 = load ptr, ptr %31, align 8, !tbaa !5
  %1156 = load i64, ptr %52, align 8, !tbaa !9
  %1157 = load i64, ptr %50, align 8, !tbaa !9
  %1158 = load i64, ptr %42, align 8, !tbaa !9
  %1159 = mul nsw i64 %1157, %1158
  %1160 = add nsw i64 %1156, %1159
  %1161 = getelementptr inbounds double, ptr %1155, i64 %1160
  %1162 = load double, ptr %1161, align 8, !tbaa !11
  %1163 = fmul double %1162, %1154
  store double %1163, ptr %1161, align 8, !tbaa !11
  %1164 = load double, ptr %61, align 8, !tbaa !11
  %1165 = load ptr, ptr %31, align 8, !tbaa !5
  %1166 = load i64, ptr %52, align 8, !tbaa !9
  %1167 = load i64, ptr %50, align 8, !tbaa !9
  %1168 = add nsw i64 %1167, 1
  %1169 = load i64, ptr %42, align 8, !tbaa !9
  %1170 = mul nsw i64 %1168, %1169
  %1171 = add nsw i64 %1166, %1170
  %1172 = getelementptr inbounds double, ptr %1165, i64 %1171
  %1173 = load double, ptr %1172, align 8, !tbaa !11
  %1174 = fmul double %1173, %1164
  store double %1174, ptr %1172, align 8, !tbaa !11
  br label %1175

1175:                                             ; preds = %1153
  %1176 = load i64, ptr %52, align 8, !tbaa !9
  %1177 = add nsw i64 %1176, 1
  store i64 %1177, ptr %52, align 8, !tbaa !9
  br label %1149, !llvm.loop !23

1178:                                             ; preds = %1149
  br label %1179

1179:                                             ; preds = %1178, %1145
  br label %1180

1180:                                             ; preds = %1179, %1115, %1007
  br label %1181

1181:                                             ; preds = %1180
  %1182 = load i64, ptr %50, align 8, !tbaa !9
  %1183 = add nsw i64 %1182, 1
  store i64 %1183, ptr %50, align 8, !tbaa !9
  br label %997, !llvm.loop !24

1184:                                             ; preds = %997
  br label %1185

1185:                                             ; preds = %1184, %978
  br label %1186

1186:                                             ; preds = %1185, %723
  %1187 = load i64, ptr %68, align 8, !tbaa !9
  %1188 = icmp ne i64 %1187, 0
  br i1 %1188, label %1189, label %1200

1189:                                             ; preds = %1186
  %1190 = load ptr, ptr %21, align 8, !tbaa !5
  %1191 = load ptr, ptr %26, align 8, !tbaa !5
  %1192 = getelementptr inbounds double, ptr %1191, i64 1
  %1193 = load ptr, ptr %21, align 8, !tbaa !5
  %1194 = call i32 @dlascl_(ptr noundef @.str.10, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %76, ptr noundef %57, ptr noundef %1190, ptr noundef @c__1, ptr noundef %1192, ptr noundef %1193, ptr noundef %59)
  %1195 = load ptr, ptr %21, align 8, !tbaa !5
  %1196 = load ptr, ptr %27, align 8, !tbaa !5
  %1197 = getelementptr inbounds double, ptr %1196, i64 1
  %1198 = load ptr, ptr %21, align 8, !tbaa !5
  %1199 = call i32 @dlascl_(ptr noundef @.str.10, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %76, ptr noundef %57, ptr noundef %1195, ptr noundef @c__1, ptr noundef %1197, ptr noundef %1198, ptr noundef %59)
  br label %1200

1200:                                             ; preds = %1189, %1186
  %1201 = load i64, ptr %69, align 8, !tbaa !9
  %1202 = icmp ne i64 %1201, 0
  br i1 %1202, label %1203, label %1209

1203:                                             ; preds = %1200
  %1204 = load ptr, ptr %21, align 8, !tbaa !5
  %1205 = load ptr, ptr %28, align 8, !tbaa !5
  %1206 = getelementptr inbounds double, ptr %1205, i64 1
  %1207 = load ptr, ptr %21, align 8, !tbaa !5
  %1208 = call i32 @dlascl_(ptr noundef @.str.10, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %77, ptr noundef %58, ptr noundef %1204, ptr noundef @c__1, ptr noundef %1206, ptr noundef %1207, ptr noundef %59)
  br label %1209

1209:                                             ; preds = %1203, %1200
  br label %1210

1210:                                             ; preds = %1209, %766, %722
  %1211 = load i64, ptr %79, align 8, !tbaa !9
  %1212 = sitofp i64 %1211 to double
  %1213 = load ptr, ptr %33, align 8, !tbaa !5
  %1214 = getelementptr inbounds double, ptr %1213, i64 1
  store double %1212, ptr %1214, align 8, !tbaa !11
  store i32 0, ptr %18, align 4
  store i32 1, ptr %82, align 4
  br label %1215

1215:                                             ; preds = %1210, %346, %340, %332
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 1, 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 8, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  %1216 = load i32, ptr %18, align 4
  ret i32 %1216
}

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

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

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

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

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

declare i32 @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 i32 @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 = !{!"long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = !{!7, !7, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = distinct !{!16, !15}
!17 = distinct !{!17, !15}
!18 = distinct !{!18, !15}
!19 = distinct !{!19, !15}
!20 = distinct !{!20, !15}
!21 = distinct !{!21, !15}
!22 = distinct !{!22, !15}
!23 = distinct !{!23, !15}
!24 = distinct !{!24, !15}


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

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.2 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c__0 = external hidden global i64, align 8
@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@c_n1 = external hidden global i64, align 8
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [5 x i8], align 1
@c_b36 = external hidden global double, align 8
@c_b37 = external hidden global double, align 8
@.str.14 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [2 x i8], align 1

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

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

.thread606:                                       ; preds = %17
  %52 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #5
  %.not456607 = icmp eq i64 %52, 0
  br i1 %.not456607, label %.thread612, label %.thread.thread

.thread612:                                       ; preds = %.thread606
  %53 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #5
  store i64 0, ptr %16, align 8, !tbaa !5
  br label %56

.thread.thread:                                   ; preds = %.thread606
  store i64 0, ptr %16, align 8, !tbaa !5
  br label %.thread485

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

.thread:                                          ; preds = %49
  store i64 0, ptr %16, align 8, !tbaa !5
  br i1 %.not455, label %.thread485, label %.thread497.sink.split

56:                                               ; preds = %.thread612, %54
  %57 = phi i64 [ %53, %.thread612 ], [ %55, %54 ]
  %.not457.not = icmp eq i64 %57, 0
  br i1 %.not457.not, label %.thread497.sink.split, label %.thread485

.thread485:                                       ; preds = %.thread.thread, %.thread, %56
  %.not456608 = phi i1 [ true, %56 ], [ false, %.thread ], [ false, %.thread.thread ]
  %58 = phi i1 [ %.not, %56 ], [ %.not455, %.thread ], [ false, %.thread.thread ]
  %59 = phi i1 [ true, %56 ], [ %.not455, %.thread ], [ false, %.thread.thread ]
  %.in = load i64, ptr %15, align 8, !tbaa !5
  %60 = icmp eq i64 %.in, -1
  %61 = load i64, ptr %2, align 8, !tbaa !5
  %62 = icmp slt i64 %61, 0
  br i1 %62, label %.thread497.sink.split, label %63

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

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

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

73:                                               ; preds = %69
  %74 = load i64, ptr %13, align 8, !tbaa !5
  %75 = icmp slt i64 %74, 1
  %76 = icmp ult i64 %74, %61
  %or.cond520 = and i1 %.not456608, %76
  %or.cond522 = or i1 %75, %or.cond520
  br i1 %or.cond522, label %.thread497.sink.split, label %77

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

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

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

.thread489:                                       ; preds = %95
  %.pr493.pr = load i64, ptr %16, align 8, !tbaa !5
  %.not461 = icmp eq i64 %.pr493.pr, 0
  br i1 %.not461, label %102, label %.thread497

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

.thread497:                                       ; preds = %.thread497.sink.split, %.thread489
  %99 = phi i64 [ %.pr493.pr, %.thread489 ], [ %.sink, %.thread497.sink.split ]
  %100 = sub nsw i64 0, %99
  store i64 %100, ptr %18, align 8, !tbaa !5
  %101 = call i32 @xerbla_(ptr noundef nonnull @.str.6, ptr noundef nonnull %18) #5
  br label %449

102:                                              ; preds = %.thread489
  br i1 %60, label %449, label %103

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

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

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

122:                                              ; preds = %106, %119
  %storemerge523 = phi double [ %120, %119 ], [ %117, %106 ]
  store double %storemerge523, ptr %31, align 8, !tbaa !9
  %123 = call i32 @dlascl_(ptr noundef nonnull @.str.10, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %23, ptr noundef nonnull %31, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef nonnull %25) #5
  br label %124

124:                                              ; preds = %119, %122
  %.not462504 = phi i1 [ false, %122 ], [ true, %119 ]
  %125 = call double @dlange_(ptr noundef nonnull @.str.9, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %14) #5
  store double %125, ptr %24, align 8, !tbaa !9
  %126 = fcmp ogt double %125, 0.000000e+00
  %127 = load double, ptr %33, align 8
  %128 = fcmp olt double %125, %127
  %or.cond529 = select i1 %126, i1 %128, i1 false
  br i1 %or.cond529, label %132, label %129

129:                                              ; preds = %124
  %130 = load double, ptr %30, align 8, !tbaa !9
  %131 = fcmp ogt double %125, %130
  br i1 %131, label %132, label %134

132:                                              ; preds = %124, %129
  %storemerge524 = phi double [ %130, %129 ], [ %127, %124 ]
  store double %storemerge524, ptr %32, align 8, !tbaa !9
  %133 = call i32 @dlascl_(ptr noundef nonnull @.str.10, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %24, ptr noundef nonnull %32, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %25) #5
  br label %134

134:                                              ; preds = %129, %132
  %.not463509 = phi i1 [ false, %132 ], [ true, %129 ]
  %135 = load i64, ptr %2, align 8, !tbaa !5
  %reass.add = shl i64 %135, 1
  %136 = or disjoint i64 %reass.add, 1
  %137 = getelementptr double, ptr %14, i64 %135
  %138 = getelementptr double, ptr %14, i64 %reass.add
  %139 = call i32 @dggbal_(ptr noundef nonnull @.str.7, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %22, ptr noundef nonnull %21, ptr noundef nonnull %14, ptr noundef %137, ptr noundef %138, ptr noundef nonnull %25) #5
  %140 = load i64, ptr %21, align 8, !tbaa !5
  %141 = add nsw i64 %140, 1
  %142 = load i64, ptr %22, align 8, !tbaa !5
  %143 = sub i64 %141, %142
  store i64 %143, ptr %27, align 8, !tbaa !5
  br i1 %59, label %144, label %147

144:                                              ; preds = %134
  %145 = load i64, ptr %2, align 8, !tbaa !5
  %reass.sub = sub i64 %145, %142
  %146 = add i64 %reass.sub, 1
  br label %147

147:                                              ; preds = %134, %144
  %storemerge = phi i64 [ %146, %144 ], [ %143, %134 ]
  store i64 %storemerge, ptr %26, align 8, !tbaa !5
  %148 = add nsw i64 %143, %136
  %149 = load i64, ptr %15, align 8, !tbaa !5
  %reass.sub582 = sub i64 %149, %148
  %150 = add i64 %reass.sub582, 1
  store i64 %150, ptr %18, align 8, !tbaa !5
  %151 = add i64 %37, 1
  %152 = mul i64 %142, %151
  %153 = getelementptr inbounds double, ptr %39, i64 %152
  %154 = getelementptr inbounds double, ptr %47, i64 %148
  %155 = call i32 @dgeqrf_(ptr noundef nonnull %27, ptr noundef nonnull %26, ptr noundef %153, ptr noundef nonnull %6, ptr noundef %138, ptr noundef nonnull %154, ptr noundef nonnull %18, ptr noundef nonnull %25) #5
  %156 = load i64, ptr %15, align 8, !tbaa !5
  %reass.sub583 = sub i64 %156, %148
  %157 = add i64 %reass.sub583, 1
  store i64 %157, ptr %18, align 8, !tbaa !5
  %158 = load i64, ptr %22, align 8, !tbaa !5
  %159 = mul i64 %158, %151
  %160 = getelementptr inbounds double, ptr %39, i64 %159
  %161 = add i64 %34, 1
  %162 = mul i64 %158, %161
  %163 = getelementptr inbounds double, ptr %36, i64 %162
  %164 = call i32 @dormqr_(ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.12, ptr noundef nonnull %27, ptr noundef nonnull %26, ptr noundef nonnull %27, ptr noundef %160, ptr noundef nonnull %6, ptr noundef %138, ptr noundef %163, ptr noundef nonnull %4, ptr noundef nonnull %154, ptr noundef nonnull %18, ptr noundef nonnull %25) #5
  br i1 %58, label %165, label %188

165:                                              ; preds = %147
  %166 = call i32 @dlaset_(ptr noundef nonnull @.str.13, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_b36, ptr noundef nonnull @c_b37, ptr noundef %10, ptr noundef nonnull %11) #5
  %167 = load i64, ptr %27, align 8, !tbaa !5
  %168 = icmp sgt i64 %167, 1
  br i1 %168, label %169, label %180

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

180:                                              ; preds = %169, %165
  %181 = load i64, ptr %15, align 8, !tbaa !5
  %reass.sub584 = sub i64 %181, %148
  %182 = add i64 %reass.sub584, 1
  store i64 %182, ptr %18, align 8, !tbaa !5
  %183 = load i64, ptr %22, align 8, !tbaa !5
  %184 = add i64 %41, 1
  %185 = mul i64 %183, %184
  %186 = getelementptr inbounds double, ptr %43, i64 %185
  %187 = call i32 @dorgqr_(ptr noundef nonnull %27, ptr noundef nonnull %27, ptr noundef nonnull %27, ptr noundef %186, ptr noundef nonnull %11, ptr noundef %138, ptr noundef nonnull %154, ptr noundef nonnull %18, ptr noundef nonnull %25) #5
  br label %188

188:                                              ; preds = %180, %147
  br i1 %.not456608, label %189, label %191

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

191:                                              ; preds = %189, %188
  br i1 %59, label %192, label %194

192:                                              ; preds = %191
  %193 = call i32 @dgghrd_(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %22, ptr noundef nonnull %21, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %25) #5
  br label %201

194:                                              ; preds = %191
  %195 = load i64, ptr %22, align 8, !tbaa !5
  %196 = mul i64 %195, %161
  %197 = getelementptr inbounds double, ptr %36, i64 %196
  %198 = mul i64 %195, %151
  %199 = getelementptr inbounds double, ptr %39, i64 %198
  %200 = call i32 @dgghrd_(ptr noundef nonnull @.str, ptr noundef nonnull @.str, ptr noundef nonnull %27, ptr noundef nonnull @c__1, ptr noundef nonnull %27, ptr noundef %197, ptr noundef nonnull %4, ptr noundef %199, ptr noundef nonnull %6, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %25) #5
  br label %201

201:                                              ; preds = %194, %192
  %.483 = phi i8 [ 69, %194 ], [ 83, %192 ]
  store i8 %.483, ptr %29, align 1, !tbaa !11
  %202 = load i64, ptr %15, align 8, !tbaa !5
  %reass.sub585 = sub i64 %202, %136
  %203 = add i64 %reass.sub585, 1
  store i64 %203, ptr %18, align 8, !tbaa !5
  %204 = call i32 @dhgeqz_(ptr noundef nonnull %29, ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %22, ptr noundef nonnull %21, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %12, ptr noundef nonnull %13, ptr noundef %138, ptr noundef nonnull %18, ptr noundef nonnull %25) #5
  %205 = load i64, ptr %25, align 8, !tbaa !5
  %.not465 = icmp eq i64 %205, 0
  br i1 %.not465, label %216, label %206

206:                                              ; preds = %201
  %207 = icmp slt i64 %205, 1
  %.pre = load i64, ptr %2, align 8, !tbaa !5
  %.not477 = icmp sgt i64 %205, %.pre
  %or.cond622 = select i1 %207, i1 true, i1 %.not477
  br i1 %or.cond622, label %209, label %208

208:                                              ; preds = %206
  store i64 %205, ptr %16, align 8, !tbaa !5
  br label %448

209:                                              ; preds = %206
  %210 = icmp sle i64 %205, %.pre
  %211 = shl i64 %.pre, 1
  %.not478 = icmp sgt i64 %205, %211
  %or.cond484 = or i1 %210, %.not478
  br i1 %or.cond484, label %214, label %212

212:                                              ; preds = %209
  %213 = sub nsw i64 %205, %.pre
  store i64 %213, ptr %16, align 8, !tbaa !5
  br label %448

214:                                              ; preds = %209
  %215 = add nsw i64 %.pre, 1
  store i64 %215, ptr %16, align 8, !tbaa !5
  br label %448

216:                                              ; preds = %201
  br i1 %59, label %217, label %.loopexit535

217:                                              ; preds = %216
  br i1 %58, label %218, label %.thread510

218:                                              ; preds = %217
  %. = select i1 %.not456608, i8 66, i8 76
  store i8 %., ptr %29, align 1, !tbaa !11
  %219 = call i32 @dtgevc_(ptr noundef nonnull %29, ptr noundef nonnull @.str.14, ptr noundef nonnull %28, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %2, ptr noundef nonnull %20, ptr noundef %138, ptr noundef nonnull %25) #5
  %220 = load i64, ptr %25, align 8, !tbaa !5
  %.not466 = icmp eq i64 %220, 0
  br i1 %.not466, label %226, label %223

.thread510:                                       ; preds = %217
  store i8 82, ptr %29, align 1, !tbaa !11
  %221 = call i32 @dtgevc_(ptr noundef nonnull %29, ptr noundef nonnull @.str.14, ptr noundef nonnull %28, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %2, ptr noundef nonnull %20, ptr noundef %138, ptr noundef nonnull %25) #5
  %222 = load i64, ptr %25, align 8, !tbaa !5
  %.not466511 = icmp eq i64 %222, 0
  br i1 %.not466511, label %.thread512, label %223

223:                                              ; preds = %.thread510, %218
  %224 = load i64, ptr %2, align 8, !tbaa !5
  %225 = add nsw i64 %224, 2
  store i64 %225, ptr %16, align 8, !tbaa !5
  br label %448

226:                                              ; preds = %218
  %227 = call i32 @dggbak_(ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.11, ptr noundef nonnull %2, ptr noundef nonnull %22, ptr noundef nonnull %21, ptr noundef nonnull %14, ptr noundef %137, ptr noundef nonnull %2, ptr noundef %10, ptr noundef nonnull %11, ptr noundef nonnull %25) #5
  %228 = load i64, ptr %2, align 8, !tbaa !5
  store i64 %228, ptr %18, align 8, !tbaa !5
  %.not467556 = icmp slt i64 %228, 1
  br i1 %.not467556, label %.thread512, label %.lr.ph558

.lr.ph558:                                        ; preds = %226
  %229 = load double, ptr %33, align 8
  %230 = add nuw i64 %228, 2305843009213693951
  %231 = mul i64 %41, %230
  %232 = add i64 %231, %228
  %233 = shl i64 %232, 3
  %scevgep = getelementptr i8, ptr %10, i64 %233
  %234 = shl i64 %41, 3
  %scevgep631 = getelementptr i8, ptr %10, i64 %234
  %235 = add i64 %234, 8
  %236 = mul i64 %228, %235
  %scevgep632 = getelementptr i8, ptr %10, i64 %236
  %xtraiter = and i64 %228, 1
  %237 = icmp eq i64 %228, 1
  %unroll_iter = and i64 %228, 9223372036854775806
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  %min.iters.check636 = icmp ult i64 %228, 4
  %bound0 = icmp ugt ptr %scevgep632, %10
  %bound1 = icmp ult ptr %scevgep631, %scevgep
  %found.conflict = and i1 %bound0, %bound1
  %stride.check = icmp slt i64 %234, 0
  %238 = or i1 %found.conflict, %stride.check
  %n.vec639 = and i64 %228, 9223372036854775804
  %ind.end640 = or disjoint i64 %n.vec639, 1
  %cmp.n652 = icmp eq i64 %228, %n.vec639
  %xtraiter706 = and i64 %228, 1
  %lcmp.mod707.not = icmp eq i64 %xtraiter706, 0
  %min.iters.check = icmp ult i64 %228, 4
  %n.vec = and i64 %228, 9223372036854775804
  %ind.end = or disjoint i64 %n.vec, 1
  %cmp.n = icmp eq i64 %228, %n.vec
  br label %239

239:                                              ; preds = %.lr.ph558, %.loopexit536
  %.0437557 = phi i64 [ 1, %.lr.ph558 ], [ %333, %.loopexit536 ]
  %240 = getelementptr inbounds double, ptr %40, i64 %.0437557
  %241 = load double, ptr %240, align 8, !tbaa !9
  %242 = fcmp olt double %241, 0.000000e+00
  br i1 %242, label %.loopexit536, label %243

243:                                              ; preds = %239
  %244 = fcmp oeq double %241, 0.000000e+00
  store i64 %228, ptr %19, align 8, !tbaa !5
  %245 = mul nsw i64 %.0437557, %41
  br i1 %244, label %.lr.ph546, label %.lr.ph

.lr.ph546:                                        ; preds = %243
  %invariant.gep = getelementptr double, ptr %43, i64 %245
  br i1 %237, label %.loopexit538.loopexit.unr-lcssa, label %.lr.ph546.new

.lr.ph546.new:                                    ; preds = %.lr.ph546
  %invariant.gep721 = getelementptr i8, ptr %invariant.gep, i64 8
  br label %246

246:                                              ; preds = %246, %.lr.ph546.new
  %.0429545 = phi double [ 0.000000e+00, %.lr.ph546.new ], [ %258, %246 ]
  %.0431544 = phi i64 [ 1, %.lr.ph546.new ], [ %259, %246 ]
  %niter = phi i64 [ 0, %.lr.ph546.new ], [ %niter.next.1, %246 ]
  %gep = getelementptr double, ptr %invariant.gep, i64 %.0431544
  %247 = load double, ptr %gep, align 8, !tbaa !9
  %248 = fcmp oge double %247, 0.000000e+00
  %249 = fneg double %247
  %250 = select i1 %248, double %247, double %249
  %251 = fcmp oge double %.0429545, %250
  %252 = select i1 %251, double %.0429545, double %250
  %gep722 = getelementptr double, ptr %invariant.gep721, i64 %.0431544
  %253 = load double, ptr %gep722, align 8, !tbaa !9
  %254 = fcmp oge double %253, 0.000000e+00
  %255 = fneg double %253
  %256 = select i1 %254, double %253, double %255
  %257 = fcmp oge double %252, %256
  %258 = select i1 %257, double %252, double %256
  %259 = add nuw i64 %.0431544, 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 %.loopexit538.loopexit.unr-lcssa, label %246, !llvm.loop !12

.lr.ph:                                           ; preds = %243
  %260 = add nuw nsw i64 %.0437557, 1
  %261 = mul nsw i64 %260, %41
  br label %262

262:                                              ; preds = %.lr.ph, %262
  %.1430542 = phi double [ 0.000000e+00, %.lr.ph ], [ %276, %262 ]
  %.1432541 = phi i64 [ 1, %.lr.ph ], [ %277, %262 ]
  %263 = getelementptr double, ptr %43, i64 %.1432541
  %264 = getelementptr double, ptr %263, i64 %245
  %265 = load double, ptr %264, align 8, !tbaa !9
  %266 = fcmp oge double %265, 0.000000e+00
  %267 = fneg double %265
  %268 = select i1 %266, double %265, double %267
  %269 = getelementptr double, ptr %263, i64 %261
  %270 = load double, ptr %269, align 8, !tbaa !9
  %271 = fcmp oge double %270, 0.000000e+00
  %272 = fneg double %270
  %273 = select i1 %271, double %270, double %272
  %274 = fadd double %268, %273
  %275 = fcmp oge double %.1430542, %274
  %276 = select i1 %275, double %.1430542, double %274
  %277 = add nuw i64 %.1432541, 1
  %exitcond.not = icmp eq i64 %.1432541, %228
  br i1 %exitcond.not, label %.loopexit538, label %262, !llvm.loop !14

.loopexit538.loopexit.unr-lcssa:                  ; preds = %246, %.lr.ph546
  %.lcssa704.ph = phi double [ poison, %.lr.ph546 ], [ %258, %246 ]
  %.0429545.unr = phi double [ 0.000000e+00, %.lr.ph546 ], [ %258, %246 ]
  %.0431544.unr = phi i64 [ 1, %.lr.ph546 ], [ %259, %246 ]
  br i1 %lcmp.mod.not, label %.loopexit538, label %.loopexit538.loopexit.epilog-lcssa

.loopexit538.loopexit.epilog-lcssa:               ; preds = %.loopexit538.loopexit.unr-lcssa
  %gep.epil = getelementptr double, ptr %invariant.gep, i64 %.0431544.unr
  %278 = load double, ptr %gep.epil, align 8, !tbaa !9
  %279 = fcmp oge double %278, 0.000000e+00
  %280 = fneg double %278
  %281 = select i1 %279, double %278, double %280
  %282 = fcmp oge double %.0429545.unr, %281
  %283 = select i1 %282, double %.0429545.unr, double %281
  br label %.loopexit538

.loopexit538:                                     ; preds = %262, %.loopexit538.loopexit.epilog-lcssa, %.loopexit538.loopexit.unr-lcssa
  %.2 = phi double [ %.lcssa704.ph, %.loopexit538.loopexit.unr-lcssa ], [ %283, %.loopexit538.loopexit.epilog-lcssa ], [ %276, %262 ]
  %284 = fcmp olt double %.2, %229
  br i1 %284, label %.loopexit536, label %285

285:                                              ; preds = %.loopexit538
  %286 = fdiv double 1.000000e+00, %.2
  store i64 %228, ptr %19, align 8, !tbaa !5
  %287 = mul nsw i64 %.0437557, %41
  br i1 %244, label %.lr.ph553, label %.lr.ph550

.lr.ph553:                                        ; preds = %285
  %invariant.gep554 = getelementptr double, ptr %43, i64 %287
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph553
  %broadcast.splatinsert = insertelement <2 x double> poison, double %286, 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
  %288 = getelementptr double, ptr %invariant.gep554, i64 %offset.idx
  %289 = getelementptr i8, ptr %288, i64 16
  %wide.load = load <2 x double>, ptr %288, align 8, !tbaa !9
  %wide.load630 = load <2 x double>, ptr %289, align 8, !tbaa !9
  %290 = fmul <2 x double> %broadcast.splat, %wide.load
  %291 = fmul <2 x double> %broadcast.splat, %wide.load630
  store <2 x double> %290, ptr %288, align 8, !tbaa !9
  store <2 x double> %291, ptr %289, align 8, !tbaa !9
  %index.next = add nuw i64 %index, 4
  %292 = icmp eq i64 %index.next, %n.vec
  br i1 %292, label %middle.block, label %vector.body, !llvm.loop !15

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

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

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %.2433552 = phi i64 [ %295, %scalar.ph ], [ %.2433552.ph, %scalar.ph.preheader ]
  %gep555 = getelementptr double, ptr %invariant.gep554, i64 %.2433552
  %293 = load double, ptr %gep555, align 8, !tbaa !9
  %294 = fmul double %286, %293
  store double %294, ptr %gep555, align 8, !tbaa !9
  %295 = add nuw i64 %.2433552, 1
  %exitcond595.not = icmp eq i64 %.2433552, %228
  br i1 %exitcond595.not, label %.loopexit536, label %scalar.ph, !llvm.loop !18

.lr.ph550:                                        ; preds = %285
  %296 = add nuw nsw i64 %.0437557, 1
  %297 = mul nsw i64 %296, %41
  %brmerge = select i1 %min.iters.check636, i1 true, i1 %238
  br i1 %brmerge, label %scalar.ph635.preheader, label %vector.ph637

vector.ph637:                                     ; preds = %.lr.ph550
  %broadcast.splatinsert647 = insertelement <2 x double> poison, double %286, i64 0
  %broadcast.splat648 = shufflevector <2 x double> %broadcast.splatinsert647, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body642

vector.body642:                                   ; preds = %vector.body642, %vector.ph637
  %index643 = phi i64 [ 0, %vector.ph637 ], [ %index.next651, %vector.body642 ]
  %offset.idx644 = or disjoint i64 %index643, 1
  %298 = getelementptr double, ptr %43, i64 %offset.idx644
  %299 = getelementptr double, ptr %298, i64 %287
  %300 = getelementptr i8, ptr %299, i64 16
  %wide.load645 = load <2 x double>, ptr %299, align 8, !tbaa !9, !alias.scope !19, !noalias !22
  %wide.load646 = load <2 x double>, ptr %300, align 8, !tbaa !9, !alias.scope !19, !noalias !22
  %301 = fmul <2 x double> %broadcast.splat648, %wide.load645
  %302 = fmul <2 x double> %broadcast.splat648, %wide.load646
  store <2 x double> %301, ptr %299, align 8, !tbaa !9, !alias.scope !19, !noalias !22
  store <2 x double> %302, ptr %300, align 8, !tbaa !9, !alias.scope !19, !noalias !22
  %303 = getelementptr double, ptr %298, i64 %297
  %304 = getelementptr i8, ptr %303, i64 16
  %wide.load649 = load <2 x double>, ptr %303, align 8, !tbaa !9, !alias.scope !22
  %wide.load650 = load <2 x double>, ptr %304, align 8, !tbaa !9, !alias.scope !22
  %305 = fmul <2 x double> %broadcast.splat648, %wide.load649
  %306 = fmul <2 x double> %broadcast.splat648, %wide.load650
  store <2 x double> %305, ptr %303, align 8, !tbaa !9, !alias.scope !22
  store <2 x double> %306, ptr %304, align 8, !tbaa !9, !alias.scope !22
  %index.next651 = add nuw i64 %index643, 4
  %307 = icmp eq i64 %index.next651, %n.vec639
  br i1 %307, label %middle.block634, label %vector.body642, !llvm.loop !24

middle.block634:                                  ; preds = %vector.body642
  br i1 %cmp.n652, label %.loopexit536, label %scalar.ph635.preheader

scalar.ph635.preheader:                           ; preds = %.lr.ph550, %middle.block634
  %.3434549.ph = phi i64 [ 1, %.lr.ph550 ], [ %ind.end640, %middle.block634 ]
  br i1 %lcmp.mod707.not, label %scalar.ph635.prol.loopexit, label %scalar.ph635.prol

scalar.ph635.prol:                                ; preds = %scalar.ph635.preheader
  %308 = getelementptr double, ptr %43, i64 %.3434549.ph
  %309 = getelementptr double, ptr %308, i64 %287
  %310 = load double, ptr %309, align 8, !tbaa !9
  %311 = fmul double %286, %310
  store double %311, ptr %309, align 8, !tbaa !9
  %312 = getelementptr double, ptr %308, i64 %297
  %313 = load double, ptr %312, align 8, !tbaa !9
  %314 = fmul double %286, %313
  store double %314, ptr %312, align 8, !tbaa !9
  %315 = add nuw i64 %.3434549.ph, 1
  br label %scalar.ph635.prol.loopexit

scalar.ph635.prol.loopexit:                       ; preds = %scalar.ph635.prol, %scalar.ph635.preheader
  %.3434549.unr = phi i64 [ %.3434549.ph, %scalar.ph635.preheader ], [ %315, %scalar.ph635.prol ]
  %316 = icmp eq i64 %228, %.3434549.ph
  br i1 %316, label %.loopexit536, label %scalar.ph635

scalar.ph635:                                     ; preds = %scalar.ph635.prol.loopexit, %scalar.ph635
  %.3434549 = phi i64 [ %332, %scalar.ph635 ], [ %.3434549.unr, %scalar.ph635.prol.loopexit ]
  %317 = getelementptr double, ptr %43, i64 %.3434549
  %318 = getelementptr double, ptr %317, i64 %287
  %319 = load double, ptr %318, align 8, !tbaa !9
  %320 = fmul double %286, %319
  store double %320, ptr %318, align 8, !tbaa !9
  %321 = getelementptr double, ptr %317, i64 %297
  %322 = load double, ptr %321, align 8, !tbaa !9
  %323 = fmul double %286, %322
  store double %323, ptr %321, align 8, !tbaa !9
  %324 = add nuw i64 %.3434549, 1
  %325 = getelementptr double, ptr %43, i64 %324
  %326 = getelementptr double, ptr %325, i64 %287
  %327 = load double, ptr %326, align 8, !tbaa !9
  %328 = fmul double %286, %327
  store double %328, ptr %326, align 8, !tbaa !9
  %329 = getelementptr double, ptr %325, i64 %297
  %330 = load double, ptr %329, align 8, !tbaa !9
  %331 = fmul double %286, %330
  store double %331, ptr %329, align 8, !tbaa !9
  %332 = add nuw i64 %.3434549, 2
  %exitcond594.not.1 = icmp eq i64 %324, %228
  br i1 %exitcond594.not.1, label %.loopexit536, label %scalar.ph635, !llvm.loop !25

.loopexit536:                                     ; preds = %scalar.ph635.prol.loopexit, %scalar.ph635, %scalar.ph, %middle.block634, %middle.block, %239, %.loopexit538
  %333 = add nuw i64 %.0437557, 1
  %exitcond596.not = icmp eq i64 %.0437557, %228
  br i1 %exitcond596.not, label %.thread512, label %239, !llvm.loop !26

.thread512:                                       ; preds = %.loopexit536, %226, %.thread510
  br i1 %.not456608, label %334, label %.loopexit535

334:                                              ; preds = %.thread512
  %335 = call i32 @dggbak_(ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.15, ptr noundef nonnull %2, ptr noundef nonnull %22, ptr noundef nonnull %21, ptr noundef nonnull %14, ptr noundef %137, ptr noundef nonnull %2, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %25) #5
  %336 = load i64, ptr %2, align 8, !tbaa !5
  store i64 %336, ptr %18, align 8, !tbaa !5
  %.not468579 = icmp slt i64 %336, 1
  br i1 %.not468579, label %.loopexit535, label %.lr.ph581

.lr.ph581:                                        ; preds = %334
  %337 = load double, ptr %33, align 8
  %338 = add nuw i64 %336, 2305843009213693951
  %339 = mul i64 %44, %338
  %340 = add i64 %339, %336
  %341 = shl i64 %340, 3
  %scevgep671 = getelementptr i8, ptr %12, i64 %341
  %342 = shl i64 %44, 3
  %scevgep672 = getelementptr i8, ptr %12, i64 %342
  %343 = add i64 %342, 8
  %344 = mul i64 %336, %343
  %scevgep673 = getelementptr i8, ptr %12, i64 %344
  %xtraiter709 = and i64 %336, 1
  %345 = icmp eq i64 %336, 1
  %unroll_iter712 = and i64 %336, 9223372036854775806
  %lcmp.mod710.not = icmp eq i64 %xtraiter709, 0
  %min.iters.check681 = icmp ult i64 %336, 4
  %bound0674 = icmp ugt ptr %scevgep673, %12
  %bound1675 = icmp ult ptr %scevgep672, %scevgep671
  %found.conflict676 = and i1 %bound0674, %bound1675
  %stride.check677 = icmp slt i64 %342, 0
  %346 = or i1 %found.conflict676, %stride.check677
  %n.vec684 = and i64 %336, 9223372036854775804
  %ind.end685 = or disjoint i64 %n.vec684, 1
  %cmp.n697 = icmp eq i64 %336, %n.vec684
  %xtraiter714 = and i64 %336, 1
  %lcmp.mod715.not = icmp eq i64 %xtraiter714, 0
  %min.iters.check655 = icmp ult i64 %336, 4
  %n.vec658 = and i64 %336, 9223372036854775804
  %ind.end659 = or disjoint i64 %n.vec658, 1
  %cmp.n669 = icmp eq i64 %336, %n.vec658
  br label %347

347:                                              ; preds = %.lr.ph581, %.loopexit
  %.1438580 = phi i64 [ 1, %.lr.ph581 ], [ %441, %.loopexit ]
  %348 = getelementptr inbounds double, ptr %40, i64 %.1438580
  %349 = load double, ptr %348, align 8, !tbaa !9
  %350 = fcmp olt double %349, 0.000000e+00
  br i1 %350, label %.loopexit, label %351

351:                                              ; preds = %347
  %352 = fcmp oeq double %349, 0.000000e+00
  store i64 %336, ptr %19, align 8, !tbaa !5
  %353 = mul nsw i64 %.1438580, %44
  br i1 %352, label %.lr.ph567, label %.lr.ph562

.lr.ph567:                                        ; preds = %351
  %invariant.gep569 = getelementptr double, ptr %46, i64 %353
  br i1 %345, label %.loopexit533.loopexit.unr-lcssa, label %.lr.ph567.new

.lr.ph567.new:                                    ; preds = %.lr.ph567
  %invariant.gep723 = getelementptr i8, ptr %invariant.gep569, i64 8
  br label %354

354:                                              ; preds = %354, %.lr.ph567.new
  %.3566 = phi double [ 0.000000e+00, %.lr.ph567.new ], [ %366, %354 ]
  %.4435565 = phi i64 [ 1, %.lr.ph567.new ], [ %367, %354 ]
  %niter713 = phi i64 [ 0, %.lr.ph567.new ], [ %niter713.next.1, %354 ]
  %gep570 = getelementptr double, ptr %invariant.gep569, i64 %.4435565
  %355 = load double, ptr %gep570, align 8, !tbaa !9
  %356 = fcmp oge double %355, 0.000000e+00
  %357 = fneg double %355
  %358 = select i1 %356, double %355, double %357
  %359 = fcmp oge double %.3566, %358
  %360 = select i1 %359, double %.3566, double %358
  %gep724 = getelementptr double, ptr %invariant.gep723, i64 %.4435565
  %361 = load double, ptr %gep724, 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 %360, %364
  %366 = select i1 %365, double %360, double %364
  %367 = add nuw i64 %.4435565, 2
  %niter713.next.1 = add i64 %niter713, 2
  %niter713.ncmp.1 = icmp eq i64 %niter713.next.1, %unroll_iter712
  br i1 %niter713.ncmp.1, label %.loopexit533.loopexit.unr-lcssa, label %354, !llvm.loop !27

.lr.ph562:                                        ; preds = %351
  %368 = add nuw nsw i64 %.1438580, 1
  %369 = mul nsw i64 %368, %44
  br label %370

370:                                              ; preds = %.lr.ph562, %370
  %.4561 = phi double [ 0.000000e+00, %.lr.ph562 ], [ %384, %370 ]
  %.5436560 = phi i64 [ 1, %.lr.ph562 ], [ %385, %370 ]
  %371 = getelementptr double, ptr %46, i64 %.5436560
  %372 = getelementptr double, ptr %371, i64 %353
  %373 = load double, ptr %372, align 8, !tbaa !9
  %374 = fcmp oge double %373, 0.000000e+00
  %375 = fneg double %373
  %376 = select i1 %374, double %373, double %375
  %377 = getelementptr double, ptr %371, i64 %369
  %378 = load double, ptr %377, align 8, !tbaa !9
  %379 = fcmp oge double %378, 0.000000e+00
  %380 = fneg double %378
  %381 = select i1 %379, double %378, double %380
  %382 = fadd double %376, %381
  %383 = fcmp oge double %.4561, %382
  %384 = select i1 %383, double %.4561, double %382
  %385 = add nuw i64 %.5436560, 1
  %exitcond597.not = icmp eq i64 %.5436560, %336
  br i1 %exitcond597.not, label %.loopexit533, label %370, !llvm.loop !28

.loopexit533.loopexit.unr-lcssa:                  ; preds = %354, %.lr.ph567
  %.lcssa700.ph = phi double [ poison, %.lr.ph567 ], [ %366, %354 ]
  %.3566.unr = phi double [ 0.000000e+00, %.lr.ph567 ], [ %366, %354 ]
  %.4435565.unr = phi i64 [ 1, %.lr.ph567 ], [ %367, %354 ]
  br i1 %lcmp.mod710.not, label %.loopexit533, label %.loopexit533.loopexit.epilog-lcssa

.loopexit533.loopexit.epilog-lcssa:               ; preds = %.loopexit533.loopexit.unr-lcssa
  %gep570.epil = getelementptr double, ptr %invariant.gep569, i64 %.4435565.unr
  %386 = load double, ptr %gep570.epil, align 8, !tbaa !9
  %387 = fcmp oge double %386, 0.000000e+00
  %388 = fneg double %386
  %389 = select i1 %387, double %386, double %388
  %390 = fcmp oge double %.3566.unr, %389
  %391 = select i1 %390, double %.3566.unr, double %389
  br label %.loopexit533

.loopexit533:                                     ; preds = %370, %.loopexit533.loopexit.epilog-lcssa, %.loopexit533.loopexit.unr-lcssa
  %.5 = phi double [ %.lcssa700.ph, %.loopexit533.loopexit.unr-lcssa ], [ %391, %.loopexit533.loopexit.epilog-lcssa ], [ %384, %370 ]
  %392 = fcmp olt double %.5, %337
  br i1 %392, label %.loopexit, label %393

393:                                              ; preds = %.loopexit533
  %394 = fdiv double 1.000000e+00, %.5
  store i64 %336, ptr %19, align 8, !tbaa !5
  %395 = mul nsw i64 %.1438580, %44
  br i1 %352, label %.lr.ph576, label %.lr.ph573

.lr.ph576:                                        ; preds = %393
  %invariant.gep577 = getelementptr double, ptr %46, i64 %395
  br i1 %min.iters.check655, label %scalar.ph654.preheader, label %vector.ph656

vector.ph656:                                     ; preds = %.lr.ph576
  %broadcast.splatinsert666 = insertelement <2 x double> poison, double %394, i64 0
  %broadcast.splat667 = shufflevector <2 x double> %broadcast.splatinsert666, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body661

vector.body661:                                   ; preds = %vector.body661, %vector.ph656
  %index662 = phi i64 [ 0, %vector.ph656 ], [ %index.next668, %vector.body661 ]
  %offset.idx663 = or disjoint i64 %index662, 1
  %396 = getelementptr double, ptr %invariant.gep577, i64 %offset.idx663
  %397 = getelementptr i8, ptr %396, i64 16
  %wide.load664 = load <2 x double>, ptr %396, align 8, !tbaa !9
  %wide.load665 = load <2 x double>, ptr %397, align 8, !tbaa !9
  %398 = fmul <2 x double> %broadcast.splat667, %wide.load664
  %399 = fmul <2 x double> %broadcast.splat667, %wide.load665
  store <2 x double> %398, ptr %396, align 8, !tbaa !9
  store <2 x double> %399, ptr %397, align 8, !tbaa !9
  %index.next668 = add nuw i64 %index662, 4
  %400 = icmp eq i64 %index.next668, %n.vec658
  br i1 %400, label %middle.block653, label %vector.body661, !llvm.loop !29

middle.block653:                                  ; preds = %vector.body661
  br i1 %cmp.n669, label %.loopexit, label %scalar.ph654.preheader

scalar.ph654.preheader:                           ; preds = %middle.block653, %.lr.ph576
  %.6575.ph = phi i64 [ 1, %.lr.ph576 ], [ %ind.end659, %middle.block653 ]
  br label %scalar.ph654

scalar.ph654:                                     ; preds = %scalar.ph654.preheader, %scalar.ph654
  %.6575 = phi i64 [ %403, %scalar.ph654 ], [ %.6575.ph, %scalar.ph654.preheader ]
  %gep578 = getelementptr double, ptr %invariant.gep577, i64 %.6575
  %401 = load double, ptr %gep578, align 8, !tbaa !9
  %402 = fmul double %394, %401
  store double %402, ptr %gep578, align 8, !tbaa !9
  %403 = add nuw i64 %.6575, 1
  %exitcond600.not = icmp eq i64 %.6575, %336
  br i1 %exitcond600.not, label %.loopexit, label %scalar.ph654, !llvm.loop !30

.lr.ph573:                                        ; preds = %393
  %404 = add nuw nsw i64 %.1438580, 1
  %405 = mul nsw i64 %404, %44
  %brmerge725 = select i1 %min.iters.check681, i1 true, i1 %346
  br i1 %brmerge725, label %scalar.ph680.preheader, label %vector.ph682

vector.ph682:                                     ; preds = %.lr.ph573
  %broadcast.splatinsert692 = insertelement <2 x double> poison, double %394, i64 0
  %broadcast.splat693 = shufflevector <2 x double> %broadcast.splatinsert692, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body687

vector.body687:                                   ; preds = %vector.body687, %vector.ph682
  %index688 = phi i64 [ 0, %vector.ph682 ], [ %index.next696, %vector.body687 ]
  %offset.idx689 = or disjoint i64 %index688, 1
  %406 = getelementptr double, ptr %46, i64 %offset.idx689
  %407 = getelementptr double, ptr %406, i64 %395
  %408 = getelementptr i8, ptr %407, i64 16
  %wide.load690 = load <2 x double>, ptr %407, align 8, !tbaa !9, !alias.scope !31, !noalias !34
  %wide.load691 = load <2 x double>, ptr %408, align 8, !tbaa !9, !alias.scope !31, !noalias !34
  %409 = fmul <2 x double> %broadcast.splat693, %wide.load690
  %410 = fmul <2 x double> %broadcast.splat693, %wide.load691
  store <2 x double> %409, ptr %407, align 8, !tbaa !9, !alias.scope !31, !noalias !34
  store <2 x double> %410, ptr %408, align 8, !tbaa !9, !alias.scope !31, !noalias !34
  %411 = getelementptr double, ptr %406, i64 %405
  %412 = getelementptr i8, ptr %411, i64 16
  %wide.load694 = load <2 x double>, ptr %411, align 8, !tbaa !9, !alias.scope !34
  %wide.load695 = load <2 x double>, ptr %412, align 8, !tbaa !9, !alias.scope !34
  %413 = fmul <2 x double> %broadcast.splat693, %wide.load694
  %414 = fmul <2 x double> %broadcast.splat693, %wide.load695
  store <2 x double> %413, ptr %411, align 8, !tbaa !9, !alias.scope !34
  store <2 x double> %414, ptr %412, align 8, !tbaa !9, !alias.scope !34
  %index.next696 = add nuw i64 %index688, 4
  %415 = icmp eq i64 %index.next696, %n.vec684
  br i1 %415, label %middle.block679, label %vector.body687, !llvm.loop !36

middle.block679:                                  ; preds = %vector.body687
  br i1 %cmp.n697, label %.loopexit, label %scalar.ph680.preheader

scalar.ph680.preheader:                           ; preds = %.lr.ph573, %middle.block679
  %.7572.ph = phi i64 [ 1, %.lr.ph573 ], [ %ind.end685, %middle.block679 ]
  br i1 %lcmp.mod715.not, label %scalar.ph680.prol.loopexit, label %scalar.ph680.prol

scalar.ph680.prol:                                ; preds = %scalar.ph680.preheader
  %416 = getelementptr double, ptr %46, i64 %.7572.ph
  %417 = getelementptr double, ptr %416, i64 %395
  %418 = load double, ptr %417, align 8, !tbaa !9
  %419 = fmul double %394, %418
  store double %419, ptr %417, align 8, !tbaa !9
  %420 = getelementptr double, ptr %416, i64 %405
  %421 = load double, ptr %420, align 8, !tbaa !9
  %422 = fmul double %394, %421
  store double %422, ptr %420, align 8, !tbaa !9
  %423 = add nuw i64 %.7572.ph, 1
  br label %scalar.ph680.prol.loopexit

scalar.ph680.prol.loopexit:                       ; preds = %scalar.ph680.prol, %scalar.ph680.preheader
  %.7572.unr = phi i64 [ %.7572.ph, %scalar.ph680.preheader ], [ %423, %scalar.ph680.prol ]
  %424 = icmp eq i64 %336, %.7572.ph
  br i1 %424, label %.loopexit, label %scalar.ph680

scalar.ph680:                                     ; preds = %scalar.ph680.prol.loopexit, %scalar.ph680
  %.7572 = phi i64 [ %440, %scalar.ph680 ], [ %.7572.unr, %scalar.ph680.prol.loopexit ]
  %425 = getelementptr double, ptr %46, i64 %.7572
  %426 = getelementptr double, ptr %425, i64 %395
  %427 = load double, ptr %426, align 8, !tbaa !9
  %428 = fmul double %394, %427
  store double %428, ptr %426, align 8, !tbaa !9
  %429 = getelementptr double, ptr %425, i64 %405
  %430 = load double, ptr %429, align 8, !tbaa !9
  %431 = fmul double %394, %430
  store double %431, ptr %429, align 8, !tbaa !9
  %432 = add nuw i64 %.7572, 1
  %433 = getelementptr double, ptr %46, i64 %432
  %434 = getelementptr double, ptr %433, i64 %395
  %435 = load double, ptr %434, align 8, !tbaa !9
  %436 = fmul double %394, %435
  store double %436, ptr %434, align 8, !tbaa !9
  %437 = getelementptr double, ptr %433, i64 %405
  %438 = load double, ptr %437, align 8, !tbaa !9
  %439 = fmul double %394, %438
  store double %439, ptr %437, align 8, !tbaa !9
  %440 = add nuw i64 %.7572, 2
  %exitcond599.not.1 = icmp eq i64 %432, %336
  br i1 %exitcond599.not.1, label %.loopexit, label %scalar.ph680, !llvm.loop !37

.loopexit:                                        ; preds = %scalar.ph680.prol.loopexit, %scalar.ph680, %scalar.ph654, %middle.block679, %middle.block653, %347, %.loopexit533
  %441 = add nuw i64 %.1438580, 1
  %exitcond601.not = icmp eq i64 %.1438580, %336
  br i1 %exitcond601.not, label %.loopexit535, label %347, !llvm.loop !38

.loopexit535:                                     ; preds = %.loopexit, %334, %.thread512, %216
  br i1 %.not462504, label %445, label %442

442:                                              ; preds = %.loopexit535
  %443 = call i32 @dlascl_(ptr noundef nonnull @.str.10, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %31, ptr noundef nonnull %23, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef %7, ptr noundef nonnull %2, ptr noundef nonnull %25) #5
  %444 = call i32 @dlascl_(ptr noundef nonnull @.str.10, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %31, ptr noundef nonnull %23, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef %8, ptr noundef nonnull %2, ptr noundef nonnull %25) #5
  br label %445

445:                                              ; preds = %442, %.loopexit535
  br i1 %.not463509, label %448, label %446

446:                                              ; preds = %445
  %447 = call i32 @dlascl_(ptr noundef nonnull @.str.10, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %32, ptr noundef nonnull %24, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef %9, ptr noundef nonnull %2, ptr noundef nonnull %25) #5
  br label %448

448:                                              ; preds = %445, %446, %208, %214, %212, %223
  store double %96, ptr %14, align 8, !tbaa !9
  br label %449

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

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

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

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

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

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


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