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

; 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 [8 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [9 x i8], align 1
@c__1 = external hidden global i64, align 8
@c_b6 = external hidden global %struct.complex, align 4
@c_b8 = external hidden global %struct.complex, align 4
@c_b31 = external hidden global float, align 4

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

177:                                              ; preds = %31
  store i32 0, ptr %32, align 4
  store i32 1, ptr %111, align 4
  br label %907

178:                                              ; preds = %31
  %179 = getelementptr inbounds [1 x i8], ptr %82, i64 0, i64 0
  %180 = load ptr, ptr %34, align 8, !tbaa !5
  call void @chla_transtype__(ptr noundef %179, i64 noundef 1, ptr noundef %180)
  %181 = getelementptr inbounds [1 x i8], ptr %82, i64 0, i64 0
  %182 = load i8, ptr %181, align 1, !tbaa !11
  %183 = getelementptr inbounds [1 x i8], ptr %104, i64 0, i64 0
  store i8 %182, ptr %183, align 1, !tbaa !11
  %184 = call double @slamch_(ptr noundef @.str)
  %185 = fptrunc double %184 to float
  store float %185, ptr %96, align 4, !tbaa !12
  %186 = call double @slamch_(ptr noundef @.str.1)
  %187 = fptrunc double %186 to float
  store float %187, ptr %108, align 4, !tbaa !12
  %188 = load float, ptr %108, align 4, !tbaa !12
  %189 = load float, ptr %108, align 4, !tbaa !12
  %190 = fmul float %189, %188
  store float %190, ptr %108, align 4, !tbaa !12
  %191 = load ptr, ptr %35, align 8, !tbaa !5
  %192 = load i64, ptr %191, align 8, !tbaa !9
  %193 = sitofp i64 %192 to float
  %194 = load float, ptr %96, align 4, !tbaa !12
  %195 = fmul float %193, %194
  store float %195, ptr %97, align 4, !tbaa !12
  %196 = load ptr, ptr %36, align 8, !tbaa !5
  %197 = load i64, ptr %196, align 8, !tbaa !9
  %198 = load ptr, ptr %37, align 8, !tbaa !5
  %199 = load i64, ptr %198, align 8, !tbaa !9
  %200 = add nsw i64 %197, %199
  %201 = add nsw i64 %200, 1
  store i64 %201, ptr %87, align 8, !tbaa !9
  %202 = load ptr, ptr %38, align 8, !tbaa !5
  %203 = load i64, ptr %202, align 8, !tbaa !9
  store i64 %203, ptr %76, align 8, !tbaa !9
  store i64 1, ptr %86, align 8, !tbaa !9
  br label %204

204:                                              ; preds = %903, %178
  %205 = load i64, ptr %86, align 8, !tbaa !9
  %206 = load i64, ptr %76, align 8, !tbaa !9
  %207 = icmp sle i64 %205, %206
  br i1 %207, label %208, label %906

208:                                              ; preds = %204
  store i64 1, ptr %101, align 8, !tbaa !9
  %209 = load i64, ptr %101, align 8, !tbaa !9
  %210 = icmp eq i64 %209, 2
  br i1 %210, label %211, label %232

211:                                              ; preds = %208
  %212 = load ptr, ptr %35, align 8, !tbaa !5
  %213 = load i64, ptr %212, align 8, !tbaa !9
  store i64 %213, ptr %77, align 8, !tbaa !9
  store i64 1, ptr %85, align 8, !tbaa !9
  br label %214

214:                                              ; preds = %228, %211
  %215 = load i64, ptr %85, align 8, !tbaa !9
  %216 = load i64, ptr %77, align 8, !tbaa !9
  %217 = icmp sle i64 %215, %216
  br i1 %217, label %218, label %231

218:                                              ; preds = %214
  %219 = load i64, ptr %85, align 8, !tbaa !9
  store i64 %219, ptr %78, align 8, !tbaa !9
  %220 = load ptr, ptr %57, align 8, !tbaa !5
  %221 = load i64, ptr %78, align 8, !tbaa !9
  %222 = getelementptr inbounds %struct.complex, ptr %220, i64 %221
  %223 = getelementptr inbounds %struct.complex, ptr %222, i32 0, i32 0
  store float 0.000000e+00, ptr %223, align 4, !tbaa !14
  %224 = load ptr, ptr %57, align 8, !tbaa !5
  %225 = load i64, ptr %78, align 8, !tbaa !9
  %226 = getelementptr inbounds %struct.complex, ptr %224, i64 %225
  %227 = getelementptr inbounds %struct.complex, ptr %226, i32 0, i32 1
  store float 0.000000e+00, ptr %227, align 4, !tbaa !16
  br label %228

228:                                              ; preds = %218
  %229 = load i64, ptr %85, align 8, !tbaa !9
  %230 = add nsw i64 %229, 1
  store i64 %230, ptr %85, align 8, !tbaa !9
  br label %214, !llvm.loop !17

231:                                              ; preds = %214
  br label %232

232:                                              ; preds = %231, %208
  store float 0.000000e+00, ptr %102, align 4, !tbaa !12
  store float 0.000000e+00, ptr %83, align 4, !tbaa !12
  store float 0.000000e+00, ptr %103, align 4, !tbaa !12
  store float 0.000000e+00, ptr %84, align 4, !tbaa !12
  %233 = load float, ptr %108, align 4, !tbaa !12
  store float %233, ptr %91, align 4, !tbaa !12
  %234 = load float, ptr %108, align 4, !tbaa !12
  store float %234, ptr %92, align 4, !tbaa !12
  %235 = load float, ptr %108, align 4, !tbaa !12
  store float %235, ptr %93, align 4, !tbaa !12
  %236 = load float, ptr %108, align 4, !tbaa !12
  store float %236, ptr %89, align 4, !tbaa !12
  %237 = load float, ptr %108, align 4, !tbaa !12
  store float %237, ptr %99, align 4, !tbaa !12
  %238 = load float, ptr %108, align 4, !tbaa !12
  store float %238, ptr %98, align 4, !tbaa !12
  store i64 1, ptr %109, align 8, !tbaa !9
  store i64 0, ptr %110, align 8, !tbaa !9
  store i64 0, ptr %88, align 8, !tbaa !9
  %239 = load ptr, ptr %59, align 8, !tbaa !5
  %240 = load i64, ptr %239, align 8, !tbaa !9
  store i64 %240, ptr %77, align 8, !tbaa !9
  store i64 1, ptr %94, align 8, !tbaa !9
  br label %241

241:                                              ; preds = %747, %232
  %242 = load i64, ptr %94, align 8, !tbaa !9
  %243 = load i64, ptr %77, align 8, !tbaa !9
  %244 = icmp sle i64 %242, %243
  br i1 %244, label %245, label %750

245:                                              ; preds = %241
  %246 = load ptr, ptr %35, align 8, !tbaa !5
  %247 = load ptr, ptr %46, align 8, !tbaa !5
  %248 = load i64, ptr %86, align 8, !tbaa !9
  %249 = load i64, ptr %68, align 8, !tbaa !9
  %250 = mul nsw i64 %248, %249
  %251 = add nsw i64 %250, 1
  %252 = getelementptr inbounds %struct.complex, ptr %247, i64 %251
  %253 = load ptr, ptr %54, align 8, !tbaa !5
  %254 = getelementptr inbounds %struct.complex, ptr %253, i64 1
  %255 = call i32 @f2c_ccopy(ptr noundef %246, ptr noundef %252, ptr noundef @c__1, ptr noundef %254, ptr noundef @c__1)
  %256 = load i64, ptr %101, align 8, !tbaa !9
  %257 = icmp eq i64 %256, 0
  br i1 %257, label %258, label %276

258:                                              ; preds = %245
  %259 = getelementptr inbounds [1 x i8], ptr %104, i64 0, i64 0
  %260 = load ptr, ptr %35, align 8, !tbaa !5
  %261 = load ptr, ptr %36, align 8, !tbaa !5
  %262 = load ptr, ptr %37, align 8, !tbaa !5
  %263 = load ptr, ptr %39, align 8, !tbaa !5
  %264 = load i64, ptr %65, align 8, !tbaa !9
  %265 = getelementptr inbounds %struct.complex, ptr %263, i64 %264
  %266 = load ptr, ptr %40, align 8, !tbaa !5
  %267 = load ptr, ptr %48, align 8, !tbaa !5
  %268 = load i64, ptr %86, align 8, !tbaa !9
  %269 = load i64, ptr %70, align 8, !tbaa !9
  %270 = mul nsw i64 %268, %269
  %271 = add nsw i64 %270, 1
  %272 = getelementptr inbounds %struct.complex, ptr %267, i64 %271
  %273 = load ptr, ptr %54, align 8, !tbaa !5
  %274 = getelementptr inbounds %struct.complex, ptr %273, i64 1
  %275 = call i32 @f2c_cgbmv(ptr noundef %259, ptr noundef %87, ptr noundef %260, ptr noundef %261, ptr noundef %262, ptr noundef @c_b6, ptr noundef %265, ptr noundef %266, ptr noundef %272, ptr noundef @c__1, ptr noundef @c_b8, ptr noundef %274, ptr noundef @c__1)
  br label %322

276:                                              ; preds = %245
  %277 = load i64, ptr %101, align 8, !tbaa !9
  %278 = icmp eq i64 %277, 1
  br i1 %278, label %279, label %299

279:                                              ; preds = %276
  %280 = load ptr, ptr %34, align 8, !tbaa !5
  %281 = load ptr, ptr %35, align 8, !tbaa !5
  %282 = load ptr, ptr %35, align 8, !tbaa !5
  %283 = load ptr, ptr %36, align 8, !tbaa !5
  %284 = load ptr, ptr %37, align 8, !tbaa !5
  %285 = load ptr, ptr %39, align 8, !tbaa !5
  %286 = load i64, ptr %65, align 8, !tbaa !9
  %287 = getelementptr inbounds %struct.complex, ptr %285, i64 %286
  %288 = load ptr, ptr %40, align 8, !tbaa !5
  %289 = load ptr, ptr %48, align 8, !tbaa !5
  %290 = load i64, ptr %86, align 8, !tbaa !9
  %291 = load i64, ptr %70, align 8, !tbaa !9
  %292 = mul nsw i64 %290, %291
  %293 = add nsw i64 %292, 1
  %294 = getelementptr inbounds %struct.complex, ptr %289, i64 %293
  %295 = load ptr, ptr %54, align 8, !tbaa !5
  %296 = getelementptr inbounds %struct.complex, ptr %295, i64 1
  %297 = load ptr, ptr %33, align 8, !tbaa !5
  %298 = call i32 @blas_cgbmv_x__(ptr noundef %280, ptr noundef %281, ptr noundef %282, ptr noundef %283, ptr noundef %284, ptr noundef @c_b6, ptr noundef %287, ptr noundef %288, ptr noundef %294, ptr noundef @c__1, ptr noundef @c_b8, ptr noundef %296, ptr noundef @c__1, ptr noundef %297)
  br label %321

299:                                              ; preds = %276
  %300 = load ptr, ptr %34, align 8, !tbaa !5
  %301 = load ptr, ptr %35, align 8, !tbaa !5
  %302 = load ptr, ptr %35, align 8, !tbaa !5
  %303 = load ptr, ptr %36, align 8, !tbaa !5
  %304 = load ptr, ptr %37, align 8, !tbaa !5
  %305 = load ptr, ptr %39, align 8, !tbaa !5
  %306 = load i64, ptr %65, align 8, !tbaa !9
  %307 = getelementptr inbounds %struct.complex, ptr %305, i64 %306
  %308 = load ptr, ptr %40, align 8, !tbaa !5
  %309 = load ptr, ptr %48, align 8, !tbaa !5
  %310 = load i64, ptr %86, align 8, !tbaa !9
  %311 = load i64, ptr %70, align 8, !tbaa !9
  %312 = mul nsw i64 %310, %311
  %313 = add nsw i64 %312, 1
  %314 = getelementptr inbounds %struct.complex, ptr %309, i64 %313
  %315 = load ptr, ptr %57, align 8, !tbaa !5
  %316 = getelementptr inbounds %struct.complex, ptr %315, i64 1
  %317 = load ptr, ptr %54, align 8, !tbaa !5
  %318 = getelementptr inbounds %struct.complex, ptr %317, i64 1
  %319 = load ptr, ptr %33, align 8, !tbaa !5
  %320 = call i32 @blas_cgbmv2_x__(ptr noundef %300, ptr noundef %301, ptr noundef %302, ptr noundef %303, ptr noundef %304, ptr noundef @c_b6, ptr noundef %307, ptr noundef %308, ptr noundef %314, ptr noundef %316, ptr noundef @c__1, ptr noundef @c_b8, ptr noundef %318, ptr noundef @c__1, ptr noundef %319)
  br label %321

321:                                              ; preds = %299, %279
  br label %322

322:                                              ; preds = %321, %258
  %323 = load ptr, ptr %35, align 8, !tbaa !5
  %324 = load ptr, ptr %54, align 8, !tbaa !5
  %325 = getelementptr inbounds %struct.complex, ptr %324, i64 1
  %326 = load ptr, ptr %56, align 8, !tbaa !5
  %327 = getelementptr inbounds %struct.complex, ptr %326, i64 1
  %328 = call i32 @f2c_ccopy(ptr noundef %323, ptr noundef %325, ptr noundef @c__1, ptr noundef %327, ptr noundef @c__1)
  %329 = getelementptr inbounds [1 x i8], ptr %104, i64 0, i64 0
  %330 = load ptr, ptr %35, align 8, !tbaa !5
  %331 = load ptr, ptr %36, align 8, !tbaa !5
  %332 = load ptr, ptr %37, align 8, !tbaa !5
  %333 = load ptr, ptr %41, align 8, !tbaa !5
  %334 = load i64, ptr %67, align 8, !tbaa !9
  %335 = getelementptr inbounds %struct.complex, ptr %333, i64 %334
  %336 = load ptr, ptr %42, align 8, !tbaa !5
  %337 = load ptr, ptr %43, align 8, !tbaa !5
  %338 = getelementptr inbounds i64, ptr %337, i64 1
  %339 = load ptr, ptr %56, align 8, !tbaa !5
  %340 = getelementptr inbounds %struct.complex, ptr %339, i64 1
  %341 = load ptr, ptr %35, align 8, !tbaa !5
  %342 = load ptr, ptr %63, align 8, !tbaa !5
  %343 = call i32 @cgbtrs_(ptr noundef %329, ptr noundef %330, ptr noundef %331, ptr noundef %332, ptr noundef @c__1, ptr noundef %335, ptr noundef %336, ptr noundef %338, ptr noundef %340, ptr noundef %341, ptr noundef %342)
  store float 0.000000e+00, ptr %105, align 4, !tbaa !12
  store float 0.000000e+00, ptr %106, align 4, !tbaa !12
  store float 0.000000e+00, ptr %107, align 4, !tbaa !12
  store float 0.000000e+00, ptr %99, align 4, !tbaa !12
  %344 = load float, ptr %108, align 4, !tbaa !12
  store float %344, ptr %100, align 4, !tbaa !12
  %345 = load ptr, ptr %35, align 8, !tbaa !5
  %346 = load i64, ptr %345, align 8, !tbaa !9
  store i64 %346, ptr %78, align 8, !tbaa !9
  store i64 1, ptr %85, align 8, !tbaa !9
  br label %347

347:                                              ; preds = %527, %322
  %348 = load i64, ptr %85, align 8, !tbaa !9
  %349 = load i64, ptr %78, align 8, !tbaa !9
  %350 = icmp sle i64 %348, %349
  br i1 %350, label %351, label %530

351:                                              ; preds = %347
  %352 = load i64, ptr %85, align 8, !tbaa !9
  %353 = load i64, ptr %86, align 8, !tbaa !9
  %354 = load i64, ptr %70, align 8, !tbaa !9
  %355 = mul nsw i64 %353, %354
  %356 = add nsw i64 %352, %355
  store i64 %356, ptr %79, align 8, !tbaa !9
  %357 = load ptr, ptr %48, align 8, !tbaa !5
  %358 = load i64, ptr %79, align 8, !tbaa !9
  %359 = getelementptr inbounds %struct.complex, ptr %357, i64 %358
  %360 = getelementptr inbounds %struct.complex, ptr %359, i32 0, i32 0
  %361 = load float, ptr %360, align 4, !tbaa !14
  store float %361, ptr %80, align 4, !tbaa !12
  %362 = load float, ptr %80, align 4, !tbaa !12
  %363 = fcmp oge float %362, 0.000000e+00
  br i1 %363, label %364, label %366

364:                                              ; preds = %351
  %365 = load float, ptr %80, align 4, !tbaa !12
  br label %369

366:                                              ; preds = %351
  %367 = load float, ptr %80, align 4, !tbaa !12
  %368 = fneg float %367
  br label %369

369:                                              ; preds = %366, %364
  %370 = phi float [ %365, %364 ], [ %368, %366 ]
  %371 = fpext float %370 to double
  %372 = load ptr, ptr %48, align 8, !tbaa !5
  %373 = load i64, ptr %85, align 8, !tbaa !9
  %374 = load i64, ptr %86, align 8, !tbaa !9
  %375 = load i64, ptr %70, align 8, !tbaa !9
  %376 = mul nsw i64 %374, %375
  %377 = add nsw i64 %373, %376
  %378 = getelementptr inbounds %struct.complex, ptr %372, i64 %377
  %379 = call double @r_imag(ptr noundef %378)
  %380 = fptrunc double %379 to float
  store float %380, ptr %81, align 4, !tbaa !12
  %381 = load float, ptr %81, align 4, !tbaa !12
  %382 = fcmp oge float %381, 0.000000e+00
  br i1 %382, label %383, label %385

383:                                              ; preds = %369
  %384 = load float, ptr %81, align 4, !tbaa !12
  br label %388

385:                                              ; preds = %369
  %386 = load float, ptr %81, align 4, !tbaa !12
  %387 = fneg float %386
  br label %388

388:                                              ; preds = %385, %383
  %389 = phi float [ %384, %383 ], [ %387, %385 ]
  %390 = fpext float %389 to double
  %391 = fadd double %371, %390
  %392 = fptrunc double %391 to float
  store float %392, ptr %90, align 4, !tbaa !12
  %393 = load i64, ptr %85, align 8, !tbaa !9
  store i64 %393, ptr %79, align 8, !tbaa !9
  %394 = load ptr, ptr %56, align 8, !tbaa !5
  %395 = load i64, ptr %79, align 8, !tbaa !9
  %396 = getelementptr inbounds %struct.complex, ptr %394, i64 %395
  %397 = getelementptr inbounds %struct.complex, ptr %396, i32 0, i32 0
  %398 = load float, ptr %397, align 4, !tbaa !14
  store float %398, ptr %80, align 4, !tbaa !12
  %399 = load float, ptr %80, align 4, !tbaa !12
  %400 = fcmp oge float %399, 0.000000e+00
  br i1 %400, label %401, label %403

401:                                              ; preds = %388
  %402 = load float, ptr %80, align 4, !tbaa !12
  br label %406

403:                                              ; preds = %388
  %404 = load float, ptr %80, align 4, !tbaa !12
  %405 = fneg float %404
  br label %406

406:                                              ; preds = %403, %401
  %407 = phi float [ %402, %401 ], [ %405, %403 ]
  %408 = fpext float %407 to double
  %409 = load ptr, ptr %56, align 8, !tbaa !5
  %410 = load i64, ptr %85, align 8, !tbaa !9
  %411 = getelementptr inbounds %struct.complex, ptr %409, i64 %410
  %412 = call double @r_imag(ptr noundef %411)
  %413 = fptrunc double %412 to float
  store float %413, ptr %81, align 4, !tbaa !12
  %414 = load float, ptr %81, align 4, !tbaa !12
  %415 = fcmp oge float %414, 0.000000e+00
  br i1 %415, label %416, label %418

416:                                              ; preds = %406
  %417 = load float, ptr %81, align 4, !tbaa !12
  br label %421

418:                                              ; preds = %406
  %419 = load float, ptr %81, align 4, !tbaa !12
  %420 = fneg float %419
  br label %421

421:                                              ; preds = %418, %416
  %422 = phi float [ %417, %416 ], [ %420, %418 ]
  %423 = fpext float %422 to double
  %424 = fadd double %408, %423
  %425 = fptrunc double %424 to float
  store float %425, ptr %95, align 4, !tbaa !12
  %426 = load float, ptr %90, align 4, !tbaa !12
  %427 = fcmp une float %426, 0.000000e+00
  br i1 %427, label %428, label %444

428:                                              ; preds = %421
  %429 = load float, ptr %99, align 4, !tbaa !12
  store float %429, ptr %80, align 4, !tbaa !12
  %430 = load float, ptr %95, align 4, !tbaa !12
  %431 = load float, ptr %90, align 4, !tbaa !12
  %432 = fdiv float %430, %431
  store float %432, ptr %81, align 4, !tbaa !12
  %433 = load float, ptr %80, align 4, !tbaa !12
  %434 = load float, ptr %81, align 4, !tbaa !12
  %435 = fcmp oge float %433, %434
  br i1 %435, label %436, label %438

436:                                              ; preds = %428
  %437 = load float, ptr %80, align 4, !tbaa !12
  br label %440

438:                                              ; preds = %428
  %439 = load float, ptr %81, align 4, !tbaa !12
  br label %440

440:                                              ; preds = %438, %436
  %441 = phi float [ %437, %436 ], [ %439, %438 ]
  %442 = fpext float %441 to double
  %443 = fptrunc double %442 to float
  store float %443, ptr %99, align 4, !tbaa !12
  br label %450

444:                                              ; preds = %421
  %445 = load float, ptr %95, align 4, !tbaa !12
  %446 = fcmp une float %445, 0.000000e+00
  br i1 %446, label %447, label %449

447:                                              ; preds = %444
  %448 = load float, ptr %108, align 4, !tbaa !12
  store float %448, ptr %99, align 4, !tbaa !12
  br label %449

449:                                              ; preds = %447, %444
  br label %450

450:                                              ; preds = %449, %440
  %451 = load float, ptr %100, align 4, !tbaa !12
  %452 = load float, ptr %90, align 4, !tbaa !12
  %453 = fcmp ole float %451, %452
  br i1 %453, label %454, label %456

454:                                              ; preds = %450
  %455 = load float, ptr %100, align 4, !tbaa !12
  br label %458

456:                                              ; preds = %450
  %457 = load float, ptr %90, align 4, !tbaa !12
  br label %458

458:                                              ; preds = %456, %454
  %459 = phi float [ %455, %454 ], [ %457, %456 ]
  %460 = fpext float %459 to double
  %461 = fptrunc double %460 to float
  store float %461, ptr %100, align 4, !tbaa !12
  %462 = load float, ptr %106, align 4, !tbaa !12
  %463 = load float, ptr %90, align 4, !tbaa !12
  %464 = fcmp oge float %462, %463
  br i1 %464, label %465, label %467

465:                                              ; preds = %458
  %466 = load float, ptr %106, align 4, !tbaa !12
  br label %469

467:                                              ; preds = %458
  %468 = load float, ptr %90, align 4, !tbaa !12
  br label %469

469:                                              ; preds = %467, %465
  %470 = phi float [ %466, %465 ], [ %468, %467 ]
  %471 = fpext float %470 to double
  %472 = fptrunc double %471 to float
  store float %472, ptr %106, align 4, !tbaa !12
  %473 = load ptr, ptr %44, align 8, !tbaa !5
  %474 = load i64, ptr %473, align 8, !tbaa !9
  %475 = icmp ne i64 %474, 0
  br i1 %475, label %476, label %513

476:                                              ; preds = %469
  %477 = load float, ptr %105, align 4, !tbaa !12
  store float %477, ptr %80, align 4, !tbaa !12
  %478 = load float, ptr %90, align 4, !tbaa !12
  %479 = load ptr, ptr %45, align 8, !tbaa !5
  %480 = load i64, ptr %85, align 8, !tbaa !9
  %481 = getelementptr inbounds float, ptr %479, i64 %480
  %482 = load float, ptr %481, align 4, !tbaa !12
  %483 = fmul float %478, %482
  store float %483, ptr %81, align 4, !tbaa !12
  %484 = load float, ptr %80, align 4, !tbaa !12
  %485 = load float, ptr %81, align 4, !tbaa !12
  %486 = fcmp oge float %484, %485
  br i1 %486, label %487, label %489

487:                                              ; preds = %476
  %488 = load float, ptr %80, align 4, !tbaa !12
  br label %491

489:                                              ; preds = %476
  %490 = load float, ptr %81, align 4, !tbaa !12
  br label %491

491:                                              ; preds = %489, %487
  %492 = phi float [ %488, %487 ], [ %490, %489 ]
  %493 = fpext float %492 to double
  %494 = fptrunc double %493 to float
  store float %494, ptr %105, align 4, !tbaa !12
  %495 = load float, ptr %107, align 4, !tbaa !12
  store float %495, ptr %80, align 4, !tbaa !12
  %496 = load float, ptr %95, align 4, !tbaa !12
  %497 = load ptr, ptr %45, align 8, !tbaa !5
  %498 = load i64, ptr %85, align 8, !tbaa !9
  %499 = getelementptr inbounds float, ptr %497, i64 %498
  %500 = load float, ptr %499, align 4, !tbaa !12
  %501 = fmul float %496, %500
  store float %501, ptr %81, align 4, !tbaa !12
  %502 = load float, ptr %80, align 4, !tbaa !12
  %503 = load float, ptr %81, align 4, !tbaa !12
  %504 = fcmp oge float %502, %503
  br i1 %504, label %505, label %507

505:                                              ; preds = %491
  %506 = load float, ptr %80, align 4, !tbaa !12
  br label %509

507:                                              ; preds = %491
  %508 = load float, ptr %81, align 4, !tbaa !12
  br label %509

509:                                              ; preds = %507, %505
  %510 = phi float [ %506, %505 ], [ %508, %507 ]
  %511 = fpext float %510 to double
  %512 = fptrunc double %511 to float
  store float %512, ptr %107, align 4, !tbaa !12
  br label %526

513:                                              ; preds = %469
  %514 = load float, ptr %106, align 4, !tbaa !12
  store float %514, ptr %105, align 4, !tbaa !12
  %515 = load float, ptr %107, align 4, !tbaa !12
  %516 = load float, ptr %95, align 4, !tbaa !12
  %517 = fcmp oge float %515, %516
  br i1 %517, label %518, label %520

518:                                              ; preds = %513
  %519 = load float, ptr %107, align 4, !tbaa !12
  br label %522

520:                                              ; preds = %513
  %521 = load float, ptr %95, align 4, !tbaa !12
  br label %522

522:                                              ; preds = %520, %518
  %523 = phi float [ %519, %518 ], [ %521, %520 ]
  %524 = fpext float %523 to double
  %525 = fptrunc double %524 to float
  store float %525, ptr %107, align 4, !tbaa !12
  br label %526

526:                                              ; preds = %522, %509
  br label %527

527:                                              ; preds = %526
  %528 = load i64, ptr %85, align 8, !tbaa !9
  %529 = add nsw i64 %528, 1
  store i64 %529, ptr %85, align 8, !tbaa !9
  br label %347, !llvm.loop !19

530:                                              ; preds = %347
  %531 = load float, ptr %105, align 4, !tbaa !12
  %532 = fcmp une float %531, 0.000000e+00
  br i1 %532, label %533, label %537

533:                                              ; preds = %530
  %534 = load float, ptr %107, align 4, !tbaa !12
  %535 = load float, ptr %105, align 4, !tbaa !12
  %536 = fdiv float %534, %535
  store float %536, ptr %98, align 4, !tbaa !12
  br label %544

537:                                              ; preds = %530
  %538 = load float, ptr %107, align 4, !tbaa !12
  %539 = fcmp oeq float %538, 0.000000e+00
  br i1 %539, label %540, label %541

540:                                              ; preds = %537
  store float 0.000000e+00, ptr %98, align 4, !tbaa !12
  br label %543

541:                                              ; preds = %537
  %542 = load float, ptr %108, align 4, !tbaa !12
  store float %542, ptr %98, align 4, !tbaa !12
  br label %543

543:                                              ; preds = %541, %540
  br label %544

544:                                              ; preds = %543, %533
  %545 = load float, ptr %107, align 4, !tbaa !12
  %546 = load float, ptr %93, align 4, !tbaa !12
  %547 = fdiv float %545, %546
  store float %547, ptr %102, align 4, !tbaa !12
  %548 = load float, ptr %99, align 4, !tbaa !12
  %549 = load float, ptr %89, align 4, !tbaa !12
  %550 = fdiv float %548, %549
  store float %550, ptr %103, align 4, !tbaa !12
  %551 = load ptr, ptr %62, align 8, !tbaa !5
  %552 = load i64, ptr %551, align 8, !tbaa !9
  %553 = icmp ne i64 %552, 0
  br i1 %553, label %567, label %554

554:                                              ; preds = %544
  %555 = load float, ptr %100, align 4, !tbaa !12
  %556 = load ptr, ptr %58, align 8, !tbaa !5
  %557 = load float, ptr %556, align 4, !tbaa !12
  %558 = fmul float %555, %557
  %559 = load float, ptr %97, align 4, !tbaa !12
  %560 = load float, ptr %106, align 4, !tbaa !12
  %561 = fmul float %559, %560
  %562 = fcmp olt float %558, %561
  br i1 %562, label %563, label %567

563:                                              ; preds = %554
  %564 = load i64, ptr %101, align 8, !tbaa !9
  %565 = icmp slt i64 %564, 2
  br i1 %565, label %566, label %567

566:                                              ; preds = %563
  store i64 1, ptr %88, align 8, !tbaa !9
  br label %567

567:                                              ; preds = %566, %563, %554, %544
  %568 = load i64, ptr %109, align 8, !tbaa !9
  %569 = icmp eq i64 %568, 3
  br i1 %569, label %570, label %576

570:                                              ; preds = %567
  %571 = load float, ptr %102, align 4, !tbaa !12
  %572 = load ptr, ptr %60, align 8, !tbaa !5
  %573 = load float, ptr %572, align 4, !tbaa !12
  %574 = fcmp ole float %571, %573
  br i1 %574, label %575, label %576

575:                                              ; preds = %570
  store i64 1, ptr %109, align 8, !tbaa !9
  br label %576

576:                                              ; preds = %575, %570, %567
  %577 = load i64, ptr %109, align 8, !tbaa !9
  %578 = icmp eq i64 %577, 1
  br i1 %578, label %579, label %609

579:                                              ; preds = %576
  %580 = load float, ptr %98, align 4, !tbaa !12
  %581 = load float, ptr %96, align 4, !tbaa !12
  %582 = fcmp ole float %580, %581
  br i1 %582, label %583, label %584

583:                                              ; preds = %579
  store i64 2, ptr %109, align 8, !tbaa !9
  br label %603

584:                                              ; preds = %579
  %585 = load float, ptr %102, align 4, !tbaa !12
  %586 = load ptr, ptr %60, align 8, !tbaa !5
  %587 = load float, ptr %586, align 4, !tbaa !12
  %588 = fcmp ogt float %585, %587
  br i1 %588, label %589, label %595

589:                                              ; preds = %584
  %590 = load i64, ptr %101, align 8, !tbaa !9
  %591 = icmp ne i64 %590, 2
  br i1 %591, label %592, label %593

592:                                              ; preds = %589
  store i64 1, ptr %88, align 8, !tbaa !9
  br label %594

593:                                              ; preds = %589
  store i64 3, ptr %109, align 8, !tbaa !9
  br label %594

594:                                              ; preds = %593, %592
  br label %602

595:                                              ; preds = %584
  %596 = load float, ptr %102, align 4, !tbaa !12
  %597 = load float, ptr %83, align 4, !tbaa !12
  %598 = fcmp ogt float %596, %597
  br i1 %598, label %599, label %601

599:                                              ; preds = %595
  %600 = load float, ptr %102, align 4, !tbaa !12
  store float %600, ptr %83, align 4, !tbaa !12
  br label %601

601:                                              ; preds = %599, %595
  br label %602

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

603:                                              ; preds = %602, %583
  %604 = load i64, ptr %109, align 8, !tbaa !9
  %605 = icmp sgt i64 %604, 1
  br i1 %605, label %606, label %608

606:                                              ; preds = %603
  %607 = load float, ptr %98, align 4, !tbaa !12
  store float %607, ptr %91, align 4, !tbaa !12
  br label %608

608:                                              ; preds = %606, %603
  br label %609

609:                                              ; preds = %608, %576
  %610 = load i64, ptr %110, align 8, !tbaa !9
  %611 = icmp eq i64 %610, 0
  br i1 %611, label %612, label %618

612:                                              ; preds = %609
  %613 = load float, ptr %99, align 4, !tbaa !12
  %614 = load ptr, ptr %61, align 8, !tbaa !5
  %615 = load float, ptr %614, align 4, !tbaa !12
  %616 = fcmp ole float %613, %615
  br i1 %616, label %617, label %618

617:                                              ; preds = %612
  store i64 1, ptr %110, align 8, !tbaa !9
  br label %618

618:                                              ; preds = %617, %612, %609
  %619 = load i64, ptr %110, align 8, !tbaa !9
  %620 = icmp eq i64 %619, 3
  br i1 %620, label %621, label %627

621:                                              ; preds = %618
  %622 = load float, ptr %103, align 4, !tbaa !12
  %623 = load ptr, ptr %60, align 8, !tbaa !5
  %624 = load float, ptr %623, align 4, !tbaa !12
  %625 = fcmp ole float %622, %624
  br i1 %625, label %626, label %627

626:                                              ; preds = %621
  store i64 1, ptr %110, align 8, !tbaa !9
  br label %627

627:                                              ; preds = %626, %621, %618
  %628 = load i64, ptr %110, align 8, !tbaa !9
  %629 = icmp eq i64 %628, 1
  br i1 %629, label %630, label %668

630:                                              ; preds = %627
  %631 = load float, ptr %99, align 4, !tbaa !12
  %632 = load float, ptr %96, align 4, !tbaa !12
  %633 = fcmp ole float %631, %632
  br i1 %633, label %634, label %635

634:                                              ; preds = %630
  store i64 2, ptr %110, align 8, !tbaa !9
  br label %662

635:                                              ; preds = %630
  %636 = load float, ptr %99, align 4, !tbaa !12
  %637 = load ptr, ptr %61, align 8, !tbaa !5
  %638 = load float, ptr %637, align 4, !tbaa !12
  %639 = fcmp ogt float %636, %638
  br i1 %639, label %640, label %642

640:                                              ; preds = %635
  store i64 0, ptr %110, align 8, !tbaa !9
  store float 0.000000e+00, ptr %84, align 4, !tbaa !12
  %641 = load float, ptr %108, align 4, !tbaa !12
  store float %641, ptr %92, align 4, !tbaa !12
  br label %661

642:                                              ; preds = %635
  %643 = load float, ptr %103, align 4, !tbaa !12
  %644 = load ptr, ptr %60, align 8, !tbaa !5
  %645 = load float, ptr %644, align 4, !tbaa !12
  %646 = fcmp ogt float %643, %645
  br i1 %646, label %647, label %653

647:                                              ; preds = %642
  %648 = load i64, ptr %101, align 8, !tbaa !9
  %649 = icmp ne i64 %648, 2
  br i1 %649, label %650, label %651

650:                                              ; preds = %647
  store i64 1, ptr %88, align 8, !tbaa !9
  br label %652

651:                                              ; preds = %647
  store i64 3, ptr %110, align 8, !tbaa !9
  br label %652

652:                                              ; preds = %651, %650
  br label %660

653:                                              ; preds = %642
  %654 = load float, ptr %103, align 4, !tbaa !12
  %655 = load float, ptr %84, align 4, !tbaa !12
  %656 = fcmp ogt float %654, %655
  br i1 %656, label %657, label %659

657:                                              ; preds = %653
  %658 = load float, ptr %103, align 4, !tbaa !12
  store float %658, ptr %84, align 4, !tbaa !12
  br label %659

659:                                              ; preds = %657, %653
  br label %660

660:                                              ; preds = %659, %652
  br label %661

661:                                              ; preds = %660, %640
  br label %662

662:                                              ; preds = %661, %634
  %663 = load i64, ptr %110, align 8, !tbaa !9
  %664 = icmp sgt i64 %663, 1
  br i1 %664, label %665, label %667

665:                                              ; preds = %662
  %666 = load float, ptr %99, align 4, !tbaa !12
  store float %666, ptr %92, align 4, !tbaa !12
  br label %667

667:                                              ; preds = %665, %662
  br label %668

668:                                              ; preds = %667, %627
  %669 = load i64, ptr %109, align 8, !tbaa !9
  %670 = icmp ne i64 %669, 1
  br i1 %670, label %671, label %691

671:                                              ; preds = %668
  %672 = load ptr, ptr %62, align 8, !tbaa !5
  %673 = load i64, ptr %672, align 8, !tbaa !9
  %674 = icmp ne i64 %673, 0
  br i1 %674, label %675, label %676

675:                                              ; preds = %671
  br label %751

676:                                              ; preds = %671
  %677 = load i64, ptr %110, align 8, !tbaa !9
  %678 = icmp eq i64 %677, 3
  br i1 %678, label %682, label %679

679:                                              ; preds = %676
  %680 = load i64, ptr %110, align 8, !tbaa !9
  %681 = icmp eq i64 %680, 2
  br i1 %681, label %682, label %683

682:                                              ; preds = %679, %676
  br label %751

683:                                              ; preds = %679
  %684 = load i64, ptr %110, align 8, !tbaa !9
  %685 = icmp eq i64 %684, 0
  br i1 %685, label %686, label %690

686:                                              ; preds = %683
  %687 = load i64, ptr %94, align 8, !tbaa !9
  %688 = icmp sgt i64 %687, 1
  br i1 %688, label %689, label %690

689:                                              ; preds = %686
  br label %751

690:                                              ; preds = %686, %683
  br label %691

691:                                              ; preds = %690, %668
  %692 = load i64, ptr %88, align 8, !tbaa !9
  %693 = icmp ne i64 %692, 0
  br i1 %693, label %694, label %717

694:                                              ; preds = %691
  store i64 0, ptr %88, align 8, !tbaa !9
  %695 = load i64, ptr %101, align 8, !tbaa !9
  %696 = add nsw i64 %695, 1
  store i64 %696, ptr %101, align 8, !tbaa !9
  %697 = load ptr, ptr %35, align 8, !tbaa !5
  %698 = load i64, ptr %697, align 8, !tbaa !9
  store i64 %698, ptr %78, align 8, !tbaa !9
  store i64 1, ptr %85, align 8, !tbaa !9
  br label %699

699:                                              ; preds = %713, %694
  %700 = load i64, ptr %85, align 8, !tbaa !9
  %701 = load i64, ptr %78, align 8, !tbaa !9
  %702 = icmp sle i64 %700, %701
  br i1 %702, label %703, label %716

703:                                              ; preds = %699
  %704 = load i64, ptr %85, align 8, !tbaa !9
  store i64 %704, ptr %79, align 8, !tbaa !9
  %705 = load ptr, ptr %57, align 8, !tbaa !5
  %706 = load i64, ptr %79, align 8, !tbaa !9
  %707 = getelementptr inbounds %struct.complex, ptr %705, i64 %706
  %708 = getelementptr inbounds %struct.complex, ptr %707, i32 0, i32 0
  store float 0.000000e+00, ptr %708, align 4, !tbaa !14
  %709 = load ptr, ptr %57, align 8, !tbaa !5
  %710 = load i64, ptr %79, align 8, !tbaa !9
  %711 = getelementptr inbounds %struct.complex, ptr %709, i64 %710
  %712 = getelementptr inbounds %struct.complex, ptr %711, i32 0, i32 1
  store float 0.000000e+00, ptr %712, align 4, !tbaa !16
  br label %713

713:                                              ; preds = %703
  %714 = load i64, ptr %85, align 8, !tbaa !9
  %715 = add nsw i64 %714, 1
  store i64 %715, ptr %85, align 8, !tbaa !9
  br label %699, !llvm.loop !20

716:                                              ; preds = %699
  br label %717

717:                                              ; preds = %716, %691
  %718 = load float, ptr %107, align 4, !tbaa !12
  store float %718, ptr %93, align 4, !tbaa !12
  %719 = load float, ptr %99, align 4, !tbaa !12
  store float %719, ptr %89, align 4, !tbaa !12
  %720 = load i64, ptr %101, align 8, !tbaa !9
  %721 = icmp slt i64 %720, 2
  br i1 %721, label %722, label %733

722:                                              ; preds = %717
  %723 = load ptr, ptr %35, align 8, !tbaa !5
  %724 = load ptr, ptr %56, align 8, !tbaa !5
  %725 = getelementptr inbounds %struct.complex, ptr %724, i64 1
  %726 = load ptr, ptr %48, align 8, !tbaa !5
  %727 = load i64, ptr %86, align 8, !tbaa !9
  %728 = load i64, ptr %70, align 8, !tbaa !9
  %729 = mul nsw i64 %727, %728
  %730 = add nsw i64 %729, 1
  %731 = getelementptr inbounds %struct.complex, ptr %726, i64 %730
  %732 = call i32 @f2c_caxpy(ptr noundef %723, ptr noundef @c_b8, ptr noundef %725, ptr noundef @c__1, ptr noundef %731, ptr noundef @c__1)
  br label %746

733:                                              ; preds = %717
  %734 = load ptr, ptr %35, align 8, !tbaa !5
  %735 = load ptr, ptr %48, align 8, !tbaa !5
  %736 = load i64, ptr %86, align 8, !tbaa !9
  %737 = load i64, ptr %70, align 8, !tbaa !9
  %738 = mul nsw i64 %736, %737
  %739 = add nsw i64 %738, 1
  %740 = getelementptr inbounds %struct.complex, ptr %735, i64 %739
  %741 = load ptr, ptr %57, align 8, !tbaa !5
  %742 = getelementptr inbounds %struct.complex, ptr %741, i64 1
  %743 = load ptr, ptr %56, align 8, !tbaa !5
  %744 = getelementptr inbounds %struct.complex, ptr %743, i64 1
  %745 = call i32 @cla_wwaddw__(ptr noundef %734, ptr noundef %740, ptr noundef %742, ptr noundef %744)
  br label %746

746:                                              ; preds = %733, %722
  br label %747

747:                                              ; preds = %746
  %748 = load i64, ptr %94, align 8, !tbaa !9
  %749 = add nsw i64 %748, 1
  store i64 %749, ptr %94, align 8, !tbaa !9
  br label %241, !llvm.loop !21

750:                                              ; preds = %241
  br label %751

751:                                              ; preds = %750, %689, %682, %675
  %752 = load i64, ptr %109, align 8, !tbaa !9
  %753 = icmp eq i64 %752, 1
  br i1 %753, label %754, label %756

754:                                              ; preds = %751
  %755 = load float, ptr %98, align 4, !tbaa !12
  store float %755, ptr %91, align 4, !tbaa !12
  br label %756

756:                                              ; preds = %754, %751
  %757 = load i64, ptr %110, align 8, !tbaa !9
  %758 = icmp eq i64 %757, 1
  br i1 %758, label %759, label %761

759:                                              ; preds = %756
  %760 = load float, ptr %99, align 4, !tbaa !12
  store float %760, ptr %92, align 4, !tbaa !12
  br label %761

761:                                              ; preds = %759, %756
  %762 = load ptr, ptr %51, align 8, !tbaa !5
  %763 = load i64, ptr %762, align 8, !tbaa !9
  %764 = icmp sge i64 %763, 1
  br i1 %764, label %765, label %776

765:                                              ; preds = %761
  %766 = load float, ptr %91, align 4, !tbaa !12
  %767 = load float, ptr %83, align 4, !tbaa !12
  %768 = fsub float 1.000000e+00, %767
  %769 = fdiv float %766, %768
  %770 = load ptr, ptr %52, align 8, !tbaa !5
  %771 = load i64, ptr %86, align 8, !tbaa !9
  %772 = load i64, ptr %72, align 8, !tbaa !9
  %773 = shl i64 %772, 1
  %774 = add nsw i64 %771, %773
  %775 = getelementptr inbounds float, ptr %770, i64 %774
  store float %769, ptr %775, align 4, !tbaa !12
  br label %776

776:                                              ; preds = %765, %761
  %777 = load ptr, ptr %51, align 8, !tbaa !5
  %778 = load i64, ptr %777, align 8, !tbaa !9
  %779 = icmp sge i64 %778, 2
  br i1 %779, label %780, label %791

780:                                              ; preds = %776
  %781 = load float, ptr %92, align 4, !tbaa !12
  %782 = load float, ptr %84, align 4, !tbaa !12
  %783 = fsub float 1.000000e+00, %782
  %784 = fdiv float %781, %783
  %785 = load ptr, ptr %53, align 8, !tbaa !5
  %786 = load i64, ptr %86, align 8, !tbaa !9
  %787 = load i64, ptr %74, align 8, !tbaa !9
  %788 = shl i64 %787, 1
  %789 = add nsw i64 %786, %788
  %790 = getelementptr inbounds float, ptr %785, i64 %789
  store float %784, ptr %790, align 4, !tbaa !12
  br label %791

791:                                              ; preds = %780, %776
  %792 = load ptr, ptr %35, align 8, !tbaa !5
  %793 = load ptr, ptr %46, align 8, !tbaa !5
  %794 = load i64, ptr %86, align 8, !tbaa !9
  %795 = load i64, ptr %68, align 8, !tbaa !9
  %796 = mul nsw i64 %794, %795
  %797 = add nsw i64 %796, 1
  %798 = getelementptr inbounds %struct.complex, ptr %793, i64 %797
  %799 = load ptr, ptr %54, align 8, !tbaa !5
  %800 = getelementptr inbounds %struct.complex, ptr %799, i64 1
  %801 = call i32 @f2c_ccopy(ptr noundef %792, ptr noundef %798, ptr noundef @c__1, ptr noundef %800, ptr noundef @c__1)
  %802 = getelementptr inbounds [1 x i8], ptr %104, i64 0, i64 0
  %803 = load ptr, ptr %35, align 8, !tbaa !5
  %804 = load ptr, ptr %35, align 8, !tbaa !5
  %805 = load ptr, ptr %36, align 8, !tbaa !5
  %806 = load ptr, ptr %37, align 8, !tbaa !5
  %807 = load ptr, ptr %39, align 8, !tbaa !5
  %808 = load i64, ptr %65, align 8, !tbaa !9
  %809 = getelementptr inbounds %struct.complex, ptr %807, i64 %808
  %810 = load ptr, ptr %40, align 8, !tbaa !5
  %811 = load ptr, ptr %48, align 8, !tbaa !5
  %812 = load i64, ptr %86, align 8, !tbaa !9
  %813 = load i64, ptr %70, align 8, !tbaa !9
  %814 = mul nsw i64 %812, %813
  %815 = add nsw i64 %814, 1
  %816 = getelementptr inbounds %struct.complex, ptr %811, i64 %815
  %817 = load ptr, ptr %54, align 8, !tbaa !5
  %818 = getelementptr inbounds %struct.complex, ptr %817, i64 1
  %819 = call i32 @f2c_cgbmv(ptr noundef %802, ptr noundef %803, ptr noundef %804, ptr noundef %805, ptr noundef %806, ptr noundef @c_b6, ptr noundef %809, ptr noundef %810, ptr noundef %816, ptr noundef @c__1, ptr noundef @c_b8, ptr noundef %818, ptr noundef @c__1)
  %820 = load ptr, ptr %35, align 8, !tbaa !5
  %821 = load i64, ptr %820, align 8, !tbaa !9
  store i64 %821, ptr %77, align 8, !tbaa !9
  store i64 1, ptr %85, align 8, !tbaa !9
  br label %822

822:                                              ; preds = %871, %791
  %823 = load i64, ptr %85, align 8, !tbaa !9
  %824 = load i64, ptr %77, align 8, !tbaa !9
  %825 = icmp sle i64 %823, %824
  br i1 %825, label %826, label %874

826:                                              ; preds = %822
  %827 = load i64, ptr %85, align 8, !tbaa !9
  %828 = load i64, ptr %86, align 8, !tbaa !9
  %829 = load i64, ptr %68, align 8, !tbaa !9
  %830 = mul nsw i64 %828, %829
  %831 = add nsw i64 %827, %830
  store i64 %831, ptr %78, align 8, !tbaa !9
  %832 = load ptr, ptr %46, align 8, !tbaa !5
  %833 = load i64, ptr %78, align 8, !tbaa !9
  %834 = getelementptr inbounds %struct.complex, ptr %832, i64 %833
  %835 = getelementptr inbounds %struct.complex, ptr %834, i32 0, i32 0
  %836 = load float, ptr %835, align 4, !tbaa !14
  store float %836, ptr %80, align 4, !tbaa !12
  %837 = load float, ptr %80, align 4, !tbaa !12
  %838 = fcmp oge float %837, 0.000000e+00
  br i1 %838, label %839, label %841

839:                                              ; preds = %826
  %840 = load float, ptr %80, align 4, !tbaa !12
  br label %844

841:                                              ; preds = %826
  %842 = load float, ptr %80, align 4, !tbaa !12
  %843 = fneg float %842
  br label %844

844:                                              ; preds = %841, %839
  %845 = phi float [ %840, %839 ], [ %843, %841 ]
  %846 = fpext float %845 to double
  %847 = load ptr, ptr %46, align 8, !tbaa !5
  %848 = load i64, ptr %85, align 8, !tbaa !9
  %849 = load i64, ptr %86, align 8, !tbaa !9
  %850 = load i64, ptr %68, align 8, !tbaa !9
  %851 = mul nsw i64 %849, %850
  %852 = add nsw i64 %848, %851
  %853 = getelementptr inbounds %struct.complex, ptr %847, i64 %852
  %854 = call double @r_imag(ptr noundef %853)
  %855 = fptrunc double %854 to float
  store float %855, ptr %81, align 4, !tbaa !12
  %856 = load float, ptr %81, align 4, !tbaa !12
  %857 = fcmp oge float %856, 0.000000e+00
  br i1 %857, label %858, label %860

858:                                              ; preds = %844
  %859 = load float, ptr %81, align 4, !tbaa !12
  br label %863

860:                                              ; preds = %844
  %861 = load float, ptr %81, align 4, !tbaa !12
  %862 = fneg float %861
  br label %863

863:                                              ; preds = %860, %858
  %864 = phi float [ %859, %858 ], [ %862, %860 ]
  %865 = fpext float %864 to double
  %866 = fadd double %846, %865
  %867 = fptrunc double %866 to float
  %868 = load ptr, ptr %55, align 8, !tbaa !5
  %869 = load i64, ptr %85, align 8, !tbaa !9
  %870 = getelementptr inbounds float, ptr %868, i64 %869
  store float %867, ptr %870, align 4, !tbaa !12
  br label %871

871:                                              ; preds = %863
  %872 = load i64, ptr %85, align 8, !tbaa !9
  %873 = add nsw i64 %872, 1
  store i64 %873, ptr %85, align 8, !tbaa !9
  br label %822, !llvm.loop !22

874:                                              ; preds = %822
  %875 = load ptr, ptr %34, align 8, !tbaa !5
  %876 = load ptr, ptr %35, align 8, !tbaa !5
  %877 = load ptr, ptr %35, align 8, !tbaa !5
  %878 = load ptr, ptr %36, align 8, !tbaa !5
  %879 = load ptr, ptr %37, align 8, !tbaa !5
  %880 = load ptr, ptr %39, align 8, !tbaa !5
  %881 = load i64, ptr %65, align 8, !tbaa !9
  %882 = getelementptr inbounds %struct.complex, ptr %880, i64 %881
  %883 = load ptr, ptr %40, align 8, !tbaa !5
  %884 = load ptr, ptr %48, align 8, !tbaa !5
  %885 = load i64, ptr %86, align 8, !tbaa !9
  %886 = load i64, ptr %70, align 8, !tbaa !9
  %887 = mul nsw i64 %885, %886
  %888 = add nsw i64 %887, 1
  %889 = getelementptr inbounds %struct.complex, ptr %884, i64 %888
  %890 = load ptr, ptr %55, align 8, !tbaa !5
  %891 = getelementptr inbounds float, ptr %890, i64 1
  %892 = call i32 @cla_gbamv__(ptr noundef %875, ptr noundef %876, ptr noundef %877, ptr noundef %878, ptr noundef %879, ptr noundef @c_b31, ptr noundef %882, ptr noundef %883, ptr noundef %889, ptr noundef @c__1, ptr noundef @c_b31, ptr noundef %891, ptr noundef @c__1)
  %893 = load ptr, ptr %35, align 8, !tbaa !5
  %894 = load ptr, ptr %35, align 8, !tbaa !5
  %895 = load ptr, ptr %54, align 8, !tbaa !5
  %896 = getelementptr inbounds %struct.complex, ptr %895, i64 1
  %897 = load ptr, ptr %55, align 8, !tbaa !5
  %898 = getelementptr inbounds float, ptr %897, i64 1
  %899 = load ptr, ptr %50, align 8, !tbaa !5
  %900 = load i64, ptr %86, align 8, !tbaa !9
  %901 = getelementptr inbounds float, ptr %899, i64 %900
  %902 = call i32 @cla_lin_berr__(ptr noundef %893, ptr noundef %894, ptr noundef @c__1, ptr noundef %896, ptr noundef %898, ptr noundef %901)
  br label %903

903:                                              ; preds = %874
  %904 = load i64, ptr %86, align 8, !tbaa !9
  %905 = add nsw i64 %904, 1
  store i64 %905, ptr %86, align 8, !tbaa !9
  br label %204, !llvm.loop !23

906:                                              ; preds = %204
  store i32 0, ptr %32, align 4
  store i32 1, ptr %111, align 4
  br label %907

907:                                              ; preds = %906, %177
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %108) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %107) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %106) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %105) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %104) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %103) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %102) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %99) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %82) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #3
  call void @llvm.lifetime.end.p0(i64 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 8, ptr %64) #3
  %908 = load i32, ptr %32, align 4
  ret i32 %908
}

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

declare void @chla_transtype__(ptr noundef, i64 noundef, ptr noundef) #2

declare double @slamch_(ptr noundef) #2

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

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

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

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

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

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

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

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

declare i32 @cla_lin_berr__(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 = !{!15, !13, i64 0}
!15 = !{!"", !13, i64 0, !13, i64 4}
!16 = !{!15, !13, i64 4}
!17 = distinct !{!17, !18}
!18 = !{!"llvm.loop.mustprogress"}
!19 = distinct !{!19, !18}
!20 = distinct !{!20, !18}
!21 = distinct !{!21, !18}
!22 = distinct !{!22, !18}
!23 = distinct !{!23, !18}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.complex = type { float, float }

@.str = external hidden unnamed_addr constant [8 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [9 x i8], align 1
@c__1 = external hidden global i64, align 8
@c_b6 = external hidden global %struct.complex, align 4
@c_b8 = external hidden global %struct.complex, align 4
@c_b31 = external hidden global float, align 4

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @cla_gbrfsx_extended__(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr nocapture noundef readonly %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr nocapture noundef readonly %11, ptr nocapture noundef readonly %12, ptr noundef %13, ptr nocapture noundef readonly %14, ptr noundef %15, ptr nocapture noundef readonly %16, ptr noundef %17, ptr nocapture noundef readonly %18, ptr nocapture noundef writeonly %19, ptr nocapture noundef writeonly %20, ptr noundef %21, ptr noundef %22, ptr noundef %23, ptr noundef %24, ptr nocapture noundef readonly %25, ptr nocapture noundef readonly %26, ptr nocapture noundef readonly %27, ptr nocapture noundef readonly %28, ptr nocapture noundef readonly %29, ptr noundef %30) local_unnamed_addr #0 {
  %32 = alloca [1 x i8], align 1
  %33 = alloca i64, align 8
  %34 = alloca [1 x i8], align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %32) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #4
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %34) #4
  %35 = load i64, ptr %5, align 8, !tbaa !5
  %36 = xor i64 %35, -1
  %37 = getelementptr inbounds float, ptr %20, i64 %36
  %38 = getelementptr inbounds float, ptr %19, i64 %36
  %39 = getelementptr inbounds i8, ptr %12, i64 -4
  %40 = load i64, ptr %14, align 8, !tbaa !5
  %41 = xor i64 %40, -1
  %42 = getelementptr inbounds %struct.complex, ptr %13, i64 %41
  %43 = load i64, ptr %16, align 8, !tbaa !5
  %44 = xor i64 %43, -1
  %45 = getelementptr inbounds %struct.complex, ptr %15, i64 %44
  %46 = getelementptr inbounds i8, ptr %17, i64 -4
  %47 = getelementptr inbounds i8, ptr %22, i64 -4
  %48 = getelementptr inbounds i8, ptr %23, i64 -8
  %49 = load i64, ptr %30, align 8, !tbaa !5
  %.not = icmp eq i64 %49, 0
  br i1 %.not, label %50, label %.loopexit474

50:                                               ; preds = %31
  call void @chla_transtype__(ptr noundef nonnull %32, i64 noundef 1, ptr noundef %1) #4
  %51 = load i8, ptr %32, align 1, !tbaa !9
  store i8 %51, ptr %34, align 1, !tbaa !9
  %52 = call double @slamch_(ptr noundef nonnull @.str) #4
  %53 = fptrunc double %52 to float
  %54 = call double @slamch_(ptr noundef nonnull @.str.1) #4
  %55 = fptrunc double %54 to float
  %56 = fmul float %55, %55
  %57 = load i64, ptr %2, align 8, !tbaa !5
  %58 = sitofp i64 %57 to float
  %59 = fmul float %53, %58
  %60 = load i64, ptr %3, align 8, !tbaa !5
  %61 = load i64, ptr %4, align 8, !tbaa !5
  %62 = add i64 %60, 1
  %63 = add i64 %62, %61
  store i64 %63, ptr %33, align 8, !tbaa !5
  %64 = load i64, ptr %5, align 8, !tbaa !5
  %invariant.gep539 = getelementptr i8, ptr %42, i64 8
  %invariant.gep541 = getelementptr i8, ptr %45, i64 8
  %.not402543 = icmp slt i64 %64, 1
  br i1 %.not402543, label %.loopexit474, label %.lr.ph546

.lr.ph546:                                        ; preds = %50
  %.idx = shl i64 %35, 3
  %invariant.gep547 = getelementptr i8, ptr %38, i64 %.idx
  %invariant.gep549 = getelementptr i8, ptr %37, i64 %.idx
  br label %65

65:                                               ; preds = %.lr.ph546, %._crit_edge538
  %.0386544 = phi i64 [ 1, %.lr.ph546 ], [ %223, %._crit_edge538 ]
  %66 = load i64, ptr %26, align 8, !tbaa !5
  %.not403502 = icmp slt i64 %66, 1
  br i1 %.not403502, label %.thread455, label %.lr.ph514

.lr.ph514:                                        ; preds = %65
  %67 = mul nsw i64 %.0386544, %40
  %gep491 = getelementptr %struct.complex, ptr %invariant.gep539, i64 %67
  %68 = mul nsw i64 %.0386544, %43
  %gep493 = getelementptr %struct.complex, ptr %invariant.gep541, i64 %68
  %invariant.gep = getelementptr %struct.complex, ptr %45, i64 %68
  br label %69

69:                                               ; preds = %.lr.ph514, %187
  %.0512 = phi i64 [ 0, %.lr.ph514 ], [ %.4, %187 ]
  %.0347511 = phi i64 [ 1, %.lr.ph514 ], [ %.3350, %187 ]
  %.0357510 = phi i64 [ 1, %.lr.ph514 ], [ %.1358, %187 ]
  %.0360509 = phi float [ %56, %.lr.ph514 ], [ %.1361.lcssa568, %187 ]
  %.0368508 = phi i64 [ 1, %.lr.ph514 ], [ %188, %187 ]
  %.0369507 = phi float [ %56, %.lr.ph514 ], [ %.0352.lcssa575, %187 ]
  %.0370506 = phi float [ %56, %.lr.ph514 ], [ %.2372, %187 ]
  %.0375505 = phi float [ %56, %.lr.ph514 ], [ %.1376, %187 ]
  %.0391504 = phi float [ 0.000000e+00, %.lr.ph514 ], [ %.2393, %187 ]
  %.0395503 = phi float [ 0.000000e+00, %.lr.ph514 ], [ %.2397, %187 ]
  %70 = call i32 @f2c_ccopy(ptr noundef nonnull %2, ptr noundef %gep491, ptr noundef nonnull @c__1, ptr noundef %21, ptr noundef nonnull @c__1) #4
  switch i64 %.0357510, label %75 [
    i64 0, label %71
    i64 1, label %73
  ]

71:                                               ; preds = %69
  %72 = call i32 @f2c_cgbmv(ptr noundef nonnull %34, ptr noundef nonnull %33, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull @c_b6, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %gep493, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b8, ptr noundef %21, ptr noundef nonnull @c__1) #4
  br label %77

73:                                               ; preds = %69
  %74 = call i32 @blas_cgbmv_x__(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull @c_b6, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %gep493, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b8, ptr noundef %21, ptr noundef nonnull @c__1, ptr noundef %0) #4
  br label %77

75:                                               ; preds = %69
  %76 = call i32 @blas_cgbmv2_x__(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull @c_b6, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %gep493, ptr noundef %24, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b8, ptr noundef %21, ptr noundef nonnull @c__1, ptr noundef %0) #4
  br label %77

77:                                               ; preds = %73, %75, %71
  %78 = call i32 @f2c_ccopy(ptr noundef nonnull %2, ptr noundef %21, ptr noundef nonnull @c__1, ptr noundef %23, ptr noundef nonnull @c__1) #4
  %79 = call i32 @cgbtrs_(ptr noundef nonnull %34, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %23, ptr noundef nonnull %2, ptr noundef nonnull %30) #4
  %80 = load i64, ptr %2, align 8, !tbaa !5
  %.not404475 = icmp slt i64 %80, 1
  br i1 %.not404475, label %._crit_edge.thread, label %.lr.ph

.lr.ph:                                           ; preds = %77, %123
  %.0352481 = phi float [ %125, %123 ], [ 0.000000e+00, %77 ]
  %.0354480 = phi float [ %114, %123 ], [ 0.000000e+00, %77 ]
  %.0355479 = phi float [ %.1356, %123 ], [ 0.000000e+00, %77 ]
  %.0359478 = phi float [ %112, %123 ], [ %56, %77 ]
  %.1361477 = phi float [ %.2362, %123 ], [ 0.000000e+00, %77 ]
  %.1388476 = phi i64 [ %126, %123 ], [ 1, %77 ]
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %.1388476
  %81 = load float, ptr %gep, align 4, !tbaa !10
  %82 = call double @r_imag(ptr noundef nonnull %gep) #4
  %83 = fptrunc double %82 to float
  %84 = insertelement <2 x float> poison, float %81, i64 0
  %85 = insertelement <2 x float> %84, float %83, i64 1
  %86 = fcmp oge <2 x float> %85, zeroinitializer
  %87 = fneg <2 x float> %85
  %88 = select <2 x i1> %86, <2 x float> %85, <2 x float> %87
  %shift = shufflevector <2 x float> %88, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %89 = fadd <2 x float> %88, %shift
  %90 = extractelement <2 x float> %89, i64 0
  %91 = getelementptr inbounds %struct.complex, ptr %48, i64 %.1388476
  %92 = load float, ptr %91, align 4, !tbaa !10
  %93 = fcmp oge float %92, 0.000000e+00
  %94 = fneg float %92
  %95 = select i1 %93, float %92, float %94
  %96 = call double @r_imag(ptr noundef nonnull %91) #4
  %97 = fptrunc double %96 to float
  %98 = fcmp oge float %97, 0.000000e+00
  %99 = fneg float %97
  %100 = select i1 %98, float %97, float %99
  %101 = fadd float %95, %100
  %102 = fcmp une float %90, 0.000000e+00
  br i1 %102, label %103, label %107

103:                                              ; preds = %.lr.ph
  %104 = fdiv float %101, %90
  %105 = fcmp oge float %.1361477, %104
  %106 = select i1 %105, float %.1361477, float %104
  br label %110

107:                                              ; preds = %.lr.ph
  %108 = fcmp une float %101, 0.000000e+00
  br i1 %108, label %109, label %110

109:                                              ; preds = %107
  br label %110

110:                                              ; preds = %107, %109, %103
  %.2362 = phi float [ %106, %103 ], [ %56, %109 ], [ %.1361477, %107 ]
  %111 = fcmp ole float %.0359478, %90
  %112 = select i1 %111, float %.0359478, float %90
  %113 = fcmp oge float %.0354480, %90
  %114 = select i1 %113, float %.0354480, float %90
  %115 = load i64, ptr %11, align 8, !tbaa !5
  %.not414 = icmp eq i64 %115, 0
  br i1 %.not414, label %123, label %116

116:                                              ; preds = %110
  %117 = getelementptr inbounds float, ptr %39, i64 %.1388476
  %118 = load float, ptr %117, align 4, !tbaa !13
  %119 = fmul float %90, %118
  %120 = fcmp oge float %.0355479, %119
  %121 = select i1 %120, float %.0355479, float %119
  %122 = fmul float %101, %118
  br label %123

123:                                              ; preds = %110, %116
  %.sink636 = phi float [ %122, %116 ], [ %101, %110 ]
  %.1356 = phi float [ %121, %116 ], [ %114, %110 ]
  %124 = fcmp oge float %.0352481, %.sink636
  %125 = select i1 %124, float %.0352481, float %.sink636
  %126 = add nuw i64 %.1388476, 1
  %exitcond.not = icmp eq i64 %.1388476, %80
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !14

._crit_edge:                                      ; preds = %123
  %127 = fcmp une float %.1356, 0.000000e+00
  br i1 %127, label %128, label %._crit_edge.thread

128:                                              ; preds = %._crit_edge
  %129 = fdiv float %125, %.1356
  br label %131

._crit_edge.thread:                               ; preds = %77, %._crit_edge
  %.0352.lcssa574 = phi float [ %125, %._crit_edge ], [ 0.000000e+00, %77 ]
  %.0354.lcssa573 = phi float [ %114, %._crit_edge ], [ 0.000000e+00, %77 ]
  %.0359.lcssa571 = phi float [ %112, %._crit_edge ], [ %56, %77 ]
  %.1361.lcssa569 = phi float [ %.2362, %._crit_edge ], [ 0.000000e+00, %77 ]
  %130 = fcmp oeq float %.0352.lcssa574, 0.000000e+00
  %. = select i1 %130, float 0.000000e+00, float %56
  br label %131

131:                                              ; preds = %._crit_edge.thread, %128
  %.0352.lcssa575 = phi float [ %125, %128 ], [ %.0352.lcssa574, %._crit_edge.thread ]
  %.0354.lcssa572 = phi float [ %114, %128 ], [ %.0354.lcssa573, %._crit_edge.thread ]
  %.0359.lcssa570 = phi float [ %112, %128 ], [ %.0359.lcssa571, %._crit_edge.thread ]
  %.1361.lcssa568 = phi float [ %.2362, %128 ], [ %.1361.lcssa569, %._crit_edge.thread ]
  %.1365 = phi float [ %129, %128 ], [ %., %._crit_edge.thread ]
  %132 = fdiv float %.0352.lcssa575, %.0369507
  %133 = fdiv float %.1361.lcssa568, %.0360509
  %134 = load i64, ptr %29, align 8, !tbaa !5
  %.not405 = icmp eq i64 %134, 0
  br i1 %.not405, label %135, label %141

135:                                              ; preds = %131
  %136 = load float, ptr %25, align 4, !tbaa !13
  %137 = fmul float %.0359.lcssa570, %136
  %138 = fmul float %59, %.0354.lcssa572
  %139 = fcmp olt float %137, %138
  %140 = icmp slt i64 %.0357510, 2
  %or.cond = and i1 %140, %139
  %spec.select = zext i1 %or.cond to i64
  br label %141

141:                                              ; preds = %135, %131
  %.1381 = phi i64 [ 0, %131 ], [ %spec.select, %135 ]
  switch i64 %.0347511, label %.thread421 [
    i64 3, label %142
    i64 1, label %.thread
  ]

142:                                              ; preds = %141
  %143 = load float, ptr %27, align 4, !tbaa !13
  %144 = fcmp ugt float %132, %143
  br i1 %144, label %.thread421, label %.thread

.thread:                                          ; preds = %141, %142
  %145 = fcmp ugt float %.1365, %53
  br i1 %145, label %146, label %.thread421

146:                                              ; preds = %.thread
  %147 = load float, ptr %27, align 4, !tbaa !13
  %148 = fcmp ogt float %132, %147
  br i1 %148, label %152, label %149

149:                                              ; preds = %146
  %150 = fcmp ogt float %132, %.0395503
  br i1 %150, label %151, label %.thread421

151:                                              ; preds = %149
  br label %.thread421

152:                                              ; preds = %146
  %.not406 = icmp eq i64 %.0357510, 2
  br i1 %.not406, label %153, label %.thread421

153:                                              ; preds = %152
  br label %.thread421

.thread421:                                       ; preds = %141, %149, %151, %.thread, %142, %152, %153
  %.2397 = phi float [ %.0395503, %152 ], [ %.0395503, %153 ], [ %.0395503, %142 ], [ %.0395503, %.thread ], [ %.0395503, %149 ], [ %132, %151 ], [ %.0395503, %141 ]
  %.3383 = phi i64 [ 1, %152 ], [ %.1381, %153 ], [ %.1381, %142 ], [ %.1381, %.thread ], [ %.1381, %149 ], [ %.1381, %151 ], [ %.1381, %141 ]
  %.1376 = phi float [ %.0375505, %152 ], [ %.1365, %153 ], [ %.0375505, %142 ], [ %.1365, %.thread ], [ %.0375505, %149 ], [ %.0375505, %151 ], [ %.0375505, %141 ]
  %.3350 = phi i64 [ 1, %152 ], [ 3, %153 ], [ 3, %142 ], [ 2, %.thread ], [ 1, %149 ], [ 1, %151 ], [ %.0347511, %141 ]
  switch i64 %.0512, label %.thread439 [
    i64 0, label %154
    i64 3, label %157
    i64 1, label %.thread437
  ]

154:                                              ; preds = %.thread421
  %155 = load float, ptr %28, align 4, !tbaa !13
  %156 = fcmp ugt float %.1361.lcssa568, %155
  br i1 %156, label %.thread439, label %.thread437

157:                                              ; preds = %.thread421
  %158 = load float, ptr %27, align 4, !tbaa !13
  %159 = fcmp ugt float %133, %158
  br i1 %159, label %.thread439, label %.thread437

.thread437:                                       ; preds = %.thread421, %154, %157
  %160 = fcmp ugt float %.1361.lcssa568, %53
  br i1 %160, label %161, label %.thread439

161:                                              ; preds = %.thread437
  %162 = load float, ptr %28, align 4, !tbaa !13
  %163 = fcmp ogt float %.1361.lcssa568, %162
  br i1 %163, label %.thread439, label %164

164:                                              ; preds = %161
  %165 = load float, ptr %27, align 4, !tbaa !13
  %166 = fcmp ogt float %133, %165
  br i1 %166, label %170, label %167

167:                                              ; preds = %164
  %168 = fcmp ogt float %133, %.0391504
  br i1 %168, label %169, label %.thread439

169:                                              ; preds = %167
  br label %.thread439

170:                                              ; preds = %164
  %.not407 = icmp eq i64 %.0357510, 2
  br i1 %.not407, label %171, label %.thread439

171:                                              ; preds = %170
  br label %.thread439

.thread439:                                       ; preds = %.thread421, %154, %161, %167, %169, %.thread437, %157, %170, %171
  %.2393 = phi float [ %.0391504, %170 ], [ %.0391504, %171 ], [ %.0391504, %157 ], [ %.0391504, %.thread437 ], [ 0.000000e+00, %161 ], [ %.0391504, %167 ], [ %133, %169 ], [ %.0391504, %154 ], [ %.0391504, %.thread421 ]
  %.5385 = phi i64 [ 1, %170 ], [ %.3383, %171 ], [ %.3383, %157 ], [ %.3383, %.thread437 ], [ %.3383, %161 ], [ %.3383, %167 ], [ %.3383, %169 ], [ %.3383, %154 ], [ %.3383, %.thread421 ]
  %.2372 = phi float [ %.0370506, %170 ], [ %.1361.lcssa568, %171 ], [ %.0370506, %157 ], [ %.1361.lcssa568, %.thread437 ], [ %56, %161 ], [ %.0370506, %167 ], [ %.0370506, %169 ], [ %.0370506, %154 ], [ %.0370506, %.thread421 ]
  %.4 = phi i64 [ 1, %170 ], [ 3, %171 ], [ 3, %157 ], [ 2, %.thread437 ], [ 0, %161 ], [ 1, %167 ], [ 1, %169 ], [ 0, %154 ], [ %.0512, %.thread421 ]
  %.not408 = icmp eq i64 %.3350, 1
  br i1 %.not408, label %177, label %172

172:                                              ; preds = %.thread439
  %.not409 = icmp ne i64 %134, 0
  %173 = and i64 %.4, -2
  %or.cond3 = icmp eq i64 %173, 2
  %or.cond419 = or i1 %.not409, %or.cond3
  br i1 %or.cond419, label %._crit_edge515.thread596, label %174

174:                                              ; preds = %172
  %175 = icmp eq i64 %.4, 0
  %176 = icmp ugt i64 %.0368508, 1
  %or.cond5 = and i1 %176, %175
  br i1 %or.cond5, label %.thread455, label %177

177:                                              ; preds = %174, %.thread439
  %.not410 = icmp eq i64 %.5385, 0
  br i1 %.not410, label %.loopexit, label %178

178:                                              ; preds = %177
  %179 = add nsw i64 %.0357510, 1
  %180 = load i64, ptr %2, align 8, !tbaa !5
  %.not411486 = icmp slt i64 %180, 1
  br i1 %.not411486, label %.loopexit, label %.lr.ph489.preheader

.lr.ph489.preheader:                              ; preds = %178
  %181 = shl nuw i64 %180, 3
  call void @llvm.memset.p0.i64(ptr align 4 %24, i8 0, i64 %181, i1 false), !tbaa !13
  br label %.loopexit

.loopexit:                                        ; preds = %.lr.ph489.preheader, %178, %177
  %.1358 = phi i64 [ %.0357510, %177 ], [ %179, %178 ], [ %179, %.lr.ph489.preheader ]
  %182 = icmp slt i64 %.1358, 2
  br i1 %182, label %183, label %185

183:                                              ; preds = %.loopexit
  %184 = call i32 @f2c_caxpy(ptr noundef nonnull %2, ptr noundef nonnull @c_b8, ptr noundef %23, ptr noundef nonnull @c__1, ptr noundef %gep493, ptr noundef nonnull @c__1) #4
  br label %187

185:                                              ; preds = %.loopexit
  %186 = call i32 @cla_wwaddw__(ptr noundef nonnull %2, ptr noundef %gep493, ptr noundef %24, ptr noundef %23) #4
  br label %187

187:                                              ; preds = %183, %185
  %188 = add nuw i64 %.0368508, 1
  %exitcond560.not = icmp eq i64 %.0368508, %66
  br i1 %exitcond560.not, label %._crit_edge515, label %69, !llvm.loop !16

._crit_edge515:                                   ; preds = %187
  %189 = icmp eq i64 %.3350, 1
  br i1 %189, label %190, label %._crit_edge515.thread596

190:                                              ; preds = %._crit_edge515
  br label %._crit_edge515.thread596

._crit_edge515.thread596:                         ; preds = %172, %._crit_edge515, %190
  %191 = phi float [ %.1376, %._crit_edge515 ], [ %.1365, %190 ], [ %.1376, %172 ]
  %192 = icmp eq i64 %.4, 1
  br i1 %192, label %193, label %.thread455

193:                                              ; preds = %._crit_edge515.thread596
  br label %.thread455

.thread455:                                       ; preds = %174, %65, %._crit_edge515.thread596, %193
  %.3378468 = phi float [ %191, %193 ], [ %191, %._crit_edge515.thread596 ], [ %56, %65 ], [ %.1376, %174 ]
  %.3394467 = phi float [ %.2393, %193 ], [ %.2393, %._crit_edge515.thread596 ], [ 0.000000e+00, %65 ], [ %.2393, %174 ]
  %.3398466 = phi float [ %.2397, %193 ], [ %.2397, %._crit_edge515.thread596 ], [ 0.000000e+00, %65 ], [ %.2397, %174 ]
  %194 = phi float [ %.1361.lcssa568, %193 ], [ %.2372, %._crit_edge515.thread596 ], [ %56, %65 ], [ %.2372, %174 ]
  %195 = load i64, ptr %18, align 8, !tbaa !5
  %196 = icmp sgt i64 %195, 0
  br i1 %196, label %197, label %.thread469

197:                                              ; preds = %.thread455
  %198 = fsub float 1.000000e+00, %.3398466
  %199 = fdiv float %.3378468, %198
  %gep548 = getelementptr float, ptr %invariant.gep547, i64 %.0386544
  store float %199, ptr %gep548, align 4, !tbaa !13
  %.not473 = icmp eq i64 %195, 1
  br i1 %.not473, label %.thread469, label %200

200:                                              ; preds = %197
  %201 = fsub float 1.000000e+00, %.3394467
  %202 = fdiv float %194, %201
  %gep550 = getelementptr float, ptr %invariant.gep549, i64 %.0386544
  store float %202, ptr %gep550, align 4, !tbaa !13
  br label %.thread469

.thread469:                                       ; preds = %.thread455, %200, %197
  %203 = mul nsw i64 %.0386544, %40
  %gep540 = getelementptr %struct.complex, ptr %invariant.gep539, i64 %203
  %204 = call i32 @f2c_ccopy(ptr noundef nonnull %2, ptr noundef %gep540, ptr noundef nonnull @c__1, ptr noundef %21, ptr noundef nonnull @c__1) #4
  %205 = mul nsw i64 %.0386544, %43
  %gep542 = getelementptr %struct.complex, ptr %invariant.gep541, i64 %205
  %206 = call i32 @f2c_cgbmv(ptr noundef nonnull %34, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull @c_b6, ptr noundef %6, ptr noundef %7, ptr noundef %gep542, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b8, ptr noundef %21, ptr noundef nonnull @c__1) #4
  %207 = load i64, ptr %2, align 8, !tbaa !5
  %invariant.gep533 = getelementptr %struct.complex, ptr %42, i64 %203
  %.not413535 = icmp slt i64 %207, 1
  br i1 %.not413535, label %._crit_edge538, label %.lr.ph537

.lr.ph537:                                        ; preds = %.thread469, %.lr.ph537
  %.3390536 = phi i64 [ %219, %.lr.ph537 ], [ 1, %.thread469 ]
  %gep534 = getelementptr %struct.complex, ptr %invariant.gep533, i64 %.3390536
  %208 = load float, ptr %gep534, align 4, !tbaa !10
  %209 = call double @r_imag(ptr noundef nonnull %gep534) #4
  %210 = fptrunc double %209 to float
  %211 = insertelement <2 x float> poison, float %208, i64 0
  %212 = insertelement <2 x float> %211, float %210, i64 1
  %213 = fcmp oge <2 x float> %212, zeroinitializer
  %214 = fneg <2 x float> %212
  %215 = select <2 x i1> %213, <2 x float> %212, <2 x float> %214
  %shift660 = shufflevector <2 x float> %215, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %216 = fadd <2 x float> %215, %shift660
  %217 = extractelement <2 x float> %216, i64 0
  %218 = getelementptr inbounds float, ptr %47, i64 %.3390536
  store float %217, ptr %218, align 4, !tbaa !13
  %219 = add nuw i64 %.3390536, 1
  %exitcond561.not = icmp eq i64 %.3390536, %207
  br i1 %exitcond561.not, label %._crit_edge538, label %.lr.ph537, !llvm.loop !17

._crit_edge538:                                   ; preds = %.lr.ph537, %.thread469
  %220 = call i32 @cla_gbamv__(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull @c_b31, ptr noundef %6, ptr noundef %7, ptr noundef %gep542, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b31, ptr noundef %22, ptr noundef nonnull @c__1) #4
  %221 = getelementptr inbounds float, ptr %46, i64 %.0386544
  %222 = call i32 @cla_lin_berr__(ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef %21, ptr noundef %22, ptr noundef nonnull %221) #4
  %223 = add nuw i64 %.0386544, 1
  %exitcond562.not = icmp eq i64 %.0386544, %64
  br i1 %exitcond562.not, label %.loopexit474, label %65, !llvm.loop !18

.loopexit474:                                     ; preds = %._crit_edge538, %50, %31
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %32) #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 void @chla_transtype__(ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #2

declare double @slamch_(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 @f2c_cgbmv(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

declare i32 @cla_lin_berr__(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 nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #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 nounwind willreturn memory(argmem: write) }
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, !12, i64 0}
!11 = !{!"", !12, i64 0, !12, i64 4}
!12 = !{!"float", !7, i64 0}
!13 = !{!12, !12, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = distinct !{!16, !15}
!17 = distinct !{!17, !15}
!18 = distinct !{!18, !15}


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