; LLVM IR from niuyishuai/PDCABB :: LAPACK_BLAS/LAPACK (cgbsvx)

; 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 [13 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [7 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [8 x i8], align 1

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

142:                                              ; preds = %24
  %143 = load i64, ptr %75, align 8, !tbaa !9
  %144 = icmp ne i64 %143, 0
  br i1 %144, label %145, label %147

145:                                              ; preds = %142, %24
  %146 = load ptr, ptr %37, align 8, !tbaa !5
  store i8 78, ptr %146, align 1, !tbaa !11
  store i64 0, ptr %84, align 8, !tbaa !9
  store i64 0, ptr %80, align 8, !tbaa !9
  br label %174

147:                                              ; preds = %142
  %148 = load ptr, ptr %37, align 8, !tbaa !5
  %149 = call i64 @lsame_(ptr noundef %148, ptr noundef @.str.2)
  %150 = icmp ne i64 %149, 0
  br i1 %150, label %155, label %151

151:                                              ; preds = %147
  %152 = load ptr, ptr %37, align 8, !tbaa !5
  %153 = call i64 @lsame_(ptr noundef %152, ptr noundef @.str.3)
  %154 = icmp ne i64 %153, 0
  br label %155

155:                                              ; preds = %151, %147
  %156 = phi i1 [ true, %147 ], [ %154, %151 ]
  %157 = zext i1 %156 to i32
  %158 = sext i32 %157 to i64
  store i64 %158, ptr %84, align 8, !tbaa !9
  %159 = load ptr, ptr %37, align 8, !tbaa !5
  %160 = call i64 @lsame_(ptr noundef %159, ptr noundef @.str.4)
  %161 = icmp ne i64 %160, 0
  br i1 %161, label %166, label %162

162:                                              ; preds = %155
  %163 = load ptr, ptr %37, align 8, !tbaa !5
  %164 = call i64 @lsame_(ptr noundef %163, ptr noundef @.str.3)
  %165 = icmp ne i64 %164, 0
  br label %166

166:                                              ; preds = %162, %155
  %167 = phi i1 [ true, %155 ], [ %165, %162 ]
  %168 = zext i1 %167 to i32
  %169 = sext i32 %168 to i64
  store i64 %169, ptr %80, align 8, !tbaa !9
  %170 = call double @slamch_(ptr noundef @.str.5)
  %171 = fptrunc double %170 to float
  store float %171, ptr %83, align 4, !tbaa !12
  %172 = load float, ptr %83, align 4, !tbaa !12
  %173 = fdiv float 1.000000e+00, %172
  store float %173, ptr %78, align 4, !tbaa !12
  br label %174

174:                                              ; preds = %166, %145
  %175 = load i64, ptr %77, align 8, !tbaa !9
  %176 = icmp ne i64 %175, 0
  br i1 %176, label %186, label %177

177:                                              ; preds = %174
  %178 = load i64, ptr %75, align 8, !tbaa !9
  %179 = icmp ne i64 %178, 0
  br i1 %179, label %186, label %180

180:                                              ; preds = %177
  %181 = load ptr, ptr %26, align 8, !tbaa !5
  %182 = call i64 @lsame_(ptr noundef %181, ptr noundef @.str.6)
  %183 = icmp ne i64 %182, 0
  br i1 %183, label %186, label %184

184:                                              ; preds = %180
  %185 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -1, ptr %185, align 8, !tbaa !9
  br label %477

186:                                              ; preds = %180, %177, %174
  %187 = load i64, ptr %82, align 8, !tbaa !9
  %188 = icmp ne i64 %187, 0
  br i1 %188, label %199, label %189

189:                                              ; preds = %186
  %190 = load ptr, ptr %27, align 8, !tbaa !5
  %191 = call i64 @lsame_(ptr noundef %190, ptr noundef @.str.7)
  %192 = icmp ne i64 %191, 0
  br i1 %192, label %199, label %193

193:                                              ; preds = %189
  %194 = load ptr, ptr %27, align 8, !tbaa !5
  %195 = call i64 @lsame_(ptr noundef %194, ptr noundef @.str.4)
  %196 = icmp ne i64 %195, 0
  br i1 %196, label %199, label %197

197:                                              ; preds = %193
  %198 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -2, ptr %198, align 8, !tbaa !9
  br label %476

199:                                              ; preds = %193, %189, %186
  %200 = load ptr, ptr %28, align 8, !tbaa !5
  %201 = load i64, ptr %200, align 8, !tbaa !9
  %202 = icmp slt i64 %201, 0
  br i1 %202, label %203, label %205

203:                                              ; preds = %199
  %204 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -3, ptr %204, align 8, !tbaa !9
  br label %475

205:                                              ; preds = %199
  %206 = load ptr, ptr %29, align 8, !tbaa !5
  %207 = load i64, ptr %206, align 8, !tbaa !9
  %208 = icmp slt i64 %207, 0
  br i1 %208, label %209, label %211

209:                                              ; preds = %205
  %210 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -4, ptr %210, align 8, !tbaa !9
  br label %474

211:                                              ; preds = %205
  %212 = load ptr, ptr %30, align 8, !tbaa !5
  %213 = load i64, ptr %212, align 8, !tbaa !9
  %214 = icmp slt i64 %213, 0
  br i1 %214, label %215, label %217

215:                                              ; preds = %211
  %216 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -5, ptr %216, align 8, !tbaa !9
  br label %473

217:                                              ; preds = %211
  %218 = load ptr, ptr %31, align 8, !tbaa !5
  %219 = load i64, ptr %218, align 8, !tbaa !9
  %220 = icmp slt i64 %219, 0
  br i1 %220, label %221, label %223

221:                                              ; preds = %217
  %222 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -6, ptr %222, align 8, !tbaa !9
  br label %472

223:                                              ; preds = %217
  %224 = load ptr, ptr %33, align 8, !tbaa !5
  %225 = load i64, ptr %224, align 8, !tbaa !9
  %226 = load ptr, ptr %29, align 8, !tbaa !5
  %227 = load i64, ptr %226, align 8, !tbaa !9
  %228 = load ptr, ptr %30, align 8, !tbaa !5
  %229 = load i64, ptr %228, align 8, !tbaa !9
  %230 = add nsw i64 %227, %229
  %231 = add nsw i64 %230, 1
  %232 = icmp slt i64 %225, %231
  br i1 %232, label %233, label %235

233:                                              ; preds = %223
  %234 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -8, ptr %234, align 8, !tbaa !9
  br label %471

235:                                              ; preds = %223
  %236 = load ptr, ptr %35, align 8, !tbaa !5
  %237 = load i64, ptr %236, align 8, !tbaa !9
  %238 = load ptr, ptr %29, align 8, !tbaa !5
  %239 = load i64, ptr %238, align 8, !tbaa !9
  %240 = shl i64 %239, 1
  %241 = load ptr, ptr %30, align 8, !tbaa !5
  %242 = load i64, ptr %241, align 8, !tbaa !9
  %243 = add nsw i64 %240, %242
  %244 = add nsw i64 %243, 1
  %245 = icmp slt i64 %237, %244
  br i1 %245, label %246, label %248

246:                                              ; preds = %235
  %247 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -10, ptr %247, align 8, !tbaa !9
  br label %470

248:                                              ; preds = %235
  %249 = load ptr, ptr %26, align 8, !tbaa !5
  %250 = call i64 @lsame_(ptr noundef %249, ptr noundef @.str.6)
  %251 = icmp ne i64 %250, 0
  br i1 %251, label %252, label %264

252:                                              ; preds = %248
  %253 = load i64, ptr %84, align 8, !tbaa !9
  %254 = icmp ne i64 %253, 0
  br i1 %254, label %264, label %255

255:                                              ; preds = %252
  %256 = load i64, ptr %80, align 8, !tbaa !9
  %257 = icmp ne i64 %256, 0
  br i1 %257, label %264, label %258

258:                                              ; preds = %255
  %259 = load ptr, ptr %37, align 8, !tbaa !5
  %260 = call i64 @lsame_(ptr noundef %259, ptr noundef @.str)
  %261 = icmp ne i64 %260, 0
  br i1 %261, label %264, label %262

262:                                              ; preds = %258
  %263 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -12, ptr %263, align 8, !tbaa !9
  br label %469

264:                                              ; preds = %258, %255, %252, %248
  %265 = load i64, ptr %84, align 8, !tbaa !9
  %266 = icmp ne i64 %265, 0
  br i1 %266, label %267, label %346

267:                                              ; preds = %264
  %268 = load float, ptr %78, align 4, !tbaa !12
  store float %268, ptr %72, align 4, !tbaa !12
  store float 0.000000e+00, ptr %73, align 4, !tbaa !12
  %269 = load ptr, ptr %28, align 8, !tbaa !5
  %270 = load i64, ptr %269, align 8, !tbaa !9
  store i64 %270, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %67, align 8, !tbaa !9
  br label %271

271:                                              ; preds = %308, %267
  %272 = load i64, ptr %67, align 8, !tbaa !9
  %273 = load i64, ptr %58, align 8, !tbaa !9
  %274 = icmp sle i64 %272, %273
  br i1 %274, label %275, label %311

275:                                              ; preds = %271
  %276 = load float, ptr %72, align 4, !tbaa !12
  store float %276, ptr %63, align 4, !tbaa !12
  %277 = load ptr, ptr %38, align 8, !tbaa !5
  %278 = load i64, ptr %67, align 8, !tbaa !9
  %279 = getelementptr inbounds float, ptr %277, i64 %278
  %280 = load float, ptr %279, align 4, !tbaa !12
  store float %280, ptr %64, align 4, !tbaa !12
  %281 = load float, ptr %63, align 4, !tbaa !12
  %282 = load float, ptr %64, align 4, !tbaa !12
  %283 = fcmp ole float %281, %282
  br i1 %283, label %284, label %286

284:                                              ; preds = %275
  %285 = load float, ptr %63, align 4, !tbaa !12
  br label %288

286:                                              ; preds = %275
  %287 = load float, ptr %64, align 4, !tbaa !12
  br label %288

288:                                              ; preds = %286, %284
  %289 = phi float [ %285, %284 ], [ %287, %286 ]
  %290 = fpext float %289 to double
  %291 = fptrunc double %290 to float
  store float %291, ptr %72, align 4, !tbaa !12
  %292 = load float, ptr %73, align 4, !tbaa !12
  store float %292, ptr %63, align 4, !tbaa !12
  %293 = load ptr, ptr %38, align 8, !tbaa !5
  %294 = load i64, ptr %67, align 8, !tbaa !9
  %295 = getelementptr inbounds float, ptr %293, i64 %294
  %296 = load float, ptr %295, align 4, !tbaa !12
  store float %296, ptr %64, align 4, !tbaa !12
  %297 = load float, ptr %63, align 4, !tbaa !12
  %298 = load float, ptr %64, align 4, !tbaa !12
  %299 = fcmp oge float %297, %298
  br i1 %299, label %300, label %302

300:                                              ; preds = %288
  %301 = load float, ptr %63, align 4, !tbaa !12
  br label %304

302:                                              ; preds = %288
  %303 = load float, ptr %64, align 4, !tbaa !12
  br label %304

304:                                              ; preds = %302, %300
  %305 = phi float [ %301, %300 ], [ %303, %302 ]
  %306 = fpext float %305 to double
  %307 = fptrunc double %306 to float
  store float %307, ptr %73, align 4, !tbaa !12
  br label %308

308:                                              ; preds = %304
  %309 = load i64, ptr %67, align 8, !tbaa !9
  %310 = add nsw i64 %309, 1
  store i64 %310, ptr %67, align 8, !tbaa !9
  br label %271, !llvm.loop !14

311:                                              ; preds = %271
  %312 = load float, ptr %72, align 4, !tbaa !12
  %313 = fcmp ole float %312, 0.000000e+00
  br i1 %313, label %314, label %316

314:                                              ; preds = %311
  %315 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -13, ptr %315, align 8, !tbaa !9
  br label %345

316:                                              ; preds = %311
  %317 = load ptr, ptr %28, align 8, !tbaa !5
  %318 = load i64, ptr %317, align 8, !tbaa !9
  %319 = icmp sgt i64 %318, 0
  br i1 %319, label %320, label %343

320:                                              ; preds = %316
  %321 = load float, ptr %72, align 4, !tbaa !12
  %322 = load float, ptr %83, align 4, !tbaa !12
  %323 = fcmp oge float %321, %322
  br i1 %323, label %324, label %326

324:                                              ; preds = %320
  %325 = load float, ptr %72, align 4, !tbaa !12
  br label %328

326:                                              ; preds = %320
  %327 = load float, ptr %83, align 4, !tbaa !12
  br label %328

328:                                              ; preds = %326, %324
  %329 = phi float [ %325, %324 ], [ %327, %326 ]
  %330 = fpext float %329 to double
  %331 = load float, ptr %73, align 4, !tbaa !12
  %332 = load float, ptr %78, align 4, !tbaa !12
  %333 = fcmp ole float %331, %332
  br i1 %333, label %334, label %336

334:                                              ; preds = %328
  %335 = load float, ptr %73, align 4, !tbaa !12
  br label %338

336:                                              ; preds = %328
  %337 = load float, ptr %78, align 4, !tbaa !12
  br label %338

338:                                              ; preds = %336, %334
  %339 = phi float [ %335, %334 ], [ %337, %336 ]
  %340 = fpext float %339 to double
  %341 = fdiv double %330, %340
  %342 = fptrunc double %341 to float
  store float %342, ptr %81, align 4, !tbaa !12
  br label %344

343:                                              ; preds = %316
  store float 1.000000e+00, ptr %81, align 4, !tbaa !12
  br label %344

344:                                              ; preds = %343, %338
  br label %345

345:                                              ; preds = %344, %314
  br label %346

346:                                              ; preds = %345, %264
  %347 = load i64, ptr %80, align 8, !tbaa !9
  %348 = icmp ne i64 %347, 0
  br i1 %348, label %349, label %432

349:                                              ; preds = %346
  %350 = load ptr, ptr %49, align 8, !tbaa !5
  %351 = load i64, ptr %350, align 8, !tbaa !9
  %352 = icmp eq i64 %351, 0
  br i1 %352, label %353, label %432

353:                                              ; preds = %349
  %354 = load float, ptr %78, align 4, !tbaa !12
  store float %354, ptr %72, align 4, !tbaa !12
  store float 0.000000e+00, ptr %73, align 4, !tbaa !12
  %355 = load ptr, ptr %28, align 8, !tbaa !5
  %356 = load i64, ptr %355, align 8, !tbaa !9
  store i64 %356, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %67, align 8, !tbaa !9
  br label %357

357:                                              ; preds = %394, %353
  %358 = load i64, ptr %67, align 8, !tbaa !9
  %359 = load i64, ptr %58, align 8, !tbaa !9
  %360 = icmp sle i64 %358, %359
  br i1 %360, label %361, label %397

361:                                              ; preds = %357
  %362 = load float, ptr %72, align 4, !tbaa !12
  store float %362, ptr %63, align 4, !tbaa !12
  %363 = load ptr, ptr %39, align 8, !tbaa !5
  %364 = load i64, ptr %67, align 8, !tbaa !9
  %365 = getelementptr inbounds float, ptr %363, i64 %364
  %366 = load float, ptr %365, align 4, !tbaa !12
  store float %366, ptr %64, align 4, !tbaa !12
  %367 = load float, ptr %63, align 4, !tbaa !12
  %368 = load float, ptr %64, align 4, !tbaa !12
  %369 = fcmp ole float %367, %368
  br i1 %369, label %370, label %372

370:                                              ; preds = %361
  %371 = load float, ptr %63, align 4, !tbaa !12
  br label %374

372:                                              ; preds = %361
  %373 = load float, ptr %64, align 4, !tbaa !12
  br label %374

374:                                              ; preds = %372, %370
  %375 = phi float [ %371, %370 ], [ %373, %372 ]
  %376 = fpext float %375 to double
  %377 = fptrunc double %376 to float
  store float %377, ptr %72, align 4, !tbaa !12
  %378 = load float, ptr %73, align 4, !tbaa !12
  store float %378, ptr %63, align 4, !tbaa !12
  %379 = load ptr, ptr %39, align 8, !tbaa !5
  %380 = load i64, ptr %67, align 8, !tbaa !9
  %381 = getelementptr inbounds float, ptr %379, i64 %380
  %382 = load float, ptr %381, align 4, !tbaa !12
  store float %382, ptr %64, align 4, !tbaa !12
  %383 = load float, ptr %63, align 4, !tbaa !12
  %384 = load float, ptr %64, align 4, !tbaa !12
  %385 = fcmp oge float %383, %384
  br i1 %385, label %386, label %388

386:                                              ; preds = %374
  %387 = load float, ptr %63, align 4, !tbaa !12
  br label %390

388:                                              ; preds = %374
  %389 = load float, ptr %64, align 4, !tbaa !12
  br label %390

390:                                              ; preds = %388, %386
  %391 = phi float [ %387, %386 ], [ %389, %388 ]
  %392 = fpext float %391 to double
  %393 = fptrunc double %392 to float
  store float %393, ptr %73, align 4, !tbaa !12
  br label %394

394:                                              ; preds = %390
  %395 = load i64, ptr %67, align 8, !tbaa !9
  %396 = add nsw i64 %395, 1
  store i64 %396, ptr %67, align 8, !tbaa !9
  br label %357, !llvm.loop !16

397:                                              ; preds = %357
  %398 = load float, ptr %72, align 4, !tbaa !12
  %399 = fcmp ole float %398, 0.000000e+00
  br i1 %399, label %400, label %402

400:                                              ; preds = %397
  %401 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -14, ptr %401, align 8, !tbaa !9
  br label %431

402:                                              ; preds = %397
  %403 = load ptr, ptr %28, align 8, !tbaa !5
  %404 = load i64, ptr %403, align 8, !tbaa !9
  %405 = icmp sgt i64 %404, 0
  br i1 %405, label %406, label %429

406:                                              ; preds = %402
  %407 = load float, ptr %72, align 4, !tbaa !12
  %408 = load float, ptr %83, align 4, !tbaa !12
  %409 = fcmp oge float %407, %408
  br i1 %409, label %410, label %412

410:                                              ; preds = %406
  %411 = load float, ptr %72, align 4, !tbaa !12
  br label %414

412:                                              ; preds = %406
  %413 = load float, ptr %83, align 4, !tbaa !12
  br label %414

414:                                              ; preds = %412, %410
  %415 = phi float [ %411, %410 ], [ %413, %412 ]
  %416 = fpext float %415 to double
  %417 = load float, ptr %73, align 4, !tbaa !12
  %418 = load float, ptr %78, align 4, !tbaa !12
  %419 = fcmp ole float %417, %418
  br i1 %419, label %420, label %422

420:                                              ; preds = %414
  %421 = load float, ptr %73, align 4, !tbaa !12
  br label %424

422:                                              ; preds = %414
  %423 = load float, ptr %78, align 4, !tbaa !12
  br label %424

424:                                              ; preds = %422, %420
  %425 = phi float [ %421, %420 ], [ %423, %422 ]
  %426 = fpext float %425 to double
  %427 = fdiv double %416, %426
  %428 = fptrunc double %427 to float
  store float %428, ptr %76, align 4, !tbaa !12
  br label %430

429:                                              ; preds = %402
  store float 1.000000e+00, ptr %76, align 4, !tbaa !12
  br label %430

430:                                              ; preds = %429, %424
  br label %431

431:                                              ; preds = %430, %400
  br label %432

432:                                              ; preds = %431, %349, %346
  %433 = load ptr, ptr %49, align 8, !tbaa !5
  %434 = load i64, ptr %433, align 8, !tbaa !9
  %435 = icmp eq i64 %434, 0
  br i1 %435, label %436, label %468

436:                                              ; preds = %432
  %437 = load ptr, ptr %41, align 8, !tbaa !5
  %438 = load i64, ptr %437, align 8, !tbaa !9
  %439 = load ptr, ptr %28, align 8, !tbaa !5
  %440 = load i64, ptr %439, align 8, !tbaa !9
  %441 = icmp sge i64 1, %440
  br i1 %441, label %442, label %443

442:                                              ; preds = %436
  br label %446

443:                                              ; preds = %436
  %444 = load ptr, ptr %28, align 8, !tbaa !5
  %445 = load i64, ptr %444, align 8, !tbaa !9
  br label %446

446:                                              ; preds = %443, %442
  %447 = phi i64 [ 1, %442 ], [ %445, %443 ]
  %448 = icmp slt i64 %438, %447
  br i1 %448, label %449, label %451

449:                                              ; preds = %446
  %450 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -16, ptr %450, align 8, !tbaa !9
  br label %467

451:                                              ; preds = %446
  %452 = load ptr, ptr %43, align 8, !tbaa !5
  %453 = load i64, ptr %452, align 8, !tbaa !9
  %454 = load ptr, ptr %28, align 8, !tbaa !5
  %455 = load i64, ptr %454, align 8, !tbaa !9
  %456 = icmp sge i64 1, %455
  br i1 %456, label %457, label %458

457:                                              ; preds = %451
  br label %461

458:                                              ; preds = %451
  %459 = load ptr, ptr %28, align 8, !tbaa !5
  %460 = load i64, ptr %459, align 8, !tbaa !9
  br label %461

461:                                              ; preds = %458, %457
  %462 = phi i64 [ 1, %457 ], [ %460, %458 ]
  %463 = icmp slt i64 %453, %462
  br i1 %463, label %464, label %466

464:                                              ; preds = %461
  %465 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -18, ptr %465, align 8, !tbaa !9
  br label %466

466:                                              ; preds = %464, %461
  br label %467

467:                                              ; preds = %466, %449
  br label %468

468:                                              ; preds = %467, %432
  br label %469

469:                                              ; preds = %468, %262
  br label %470

470:                                              ; preds = %469, %246
  br label %471

471:                                              ; preds = %470, %233
  br label %472

472:                                              ; preds = %471, %221
  br label %473

473:                                              ; preds = %472, %215
  br label %474

474:                                              ; preds = %473, %209
  br label %475

475:                                              ; preds = %474, %203
  br label %476

476:                                              ; preds = %475, %197
  br label %477

477:                                              ; preds = %476, %184
  %478 = load ptr, ptr %49, align 8, !tbaa !5
  %479 = load i64, ptr %478, align 8, !tbaa !9
  %480 = icmp ne i64 %479, 0
  br i1 %480, label %481, label %486

481:                                              ; preds = %477
  %482 = load ptr, ptr %49, align 8, !tbaa !5
  %483 = load i64, ptr %482, align 8, !tbaa !9
  %484 = sub nsw i64 0, %483
  store i64 %484, ptr %58, align 8, !tbaa !9
  %485 = call i32 @xerbla_(ptr noundef @.str.8, ptr noundef %58)
  store i32 0, ptr %25, align 4
  store i32 1, ptr %86, align 4
  br label %1244

486:                                              ; preds = %477
  %487 = load i64, ptr %75, align 8, !tbaa !9
  %488 = icmp ne i64 %487, 0
  br i1 %488, label %489, label %543

489:                                              ; preds = %486
  %490 = load ptr, ptr %28, align 8, !tbaa !5
  %491 = load ptr, ptr %28, align 8, !tbaa !5
  %492 = load ptr, ptr %29, align 8, !tbaa !5
  %493 = load ptr, ptr %30, align 8, !tbaa !5
  %494 = load ptr, ptr %32, align 8, !tbaa !5
  %495 = load i64, ptr %51, align 8, !tbaa !9
  %496 = getelementptr inbounds %struct.complex, ptr %494, i64 %495
  %497 = load ptr, ptr %33, align 8, !tbaa !5
  %498 = load ptr, ptr %38, align 8, !tbaa !5
  %499 = getelementptr inbounds float, ptr %498, i64 1
  %500 = load ptr, ptr %39, align 8, !tbaa !5
  %501 = getelementptr inbounds float, ptr %500, i64 1
  %502 = call i32 @cgbequ_(ptr noundef %490, ptr noundef %491, ptr noundef %492, ptr noundef %493, ptr noundef %496, ptr noundef %497, ptr noundef %499, ptr noundef %501, ptr noundef %81, ptr noundef %76, ptr noundef %70, ptr noundef %79)
  %503 = load i64, ptr %79, align 8, !tbaa !9
  %504 = icmp eq i64 %503, 0
  br i1 %504, label %505, label %542

505:                                              ; preds = %489
  %506 = load ptr, ptr %28, align 8, !tbaa !5
  %507 = load ptr, ptr %28, align 8, !tbaa !5
  %508 = load ptr, ptr %29, align 8, !tbaa !5
  %509 = load ptr, ptr %30, align 8, !tbaa !5
  %510 = load ptr, ptr %32, align 8, !tbaa !5
  %511 = load i64, ptr %51, align 8, !tbaa !9
  %512 = getelementptr inbounds %struct.complex, ptr %510, i64 %511
  %513 = load ptr, ptr %33, align 8, !tbaa !5
  %514 = load ptr, ptr %38, align 8, !tbaa !5
  %515 = getelementptr inbounds float, ptr %514, i64 1
  %516 = load ptr, ptr %39, align 8, !tbaa !5
  %517 = getelementptr inbounds float, ptr %516, i64 1
  %518 = load ptr, ptr %37, align 8, !tbaa !5
  %519 = call i32 @claqgb_(ptr noundef %506, ptr noundef %507, ptr noundef %508, ptr noundef %509, ptr noundef %512, ptr noundef %513, ptr noundef %515, ptr noundef %517, ptr noundef %81, ptr noundef %76, ptr noundef %70, ptr noundef %518)
  %520 = load ptr, ptr %37, align 8, !tbaa !5
  %521 = call i64 @lsame_(ptr noundef %520, ptr noundef @.str.2)
  %522 = icmp ne i64 %521, 0
  br i1 %522, label %527, label %523

523:                                              ; preds = %505
  %524 = load ptr, ptr %37, align 8, !tbaa !5
  %525 = call i64 @lsame_(ptr noundef %524, ptr noundef @.str.3)
  %526 = icmp ne i64 %525, 0
  br label %527

527:                                              ; preds = %523, %505
  %528 = phi i1 [ true, %505 ], [ %526, %523 ]
  %529 = zext i1 %528 to i32
  %530 = sext i32 %529 to i64
  store i64 %530, ptr %84, align 8, !tbaa !9
  %531 = load ptr, ptr %37, align 8, !tbaa !5
  %532 = call i64 @lsame_(ptr noundef %531, ptr noundef @.str.4)
  %533 = icmp ne i64 %532, 0
  br i1 %533, label %538, label %534

534:                                              ; preds = %527
  %535 = load ptr, ptr %37, align 8, !tbaa !5
  %536 = call i64 @lsame_(ptr noundef %535, ptr noundef @.str.3)
  %537 = icmp ne i64 %536, 0
  br label %538

538:                                              ; preds = %534, %527
  %539 = phi i1 [ true, %527 ], [ %537, %534 ]
  %540 = zext i1 %539 to i32
  %541 = sext i32 %540 to i64
  store i64 %541, ptr %80, align 8, !tbaa !9
  br label %542

542:                                              ; preds = %538, %489
  br label %543

543:                                              ; preds = %542, %486
  %544 = load i64, ptr %82, align 8, !tbaa !9
  %545 = icmp ne i64 %544, 0
  br i1 %545, label %546, label %618

546:                                              ; preds = %543
  %547 = load i64, ptr %84, align 8, !tbaa !9
  %548 = icmp ne i64 %547, 0
  br i1 %548, label %549, label %617

549:                                              ; preds = %546
  %550 = load ptr, ptr %31, align 8, !tbaa !5
  %551 = load i64, ptr %550, align 8, !tbaa !9
  store i64 %551, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %67, align 8, !tbaa !9
  br label %552

552:                                              ; preds = %613, %549
  %553 = load i64, ptr %67, align 8, !tbaa !9
  %554 = load i64, ptr %58, align 8, !tbaa !9
  %555 = icmp sle i64 %553, %554
  br i1 %555, label %556, label %616

556:                                              ; preds = %552
  %557 = load ptr, ptr %28, align 8, !tbaa !5
  %558 = load i64, ptr %557, align 8, !tbaa !9
  store i64 %558, ptr %59, align 8, !tbaa !9
  store i64 1, ptr %66, align 8, !tbaa !9
  br label %559

559:                                              ; preds = %609, %556
  %560 = load i64, ptr %66, align 8, !tbaa !9
  %561 = load i64, ptr %59, align 8, !tbaa !9
  %562 = icmp sle i64 %560, %561
  br i1 %562, label %563, label %612

563:                                              ; preds = %559
  %564 = load i64, ptr %66, align 8, !tbaa !9
  %565 = load i64, ptr %67, align 8, !tbaa !9
  %566 = load i64, ptr %54, align 8, !tbaa !9
  %567 = mul nsw i64 %565, %566
  %568 = add nsw i64 %564, %567
  store i64 %568, ptr %60, align 8, !tbaa !9
  %569 = load i64, ptr %66, align 8, !tbaa !9
  store i64 %569, ptr %61, align 8, !tbaa !9
  %570 = load i64, ptr %66, align 8, !tbaa !9
  %571 = load i64, ptr %67, align 8, !tbaa !9
  %572 = load i64, ptr %54, align 8, !tbaa !9
  %573 = mul nsw i64 %571, %572
  %574 = add nsw i64 %570, %573
  store i64 %574, ptr %62, align 8, !tbaa !9
  %575 = load ptr, ptr %38, align 8, !tbaa !5
  %576 = load i64, ptr %61, align 8, !tbaa !9
  %577 = getelementptr inbounds float, ptr %575, i64 %576
  %578 = load float, ptr %577, align 4, !tbaa !12
  %579 = load ptr, ptr %40, align 8, !tbaa !5
  %580 = load i64, ptr %62, align 8, !tbaa !9
  %581 = getelementptr inbounds %struct.complex, ptr %579, i64 %580
  %582 = getelementptr inbounds %struct.complex, ptr %581, i32 0, i32 0
  %583 = load float, ptr %582, align 4, !tbaa !17
  %584 = fmul float %578, %583
  %585 = getelementptr inbounds %struct.complex, ptr %65, i32 0, i32 0
  store float %584, ptr %585, align 4, !tbaa !17
  %586 = load ptr, ptr %38, align 8, !tbaa !5
  %587 = load i64, ptr %61, align 8, !tbaa !9
  %588 = getelementptr inbounds float, ptr %586, i64 %587
  %589 = load float, ptr %588, align 4, !tbaa !12
  %590 = load ptr, ptr %40, align 8, !tbaa !5
  %591 = load i64, ptr %62, align 8, !tbaa !9
  %592 = getelementptr inbounds %struct.complex, ptr %590, i64 %591
  %593 = getelementptr inbounds %struct.complex, ptr %592, i32 0, i32 1
  %594 = load float, ptr %593, align 4, !tbaa !19
  %595 = fmul float %589, %594
  %596 = getelementptr inbounds %struct.complex, ptr %65, i32 0, i32 1
  store float %595, ptr %596, align 4, !tbaa !19
  %597 = getelementptr inbounds %struct.complex, ptr %65, i32 0, i32 0
  %598 = load float, ptr %597, align 4, !tbaa !17
  %599 = load ptr, ptr %40, align 8, !tbaa !5
  %600 = load i64, ptr %60, align 8, !tbaa !9
  %601 = getelementptr inbounds %struct.complex, ptr %599, i64 %600
  %602 = getelementptr inbounds %struct.complex, ptr %601, i32 0, i32 0
  store float %598, ptr %602, align 4, !tbaa !17
  %603 = getelementptr inbounds %struct.complex, ptr %65, i32 0, i32 1
  %604 = load float, ptr %603, align 4, !tbaa !19
  %605 = load ptr, ptr %40, align 8, !tbaa !5
  %606 = load i64, ptr %60, align 8, !tbaa !9
  %607 = getelementptr inbounds %struct.complex, ptr %605, i64 %606
  %608 = getelementptr inbounds %struct.complex, ptr %607, i32 0, i32 1
  store float %604, ptr %608, align 4, !tbaa !19
  br label %609

609:                                              ; preds = %563
  %610 = load i64, ptr %66, align 8, !tbaa !9
  %611 = add nsw i64 %610, 1
  store i64 %611, ptr %66, align 8, !tbaa !9
  br label %559, !llvm.loop !20

612:                                              ; preds = %559
  br label %613

613:                                              ; preds = %612
  %614 = load i64, ptr %67, align 8, !tbaa !9
  %615 = add nsw i64 %614, 1
  store i64 %615, ptr %67, align 8, !tbaa !9
  br label %552, !llvm.loop !21

616:                                              ; preds = %552
  br label %617

617:                                              ; preds = %616, %546
  br label %690

618:                                              ; preds = %543
  %619 = load i64, ptr %80, align 8, !tbaa !9
  %620 = icmp ne i64 %619, 0
  br i1 %620, label %621, label %689

621:                                              ; preds = %618
  %622 = load ptr, ptr %31, align 8, !tbaa !5
  %623 = load i64, ptr %622, align 8, !tbaa !9
  store i64 %623, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %67, align 8, !tbaa !9
  br label %624

624:                                              ; preds = %685, %621
  %625 = load i64, ptr %67, align 8, !tbaa !9
  %626 = load i64, ptr %58, align 8, !tbaa !9
  %627 = icmp sle i64 %625, %626
  br i1 %627, label %628, label %688

628:                                              ; preds = %624
  %629 = load ptr, ptr %28, align 8, !tbaa !5
  %630 = load i64, ptr %629, align 8, !tbaa !9
  store i64 %630, ptr %59, align 8, !tbaa !9
  store i64 1, ptr %66, align 8, !tbaa !9
  br label %631

631:                                              ; preds = %681, %628
  %632 = load i64, ptr %66, align 8, !tbaa !9
  %633 = load i64, ptr %59, align 8, !tbaa !9
  %634 = icmp sle i64 %632, %633
  br i1 %634, label %635, label %684

635:                                              ; preds = %631
  %636 = load i64, ptr %66, align 8, !tbaa !9
  %637 = load i64, ptr %67, align 8, !tbaa !9
  %638 = load i64, ptr %54, align 8, !tbaa !9
  %639 = mul nsw i64 %637, %638
  %640 = add nsw i64 %636, %639
  store i64 %640, ptr %60, align 8, !tbaa !9
  %641 = load i64, ptr %66, align 8, !tbaa !9
  store i64 %641, ptr %61, align 8, !tbaa !9
  %642 = load i64, ptr %66, align 8, !tbaa !9
  %643 = load i64, ptr %67, align 8, !tbaa !9
  %644 = load i64, ptr %54, align 8, !tbaa !9
  %645 = mul nsw i64 %643, %644
  %646 = add nsw i64 %642, %645
  store i64 %646, ptr %62, align 8, !tbaa !9
  %647 = load ptr, ptr %39, align 8, !tbaa !5
  %648 = load i64, ptr %61, align 8, !tbaa !9
  %649 = getelementptr inbounds float, ptr %647, i64 %648
  %650 = load float, ptr %649, align 4, !tbaa !12
  %651 = load ptr, ptr %40, align 8, !tbaa !5
  %652 = load i64, ptr %62, align 8, !tbaa !9
  %653 = getelementptr inbounds %struct.complex, ptr %651, i64 %652
  %654 = getelementptr inbounds %struct.complex, ptr %653, i32 0, i32 0
  %655 = load float, ptr %654, align 4, !tbaa !17
  %656 = fmul float %650, %655
  %657 = getelementptr inbounds %struct.complex, ptr %65, i32 0, i32 0
  store float %656, ptr %657, align 4, !tbaa !17
  %658 = load ptr, ptr %39, align 8, !tbaa !5
  %659 = load i64, ptr %61, align 8, !tbaa !9
  %660 = getelementptr inbounds float, ptr %658, i64 %659
  %661 = load float, ptr %660, align 4, !tbaa !12
  %662 = load ptr, ptr %40, align 8, !tbaa !5
  %663 = load i64, ptr %62, align 8, !tbaa !9
  %664 = getelementptr inbounds %struct.complex, ptr %662, i64 %663
  %665 = getelementptr inbounds %struct.complex, ptr %664, i32 0, i32 1
  %666 = load float, ptr %665, align 4, !tbaa !19
  %667 = fmul float %661, %666
  %668 = getelementptr inbounds %struct.complex, ptr %65, i32 0, i32 1
  store float %667, ptr %668, align 4, !tbaa !19
  %669 = getelementptr inbounds %struct.complex, ptr %65, i32 0, i32 0
  %670 = load float, ptr %669, align 4, !tbaa !17
  %671 = load ptr, ptr %40, align 8, !tbaa !5
  %672 = load i64, ptr %60, align 8, !tbaa !9
  %673 = getelementptr inbounds %struct.complex, ptr %671, i64 %672
  %674 = getelementptr inbounds %struct.complex, ptr %673, i32 0, i32 0
  store float %670, ptr %674, align 4, !tbaa !17
  %675 = getelementptr inbounds %struct.complex, ptr %65, i32 0, i32 1
  %676 = load float, ptr %675, align 4, !tbaa !19
  %677 = load ptr, ptr %40, align 8, !tbaa !5
  %678 = load i64, ptr %60, align 8, !tbaa !9
  %679 = getelementptr inbounds %struct.complex, ptr %677, i64 %678
  %680 = getelementptr inbounds %struct.complex, ptr %679, i32 0, i32 1
  store float %676, ptr %680, align 4, !tbaa !19
  br label %681

681:                                              ; preds = %635
  %682 = load i64, ptr %66, align 8, !tbaa !9
  %683 = add nsw i64 %682, 1
  store i64 %683, ptr %66, align 8, !tbaa !9
  br label %631, !llvm.loop !22

684:                                              ; preds = %631
  br label %685

685:                                              ; preds = %684
  %686 = load i64, ptr %67, align 8, !tbaa !9
  %687 = add nsw i64 %686, 1
  store i64 %687, ptr %67, align 8, !tbaa !9
  br label %624, !llvm.loop !23

688:                                              ; preds = %624
  br label %689

689:                                              ; preds = %688, %618
  br label %690

690:                                              ; preds = %689, %617
  %691 = load i64, ptr %77, align 8, !tbaa !9
  %692 = icmp ne i64 %691, 0
  br i1 %692, label %696, label %693

693:                                              ; preds = %690
  %694 = load i64, ptr %75, align 8, !tbaa !9
  %695 = icmp ne i64 %694, 0
  br i1 %695, label %696, label %918

696:                                              ; preds = %693, %690
  %697 = load ptr, ptr %28, align 8, !tbaa !5
  %698 = load i64, ptr %697, align 8, !tbaa !9
  store i64 %698, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %67, align 8, !tbaa !9
  br label %699

699:                                              ; preds = %764, %696
  %700 = load i64, ptr %67, align 8, !tbaa !9
  %701 = load i64, ptr %58, align 8, !tbaa !9
  %702 = icmp sle i64 %700, %701
  br i1 %702, label %703, label %767

703:                                              ; preds = %699
  %704 = load i64, ptr %67, align 8, !tbaa !9
  %705 = load ptr, ptr %30, align 8, !tbaa !5
  %706 = load i64, ptr %705, align 8, !tbaa !9
  %707 = sub nsw i64 %704, %706
  store i64 %707, ptr %59, align 8, !tbaa !9
  %708 = load i64, ptr %59, align 8, !tbaa !9
  %709 = icmp sge i64 %708, 1
  br i1 %709, label %710, label %712

710:                                              ; preds = %703
  %711 = load i64, ptr %59, align 8, !tbaa !9
  br label %713

712:                                              ; preds = %703
  br label %713

713:                                              ; preds = %712, %710
  %714 = phi i64 [ %711, %710 ], [ 1, %712 ]
  store i64 %714, ptr %68, align 8, !tbaa !9
  %715 = load i64, ptr %67, align 8, !tbaa !9
  %716 = load ptr, ptr %29, align 8, !tbaa !5
  %717 = load i64, ptr %716, align 8, !tbaa !9
  %718 = add nsw i64 %715, %717
  store i64 %718, ptr %59, align 8, !tbaa !9
  %719 = load i64, ptr %59, align 8, !tbaa !9
  %720 = load ptr, ptr %28, align 8, !tbaa !5
  %721 = load i64, ptr %720, align 8, !tbaa !9
  %722 = icmp sle i64 %719, %721
  br i1 %722, label %723, label %725

723:                                              ; preds = %713
  %724 = load i64, ptr %59, align 8, !tbaa !9
  br label %728

725:                                              ; preds = %713
  %726 = load ptr, ptr %28, align 8, !tbaa !5
  %727 = load i64, ptr %726, align 8, !tbaa !9
  br label %728

728:                                              ; preds = %725, %723
  %729 = phi i64 [ %724, %723 ], [ %727, %725 ]
  store i64 %729, ptr %69, align 8, !tbaa !9
  %730 = load i64, ptr %69, align 8, !tbaa !9
  %731 = load i64, ptr %68, align 8, !tbaa !9
  %732 = sub nsw i64 %730, %731
  %733 = add nsw i64 %732, 1
  store i64 %733, ptr %59, align 8, !tbaa !9
  %734 = load ptr, ptr %32, align 8, !tbaa !5
  %735 = load ptr, ptr %30, align 8, !tbaa !5
  %736 = load i64, ptr %735, align 8, !tbaa !9
  %737 = add nsw i64 %736, 1
  %738 = load i64, ptr %67, align 8, !tbaa !9
  %739 = sub nsw i64 %737, %738
  %740 = load i64, ptr %68, align 8, !tbaa !9
  %741 = add nsw i64 %739, %740
  %742 = load i64, ptr %67, align 8, !tbaa !9
  %743 = load i64, ptr %50, align 8, !tbaa !9
  %744 = mul nsw i64 %742, %743
  %745 = add nsw i64 %741, %744
  %746 = getelementptr inbounds %struct.complex, ptr %734, i64 %745
  %747 = load ptr, ptr %34, align 8, !tbaa !5
  %748 = load ptr, ptr %29, align 8, !tbaa !5
  %749 = load i64, ptr %748, align 8, !tbaa !9
  %750 = load ptr, ptr %30, align 8, !tbaa !5
  %751 = load i64, ptr %750, align 8, !tbaa !9
  %752 = add nsw i64 %749, %751
  %753 = add nsw i64 %752, 1
  %754 = load i64, ptr %67, align 8, !tbaa !9
  %755 = sub nsw i64 %753, %754
  %756 = load i64, ptr %68, align 8, !tbaa !9
  %757 = add nsw i64 %755, %756
  %758 = load i64, ptr %67, align 8, !tbaa !9
  %759 = load i64, ptr %52, align 8, !tbaa !9
  %760 = mul nsw i64 %758, %759
  %761 = add nsw i64 %757, %760
  %762 = getelementptr inbounds %struct.complex, ptr %747, i64 %761
  %763 = call i32 @f2c_ccopy(ptr noundef %59, ptr noundef %746, ptr noundef @c__1, ptr noundef %762, ptr noundef @c__1)
  br label %764

764:                                              ; preds = %728
  %765 = load i64, ptr %67, align 8, !tbaa !9
  %766 = add nsw i64 %765, 1
  store i64 %766, ptr %67, align 8, !tbaa !9
  br label %699, !llvm.loop !24

767:                                              ; preds = %699
  %768 = load ptr, ptr %28, align 8, !tbaa !5
  %769 = load ptr, ptr %28, align 8, !tbaa !5
  %770 = load ptr, ptr %29, align 8, !tbaa !5
  %771 = load ptr, ptr %30, align 8, !tbaa !5
  %772 = load ptr, ptr %34, align 8, !tbaa !5
  %773 = load i64, ptr %53, align 8, !tbaa !9
  %774 = getelementptr inbounds %struct.complex, ptr %772, i64 %773
  %775 = load ptr, ptr %35, align 8, !tbaa !5
  %776 = load ptr, ptr %36, align 8, !tbaa !5
  %777 = getelementptr inbounds i64, ptr %776, i64 1
  %778 = load ptr, ptr %49, align 8, !tbaa !5
  %779 = call i32 @cgbtrf_(ptr noundef %768, ptr noundef %769, ptr noundef %770, ptr noundef %771, ptr noundef %774, ptr noundef %775, ptr noundef %777, ptr noundef %778)
  %780 = load ptr, ptr %49, align 8, !tbaa !5
  %781 = load i64, ptr %780, align 8, !tbaa !9
  %782 = icmp sgt i64 %781, 0
  br i1 %782, label %783, label %917

783:                                              ; preds = %767
  store float 0.000000e+00, ptr %74, align 4, !tbaa !12
  %784 = load ptr, ptr %49, align 8, !tbaa !5
  %785 = load i64, ptr %784, align 8, !tbaa !9
  store i64 %785, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %67, align 8, !tbaa !9
  br label %786

786:                                              ; preds = %856, %783
  %787 = load i64, ptr %67, align 8, !tbaa !9
  %788 = load i64, ptr %58, align 8, !tbaa !9
  %789 = icmp sle i64 %787, %788
  br i1 %789, label %790, label %859

790:                                              ; preds = %786
  %791 = load ptr, ptr %30, align 8, !tbaa !5
  %792 = load i64, ptr %791, align 8, !tbaa !9
  %793 = add nsw i64 %792, 2
  %794 = load i64, ptr %67, align 8, !tbaa !9
  %795 = sub nsw i64 %793, %794
  store i64 %795, ptr %59, align 8, !tbaa !9
  %796 = load ptr, ptr %28, align 8, !tbaa !5
  %797 = load i64, ptr %796, align 8, !tbaa !9
  %798 = load ptr, ptr %30, align 8, !tbaa !5
  %799 = load i64, ptr %798, align 8, !tbaa !9
  %800 = add nsw i64 %797, %799
  %801 = add nsw i64 %800, 1
  %802 = load i64, ptr %67, align 8, !tbaa !9
  %803 = sub nsw i64 %801, %802
  store i64 %803, ptr %61, align 8, !tbaa !9
  %804 = load ptr, ptr %29, align 8, !tbaa !5
  %805 = load i64, ptr %804, align 8, !tbaa !9
  %806 = load ptr, ptr %30, align 8, !tbaa !5
  %807 = load i64, ptr %806, align 8, !tbaa !9
  %808 = add nsw i64 %805, %807
  %809 = add nsw i64 %808, 1
  store i64 %809, ptr %62, align 8, !tbaa !9
  %810 = load i64, ptr %61, align 8, !tbaa !9
  %811 = load i64, ptr %62, align 8, !tbaa !9
  %812 = icmp sle i64 %810, %811
  br i1 %812, label %813, label %815

813:                                              ; preds = %790
  %814 = load i64, ptr %61, align 8, !tbaa !9
  br label %817

815:                                              ; preds = %790
  %816 = load i64, ptr %62, align 8, !tbaa !9
  br label %817

817:                                              ; preds = %815, %813
  %818 = phi i64 [ %814, %813 ], [ %816, %815 ]
  store i64 %818, ptr %60, align 8, !tbaa !9
  %819 = load i64, ptr %59, align 8, !tbaa !9
  %820 = icmp sge i64 %819, 1
  br i1 %820, label %821, label %823

821:                                              ; preds = %817
  %822 = load i64, ptr %59, align 8, !tbaa !9
  br label %824

823:                                              ; preds = %817
  br label %824

824:                                              ; preds = %823, %821
  %825 = phi i64 [ %822, %821 ], [ 1, %823 ]
  store i64 %825, ptr %66, align 8, !tbaa !9
  br label %826

826:                                              ; preds = %852, %824
  %827 = load i64, ptr %66, align 8, !tbaa !9
  %828 = load i64, ptr %60, align 8, !tbaa !9
  %829 = icmp sle i64 %827, %828
  br i1 %829, label %830, label %855

830:                                              ; preds = %826
  %831 = load float, ptr %74, align 4, !tbaa !12
  store float %831, ptr %63, align 4, !tbaa !12
  %832 = load ptr, ptr %32, align 8, !tbaa !5
  %833 = load i64, ptr %66, align 8, !tbaa !9
  %834 = load i64, ptr %67, align 8, !tbaa !9
  %835 = load i64, ptr %50, align 8, !tbaa !9
  %836 = mul nsw i64 %834, %835
  %837 = add nsw i64 %833, %836
  %838 = getelementptr inbounds %struct.complex, ptr %832, i64 %837
  %839 = call double @c_abs(ptr noundef %838)
  %840 = fptrunc double %839 to float
  store float %840, ptr %64, align 4, !tbaa !12
  %841 = load float, ptr %63, align 4, !tbaa !12
  %842 = load float, ptr %64, align 4, !tbaa !12
  %843 = fcmp oge float %841, %842
  br i1 %843, label %844, label %846

844:                                              ; preds = %830
  %845 = load float, ptr %63, align 4, !tbaa !12
  br label %848

846:                                              ; preds = %830
  %847 = load float, ptr %64, align 4, !tbaa !12
  br label %848

848:                                              ; preds = %846, %844
  %849 = phi float [ %845, %844 ], [ %847, %846 ]
  %850 = fpext float %849 to double
  %851 = fptrunc double %850 to float
  store float %851, ptr %74, align 4, !tbaa !12
  br label %852

852:                                              ; preds = %848
  %853 = load i64, ptr %66, align 8, !tbaa !9
  %854 = add nsw i64 %853, 1
  store i64 %854, ptr %66, align 8, !tbaa !9
  br label %826, !llvm.loop !25

855:                                              ; preds = %826
  br label %856

856:                                              ; preds = %855
  %857 = load i64, ptr %67, align 8, !tbaa !9
  %858 = add nsw i64 %857, 1
  store i64 %858, ptr %67, align 8, !tbaa !9
  br label %786, !llvm.loop !26

859:                                              ; preds = %786
  %860 = load ptr, ptr %49, align 8, !tbaa !5
  %861 = load i64, ptr %860, align 8, !tbaa !9
  %862 = sub nsw i64 %861, 1
  store i64 %862, ptr %60, align 8, !tbaa !9
  %863 = load ptr, ptr %29, align 8, !tbaa !5
  %864 = load i64, ptr %863, align 8, !tbaa !9
  %865 = load ptr, ptr %30, align 8, !tbaa !5
  %866 = load i64, ptr %865, align 8, !tbaa !9
  %867 = add nsw i64 %864, %866
  store i64 %867, ptr %59, align 8, !tbaa !9
  %868 = load i64, ptr %60, align 8, !tbaa !9
  %869 = load i64, ptr %59, align 8, !tbaa !9
  %870 = icmp sle i64 %868, %869
  br i1 %870, label %871, label %873

871:                                              ; preds = %859
  %872 = load i64, ptr %60, align 8, !tbaa !9
  br label %875

873:                                              ; preds = %859
  %874 = load i64, ptr %59, align 8, !tbaa !9
  br label %875

875:                                              ; preds = %873, %871
  %876 = phi i64 [ %872, %871 ], [ %874, %873 ]
  store i64 %876, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %61, align 8, !tbaa !9
  %877 = load ptr, ptr %29, align 8, !tbaa !5
  %878 = load i64, ptr %877, align 8, !tbaa !9
  %879 = load ptr, ptr %30, align 8, !tbaa !5
  %880 = load i64, ptr %879, align 8, !tbaa !9
  %881 = add nsw i64 %878, %880
  %882 = add nsw i64 %881, 2
  %883 = load ptr, ptr %49, align 8, !tbaa !5
  %884 = load i64, ptr %883, align 8, !tbaa !9
  %885 = sub nsw i64 %882, %884
  store i64 %885, ptr %62, align 8, !tbaa !9
  %886 = load ptr, ptr %49, align 8, !tbaa !5
  %887 = load ptr, ptr %34, align 8, !tbaa !5
  %888 = load i64, ptr %61, align 8, !tbaa !9
  %889 = load i64, ptr %62, align 8, !tbaa !9
  %890 = icmp sge i64 %888, %889
  br i1 %890, label %891, label %893

891:                                              ; preds = %875
  %892 = load i64, ptr %61, align 8, !tbaa !9
  br label %895

893:                                              ; preds = %875
  %894 = load i64, ptr %62, align 8, !tbaa !9
  br label %895

895:                                              ; preds = %893, %891
  %896 = phi i64 [ %892, %891 ], [ %894, %893 ]
  %897 = load i64, ptr %52, align 8, !tbaa !9
  %898 = add nsw i64 %896, %897
  %899 = getelementptr inbounds %struct.complex, ptr %887, i64 %898
  %900 = load ptr, ptr %35, align 8, !tbaa !5
  %901 = load ptr, ptr %48, align 8, !tbaa !5
  %902 = getelementptr inbounds float, ptr %901, i64 1
  %903 = call double @clantb_(ptr noundef @.str.9, ptr noundef @.str.10, ptr noundef @.str, ptr noundef %886, ptr noundef %58, ptr noundef %899, ptr noundef %900, ptr noundef %902)
  %904 = fptrunc double %903 to float
  store float %904, ptr %85, align 4, !tbaa !12
  %905 = load float, ptr %85, align 4, !tbaa !12
  %906 = fcmp oeq float %905, 0.000000e+00
  br i1 %906, label %907, label %908

907:                                              ; preds = %895
  store float 1.000000e+00, ptr %85, align 4, !tbaa !12
  br label %912

908:                                              ; preds = %895
  %909 = load float, ptr %74, align 4, !tbaa !12
  %910 = load float, ptr %85, align 4, !tbaa !12
  %911 = fdiv float %909, %910
  store float %911, ptr %85, align 4, !tbaa !12
  br label %912

912:                                              ; preds = %908, %907
  %913 = load float, ptr %85, align 4, !tbaa !12
  %914 = load ptr, ptr %48, align 8, !tbaa !5
  %915 = getelementptr inbounds float, ptr %914, i64 1
  store float %913, ptr %915, align 4, !tbaa !12
  %916 = load ptr, ptr %44, align 8, !tbaa !5
  store float 0.000000e+00, ptr %916, align 4, !tbaa !12
  store i32 0, ptr %25, align 4
  store i32 1, ptr %86, align 4
  br label %1244

917:                                              ; preds = %767
  br label %918

918:                                              ; preds = %917, %693
  %919 = load i64, ptr %82, align 8, !tbaa !9
  %920 = icmp ne i64 %919, 0
  br i1 %920, label %921, label %923

921:                                              ; preds = %918
  %922 = getelementptr inbounds [1 x i8], ptr %71, i64 0, i64 0
  store i8 49, ptr %922, align 1, !tbaa !11
  br label %925

923:                                              ; preds = %918
  %924 = getelementptr inbounds [1 x i8], ptr %71, i64 0, i64 0
  store i8 73, ptr %924, align 1, !tbaa !11
  br label %925

925:                                              ; preds = %923, %921
  %926 = getelementptr inbounds [1 x i8], ptr %71, i64 0, i64 0
  %927 = load ptr, ptr %28, align 8, !tbaa !5
  %928 = load ptr, ptr %29, align 8, !tbaa !5
  %929 = load ptr, ptr %30, align 8, !tbaa !5
  %930 = load ptr, ptr %32, align 8, !tbaa !5
  %931 = load i64, ptr %51, align 8, !tbaa !9
  %932 = getelementptr inbounds %struct.complex, ptr %930, i64 %931
  %933 = load ptr, ptr %33, align 8, !tbaa !5
  %934 = load ptr, ptr %48, align 8, !tbaa !5
  %935 = getelementptr inbounds float, ptr %934, i64 1
  %936 = call double @clangb_(ptr noundef %926, ptr noundef %927, ptr noundef %928, ptr noundef %929, ptr noundef %932, ptr noundef %933, ptr noundef %935)
  %937 = fptrunc double %936 to float
  store float %937, ptr %74, align 4, !tbaa !12
  %938 = load ptr, ptr %29, align 8, !tbaa !5
  %939 = load i64, ptr %938, align 8, !tbaa !9
  %940 = load ptr, ptr %30, align 8, !tbaa !5
  %941 = load i64, ptr %940, align 8, !tbaa !9
  %942 = add nsw i64 %939, %941
  store i64 %942, ptr %58, align 8, !tbaa !9
  %943 = load ptr, ptr %28, align 8, !tbaa !5
  %944 = load ptr, ptr %34, align 8, !tbaa !5
  %945 = load i64, ptr %53, align 8, !tbaa !9
  %946 = getelementptr inbounds %struct.complex, ptr %944, i64 %945
  %947 = load ptr, ptr %35, align 8, !tbaa !5
  %948 = load ptr, ptr %48, align 8, !tbaa !5
  %949 = getelementptr inbounds float, ptr %948, i64 1
  %950 = call double @clantb_(ptr noundef @.str.9, ptr noundef @.str.10, ptr noundef @.str, ptr noundef %943, ptr noundef %58, ptr noundef %946, ptr noundef %947, ptr noundef %949)
  %951 = fptrunc double %950 to float
  store float %951, ptr %85, align 4, !tbaa !12
  %952 = load float, ptr %85, align 4, !tbaa !12
  %953 = fcmp oeq float %952, 0.000000e+00
  br i1 %953, label %954, label %955

954:                                              ; preds = %925
  store float 1.000000e+00, ptr %85, align 4, !tbaa !12
  br label %970

955:                                              ; preds = %925
  %956 = load ptr, ptr %28, align 8, !tbaa !5
  %957 = load ptr, ptr %29, align 8, !tbaa !5
  %958 = load ptr, ptr %30, align 8, !tbaa !5
  %959 = load ptr, ptr %32, align 8, !tbaa !5
  %960 = load i64, ptr %51, align 8, !tbaa !9
  %961 = getelementptr inbounds %struct.complex, ptr %959, i64 %960
  %962 = load ptr, ptr %33, align 8, !tbaa !5
  %963 = load ptr, ptr %48, align 8, !tbaa !5
  %964 = getelementptr inbounds float, ptr %963, i64 1
  %965 = call double @clangb_(ptr noundef @.str.9, ptr noundef %956, ptr noundef %957, ptr noundef %958, ptr noundef %961, ptr noundef %962, ptr noundef %964)
  %966 = load float, ptr %85, align 4, !tbaa !12
  %967 = fpext float %966 to double
  %968 = fdiv double %965, %967
  %969 = fptrunc double %968 to float
  store float %969, ptr %85, align 4, !tbaa !12
  br label %970

970:                                              ; preds = %955, %954
  %971 = getelementptr inbounds [1 x i8], ptr %71, i64 0, i64 0
  %972 = load ptr, ptr %28, align 8, !tbaa !5
  %973 = load ptr, ptr %29, align 8, !tbaa !5
  %974 = load ptr, ptr %30, align 8, !tbaa !5
  %975 = load ptr, ptr %34, align 8, !tbaa !5
  %976 = load i64, ptr %53, align 8, !tbaa !9
  %977 = getelementptr inbounds %struct.complex, ptr %975, i64 %976
  %978 = load ptr, ptr %35, align 8, !tbaa !5
  %979 = load ptr, ptr %36, align 8, !tbaa !5
  %980 = getelementptr inbounds i64, ptr %979, i64 1
  %981 = load ptr, ptr %44, align 8, !tbaa !5
  %982 = load ptr, ptr %47, align 8, !tbaa !5
  %983 = getelementptr inbounds %struct.complex, ptr %982, i64 1
  %984 = load ptr, ptr %48, align 8, !tbaa !5
  %985 = getelementptr inbounds float, ptr %984, i64 1
  %986 = load ptr, ptr %49, align 8, !tbaa !5
  %987 = call i32 @cgbcon_(ptr noundef %971, ptr noundef %972, ptr noundef %973, ptr noundef %974, ptr noundef %977, ptr noundef %978, ptr noundef %980, ptr noundef %74, ptr noundef %981, ptr noundef %983, ptr noundef %985, ptr noundef %986)
  %988 = load ptr, ptr %28, align 8, !tbaa !5
  %989 = load ptr, ptr %31, align 8, !tbaa !5
  %990 = load ptr, ptr %40, align 8, !tbaa !5
  %991 = load i64, ptr %55, align 8, !tbaa !9
  %992 = getelementptr inbounds %struct.complex, ptr %990, i64 %991
  %993 = load ptr, ptr %41, align 8, !tbaa !5
  %994 = load ptr, ptr %42, align 8, !tbaa !5
  %995 = load i64, ptr %57, align 8, !tbaa !9
  %996 = getelementptr inbounds %struct.complex, ptr %994, i64 %995
  %997 = load ptr, ptr %43, align 8, !tbaa !5
  %998 = call i32 @clacpy_(ptr noundef @.str.11, ptr noundef %988, ptr noundef %989, ptr noundef %992, ptr noundef %993, ptr noundef %996, ptr noundef %997)
  %999 = load ptr, ptr %27, align 8, !tbaa !5
  %1000 = load ptr, ptr %28, align 8, !tbaa !5
  %1001 = load ptr, ptr %29, align 8, !tbaa !5
  %1002 = load ptr, ptr %30, align 8, !tbaa !5
  %1003 = load ptr, ptr %31, align 8, !tbaa !5
  %1004 = load ptr, ptr %34, align 8, !tbaa !5
  %1005 = load i64, ptr %53, align 8, !tbaa !9
  %1006 = getelementptr inbounds %struct.complex, ptr %1004, i64 %1005
  %1007 = load ptr, ptr %35, align 8, !tbaa !5
  %1008 = load ptr, ptr %36, align 8, !tbaa !5
  %1009 = getelementptr inbounds i64, ptr %1008, i64 1
  %1010 = load ptr, ptr %42, align 8, !tbaa !5
  %1011 = load i64, ptr %57, align 8, !tbaa !9
  %1012 = getelementptr inbounds %struct.complex, ptr %1010, i64 %1011
  %1013 = load ptr, ptr %43, align 8, !tbaa !5
  %1014 = load ptr, ptr %49, align 8, !tbaa !5
  %1015 = call i32 @cgbtrs_(ptr noundef %999, ptr noundef %1000, ptr noundef %1001, ptr noundef %1002, ptr noundef %1003, ptr noundef %1006, ptr noundef %1007, ptr noundef %1009, ptr noundef %1012, ptr noundef %1013, ptr noundef %1014)
  %1016 = load ptr, ptr %27, align 8, !tbaa !5
  %1017 = load ptr, ptr %28, align 8, !tbaa !5
  %1018 = load ptr, ptr %29, align 8, !tbaa !5
  %1019 = load ptr, ptr %30, align 8, !tbaa !5
  %1020 = load ptr, ptr %31, align 8, !tbaa !5
  %1021 = load ptr, ptr %32, align 8, !tbaa !5
  %1022 = load i64, ptr %51, align 8, !tbaa !9
  %1023 = getelementptr inbounds %struct.complex, ptr %1021, i64 %1022
  %1024 = load ptr, ptr %33, align 8, !tbaa !5
  %1025 = load ptr, ptr %34, align 8, !tbaa !5
  %1026 = load i64, ptr %53, align 8, !tbaa !9
  %1027 = getelementptr inbounds %struct.complex, ptr %1025, i64 %1026
  %1028 = load ptr, ptr %35, align 8, !tbaa !5
  %1029 = load ptr, ptr %36, align 8, !tbaa !5
  %1030 = getelementptr inbounds i64, ptr %1029, i64 1
  %1031 = load ptr, ptr %40, align 8, !tbaa !5
  %1032 = load i64, ptr %55, align 8, !tbaa !9
  %1033 = getelementptr inbounds %struct.complex, ptr %1031, i64 %1032
  %1034 = load ptr, ptr %41, align 8, !tbaa !5
  %1035 = load ptr, ptr %42, align 8, !tbaa !5
  %1036 = load i64, ptr %57, align 8, !tbaa !9
  %1037 = getelementptr inbounds %struct.complex, ptr %1035, i64 %1036
  %1038 = load ptr, ptr %43, align 8, !tbaa !5
  %1039 = load ptr, ptr %45, align 8, !tbaa !5
  %1040 = getelementptr inbounds float, ptr %1039, i64 1
  %1041 = load ptr, ptr %46, align 8, !tbaa !5
  %1042 = getelementptr inbounds float, ptr %1041, i64 1
  %1043 = load ptr, ptr %47, align 8, !tbaa !5
  %1044 = getelementptr inbounds %struct.complex, ptr %1043, i64 1
  %1045 = load ptr, ptr %48, align 8, !tbaa !5
  %1046 = getelementptr inbounds float, ptr %1045, i64 1
  %1047 = load ptr, ptr %49, align 8, !tbaa !5
  %1048 = call i32 @cgbrfs_(ptr noundef %1016, ptr noundef %1017, ptr noundef %1018, ptr noundef %1019, ptr noundef %1020, ptr noundef %1023, ptr noundef %1024, ptr noundef %1027, ptr noundef %1028, ptr noundef %1030, ptr noundef %1033, ptr noundef %1034, ptr noundef %1037, ptr noundef %1038, ptr noundef %1040, ptr noundef %1042, ptr noundef %1044, ptr noundef %1046, ptr noundef %1047)
  %1049 = load i64, ptr %82, align 8, !tbaa !9
  %1050 = icmp ne i64 %1049, 0
  br i1 %1050, label %1051, label %1140

1051:                                             ; preds = %970
  %1052 = load i64, ptr %80, align 8, !tbaa !9
  %1053 = icmp ne i64 %1052, 0
  br i1 %1053, label %1054, label %1139

1054:                                             ; preds = %1051
  %1055 = load ptr, ptr %31, align 8, !tbaa !5
  %1056 = load i64, ptr %1055, align 8, !tbaa !9
  store i64 %1056, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %67, align 8, !tbaa !9
  br label %1057

1057:                                             ; preds = %1118, %1054
  %1058 = load i64, ptr %67, align 8, !tbaa !9
  %1059 = load i64, ptr %58, align 8, !tbaa !9
  %1060 = icmp sle i64 %1058, %1059
  br i1 %1060, label %1061, label %1121

1061:                                             ; preds = %1057
  %1062 = load ptr, ptr %28, align 8, !tbaa !5
  %1063 = load i64, ptr %1062, align 8, !tbaa !9
  store i64 %1063, ptr %60, align 8, !tbaa !9
  store i64 1, ptr %66, align 8, !tbaa !9
  br label %1064

1064:                                             ; preds = %1114, %1061
  %1065 = load i64, ptr %66, align 8, !tbaa !9
  %1066 = load i64, ptr %60, align 8, !tbaa !9
  %1067 = icmp sle i64 %1065, %1066
  br i1 %1067, label %1068, label %1117

1068:                                             ; preds = %1064
  %1069 = load i64, ptr %66, align 8, !tbaa !9
  %1070 = load i64, ptr %67, align 8, !tbaa !9
  %1071 = load i64, ptr %56, align 8, !tbaa !9
  %1072 = mul nsw i64 %1070, %1071
  %1073 = add nsw i64 %1069, %1072
  store i64 %1073, ptr %59, align 8, !tbaa !9
  %1074 = load i64, ptr %66, align 8, !tbaa !9
  store i64 %1074, ptr %61, align 8, !tbaa !9
  %1075 = load i64, ptr %66, align 8, !tbaa !9
  %1076 = load i64, ptr %67, align 8, !tbaa !9
  %1077 = load i64, ptr %56, align 8, !tbaa !9
  %1078 = mul nsw i64 %1076, %1077
  %1079 = add nsw i64 %1075, %1078
  store i64 %1079, ptr %62, align 8, !tbaa !9
  %1080 = load ptr, ptr %39, align 8, !tbaa !5
  %1081 = load i64, ptr %61, align 8, !tbaa !9
  %1082 = getelementptr inbounds float, ptr %1080, i64 %1081
  %1083 = load float, ptr %1082, align 4, !tbaa !12
  %1084 = load ptr, ptr %42, align 8, !tbaa !5
  %1085 = load i64, ptr %62, align 8, !tbaa !9
  %1086 = getelementptr inbounds %struct.complex, ptr %1084, i64 %1085
  %1087 = getelementptr inbounds %struct.complex, ptr %1086, i32 0, i32 0
  %1088 = load float, ptr %1087, align 4, !tbaa !17
  %1089 = fmul float %1083, %1088
  %1090 = getelementptr inbounds %struct.complex, ptr %65, i32 0, i32 0
  store float %1089, ptr %1090, align 4, !tbaa !17
  %1091 = load ptr, ptr %39, align 8, !tbaa !5
  %1092 = load i64, ptr %61, align 8, !tbaa !9
  %1093 = getelementptr inbounds float, ptr %1091, i64 %1092
  %1094 = load float, ptr %1093, align 4, !tbaa !12
  %1095 = load ptr, ptr %42, align 8, !tbaa !5
  %1096 = load i64, ptr %62, align 8, !tbaa !9
  %1097 = getelementptr inbounds %struct.complex, ptr %1095, i64 %1096
  %1098 = getelementptr inbounds %struct.complex, ptr %1097, i32 0, i32 1
  %1099 = load float, ptr %1098, align 4, !tbaa !19
  %1100 = fmul float %1094, %1099
  %1101 = getelementptr inbounds %struct.complex, ptr %65, i32 0, i32 1
  store float %1100, ptr %1101, align 4, !tbaa !19
  %1102 = getelementptr inbounds %struct.complex, ptr %65, i32 0, i32 0
  %1103 = load float, ptr %1102, align 4, !tbaa !17
  %1104 = load ptr, ptr %42, align 8, !tbaa !5
  %1105 = load i64, ptr %59, align 8, !tbaa !9
  %1106 = getelementptr inbounds %struct.complex, ptr %1104, i64 %1105
  %1107 = getelementptr inbounds %struct.complex, ptr %1106, i32 0, i32 0
  store float %1103, ptr %1107, align 4, !tbaa !17
  %1108 = getelementptr inbounds %struct.complex, ptr %65, i32 0, i32 1
  %1109 = load float, ptr %1108, align 4, !tbaa !19
  %1110 = load ptr, ptr %42, align 8, !tbaa !5
  %1111 = load i64, ptr %59, align 8, !tbaa !9
  %1112 = getelementptr inbounds %struct.complex, ptr %1110, i64 %1111
  %1113 = getelementptr inbounds %struct.complex, ptr %1112, i32 0, i32 1
  store float %1109, ptr %1113, align 4, !tbaa !19
  br label %1114

1114:                                             ; preds = %1068
  %1115 = load i64, ptr %66, align 8, !tbaa !9
  %1116 = add nsw i64 %1115, 1
  store i64 %1116, ptr %66, align 8, !tbaa !9
  br label %1064, !llvm.loop !27

1117:                                             ; preds = %1064
  br label %1118

1118:                                             ; preds = %1117
  %1119 = load i64, ptr %67, align 8, !tbaa !9
  %1120 = add nsw i64 %1119, 1
  store i64 %1120, ptr %67, align 8, !tbaa !9
  br label %1057, !llvm.loop !28

1121:                                             ; preds = %1057
  %1122 = load ptr, ptr %31, align 8, !tbaa !5
  %1123 = load i64, ptr %1122, align 8, !tbaa !9
  store i64 %1123, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %67, align 8, !tbaa !9
  br label %1124

1124:                                             ; preds = %1135, %1121
  %1125 = load i64, ptr %67, align 8, !tbaa !9
  %1126 = load i64, ptr %58, align 8, !tbaa !9
  %1127 = icmp sle i64 %1125, %1126
  br i1 %1127, label %1128, label %1138

1128:                                             ; preds = %1124
  %1129 = load float, ptr %76, align 4, !tbaa !12
  %1130 = load ptr, ptr %45, align 8, !tbaa !5
  %1131 = load i64, ptr %67, align 8, !tbaa !9
  %1132 = getelementptr inbounds float, ptr %1130, i64 %1131
  %1133 = load float, ptr %1132, align 4, !tbaa !12
  %1134 = fdiv float %1133, %1129
  store float %1134, ptr %1132, align 4, !tbaa !12
  br label %1135

1135:                                             ; preds = %1128
  %1136 = load i64, ptr %67, align 8, !tbaa !9
  %1137 = add nsw i64 %1136, 1
  store i64 %1137, ptr %67, align 8, !tbaa !9
  br label %1124, !llvm.loop !29

1138:                                             ; preds = %1124
  br label %1139

1139:                                             ; preds = %1138, %1051
  br label %1229

1140:                                             ; preds = %970
  %1141 = load i64, ptr %84, align 8, !tbaa !9
  %1142 = icmp ne i64 %1141, 0
  br i1 %1142, label %1143, label %1228

1143:                                             ; preds = %1140
  %1144 = load ptr, ptr %31, align 8, !tbaa !5
  %1145 = load i64, ptr %1144, align 8, !tbaa !9
  store i64 %1145, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %67, align 8, !tbaa !9
  br label %1146

1146:                                             ; preds = %1207, %1143
  %1147 = load i64, ptr %67, align 8, !tbaa !9
  %1148 = load i64, ptr %58, align 8, !tbaa !9
  %1149 = icmp sle i64 %1147, %1148
  br i1 %1149, label %1150, label %1210

1150:                                             ; preds = %1146
  %1151 = load ptr, ptr %28, align 8, !tbaa !5
  %1152 = load i64, ptr %1151, align 8, !tbaa !9
  store i64 %1152, ptr %60, align 8, !tbaa !9
  store i64 1, ptr %66, align 8, !tbaa !9
  br label %1153

1153:                                             ; preds = %1203, %1150
  %1154 = load i64, ptr %66, align 8, !tbaa !9
  %1155 = load i64, ptr %60, align 8, !tbaa !9
  %1156 = icmp sle i64 %1154, %1155
  br i1 %1156, label %1157, label %1206

1157:                                             ; preds = %1153
  %1158 = load i64, ptr %66, align 8, !tbaa !9
  %1159 = load i64, ptr %67, align 8, !tbaa !9
  %1160 = load i64, ptr %56, align 8, !tbaa !9
  %1161 = mul nsw i64 %1159, %1160
  %1162 = add nsw i64 %1158, %1161
  store i64 %1162, ptr %59, align 8, !tbaa !9
  %1163 = load i64, ptr %66, align 8, !tbaa !9
  store i64 %1163, ptr %61, align 8, !tbaa !9
  %1164 = load i64, ptr %66, align 8, !tbaa !9
  %1165 = load i64, ptr %67, align 8, !tbaa !9
  %1166 = load i64, ptr %56, align 8, !tbaa !9
  %1167 = mul nsw i64 %1165, %1166
  %1168 = add nsw i64 %1164, %1167
  store i64 %1168, ptr %62, align 8, !tbaa !9
  %1169 = load ptr, ptr %38, align 8, !tbaa !5
  %1170 = load i64, ptr %61, align 8, !tbaa !9
  %1171 = getelementptr inbounds float, ptr %1169, i64 %1170
  %1172 = load float, ptr %1171, align 4, !tbaa !12
  %1173 = load ptr, ptr %42, align 8, !tbaa !5
  %1174 = load i64, ptr %62, align 8, !tbaa !9
  %1175 = getelementptr inbounds %struct.complex, ptr %1173, i64 %1174
  %1176 = getelementptr inbounds %struct.complex, ptr %1175, i32 0, i32 0
  %1177 = load float, ptr %1176, align 4, !tbaa !17
  %1178 = fmul float %1172, %1177
  %1179 = getelementptr inbounds %struct.complex, ptr %65, i32 0, i32 0
  store float %1178, ptr %1179, align 4, !tbaa !17
  %1180 = load ptr, ptr %38, align 8, !tbaa !5
  %1181 = load i64, ptr %61, align 8, !tbaa !9
  %1182 = getelementptr inbounds float, ptr %1180, i64 %1181
  %1183 = load float, ptr %1182, align 4, !tbaa !12
  %1184 = load ptr, ptr %42, align 8, !tbaa !5
  %1185 = load i64, ptr %62, align 8, !tbaa !9
  %1186 = getelementptr inbounds %struct.complex, ptr %1184, i64 %1185
  %1187 = getelementptr inbounds %struct.complex, ptr %1186, i32 0, i32 1
  %1188 = load float, ptr %1187, align 4, !tbaa !19
  %1189 = fmul float %1183, %1188
  %1190 = getelementptr inbounds %struct.complex, ptr %65, i32 0, i32 1
  store float %1189, ptr %1190, align 4, !tbaa !19
  %1191 = getelementptr inbounds %struct.complex, ptr %65, i32 0, i32 0
  %1192 = load float, ptr %1191, align 4, !tbaa !17
  %1193 = load ptr, ptr %42, align 8, !tbaa !5
  %1194 = load i64, ptr %59, align 8, !tbaa !9
  %1195 = getelementptr inbounds %struct.complex, ptr %1193, i64 %1194
  %1196 = getelementptr inbounds %struct.complex, ptr %1195, i32 0, i32 0
  store float %1192, ptr %1196, align 4, !tbaa !17
  %1197 = getelementptr inbounds %struct.complex, ptr %65, i32 0, i32 1
  %1198 = load float, ptr %1197, align 4, !tbaa !19
  %1199 = load ptr, ptr %42, align 8, !tbaa !5
  %1200 = load i64, ptr %59, align 8, !tbaa !9
  %1201 = getelementptr inbounds %struct.complex, ptr %1199, i64 %1200
  %1202 = getelementptr inbounds %struct.complex, ptr %1201, i32 0, i32 1
  store float %1198, ptr %1202, align 4, !tbaa !19
  br label %1203

1203:                                             ; preds = %1157
  %1204 = load i64, ptr %66, align 8, !tbaa !9
  %1205 = add nsw i64 %1204, 1
  store i64 %1205, ptr %66, align 8, !tbaa !9
  br label %1153, !llvm.loop !30

1206:                                             ; preds = %1153
  br label %1207

1207:                                             ; preds = %1206
  %1208 = load i64, ptr %67, align 8, !tbaa !9
  %1209 = add nsw i64 %1208, 1
  store i64 %1209, ptr %67, align 8, !tbaa !9
  br label %1146, !llvm.loop !31

1210:                                             ; preds = %1146
  %1211 = load ptr, ptr %31, align 8, !tbaa !5
  %1212 = load i64, ptr %1211, align 8, !tbaa !9
  store i64 %1212, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %67, align 8, !tbaa !9
  br label %1213

1213:                                             ; preds = %1224, %1210
  %1214 = load i64, ptr %67, align 8, !tbaa !9
  %1215 = load i64, ptr %58, align 8, !tbaa !9
  %1216 = icmp sle i64 %1214, %1215
  br i1 %1216, label %1217, label %1227

1217:                                             ; preds = %1213
  %1218 = load float, ptr %81, align 4, !tbaa !12
  %1219 = load ptr, ptr %45, align 8, !tbaa !5
  %1220 = load i64, ptr %67, align 8, !tbaa !9
  %1221 = getelementptr inbounds float, ptr %1219, i64 %1220
  %1222 = load float, ptr %1221, align 4, !tbaa !12
  %1223 = fdiv float %1222, %1218
  store float %1223, ptr %1221, align 4, !tbaa !12
  br label %1224

1224:                                             ; preds = %1217
  %1225 = load i64, ptr %67, align 8, !tbaa !9
  %1226 = add nsw i64 %1225, 1
  store i64 %1226, ptr %67, align 8, !tbaa !9
  br label %1213, !llvm.loop !32

1227:                                             ; preds = %1213
  br label %1228

1228:                                             ; preds = %1227, %1140
  br label %1229

1229:                                             ; preds = %1228, %1139
  %1230 = load ptr, ptr %44, align 8, !tbaa !5
  %1231 = load float, ptr %1230, align 4, !tbaa !12
  %1232 = fpext float %1231 to double
  %1233 = call double @slamch_(ptr noundef @.str.12)
  %1234 = fcmp olt double %1232, %1233
  br i1 %1234, label %1235, label %1240

1235:                                             ; preds = %1229
  %1236 = load ptr, ptr %28, align 8, !tbaa !5
  %1237 = load i64, ptr %1236, align 8, !tbaa !9
  %1238 = add nsw i64 %1237, 1
  %1239 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 %1238, ptr %1239, align 8, !tbaa !9
  br label %1240

1240:                                             ; preds = %1235, %1229
  %1241 = load float, ptr %85, align 4, !tbaa !12
  %1242 = load ptr, ptr %48, align 8, !tbaa !5
  %1243 = getelementptr inbounds float, ptr %1242, i64 1
  store float %1241, ptr %1243, align 4, !tbaa !12
  store i32 0, ptr %25, align 4
  store i32 1, ptr %86, align 4
  br label %1244

1244:                                             ; preds = %1240, %912, %481
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #3
  call void @llvm.lifetime.end.p0(i64 8, 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 4, 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 8, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #3
  %1245 = load i32, ptr %25, align 4
  ret i32 %1245
}

; 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 double @slamch_(ptr noundef) #2

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

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

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

declare double @c_abs(ptr noundef) #2

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

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

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

declare i32 @cgbtrs_(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 @cgbrfs_(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 = !{!7, !7, i64 0}
!12 = !{!13, !13, i64 0}
!13 = !{!"float", !7, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = distinct !{!16, !15}
!17 = !{!18, !13, i64 0}
!18 = !{!"", !13, i64 0, !13, i64 4}
!19 = !{!18, !13, i64 4}
!20 = distinct !{!20, !15}
!21 = distinct !{!21, !15}
!22 = distinct !{!22, !15}
!23 = distinct !{!23, !15}
!24 = distinct !{!24, !15}
!25 = distinct !{!25, !15}
!26 = distinct !{!26, !15}
!27 = distinct !{!27, !15}
!28 = distinct !{!28, !15}
!29 = distinct !{!29, !15}
!30 = distinct !{!30, !15}
!31 = distinct !{!31, !15}
!32 = distinct !{!32, !15}


; 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 [13 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [7 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [8 x i8], align 1

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

.thread:                                          ; preds = %24
  store i8 78, ptr %11, align 1, !tbaa !9
  br label %72

53:                                               ; preds = %24
  %54 = tail call i64 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.2) #4
  %.not = icmp eq i64 %54, 0
  br i1 %.not, label %55, label %58

55:                                               ; preds = %53
  %56 = tail call i64 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.3) #4
  %57 = icmp ne i64 %56, 0
  br label %58

58:                                               ; preds = %55, %53
  %59 = phi i1 [ true, %53 ], [ %57, %55 ]
  %60 = zext i1 %59 to i64
  %61 = tail call i64 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.4) #4
  %.not483 = icmp eq i64 %61, 0
  br i1 %.not483, label %62, label %65

62:                                               ; preds = %58
  %63 = tail call i64 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.3) #4
  %64 = icmp ne i64 %63, 0
  br label %65

65:                                               ; preds = %62, %58
  %66 = phi i1 [ true, %58 ], [ %64, %62 ]
  %67 = zext i1 %66 to i64
  %68 = tail call double @slamch_(ptr noundef nonnull @.str.5) #4
  %69 = fptrunc double %68 to float
  %70 = fdiv float 1.000000e+00, %69
  %71 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.6) #4
  %.not484 = icmp eq i64 %71, 0
  br i1 %.not484, label %.thread535.sink.split, label %72

72:                                               ; preds = %.thread, %65
  %.0456528 = phi i64 [ 0, %.thread ], [ %60, %65 ]
  %.0458526 = phi float [ undef, %.thread ], [ %69, %65 ]
  %.0460525 = phi i64 [ 0, %.thread ], [ %67, %65 ]
  %.0462523 = phi float [ undef, %.thread ], [ %70, %65 ]
  %.not485 = icmp eq i64 %50, 0
  br i1 %.not485, label %73, label %77

73:                                               ; preds = %72
  %74 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.7) #4
  %.not486 = icmp eq i64 %74, 0
  br i1 %.not486, label %75, label %77

75:                                               ; preds = %73
  %76 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #4
  %.not487 = icmp eq i64 %76, 0
  br i1 %.not487, label %.thread535.sink.split, label %77

77:                                               ; preds = %75, %73, %72
  %78 = load i64, ptr %2, align 8, !tbaa !5
  %79 = icmp slt i64 %78, 0
  br i1 %79, label %.thread535.sink.split, label %80

80:                                               ; preds = %77
  %81 = load i64, ptr %3, align 8, !tbaa !5
  %82 = icmp slt i64 %81, 0
  br i1 %82, label %.thread535.sink.split, label %83

83:                                               ; preds = %80
  %84 = load i64, ptr %4, align 8, !tbaa !5
  %85 = icmp slt i64 %84, 0
  br i1 %85, label %.thread535.sink.split, label %86

86:                                               ; preds = %83
  %87 = load i64, ptr %5, align 8, !tbaa !5
  %88 = icmp slt i64 %87, 0
  br i1 %88, label %.thread535.sink.split, label %89

89:                                               ; preds = %86
  %90 = load i64, ptr %7, align 8, !tbaa !5
  %91 = add nuw nsw i64 %84, %81
  %.not488 = icmp sgt i64 %90, %91
  br i1 %.not488, label %92, label %.thread535.sink.split

92:                                               ; preds = %89
  %93 = load i64, ptr %9, align 8, !tbaa !5
  %94 = shl nuw i64 %81, 1
  %95 = add nsw i64 %84, %94
  %.not489 = icmp sgt i64 %93, %95
  br i1 %.not489, label %96, label %.thread535.sink.split

96:                                               ; preds = %92
  %97 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.6) #4
  %98 = icmp eq i64 %97, 0
  %99 = icmp ne i64 %.0456528, 0
  %or.cond5 = select i1 %98, i1 true, i1 %99
  %100 = icmp ne i64 %.0460525, 0
  %or.cond7 = select i1 %or.cond5, i1 true, i1 %100
  br i1 %or.cond7, label %103, label %101

101:                                              ; preds = %96
  %102 = tail call i64 @lsame_(ptr noundef %11, ptr noundef nonnull @.str) #4
  %.not490 = icmp eq i64 %102, 0
  br i1 %.not490, label %.thread535.sink.split, label %..thread530_crit_edge

..thread530_crit_edge:                            ; preds = %101
  %.pr.pre = load i64, ptr %23, align 8, !tbaa !5
  br label %.thread530

103:                                              ; preds = %96
  br i1 %99, label %104, label %136

104:                                              ; preds = %103
  %105 = load i64, ptr %2, align 8, !tbaa !5
  store i64 %105, ptr %25, align 8, !tbaa !5
  %.not491545 = icmp slt i64 %105, 1
  br i1 %.not491545, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %104
  %xtraiter = and i64 %105, 1
  %106 = icmp eq i64 %105, 1
  br i1 %106, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph.preheader.new

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

.lr.ph:                                           ; preds = %.lr.ph, %.lr.ph.preheader.new
  %.0463548 = phi float [ 0.000000e+00, %.lr.ph.preheader.new ], [ %118, %.lr.ph ]
  %.0465547 = phi float [ %.0462523, %.lr.ph.preheader.new ], [ %116, %.lr.ph ]
  %.0467546 = phi i64 [ 1, %.lr.ph.preheader.new ], [ %119, %.lr.ph ]
  %niter = phi i64 [ 0, %.lr.ph.preheader.new ], [ %niter.next.1, %.lr.ph ]
  %107 = getelementptr inbounds float, ptr %39, i64 %.0467546
  %108 = load float, ptr %107, align 4, !tbaa !10
  %109 = fcmp ole float %.0465547, %108
  %110 = select i1 %109, float %.0465547, float %108
  %111 = fcmp oge float %.0463548, %108
  %112 = select i1 %111, float %.0463548, float %108
  %113 = getelementptr float, ptr %12, i64 %.0467546
  %114 = load float, ptr %113, align 4, !tbaa !10
  %115 = fcmp ole float %110, %114
  %116 = select i1 %115, float %110, float %114
  %117 = fcmp oge float %112, %114
  %118 = select i1 %117, float %112, float %114
  %119 = add nuw i64 %.0467546, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph, !llvm.loop !12

._crit_edge.loopexit.unr-lcssa:                   ; preds = %.lr.ph, %.lr.ph.preheader
  %.lcssa829.ph = phi float [ poison, %.lr.ph.preheader ], [ %116, %.lr.ph ]
  %.lcssa828.ph = phi float [ poison, %.lr.ph.preheader ], [ %118, %.lr.ph ]
  %.0463548.unr = phi float [ 0.000000e+00, %.lr.ph.preheader ], [ %118, %.lr.ph ]
  %.0465547.unr = phi float [ %.0462523, %.lr.ph.preheader ], [ %116, %.lr.ph ]
  %.0467546.unr = phi i64 [ 1, %.lr.ph.preheader ], [ %119, %.lr.ph ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph.epil

.lr.ph.epil:                                      ; preds = %._crit_edge.loopexit.unr-lcssa
  %120 = getelementptr inbounds float, ptr %39, i64 %.0467546.unr
  %121 = load float, ptr %120, align 4, !tbaa !10
  %122 = fcmp ole float %.0465547.unr, %121
  %123 = select i1 %122, float %.0465547.unr, float %121
  %124 = fcmp oge float %.0463548.unr, %121
  %125 = select i1 %124, float %.0463548.unr, float %121
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.epil, %._crit_edge.loopexit.unr-lcssa, %104
  %.0465.lcssa = phi float [ %.0462523, %104 ], [ %.lcssa829.ph, %._crit_edge.loopexit.unr-lcssa ], [ %123, %.lr.ph.epil ]
  %.0463.lcssa = phi float [ 0.000000e+00, %104 ], [ %.lcssa828.ph, %._crit_edge.loopexit.unr-lcssa ], [ %125, %.lr.ph.epil ]
  %126 = fcmp ugt float %.0465.lcssa, 0.000000e+00
  br i1 %126, label %127, label %.thread535.sink.split

127:                                              ; preds = %._crit_edge
  %128 = icmp sgt i64 %105, 0
  br i1 %128, label %129, label %135

129:                                              ; preds = %127
  %130 = fcmp oge float %.0465.lcssa, %.0458526
  %131 = select i1 %130, float %.0465.lcssa, float %.0458526
  %132 = fcmp ole float %.0463.lcssa, %.0462523
  %133 = select i1 %132, float %.0463.lcssa, float %.0462523
  %134 = fdiv float %131, %133
  store float %134, ptr %32, align 4, !tbaa !10
  br label %136

135:                                              ; preds = %127
  store float 1.000000e+00, ptr %32, align 4, !tbaa !10
  br label %136

136:                                              ; preds = %135, %129, %103
  %.pr.pre647.pr = load i64, ptr %23, align 8, !tbaa !5
  br i1 %100, label %137, label %.thread530

137:                                              ; preds = %136
  %138 = icmp eq i64 %.pr.pre647.pr, 0
  br i1 %138, label %139, label %.thread535

139:                                              ; preds = %137
  %140 = load i64, ptr %2, align 8, !tbaa !5
  store i64 %140, ptr %25, align 8, !tbaa !5
  %.not492550 = icmp slt i64 %140, 1
  br i1 %.not492550, label %._crit_edge556, label %.lr.ph555.preheader

.lr.ph555.preheader:                              ; preds = %139
  %xtraiter832 = and i64 %140, 1
  %141 = icmp eq i64 %140, 1
  br i1 %141, label %._crit_edge556.loopexit.unr-lcssa, label %.lr.ph555.preheader.new

.lr.ph555.preheader.new:                          ; preds = %.lr.ph555.preheader
  %unroll_iter836 = and i64 %140, 9223372036854775806
  br label %.lr.ph555

.lr.ph555:                                        ; preds = %.lr.ph555, %.lr.ph555.preheader.new
  %.1464553 = phi float [ 0.000000e+00, %.lr.ph555.preheader.new ], [ %153, %.lr.ph555 ]
  %.1466552 = phi float [ %.0462523, %.lr.ph555.preheader.new ], [ %151, %.lr.ph555 ]
  %.1468551 = phi i64 [ 1, %.lr.ph555.preheader.new ], [ %154, %.lr.ph555 ]
  %niter837 = phi i64 [ 0, %.lr.ph555.preheader.new ], [ %niter837.next.1, %.lr.ph555 ]
  %142 = getelementptr inbounds float, ptr %40, i64 %.1468551
  %143 = load float, ptr %142, align 4, !tbaa !10
  %144 = fcmp ole float %.1466552, %143
  %145 = select i1 %144, float %.1466552, float %143
  %146 = fcmp oge float %.1464553, %143
  %147 = select i1 %146, float %.1464553, float %143
  %148 = getelementptr float, ptr %13, i64 %.1468551
  %149 = load float, ptr %148, align 4, !tbaa !10
  %150 = fcmp ole float %145, %149
  %151 = select i1 %150, float %145, float %149
  %152 = fcmp oge float %147, %149
  %153 = select i1 %152, float %147, float %149
  %154 = add nuw i64 %.1468551, 2
  %niter837.next.1 = add i64 %niter837, 2
  %niter837.ncmp.1 = icmp eq i64 %niter837.next.1, %unroll_iter836
  br i1 %niter837.ncmp.1, label %._crit_edge556.loopexit.unr-lcssa, label %.lr.ph555, !llvm.loop !14

._crit_edge556.loopexit.unr-lcssa:                ; preds = %.lr.ph555, %.lr.ph555.preheader
  %.lcssa827.ph = phi float [ poison, %.lr.ph555.preheader ], [ %151, %.lr.ph555 ]
  %.lcssa826.ph = phi float [ poison, %.lr.ph555.preheader ], [ %153, %.lr.ph555 ]
  %.1464553.unr = phi float [ 0.000000e+00, %.lr.ph555.preheader ], [ %153, %.lr.ph555 ]
  %.1466552.unr = phi float [ %.0462523, %.lr.ph555.preheader ], [ %151, %.lr.ph555 ]
  %.1468551.unr = phi i64 [ 1, %.lr.ph555.preheader ], [ %154, %.lr.ph555 ]
  %lcmp.mod833.not = icmp eq i64 %xtraiter832, 0
  br i1 %lcmp.mod833.not, label %._crit_edge556, label %.lr.ph555.epil

.lr.ph555.epil:                                   ; preds = %._crit_edge556.loopexit.unr-lcssa
  %155 = getelementptr inbounds float, ptr %40, i64 %.1468551.unr
  %156 = load float, ptr %155, align 4, !tbaa !10
  %157 = fcmp ole float %.1466552.unr, %156
  %158 = select i1 %157, float %.1466552.unr, float %156
  %159 = fcmp oge float %.1464553.unr, %156
  %160 = select i1 %159, float %.1464553.unr, float %156
  br label %._crit_edge556

._crit_edge556:                                   ; preds = %.lr.ph555.epil, %._crit_edge556.loopexit.unr-lcssa, %139
  %.1466.lcssa = phi float [ %.0462523, %139 ], [ %.lcssa827.ph, %._crit_edge556.loopexit.unr-lcssa ], [ %158, %.lr.ph555.epil ]
  %.1464.lcssa = phi float [ 0.000000e+00, %139 ], [ %.lcssa826.ph, %._crit_edge556.loopexit.unr-lcssa ], [ %160, %.lr.ph555.epil ]
  %161 = fcmp ugt float %.1466.lcssa, 0.000000e+00
  br i1 %161, label %162, label %.thread535.sink.split

162:                                              ; preds = %._crit_edge556
  %163 = icmp sgt i64 %140, 0
  br i1 %163, label %164, label %170

164:                                              ; preds = %162
  %165 = fcmp oge float %.1466.lcssa, %.0458526
  %166 = select i1 %165, float %.1466.lcssa, float %.0458526
  %167 = fcmp ole float %.1464.lcssa, %.0462523
  %168 = select i1 %167, float %.1464.lcssa, float %.0462523
  %169 = fdiv float %166, %168
  store float %169, ptr %30, align 4, !tbaa !10
  br label %.thread530.thread

170:                                              ; preds = %162
  store float 1.000000e+00, ptr %30, align 4, !tbaa !10
  br label %.thread530.thread

.thread530:                                       ; preds = %..thread530_crit_edge, %136
  %.pr533.pr = phi i64 [ %.pr.pre, %..thread530_crit_edge ], [ %.pr.pre647.pr, %136 ]
  %171 = icmp eq i64 %.pr533.pr, 0
  br i1 %171, label %.thread530.thread, label %.thread535

.thread530.thread:                                ; preds = %164, %170, %.thread530
  %172 = load i64, ptr %15, align 8, !tbaa !5
  %173 = load i64, ptr %2, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.smax.i64(i64 %173, i64 1)
  %174 = icmp slt i64 %172, %spec.select
  br i1 %174, label %.thread535.sink.split, label %175

175:                                              ; preds = %.thread530.thread
  %176 = load i64, ptr %17, align 8, !tbaa !5
  %177 = icmp slt i64 %176, %spec.select
  br i1 %177, label %.thread535.sink.split, label %.thread531

.thread535.sink.split:                            ; preds = %175, %.thread530.thread, %._crit_edge556, %._crit_edge, %101, %92, %89, %86, %83, %80, %77, %75, %65
  %.sink = phi i64 [ -1, %65 ], [ -2, %75 ], [ -3, %77 ], [ -4, %80 ], [ -5, %83 ], [ -6, %86 ], [ -8, %89 ], [ -10, %92 ], [ -12, %101 ], [ -13, %._crit_edge ], [ -14, %._crit_edge556 ], [ -16, %.thread530.thread ], [ -18, %175 ]
  store i64 %.sink, ptr %23, align 8, !tbaa !5
  br label %.thread535

.thread535:                                       ; preds = %.thread535.sink.split, %137, %.thread530
  %178 = phi i64 [ %.pr533.pr, %.thread530 ], [ %.pr.pre647.pr, %137 ], [ %.sink, %.thread535.sink.split ]
  %179 = sub nsw i64 0, %178
  store i64 %179, ptr %25, align 8, !tbaa !5
  %180 = call i32 @xerbla_(ptr noundef nonnull @.str.8, ptr noundef nonnull %25) #4
  br label %515

.thread531:                                       ; preds = %175
  br i1 %52, label %181, label %201

181:                                              ; preds = %.thread531
  %182 = call i32 @cgbequ_(ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %12, ptr noundef %13, ptr noundef nonnull %32, ptr noundef nonnull %30, ptr noundef nonnull %27, ptr noundef nonnull %31) #4
  %183 = load i64, ptr %31, align 8, !tbaa !5
  %184 = icmp eq i64 %183, 0
  br i1 %184, label %185, label %201

185:                                              ; preds = %181
  %186 = call i32 @claqgb_(ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %12, ptr noundef %13, ptr noundef nonnull %32, ptr noundef nonnull %30, ptr noundef nonnull %27, ptr noundef %11) #4
  %187 = call i64 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.2) #4
  %.not494 = icmp eq i64 %187, 0
  br i1 %.not494, label %188, label %191

188:                                              ; preds = %185
  %189 = call i64 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.3) #4
  %190 = icmp ne i64 %189, 0
  br label %191

191:                                              ; preds = %188, %185
  %192 = phi i1 [ true, %185 ], [ %190, %188 ]
  %193 = zext i1 %192 to i64
  %194 = call i64 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.4) #4
  %.not495 = icmp eq i64 %194, 0
  br i1 %.not495, label %195, label %198

195:                                              ; preds = %191
  %196 = call i64 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.3) #4
  %197 = icmp ne i64 %196, 0
  br label %198

198:                                              ; preds = %195, %191
  %199 = phi i1 [ true, %191 ], [ %197, %195 ]
  %200 = zext i1 %199 to i64
  br label %201

201:                                              ; preds = %181, %198, %.thread531
  %.1461 = phi i64 [ %200, %198 ], [ %.0460525, %181 ], [ %.0460525, %.thread531 ]
  %.1457 = phi i64 [ %193, %198 ], [ %.0456528, %181 ], [ %.0456528, %.thread531 ]
  br i1 %.not485, label %251, label %202

202:                                              ; preds = %201
  %.not500 = icmp eq i64 %.1457, 0
  br i1 %.not500, label %.loopexit543, label %203

203:                                              ; preds = %202
  %204 = load i64, ptr %5, align 8, !tbaa !5
  store i64 %204, ptr %25, align 8, !tbaa !5
  %.not501564 = icmp slt i64 %204, 1
  br i1 %.not501564, label %.loopexit543, label %.lr.ph567

.lr.ph567:                                        ; preds = %203
  %205 = load i64, ptr %2, align 8, !tbaa !5
  %.not516559 = icmp slt i64 %205, 1
  br i1 %.not516559, label %..loopexit544_crit_edge, label %.lr.ph562.preheader

.lr.ph562.preheader:                              ; preds = %.lr.ph567
  %206 = add nsw i64 %205, -1
  %207 = shl i64 %41, 3
  %208 = add nuw i64 %204, 2305843009213693951
  %209 = mul i64 %41, %208
  %210 = add i64 %209, %205
  %211 = shl i64 %210, 3
  %scevgep680 = getelementptr i8, ptr %14, i64 %211
  %212 = shl i64 %205, 2
  %scevgep681 = getelementptr i8, ptr %12, i64 %212
  %min.iters.check = icmp ult i64 %205, 12
  %mul.result = shl i64 %206, 3
  %mul.result678 = shl i64 %206, 3
  %mul.overflow679 = icmp ugt i64 %206, 2305843009213693951
  %bound0 = icmp ugt ptr %scevgep681, %14
  %bound1 = icmp ugt ptr %scevgep680, %12
  %found.conflict = and i1 %bound0, %bound1
  %.mask = and i64 %41, 1152921504606846976
  %stride.check = icmp ne i64 %.mask, 0
  %213 = or i1 %found.conflict, %stride.check
  %n.vec = and i64 %205, 4611686018427387902
  %ind.end = or i64 %205, 1
  %cmp.n = icmp eq i64 %205, %n.vec
  %xtraiter838 = and i64 %205, 1
  %lcmp.mod839.not = icmp eq i64 %xtraiter838, 0
  br label %.lr.ph562

.lr.ph562:                                        ; preds = %.lr.ph562.preheader, %._crit_edge563
  %indvar = phi i64 [ 0, %.lr.ph562.preheader ], [ %indvar.next, %._crit_edge563 ]
  %.2565 = phi i64 [ 1, %.lr.ph562.preheader ], [ %250, %._crit_edge563 ]
  %214 = mul nsw i64 %.2565, %41
  %invariant.gep = getelementptr %struct.complex, ptr %43, i64 %214
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.scevcheck

vector.scevcheck:                                 ; preds = %.lr.ph562
  %215 = mul i64 %207, %indvar
  %scevgep676 = getelementptr i8, ptr %14, i64 %215
  %216 = or disjoint i64 %215, 4
  %scevgep = getelementptr i8, ptr %14, i64 %216
  %217 = getelementptr i8, ptr %scevgep, i64 %mul.result
  %218 = icmp ult ptr %217, %scevgep
  %219 = getelementptr i8, ptr %scevgep676, i64 %mul.result678
  %220 = icmp ult ptr %219, %scevgep676
  %221 = or i1 %220, %mul.overflow679
  %222 = or i1 %218, %221
  %brmerge = select i1 %222, i1 true, i1 %213
  br i1 %brmerge, label %scalar.ph.preheader, label %vector.body

vector.body:                                      ; preds = %vector.scevcheck, %vector.body
  %index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.scevcheck ]
  %offset.idx = or disjoint i64 %index, 1
  %223 = getelementptr float, ptr %12, i64 %index
  %wide.load = load <2 x float>, ptr %223, align 4, !tbaa !10, !alias.scope !15
  %224 = getelementptr %struct.complex, ptr %invariant.gep, i64 %offset.idx
  %225 = load <4 x float>, ptr %224, align 4, !tbaa !10
  %226 = shufflevector <2 x float> %wide.load, <2 x float> poison, <4 x i32> <i32 0, i32 0, i32 1, i32 1>
  %interleaved.vec = fmul <4 x float> %226, %225
  store <4 x float> %interleaved.vec, ptr %224, align 4, !tbaa !10
  %index.next = add nuw i64 %index, 2
  %227 = icmp eq i64 %index.next, %n.vec
  br i1 %227, label %middle.block, label %vector.body, !llvm.loop !18

middle.block:                                     ; preds = %vector.body
  br i1 %cmp.n, label %._crit_edge563, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %vector.scevcheck, %middle.block, %.lr.ph562
  %.0469560.ph = phi i64 [ 1, %vector.scevcheck ], [ 1, %.lr.ph562 ], [ %ind.end, %middle.block ]
  br i1 %lcmp.mod839.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader
  %228 = getelementptr inbounds float, ptr %39, i64 %.0469560.ph
  %229 = load float, ptr %228, align 4, !tbaa !10
  %gep.prol = getelementptr %struct.complex, ptr %invariant.gep, i64 %.0469560.ph
  %230 = load <2 x float>, ptr %gep.prol, align 4, !tbaa !10
  %231 = insertelement <2 x float> poison, float %229, i64 0
  %232 = shufflevector <2 x float> %231, <2 x float> poison, <2 x i32> zeroinitializer
  %233 = fmul <2 x float> %232, %230
  store <2 x float> %233, ptr %gep.prol, align 4, !tbaa !10
  %234 = add nuw nsw i64 %.0469560.ph, 1
  br label %scalar.ph.prol.loopexit

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %.0469560.unr = phi i64 [ %.0469560.ph, %scalar.ph.preheader ], [ %234, %scalar.ph.prol ]
  %235 = icmp eq i64 %205, %.0469560.ph
  br i1 %235, label %._crit_edge563, label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.prol.loopexit, %scalar.ph
  %.0469560 = phi i64 [ %249, %scalar.ph ], [ %.0469560.unr, %scalar.ph.prol.loopexit ]
  %236 = getelementptr inbounds float, ptr %39, i64 %.0469560
  %237 = load float, ptr %236, align 4, !tbaa !10
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %.0469560
  %238 = load <2 x float>, ptr %gep, align 4, !tbaa !10
  %239 = insertelement <2 x float> poison, float %237, i64 0
  %240 = shufflevector <2 x float> %239, <2 x float> poison, <2 x i32> zeroinitializer
  %241 = fmul <2 x float> %240, %238
  store <2 x float> %241, ptr %gep, align 4, !tbaa !10
  %242 = add nuw i64 %.0469560, 1
  %243 = getelementptr float, ptr %12, i64 %.0469560
  %244 = load float, ptr %243, align 4, !tbaa !10
  %gep.1 = getelementptr %struct.complex, ptr %invariant.gep, i64 %242
  %245 = load <2 x float>, ptr %gep.1, align 4, !tbaa !10
  %246 = insertelement <2 x float> poison, float %244, i64 0
  %247 = shufflevector <2 x float> %246, <2 x float> poison, <2 x i32> zeroinitializer
  %248 = fmul <2 x float> %247, %245
  store <2 x float> %248, ptr %gep.1, align 4, !tbaa !10
  %249 = add nuw i64 %.0469560, 2
  %exitcond637.not.1 = icmp eq i64 %242, %205
  br i1 %exitcond637.not.1, label %._crit_edge563, label %scalar.ph, !llvm.loop !21

._crit_edge563:                                   ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  %250 = add nuw i64 %.2565, 1
  %exitcond638.not = icmp eq i64 %.2565, %204
  %indvar.next = add i64 %indvar, 1
  br i1 %exitcond638.not, label %..loopexit544_crit_edge, label %.lr.ph562, !llvm.loop !22

251:                                              ; preds = %201
  %.not497 = icmp eq i64 %.1461, 0
  br i1 %.not497, label %.loopexit543, label %252

252:                                              ; preds = %251
  %253 = load i64, ptr %5, align 8, !tbaa !5
  store i64 %253, ptr %25, align 8, !tbaa !5
  %.not498575 = icmp slt i64 %253, 1
  br i1 %.not498575, label %.loopexit543, label %.lr.ph578

.lr.ph578:                                        ; preds = %252
  %254 = load i64, ptr %2, align 8, !tbaa !5
  %.not499568 = icmp slt i64 %254, 1
  br i1 %.not499568, label %..loopexit543_crit_edge, label %.lr.ph571.preheader

.lr.ph571.preheader:                              ; preds = %.lr.ph578
  %255 = add nsw i64 %254, -1
  %256 = shl i64 %41, 3
  %257 = add nuw i64 %253, 2305843009213693951
  %258 = mul i64 %41, %257
  %259 = add i64 %258, %254
  %260 = shl i64 %259, 3
  %scevgep695 = getelementptr i8, ptr %14, i64 %260
  %261 = shl i64 %254, 2
  %scevgep696 = getelementptr i8, ptr %13, i64 %261
  %min.iters.check703 = icmp ult i64 %254, 12
  %mul.result688 = shl i64 %255, 3
  %mul.result692 = shl i64 %255, 3
  %mul.overflow693 = icmp ugt i64 %255, 2305843009213693951
  %bound0697 = icmp ugt ptr %scevgep696, %14
  %bound1698 = icmp ugt ptr %scevgep695, %13
  %found.conflict699 = and i1 %bound0697, %bound1698
  %.mask821 = and i64 %41, 1152921504606846976
  %stride.check700 = icmp ne i64 %.mask821, 0
  %262 = or i1 %found.conflict699, %stride.check700
  %n.vec706 = and i64 %254, 4611686018427387902
  %ind.end707 = or i64 %254, 1
  %cmp.n718 = icmp eq i64 %254, %n.vec706
  %xtraiter840 = and i64 %254, 1
  %lcmp.mod841.not = icmp eq i64 %xtraiter840, 0
  br label %.lr.ph571

.lr.ph571:                                        ; preds = %.lr.ph571.preheader, %._crit_edge572
  %indvar684 = phi i64 [ 0, %.lr.ph571.preheader ], [ %indvar.next685, %._crit_edge572 ]
  %.3576 = phi i64 [ 1, %.lr.ph571.preheader ], [ %299, %._crit_edge572 ]
  %263 = mul nsw i64 %.3576, %41
  %invariant.gep573 = getelementptr %struct.complex, ptr %43, i64 %263
  br i1 %min.iters.check703, label %scalar.ph702.preheader, label %vector.scevcheck683

vector.scevcheck683:                              ; preds = %.lr.ph571
  %264 = mul i64 %256, %indvar684
  %scevgep690 = getelementptr i8, ptr %14, i64 %264
  %265 = or disjoint i64 %264, 4
  %scevgep686 = getelementptr i8, ptr %14, i64 %265
  %266 = getelementptr i8, ptr %scevgep686, i64 %mul.result688
  %267 = icmp ult ptr %266, %scevgep686
  %268 = getelementptr i8, ptr %scevgep690, i64 %mul.result692
  %269 = icmp ult ptr %268, %scevgep690
  %270 = or i1 %269, %mul.overflow693
  %271 = or i1 %267, %270
  %brmerge861 = select i1 %271, i1 true, i1 %262
  br i1 %brmerge861, label %scalar.ph702.preheader, label %vector.body709

vector.body709:                                   ; preds = %vector.scevcheck683, %vector.body709
  %index710 = phi i64 [ %index.next717, %vector.body709 ], [ 0, %vector.scevcheck683 ]
  %offset.idx711 = or disjoint i64 %index710, 1
  %272 = getelementptr float, ptr %13, i64 %index710
  %wide.load712 = load <2 x float>, ptr %272, align 4, !tbaa !10, !alias.scope !23
  %273 = getelementptr %struct.complex, ptr %invariant.gep573, i64 %offset.idx711
  %274 = load <4 x float>, ptr %273, align 4, !tbaa !10
  %275 = shufflevector <2 x float> %wide.load712, <2 x float> poison, <4 x i32> <i32 0, i32 0, i32 1, i32 1>
  %interleaved.vec716 = fmul <4 x float> %275, %274
  store <4 x float> %interleaved.vec716, ptr %273, align 4, !tbaa !10
  %index.next717 = add nuw i64 %index710, 2
  %276 = icmp eq i64 %index.next717, %n.vec706
  br i1 %276, label %middle.block701, label %vector.body709, !llvm.loop !26

middle.block701:                                  ; preds = %vector.body709
  br i1 %cmp.n718, label %._crit_edge572, label %scalar.ph702.preheader

scalar.ph702.preheader:                           ; preds = %vector.scevcheck683, %middle.block701, %.lr.ph571
  %.1470569.ph = phi i64 [ 1, %vector.scevcheck683 ], [ 1, %.lr.ph571 ], [ %ind.end707, %middle.block701 ]
  br i1 %lcmp.mod841.not, label %scalar.ph702.prol.loopexit, label %scalar.ph702.prol

scalar.ph702.prol:                                ; preds = %scalar.ph702.preheader
  %277 = getelementptr inbounds float, ptr %40, i64 %.1470569.ph
  %278 = load float, ptr %277, align 4, !tbaa !10
  %gep574.prol = getelementptr %struct.complex, ptr %invariant.gep573, i64 %.1470569.ph
  %279 = load <2 x float>, ptr %gep574.prol, align 4, !tbaa !10
  %280 = insertelement <2 x float> poison, float %278, i64 0
  %281 = shufflevector <2 x float> %280, <2 x float> poison, <2 x i32> zeroinitializer
  %282 = fmul <2 x float> %281, %279
  store <2 x float> %282, ptr %gep574.prol, align 4, !tbaa !10
  %283 = add nuw nsw i64 %.1470569.ph, 1
  br label %scalar.ph702.prol.loopexit

scalar.ph702.prol.loopexit:                       ; preds = %scalar.ph702.prol, %scalar.ph702.preheader
  %.1470569.unr = phi i64 [ %.1470569.ph, %scalar.ph702.preheader ], [ %283, %scalar.ph702.prol ]
  %284 = icmp eq i64 %254, %.1470569.ph
  br i1 %284, label %._crit_edge572, label %scalar.ph702

scalar.ph702:                                     ; preds = %scalar.ph702.prol.loopexit, %scalar.ph702
  %.1470569 = phi i64 [ %298, %scalar.ph702 ], [ %.1470569.unr, %scalar.ph702.prol.loopexit ]
  %285 = getelementptr inbounds float, ptr %40, i64 %.1470569
  %286 = load float, ptr %285, align 4, !tbaa !10
  %gep574 = getelementptr %struct.complex, ptr %invariant.gep573, i64 %.1470569
  %287 = load <2 x float>, ptr %gep574, align 4, !tbaa !10
  %288 = insertelement <2 x float> poison, float %286, i64 0
  %289 = shufflevector <2 x float> %288, <2 x float> poison, <2 x i32> zeroinitializer
  %290 = fmul <2 x float> %289, %287
  store <2 x float> %290, ptr %gep574, align 4, !tbaa !10
  %291 = add nuw i64 %.1470569, 1
  %292 = getelementptr float, ptr %13, i64 %.1470569
  %293 = load float, ptr %292, align 4, !tbaa !10
  %gep574.1 = getelementptr %struct.complex, ptr %invariant.gep573, i64 %291
  %294 = load <2 x float>, ptr %gep574.1, align 4, !tbaa !10
  %295 = insertelement <2 x float> poison, float %293, i64 0
  %296 = shufflevector <2 x float> %295, <2 x float> poison, <2 x i32> zeroinitializer
  %297 = fmul <2 x float> %296, %294
  store <2 x float> %297, ptr %gep574.1, align 4, !tbaa !10
  %298 = add nuw i64 %.1470569, 2
  %exitcond639.not.1 = icmp eq i64 %291, %254
  br i1 %exitcond639.not.1, label %._crit_edge572, label %scalar.ph702, !llvm.loop !27

._crit_edge572:                                   ; preds = %scalar.ph702.prol.loopexit, %scalar.ph702, %middle.block701
  %299 = add nuw i64 %.3576, 1
  %exitcond640.not = icmp eq i64 %.3576, %253
  %indvar.next685 = add i64 %indvar684, 1
  br i1 %exitcond640.not, label %..loopexit543_crit_edge, label %.lr.ph571, !llvm.loop !28

..loopexit543_crit_edge:                          ; preds = %._crit_edge572, %.lr.ph578
  store i64 %254, ptr %26, align 8, !tbaa !5
  br label %.loopexit543

..loopexit544_crit_edge:                          ; preds = %._crit_edge563, %.lr.ph567
  store i64 %205, ptr %26, align 8, !tbaa !5
  br label %.loopexit543

.loopexit543:                                     ; preds = %203, %..loopexit544_crit_edge, %252, %..loopexit543_crit_edge, %251, %202
  br i1 %or.cond, label %300, label %362

300:                                              ; preds = %.loopexit543
  %301 = load i64, ptr %2, align 8, !tbaa !5
  store i64 %301, ptr %25, align 8, !tbaa !5
  %.not502579 = icmp slt i64 %301, 1
  br i1 %.not502579, label %._crit_edge584, label %.lr.ph583.preheader

.lr.ph583.preheader:                              ; preds = %300
  %invariant.gep666 = getelementptr i8, ptr %35, i64 8
  %invariant.gep668 = getelementptr i8, ptr %38, i64 8
  br label %.lr.ph583

.lr.ph583:                                        ; preds = %.lr.ph583.preheader, %.lr.ph583
  %.4.neg581 = phi i64 [ %.4.neg, %.lr.ph583 ], [ -1, %.lr.ph583.preheader ]
  %.4580 = phi i64 [ %319, %.lr.ph583 ], [ 1, %.lr.ph583.preheader ]
  %302 = load i64, ptr %4, align 8, !tbaa !5
  %303 = sub nsw i64 %.4580, %302
  %304 = call i64 @llvm.smax.i64(i64 %303, i64 1)
  %305 = load i64, ptr %3, align 8, !tbaa !5
  %306 = add nsw i64 %305, %.4580
  %307 = load i64, ptr %2, align 8, !tbaa !5
  %. = call i64 @llvm.smin.i64(i64 %306, i64 %307)
  %reass.sub = sub i64 %., %304
  %308 = add i64 %reass.sub, 1
  store i64 %308, ptr %26, align 8, !tbaa !5
  %309 = mul nsw i64 %.4580, %33
  %gep667 = getelementptr %struct.complex, ptr %invariant.gep666, i64 %302
  %310 = getelementptr %struct.complex, ptr %gep667, i64 %.4.neg581
  %311 = getelementptr %struct.complex, ptr %310, i64 %304
  %312 = getelementptr %struct.complex, ptr %311, i64 %309
  %313 = mul nsw i64 %.4580, %36
  %gep669 = getelementptr %struct.complex, ptr %invariant.gep668, i64 %.4.neg581
  %314 = getelementptr %struct.complex, ptr %gep669, i64 %302
  %315 = getelementptr %struct.complex, ptr %314, i64 %305
  %316 = getelementptr %struct.complex, ptr %315, i64 %304
  %317 = getelementptr %struct.complex, ptr %316, i64 %313
  %318 = call i32 @f2c_ccopy(ptr noundef nonnull %26, ptr noundef %312, ptr noundef nonnull @c__1, ptr noundef %317, ptr noundef nonnull @c__1) #4
  %319 = add nuw nsw i64 %.4580, 1
  %.4.neg = xor i64 %.4580, -1
  %320 = load i64, ptr %25, align 8, !tbaa !5
  %.not502.not = icmp slt i64 %.4580, %320
  br i1 %.not502.not, label %.lr.ph583, label %._crit_edge584, !llvm.loop !29

._crit_edge584:                                   ; preds = %.lr.ph583, %300
  %321 = call i32 @cgbtrf_(ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull %23) #4
  %322 = load i64, ptr %23, align 8, !tbaa !5
  %323 = icmp sgt i64 %322, 0
  br i1 %323, label %.lr.ph625.preheader, label %362

.lr.ph625.preheader:                              ; preds = %._crit_edge584
  store i64 %322, ptr %25, align 8, !tbaa !5
  br label %.lr.ph625

.lr.ph625:                                        ; preds = %.lr.ph625.preheader, %._crit_edge618
  %324 = phi i64 [ %346, %._crit_edge618 ], [ %322, %.lr.ph625.preheader ]
  %325 = phi float [ %347, %._crit_edge618 ], [ 0.000000e+00, %.lr.ph625.preheader ]
  %.5.neg623 = phi i64 [ %.5.neg, %._crit_edge618 ], [ -1, %.lr.ph625.preheader ]
  %.5622 = phi i64 [ %348, %._crit_edge618 ], [ 1, %.lr.ph625.preheader ]
  %326 = load i64, ptr %4, align 8, !tbaa !5
  %327 = add nsw i64 %.5.neg623, 2
  %328 = add i64 %327, %326
  store i64 %328, ptr %26, align 8, !tbaa !5
  %329 = load i64, ptr %2, align 8, !tbaa !5
  %330 = add nsw i64 %.5.neg623, 1
  %331 = add i64 %330, %326
  %332 = add i64 %331, %329
  %333 = load i64, ptr %3, align 8, !tbaa !5
  %334 = add i64 %326, 1
  %335 = add i64 %334, %333
  %336 = call i64 @llvm.smin.i64(i64 %332, i64 %335)
  %337 = call i64 @llvm.smax.i64(i64 %328, i64 1)
  %.not514614 = icmp sgt i64 %337, %336
  br i1 %.not514614, label %._crit_edge618, label %.lr.ph617

.lr.ph617:                                        ; preds = %.lr.ph625
  %338 = mul nsw i64 %.5622, %33
  %invariant.gep619 = getelementptr %struct.complex, ptr %35, i64 %338
  br label %339

339:                                              ; preds = %.lr.ph617, %339
  %340 = phi float [ %325, %.lr.ph617 ], [ %344, %339 ]
  %.2471615 = phi i64 [ %337, %.lr.ph617 ], [ %345, %339 ]
  %gep620 = getelementptr %struct.complex, ptr %invariant.gep619, i64 %.2471615
  %341 = call double @c_abs(ptr noundef %gep620) #4
  %342 = fptrunc double %341 to float
  %343 = fcmp oge float %340, %342
  %344 = select i1 %343, float %340, float %342
  %345 = add nuw nsw i64 %.2471615, 1
  %.not514.not = icmp slt i64 %.2471615, %336
  br i1 %.not514.not, label %339, label %._crit_edge618.loopexit, !llvm.loop !30

._crit_edge618.loopexit:                          ; preds = %339
  %.pre = load i64, ptr %25, align 8, !tbaa !5
  br label %._crit_edge618

._crit_edge618:                                   ; preds = %._crit_edge618.loopexit, %.lr.ph625
  %346 = phi i64 [ %.pre, %._crit_edge618.loopexit ], [ %324, %.lr.ph625 ]
  %347 = phi float [ %344, %._crit_edge618.loopexit ], [ %325, %.lr.ph625 ]
  %348 = add nuw nsw i64 %.5622, 1
  %.5.neg = xor i64 %.5622, -1
  %.not511.not = icmp slt i64 %.5622, %346
  br i1 %.not511.not, label %.lr.ph625, label %._crit_edge626, !llvm.loop !31

._crit_edge626:                                   ; preds = %._crit_edge618
  %.pre649 = load i64, ptr %23, align 8, !tbaa !5
  %349 = add nsw i64 %.pre649, -1
  %350 = load i64, ptr %3, align 8, !tbaa !5
  %351 = load i64, ptr %4, align 8, !tbaa !5
  %352 = add nsw i64 %351, %350
  store i64 %352, ptr %26, align 8, !tbaa !5
  %353 = call i64 @llvm.smin.i64(i64 %349, i64 %352)
  store i64 %353, ptr %25, align 8, !tbaa !5
  %reass.sub627 = sub i64 %352, %.pre649
  %354 = add i64 %reass.sub627, 2
  %355 = call i64 @llvm.smax.i64(i64 %354, i64 1)
  %356 = getelementptr %struct.complex, ptr %38, i64 %355
  %357 = getelementptr %struct.complex, ptr %356, i64 %36
  %358 = call double @clantb_(ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str, ptr noundef nonnull %23, ptr noundef nonnull %25, ptr noundef %357, ptr noundef nonnull %9, ptr noundef %22) #4
  %359 = fptrunc double %358 to float
  %360 = fcmp oeq float %359, 0.000000e+00
  %361 = fdiv float %347, %359
  %.0 = select i1 %360, float 1.000000e+00, float %361
  store float %.0, ptr %22, align 4, !tbaa !10
  store float 0.000000e+00, ptr %18, align 4, !tbaa !10
  br label %515

362:                                              ; preds = %._crit_edge584, %.loopexit543
  %.518 = select i1 %.not485, i8 73, i8 49
  store i8 %.518, ptr %28, align 1, !tbaa !9
  %363 = call double @clangb_(ptr noundef nonnull %28, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %22) #4
  %364 = fptrunc double %363 to float
  store float %364, ptr %29, align 4, !tbaa !10
  %365 = load i64, ptr %3, align 8, !tbaa !5
  %366 = load i64, ptr %4, align 8, !tbaa !5
  %367 = add nsw i64 %366, %365
  store i64 %367, ptr %25, align 8, !tbaa !5
  %368 = call double @clantb_(ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str, ptr noundef nonnull %2, ptr noundef nonnull %25, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %22) #4
  %369 = fptrunc double %368 to float
  %370 = fcmp oeq float %369, 0.000000e+00
  br i1 %370, label %376, label %371

371:                                              ; preds = %362
  %372 = call double @clangb_(ptr noundef nonnull @.str.9, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %22) #4
  %373 = fpext float %369 to double
  %374 = fdiv double %372, %373
  %375 = fptrunc double %374 to float
  br label %376

376:                                              ; preds = %362, %371
  %.1 = phi float [ %375, %371 ], [ 1.000000e+00, %362 ]
  %377 = call i32 @cgbcon_(ptr noundef nonnull %28, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull %29, ptr noundef %18, ptr noundef %21, ptr noundef %22, ptr noundef nonnull %23) #4
  %378 = call i32 @clacpy_(ptr noundef nonnull @.str.11, ptr noundef nonnull %2, ptr noundef nonnull %5, ptr noundef %14, ptr noundef nonnull %15, ptr noundef %16, ptr noundef nonnull %17) #4
  %379 = call i32 @cgbtrs_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef %16, ptr noundef nonnull %17, ptr noundef nonnull %23) #4
  %380 = call i32 @cgbrfs_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef %14, ptr noundef nonnull %15, ptr noundef %16, ptr noundef nonnull %17, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22, ptr noundef nonnull %23) #4
  br i1 %.not485, label %444, label %381

381:                                              ; preds = %376
  %.not507 = icmp eq i64 %.1461, 0
  br i1 %.not507, label %.loopexit, label %382

382:                                              ; preds = %381
  %383 = load i64, ptr %5, align 8, !tbaa !5
  %.not508590 = icmp slt i64 %383, 1
  br i1 %.not508590, label %._crit_edge594.thread, label %.lr.ph593

._crit_edge594.thread:                            ; preds = %382
  store i64 %383, ptr %25, align 8, !tbaa !5
  br label %.loopexit

.lr.ph593:                                        ; preds = %382
  %384 = load i64, ptr %2, align 8, !tbaa !5
  %.not510585 = icmp slt i64 %384, 1
  br i1 %.not510585, label %._crit_edge594.thread658, label %.lr.ph588.preheader

._crit_edge594.thread658:                         ; preds = %.lr.ph593
  store i64 %383, ptr %25, align 8, !tbaa !5
  br label %.lr.ph598

.lr.ph588.preheader:                              ; preds = %.lr.ph593
  %385 = mul i64 %44, %383
  %386 = add nsw i64 %384, -1
  %387 = shl i64 %44, 3
  %388 = add nuw i64 %383, 2305843009213693951
  %389 = mul i64 %44, %388
  %390 = add i64 %389, %384
  %391 = shl i64 %390, 3
  %scevgep731 = getelementptr i8, ptr %16, i64 %391
  %392 = shl i64 %384, 2
  %scevgep732 = getelementptr i8, ptr %13, i64 %392
  %min.iters.check739 = icmp ult i64 %384, 12
  %mul.result724 = shl i64 %386, 3
  %mul.result728 = shl i64 %386, 3
  %mul.overflow729 = icmp ugt i64 %386, 2305843009213693951
  %bound0733 = icmp ugt ptr %scevgep732, %16
  %bound1734 = icmp ugt ptr %scevgep731, %13
  %found.conflict735 = and i1 %bound0733, %bound1734
  %.mask822 = and i64 %44, 1152921504606846976
  %stride.check736 = icmp ne i64 %.mask822, 0
  %393 = or i1 %found.conflict735, %stride.check736
  %n.vec742 = and i64 %384, 4611686018427387902
  %ind.end743 = or i64 %384, 1
  %cmp.n754 = icmp eq i64 %384, %n.vec742
  %xtraiter842 = and i64 %384, 1
  %lcmp.mod843.not = icmp eq i64 %xtraiter842, 0
  br label %.lr.ph588

.lr.ph588:                                        ; preds = %.lr.ph588.preheader, %._crit_edge589
  %indvar720 = phi i64 [ 0, %.lr.ph588.preheader ], [ %indvar.next721, %._crit_edge589 ]
  %.6591 = phi i64 [ 1, %.lr.ph588.preheader ], [ %434, %._crit_edge589 ]
  %394 = mul nsw i64 %.6591, %44
  br i1 %min.iters.check739, label %scalar.ph738.preheader, label %vector.scevcheck719

vector.scevcheck719:                              ; preds = %.lr.ph588
  %395 = mul i64 %387, %indvar720
  %scevgep726 = getelementptr i8, ptr %16, i64 %395
  %396 = or disjoint i64 %395, 4
  %scevgep722 = getelementptr i8, ptr %16, i64 %396
  %397 = getelementptr i8, ptr %scevgep722, i64 %mul.result724
  %398 = icmp ult ptr %397, %scevgep722
  %399 = getelementptr i8, ptr %scevgep726, i64 %mul.result728
  %400 = icmp ult ptr %399, %scevgep726
  %401 = or i1 %400, %mul.overflow729
  %402 = or i1 %398, %401
  %brmerge862 = select i1 %402, i1 true, i1 %393
  br i1 %brmerge862, label %scalar.ph738.preheader, label %vector.body745

vector.body745:                                   ; preds = %vector.scevcheck719, %vector.body745
  %index746 = phi i64 [ %index.next753, %vector.body745 ], [ 0, %vector.scevcheck719 ]
  %offset.idx747 = or disjoint i64 %index746, 1
  %403 = add nsw i64 %offset.idx747, %394
  %404 = getelementptr float, ptr %13, i64 %index746
  %wide.load748 = load <2 x float>, ptr %404, align 4, !tbaa !10, !alias.scope !32
  %405 = getelementptr inbounds %struct.complex, ptr %46, i64 %403
  %406 = load <4 x float>, ptr %405, align 4, !tbaa !10
  %407 = getelementptr inbounds %struct.complex, ptr %46, i64 %403
  %408 = shufflevector <2 x float> %wide.load748, <2 x float> poison, <4 x i32> <i32 0, i32 0, i32 1, i32 1>
  %interleaved.vec752 = fmul <4 x float> %408, %406
  store <4 x float> %interleaved.vec752, ptr %407, align 4, !tbaa !10
  %index.next753 = add nuw i64 %index746, 2
  %409 = icmp eq i64 %index.next753, %n.vec742
  br i1 %409, label %middle.block737, label %vector.body745, !llvm.loop !35

middle.block737:                                  ; preds = %vector.body745
  br i1 %cmp.n754, label %._crit_edge589, label %scalar.ph738.preheader

scalar.ph738.preheader:                           ; preds = %vector.scevcheck719, %middle.block737, %.lr.ph588
  %.3472586.ph = phi i64 [ 1, %vector.scevcheck719 ], [ 1, %.lr.ph588 ], [ %ind.end743, %middle.block737 ]
  br i1 %lcmp.mod843.not, label %scalar.ph738.prol.loopexit, label %scalar.ph738.prol

scalar.ph738.prol:                                ; preds = %scalar.ph738.preheader
  %410 = getelementptr inbounds float, ptr %40, i64 %.3472586.ph
  %411 = load float, ptr %410, align 4, !tbaa !10
  %412 = getelementptr %struct.complex, ptr %46, i64 %.3472586.ph
  %413 = getelementptr %struct.complex, ptr %412, i64 %394
  %414 = load <2 x float>, ptr %413, align 4, !tbaa !10
  %415 = insertelement <2 x float> poison, float %411, i64 0
  %416 = shufflevector <2 x float> %415, <2 x float> poison, <2 x i32> zeroinitializer
  %417 = fmul <2 x float> %416, %414
  store <2 x float> %417, ptr %413, align 4, !tbaa !10
  %418 = add nuw nsw i64 %.3472586.ph, 1
  br label %scalar.ph738.prol.loopexit

scalar.ph738.prol.loopexit:                       ; preds = %scalar.ph738.prol, %scalar.ph738.preheader
  %.3472586.unr = phi i64 [ %.3472586.ph, %scalar.ph738.preheader ], [ %418, %scalar.ph738.prol ]
  %419 = icmp eq i64 %384, %.3472586.ph
  br i1 %419, label %._crit_edge589, label %scalar.ph738.preheader.new

scalar.ph738.preheader.new:                       ; preds = %scalar.ph738.prol.loopexit
  %invariant.gep853 = getelementptr %struct.complex, ptr %46, i64 %394
  %invariant.gep855 = getelementptr %struct.complex, ptr %46, i64 %394
  br label %scalar.ph738

scalar.ph738:                                     ; preds = %scalar.ph738, %scalar.ph738.preheader.new
  %.3472586 = phi i64 [ %.3472586.unr, %scalar.ph738.preheader.new ], [ %433, %scalar.ph738 ]
  %420 = getelementptr inbounds float, ptr %40, i64 %.3472586
  %421 = load float, ptr %420, align 4, !tbaa !10
  %gep854 = getelementptr %struct.complex, ptr %invariant.gep853, i64 %.3472586
  %422 = load <2 x float>, ptr %gep854, align 4, !tbaa !10
  %423 = insertelement <2 x float> poison, float %421, i64 0
  %424 = shufflevector <2 x float> %423, <2 x float> poison, <2 x i32> zeroinitializer
  %425 = fmul <2 x float> %424, %422
  store <2 x float> %425, ptr %gep854, align 4, !tbaa !10
  %426 = add nuw i64 %.3472586, 1
  %427 = getelementptr float, ptr %13, i64 %.3472586
  %428 = load float, ptr %427, align 4, !tbaa !10
  %gep856 = getelementptr %struct.complex, ptr %invariant.gep855, i64 %426
  %429 = load <2 x float>, ptr %gep856, align 4, !tbaa !10
  %430 = insertelement <2 x float> poison, float %428, i64 0
  %431 = shufflevector <2 x float> %430, <2 x float> poison, <2 x i32> zeroinitializer
  %432 = fmul <2 x float> %431, %429
  store <2 x float> %432, ptr %gep856, align 4, !tbaa !10
  %433 = add nuw i64 %.3472586, 2
  %exitcond641.not.1 = icmp eq i64 %426, %384
  br i1 %exitcond641.not.1, label %._crit_edge589, label %scalar.ph738, !llvm.loop !36

._crit_edge589:                                   ; preds = %scalar.ph738.prol.loopexit, %scalar.ph738, %middle.block737
  %434 = add nuw i64 %.6591, 1
  %exitcond642.not = icmp eq i64 %.6591, %383
  %indvar.next721 = add i64 %indvar720, 1
  br i1 %exitcond642.not, label %._crit_edge594, label %.lr.ph588, !llvm.loop !37

._crit_edge594:                                   ; preds = %._crit_edge589
  %435 = add i64 %384, %385
  store i64 %435, ptr %26, align 8, !tbaa !5
  store i64 %383, ptr %25, align 8, !tbaa !5
  br i1 %.not508590, label %.loopexit, label %.lr.ph598

.lr.ph598:                                        ; preds = %._crit_edge594.thread658, %._crit_edge594
  %436 = load float, ptr %30, align 4, !tbaa !10
  %min.iters.check757 = icmp ult i64 %383, 4
  br i1 %min.iters.check757, label %scalar.ph756.preheader, label %vector.ph758

vector.ph758:                                     ; preds = %.lr.ph598
  %n.vec760 = and i64 %383, 9223372036854775804
  %ind.end761 = or disjoint i64 %n.vec760, 1
  %broadcast.splatinsert = insertelement <4 x float> poison, float %436, i64 0
  %broadcast.splat = shufflevector <4 x float> %broadcast.splatinsert, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body763

vector.body763:                                   ; preds = %vector.body763, %vector.ph758
  %index764 = phi i64 [ 0, %vector.ph758 ], [ %index.next767, %vector.body763 ]
  %437 = getelementptr float, ptr %19, i64 %index764
  %wide.load766 = load <4 x float>, ptr %437, align 4, !tbaa !10
  %438 = fdiv <4 x float> %wide.load766, %broadcast.splat
  store <4 x float> %438, ptr %437, align 4, !tbaa !10
  %index.next767 = add nuw i64 %index764, 4
  %439 = icmp eq i64 %index.next767, %n.vec760
  br i1 %439, label %middle.block755, label %vector.body763, !llvm.loop !38

middle.block755:                                  ; preds = %vector.body763
  %cmp.n768 = icmp eq i64 %383, %n.vec760
  br i1 %cmp.n768, label %.loopexit, label %scalar.ph756.preheader

scalar.ph756.preheader:                           ; preds = %middle.block755, %.lr.ph598
  %.7596.ph = phi i64 [ 1, %.lr.ph598 ], [ %ind.end761, %middle.block755 ]
  br label %scalar.ph756

scalar.ph756:                                     ; preds = %scalar.ph756.preheader, %scalar.ph756
  %.7596 = phi i64 [ %443, %scalar.ph756 ], [ %.7596.ph, %scalar.ph756.preheader ]
  %440 = getelementptr inbounds float, ptr %47, i64 %.7596
  %441 = load float, ptr %440, align 4, !tbaa !10
  %442 = fdiv float %441, %436
  store float %442, ptr %440, align 4, !tbaa !10
  %443 = add nuw i64 %.7596, 1
  %exitcond643.not = icmp eq i64 %.7596, %383
  br i1 %exitcond643.not, label %.loopexit, label %scalar.ph756, !llvm.loop !39

444:                                              ; preds = %376
  %.not503 = icmp eq i64 %.1457, 0
  br i1 %.not503, label %.loopexit, label %445

445:                                              ; preds = %444
  %446 = load i64, ptr %5, align 8, !tbaa !5
  %.not504605 = icmp slt i64 %446, 1
  br i1 %.not504605, label %._crit_edge609.thread, label %.lr.ph608

._crit_edge609.thread:                            ; preds = %445
  store i64 %446, ptr %25, align 8, !tbaa !5
  br label %.loopexit

.lr.ph608:                                        ; preds = %445
  %447 = load i64, ptr %2, align 8, !tbaa !5
  %.not506599 = icmp slt i64 %447, 1
  br i1 %.not506599, label %._crit_edge609.thread659, label %.lr.ph602.preheader

._crit_edge609.thread659:                         ; preds = %.lr.ph608
  store i64 %446, ptr %25, align 8, !tbaa !5
  br label %.lr.ph613

.lr.ph602.preheader:                              ; preds = %.lr.ph608
  %448 = mul i64 %44, %446
  %449 = add nsw i64 %447, -1
  %450 = shl i64 %44, 3
  %451 = add nuw i64 %446, 2305843009213693951
  %452 = mul i64 %44, %451
  %453 = add i64 %452, %447
  %454 = shl i64 %453, 3
  %scevgep781 = getelementptr i8, ptr %16, i64 %454
  %455 = shl i64 %447, 2
  %scevgep782 = getelementptr i8, ptr %12, i64 %455
  %min.iters.check789 = icmp ult i64 %447, 12
  %mul.result774 = shl i64 %449, 3
  %mul.result778 = shl i64 %449, 3
  %mul.overflow779 = icmp ugt i64 %449, 2305843009213693951
  %bound0783 = icmp ugt ptr %scevgep782, %16
  %bound1784 = icmp ugt ptr %scevgep781, %12
  %found.conflict785 = and i1 %bound0783, %bound1784
  %.mask823 = and i64 %44, 1152921504606846976
  %stride.check786 = icmp ne i64 %.mask823, 0
  %456 = or i1 %found.conflict785, %stride.check786
  %n.vec792 = and i64 %447, 4611686018427387902
  %ind.end793 = or i64 %447, 1
  %cmp.n804 = icmp eq i64 %447, %n.vec792
  %xtraiter844 = and i64 %447, 1
  %lcmp.mod845.not = icmp eq i64 %xtraiter844, 0
  br label %.lr.ph602

.lr.ph602:                                        ; preds = %.lr.ph602.preheader, %._crit_edge603
  %indvar770 = phi i64 [ 0, %.lr.ph602.preheader ], [ %indvar.next771, %._crit_edge603 ]
  %.8606 = phi i64 [ 1, %.lr.ph602.preheader ], [ %497, %._crit_edge603 ]
  %457 = mul nsw i64 %.8606, %44
  br i1 %min.iters.check789, label %scalar.ph788.preheader, label %vector.scevcheck769

vector.scevcheck769:                              ; preds = %.lr.ph602
  %458 = mul i64 %450, %indvar770
  %scevgep776 = getelementptr i8, ptr %16, i64 %458
  %459 = or disjoint i64 %458, 4
  %scevgep772 = getelementptr i8, ptr %16, i64 %459
  %460 = getelementptr i8, ptr %scevgep772, i64 %mul.result774
  %461 = icmp ult ptr %460, %scevgep772
  %462 = getelementptr i8, ptr %scevgep776, i64 %mul.result778
  %463 = icmp ult ptr %462, %scevgep776
  %464 = or i1 %463, %mul.overflow779
  %465 = or i1 %461, %464
  %brmerge863 = select i1 %465, i1 true, i1 %456
  br i1 %brmerge863, label %scalar.ph788.preheader, label %vector.body795

vector.body795:                                   ; preds = %vector.scevcheck769, %vector.body795
  %index796 = phi i64 [ %index.next803, %vector.body795 ], [ 0, %vector.scevcheck769 ]
  %offset.idx797 = or disjoint i64 %index796, 1
  %466 = add nsw i64 %offset.idx797, %457
  %467 = getelementptr float, ptr %12, i64 %index796
  %wide.load798 = load <2 x float>, ptr %467, align 4, !tbaa !10, !alias.scope !40
  %468 = getelementptr inbounds %struct.complex, ptr %46, i64 %466
  %469 = load <4 x float>, ptr %468, align 4, !tbaa !10
  %470 = getelementptr inbounds %struct.complex, ptr %46, i64 %466
  %471 = shufflevector <2 x float> %wide.load798, <2 x float> poison, <4 x i32> <i32 0, i32 0, i32 1, i32 1>
  %interleaved.vec802 = fmul <4 x float> %471, %469
  store <4 x float> %interleaved.vec802, ptr %470, align 4, !tbaa !10
  %index.next803 = add nuw i64 %index796, 2
  %472 = icmp eq i64 %index.next803, %n.vec792
  br i1 %472, label %middle.block787, label %vector.body795, !llvm.loop !43

middle.block787:                                  ; preds = %vector.body795
  br i1 %cmp.n804, label %._crit_edge603, label %scalar.ph788.preheader

scalar.ph788.preheader:                           ; preds = %vector.scevcheck769, %middle.block787, %.lr.ph602
  %.4473600.ph = phi i64 [ 1, %vector.scevcheck769 ], [ 1, %.lr.ph602 ], [ %ind.end793, %middle.block787 ]
  br i1 %lcmp.mod845.not, label %scalar.ph788.prol.loopexit, label %scalar.ph788.prol

scalar.ph788.prol:                                ; preds = %scalar.ph788.preheader
  %473 = getelementptr inbounds float, ptr %39, i64 %.4473600.ph
  %474 = load float, ptr %473, align 4, !tbaa !10
  %475 = getelementptr %struct.complex, ptr %46, i64 %.4473600.ph
  %476 = getelementptr %struct.complex, ptr %475, i64 %457
  %477 = load <2 x float>, ptr %476, align 4, !tbaa !10
  %478 = insertelement <2 x float> poison, float %474, i64 0
  %479 = shufflevector <2 x float> %478, <2 x float> poison, <2 x i32> zeroinitializer
  %480 = fmul <2 x float> %479, %477
  store <2 x float> %480, ptr %476, align 4, !tbaa !10
  %481 = add nuw nsw i64 %.4473600.ph, 1
  br label %scalar.ph788.prol.loopexit

scalar.ph788.prol.loopexit:                       ; preds = %scalar.ph788.prol, %scalar.ph788.preheader
  %.4473600.unr = phi i64 [ %.4473600.ph, %scalar.ph788.preheader ], [ %481, %scalar.ph788.prol ]
  %482 = icmp eq i64 %447, %.4473600.ph
  br i1 %482, label %._crit_edge603, label %scalar.ph788.preheader.new

scalar.ph788.preheader.new:                       ; preds = %scalar.ph788.prol.loopexit
  %invariant.gep857 = getelementptr %struct.complex, ptr %46, i64 %457
  %invariant.gep859 = getelementptr %struct.complex, ptr %46, i64 %457
  br label %scalar.ph788

scalar.ph788:                                     ; preds = %scalar.ph788, %scalar.ph788.preheader.new
  %.4473600 = phi i64 [ %.4473600.unr, %scalar.ph788.preheader.new ], [ %496, %scalar.ph788 ]
  %483 = getelementptr inbounds float, ptr %39, i64 %.4473600
  %484 = load float, ptr %483, align 4, !tbaa !10
  %gep858 = getelementptr %struct.complex, ptr %invariant.gep857, i64 %.4473600
  %485 = load <2 x float>, ptr %gep858, align 4, !tbaa !10
  %486 = insertelement <2 x float> poison, float %484, i64 0
  %487 = shufflevector <2 x float> %486, <2 x float> poison, <2 x i32> zeroinitializer
  %488 = fmul <2 x float> %487, %485
  store <2 x float> %488, ptr %gep858, align 4, !tbaa !10
  %489 = add nuw i64 %.4473600, 1
  %490 = getelementptr float, ptr %12, i64 %.4473600
  %491 = load float, ptr %490, align 4, !tbaa !10
  %gep860 = getelementptr %struct.complex, ptr %invariant.gep859, i64 %489
  %492 = load <2 x float>, ptr %gep860, align 4, !tbaa !10
  %493 = insertelement <2 x float> poison, float %491, i64 0
  %494 = shufflevector <2 x float> %493, <2 x float> poison, <2 x i32> zeroinitializer
  %495 = fmul <2 x float> %494, %492
  store <2 x float> %495, ptr %gep860, align 4, !tbaa !10
  %496 = add nuw i64 %.4473600, 2
  %exitcond644.not.1 = icmp eq i64 %489, %447
  br i1 %exitcond644.not.1, label %._crit_edge603, label %scalar.ph788, !llvm.loop !44

._crit_edge603:                                   ; preds = %scalar.ph788.prol.loopexit, %scalar.ph788, %middle.block787
  %497 = add nuw i64 %.8606, 1
  %exitcond645.not = icmp eq i64 %.8606, %446
  %indvar.next771 = add i64 %indvar770, 1
  br i1 %exitcond645.not, label %._crit_edge609, label %.lr.ph602, !llvm.loop !45

._crit_edge609:                                   ; preds = %._crit_edge603
  %498 = add i64 %447, %448
  store i64 %498, ptr %26, align 8, !tbaa !5
  store i64 %446, ptr %25, align 8, !tbaa !5
  br i1 %.not504605, label %.loopexit, label %.lr.ph613

.lr.ph613:                                        ; preds = %._crit_edge609.thread659, %._crit_edge609
  %499 = load float, ptr %32, align 4, !tbaa !10
  %min.iters.check807 = icmp ult i64 %446, 4
  br i1 %min.iters.check807, label %scalar.ph806.preheader, label %vector.ph808

vector.ph808:                                     ; preds = %.lr.ph613
  %n.vec810 = and i64 %446, 9223372036854775804
  %ind.end811 = or disjoint i64 %n.vec810, 1
  %broadcast.splatinsert817 = insertelement <4 x float> poison, float %499, i64 0
  %broadcast.splat818 = shufflevector <4 x float> %broadcast.splatinsert817, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body813

vector.body813:                                   ; preds = %vector.body813, %vector.ph808
  %index814 = phi i64 [ 0, %vector.ph808 ], [ %index.next819, %vector.body813 ]
  %500 = getelementptr float, ptr %19, i64 %index814
  %wide.load816 = load <4 x float>, ptr %500, align 4, !tbaa !10
  %501 = fdiv <4 x float> %wide.load816, %broadcast.splat818
  store <4 x float> %501, ptr %500, align 4, !tbaa !10
  %index.next819 = add nuw i64 %index814, 4
  %502 = icmp eq i64 %index.next819, %n.vec810
  br i1 %502, label %middle.block805, label %vector.body813, !llvm.loop !46

middle.block805:                                  ; preds = %vector.body813
  %cmp.n820 = icmp eq i64 %446, %n.vec810
  br i1 %cmp.n820, label %.loopexit, label %scalar.ph806.preheader

scalar.ph806.preheader:                           ; preds = %middle.block805, %.lr.ph613
  %.9611.ph = phi i64 [ 1, %.lr.ph613 ], [ %ind.end811, %middle.block805 ]
  br label %scalar.ph806

scalar.ph806:                                     ; preds = %scalar.ph806.preheader, %scalar.ph806
  %.9611 = phi i64 [ %506, %scalar.ph806 ], [ %.9611.ph, %scalar.ph806.preheader ]
  %503 = getelementptr inbounds float, ptr %47, i64 %.9611
  %504 = load float, ptr %503, align 4, !tbaa !10
  %505 = fdiv float %504, %499
  store float %505, ptr %503, align 4, !tbaa !10
  %506 = add nuw i64 %.9611, 1
  %exitcond646.not = icmp eq i64 %.9611, %446
  br i1 %exitcond646.not, label %.loopexit, label %scalar.ph806, !llvm.loop !47

.loopexit:                                        ; preds = %scalar.ph756, %scalar.ph806, %middle.block755, %middle.block805, %._crit_edge609.thread, %._crit_edge594.thread, %._crit_edge594, %._crit_edge609, %444, %381
  %507 = load float, ptr %18, align 4, !tbaa !10
  %508 = fpext float %507 to double
  %509 = call double @slamch_(ptr noundef nonnull @.str.12) #4
  %510 = fcmp ogt double %509, %508
  br i1 %510, label %511, label %514

511:                                              ; preds = %.loopexit
  %512 = load i64, ptr %2, align 8, !tbaa !5
  %513 = add nsw i64 %512, 1
  store i64 %513, ptr %23, align 8, !tbaa !5
  br label %514

514:                                              ; preds = %511, %.loopexit
  store float %.1, ptr %22, align 4, !tbaa !10
  br label %515

515:                                              ; preds = %514, %._crit_edge626, %.thread535
  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 4, ptr nonnull %30) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #4
  call void @llvm.lifetime.end.p0(i64 4, 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
  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 double @slamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

declare i32 @cgbtrs_(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 @cgbrfs_(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.smin.i64(i64, i64) #3

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.smax.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 = !{!7, !7, i64 0}
!10 = !{!11, !11, i64 0}
!11 = !{!"float", !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = distinct !{!14, !13}
!15 = !{!16}
!16 = distinct !{!16, !17}
!17 = distinct !{!17, !"LVerDomain"}
!18 = distinct !{!18, !13, !19, !20}
!19 = !{!"llvm.loop.isvectorized", i32 1}
!20 = !{!"llvm.loop.unroll.runtime.disable"}
!21 = distinct !{!21, !13, !19}
!22 = distinct !{!22, !13}
!23 = !{!24}
!24 = distinct !{!24, !25}
!25 = distinct !{!25, !"LVerDomain"}
!26 = distinct !{!26, !13, !19, !20}
!27 = distinct !{!27, !13, !19}
!28 = distinct !{!28, !13}
!29 = distinct !{!29, !13}
!30 = distinct !{!30, !13}
!31 = distinct !{!31, !13}
!32 = !{!33}
!33 = distinct !{!33, !34}
!34 = distinct !{!34, !"LVerDomain"}
!35 = distinct !{!35, !13, !19, !20}
!36 = distinct !{!36, !13, !19}
!37 = distinct !{!37, !13}
!38 = distinct !{!38, !13, !19, !20}
!39 = distinct !{!39, !13, !20, !19}
!40 = !{!41}
!41 = distinct !{!41, !42}
!42 = distinct !{!42, !"LVerDomain"}
!43 = distinct !{!43, !13, !19, !20}
!44 = distinct !{!44, !13, !19}
!45 = distinct !{!45, !13}
!46 = distinct !{!46, !13, !19, !20}
!47 = distinct !{!47, !13, !20, !19}


; Effective O3 passes: ADCEPass,CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalDCEPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass,VectorCombinePass