; LLVM IR from niuyishuai/PDCABB :: LAPACK_BLAS/LAPACK (zla_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.doublecomplex = type { double, double }

@.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.doublecomplex, align 8
@c_b8 = external hidden global %struct.doublecomplex, align 8
@c_b31 = external hidden global double, align 8

; Function Attrs: nounwind uwtable
define dso_local i32 @zla_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 double, align 8
  %81 = alloca double, align 8
  %82 = alloca [1 x i8], align 1
  %83 = alloca double, align 8
  %84 = alloca double, align 8
  %85 = alloca i64, align 8
  %86 = alloca i64, align 8
  %87 = alloca i64, align 8
  %88 = alloca i64, align 8
  %89 = alloca double, align 8
  %90 = alloca double, align 8
  %91 = alloca double, align 8
  %92 = alloca double, align 8
  %93 = alloca double, align 8
  %94 = alloca i64, align 8
  %95 = alloca double, align 8
  %96 = alloca double, align 8
  %97 = alloca double, align 8
  %98 = alloca double, align 8
  %99 = alloca double, align 8
  %100 = alloca double, align 8
  %101 = alloca i64, align 8
  %102 = alloca double, align 8
  %103 = alloca double, align 8
  %104 = alloca [1 x i8], align 1
  %105 = alloca double, align 8
  %106 = alloca double, align 8
  %107 = alloca double, align 8
  %108 = alloca double, align 8
  %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 8, ptr %80) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #3
  call void @llvm.lifetime.start.p0(i64 1, ptr %82) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #3
  call void @llvm.lifetime.start.p0(i64 8, 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 8, ptr %89) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #3
  call void @llvm.lifetime.start.p0(i64 1, ptr %104) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #3
  call void @llvm.lifetime.start.p0(i64 8, 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 double, 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 double, 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.doublecomplex, 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.doublecomplex, 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 double, 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.doublecomplex, 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.doublecomplex, 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 double, 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.doublecomplex, 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 double, 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.doublecomplex, 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.doublecomplex, 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 %881

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 @dlamch_(ptr noundef @.str)
  store double %184, ptr %96, align 8, !tbaa !12
  %185 = call double @dlamch_(ptr noundef @.str.1)
  store double %185, ptr %108, align 8, !tbaa !12
  %186 = load double, ptr %108, align 8, !tbaa !12
  %187 = load double, ptr %108, align 8, !tbaa !12
  %188 = fmul double %187, %186
  store double %188, ptr %108, align 8, !tbaa !12
  %189 = load ptr, ptr %35, align 8, !tbaa !5
  %190 = load i64, ptr %189, align 8, !tbaa !9
  %191 = sitofp i64 %190 to double
  %192 = load double, ptr %96, align 8, !tbaa !12
  %193 = fmul double %191, %192
  store double %193, ptr %97, align 8, !tbaa !12
  %194 = load ptr, ptr %36, align 8, !tbaa !5
  %195 = load i64, ptr %194, align 8, !tbaa !9
  %196 = load ptr, ptr %37, align 8, !tbaa !5
  %197 = load i64, ptr %196, align 8, !tbaa !9
  %198 = add nsw i64 %195, %197
  %199 = add nsw i64 %198, 1
  store i64 %199, ptr %87, align 8, !tbaa !9
  %200 = load ptr, ptr %38, align 8, !tbaa !5
  %201 = load i64, ptr %200, align 8, !tbaa !9
  store i64 %201, ptr %76, align 8, !tbaa !9
  store i64 1, ptr %86, align 8, !tbaa !9
  br label %202

202:                                              ; preds = %877, %178
  %203 = load i64, ptr %86, align 8, !tbaa !9
  %204 = load i64, ptr %76, align 8, !tbaa !9
  %205 = icmp sle i64 %203, %204
  br i1 %205, label %206, label %880

206:                                              ; preds = %202
  store i64 1, ptr %101, align 8, !tbaa !9
  %207 = load i64, ptr %101, align 8, !tbaa !9
  %208 = icmp eq i64 %207, 2
  br i1 %208, label %209, label %230

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

212:                                              ; preds = %226, %209
  %213 = load i64, ptr %85, align 8, !tbaa !9
  %214 = load i64, ptr %77, align 8, !tbaa !9
  %215 = icmp sle i64 %213, %214
  br i1 %215, label %216, label %229

216:                                              ; preds = %212
  %217 = load i64, ptr %85, align 8, !tbaa !9
  store i64 %217, ptr %78, align 8, !tbaa !9
  %218 = load ptr, ptr %57, align 8, !tbaa !5
  %219 = load i64, ptr %78, align 8, !tbaa !9
  %220 = getelementptr inbounds %struct.doublecomplex, ptr %218, i64 %219
  %221 = getelementptr inbounds %struct.doublecomplex, ptr %220, i32 0, i32 0
  store double 0.000000e+00, ptr %221, align 8, !tbaa !14
  %222 = load ptr, ptr %57, align 8, !tbaa !5
  %223 = load i64, ptr %78, align 8, !tbaa !9
  %224 = getelementptr inbounds %struct.doublecomplex, ptr %222, i64 %223
  %225 = getelementptr inbounds %struct.doublecomplex, ptr %224, i32 0, i32 1
  store double 0.000000e+00, ptr %225, align 8, !tbaa !16
  br label %226

226:                                              ; preds = %216
  %227 = load i64, ptr %85, align 8, !tbaa !9
  %228 = add nsw i64 %227, 1
  store i64 %228, ptr %85, align 8, !tbaa !9
  br label %212, !llvm.loop !17

229:                                              ; preds = %212
  br label %230

230:                                              ; preds = %229, %206
  store double 0.000000e+00, ptr %102, align 8, !tbaa !12
  store double 0.000000e+00, ptr %83, align 8, !tbaa !12
  store double 0.000000e+00, ptr %103, align 8, !tbaa !12
  store double 0.000000e+00, ptr %84, align 8, !tbaa !12
  %231 = load double, ptr %108, align 8, !tbaa !12
  store double %231, ptr %91, align 8, !tbaa !12
  %232 = load double, ptr %108, align 8, !tbaa !12
  store double %232, ptr %92, align 8, !tbaa !12
  %233 = load double, ptr %108, align 8, !tbaa !12
  store double %233, ptr %93, align 8, !tbaa !12
  %234 = load double, ptr %108, align 8, !tbaa !12
  store double %234, ptr %89, align 8, !tbaa !12
  %235 = load double, ptr %108, align 8, !tbaa !12
  store double %235, ptr %99, align 8, !tbaa !12
  %236 = load double, ptr %108, align 8, !tbaa !12
  store double %236, ptr %98, align 8, !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
  %237 = load ptr, ptr %59, align 8, !tbaa !5
  %238 = load i64, ptr %237, align 8, !tbaa !9
  store i64 %238, ptr %77, align 8, !tbaa !9
  store i64 1, ptr %94, align 8, !tbaa !9
  br label %239

239:                                              ; preds = %725, %230
  %240 = load i64, ptr %94, align 8, !tbaa !9
  %241 = load i64, ptr %77, align 8, !tbaa !9
  %242 = icmp sle i64 %240, %241
  br i1 %242, label %243, label %728

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

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

274:                                              ; preds = %243
  %275 = load i64, ptr %101, align 8, !tbaa !9
  %276 = icmp eq i64 %275, 1
  br i1 %276, label %277, label %297

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

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

319:                                              ; preds = %297, %277
  br label %320

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

345:                                              ; preds = %505, %320
  %346 = load i64, ptr %85, align 8, !tbaa !9
  %347 = load i64, ptr %78, align 8, !tbaa !9
  %348 = icmp sle i64 %346, %347
  br i1 %348, label %349, label %508

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

362:                                              ; preds = %349
  %363 = load double, ptr %80, align 8, !tbaa !12
  br label %367

364:                                              ; preds = %349
  %365 = load double, ptr %80, align 8, !tbaa !12
  %366 = fneg double %365
  br label %367

367:                                              ; preds = %364, %362
  %368 = phi double [ %363, %362 ], [ %366, %364 ]
  %369 = load ptr, ptr %48, align 8, !tbaa !5
  %370 = load i64, ptr %85, align 8, !tbaa !9
  %371 = load i64, ptr %86, align 8, !tbaa !9
  %372 = load i64, ptr %70, align 8, !tbaa !9
  %373 = mul nsw i64 %371, %372
  %374 = add nsw i64 %370, %373
  %375 = getelementptr inbounds %struct.doublecomplex, ptr %369, i64 %374
  %376 = call double @d_imag(ptr noundef %375)
  store double %376, ptr %81, align 8, !tbaa !12
  %377 = load double, ptr %81, align 8, !tbaa !12
  %378 = fcmp oge double %377, 0.000000e+00
  br i1 %378, label %379, label %381

379:                                              ; preds = %367
  %380 = load double, ptr %81, align 8, !tbaa !12
  br label %384

381:                                              ; preds = %367
  %382 = load double, ptr %81, align 8, !tbaa !12
  %383 = fneg double %382
  br label %384

384:                                              ; preds = %381, %379
  %385 = phi double [ %380, %379 ], [ %383, %381 ]
  %386 = fadd double %368, %385
  store double %386, ptr %90, align 8, !tbaa !12
  %387 = load i64, ptr %85, align 8, !tbaa !9
  store i64 %387, ptr %79, align 8, !tbaa !9
  %388 = load ptr, ptr %56, align 8, !tbaa !5
  %389 = load i64, ptr %79, align 8, !tbaa !9
  %390 = getelementptr inbounds %struct.doublecomplex, ptr %388, i64 %389
  %391 = getelementptr inbounds %struct.doublecomplex, ptr %390, i32 0, i32 0
  %392 = load double, ptr %391, align 8, !tbaa !14
  store double %392, ptr %80, align 8, !tbaa !12
  %393 = load double, ptr %80, align 8, !tbaa !12
  %394 = fcmp oge double %393, 0.000000e+00
  br i1 %394, label %395, label %397

395:                                              ; preds = %384
  %396 = load double, ptr %80, align 8, !tbaa !12
  br label %400

397:                                              ; preds = %384
  %398 = load double, ptr %80, align 8, !tbaa !12
  %399 = fneg double %398
  br label %400

400:                                              ; preds = %397, %395
  %401 = phi double [ %396, %395 ], [ %399, %397 ]
  %402 = load ptr, ptr %56, align 8, !tbaa !5
  %403 = load i64, ptr %85, align 8, !tbaa !9
  %404 = getelementptr inbounds %struct.doublecomplex, ptr %402, i64 %403
  %405 = call double @d_imag(ptr noundef %404)
  store double %405, ptr %81, align 8, !tbaa !12
  %406 = load double, ptr %81, align 8, !tbaa !12
  %407 = fcmp oge double %406, 0.000000e+00
  br i1 %407, label %408, label %410

408:                                              ; preds = %400
  %409 = load double, ptr %81, align 8, !tbaa !12
  br label %413

410:                                              ; preds = %400
  %411 = load double, ptr %81, align 8, !tbaa !12
  %412 = fneg double %411
  br label %413

413:                                              ; preds = %410, %408
  %414 = phi double [ %409, %408 ], [ %412, %410 ]
  %415 = fadd double %401, %414
  store double %415, ptr %95, align 8, !tbaa !12
  %416 = load double, ptr %90, align 8, !tbaa !12
  %417 = fcmp une double %416, 0.000000e+00
  br i1 %417, label %418, label %432

418:                                              ; preds = %413
  %419 = load double, ptr %99, align 8, !tbaa !12
  store double %419, ptr %80, align 8, !tbaa !12
  %420 = load double, ptr %95, align 8, !tbaa !12
  %421 = load double, ptr %90, align 8, !tbaa !12
  %422 = fdiv double %420, %421
  store double %422, ptr %81, align 8, !tbaa !12
  %423 = load double, ptr %80, align 8, !tbaa !12
  %424 = load double, ptr %81, align 8, !tbaa !12
  %425 = fcmp oge double %423, %424
  br i1 %425, label %426, label %428

426:                                              ; preds = %418
  %427 = load double, ptr %80, align 8, !tbaa !12
  br label %430

428:                                              ; preds = %418
  %429 = load double, ptr %81, align 8, !tbaa !12
  br label %430

430:                                              ; preds = %428, %426
  %431 = phi double [ %427, %426 ], [ %429, %428 ]
  store double %431, ptr %99, align 8, !tbaa !12
  br label %438

432:                                              ; preds = %413
  %433 = load double, ptr %95, align 8, !tbaa !12
  %434 = fcmp une double %433, 0.000000e+00
  br i1 %434, label %435, label %437

435:                                              ; preds = %432
  %436 = load double, ptr %108, align 8, !tbaa !12
  store double %436, ptr %99, align 8, !tbaa !12
  br label %437

437:                                              ; preds = %435, %432
  br label %438

438:                                              ; preds = %437, %430
  %439 = load double, ptr %100, align 8, !tbaa !12
  %440 = load double, ptr %90, align 8, !tbaa !12
  %441 = fcmp ole double %439, %440
  br i1 %441, label %442, label %444

442:                                              ; preds = %438
  %443 = load double, ptr %100, align 8, !tbaa !12
  br label %446

444:                                              ; preds = %438
  %445 = load double, ptr %90, align 8, !tbaa !12
  br label %446

446:                                              ; preds = %444, %442
  %447 = phi double [ %443, %442 ], [ %445, %444 ]
  store double %447, ptr %100, align 8, !tbaa !12
  %448 = load double, ptr %106, align 8, !tbaa !12
  %449 = load double, ptr %90, align 8, !tbaa !12
  %450 = fcmp oge double %448, %449
  br i1 %450, label %451, label %453

451:                                              ; preds = %446
  %452 = load double, ptr %106, align 8, !tbaa !12
  br label %455

453:                                              ; preds = %446
  %454 = load double, ptr %90, align 8, !tbaa !12
  br label %455

455:                                              ; preds = %453, %451
  %456 = phi double [ %452, %451 ], [ %454, %453 ]
  store double %456, ptr %106, align 8, !tbaa !12
  %457 = load ptr, ptr %44, align 8, !tbaa !5
  %458 = load i64, ptr %457, align 8, !tbaa !9
  %459 = icmp ne i64 %458, 0
  br i1 %459, label %460, label %493

460:                                              ; preds = %455
  %461 = load double, ptr %105, align 8, !tbaa !12
  store double %461, ptr %80, align 8, !tbaa !12
  %462 = load double, ptr %90, align 8, !tbaa !12
  %463 = load ptr, ptr %45, align 8, !tbaa !5
  %464 = load i64, ptr %85, align 8, !tbaa !9
  %465 = getelementptr inbounds double, ptr %463, i64 %464
  %466 = load double, ptr %465, align 8, !tbaa !12
  %467 = fmul double %462, %466
  store double %467, ptr %81, align 8, !tbaa !12
  %468 = load double, ptr %80, align 8, !tbaa !12
  %469 = load double, ptr %81, align 8, !tbaa !12
  %470 = fcmp oge double %468, %469
  br i1 %470, label %471, label %473

471:                                              ; preds = %460
  %472 = load double, ptr %80, align 8, !tbaa !12
  br label %475

473:                                              ; preds = %460
  %474 = load double, ptr %81, align 8, !tbaa !12
  br label %475

475:                                              ; preds = %473, %471
  %476 = phi double [ %472, %471 ], [ %474, %473 ]
  store double %476, ptr %105, align 8, !tbaa !12
  %477 = load double, ptr %107, align 8, !tbaa !12
  store double %477, ptr %80, align 8, !tbaa !12
  %478 = load double, ptr %95, align 8, !tbaa !12
  %479 = load ptr, ptr %45, align 8, !tbaa !5
  %480 = load i64, ptr %85, align 8, !tbaa !9
  %481 = getelementptr inbounds double, ptr %479, i64 %480
  %482 = load double, ptr %481, align 8, !tbaa !12
  %483 = fmul double %478, %482
  store double %483, ptr %81, align 8, !tbaa !12
  %484 = load double, ptr %80, align 8, !tbaa !12
  %485 = load double, ptr %81, align 8, !tbaa !12
  %486 = fcmp oge double %484, %485
  br i1 %486, label %487, label %489

487:                                              ; preds = %475
  %488 = load double, ptr %80, align 8, !tbaa !12
  br label %491

489:                                              ; preds = %475
  %490 = load double, ptr %81, align 8, !tbaa !12
  br label %491

491:                                              ; preds = %489, %487
  %492 = phi double [ %488, %487 ], [ %490, %489 ]
  store double %492, ptr %107, align 8, !tbaa !12
  br label %504

493:                                              ; preds = %455
  %494 = load double, ptr %106, align 8, !tbaa !12
  store double %494, ptr %105, align 8, !tbaa !12
  %495 = load double, ptr %107, align 8, !tbaa !12
  %496 = load double, ptr %95, align 8, !tbaa !12
  %497 = fcmp oge double %495, %496
  br i1 %497, label %498, label %500

498:                                              ; preds = %493
  %499 = load double, ptr %107, align 8, !tbaa !12
  br label %502

500:                                              ; preds = %493
  %501 = load double, ptr %95, align 8, !tbaa !12
  br label %502

502:                                              ; preds = %500, %498
  %503 = phi double [ %499, %498 ], [ %501, %500 ]
  store double %503, ptr %107, align 8, !tbaa !12
  br label %504

504:                                              ; preds = %502, %491
  br label %505

505:                                              ; preds = %504
  %506 = load i64, ptr %85, align 8, !tbaa !9
  %507 = add nsw i64 %506, 1
  store i64 %507, ptr %85, align 8, !tbaa !9
  br label %345, !llvm.loop !19

508:                                              ; preds = %345
  %509 = load double, ptr %105, align 8, !tbaa !12
  %510 = fcmp une double %509, 0.000000e+00
  br i1 %510, label %511, label %515

511:                                              ; preds = %508
  %512 = load double, ptr %107, align 8, !tbaa !12
  %513 = load double, ptr %105, align 8, !tbaa !12
  %514 = fdiv double %512, %513
  store double %514, ptr %98, align 8, !tbaa !12
  br label %522

515:                                              ; preds = %508
  %516 = load double, ptr %107, align 8, !tbaa !12
  %517 = fcmp oeq double %516, 0.000000e+00
  br i1 %517, label %518, label %519

518:                                              ; preds = %515
  store double 0.000000e+00, ptr %98, align 8, !tbaa !12
  br label %521

519:                                              ; preds = %515
  %520 = load double, ptr %108, align 8, !tbaa !12
  store double %520, ptr %98, align 8, !tbaa !12
  br label %521

521:                                              ; preds = %519, %518
  br label %522

522:                                              ; preds = %521, %511
  %523 = load double, ptr %107, align 8, !tbaa !12
  %524 = load double, ptr %93, align 8, !tbaa !12
  %525 = fdiv double %523, %524
  store double %525, ptr %102, align 8, !tbaa !12
  %526 = load double, ptr %99, align 8, !tbaa !12
  %527 = load double, ptr %89, align 8, !tbaa !12
  %528 = fdiv double %526, %527
  store double %528, ptr %103, align 8, !tbaa !12
  %529 = load ptr, ptr %62, align 8, !tbaa !5
  %530 = load i64, ptr %529, align 8, !tbaa !9
  %531 = icmp ne i64 %530, 0
  br i1 %531, label %545, label %532

532:                                              ; preds = %522
  %533 = load double, ptr %100, align 8, !tbaa !12
  %534 = load ptr, ptr %58, align 8, !tbaa !5
  %535 = load double, ptr %534, align 8, !tbaa !12
  %536 = fmul double %533, %535
  %537 = load double, ptr %97, align 8, !tbaa !12
  %538 = load double, ptr %106, align 8, !tbaa !12
  %539 = fmul double %537, %538
  %540 = fcmp olt double %536, %539
  br i1 %540, label %541, label %545

541:                                              ; preds = %532
  %542 = load i64, ptr %101, align 8, !tbaa !9
  %543 = icmp slt i64 %542, 2
  br i1 %543, label %544, label %545

544:                                              ; preds = %541
  store i64 1, ptr %88, align 8, !tbaa !9
  br label %545

545:                                              ; preds = %544, %541, %532, %522
  %546 = load i64, ptr %109, align 8, !tbaa !9
  %547 = icmp eq i64 %546, 3
  br i1 %547, label %548, label %554

548:                                              ; preds = %545
  %549 = load double, ptr %102, align 8, !tbaa !12
  %550 = load ptr, ptr %60, align 8, !tbaa !5
  %551 = load double, ptr %550, align 8, !tbaa !12
  %552 = fcmp ole double %549, %551
  br i1 %552, label %553, label %554

553:                                              ; preds = %548
  store i64 1, ptr %109, align 8, !tbaa !9
  br label %554

554:                                              ; preds = %553, %548, %545
  %555 = load i64, ptr %109, align 8, !tbaa !9
  %556 = icmp eq i64 %555, 1
  br i1 %556, label %557, label %587

557:                                              ; preds = %554
  %558 = load double, ptr %98, align 8, !tbaa !12
  %559 = load double, ptr %96, align 8, !tbaa !12
  %560 = fcmp ole double %558, %559
  br i1 %560, label %561, label %562

561:                                              ; preds = %557
  store i64 2, ptr %109, align 8, !tbaa !9
  br label %581

562:                                              ; preds = %557
  %563 = load double, ptr %102, align 8, !tbaa !12
  %564 = load ptr, ptr %60, align 8, !tbaa !5
  %565 = load double, ptr %564, align 8, !tbaa !12
  %566 = fcmp ogt double %563, %565
  br i1 %566, label %567, label %573

567:                                              ; preds = %562
  %568 = load i64, ptr %101, align 8, !tbaa !9
  %569 = icmp ne i64 %568, 2
  br i1 %569, label %570, label %571

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

571:                                              ; preds = %567
  store i64 3, ptr %109, align 8, !tbaa !9
  br label %572

572:                                              ; preds = %571, %570
  br label %580

573:                                              ; preds = %562
  %574 = load double, ptr %102, align 8, !tbaa !12
  %575 = load double, ptr %83, align 8, !tbaa !12
  %576 = fcmp ogt double %574, %575
  br i1 %576, label %577, label %579

577:                                              ; preds = %573
  %578 = load double, ptr %102, align 8, !tbaa !12
  store double %578, ptr %83, align 8, !tbaa !12
  br label %579

579:                                              ; preds = %577, %573
  br label %580

580:                                              ; preds = %579, %572
  br label %581

581:                                              ; preds = %580, %561
  %582 = load i64, ptr %109, align 8, !tbaa !9
  %583 = icmp sgt i64 %582, 1
  br i1 %583, label %584, label %586

584:                                              ; preds = %581
  %585 = load double, ptr %98, align 8, !tbaa !12
  store double %585, ptr %91, align 8, !tbaa !12
  br label %586

586:                                              ; preds = %584, %581
  br label %587

587:                                              ; preds = %586, %554
  %588 = load i64, ptr %110, align 8, !tbaa !9
  %589 = icmp eq i64 %588, 0
  br i1 %589, label %590, label %596

590:                                              ; preds = %587
  %591 = load double, ptr %99, align 8, !tbaa !12
  %592 = load ptr, ptr %61, align 8, !tbaa !5
  %593 = load double, ptr %592, align 8, !tbaa !12
  %594 = fcmp ole double %591, %593
  br i1 %594, label %595, label %596

595:                                              ; preds = %590
  store i64 1, ptr %110, align 8, !tbaa !9
  br label %596

596:                                              ; preds = %595, %590, %587
  %597 = load i64, ptr %110, align 8, !tbaa !9
  %598 = icmp eq i64 %597, 3
  br i1 %598, label %599, label %605

599:                                              ; preds = %596
  %600 = load double, ptr %103, align 8, !tbaa !12
  %601 = load ptr, ptr %60, align 8, !tbaa !5
  %602 = load double, ptr %601, align 8, !tbaa !12
  %603 = fcmp ole double %600, %602
  br i1 %603, label %604, label %605

604:                                              ; preds = %599
  store i64 1, ptr %110, align 8, !tbaa !9
  br label %605

605:                                              ; preds = %604, %599, %596
  %606 = load i64, ptr %110, align 8, !tbaa !9
  %607 = icmp eq i64 %606, 1
  br i1 %607, label %608, label %646

608:                                              ; preds = %605
  %609 = load double, ptr %99, align 8, !tbaa !12
  %610 = load double, ptr %96, align 8, !tbaa !12
  %611 = fcmp ole double %609, %610
  br i1 %611, label %612, label %613

612:                                              ; preds = %608
  store i64 2, ptr %110, align 8, !tbaa !9
  br label %640

613:                                              ; preds = %608
  %614 = load double, ptr %99, align 8, !tbaa !12
  %615 = load ptr, ptr %61, align 8, !tbaa !5
  %616 = load double, ptr %615, align 8, !tbaa !12
  %617 = fcmp ogt double %614, %616
  br i1 %617, label %618, label %620

618:                                              ; preds = %613
  store i64 0, ptr %110, align 8, !tbaa !9
  store double 0.000000e+00, ptr %84, align 8, !tbaa !12
  %619 = load double, ptr %108, align 8, !tbaa !12
  store double %619, ptr %92, align 8, !tbaa !12
  br label %639

620:                                              ; preds = %613
  %621 = load double, ptr %103, align 8, !tbaa !12
  %622 = load ptr, ptr %60, align 8, !tbaa !5
  %623 = load double, ptr %622, align 8, !tbaa !12
  %624 = fcmp ogt double %621, %623
  br i1 %624, label %625, label %631

625:                                              ; preds = %620
  %626 = load i64, ptr %101, align 8, !tbaa !9
  %627 = icmp ne i64 %626, 2
  br i1 %627, label %628, label %629

628:                                              ; preds = %625
  store i64 1, ptr %88, align 8, !tbaa !9
  br label %630

629:                                              ; preds = %625
  store i64 3, ptr %110, align 8, !tbaa !9
  br label %630

630:                                              ; preds = %629, %628
  br label %638

631:                                              ; preds = %620
  %632 = load double, ptr %103, align 8, !tbaa !12
  %633 = load double, ptr %84, align 8, !tbaa !12
  %634 = fcmp ogt double %632, %633
  br i1 %634, label %635, label %637

635:                                              ; preds = %631
  %636 = load double, ptr %103, align 8, !tbaa !12
  store double %636, ptr %84, align 8, !tbaa !12
  br label %637

637:                                              ; preds = %635, %631
  br label %638

638:                                              ; preds = %637, %630
  br label %639

639:                                              ; preds = %638, %618
  br label %640

640:                                              ; preds = %639, %612
  %641 = load i64, ptr %110, align 8, !tbaa !9
  %642 = icmp sgt i64 %641, 1
  br i1 %642, label %643, label %645

643:                                              ; preds = %640
  %644 = load double, ptr %99, align 8, !tbaa !12
  store double %644, ptr %92, align 8, !tbaa !12
  br label %645

645:                                              ; preds = %643, %640
  br label %646

646:                                              ; preds = %645, %605
  %647 = load i64, ptr %109, align 8, !tbaa !9
  %648 = icmp ne i64 %647, 1
  br i1 %648, label %649, label %669

649:                                              ; preds = %646
  %650 = load ptr, ptr %62, align 8, !tbaa !5
  %651 = load i64, ptr %650, align 8, !tbaa !9
  %652 = icmp ne i64 %651, 0
  br i1 %652, label %653, label %654

653:                                              ; preds = %649
  br label %729

654:                                              ; preds = %649
  %655 = load i64, ptr %110, align 8, !tbaa !9
  %656 = icmp eq i64 %655, 3
  br i1 %656, label %660, label %657

657:                                              ; preds = %654
  %658 = load i64, ptr %110, align 8, !tbaa !9
  %659 = icmp eq i64 %658, 2
  br i1 %659, label %660, label %661

660:                                              ; preds = %657, %654
  br label %729

661:                                              ; preds = %657
  %662 = load i64, ptr %110, align 8, !tbaa !9
  %663 = icmp eq i64 %662, 0
  br i1 %663, label %664, label %668

664:                                              ; preds = %661
  %665 = load i64, ptr %94, align 8, !tbaa !9
  %666 = icmp sgt i64 %665, 1
  br i1 %666, label %667, label %668

667:                                              ; preds = %664
  br label %729

668:                                              ; preds = %664, %661
  br label %669

669:                                              ; preds = %668, %646
  %670 = load i64, ptr %88, align 8, !tbaa !9
  %671 = icmp ne i64 %670, 0
  br i1 %671, label %672, label %695

672:                                              ; preds = %669
  store i64 0, ptr %88, align 8, !tbaa !9
  %673 = load i64, ptr %101, align 8, !tbaa !9
  %674 = add nsw i64 %673, 1
  store i64 %674, ptr %101, align 8, !tbaa !9
  %675 = load ptr, ptr %35, align 8, !tbaa !5
  %676 = load i64, ptr %675, align 8, !tbaa !9
  store i64 %676, ptr %78, align 8, !tbaa !9
  store i64 1, ptr %85, align 8, !tbaa !9
  br label %677

677:                                              ; preds = %691, %672
  %678 = load i64, ptr %85, align 8, !tbaa !9
  %679 = load i64, ptr %78, align 8, !tbaa !9
  %680 = icmp sle i64 %678, %679
  br i1 %680, label %681, label %694

681:                                              ; preds = %677
  %682 = load i64, ptr %85, align 8, !tbaa !9
  store i64 %682, ptr %79, align 8, !tbaa !9
  %683 = load ptr, ptr %57, align 8, !tbaa !5
  %684 = load i64, ptr %79, align 8, !tbaa !9
  %685 = getelementptr inbounds %struct.doublecomplex, ptr %683, i64 %684
  %686 = getelementptr inbounds %struct.doublecomplex, ptr %685, i32 0, i32 0
  store double 0.000000e+00, ptr %686, align 8, !tbaa !14
  %687 = load ptr, ptr %57, align 8, !tbaa !5
  %688 = load i64, ptr %79, align 8, !tbaa !9
  %689 = getelementptr inbounds %struct.doublecomplex, ptr %687, i64 %688
  %690 = getelementptr inbounds %struct.doublecomplex, ptr %689, i32 0, i32 1
  store double 0.000000e+00, ptr %690, align 8, !tbaa !16
  br label %691

691:                                              ; preds = %681
  %692 = load i64, ptr %85, align 8, !tbaa !9
  %693 = add nsw i64 %692, 1
  store i64 %693, ptr %85, align 8, !tbaa !9
  br label %677, !llvm.loop !20

694:                                              ; preds = %677
  br label %695

695:                                              ; preds = %694, %669
  %696 = load double, ptr %107, align 8, !tbaa !12
  store double %696, ptr %93, align 8, !tbaa !12
  %697 = load double, ptr %99, align 8, !tbaa !12
  store double %697, ptr %89, align 8, !tbaa !12
  %698 = load i64, ptr %101, align 8, !tbaa !9
  %699 = icmp slt i64 %698, 2
  br i1 %699, label %700, label %711

700:                                              ; preds = %695
  %701 = load ptr, ptr %35, align 8, !tbaa !5
  %702 = load ptr, ptr %56, align 8, !tbaa !5
  %703 = getelementptr inbounds %struct.doublecomplex, ptr %702, i64 1
  %704 = load ptr, ptr %48, align 8, !tbaa !5
  %705 = load i64, ptr %86, align 8, !tbaa !9
  %706 = load i64, ptr %70, align 8, !tbaa !9
  %707 = mul nsw i64 %705, %706
  %708 = add nsw i64 %707, 1
  %709 = getelementptr inbounds %struct.doublecomplex, ptr %704, i64 %708
  %710 = call i32 @f2c_zaxpy(ptr noundef %701, ptr noundef @c_b8, ptr noundef %703, ptr noundef @c__1, ptr noundef %709, ptr noundef @c__1)
  br label %724

711:                                              ; preds = %695
  %712 = load ptr, ptr %35, align 8, !tbaa !5
  %713 = load ptr, ptr %48, align 8, !tbaa !5
  %714 = load i64, ptr %86, align 8, !tbaa !9
  %715 = load i64, ptr %70, align 8, !tbaa !9
  %716 = mul nsw i64 %714, %715
  %717 = add nsw i64 %716, 1
  %718 = getelementptr inbounds %struct.doublecomplex, ptr %713, i64 %717
  %719 = load ptr, ptr %57, align 8, !tbaa !5
  %720 = getelementptr inbounds %struct.doublecomplex, ptr %719, i64 1
  %721 = load ptr, ptr %56, align 8, !tbaa !5
  %722 = getelementptr inbounds %struct.doublecomplex, ptr %721, i64 1
  %723 = call i32 @zla_wwaddw__(ptr noundef %712, ptr noundef %718, ptr noundef %720, ptr noundef %722)
  br label %724

724:                                              ; preds = %711, %700
  br label %725

725:                                              ; preds = %724
  %726 = load i64, ptr %94, align 8, !tbaa !9
  %727 = add nsw i64 %726, 1
  store i64 %727, ptr %94, align 8, !tbaa !9
  br label %239, !llvm.loop !21

728:                                              ; preds = %239
  br label %729

729:                                              ; preds = %728, %667, %660, %653
  %730 = load i64, ptr %109, align 8, !tbaa !9
  %731 = icmp eq i64 %730, 1
  br i1 %731, label %732, label %734

732:                                              ; preds = %729
  %733 = load double, ptr %98, align 8, !tbaa !12
  store double %733, ptr %91, align 8, !tbaa !12
  br label %734

734:                                              ; preds = %732, %729
  %735 = load i64, ptr %110, align 8, !tbaa !9
  %736 = icmp eq i64 %735, 1
  br i1 %736, label %737, label %739

737:                                              ; preds = %734
  %738 = load double, ptr %99, align 8, !tbaa !12
  store double %738, ptr %92, align 8, !tbaa !12
  br label %739

739:                                              ; preds = %737, %734
  %740 = load ptr, ptr %51, align 8, !tbaa !5
  %741 = load i64, ptr %740, align 8, !tbaa !9
  %742 = icmp sge i64 %741, 1
  br i1 %742, label %743, label %754

743:                                              ; preds = %739
  %744 = load double, ptr %91, align 8, !tbaa !12
  %745 = load double, ptr %83, align 8, !tbaa !12
  %746 = fsub double 1.000000e+00, %745
  %747 = fdiv double %744, %746
  %748 = load ptr, ptr %52, align 8, !tbaa !5
  %749 = load i64, ptr %86, align 8, !tbaa !9
  %750 = load i64, ptr %72, align 8, !tbaa !9
  %751 = shl i64 %750, 1
  %752 = add nsw i64 %749, %751
  %753 = getelementptr inbounds double, ptr %748, i64 %752
  store double %747, ptr %753, align 8, !tbaa !12
  br label %754

754:                                              ; preds = %743, %739
  %755 = load ptr, ptr %51, align 8, !tbaa !5
  %756 = load i64, ptr %755, align 8, !tbaa !9
  %757 = icmp sge i64 %756, 2
  br i1 %757, label %758, label %769

758:                                              ; preds = %754
  %759 = load double, ptr %92, align 8, !tbaa !12
  %760 = load double, ptr %84, align 8, !tbaa !12
  %761 = fsub double 1.000000e+00, %760
  %762 = fdiv double %759, %761
  %763 = load ptr, ptr %53, align 8, !tbaa !5
  %764 = load i64, ptr %86, align 8, !tbaa !9
  %765 = load i64, ptr %74, align 8, !tbaa !9
  %766 = shl i64 %765, 1
  %767 = add nsw i64 %764, %766
  %768 = getelementptr inbounds double, ptr %763, i64 %767
  store double %762, ptr %768, align 8, !tbaa !12
  br label %769

769:                                              ; preds = %758, %754
  %770 = load ptr, ptr %35, align 8, !tbaa !5
  %771 = load ptr, ptr %46, align 8, !tbaa !5
  %772 = load i64, ptr %86, align 8, !tbaa !9
  %773 = load i64, ptr %68, align 8, !tbaa !9
  %774 = mul nsw i64 %772, %773
  %775 = add nsw i64 %774, 1
  %776 = getelementptr inbounds %struct.doublecomplex, ptr %771, i64 %775
  %777 = load ptr, ptr %54, align 8, !tbaa !5
  %778 = getelementptr inbounds %struct.doublecomplex, ptr %777, i64 1
  %779 = call i32 @f2c_zcopy(ptr noundef %770, ptr noundef %776, ptr noundef @c__1, ptr noundef %778, ptr noundef @c__1)
  %780 = getelementptr inbounds [1 x i8], ptr %104, i64 0, i64 0
  %781 = load ptr, ptr %35, align 8, !tbaa !5
  %782 = load ptr, ptr %35, align 8, !tbaa !5
  %783 = load ptr, ptr %36, align 8, !tbaa !5
  %784 = load ptr, ptr %37, align 8, !tbaa !5
  %785 = load ptr, ptr %39, align 8, !tbaa !5
  %786 = load i64, ptr %65, align 8, !tbaa !9
  %787 = getelementptr inbounds %struct.doublecomplex, ptr %785, i64 %786
  %788 = load ptr, ptr %40, align 8, !tbaa !5
  %789 = load ptr, ptr %48, align 8, !tbaa !5
  %790 = load i64, ptr %86, align 8, !tbaa !9
  %791 = load i64, ptr %70, align 8, !tbaa !9
  %792 = mul nsw i64 %790, %791
  %793 = add nsw i64 %792, 1
  %794 = getelementptr inbounds %struct.doublecomplex, ptr %789, i64 %793
  %795 = load ptr, ptr %54, align 8, !tbaa !5
  %796 = getelementptr inbounds %struct.doublecomplex, ptr %795, i64 1
  %797 = call i32 @f2c_zgbmv(ptr noundef %780, ptr noundef %781, ptr noundef %782, ptr noundef %783, ptr noundef %784, ptr noundef @c_b6, ptr noundef %787, ptr noundef %788, ptr noundef %794, ptr noundef @c__1, ptr noundef @c_b8, ptr noundef %796, ptr noundef @c__1)
  %798 = load ptr, ptr %35, align 8, !tbaa !5
  %799 = load i64, ptr %798, align 8, !tbaa !9
  store i64 %799, ptr %77, align 8, !tbaa !9
  store i64 1, ptr %85, align 8, !tbaa !9
  br label %800

800:                                              ; preds = %845, %769
  %801 = load i64, ptr %85, align 8, !tbaa !9
  %802 = load i64, ptr %77, align 8, !tbaa !9
  %803 = icmp sle i64 %801, %802
  br i1 %803, label %804, label %848

804:                                              ; preds = %800
  %805 = load i64, ptr %85, align 8, !tbaa !9
  %806 = load i64, ptr %86, align 8, !tbaa !9
  %807 = load i64, ptr %68, align 8, !tbaa !9
  %808 = mul nsw i64 %806, %807
  %809 = add nsw i64 %805, %808
  store i64 %809, ptr %78, align 8, !tbaa !9
  %810 = load ptr, ptr %46, align 8, !tbaa !5
  %811 = load i64, ptr %78, align 8, !tbaa !9
  %812 = getelementptr inbounds %struct.doublecomplex, ptr %810, i64 %811
  %813 = getelementptr inbounds %struct.doublecomplex, ptr %812, i32 0, i32 0
  %814 = load double, ptr %813, align 8, !tbaa !14
  store double %814, ptr %80, align 8, !tbaa !12
  %815 = load double, ptr %80, align 8, !tbaa !12
  %816 = fcmp oge double %815, 0.000000e+00
  br i1 %816, label %817, label %819

817:                                              ; preds = %804
  %818 = load double, ptr %80, align 8, !tbaa !12
  br label %822

819:                                              ; preds = %804
  %820 = load double, ptr %80, align 8, !tbaa !12
  %821 = fneg double %820
  br label %822

822:                                              ; preds = %819, %817
  %823 = phi double [ %818, %817 ], [ %821, %819 ]
  %824 = load ptr, ptr %46, align 8, !tbaa !5
  %825 = load i64, ptr %85, align 8, !tbaa !9
  %826 = load i64, ptr %86, align 8, !tbaa !9
  %827 = load i64, ptr %68, align 8, !tbaa !9
  %828 = mul nsw i64 %826, %827
  %829 = add nsw i64 %825, %828
  %830 = getelementptr inbounds %struct.doublecomplex, ptr %824, i64 %829
  %831 = call double @d_imag(ptr noundef %830)
  store double %831, ptr %81, align 8, !tbaa !12
  %832 = load double, ptr %81, align 8, !tbaa !12
  %833 = fcmp oge double %832, 0.000000e+00
  br i1 %833, label %834, label %836

834:                                              ; preds = %822
  %835 = load double, ptr %81, align 8, !tbaa !12
  br label %839

836:                                              ; preds = %822
  %837 = load double, ptr %81, align 8, !tbaa !12
  %838 = fneg double %837
  br label %839

839:                                              ; preds = %836, %834
  %840 = phi double [ %835, %834 ], [ %838, %836 ]
  %841 = fadd double %823, %840
  %842 = load ptr, ptr %55, align 8, !tbaa !5
  %843 = load i64, ptr %85, align 8, !tbaa !9
  %844 = getelementptr inbounds double, ptr %842, i64 %843
  store double %841, ptr %844, align 8, !tbaa !12
  br label %845

845:                                              ; preds = %839
  %846 = load i64, ptr %85, align 8, !tbaa !9
  %847 = add nsw i64 %846, 1
  store i64 %847, ptr %85, align 8, !tbaa !9
  br label %800, !llvm.loop !22

848:                                              ; preds = %800
  %849 = load ptr, ptr %34, align 8, !tbaa !5
  %850 = load ptr, ptr %35, align 8, !tbaa !5
  %851 = load ptr, ptr %35, align 8, !tbaa !5
  %852 = load ptr, ptr %36, align 8, !tbaa !5
  %853 = load ptr, ptr %37, align 8, !tbaa !5
  %854 = load ptr, ptr %39, align 8, !tbaa !5
  %855 = load i64, ptr %65, align 8, !tbaa !9
  %856 = getelementptr inbounds %struct.doublecomplex, ptr %854, i64 %855
  %857 = load ptr, ptr %40, align 8, !tbaa !5
  %858 = load ptr, ptr %48, align 8, !tbaa !5
  %859 = load i64, ptr %86, align 8, !tbaa !9
  %860 = load i64, ptr %70, align 8, !tbaa !9
  %861 = mul nsw i64 %859, %860
  %862 = add nsw i64 %861, 1
  %863 = getelementptr inbounds %struct.doublecomplex, ptr %858, i64 %862
  %864 = load ptr, ptr %55, align 8, !tbaa !5
  %865 = getelementptr inbounds double, ptr %864, i64 1
  %866 = call i32 @zla_gbamv__(ptr noundef %849, ptr noundef %850, ptr noundef %851, ptr noundef %852, ptr noundef %853, ptr noundef @c_b31, ptr noundef %856, ptr noundef %857, ptr noundef %863, ptr noundef @c__1, ptr noundef @c_b31, ptr noundef %865, ptr noundef @c__1)
  %867 = load ptr, ptr %35, align 8, !tbaa !5
  %868 = load ptr, ptr %35, align 8, !tbaa !5
  %869 = load ptr, ptr %54, align 8, !tbaa !5
  %870 = getelementptr inbounds %struct.doublecomplex, ptr %869, i64 1
  %871 = load ptr, ptr %55, align 8, !tbaa !5
  %872 = getelementptr inbounds double, ptr %871, i64 1
  %873 = load ptr, ptr %50, align 8, !tbaa !5
  %874 = load i64, ptr %86, align 8, !tbaa !9
  %875 = getelementptr inbounds double, ptr %873, i64 %874
  %876 = call i32 @zla_lin_berr__(ptr noundef %867, ptr noundef %868, ptr noundef @c__1, ptr noundef %870, ptr noundef %872, ptr noundef %875)
  br label %877

877:                                              ; preds = %848
  %878 = load i64, ptr %86, align 8, !tbaa !9
  %879 = add nsw i64 %878, 1
  store i64 %879, ptr %86, align 8, !tbaa !9
  br label %202, !llvm.loop !23

880:                                              ; preds = %202
  store i32 0, ptr %32, align 4
  store i32 1, ptr %111, align 4
  br label %881

881:                                              ; preds = %880, %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 8, ptr %108) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %104) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #3
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr %84) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %82) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #3
  call void @llvm.lifetime.end.p0(i64 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
  %882 = load i32, ptr %32, align 4
  ret i32 %882
}

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

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

declare i32 @f2c_zgbmv(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_zgbmv_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_zgbmv2_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 @zgbtrs_(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 @d_imag(ptr noundef) #2

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

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

declare i32 @zla_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 @zla_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 = !{!"double", !7, i64 0}
!14 = !{!15, !13, i64 0}
!15 = !{!"", !13, i64 0, !13, i64 8}
!16 = !{!15, !13, i64 8}
!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.doublecomplex = type { double, double }

@.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.doublecomplex, align 8
@c_b8 = external hidden global %struct.doublecomplex, align 8
@c_b31 = external hidden global double, align 8

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @zla_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 double, ptr %20, i64 %36
  %38 = getelementptr inbounds double, ptr %19, i64 %36
  %39 = getelementptr inbounds i8, ptr %12, i64 -8
  %40 = load i64, ptr %14, align 8, !tbaa !5
  %41 = xor i64 %40, -1
  %42 = getelementptr inbounds %struct.doublecomplex, ptr %13, i64 %41
  %43 = load i64, ptr %16, align 8, !tbaa !5
  %44 = xor i64 %43, -1
  %45 = getelementptr inbounds %struct.doublecomplex, ptr %15, i64 %44
  %46 = getelementptr inbounds i8, ptr %17, i64 -8
  %47 = getelementptr inbounds i8, ptr %22, i64 -8
  %48 = getelementptr inbounds i8, ptr %23, i64 -16
  %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 @dlamch_(ptr noundef nonnull @.str) #4
  %53 = call double @dlamch_(ptr noundef nonnull @.str.1) #4
  %54 = fmul double %53, %53
  %55 = load i64, ptr %2, align 8, !tbaa !5
  %56 = sitofp i64 %55 to double
  %57 = fmul double %52, %56
  %58 = load i64, ptr %3, align 8, !tbaa !5
  %59 = load i64, ptr %4, align 8, !tbaa !5
  %60 = add i64 %58, 1
  %61 = add i64 %60, %59
  store i64 %61, ptr %33, align 8, !tbaa !5
  %62 = load i64, ptr %5, align 8, !tbaa !5
  %invariant.gep539 = getelementptr i8, ptr %42, i64 16
  %invariant.gep541 = getelementptr i8, ptr %45, i64 16
  %.not402543 = icmp slt i64 %62, 1
  br i1 %.not402543, label %.loopexit474, label %.lr.ph546

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

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

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

67:                                               ; preds = %.lr.ph514, %183
  %.0512 = phi i64 [ 0, %.lr.ph514 ], [ %.4, %183 ]
  %.0347511 = phi i64 [ 1, %.lr.ph514 ], [ %.3350, %183 ]
  %.0357510 = phi i64 [ 1, %.lr.ph514 ], [ %.1358, %183 ]
  %.0360509 = phi double [ %54, %.lr.ph514 ], [ %.1361.lcssa568, %183 ]
  %.0368508 = phi i64 [ 1, %.lr.ph514 ], [ %184, %183 ]
  %.0369507 = phi double [ %54, %.lr.ph514 ], [ %.0352.lcssa575, %183 ]
  %.0370506 = phi double [ %54, %.lr.ph514 ], [ %.2372, %183 ]
  %.0375505 = phi double [ %54, %.lr.ph514 ], [ %.1376, %183 ]
  %.0391504 = phi double [ 0.000000e+00, %.lr.ph514 ], [ %.2393, %183 ]
  %.0395503 = phi double [ 0.000000e+00, %.lr.ph514 ], [ %.2397, %183 ]
  %68 = call i32 @f2c_zcopy(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 %73 [
    i64 0, label %69
    i64 1, label %71
  ]

69:                                               ; preds = %67
  %70 = call i32 @f2c_zgbmv(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 %75

71:                                               ; preds = %67
  %72 = call i32 @blas_zgbmv_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 %75

73:                                               ; preds = %67
  %74 = call i32 @blas_zgbmv2_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 %75

75:                                               ; preds = %71, %73, %69
  %76 = call i32 @f2c_zcopy(ptr noundef nonnull %2, ptr noundef %21, ptr noundef nonnull @c__1, ptr noundef %23, ptr noundef nonnull @c__1) #4
  %77 = call i32 @zgbtrs_(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
  %78 = load i64, ptr %2, align 8, !tbaa !5
  %.not404475 = icmp slt i64 %78, 1
  br i1 %.not404475, label %._crit_edge.thread, label %.lr.ph

.lr.ph:                                           ; preds = %75, %119
  %.0352481 = phi double [ %121, %119 ], [ 0.000000e+00, %75 ]
  %.0354480 = phi double [ %110, %119 ], [ 0.000000e+00, %75 ]
  %.0355479 = phi double [ %.1356, %119 ], [ 0.000000e+00, %75 ]
  %.0359478 = phi double [ %108, %119 ], [ %54, %75 ]
  %.1361477 = phi double [ %.2362, %119 ], [ 0.000000e+00, %75 ]
  %.1388476 = phi i64 [ %122, %119 ], [ 1, %75 ]
  %gep = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %.1388476
  %79 = load double, ptr %gep, align 8, !tbaa !10
  %80 = call double @d_imag(ptr noundef nonnull %gep) #4
  %81 = insertelement <2 x double> poison, double %79, i64 0
  %82 = insertelement <2 x double> %81, double %80, i64 1
  %83 = fcmp oge <2 x double> %82, zeroinitializer
  %84 = fneg <2 x double> %82
  %85 = select <2 x i1> %83, <2 x double> %82, <2 x double> %84
  %shift = shufflevector <2 x double> %85, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %86 = fadd <2 x double> %85, %shift
  %87 = extractelement <2 x double> %86, i64 0
  %88 = getelementptr inbounds %struct.doublecomplex, ptr %48, i64 %.1388476
  %89 = load double, ptr %88, align 8, !tbaa !10
  %90 = fcmp oge double %89, 0.000000e+00
  %91 = fneg double %89
  %92 = select i1 %90, double %89, double %91
  %93 = call double @d_imag(ptr noundef nonnull %88) #4
  %94 = fcmp oge double %93, 0.000000e+00
  %95 = fneg double %93
  %96 = select i1 %94, double %93, double %95
  %97 = fadd double %92, %96
  %98 = fcmp une double %87, 0.000000e+00
  br i1 %98, label %99, label %103

99:                                               ; preds = %.lr.ph
  %100 = fdiv double %97, %87
  %101 = fcmp oge double %.1361477, %100
  %102 = select i1 %101, double %.1361477, double %100
  br label %106

103:                                              ; preds = %.lr.ph
  %104 = fcmp une double %97, 0.000000e+00
  br i1 %104, label %105, label %106

105:                                              ; preds = %103
  br label %106

106:                                              ; preds = %103, %105, %99
  %.2362 = phi double [ %102, %99 ], [ %54, %105 ], [ %.1361477, %103 ]
  %107 = fcmp ole double %.0359478, %87
  %108 = select i1 %107, double %.0359478, double %87
  %109 = fcmp oge double %.0354480, %87
  %110 = select i1 %109, double %.0354480, double %87
  %111 = load i64, ptr %11, align 8, !tbaa !5
  %.not414 = icmp eq i64 %111, 0
  br i1 %.not414, label %119, label %112

112:                                              ; preds = %106
  %113 = getelementptr inbounds double, ptr %39, i64 %.1388476
  %114 = load double, ptr %113, align 8, !tbaa !13
  %115 = fmul double %87, %114
  %116 = fcmp oge double %.0355479, %115
  %117 = select i1 %116, double %.0355479, double %115
  %118 = fmul double %97, %114
  br label %119

119:                                              ; preds = %106, %112
  %.sink636 = phi double [ %118, %112 ], [ %97, %106 ]
  %.1356 = phi double [ %117, %112 ], [ %110, %106 ]
  %120 = fcmp oge double %.0352481, %.sink636
  %121 = select i1 %120, double %.0352481, double %.sink636
  %122 = add nuw i64 %.1388476, 1
  %exitcond.not = icmp eq i64 %.1388476, %78
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !14

._crit_edge:                                      ; preds = %119
  %123 = fcmp une double %.1356, 0.000000e+00
  br i1 %123, label %124, label %._crit_edge.thread

124:                                              ; preds = %._crit_edge
  %125 = fdiv double %121, %.1356
  br label %127

._crit_edge.thread:                               ; preds = %75, %._crit_edge
  %.0352.lcssa574 = phi double [ %121, %._crit_edge ], [ 0.000000e+00, %75 ]
  %.0354.lcssa573 = phi double [ %110, %._crit_edge ], [ 0.000000e+00, %75 ]
  %.0359.lcssa571 = phi double [ %108, %._crit_edge ], [ %54, %75 ]
  %.1361.lcssa569 = phi double [ %.2362, %._crit_edge ], [ 0.000000e+00, %75 ]
  %126 = fcmp oeq double %.0352.lcssa574, 0.000000e+00
  %. = select i1 %126, double 0.000000e+00, double %54
  br label %127

127:                                              ; preds = %._crit_edge.thread, %124
  %.0352.lcssa575 = phi double [ %121, %124 ], [ %.0352.lcssa574, %._crit_edge.thread ]
  %.0354.lcssa572 = phi double [ %110, %124 ], [ %.0354.lcssa573, %._crit_edge.thread ]
  %.0359.lcssa570 = phi double [ %108, %124 ], [ %.0359.lcssa571, %._crit_edge.thread ]
  %.1361.lcssa568 = phi double [ %.2362, %124 ], [ %.1361.lcssa569, %._crit_edge.thread ]
  %.1365 = phi double [ %125, %124 ], [ %., %._crit_edge.thread ]
  %128 = fdiv double %.0352.lcssa575, %.0369507
  %129 = fdiv double %.1361.lcssa568, %.0360509
  %130 = load i64, ptr %29, align 8, !tbaa !5
  %.not405 = icmp eq i64 %130, 0
  br i1 %.not405, label %131, label %137

131:                                              ; preds = %127
  %132 = load double, ptr %25, align 8, !tbaa !13
  %133 = fmul double %.0359.lcssa570, %132
  %134 = fmul double %57, %.0354.lcssa572
  %135 = fcmp olt double %133, %134
  %136 = icmp slt i64 %.0357510, 2
  %or.cond = and i1 %136, %135
  %spec.select = zext i1 %or.cond to i64
  br label %137

137:                                              ; preds = %131, %127
  %.1381 = phi i64 [ 0, %127 ], [ %spec.select, %131 ]
  switch i64 %.0347511, label %.thread421 [
    i64 3, label %138
    i64 1, label %.thread
  ]

138:                                              ; preds = %137
  %139 = load double, ptr %27, align 8, !tbaa !13
  %140 = fcmp ugt double %128, %139
  br i1 %140, label %.thread421, label %.thread

.thread:                                          ; preds = %137, %138
  %141 = fcmp ugt double %.1365, %52
  br i1 %141, label %142, label %.thread421

142:                                              ; preds = %.thread
  %143 = load double, ptr %27, align 8, !tbaa !13
  %144 = fcmp ogt double %128, %143
  br i1 %144, label %148, label %145

145:                                              ; preds = %142
  %146 = fcmp ogt double %128, %.0395503
  br i1 %146, label %147, label %.thread421

147:                                              ; preds = %145
  br label %.thread421

148:                                              ; preds = %142
  %.not406 = icmp eq i64 %.0357510, 2
  br i1 %.not406, label %149, label %.thread421

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

.thread421:                                       ; preds = %137, %145, %147, %.thread, %138, %148, %149
  %.2397 = phi double [ %.0395503, %148 ], [ %.0395503, %149 ], [ %.0395503, %138 ], [ %.0395503, %.thread ], [ %.0395503, %145 ], [ %128, %147 ], [ %.0395503, %137 ]
  %.3383 = phi i64 [ 1, %148 ], [ %.1381, %149 ], [ %.1381, %138 ], [ %.1381, %.thread ], [ %.1381, %145 ], [ %.1381, %147 ], [ %.1381, %137 ]
  %.1376 = phi double [ %.0375505, %148 ], [ %.1365, %149 ], [ %.0375505, %138 ], [ %.1365, %.thread ], [ %.0375505, %145 ], [ %.0375505, %147 ], [ %.0375505, %137 ]
  %.3350 = phi i64 [ 1, %148 ], [ 3, %149 ], [ 3, %138 ], [ 2, %.thread ], [ 1, %145 ], [ 1, %147 ], [ %.0347511, %137 ]
  switch i64 %.0512, label %.thread439 [
    i64 0, label %150
    i64 3, label %153
    i64 1, label %.thread437
  ]

150:                                              ; preds = %.thread421
  %151 = load double, ptr %28, align 8, !tbaa !13
  %152 = fcmp ugt double %.1361.lcssa568, %151
  br i1 %152, label %.thread439, label %.thread437

153:                                              ; preds = %.thread421
  %154 = load double, ptr %27, align 8, !tbaa !13
  %155 = fcmp ugt double %129, %154
  br i1 %155, label %.thread439, label %.thread437

.thread437:                                       ; preds = %.thread421, %150, %153
  %156 = fcmp ugt double %.1361.lcssa568, %52
  br i1 %156, label %157, label %.thread439

157:                                              ; preds = %.thread437
  %158 = load double, ptr %28, align 8, !tbaa !13
  %159 = fcmp ogt double %.1361.lcssa568, %158
  br i1 %159, label %.thread439, label %160

160:                                              ; preds = %157
  %161 = load double, ptr %27, align 8, !tbaa !13
  %162 = fcmp ogt double %129, %161
  br i1 %162, label %166, label %163

163:                                              ; preds = %160
  %164 = fcmp ogt double %129, %.0391504
  br i1 %164, label %165, label %.thread439

165:                                              ; preds = %163
  br label %.thread439

166:                                              ; preds = %160
  %.not407 = icmp eq i64 %.0357510, 2
  br i1 %.not407, label %167, label %.thread439

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

.thread439:                                       ; preds = %.thread421, %150, %157, %163, %165, %.thread437, %153, %166, %167
  %.2393 = phi double [ %.0391504, %166 ], [ %.0391504, %167 ], [ %.0391504, %153 ], [ %.0391504, %.thread437 ], [ 0.000000e+00, %157 ], [ %.0391504, %163 ], [ %129, %165 ], [ %.0391504, %150 ], [ %.0391504, %.thread421 ]
  %.5385 = phi i64 [ 1, %166 ], [ %.3383, %167 ], [ %.3383, %153 ], [ %.3383, %.thread437 ], [ %.3383, %157 ], [ %.3383, %163 ], [ %.3383, %165 ], [ %.3383, %150 ], [ %.3383, %.thread421 ]
  %.2372 = phi double [ %.0370506, %166 ], [ %.1361.lcssa568, %167 ], [ %.0370506, %153 ], [ %.1361.lcssa568, %.thread437 ], [ %54, %157 ], [ %.0370506, %163 ], [ %.0370506, %165 ], [ %.0370506, %150 ], [ %.0370506, %.thread421 ]
  %.4 = phi i64 [ 1, %166 ], [ 3, %167 ], [ 3, %153 ], [ 2, %.thread437 ], [ 0, %157 ], [ 1, %163 ], [ 1, %165 ], [ 0, %150 ], [ %.0512, %.thread421 ]
  %.not408 = icmp eq i64 %.3350, 1
  br i1 %.not408, label %173, label %168

168:                                              ; preds = %.thread439
  %.not409 = icmp ne i64 %130, 0
  %169 = and i64 %.4, -2
  %or.cond3 = icmp eq i64 %169, 2
  %or.cond419 = or i1 %.not409, %or.cond3
  br i1 %or.cond419, label %._crit_edge515.thread596, label %170

170:                                              ; preds = %168
  %171 = icmp eq i64 %.4, 0
  %172 = icmp ugt i64 %.0368508, 1
  %or.cond5 = and i1 %172, %171
  br i1 %or.cond5, label %.thread455, label %173

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

174:                                              ; preds = %173
  %175 = add nsw i64 %.0357510, 1
  %176 = load i64, ptr %2, align 8, !tbaa !5
  %.not411486 = icmp slt i64 %176, 1
  br i1 %.not411486, label %.loopexit, label %.lr.ph489.preheader

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

.loopexit:                                        ; preds = %.lr.ph489.preheader, %174, %173
  %.1358 = phi i64 [ %.0357510, %173 ], [ %175, %174 ], [ %175, %.lr.ph489.preheader ]
  %178 = icmp slt i64 %.1358, 2
  br i1 %178, label %179, label %181

179:                                              ; preds = %.loopexit
  %180 = call i32 @f2c_zaxpy(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 %183

181:                                              ; preds = %.loopexit
  %182 = call i32 @zla_wwaddw__(ptr noundef nonnull %2, ptr noundef %gep493, ptr noundef %24, ptr noundef %23) #4
  br label %183

183:                                              ; preds = %179, %181
  %184 = add nuw i64 %.0368508, 1
  %exitcond560.not = icmp eq i64 %.0368508, %64
  br i1 %exitcond560.not, label %._crit_edge515, label %67, !llvm.loop !16

._crit_edge515:                                   ; preds = %183
  %185 = icmp eq i64 %.3350, 1
  br i1 %185, label %186, label %._crit_edge515.thread596

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

._crit_edge515.thread596:                         ; preds = %168, %._crit_edge515, %186
  %187 = phi double [ %.1376, %._crit_edge515 ], [ %.1365, %186 ], [ %.1376, %168 ]
  %188 = icmp eq i64 %.4, 1
  br i1 %188, label %189, label %.thread455

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

.thread455:                                       ; preds = %170, %63, %._crit_edge515.thread596, %189
  %.3378468 = phi double [ %187, %189 ], [ %187, %._crit_edge515.thread596 ], [ %54, %63 ], [ %.1376, %170 ]
  %.3394467 = phi double [ %.2393, %189 ], [ %.2393, %._crit_edge515.thread596 ], [ 0.000000e+00, %63 ], [ %.2393, %170 ]
  %.3398466 = phi double [ %.2397, %189 ], [ %.2397, %._crit_edge515.thread596 ], [ 0.000000e+00, %63 ], [ %.2397, %170 ]
  %190 = phi double [ %.1361.lcssa568, %189 ], [ %.2372, %._crit_edge515.thread596 ], [ %54, %63 ], [ %.2372, %170 ]
  %191 = load i64, ptr %18, align 8, !tbaa !5
  %192 = icmp sgt i64 %191, 0
  br i1 %192, label %193, label %.thread469

193:                                              ; preds = %.thread455
  %194 = fsub double 1.000000e+00, %.3398466
  %195 = fdiv double %.3378468, %194
  %gep548 = getelementptr double, ptr %invariant.gep547, i64 %.0386544
  store double %195, ptr %gep548, align 8, !tbaa !13
  %.not473 = icmp eq i64 %191, 1
  br i1 %.not473, label %.thread469, label %196

196:                                              ; preds = %193
  %197 = fsub double 1.000000e+00, %.3394467
  %198 = fdiv double %190, %197
  %gep550 = getelementptr double, ptr %invariant.gep549, i64 %.0386544
  store double %198, ptr %gep550, align 8, !tbaa !13
  br label %.thread469

.thread469:                                       ; preds = %.thread455, %196, %193
  %199 = mul nsw i64 %.0386544, %40
  %gep540 = getelementptr %struct.doublecomplex, ptr %invariant.gep539, i64 %199
  %200 = call i32 @f2c_zcopy(ptr noundef nonnull %2, ptr noundef %gep540, ptr noundef nonnull @c__1, ptr noundef %21, ptr noundef nonnull @c__1) #4
  %201 = mul nsw i64 %.0386544, %43
  %gep542 = getelementptr %struct.doublecomplex, ptr %invariant.gep541, i64 %201
  %202 = call i32 @f2c_zgbmv(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
  %203 = load i64, ptr %2, align 8, !tbaa !5
  %invariant.gep533 = getelementptr %struct.doublecomplex, ptr %42, i64 %199
  %.not413535 = icmp slt i64 %203, 1
  br i1 %.not413535, label %._crit_edge538, label %.lr.ph537

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

._crit_edge538:                                   ; preds = %.lr.ph537, %.thread469
  %215 = call i32 @zla_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
  %216 = getelementptr inbounds double, ptr %46, i64 %.0386544
  %217 = call i32 @zla_lin_berr__(ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef %21, ptr noundef %22, ptr noundef nonnull %216) #4
  %218 = add nuw i64 %.0386544, 1
  %exitcond562.not = icmp eq i64 %.0386544, %62
  br i1 %exitcond562.not, label %.loopexit474, label %63, !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 @dlamch_(ptr noundef) local_unnamed_addr #2

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

declare i32 @f2c_zgbmv(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_zgbmv_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_zgbmv2_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 @zgbtrs_(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 @d_imag(ptr noundef) local_unnamed_addr #2

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

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

declare i32 @zla_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 @zla_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 8}
!12 = !{!"double", !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