; LLVM IR from niuyishuai/PDCABB :: LAPACK_BLAS/LAPACK (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 i64, align 8
@.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 i64, align 8
@c__3 = external hidden global i64, align 8

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

127:                                              ; preds = %20
  %128 = load i64, ptr %74, align 8, !tbaa !9
  %129 = icmp ne i64 %128, 0
  br label %130

130:                                              ; preds = %127, %20
  %131 = phi i1 [ true, %20 ], [ %129, %127 ]
  %132 = zext i1 %131 to i32
  %133 = sext i32 %132 to i64
  store i64 %133, ptr %70, align 8, !tbaa !9
  %134 = load ptr, ptr %22, align 8, !tbaa !5
  %135 = call i64 @lsame_(ptr noundef %134, ptr noundef @.str.2)
  %136 = icmp ne i64 %135, 0
  br i1 %136, label %140, label %137

137:                                              ; preds = %130
  %138 = load i64, ptr %74, align 8, !tbaa !9
  %139 = icmp ne i64 %138, 0
  br label %140

140:                                              ; preds = %137, %130
  %141 = phi i1 [ true, %130 ], [ %139, %137 ]
  %142 = zext i1 %141 to i32
  %143 = sext i32 %142 to i64
  store i64 %143, ptr %75, align 8, !tbaa !9
  %144 = load ptr, ptr %23, align 8, !tbaa !5
  %145 = call i64 @lsame_(ptr noundef %144, ptr noundef @.str.3)
  store i64 %145, ptr %76, align 8, !tbaa !9
  %146 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 0, ptr %146, align 8, !tbaa !9
  %147 = load ptr, ptr %39, align 8, !tbaa !5
  %148 = load i64, ptr %147, align 8, !tbaa !9
  %149 = icmp eq i64 %148, -1
  %150 = zext i1 %149 to i32
  %151 = sext i32 %150 to i64
  store i64 %151, ptr %78, align 8, !tbaa !9
  %152 = load i64, ptr %70, align 8, !tbaa !9
  %153 = icmp ne i64 %152, 0
  br i1 %153, label %159, label %154

154:                                              ; preds = %140
  %155 = load i64, ptr %75, align 8, !tbaa !9
  %156 = icmp ne i64 %155, 0
  br i1 %156, label %159, label %157

157:                                              ; preds = %154
  %158 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -1, ptr %158, align 8, !tbaa !9
  br label %314

159:                                              ; preds = %154, %140
  %160 = load ptr, ptr %23, align 8, !tbaa !5
  %161 = call i64 @lsame_(ptr noundef %160, ptr noundef @.str.4)
  %162 = icmp ne i64 %161, 0
  br i1 %162, label %168, label %163

163:                                              ; preds = %159
  %164 = load i64, ptr %76, align 8, !tbaa !9
  %165 = icmp ne i64 %164, 0
  br i1 %165, label %168, label %166

166:                                              ; preds = %163
  %167 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -2, ptr %167, align 8, !tbaa !9
  br label %313

168:                                              ; preds = %163, %159
  %169 = load ptr, ptr %25, align 8, !tbaa !5
  %170 = load i64, ptr %169, align 8, !tbaa !9
  %171 = icmp slt i64 %170, 0
  br i1 %171, label %172, label %174

172:                                              ; preds = %168
  %173 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -4, ptr %173, align 8, !tbaa !9
  br label %312

174:                                              ; preds = %168
  %175 = load ptr, ptr %27, align 8, !tbaa !5
  %176 = load i64, ptr %175, align 8, !tbaa !9
  %177 = load ptr, ptr %25, align 8, !tbaa !5
  %178 = load i64, ptr %177, align 8, !tbaa !9
  %179 = icmp sge i64 1, %178
  br i1 %179, label %180, label %181

180:                                              ; preds = %174
  br label %184

181:                                              ; preds = %174
  %182 = load ptr, ptr %25, align 8, !tbaa !5
  %183 = load i64, ptr %182, align 8, !tbaa !9
  br label %184

184:                                              ; preds = %181, %180
  %185 = phi i64 [ 1, %180 ], [ %183, %181 ]
  %186 = icmp slt i64 %176, %185
  br i1 %186, label %187, label %189

187:                                              ; preds = %184
  %188 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -6, ptr %188, align 8, !tbaa !9
  br label %311

189:                                              ; preds = %184
  %190 = load ptr, ptr %29, align 8, !tbaa !5
  %191 = load i64, ptr %190, align 8, !tbaa !9
  %192 = load ptr, ptr %25, align 8, !tbaa !5
  %193 = load i64, ptr %192, align 8, !tbaa !9
  %194 = icmp sge i64 1, %193
  br i1 %194, label %195, label %196

195:                                              ; preds = %189
  br label %199

196:                                              ; preds = %189
  %197 = load ptr, ptr %25, align 8, !tbaa !5
  %198 = load i64, ptr %197, align 8, !tbaa !9
  br label %199

199:                                              ; preds = %196, %195
  %200 = phi i64 [ 1, %195 ], [ %198, %196 ]
  %201 = icmp slt i64 %191, %200
  br i1 %201, label %202, label %204

202:                                              ; preds = %199
  %203 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -8, ptr %203, align 8, !tbaa !9
  br label %310

204:                                              ; preds = %199
  %205 = load i64, ptr %70, align 8, !tbaa !9
  %206 = icmp ne i64 %205, 0
  br i1 %206, label %207, label %215

207:                                              ; preds = %204
  %208 = load ptr, ptr %31, align 8, !tbaa !5
  %209 = load i64, ptr %208, align 8, !tbaa !9
  %210 = load ptr, ptr %25, align 8, !tbaa !5
  %211 = load i64, ptr %210, align 8, !tbaa !9
  %212 = icmp slt i64 %209, %211
  br i1 %212, label %213, label %215

213:                                              ; preds = %207
  %214 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -10, ptr %214, align 8, !tbaa !9
  br label %309

215:                                              ; preds = %207, %204
  %216 = load i64, ptr %70, align 8, !tbaa !9
  %217 = icmp ne i64 %216, 0
  br i1 %217, label %218, label %226

218:                                              ; preds = %215
  %219 = load ptr, ptr %33, align 8, !tbaa !5
  %220 = load i64, ptr %219, align 8, !tbaa !9
  %221 = load ptr, ptr %25, align 8, !tbaa !5
  %222 = load i64, ptr %221, align 8, !tbaa !9
  %223 = icmp slt i64 %220, %222
  br i1 %223, label %224, label %226

224:                                              ; preds = %218
  %225 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -12, ptr %225, align 8, !tbaa !9
  br label %308

226:                                              ; preds = %218, %215
  %227 = load i64, ptr %76, align 8, !tbaa !9
  %228 = icmp ne i64 %227, 0
  br i1 %228, label %229, label %252

229:                                              ; preds = %226
  %230 = load ptr, ptr %37, align 8, !tbaa !5
  store i64 0, ptr %230, align 8, !tbaa !9
  %231 = load ptr, ptr %25, align 8, !tbaa !5
  %232 = load i64, ptr %231, align 8, !tbaa !9
  store i64 %232, ptr %50, align 8, !tbaa !9
  store i64 1, ptr %55, align 8, !tbaa !9
  br label %233

233:                                              ; preds = %248, %229
  %234 = load i64, ptr %55, align 8, !tbaa !9
  %235 = load i64, ptr %50, align 8, !tbaa !9
  %236 = icmp sle i64 %234, %235
  br i1 %236, label %237, label %251

237:                                              ; preds = %233
  %238 = load ptr, ptr %24, align 8, !tbaa !5
  %239 = load i64, ptr %55, align 8, !tbaa !9
  %240 = getelementptr inbounds i64, ptr %238, i64 %239
  %241 = load i64, ptr %240, align 8, !tbaa !9
  %242 = icmp ne i64 %241, 0
  br i1 %242, label %243, label %247

243:                                              ; preds = %237
  %244 = load ptr, ptr %37, align 8, !tbaa !5
  %245 = load i64, ptr %244, align 8, !tbaa !9
  %246 = add nsw i64 %245, 1
  store i64 %246, ptr %244, align 8, !tbaa !9
  br label %247

247:                                              ; preds = %243, %237
  br label %248

248:                                              ; preds = %247
  %249 = load i64, ptr %55, align 8, !tbaa !9
  %250 = add nsw i64 %249, 1
  store i64 %250, ptr %55, align 8, !tbaa !9
  br label %233, !llvm.loop !11

251:                                              ; preds = %233
  br label %256

252:                                              ; preds = %226
  %253 = load ptr, ptr %25, align 8, !tbaa !5
  %254 = load i64, ptr %253, align 8, !tbaa !9
  %255 = load ptr, ptr %37, align 8, !tbaa !5
  store i64 %254, ptr %255, align 8, !tbaa !9
  br label %256

256:                                              ; preds = %252, %251
  %257 = load ptr, ptr %25, align 8, !tbaa !5
  %258 = load i64, ptr %257, align 8, !tbaa !9
  %259 = icmp eq i64 %258, 0
  br i1 %259, label %260, label %261

260:                                              ; preds = %256
  store i64 1, ptr %69, align 8, !tbaa !9
  br label %280

261:                                              ; preds = %256
  %262 = load ptr, ptr %22, align 8, !tbaa !5
  %263 = call i64 @lsame_(ptr noundef %262, ptr noundef @.str.2)
  %264 = icmp ne i64 %263, 0
  br i1 %264, label %269, label %265

265:                                              ; preds = %261
  %266 = load ptr, ptr %22, align 8, !tbaa !5
  %267 = call i64 @lsame_(ptr noundef %266, ptr noundef @.str)
  %268 = icmp ne i64 %267, 0
  br i1 %268, label %269, label %276

269:                                              ; preds = %265, %261
  %270 = load ptr, ptr %25, align 8, !tbaa !5
  %271 = load i64, ptr %270, align 8, !tbaa !9
  %272 = shl i64 %271, 1
  %273 = load ptr, ptr %25, align 8, !tbaa !5
  %274 = load i64, ptr %273, align 8, !tbaa !9
  %275 = mul nsw i64 %272, %274
  store i64 %275, ptr %69, align 8, !tbaa !9
  br label %279

276:                                              ; preds = %265
  %277 = load ptr, ptr %25, align 8, !tbaa !5
  %278 = load i64, ptr %277, align 8, !tbaa !9
  store i64 %278, ptr %69, align 8, !tbaa !9
  br label %279

279:                                              ; preds = %276, %269
  br label %280

280:                                              ; preds = %279, %260
  %281 = load i64, ptr %69, align 8, !tbaa !9
  %282 = sitofp i64 %281 to float
  %283 = load ptr, ptr %38, align 8, !tbaa !5
  %284 = getelementptr inbounds %struct.complex, ptr %283, i64 1
  %285 = getelementptr inbounds %struct.complex, ptr %284, i32 0, i32 0
  store float %282, ptr %285, align 4, !tbaa !13
  %286 = load ptr, ptr %38, align 8, !tbaa !5
  %287 = getelementptr inbounds %struct.complex, ptr %286, i64 1
  %288 = getelementptr inbounds %struct.complex, ptr %287, i32 0, i32 1
  store float 0.000000e+00, ptr %288, align 4, !tbaa !16
  %289 = load ptr, ptr %36, align 8, !tbaa !5
  %290 = load i64, ptr %289, align 8, !tbaa !9
  %291 = load ptr, ptr %37, align 8, !tbaa !5
  %292 = load i64, ptr %291, align 8, !tbaa !9
  %293 = icmp slt i64 %290, %292
  br i1 %293, label %294, label %296

294:                                              ; preds = %280
  %295 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -15, ptr %295, align 8, !tbaa !9
  br label %307

296:                                              ; preds = %280
  %297 = load ptr, ptr %39, align 8, !tbaa !5
  %298 = load i64, ptr %297, align 8, !tbaa !9
  %299 = load i64, ptr %69, align 8, !tbaa !9
  %300 = icmp slt i64 %298, %299
  br i1 %300, label %301, label %306

301:                                              ; preds = %296
  %302 = load i64, ptr %78, align 8, !tbaa !9
  %303 = icmp ne i64 %302, 0
  br i1 %303, label %306, label %304

304:                                              ; preds = %301
  %305 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -18, ptr %305, align 8, !tbaa !9
  br label %306

306:                                              ; preds = %304, %301, %296
  br label %307

307:                                              ; preds = %306, %294
  br label %308

308:                                              ; preds = %307, %224
  br label %309

309:                                              ; preds = %308, %213
  br label %310

310:                                              ; preds = %309, %202
  br label %311

311:                                              ; preds = %310, %187
  br label %312

312:                                              ; preds = %311, %172
  br label %313

313:                                              ; preds = %312, %166
  br label %314

314:                                              ; preds = %313, %157
  %315 = load ptr, ptr %41, align 8, !tbaa !5
  %316 = load i64, ptr %315, align 8, !tbaa !9
  %317 = icmp ne i64 %316, 0
  br i1 %317, label %318, label %323

318:                                              ; preds = %314
  %319 = load ptr, ptr %41, align 8, !tbaa !5
  %320 = load i64, ptr %319, align 8, !tbaa !9
  %321 = sub nsw i64 0, %320
  store i64 %321, ptr %50, align 8, !tbaa !9
  %322 = call i32 @xerbla_(ptr noundef @.str.5, ptr noundef %50)
  store i32 0, ptr %21, align 4
  store i32 1, ptr %79, align 4
  br label %615

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

326:                                              ; preds = %323
  store i32 0, ptr %21, align 4
  store i32 1, ptr %79, align 4
  br label %615

327:                                              ; preds = %323
  br label %328

328:                                              ; preds = %327
  %329 = load ptr, ptr %25, align 8, !tbaa !5
  %330 = load i64, ptr %329, align 8, !tbaa !9
  %331 = icmp eq i64 %330, 0
  br i1 %331, label %332, label %333

332:                                              ; preds = %328
  store i32 0, ptr %21, align 4
  store i32 1, ptr %79, align 4
  br label %615

333:                                              ; preds = %328
  %334 = call double @slamch_(ptr noundef @.str.6)
  %335 = fptrunc double %334 to float
  store float %335, ptr %59, align 4, !tbaa !17
  %336 = call double @slamch_(ptr noundef @.str.3)
  %337 = load float, ptr %59, align 4, !tbaa !17
  %338 = fpext float %337 to double
  %339 = fdiv double %336, %338
  %340 = fptrunc double %339 to float
  store float %340, ptr %77, align 4, !tbaa !17
  %341 = load float, ptr %77, align 4, !tbaa !17
  %342 = fdiv float 1.000000e+00, %341
  store float %342, ptr %73, align 4, !tbaa !17
  %343 = call i32 @slabad_(ptr noundef %77, ptr noundef %73)
  store i64 0, ptr %58, align 8, !tbaa !9
  %344 = load ptr, ptr %25, align 8, !tbaa !5
  %345 = load i64, ptr %344, align 8, !tbaa !9
  store i64 %345, ptr %50, align 8, !tbaa !9
  store i64 1, ptr %55, align 8, !tbaa !9
  br label %346

346:                                              ; preds = %603, %333
  %347 = load i64, ptr %55, align 8, !tbaa !9
  %348 = load i64, ptr %50, align 8, !tbaa !9
  %349 = icmp sle i64 %347, %348
  br i1 %349, label %350, label %606

350:                                              ; preds = %346
  %351 = load i64, ptr %76, align 8, !tbaa !9
  %352 = icmp ne i64 %351, 0
  br i1 %352, label %353, label %361

353:                                              ; preds = %350
  %354 = load ptr, ptr %24, align 8, !tbaa !5
  %355 = load i64, ptr %55, align 8, !tbaa !9
  %356 = getelementptr inbounds i64, ptr %354, i64 %355
  %357 = load i64, ptr %356, align 8, !tbaa !9
  %358 = icmp ne i64 %357, 0
  br i1 %358, label %360, label %359

359:                                              ; preds = %353
  br label %602

360:                                              ; preds = %353
  br label %361

361:                                              ; preds = %360, %350
  %362 = load i64, ptr %58, align 8, !tbaa !9
  %363 = add nsw i64 %362, 1
  store i64 %363, ptr %58, align 8, !tbaa !9
  %364 = load i64, ptr %70, align 8, !tbaa !9
  %365 = icmp ne i64 %364, 0
  br i1 %365, label %366, label %467

366:                                              ; preds = %361
  %367 = load ptr, ptr %25, align 8, !tbaa !5
  %368 = load ptr, ptr %32, align 8, !tbaa !5
  %369 = load i64, ptr %58, align 8, !tbaa !9
  %370 = load i64, ptr %48, align 8, !tbaa !9
  %371 = mul nsw i64 %369, %370
  %372 = add nsw i64 %371, 1
  %373 = getelementptr inbounds %struct.complex, ptr %368, i64 %372
  %374 = call double @f2c_scnrm2(ptr noundef %367, ptr noundef %373, ptr noundef @c__1)
  %375 = fptrunc double %374 to float
  store float %375, ptr %67, align 4, !tbaa !17
  %376 = load ptr, ptr %25, align 8, !tbaa !5
  %377 = load ptr, ptr %30, align 8, !tbaa !5
  %378 = load i64, ptr %58, align 8, !tbaa !9
  %379 = load i64, ptr %46, align 8, !tbaa !9
  %380 = mul nsw i64 %378, %379
  %381 = add nsw i64 %380, 1
  %382 = getelementptr inbounds %struct.complex, ptr %377, i64 %381
  %383 = call double @f2c_scnrm2(ptr noundef %376, ptr noundef %382, ptr noundef @c__1)
  %384 = fptrunc double %383 to float
  store float %384, ptr %63, align 4, !tbaa !17
  %385 = load ptr, ptr %25, align 8, !tbaa !5
  %386 = load ptr, ptr %25, align 8, !tbaa !5
  %387 = load ptr, ptr %26, align 8, !tbaa !5
  %388 = load i64, ptr %43, align 8, !tbaa !9
  %389 = getelementptr inbounds %struct.complex, ptr %387, i64 %388
  %390 = load ptr, ptr %27, align 8, !tbaa !5
  %391 = load ptr, ptr %32, align 8, !tbaa !5
  %392 = load i64, ptr %58, align 8, !tbaa !9
  %393 = load i64, ptr %48, align 8, !tbaa !9
  %394 = mul nsw i64 %392, %393
  %395 = add nsw i64 %394, 1
  %396 = getelementptr inbounds %struct.complex, ptr %391, i64 %395
  %397 = load ptr, ptr %38, align 8, !tbaa !5
  %398 = getelementptr inbounds %struct.complex, ptr %397, i64 1
  %399 = call i32 @f2c_cgemv(ptr noundef @.str.7, ptr noundef %385, ptr noundef %386, ptr noundef @c_b19, ptr noundef %389, ptr noundef %390, ptr noundef %396, ptr noundef @c__1, ptr noundef @c_b20, ptr noundef %398, ptr noundef @c__1)
  %400 = load ptr, ptr %25, align 8, !tbaa !5
  %401 = load ptr, ptr %38, align 8, !tbaa !5
  %402 = getelementptr inbounds %struct.complex, ptr %401, i64 1
  %403 = load ptr, ptr %30, align 8, !tbaa !5
  %404 = load i64, ptr %58, align 8, !tbaa !9
  %405 = load i64, ptr %46, align 8, !tbaa !9
  %406 = mul nsw i64 %404, %405
  %407 = add nsw i64 %406, 1
  %408 = getelementptr inbounds %struct.complex, ptr %403, i64 %407
  call void @f2c_cdotc(ptr noundef %53, ptr noundef %400, ptr noundef %402, ptr noundef @c__1, ptr noundef %408, ptr noundef @c__1)
  %409 = getelementptr inbounds %struct.complex, ptr %53, i32 0, i32 0
  %410 = load float, ptr %409, align 4, !tbaa !13
  %411 = getelementptr inbounds %struct.complex, ptr %64, i32 0, i32 0
  store float %410, ptr %411, align 4, !tbaa !13
  %412 = getelementptr inbounds %struct.complex, ptr %53, i32 0, i32 1
  %413 = load float, ptr %412, align 4, !tbaa !16
  %414 = getelementptr inbounds %struct.complex, ptr %64, i32 0, i32 1
  store float %413, ptr %414, align 4, !tbaa !16
  %415 = load ptr, ptr %25, align 8, !tbaa !5
  %416 = load ptr, ptr %25, align 8, !tbaa !5
  %417 = load ptr, ptr %28, align 8, !tbaa !5
  %418 = load i64, ptr %45, align 8, !tbaa !9
  %419 = getelementptr inbounds %struct.complex, ptr %417, i64 %418
  %420 = load ptr, ptr %29, align 8, !tbaa !5
  %421 = load ptr, ptr %32, align 8, !tbaa !5
  %422 = load i64, ptr %58, align 8, !tbaa !9
  %423 = load i64, ptr %48, align 8, !tbaa !9
  %424 = mul nsw i64 %422, %423
  %425 = add nsw i64 %424, 1
  %426 = getelementptr inbounds %struct.complex, ptr %421, i64 %425
  %427 = load ptr, ptr %38, align 8, !tbaa !5
  %428 = getelementptr inbounds %struct.complex, ptr %427, i64 1
  %429 = call i32 @f2c_cgemv(ptr noundef @.str.7, ptr noundef %415, ptr noundef %416, ptr noundef @c_b19, ptr noundef %419, ptr noundef %420, ptr noundef %426, ptr noundef @c__1, ptr noundef @c_b20, ptr noundef %428, ptr noundef @c__1)
  %430 = load ptr, ptr %25, align 8, !tbaa !5
  %431 = load ptr, ptr %38, align 8, !tbaa !5
  %432 = getelementptr inbounds %struct.complex, ptr %431, i64 1
  %433 = load ptr, ptr %30, align 8, !tbaa !5
  %434 = load i64, ptr %58, align 8, !tbaa !9
  %435 = load i64, ptr %46, align 8, !tbaa !9
  %436 = mul nsw i64 %434, %435
  %437 = add nsw i64 %436, 1
  %438 = getelementptr inbounds %struct.complex, ptr %433, i64 %437
  call void @f2c_cdotc(ptr noundef %53, ptr noundef %430, ptr noundef %432, ptr noundef @c__1, ptr noundef %438, ptr noundef @c__1)
  %439 = getelementptr inbounds %struct.complex, ptr %53, i32 0, i32 0
  %440 = load float, ptr %439, align 4, !tbaa !13
  %441 = getelementptr inbounds %struct.complex, ptr %65, i32 0, i32 0
  store float %440, ptr %441, align 4, !tbaa !13
  %442 = getelementptr inbounds %struct.complex, ptr %53, i32 0, i32 1
  %443 = load float, ptr %442, align 4, !tbaa !16
  %444 = getelementptr inbounds %struct.complex, ptr %65, i32 0, i32 1
  store float %443, ptr %444, align 4, !tbaa !16
  %445 = call double @c_abs(ptr noundef %64)
  %446 = fptrunc double %445 to float
  store float %446, ptr %51, align 4, !tbaa !17
  %447 = call double @c_abs(ptr noundef %65)
  %448 = fptrunc double %447 to float
  store float %448, ptr %52, align 4, !tbaa !17
  %449 = call double @slapy2_(ptr noundef %51, ptr noundef %52)
  %450 = fptrunc double %449 to float
  store float %450, ptr %60, align 4, !tbaa !17
  %451 = load float, ptr %60, align 4, !tbaa !17
  %452 = fcmp oeq float %451, 0.000000e+00
  br i1 %452, label %453, label %457

453:                                              ; preds = %366
  %454 = load ptr, ptr %34, align 8, !tbaa !5
  %455 = load i64, ptr %58, align 8, !tbaa !9
  %456 = getelementptr inbounds float, ptr %454, i64 %455
  store float -1.000000e+00, ptr %456, align 4, !tbaa !17
  br label %466

457:                                              ; preds = %366
  %458 = load float, ptr %60, align 4, !tbaa !17
  %459 = load float, ptr %67, align 4, !tbaa !17
  %460 = load float, ptr %63, align 4, !tbaa !17
  %461 = fmul float %459, %460
  %462 = fdiv float %458, %461
  %463 = load ptr, ptr %34, align 8, !tbaa !5
  %464 = load i64, ptr %58, align 8, !tbaa !9
  %465 = getelementptr inbounds float, ptr %463, i64 %464
  store float %462, ptr %465, align 4, !tbaa !17
  br label %466

466:                                              ; preds = %457, %453
  br label %467

467:                                              ; preds = %466, %361
  %468 = load i64, ptr %75, align 8, !tbaa !9
  %469 = icmp ne i64 %468, 0
  br i1 %469, label %470, label %601

470:                                              ; preds = %467
  %471 = load ptr, ptr %25, align 8, !tbaa !5
  %472 = load i64, ptr %471, align 8, !tbaa !9
  %473 = icmp eq i64 %472, 1
  br i1 %473, label %474, label %492

474:                                              ; preds = %470
  %475 = load ptr, ptr %26, align 8, !tbaa !5
  %476 = load i64, ptr %42, align 8, !tbaa !9
  %477 = add nsw i64 %476, 1
  %478 = getelementptr inbounds %struct.complex, ptr %475, i64 %477
  %479 = call double @c_abs(ptr noundef %478)
  %480 = fptrunc double %479 to float
  store float %480, ptr %51, align 4, !tbaa !17
  %481 = load ptr, ptr %28, align 8, !tbaa !5
  %482 = load i64, ptr %44, align 8, !tbaa !9
  %483 = add nsw i64 %482, 1
  %484 = getelementptr inbounds %struct.complex, ptr %481, i64 %483
  %485 = call double @c_abs(ptr noundef %484)
  %486 = fptrunc double %485 to float
  store float %486, ptr %52, align 4, !tbaa !17
  %487 = call double @slapy2_(ptr noundef %51, ptr noundef %52)
  %488 = fptrunc double %487 to float
  %489 = load ptr, ptr %35, align 8, !tbaa !5
  %490 = load i64, ptr %58, align 8, !tbaa !9
  %491 = getelementptr inbounds float, ptr %489, i64 %490
  store float %488, ptr %491, align 4, !tbaa !17
  br label %600

492:                                              ; preds = %470
  %493 = load ptr, ptr %25, align 8, !tbaa !5
  %494 = load ptr, ptr %25, align 8, !tbaa !5
  %495 = load ptr, ptr %26, align 8, !tbaa !5
  %496 = load i64, ptr %43, align 8, !tbaa !9
  %497 = getelementptr inbounds %struct.complex, ptr %495, i64 %496
  %498 = load ptr, ptr %27, align 8, !tbaa !5
  %499 = load ptr, ptr %38, align 8, !tbaa !5
  %500 = getelementptr inbounds %struct.complex, ptr %499, i64 1
  %501 = load ptr, ptr %25, align 8, !tbaa !5
  %502 = call i32 @clacpy_(ptr noundef @.str.8, ptr noundef %493, ptr noundef %494, ptr noundef %497, ptr noundef %498, ptr noundef %500, ptr noundef %501)
  %503 = load ptr, ptr %25, align 8, !tbaa !5
  %504 = load ptr, ptr %25, align 8, !tbaa !5
  %505 = load ptr, ptr %28, align 8, !tbaa !5
  %506 = load i64, ptr %45, align 8, !tbaa !9
  %507 = getelementptr inbounds %struct.complex, ptr %505, i64 %506
  %508 = load ptr, ptr %29, align 8, !tbaa !5
  %509 = load ptr, ptr %38, align 8, !tbaa !5
  %510 = load ptr, ptr %25, align 8, !tbaa !5
  %511 = load i64, ptr %510, align 8, !tbaa !9
  %512 = load ptr, ptr %25, align 8, !tbaa !5
  %513 = load i64, ptr %512, align 8, !tbaa !9
  %514 = mul nsw i64 %511, %513
  %515 = add nsw i64 %514, 1
  %516 = getelementptr inbounds %struct.complex, ptr %509, i64 %515
  %517 = load ptr, ptr %25, align 8, !tbaa !5
  %518 = call i32 @clacpy_(ptr noundef @.str.8, ptr noundef %503, ptr noundef %504, ptr noundef %507, ptr noundef %508, ptr noundef %516, ptr noundef %517)
  %519 = load i64, ptr %55, align 8, !tbaa !9
  store i64 %519, ptr %62, align 8, !tbaa !9
  store i64 1, ptr %66, align 8, !tbaa !9
  %520 = load ptr, ptr %25, align 8, !tbaa !5
  %521 = load ptr, ptr %38, align 8, !tbaa !5
  %522 = getelementptr inbounds %struct.complex, ptr %521, i64 1
  %523 = load ptr, ptr %25, align 8, !tbaa !5
  %524 = load ptr, ptr %38, align 8, !tbaa !5
  %525 = load ptr, ptr %25, align 8, !tbaa !5
  %526 = load i64, ptr %525, align 8, !tbaa !9
  %527 = load ptr, ptr %25, align 8, !tbaa !5
  %528 = load i64, ptr %527, align 8, !tbaa !9
  %529 = mul nsw i64 %526, %528
  %530 = add nsw i64 %529, 1
  %531 = getelementptr inbounds %struct.complex, ptr %524, i64 %530
  %532 = load ptr, ptr %25, align 8, !tbaa !5
  %533 = getelementptr inbounds [1 x %struct.complex], ptr %71, i64 0, i64 0
  %534 = getelementptr inbounds [1 x %struct.complex], ptr %72, i64 0, i64 0
  %535 = call i32 @ctgexc_(ptr noundef @c_false, ptr noundef @c_false, ptr noundef %520, ptr noundef %522, ptr noundef %523, ptr noundef %531, ptr noundef %532, ptr noundef %533, ptr noundef @c__1, ptr noundef %534, ptr noundef @c__1, ptr noundef %62, ptr noundef %66, ptr noundef %61)
  %536 = load i64, ptr %61, align 8, !tbaa !9
  %537 = icmp sgt i64 %536, 0
  br i1 %537, label %538, label %542

538:                                              ; preds = %492
  %539 = load ptr, ptr %35, align 8, !tbaa !5
  %540 = load i64, ptr %58, align 8, !tbaa !9
  %541 = getelementptr inbounds float, ptr %539, i64 %540
  store float 0.000000e+00, ptr %541, align 4, !tbaa !17
  br label %599

542:                                              ; preds = %492
  store i64 1, ptr %56, align 8, !tbaa !9
  %543 = load ptr, ptr %25, align 8, !tbaa !5
  %544 = load i64, ptr %543, align 8, !tbaa !9
  %545 = load i64, ptr %56, align 8, !tbaa !9
  %546 = sub nsw i64 %544, %545
  store i64 %546, ptr %57, align 8, !tbaa !9
  %547 = load ptr, ptr %25, align 8, !tbaa !5
  %548 = load i64, ptr %547, align 8, !tbaa !9
  %549 = load ptr, ptr %25, align 8, !tbaa !5
  %550 = load i64, ptr %549, align 8, !tbaa !9
  %551 = mul nsw i64 %548, %550
  %552 = add nsw i64 %551, 1
  store i64 %552, ptr %54, align 8, !tbaa !9
  %553 = load ptr, ptr %38, align 8, !tbaa !5
  %554 = load ptr, ptr %25, align 8, !tbaa !5
  %555 = load i64, ptr %554, align 8, !tbaa !9
  %556 = load i64, ptr %56, align 8, !tbaa !9
  %557 = mul nsw i64 %555, %556
  %558 = load i64, ptr %56, align 8, !tbaa !9
  %559 = add nsw i64 %557, %558
  %560 = add nsw i64 %559, 1
  %561 = getelementptr inbounds %struct.complex, ptr %553, i64 %560
  %562 = load ptr, ptr %25, align 8, !tbaa !5
  %563 = load ptr, ptr %38, align 8, !tbaa !5
  %564 = getelementptr inbounds %struct.complex, ptr %563, i64 1
  %565 = load ptr, ptr %25, align 8, !tbaa !5
  %566 = load ptr, ptr %38, align 8, !tbaa !5
  %567 = load i64, ptr %56, align 8, !tbaa !9
  %568 = add nsw i64 %567, 1
  %569 = getelementptr inbounds %struct.complex, ptr %566, i64 %568
  %570 = load ptr, ptr %25, align 8, !tbaa !5
  %571 = load ptr, ptr %38, align 8, !tbaa !5
  %572 = load ptr, ptr %25, align 8, !tbaa !5
  %573 = load i64, ptr %572, align 8, !tbaa !9
  %574 = load i64, ptr %56, align 8, !tbaa !9
  %575 = mul nsw i64 %573, %574
  %576 = load i64, ptr %56, align 8, !tbaa !9
  %577 = add nsw i64 %575, %576
  %578 = load i64, ptr %54, align 8, !tbaa !9
  %579 = add nsw i64 %577, %578
  %580 = getelementptr inbounds %struct.complex, ptr %571, i64 %579
  %581 = load ptr, ptr %25, align 8, !tbaa !5
  %582 = load ptr, ptr %38, align 8, !tbaa !5
  %583 = load i64, ptr %54, align 8, !tbaa !9
  %584 = getelementptr inbounds %struct.complex, ptr %582, i64 %583
  %585 = load ptr, ptr %25, align 8, !tbaa !5
  %586 = load ptr, ptr %38, align 8, !tbaa !5
  %587 = load i64, ptr %56, align 8, !tbaa !9
  %588 = load i64, ptr %54, align 8, !tbaa !9
  %589 = add nsw i64 %587, %588
  %590 = getelementptr inbounds %struct.complex, ptr %586, i64 %589
  %591 = load ptr, ptr %25, align 8, !tbaa !5
  %592 = load ptr, ptr %35, align 8, !tbaa !5
  %593 = load i64, ptr %58, align 8, !tbaa !9
  %594 = getelementptr inbounds float, ptr %592, i64 %593
  %595 = getelementptr inbounds [1 x %struct.complex], ptr %71, i64 0, i64 0
  %596 = load ptr, ptr %40, align 8, !tbaa !5
  %597 = getelementptr inbounds i64, ptr %596, i64 1
  %598 = call i32 @ctgsyl_(ptr noundef @.str.7, ptr noundef @c__3, ptr noundef %57, ptr noundef %56, ptr noundef %561, ptr noundef %562, ptr noundef %564, ptr noundef %565, ptr noundef %569, ptr noundef %570, ptr noundef %580, ptr noundef %581, ptr noundef %584, ptr noundef %585, ptr noundef %590, ptr noundef %591, ptr noundef %68, ptr noundef %594, ptr noundef %595, ptr noundef @c__1, ptr noundef %597, ptr noundef %61)
  br label %599

599:                                              ; preds = %542, %538
  br label %600

600:                                              ; preds = %599, %474
  br label %601

601:                                              ; preds = %600, %467
  br label %602

602:                                              ; preds = %601, %359
  br label %603

603:                                              ; preds = %602
  %604 = load i64, ptr %55, align 8, !tbaa !9
  %605 = add nsw i64 %604, 1
  store i64 %605, ptr %55, align 8, !tbaa !9
  br label %346, !llvm.loop !18

606:                                              ; preds = %346
  %607 = load i64, ptr %69, align 8, !tbaa !9
  %608 = sitofp i64 %607 to float
  %609 = load ptr, ptr %38, align 8, !tbaa !5
  %610 = getelementptr inbounds %struct.complex, ptr %609, i64 1
  %611 = getelementptr inbounds %struct.complex, ptr %610, i32 0, i32 0
  store float %608, ptr %611, align 4, !tbaa !13
  %612 = load ptr, ptr %38, align 8, !tbaa !5
  %613 = getelementptr inbounds %struct.complex, ptr %612, i64 1
  %614 = getelementptr inbounds %struct.complex, ptr %613, i32 0, i32 1
  store float 0.000000e+00, ptr %614, align 4, !tbaa !16
  store i32 0, ptr %21, align 4
  store i32 1, ptr %79, align 4
  br label %615

615:                                              ; preds = %606, %332, %326, %318
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #3
  %616 = load i32, ptr %21, align 4
  ret i32 %616
}

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

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

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

declare double @slamch_(ptr noundef) #2

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

declare double @f2c_scnrm2(ptr noundef, ptr noundef, ptr noundef) #2

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

declare double @c_abs(ptr noundef) #2

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

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

declare i32 @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 i32 @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"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = 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 i64, align 8
@.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 i64, align 8
@c__3 = external hidden global i64, align 8

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

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

59:                                               ; preds = %55
  %60 = load i64, ptr %3, align 8, !tbaa !5
  %61 = icmp slt i64 %60, 0
  br i1 %61, label %.thread.sink.split, label %62

62:                                               ; preds = %59
  %63 = load i64, ptr %5, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %60, i64 1)
  %64 = icmp slt i64 %63, %spec.select
  br i1 %64, label %.thread.sink.split, label %65

65:                                               ; preds = %62
  %66 = load i64, ptr %7, align 8, !tbaa !5
  %67 = icmp slt i64 %66, %spec.select
  br i1 %67, label %.thread.sink.split, label %68

68:                                               ; preds = %65
  br i1 %48, label %69, label %.critedge

69:                                               ; preds = %68
  %70 = load i64, ptr %9, align 8, !tbaa !5
  %71 = icmp slt i64 %70, %60
  br i1 %71, label %.thread.sink.split, label %72

72:                                               ; preds = %69
  %73 = load i64, ptr %11, align 8, !tbaa !5
  %74 = icmp slt i64 %73, %60
  br i1 %74, label %.thread.sink.split, label %.critedge

.critedge:                                        ; preds = %68, %72
  br i1 %58, label %75, label %91

75:                                               ; preds = %.critedge
  store i64 0, ptr %15, align 8, !tbaa !5
  %76 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %76, ptr %21, align 8, !tbaa !5
  %.not219 = icmp slt i64 %76, 1
  br i1 %.not219, label %.loopexit, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %75
  %xtraiter = and i64 %76, 1
  %77 = icmp eq i64 %76, 1
  br i1 %77, label %.loopexitthread-pre-split.loopexit.unr-lcssa, label %.lr.ph.preheader.new

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

.lr.ph:                                           ; preds = %88, %.lr.ph.preheader.new
  %78 = phi i64 [ 0, %.lr.ph.preheader.new ], [ %89, %88 ]
  %.0204220 = phi i64 [ 1, %.lr.ph.preheader.new ], [ %90, %88 ]
  %niter = phi i64 [ 0, %.lr.ph.preheader.new ], [ %niter.next.1, %88 ]
  %79 = getelementptr inbounds i64, ptr %37, i64 %.0204220
  %80 = load i64, ptr %79, align 8, !tbaa !5
  %.not211 = icmp eq i64 %80, 0
  br i1 %.not211, label %.lr.ph.1, label %81

81:                                               ; preds = %.lr.ph
  %82 = add nsw i64 %78, 1
  store i64 %82, ptr %15, align 8, !tbaa !5
  br label %.lr.ph.1

.lr.ph.1:                                         ; preds = %.lr.ph, %81
  %83 = phi i64 [ %78, %.lr.ph ], [ %82, %81 ]
  %84 = getelementptr i64, ptr %2, i64 %.0204220
  %85 = load i64, ptr %84, align 8, !tbaa !5
  %.not211.1 = icmp eq i64 %85, 0
  br i1 %.not211.1, label %88, label %86

86:                                               ; preds = %.lr.ph.1
  %87 = add nsw i64 %83, 1
  store i64 %87, ptr %15, align 8, !tbaa !5
  br label %88

88:                                               ; preds = %86, %.lr.ph.1
  %89 = phi i64 [ %83, %.lr.ph.1 ], [ %87, %86 ]
  %90 = add nuw i64 %.0204220, 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

91:                                               ; preds = %.critedge
  store i64 %60, ptr %15, align 8, !tbaa !5
  br label %.loopexitthread-pre-split

.loopexitthread-pre-split.loopexit.unr-lcssa.loopexit: ; preds = %88
  %92 = add nsw i64 %89, 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 i64 [ 1, %.lr.ph.preheader ], [ %92, %.loopexitthread-pre-split.loopexit.unr-lcssa.loopexit ]
  %.0204220.unr = phi i64 [ 1, %.lr.ph.preheader ], [ %90, %.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
  %93 = getelementptr inbounds i64, ptr %37, i64 %.0204220.unr
  %94 = load i64, ptr %93, align 8, !tbaa !5
  %.not211.epil = icmp eq i64 %94, 0
  br i1 %.not211.epil, label %.loopexitthread-pre-split, label %95

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

.loopexitthread-pre-split:                        ; preds = %.loopexitthread-pre-split.loopexit.unr-lcssa, %95, %.lr.ph.epil, %91
  %.pr231 = load i64, ptr %3, align 8, !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexitthread-pre-split, %75
  %96 = phi i64 [ %.pr231, %.loopexitthread-pre-split ], [ %76, %75 ]
  %97 = icmp eq i64 %96, 0
  br i1 %97, label %108, label %98

98:                                               ; preds = %.loopexit
  %99 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #4
  %.not209 = icmp eq i64 %99, 0
  br i1 %.not209, label %100, label %102

100:                                              ; preds = %98
  %101 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #4
  %.not210 = icmp eq i64 %101, 0
  br i1 %.not210, label %106, label %102

102:                                              ; preds = %100, %98
  %103 = load i64, ptr %3, align 8, !tbaa !5
  %104 = shl i64 %103, 1
  %105 = mul nsw i64 %104, %103
  br label %108

106:                                              ; preds = %100
  %107 = load i64, ptr %3, align 8, !tbaa !5
  br label %108

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

115:                                              ; preds = %108
  %116 = load i64, ptr %17, align 8, !tbaa !5
  %117 = icmp sge i64 %116, %.0201
  %or.cond5 = select i1 %117, i1 true, i1 %54
  br i1 %or.cond5, label %118, label %.thread.sink.split

118:                                              ; preds = %115
  %.pr = load i64, ptr %19, align 8, !tbaa !5
  %.not212 = icmp eq i64 %.pr, 0
  br i1 %.not212, label %122, label %.thread

.thread.sink.split:                               ; preds = %115, %108, %72, %69, %65, %62, %59, %55, %20
  %.sink = phi i64 [ -1, %20 ], [ -2, %55 ], [ -4, %59 ], [ -6, %62 ], [ -8, %65 ], [ -10, %69 ], [ -12, %72 ], [ -15, %108 ], [ -18, %115 ]
  store i64 %.sink, ptr %19, align 8, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %118
  %119 = phi i64 [ %.pr, %118 ], [ %.sink, %.thread.sink.split ]
  %120 = sub nsw i64 0, %119
  store i64 %120, ptr %21, align 8, !tbaa !5
  %121 = call i32 @xerbla_(ptr noundef nonnull @.str.5, ptr noundef nonnull %21) #4
  br label %198

122:                                              ; preds = %118
  %123 = icmp eq i64 %109, 0
  %or.cond232 = select i1 %54, i1 true, i1 %123
  br i1 %or.cond232, label %198, label %124

124:                                              ; preds = %122
  %125 = tail call double @slamch_(ptr noundef nonnull @.str.6) #4
  %126 = fptrunc double %125 to float
  %127 = tail call double @slamch_(ptr noundef nonnull @.str.3) #4
  %128 = fpext float %126 to double
  %129 = fdiv double %127, %128
  %130 = fptrunc double %129 to float
  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
  %132 = call i32 @slabad_(ptr noundef nonnull %36, ptr noundef nonnull %35) #4
  %133 = load i64, ptr %3, align 8, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %43, i64 8
  %invariant.gep221 = getelementptr i8, ptr %40, i64 8
  %invariant.gep223 = getelementptr i8, ptr %16, i64 8
  %.not213227 = icmp slt i64 %133, 1
  br i1 %.not213227, label %._crit_edge, label %.lr.ph230

.lr.ph230:                                        ; preds = %124
  %.not214 = icmp eq i64 %52, 0
  br label %134

134:                                              ; preds = %.lr.ph230, %196
  %.0202229 = phi i64 [ 0, %.lr.ph230 ], [ %.1203, %196 ]
  %.1205228 = phi i64 [ 1, %.lr.ph230 ], [ %197, %196 ]
  br i1 %.not214, label %138, label %135

135:                                              ; preds = %134
  %136 = getelementptr inbounds i64, ptr %37, i64 %.1205228
  %137 = load i64, ptr %136, align 8, !tbaa !5
  %.not215 = icmp eq i64 %137, 0
  br i1 %.not215, label %196, label %138

138:                                              ; preds = %135, %134
  %139 = add nsw i64 %.0202229, 1
  br i1 %48, label %.sink.split, label %160

.sink.split:                                      ; preds = %138
  %140 = mul nsw i64 %139, %41
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %140
  %141 = call double @f2c_scnrm2(ptr noundef nonnull %3, ptr noundef %gep, ptr noundef nonnull @c__1) #4
  %142 = mul nsw i64 %139, %38
  %gep222 = getelementptr %struct.complex, ptr %invariant.gep221, i64 %142
  %143 = call double @f2c_scnrm2(ptr noundef nonnull %3, ptr noundef %gep222, ptr noundef nonnull @c__1) #4
  %144 = call i32 @f2c_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) #4
  call void @f2c_cdotc(ptr noundef nonnull %24, ptr noundef nonnull %3, ptr noundef nonnull %16, ptr noundef nonnull @c__1, ptr noundef %gep222, ptr noundef nonnull @c__1) #4
  %145 = load <2 x float>, ptr %24, align 8, !tbaa !15
  store <2 x float> %145, ptr %29, align 8, !tbaa !15
  %146 = call i32 @f2c_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) #4
  call void @f2c_cdotc(ptr noundef nonnull %24, ptr noundef nonnull %3, ptr noundef nonnull %16, ptr noundef nonnull @c__1, ptr noundef %gep222, ptr noundef nonnull @c__1) #4
  %147 = load <2 x float>, ptr %24, align 8, !tbaa !15
  store <2 x float> %147, ptr %30, align 8, !tbaa !15
  %148 = call double @c_abs(ptr noundef nonnull %29) #4
  %149 = fptrunc double %148 to float
  store float %149, ptr %22, align 4, !tbaa !15
  %150 = call double @c_abs(ptr noundef nonnull %30) #4
  %151 = fptrunc double %150 to float
  store float %151, ptr %23, align 4, !tbaa !15
  %152 = call double @slapy2_(ptr noundef nonnull %22, ptr noundef nonnull %23) #4
  %153 = fptrunc double %152 to float
  %154 = fcmp oeq float %153, 0.000000e+00
  %155 = fptrunc double %143 to float
  %156 = fptrunc double %141 to float
  %157 = fmul float %156, %155
  %158 = fdiv float %153, %157
  %.sink233 = select i1 %154, float -1.000000e+00, float %158
  %159 = getelementptr float, ptr %12, i64 %.0202229
  store float %.sink233, ptr %159, align 4, !tbaa !15
  br label %160

160:                                              ; preds = %.sink.split, %138
  br i1 %51, label %161, label %196

161:                                              ; preds = %160
  %162 = load i64, ptr %3, align 8, !tbaa !5
  %163 = icmp eq i64 %162, 1
  br i1 %163, label %164, label %172

164:                                              ; preds = %161
  %165 = call double @c_abs(ptr noundef %4) #4
  %166 = fptrunc double %165 to float
  store float %166, ptr %22, align 4, !tbaa !15
  %167 = call double @c_abs(ptr noundef %6) #4
  %168 = fptrunc double %167 to float
  store float %168, ptr %23, align 4, !tbaa !15
  %169 = call double @slapy2_(ptr noundef nonnull %22, ptr noundef nonnull %23) #4
  %170 = fptrunc double %169 to float
  %171 = getelementptr float, ptr %13, i64 %.0202229
  store float %170, ptr %171, align 4, !tbaa !15
  br label %196

172:                                              ; preds = %161
  %173 = call i32 @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) #4
  %174 = load i64, ptr %3, align 8, !tbaa !5
  %175 = mul nsw i64 %174, %174
  %176 = getelementptr %struct.complex, ptr %16, i64 %175
  %177 = call i32 @clacpy_(ptr noundef nonnull @.str.8, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %176, ptr noundef nonnull %3) #4
  store i64 %.1205228, ptr %28, align 8, !tbaa !5
  store i64 1, ptr %31, align 8, !tbaa !5
  %178 = load i64, ptr %3, align 8, !tbaa !5
  %179 = mul nsw i64 %178, %178
  %180 = getelementptr %struct.complex, ptr %16, i64 %179
  %181 = call i32 @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 %180, ptr noundef nonnull %3, ptr noundef nonnull %33, ptr noundef nonnull @c__1, ptr noundef nonnull %34, ptr noundef nonnull @c__1, ptr noundef nonnull %28, ptr noundef nonnull %31, ptr noundef nonnull %27) #4
  %182 = load i64, ptr %27, align 8, !tbaa !5
  %183 = icmp sgt i64 %182, 0
  br i1 %183, label %184, label %186

184:                                              ; preds = %172
  %185 = getelementptr float, ptr %13, i64 %.0202229
  store float 0.000000e+00, ptr %185, align 4, !tbaa !15
  br label %196

186:                                              ; preds = %172
  store i64 1, ptr %25, align 8, !tbaa !5
  %187 = load i64, ptr %3, align 8, !tbaa !5
  %188 = add nsw i64 %187, -1
  store i64 %188, ptr %26, align 8, !tbaa !5
  %189 = mul nsw i64 %187, %187
  %gep224 = getelementptr %struct.complex, ptr %invariant.gep223, i64 %187
  %190 = getelementptr %struct.complex, ptr %16, i64 %187
  %191 = getelementptr %struct.complex, ptr %190, i64 %189
  %192 = getelementptr i8, ptr %191, i64 8
  %193 = getelementptr %struct.complex, ptr %16, i64 %189
  %gep226 = getelementptr inbounds %struct.complex, ptr %invariant.gep223, i64 %189
  %194 = getelementptr float, ptr %13, i64 %.0202229
  %195 = call i32 @ctgsyl_(ptr noundef nonnull @.str.7, ptr noundef nonnull @c__3, ptr noundef nonnull %26, ptr noundef nonnull %25, ptr noundef %gep224, ptr noundef nonnull %3, ptr noundef nonnull %16, ptr noundef nonnull %3, ptr noundef nonnull %invariant.gep223, ptr noundef nonnull %3, ptr noundef %192, ptr noundef nonnull %3, ptr noundef %193, ptr noundef nonnull %3, ptr noundef nonnull %gep226, ptr noundef nonnull %3, ptr noundef nonnull %32, ptr noundef %194, ptr noundef nonnull %33, ptr noundef nonnull @c__1, ptr noundef %18, ptr noundef nonnull %27) #4
  br label %196

196:                                              ; preds = %135, %164, %186, %184, %160
  %.1203 = phi i64 [ %139, %164 ], [ %139, %184 ], [ %139, %186 ], [ %139, %160 ], [ %.0202229, %135 ]
  %197 = add nuw nsw i64 %.1205228, 1
  %.not213.not = icmp slt i64 %.1205228, %133
  br i1 %.not213.not, label %134, label %._crit_edge, !llvm.loop !16

._crit_edge:                                      ; preds = %196, %124
  store float %110, ptr %16, align 4, !tbaa !11
  store float 0.000000e+00, ptr %111, align 4, !tbaa !14
  br label %198

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

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

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

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

declare double @slamch_(ptr noundef) local_unnamed_addr #2

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

declare double @f2c_scnrm2(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @f2c_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

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

declare double @c_abs(ptr noundef) local_unnamed_addr #2

declare double @slapy2_(ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = 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: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass