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

; 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
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i32, align 4
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b19 = external hidden global %struct.complex, align 4
@c_b20 = external hidden global %struct.complex, align 4
@.str.8 = external hidden unnamed_addr constant [5 x i8], align 1
@c_false = external hidden global i32, align 4
@c__3 = external hidden global i32, align 4

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

142:                                              ; preds = %20
  %143 = load i32, ptr %72, align 4, !tbaa !9
  %144 = icmp ne i32 %143, 0
  br label %145

145:                                              ; preds = %142, %20
  %146 = phi i1 [ true, %20 ], [ %144, %142 ]
  %147 = zext i1 %146 to i32
  store i32 %147, ptr %65, align 4, !tbaa !9
  %148 = load ptr, ptr %21, align 8, !tbaa !5
  %149 = call i32 @lsame_(ptr noundef %148, ptr noundef @.str.2)
  %150 = icmp ne i32 %149, 0
  br i1 %150, label %154, label %151

151:                                              ; preds = %145
  %152 = load i32, ptr %72, align 4, !tbaa !9
  %153 = icmp ne i32 %152, 0
  br label %154

154:                                              ; preds = %151, %145
  %155 = phi i1 [ true, %145 ], [ %153, %151 ]
  %156 = zext i1 %155 to i32
  store i32 %156, ptr %73, align 4, !tbaa !9
  %157 = load ptr, ptr %22, align 8, !tbaa !5
  %158 = call i32 @lsame_(ptr noundef %157, ptr noundef @.str.3)
  store i32 %158, ptr %74, align 4, !tbaa !9
  %159 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 0, ptr %159, align 4, !tbaa !9
  %160 = load ptr, ptr %38, align 8, !tbaa !5
  %161 = load i32, ptr %160, align 4, !tbaa !9
  %162 = icmp eq i32 %161, -1
  %163 = zext i1 %162 to i32
  store i32 %163, ptr %76, align 4, !tbaa !9
  %164 = load i32, ptr %65, align 4, !tbaa !9
  %165 = icmp ne i32 %164, 0
  br i1 %165, label %171, label %166

166:                                              ; preds = %154
  %167 = load i32, ptr %73, align 4, !tbaa !9
  %168 = icmp ne i32 %167, 0
  br i1 %168, label %171, label %169

169:                                              ; preds = %166
  %170 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -1, ptr %170, align 4, !tbaa !9
  br label %327

171:                                              ; preds = %166, %154
  %172 = load ptr, ptr %22, align 8, !tbaa !5
  %173 = call i32 @lsame_(ptr noundef %172, ptr noundef @.str.4)
  %174 = icmp ne i32 %173, 0
  br i1 %174, label %180, label %175

175:                                              ; preds = %171
  %176 = load i32, ptr %74, align 4, !tbaa !9
  %177 = icmp ne i32 %176, 0
  br i1 %177, label %180, label %178

178:                                              ; preds = %175
  %179 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -2, ptr %179, align 4, !tbaa !9
  br label %326

180:                                              ; preds = %175, %171
  %181 = load ptr, ptr %24, align 8, !tbaa !5
  %182 = load i32, ptr %181, align 4, !tbaa !9
  %183 = icmp slt i32 %182, 0
  br i1 %183, label %184, label %186

184:                                              ; preds = %180
  %185 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -4, ptr %185, align 4, !tbaa !9
  br label %325

186:                                              ; preds = %180
  %187 = load ptr, ptr %26, align 8, !tbaa !5
  %188 = load i32, ptr %187, align 4, !tbaa !9
  %189 = load ptr, ptr %24, 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 %24, 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 %40, align 8, !tbaa !5
  store i32 -6, ptr %200, align 4, !tbaa !9
  br label %324

201:                                              ; preds = %196
  %202 = load ptr, ptr %28, align 8, !tbaa !5
  %203 = load i32, ptr %202, align 4, !tbaa !9
  %204 = load ptr, ptr %24, align 8, !tbaa !5
  %205 = load i32, ptr %204, align 4, !tbaa !9
  %206 = icmp sge i32 1, %205
  br i1 %206, label %207, label %208

207:                                              ; preds = %201
  br label %211

208:                                              ; preds = %201
  %209 = load ptr, ptr %24, align 8, !tbaa !5
  %210 = load i32, ptr %209, align 4, !tbaa !9
  br label %211

211:                                              ; preds = %208, %207
  %212 = phi i32 [ 1, %207 ], [ %210, %208 ]
  %213 = icmp slt i32 %203, %212
  br i1 %213, label %214, label %216

214:                                              ; preds = %211
  %215 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -8, ptr %215, align 4, !tbaa !9
  br label %323

216:                                              ; preds = %211
  %217 = load i32, ptr %65, align 4, !tbaa !9
  %218 = icmp ne i32 %217, 0
  br i1 %218, label %219, label %227

219:                                              ; preds = %216
  %220 = load ptr, ptr %30, align 8, !tbaa !5
  %221 = load i32, ptr %220, align 4, !tbaa !9
  %222 = load ptr, ptr %24, align 8, !tbaa !5
  %223 = load i32, ptr %222, align 4, !tbaa !9
  %224 = icmp slt i32 %221, %223
  br i1 %224, label %225, label %227

225:                                              ; preds = %219
  %226 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -10, ptr %226, align 4, !tbaa !9
  br label %322

227:                                              ; preds = %219, %216
  %228 = load i32, ptr %65, align 4, !tbaa !9
  %229 = icmp ne i32 %228, 0
  br i1 %229, label %230, label %238

230:                                              ; preds = %227
  %231 = load ptr, ptr %32, align 8, !tbaa !5
  %232 = load i32, ptr %231, align 4, !tbaa !9
  %233 = load ptr, ptr %24, align 8, !tbaa !5
  %234 = load i32, ptr %233, align 4, !tbaa !9
  %235 = icmp slt i32 %232, %234
  br i1 %235, label %236, label %238

236:                                              ; preds = %230
  %237 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -12, ptr %237, align 4, !tbaa !9
  br label %321

238:                                              ; preds = %230, %227
  %239 = load i32, ptr %74, align 4, !tbaa !9
  %240 = icmp ne i32 %239, 0
  br i1 %240, label %241, label %265

241:                                              ; preds = %238
  %242 = load ptr, ptr %36, align 8, !tbaa !5
  store i32 0, ptr %242, align 4, !tbaa !9
  %243 = load ptr, ptr %24, align 8, !tbaa !5
  %244 = load i32, ptr %243, align 4, !tbaa !9
  store i32 %244, ptr %49, align 4, !tbaa !9
  store i32 1, ptr %62, align 4, !tbaa !9
  br label %245

245:                                              ; preds = %261, %241
  %246 = load i32, ptr %62, align 4, !tbaa !9
  %247 = load i32, ptr %49, align 4, !tbaa !9
  %248 = icmp sle i32 %246, %247
  br i1 %248, label %249, label %264

249:                                              ; preds = %245
  %250 = load ptr, ptr %23, align 8, !tbaa !5
  %251 = load i32, ptr %62, align 4, !tbaa !9
  %252 = sext i32 %251 to i64
  %253 = getelementptr inbounds i32, ptr %250, i64 %252
  %254 = load i32, ptr %253, align 4, !tbaa !9
  %255 = icmp ne i32 %254, 0
  br i1 %255, label %256, label %260

256:                                              ; preds = %249
  %257 = load ptr, ptr %36, align 8, !tbaa !5
  %258 = load i32, ptr %257, align 4, !tbaa !9
  %259 = add nsw i32 %258, 1
  store i32 %259, ptr %257, align 4, !tbaa !9
  br label %260

260:                                              ; preds = %256, %249
  br label %261

261:                                              ; preds = %260
  %262 = load i32, ptr %62, align 4, !tbaa !9
  %263 = add nsw i32 %262, 1
  store i32 %263, ptr %62, align 4, !tbaa !9
  br label %245, !llvm.loop !11

264:                                              ; preds = %245
  br label %269

265:                                              ; preds = %238
  %266 = load ptr, ptr %24, align 8, !tbaa !5
  %267 = load i32, ptr %266, align 4, !tbaa !9
  %268 = load ptr, ptr %36, align 8, !tbaa !5
  store i32 %267, ptr %268, align 4, !tbaa !9
  br label %269

269:                                              ; preds = %265, %264
  %270 = load ptr, ptr %24, align 8, !tbaa !5
  %271 = load i32, ptr %270, align 4, !tbaa !9
  %272 = icmp eq i32 %271, 0
  br i1 %272, label %273, label %274

273:                                              ; preds = %269
  store i32 1, ptr %64, align 4, !tbaa !9
  br label %293

274:                                              ; preds = %269
  %275 = load ptr, ptr %21, align 8, !tbaa !5
  %276 = call i32 @lsame_(ptr noundef %275, ptr noundef @.str.2)
  %277 = icmp ne i32 %276, 0
  br i1 %277, label %282, label %278

278:                                              ; preds = %274
  %279 = load ptr, ptr %21, align 8, !tbaa !5
  %280 = call i32 @lsame_(ptr noundef %279, ptr noundef @.str)
  %281 = icmp ne i32 %280, 0
  br i1 %281, label %282, label %289

282:                                              ; preds = %278, %274
  %283 = load ptr, ptr %24, align 8, !tbaa !5
  %284 = load i32, ptr %283, align 4, !tbaa !9
  %285 = shl i32 %284, 1
  %286 = load ptr, ptr %24, align 8, !tbaa !5
  %287 = load i32, ptr %286, align 4, !tbaa !9
  %288 = mul nsw i32 %285, %287
  store i32 %288, ptr %64, align 4, !tbaa !9
  br label %292

289:                                              ; preds = %278
  %290 = load ptr, ptr %24, align 8, !tbaa !5
  %291 = load i32, ptr %290, align 4, !tbaa !9
  store i32 %291, ptr %64, align 4, !tbaa !9
  br label %292

292:                                              ; preds = %289, %282
  br label %293

293:                                              ; preds = %292, %273
  %294 = load i32, ptr %64, align 4, !tbaa !9
  %295 = sitofp i32 %294 to float
  %296 = load ptr, ptr %37, align 8, !tbaa !5
  %297 = getelementptr inbounds %struct.complex, ptr %296, i64 1
  %298 = getelementptr inbounds %struct.complex, ptr %297, i32 0, i32 0
  store float %295, ptr %298, align 4, !tbaa !13
  %299 = load ptr, ptr %37, align 8, !tbaa !5
  %300 = getelementptr inbounds %struct.complex, ptr %299, i64 1
  %301 = getelementptr inbounds %struct.complex, ptr %300, i32 0, i32 1
  store float 0.000000e+00, ptr %301, align 4, !tbaa !16
  %302 = load ptr, ptr %35, align 8, !tbaa !5
  %303 = load i32, ptr %302, align 4, !tbaa !9
  %304 = load ptr, ptr %36, align 8, !tbaa !5
  %305 = load i32, ptr %304, align 4, !tbaa !9
  %306 = icmp slt i32 %303, %305
  br i1 %306, label %307, label %309

307:                                              ; preds = %293
  %308 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -15, ptr %308, align 4, !tbaa !9
  br label %320

309:                                              ; preds = %293
  %310 = load ptr, ptr %38, align 8, !tbaa !5
  %311 = load i32, ptr %310, align 4, !tbaa !9
  %312 = load i32, ptr %64, align 4, !tbaa !9
  %313 = icmp slt i32 %311, %312
  br i1 %313, label %314, label %319

314:                                              ; preds = %309
  %315 = load i32, ptr %76, align 4, !tbaa !9
  %316 = icmp ne i32 %315, 0
  br i1 %316, label %319, label %317

317:                                              ; preds = %314
  %318 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -18, ptr %318, align 4, !tbaa !9
  br label %319

319:                                              ; preds = %317, %314, %309
  br label %320

320:                                              ; preds = %319, %307
  br label %321

321:                                              ; preds = %320, %236
  br label %322

322:                                              ; preds = %321, %225
  br label %323

323:                                              ; preds = %322, %214
  br label %324

324:                                              ; preds = %323, %199
  br label %325

325:                                              ; preds = %324, %184
  br label %326

326:                                              ; preds = %325, %178
  br label %327

327:                                              ; preds = %326, %169
  %328 = load ptr, ptr %40, align 8, !tbaa !5
  %329 = load i32, ptr %328, align 4, !tbaa !9
  %330 = icmp ne i32 %329, 0
  br i1 %330, label %331, label %336

331:                                              ; preds = %327
  %332 = load ptr, ptr %40, align 8, !tbaa !5
  %333 = load i32, ptr %332, align 4, !tbaa !9
  %334 = sub nsw i32 0, %333
  store i32 %334, ptr %49, align 4, !tbaa !9
  %335 = call i32 @xerbla_(ptr noundef @.str.5, ptr noundef %49, i32 noundef 6)
  store i32 1, ptr %78, align 4
  br label %667

336:                                              ; preds = %327
  %337 = load i32, ptr %76, align 4, !tbaa !9
  %338 = icmp ne i32 %337, 0
  br i1 %338, label %339, label %340

339:                                              ; preds = %336
  store i32 1, ptr %78, align 4
  br label %667

340:                                              ; preds = %336
  br label %341

341:                                              ; preds = %340
  %342 = load ptr, ptr %24, align 8, !tbaa !5
  %343 = load i32, ptr %342, align 4, !tbaa !9
  %344 = icmp eq i32 %343, 0
  br i1 %344, label %345, label %346

345:                                              ; preds = %341
  store i32 1, ptr %78, align 4
  br label %667

346:                                              ; preds = %341
  %347 = call float @slamch_(ptr noundef @.str.6)
  store float %347, ptr %77, align 4, !tbaa !17
  %348 = call float @slamch_(ptr noundef @.str.3)
  %349 = load float, ptr %77, align 4, !tbaa !17
  %350 = fdiv float %348, %349
  store float %350, ptr %75, align 4, !tbaa !17
  %351 = load float, ptr %75, align 4, !tbaa !17
  %352 = fdiv float 1.000000e+00, %351
  store float %352, ptr %71, align 4, !tbaa !17
  call void @slabad_(ptr noundef %75, ptr noundef %71)
  store i32 0, ptr %70, align 4, !tbaa !9
  %353 = load ptr, ptr %24, align 8, !tbaa !5
  %354 = load i32, ptr %353, align 4, !tbaa !9
  store i32 %354, ptr %49, align 4, !tbaa !9
  store i32 1, ptr %62, align 4, !tbaa !9
  br label %355

355:                                              ; preds = %655, %346
  %356 = load i32, ptr %62, align 4, !tbaa !9
  %357 = load i32, ptr %49, align 4, !tbaa !9
  %358 = icmp sle i32 %356, %357
  br i1 %358, label %359, label %658

359:                                              ; preds = %355
  %360 = load i32, ptr %74, align 4, !tbaa !9
  %361 = icmp ne i32 %360, 0
  br i1 %361, label %362, label %371

362:                                              ; preds = %359
  %363 = load ptr, ptr %23, align 8, !tbaa !5
  %364 = load i32, ptr %62, align 4, !tbaa !9
  %365 = sext i32 %364 to i64
  %366 = getelementptr inbounds i32, ptr %363, i64 %365
  %367 = load i32, ptr %366, align 4, !tbaa !9
  %368 = icmp ne i32 %367, 0
  br i1 %368, label %370, label %369

369:                                              ; preds = %362
  br label %654

370:                                              ; preds = %362
  br label %371

371:                                              ; preds = %370, %359
  %372 = load i32, ptr %70, align 4, !tbaa !9
  %373 = add nsw i32 %372, 1
  store i32 %373, ptr %70, align 4, !tbaa !9
  %374 = load i32, ptr %65, align 4, !tbaa !9
  %375 = icmp ne i32 %374, 0
  br i1 %375, label %376, label %496

376:                                              ; preds = %371
  %377 = load ptr, ptr %24, align 8, !tbaa !5
  %378 = load ptr, ptr %31, align 8, !tbaa !5
  %379 = load i32, ptr %70, align 4, !tbaa !9
  %380 = load i32, ptr %47, align 4, !tbaa !9
  %381 = mul nsw i32 %379, %380
  %382 = add nsw i32 %381, 1
  %383 = sext i32 %382 to i64
  %384 = getelementptr inbounds %struct.complex, ptr %378, i64 %383
  %385 = call float @scnrm2_(ptr noundef %377, ptr noundef %384, ptr noundef @c__1)
  store float %385, ptr %60, align 4, !tbaa !17
  %386 = load ptr, ptr %24, align 8, !tbaa !5
  %387 = load ptr, ptr %29, align 8, !tbaa !5
  %388 = load i32, ptr %70, align 4, !tbaa !9
  %389 = load i32, ptr %45, align 4, !tbaa !9
  %390 = mul nsw i32 %388, %389
  %391 = add nsw i32 %390, 1
  %392 = sext i32 %391 to i64
  %393 = getelementptr inbounds %struct.complex, ptr %387, i64 %392
  %394 = call float @scnrm2_(ptr noundef %386, ptr noundef %393, ptr noundef @c__1)
  store float %394, ptr %56, align 4, !tbaa !17
  %395 = load ptr, ptr %24, align 8, !tbaa !5
  %396 = load ptr, ptr %24, align 8, !tbaa !5
  %397 = load ptr, ptr %25, align 8, !tbaa !5
  %398 = load i32, ptr %42, align 4, !tbaa !9
  %399 = sext i32 %398 to i64
  %400 = getelementptr inbounds %struct.complex, ptr %397, i64 %399
  %401 = load ptr, ptr %26, align 8, !tbaa !5
  %402 = load ptr, ptr %31, align 8, !tbaa !5
  %403 = load i32, ptr %70, align 4, !tbaa !9
  %404 = load i32, ptr %47, align 4, !tbaa !9
  %405 = mul nsw i32 %403, %404
  %406 = add nsw i32 %405, 1
  %407 = sext i32 %406 to i64
  %408 = getelementptr inbounds %struct.complex, ptr %402, i64 %407
  %409 = load ptr, ptr %37, align 8, !tbaa !5
  %410 = getelementptr inbounds %struct.complex, ptr %409, i64 1
  call void @cgemv_(ptr noundef @.str.7, ptr noundef %395, ptr noundef %396, ptr noundef @c_b19, ptr noundef %400, ptr noundef %401, ptr noundef %408, ptr noundef @c__1, ptr noundef @c_b20, ptr noundef %410, ptr noundef @c__1)
  %411 = load ptr, ptr %24, align 8, !tbaa !5
  %412 = load ptr, ptr %37, align 8, !tbaa !5
  %413 = getelementptr inbounds %struct.complex, ptr %412, i64 1
  %414 = load ptr, ptr %29, align 8, !tbaa !5
  %415 = load i32, ptr %70, align 4, !tbaa !9
  %416 = load i32, ptr %45, align 4, !tbaa !9
  %417 = mul nsw i32 %415, %416
  %418 = add nsw i32 %417, 1
  %419 = sext i32 %418 to i64
  %420 = getelementptr inbounds %struct.complex, ptr %414, i64 %419
  call void @cdotc_(ptr noundef %52, ptr noundef %411, ptr noundef %413, ptr noundef @c__1, ptr noundef %420, ptr noundef @c__1)
  %421 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  %422 = load float, ptr %421, align 4, !tbaa !13
  %423 = getelementptr inbounds %struct.complex, ptr %57, i32 0, i32 0
  store float %422, ptr %423, align 4, !tbaa !13
  %424 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  %425 = load float, ptr %424, align 4, !tbaa !16
  %426 = getelementptr inbounds %struct.complex, ptr %57, i32 0, i32 1
  store float %425, ptr %426, align 4, !tbaa !16
  %427 = load ptr, ptr %24, align 8, !tbaa !5
  %428 = load ptr, ptr %24, align 8, !tbaa !5
  %429 = load ptr, ptr %27, align 8, !tbaa !5
  %430 = load i32, ptr %44, align 4, !tbaa !9
  %431 = sext i32 %430 to i64
  %432 = getelementptr inbounds %struct.complex, ptr %429, i64 %431
  %433 = load ptr, ptr %28, align 8, !tbaa !5
  %434 = load ptr, ptr %31, align 8, !tbaa !5
  %435 = load i32, ptr %70, align 4, !tbaa !9
  %436 = load i32, ptr %47, align 4, !tbaa !9
  %437 = mul nsw i32 %435, %436
  %438 = add nsw i32 %437, 1
  %439 = sext i32 %438 to i64
  %440 = getelementptr inbounds %struct.complex, ptr %434, i64 %439
  %441 = load ptr, ptr %37, align 8, !tbaa !5
  %442 = getelementptr inbounds %struct.complex, ptr %441, i64 1
  call void @cgemv_(ptr noundef @.str.7, ptr noundef %427, ptr noundef %428, ptr noundef @c_b19, ptr noundef %432, ptr noundef %433, ptr noundef %440, ptr noundef @c__1, ptr noundef @c_b20, ptr noundef %442, ptr noundef @c__1)
  %443 = load ptr, ptr %24, align 8, !tbaa !5
  %444 = load ptr, ptr %37, align 8, !tbaa !5
  %445 = getelementptr inbounds %struct.complex, ptr %444, i64 1
  %446 = load ptr, ptr %29, align 8, !tbaa !5
  %447 = load i32, ptr %70, align 4, !tbaa !9
  %448 = load i32, ptr %45, align 4, !tbaa !9
  %449 = mul nsw i32 %447, %448
  %450 = add nsw i32 %449, 1
  %451 = sext i32 %450 to i64
  %452 = getelementptr inbounds %struct.complex, ptr %446, i64 %451
  call void @cdotc_(ptr noundef %52, ptr noundef %443, ptr noundef %445, ptr noundef @c__1, ptr noundef %452, ptr noundef @c__1)
  %453 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  %454 = load float, ptr %453, align 4, !tbaa !13
  %455 = getelementptr inbounds %struct.complex, ptr %58, i32 0, i32 0
  store float %454, ptr %455, align 4, !tbaa !13
  %456 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  %457 = load float, ptr %456, align 4, !tbaa !16
  %458 = getelementptr inbounds %struct.complex, ptr %58, i32 0, i32 1
  store float %457, ptr %458, align 4, !tbaa !16
  %459 = call <2 x float> @Cf(ptr noundef %57)
  store <2 x float> %459, ptr %79, align 4
  %460 = getelementptr inbounds { float, float }, ptr %79, i32 0, i32 0
  %461 = load float, ptr %460, align 4
  %462 = getelementptr inbounds { float, float }, ptr %79, i32 0, i32 1
  %463 = load float, ptr %462, align 4
  %464 = getelementptr inbounds { float, float }, ptr %80, i32 0, i32 0
  %465 = getelementptr inbounds { float, float }, ptr %80, i32 0, i32 1
  store float %461, ptr %464, align 4
  store float %463, ptr %465, align 4
  %466 = load <2 x float>, ptr %80, align 4
  %467 = call float @cabsf(<2 x float> noundef %466) #5
  store float %467, ptr %50, align 4, !tbaa !17
  %468 = call <2 x float> @Cf(ptr noundef %58)
  store <2 x float> %468, ptr %81, align 4
  %469 = getelementptr inbounds { float, float }, ptr %81, i32 0, i32 0
  %470 = load float, ptr %469, align 4
  %471 = getelementptr inbounds { float, float }, ptr %81, i32 0, i32 1
  %472 = load float, ptr %471, align 4
  %473 = getelementptr inbounds { float, float }, ptr %82, i32 0, i32 0
  %474 = getelementptr inbounds { float, float }, ptr %82, i32 0, i32 1
  store float %470, ptr %473, align 4
  store float %472, ptr %474, align 4
  %475 = load <2 x float>, ptr %82, align 4
  %476 = call float @cabsf(<2 x float> noundef %475) #5
  store float %476, ptr %51, align 4, !tbaa !17
  %477 = call float @slapy2_(ptr noundef %50, ptr noundef %51)
  store float %477, ptr %53, align 4, !tbaa !17
  %478 = load float, ptr %53, align 4, !tbaa !17
  %479 = fcmp oeq float %478, 0.000000e+00
  br i1 %479, label %480, label %485

480:                                              ; preds = %376
  %481 = load ptr, ptr %33, align 8, !tbaa !5
  %482 = load i32, ptr %70, align 4, !tbaa !9
  %483 = sext i32 %482 to i64
  %484 = getelementptr inbounds float, ptr %481, i64 %483
  store float -1.000000e+00, ptr %484, align 4, !tbaa !17
  br label %495

485:                                              ; preds = %376
  %486 = load float, ptr %53, align 4, !tbaa !17
  %487 = load float, ptr %60, align 4, !tbaa !17
  %488 = load float, ptr %56, align 4, !tbaa !17
  %489 = fmul float %487, %488
  %490 = fdiv float %486, %489
  %491 = load ptr, ptr %33, align 8, !tbaa !5
  %492 = load i32, ptr %70, align 4, !tbaa !9
  %493 = sext i32 %492 to i64
  %494 = getelementptr inbounds float, ptr %491, i64 %493
  store float %490, ptr %494, align 4, !tbaa !17
  br label %495

495:                                              ; preds = %485, %480
  br label %496

496:                                              ; preds = %495, %371
  %497 = load i32, ptr %73, align 4, !tbaa !9
  %498 = icmp ne i32 %497, 0
  br i1 %498, label %499, label %653

499:                                              ; preds = %496
  %500 = load ptr, ptr %24, align 8, !tbaa !5
  %501 = load i32, ptr %500, align 4, !tbaa !9
  %502 = icmp eq i32 %501, 1
  br i1 %502, label %503, label %537

503:                                              ; preds = %499
  %504 = load ptr, ptr %25, align 8, !tbaa !5
  %505 = load i32, ptr %41, align 4, !tbaa !9
  %506 = add nsw i32 %505, 1
  %507 = sext i32 %506 to i64
  %508 = getelementptr inbounds %struct.complex, ptr %504, i64 %507
  %509 = call <2 x float> @Cf(ptr noundef %508)
  store <2 x float> %509, ptr %83, align 4
  %510 = getelementptr inbounds { float, float }, ptr %83, i32 0, i32 0
  %511 = load float, ptr %510, align 4
  %512 = getelementptr inbounds { float, float }, ptr %83, i32 0, i32 1
  %513 = load float, ptr %512, align 4
  %514 = getelementptr inbounds { float, float }, ptr %84, i32 0, i32 0
  %515 = getelementptr inbounds { float, float }, ptr %84, i32 0, i32 1
  store float %511, ptr %514, align 4
  store float %513, ptr %515, align 4
  %516 = load <2 x float>, ptr %84, align 4
  %517 = call float @cabsf(<2 x float> noundef %516) #5
  store float %517, ptr %50, align 4, !tbaa !17
  %518 = load ptr, ptr %27, align 8, !tbaa !5
  %519 = load i32, ptr %43, align 4, !tbaa !9
  %520 = add nsw i32 %519, 1
  %521 = sext i32 %520 to i64
  %522 = getelementptr inbounds %struct.complex, ptr %518, i64 %521
  %523 = call <2 x float> @Cf(ptr noundef %522)
  store <2 x float> %523, ptr %85, align 4
  %524 = getelementptr inbounds { float, float }, ptr %85, i32 0, i32 0
  %525 = load float, ptr %524, align 4
  %526 = getelementptr inbounds { float, float }, ptr %85, i32 0, i32 1
  %527 = load float, ptr %526, align 4
  %528 = getelementptr inbounds { float, float }, ptr %86, i32 0, i32 0
  %529 = getelementptr inbounds { float, float }, ptr %86, i32 0, i32 1
  store float %525, ptr %528, align 4
  store float %527, ptr %529, align 4
  %530 = load <2 x float>, ptr %86, align 4
  %531 = call float @cabsf(<2 x float> noundef %530) #5
  store float %531, ptr %51, align 4, !tbaa !17
  %532 = call float @slapy2_(ptr noundef %50, ptr noundef %51)
  %533 = load ptr, ptr %34, align 8, !tbaa !5
  %534 = load i32, ptr %70, align 4, !tbaa !9
  %535 = sext i32 %534 to i64
  %536 = getelementptr inbounds float, ptr %533, i64 %535
  store float %532, ptr %536, align 4, !tbaa !17
  br label %652

537:                                              ; preds = %499
  %538 = load ptr, ptr %24, align 8, !tbaa !5
  %539 = load ptr, ptr %24, align 8, !tbaa !5
  %540 = load ptr, ptr %25, align 8, !tbaa !5
  %541 = load i32, ptr %42, align 4, !tbaa !9
  %542 = sext i32 %541 to i64
  %543 = getelementptr inbounds %struct.complex, ptr %540, i64 %542
  %544 = load ptr, ptr %26, align 8, !tbaa !5
  %545 = load ptr, ptr %37, align 8, !tbaa !5
  %546 = getelementptr inbounds %struct.complex, ptr %545, i64 1
  %547 = load ptr, ptr %24, align 8, !tbaa !5
  call void @clacpy_(ptr noundef @.str.8, ptr noundef %538, ptr noundef %539, ptr noundef %543, ptr noundef %544, ptr noundef %546, ptr noundef %547)
  %548 = load ptr, ptr %24, align 8, !tbaa !5
  %549 = load ptr, ptr %24, align 8, !tbaa !5
  %550 = load ptr, ptr %27, align 8, !tbaa !5
  %551 = load i32, ptr %44, align 4, !tbaa !9
  %552 = sext i32 %551 to i64
  %553 = getelementptr inbounds %struct.complex, ptr %550, i64 %552
  %554 = load ptr, ptr %28, align 8, !tbaa !5
  %555 = load ptr, ptr %37, align 8, !tbaa !5
  %556 = load ptr, ptr %24, align 8, !tbaa !5
  %557 = load i32, ptr %556, align 4, !tbaa !9
  %558 = load ptr, ptr %24, align 8, !tbaa !5
  %559 = load i32, ptr %558, align 4, !tbaa !9
  %560 = mul nsw i32 %557, %559
  %561 = add nsw i32 %560, 1
  %562 = sext i32 %561 to i64
  %563 = getelementptr inbounds %struct.complex, ptr %555, i64 %562
  %564 = load ptr, ptr %24, align 8, !tbaa !5
  call void @clacpy_(ptr noundef @.str.8, ptr noundef %548, ptr noundef %549, ptr noundef %553, ptr noundef %554, ptr noundef %563, ptr noundef %564)
  %565 = load i32, ptr %62, align 4, !tbaa !9
  store i32 %565, ptr %55, align 4, !tbaa !9
  store i32 1, ptr %59, align 4, !tbaa !9
  %566 = load ptr, ptr %24, align 8, !tbaa !5
  %567 = load ptr, ptr %37, align 8, !tbaa !5
  %568 = getelementptr inbounds %struct.complex, ptr %567, i64 1
  %569 = load ptr, ptr %24, align 8, !tbaa !5
  %570 = load ptr, ptr %37, align 8, !tbaa !5
  %571 = load ptr, ptr %24, align 8, !tbaa !5
  %572 = load i32, ptr %571, align 4, !tbaa !9
  %573 = load ptr, ptr %24, align 8, !tbaa !5
  %574 = load i32, ptr %573, align 4, !tbaa !9
  %575 = mul nsw i32 %572, %574
  %576 = add nsw i32 %575, 1
  %577 = sext i32 %576 to i64
  %578 = getelementptr inbounds %struct.complex, ptr %570, i64 %577
  %579 = load ptr, ptr %24, align 8, !tbaa !5
  %580 = getelementptr inbounds [1 x %struct.complex], ptr %66, i64 0, i64 0
  %581 = getelementptr inbounds [1 x %struct.complex], ptr %69, i64 0, i64 0
  call void @ctgexc_(ptr noundef @c_false, ptr noundef @c_false, ptr noundef %566, ptr noundef %568, ptr noundef %569, ptr noundef %578, ptr noundef %579, ptr noundef %580, ptr noundef @c__1, ptr noundef %581, ptr noundef @c__1, ptr noundef %55, ptr noundef %59, ptr noundef %54)
  %582 = load i32, ptr %54, align 4, !tbaa !9
  %583 = icmp sgt i32 %582, 0
  br i1 %583, label %584, label %589

584:                                              ; preds = %537
  %585 = load ptr, ptr %34, align 8, !tbaa !5
  %586 = load i32, ptr %70, align 4, !tbaa !9
  %587 = sext i32 %586 to i64
  %588 = getelementptr inbounds float, ptr %585, i64 %587
  store float 0.000000e+00, ptr %588, align 4, !tbaa !17
  br label %651

589:                                              ; preds = %537
  store i32 1, ptr %67, align 4, !tbaa !9
  %590 = load ptr, ptr %24, align 8, !tbaa !5
  %591 = load i32, ptr %590, align 4, !tbaa !9
  %592 = load i32, ptr %67, align 4, !tbaa !9
  %593 = sub nsw i32 %591, %592
  store i32 %593, ptr %68, align 4, !tbaa !9
  %594 = load ptr, ptr %24, align 8, !tbaa !5
  %595 = load i32, ptr %594, align 4, !tbaa !9
  %596 = load ptr, ptr %24, align 8, !tbaa !5
  %597 = load i32, ptr %596, align 4, !tbaa !9
  %598 = mul nsw i32 %595, %597
  %599 = add nsw i32 %598, 1
  store i32 %599, ptr %61, align 4, !tbaa !9
  %600 = load ptr, ptr %37, align 8, !tbaa !5
  %601 = load ptr, ptr %24, align 8, !tbaa !5
  %602 = load i32, ptr %601, align 4, !tbaa !9
  %603 = load i32, ptr %67, align 4, !tbaa !9
  %604 = mul nsw i32 %602, %603
  %605 = load i32, ptr %67, align 4, !tbaa !9
  %606 = add nsw i32 %604, %605
  %607 = add nsw i32 %606, 1
  %608 = sext i32 %607 to i64
  %609 = getelementptr inbounds %struct.complex, ptr %600, i64 %608
  %610 = load ptr, ptr %24, align 8, !tbaa !5
  %611 = load ptr, ptr %37, align 8, !tbaa !5
  %612 = getelementptr inbounds %struct.complex, ptr %611, i64 1
  %613 = load ptr, ptr %24, align 8, !tbaa !5
  %614 = load ptr, ptr %37, align 8, !tbaa !5
  %615 = load i32, ptr %67, align 4, !tbaa !9
  %616 = add nsw i32 %615, 1
  %617 = sext i32 %616 to i64
  %618 = getelementptr inbounds %struct.complex, ptr %614, i64 %617
  %619 = load ptr, ptr %24, align 8, !tbaa !5
  %620 = load ptr, ptr %37, align 8, !tbaa !5
  %621 = load ptr, ptr %24, align 8, !tbaa !5
  %622 = load i32, ptr %621, align 4, !tbaa !9
  %623 = load i32, ptr %67, align 4, !tbaa !9
  %624 = mul nsw i32 %622, %623
  %625 = load i32, ptr %67, align 4, !tbaa !9
  %626 = add nsw i32 %624, %625
  %627 = load i32, ptr %61, align 4, !tbaa !9
  %628 = add nsw i32 %626, %627
  %629 = sext i32 %628 to i64
  %630 = getelementptr inbounds %struct.complex, ptr %620, i64 %629
  %631 = load ptr, ptr %24, align 8, !tbaa !5
  %632 = load ptr, ptr %37, align 8, !tbaa !5
  %633 = load i32, ptr %61, align 4, !tbaa !9
  %634 = sext i32 %633 to i64
  %635 = getelementptr inbounds %struct.complex, ptr %632, i64 %634
  %636 = load ptr, ptr %24, align 8, !tbaa !5
  %637 = load ptr, ptr %37, align 8, !tbaa !5
  %638 = load i32, ptr %67, align 4, !tbaa !9
  %639 = load i32, ptr %61, align 4, !tbaa !9
  %640 = add nsw i32 %638, %639
  %641 = sext i32 %640 to i64
  %642 = getelementptr inbounds %struct.complex, ptr %637, i64 %641
  %643 = load ptr, ptr %24, align 8, !tbaa !5
  %644 = load ptr, ptr %34, align 8, !tbaa !5
  %645 = load i32, ptr %70, align 4, !tbaa !9
  %646 = sext i32 %645 to i64
  %647 = getelementptr inbounds float, ptr %644, i64 %646
  %648 = getelementptr inbounds [1 x %struct.complex], ptr %66, i64 0, i64 0
  %649 = load ptr, ptr %39, align 8, !tbaa !5
  %650 = getelementptr inbounds i32, ptr %649, i64 1
  call void @ctgsyl_(ptr noundef @.str.7, ptr noundef @c__3, ptr noundef %68, ptr noundef %67, ptr noundef %609, ptr noundef %610, ptr noundef %612, ptr noundef %613, ptr noundef %618, ptr noundef %619, ptr noundef %630, ptr noundef %631, ptr noundef %635, ptr noundef %636, ptr noundef %642, ptr noundef %643, ptr noundef %63, ptr noundef %647, ptr noundef %648, ptr noundef @c__1, ptr noundef %650, ptr noundef %54)
  br label %651

651:                                              ; preds = %589, %584
  br label %652

652:                                              ; preds = %651, %503
  br label %653

653:                                              ; preds = %652, %496
  br label %654

654:                                              ; preds = %653, %369
  br label %655

655:                                              ; preds = %654
  %656 = load i32, ptr %62, align 4, !tbaa !9
  %657 = add nsw i32 %656, 1
  store i32 %657, ptr %62, align 4, !tbaa !9
  br label %355, !llvm.loop !18

658:                                              ; preds = %355
  %659 = load i32, ptr %64, align 4, !tbaa !9
  %660 = sitofp i32 %659 to float
  %661 = load ptr, ptr %37, align 8, !tbaa !5
  %662 = getelementptr inbounds %struct.complex, ptr %661, i64 1
  %663 = getelementptr inbounds %struct.complex, ptr %662, i32 0, i32 0
  store float %660, ptr %663, align 4, !tbaa !13
  %664 = load ptr, ptr %37, align 8, !tbaa !5
  %665 = getelementptr inbounds %struct.complex, ptr %664, i64 1
  %666 = getelementptr inbounds %struct.complex, ptr %665, i32 0, i32 1
  store float 0.000000e+00, ptr %666, align 4, !tbaa !16
  store i32 1, ptr %78, align 4
  br label %667

667:                                              ; preds = %658, %345, %339, %331
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #5
  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 float @slamch_(ptr noundef) #2

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

declare float @scnrm2_(ptr noundef, ptr noundef, ptr noundef) #2

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @cdotc_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #3

; Function Attrs: nounwind
declare float @cabsf(<2 x float> noundef) #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden <2 x float> @Cf(ptr noundef) #3

declare float @slapy2_(ptr noundef, ptr noundef) #2

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

declare void @ctgexc_(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 @ctgsyl_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, 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"="64" "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 = { inlinehint nounwind uwtable "min-legal-vector-width"="64" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind "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 #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 = !{!"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 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!14, !15, i64 0}
!14 = !{!"", !15, i64 0, !15, i64 4}
!15 = !{!"float", !7, i64 0}
!16 = !{!14, !15, i64 4}
!17 = !{!15, !15, i64 0}
!18 = distinct !{!18, !12}


; 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
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i32, align 4
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b19 = external hidden global %struct.complex, align 4
@c_b20 = external hidden global %struct.complex, align 4
@.str.8 = external hidden unnamed_addr constant [5 x i8], align 1
@c_false = external hidden global i32, align 4
@c__3 = external hidden global i32, align 4

; Function Attrs: nounwind uwtable
define dso_local void @ctgsna_(ptr noundef %0, ptr noundef %1, ptr nocapture noundef readonly %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr nocapture noundef readonly %9, ptr noundef %10, ptr nocapture noundef readonly %11, ptr nocapture noundef writeonly %12, ptr noundef %13, ptr nocapture noundef readonly %14, ptr nocapture noundef %15, ptr noundef %16, ptr nocapture noundef readonly %17, ptr noundef %18, ptr nocapture noundef %19) local_unnamed_addr #0 {
  %21 = alloca i32, align 4
  %22 = alloca float, align 4
  %23 = alloca float, align 4
  %24 = alloca %struct.complex, align 8
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca %struct.complex, align 8
  %28 = alloca %struct.complex, align 8
  %29 = alloca i32, align 4
  %30 = alloca float, align 4
  %31 = alloca [1 x %struct.complex], align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca [1 x %struct.complex], align 4
  %35 = alloca float, align 4
  %36 = alloca float, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %25) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %29) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %30) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %32) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %33) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %35) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %36) #6
  %37 = getelementptr inbounds i8, ptr %2, i64 -4
  %38 = load i32, ptr %9, align 4, !tbaa !5
  %narrow = xor i32 %38, -1
  %39 = sext i32 %narrow to i64
  %40 = getelementptr inbounds %struct.complex, ptr %8, i64 %39
  %41 = load i32, ptr %11, align 4, !tbaa !5
  %narrow219 = xor i32 %41, -1
  %42 = sext i32 %narrow219 to i64
  %43 = getelementptr inbounds %struct.complex, ptr %10, i64 %42
  %44 = getelementptr inbounds i8, ptr %12, i64 -4
  %45 = getelementptr inbounds i8, ptr %13, i64 -4
  %46 = getelementptr inbounds i8, ptr %16, i64 -8
  %47 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #6
  %48 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #6
  %49 = icmp ne i32 %48, 0
  %50 = icmp ne i32 %47, 0
  %51 = select i1 %49, i1 true, i1 %50
  %52 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #6
  %53 = icmp ne i32 %52, 0
  %54 = select i1 %53, i1 true, i1 %50
  %55 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #6
  store i32 0, ptr %19, align 4, !tbaa !5
  %56 = load i32, ptr %17, align 4, !tbaa !5
  %57 = icmp eq i32 %56, -1
  %or.cond = select i1 %51, i1 true, i1 %54
  br i1 %or.cond, label %58, label %.thread.sink.split

58:                                               ; preds = %20
  %59 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #6
  %60 = icmp ne i32 %59, 0
  %61 = icmp ne i32 %55, 0
  %or.cond3 = select i1 %60, i1 true, i1 %61
  br i1 %or.cond3, label %62, label %.thread.sink.split

62:                                               ; preds = %58
  %63 = load i32, ptr %3, align 4, !tbaa !5
  %64 = icmp slt i32 %63, 0
  br i1 %64, label %.thread.sink.split, label %65

65:                                               ; preds = %62
  %66 = load i32, ptr %5, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %63, i32 1)
  %67 = icmp slt i32 %66, %spec.select
  br i1 %67, label %.thread.sink.split, label %68

68:                                               ; preds = %65
  %69 = load i32, ptr %7, align 4, !tbaa !5
  %70 = icmp slt i32 %69, %spec.select
  br i1 %70, label %.thread.sink.split, label %71

71:                                               ; preds = %68
  br i1 %51, label %72, label %.critedge

72:                                               ; preds = %71
  %73 = load i32, ptr %9, align 4, !tbaa !5
  %74 = icmp slt i32 %73, %63
  br i1 %74, label %.thread.sink.split, label %75

75:                                               ; preds = %72
  %76 = load i32, ptr %11, align 4, !tbaa !5
  %77 = icmp slt i32 %76, %63
  br i1 %77, label %.thread.sink.split, label %.critedge

.critedge:                                        ; preds = %71, %75
  br i1 %61, label %78, label %94

78:                                               ; preds = %.critedge
  store i32 0, ptr %15, align 4, !tbaa !5
  %79 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %79, ptr %21, align 4, !tbaa !5
  %.not230 = icmp slt i32 %79, 1
  br i1 %.not230, label %.loopexit, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %78
  %80 = zext nneg i32 %79 to i64
  %xtraiter = and i64 %80, 1
  %81 = icmp eq i32 %79, 1
  br i1 %81, label %.loopexitthread-pre-split.loopexit.unr-lcssa, label %.lr.ph.preheader.new

.lr.ph.preheader.new:                             ; preds = %.lr.ph.preheader
  %unroll_iter = and i64 %80, 2147483646
  br label %.lr.ph

.lr.ph:                                           ; preds = %92, %.lr.ph.preheader.new
  %82 = phi i32 [ 0, %.lr.ph.preheader.new ], [ %93, %92 ]
  %indvars.iv = phi i64 [ 1, %.lr.ph.preheader.new ], [ %indvars.iv.next.1, %92 ]
  %niter = phi i64 [ 0, %.lr.ph.preheader.new ], [ %niter.next.1, %92 ]
  %83 = getelementptr inbounds i32, ptr %37, i64 %indvars.iv
  %84 = load i32, ptr %83, align 4, !tbaa !5
  %.not222 = icmp eq i32 %84, 0
  br i1 %.not222, label %.lr.ph.1, label %85

85:                                               ; preds = %.lr.ph
  %86 = add nsw i32 %82, 1
  store i32 %86, ptr %15, align 4, !tbaa !5
  br label %.lr.ph.1

.lr.ph.1:                                         ; preds = %.lr.ph, %85
  %87 = phi i32 [ %82, %.lr.ph ], [ %86, %85 ]
  %88 = getelementptr i32, ptr %2, i64 %indvars.iv
  %89 = load i32, ptr %88, align 4, !tbaa !5
  %.not222.1 = icmp eq i32 %89, 0
  br i1 %.not222.1, label %92, label %90

90:                                               ; preds = %.lr.ph.1
  %91 = add nsw i32 %87, 1
  store i32 %91, ptr %15, align 4, !tbaa !5
  br label %92

92:                                               ; preds = %90, %.lr.ph.1
  %93 = phi i32 [ %87, %.lr.ph.1 ], [ %91, %90 ]
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %.loopexitthread-pre-split.loopexit.unr-lcssa.loopexit, label %.lr.ph, !llvm.loop !9

94:                                               ; preds = %.critedge
  store i32 %63, ptr %15, align 4, !tbaa !5
  br label %.loopexitthread-pre-split

.loopexitthread-pre-split.loopexit.unr-lcssa.loopexit: ; preds = %92
  %95 = add nsw i32 %93, 1
  br label %.loopexitthread-pre-split.loopexit.unr-lcssa

.loopexitthread-pre-split.loopexit.unr-lcssa:     ; preds = %.loopexitthread-pre-split.loopexit.unr-lcssa.loopexit, %.lr.ph.preheader
  %.unr = phi i32 [ 1, %.lr.ph.preheader ], [ %95, %.loopexitthread-pre-split.loopexit.unr-lcssa.loopexit ]
  %indvars.iv.unr = phi i64 [ 1, %.lr.ph.preheader ], [ %indvars.iv.next.1, %.loopexitthread-pre-split.loopexit.unr-lcssa.loopexit ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.loopexitthread-pre-split, label %.lr.ph.epil

.lr.ph.epil:                                      ; preds = %.loopexitthread-pre-split.loopexit.unr-lcssa
  %96 = getelementptr inbounds i32, ptr %37, i64 %indvars.iv.unr
  %97 = load i32, ptr %96, align 4, !tbaa !5
  %.not222.epil = icmp eq i32 %97, 0
  br i1 %.not222.epil, label %.loopexitthread-pre-split, label %98

98:                                               ; preds = %.lr.ph.epil
  store i32 %.unr, ptr %15, align 4, !tbaa !5
  br label %.loopexitthread-pre-split

.loopexitthread-pre-split:                        ; preds = %.loopexitthread-pre-split.loopexit.unr-lcssa, %98, %.lr.ph.epil, %94
  %.pr254 = load i32, ptr %3, align 4, !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexitthread-pre-split, %78
  %99 = phi i32 [ %.pr254, %.loopexitthread-pre-split ], [ %79, %78 ]
  %100 = icmp eq i32 %99, 0
  br i1 %100, label %111, label %101

101:                                              ; preds = %.loopexit
  %102 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #6
  %.not220 = icmp eq i32 %102, 0
  br i1 %.not220, label %103, label %105

103:                                              ; preds = %101
  %104 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #6
  %.not221 = icmp eq i32 %104, 0
  br i1 %.not221, label %109, label %105

105:                                              ; preds = %103, %101
  %106 = load i32, ptr %3, align 4, !tbaa !5
  %107 = shl i32 %106, 1
  %108 = mul nsw i32 %107, %106
  br label %111

109:                                              ; preds = %103
  %110 = load i32, ptr %3, align 4, !tbaa !5
  br label %111

111:                                              ; preds = %.loopexit, %105, %109
  %112 = phi i32 [ %106, %105 ], [ %110, %109 ], [ 0, %.loopexit ]
  %.0213 = phi i32 [ %108, %105 ], [ %110, %109 ], [ 1, %.loopexit ]
  %113 = sitofp i32 %.0213 to float
  store float %113, ptr %16, align 4, !tbaa !11
  %114 = getelementptr inbounds i8, ptr %16, i64 4
  store float 0.000000e+00, ptr %114, align 4, !tbaa !14
  %115 = load i32, ptr %14, align 4, !tbaa !5
  %116 = load i32, ptr %15, align 4, !tbaa !5
  %117 = icmp slt i32 %115, %116
  br i1 %117, label %.thread.sink.split, label %118

118:                                              ; preds = %111
  %119 = load i32, ptr %17, align 4, !tbaa !5
  %120 = icmp sge i32 %119, %.0213
  %or.cond5 = select i1 %120, i1 true, i1 %57
  br i1 %or.cond5, label %121, label %.thread.sink.split

121:                                              ; preds = %118
  %.pr = load i32, ptr %19, align 4, !tbaa !5
  %.not223 = icmp eq i32 %.pr, 0
  br i1 %.not223, label %125, label %.thread

.thread.sink.split:                               ; preds = %118, %111, %75, %72, %68, %65, %62, %58, %20
  %.sink = phi i32 [ -1, %20 ], [ -2, %58 ], [ -4, %62 ], [ -6, %65 ], [ -8, %68 ], [ -10, %72 ], [ -12, %75 ], [ -15, %111 ], [ -18, %118 ]
  store i32 %.sink, ptr %19, align 4, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %121
  %122 = phi i32 [ %.pr, %121 ], [ %.sink, %.thread.sink.split ]
  %123 = sub nsw i32 0, %122
  store i32 %123, ptr %21, align 4, !tbaa !5
  %124 = call i32 @xerbla_(ptr noundef nonnull @.str.5, ptr noundef nonnull %21, i32 noundef 6) #6
  br label %199

125:                                              ; preds = %121
  %126 = icmp eq i32 %112, 0
  %or.cond255 = select i1 %57, i1 true, i1 %126
  br i1 %or.cond255, label %199, label %127

127:                                              ; preds = %125
  %128 = tail call float @slamch_(ptr noundef nonnull @.str.6) #6
  %129 = tail call float @slamch_(ptr noundef nonnull @.str.3) #6
  %130 = fdiv float %129, %128
  store float %130, ptr %36, align 4, !tbaa !15
  %131 = fdiv float 1.000000e+00, %130
  store float %131, ptr %35, align 4, !tbaa !15
  call void @slabad_(ptr noundef nonnull %36, ptr noundef nonnull %35) #6
  %132 = load i32, ptr %3, align 4, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %43, i64 8
  %invariant.gep232 = getelementptr i8, ptr %40, i64 8
  %invariant.gep238 = getelementptr i8, ptr %16, i64 8
  %.not224242 = icmp slt i32 %132, 1
  br i1 %.not224242, label %._crit_edge, label %.lr.ph249

.lr.ph249:                                        ; preds = %127
  %.not225 = icmp eq i32 %55, 0
  %133 = zext nneg i32 %132 to i64
  br label %134

134:                                              ; preds = %.lr.ph249, %198
  %indvars.iv251 = phi i64 [ 1, %.lr.ph249 ], [ %indvars.iv.next252, %198 ]
  %.0244 = phi i32 [ 0, %.lr.ph249 ], [ %.1, %198 ]
  br i1 %.not225, label %138, label %135

135:                                              ; preds = %134
  %136 = getelementptr inbounds i32, ptr %37, i64 %indvars.iv251
  %137 = load i32, ptr %136, align 4, !tbaa !5
  %.not226 = icmp eq i32 %137, 0
  br i1 %.not226, label %198, label %138

138:                                              ; preds = %135, %134
  %139 = add nsw i32 %.0244, 1
  br i1 %51, label %.sink.split, label %158

.sink.split:                                      ; preds = %138
  %140 = mul nsw i32 %139, %41
  %141 = sext i32 %140 to i64
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %141
  %142 = call float @scnrm2_(ptr noundef nonnull %3, ptr noundef %gep, ptr noundef nonnull @c__1) #6
  %143 = mul nsw i32 %139, %38
  %144 = sext i32 %143 to i64
  %gep233 = getelementptr %struct.complex, ptr %invariant.gep232, i64 %144
  %145 = call float @scnrm2_(ptr noundef nonnull %3, ptr noundef %gep233, ptr noundef nonnull @c__1) #6
  call void @cgemv_(ptr noundef nonnull @.str.7, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef nonnull @c_b19, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b20, ptr noundef nonnull %16, ptr noundef nonnull @c__1) #6
  call void @cdotc_(ptr noundef nonnull %24, ptr noundef nonnull %3, ptr noundef nonnull %16, ptr noundef nonnull @c__1, ptr noundef %gep233, ptr noundef nonnull @c__1)
  %146 = load <2 x float>, ptr %24, align 8, !tbaa !15
  store <2 x float> %146, ptr %27, align 8, !tbaa !15
  call void @cgemv_(ptr noundef nonnull @.str.7, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef nonnull @c_b19, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b20, ptr noundef nonnull %16, ptr noundef nonnull @c__1) #6
  call void @cdotc_(ptr noundef nonnull %24, ptr noundef nonnull %3, ptr noundef nonnull %16, ptr noundef nonnull @c__1, ptr noundef %gep233, ptr noundef nonnull @c__1)
  %147 = load <2 x float>, ptr %24, align 8, !tbaa !15
  store <2 x float> %147, ptr %28, align 8, !tbaa !15
  %148 = call <2 x float> @Cf(ptr noundef nonnull %27)
  %149 = call float @cabsf(<2 x float> noundef %148) #6
  store float %149, ptr %22, align 4, !tbaa !15
  %150 = call <2 x float> @Cf(ptr noundef nonnull %28)
  %151 = call float @cabsf(<2 x float> noundef %150) #6
  store float %151, ptr %23, align 4, !tbaa !15
  %152 = call float @slapy2_(ptr noundef nonnull %22, ptr noundef nonnull %23) #6
  %153 = fcmp oeq float %152, 0.000000e+00
  %154 = fmul float %142, %145
  %155 = fdiv float %152, %154
  %.sink256 = select i1 %153, float -1.000000e+00, float %155
  %156 = sext i32 %139 to i64
  %157 = getelementptr inbounds float, ptr %44, i64 %156
  store float %.sink256, ptr %157, align 4, !tbaa !15
  br label %158

158:                                              ; preds = %.sink.split, %138
  br i1 %54, label %159, label %198

159:                                              ; preds = %158
  %160 = load i32, ptr %3, align 4, !tbaa !5
  %161 = icmp eq i32 %160, 1
  br i1 %161, label %162, label %170

162:                                              ; preds = %159
  %163 = call <2 x float> @Cf(ptr noundef %4)
  %164 = call float @cabsf(<2 x float> noundef %163) #6
  store float %164, ptr %22, align 4, !tbaa !15
  %165 = call <2 x float> @Cf(ptr noundef %6)
  %166 = call float @cabsf(<2 x float> noundef %165) #6
  store float %166, ptr %23, align 4, !tbaa !15
  %167 = call float @slapy2_(ptr noundef nonnull %22, ptr noundef nonnull %23) #6
  %168 = sext i32 %139 to i64
  %169 = getelementptr inbounds float, ptr %45, i64 %168
  store float %167, ptr %169, align 4, !tbaa !15
  br label %198

170:                                              ; preds = %159
  call void @clacpy_(ptr noundef nonnull @.str.8, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef nonnull %16, ptr noundef nonnull %3) #6
  %171 = load i32, ptr %3, align 4, !tbaa !5
  %172 = mul nsw i32 %171, %171
  %173 = zext nneg i32 %172 to i64
  %gep235 = getelementptr inbounds %struct.complex, ptr %16, i64 %173
  call void @clacpy_(ptr noundef nonnull @.str.8, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull %gep235, ptr noundef nonnull %3) #6
  %174 = trunc nuw nsw i64 %indvars.iv251 to i32
  store i32 %174, ptr %26, align 4, !tbaa !5
  store i32 1, ptr %29, align 4, !tbaa !5
  %175 = load i32, ptr %3, align 4, !tbaa !5
  %176 = mul nsw i32 %175, %175
  %177 = zext nneg i32 %176 to i64
  %gep237 = getelementptr inbounds %struct.complex, ptr %16, i64 %177
  call void @ctgexc_(ptr noundef nonnull @c_false, ptr noundef nonnull @c_false, ptr noundef nonnull %3, ptr noundef nonnull %16, ptr noundef nonnull %3, ptr noundef nonnull %gep237, ptr noundef nonnull %3, ptr noundef nonnull %31, ptr noundef nonnull @c__1, ptr noundef nonnull %34, ptr noundef nonnull @c__1, ptr noundef nonnull %26, ptr noundef nonnull %29, ptr noundef nonnull %25) #6
  %178 = load i32, ptr %25, align 4, !tbaa !5
  %179 = icmp sgt i32 %178, 0
  br i1 %179, label %180, label %183

180:                                              ; preds = %170
  %181 = sext i32 %139 to i64
  %182 = getelementptr inbounds float, ptr %45, i64 %181
  store float 0.000000e+00, ptr %182, align 4, !tbaa !15
  br label %198

183:                                              ; preds = %170
  store i32 1, ptr %32, align 4, !tbaa !5
  %184 = load i32, ptr %3, align 4, !tbaa !5
  %185 = add nsw i32 %184, -1
  store i32 %185, ptr %33, align 4, !tbaa !5
  %186 = mul nsw i32 %184, %184
  %187 = add nuw nsw i32 %186, 1
  %188 = add nsw i32 %184, 1
  %189 = sext i32 %184 to i64
  %gep239 = getelementptr %struct.complex, ptr %invariant.gep238, i64 %189
  %190 = add nsw i32 %188, %187
  %191 = sext i32 %190 to i64
  %192 = getelementptr inbounds %struct.complex, ptr %46, i64 %191
  %193 = zext nneg i32 %187 to i64
  %194 = getelementptr inbounds %struct.complex, ptr %46, i64 %193
  %195 = zext nneg i32 %186 to i64
  %gep241 = getelementptr inbounds %struct.complex, ptr %invariant.gep238, i64 %195
  %196 = sext i32 %139 to i64
  %197 = getelementptr inbounds float, ptr %45, i64 %196
  call void @ctgsyl_(ptr noundef nonnull @.str.7, ptr noundef nonnull @c__3, ptr noundef nonnull %33, ptr noundef nonnull %32, ptr noundef %gep239, ptr noundef nonnull %3, ptr noundef nonnull %16, ptr noundef nonnull %3, ptr noundef nonnull %invariant.gep238, ptr noundef nonnull %3, ptr noundef nonnull %192, ptr noundef nonnull %3, ptr noundef nonnull %194, ptr noundef nonnull %3, ptr noundef nonnull %gep241, ptr noundef nonnull %3, ptr noundef nonnull %30, ptr noundef nonnull %197, ptr noundef nonnull %31, ptr noundef nonnull @c__1, ptr noundef %18, ptr noundef nonnull %25) #6
  br label %198

198:                                              ; preds = %135, %162, %183, %180, %158
  %.1 = phi i32 [ %139, %162 ], [ %139, %180 ], [ %139, %183 ], [ %139, %158 ], [ %.0244, %135 ]
  %indvars.iv.next252 = add nuw nsw i64 %indvars.iv251, 1
  %.not224.not = icmp ult i64 %indvars.iv251, %133
  br i1 %.not224.not, label %134, label %._crit_edge, !llvm.loop !16

._crit_edge:                                      ; preds = %198, %127
  store float %113, ptr %16, align 4, !tbaa !11
  store float 0.000000e+00, ptr %114, align 4, !tbaa !14
  br label %199

199:                                              ; preds = %125, %._crit_edge, %.thread
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %36) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %35) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %33) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #6
  ret void
}

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

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

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

declare float @slamch_(ptr noundef) local_unnamed_addr #2

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

declare float @scnrm2_(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @cdotc_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: nounwind
declare float @cabsf(<2 x float> noundef) local_unnamed_addr #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden <2 x float> @Cf(ptr noundef) local_unnamed_addr #3

declare float @slapy2_(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

declare void @ctgexc_(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 @ctgsyl_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="64" "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 = { inlinehint nounwind uwtable "min-legal-vector-width"="64" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind "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 #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { nounwind }

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

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


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