; LLVM IR from niuyishuai/PDCABB :: LAPACK_BLAS/LAPACK (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 i64, align 8
@c__12 = external hidden global i64, align 8
@c__49 = external hidden global i64, align 8
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1

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

78:                                               ; preds = %14
  %79 = load ptr, ptr %17, align 8, !tbaa !5
  %80 = call i64 @lsame_(ptr noundef %79, ptr noundef @.str.2)
  %81 = icmp ne i64 %80, 0
  br label %82

82:                                               ; preds = %78, %14
  %83 = phi i1 [ true, %14 ], [ %81, %78 ]
  %84 = zext i1 %83 to i32
  %85 = sext i32 %84 to i64
  store i64 %85, ptr %47, align 8, !tbaa !9
  %86 = load ptr, ptr %18, align 8, !tbaa !5
  %87 = load i64, ptr %86, align 8, !tbaa !9
  %88 = icmp sge i64 1, %87
  br i1 %88, label %89, label %90

89:                                               ; preds = %82
  br label %93

90:                                               ; preds = %82
  %91 = load ptr, ptr %18, align 8, !tbaa !5
  %92 = load i64, ptr %91, align 8, !tbaa !9
  br label %93

93:                                               ; preds = %90, %89
  %94 = phi i64 [ 1, %89 ], [ %92, %90 ]
  %95 = sitofp i64 %94 to double
  %96 = load ptr, ptr %27, align 8, !tbaa !5
  %97 = getelementptr inbounds double, ptr %96, i64 1
  store double %95, ptr %97, align 8, !tbaa !11
  %98 = load ptr, ptr %28, align 8, !tbaa !5
  %99 = load i64, ptr %98, align 8, !tbaa !9
  %100 = icmp eq i64 %99, -1
  %101 = zext i1 %100 to i32
  %102 = sext i32 %101 to i64
  store i64 %102, ptr %48, align 8, !tbaa !9
  %103 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 0, ptr %103, align 8, !tbaa !9
  %104 = load ptr, ptr %16, align 8, !tbaa !5
  %105 = call i64 @lsame_(ptr noundef %104, ptr noundef @.str.3)
  %106 = icmp ne i64 %105, 0
  br i1 %106, label %112, label %107

107:                                              ; preds = %93
  %108 = load i64, ptr %46, align 8, !tbaa !9
  %109 = icmp ne i64 %108, 0
  br i1 %109, label %112, label %110

110:                                              ; preds = %107
  %111 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -1, ptr %111, align 8, !tbaa !9
  br label %233

112:                                              ; preds = %107, %93
  %113 = load ptr, ptr %17, align 8, !tbaa !5
  %114 = call i64 @lsame_(ptr noundef %113, ptr noundef @.str.4)
  %115 = icmp ne i64 %114, 0
  br i1 %115, label %121, label %116

116:                                              ; preds = %112
  %117 = load i64, ptr %47, align 8, !tbaa !9
  %118 = icmp ne i64 %117, 0
  br i1 %118, label %121, label %119

119:                                              ; preds = %116
  %120 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -2, ptr %120, align 8, !tbaa !9
  br label %232

121:                                              ; preds = %116, %112
  %122 = load ptr, ptr %18, align 8, !tbaa !5
  %123 = load i64, ptr %122, align 8, !tbaa !9
  %124 = icmp slt i64 %123, 0
  br i1 %124, label %125, label %127

125:                                              ; preds = %121
  %126 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -3, ptr %126, align 8, !tbaa !9
  br label %231

127:                                              ; preds = %121
  %128 = load ptr, ptr %19, align 8, !tbaa !5
  %129 = load i64, ptr %128, align 8, !tbaa !9
  %130 = icmp slt i64 %129, 1
  br i1 %130, label %144, label %131

131:                                              ; preds = %127
  %132 = load ptr, ptr %19, align 8, !tbaa !5
  %133 = load i64, ptr %132, align 8, !tbaa !9
  %134 = load ptr, ptr %18, align 8, !tbaa !5
  %135 = load i64, ptr %134, align 8, !tbaa !9
  %136 = icmp sge i64 1, %135
  br i1 %136, label %137, label %138

137:                                              ; preds = %131
  br label %141

138:                                              ; preds = %131
  %139 = load ptr, ptr %18, align 8, !tbaa !5
  %140 = load i64, ptr %139, align 8, !tbaa !9
  br label %141

141:                                              ; preds = %138, %137
  %142 = phi i64 [ 1, %137 ], [ %140, %138 ]
  %143 = icmp sgt i64 %133, %142
  br i1 %143, label %144, label %146

144:                                              ; preds = %141, %127
  %145 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -4, ptr %145, align 8, !tbaa !9
  br label %230

146:                                              ; preds = %141
  %147 = load ptr, ptr %20, align 8, !tbaa !5
  %148 = load i64, ptr %147, align 8, !tbaa !9
  %149 = load ptr, ptr %19, align 8, !tbaa !5
  %150 = load i64, ptr %149, align 8, !tbaa !9
  %151 = load ptr, ptr %18, align 8, !tbaa !5
  %152 = load i64, ptr %151, align 8, !tbaa !9
  %153 = icmp sle i64 %150, %152
  br i1 %153, label %154, label %157

154:                                              ; preds = %146
  %155 = load ptr, ptr %19, align 8, !tbaa !5
  %156 = load i64, ptr %155, align 8, !tbaa !9
  br label %160

157:                                              ; preds = %146
  %158 = load ptr, ptr %18, align 8, !tbaa !5
  %159 = load i64, ptr %158, align 8, !tbaa !9
  br label %160

160:                                              ; preds = %157, %154
  %161 = phi i64 [ %156, %154 ], [ %159, %157 ]
  %162 = icmp slt i64 %148, %161
  br i1 %162, label %169, label %163

163:                                              ; preds = %160
  %164 = load ptr, ptr %20, align 8, !tbaa !5
  %165 = load i64, ptr %164, align 8, !tbaa !9
  %166 = load ptr, ptr %18, align 8, !tbaa !5
  %167 = load i64, ptr %166, align 8, !tbaa !9
  %168 = icmp sgt i64 %165, %167
  br i1 %168, label %169, label %171

169:                                              ; preds = %163, %160
  %170 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -5, ptr %170, align 8, !tbaa !9
  br label %229

171:                                              ; preds = %163
  %172 = load ptr, ptr %22, align 8, !tbaa !5
  %173 = load i64, ptr %172, align 8, !tbaa !9
  %174 = load ptr, ptr %18, align 8, !tbaa !5
  %175 = load i64, ptr %174, align 8, !tbaa !9
  %176 = icmp sge i64 1, %175
  br i1 %176, label %177, label %178

177:                                              ; preds = %171
  br label %181

178:                                              ; preds = %171
  %179 = load ptr, ptr %18, align 8, !tbaa !5
  %180 = load i64, ptr %179, align 8, !tbaa !9
  br label %181

181:                                              ; preds = %178, %177
  %182 = phi i64 [ 1, %177 ], [ %180, %178 ]
  %183 = icmp slt i64 %173, %182
  br i1 %183, label %184, label %186

184:                                              ; preds = %181
  %185 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -7, ptr %185, align 8, !tbaa !9
  br label %228

186:                                              ; preds = %181
  %187 = load ptr, ptr %26, align 8, !tbaa !5
  %188 = load i64, ptr %187, align 8, !tbaa !9
  %189 = icmp slt i64 %188, 1
  br i1 %189, label %206, label %190

190:                                              ; preds = %186
  %191 = load i64, ptr %47, align 8, !tbaa !9
  %192 = icmp ne i64 %191, 0
  br i1 %192, label %193, label %208

193:                                              ; preds = %190
  %194 = load ptr, ptr %26, align 8, !tbaa !5
  %195 = load i64, ptr %194, align 8, !tbaa !9
  %196 = load ptr, ptr %18, align 8, !tbaa !5
  %197 = load i64, ptr %196, align 8, !tbaa !9
  %198 = icmp sge i64 1, %197
  br i1 %198, label %199, label %200

199:                                              ; preds = %193
  br label %203

200:                                              ; preds = %193
  %201 = load ptr, ptr %18, align 8, !tbaa !5
  %202 = load i64, ptr %201, align 8, !tbaa !9
  br label %203

203:                                              ; preds = %200, %199
  %204 = phi i64 [ 1, %199 ], [ %202, %200 ]
  %205 = icmp slt i64 %195, %204
  br i1 %205, label %206, label %208

206:                                              ; preds = %203, %186
  %207 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -11, ptr %207, align 8, !tbaa !9
  br label %227

208:                                              ; preds = %203, %190
  %209 = load ptr, ptr %28, align 8, !tbaa !5
  %210 = load i64, ptr %209, align 8, !tbaa !9
  %211 = load ptr, ptr %18, align 8, !tbaa !5
  %212 = load i64, ptr %211, align 8, !tbaa !9
  %213 = icmp sge i64 1, %212
  br i1 %213, label %214, label %215

214:                                              ; preds = %208
  br label %218

215:                                              ; preds = %208
  %216 = load ptr, ptr %18, align 8, !tbaa !5
  %217 = load i64, ptr %216, align 8, !tbaa !9
  br label %218

218:                                              ; preds = %215, %214
  %219 = phi i64 [ 1, %214 ], [ %217, %215 ]
  %220 = icmp slt i64 %210, %219
  br i1 %220, label %221, label %226

221:                                              ; preds = %218
  %222 = load i64, ptr %48, align 8, !tbaa !9
  %223 = icmp ne i64 %222, 0
  br i1 %223, label %226, label %224

224:                                              ; preds = %221
  %225 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -13, ptr %225, align 8, !tbaa !9
  br label %226

226:                                              ; preds = %224, %221, %218
  br label %227

227:                                              ; preds = %226, %206
  br label %228

228:                                              ; preds = %227, %184
  br label %229

229:                                              ; preds = %228, %169
  br label %230

230:                                              ; preds = %229, %144
  br label %231

231:                                              ; preds = %230, %125
  br label %232

232:                                              ; preds = %231, %119
  br label %233

233:                                              ; preds = %232, %110
  %234 = load ptr, ptr %29, align 8, !tbaa !5
  %235 = load i64, ptr %234, align 8, !tbaa !9
  %236 = icmp ne i64 %235, 0
  br i1 %236, label %237, label %242

237:                                              ; preds = %233
  %238 = load ptr, ptr %29, align 8, !tbaa !5
  %239 = load i64, ptr %238, align 8, !tbaa !9
  %240 = sub nsw i64 0, %239
  store i64 %240, ptr %35, align 8, !tbaa !9
  %241 = call i32 @xerbla_(ptr noundef @.str.5, ptr noundef %35)
  store i32 0, ptr %15, align 4
  store i32 1, ptr %49, align 4
  br label %604

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

246:                                              ; preds = %242
  store i32 0, ptr %15, align 4
  store i32 1, ptr %49, align 4
  br label %604

247:                                              ; preds = %242
  %248 = load i64, ptr %48, align 8, !tbaa !9
  %249 = icmp ne i64 %248, 0
  br i1 %249, label %250, label %298

250:                                              ; preds = %247
  %251 = load ptr, ptr %18, align 8, !tbaa !5
  %252 = load ptr, ptr %19, align 8, !tbaa !5
  %253 = load ptr, ptr %20, align 8, !tbaa !5
  %254 = load ptr, ptr %21, align 8, !tbaa !5
  %255 = load i64, ptr %32, align 8, !tbaa !9
  %256 = getelementptr inbounds double, ptr %254, i64 %255
  %257 = load ptr, ptr %22, align 8, !tbaa !5
  %258 = load ptr, ptr %23, align 8, !tbaa !5
  %259 = getelementptr inbounds double, ptr %258, i64 1
  %260 = load ptr, ptr %24, align 8, !tbaa !5
  %261 = getelementptr inbounds double, ptr %260, i64 1
  %262 = load ptr, ptr %19, align 8, !tbaa !5
  %263 = load ptr, ptr %20, align 8, !tbaa !5
  %264 = load ptr, ptr %25, align 8, !tbaa !5
  %265 = load i64, ptr %34, align 8, !tbaa !9
  %266 = getelementptr inbounds double, ptr %264, i64 %265
  %267 = load ptr, ptr %26, align 8, !tbaa !5
  %268 = load ptr, ptr %27, align 8, !tbaa !5
  %269 = getelementptr inbounds double, ptr %268, i64 1
  %270 = load ptr, ptr %28, align 8, !tbaa !5
  %271 = load ptr, ptr %29, align 8, !tbaa !5
  %272 = call i32 @dlaqr0_(ptr noundef %46, ptr noundef %47, ptr noundef %251, ptr noundef %252, ptr noundef %253, ptr noundef %256, ptr noundef %257, ptr noundef %259, ptr noundef %261, ptr noundef %262, ptr noundef %263, ptr noundef %266, ptr noundef %267, ptr noundef %269, ptr noundef %270, ptr noundef %271)
  %273 = load ptr, ptr %18, align 8, !tbaa !5
  %274 = load i64, ptr %273, align 8, !tbaa !9
  %275 = icmp sge i64 1, %274
  br i1 %275, label %276, label %277

276:                                              ; preds = %250
  br label %280

277:                                              ; preds = %250
  %278 = load ptr, ptr %18, align 8, !tbaa !5
  %279 = load i64, ptr %278, align 8, !tbaa !9
  br label %280

280:                                              ; preds = %277, %276
  %281 = phi i64 [ 1, %276 ], [ %279, %277 ]
  %282 = sitofp i64 %281 to double
  store double %282, ptr %38, align 8, !tbaa !11
  %283 = load double, ptr %38, align 8, !tbaa !11
  %284 = load ptr, ptr %27, align 8, !tbaa !5
  %285 = getelementptr inbounds double, ptr %284, i64 1
  %286 = load double, ptr %285, align 8, !tbaa !11
  %287 = fcmp oge double %283, %286
  br i1 %287, label %288, label %290

288:                                              ; preds = %280
  %289 = load double, ptr %38, align 8, !tbaa !11
  br label %294

290:                                              ; preds = %280
  %291 = load ptr, ptr %27, align 8, !tbaa !5
  %292 = getelementptr inbounds double, ptr %291, i64 1
  %293 = load double, ptr %292, align 8, !tbaa !11
  br label %294

294:                                              ; preds = %290, %288
  %295 = phi double [ %289, %288 ], [ %293, %290 ]
  %296 = load ptr, ptr %27, align 8, !tbaa !5
  %297 = getelementptr inbounds double, ptr %296, i64 1
  store double %295, ptr %297, align 8, !tbaa !11
  store i32 0, ptr %15, align 4
  store i32 1, ptr %49, align 4
  br label %604

298:                                              ; preds = %247
  %299 = load ptr, ptr %19, align 8, !tbaa !5
  %300 = load i64, ptr %299, align 8, !tbaa !9
  %301 = sub nsw i64 %300, 1
  store i64 %301, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %40, align 8, !tbaa !9
  br label %302

302:                                              ; preds = %321, %298
  %303 = load i64, ptr %40, align 8, !tbaa !9
  %304 = load i64, ptr %35, align 8, !tbaa !9
  %305 = icmp sle i64 %303, %304
  br i1 %305, label %306, label %324

306:                                              ; preds = %302
  %307 = load ptr, ptr %21, align 8, !tbaa !5
  %308 = load i64, ptr %40, align 8, !tbaa !9
  %309 = load i64, ptr %40, align 8, !tbaa !9
  %310 = load i64, ptr %31, align 8, !tbaa !9
  %311 = mul nsw i64 %309, %310
  %312 = add nsw i64 %308, %311
  %313 = getelementptr inbounds double, ptr %307, i64 %312
  %314 = load double, ptr %313, align 8, !tbaa !11
  %315 = load ptr, ptr %23, align 8, !tbaa !5
  %316 = load i64, ptr %40, align 8, !tbaa !9
  %317 = getelementptr inbounds double, ptr %315, i64 %316
  store double %314, ptr %317, align 8, !tbaa !11
  %318 = load ptr, ptr %24, align 8, !tbaa !5
  %319 = load i64, ptr %40, align 8, !tbaa !9
  %320 = getelementptr inbounds double, ptr %318, i64 %319
  store double 0.000000e+00, ptr %320, align 8, !tbaa !11
  br label %321

321:                                              ; preds = %306
  %322 = load i64, ptr %40, align 8, !tbaa !9
  %323 = add nsw i64 %322, 1
  store i64 %323, ptr %40, align 8, !tbaa !9
  br label %302, !llvm.loop !13

324:                                              ; preds = %302
  %325 = load ptr, ptr %18, align 8, !tbaa !5
  %326 = load i64, ptr %325, align 8, !tbaa !9
  store i64 %326, ptr %35, align 8, !tbaa !9
  %327 = load ptr, ptr %20, align 8, !tbaa !5
  %328 = load i64, ptr %327, align 8, !tbaa !9
  %329 = add nsw i64 %328, 1
  store i64 %329, ptr %40, align 8, !tbaa !9
  br label %330

330:                                              ; preds = %349, %324
  %331 = load i64, ptr %40, align 8, !tbaa !9
  %332 = load i64, ptr %35, align 8, !tbaa !9
  %333 = icmp sle i64 %331, %332
  br i1 %333, label %334, label %352

334:                                              ; preds = %330
  %335 = load ptr, ptr %21, align 8, !tbaa !5
  %336 = load i64, ptr %40, align 8, !tbaa !9
  %337 = load i64, ptr %40, align 8, !tbaa !9
  %338 = load i64, ptr %31, align 8, !tbaa !9
  %339 = mul nsw i64 %337, %338
  %340 = add nsw i64 %336, %339
  %341 = getelementptr inbounds double, ptr %335, i64 %340
  %342 = load double, ptr %341, align 8, !tbaa !11
  %343 = load ptr, ptr %23, align 8, !tbaa !5
  %344 = load i64, ptr %40, align 8, !tbaa !9
  %345 = getelementptr inbounds double, ptr %343, i64 %344
  store double %342, ptr %345, align 8, !tbaa !11
  %346 = load ptr, ptr %24, align 8, !tbaa !5
  %347 = load i64, ptr %40, align 8, !tbaa !9
  %348 = getelementptr inbounds double, ptr %346, i64 %347
  store double 0.000000e+00, ptr %348, align 8, !tbaa !11
  br label %349

349:                                              ; preds = %334
  %350 = load i64, ptr %40, align 8, !tbaa !9
  %351 = add nsw i64 %350, 1
  store i64 %351, ptr %40, align 8, !tbaa !9
  br label %330, !llvm.loop !15

352:                                              ; preds = %330
  %353 = load i64, ptr %44, align 8, !tbaa !9
  %354 = icmp ne i64 %353, 0
  br i1 %354, label %355, label %363

355:                                              ; preds = %352
  %356 = load ptr, ptr %18, align 8, !tbaa !5
  %357 = load ptr, ptr %18, align 8, !tbaa !5
  %358 = load ptr, ptr %25, align 8, !tbaa !5
  %359 = load i64, ptr %34, align 8, !tbaa !9
  %360 = getelementptr inbounds double, ptr %358, i64 %359
  %361 = load ptr, ptr %26, align 8, !tbaa !5
  %362 = call i32 @dlaset_(ptr noundef @.str.6, ptr noundef %356, ptr noundef %357, ptr noundef @c_b11, ptr noundef @c_b12, ptr noundef %360, ptr noundef %361)
  br label %363

363:                                              ; preds = %355, %352
  %364 = load ptr, ptr %19, align 8, !tbaa !5
  %365 = load i64, ptr %364, align 8, !tbaa !9
  %366 = load ptr, ptr %20, align 8, !tbaa !5
  %367 = load i64, ptr %366, align 8, !tbaa !9
  %368 = icmp eq i64 %365, %367
  br i1 %368, label %369, label %388

369:                                              ; preds = %363
  %370 = load ptr, ptr %21, align 8, !tbaa !5
  %371 = load ptr, ptr %19, align 8, !tbaa !5
  %372 = load i64, ptr %371, align 8, !tbaa !9
  %373 = load ptr, ptr %19, align 8, !tbaa !5
  %374 = load i64, ptr %373, align 8, !tbaa !9
  %375 = load i64, ptr %31, align 8, !tbaa !9
  %376 = mul nsw i64 %374, %375
  %377 = add nsw i64 %372, %376
  %378 = getelementptr inbounds double, ptr %370, i64 %377
  %379 = load double, ptr %378, align 8, !tbaa !11
  %380 = load ptr, ptr %23, align 8, !tbaa !5
  %381 = load ptr, ptr %19, align 8, !tbaa !5
  %382 = load i64, ptr %381, align 8, !tbaa !9
  %383 = getelementptr inbounds double, ptr %380, i64 %382
  store double %379, ptr %383, align 8, !tbaa !11
  %384 = load ptr, ptr %24, align 8, !tbaa !5
  %385 = load ptr, ptr %19, align 8, !tbaa !5
  %386 = load i64, ptr %385, align 8, !tbaa !9
  %387 = getelementptr inbounds double, ptr %384, i64 %386
  store double 0.000000e+00, ptr %387, align 8, !tbaa !11
  store i32 0, ptr %15, align 4
  store i32 1, ptr %49, align 4
  br label %604

388:                                              ; preds = %363
  %389 = getelementptr inbounds [2 x i64], ptr %36, i64 0, i64 0
  store i64 1, ptr %389, align 16, !tbaa !9
  %390 = load ptr, ptr %16, align 8, !tbaa !5
  %391 = getelementptr inbounds [2 x ptr], ptr %30, i64 0, i64 0
  store ptr %390, ptr %391, align 16, !tbaa !5
  %392 = getelementptr inbounds [2 x i64], ptr %36, i64 0, i64 1
  store i64 1, ptr %392, align 8, !tbaa !9
  %393 = load ptr, ptr %17, align 8, !tbaa !5
  %394 = getelementptr inbounds [2 x ptr], ptr %30, i64 0, i64 1
  store ptr %393, ptr %394, align 8, !tbaa !5
  %395 = getelementptr inbounds [2 x i8], ptr %39, i64 0, i64 0
  %396 = getelementptr inbounds [2 x ptr], ptr %30, i64 0, i64 0
  %397 = getelementptr inbounds [2 x i64], ptr %36, i64 0, i64 0
  %398 = call i32 @s_cat(ptr noundef %395, ptr noundef %396, ptr noundef %397, ptr noundef @c__2, i64 noundef 2)
  %399 = getelementptr inbounds [2 x i8], ptr %39, i64 0, i64 0
  %400 = load ptr, ptr %18, align 8, !tbaa !5
  %401 = load ptr, ptr %19, align 8, !tbaa !5
  %402 = load ptr, ptr %20, align 8, !tbaa !5
  %403 = load ptr, ptr %28, align 8, !tbaa !5
  %404 = call i64 @ilaenv_(ptr noundef @c__12, ptr noundef @.str.5, ptr noundef %399, ptr noundef %400, ptr noundef %401, ptr noundef %402, ptr noundef %403)
  store i64 %404, ptr %43, align 8, !tbaa !9
  %405 = load i64, ptr %43, align 8, !tbaa !9
  %406 = icmp sge i64 11, %405
  br i1 %406, label %407, label %408

407:                                              ; preds = %388
  br label %410

408:                                              ; preds = %388
  %409 = load i64, ptr %43, align 8, !tbaa !9
  br label %410

410:                                              ; preds = %408, %407
  %411 = phi i64 [ 11, %407 ], [ %409, %408 ]
  store i64 %411, ptr %43, align 8, !tbaa !9
  %412 = load ptr, ptr %18, align 8, !tbaa !5
  %413 = load i64, ptr %412, align 8, !tbaa !9
  %414 = load i64, ptr %43, align 8, !tbaa !9
  %415 = icmp sgt i64 %413, %414
  br i1 %415, label %416, label %439

416:                                              ; preds = %410
  %417 = load ptr, ptr %18, align 8, !tbaa !5
  %418 = load ptr, ptr %19, align 8, !tbaa !5
  %419 = load ptr, ptr %20, align 8, !tbaa !5
  %420 = load ptr, ptr %21, align 8, !tbaa !5
  %421 = load i64, ptr %32, align 8, !tbaa !9
  %422 = getelementptr inbounds double, ptr %420, i64 %421
  %423 = load ptr, ptr %22, align 8, !tbaa !5
  %424 = load ptr, ptr %23, align 8, !tbaa !5
  %425 = getelementptr inbounds double, ptr %424, i64 1
  %426 = load ptr, ptr %24, align 8, !tbaa !5
  %427 = getelementptr inbounds double, ptr %426, i64 1
  %428 = load ptr, ptr %19, align 8, !tbaa !5
  %429 = load ptr, ptr %20, align 8, !tbaa !5
  %430 = load ptr, ptr %25, align 8, !tbaa !5
  %431 = load i64, ptr %34, align 8, !tbaa !9
  %432 = getelementptr inbounds double, ptr %430, i64 %431
  %433 = load ptr, ptr %26, align 8, !tbaa !5
  %434 = load ptr, ptr %27, align 8, !tbaa !5
  %435 = getelementptr inbounds double, ptr %434, i64 1
  %436 = load ptr, ptr %28, align 8, !tbaa !5
  %437 = load ptr, ptr %29, align 8, !tbaa !5
  %438 = call i32 @dlaqr0_(ptr noundef %46, ptr noundef %47, ptr noundef %417, ptr noundef %418, ptr noundef %419, ptr noundef %422, ptr noundef %423, ptr noundef %425, ptr noundef %427, ptr noundef %428, ptr noundef %429, ptr noundef %432, ptr noundef %433, ptr noundef %435, ptr noundef %436, ptr noundef %437)
  br label %551

439:                                              ; preds = %410
  %440 = load ptr, ptr %18, align 8, !tbaa !5
  %441 = load ptr, ptr %19, align 8, !tbaa !5
  %442 = load ptr, ptr %20, align 8, !tbaa !5
  %443 = load ptr, ptr %21, align 8, !tbaa !5
  %444 = load i64, ptr %32, align 8, !tbaa !9
  %445 = getelementptr inbounds double, ptr %443, i64 %444
  %446 = load ptr, ptr %22, align 8, !tbaa !5
  %447 = load ptr, ptr %23, align 8, !tbaa !5
  %448 = getelementptr inbounds double, ptr %447, i64 1
  %449 = load ptr, ptr %24, align 8, !tbaa !5
  %450 = getelementptr inbounds double, ptr %449, i64 1
  %451 = load ptr, ptr %19, align 8, !tbaa !5
  %452 = load ptr, ptr %20, align 8, !tbaa !5
  %453 = load ptr, ptr %25, align 8, !tbaa !5
  %454 = load i64, ptr %34, align 8, !tbaa !9
  %455 = getelementptr inbounds double, ptr %453, i64 %454
  %456 = load ptr, ptr %26, align 8, !tbaa !5
  %457 = load ptr, ptr %29, align 8, !tbaa !5
  %458 = call i32 @dlahqr_(ptr noundef %46, ptr noundef %47, ptr noundef %440, ptr noundef %441, ptr noundef %442, ptr noundef %445, ptr noundef %446, ptr noundef %448, ptr noundef %450, ptr noundef %451, ptr noundef %452, ptr noundef %455, ptr noundef %456, ptr noundef %457)
  %459 = load ptr, ptr %29, align 8, !tbaa !5
  %460 = load i64, ptr %459, align 8, !tbaa !9
  %461 = icmp sgt i64 %460, 0
  br i1 %461, label %462, label %550

462:                                              ; preds = %439
  %463 = load ptr, ptr %29, align 8, !tbaa !5
  %464 = load i64, ptr %463, align 8, !tbaa !9
  store i64 %464, ptr %42, align 8, !tbaa !9
  %465 = load ptr, ptr %18, align 8, !tbaa !5
  %466 = load i64, ptr %465, align 8, !tbaa !9
  %467 = icmp sge i64 %466, 49
  br i1 %467, label %468, label %490

468:                                              ; preds = %462
  %469 = load ptr, ptr %18, align 8, !tbaa !5
  %470 = load ptr, ptr %19, align 8, !tbaa !5
  %471 = load ptr, ptr %21, align 8, !tbaa !5
  %472 = load i64, ptr %32, align 8, !tbaa !9
  %473 = getelementptr inbounds double, ptr %471, i64 %472
  %474 = load ptr, ptr %22, align 8, !tbaa !5
  %475 = load ptr, ptr %23, align 8, !tbaa !5
  %476 = getelementptr inbounds double, ptr %475, i64 1
  %477 = load ptr, ptr %24, align 8, !tbaa !5
  %478 = getelementptr inbounds double, ptr %477, i64 1
  %479 = load ptr, ptr %19, align 8, !tbaa !5
  %480 = load ptr, ptr %20, align 8, !tbaa !5
  %481 = load ptr, ptr %25, align 8, !tbaa !5
  %482 = load i64, ptr %34, align 8, !tbaa !9
  %483 = getelementptr inbounds double, ptr %481, i64 %482
  %484 = load ptr, ptr %26, align 8, !tbaa !5
  %485 = load ptr, ptr %27, align 8, !tbaa !5
  %486 = getelementptr inbounds double, ptr %485, i64 1
  %487 = load ptr, ptr %28, align 8, !tbaa !5
  %488 = load ptr, ptr %29, align 8, !tbaa !5
  %489 = call i32 @dlaqr0_(ptr noundef %46, ptr noundef %47, ptr noundef %469, ptr noundef %470, ptr noundef %42, ptr noundef %473, ptr noundef %474, ptr noundef %476, ptr noundef %478, ptr noundef %479, ptr noundef %480, ptr noundef %483, ptr noundef %484, ptr noundef %486, ptr noundef %487, ptr noundef %488)
  br label %549

490:                                              ; preds = %462
  %491 = load ptr, ptr %18, align 8, !tbaa !5
  %492 = load ptr, ptr %18, align 8, !tbaa !5
  %493 = load ptr, ptr %21, align 8, !tbaa !5
  %494 = load i64, ptr %32, align 8, !tbaa !9
  %495 = getelementptr inbounds double, ptr %493, i64 %494
  %496 = load ptr, ptr %22, align 8, !tbaa !5
  %497 = getelementptr inbounds [2401 x double], ptr %41, i64 0, i64 0
  %498 = call i32 @dlacpy_(ptr noundef @.str.6, ptr noundef %491, ptr noundef %492, ptr noundef %495, ptr noundef %496, ptr noundef %497, ptr noundef @c__49)
  %499 = load ptr, ptr %18, align 8, !tbaa !5
  %500 = load i64, ptr %499, align 8, !tbaa !9
  %501 = add nsw i64 %500, 1
  %502 = load ptr, ptr %18, align 8, !tbaa !5
  %503 = load i64, ptr %502, align 8, !tbaa !9
  %504 = mul nsw i64 %503, 49
  %505 = add nsw i64 %501, %504
  %506 = sub nsw i64 %505, 50
  %507 = getelementptr inbounds [2401 x double], ptr %41, i64 0, i64 %506
  store double 0.000000e+00, ptr %507, align 8, !tbaa !11
  %508 = load ptr, ptr %18, align 8, !tbaa !5
  %509 = load i64, ptr %508, align 8, !tbaa !9
  %510 = sub nsw i64 49, %509
  store i64 %510, ptr %35, align 8, !tbaa !9
  %511 = load ptr, ptr %18, align 8, !tbaa !5
  %512 = load i64, ptr %511, align 8, !tbaa !9
  %513 = add nsw i64 %512, 1
  %514 = mul nsw i64 %513, 49
  %515 = sub nsw i64 %514, 49
  %516 = getelementptr inbounds [2401 x double], ptr %41, i64 0, i64 %515
  %517 = call i32 @dlaset_(ptr noundef @.str.6, ptr noundef @c__49, ptr noundef %35, ptr noundef @c_b11, ptr noundef @c_b11, ptr noundef %516, ptr noundef @c__49)
  %518 = load ptr, ptr %19, align 8, !tbaa !5
  %519 = getelementptr inbounds [2401 x double], ptr %41, i64 0, i64 0
  %520 = load ptr, ptr %23, align 8, !tbaa !5
  %521 = getelementptr inbounds double, ptr %520, i64 1
  %522 = load ptr, ptr %24, align 8, !tbaa !5
  %523 = getelementptr inbounds double, ptr %522, i64 1
  %524 = load ptr, ptr %19, align 8, !tbaa !5
  %525 = load ptr, ptr %20, align 8, !tbaa !5
  %526 = load ptr, ptr %25, align 8, !tbaa !5
  %527 = load i64, ptr %34, align 8, !tbaa !9
  %528 = getelementptr inbounds double, ptr %526, i64 %527
  %529 = load ptr, ptr %26, align 8, !tbaa !5
  %530 = getelementptr inbounds [49 x double], ptr %45, i64 0, i64 0
  %531 = load ptr, ptr %29, align 8, !tbaa !5
  %532 = call i32 @dlaqr0_(ptr noundef %46, ptr noundef %47, ptr noundef @c__49, ptr noundef %518, ptr noundef %42, ptr noundef %519, ptr noundef @c__49, ptr noundef %521, ptr noundef %523, ptr noundef %524, ptr noundef %525, ptr noundef %528, ptr noundef %529, ptr noundef %530, ptr noundef @c__49, ptr noundef %531)
  %533 = load i64, ptr %46, align 8, !tbaa !9
  %534 = icmp ne i64 %533, 0
  br i1 %534, label %539, label %535

535:                                              ; preds = %490
  %536 = load ptr, ptr %29, align 8, !tbaa !5
  %537 = load i64, ptr %536, align 8, !tbaa !9
  %538 = icmp ne i64 %537, 0
  br i1 %538, label %539, label %548

539:                                              ; preds = %535, %490
  %540 = load ptr, ptr %18, align 8, !tbaa !5
  %541 = load ptr, ptr %18, align 8, !tbaa !5
  %542 = getelementptr inbounds [2401 x double], ptr %41, i64 0, i64 0
  %543 = load ptr, ptr %21, align 8, !tbaa !5
  %544 = load i64, ptr %32, align 8, !tbaa !9
  %545 = getelementptr inbounds double, ptr %543, i64 %544
  %546 = load ptr, ptr %22, align 8, !tbaa !5
  %547 = call i32 @dlacpy_(ptr noundef @.str.6, ptr noundef %540, ptr noundef %541, ptr noundef %542, ptr noundef @c__49, ptr noundef %545, ptr noundef %546)
  br label %548

548:                                              ; preds = %539, %535
  br label %549

549:                                              ; preds = %548, %468
  br label %550

550:                                              ; preds = %549, %439
  br label %551

551:                                              ; preds = %550, %416
  %552 = load i64, ptr %46, align 8, !tbaa !9
  %553 = icmp ne i64 %552, 0
  br i1 %553, label %558, label %554

554:                                              ; preds = %551
  %555 = load ptr, ptr %29, align 8, !tbaa !5
  %556 = load i64, ptr %555, align 8, !tbaa !9
  %557 = icmp ne i64 %556, 0
  br i1 %557, label %558, label %575

558:                                              ; preds = %554, %551
  %559 = load ptr, ptr %18, align 8, !tbaa !5
  %560 = load i64, ptr %559, align 8, !tbaa !9
  %561 = icmp sgt i64 %560, 2
  br i1 %561, label %562, label %575

562:                                              ; preds = %558
  %563 = load ptr, ptr %18, align 8, !tbaa !5
  %564 = load i64, ptr %563, align 8, !tbaa !9
  %565 = sub nsw i64 %564, 2
  store i64 %565, ptr %35, align 8, !tbaa !9
  %566 = load ptr, ptr %18, align 8, !tbaa !5
  %567 = load i64, ptr %566, align 8, !tbaa !9
  %568 = sub nsw i64 %567, 2
  store i64 %568, ptr %37, align 8, !tbaa !9
  %569 = load ptr, ptr %21, align 8, !tbaa !5
  %570 = load i64, ptr %31, align 8, !tbaa !9
  %571 = add nsw i64 %570, 3
  %572 = getelementptr inbounds double, ptr %569, i64 %571
  %573 = load ptr, ptr %22, align 8, !tbaa !5
  %574 = call i32 @dlaset_(ptr noundef @.str.7, ptr noundef %35, ptr noundef %37, ptr noundef @c_b11, ptr noundef @c_b11, ptr noundef %572, ptr noundef %573)
  br label %575

575:                                              ; preds = %562, %558, %554
  %576 = load ptr, ptr %18, align 8, !tbaa !5
  %577 = load i64, ptr %576, align 8, !tbaa !9
  %578 = icmp sge i64 1, %577
  br i1 %578, label %579, label %580

579:                                              ; preds = %575
  br label %583

580:                                              ; preds = %575
  %581 = load ptr, ptr %18, align 8, !tbaa !5
  %582 = load i64, ptr %581, align 8, !tbaa !9
  br label %583

583:                                              ; preds = %580, %579
  %584 = phi i64 [ 1, %579 ], [ %582, %580 ]
  %585 = sitofp i64 %584 to double
  store double %585, ptr %38, align 8, !tbaa !11
  %586 = load double, ptr %38, align 8, !tbaa !11
  %587 = load ptr, ptr %27, align 8, !tbaa !5
  %588 = getelementptr inbounds double, ptr %587, i64 1
  %589 = load double, ptr %588, align 8, !tbaa !11
  %590 = fcmp oge double %586, %589
  br i1 %590, label %591, label %593

591:                                              ; preds = %583
  %592 = load double, ptr %38, align 8, !tbaa !11
  br label %597

593:                                              ; preds = %583
  %594 = load ptr, ptr %27, align 8, !tbaa !5
  %595 = getelementptr inbounds double, ptr %594, i64 1
  %596 = load double, ptr %595, align 8, !tbaa !11
  br label %597

597:                                              ; preds = %593, %591
  %598 = phi double [ %592, %591 ], [ %596, %593 ]
  %599 = load ptr, ptr %27, align 8, !tbaa !5
  %600 = getelementptr inbounds double, ptr %599, i64 1
  store double %598, ptr %600, align 8, !tbaa !11
  br label %601

601:                                              ; preds = %597
  br label %602

602:                                              ; preds = %601
  br label %603

603:                                              ; preds = %602
  store i32 0, ptr %15, align 4
  store i32 1, ptr %49, align 4
  br label %604

604:                                              ; preds = %603, %369, %294, %246, %237
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 392, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 19208, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 2, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %30) #3
  %605 = load i32, ptr %15, align 4
  ret i32 %605
}

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

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

declare i32 @s_cat(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef) #2

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

declare i32 @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 i32 @dlacpy_(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 }

!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 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !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 global i64, align 8
@c__12 = external hidden global i64, align 8
@c__49 = external hidden global i64, align 8
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1

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

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

35:                                               ; preds = %32, %14
  %36 = phi i1 [ true, %14 ], [ %34, %32 ]
  %37 = zext i1 %36 to i64
  store i64 %37, ptr %24, align 8, !tbaa !5
  %38 = load i64, ptr %2, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.smax.i64(i64 %38, i64 1)
  %39 = uitofp nneg i64 %spec.select to double
  store double %39, ptr %11, align 8, !tbaa !9
  %40 = load i64, ptr %12, align 8, !tbaa !5
  %41 = icmp eq i64 %40, -1
  store i64 0, ptr %13, align 8, !tbaa !5
  %42 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.3) #4
  %43 = icmp ne i64 %42, 0
  %44 = icmp ne i64 %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 i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #4
  %47 = icmp ne i64 %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 i64, ptr %2, align 8, !tbaa !5
  %50 = icmp slt i64 %49, 0
  br i1 %50, label %.thread.sink.split, label %51

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

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

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

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

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

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

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

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

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

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

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

77:                                               ; preds = %76
  %78 = call i32 @dlaqr0_(ptr noundef nonnull %23, ptr noundef nonnull %24, 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) #4
  %79 = load i64, ptr %2, align 8, !tbaa !5
  %80 = icmp slt i64 %79, 2
  %81 = uitofp nneg i64 %79 to double
  %82 = select i1 %80, double 1.000000e+00, double %81
  %83 = load double, ptr %11, align 8, !tbaa !9
  %.inv263 = fcmp oge double %82, %83
  %84 = select i1 %.inv263, double %82, double %83
  store double %84, ptr %11, align 8, !tbaa !9
  br label %188

85:                                               ; preds = %76
  %.not242.not264.not = icmp eq i64 %52, 1
  br i1 %.not242.not264.not, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %85
  %86 = add i64 %25, 1
  %87 = add nsw i64 %52, -1
  %xtraiter = and i64 %87, 1
  %88 = icmp eq i64 %52, 2
  br i1 %88, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph.new

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

89:                                               ; preds = %89, %.lr.ph.new
  %.0220265 = phi i64 [ 1, %.lr.ph.new ], [ %101, %89 ]
  %niter = phi i64 [ 0, %.lr.ph.new ], [ %niter.next.1, %89 ]
  %90 = mul i64 %.0220265, %86
  %91 = getelementptr inbounds double, ptr %27, i64 %90
  %92 = load double, ptr %91, align 8, !tbaa !9
  %93 = getelementptr inbounds double, ptr %28, i64 %.0220265
  store double %92, ptr %93, align 8, !tbaa !9
  %94 = getelementptr inbounds double, ptr %29, i64 %.0220265
  store double 0.000000e+00, ptr %94, align 8, !tbaa !9
  %95 = add nuw nsw i64 %.0220265, 1
  %96 = mul i64 %95, %86
  %97 = getelementptr inbounds double, ptr %27, i64 %96
  %98 = load double, ptr %97, align 8, !tbaa !9
  %99 = getelementptr double, ptr %7, i64 %.0220265
  store double %98, ptr %99, align 8, !tbaa !9
  %100 = getelementptr double, ptr %8, i64 %.0220265
  store double 0.000000e+00, ptr %100, align 8, !tbaa !9
  %101 = add nuw nsw i64 %.0220265, 2
  %niter.next.1 = add nuw 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 %89, !llvm.loop !11

._crit_edge.loopexit.unr-lcssa:                   ; preds = %89, %.lr.ph
  %.0220265.unr = phi i64 [ 1, %.lr.ph ], [ %101, %89 ]
  %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
  %102 = mul i64 %.0220265.unr, %86
  %103 = getelementptr inbounds double, ptr %27, i64 %102
  %104 = load double, ptr %103, align 8, !tbaa !9
  %105 = getelementptr inbounds double, ptr %28, i64 %.0220265.unr
  store double %104, ptr %105, align 8, !tbaa !9
  %106 = getelementptr inbounds double, ptr %29, i64 %.0220265.unr
  store double 0.000000e+00, ptr %106, align 8, !tbaa !9
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit.epilog-lcssa, %._crit_edge.loopexit.unr-lcssa, %85
  store i64 %49, ptr %16, align 8, !tbaa !5
  %.not243.not266 = icmp slt i64 %57, %49
  br i1 %.not243.not266, label %.lr.ph269, label %._crit_edge270

.lr.ph269:                                        ; preds = %._crit_edge
  %107 = add i64 %25, 1
  %108 = sub i64 %49, %57
  %.neg = add i64 %57, 1
  %xtraiter274 = and i64 %108, 1
  %lcmp.mod275.not = icmp eq i64 %xtraiter274, 0
  br i1 %lcmp.mod275.not, label %.prol.loopexit, label %.prol.loopexit.unr-lcssa

.prol.loopexit.unr-lcssa:                         ; preds = %.lr.ph269
  %.1.prol = add nsw i64 %57, 1
  %109 = mul i64 %.1.prol, %107
  %110 = getelementptr inbounds double, ptr %27, i64 %109
  %111 = load double, ptr %110, align 8, !tbaa !9
  %112 = getelementptr double, ptr %7, i64 %57
  store double %111, ptr %112, align 8, !tbaa !9
  %113 = getelementptr double, ptr %8, i64 %57
  store double 0.000000e+00, ptr %113, align 8, !tbaa !9
  br label %.prol.loopexit

.prol.loopexit:                                   ; preds = %.prol.loopexit.unr-lcssa, %.lr.ph269
  %.1.in267.unr = phi i64 [ %57, %.lr.ph269 ], [ %.1.prol, %.prol.loopexit.unr-lcssa ]
  %114 = icmp eq i64 %49, %.neg
  br i1 %114, label %._crit_edge270, label %.lr.ph269.new

.lr.ph269.new:                                    ; preds = %.prol.loopexit, %.lr.ph269.new
  %.1.in267 = phi i64 [ %.1.1, %.lr.ph269.new ], [ %.1.in267.unr, %.prol.loopexit ]
  %.1 = add nsw i64 %.1.in267, 1
  %115 = mul i64 %.1, %107
  %116 = getelementptr inbounds double, ptr %27, i64 %115
  %117 = load double, ptr %116, align 8, !tbaa !9
  %118 = getelementptr double, ptr %7, i64 %.1.in267
  store double %117, ptr %118, align 8, !tbaa !9
  %119 = getelementptr double, ptr %8, i64 %.1.in267
  store double 0.000000e+00, ptr %119, align 8, !tbaa !9
  %.1.1 = add nsw i64 %.1.in267, 2
  %120 = mul i64 %.1.1, %107
  %121 = getelementptr inbounds double, ptr %27, i64 %120
  %122 = load double, ptr %121, align 8, !tbaa !9
  %123 = getelementptr double, ptr %7, i64 %.1
  store double %122, ptr %123, align 8, !tbaa !9
  %124 = getelementptr double, ptr %8, i64 %.1
  store double 0.000000e+00, ptr %124, align 8, !tbaa !9
  %exitcond271.not.1 = icmp eq i64 %.1.1, %49
  br i1 %exitcond271.not.1, label %._crit_edge270, label %.lr.ph269.new, !llvm.loop !13

._crit_edge270:                                   ; preds = %.prol.loopexit, %.lr.ph269.new, %._crit_edge
  br i1 %.not, label %127, label %125

125:                                              ; preds = %._crit_edge270
  %126 = tail call i32 @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) #4
  %.pre = load i64, ptr %3, align 8, !tbaa !5
  %.pre272 = load i64, ptr %4, align 8, !tbaa !5
  br label %127

127:                                              ; preds = %125, %._crit_edge270
  %128 = phi i64 [ %.pre272, %125 ], [ %57, %._crit_edge270 ]
  %129 = phi i64 [ %.pre, %125 ], [ %52, %._crit_edge270 ]
  %130 = icmp eq i64 %129, %128
  br i1 %130, label %131, label %138

131:                                              ; preds = %127
  %132 = add i64 %25, 1
  %133 = mul i64 %128, %132
  %134 = getelementptr inbounds double, ptr %27, i64 %133
  %135 = load double, ptr %134, align 8, !tbaa !9
  %136 = getelementptr inbounds double, ptr %28, i64 %128
  store double %135, ptr %136, align 8, !tbaa !9
  %137 = getelementptr inbounds double, ptr %29, i64 %128
  store double 0.000000e+00, ptr %137, align 8, !tbaa !9
  br label %188

138:                                              ; preds = %127
  store i64 1, ptr %17, align 16, !tbaa !5
  store ptr %0, ptr %15, align 16, !tbaa !14
  %139 = getelementptr inbounds i8, ptr %17, i64 8
  store i64 1, ptr %139, align 8, !tbaa !5
  %140 = getelementptr inbounds i8, ptr %15, i64 8
  store ptr %1, ptr %140, align 8, !tbaa !14
  %141 = call i32 @s_cat(ptr noundef nonnull %19, ptr noundef nonnull %15, ptr noundef nonnull %17, ptr noundef nonnull @c__2, i64 noundef 2) #4
  %142 = call i64 @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) #4
  %143 = call i64 @llvm.smax.i64(i64 %142, i64 11)
  %144 = load i64, ptr %2, align 8, !tbaa !5
  %145 = icmp sgt i64 %144, %143
  br i1 %145, label %146, label %148

146:                                              ; preds = %138
  %147 = call i32 @dlaqr0_(ptr noundef nonnull %23, ptr noundef nonnull %24, 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) #4
  br label %173

148:                                              ; preds = %138
  %149 = call i32 @dlahqr_(ptr noundef nonnull %23, ptr noundef nonnull %24, 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) #4
  %150 = load i64, ptr %13, align 8, !tbaa !5
  %151 = icmp sgt i64 %150, 0
  br i1 %151, label %152, label %173

152:                                              ; preds = %148
  store i64 %150, ptr %21, align 8, !tbaa !5
  %153 = load i64, ptr %2, align 8, !tbaa !5
  %154 = icmp sgt i64 %153, 48
  br i1 %154, label %155, label %157

155:                                              ; preds = %152
  %156 = call i32 @dlaqr0_(ptr noundef nonnull %23, ptr noundef nonnull %24, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %21, 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) #4
  br label %173

157:                                              ; preds = %152
  %158 = call i32 @dlacpy_(ptr noundef nonnull @.str.6, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %20, ptr noundef nonnull @c__49) #4
  %159 = load i64, ptr %2, align 8, !tbaa !5
  %160 = mul nsw i64 %159, 49
  %161 = add i64 %159, -49
  %162 = add i64 %161, %160
  %163 = getelementptr inbounds [2401 x double], ptr %20, i64 0, i64 %162
  store double 0.000000e+00, ptr %163, align 8, !tbaa !9
  %164 = sub nsw i64 49, %159
  store i64 %164, ptr %16, align 8, !tbaa !5
  %165 = getelementptr inbounds [2401 x double], ptr %20, i64 0, i64 %160
  %166 = call i32 @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 %165, ptr noundef nonnull @c__49) #4
  %167 = call i32 @dlaqr0_(ptr noundef nonnull %23, ptr noundef nonnull %24, ptr noundef nonnull @c__49, ptr noundef nonnull %3, ptr noundef nonnull %21, ptr noundef nonnull %20, 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 %22, ptr noundef nonnull @c__49, ptr noundef nonnull %13) #4
  %168 = load i64, ptr %23, align 8, !tbaa !5
  %.not244 = icmp eq i64 %168, 0
  br i1 %.not244, label %169, label %171

169:                                              ; preds = %157
  %170 = load i64, ptr %13, align 8, !tbaa !5
  %.not245 = icmp eq i64 %170, 0
  br i1 %.not245, label %.thread259, label %171

171:                                              ; preds = %169, %157
  %172 = call i32 @dlacpy_(ptr noundef nonnull @.str.6, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull %20, ptr noundef nonnull @c__49, ptr noundef %5, ptr noundef nonnull %6) #4
  br label %173

173:                                              ; preds = %148, %171, %155, %146
  %.pr254 = load i64, ptr %23, align 8, !tbaa !5
  %.not246 = icmp eq i64 %.pr254, 0
  br i1 %.not246, label %174, label %175

174:                                              ; preds = %173
  %.pr258 = load i64, ptr %13, align 8, !tbaa !5
  %.not247 = icmp eq i64 %.pr258, 0
  br i1 %.not247, label %.thread259, label %175

175:                                              ; preds = %174, %173
  %176 = load i64, ptr %2, align 8, !tbaa !5
  %177 = icmp sgt i64 %176, 2
  br i1 %177, label %178, label %.thread259

178:                                              ; preds = %175
  %179 = add nsw i64 %176, -2
  store i64 %179, ptr %16, align 8, !tbaa !5
  store i64 %179, ptr %18, align 8, !tbaa !5
  %180 = getelementptr inbounds i8, ptr %5, i64 16
  %181 = call i32 @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 nonnull %180, ptr noundef nonnull %6) #4
  br label %.thread259

.thread259:                                       ; preds = %169, %178, %175, %174
  %182 = load i64, ptr %2, align 8, !tbaa !5
  %183 = icmp slt i64 %182, 2
  %184 = uitofp nneg i64 %182 to double
  %185 = select i1 %183, double 1.000000e+00, double %184
  %186 = load double, ptr %11, align 8, !tbaa !9
  %.inv = fcmp oge double %185, %186
  %187 = select i1 %.inv, double %185, double %186
  store double %187, ptr %11, align 8, !tbaa !9
  br label %188

188:                                              ; preds = %74, %.thread259, %131, %77, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #4
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %22) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #4
  call void @llvm.lifetime.end.p0(i64 19208, ptr nonnull %20) #4
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %19) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #4
  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 i32 @xerbla_(ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare i32 @s_cat(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 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 @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 i32 @dlacpy_(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) #3

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

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

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 = { 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 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = !{!15, !15, i64 0}
!15 = !{!"any pointer", !7, i64 0}


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