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

; 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"

%struct.complex = type { float, float }

@.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
@c__1 = external hidden global i32, align 4
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b1 = external hidden global %struct.complex, align 4
@c_b2 = external hidden global %struct.complex, align 4
@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 @chseqr_(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) #0 {
  %14 = alloca ptr, align 8
  %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 [2 x ptr], align 16
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca [2 x i32], align 4
  %35 = alloca float, align 4
  %36 = alloca float, align 4
  %37 = alloca float, align 4
  %38 = alloca %struct.complex, align 4
  %39 = alloca [2 x i8], align 1
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca [49 x %struct.complex], align 16
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca [2401 x %struct.complex], 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 %14, align 8, !tbaa !5
  store ptr %1, ptr %15, align 8, !tbaa !5
  store ptr %2, ptr %16, align 8, !tbaa !5
  store ptr %3, ptr %17, align 8, !tbaa !5
  store ptr %4, ptr %18, align 8, !tbaa !5
  store ptr %5, ptr %19, align 8, !tbaa !5
  store ptr %6, ptr %20, align 8, !tbaa !5
  store ptr %7, ptr %21, align 8, !tbaa !5
  store ptr %8, ptr %22, align 8, !tbaa !5
  store ptr %9, ptr %23, align 8, !tbaa !5
  store ptr %10, ptr %24, align 8, !tbaa !5
  store ptr %11, ptr %25, align 8, !tbaa !5
  store ptr %12, ptr %26, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %27) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #3
  call void @llvm.lifetime.start.p0(i64 4, 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 8, ptr %34) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #3
  call void @llvm.lifetime.start.p0(i64 4, 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 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 %20, align 8, !tbaa !5
  %55 = load i32, ptr %54, align 4, !tbaa !9
  store i32 %55, ptr %28, align 4, !tbaa !9
  %56 = load i32, ptr %28, align 4, !tbaa !9
  %57 = mul nsw i32 %56, 1
  %58 = add nsw i32 1, %57
  store i32 %58, ptr %29, align 4, !tbaa !9
  %59 = load i32, ptr %29, align 4, !tbaa !9
  %60 = load ptr, ptr %19, align 8, !tbaa !5
  %61 = sext i32 %59 to i64
  %62 = sub i64 0, %61
  %63 = getelementptr inbounds %struct.complex, ptr %60, i64 %62
  store ptr %63, ptr %19, align 8, !tbaa !5
  %64 = load ptr, ptr %21, align 8, !tbaa !5
  %65 = getelementptr inbounds %struct.complex, ptr %64, i32 -1
  store ptr %65, ptr %21, align 8, !tbaa !5
  %66 = load ptr, ptr %23, align 8, !tbaa !5
  %67 = load i32, ptr %66, align 4, !tbaa !9
  store i32 %67, ptr %30, align 4, !tbaa !9
  %68 = load i32, ptr %30, align 4, !tbaa !9
  %69 = mul nsw i32 %68, 1
  %70 = add nsw i32 1, %69
  store i32 %70, ptr %31, align 4, !tbaa !9
  %71 = load i32, ptr %31, align 4, !tbaa !9
  %72 = load ptr, ptr %22, align 8, !tbaa !5
  %73 = sext i32 %71 to i64
  %74 = sub i64 0, %73
  %75 = getelementptr inbounds %struct.complex, ptr %72, i64 %74
  store ptr %75, ptr %22, align 8, !tbaa !5
  %76 = load ptr, ptr %24, align 8, !tbaa !5
  %77 = getelementptr inbounds %struct.complex, ptr %76, i32 -1
  store ptr %77, ptr %24, align 8, !tbaa !5
  %78 = load ptr, ptr %14, align 8, !tbaa !5
  %79 = call i32 @lsame_(ptr noundef %78, ptr noundef @.str)
  store i32 %79, ptr %44, align 4, !tbaa !9
  %80 = load ptr, ptr %15, align 8, !tbaa !5
  %81 = call i32 @lsame_(ptr noundef %80, ptr noundef @.str.1)
  store i32 %81, ptr %42, align 4, !tbaa !9
  %82 = load i32, ptr %42, align 4, !tbaa !9
  %83 = icmp ne i32 %82, 0
  br i1 %83, label %88, label %84

84:                                               ; preds = %13
  %85 = load ptr, ptr %15, align 8, !tbaa !5
  %86 = call i32 @lsame_(ptr noundef %85, ptr noundef @.str.2)
  %87 = icmp ne i32 %86, 0
  br label %88

88:                                               ; preds = %84, %13
  %89 = phi i1 [ true, %13 ], [ %87, %84 ]
  %90 = zext i1 %89 to i32
  store i32 %90, ptr %45, align 4, !tbaa !9
  %91 = load ptr, ptr %16, align 8, !tbaa !5
  %92 = load i32, ptr %91, align 4, !tbaa !9
  %93 = icmp sge i32 1, %92
  br i1 %93, label %94, label %95

94:                                               ; preds = %88
  br label %98

95:                                               ; preds = %88
  %96 = load ptr, ptr %16, align 8, !tbaa !5
  %97 = load i32, ptr %96, align 4, !tbaa !9
  br label %98

98:                                               ; preds = %95, %94
  %99 = phi i32 [ 1, %94 ], [ %97, %95 ]
  %100 = sitofp i32 %99 to float
  store float %100, ptr %35, align 4, !tbaa !11
  %101 = load float, ptr %35, align 4, !tbaa !11
  %102 = getelementptr inbounds %struct.complex, ptr %38, i32 0, i32 0
  store float %101, ptr %102, align 4, !tbaa !13
  %103 = getelementptr inbounds %struct.complex, ptr %38, i32 0, i32 1
  store float 0.000000e+00, ptr %103, align 4, !tbaa !15
  %104 = getelementptr inbounds %struct.complex, ptr %38, i32 0, i32 0
  %105 = load float, ptr %104, align 4, !tbaa !13
  %106 = load ptr, ptr %24, align 8, !tbaa !5
  %107 = getelementptr inbounds %struct.complex, ptr %106, i64 1
  %108 = getelementptr inbounds %struct.complex, ptr %107, i32 0, i32 0
  store float %105, ptr %108, align 4, !tbaa !13
  %109 = getelementptr inbounds %struct.complex, ptr %38, i32 0, i32 1
  %110 = load float, ptr %109, align 4, !tbaa !15
  %111 = load ptr, ptr %24, align 8, !tbaa !5
  %112 = getelementptr inbounds %struct.complex, ptr %111, i64 1
  %113 = getelementptr inbounds %struct.complex, ptr %112, i32 0, i32 1
  store float %110, ptr %113, align 4, !tbaa !15
  %114 = load ptr, ptr %25, align 8, !tbaa !5
  %115 = load i32, ptr %114, align 4, !tbaa !9
  %116 = icmp eq i32 %115, -1
  %117 = zext i1 %116 to i32
  store i32 %117, ptr %47, align 4, !tbaa !9
  %118 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 0, ptr %118, align 4, !tbaa !9
  %119 = load ptr, ptr %14, align 8, !tbaa !5
  %120 = call i32 @lsame_(ptr noundef %119, ptr noundef @.str.3)
  %121 = icmp ne i32 %120, 0
  br i1 %121, label %127, label %122

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

125:                                              ; preds = %122
  %126 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -1, ptr %126, align 4, !tbaa !9
  br label %248

127:                                              ; preds = %122, %98
  %128 = load ptr, ptr %15, align 8, !tbaa !5
  %129 = call i32 @lsame_(ptr noundef %128, ptr noundef @.str.4)
  %130 = icmp ne i32 %129, 0
  br i1 %130, label %136, label %131

131:                                              ; preds = %127
  %132 = load i32, ptr %45, align 4, !tbaa !9
  %133 = icmp ne i32 %132, 0
  br i1 %133, label %136, label %134

134:                                              ; preds = %131
  %135 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -2, ptr %135, align 4, !tbaa !9
  br label %247

136:                                              ; preds = %131, %127
  %137 = load ptr, ptr %16, align 8, !tbaa !5
  %138 = load i32, ptr %137, align 4, !tbaa !9
  %139 = icmp slt i32 %138, 0
  br i1 %139, label %140, label %142

140:                                              ; preds = %136
  %141 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -3, ptr %141, align 4, !tbaa !9
  br label %246

142:                                              ; preds = %136
  %143 = load ptr, ptr %17, align 8, !tbaa !5
  %144 = load i32, ptr %143, align 4, !tbaa !9
  %145 = icmp slt i32 %144, 1
  br i1 %145, label %159, label %146

146:                                              ; preds = %142
  %147 = load ptr, ptr %17, align 8, !tbaa !5
  %148 = load i32, ptr %147, align 4, !tbaa !9
  %149 = load ptr, ptr %16, align 8, !tbaa !5
  %150 = load i32, ptr %149, align 4, !tbaa !9
  %151 = icmp sge i32 1, %150
  br i1 %151, label %152, label %153

152:                                              ; preds = %146
  br label %156

153:                                              ; preds = %146
  %154 = load ptr, ptr %16, align 8, !tbaa !5
  %155 = load i32, ptr %154, align 4, !tbaa !9
  br label %156

156:                                              ; preds = %153, %152
  %157 = phi i32 [ 1, %152 ], [ %155, %153 ]
  %158 = icmp sgt i32 %148, %157
  br i1 %158, label %159, label %161

159:                                              ; preds = %156, %142
  %160 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -4, ptr %160, align 4, !tbaa !9
  br label %245

161:                                              ; preds = %156
  %162 = load ptr, ptr %18, align 8, !tbaa !5
  %163 = load i32, ptr %162, align 4, !tbaa !9
  %164 = load ptr, ptr %17, align 8, !tbaa !5
  %165 = load i32, ptr %164, align 4, !tbaa !9
  %166 = load ptr, ptr %16, align 8, !tbaa !5
  %167 = load i32, ptr %166, align 4, !tbaa !9
  %168 = icmp sle i32 %165, %167
  br i1 %168, label %169, label %172

169:                                              ; preds = %161
  %170 = load ptr, ptr %17, align 8, !tbaa !5
  %171 = load i32, ptr %170, align 4, !tbaa !9
  br label %175

172:                                              ; preds = %161
  %173 = load ptr, ptr %16, align 8, !tbaa !5
  %174 = load i32, ptr %173, align 4, !tbaa !9
  br label %175

175:                                              ; preds = %172, %169
  %176 = phi i32 [ %171, %169 ], [ %174, %172 ]
  %177 = icmp slt i32 %163, %176
  br i1 %177, label %184, label %178

178:                                              ; preds = %175
  %179 = load ptr, ptr %18, align 8, !tbaa !5
  %180 = load i32, ptr %179, align 4, !tbaa !9
  %181 = load ptr, ptr %16, align 8, !tbaa !5
  %182 = load i32, ptr %181, align 4, !tbaa !9
  %183 = icmp sgt i32 %180, %182
  br i1 %183, label %184, label %186

184:                                              ; preds = %178, %175
  %185 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -5, ptr %185, align 4, !tbaa !9
  br label %244

186:                                              ; preds = %178
  %187 = load ptr, ptr %20, align 8, !tbaa !5
  %188 = load i32, ptr %187, align 4, !tbaa !9
  %189 = load ptr, ptr %16, align 8, !tbaa !5
  %190 = load i32, ptr %189, align 4, !tbaa !9
  %191 = icmp sge i32 1, %190
  br i1 %191, label %192, label %193

192:                                              ; preds = %186
  br label %196

193:                                              ; preds = %186
  %194 = load ptr, ptr %16, align 8, !tbaa !5
  %195 = load i32, ptr %194, align 4, !tbaa !9
  br label %196

196:                                              ; preds = %193, %192
  %197 = phi i32 [ 1, %192 ], [ %195, %193 ]
  %198 = icmp slt i32 %188, %197
  br i1 %198, label %199, label %201

199:                                              ; preds = %196
  %200 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -7, ptr %200, align 4, !tbaa !9
  br label %243

201:                                              ; preds = %196
  %202 = load ptr, ptr %23, align 8, !tbaa !5
  %203 = load i32, ptr %202, align 4, !tbaa !9
  %204 = icmp slt i32 %203, 1
  br i1 %204, label %221, label %205

205:                                              ; preds = %201
  %206 = load i32, ptr %45, align 4, !tbaa !9
  %207 = icmp ne i32 %206, 0
  br i1 %207, label %208, label %223

208:                                              ; preds = %205
  %209 = load ptr, ptr %23, align 8, !tbaa !5
  %210 = load i32, ptr %209, align 4, !tbaa !9
  %211 = load ptr, ptr %16, align 8, !tbaa !5
  %212 = load i32, ptr %211, align 4, !tbaa !9
  %213 = icmp sge i32 1, %212
  br i1 %213, label %214, label %215

214:                                              ; preds = %208
  br label %218

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

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

221:                                              ; preds = %218, %201
  %222 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -10, ptr %222, align 4, !tbaa !9
  br label %242

223:                                              ; preds = %218, %205
  %224 = load ptr, ptr %25, align 8, !tbaa !5
  %225 = load i32, ptr %224, align 4, !tbaa !9
  %226 = load ptr, ptr %16, align 8, !tbaa !5
  %227 = load i32, ptr %226, align 4, !tbaa !9
  %228 = icmp sge i32 1, %227
  br i1 %228, label %229, label %230

229:                                              ; preds = %223
  br label %233

230:                                              ; preds = %223
  %231 = load ptr, ptr %16, align 8, !tbaa !5
  %232 = load i32, ptr %231, align 4, !tbaa !9
  br label %233

233:                                              ; preds = %230, %229
  %234 = phi i32 [ 1, %229 ], [ %232, %230 ]
  %235 = icmp slt i32 %225, %234
  br i1 %235, label %236, label %241

236:                                              ; preds = %233
  %237 = load i32, ptr %47, align 4, !tbaa !9
  %238 = icmp ne i32 %237, 0
  br i1 %238, label %241, label %239

239:                                              ; preds = %236
  %240 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -12, ptr %240, align 4, !tbaa !9
  br label %241

241:                                              ; preds = %239, %236, %233
  br label %242

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

243:                                              ; preds = %242, %199
  br label %244

244:                                              ; preds = %243, %184
  br label %245

245:                                              ; preds = %244, %159
  br label %246

246:                                              ; preds = %245, %140
  br label %247

247:                                              ; preds = %246, %134
  br label %248

248:                                              ; preds = %247, %125
  %249 = load ptr, ptr %26, align 8, !tbaa !5
  %250 = load i32, ptr %249, align 4, !tbaa !9
  %251 = icmp ne i32 %250, 0
  br i1 %251, label %252, label %257

252:                                              ; preds = %248
  %253 = load ptr, ptr %26, align 8, !tbaa !5
  %254 = load i32, ptr %253, align 4, !tbaa !9
  %255 = sub nsw i32 0, %254
  store i32 %255, ptr %32, align 4, !tbaa !9
  %256 = call i32 @xerbla_(ptr noundef @.str.5, ptr noundef %32, i32 noundef 6)
  store i32 1, ptr %48, align 4
  br label %696

257:                                              ; preds = %248
  %258 = load ptr, ptr %16, align 8, !tbaa !5
  %259 = load i32, ptr %258, align 4, !tbaa !9
  %260 = icmp eq i32 %259, 0
  br i1 %260, label %261, label %262

261:                                              ; preds = %257
  store i32 1, ptr %48, align 4
  br label %696

262:                                              ; preds = %257
  %263 = load i32, ptr %47, align 4, !tbaa !9
  %264 = icmp ne i32 %263, 0
  br i1 %264, label %265, label %323

265:                                              ; preds = %262
  %266 = load ptr, ptr %16, align 8, !tbaa !5
  %267 = load ptr, ptr %17, align 8, !tbaa !5
  %268 = load ptr, ptr %18, align 8, !tbaa !5
  %269 = load ptr, ptr %19, align 8, !tbaa !5
  %270 = load i32, ptr %29, align 4, !tbaa !9
  %271 = sext i32 %270 to i64
  %272 = getelementptr inbounds %struct.complex, ptr %269, i64 %271
  %273 = load ptr, ptr %20, align 8, !tbaa !5
  %274 = load ptr, ptr %21, align 8, !tbaa !5
  %275 = getelementptr inbounds %struct.complex, ptr %274, i64 1
  %276 = load ptr, ptr %17, align 8, !tbaa !5
  %277 = load ptr, ptr %18, align 8, !tbaa !5
  %278 = load ptr, ptr %22, align 8, !tbaa !5
  %279 = load i32, ptr %31, align 4, !tbaa !9
  %280 = sext i32 %279 to i64
  %281 = getelementptr inbounds %struct.complex, ptr %278, i64 %280
  %282 = load ptr, ptr %23, align 8, !tbaa !5
  %283 = load ptr, ptr %24, align 8, !tbaa !5
  %284 = getelementptr inbounds %struct.complex, ptr %283, i64 1
  %285 = load ptr, ptr %25, align 8, !tbaa !5
  %286 = load ptr, ptr %26, align 8, !tbaa !5
  call void @claqr0_(ptr noundef %44, ptr noundef %45, ptr noundef %266, ptr noundef %267, ptr noundef %268, ptr noundef %272, ptr noundef %273, ptr noundef %275, ptr noundef %276, ptr noundef %277, ptr noundef %281, ptr noundef %282, ptr noundef %284, ptr noundef %285, ptr noundef %286)
  %287 = load ptr, ptr %24, align 8, !tbaa !5
  %288 = getelementptr inbounds %struct.complex, ptr %287, i64 1
  %289 = getelementptr inbounds %struct.complex, ptr %288, i32 0, i32 0
  %290 = load float, ptr %289, align 4, !tbaa !13
  store float %290, ptr %36, align 4, !tbaa !11
  %291 = load ptr, ptr %16, align 8, !tbaa !5
  %292 = load i32, ptr %291, align 4, !tbaa !9
  %293 = icmp sge i32 1, %292
  br i1 %293, label %294, label %295

294:                                              ; preds = %265
  br label %298

295:                                              ; preds = %265
  %296 = load ptr, ptr %16, align 8, !tbaa !5
  %297 = load i32, ptr %296, align 4, !tbaa !9
  br label %298

298:                                              ; preds = %295, %294
  %299 = phi i32 [ 1, %294 ], [ %297, %295 ]
  %300 = sitofp i32 %299 to float
  store float %300, ptr %37, align 4, !tbaa !11
  %301 = load float, ptr %36, align 4, !tbaa !11
  %302 = load float, ptr %37, align 4, !tbaa !11
  %303 = fcmp oge float %301, %302
  br i1 %303, label %304, label %306

304:                                              ; preds = %298
  %305 = load float, ptr %36, align 4, !tbaa !11
  br label %308

306:                                              ; preds = %298
  %307 = load float, ptr %37, align 4, !tbaa !11
  br label %308

308:                                              ; preds = %306, %304
  %309 = phi float [ %305, %304 ], [ %307, %306 ]
  store float %309, ptr %35, align 4, !tbaa !11
  %310 = load float, ptr %35, align 4, !tbaa !11
  %311 = getelementptr inbounds %struct.complex, ptr %38, i32 0, i32 0
  store float %310, ptr %311, align 4, !tbaa !13
  %312 = getelementptr inbounds %struct.complex, ptr %38, i32 0, i32 1
  store float 0.000000e+00, ptr %312, align 4, !tbaa !15
  %313 = getelementptr inbounds %struct.complex, ptr %38, i32 0, i32 0
  %314 = load float, ptr %313, align 4, !tbaa !13
  %315 = load ptr, ptr %24, align 8, !tbaa !5
  %316 = getelementptr inbounds %struct.complex, ptr %315, i64 1
  %317 = getelementptr inbounds %struct.complex, ptr %316, i32 0, i32 0
  store float %314, ptr %317, align 4, !tbaa !13
  %318 = getelementptr inbounds %struct.complex, ptr %38, i32 0, i32 1
  %319 = load float, ptr %318, align 4, !tbaa !15
  %320 = load ptr, ptr %24, align 8, !tbaa !5
  %321 = getelementptr inbounds %struct.complex, ptr %320, i64 1
  %322 = getelementptr inbounds %struct.complex, ptr %321, i32 0, i32 1
  store float %319, ptr %322, align 4, !tbaa !15
  store i32 1, ptr %48, align 4
  br label %696

323:                                              ; preds = %262
  %324 = load ptr, ptr %17, align 8, !tbaa !5
  %325 = load i32, ptr %324, align 4, !tbaa !9
  %326 = icmp sgt i32 %325, 1
  br i1 %326, label %327, label %340

327:                                              ; preds = %323
  %328 = load ptr, ptr %17, align 8, !tbaa !5
  %329 = load i32, ptr %328, align 4, !tbaa !9
  %330 = sub nsw i32 %329, 1
  store i32 %330, ptr %32, align 4, !tbaa !9
  %331 = load ptr, ptr %20, align 8, !tbaa !5
  %332 = load i32, ptr %331, align 4, !tbaa !9
  %333 = add nsw i32 %332, 1
  store i32 %333, ptr %33, align 4, !tbaa !9
  %334 = load ptr, ptr %19, align 8, !tbaa !5
  %335 = load i32, ptr %29, align 4, !tbaa !9
  %336 = sext i32 %335 to i64
  %337 = getelementptr inbounds %struct.complex, ptr %334, i64 %336
  %338 = load ptr, ptr %21, align 8, !tbaa !5
  %339 = getelementptr inbounds %struct.complex, ptr %338, i64 1
  call void @ccopy_(ptr noundef %32, ptr noundef %337, ptr noundef %33, ptr noundef %339, ptr noundef @c__1)
  br label %340

340:                                              ; preds = %327, %323
  %341 = load ptr, ptr %18, align 8, !tbaa !5
  %342 = load i32, ptr %341, align 4, !tbaa !9
  %343 = load ptr, ptr %16, align 8, !tbaa !5
  %344 = load i32, ptr %343, align 4, !tbaa !9
  %345 = icmp slt i32 %342, %344
  br i1 %345, label %346, label %373

346:                                              ; preds = %340
  %347 = load ptr, ptr %16, align 8, !tbaa !5
  %348 = load i32, ptr %347, align 4, !tbaa !9
  %349 = load ptr, ptr %18, align 8, !tbaa !5
  %350 = load i32, ptr %349, align 4, !tbaa !9
  %351 = sub nsw i32 %348, %350
  store i32 %351, ptr %32, align 4, !tbaa !9
  %352 = load ptr, ptr %20, align 8, !tbaa !5
  %353 = load i32, ptr %352, align 4, !tbaa !9
  %354 = add nsw i32 %353, 1
  store i32 %354, ptr %33, align 4, !tbaa !9
  %355 = load ptr, ptr %19, align 8, !tbaa !5
  %356 = load ptr, ptr %18, align 8, !tbaa !5
  %357 = load i32, ptr %356, align 4, !tbaa !9
  %358 = add nsw i32 %357, 1
  %359 = load ptr, ptr %18, align 8, !tbaa !5
  %360 = load i32, ptr %359, align 4, !tbaa !9
  %361 = add nsw i32 %360, 1
  %362 = load i32, ptr %28, align 4, !tbaa !9
  %363 = mul nsw i32 %361, %362
  %364 = add nsw i32 %358, %363
  %365 = sext i32 %364 to i64
  %366 = getelementptr inbounds %struct.complex, ptr %355, i64 %365
  %367 = load ptr, ptr %21, align 8, !tbaa !5
  %368 = load ptr, ptr %18, align 8, !tbaa !5
  %369 = load i32, ptr %368, align 4, !tbaa !9
  %370 = add nsw i32 %369, 1
  %371 = sext i32 %370 to i64
  %372 = getelementptr inbounds %struct.complex, ptr %367, i64 %371
  call void @ccopy_(ptr noundef %32, ptr noundef %366, ptr noundef %33, ptr noundef %372, ptr noundef @c__1)
  br label %373

373:                                              ; preds = %346, %340
  %374 = load i32, ptr %42, align 4, !tbaa !9
  %375 = icmp ne i32 %374, 0
  br i1 %375, label %376, label %384

376:                                              ; preds = %373
  %377 = load ptr, ptr %16, align 8, !tbaa !5
  %378 = load ptr, ptr %16, align 8, !tbaa !5
  %379 = load ptr, ptr %22, align 8, !tbaa !5
  %380 = load i32, ptr %31, align 4, !tbaa !9
  %381 = sext i32 %380 to i64
  %382 = getelementptr inbounds %struct.complex, ptr %379, i64 %381
  %383 = load ptr, ptr %23, align 8, !tbaa !5
  call void @claset_(ptr noundef @.str.6, ptr noundef %377, ptr noundef %378, ptr noundef @c_b1, ptr noundef @c_b2, ptr noundef %382, ptr noundef %383)
  br label %384

384:                                              ; preds = %376, %373
  %385 = load ptr, ptr %17, align 8, !tbaa !5
  %386 = load i32, ptr %385, align 4, !tbaa !9
  %387 = load ptr, ptr %18, align 8, !tbaa !5
  %388 = load i32, ptr %387, align 4, !tbaa !9
  %389 = icmp eq i32 %386, %388
  br i1 %389, label %390, label %422

390:                                              ; preds = %384
  %391 = load ptr, ptr %17, align 8, !tbaa !5
  %392 = load i32, ptr %391, align 4, !tbaa !9
  store i32 %392, ptr %32, align 4, !tbaa !9
  %393 = load ptr, ptr %17, align 8, !tbaa !5
  %394 = load i32, ptr %393, align 4, !tbaa !9
  %395 = load ptr, ptr %17, align 8, !tbaa !5
  %396 = load i32, ptr %395, align 4, !tbaa !9
  %397 = load i32, ptr %28, align 4, !tbaa !9
  %398 = mul nsw i32 %396, %397
  %399 = add nsw i32 %394, %398
  store i32 %399, ptr %33, align 4, !tbaa !9
  %400 = load ptr, ptr %19, align 8, !tbaa !5
  %401 = load i32, ptr %33, align 4, !tbaa !9
  %402 = sext i32 %401 to i64
  %403 = getelementptr inbounds %struct.complex, ptr %400, i64 %402
  %404 = getelementptr inbounds %struct.complex, ptr %403, i32 0, i32 0
  %405 = load float, ptr %404, align 4, !tbaa !13
  %406 = load ptr, ptr %21, align 8, !tbaa !5
  %407 = load i32, ptr %32, align 4, !tbaa !9
  %408 = sext i32 %407 to i64
  %409 = getelementptr inbounds %struct.complex, ptr %406, i64 %408
  %410 = getelementptr inbounds %struct.complex, ptr %409, i32 0, i32 0
  store float %405, ptr %410, align 4, !tbaa !13
  %411 = load ptr, ptr %19, align 8, !tbaa !5
  %412 = load i32, ptr %33, align 4, !tbaa !9
  %413 = sext i32 %412 to i64
  %414 = getelementptr inbounds %struct.complex, ptr %411, i64 %413
  %415 = getelementptr inbounds %struct.complex, ptr %414, i32 0, i32 1
  %416 = load float, ptr %415, align 4, !tbaa !15
  %417 = load ptr, ptr %21, align 8, !tbaa !5
  %418 = load i32, ptr %32, align 4, !tbaa !9
  %419 = sext i32 %418 to i64
  %420 = getelementptr inbounds %struct.complex, ptr %417, i64 %419
  %421 = getelementptr inbounds %struct.complex, ptr %420, i32 0, i32 1
  store float %416, ptr %421, align 4, !tbaa !15
  store i32 1, ptr %48, align 4
  br label %696

422:                                              ; preds = %384
  %423 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 0
  store i32 1, ptr %423, align 4, !tbaa !9
  %424 = load ptr, ptr %14, align 8, !tbaa !5
  %425 = getelementptr inbounds [2 x ptr], ptr %27, i64 0, i64 0
  store ptr %424, ptr %425, align 16, !tbaa !5
  %426 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 1
  store i32 1, ptr %426, align 4, !tbaa !9
  %427 = load ptr, ptr %15, align 8, !tbaa !5
  %428 = getelementptr inbounds [2 x ptr], ptr %27, i64 0, i64 1
  store ptr %427, ptr %428, 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
  %429 = getelementptr inbounds [2 x i8], ptr %39, i64 0, i64 0
  store ptr %429, ptr %53, align 8, !tbaa !5
  store i32 0, ptr %49, align 4, !tbaa !9
  br label %430

430:                                              ; preds = %466, %422
  %431 = load i32, ptr %49, align 4, !tbaa !9
  %432 = load i32, ptr @c__2, align 4, !tbaa !9
  %433 = icmp slt i32 %431, %432
  br i1 %433, label %434, label %469

434:                                              ; preds = %430
  %435 = load i32, ptr %51, align 4, !tbaa !9
  store i32 %435, ptr %50, align 4, !tbaa !9
  %436 = load i32, ptr %49, align 4, !tbaa !9
  %437 = sext i32 %436 to i64
  %438 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 %437
  %439 = load i32, ptr %438, align 4, !tbaa !9
  %440 = load i32, ptr %50, align 4, !tbaa !9
  %441 = icmp slt i32 %439, %440
  br i1 %441, label %442, label %447

442:                                              ; preds = %434
  %443 = load i32, ptr %49, align 4, !tbaa !9
  %444 = sext i32 %443 to i64
  %445 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 %444
  %446 = load i32, ptr %445, align 4, !tbaa !9
  store i32 %446, ptr %50, align 4, !tbaa !9
  br label %447

447:                                              ; preds = %442, %434
  %448 = load i32, ptr %50, align 4, !tbaa !9
  %449 = load i32, ptr %51, align 4, !tbaa !9
  %450 = sub nsw i32 %449, %448
  store i32 %450, ptr %51, align 4, !tbaa !9
  %451 = load i32, ptr %49, align 4, !tbaa !9
  %452 = sext i32 %451 to i64
  %453 = getelementptr inbounds [2 x ptr], ptr %27, i64 0, i64 %452
  %454 = load ptr, ptr %453, align 8, !tbaa !5
  store ptr %454, ptr %52, align 8, !tbaa !5
  br label %455

455:                                              ; preds = %459, %447
  %456 = load i32, ptr %50, align 4, !tbaa !9
  %457 = add nsw i32 %456, -1
  store i32 %457, ptr %50, align 4, !tbaa !9
  %458 = icmp sge i32 %457, 0
  br i1 %458, label %459, label %465

459:                                              ; preds = %455
  %460 = load ptr, ptr %52, align 8, !tbaa !5
  %461 = getelementptr inbounds i8, ptr %460, i32 1
  store ptr %461, ptr %52, align 8, !tbaa !5
  %462 = load i8, ptr %460, align 1, !tbaa !16
  %463 = load ptr, ptr %53, align 8, !tbaa !5
  %464 = getelementptr inbounds i8, ptr %463, i32 1
  store ptr %464, ptr %53, align 8, !tbaa !5
  store i8 %462, ptr %463, align 1, !tbaa !16
  br label %455, !llvm.loop !17

465:                                              ; preds = %455
  br label %466

466:                                              ; preds = %465
  %467 = load i32, ptr %49, align 4, !tbaa !9
  %468 = add nsw i32 %467, 1
  store i32 %468, ptr %49, align 4, !tbaa !9
  br label %430, !llvm.loop !19

469:                                              ; preds = %430
  br label %470

470:                                              ; preds = %474, %469
  %471 = load i32, ptr %51, align 4, !tbaa !9
  %472 = add nsw i32 %471, -1
  store i32 %472, ptr %51, align 4, !tbaa !9
  %473 = icmp sge i32 %472, 0
  br i1 %473, label %474, label %477

474:                                              ; preds = %470
  %475 = load ptr, ptr %53, align 8, !tbaa !5
  %476 = getelementptr inbounds i8, ptr %475, i32 1
  store ptr %476, ptr %53, align 8, !tbaa !5
  store i8 32, ptr %475, align 1, !tbaa !16
  br label %470, !llvm.loop !20

477:                                              ; preds = %470
  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
  %478 = getelementptr inbounds [2 x i8], ptr %39, i64 0, i64 0
  %479 = load ptr, ptr %16, align 8, !tbaa !5
  %480 = load ptr, ptr %17, align 8, !tbaa !5
  %481 = load ptr, ptr %18, align 8, !tbaa !5
  %482 = load ptr, ptr %25, align 8, !tbaa !5
  %483 = call i32 @ilaenv_(ptr noundef @c__12, ptr noundef @.str.5, ptr noundef %478, ptr noundef %479, ptr noundef %480, ptr noundef %481, ptr noundef %482, i32 noundef 6, i32 noundef 2)
  store i32 %483, ptr %41, align 4, !tbaa !9
  %484 = load i32, ptr %41, align 4, !tbaa !9
  %485 = icmp sge i32 15, %484
  br i1 %485, label %486, label %487

486:                                              ; preds = %477
  br label %489

487:                                              ; preds = %477
  %488 = load i32, ptr %41, align 4, !tbaa !9
  br label %489

489:                                              ; preds = %487, %486
  %490 = phi i32 [ 15, %486 ], [ %488, %487 ]
  store i32 %490, ptr %41, align 4, !tbaa !9
  %491 = load ptr, ptr %16, align 8, !tbaa !5
  %492 = load i32, ptr %491, align 4, !tbaa !9
  %493 = load i32, ptr %41, align 4, !tbaa !9
  %494 = icmp sgt i32 %492, %493
  br i1 %494, label %495, label %517

495:                                              ; preds = %489
  %496 = load ptr, ptr %16, align 8, !tbaa !5
  %497 = load ptr, ptr %17, align 8, !tbaa !5
  %498 = load ptr, ptr %18, align 8, !tbaa !5
  %499 = load ptr, ptr %19, align 8, !tbaa !5
  %500 = load i32, ptr %29, align 4, !tbaa !9
  %501 = sext i32 %500 to i64
  %502 = getelementptr inbounds %struct.complex, ptr %499, i64 %501
  %503 = load ptr, ptr %20, align 8, !tbaa !5
  %504 = load ptr, ptr %21, align 8, !tbaa !5
  %505 = getelementptr inbounds %struct.complex, ptr %504, i64 1
  %506 = load ptr, ptr %17, align 8, !tbaa !5
  %507 = load ptr, ptr %18, align 8, !tbaa !5
  %508 = load ptr, ptr %22, align 8, !tbaa !5
  %509 = load i32, ptr %31, align 4, !tbaa !9
  %510 = sext i32 %509 to i64
  %511 = getelementptr inbounds %struct.complex, ptr %508, i64 %510
  %512 = load ptr, ptr %23, align 8, !tbaa !5
  %513 = load ptr, ptr %24, align 8, !tbaa !5
  %514 = getelementptr inbounds %struct.complex, ptr %513, i64 1
  %515 = load ptr, ptr %25, align 8, !tbaa !5
  %516 = load ptr, ptr %26, align 8, !tbaa !5
  call void @claqr0_(ptr noundef %44, ptr noundef %45, ptr noundef %496, ptr noundef %497, ptr noundef %498, ptr noundef %502, ptr noundef %503, ptr noundef %505, ptr noundef %506, ptr noundef %507, ptr noundef %511, ptr noundef %512, ptr noundef %514, ptr noundef %515, ptr noundef %516)
  br label %632

517:                                              ; preds = %489
  %518 = load ptr, ptr %16, align 8, !tbaa !5
  %519 = load ptr, ptr %17, align 8, !tbaa !5
  %520 = load ptr, ptr %18, align 8, !tbaa !5
  %521 = load ptr, ptr %19, align 8, !tbaa !5
  %522 = load i32, ptr %29, align 4, !tbaa !9
  %523 = sext i32 %522 to i64
  %524 = getelementptr inbounds %struct.complex, ptr %521, i64 %523
  %525 = load ptr, ptr %20, align 8, !tbaa !5
  %526 = load ptr, ptr %21, align 8, !tbaa !5
  %527 = getelementptr inbounds %struct.complex, ptr %526, i64 1
  %528 = load ptr, ptr %17, align 8, !tbaa !5
  %529 = load ptr, ptr %18, align 8, !tbaa !5
  %530 = load ptr, ptr %22, align 8, !tbaa !5
  %531 = load i32, ptr %31, align 4, !tbaa !9
  %532 = sext i32 %531 to i64
  %533 = getelementptr inbounds %struct.complex, ptr %530, i64 %532
  %534 = load ptr, ptr %23, align 8, !tbaa !5
  %535 = load ptr, ptr %26, align 8, !tbaa !5
  call void @clahqr_(ptr noundef %44, ptr noundef %45, ptr noundef %518, ptr noundef %519, ptr noundef %520, ptr noundef %524, ptr noundef %525, ptr noundef %527, ptr noundef %528, ptr noundef %529, ptr noundef %533, ptr noundef %534, ptr noundef %535)
  %536 = load ptr, ptr %26, align 8, !tbaa !5
  %537 = load i32, ptr %536, align 4, !tbaa !9
  %538 = icmp sgt i32 %537, 0
  br i1 %538, label %539, label %631

539:                                              ; preds = %517
  %540 = load ptr, ptr %26, align 8, !tbaa !5
  %541 = load i32, ptr %540, align 4, !tbaa !9
  store i32 %541, ptr %40, align 4, !tbaa !9
  %542 = load ptr, ptr %16, align 8, !tbaa !5
  %543 = load i32, ptr %542, align 4, !tbaa !9
  %544 = icmp sge i32 %543, 49
  br i1 %544, label %545, label %566

545:                                              ; preds = %539
  %546 = load ptr, ptr %16, align 8, !tbaa !5
  %547 = load ptr, ptr %17, align 8, !tbaa !5
  %548 = load ptr, ptr %19, align 8, !tbaa !5
  %549 = load i32, ptr %29, align 4, !tbaa !9
  %550 = sext i32 %549 to i64
  %551 = getelementptr inbounds %struct.complex, ptr %548, i64 %550
  %552 = load ptr, ptr %20, align 8, !tbaa !5
  %553 = load ptr, ptr %21, align 8, !tbaa !5
  %554 = getelementptr inbounds %struct.complex, ptr %553, i64 1
  %555 = load ptr, ptr %17, align 8, !tbaa !5
  %556 = load ptr, ptr %18, align 8, !tbaa !5
  %557 = load ptr, ptr %22, align 8, !tbaa !5
  %558 = load i32, ptr %31, align 4, !tbaa !9
  %559 = sext i32 %558 to i64
  %560 = getelementptr inbounds %struct.complex, ptr %557, i64 %559
  %561 = load ptr, ptr %23, align 8, !tbaa !5
  %562 = load ptr, ptr %24, align 8, !tbaa !5
  %563 = getelementptr inbounds %struct.complex, ptr %562, i64 1
  %564 = load ptr, ptr %25, align 8, !tbaa !5
  %565 = load ptr, ptr %26, align 8, !tbaa !5
  call void @claqr0_(ptr noundef %44, ptr noundef %45, ptr noundef %546, ptr noundef %547, ptr noundef %40, ptr noundef %551, ptr noundef %552, ptr noundef %554, ptr noundef %555, ptr noundef %556, ptr noundef %560, ptr noundef %561, ptr noundef %563, ptr noundef %564, ptr noundef %565)
  br label %630

566:                                              ; preds = %539
  %567 = load ptr, ptr %16, align 8, !tbaa !5
  %568 = load ptr, ptr %16, align 8, !tbaa !5
  %569 = load ptr, ptr %19, align 8, !tbaa !5
  %570 = load i32, ptr %29, align 4, !tbaa !9
  %571 = sext i32 %570 to i64
  %572 = getelementptr inbounds %struct.complex, ptr %569, i64 %571
  %573 = load ptr, ptr %20, align 8, !tbaa !5
  %574 = getelementptr inbounds [2401 x %struct.complex], ptr %46, i64 0, i64 0
  call void @clacpy_(ptr noundef @.str.6, ptr noundef %567, ptr noundef %568, ptr noundef %572, ptr noundef %573, ptr noundef %574, ptr noundef @c__49)
  %575 = load ptr, ptr %16, align 8, !tbaa !5
  %576 = load i32, ptr %575, align 4, !tbaa !9
  %577 = add nsw i32 %576, 1
  %578 = load ptr, ptr %16, align 8, !tbaa !5
  %579 = load i32, ptr %578, align 4, !tbaa !9
  %580 = mul nsw i32 %579, 49
  %581 = add nsw i32 %577, %580
  %582 = sub nsw i32 %581, 50
  store i32 %582, ptr %32, align 4, !tbaa !9
  %583 = load i32, ptr %32, align 4, !tbaa !9
  %584 = sext i32 %583 to i64
  %585 = getelementptr inbounds [2401 x %struct.complex], ptr %46, i64 0, i64 %584
  %586 = getelementptr inbounds %struct.complex, ptr %585, i32 0, i32 0
  store float 0.000000e+00, ptr %586, align 8, !tbaa !13
  %587 = load i32, ptr %32, align 4, !tbaa !9
  %588 = sext i32 %587 to i64
  %589 = getelementptr inbounds [2401 x %struct.complex], ptr %46, i64 0, i64 %588
  %590 = getelementptr inbounds %struct.complex, ptr %589, i32 0, i32 1
  store float 0.000000e+00, ptr %590, align 4, !tbaa !15
  %591 = load ptr, ptr %16, align 8, !tbaa !5
  %592 = load i32, ptr %591, align 4, !tbaa !9
  %593 = sub nsw i32 49, %592
  store i32 %593, ptr %32, align 4, !tbaa !9
  %594 = load ptr, ptr %16, align 8, !tbaa !5
  %595 = load i32, ptr %594, align 4, !tbaa !9
  %596 = add nsw i32 %595, 1
  %597 = mul nsw i32 %596, 49
  %598 = sub nsw i32 %597, 49
  %599 = sext i32 %598 to i64
  %600 = getelementptr inbounds [2401 x %struct.complex], ptr %46, i64 0, i64 %599
  call void @claset_(ptr noundef @.str.6, ptr noundef @c__49, ptr noundef %32, ptr noundef @c_b1, ptr noundef @c_b1, ptr noundef %600, ptr noundef @c__49)
  %601 = load ptr, ptr %17, align 8, !tbaa !5
  %602 = getelementptr inbounds [2401 x %struct.complex], ptr %46, i64 0, i64 0
  %603 = load ptr, ptr %21, align 8, !tbaa !5
  %604 = getelementptr inbounds %struct.complex, ptr %603, i64 1
  %605 = load ptr, ptr %17, align 8, !tbaa !5
  %606 = load ptr, ptr %18, align 8, !tbaa !5
  %607 = load ptr, ptr %22, align 8, !tbaa !5
  %608 = load i32, ptr %31, align 4, !tbaa !9
  %609 = sext i32 %608 to i64
  %610 = getelementptr inbounds %struct.complex, ptr %607, i64 %609
  %611 = load ptr, ptr %23, align 8, !tbaa !5
  %612 = getelementptr inbounds [49 x %struct.complex], ptr %43, i64 0, i64 0
  %613 = load ptr, ptr %26, align 8, !tbaa !5
  call void @claqr0_(ptr noundef %44, ptr noundef %45, ptr noundef @c__49, ptr noundef %601, ptr noundef %40, ptr noundef %602, ptr noundef @c__49, ptr noundef %604, ptr noundef %605, ptr noundef %606, ptr noundef %610, ptr noundef %611, ptr noundef %612, ptr noundef @c__49, ptr noundef %613)
  %614 = load i32, ptr %44, align 4, !tbaa !9
  %615 = icmp ne i32 %614, 0
  br i1 %615, label %620, label %616

616:                                              ; preds = %566
  %617 = load ptr, ptr %26, align 8, !tbaa !5
  %618 = load i32, ptr %617, align 4, !tbaa !9
  %619 = icmp ne i32 %618, 0
  br i1 %619, label %620, label %629

620:                                              ; preds = %616, %566
  %621 = load ptr, ptr %16, align 8, !tbaa !5
  %622 = load ptr, ptr %16, align 8, !tbaa !5
  %623 = getelementptr inbounds [2401 x %struct.complex], ptr %46, i64 0, i64 0
  %624 = load ptr, ptr %19, align 8, !tbaa !5
  %625 = load i32, ptr %29, align 4, !tbaa !9
  %626 = sext i32 %625 to i64
  %627 = getelementptr inbounds %struct.complex, ptr %624, i64 %626
  %628 = load ptr, ptr %20, align 8, !tbaa !5
  call void @clacpy_(ptr noundef @.str.6, ptr noundef %621, ptr noundef %622, ptr noundef %623, ptr noundef @c__49, ptr noundef %627, ptr noundef %628)
  br label %629

629:                                              ; preds = %620, %616
  br label %630

630:                                              ; preds = %629, %545
  br label %631

631:                                              ; preds = %630, %517
  br label %632

632:                                              ; preds = %631, %495
  %633 = load i32, ptr %44, align 4, !tbaa !9
  %634 = icmp ne i32 %633, 0
  br i1 %634, label %639, label %635

635:                                              ; preds = %632
  %636 = load ptr, ptr %26, align 8, !tbaa !5
  %637 = load i32, ptr %636, align 4, !tbaa !9
  %638 = icmp ne i32 %637, 0
  br i1 %638, label %639, label %656

639:                                              ; preds = %635, %632
  %640 = load ptr, ptr %16, align 8, !tbaa !5
  %641 = load i32, ptr %640, align 4, !tbaa !9
  %642 = icmp sgt i32 %641, 2
  br i1 %642, label %643, label %656

643:                                              ; preds = %639
  %644 = load ptr, ptr %16, align 8, !tbaa !5
  %645 = load i32, ptr %644, align 4, !tbaa !9
  %646 = sub nsw i32 %645, 2
  store i32 %646, ptr %32, align 4, !tbaa !9
  %647 = load ptr, ptr %16, align 8, !tbaa !5
  %648 = load i32, ptr %647, align 4, !tbaa !9
  %649 = sub nsw i32 %648, 2
  store i32 %649, ptr %33, align 4, !tbaa !9
  %650 = load ptr, ptr %19, align 8, !tbaa !5
  %651 = load i32, ptr %28, align 4, !tbaa !9
  %652 = add nsw i32 %651, 3
  %653 = sext i32 %652 to i64
  %654 = getelementptr inbounds %struct.complex, ptr %650, i64 %653
  %655 = load ptr, ptr %20, align 8, !tbaa !5
  call void @claset_(ptr noundef @.str.7, ptr noundef %32, ptr noundef %33, ptr noundef @c_b1, ptr noundef @c_b1, ptr noundef %654, ptr noundef %655)
  br label %656

656:                                              ; preds = %643, %639, %635
  %657 = load ptr, ptr %16, align 8, !tbaa !5
  %658 = load i32, ptr %657, align 4, !tbaa !9
  %659 = icmp sge i32 1, %658
  br i1 %659, label %660, label %661

660:                                              ; preds = %656
  br label %664

661:                                              ; preds = %656
  %662 = load ptr, ptr %16, align 8, !tbaa !5
  %663 = load i32, ptr %662, align 4, !tbaa !9
  br label %664

664:                                              ; preds = %661, %660
  %665 = phi i32 [ 1, %660 ], [ %663, %661 ]
  %666 = sitofp i32 %665 to float
  store float %666, ptr %36, align 4, !tbaa !11
  %667 = load ptr, ptr %24, align 8, !tbaa !5
  %668 = getelementptr inbounds %struct.complex, ptr %667, i64 1
  %669 = getelementptr inbounds %struct.complex, ptr %668, i32 0, i32 0
  %670 = load float, ptr %669, align 4, !tbaa !13
  store float %670, ptr %37, align 4, !tbaa !11
  %671 = load float, ptr %36, align 4, !tbaa !11
  %672 = load float, ptr %37, align 4, !tbaa !11
  %673 = fcmp oge float %671, %672
  br i1 %673, label %674, label %676

674:                                              ; preds = %664
  %675 = load float, ptr %36, align 4, !tbaa !11
  br label %678

676:                                              ; preds = %664
  %677 = load float, ptr %37, align 4, !tbaa !11
  br label %678

678:                                              ; preds = %676, %674
  %679 = phi float [ %675, %674 ], [ %677, %676 ]
  store float %679, ptr %35, align 4, !tbaa !11
  %680 = load float, ptr %35, align 4, !tbaa !11
  %681 = getelementptr inbounds %struct.complex, ptr %38, i32 0, i32 0
  store float %680, ptr %681, align 4, !tbaa !13
  %682 = getelementptr inbounds %struct.complex, ptr %38, i32 0, i32 1
  store float 0.000000e+00, ptr %682, align 4, !tbaa !15
  %683 = getelementptr inbounds %struct.complex, ptr %38, i32 0, i32 0
  %684 = load float, ptr %683, align 4, !tbaa !13
  %685 = load ptr, ptr %24, align 8, !tbaa !5
  %686 = getelementptr inbounds %struct.complex, ptr %685, i64 1
  %687 = getelementptr inbounds %struct.complex, ptr %686, i32 0, i32 0
  store float %684, ptr %687, align 4, !tbaa !13
  %688 = getelementptr inbounds %struct.complex, ptr %38, i32 0, i32 1
  %689 = load float, ptr %688, align 4, !tbaa !15
  %690 = load ptr, ptr %24, align 8, !tbaa !5
  %691 = getelementptr inbounds %struct.complex, ptr %690, i64 1
  %692 = getelementptr inbounds %struct.complex, ptr %691, i32 0, i32 1
  store float %689, ptr %692, align 4, !tbaa !15
  br label %693

693:                                              ; preds = %678
  br label %694

694:                                              ; preds = %693
  br label %695

695:                                              ; preds = %694
  store i32 1, ptr %48, align 4
  br label %696

696:                                              ; preds = %695, %390, %308, %261, %252
  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 2, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 8, 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 4, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #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 @claqr0_(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 @ccopy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @claset_(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 @clahqr_(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 @clacpy_(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 = !{!"float", !7, i64 0}
!13 = !{!14, !12, i64 0}
!14 = !{!"", !12, i64 0, !12, i64 4}
!15 = !{!14, !12, i64 4}
!16 = !{!7, !7, i64 0}
!17 = distinct !{!17, !18}
!18 = !{!"llvm.loop.mustprogress"}
!19 = distinct !{!19, !18}
!20 = distinct !{!20, !18}


; 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"

%struct.complex = type { float, float }

@.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
@c__1 = external hidden global i32, align 4
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b1 = external hidden global %struct.complex, align 4
@c_b2 = external hidden global %struct.complex, align 4
@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 @chseqr_(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) local_unnamed_addr #0 {
  %14 = alloca [2 x ptr], align 16
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca [2 x i32], align 4
  %18 = alloca [2 x i8], align 1
  %19 = alloca i32, align 4
  %20 = alloca [49 x %struct.complex], align 16
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca [2401 x %struct.complex], align 16
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #5
  call void @llvm.lifetime.start.p0(i64 4, 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 2, ptr nonnull %18) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #5
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %20) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #5
  call void @llvm.lifetime.start.p0(i64 19208, ptr nonnull %23) #5
  %24 = load i32, ptr %6, align 4, !tbaa !5
  %narrow = xor i32 %24, -1
  %25 = sext i32 %narrow to i64
  %26 = getelementptr inbounds %struct.complex, ptr %5, i64 %25
  %27 = getelementptr inbounds i8, ptr %7, i64 -8
  %28 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #5
  store i32 %28, ptr %21, align 4, !tbaa !5
  %29 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #5
  %.not = icmp eq i32 %29, 0
  br i1 %.not, label %30, label %33

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

33:                                               ; preds = %30, %13
  %34 = phi i1 [ true, %13 ], [ %32, %30 ]
  %35 = zext i1 %34 to i32
  store i32 %35, ptr %22, align 4, !tbaa !5
  %36 = load i32, ptr %2, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.smax.i32(i32 %36, i32 1)
  %37 = uitofp nneg i32 %spec.select to float
  store float %37, ptr %10, align 4, !tbaa !9
  %38 = getelementptr inbounds i8, ptr %10, i64 4
  store float 0.000000e+00, ptr %38, align 4, !tbaa !12
  %39 = load i32, ptr %11, align 4, !tbaa !5
  %40 = icmp eq i32 %39, -1
  store i32 0, ptr %12, align 4, !tbaa !5
  %41 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.3) #5
  %42 = icmp ne i32 %41, 0
  %43 = icmp ne i32 %28, 0
  %or.cond = select i1 %42, i1 true, i1 %43
  br i1 %or.cond, label %44, label %.thread.sink.split

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

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

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

53:                                               ; preds = %50
  %spec.select267 = tail call i32 @llvm.umax.i32(i32 %48, i32 1)
  %54 = icmp ugt i32 %51, %spec.select267
  br i1 %54, label %.thread.sink.split, label %55

55:                                               ; preds = %53
  %56 = load i32, ptr %4, align 4, !tbaa !5
  %. = tail call i32 @llvm.umin.i32(i32 %51, i32 %48)
  %57 = icmp slt i32 %56, %.
  %58 = icmp ugt i32 %56, %48
  %or.cond281 = or i1 %57, %58
  br i1 %or.cond281, label %.thread.sink.split, label %59

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

62:                                               ; preds = %59
  %63 = load i32, ptr %9, align 4, !tbaa !5
  %64 = icmp slt i32 %63, 1
  %65 = icmp ugt i32 %48, %63
  %or.cond282 = and i1 %34, %65
  %or.cond307 = select i1 %64, i1 true, i1 %or.cond282
  br i1 %or.cond307, label %.thread.sink.split, label %66

66:                                               ; preds = %62
  %67 = load i32, ptr %11, align 4, !tbaa !5
  %68 = icmp sge i32 %67, %spec.select267
  %or.cond5 = select i1 %68, i1 true, i1 %40
  br i1 %or.cond5, label %69, label %.thread.sink.split

69:                                               ; preds = %66
  %.pr = load i32, ptr %12, align 4, !tbaa !5
  %.not262 = icmp eq i32 %.pr, 0
  br i1 %.not262, label %73, label %.thread

.thread.sink.split:                               ; preds = %66, %62, %59, %55, %50, %53, %47, %44, %33
  %.sink = phi i32 [ -1, %33 ], [ -2, %44 ], [ -3, %47 ], [ -4, %53 ], [ -4, %50 ], [ -5, %55 ], [ -7, %59 ], [ -10, %62 ], [ -12, %66 ]
  store i32 %.sink, ptr %12, align 4, !tbaa !5
  br label %.thread

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

73:                                               ; preds = %69
  %74 = icmp eq i32 %48, 0
  br i1 %74, label %188, label %75

75:                                               ; preds = %73
  br i1 %40, label %76, label %84

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

84:                                               ; preds = %75
  %.not301 = icmp eq i32 %51, 1
  br i1 %.not301, label %88, label %85

85:                                               ; preds = %84
  %86 = add nsw i32 %51, -1
  store i32 %86, ptr %15, align 4, !tbaa !5
  %87 = add nuw nsw i32 %60, 1
  store i32 %87, ptr %16, align 4, !tbaa !5
  call void @ccopy_(ptr noundef nonnull %15, ptr noundef %5, ptr noundef nonnull %16, ptr noundef %7, ptr noundef nonnull @c__1) #5
  %.pre = load i32, ptr %4, align 4, !tbaa !5
  %.pre299 = load i32, ptr %2, align 4, !tbaa !5
  br label %88

88:                                               ; preds = %85, %84
  %89 = phi i32 [ %.pre299, %85 ], [ %48, %84 ]
  %90 = phi i32 [ %.pre, %85 ], [ %56, %84 ]
  %91 = icmp slt i32 %90, %89
  br i1 %91, label %92, label %103

92:                                               ; preds = %88
  %93 = sub nsw i32 %89, %90
  store i32 %93, ptr %15, align 4, !tbaa !5
  %94 = load i32, ptr %6, align 4, !tbaa !5
  %95 = add nsw i32 %94, 1
  store i32 %95, ptr %16, align 4, !tbaa !5
  %96 = add nsw i32 %90, 1
  %97 = add i32 %24, 1
  %98 = mul i32 %96, %97
  %99 = sext i32 %98 to i64
  %100 = getelementptr inbounds %struct.complex, ptr %26, i64 %99
  %101 = sext i32 %96 to i64
  %102 = getelementptr inbounds %struct.complex, ptr %27, i64 %101
  call void @ccopy_(ptr noundef nonnull %15, ptr noundef %100, ptr noundef nonnull %16, ptr noundef nonnull %102, ptr noundef nonnull @c__1) #5
  br label %103

103:                                              ; preds = %92, %88
  br i1 %.not, label %105, label %104

104:                                              ; preds = %103
  call void @claset_(ptr noundef nonnull @.str.6, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b2, ptr noundef %8, ptr noundef nonnull %9) #5
  br label %105

105:                                              ; preds = %104, %103
  %106 = load i32, ptr %3, align 4, !tbaa !5
  %107 = load i32, ptr %4, align 4, !tbaa !5
  %108 = icmp eq i32 %106, %107
  br i1 %108, label %109, label %117

109:                                              ; preds = %105
  %110 = add i32 %24, 1
  %111 = mul i32 %106, %110
  %112 = sext i32 %111 to i64
  %113 = getelementptr inbounds %struct.complex, ptr %26, i64 %112
  %114 = sext i32 %106 to i64
  %115 = getelementptr inbounds %struct.complex, ptr %27, i64 %114
  %116 = load <2 x float>, ptr %113, align 4, !tbaa !13
  store <2 x float> %116, ptr %115, align 4, !tbaa !13
  br label %188

117:                                              ; preds = %105
  store i32 1, ptr %17, align 4, !tbaa !5
  store ptr %0, ptr %14, align 16, !tbaa !14
  %118 = getelementptr inbounds i8, ptr %17, i64 4
  store i32 1, ptr %118, align 4, !tbaa !5
  %119 = getelementptr inbounds i8, ptr %14, i64 8
  store ptr %1, ptr %119, align 8, !tbaa !14
  %120 = load i32, ptr @c__2, align 4, !tbaa !5
  %121 = icmp sgt i32 %120, 0
  br i1 %121, label %.lr.ph290, label %.lr.ph295.preheader

.preheader:                                       ; preds = %._crit_edge
  %122 = icmp sgt i32 %127, 0
  br i1 %122, label %.lr.ph295.preheader, label %._crit_edge296

.lr.ph295.preheader:                              ; preds = %117, %.preheader
  %.0.lcssa305 = phi ptr [ %.1.lcssa, %.preheader ], [ %18, %117 ]
  %.0234.lcssa304 = phi i32 [ %127, %.preheader ], [ 2, %117 ]
  %123 = zext nneg i32 %.0234.lcssa304 to i64
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %.0.lcssa305, i8 32, i64 %123, i1 false), !tbaa !16
  br label %._crit_edge296

.lr.ph290:                                        ; preds = %117, %._crit_edge
  %124 = phi i32 [ %142, %._crit_edge ], [ %120, %117 ]
  %indvars.iv = phi i64 [ %indvars.iv.next, %._crit_edge ], [ 0, %117 ]
  %.0288 = phi ptr [ %.1.lcssa, %._crit_edge ], [ %18, %117 ]
  %.0234287 = phi i32 [ %127, %._crit_edge ], [ 2, %117 ]
  %125 = getelementptr inbounds [2 x i32], ptr %17, i64 0, i64 %indvars.iv
  %126 = load i32, ptr %125, align 4, !tbaa !5
  %spec.select271 = call i32 @llvm.smin.i32(i32 %126, i32 %.0234287)
  %127 = sub nsw i32 %.0234287, %spec.select271
  %128 = icmp sgt i32 %spec.select271, 0
  br i1 %128, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %.lr.ph290
  %.0288309 = ptrtoint ptr %.0288 to i64
  %129 = getelementptr inbounds [2 x ptr], ptr %14, i64 0, i64 %indvars.iv
  %130 = load ptr, ptr %129, align 8, !tbaa !14
  %131 = add nsw i32 %spec.select271, -1
  %132 = zext nneg i32 %131 to i64
  %scevgep = getelementptr i8, ptr %.0288, i64 %132
  %133 = zext nneg i32 %spec.select271 to i64
  %min.iters.check = icmp ult i32 %spec.select271, 32
  %134 = ptrtoint ptr %130 to i64
  %135 = sub i64 %.0288309, %134
  %diff.check = icmp ult i64 %135, 32
  %or.cond317 = select i1 %min.iters.check, i1 true, i1 %diff.check
  br i1 %or.cond317, label %.lr.ph.preheader318, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph.preheader
  %n.vec = and i64 %133, 2147483616
  %ind.end = getelementptr i8, ptr %.0288, i64 %n.vec
  %ind.end310 = getelementptr i8, ptr %130, 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 %.0288, i64 %index
  %next.gep313 = getelementptr i8, ptr %130, i64 %index
  %136 = getelementptr i8, ptr %next.gep313, i64 16
  %wide.load = load <16 x i8>, ptr %next.gep313, align 1, !tbaa !16
  %wide.load315 = load <16 x i8>, ptr %136, align 1, !tbaa !16
  %137 = 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.load315, ptr %137, align 1, !tbaa !16
  %index.next = add nuw i64 %index, 32
  %138 = icmp eq i64 %index.next, %n.vec
  br i1 %138, label %middle.block, label %vector.body, !llvm.loop !17

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %133
  br i1 %cmp.n, label %._crit_edge.loopexit, label %.lr.ph.preheader318

.lr.ph.preheader318:                              ; preds = %middle.block, %.lr.ph.preheader
  %.1285.ph = phi ptr [ %.0288, %.lr.ph.preheader ], [ %ind.end, %middle.block ]
  %.0233284.ph = phi ptr [ %130, %.lr.ph.preheader ], [ %ind.end310, %middle.block ]
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader318, %.lr.ph
  %.1285 = phi ptr [ %141, %.lr.ph ], [ %.1285.ph, %.lr.ph.preheader318 ]
  %.0233284 = phi ptr [ %139, %.lr.ph ], [ %.0233284.ph, %.lr.ph.preheader318 ]
  %139 = getelementptr inbounds i8, ptr %.0233284, i64 1
  %140 = load i8, ptr %.0233284, align 1, !tbaa !16
  %141 = getelementptr inbounds i8, ptr %.1285, i64 1
  store i8 %140, ptr %.1285, align 1, !tbaa !16
  %exitcond.not = icmp eq ptr %.1285, %scevgep
  br i1 %exitcond.not, label %._crit_edge.loopexit, label %.lr.ph, !llvm.loop !21

._crit_edge.loopexit:                             ; preds = %.lr.ph, %middle.block
  %.lcssa = phi ptr [ %ind.end, %middle.block ], [ %141, %.lr.ph ]
  %.pre300 = load i32, ptr @c__2, align 4, !tbaa !5
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %.lr.ph290
  %142 = phi i32 [ %124, %.lr.ph290 ], [ %.pre300, %._crit_edge.loopexit ]
  %.1.lcssa = phi ptr [ %.0288, %.lr.ph290 ], [ %.lcssa, %._crit_edge.loopexit ]
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %143 = sext i32 %142 to i64
  %144 = icmp slt i64 %indvars.iv.next, %143
  br i1 %144, label %.lr.ph290, label %.preheader, !llvm.loop !22

._crit_edge296:                                   ; preds = %.lr.ph295.preheader, %.preheader
  %145 = call i32 @ilaenv_(ptr noundef nonnull @c__12, ptr noundef nonnull @.str.5, ptr noundef nonnull %18, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %11, i32 noundef 6, i32 noundef 2) #5
  %146 = call i32 @llvm.smax.i32(i32 %145, i32 15)
  %147 = load i32, ptr %2, align 4, !tbaa !5
  %148 = icmp sgt i32 %147, %146
  br i1 %148, label %149, label %150

149:                                              ; preds = %._crit_edge296
  call void @claqr0_(ptr noundef nonnull %21, ptr noundef nonnull %22, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef nonnull %12) #5
  br label %171

150:                                              ; preds = %._crit_edge296
  call void @clahqr_(ptr noundef nonnull %21, ptr noundef nonnull %22, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull %12) #5
  %151 = load i32, ptr %12, align 4, !tbaa !5
  %152 = icmp sgt i32 %151, 0
  br i1 %152, label %153, label %171

153:                                              ; preds = %150
  store i32 %151, ptr %19, align 4, !tbaa !5
  %154 = load i32, ptr %2, align 4, !tbaa !5
  %155 = icmp sgt i32 %154, 48
  br i1 %155, label %156, label %157

156:                                              ; preds = %153
  call void @claqr0_(ptr noundef nonnull %21, ptr noundef nonnull %22, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %19, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef nonnull %12) #5
  br label %171

157:                                              ; preds = %153
  call void @clacpy_(ptr noundef nonnull @.str.6, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %23, ptr noundef nonnull @c__49) #5
  %158 = load i32, ptr %2, align 4, !tbaa !5
  %159 = mul nsw i32 %158, 49
  %160 = add i32 %158, -49
  %161 = add i32 %160, %159
  %162 = sext i32 %161 to i64
  %163 = getelementptr inbounds [2401 x %struct.complex], ptr %23, i64 0, i64 %162
  store <2 x float> zeroinitializer, ptr %163, align 8, !tbaa !13
  %164 = sub nsw i32 49, %158
  store i32 %164, ptr %15, align 4, !tbaa !5
  %165 = sext i32 %159 to i64
  %166 = getelementptr inbounds [2401 x %struct.complex], ptr %23, i64 0, i64 %165
  call void @claset_(ptr noundef nonnull @.str.6, ptr noundef nonnull @c__49, ptr noundef nonnull %15, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b1, ptr noundef nonnull %166, ptr noundef nonnull @c__49) #5
  call void @claqr0_(ptr noundef nonnull %21, ptr noundef nonnull %22, ptr noundef nonnull @c__49, ptr noundef nonnull %3, ptr noundef nonnull %19, ptr noundef nonnull %23, ptr noundef nonnull @c__49, ptr noundef %7, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull %20, ptr noundef nonnull @c__49, ptr noundef nonnull %12) #5
  %167 = load i32, ptr %21, align 4, !tbaa !5
  %.not263 = icmp eq i32 %167, 0
  br i1 %.not263, label %168, label %170

168:                                              ; preds = %157
  %169 = load i32, ptr %12, align 4, !tbaa !5
  %.not264 = icmp eq i32 %169, 0
  br i1 %.not264, label %.thread279, label %170

170:                                              ; preds = %168, %157
  call void @clacpy_(ptr noundef nonnull @.str.6, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull %23, ptr noundef nonnull @c__49, ptr noundef %5, ptr noundef nonnull %6) #5
  br label %171

171:                                              ; preds = %150, %170, %156, %149
  %.pr274 = load i32, ptr %21, align 4, !tbaa !5
  %.not265 = icmp eq i32 %.pr274, 0
  br i1 %.not265, label %172, label %173

172:                                              ; preds = %171
  %.pr278 = load i32, ptr %12, align 4, !tbaa !5
  %.not266 = icmp eq i32 %.pr278, 0
  br i1 %.not266, label %.thread279, label %173

173:                                              ; preds = %172, %171
  %174 = load i32, ptr %2, align 4, !tbaa !5
  %175 = icmp sgt i32 %174, 2
  br i1 %175, label %176, label %.thread279

176:                                              ; preds = %173
  %177 = add nsw i32 %174, -2
  store i32 %177, ptr %15, align 4, !tbaa !5
  store i32 %177, ptr %16, align 4, !tbaa !5
  %178 = sext i32 %24 to i64
  %179 = getelementptr %struct.complex, ptr %26, i64 %178
  %180 = getelementptr i8, ptr %179, i64 24
  call void @claset_(ptr noundef nonnull @.str.7, ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b1, ptr noundef %180, ptr noundef nonnull %6) #5
  br label %.thread279

.thread279:                                       ; preds = %168, %176, %173, %172
  %181 = load i32, ptr %2, align 4, !tbaa !5
  %182 = icmp slt i32 %181, 2
  %183 = uitofp nneg i32 %181 to float
  %184 = select i1 %182, float 1.000000e+00, float %183
  %185 = load float, ptr %10, align 4, !tbaa !9
  %186 = fcmp oge float %184, %185
  %187 = select i1 %186, float %184, float %185
  store float %187, ptr %10, align 4, !tbaa !9
  store float 0.000000e+00, ptr %38, align 4, !tbaa !12
  br label %188

188:                                              ; preds = %73, %.thread279, %109, %76, %.thread
  call void @llvm.lifetime.end.p0(i64 19208, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #5
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %20) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 2, 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 4, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #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 @claqr0_(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 @ccopy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @claset_(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 @clahqr_(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 @clacpy_(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, !11, i64 0}
!10 = !{!"", !11, i64 0, !11, i64 4}
!11 = !{!"float", !7, i64 0}
!12 = !{!10, !11, i64 4}
!13 = !{!11, !11, i64 0}
!14 = !{!15, !15, i64 0}
!15 = !{!"any pointer", !7, i64 0}
!16 = !{!7, !7, i64 0}
!17 = distinct !{!17, !18, !19, !20}
!18 = !{!"llvm.loop.mustprogress"}
!19 = !{!"llvm.loop.isvectorized", i32 1}
!20 = !{!"llvm.loop.unroll.runtime.disable"}
!21 = distinct !{!21, !18, !19}
!22 = distinct !{!22, !18}


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