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

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

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b11 = external hidden global double, align 8
@c_b12 = external hidden global double, align 8
@c__2 = external hidden global i32, align 4
@c__12 = external hidden global i32, align 4
@c__49 = external hidden global i32, align 4
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @dhseqr_(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) #0 {
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca [2 x ptr], align 16
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca [2 x i32], align 4
  %36 = alloca i32, align 4
  %37 = alloca double, align 8
  %38 = alloca [2 x i8], align 1
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca [49 x double], align 16
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca [2401 x double], align 16
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca ptr, align 8
  %53 = alloca ptr, align 8
  store ptr %0, ptr %15, align 8, !tbaa !5
  store ptr %1, ptr %16, align 8, !tbaa !5
  store ptr %2, ptr %17, align 8, !tbaa !5
  store ptr %3, ptr %18, align 8, !tbaa !5
  store ptr %4, ptr %19, align 8, !tbaa !5
  store ptr %5, ptr %20, align 8, !tbaa !5
  store ptr %6, ptr %21, align 8, !tbaa !5
  store ptr %7, ptr %22, align 8, !tbaa !5
  store ptr %8, ptr %23, align 8, !tbaa !5
  store ptr %9, ptr %24, align 8, !tbaa !5
  store ptr %10, ptr %25, align 8, !tbaa !5
  store ptr %11, ptr %26, align 8, !tbaa !5
  store ptr %12, ptr %27, align 8, !tbaa !5
  store ptr %13, ptr %28, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %29) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.start.p0(i64 2, ptr %38) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #3
  call void @llvm.lifetime.start.p0(i64 392, ptr %43) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #3
  call void @llvm.lifetime.start.p0(i64 19208, ptr %46) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #3
  %54 = load ptr, ptr %21, align 8, !tbaa !5
  %55 = load i32, ptr %54, align 4, !tbaa !9
  store i32 %55, ptr %30, align 4, !tbaa !9
  %56 = load i32, ptr %30, align 4, !tbaa !9
  %57 = mul nsw i32 %56, 1
  %58 = add nsw i32 1, %57
  store i32 %58, ptr %31, align 4, !tbaa !9
  %59 = load i32, ptr %31, align 4, !tbaa !9
  %60 = load ptr, ptr %20, align 8, !tbaa !5
  %61 = sext i32 %59 to i64
  %62 = sub i64 0, %61
  %63 = getelementptr inbounds double, ptr %60, i64 %62
  store ptr %63, ptr %20, align 8, !tbaa !5
  %64 = load ptr, ptr %22, align 8, !tbaa !5
  %65 = getelementptr inbounds double, ptr %64, i32 -1
  store ptr %65, ptr %22, align 8, !tbaa !5
  %66 = load ptr, ptr %23, align 8, !tbaa !5
  %67 = getelementptr inbounds double, ptr %66, i32 -1
  store ptr %67, ptr %23, align 8, !tbaa !5
  %68 = load ptr, ptr %25, align 8, !tbaa !5
  %69 = load i32, ptr %68, align 4, !tbaa !9
  store i32 %69, ptr %32, align 4, !tbaa !9
  %70 = load i32, ptr %32, align 4, !tbaa !9
  %71 = mul nsw i32 %70, 1
  %72 = add nsw i32 1, %71
  store i32 %72, ptr %33, align 4, !tbaa !9
  %73 = load i32, ptr %33, align 4, !tbaa !9
  %74 = load ptr, ptr %24, align 8, !tbaa !5
  %75 = sext i32 %73 to i64
  %76 = sub i64 0, %75
  %77 = getelementptr inbounds double, ptr %74, i64 %76
  store ptr %77, ptr %24, align 8, !tbaa !5
  %78 = load ptr, ptr %26, align 8, !tbaa !5
  %79 = getelementptr inbounds double, ptr %78, i32 -1
  store ptr %79, ptr %26, align 8, !tbaa !5
  %80 = load ptr, ptr %15, align 8, !tbaa !5
  %81 = call i32 @lsame_(ptr noundef %80, ptr noundef @.str)
  store i32 %81, ptr %44, align 4, !tbaa !9
  %82 = load ptr, ptr %16, align 8, !tbaa !5
  %83 = call i32 @lsame_(ptr noundef %82, ptr noundef @.str.1)
  store i32 %83, ptr %42, align 4, !tbaa !9
  %84 = load i32, ptr %42, align 4, !tbaa !9
  %85 = icmp ne i32 %84, 0
  br i1 %85, label %90, label %86

86:                                               ; preds = %14
  %87 = load ptr, ptr %16, align 8, !tbaa !5
  %88 = call i32 @lsame_(ptr noundef %87, ptr noundef @.str.2)
  %89 = icmp ne i32 %88, 0
  br label %90

90:                                               ; preds = %86, %14
  %91 = phi i1 [ true, %14 ], [ %89, %86 ]
  %92 = zext i1 %91 to i32
  store i32 %92, ptr %45, align 4, !tbaa !9
  %93 = load ptr, ptr %17, align 8, !tbaa !5
  %94 = load i32, ptr %93, align 4, !tbaa !9
  %95 = icmp sge i32 1, %94
  br i1 %95, label %96, label %97

96:                                               ; preds = %90
  br label %100

97:                                               ; preds = %90
  %98 = load ptr, ptr %17, align 8, !tbaa !5
  %99 = load i32, ptr %98, align 4, !tbaa !9
  br label %100

100:                                              ; preds = %97, %96
  %101 = phi i32 [ 1, %96 ], [ %99, %97 ]
  %102 = sitofp i32 %101 to double
  %103 = load ptr, ptr %26, align 8, !tbaa !5
  %104 = getelementptr inbounds double, ptr %103, i64 1
  store double %102, ptr %104, align 8, !tbaa !11
  %105 = load ptr, ptr %27, align 8, !tbaa !5
  %106 = load i32, ptr %105, align 4, !tbaa !9
  %107 = icmp eq i32 %106, -1
  %108 = zext i1 %107 to i32
  store i32 %108, ptr %47, align 4, !tbaa !9
  %109 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 0, ptr %109, align 4, !tbaa !9
  %110 = load ptr, ptr %15, align 8, !tbaa !5
  %111 = call i32 @lsame_(ptr noundef %110, ptr noundef @.str.3)
  %112 = icmp ne i32 %111, 0
  br i1 %112, label %118, label %113

113:                                              ; preds = %100
  %114 = load i32, ptr %44, align 4, !tbaa !9
  %115 = icmp ne i32 %114, 0
  br i1 %115, label %118, label %116

116:                                              ; preds = %113
  %117 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -1, ptr %117, align 4, !tbaa !9
  br label %239

118:                                              ; preds = %113, %100
  %119 = load ptr, ptr %16, align 8, !tbaa !5
  %120 = call i32 @lsame_(ptr noundef %119, ptr noundef @.str.4)
  %121 = icmp ne i32 %120, 0
  br i1 %121, label %127, label %122

122:                                              ; preds = %118
  %123 = load i32, ptr %45, align 4, !tbaa !9
  %124 = icmp ne i32 %123, 0
  br i1 %124, label %127, label %125

125:                                              ; preds = %122
  %126 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -2, ptr %126, align 4, !tbaa !9
  br label %238

127:                                              ; preds = %122, %118
  %128 = load ptr, ptr %17, align 8, !tbaa !5
  %129 = load i32, ptr %128, align 4, !tbaa !9
  %130 = icmp slt i32 %129, 0
  br i1 %130, label %131, label %133

131:                                              ; preds = %127
  %132 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -3, ptr %132, align 4, !tbaa !9
  br label %237

133:                                              ; preds = %127
  %134 = load ptr, ptr %18, align 8, !tbaa !5
  %135 = load i32, ptr %134, align 4, !tbaa !9
  %136 = icmp slt i32 %135, 1
  br i1 %136, label %150, label %137

137:                                              ; preds = %133
  %138 = load ptr, ptr %18, align 8, !tbaa !5
  %139 = load i32, ptr %138, align 4, !tbaa !9
  %140 = load ptr, ptr %17, align 8, !tbaa !5
  %141 = load i32, ptr %140, align 4, !tbaa !9
  %142 = icmp sge i32 1, %141
  br i1 %142, label %143, label %144

143:                                              ; preds = %137
  br label %147

144:                                              ; preds = %137
  %145 = load ptr, ptr %17, align 8, !tbaa !5
  %146 = load i32, ptr %145, align 4, !tbaa !9
  br label %147

147:                                              ; preds = %144, %143
  %148 = phi i32 [ 1, %143 ], [ %146, %144 ]
  %149 = icmp sgt i32 %139, %148
  br i1 %149, label %150, label %152

150:                                              ; preds = %147, %133
  %151 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -4, ptr %151, align 4, !tbaa !9
  br label %236

152:                                              ; preds = %147
  %153 = load ptr, ptr %19, align 8, !tbaa !5
  %154 = load i32, ptr %153, align 4, !tbaa !9
  %155 = load ptr, ptr %18, align 8, !tbaa !5
  %156 = load i32, ptr %155, align 4, !tbaa !9
  %157 = load ptr, ptr %17, align 8, !tbaa !5
  %158 = load i32, ptr %157, align 4, !tbaa !9
  %159 = icmp sle i32 %156, %158
  br i1 %159, label %160, label %163

160:                                              ; preds = %152
  %161 = load ptr, ptr %18, align 8, !tbaa !5
  %162 = load i32, ptr %161, align 4, !tbaa !9
  br label %166

163:                                              ; preds = %152
  %164 = load ptr, ptr %17, align 8, !tbaa !5
  %165 = load i32, ptr %164, align 4, !tbaa !9
  br label %166

166:                                              ; preds = %163, %160
  %167 = phi i32 [ %162, %160 ], [ %165, %163 ]
  %168 = icmp slt i32 %154, %167
  br i1 %168, label %175, label %169

169:                                              ; preds = %166
  %170 = load ptr, ptr %19, align 8, !tbaa !5
  %171 = load i32, ptr %170, align 4, !tbaa !9
  %172 = load ptr, ptr %17, align 8, !tbaa !5
  %173 = load i32, ptr %172, align 4, !tbaa !9
  %174 = icmp sgt i32 %171, %173
  br i1 %174, label %175, label %177

175:                                              ; preds = %169, %166
  %176 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -5, ptr %176, align 4, !tbaa !9
  br label %235

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

183:                                              ; preds = %177
  br label %187

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

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

190:                                              ; preds = %187
  %191 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -7, ptr %191, align 4, !tbaa !9
  br label %234

192:                                              ; preds = %187
  %193 = load ptr, ptr %25, align 8, !tbaa !5
  %194 = load i32, ptr %193, align 4, !tbaa !9
  %195 = icmp slt i32 %194, 1
  br i1 %195, label %212, label %196

196:                                              ; preds = %192
  %197 = load i32, ptr %45, align 4, !tbaa !9
  %198 = icmp ne i32 %197, 0
  br i1 %198, label %199, label %214

199:                                              ; preds = %196
  %200 = load ptr, ptr %25, align 8, !tbaa !5
  %201 = load i32, ptr %200, align 4, !tbaa !9
  %202 = load ptr, ptr %17, align 8, !tbaa !5
  %203 = load i32, ptr %202, align 4, !tbaa !9
  %204 = icmp sge i32 1, %203
  br i1 %204, label %205, label %206

205:                                              ; preds = %199
  br label %209

206:                                              ; preds = %199
  %207 = load ptr, ptr %17, align 8, !tbaa !5
  %208 = load i32, ptr %207, align 4, !tbaa !9
  br label %209

209:                                              ; preds = %206, %205
  %210 = phi i32 [ 1, %205 ], [ %208, %206 ]
  %211 = icmp slt i32 %201, %210
  br i1 %211, label %212, label %214

212:                                              ; preds = %209, %192
  %213 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -11, ptr %213, align 4, !tbaa !9
  br label %233

214:                                              ; preds = %209, %196
  %215 = load ptr, ptr %27, align 8, !tbaa !5
  %216 = load i32, ptr %215, align 4, !tbaa !9
  %217 = load ptr, ptr %17, align 8, !tbaa !5
  %218 = load i32, ptr %217, align 4, !tbaa !9
  %219 = icmp sge i32 1, %218
  br i1 %219, label %220, label %221

220:                                              ; preds = %214
  br label %224

221:                                              ; preds = %214
  %222 = load ptr, ptr %17, align 8, !tbaa !5
  %223 = load i32, ptr %222, align 4, !tbaa !9
  br label %224

224:                                              ; preds = %221, %220
  %225 = phi i32 [ 1, %220 ], [ %223, %221 ]
  %226 = icmp slt i32 %216, %225
  br i1 %226, label %227, label %232

227:                                              ; preds = %224
  %228 = load i32, ptr %47, align 4, !tbaa !9
  %229 = icmp ne i32 %228, 0
  br i1 %229, label %232, label %230

230:                                              ; preds = %227
  %231 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -13, ptr %231, align 4, !tbaa !9
  br label %232

232:                                              ; preds = %230, %227, %224
  br label %233

233:                                              ; preds = %232, %212
  br label %234

234:                                              ; preds = %233, %190
  br label %235

235:                                              ; preds = %234, %175
  br label %236

236:                                              ; preds = %235, %150
  br label %237

237:                                              ; preds = %236, %131
  br label %238

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

239:                                              ; preds = %238, %116
  %240 = load ptr, ptr %28, align 8, !tbaa !5
  %241 = load i32, ptr %240, align 4, !tbaa !9
  %242 = icmp ne i32 %241, 0
  br i1 %242, label %243, label %248

243:                                              ; preds = %239
  %244 = load ptr, ptr %28, align 8, !tbaa !5
  %245 = load i32, ptr %244, align 4, !tbaa !9
  %246 = sub nsw i32 0, %245
  store i32 %246, ptr %34, align 4, !tbaa !9
  %247 = call i32 @xerbla_(ptr noundef @.str.5, ptr noundef %34, i32 noundef 6)
  store i32 1, ptr %48, align 4
  br label %669

248:                                              ; preds = %239
  %249 = load ptr, ptr %17, align 8, !tbaa !5
  %250 = load i32, ptr %249, align 4, !tbaa !9
  %251 = icmp eq i32 %250, 0
  br i1 %251, label %252, label %253

252:                                              ; preds = %248
  store i32 1, ptr %48, align 4
  br label %669

253:                                              ; preds = %248
  %254 = load i32, ptr %47, align 4, !tbaa !9
  %255 = icmp ne i32 %254, 0
  br i1 %255, label %256, label %305

256:                                              ; preds = %253
  %257 = load ptr, ptr %17, align 8, !tbaa !5
  %258 = load ptr, ptr %18, align 8, !tbaa !5
  %259 = load ptr, ptr %19, align 8, !tbaa !5
  %260 = load ptr, ptr %20, align 8, !tbaa !5
  %261 = load i32, ptr %31, align 4, !tbaa !9
  %262 = sext i32 %261 to i64
  %263 = getelementptr inbounds double, ptr %260, i64 %262
  %264 = load ptr, ptr %21, align 8, !tbaa !5
  %265 = load ptr, ptr %22, align 8, !tbaa !5
  %266 = getelementptr inbounds double, ptr %265, i64 1
  %267 = load ptr, ptr %23, align 8, !tbaa !5
  %268 = getelementptr inbounds double, ptr %267, i64 1
  %269 = load ptr, ptr %18, align 8, !tbaa !5
  %270 = load ptr, ptr %19, align 8, !tbaa !5
  %271 = load ptr, ptr %24, align 8, !tbaa !5
  %272 = load i32, ptr %33, align 4, !tbaa !9
  %273 = sext i32 %272 to i64
  %274 = getelementptr inbounds double, ptr %271, i64 %273
  %275 = load ptr, ptr %25, align 8, !tbaa !5
  %276 = load ptr, ptr %26, align 8, !tbaa !5
  %277 = getelementptr inbounds double, ptr %276, i64 1
  %278 = load ptr, ptr %27, align 8, !tbaa !5
  %279 = load ptr, ptr %28, align 8, !tbaa !5
  call void @dlaqr0_(ptr noundef %44, ptr noundef %45, ptr noundef %257, ptr noundef %258, ptr noundef %259, ptr noundef %263, ptr noundef %264, ptr noundef %266, ptr noundef %268, ptr noundef %269, ptr noundef %270, ptr noundef %274, ptr noundef %275, ptr noundef %277, ptr noundef %278, ptr noundef %279)
  %280 = load ptr, ptr %17, align 8, !tbaa !5
  %281 = load i32, ptr %280, align 4, !tbaa !9
  %282 = icmp sge i32 1, %281
  br i1 %282, label %283, label %284

283:                                              ; preds = %256
  br label %287

284:                                              ; preds = %256
  %285 = load ptr, ptr %17, align 8, !tbaa !5
  %286 = load i32, ptr %285, align 4, !tbaa !9
  br label %287

287:                                              ; preds = %284, %283
  %288 = phi i32 [ 1, %283 ], [ %286, %284 ]
  %289 = sitofp i32 %288 to double
  store double %289, ptr %37, align 8, !tbaa !11
  %290 = load double, ptr %37, align 8, !tbaa !11
  %291 = load ptr, ptr %26, align 8, !tbaa !5
  %292 = getelementptr inbounds double, ptr %291, i64 1
  %293 = load double, ptr %292, align 8, !tbaa !11
  %294 = fcmp oge double %290, %293
  br i1 %294, label %295, label %297

295:                                              ; preds = %287
  %296 = load double, ptr %37, align 8, !tbaa !11
  br label %301

297:                                              ; preds = %287
  %298 = load ptr, ptr %26, align 8, !tbaa !5
  %299 = getelementptr inbounds double, ptr %298, i64 1
  %300 = load double, ptr %299, align 8, !tbaa !11
  br label %301

301:                                              ; preds = %297, %295
  %302 = phi double [ %296, %295 ], [ %300, %297 ]
  %303 = load ptr, ptr %26, align 8, !tbaa !5
  %304 = getelementptr inbounds double, ptr %303, i64 1
  store double %302, ptr %304, align 8, !tbaa !11
  store i32 1, ptr %48, align 4
  br label %669

305:                                              ; preds = %253
  %306 = load ptr, ptr %18, align 8, !tbaa !5
  %307 = load i32, ptr %306, align 4, !tbaa !9
  %308 = sub nsw i32 %307, 1
  store i32 %308, ptr %34, align 4, !tbaa !9
  store i32 1, ptr %41, align 4, !tbaa !9
  br label %309

309:                                              ; preds = %331, %305
  %310 = load i32, ptr %41, align 4, !tbaa !9
  %311 = load i32, ptr %34, align 4, !tbaa !9
  %312 = icmp sle i32 %310, %311
  br i1 %312, label %313, label %334

313:                                              ; preds = %309
  %314 = load ptr, ptr %20, align 8, !tbaa !5
  %315 = load i32, ptr %41, align 4, !tbaa !9
  %316 = load i32, ptr %41, align 4, !tbaa !9
  %317 = load i32, ptr %30, align 4, !tbaa !9
  %318 = mul nsw i32 %316, %317
  %319 = add nsw i32 %315, %318
  %320 = sext i32 %319 to i64
  %321 = getelementptr inbounds double, ptr %314, i64 %320
  %322 = load double, ptr %321, align 8, !tbaa !11
  %323 = load ptr, ptr %22, align 8, !tbaa !5
  %324 = load i32, ptr %41, align 4, !tbaa !9
  %325 = sext i32 %324 to i64
  %326 = getelementptr inbounds double, ptr %323, i64 %325
  store double %322, ptr %326, align 8, !tbaa !11
  %327 = load ptr, ptr %23, align 8, !tbaa !5
  %328 = load i32, ptr %41, align 4, !tbaa !9
  %329 = sext i32 %328 to i64
  %330 = getelementptr inbounds double, ptr %327, i64 %329
  store double 0.000000e+00, ptr %330, align 8, !tbaa !11
  br label %331

331:                                              ; preds = %313
  %332 = load i32, ptr %41, align 4, !tbaa !9
  %333 = add nsw i32 %332, 1
  store i32 %333, ptr %41, align 4, !tbaa !9
  br label %309, !llvm.loop !13

334:                                              ; preds = %309
  %335 = load ptr, ptr %17, align 8, !tbaa !5
  %336 = load i32, ptr %335, align 4, !tbaa !9
  store i32 %336, ptr %34, align 4, !tbaa !9
  %337 = load ptr, ptr %19, align 8, !tbaa !5
  %338 = load i32, ptr %337, align 4, !tbaa !9
  %339 = add nsw i32 %338, 1
  store i32 %339, ptr %41, align 4, !tbaa !9
  br label %340

340:                                              ; preds = %362, %334
  %341 = load i32, ptr %41, align 4, !tbaa !9
  %342 = load i32, ptr %34, align 4, !tbaa !9
  %343 = icmp sle i32 %341, %342
  br i1 %343, label %344, label %365

344:                                              ; preds = %340
  %345 = load ptr, ptr %20, align 8, !tbaa !5
  %346 = load i32, ptr %41, align 4, !tbaa !9
  %347 = load i32, ptr %41, align 4, !tbaa !9
  %348 = load i32, ptr %30, align 4, !tbaa !9
  %349 = mul nsw i32 %347, %348
  %350 = add nsw i32 %346, %349
  %351 = sext i32 %350 to i64
  %352 = getelementptr inbounds double, ptr %345, i64 %351
  %353 = load double, ptr %352, align 8, !tbaa !11
  %354 = load ptr, ptr %22, align 8, !tbaa !5
  %355 = load i32, ptr %41, align 4, !tbaa !9
  %356 = sext i32 %355 to i64
  %357 = getelementptr inbounds double, ptr %354, i64 %356
  store double %353, ptr %357, align 8, !tbaa !11
  %358 = load ptr, ptr %23, align 8, !tbaa !5
  %359 = load i32, ptr %41, align 4, !tbaa !9
  %360 = sext i32 %359 to i64
  %361 = getelementptr inbounds double, ptr %358, i64 %360
  store double 0.000000e+00, ptr %361, align 8, !tbaa !11
  br label %362

362:                                              ; preds = %344
  %363 = load i32, ptr %41, align 4, !tbaa !9
  %364 = add nsw i32 %363, 1
  store i32 %364, ptr %41, align 4, !tbaa !9
  br label %340, !llvm.loop !15

365:                                              ; preds = %340
  %366 = load i32, ptr %42, align 4, !tbaa !9
  %367 = icmp ne i32 %366, 0
  br i1 %367, label %368, label %376

368:                                              ; preds = %365
  %369 = load ptr, ptr %17, align 8, !tbaa !5
  %370 = load ptr, ptr %17, align 8, !tbaa !5
  %371 = load ptr, ptr %24, align 8, !tbaa !5
  %372 = load i32, ptr %33, align 4, !tbaa !9
  %373 = sext i32 %372 to i64
  %374 = getelementptr inbounds double, ptr %371, i64 %373
  %375 = load ptr, ptr %25, align 8, !tbaa !5
  call void @dlaset_(ptr noundef @.str.6, ptr noundef %369, ptr noundef %370, ptr noundef @c_b11, ptr noundef @c_b12, ptr noundef %374, ptr noundef %375)
  br label %376

376:                                              ; preds = %368, %365
  %377 = load ptr, ptr %18, align 8, !tbaa !5
  %378 = load i32, ptr %377, align 4, !tbaa !9
  %379 = load ptr, ptr %19, align 8, !tbaa !5
  %380 = load i32, ptr %379, align 4, !tbaa !9
  %381 = icmp eq i32 %378, %380
  br i1 %381, label %382, label %404

382:                                              ; preds = %376
  %383 = load ptr, ptr %20, align 8, !tbaa !5
  %384 = load ptr, ptr %18, align 8, !tbaa !5
  %385 = load i32, ptr %384, align 4, !tbaa !9
  %386 = load ptr, ptr %18, align 8, !tbaa !5
  %387 = load i32, ptr %386, align 4, !tbaa !9
  %388 = load i32, ptr %30, align 4, !tbaa !9
  %389 = mul nsw i32 %387, %388
  %390 = add nsw i32 %385, %389
  %391 = sext i32 %390 to i64
  %392 = getelementptr inbounds double, ptr %383, i64 %391
  %393 = load double, ptr %392, align 8, !tbaa !11
  %394 = load ptr, ptr %22, align 8, !tbaa !5
  %395 = load ptr, ptr %18, align 8, !tbaa !5
  %396 = load i32, ptr %395, align 4, !tbaa !9
  %397 = sext i32 %396 to i64
  %398 = getelementptr inbounds double, ptr %394, i64 %397
  store double %393, ptr %398, align 8, !tbaa !11
  %399 = load ptr, ptr %23, align 8, !tbaa !5
  %400 = load ptr, ptr %18, align 8, !tbaa !5
  %401 = load i32, ptr %400, align 4, !tbaa !9
  %402 = sext i32 %401 to i64
  %403 = getelementptr inbounds double, ptr %399, i64 %402
  store double 0.000000e+00, ptr %403, align 8, !tbaa !11
  store i32 1, ptr %48, align 4
  br label %669

404:                                              ; preds = %376
  %405 = getelementptr inbounds [2 x i32], ptr %35, i64 0, i64 0
  store i32 1, ptr %405, align 4, !tbaa !9
  %406 = load ptr, ptr %15, align 8, !tbaa !5
  %407 = getelementptr inbounds [2 x ptr], ptr %29, i64 0, i64 0
  store ptr %406, ptr %407, align 16, !tbaa !5
  %408 = getelementptr inbounds [2 x i32], ptr %35, i64 0, i64 1
  store i32 1, ptr %408, align 4, !tbaa !9
  %409 = load ptr, ptr %16, align 8, !tbaa !5
  %410 = getelementptr inbounds [2 x ptr], ptr %29, i64 0, i64 1
  store ptr %409, ptr %410, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #3
  store i32 2, ptr %51, align 4, !tbaa !9
  %411 = getelementptr inbounds [2 x i8], ptr %38, i64 0, i64 0
  store ptr %411, ptr %53, align 8, !tbaa !5
  store i32 0, ptr %49, align 4, !tbaa !9
  br label %412

412:                                              ; preds = %448, %404
  %413 = load i32, ptr %49, align 4, !tbaa !9
  %414 = load i32, ptr @c__2, align 4, !tbaa !9
  %415 = icmp slt i32 %413, %414
  br i1 %415, label %416, label %451

416:                                              ; preds = %412
  %417 = load i32, ptr %51, align 4, !tbaa !9
  store i32 %417, ptr %50, align 4, !tbaa !9
  %418 = load i32, ptr %49, align 4, !tbaa !9
  %419 = sext i32 %418 to i64
  %420 = getelementptr inbounds [2 x i32], ptr %35, i64 0, i64 %419
  %421 = load i32, ptr %420, align 4, !tbaa !9
  %422 = load i32, ptr %50, align 4, !tbaa !9
  %423 = icmp slt i32 %421, %422
  br i1 %423, label %424, label %429

424:                                              ; preds = %416
  %425 = load i32, ptr %49, align 4, !tbaa !9
  %426 = sext i32 %425 to i64
  %427 = getelementptr inbounds [2 x i32], ptr %35, i64 0, i64 %426
  %428 = load i32, ptr %427, align 4, !tbaa !9
  store i32 %428, ptr %50, align 4, !tbaa !9
  br label %429

429:                                              ; preds = %424, %416
  %430 = load i32, ptr %50, align 4, !tbaa !9
  %431 = load i32, ptr %51, align 4, !tbaa !9
  %432 = sub nsw i32 %431, %430
  store i32 %432, ptr %51, align 4, !tbaa !9
  %433 = load i32, ptr %49, align 4, !tbaa !9
  %434 = sext i32 %433 to i64
  %435 = getelementptr inbounds [2 x ptr], ptr %29, i64 0, i64 %434
  %436 = load ptr, ptr %435, align 8, !tbaa !5
  store ptr %436, ptr %52, align 8, !tbaa !5
  br label %437

437:                                              ; preds = %441, %429
  %438 = load i32, ptr %50, align 4, !tbaa !9
  %439 = add nsw i32 %438, -1
  store i32 %439, ptr %50, align 4, !tbaa !9
  %440 = icmp sge i32 %439, 0
  br i1 %440, label %441, label %447

441:                                              ; preds = %437
  %442 = load ptr, ptr %52, align 8, !tbaa !5
  %443 = getelementptr inbounds i8, ptr %442, i32 1
  store ptr %443, ptr %52, align 8, !tbaa !5
  %444 = load i8, ptr %442, align 1, !tbaa !16
  %445 = load ptr, ptr %53, align 8, !tbaa !5
  %446 = getelementptr inbounds i8, ptr %445, i32 1
  store ptr %446, ptr %53, align 8, !tbaa !5
  store i8 %444, ptr %445, align 1, !tbaa !16
  br label %437, !llvm.loop !17

447:                                              ; preds = %437
  br label %448

448:                                              ; preds = %447
  %449 = load i32, ptr %49, align 4, !tbaa !9
  %450 = add nsw i32 %449, 1
  store i32 %450, ptr %49, align 4, !tbaa !9
  br label %412, !llvm.loop !18

451:                                              ; preds = %412
  br label %452

452:                                              ; preds = %456, %451
  %453 = load i32, ptr %51, align 4, !tbaa !9
  %454 = add nsw i32 %453, -1
  store i32 %454, ptr %51, align 4, !tbaa !9
  %455 = icmp sge i32 %454, 0
  br i1 %455, label %456, label %459

456:                                              ; preds = %452
  %457 = load ptr, ptr %53, align 8, !tbaa !5
  %458 = getelementptr inbounds i8, ptr %457, i32 1
  store ptr %458, ptr %53, align 8, !tbaa !5
  store i8 32, ptr %457, align 1, !tbaa !16
  br label %452, !llvm.loop !19

459:                                              ; preds = %452
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #3
  %460 = getelementptr inbounds [2 x i8], ptr %38, i64 0, i64 0
  %461 = load ptr, ptr %17, align 8, !tbaa !5
  %462 = load ptr, ptr %18, align 8, !tbaa !5
  %463 = load ptr, ptr %19, align 8, !tbaa !5
  %464 = load ptr, ptr %27, align 8, !tbaa !5
  %465 = call i32 @ilaenv_(ptr noundef @c__12, ptr noundef @.str.5, ptr noundef %460, ptr noundef %461, ptr noundef %462, ptr noundef %463, ptr noundef %464, i32 noundef 6, i32 noundef 2)
  store i32 %465, ptr %40, align 4, !tbaa !9
  %466 = load i32, ptr %40, align 4, !tbaa !9
  %467 = icmp sge i32 15, %466
  br i1 %467, label %468, label %469

468:                                              ; preds = %459
  br label %471

469:                                              ; preds = %459
  %470 = load i32, ptr %40, align 4, !tbaa !9
  br label %471

471:                                              ; preds = %469, %468
  %472 = phi i32 [ 15, %468 ], [ %470, %469 ]
  store i32 %472, ptr %40, align 4, !tbaa !9
  %473 = load ptr, ptr %17, align 8, !tbaa !5
  %474 = load i32, ptr %473, align 4, !tbaa !9
  %475 = load i32, ptr %40, align 4, !tbaa !9
  %476 = icmp sgt i32 %474, %475
  br i1 %476, label %477, label %501

477:                                              ; preds = %471
  %478 = load ptr, ptr %17, align 8, !tbaa !5
  %479 = load ptr, ptr %18, align 8, !tbaa !5
  %480 = load ptr, ptr %19, align 8, !tbaa !5
  %481 = load ptr, ptr %20, align 8, !tbaa !5
  %482 = load i32, ptr %31, align 4, !tbaa !9
  %483 = sext i32 %482 to i64
  %484 = getelementptr inbounds double, ptr %481, i64 %483
  %485 = load ptr, ptr %21, align 8, !tbaa !5
  %486 = load ptr, ptr %22, align 8, !tbaa !5
  %487 = getelementptr inbounds double, ptr %486, i64 1
  %488 = load ptr, ptr %23, align 8, !tbaa !5
  %489 = getelementptr inbounds double, ptr %488, i64 1
  %490 = load ptr, ptr %18, align 8, !tbaa !5
  %491 = load ptr, ptr %19, align 8, !tbaa !5
  %492 = load ptr, ptr %24, align 8, !tbaa !5
  %493 = load i32, ptr %33, align 4, !tbaa !9
  %494 = sext i32 %493 to i64
  %495 = getelementptr inbounds double, ptr %492, i64 %494
  %496 = load ptr, ptr %25, align 8, !tbaa !5
  %497 = load ptr, ptr %26, align 8, !tbaa !5
  %498 = getelementptr inbounds double, ptr %497, i64 1
  %499 = load ptr, ptr %27, align 8, !tbaa !5
  %500 = load ptr, ptr %28, align 8, !tbaa !5
  call void @dlaqr0_(ptr noundef %44, ptr noundef %45, ptr noundef %478, ptr noundef %479, ptr noundef %480, ptr noundef %484, ptr noundef %485, ptr noundef %487, ptr noundef %489, ptr noundef %490, ptr noundef %491, ptr noundef %495, ptr noundef %496, ptr noundef %498, ptr noundef %499, ptr noundef %500)
  br label %616

501:                                              ; preds = %471
  %502 = load ptr, ptr %17, align 8, !tbaa !5
  %503 = load ptr, ptr %18, align 8, !tbaa !5
  %504 = load ptr, ptr %19, align 8, !tbaa !5
  %505 = load ptr, ptr %20, align 8, !tbaa !5
  %506 = load i32, ptr %31, align 4, !tbaa !9
  %507 = sext i32 %506 to i64
  %508 = getelementptr inbounds double, ptr %505, i64 %507
  %509 = load ptr, ptr %21, align 8, !tbaa !5
  %510 = load ptr, ptr %22, align 8, !tbaa !5
  %511 = getelementptr inbounds double, ptr %510, i64 1
  %512 = load ptr, ptr %23, align 8, !tbaa !5
  %513 = getelementptr inbounds double, ptr %512, i64 1
  %514 = load ptr, ptr %18, align 8, !tbaa !5
  %515 = load ptr, ptr %19, align 8, !tbaa !5
  %516 = load ptr, ptr %24, align 8, !tbaa !5
  %517 = load i32, ptr %33, align 4, !tbaa !9
  %518 = sext i32 %517 to i64
  %519 = getelementptr inbounds double, ptr %516, i64 %518
  %520 = load ptr, ptr %25, align 8, !tbaa !5
  %521 = load ptr, ptr %28, align 8, !tbaa !5
  call void @dlahqr_(ptr noundef %44, ptr noundef %45, ptr noundef %502, ptr noundef %503, ptr noundef %504, ptr noundef %508, ptr noundef %509, ptr noundef %511, ptr noundef %513, ptr noundef %514, ptr noundef %515, ptr noundef %519, ptr noundef %520, ptr noundef %521)
  %522 = load ptr, ptr %28, align 8, !tbaa !5
  %523 = load i32, ptr %522, align 4, !tbaa !9
  %524 = icmp sgt i32 %523, 0
  br i1 %524, label %525, label %615

525:                                              ; preds = %501
  %526 = load ptr, ptr %28, align 8, !tbaa !5
  %527 = load i32, ptr %526, align 4, !tbaa !9
  store i32 %527, ptr %39, align 4, !tbaa !9
  %528 = load ptr, ptr %17, align 8, !tbaa !5
  %529 = load i32, ptr %528, align 4, !tbaa !9
  %530 = icmp sge i32 %529, 49
  br i1 %530, label %531, label %554

531:                                              ; preds = %525
  %532 = load ptr, ptr %17, align 8, !tbaa !5
  %533 = load ptr, ptr %18, align 8, !tbaa !5
  %534 = load ptr, ptr %20, align 8, !tbaa !5
  %535 = load i32, ptr %31, align 4, !tbaa !9
  %536 = sext i32 %535 to i64
  %537 = getelementptr inbounds double, ptr %534, i64 %536
  %538 = load ptr, ptr %21, align 8, !tbaa !5
  %539 = load ptr, ptr %22, align 8, !tbaa !5
  %540 = getelementptr inbounds double, ptr %539, i64 1
  %541 = load ptr, ptr %23, align 8, !tbaa !5
  %542 = getelementptr inbounds double, ptr %541, i64 1
  %543 = load ptr, ptr %18, align 8, !tbaa !5
  %544 = load ptr, ptr %19, align 8, !tbaa !5
  %545 = load ptr, ptr %24, align 8, !tbaa !5
  %546 = load i32, ptr %33, align 4, !tbaa !9
  %547 = sext i32 %546 to i64
  %548 = getelementptr inbounds double, ptr %545, i64 %547
  %549 = load ptr, ptr %25, align 8, !tbaa !5
  %550 = load ptr, ptr %26, align 8, !tbaa !5
  %551 = getelementptr inbounds double, ptr %550, i64 1
  %552 = load ptr, ptr %27, align 8, !tbaa !5
  %553 = load ptr, ptr %28, align 8, !tbaa !5
  call void @dlaqr0_(ptr noundef %44, ptr noundef %45, ptr noundef %532, ptr noundef %533, ptr noundef %39, ptr noundef %537, ptr noundef %538, ptr noundef %540, ptr noundef %542, ptr noundef %543, ptr noundef %544, ptr noundef %548, ptr noundef %549, ptr noundef %551, ptr noundef %552, ptr noundef %553)
  br label %614

554:                                              ; preds = %525
  %555 = load ptr, ptr %17, align 8, !tbaa !5
  %556 = load ptr, ptr %17, align 8, !tbaa !5
  %557 = load ptr, ptr %20, align 8, !tbaa !5
  %558 = load i32, ptr %31, align 4, !tbaa !9
  %559 = sext i32 %558 to i64
  %560 = getelementptr inbounds double, ptr %557, i64 %559
  %561 = load ptr, ptr %21, align 8, !tbaa !5
  %562 = getelementptr inbounds [2401 x double], ptr %46, i64 0, i64 0
  call void @dlacpy_(ptr noundef @.str.6, ptr noundef %555, ptr noundef %556, ptr noundef %560, ptr noundef %561, ptr noundef %562, ptr noundef @c__49)
  %563 = load ptr, ptr %17, align 8, !tbaa !5
  %564 = load i32, ptr %563, align 4, !tbaa !9
  %565 = add nsw i32 %564, 1
  %566 = load ptr, ptr %17, align 8, !tbaa !5
  %567 = load i32, ptr %566, align 4, !tbaa !9
  %568 = mul nsw i32 %567, 49
  %569 = add nsw i32 %565, %568
  %570 = sub nsw i32 %569, 50
  %571 = sext i32 %570 to i64
  %572 = getelementptr inbounds [2401 x double], ptr %46, i64 0, i64 %571
  store double 0.000000e+00, ptr %572, align 8, !tbaa !11
  %573 = load ptr, ptr %17, align 8, !tbaa !5
  %574 = load i32, ptr %573, align 4, !tbaa !9
  %575 = sub nsw i32 49, %574
  store i32 %575, ptr %34, align 4, !tbaa !9
  %576 = load ptr, ptr %17, align 8, !tbaa !5
  %577 = load i32, ptr %576, align 4, !tbaa !9
  %578 = add nsw i32 %577, 1
  %579 = mul nsw i32 %578, 49
  %580 = sub nsw i32 %579, 49
  %581 = sext i32 %580 to i64
  %582 = getelementptr inbounds [2401 x double], ptr %46, i64 0, i64 %581
  call void @dlaset_(ptr noundef @.str.6, ptr noundef @c__49, ptr noundef %34, ptr noundef @c_b11, ptr noundef @c_b11, ptr noundef %582, ptr noundef @c__49)
  %583 = load ptr, ptr %18, align 8, !tbaa !5
  %584 = getelementptr inbounds [2401 x double], ptr %46, i64 0, i64 0
  %585 = load ptr, ptr %22, align 8, !tbaa !5
  %586 = getelementptr inbounds double, ptr %585, i64 1
  %587 = load ptr, ptr %23, align 8, !tbaa !5
  %588 = getelementptr inbounds double, ptr %587, i64 1
  %589 = load ptr, ptr %18, align 8, !tbaa !5
  %590 = load ptr, ptr %19, align 8, !tbaa !5
  %591 = load ptr, ptr %24, align 8, !tbaa !5
  %592 = load i32, ptr %33, align 4, !tbaa !9
  %593 = sext i32 %592 to i64
  %594 = getelementptr inbounds double, ptr %591, i64 %593
  %595 = load ptr, ptr %25, align 8, !tbaa !5
  %596 = getelementptr inbounds [49 x double], ptr %43, i64 0, i64 0
  %597 = load ptr, ptr %28, align 8, !tbaa !5
  call void @dlaqr0_(ptr noundef %44, ptr noundef %45, ptr noundef @c__49, ptr noundef %583, ptr noundef %39, ptr noundef %584, ptr noundef @c__49, ptr noundef %586, ptr noundef %588, ptr noundef %589, ptr noundef %590, ptr noundef %594, ptr noundef %595, ptr noundef %596, ptr noundef @c__49, ptr noundef %597)
  %598 = load i32, ptr %44, align 4, !tbaa !9
  %599 = icmp ne i32 %598, 0
  br i1 %599, label %604, label %600

600:                                              ; preds = %554
  %601 = load ptr, ptr %28, align 8, !tbaa !5
  %602 = load i32, ptr %601, align 4, !tbaa !9
  %603 = icmp ne i32 %602, 0
  br i1 %603, label %604, label %613

604:                                              ; preds = %600, %554
  %605 = load ptr, ptr %17, align 8, !tbaa !5
  %606 = load ptr, ptr %17, align 8, !tbaa !5
  %607 = getelementptr inbounds [2401 x double], ptr %46, i64 0, i64 0
  %608 = load ptr, ptr %20, align 8, !tbaa !5
  %609 = load i32, ptr %31, align 4, !tbaa !9
  %610 = sext i32 %609 to i64
  %611 = getelementptr inbounds double, ptr %608, i64 %610
  %612 = load ptr, ptr %21, align 8, !tbaa !5
  call void @dlacpy_(ptr noundef @.str.6, ptr noundef %605, ptr noundef %606, ptr noundef %607, ptr noundef @c__49, ptr noundef %611, ptr noundef %612)
  br label %613

613:                                              ; preds = %604, %600
  br label %614

614:                                              ; preds = %613, %531
  br label %615

615:                                              ; preds = %614, %501
  br label %616

616:                                              ; preds = %615, %477
  %617 = load i32, ptr %44, align 4, !tbaa !9
  %618 = icmp ne i32 %617, 0
  br i1 %618, label %623, label %619

619:                                              ; preds = %616
  %620 = load ptr, ptr %28, align 8, !tbaa !5
  %621 = load i32, ptr %620, align 4, !tbaa !9
  %622 = icmp ne i32 %621, 0
  br i1 %622, label %623, label %640

623:                                              ; preds = %619, %616
  %624 = load ptr, ptr %17, align 8, !tbaa !5
  %625 = load i32, ptr %624, align 4, !tbaa !9
  %626 = icmp sgt i32 %625, 2
  br i1 %626, label %627, label %640

627:                                              ; preds = %623
  %628 = load ptr, ptr %17, align 8, !tbaa !5
  %629 = load i32, ptr %628, align 4, !tbaa !9
  %630 = sub nsw i32 %629, 2
  store i32 %630, ptr %34, align 4, !tbaa !9
  %631 = load ptr, ptr %17, align 8, !tbaa !5
  %632 = load i32, ptr %631, align 4, !tbaa !9
  %633 = sub nsw i32 %632, 2
  store i32 %633, ptr %36, align 4, !tbaa !9
  %634 = load ptr, ptr %20, align 8, !tbaa !5
  %635 = load i32, ptr %30, align 4, !tbaa !9
  %636 = add nsw i32 %635, 3
  %637 = sext i32 %636 to i64
  %638 = getelementptr inbounds double, ptr %634, i64 %637
  %639 = load ptr, ptr %21, align 8, !tbaa !5
  call void @dlaset_(ptr noundef @.str.7, ptr noundef %34, ptr noundef %36, ptr noundef @c_b11, ptr noundef @c_b11, ptr noundef %638, ptr noundef %639)
  br label %640

640:                                              ; preds = %627, %623, %619
  %641 = load ptr, ptr %17, align 8, !tbaa !5
  %642 = load i32, ptr %641, align 4, !tbaa !9
  %643 = icmp sge i32 1, %642
  br i1 %643, label %644, label %645

644:                                              ; preds = %640
  br label %648

645:                                              ; preds = %640
  %646 = load ptr, ptr %17, align 8, !tbaa !5
  %647 = load i32, ptr %646, align 4, !tbaa !9
  br label %648

648:                                              ; preds = %645, %644
  %649 = phi i32 [ 1, %644 ], [ %647, %645 ]
  %650 = sitofp i32 %649 to double
  store double %650, ptr %37, align 8, !tbaa !11
  %651 = load double, ptr %37, align 8, !tbaa !11
  %652 = load ptr, ptr %26, align 8, !tbaa !5
  %653 = getelementptr inbounds double, ptr %652, i64 1
  %654 = load double, ptr %653, align 8, !tbaa !11
  %655 = fcmp oge double %651, %654
  br i1 %655, label %656, label %658

656:                                              ; preds = %648
  %657 = load double, ptr %37, align 8, !tbaa !11
  br label %662

658:                                              ; preds = %648
  %659 = load ptr, ptr %26, align 8, !tbaa !5
  %660 = getelementptr inbounds double, ptr %659, i64 1
  %661 = load double, ptr %660, align 8, !tbaa !11
  br label %662

662:                                              ; preds = %658, %656
  %663 = phi double [ %657, %656 ], [ %661, %658 ]
  %664 = load ptr, ptr %26, align 8, !tbaa !5
  %665 = getelementptr inbounds double, ptr %664, i64 1
  store double %663, ptr %665, align 8, !tbaa !11
  br label %666

666:                                              ; preds = %662
  br label %667

667:                                              ; preds = %666
  br label %668

668:                                              ; preds = %667
  store i32 1, ptr %48, align 4
  br label %669

669:                                              ; preds = %668, %382, %301, %252, %243
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 19208, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 392, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 2, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %29) #3
  ret void
}

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

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

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

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

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

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

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

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

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 }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = !{!7, !7, i64 0}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}


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

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b11 = external hidden global double, align 8
@c_b12 = external hidden global double, align 8
@c__2 = external hidden local_unnamed_addr global i32, align 4
@c__12 = external hidden global i32, align 4
@c__49 = external hidden global i32, align 4
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @dhseqr_(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) local_unnamed_addr #0 {
  %15 = alloca [2 x ptr], align 16
  %16 = alloca i32, align 4
  %17 = alloca [2 x i32], align 4
  %18 = alloca i32, align 4
  %19 = alloca [2 x i8], align 1
  %20 = alloca i32, align 4
  %21 = alloca [49 x double], align 16
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca [2401 x double], align 16
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #5
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %19) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #5
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %21) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #5
  call void @llvm.lifetime.start.p0(i64 19208, ptr nonnull %24) #5
  %25 = load i32, ptr %6, align 4, !tbaa !5
  %narrow = xor i32 %25, -1
  %26 = sext i32 %narrow to i64
  %27 = getelementptr inbounds double, ptr %5, i64 %26
  %28 = getelementptr inbounds i8, ptr %7, i64 -8
  %29 = getelementptr inbounds i8, ptr %8, i64 -8
  %30 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #5
  store i32 %30, ptr %22, align 4, !tbaa !5
  %31 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #5
  %.not = icmp eq i32 %31, 0
  br i1 %.not, label %32, label %35

32:                                               ; preds = %14
  %33 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.2) #5
  %34 = icmp ne i32 %33, 0
  br label %35

35:                                               ; preds = %32, %14
  %36 = phi i1 [ true, %14 ], [ %34, %32 ]
  %37 = zext i1 %36 to i32
  store i32 %37, ptr %23, align 4, !tbaa !5
  %38 = load i32, ptr %2, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.smax.i32(i32 %38, i32 1)
  %39 = uitofp nneg i32 %spec.select to double
  store double %39, ptr %11, align 8, !tbaa !9
  %40 = load i32, ptr %12, align 4, !tbaa !5
  %41 = icmp eq i32 %40, -1
  store i32 0, ptr %13, align 4, !tbaa !5
  %42 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.3) #5
  %43 = icmp ne i32 %42, 0
  %44 = icmp ne i32 %30, 0
  %or.cond = select i1 %43, i1 true, i1 %44
  br i1 %or.cond, label %45, label %.thread.sink.split

45:                                               ; preds = %35
  %46 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #5
  %47 = icmp ne i32 %46, 0
  %or.cond3 = select i1 %47, i1 true, i1 %36
  br i1 %or.cond3, label %48, label %.thread.sink.split

48:                                               ; preds = %45
  %49 = load i32, ptr %2, align 4, !tbaa !5
  %50 = icmp slt i32 %49, 0
  br i1 %50, label %.thread.sink.split, label %51

51:                                               ; preds = %48
  %52 = load i32, ptr %3, align 4, !tbaa !5
  %53 = icmp slt i32 %52, 1
  br i1 %53, label %.thread.sink.split, label %54

54:                                               ; preds = %51
  %spec.select272 = tail call i32 @llvm.umax.i32(i32 %49, i32 1)
  %55 = icmp ugt i32 %52, %spec.select272
  br i1 %55, label %.thread.sink.split, label %56

56:                                               ; preds = %54
  %57 = load i32, ptr %4, align 4, !tbaa !5
  %. = tail call i32 @llvm.umin.i32(i32 %52, i32 %49)
  %58 = icmp slt i32 %57, %.
  %59 = icmp ugt i32 %57, %49
  %or.cond286 = or i1 %58, %59
  br i1 %or.cond286, label %.thread.sink.split, label %60

60:                                               ; preds = %56
  %61 = load i32, ptr %6, align 4, !tbaa !5
  %62 = icmp slt i32 %61, %spec.select272
  br i1 %62, label %.thread.sink.split, label %63

63:                                               ; preds = %60
  %64 = load i32, ptr %10, align 4, !tbaa !5
  %65 = icmp slt i32 %64, 1
  %66 = icmp ugt i32 %49, %64
  %or.cond287 = and i1 %36, %66
  %or.cond331 = select i1 %65, i1 true, i1 %or.cond287
  br i1 %or.cond331, label %.thread.sink.split, label %67

67:                                               ; preds = %63
  %68 = load i32, ptr %12, align 4, !tbaa !5
  %69 = icmp sge i32 %68, %spec.select272
  %or.cond5 = select i1 %69, i1 true, i1 %41
  br i1 %or.cond5, label %70, label %.thread.sink.split

70:                                               ; preds = %67
  %.pr = load i32, ptr %13, align 4, !tbaa !5
  %.not265 = icmp eq i32 %.pr, 0
  br i1 %.not265, label %74, label %.thread

.thread.sink.split:                               ; preds = %67, %63, %60, %56, %51, %54, %48, %45, %35
  %.sink = phi i32 [ -1, %35 ], [ -2, %45 ], [ -3, %48 ], [ -4, %54 ], [ -4, %51 ], [ -5, %56 ], [ -7, %60 ], [ -11, %63 ], [ -13, %67 ]
  store i32 %.sink, ptr %13, align 4, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %70
  %71 = phi i32 [ %.pr, %70 ], [ %.sink, %.thread.sink.split ]
  %72 = sub nsw i32 0, %71
  store i32 %72, ptr %16, align 4, !tbaa !5
  %73 = call i32 @xerbla_(ptr noundef nonnull @.str.5, ptr noundef nonnull %16, i32 noundef 6) #5
  br label %221

74:                                               ; preds = %70
  %75 = icmp eq i32 %49, 0
  br i1 %75, label %221, label %76

76:                                               ; preds = %74
  br i1 %41, label %77, label %84

77:                                               ; preds = %76
  call void @dlaqr0_(ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef %8, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef nonnull %13) #5
  %78 = load i32, ptr %2, align 4, !tbaa !5
  %79 = icmp slt i32 %78, 2
  %80 = uitofp nneg i32 %78 to double
  %81 = select i1 %79, double 1.000000e+00, double %80
  %82 = load double, ptr %11, align 8, !tbaa !9
  %.inv288 = fcmp oge double %81, %82
  %83 = select i1 %.inv288, double %81, double %82
  store double %83, ptr %11, align 8, !tbaa !9
  br label %221

84:                                               ; preds = %76
  %.not266.not289.not = icmp eq i32 %52, 1
  br i1 %.not266.not289.not, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %84
  %85 = add i32 %25, 1
  %wide.trip.count = zext nneg i32 %52 to i64
  %86 = add nsw i64 %wide.trip.count, -1
  %xtraiter = and i64 %86, 1
  %87 = icmp eq i32 %52, 2
  br i1 %87, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph.new

.lr.ph.new:                                       ; preds = %.lr.ph
  %unroll_iter = and i64 %86, -2
  br label %88

88:                                               ; preds = %88, %.lr.ph.new
  %indvars.iv = phi i64 [ 1, %.lr.ph.new ], [ %indvars.iv.next.1, %88 ]
  %niter = phi i64 [ 0, %.lr.ph.new ], [ %niter.next.1, %88 ]
  %89 = trunc nuw nsw i64 %indvars.iv to i32
  %90 = mul i32 %85, %89
  %91 = sext i32 %90 to i64
  %92 = getelementptr inbounds double, ptr %27, i64 %91
  %93 = load double, ptr %92, align 8, !tbaa !9
  %94 = getelementptr inbounds double, ptr %28, i64 %indvars.iv
  store double %93, ptr %94, align 8, !tbaa !9
  %95 = getelementptr inbounds double, ptr %29, i64 %indvars.iv
  store double 0.000000e+00, ptr %95, align 8, !tbaa !9
  %96 = trunc i64 %indvars.iv to i32
  %97 = add i32 %96, 1
  %98 = mul i32 %85, %97
  %99 = sext i32 %98 to i64
  %100 = getelementptr inbounds double, ptr %27, i64 %99
  %101 = load double, ptr %100, align 8, !tbaa !9
  %102 = getelementptr double, ptr %7, i64 %indvars.iv
  store double %101, ptr %102, align 8, !tbaa !9
  %103 = getelementptr double, ptr %8, i64 %indvars.iv
  store double 0.000000e+00, ptr %103, align 8, !tbaa !9
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 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 %._crit_edge.loopexit.unr-lcssa, label %88, !llvm.loop !11

._crit_edge.loopexit.unr-lcssa:                   ; preds = %88, %.lr.ph
  %indvars.iv.unr = phi i64 [ 1, %.lr.ph ], [ %indvars.iv.next.1, %88 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %._crit_edge.loopexit.epilog-lcssa

._crit_edge.loopexit.epilog-lcssa:                ; preds = %._crit_edge.loopexit.unr-lcssa
  %104 = trunc nuw nsw i64 %indvars.iv.unr to i32
  %105 = mul i32 %85, %104
  %106 = sext i32 %105 to i64
  %107 = getelementptr inbounds double, ptr %27, i64 %106
  %108 = load double, ptr %107, align 8, !tbaa !9
  %109 = getelementptr inbounds double, ptr %28, i64 %indvars.iv.unr
  store double %108, ptr %109, align 8, !tbaa !9
  %110 = getelementptr inbounds double, ptr %29, i64 %indvars.iv.unr
  store double 0.000000e+00, ptr %110, align 8, !tbaa !9
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit.epilog-lcssa, %._crit_edge.loopexit.unr-lcssa, %84
  store i32 %49, ptr %16, align 4, !tbaa !5
  %.not267.not291 = icmp slt i32 %57, %49
  br i1 %.not267.not291, label %.lr.ph294, label %._crit_edge295

.lr.ph294:                                        ; preds = %._crit_edge
  %111 = add i32 %25, 1
  %112 = sext i32 %57 to i64
  %wide.trip.count318 = zext nneg i32 %49 to i64
  %113 = sub nsw i64 %wide.trip.count318, %112
  %xtraiter345 = and i64 %113, 1
  %lcmp.mod346.not = icmp eq i64 %xtraiter345, 0
  br i1 %lcmp.mod346.not, label %.prol.loopexit, label %.prol.loopexit.unr-lcssa

.prol.loopexit.unr-lcssa:                         ; preds = %.lr.ph294
  %indvars.iv.next316.prol = add nsw i64 %112, 1
  %114 = trunc nsw i64 %indvars.iv.next316.prol to i32
  %115 = mul i32 %111, %114
  %116 = sext i32 %115 to i64
  %117 = getelementptr inbounds double, ptr %27, i64 %116
  %118 = load double, ptr %117, align 8, !tbaa !9
  %119 = getelementptr double, ptr %7, i64 %112
  store double %118, ptr %119, align 8, !tbaa !9
  %120 = getelementptr double, ptr %8, i64 %112
  store double 0.000000e+00, ptr %120, align 8, !tbaa !9
  br label %.prol.loopexit

.prol.loopexit:                                   ; preds = %.prol.loopexit.unr-lcssa, %.lr.ph294
  %indvars.iv315.unr = phi i64 [ %112, %.lr.ph294 ], [ %indvars.iv.next316.prol, %.prol.loopexit.unr-lcssa ]
  %121 = add nsw i64 %wide.trip.count318, -1
  %122 = icmp eq i64 %121, %112
  br i1 %122, label %._crit_edge295, label %.lr.ph294.new

.lr.ph294.new:                                    ; preds = %.prol.loopexit, %.lr.ph294.new
  %indvars.iv315 = phi i64 [ %indvars.iv.next316.1, %.lr.ph294.new ], [ %indvars.iv315.unr, %.prol.loopexit ]
  %indvars.iv.next316 = add nsw i64 %indvars.iv315, 1
  %123 = trunc nsw i64 %indvars.iv.next316 to i32
  %124 = mul i32 %111, %123
  %125 = sext i32 %124 to i64
  %126 = getelementptr inbounds double, ptr %27, i64 %125
  %127 = load double, ptr %126, align 8, !tbaa !9
  %128 = getelementptr double, ptr %7, i64 %indvars.iv315
  store double %127, ptr %128, align 8, !tbaa !9
  %129 = getelementptr double, ptr %8, i64 %indvars.iv315
  store double 0.000000e+00, ptr %129, align 8, !tbaa !9
  %indvars.iv.next316.1 = add nsw i64 %indvars.iv315, 2
  %130 = trunc nsw i64 %indvars.iv.next316.1 to i32
  %131 = mul i32 %111, %130
  %132 = sext i32 %131 to i64
  %133 = getelementptr inbounds double, ptr %27, i64 %132
  %134 = load double, ptr %133, align 8, !tbaa !9
  %135 = getelementptr double, ptr %7, i64 %indvars.iv.next316
  store double %134, ptr %135, align 8, !tbaa !9
  %136 = getelementptr double, ptr %8, i64 %indvars.iv.next316
  store double 0.000000e+00, ptr %136, align 8, !tbaa !9
  %exitcond319.not.1 = icmp eq i64 %indvars.iv.next316.1, %wide.trip.count318
  br i1 %exitcond319.not.1, label %._crit_edge295, label %.lr.ph294.new, !llvm.loop !13

._crit_edge295:                                   ; preds = %.prol.loopexit, %.lr.ph294.new, %._crit_edge
  br i1 %.not, label %138, label %137

137:                                              ; preds = %._crit_edge295
  tail call void @dlaset_(ptr noundef nonnull @.str.6, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_b11, ptr noundef nonnull @c_b12, ptr noundef %9, ptr noundef nonnull %10) #5
  %.pre = load i32, ptr %3, align 4, !tbaa !5
  %.pre324 = load i32, ptr %4, align 4, !tbaa !5
  br label %138

138:                                              ; preds = %137, %._crit_edge295
  %139 = phi i32 [ %.pre324, %137 ], [ %57, %._crit_edge295 ]
  %140 = phi i32 [ %.pre, %137 ], [ %52, %._crit_edge295 ]
  %141 = icmp eq i32 %140, %139
  br i1 %141, label %142, label %151

142:                                              ; preds = %138
  %143 = add i32 %25, 1
  %144 = mul i32 %139, %143
  %145 = sext i32 %144 to i64
  %146 = getelementptr inbounds double, ptr %27, i64 %145
  %147 = load double, ptr %146, align 8, !tbaa !9
  %148 = sext i32 %139 to i64
  %149 = getelementptr inbounds double, ptr %28, i64 %148
  store double %147, ptr %149, align 8, !tbaa !9
  %150 = getelementptr inbounds double, ptr %29, i64 %148
  store double 0.000000e+00, ptr %150, align 8, !tbaa !9
  br label %221

151:                                              ; preds = %138
  store i32 1, ptr %17, align 4, !tbaa !5
  store ptr %0, ptr %15, align 16, !tbaa !14
  %152 = getelementptr inbounds i8, ptr %17, i64 4
  store i32 1, ptr %152, align 4, !tbaa !5
  %153 = getelementptr inbounds i8, ptr %15, i64 8
  store ptr %1, ptr %153, align 8, !tbaa !14
  %154 = load i32, ptr @c__2, align 4, !tbaa !5
  %155 = icmp sgt i32 %154, 0
  br i1 %155, label %.lr.ph306, label %.lr.ph311.preheader

.preheader:                                       ; preds = %._crit_edge301
  %156 = icmp sgt i32 %161, 0
  br i1 %156, label %.lr.ph311.preheader, label %._crit_edge312

.lr.ph311.preheader:                              ; preds = %151, %.preheader
  %.0.lcssa329 = phi ptr [ %.1.lcssa, %.preheader ], [ %19, %151 ]
  %.0234.lcssa328 = phi i32 [ %161, %.preheader ], [ 2, %151 ]
  %157 = zext nneg i32 %.0234.lcssa328 to i64
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %.0.lcssa329, i8 32, i64 %157, i1 false), !tbaa !16
  br label %._crit_edge312

.lr.ph306:                                        ; preds = %151, %._crit_edge301
  %158 = phi i32 [ %176, %._crit_edge301 ], [ %154, %151 ]
  %indvars.iv321 = phi i64 [ %indvars.iv.next322, %._crit_edge301 ], [ 0, %151 ]
  %.0304 = phi ptr [ %.1.lcssa, %._crit_edge301 ], [ %19, %151 ]
  %.0234303 = phi i32 [ %161, %._crit_edge301 ], [ 2, %151 ]
  %159 = getelementptr inbounds [2 x i32], ptr %17, i64 0, i64 %indvars.iv321
  %160 = load i32, ptr %159, align 4, !tbaa !5
  %spec.select276 = tail call i32 @llvm.smin.i32(i32 %160, i32 %.0234303)
  %161 = sub nsw i32 %.0234303, %spec.select276
  %162 = icmp sgt i32 %spec.select276, 0
  br i1 %162, label %.lr.ph300.preheader, label %._crit_edge301

.lr.ph300.preheader:                              ; preds = %.lr.ph306
  %.0304333 = ptrtoint ptr %.0304 to i64
  %163 = getelementptr inbounds [2 x ptr], ptr %15, i64 0, i64 %indvars.iv321
  %164 = load ptr, ptr %163, align 8, !tbaa !14
  %165 = add nsw i32 %spec.select276, -1
  %166 = zext nneg i32 %165 to i64
  %scevgep = getelementptr i8, ptr %.0304, i64 %166
  %167 = zext nneg i32 %spec.select276 to i64
  %min.iters.check = icmp ult i32 %spec.select276, 32
  %168 = ptrtoint ptr %164 to i64
  %169 = sub i64 %.0304333, %168
  %diff.check = icmp ult i64 %169, 32
  %or.cond341 = select i1 %min.iters.check, i1 true, i1 %diff.check
  br i1 %or.cond341, label %.lr.ph300.preheader342, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph300.preheader
  %n.vec = and i64 %167, 2147483616
  %ind.end = getelementptr i8, ptr %.0304, i64 %n.vec
  %ind.end334 = getelementptr i8, ptr %164, i64 %n.vec
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %next.gep = getelementptr i8, ptr %.0304, i64 %index
  %next.gep337 = getelementptr i8, ptr %164, i64 %index
  %170 = getelementptr i8, ptr %next.gep337, i64 16
  %wide.load = load <16 x i8>, ptr %next.gep337, align 1, !tbaa !16
  %wide.load339 = load <16 x i8>, ptr %170, align 1, !tbaa !16
  %171 = getelementptr i8, ptr %next.gep, i64 16
  store <16 x i8> %wide.load, ptr %next.gep, align 1, !tbaa !16
  store <16 x i8> %wide.load339, ptr %171, align 1, !tbaa !16
  %index.next = add nuw i64 %index, 32
  %172 = icmp eq i64 %index.next, %n.vec
  br i1 %172, label %middle.block, label %vector.body, !llvm.loop !17

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %167
  br i1 %cmp.n, label %._crit_edge301.loopexit, label %.lr.ph300.preheader342

.lr.ph300.preheader342:                           ; preds = %middle.block, %.lr.ph300.preheader
  %.1298.ph = phi ptr [ %.0304, %.lr.ph300.preheader ], [ %ind.end, %middle.block ]
  %.0233297.ph = phi ptr [ %164, %.lr.ph300.preheader ], [ %ind.end334, %middle.block ]
  br label %.lr.ph300

.lr.ph300:                                        ; preds = %.lr.ph300.preheader342, %.lr.ph300
  %.1298 = phi ptr [ %175, %.lr.ph300 ], [ %.1298.ph, %.lr.ph300.preheader342 ]
  %.0233297 = phi ptr [ %173, %.lr.ph300 ], [ %.0233297.ph, %.lr.ph300.preheader342 ]
  %173 = getelementptr inbounds i8, ptr %.0233297, i64 1
  %174 = load i8, ptr %.0233297, align 1, !tbaa !16
  %175 = getelementptr inbounds i8, ptr %.1298, i64 1
  store i8 %174, ptr %.1298, align 1, !tbaa !16
  %exitcond320.not = icmp eq ptr %.1298, %scevgep
  br i1 %exitcond320.not, label %._crit_edge301.loopexit, label %.lr.ph300, !llvm.loop !20

._crit_edge301.loopexit:                          ; preds = %.lr.ph300, %middle.block
  %.lcssa = phi ptr [ %ind.end, %middle.block ], [ %175, %.lr.ph300 ]
  %.pre325 = load i32, ptr @c__2, align 4, !tbaa !5
  br label %._crit_edge301

._crit_edge301:                                   ; preds = %._crit_edge301.loopexit, %.lr.ph306
  %176 = phi i32 [ %158, %.lr.ph306 ], [ %.pre325, %._crit_edge301.loopexit ]
  %.1.lcssa = phi ptr [ %.0304, %.lr.ph306 ], [ %.lcssa, %._crit_edge301.loopexit ]
  %indvars.iv.next322 = add nuw nsw i64 %indvars.iv321, 1
  %177 = sext i32 %176 to i64
  %178 = icmp slt i64 %indvars.iv.next322, %177
  br i1 %178, label %.lr.ph306, label %.preheader, !llvm.loop !21

._crit_edge312:                                   ; preds = %.lr.ph311.preheader, %.preheader
  %179 = call i32 @ilaenv_(ptr noundef nonnull @c__12, ptr noundef nonnull @.str.5, ptr noundef nonnull %19, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %12, i32 noundef 6, i32 noundef 2) #5
  %180 = call i32 @llvm.smax.i32(i32 %179, i32 15)
  %181 = load i32, ptr %2, align 4, !tbaa !5
  %182 = icmp sgt i32 %181, %180
  br i1 %182, label %183, label %184

183:                                              ; preds = %._crit_edge312
  call void @dlaqr0_(ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef %8, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef nonnull %13) #5
  br label %205

184:                                              ; preds = %._crit_edge312
  call void @dlahqr_(ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef %8, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %13) #5
  %185 = load i32, ptr %13, align 4, !tbaa !5
  %186 = icmp sgt i32 %185, 0
  br i1 %186, label %187, label %205

187:                                              ; preds = %184
  store i32 %185, ptr %20, align 4, !tbaa !5
  %188 = load i32, ptr %2, align 4, !tbaa !5
  %189 = icmp sgt i32 %188, 48
  br i1 %189, label %190, label %191

190:                                              ; preds = %187
  call void @dlaqr0_(ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %20, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef %8, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef nonnull %13) #5
  br label %205

191:                                              ; preds = %187
  call void @dlacpy_(ptr noundef nonnull @.str.6, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %24, ptr noundef nonnull @c__49) #5
  %192 = load i32, ptr %2, align 4, !tbaa !5
  %193 = mul nsw i32 %192, 49
  %194 = add i32 %192, -49
  %195 = add i32 %194, %193
  %196 = sext i32 %195 to i64
  %197 = getelementptr inbounds [2401 x double], ptr %24, i64 0, i64 %196
  store double 0.000000e+00, ptr %197, align 8, !tbaa !9
  %198 = sub nsw i32 49, %192
  store i32 %198, ptr %16, align 4, !tbaa !5
  %199 = sext i32 %193 to i64
  %200 = getelementptr inbounds [2401 x double], ptr %24, i64 0, i64 %199
  call void @dlaset_(ptr noundef nonnull @.str.6, ptr noundef nonnull @c__49, ptr noundef nonnull %16, ptr noundef nonnull @c_b11, ptr noundef nonnull @c_b11, ptr noundef nonnull %200, ptr noundef nonnull @c__49) #5
  call void @dlaqr0_(ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef nonnull @c__49, ptr noundef nonnull %3, ptr noundef nonnull %20, ptr noundef nonnull %24, ptr noundef nonnull @c__49, ptr noundef %7, ptr noundef %8, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %21, ptr noundef nonnull @c__49, ptr noundef nonnull %13) #5
  %201 = load i32, ptr %22, align 4, !tbaa !5
  %.not268 = icmp eq i32 %201, 0
  br i1 %.not268, label %202, label %204

202:                                              ; preds = %191
  %203 = load i32, ptr %13, align 4, !tbaa !5
  %.not269 = icmp eq i32 %203, 0
  br i1 %.not269, label %.thread284, label %204

204:                                              ; preds = %202, %191
  call void @dlacpy_(ptr noundef nonnull @.str.6, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull %24, ptr noundef nonnull @c__49, ptr noundef %5, ptr noundef nonnull %6) #5
  br label %205

205:                                              ; preds = %184, %204, %190, %183
  %.pr279 = load i32, ptr %22, align 4, !tbaa !5
  %.not270 = icmp eq i32 %.pr279, 0
  br i1 %.not270, label %206, label %207

206:                                              ; preds = %205
  %.pr283 = load i32, ptr %13, align 4, !tbaa !5
  %.not271 = icmp eq i32 %.pr283, 0
  br i1 %.not271, label %.thread284, label %207

207:                                              ; preds = %206, %205
  %208 = load i32, ptr %2, align 4, !tbaa !5
  %209 = icmp sgt i32 %208, 2
  br i1 %209, label %210, label %.thread284

210:                                              ; preds = %207
  %211 = add nsw i32 %208, -2
  store i32 %211, ptr %16, align 4, !tbaa !5
  store i32 %211, ptr %18, align 4, !tbaa !5
  %212 = sext i32 %25 to i64
  %213 = getelementptr double, ptr %27, i64 %212
  %214 = getelementptr i8, ptr %213, i64 24
  call void @dlaset_(ptr noundef nonnull @.str.7, ptr noundef nonnull %16, ptr noundef nonnull %18, ptr noundef nonnull @c_b11, ptr noundef nonnull @c_b11, ptr noundef %214, ptr noundef nonnull %6) #5
  br label %.thread284

.thread284:                                       ; preds = %202, %210, %207, %206
  %215 = load i32, ptr %2, align 4, !tbaa !5
  %216 = icmp slt i32 %215, 2
  %217 = uitofp nneg i32 %215 to double
  %218 = select i1 %216, double 1.000000e+00, double %217
  %219 = load double, ptr %11, align 8, !tbaa !9
  %.inv = fcmp oge double %218, %219
  %220 = select i1 %.inv, double %218, double %219
  store double %220, ptr %11, align 8, !tbaa !9
  br label %221

221:                                              ; preds = %74, %.thread284, %142, %77, %.thread
  call void @llvm.lifetime.end.p0(i64 19208, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %21) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #5
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #5
  ret void
}

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

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

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

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

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

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smax.i32(i32, i32) #3

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.umin.i32(i32, i32) #3

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smin.i32(i32, i32) #3

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #5 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = !{!15, !15, i64 0}
!15 = !{!"any pointer", !7, i64 0}
!16 = !{!7, !7, i64 0}
!17 = distinct !{!17, !12, !18, !19}
!18 = !{!"llvm.loop.isvectorized", i32 1}
!19 = !{!"llvm.loop.unroll.runtime.disable"}
!20 = distinct !{!20, !12, !18}
!21 = distinct !{!21, !12}


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