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

; 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 [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [13 x i8], align 1
@c__1 = external hidden global i64, align 8
@c_b1 = external hidden global %struct.doublecomplex, align 8

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

126:                                              ; preds = %19
  %127 = load ptr, ptr %21, align 8, !tbaa !5
  %128 = call i64 @lsame_(ptr noundef %127, ptr noundef @.str.1)
  %129 = icmp ne i64 %128, 0
  br i1 %129, label %136, label %130

130:                                              ; preds = %126
  %131 = load ptr, ptr %21, align 8, !tbaa !5
  %132 = call i64 @lsame_(ptr noundef %131, ptr noundef @.str.2)
  %133 = icmp ne i64 %132, 0
  br i1 %133, label %136, label %134

134:                                              ; preds = %130
  %135 = load ptr, ptr %39, align 8, !tbaa !5
  store i64 -1, ptr %135, align 8, !tbaa !9
  br label %223

136:                                              ; preds = %130, %126, %19
  %137 = load ptr, ptr %22, align 8, !tbaa !5
  %138 = load i64, ptr %137, align 8, !tbaa !9
  %139 = icmp slt i64 %138, 0
  br i1 %139, label %140, label %142

140:                                              ; preds = %136
  %141 = load ptr, ptr %39, align 8, !tbaa !5
  store i64 -2, ptr %141, align 8, !tbaa !9
  br label %222

142:                                              ; preds = %136
  %143 = load ptr, ptr %23, align 8, !tbaa !5
  %144 = load i64, ptr %143, align 8, !tbaa !9
  %145 = icmp slt i64 %144, 0
  br i1 %145, label %146, label %148

146:                                              ; preds = %142
  %147 = load ptr, ptr %39, align 8, !tbaa !5
  store i64 -3, ptr %147, align 8, !tbaa !9
  br label %221

148:                                              ; preds = %142
  %149 = load ptr, ptr %24, align 8, !tbaa !5
  %150 = load i64, ptr %149, align 8, !tbaa !9
  %151 = icmp slt i64 %150, 0
  br i1 %151, label %152, label %154

152:                                              ; preds = %148
  %153 = load ptr, ptr %39, align 8, !tbaa !5
  store i64 -4, ptr %153, align 8, !tbaa !9
  br label %220

154:                                              ; preds = %148
  %155 = load ptr, ptr %25, align 8, !tbaa !5
  %156 = load i64, ptr %155, align 8, !tbaa !9
  %157 = icmp slt i64 %156, 0
  br i1 %157, label %158, label %160

158:                                              ; preds = %154
  %159 = load ptr, ptr %39, align 8, !tbaa !5
  store i64 -5, ptr %159, align 8, !tbaa !9
  br label %219

160:                                              ; preds = %154
  %161 = load ptr, ptr %27, align 8, !tbaa !5
  %162 = load i64, ptr %161, align 8, !tbaa !9
  %163 = load ptr, ptr %23, align 8, !tbaa !5
  %164 = load i64, ptr %163, align 8, !tbaa !9
  %165 = load ptr, ptr %24, align 8, !tbaa !5
  %166 = load i64, ptr %165, align 8, !tbaa !9
  %167 = add nsw i64 %164, %166
  %168 = add nsw i64 %167, 1
  %169 = icmp slt i64 %162, %168
  br i1 %169, label %170, label %172

170:                                              ; preds = %160
  %171 = load ptr, ptr %39, align 8, !tbaa !5
  store i64 -7, ptr %171, align 8, !tbaa !9
  br label %218

172:                                              ; preds = %160
  %173 = load ptr, ptr %29, align 8, !tbaa !5
  %174 = load i64, ptr %173, align 8, !tbaa !9
  %175 = load ptr, ptr %23, align 8, !tbaa !5
  %176 = load i64, ptr %175, align 8, !tbaa !9
  %177 = shl i64 %176, 1
  %178 = load ptr, ptr %24, align 8, !tbaa !5
  %179 = load i64, ptr %178, align 8, !tbaa !9
  %180 = add nsw i64 %177, %179
  %181 = add nsw i64 %180, 1
  %182 = icmp slt i64 %174, %181
  br i1 %182, label %183, label %185

183:                                              ; preds = %172
  %184 = load ptr, ptr %39, align 8, !tbaa !5
  store i64 -9, ptr %184, align 8, !tbaa !9
  br label %217

185:                                              ; preds = %172
  %186 = load ptr, ptr %32, align 8, !tbaa !5
  %187 = load i64, ptr %186, align 8, !tbaa !9
  %188 = load ptr, ptr %22, align 8, !tbaa !5
  %189 = load i64, ptr %188, align 8, !tbaa !9
  %190 = icmp sge i64 1, %189
  br i1 %190, label %191, label %192

191:                                              ; preds = %185
  br label %195

192:                                              ; preds = %185
  %193 = load ptr, ptr %22, align 8, !tbaa !5
  %194 = load i64, ptr %193, align 8, !tbaa !9
  br label %195

195:                                              ; preds = %192, %191
  %196 = phi i64 [ 1, %191 ], [ %194, %192 ]
  %197 = icmp slt i64 %187, %196
  br i1 %197, label %198, label %200

198:                                              ; preds = %195
  %199 = load ptr, ptr %39, align 8, !tbaa !5
  store i64 -12, ptr %199, align 8, !tbaa !9
  br label %216

200:                                              ; preds = %195
  %201 = load ptr, ptr %34, align 8, !tbaa !5
  %202 = load i64, ptr %201, align 8, !tbaa !9
  %203 = load ptr, ptr %22, align 8, !tbaa !5
  %204 = load i64, ptr %203, align 8, !tbaa !9
  %205 = icmp sge i64 1, %204
  br i1 %205, label %206, label %207

206:                                              ; preds = %200
  br label %210

207:                                              ; preds = %200
  %208 = load ptr, ptr %22, align 8, !tbaa !5
  %209 = load i64, ptr %208, align 8, !tbaa !9
  br label %210

210:                                              ; preds = %207, %206
  %211 = phi i64 [ 1, %206 ], [ %209, %207 ]
  %212 = icmp slt i64 %202, %211
  br i1 %212, label %213, label %215

213:                                              ; preds = %210
  %214 = load ptr, ptr %39, align 8, !tbaa !5
  store i64 -14, ptr %214, align 8, !tbaa !9
  br label %215

215:                                              ; preds = %213, %210
  br label %216

216:                                              ; preds = %215, %198
  br label %217

217:                                              ; preds = %216, %183
  br label %218

218:                                              ; preds = %217, %170
  br label %219

219:                                              ; preds = %218, %158
  br label %220

220:                                              ; preds = %219, %152
  br label %221

221:                                              ; preds = %220, %146
  br label %222

222:                                              ; preds = %221, %140
  br label %223

223:                                              ; preds = %222, %134
  %224 = load ptr, ptr %39, align 8, !tbaa !5
  %225 = load i64, ptr %224, align 8, !tbaa !9
  %226 = icmp ne i64 %225, 0
  br i1 %226, label %227, label %232

227:                                              ; preds = %223
  %228 = load ptr, ptr %39, align 8, !tbaa !5
  %229 = load i64, ptr %228, align 8, !tbaa !9
  %230 = sub nsw i64 0, %229
  store i64 %230, ptr %48, align 8, !tbaa !9
  %231 = call i32 @xerbla_(ptr noundef @.str.3, ptr noundef %48)
  store i32 0, ptr %20, align 4
  store i32 1, ptr %78, align 4
  br label %1156

232:                                              ; preds = %223
  %233 = load ptr, ptr %22, align 8, !tbaa !5
  %234 = load i64, ptr %233, align 8, !tbaa !9
  %235 = icmp eq i64 %234, 0
  br i1 %235, label %240, label %236

236:                                              ; preds = %232
  %237 = load ptr, ptr %25, align 8, !tbaa !5
  %238 = load i64, ptr %237, align 8, !tbaa !9
  %239 = icmp eq i64 %238, 0
  br i1 %239, label %240, label %258

240:                                              ; preds = %236, %232
  %241 = load ptr, ptr %25, align 8, !tbaa !5
  %242 = load i64, ptr %241, align 8, !tbaa !9
  store i64 %242, ptr %48, align 8, !tbaa !9
  store i64 1, ptr %61, align 8, !tbaa !9
  br label %243

243:                                              ; preds = %254, %240
  %244 = load i64, ptr %61, align 8, !tbaa !9
  %245 = load i64, ptr %48, align 8, !tbaa !9
  %246 = icmp sle i64 %244, %245
  br i1 %246, label %247, label %257

247:                                              ; preds = %243
  %248 = load ptr, ptr %35, align 8, !tbaa !5
  %249 = load i64, ptr %61, align 8, !tbaa !9
  %250 = getelementptr inbounds double, ptr %248, i64 %249
  store double 0.000000e+00, ptr %250, align 8, !tbaa !11
  %251 = load ptr, ptr %36, align 8, !tbaa !5
  %252 = load i64, ptr %61, align 8, !tbaa !9
  %253 = getelementptr inbounds double, ptr %251, i64 %252
  store double 0.000000e+00, ptr %253, align 8, !tbaa !11
  br label %254

254:                                              ; preds = %247
  %255 = load i64, ptr %61, align 8, !tbaa !9
  %256 = add nsw i64 %255, 1
  store i64 %256, ptr %61, align 8, !tbaa !9
  br label %243, !llvm.loop !13

257:                                              ; preds = %243
  store i32 0, ptr %20, align 4
  store i32 1, ptr %78, align 4
  br label %1156

258:                                              ; preds = %236
  %259 = load i64, ptr %74, align 8, !tbaa !9
  %260 = icmp ne i64 %259, 0
  br i1 %260, label %261, label %264

261:                                              ; preds = %258
  %262 = getelementptr inbounds [1 x i8], ptr %75, i64 0, i64 0
  store i8 78, ptr %262, align 1, !tbaa !15
  %263 = getelementptr inbounds [1 x i8], ptr %76, i64 0, i64 0
  store i8 67, ptr %263, align 1, !tbaa !15
  br label %267

264:                                              ; preds = %258
  %265 = getelementptr inbounds [1 x i8], ptr %75, i64 0, i64 0
  store i8 67, ptr %265, align 1, !tbaa !15
  %266 = getelementptr inbounds [1 x i8], ptr %76, i64 0, i64 0
  store i8 78, ptr %266, align 1, !tbaa !15
  br label %267

267:                                              ; preds = %264, %261
  %268 = load ptr, ptr %23, align 8, !tbaa !5
  %269 = load i64, ptr %268, align 8, !tbaa !9
  %270 = load ptr, ptr %24, align 8, !tbaa !5
  %271 = load i64, ptr %270, align 8, !tbaa !9
  %272 = add nsw i64 %269, %271
  %273 = add nsw i64 %272, 2
  store i64 %273, ptr %48, align 8, !tbaa !9
  %274 = load ptr, ptr %22, align 8, !tbaa !5
  %275 = load i64, ptr %274, align 8, !tbaa !9
  %276 = add nsw i64 %275, 1
  store i64 %276, ptr %49, align 8, !tbaa !9
  %277 = load i64, ptr %48, align 8, !tbaa !9
  %278 = load i64, ptr %49, align 8, !tbaa !9
  %279 = icmp sle i64 %277, %278
  br i1 %279, label %280, label %282

280:                                              ; preds = %267
  %281 = load i64, ptr %48, align 8, !tbaa !9
  br label %284

282:                                              ; preds = %267
  %283 = load i64, ptr %49, align 8, !tbaa !9
  br label %284

284:                                              ; preds = %282, %280
  %285 = phi i64 [ %281, %280 ], [ %283, %282 ]
  store i64 %285, ptr %66, align 8, !tbaa !9
  %286 = call double @dlamch_(ptr noundef @.str.4)
  store double %286, ptr %67, align 8, !tbaa !11
  %287 = call double @dlamch_(ptr noundef @.str.5)
  store double %287, ptr %73, align 8, !tbaa !11
  %288 = load i64, ptr %66, align 8, !tbaa !9
  %289 = sitofp i64 %288 to double
  %290 = load double, ptr %73, align 8, !tbaa !11
  %291 = fmul double %289, %290
  store double %291, ptr %69, align 8, !tbaa !11
  %292 = load double, ptr %69, align 8, !tbaa !11
  %293 = load double, ptr %67, align 8, !tbaa !11
  %294 = fdiv double %292, %293
  store double %294, ptr %70, align 8, !tbaa !11
  %295 = load ptr, ptr %25, align 8, !tbaa !5
  %296 = load i64, ptr %295, align 8, !tbaa !9
  store i64 %296, ptr %48, align 8, !tbaa !9
  store i64 1, ptr %61, align 8, !tbaa !9
  br label %297

297:                                              ; preds = %1152, %284
  %298 = load i64, ptr %61, align 8, !tbaa !9
  %299 = load i64, ptr %48, align 8, !tbaa !9
  %300 = icmp sle i64 %298, %299
  br i1 %300, label %301, label %1155

301:                                              ; preds = %297
  store i64 1, ptr %72, align 8, !tbaa !9
  store double 3.000000e+00, ptr %77, align 8, !tbaa !11
  br label %302

302:                                              ; preds = %798, %301
  %303 = load ptr, ptr %22, align 8, !tbaa !5
  %304 = load ptr, ptr %31, align 8, !tbaa !5
  %305 = load i64, ptr %61, align 8, !tbaa !9
  %306 = load i64, ptr %44, align 8, !tbaa !9
  %307 = mul nsw i64 %305, %306
  %308 = add nsw i64 %307, 1
  %309 = getelementptr inbounds %struct.doublecomplex, ptr %304, i64 %308
  %310 = load ptr, ptr %37, align 8, !tbaa !5
  %311 = getelementptr inbounds %struct.doublecomplex, ptr %310, i64 1
  %312 = call i32 @f2c_zcopy(ptr noundef %303, ptr noundef %309, ptr noundef @c__1, ptr noundef %311, ptr noundef @c__1)
  %313 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  store double -1.000000e+00, ptr %313, align 8, !tbaa !16
  %314 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  store double -0.000000e+00, ptr %314, align 8, !tbaa !18
  %315 = load ptr, ptr %21, align 8, !tbaa !5
  %316 = load ptr, ptr %22, align 8, !tbaa !5
  %317 = load ptr, ptr %22, align 8, !tbaa !5
  %318 = load ptr, ptr %23, align 8, !tbaa !5
  %319 = load ptr, ptr %24, align 8, !tbaa !5
  %320 = load ptr, ptr %26, align 8, !tbaa !5
  %321 = load i64, ptr %41, align 8, !tbaa !9
  %322 = getelementptr inbounds %struct.doublecomplex, ptr %320, i64 %321
  %323 = load ptr, ptr %27, align 8, !tbaa !5
  %324 = load ptr, ptr %33, align 8, !tbaa !5
  %325 = load i64, ptr %61, align 8, !tbaa !9
  %326 = load i64, ptr %46, align 8, !tbaa !9
  %327 = mul nsw i64 %325, %326
  %328 = add nsw i64 %327, 1
  %329 = getelementptr inbounds %struct.doublecomplex, ptr %324, i64 %328
  %330 = load ptr, ptr %37, align 8, !tbaa !5
  %331 = getelementptr inbounds %struct.doublecomplex, ptr %330, i64 1
  %332 = call i32 @f2c_zgbmv(ptr noundef %315, ptr noundef %316, ptr noundef %317, ptr noundef %318, ptr noundef %319, ptr noundef %59, ptr noundef %322, ptr noundef %323, ptr noundef %329, ptr noundef @c__1, ptr noundef @c_b1, ptr noundef %331, ptr noundef @c__1)
  %333 = load ptr, ptr %22, align 8, !tbaa !5
  %334 = load i64, ptr %333, align 8, !tbaa !9
  store i64 %334, ptr %49, align 8, !tbaa !9
  store i64 1, ptr %60, align 8, !tbaa !9
  br label %335

335:                                              ; preds = %380, %302
  %336 = load i64, ptr %60, align 8, !tbaa !9
  %337 = load i64, ptr %49, align 8, !tbaa !9
  %338 = icmp sle i64 %336, %337
  br i1 %338, label %339, label %383

339:                                              ; preds = %335
  %340 = load i64, ptr %60, align 8, !tbaa !9
  %341 = load i64, ptr %61, align 8, !tbaa !9
  %342 = load i64, ptr %44, align 8, !tbaa !9
  %343 = mul nsw i64 %341, %342
  %344 = add nsw i64 %340, %343
  store i64 %344, ptr %50, align 8, !tbaa !9
  %345 = load ptr, ptr %31, align 8, !tbaa !5
  %346 = load i64, ptr %50, align 8, !tbaa !9
  %347 = getelementptr inbounds %struct.doublecomplex, ptr %345, i64 %346
  %348 = getelementptr inbounds %struct.doublecomplex, ptr %347, i32 0, i32 0
  %349 = load double, ptr %348, align 8, !tbaa !16
  store double %349, ptr %55, align 8, !tbaa !11
  %350 = load double, ptr %55, align 8, !tbaa !11
  %351 = fcmp oge double %350, 0.000000e+00
  br i1 %351, label %352, label %354

352:                                              ; preds = %339
  %353 = load double, ptr %55, align 8, !tbaa !11
  br label %357

354:                                              ; preds = %339
  %355 = load double, ptr %55, align 8, !tbaa !11
  %356 = fneg double %355
  br label %357

357:                                              ; preds = %354, %352
  %358 = phi double [ %353, %352 ], [ %356, %354 ]
  %359 = load ptr, ptr %31, align 8, !tbaa !5
  %360 = load i64, ptr %60, align 8, !tbaa !9
  %361 = load i64, ptr %61, align 8, !tbaa !9
  %362 = load i64, ptr %44, align 8, !tbaa !9
  %363 = mul nsw i64 %361, %362
  %364 = add nsw i64 %360, %363
  %365 = getelementptr inbounds %struct.doublecomplex, ptr %359, i64 %364
  %366 = call double @d_imag(ptr noundef %365)
  store double %366, ptr %56, align 8, !tbaa !11
  %367 = load double, ptr %56, align 8, !tbaa !11
  %368 = fcmp oge double %367, 0.000000e+00
  br i1 %368, label %369, label %371

369:                                              ; preds = %357
  %370 = load double, ptr %56, align 8, !tbaa !11
  br label %374

371:                                              ; preds = %357
  %372 = load double, ptr %56, align 8, !tbaa !11
  %373 = fneg double %372
  br label %374

374:                                              ; preds = %371, %369
  %375 = phi double [ %370, %369 ], [ %373, %371 ]
  %376 = fadd double %358, %375
  %377 = load ptr, ptr %38, align 8, !tbaa !5
  %378 = load i64, ptr %60, align 8, !tbaa !9
  %379 = getelementptr inbounds double, ptr %377, i64 %378
  store double %376, ptr %379, align 8, !tbaa !11
  br label %380

380:                                              ; preds = %374
  %381 = load i64, ptr %60, align 8, !tbaa !9
  %382 = add nsw i64 %381, 1
  store i64 %382, ptr %60, align 8, !tbaa !9
  br label %335, !llvm.loop !19

383:                                              ; preds = %335
  %384 = load i64, ptr %74, align 8, !tbaa !9
  %385 = icmp ne i64 %384, 0
  br i1 %385, label %386, label %524

386:                                              ; preds = %383
  %387 = load ptr, ptr %22, align 8, !tbaa !5
  %388 = load i64, ptr %387, align 8, !tbaa !9
  store i64 %388, ptr %49, align 8, !tbaa !9
  store i64 1, ptr %62, align 8, !tbaa !9
  br label %389

389:                                              ; preds = %520, %386
  %390 = load i64, ptr %62, align 8, !tbaa !9
  %391 = load i64, ptr %49, align 8, !tbaa !9
  %392 = icmp sle i64 %390, %391
  br i1 %392, label %393, label %523

393:                                              ; preds = %389
  %394 = load ptr, ptr %24, align 8, !tbaa !5
  %395 = load i64, ptr %394, align 8, !tbaa !9
  %396 = add nsw i64 %395, 1
  %397 = load i64, ptr %62, align 8, !tbaa !9
  %398 = sub nsw i64 %396, %397
  store i64 %398, ptr %64, align 8, !tbaa !9
  %399 = load i64, ptr %62, align 8, !tbaa !9
  %400 = load i64, ptr %61, align 8, !tbaa !9
  %401 = load i64, ptr %46, align 8, !tbaa !9
  %402 = mul nsw i64 %400, %401
  %403 = add nsw i64 %399, %402
  store i64 %403, ptr %50, align 8, !tbaa !9
  %404 = load ptr, ptr %33, align 8, !tbaa !5
  %405 = load i64, ptr %50, align 8, !tbaa !9
  %406 = getelementptr inbounds %struct.doublecomplex, ptr %404, i64 %405
  %407 = getelementptr inbounds %struct.doublecomplex, ptr %406, i32 0, i32 0
  %408 = load double, ptr %407, align 8, !tbaa !16
  store double %408, ptr %55, align 8, !tbaa !11
  %409 = load double, ptr %55, align 8, !tbaa !11
  %410 = fcmp oge double %409, 0.000000e+00
  br i1 %410, label %411, label %413

411:                                              ; preds = %393
  %412 = load double, ptr %55, align 8, !tbaa !11
  br label %416

413:                                              ; preds = %393
  %414 = load double, ptr %55, align 8, !tbaa !11
  %415 = fneg double %414
  br label %416

416:                                              ; preds = %413, %411
  %417 = phi double [ %412, %411 ], [ %415, %413 ]
  %418 = load ptr, ptr %33, align 8, !tbaa !5
  %419 = load i64, ptr %62, align 8, !tbaa !9
  %420 = load i64, ptr %61, align 8, !tbaa !9
  %421 = load i64, ptr %46, align 8, !tbaa !9
  %422 = mul nsw i64 %420, %421
  %423 = add nsw i64 %419, %422
  %424 = getelementptr inbounds %struct.doublecomplex, ptr %418, i64 %423
  %425 = call double @d_imag(ptr noundef %424)
  store double %425, ptr %56, align 8, !tbaa !11
  %426 = load double, ptr %56, align 8, !tbaa !11
  %427 = fcmp oge double %426, 0.000000e+00
  br i1 %427, label %428, label %430

428:                                              ; preds = %416
  %429 = load double, ptr %56, align 8, !tbaa !11
  br label %433

430:                                              ; preds = %416
  %431 = load double, ptr %56, align 8, !tbaa !11
  %432 = fneg double %431
  br label %433

433:                                              ; preds = %430, %428
  %434 = phi double [ %429, %428 ], [ %432, %430 ]
  %435 = fadd double %417, %434
  store double %435, ptr %65, align 8, !tbaa !11
  store i64 1, ptr %50, align 8, !tbaa !9
  %436 = load i64, ptr %62, align 8, !tbaa !9
  %437 = load ptr, ptr %24, align 8, !tbaa !5
  %438 = load i64, ptr %437, align 8, !tbaa !9
  %439 = sub nsw i64 %436, %438
  store i64 %439, ptr %51, align 8, !tbaa !9
  %440 = load ptr, ptr %22, align 8, !tbaa !5
  %441 = load i64, ptr %440, align 8, !tbaa !9
  store i64 %441, ptr %53, align 8, !tbaa !9
  %442 = load i64, ptr %62, align 8, !tbaa !9
  %443 = load ptr, ptr %23, align 8, !tbaa !5
  %444 = load i64, ptr %443, align 8, !tbaa !9
  %445 = add nsw i64 %442, %444
  store i64 %445, ptr %54, align 8, !tbaa !9
  %446 = load i64, ptr %53, align 8, !tbaa !9
  %447 = load i64, ptr %54, align 8, !tbaa !9
  %448 = icmp sle i64 %446, %447
  br i1 %448, label %449, label %451

449:                                              ; preds = %433
  %450 = load i64, ptr %53, align 8, !tbaa !9
  br label %453

451:                                              ; preds = %433
  %452 = load i64, ptr %54, align 8, !tbaa !9
  br label %453

453:                                              ; preds = %451, %449
  %454 = phi i64 [ %450, %449 ], [ %452, %451 ]
  store i64 %454, ptr %52, align 8, !tbaa !9
  %455 = load i64, ptr %50, align 8, !tbaa !9
  %456 = load i64, ptr %51, align 8, !tbaa !9
  %457 = icmp sge i64 %455, %456
  br i1 %457, label %458, label %460

458:                                              ; preds = %453
  %459 = load i64, ptr %50, align 8, !tbaa !9
  br label %462

460:                                              ; preds = %453
  %461 = load i64, ptr %51, align 8, !tbaa !9
  br label %462

462:                                              ; preds = %460, %458
  %463 = phi i64 [ %459, %458 ], [ %461, %460 ]
  store i64 %463, ptr %60, align 8, !tbaa !9
  br label %464

464:                                              ; preds = %516, %462
  %465 = load i64, ptr %60, align 8, !tbaa !9
  %466 = load i64, ptr %52, align 8, !tbaa !9
  %467 = icmp sle i64 %465, %466
  br i1 %467, label %468, label %519

468:                                              ; preds = %464
  %469 = load i64, ptr %64, align 8, !tbaa !9
  %470 = load i64, ptr %60, align 8, !tbaa !9
  %471 = add nsw i64 %469, %470
  %472 = load i64, ptr %62, align 8, !tbaa !9
  %473 = load i64, ptr %40, align 8, !tbaa !9
  %474 = mul nsw i64 %472, %473
  %475 = add nsw i64 %471, %474
  store i64 %475, ptr %50, align 8, !tbaa !9
  %476 = load ptr, ptr %26, align 8, !tbaa !5
  %477 = load i64, ptr %50, align 8, !tbaa !9
  %478 = getelementptr inbounds %struct.doublecomplex, ptr %476, i64 %477
  %479 = getelementptr inbounds %struct.doublecomplex, ptr %478, i32 0, i32 0
  %480 = load double, ptr %479, align 8, !tbaa !16
  store double %480, ptr %55, align 8, !tbaa !11
  %481 = load double, ptr %55, align 8, !tbaa !11
  %482 = fcmp oge double %481, 0.000000e+00
  br i1 %482, label %483, label %485

483:                                              ; preds = %468
  %484 = load double, ptr %55, align 8, !tbaa !11
  br label %488

485:                                              ; preds = %468
  %486 = load double, ptr %55, align 8, !tbaa !11
  %487 = fneg double %486
  br label %488

488:                                              ; preds = %485, %483
  %489 = phi double [ %484, %483 ], [ %487, %485 ]
  %490 = load ptr, ptr %26, align 8, !tbaa !5
  %491 = load i64, ptr %64, align 8, !tbaa !9
  %492 = load i64, ptr %60, align 8, !tbaa !9
  %493 = add nsw i64 %491, %492
  %494 = load i64, ptr %62, align 8, !tbaa !9
  %495 = load i64, ptr %40, align 8, !tbaa !9
  %496 = mul nsw i64 %494, %495
  %497 = add nsw i64 %493, %496
  %498 = getelementptr inbounds %struct.doublecomplex, ptr %490, i64 %497
  %499 = call double @d_imag(ptr noundef %498)
  store double %499, ptr %56, align 8, !tbaa !11
  %500 = load double, ptr %56, align 8, !tbaa !11
  %501 = fcmp oge double %500, 0.000000e+00
  br i1 %501, label %502, label %504

502:                                              ; preds = %488
  %503 = load double, ptr %56, align 8, !tbaa !11
  br label %507

504:                                              ; preds = %488
  %505 = load double, ptr %56, align 8, !tbaa !11
  %506 = fneg double %505
  br label %507

507:                                              ; preds = %504, %502
  %508 = phi double [ %503, %502 ], [ %506, %504 ]
  %509 = fadd double %489, %508
  %510 = load double, ptr %65, align 8, !tbaa !11
  %511 = load ptr, ptr %38, align 8, !tbaa !5
  %512 = load i64, ptr %60, align 8, !tbaa !9
  %513 = getelementptr inbounds double, ptr %511, i64 %512
  %514 = load double, ptr %513, align 8, !tbaa !11
  %515 = call double @llvm.fmuladd.f64(double %509, double %510, double %514)
  store double %515, ptr %513, align 8, !tbaa !11
  br label %516

516:                                              ; preds = %507
  %517 = load i64, ptr %60, align 8, !tbaa !9
  %518 = add nsw i64 %517, 1
  store i64 %518, ptr %60, align 8, !tbaa !9
  br label %464, !llvm.loop !20

519:                                              ; preds = %464
  br label %520

520:                                              ; preds = %519
  %521 = load i64, ptr %62, align 8, !tbaa !9
  %522 = add nsw i64 %521, 1
  store i64 %522, ptr %62, align 8, !tbaa !9
  br label %389, !llvm.loop !21

523:                                              ; preds = %389
  br label %664

524:                                              ; preds = %383
  %525 = load ptr, ptr %22, align 8, !tbaa !5
  %526 = load i64, ptr %525, align 8, !tbaa !9
  store i64 %526, ptr %49, align 8, !tbaa !9
  store i64 1, ptr %62, align 8, !tbaa !9
  br label %527

527:                                              ; preds = %660, %524
  %528 = load i64, ptr %62, align 8, !tbaa !9
  %529 = load i64, ptr %49, align 8, !tbaa !9
  %530 = icmp sle i64 %528, %529
  br i1 %530, label %531, label %663

531:                                              ; preds = %527
  store double 0.000000e+00, ptr %63, align 8, !tbaa !11
  %532 = load ptr, ptr %24, align 8, !tbaa !5
  %533 = load i64, ptr %532, align 8, !tbaa !9
  %534 = add nsw i64 %533, 1
  %535 = load i64, ptr %62, align 8, !tbaa !9
  %536 = sub nsw i64 %534, %535
  store i64 %536, ptr %64, align 8, !tbaa !9
  store i64 1, ptr %52, align 8, !tbaa !9
  %537 = load i64, ptr %62, align 8, !tbaa !9
  %538 = load ptr, ptr %24, align 8, !tbaa !5
  %539 = load i64, ptr %538, align 8, !tbaa !9
  %540 = sub nsw i64 %537, %539
  store i64 %540, ptr %50, align 8, !tbaa !9
  %541 = load ptr, ptr %22, align 8, !tbaa !5
  %542 = load i64, ptr %541, align 8, !tbaa !9
  store i64 %542, ptr %53, align 8, !tbaa !9
  %543 = load i64, ptr %62, align 8, !tbaa !9
  %544 = load ptr, ptr %23, align 8, !tbaa !5
  %545 = load i64, ptr %544, align 8, !tbaa !9
  %546 = add nsw i64 %543, %545
  store i64 %546, ptr %54, align 8, !tbaa !9
  %547 = load i64, ptr %53, align 8, !tbaa !9
  %548 = load i64, ptr %54, align 8, !tbaa !9
  %549 = icmp sle i64 %547, %548
  br i1 %549, label %550, label %552

550:                                              ; preds = %531
  %551 = load i64, ptr %53, align 8, !tbaa !9
  br label %554

552:                                              ; preds = %531
  %553 = load i64, ptr %54, align 8, !tbaa !9
  br label %554

554:                                              ; preds = %552, %550
  %555 = phi i64 [ %551, %550 ], [ %553, %552 ]
  store i64 %555, ptr %51, align 8, !tbaa !9
  %556 = load i64, ptr %52, align 8, !tbaa !9
  %557 = load i64, ptr %50, align 8, !tbaa !9
  %558 = icmp sge i64 %556, %557
  br i1 %558, label %559, label %561

559:                                              ; preds = %554
  %560 = load i64, ptr %52, align 8, !tbaa !9
  br label %563

561:                                              ; preds = %554
  %562 = load i64, ptr %50, align 8, !tbaa !9
  br label %563

563:                                              ; preds = %561, %559
  %564 = phi i64 [ %560, %559 ], [ %562, %561 ]
  store i64 %564, ptr %60, align 8, !tbaa !9
  br label %565

565:                                              ; preds = %650, %563
  %566 = load i64, ptr %60, align 8, !tbaa !9
  %567 = load i64, ptr %51, align 8, !tbaa !9
  %568 = icmp sle i64 %566, %567
  br i1 %568, label %569, label %653

569:                                              ; preds = %565
  %570 = load i64, ptr %64, align 8, !tbaa !9
  %571 = load i64, ptr %60, align 8, !tbaa !9
  %572 = add nsw i64 %570, %571
  %573 = load i64, ptr %62, align 8, !tbaa !9
  %574 = load i64, ptr %40, align 8, !tbaa !9
  %575 = mul nsw i64 %573, %574
  %576 = add nsw i64 %572, %575
  store i64 %576, ptr %52, align 8, !tbaa !9
  %577 = load i64, ptr %60, align 8, !tbaa !9
  %578 = load i64, ptr %61, align 8, !tbaa !9
  %579 = load i64, ptr %46, align 8, !tbaa !9
  %580 = mul nsw i64 %578, %579
  %581 = add nsw i64 %577, %580
  store i64 %581, ptr %50, align 8, !tbaa !9
  %582 = load ptr, ptr %26, align 8, !tbaa !5
  %583 = load i64, ptr %52, align 8, !tbaa !9
  %584 = getelementptr inbounds %struct.doublecomplex, ptr %582, i64 %583
  %585 = getelementptr inbounds %struct.doublecomplex, ptr %584, i32 0, i32 0
  %586 = load double, ptr %585, align 8, !tbaa !16
  store double %586, ptr %55, align 8, !tbaa !11
  %587 = load double, ptr %55, align 8, !tbaa !11
  %588 = fcmp oge double %587, 0.000000e+00
  br i1 %588, label %589, label %591

589:                                              ; preds = %569
  %590 = load double, ptr %55, align 8, !tbaa !11
  br label %594

591:                                              ; preds = %569
  %592 = load double, ptr %55, align 8, !tbaa !11
  %593 = fneg double %592
  br label %594

594:                                              ; preds = %591, %589
  %595 = phi double [ %590, %589 ], [ %593, %591 ]
  %596 = load ptr, ptr %26, align 8, !tbaa !5
  %597 = load i64, ptr %64, align 8, !tbaa !9
  %598 = load i64, ptr %60, align 8, !tbaa !9
  %599 = add nsw i64 %597, %598
  %600 = load i64, ptr %62, align 8, !tbaa !9
  %601 = load i64, ptr %40, align 8, !tbaa !9
  %602 = mul nsw i64 %600, %601
  %603 = add nsw i64 %599, %602
  %604 = getelementptr inbounds %struct.doublecomplex, ptr %596, i64 %603
  %605 = call double @d_imag(ptr noundef %604)
  store double %605, ptr %56, align 8, !tbaa !11
  %606 = load double, ptr %56, align 8, !tbaa !11
  %607 = fcmp oge double %606, 0.000000e+00
  br i1 %607, label %608, label %610

608:                                              ; preds = %594
  %609 = load double, ptr %56, align 8, !tbaa !11
  br label %613

610:                                              ; preds = %594
  %611 = load double, ptr %56, align 8, !tbaa !11
  %612 = fneg double %611
  br label %613

613:                                              ; preds = %610, %608
  %614 = phi double [ %609, %608 ], [ %612, %610 ]
  %615 = fadd double %595, %614
  %616 = load ptr, ptr %33, align 8, !tbaa !5
  %617 = load i64, ptr %50, align 8, !tbaa !9
  %618 = getelementptr inbounds %struct.doublecomplex, ptr %616, i64 %617
  %619 = getelementptr inbounds %struct.doublecomplex, ptr %618, i32 0, i32 0
  %620 = load double, ptr %619, align 8, !tbaa !16
  store double %620, ptr %57, align 8, !tbaa !11
  %621 = load double, ptr %57, align 8, !tbaa !11
  %622 = fcmp oge double %621, 0.000000e+00
  br i1 %622, label %623, label %625

623:                                              ; preds = %613
  %624 = load double, ptr %57, align 8, !tbaa !11
  br label %628

625:                                              ; preds = %613
  %626 = load double, ptr %57, align 8, !tbaa !11
  %627 = fneg double %626
  br label %628

628:                                              ; preds = %625, %623
  %629 = phi double [ %624, %623 ], [ %627, %625 ]
  %630 = load ptr, ptr %33, align 8, !tbaa !5
  %631 = load i64, ptr %60, align 8, !tbaa !9
  %632 = load i64, ptr %61, align 8, !tbaa !9
  %633 = load i64, ptr %46, align 8, !tbaa !9
  %634 = mul nsw i64 %632, %633
  %635 = add nsw i64 %631, %634
  %636 = getelementptr inbounds %struct.doublecomplex, ptr %630, i64 %635
  %637 = call double @d_imag(ptr noundef %636)
  store double %637, ptr %58, align 8, !tbaa !11
  %638 = load double, ptr %58, align 8, !tbaa !11
  %639 = fcmp oge double %638, 0.000000e+00
  br i1 %639, label %640, label %642

640:                                              ; preds = %628
  %641 = load double, ptr %58, align 8, !tbaa !11
  br label %645

642:                                              ; preds = %628
  %643 = load double, ptr %58, align 8, !tbaa !11
  %644 = fneg double %643
  br label %645

645:                                              ; preds = %642, %640
  %646 = phi double [ %641, %640 ], [ %644, %642 ]
  %647 = fadd double %629, %646
  %648 = load double, ptr %63, align 8, !tbaa !11
  %649 = call double @llvm.fmuladd.f64(double %615, double %647, double %648)
  store double %649, ptr %63, align 8, !tbaa !11
  br label %650

650:                                              ; preds = %645
  %651 = load i64, ptr %60, align 8, !tbaa !9
  %652 = add nsw i64 %651, 1
  store i64 %652, ptr %60, align 8, !tbaa !9
  br label %565, !llvm.loop !22

653:                                              ; preds = %565
  %654 = load double, ptr %63, align 8, !tbaa !11
  %655 = load ptr, ptr %38, align 8, !tbaa !5
  %656 = load i64, ptr %62, align 8, !tbaa !9
  %657 = getelementptr inbounds double, ptr %655, i64 %656
  %658 = load double, ptr %657, align 8, !tbaa !11
  %659 = fadd double %658, %654
  store double %659, ptr %657, align 8, !tbaa !11
  br label %660

660:                                              ; preds = %653
  %661 = load i64, ptr %62, align 8, !tbaa !9
  %662 = add nsw i64 %661, 1
  store i64 %662, ptr %62, align 8, !tbaa !9
  br label %527, !llvm.loop !23

663:                                              ; preds = %527
  br label %664

664:                                              ; preds = %663, %523
  store double 0.000000e+00, ptr %63, align 8, !tbaa !11
  %665 = load ptr, ptr %22, align 8, !tbaa !5
  %666 = load i64, ptr %665, align 8, !tbaa !9
  store i64 %666, ptr %49, align 8, !tbaa !9
  store i64 1, ptr %60, align 8, !tbaa !9
  br label %667

667:                                              ; preds = %773, %664
  %668 = load i64, ptr %60, align 8, !tbaa !9
  %669 = load i64, ptr %49, align 8, !tbaa !9
  %670 = icmp sle i64 %668, %669
  br i1 %670, label %671, label %776

671:                                              ; preds = %667
  %672 = load ptr, ptr %38, align 8, !tbaa !5
  %673 = load i64, ptr %60, align 8, !tbaa !9
  %674 = getelementptr inbounds double, ptr %672, i64 %673
  %675 = load double, ptr %674, align 8, !tbaa !11
  %676 = load double, ptr %70, align 8, !tbaa !11
  %677 = fcmp ogt double %675, %676
  br i1 %677, label %678, label %723

678:                                              ; preds = %671
  %679 = load i64, ptr %60, align 8, !tbaa !9
  store i64 %679, ptr %51, align 8, !tbaa !9
  %680 = load double, ptr %63, align 8, !tbaa !11
  store double %680, ptr %57, align 8, !tbaa !11
  %681 = load ptr, ptr %37, align 8, !tbaa !5
  %682 = load i64, ptr %51, align 8, !tbaa !9
  %683 = getelementptr inbounds %struct.doublecomplex, ptr %681, i64 %682
  %684 = getelementptr inbounds %struct.doublecomplex, ptr %683, i32 0, i32 0
  %685 = load double, ptr %684, align 8, !tbaa !16
  store double %685, ptr %55, align 8, !tbaa !11
  %686 = load double, ptr %55, align 8, !tbaa !11
  %687 = fcmp oge double %686, 0.000000e+00
  br i1 %687, label %688, label %690

688:                                              ; preds = %678
  %689 = load double, ptr %55, align 8, !tbaa !11
  br label %693

690:                                              ; preds = %678
  %691 = load double, ptr %55, align 8, !tbaa !11
  %692 = fneg double %691
  br label %693

693:                                              ; preds = %690, %688
  %694 = phi double [ %689, %688 ], [ %692, %690 ]
  %695 = load ptr, ptr %37, align 8, !tbaa !5
  %696 = load i64, ptr %60, align 8, !tbaa !9
  %697 = getelementptr inbounds %struct.doublecomplex, ptr %695, i64 %696
  %698 = call double @d_imag(ptr noundef %697)
  store double %698, ptr %56, align 8, !tbaa !11
  %699 = load double, ptr %56, align 8, !tbaa !11
  %700 = fcmp oge double %699, 0.000000e+00
  br i1 %700, label %701, label %703

701:                                              ; preds = %693
  %702 = load double, ptr %56, align 8, !tbaa !11
  br label %706

703:                                              ; preds = %693
  %704 = load double, ptr %56, align 8, !tbaa !11
  %705 = fneg double %704
  br label %706

706:                                              ; preds = %703, %701
  %707 = phi double [ %702, %701 ], [ %705, %703 ]
  %708 = fadd double %694, %707
  %709 = load ptr, ptr %38, align 8, !tbaa !5
  %710 = load i64, ptr %60, align 8, !tbaa !9
  %711 = getelementptr inbounds double, ptr %709, i64 %710
  %712 = load double, ptr %711, align 8, !tbaa !11
  %713 = fdiv double %708, %712
  store double %713, ptr %58, align 8, !tbaa !11
  %714 = load double, ptr %57, align 8, !tbaa !11
  %715 = load double, ptr %58, align 8, !tbaa !11
  %716 = fcmp oge double %714, %715
  br i1 %716, label %717, label %719

717:                                              ; preds = %706
  %718 = load double, ptr %57, align 8, !tbaa !11
  br label %721

719:                                              ; preds = %706
  %720 = load double, ptr %58, align 8, !tbaa !11
  br label %721

721:                                              ; preds = %719, %717
  %722 = phi double [ %718, %717 ], [ %720, %719 ]
  store double %722, ptr %63, align 8, !tbaa !11
  br label %772

723:                                              ; preds = %671
  %724 = load i64, ptr %60, align 8, !tbaa !9
  store i64 %724, ptr %51, align 8, !tbaa !9
  %725 = load double, ptr %63, align 8, !tbaa !11
  store double %725, ptr %57, align 8, !tbaa !11
  %726 = load ptr, ptr %37, align 8, !tbaa !5
  %727 = load i64, ptr %51, align 8, !tbaa !9
  %728 = getelementptr inbounds %struct.doublecomplex, ptr %726, i64 %727
  %729 = getelementptr inbounds %struct.doublecomplex, ptr %728, i32 0, i32 0
  %730 = load double, ptr %729, align 8, !tbaa !16
  store double %730, ptr %55, align 8, !tbaa !11
  %731 = load double, ptr %55, align 8, !tbaa !11
  %732 = fcmp oge double %731, 0.000000e+00
  br i1 %732, label %733, label %735

733:                                              ; preds = %723
  %734 = load double, ptr %55, align 8, !tbaa !11
  br label %738

735:                                              ; preds = %723
  %736 = load double, ptr %55, align 8, !tbaa !11
  %737 = fneg double %736
  br label %738

738:                                              ; preds = %735, %733
  %739 = phi double [ %734, %733 ], [ %737, %735 ]
  %740 = load ptr, ptr %37, align 8, !tbaa !5
  %741 = load i64, ptr %60, align 8, !tbaa !9
  %742 = getelementptr inbounds %struct.doublecomplex, ptr %740, i64 %741
  %743 = call double @d_imag(ptr noundef %742)
  store double %743, ptr %56, align 8, !tbaa !11
  %744 = load double, ptr %56, align 8, !tbaa !11
  %745 = fcmp oge double %744, 0.000000e+00
  br i1 %745, label %746, label %748

746:                                              ; preds = %738
  %747 = load double, ptr %56, align 8, !tbaa !11
  br label %751

748:                                              ; preds = %738
  %749 = load double, ptr %56, align 8, !tbaa !11
  %750 = fneg double %749
  br label %751

751:                                              ; preds = %748, %746
  %752 = phi double [ %747, %746 ], [ %750, %748 ]
  %753 = fadd double %739, %752
  %754 = load double, ptr %69, align 8, !tbaa !11
  %755 = fadd double %753, %754
  %756 = load ptr, ptr %38, align 8, !tbaa !5
  %757 = load i64, ptr %60, align 8, !tbaa !9
  %758 = getelementptr inbounds double, ptr %756, i64 %757
  %759 = load double, ptr %758, align 8, !tbaa !11
  %760 = load double, ptr %69, align 8, !tbaa !11
  %761 = fadd double %759, %760
  %762 = fdiv double %755, %761
  store double %762, ptr %58, align 8, !tbaa !11
  %763 = load double, ptr %57, align 8, !tbaa !11
  %764 = load double, ptr %58, align 8, !tbaa !11
  %765 = fcmp oge double %763, %764
  br i1 %765, label %766, label %768

766:                                              ; preds = %751
  %767 = load double, ptr %57, align 8, !tbaa !11
  br label %770

768:                                              ; preds = %751
  %769 = load double, ptr %58, align 8, !tbaa !11
  br label %770

770:                                              ; preds = %768, %766
  %771 = phi double [ %767, %766 ], [ %769, %768 ]
  store double %771, ptr %63, align 8, !tbaa !11
  br label %772

772:                                              ; preds = %770, %721
  br label %773

773:                                              ; preds = %772
  %774 = load i64, ptr %60, align 8, !tbaa !9
  %775 = add nsw i64 %774, 1
  store i64 %775, ptr %60, align 8, !tbaa !9
  br label %667, !llvm.loop !24

776:                                              ; preds = %667
  %777 = load double, ptr %63, align 8, !tbaa !11
  %778 = load ptr, ptr %36, align 8, !tbaa !5
  %779 = load i64, ptr %61, align 8, !tbaa !9
  %780 = getelementptr inbounds double, ptr %778, i64 %779
  store double %777, ptr %780, align 8, !tbaa !11
  %781 = load ptr, ptr %36, align 8, !tbaa !5
  %782 = load i64, ptr %61, align 8, !tbaa !9
  %783 = getelementptr inbounds double, ptr %781, i64 %782
  %784 = load double, ptr %783, align 8, !tbaa !11
  %785 = load double, ptr %67, align 8, !tbaa !11
  %786 = fcmp ogt double %784, %785
  br i1 %786, label %787, label %830

787:                                              ; preds = %776
  %788 = load ptr, ptr %36, align 8, !tbaa !5
  %789 = load i64, ptr %61, align 8, !tbaa !9
  %790 = getelementptr inbounds double, ptr %788, i64 %789
  %791 = load double, ptr %790, align 8, !tbaa !11
  %792 = fmul double %791, 2.000000e+00
  %793 = load double, ptr %77, align 8, !tbaa !11
  %794 = fcmp ole double %792, %793
  br i1 %794, label %795, label %830

795:                                              ; preds = %787
  %796 = load i64, ptr %72, align 8, !tbaa !9
  %797 = icmp sle i64 %796, 5
  br i1 %797, label %798, label %830

798:                                              ; preds = %795
  %799 = load ptr, ptr %21, align 8, !tbaa !5
  %800 = load ptr, ptr %22, align 8, !tbaa !5
  %801 = load ptr, ptr %23, align 8, !tbaa !5
  %802 = load ptr, ptr %24, align 8, !tbaa !5
  %803 = load ptr, ptr %28, align 8, !tbaa !5
  %804 = load i64, ptr %43, align 8, !tbaa !9
  %805 = getelementptr inbounds %struct.doublecomplex, ptr %803, i64 %804
  %806 = load ptr, ptr %29, align 8, !tbaa !5
  %807 = load ptr, ptr %30, align 8, !tbaa !5
  %808 = getelementptr inbounds i64, ptr %807, i64 1
  %809 = load ptr, ptr %37, align 8, !tbaa !5
  %810 = getelementptr inbounds %struct.doublecomplex, ptr %809, i64 1
  %811 = load ptr, ptr %22, align 8, !tbaa !5
  %812 = load ptr, ptr %39, align 8, !tbaa !5
  %813 = call i32 @zgbtrs_(ptr noundef %799, ptr noundef %800, ptr noundef %801, ptr noundef %802, ptr noundef @c__1, ptr noundef %805, ptr noundef %806, ptr noundef %808, ptr noundef %810, ptr noundef %811, ptr noundef %812)
  %814 = load ptr, ptr %22, align 8, !tbaa !5
  %815 = load ptr, ptr %37, align 8, !tbaa !5
  %816 = getelementptr inbounds %struct.doublecomplex, ptr %815, i64 1
  %817 = load ptr, ptr %33, align 8, !tbaa !5
  %818 = load i64, ptr %61, align 8, !tbaa !9
  %819 = load i64, ptr %46, align 8, !tbaa !9
  %820 = mul nsw i64 %818, %819
  %821 = add nsw i64 %820, 1
  %822 = getelementptr inbounds %struct.doublecomplex, ptr %817, i64 %821
  %823 = call i32 @f2c_zaxpy(ptr noundef %814, ptr noundef @c_b1, ptr noundef %816, ptr noundef @c__1, ptr noundef %822, ptr noundef @c__1)
  %824 = load ptr, ptr %36, align 8, !tbaa !5
  %825 = load i64, ptr %61, align 8, !tbaa !9
  %826 = getelementptr inbounds double, ptr %824, i64 %825
  %827 = load double, ptr %826, align 8, !tbaa !11
  store double %827, ptr %77, align 8, !tbaa !11
  %828 = load i64, ptr %72, align 8, !tbaa !9
  %829 = add nsw i64 %828, 1
  store i64 %829, ptr %72, align 8, !tbaa !9
  br label %302

830:                                              ; preds = %795, %787, %776
  %831 = load ptr, ptr %22, align 8, !tbaa !5
  %832 = load i64, ptr %831, align 8, !tbaa !9
  store i64 %832, ptr %49, align 8, !tbaa !9
  store i64 1, ptr %60, align 8, !tbaa !9
  br label %833

833:                                              ; preds = %931, %830
  %834 = load i64, ptr %60, align 8, !tbaa !9
  %835 = load i64, ptr %49, align 8, !tbaa !9
  %836 = icmp sle i64 %834, %835
  br i1 %836, label %837, label %934

837:                                              ; preds = %833
  %838 = load ptr, ptr %38, align 8, !tbaa !5
  %839 = load i64, ptr %60, align 8, !tbaa !9
  %840 = getelementptr inbounds double, ptr %838, i64 %839
  %841 = load double, ptr %840, align 8, !tbaa !11
  %842 = load double, ptr %70, align 8, !tbaa !11
  %843 = fcmp ogt double %841, %842
  br i1 %843, label %844, label %886

844:                                              ; preds = %837
  %845 = load i64, ptr %60, align 8, !tbaa !9
  store i64 %845, ptr %51, align 8, !tbaa !9
  %846 = load ptr, ptr %37, align 8, !tbaa !5
  %847 = load i64, ptr %51, align 8, !tbaa !9
  %848 = getelementptr inbounds %struct.doublecomplex, ptr %846, i64 %847
  %849 = getelementptr inbounds %struct.doublecomplex, ptr %848, i32 0, i32 0
  %850 = load double, ptr %849, align 8, !tbaa !16
  store double %850, ptr %55, align 8, !tbaa !11
  %851 = load double, ptr %55, align 8, !tbaa !11
  %852 = fcmp oge double %851, 0.000000e+00
  br i1 %852, label %853, label %855

853:                                              ; preds = %844
  %854 = load double, ptr %55, align 8, !tbaa !11
  br label %858

855:                                              ; preds = %844
  %856 = load double, ptr %55, align 8, !tbaa !11
  %857 = fneg double %856
  br label %858

858:                                              ; preds = %855, %853
  %859 = phi double [ %854, %853 ], [ %857, %855 ]
  %860 = load ptr, ptr %37, align 8, !tbaa !5
  %861 = load i64, ptr %60, align 8, !tbaa !9
  %862 = getelementptr inbounds %struct.doublecomplex, ptr %860, i64 %861
  %863 = call double @d_imag(ptr noundef %862)
  store double %863, ptr %56, align 8, !tbaa !11
  %864 = load double, ptr %56, align 8, !tbaa !11
  %865 = fcmp oge double %864, 0.000000e+00
  br i1 %865, label %866, label %868

866:                                              ; preds = %858
  %867 = load double, ptr %56, align 8, !tbaa !11
  br label %871

868:                                              ; preds = %858
  %869 = load double, ptr %56, align 8, !tbaa !11
  %870 = fneg double %869
  br label %871

871:                                              ; preds = %868, %866
  %872 = phi double [ %867, %866 ], [ %870, %868 ]
  %873 = fadd double %859, %872
  %874 = load i64, ptr %66, align 8, !tbaa !9
  %875 = sitofp i64 %874 to double
  %876 = load double, ptr %67, align 8, !tbaa !11
  %877 = fmul double %875, %876
  %878 = load ptr, ptr %38, align 8, !tbaa !5
  %879 = load i64, ptr %60, align 8, !tbaa !9
  %880 = getelementptr inbounds double, ptr %878, i64 %879
  %881 = load double, ptr %880, align 8, !tbaa !11
  %882 = call double @llvm.fmuladd.f64(double %877, double %881, double %873)
  %883 = load ptr, ptr %38, align 8, !tbaa !5
  %884 = load i64, ptr %60, align 8, !tbaa !9
  %885 = getelementptr inbounds double, ptr %883, i64 %884
  store double %882, ptr %885, align 8, !tbaa !11
  br label %930

886:                                              ; preds = %837
  %887 = load i64, ptr %60, align 8, !tbaa !9
  store i64 %887, ptr %51, align 8, !tbaa !9
  %888 = load ptr, ptr %37, align 8, !tbaa !5
  %889 = load i64, ptr %51, align 8, !tbaa !9
  %890 = getelementptr inbounds %struct.doublecomplex, ptr %888, i64 %889
  %891 = getelementptr inbounds %struct.doublecomplex, ptr %890, i32 0, i32 0
  %892 = load double, ptr %891, align 8, !tbaa !16
  store double %892, ptr %55, align 8, !tbaa !11
  %893 = load double, ptr %55, align 8, !tbaa !11
  %894 = fcmp oge double %893, 0.000000e+00
  br i1 %894, label %895, label %897

895:                                              ; preds = %886
  %896 = load double, ptr %55, align 8, !tbaa !11
  br label %900

897:                                              ; preds = %886
  %898 = load double, ptr %55, align 8, !tbaa !11
  %899 = fneg double %898
  br label %900

900:                                              ; preds = %897, %895
  %901 = phi double [ %896, %895 ], [ %899, %897 ]
  %902 = load ptr, ptr %37, align 8, !tbaa !5
  %903 = load i64, ptr %60, align 8, !tbaa !9
  %904 = getelementptr inbounds %struct.doublecomplex, ptr %902, i64 %903
  %905 = call double @d_imag(ptr noundef %904)
  store double %905, ptr %56, align 8, !tbaa !11
  %906 = load double, ptr %56, align 8, !tbaa !11
  %907 = fcmp oge double %906, 0.000000e+00
  br i1 %907, label %908, label %910

908:                                              ; preds = %900
  %909 = load double, ptr %56, align 8, !tbaa !11
  br label %913

910:                                              ; preds = %900
  %911 = load double, ptr %56, align 8, !tbaa !11
  %912 = fneg double %911
  br label %913

913:                                              ; preds = %910, %908
  %914 = phi double [ %909, %908 ], [ %912, %910 ]
  %915 = fadd double %901, %914
  %916 = load i64, ptr %66, align 8, !tbaa !9
  %917 = sitofp i64 %916 to double
  %918 = load double, ptr %67, align 8, !tbaa !11
  %919 = fmul double %917, %918
  %920 = load ptr, ptr %38, align 8, !tbaa !5
  %921 = load i64, ptr %60, align 8, !tbaa !9
  %922 = getelementptr inbounds double, ptr %920, i64 %921
  %923 = load double, ptr %922, align 8, !tbaa !11
  %924 = call double @llvm.fmuladd.f64(double %919, double %923, double %915)
  %925 = load double, ptr %69, align 8, !tbaa !11
  %926 = fadd double %924, %925
  %927 = load ptr, ptr %38, align 8, !tbaa !5
  %928 = load i64, ptr %60, align 8, !tbaa !9
  %929 = getelementptr inbounds double, ptr %927, i64 %928
  store double %926, ptr %929, align 8, !tbaa !11
  br label %930

930:                                              ; preds = %913, %871
  br label %931

931:                                              ; preds = %930
  %932 = load i64, ptr %60, align 8, !tbaa !9
  %933 = add nsw i64 %932, 1
  store i64 %933, ptr %60, align 8, !tbaa !9
  br label %833, !llvm.loop !25

934:                                              ; preds = %833
  store i64 0, ptr %68, align 8, !tbaa !9
  br label %935

935:                                              ; preds = %1082, %934
  %936 = load ptr, ptr %22, align 8, !tbaa !5
  %937 = load ptr, ptr %37, align 8, !tbaa !5
  %938 = load ptr, ptr %22, align 8, !tbaa !5
  %939 = load i64, ptr %938, align 8, !tbaa !9
  %940 = add nsw i64 %939, 1
  %941 = getelementptr inbounds %struct.doublecomplex, ptr %937, i64 %940
  %942 = load ptr, ptr %37, align 8, !tbaa !5
  %943 = getelementptr inbounds %struct.doublecomplex, ptr %942, i64 1
  %944 = load ptr, ptr %35, align 8, !tbaa !5
  %945 = load i64, ptr %61, align 8, !tbaa !9
  %946 = getelementptr inbounds double, ptr %944, i64 %945
  %947 = getelementptr inbounds [3 x i64], ptr %71, i64 0, i64 0
  %948 = call i32 @zlacn2_(ptr noundef %936, ptr noundef %941, ptr noundef %943, ptr noundef %946, ptr noundef %68, ptr noundef %947)
  %949 = load i64, ptr %68, align 8, !tbaa !9
  %950 = icmp ne i64 %949, 0
  br i1 %950, label %951, label %1083

951:                                              ; preds = %935
  %952 = load i64, ptr %68, align 8, !tbaa !9
  %953 = icmp eq i64 %952, 1
  br i1 %953, label %954, label %1018

954:                                              ; preds = %951
  %955 = getelementptr inbounds [1 x i8], ptr %76, i64 0, i64 0
  %956 = load ptr, ptr %22, align 8, !tbaa !5
  %957 = load ptr, ptr %23, align 8, !tbaa !5
  %958 = load ptr, ptr %24, align 8, !tbaa !5
  %959 = load ptr, ptr %28, align 8, !tbaa !5
  %960 = load i64, ptr %43, align 8, !tbaa !9
  %961 = getelementptr inbounds %struct.doublecomplex, ptr %959, i64 %960
  %962 = load ptr, ptr %29, align 8, !tbaa !5
  %963 = load ptr, ptr %30, align 8, !tbaa !5
  %964 = getelementptr inbounds i64, ptr %963, i64 1
  %965 = load ptr, ptr %37, align 8, !tbaa !5
  %966 = getelementptr inbounds %struct.doublecomplex, ptr %965, i64 1
  %967 = load ptr, ptr %22, align 8, !tbaa !5
  %968 = load ptr, ptr %39, align 8, !tbaa !5
  %969 = call i32 @zgbtrs_(ptr noundef %955, ptr noundef %956, ptr noundef %957, ptr noundef %958, ptr noundef @c__1, ptr noundef %961, ptr noundef %962, ptr noundef %964, ptr noundef %966, ptr noundef %967, ptr noundef %968)
  %970 = load ptr, ptr %22, align 8, !tbaa !5
  %971 = load i64, ptr %970, align 8, !tbaa !9
  store i64 %971, ptr %49, align 8, !tbaa !9
  store i64 1, ptr %60, align 8, !tbaa !9
  br label %972

972:                                              ; preds = %1014, %954
  %973 = load i64, ptr %60, align 8, !tbaa !9
  %974 = load i64, ptr %49, align 8, !tbaa !9
  %975 = icmp sle i64 %973, %974
  br i1 %975, label %976, label %1017

976:                                              ; preds = %972
  %977 = load i64, ptr %60, align 8, !tbaa !9
  store i64 %977, ptr %51, align 8, !tbaa !9
  %978 = load i64, ptr %60, align 8, !tbaa !9
  store i64 %978, ptr %52, align 8, !tbaa !9
  %979 = load i64, ptr %60, align 8, !tbaa !9
  store i64 %979, ptr %50, align 8, !tbaa !9
  %980 = load ptr, ptr %38, align 8, !tbaa !5
  %981 = load i64, ptr %52, align 8, !tbaa !9
  %982 = getelementptr inbounds double, ptr %980, i64 %981
  %983 = load double, ptr %982, align 8, !tbaa !11
  %984 = load ptr, ptr %37, align 8, !tbaa !5
  %985 = load i64, ptr %50, align 8, !tbaa !9
  %986 = getelementptr inbounds %struct.doublecomplex, ptr %984, i64 %985
  %987 = getelementptr inbounds %struct.doublecomplex, ptr %986, i32 0, i32 0
  %988 = load double, ptr %987, align 8, !tbaa !16
  %989 = fmul double %983, %988
  %990 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  store double %989, ptr %990, align 8, !tbaa !16
  %991 = load ptr, ptr %38, align 8, !tbaa !5
  %992 = load i64, ptr %52, align 8, !tbaa !9
  %993 = getelementptr inbounds double, ptr %991, i64 %992
  %994 = load double, ptr %993, align 8, !tbaa !11
  %995 = load ptr, ptr %37, align 8, !tbaa !5
  %996 = load i64, ptr %50, align 8, !tbaa !9
  %997 = getelementptr inbounds %struct.doublecomplex, ptr %995, i64 %996
  %998 = getelementptr inbounds %struct.doublecomplex, ptr %997, i32 0, i32 1
  %999 = load double, ptr %998, align 8, !tbaa !18
  %1000 = fmul double %994, %999
  %1001 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  store double %1000, ptr %1001, align 8, !tbaa !18
  %1002 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  %1003 = load double, ptr %1002, align 8, !tbaa !16
  %1004 = load ptr, ptr %37, align 8, !tbaa !5
  %1005 = load i64, ptr %51, align 8, !tbaa !9
  %1006 = getelementptr inbounds %struct.doublecomplex, ptr %1004, i64 %1005
  %1007 = getelementptr inbounds %struct.doublecomplex, ptr %1006, i32 0, i32 0
  store double %1003, ptr %1007, align 8, !tbaa !16
  %1008 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  %1009 = load double, ptr %1008, align 8, !tbaa !18
  %1010 = load ptr, ptr %37, align 8, !tbaa !5
  %1011 = load i64, ptr %51, align 8, !tbaa !9
  %1012 = getelementptr inbounds %struct.doublecomplex, ptr %1010, i64 %1011
  %1013 = getelementptr inbounds %struct.doublecomplex, ptr %1012, i32 0, i32 1
  store double %1009, ptr %1013, align 8, !tbaa !18
  br label %1014

1014:                                             ; preds = %976
  %1015 = load i64, ptr %60, align 8, !tbaa !9
  %1016 = add nsw i64 %1015, 1
  store i64 %1016, ptr %60, align 8, !tbaa !9
  br label %972, !llvm.loop !26

1017:                                             ; preds = %972
  br label %1082

1018:                                             ; preds = %951
  %1019 = load ptr, ptr %22, align 8, !tbaa !5
  %1020 = load i64, ptr %1019, align 8, !tbaa !9
  store i64 %1020, ptr %49, align 8, !tbaa !9
  store i64 1, ptr %60, align 8, !tbaa !9
  br label %1021

1021:                                             ; preds = %1063, %1018
  %1022 = load i64, ptr %60, align 8, !tbaa !9
  %1023 = load i64, ptr %49, align 8, !tbaa !9
  %1024 = icmp sle i64 %1022, %1023
  br i1 %1024, label %1025, label %1066

1025:                                             ; preds = %1021
  %1026 = load i64, ptr %60, align 8, !tbaa !9
  store i64 %1026, ptr %51, align 8, !tbaa !9
  %1027 = load i64, ptr %60, align 8, !tbaa !9
  store i64 %1027, ptr %52, align 8, !tbaa !9
  %1028 = load i64, ptr %60, align 8, !tbaa !9
  store i64 %1028, ptr %50, align 8, !tbaa !9
  %1029 = load ptr, ptr %38, align 8, !tbaa !5
  %1030 = load i64, ptr %52, align 8, !tbaa !9
  %1031 = getelementptr inbounds double, ptr %1029, i64 %1030
  %1032 = load double, ptr %1031, align 8, !tbaa !11
  %1033 = load ptr, ptr %37, align 8, !tbaa !5
  %1034 = load i64, ptr %50, align 8, !tbaa !9
  %1035 = getelementptr inbounds %struct.doublecomplex, ptr %1033, i64 %1034
  %1036 = getelementptr inbounds %struct.doublecomplex, ptr %1035, i32 0, i32 0
  %1037 = load double, ptr %1036, align 8, !tbaa !16
  %1038 = fmul double %1032, %1037
  %1039 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  store double %1038, ptr %1039, align 8, !tbaa !16
  %1040 = load ptr, ptr %38, align 8, !tbaa !5
  %1041 = load i64, ptr %52, align 8, !tbaa !9
  %1042 = getelementptr inbounds double, ptr %1040, i64 %1041
  %1043 = load double, ptr %1042, align 8, !tbaa !11
  %1044 = load ptr, ptr %37, align 8, !tbaa !5
  %1045 = load i64, ptr %50, align 8, !tbaa !9
  %1046 = getelementptr inbounds %struct.doublecomplex, ptr %1044, i64 %1045
  %1047 = getelementptr inbounds %struct.doublecomplex, ptr %1046, i32 0, i32 1
  %1048 = load double, ptr %1047, align 8, !tbaa !18
  %1049 = fmul double %1043, %1048
  %1050 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  store double %1049, ptr %1050, align 8, !tbaa !18
  %1051 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  %1052 = load double, ptr %1051, align 8, !tbaa !16
  %1053 = load ptr, ptr %37, align 8, !tbaa !5
  %1054 = load i64, ptr %51, align 8, !tbaa !9
  %1055 = getelementptr inbounds %struct.doublecomplex, ptr %1053, i64 %1054
  %1056 = getelementptr inbounds %struct.doublecomplex, ptr %1055, i32 0, i32 0
  store double %1052, ptr %1056, align 8, !tbaa !16
  %1057 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  %1058 = load double, ptr %1057, align 8, !tbaa !18
  %1059 = load ptr, ptr %37, align 8, !tbaa !5
  %1060 = load i64, ptr %51, align 8, !tbaa !9
  %1061 = getelementptr inbounds %struct.doublecomplex, ptr %1059, i64 %1060
  %1062 = getelementptr inbounds %struct.doublecomplex, ptr %1061, i32 0, i32 1
  store double %1058, ptr %1062, align 8, !tbaa !18
  br label %1063

1063:                                             ; preds = %1025
  %1064 = load i64, ptr %60, align 8, !tbaa !9
  %1065 = add nsw i64 %1064, 1
  store i64 %1065, ptr %60, align 8, !tbaa !9
  br label %1021, !llvm.loop !27

1066:                                             ; preds = %1021
  %1067 = getelementptr inbounds [1 x i8], ptr %75, i64 0, i64 0
  %1068 = load ptr, ptr %22, align 8, !tbaa !5
  %1069 = load ptr, ptr %23, align 8, !tbaa !5
  %1070 = load ptr, ptr %24, align 8, !tbaa !5
  %1071 = load ptr, ptr %28, align 8, !tbaa !5
  %1072 = load i64, ptr %43, align 8, !tbaa !9
  %1073 = getelementptr inbounds %struct.doublecomplex, ptr %1071, i64 %1072
  %1074 = load ptr, ptr %29, align 8, !tbaa !5
  %1075 = load ptr, ptr %30, align 8, !tbaa !5
  %1076 = getelementptr inbounds i64, ptr %1075, i64 1
  %1077 = load ptr, ptr %37, align 8, !tbaa !5
  %1078 = getelementptr inbounds %struct.doublecomplex, ptr %1077, i64 1
  %1079 = load ptr, ptr %22, align 8, !tbaa !5
  %1080 = load ptr, ptr %39, align 8, !tbaa !5
  %1081 = call i32 @zgbtrs_(ptr noundef %1067, ptr noundef %1068, ptr noundef %1069, ptr noundef %1070, ptr noundef @c__1, ptr noundef %1073, ptr noundef %1074, ptr noundef %1076, ptr noundef %1078, ptr noundef %1079, ptr noundef %1080)
  br label %1082

1082:                                             ; preds = %1066, %1017
  br label %935

1083:                                             ; preds = %935
  store double 0.000000e+00, ptr %77, align 8, !tbaa !11
  %1084 = load ptr, ptr %22, align 8, !tbaa !5
  %1085 = load i64, ptr %1084, align 8, !tbaa !9
  store i64 %1085, ptr %49, align 8, !tbaa !9
  store i64 1, ptr %60, align 8, !tbaa !9
  br label %1086

1086:                                             ; preds = %1138, %1083
  %1087 = load i64, ptr %60, align 8, !tbaa !9
  %1088 = load i64, ptr %49, align 8, !tbaa !9
  %1089 = icmp sle i64 %1087, %1088
  br i1 %1089, label %1090, label %1141

1090:                                             ; preds = %1086
  %1091 = load i64, ptr %60, align 8, !tbaa !9
  %1092 = load i64, ptr %61, align 8, !tbaa !9
  %1093 = load i64, ptr %46, align 8, !tbaa !9
  %1094 = mul nsw i64 %1092, %1093
  %1095 = add nsw i64 %1091, %1094
  store i64 %1095, ptr %51, align 8, !tbaa !9
  %1096 = load double, ptr %77, align 8, !tbaa !11
  store double %1096, ptr %57, align 8, !tbaa !11
  %1097 = load ptr, ptr %33, align 8, !tbaa !5
  %1098 = load i64, ptr %51, align 8, !tbaa !9
  %1099 = getelementptr inbounds %struct.doublecomplex, ptr %1097, i64 %1098
  %1100 = getelementptr inbounds %struct.doublecomplex, ptr %1099, i32 0, i32 0
  %1101 = load double, ptr %1100, align 8, !tbaa !16
  store double %1101, ptr %55, align 8, !tbaa !11
  %1102 = load double, ptr %55, align 8, !tbaa !11
  %1103 = fcmp oge double %1102, 0.000000e+00
  br i1 %1103, label %1104, label %1106

1104:                                             ; preds = %1090
  %1105 = load double, ptr %55, align 8, !tbaa !11
  br label %1109

1106:                                             ; preds = %1090
  %1107 = load double, ptr %55, align 8, !tbaa !11
  %1108 = fneg double %1107
  br label %1109

1109:                                             ; preds = %1106, %1104
  %1110 = phi double [ %1105, %1104 ], [ %1108, %1106 ]
  %1111 = load ptr, ptr %33, align 8, !tbaa !5
  %1112 = load i64, ptr %60, align 8, !tbaa !9
  %1113 = load i64, ptr %61, align 8, !tbaa !9
  %1114 = load i64, ptr %46, align 8, !tbaa !9
  %1115 = mul nsw i64 %1113, %1114
  %1116 = add nsw i64 %1112, %1115
  %1117 = getelementptr inbounds %struct.doublecomplex, ptr %1111, i64 %1116
  %1118 = call double @d_imag(ptr noundef %1117)
  store double %1118, ptr %56, align 8, !tbaa !11
  %1119 = load double, ptr %56, align 8, !tbaa !11
  %1120 = fcmp oge double %1119, 0.000000e+00
  br i1 %1120, label %1121, label %1123

1121:                                             ; preds = %1109
  %1122 = load double, ptr %56, align 8, !tbaa !11
  br label %1126

1123:                                             ; preds = %1109
  %1124 = load double, ptr %56, align 8, !tbaa !11
  %1125 = fneg double %1124
  br label %1126

1126:                                             ; preds = %1123, %1121
  %1127 = phi double [ %1122, %1121 ], [ %1125, %1123 ]
  %1128 = fadd double %1110, %1127
  store double %1128, ptr %58, align 8, !tbaa !11
  %1129 = load double, ptr %57, align 8, !tbaa !11
  %1130 = load double, ptr %58, align 8, !tbaa !11
  %1131 = fcmp oge double %1129, %1130
  br i1 %1131, label %1132, label %1134

1132:                                             ; preds = %1126
  %1133 = load double, ptr %57, align 8, !tbaa !11
  br label %1136

1134:                                             ; preds = %1126
  %1135 = load double, ptr %58, align 8, !tbaa !11
  br label %1136

1136:                                             ; preds = %1134, %1132
  %1137 = phi double [ %1133, %1132 ], [ %1135, %1134 ]
  store double %1137, ptr %77, align 8, !tbaa !11
  br label %1138

1138:                                             ; preds = %1136
  %1139 = load i64, ptr %60, align 8, !tbaa !9
  %1140 = add nsw i64 %1139, 1
  store i64 %1140, ptr %60, align 8, !tbaa !9
  br label %1086, !llvm.loop !28

1141:                                             ; preds = %1086
  %1142 = load double, ptr %77, align 8, !tbaa !11
  %1143 = fcmp une double %1142, 0.000000e+00
  br i1 %1143, label %1144, label %1151

1144:                                             ; preds = %1141
  %1145 = load double, ptr %77, align 8, !tbaa !11
  %1146 = load ptr, ptr %35, align 8, !tbaa !5
  %1147 = load i64, ptr %61, align 8, !tbaa !9
  %1148 = getelementptr inbounds double, ptr %1146, i64 %1147
  %1149 = load double, ptr %1148, align 8, !tbaa !11
  %1150 = fdiv double %1149, %1145
  store double %1150, ptr %1148, align 8, !tbaa !11
  br label %1151

1151:                                             ; preds = %1144, %1141
  br label %1152

1152:                                             ; preds = %1151
  %1153 = load i64, ptr %61, align 8, !tbaa !9
  %1154 = add nsw i64 %1153, 1
  store i64 %1154, ptr %61, align 8, !tbaa !9
  br label %297, !llvm.loop !29

1155:                                             ; preds = %297
  store i32 0, ptr %20, align 4
  store i32 1, ptr %78, align 4
  br label %1156

1156:                                             ; preds = %1155, %257, %227
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  %1157 = load i32, ptr %20, align 4
  ret i32 %1157
}

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

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #3

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

declare i32 @zlacn2_(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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"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 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = !{!7, !7, i64 0}
!16 = !{!17, !12, i64 0}
!17 = !{!"", !12, i64 0, !12, i64 8}
!18 = !{!17, !12, i64 8}
!19 = distinct !{!19, !14}
!20 = distinct !{!20, !14}
!21 = distinct !{!21, !14}
!22 = distinct !{!22, !14}
!23 = distinct !{!23, !14}
!24 = distinct !{!24, !14}
!25 = distinct !{!25, !14}
!26 = distinct !{!26, !14}
!27 = distinct !{!27, !14}
!28 = distinct !{!28, !14}
!29 = distinct !{!29, !14}


; 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 [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [13 x i8], align 1
@c__1 = external hidden global i64, align 8
@c_b1 = external hidden global %struct.doublecomplex, align 8

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

42:                                               ; preds = %19
  %43 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #5
  %.not455 = icmp eq i64 %43, 0
  br i1 %.not455, label %44, label %46

44:                                               ; preds = %42
  %45 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #5
  %.not456 = icmp eq i64 %45, 0
  br i1 %.not456, label %.thread.sink.split, label %46

46:                                               ; preds = %44, %42, %19
  %47 = load i64, ptr %1, align 8, !tbaa !5
  %48 = icmp slt i64 %47, 0
  br i1 %48, label %.thread.sink.split, label %49

49:                                               ; preds = %46
  %50 = load i64, ptr %2, align 8, !tbaa !5
  %51 = icmp slt i64 %50, 0
  br i1 %51, label %.thread.sink.split, label %52

52:                                               ; preds = %49
  %53 = load i64, ptr %3, align 8, !tbaa !5
  %54 = icmp slt i64 %53, 0
  br i1 %54, label %.thread.sink.split, label %55

55:                                               ; preds = %52
  %56 = load i64, ptr %4, align 8, !tbaa !5
  %57 = icmp slt i64 %56, 0
  br i1 %57, label %.thread.sink.split, label %58

58:                                               ; preds = %55
  %59 = load i64, ptr %6, align 8, !tbaa !5
  %60 = add nuw nsw i64 %53, %50
  %.not457 = icmp sgt i64 %59, %60
  br i1 %.not457, label %61, label %.thread.sink.split

61:                                               ; preds = %58
  %62 = load i64, ptr %8, align 8, !tbaa !5
  %63 = shl nuw i64 %50, 1
  %64 = add nsw i64 %53, %63
  %.not458 = icmp sgt i64 %62, %64
  br i1 %.not458, label %65, label %.thread.sink.split

65:                                               ; preds = %61
  %66 = load i64, ptr %11, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %47, i64 1)
  %67 = icmp slt i64 %66, %spec.select
  br i1 %67, label %.thread.sink.split, label %68

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

71:                                               ; preds = %68
  %.pr = load i64, ptr %18, align 8, !tbaa !5
  %.not459 = icmp eq i64 %.pr, 0
  br i1 %.not459, label %75, label %.thread

.thread.sink.split:                               ; preds = %68, %65, %61, %58, %55, %52, %49, %46, %44
  %.sink = phi i64 [ -1, %44 ], [ -2, %46 ], [ -3, %49 ], [ -4, %52 ], [ -5, %55 ], [ -7, %58 ], [ -9, %61 ], [ -12, %65 ], [ -14, %68 ]
  store i64 %.sink, ptr %18, align 8, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %71
  %72 = phi i64 [ %.pr, %71 ], [ %.sink, %.thread.sink.split ]
  %73 = sub nsw i64 0, %72
  store i64 %73, ptr %22, align 8, !tbaa !5
  %74 = call i32 @xerbla_(ptr noundef nonnull @.str.3, ptr noundef nonnull %22) #5
  br label %.loopexit

75:                                               ; preds = %71
  %76 = icmp eq i64 %47, 0
  %.not477556 = icmp eq i64 %56, 0
  br i1 %76, label %78, label %77

77:                                               ; preds = %75
  br i1 %.not477556, label %.loopexit, label %103

78:                                               ; preds = %75
  br i1 %.not477556, label %.loopexit, label %.lr.ph559.preheader

.lr.ph559.preheader:                              ; preds = %78
  %min.iters.check632 = icmp ult i64 %56, 4
  %79 = sub i64 %21, %20
  %diff.check = icmp ult i64 %79, 32
  %or.cond643 = or i1 %min.iters.check632, %diff.check
  br i1 %or.cond643, label %.lr.ph559.preheader649, label %vector.ph633

vector.ph633:                                     ; preds = %.lr.ph559.preheader
  %n.vec635 = and i64 %56, 9223372036854775804
  %ind.end636 = or disjoint i64 %n.vec635, 1
  br label %vector.body638

vector.body638:                                   ; preds = %vector.body638, %vector.ph633
  %index639 = phi i64 [ 0, %vector.ph633 ], [ %index.next641, %vector.body638 ]
  %80 = getelementptr double, ptr %14, i64 %index639
  %81 = getelementptr inbounds i8, ptr %80, i64 16
  store <2 x double> zeroinitializer, ptr %80, align 8, !tbaa !9
  store <2 x double> zeroinitializer, ptr %81, align 8, !tbaa !9
  %82 = getelementptr double, ptr %15, i64 %index639
  %83 = getelementptr inbounds i8, ptr %82, i64 16
  store <2 x double> zeroinitializer, ptr %82, align 8, !tbaa !9
  store <2 x double> zeroinitializer, ptr %83, align 8, !tbaa !9
  %index.next641 = add nuw i64 %index639, 4
  %84 = icmp eq i64 %index.next641, %n.vec635
  br i1 %84, label %middle.block630, label %vector.body638, !llvm.loop !11

middle.block630:                                  ; preds = %vector.body638
  %cmp.n642 = icmp eq i64 %56, %n.vec635
  br i1 %cmp.n642, label %.loopexit, label %.lr.ph559.preheader649

.lr.ph559.preheader649:                           ; preds = %middle.block630, %.lr.ph559.preheader
  %.0444557.ph = phi i64 [ 1, %.lr.ph559.preheader ], [ %ind.end636, %middle.block630 ]
  %85 = add nuw i64 %56, 1
  %86 = sub i64 %85, %.0444557.ph
  %87 = sub i64 %56, %.0444557.ph
  %xtraiter664 = and i64 %86, 3
  %lcmp.mod665.not = icmp eq i64 %xtraiter664, 0
  br i1 %lcmp.mod665.not, label %.lr.ph559.prol.loopexit, label %.lr.ph559.prol

.lr.ph559.prol:                                   ; preds = %.lr.ph559.preheader649, %.lr.ph559.prol
  %.0444557.prol = phi i64 [ %90, %.lr.ph559.prol ], [ %.0444557.ph, %.lr.ph559.preheader649 ]
  %prol.iter = phi i64 [ %prol.iter.next, %.lr.ph559.prol ], [ 0, %.lr.ph559.preheader649 ]
  %88 = getelementptr inbounds double, ptr %37, i64 %.0444557.prol
  store double 0.000000e+00, ptr %88, align 8, !tbaa !9
  %89 = getelementptr inbounds double, ptr %38, i64 %.0444557.prol
  store double 0.000000e+00, ptr %89, align 8, !tbaa !9
  %90 = add nuw i64 %.0444557.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter664
  br i1 %prol.iter.cmp.not, label %.lr.ph559.prol.loopexit, label %.lr.ph559.prol, !llvm.loop !15

.lr.ph559.prol.loopexit:                          ; preds = %.lr.ph559.prol, %.lr.ph559.preheader649
  %.0444557.unr = phi i64 [ %.0444557.ph, %.lr.ph559.preheader649 ], [ %90, %.lr.ph559.prol ]
  %91 = icmp ult i64 %87, 3
  br i1 %91, label %.loopexit, label %.lr.ph559

.lr.ph559:                                        ; preds = %.lr.ph559.prol.loopexit, %.lr.ph559
  %.0444557 = phi i64 [ %102, %.lr.ph559 ], [ %.0444557.unr, %.lr.ph559.prol.loopexit ]
  %92 = getelementptr inbounds double, ptr %37, i64 %.0444557
  store double 0.000000e+00, ptr %92, align 8, !tbaa !9
  %93 = getelementptr inbounds double, ptr %38, i64 %.0444557
  store double 0.000000e+00, ptr %93, align 8, !tbaa !9
  %94 = getelementptr double, ptr %14, i64 %.0444557
  store double 0.000000e+00, ptr %94, align 8, !tbaa !9
  %95 = getelementptr double, ptr %15, i64 %.0444557
  store double 0.000000e+00, ptr %95, align 8, !tbaa !9
  %96 = add nuw i64 %.0444557, 2
  %97 = getelementptr inbounds double, ptr %37, i64 %96
  store double 0.000000e+00, ptr %97, align 8, !tbaa !9
  %98 = getelementptr inbounds double, ptr %38, i64 %96
  store double 0.000000e+00, ptr %98, align 8, !tbaa !9
  %99 = add nuw i64 %.0444557, 3
  %100 = getelementptr inbounds double, ptr %37, i64 %99
  store double 0.000000e+00, ptr %100, align 8, !tbaa !9
  %101 = getelementptr inbounds double, ptr %38, i64 %99
  store double 0.000000e+00, ptr %101, align 8, !tbaa !9
  %102 = add nuw i64 %.0444557, 4
  %exitcond575.not.3 = icmp eq i64 %99, %56
  br i1 %exitcond575.not.3, label %.loopexit, label %.lr.ph559, !llvm.loop !17

103:                                              ; preds = %77
  %. = select i1 %.not, i8 67, i8 78
  %.479 = select i1 %.not, i8 78, i8 67
  store i8 %., ptr %26, align 1, !tbaa !18
  store i8 %.479, ptr %27, align 1, !tbaa !18
  %104 = add nuw i64 %50, 2
  %105 = add i64 %104, %53
  %106 = add nuw nsw i64 %47, 1
  %107 = tail call i64 @llvm.smin.i64(i64 %105, i64 %106)
  %108 = tail call double @dlamch_(ptr noundef nonnull @.str.4) #5
  %109 = tail call double @dlamch_(ptr noundef nonnull @.str.5) #5
  %110 = sitofp i64 %107 to double
  %111 = fmul double %109, %110
  %112 = fdiv double %111, %108
  %113 = load i64, ptr %4, align 8, !tbaa !5
  %invariant.gep552 = getelementptr i8, ptr %33, i64 16
  %.not462554 = icmp slt i64 %113, 1
  br i1 %.not462554, label %.loopexit, label %.preheader.lr.ph

.preheader.lr.ph:                                 ; preds = %103
  %invariant.gep523 = getelementptr i8, ptr %36, i64 16
  %114 = fmul double %108, %110
  %invariant.gep588 = getelementptr i8, ptr %30, i64 16
  %invariant.gep590 = getelementptr i8, ptr %30, i64 16
  br label %.preheader

.preheader:                                       ; preds = %.preheader.lr.ph, %._crit_edge550.thread
  %.1445555 = phi i64 [ 1, %.preheader.lr.ph ], [ %354, %._crit_edge550.thread ]
  %115 = getelementptr inbounds double, ptr %38, i64 %.1445555
  %116 = mul nsw i64 %.1445555, %31
  %gep553 = getelementptr %struct.doublecomplex, ptr %invariant.gep552, i64 %116
  %117 = mul nsw i64 %.1445555, %34
  %gep524 = getelementptr %struct.doublecomplex, ptr %invariant.gep523, i64 %117
  %invariant.gep = getelementptr %struct.doublecomplex, ptr %33, i64 %116
  %invariant.gep496 = getelementptr %struct.doublecomplex, ptr %36, i64 %117
  br label %118

118:                                              ; preds = %.preheader, %232
  %.0439 = phi i64 [ %236, %232 ], [ 1, %.preheader ]
  %.0 = phi double [ %235, %232 ], [ 3.000000e+00, %.preheader ]
  %119 = call i32 @f2c_zcopy(ptr noundef nonnull %1, ptr noundef %gep553, ptr noundef nonnull @c__1, ptr noundef %16, ptr noundef nonnull @c__1) #5
  store <2 x double> <double -1.000000e+00, double -0.000000e+00>, ptr %23, align 16, !tbaa !9
  %120 = call i32 @f2c_zgbmv(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %23, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %gep524, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b1, ptr noundef %16, ptr noundef nonnull @c__1) #5
  %121 = load i64, ptr %1, align 8, !tbaa !5
  %.not463487 = icmp slt i64 %121, 1
  br i1 %.not463487, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %118, %.lr.ph
  %.0446488 = phi i64 [ %132, %.lr.ph ], [ 1, %118 ]
  %gep = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %.0446488
  %122 = load double, ptr %gep, align 8, !tbaa !19
  %123 = call double @d_imag(ptr noundef nonnull %gep) #5
  %124 = insertelement <2 x double> poison, double %122, i64 0
  %125 = insertelement <2 x double> %124, double %123, i64 1
  %126 = fcmp oge <2 x double> %125, zeroinitializer
  %127 = fneg <2 x double> %125
  %128 = select <2 x i1> %126, <2 x double> %125, <2 x double> %127
  %shift = shufflevector <2 x double> %128, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %129 = fadd <2 x double> %128, %shift
  %130 = extractelement <2 x double> %129, i64 0
  %131 = getelementptr inbounds double, ptr %40, i64 %.0446488
  store double %130, ptr %131, align 8, !tbaa !9
  %132 = add nuw i64 %.0446488, 1
  %exitcond.not = icmp eq i64 %.0446488, %121
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !21

._crit_edge:                                      ; preds = %.lr.ph, %118
  %133 = load i64, ptr %1, align 8, !tbaa !5
  %.not464512 = icmp slt i64 %133, 1
  br i1 %.not, label %168, label %134

134:                                              ; preds = %._crit_edge
  br i1 %.not464512, label %._crit_edge521, label %.lr.ph501

.lr.ph501:                                        ; preds = %134, %._crit_edge493
  %.0442499 = phi i64 [ %167, %._crit_edge493 ], [ 1, %134 ]
  %135 = load i64, ptr %3, align 8, !tbaa !5
  %gep497 = getelementptr %struct.doublecomplex, ptr %invariant.gep496, i64 %.0442499
  %136 = load double, ptr %gep497, align 8, !tbaa !19
  %137 = fcmp oge double %136, 0.000000e+00
  %138 = fneg double %136
  %139 = select i1 %137, double %136, double %138
  %140 = call double @d_imag(ptr noundef nonnull %gep497) #5
  %141 = fcmp oge double %140, 0.000000e+00
  %142 = fneg double %140
  %143 = select i1 %141, double %140, double %142
  %144 = fadd double %139, %143
  %145 = load i64, ptr %3, align 8, !tbaa !5
  %146 = sub nsw i64 %.0442499, %145
  %147 = load i64, ptr %1, align 8, !tbaa !5
  %148 = load i64, ptr %2, align 8, !tbaa !5
  %149 = add nsw i64 %148, %.0442499
  %150 = call i64 @llvm.smin.i64(i64 %147, i64 %149)
  %151 = call i64 @llvm.smax.i64(i64 %146, i64 1)
  %.not476489 = icmp sgt i64 %151, %150
  br i1 %.not476489, label %._crit_edge493, label %.lr.ph492

.lr.ph492:                                        ; preds = %.lr.ph501
  %reass.sub = sub i64 %135, %.0442499
  %152 = mul nsw i64 %.0442499, %28
  %gep589 = getelementptr %struct.doublecomplex, ptr %invariant.gep588, i64 %reass.sub
  %invariant.gep494 = getelementptr %struct.doublecomplex, ptr %gep589, i64 %152
  br label %153

153:                                              ; preds = %.lr.ph492, %153
  %.1447490 = phi i64 [ %151, %.lr.ph492 ], [ %166, %153 ]
  %gep495 = getelementptr %struct.doublecomplex, ptr %invariant.gep494, i64 %.1447490
  %154 = load double, ptr %gep495, align 8, !tbaa !19
  %155 = call double @d_imag(ptr noundef nonnull %gep495) #5
  %156 = insertelement <2 x double> poison, double %154, i64 0
  %157 = insertelement <2 x double> %156, double %155, i64 1
  %158 = fcmp oge <2 x double> %157, zeroinitializer
  %159 = fneg <2 x double> %157
  %160 = select <2 x i1> %158, <2 x double> %157, <2 x double> %159
  %shift644 = shufflevector <2 x double> %160, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %161 = fadd <2 x double> %160, %shift644
  %162 = extractelement <2 x double> %161, i64 0
  %163 = getelementptr inbounds double, ptr %40, i64 %.1447490
  %164 = load double, ptr %163, align 8, !tbaa !9
  %165 = call double @llvm.fmuladd.f64(double %162, double %144, double %164)
  store double %165, ptr %163, align 8, !tbaa !9
  %166 = add nuw nsw i64 %.1447490, 1
  %.not476.not = icmp slt i64 %.1447490, %150
  br i1 %.not476.not, label %153, label %._crit_edge493, !llvm.loop !22

._crit_edge493:                                   ; preds = %153, %.lr.ph501
  %167 = add nuw i64 %.0442499, 1
  %exitcond568.not = icmp eq i64 %.0442499, %133
  br i1 %exitcond568.not, label %.loopexit482, label %.lr.ph501, !llvm.loop !23

168:                                              ; preds = %._crit_edge
  br i1 %.not464512, label %._crit_edge521, label %.lr.ph515

.lr.ph515:                                        ; preds = %168, %._crit_edge509
  %.1443513 = phi i64 [ %201, %._crit_edge509 ], [ 1, %168 ]
  %169 = load i64, ptr %3, align 8, !tbaa !5
  %170 = sub nsw i64 %.1443513, %169
  %171 = load i64, ptr %1, align 8, !tbaa !5
  %172 = load i64, ptr %2, align 8, !tbaa !5
  %173 = add nsw i64 %172, %.1443513
  %174 = call i64 @llvm.smin.i64(i64 %171, i64 %173)
  %175 = call i64 @llvm.smax.i64(i64 %170, i64 1)
  %.not466504 = icmp sgt i64 %175, %174
  br i1 %.not466504, label %._crit_edge509, label %.lr.ph508

.lr.ph508:                                        ; preds = %.lr.ph515
  %reass.sub560 = sub i64 %169, %.1443513
  %176 = mul nsw i64 %.1443513, %28
  %gep591 = getelementptr %struct.doublecomplex, ptr %invariant.gep590, i64 %reass.sub560
  %invariant.gep510 = getelementptr %struct.doublecomplex, ptr %gep591, i64 %176
  br label %177

177:                                              ; preds = %.lr.ph508, %177
  %.0440506 = phi double [ 0.000000e+00, %.lr.ph508 ], [ %196, %177 ]
  %.2448505 = phi i64 [ %175, %.lr.ph508 ], [ %197, %177 ]
  %gep511 = getelementptr %struct.doublecomplex, ptr %invariant.gep510, i64 %.2448505
  %178 = load double, ptr %gep511, align 8, !tbaa !19
  %179 = call double @d_imag(ptr noundef nonnull %gep511) #5
  %180 = insertelement <2 x double> poison, double %178, i64 0
  %181 = insertelement <2 x double> %180, double %179, i64 1
  %182 = fcmp oge <2 x double> %181, zeroinitializer
  %183 = fneg <2 x double> %181
  %184 = select <2 x i1> %182, <2 x double> %181, <2 x double> %183
  %shift645 = shufflevector <2 x double> %184, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %185 = fadd <2 x double> %184, %shift645
  %186 = extractelement <2 x double> %185, i64 0
  %gep503 = getelementptr %struct.doublecomplex, ptr %invariant.gep496, i64 %.2448505
  %187 = load double, ptr %gep503, align 8, !tbaa !19
  %188 = call double @d_imag(ptr noundef nonnull %gep503) #5
  %189 = insertelement <2 x double> poison, double %187, i64 0
  %190 = insertelement <2 x double> %189, double %188, i64 1
  %191 = fcmp oge <2 x double> %190, zeroinitializer
  %192 = fneg <2 x double> %190
  %193 = select <2 x i1> %191, <2 x double> %190, <2 x double> %192
  %shift646 = shufflevector <2 x double> %193, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %194 = fadd <2 x double> %193, %shift646
  %195 = extractelement <2 x double> %194, i64 0
  %196 = call double @llvm.fmuladd.f64(double %186, double %195, double %.0440506)
  %197 = add nuw nsw i64 %.2448505, 1
  %.not466.not = icmp slt i64 %.2448505, %174
  br i1 %.not466.not, label %177, label %._crit_edge509, !llvm.loop !24

._crit_edge509:                                   ; preds = %177, %.lr.ph515
  %.0440.lcssa = phi double [ 0.000000e+00, %.lr.ph515 ], [ %196, %177 ]
  %198 = getelementptr inbounds double, ptr %40, i64 %.1443513
  %199 = load double, ptr %198, align 8, !tbaa !9
  %200 = fadd double %.0440.lcssa, %199
  store double %200, ptr %198, align 8, !tbaa !9
  %201 = add nuw i64 %.1443513, 1
  %exitcond569.not = icmp eq i64 %.1443513, %133
  br i1 %exitcond569.not, label %.loopexit482, label %.lr.ph515, !llvm.loop !25

.loopexit482:                                     ; preds = %._crit_edge493, %._crit_edge509
  %.pr578 = load i64, ptr %1, align 8, !tbaa !5
  %.not468516 = icmp slt i64 %.pr578, 1
  br i1 %.not468516, label %._crit_edge521, label %.lr.ph520

.lr.ph520:                                        ; preds = %.loopexit482, %223
  %.1441518 = phi double [ %225, %223 ], [ 0.000000e+00, %.loopexit482 ]
  %.3517 = phi i64 [ %226, %223 ], [ 1, %.loopexit482 ]
  %202 = getelementptr inbounds double, ptr %40, i64 %.3517
  %203 = load double, ptr %202, align 8, !tbaa !9
  %204 = fcmp ogt double %203, %112
  %205 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %.3517
  %206 = load double, ptr %205, align 8, !tbaa !19
  %207 = fcmp oge double %206, 0.000000e+00
  %208 = fneg double %206
  %209 = select i1 %207, double %206, double %208
  %210 = call double @d_imag(ptr noundef nonnull %205) #5
  %211 = fcmp oge double %210, 0.000000e+00
  %212 = fneg double %210
  %213 = select i1 %211, double %210, double %212
  %214 = fadd double %209, %213
  br i1 %204, label %215, label %218

215:                                              ; preds = %.lr.ph520
  %216 = load double, ptr %202, align 8, !tbaa !9
  %217 = fdiv double %214, %216
  br label %223

218:                                              ; preds = %.lr.ph520
  %219 = fadd double %111, %214
  %220 = load double, ptr %202, align 8, !tbaa !9
  %221 = fadd double %111, %220
  %222 = fdiv double %219, %221
  br label %223

223:                                              ; preds = %215, %218
  %.sink594 = phi double [ %217, %215 ], [ %222, %218 ]
  %224 = fcmp oge double %.1441518, %.sink594
  %225 = select i1 %224, double %.1441518, double %.sink594
  %226 = add nuw i64 %.3517, 1
  %exitcond570.not = icmp eq i64 %.3517, %.pr578
  br i1 %exitcond570.not, label %._crit_edge521, label %.lr.ph520, !llvm.loop !26

._crit_edge521:                                   ; preds = %223, %168, %134, %.loopexit482
  %.1441.lcssa = phi double [ 0.000000e+00, %.loopexit482 ], [ 0.000000e+00, %134 ], [ 0.000000e+00, %168 ], [ %225, %223 ]
  store double %.1441.lcssa, ptr %115, align 8, !tbaa !9
  %227 = fcmp ogt double %.1441.lcssa, %108
  br i1 %227, label %228, label %237

228:                                              ; preds = %._crit_edge521
  %229 = fmul double %.1441.lcssa, 2.000000e+00
  %230 = fcmp ole double %229, %.0
  %231 = icmp ult i64 %.0439, 6
  %or.cond = select i1 %230, i1 %231, i1 false
  br i1 %or.cond, label %232, label %237

232:                                              ; preds = %228
  %233 = call i32 @zgbtrs_(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull @c__1, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %9, ptr noundef %16, ptr noundef nonnull %1, ptr noundef nonnull %18) #5
  %234 = call i32 @f2c_zaxpy(ptr noundef nonnull %1, ptr noundef nonnull @c_b1, ptr noundef %16, ptr noundef nonnull @c__1, ptr noundef %gep524, ptr noundef nonnull @c__1) #5
  %235 = load double, ptr %115, align 8, !tbaa !9
  %236 = add nuw nsw i64 %.0439, 1
  br label %118

237:                                              ; preds = %228, %._crit_edge521
  %238 = load i64, ptr %1, align 8, !tbaa !5
  %.not469525 = icmp slt i64 %238, 1
  br i1 %.not469525, label %._crit_edge529, label %.lr.ph528

.lr.ph528:                                        ; preds = %237, %.lr.ph528
  %.4526 = phi i64 [ %255, %.lr.ph528 ], [ 1, %237 ]
  %239 = getelementptr inbounds double, ptr %40, i64 %.4526
  %240 = load double, ptr %239, align 8, !tbaa !9
  %241 = fcmp ogt double %240, %112
  %242 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %.4526
  %243 = load double, ptr %242, align 8, !tbaa !19
  %244 = call double @d_imag(ptr noundef nonnull %242) #5
  %245 = insertelement <2 x double> poison, double %243, i64 0
  %246 = insertelement <2 x double> %245, double %244, i64 1
  %247 = fcmp oge <2 x double> %246, zeroinitializer
  %248 = fneg <2 x double> %246
  %249 = select <2 x i1> %247, <2 x double> %246, <2 x double> %248
  %shift647 = shufflevector <2 x double> %249, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %250 = fadd <2 x double> %249, %shift647
  %251 = extractelement <2 x double> %250, i64 0
  %252 = load double, ptr %239, align 8, !tbaa !9
  %253 = call double @llvm.fmuladd.f64(double %114, double %252, double %251)
  %254 = fadd double %111, %253
  %storemerge474 = select i1 %241, double %253, double %254
  store double %storemerge474, ptr %239, align 8, !tbaa !9
  %255 = add nuw i64 %.4526, 1
  %exitcond571.not = icmp eq i64 %.4526, %238
  br i1 %exitcond571.not, label %._crit_edge529, label %.lr.ph528, !llvm.loop !27

._crit_edge529:                                   ; preds = %.lr.ph528, %237
  store i64 0, ptr %24, align 8, !tbaa !5
  %256 = getelementptr inbounds double, ptr %37, i64 %.1445555
  br label %.loopexit481

.loopexit481:                                     ; preds = %.loopexit481.backedge, %._crit_edge529
  %257 = load i64, ptr %1, align 8, !tbaa !5
  %258 = getelementptr %struct.doublecomplex, ptr %16, i64 %257
  %259 = call i32 @zlacn2_(ptr noundef nonnull %1, ptr noundef %258, ptr noundef %16, ptr noundef nonnull %256, ptr noundef nonnull %24, ptr noundef nonnull %25) #5
  %260 = load i64, ptr %24, align 8, !tbaa !5
  switch i64 %260, label %297 [
    i64 0, label %336
    i64 1, label %261
  ]

261:                                              ; preds = %.loopexit481
  %262 = call i32 @zgbtrs_(ptr noundef nonnull %27, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull @c__1, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %9, ptr noundef %16, ptr noundef nonnull %1, ptr noundef nonnull %18) #5
  %263 = load i64, ptr %1, align 8, !tbaa !5
  %.not473530 = icmp slt i64 %263, 1
  br i1 %.not473530, label %.loopexit481.backedge, label %.lr.ph533.preheader

.loopexit481.backedge:                            ; preds = %261, %..loopexit481_crit_edge, %333
  br label %.loopexit481

.lr.ph533.preheader:                              ; preds = %261
  %min.iters.check613 = icmp eq i64 %263, 1
  br i1 %min.iters.check613, label %.lr.ph533.preheader651, label %vector.memcheck605

vector.memcheck605:                               ; preds = %.lr.ph533.preheader
  %264 = shl i64 %263, 4
  %scevgep606 = getelementptr i8, ptr %16, i64 %264
  %265 = shl i64 %263, 3
  %scevgep607 = getelementptr i8, ptr %17, i64 %265
  %bound0608 = icmp ugt ptr %scevgep607, %16
  %bound1609 = icmp ugt ptr %scevgep606, %17
  %found.conflict610 = and i1 %bound0608, %bound1609
  br i1 %found.conflict610, label %.lr.ph533.preheader651, label %vector.ph614

vector.ph614:                                     ; preds = %vector.memcheck605
  %n.vec616 = and i64 %263, 9223372036854775806
  %ind.end617 = or i64 %263, 1
  br label %vector.body619

vector.body619:                                   ; preds = %vector.body619, %vector.ph614
  %index620 = phi i64 [ 0, %vector.ph614 ], [ %index.next627, %vector.body619 ]
  %266 = getelementptr double, ptr %17, i64 %index620
  %wide.load622 = load <2 x double>, ptr %266, align 8, !tbaa !9, !alias.scope !28
  %267 = getelementptr %struct.doublecomplex, ptr %16, i64 %index620
  %wide.vec623 = load <4 x double>, ptr %267, align 8, !tbaa !9
  %strided.vec624 = shufflevector <4 x double> %wide.vec623, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec625 = shufflevector <4 x double> %wide.vec623, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %268 = fmul <2 x double> %wide.load622, %strided.vec624
  %269 = fmul <2 x double> %wide.load622, %strided.vec625
  %interleaved.vec626 = shufflevector <2 x double> %268, <2 x double> %269, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec626, ptr %267, align 8, !tbaa !9
  %index.next627 = add nuw i64 %index620, 2
  %270 = icmp eq i64 %index.next627, %n.vec616
  br i1 %270, label %middle.block611, label %vector.body619, !llvm.loop !31

middle.block611:                                  ; preds = %vector.body619
  %cmp.n628 = icmp eq i64 %263, %n.vec616
  %271 = shufflevector <2 x double> %268, <2 x double> %269, <2 x i32> <i32 1, i32 3>
  br i1 %cmp.n628, label %..loopexit481_crit_edge, label %.lr.ph533.preheader651

.lr.ph533.preheader651:                           ; preds = %middle.block611, %vector.memcheck605, %.lr.ph533.preheader
  %.5531.ph = phi i64 [ 1, %vector.memcheck605 ], [ 1, %.lr.ph533.preheader ], [ %ind.end617, %middle.block611 ]
  %xtraiter = and i64 %263, 1
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph533.prol.loopexit, label %.lr.ph533.prol

.lr.ph533.prol:                                   ; preds = %.lr.ph533.preheader651
  %272 = getelementptr inbounds double, ptr %40, i64 %.5531.ph
  %273 = load double, ptr %272, align 8, !tbaa !9
  %274 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %.5531.ph
  %275 = load <2 x double>, ptr %274, align 8, !tbaa !9
  %276 = insertelement <2 x double> poison, double %273, i64 0
  %277 = shufflevector <2 x double> %276, <2 x double> poison, <2 x i32> zeroinitializer
  %278 = fmul <2 x double> %277, %275
  store <2 x double> %278, ptr %274, align 8, !tbaa !9
  %279 = add nuw i64 %.5531.ph, 1
  br label %.lr.ph533.prol.loopexit

.lr.ph533.prol.loopexit:                          ; preds = %.lr.ph533.prol, %.lr.ph533.preheader651
  %.lcssa657.unr = phi <2 x double> [ poison, %.lr.ph533.preheader651 ], [ %278, %.lr.ph533.prol ]
  %.5531.unr = phi i64 [ %.5531.ph, %.lr.ph533.preheader651 ], [ %279, %.lr.ph533.prol ]
  %280 = icmp eq i64 %263, %.5531.ph
  br i1 %280, label %..loopexit481_crit_edge, label %.lr.ph533

.lr.ph533:                                        ; preds = %.lr.ph533.prol.loopexit, %.lr.ph533
  %.5531 = phi i64 [ %296, %.lr.ph533 ], [ %.5531.unr, %.lr.ph533.prol.loopexit ]
  %281 = getelementptr inbounds double, ptr %40, i64 %.5531
  %282 = load double, ptr %281, align 8, !tbaa !9
  %283 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %.5531
  %284 = load <2 x double>, ptr %283, align 8, !tbaa !9
  %285 = insertelement <2 x double> poison, double %282, i64 0
  %286 = shufflevector <2 x double> %285, <2 x double> poison, <2 x i32> zeroinitializer
  %287 = fmul <2 x double> %286, %284
  store <2 x double> %287, ptr %283, align 8, !tbaa !9
  %288 = add nuw i64 %.5531, 1
  %289 = getelementptr double, ptr %17, i64 %.5531
  %290 = load double, ptr %289, align 8, !tbaa !9
  %291 = getelementptr %struct.doublecomplex, ptr %16, i64 %.5531
  %292 = load <2 x double>, ptr %291, align 8, !tbaa !9
  %293 = insertelement <2 x double> poison, double %290, i64 0
  %294 = shufflevector <2 x double> %293, <2 x double> poison, <2 x i32> zeroinitializer
  %295 = fmul <2 x double> %294, %292
  store <2 x double> %295, ptr %291, align 8, !tbaa !9
  %296 = add nuw i64 %.5531, 2
  %exitcond572.not.1 = icmp eq i64 %288, %263
  br i1 %exitcond572.not.1, label %..loopexit481_crit_edge, label %.lr.ph533, !llvm.loop !32

297:                                              ; preds = %.loopexit481
  %298 = load i64, ptr %1, align 8, !tbaa !5
  %.not472536 = icmp slt i64 %298, 1
  br i1 %.not472536, label %333, label %.lr.ph539.preheader

.lr.ph539.preheader:                              ; preds = %297
  %min.iters.check = icmp eq i64 %298, 1
  br i1 %min.iters.check, label %.lr.ph539.preheader650, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph539.preheader
  %299 = shl i64 %298, 4
  %scevgep = getelementptr i8, ptr %16, i64 %299
  %300 = shl i64 %298, 3
  %scevgep603 = getelementptr i8, ptr %17, i64 %300
  %bound0 = icmp ugt ptr %scevgep603, %16
  %bound1 = icmp ugt ptr %scevgep, %17
  %found.conflict = and i1 %bound0, %bound1
  br i1 %found.conflict, label %.lr.ph539.preheader650, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %298, 9223372036854775806
  %ind.end = or i64 %298, 1
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %301 = getelementptr double, ptr %17, i64 %index
  %wide.load = load <2 x double>, ptr %301, align 8, !tbaa !9, !alias.scope !33
  %302 = getelementptr %struct.doublecomplex, ptr %16, i64 %index
  %wide.vec = load <4 x double>, ptr %302, align 8, !tbaa !9
  %strided.vec = shufflevector <4 x double> %wide.vec, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec604 = shufflevector <4 x double> %wide.vec, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %303 = fmul <2 x double> %wide.load, %strided.vec
  %304 = fmul <2 x double> %wide.load, %strided.vec604
  %interleaved.vec = shufflevector <2 x double> %303, <2 x double> %304, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec, ptr %302, align 8, !tbaa !9
  %index.next = add nuw i64 %index, 2
  %305 = icmp eq i64 %index.next, %n.vec
  br i1 %305, label %middle.block, label %vector.body, !llvm.loop !36

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %298, %n.vec
  %306 = shufflevector <2 x double> %303, <2 x double> %304, <2 x i32> <i32 1, i32 3>
  br i1 %cmp.n, label %._crit_edge540, label %.lr.ph539.preheader650

.lr.ph539.preheader650:                           ; preds = %middle.block, %vector.memcheck, %.lr.ph539.preheader
  %.6537.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph539.preheader ], [ %ind.end, %middle.block ]
  %xtraiter662 = and i64 %298, 1
  %lcmp.mod663.not = icmp eq i64 %xtraiter662, 0
  br i1 %lcmp.mod663.not, label %.lr.ph539.prol.loopexit, label %.lr.ph539.prol

.lr.ph539.prol:                                   ; preds = %.lr.ph539.preheader650
  %307 = getelementptr inbounds double, ptr %40, i64 %.6537.ph
  %308 = load double, ptr %307, align 8, !tbaa !9
  %309 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %.6537.ph
  %310 = load <2 x double>, ptr %309, align 8, !tbaa !9
  %311 = insertelement <2 x double> poison, double %308, i64 0
  %312 = shufflevector <2 x double> %311, <2 x double> poison, <2 x i32> zeroinitializer
  %313 = fmul <2 x double> %312, %310
  store <2 x double> %313, ptr %309, align 8, !tbaa !9
  %314 = add nuw i64 %.6537.ph, 1
  br label %.lr.ph539.prol.loopexit

.lr.ph539.prol.loopexit:                          ; preds = %.lr.ph539.prol, %.lr.ph539.preheader650
  %.lcssa660.unr = phi <2 x double> [ poison, %.lr.ph539.preheader650 ], [ %313, %.lr.ph539.prol ]
  %.6537.unr = phi i64 [ %.6537.ph, %.lr.ph539.preheader650 ], [ %314, %.lr.ph539.prol ]
  %315 = icmp eq i64 %298, %.6537.ph
  br i1 %315, label %._crit_edge540, label %.lr.ph539

.lr.ph539:                                        ; preds = %.lr.ph539.prol.loopexit, %.lr.ph539
  %.6537 = phi i64 [ %331, %.lr.ph539 ], [ %.6537.unr, %.lr.ph539.prol.loopexit ]
  %316 = getelementptr inbounds double, ptr %40, i64 %.6537
  %317 = load double, ptr %316, align 8, !tbaa !9
  %318 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %.6537
  %319 = load <2 x double>, ptr %318, align 8, !tbaa !9
  %320 = insertelement <2 x double> poison, double %317, i64 0
  %321 = shufflevector <2 x double> %320, <2 x double> poison, <2 x i32> zeroinitializer
  %322 = fmul <2 x double> %321, %319
  store <2 x double> %322, ptr %318, align 8, !tbaa !9
  %323 = add nuw i64 %.6537, 1
  %324 = getelementptr double, ptr %17, i64 %.6537
  %325 = load double, ptr %324, align 8, !tbaa !9
  %326 = getelementptr %struct.doublecomplex, ptr %16, i64 %.6537
  %327 = load <2 x double>, ptr %326, align 8, !tbaa !9
  %328 = insertelement <2 x double> poison, double %325, i64 0
  %329 = shufflevector <2 x double> %328, <2 x double> poison, <2 x i32> zeroinitializer
  %330 = fmul <2 x double> %329, %327
  store <2 x double> %330, ptr %326, align 8, !tbaa !9
  %331 = add nuw i64 %.6537, 2
  %exitcond573.not.1 = icmp eq i64 %323, %298
  br i1 %exitcond573.not.1, label %._crit_edge540, label %.lr.ph539, !llvm.loop !37

._crit_edge540:                                   ; preds = %.lr.ph539.prol.loopexit, %.lr.ph539, %middle.block
  %332 = phi <2 x double> [ %306, %middle.block ], [ %.lcssa660.unr, %.lr.ph539.prol.loopexit ], [ %330, %.lr.ph539 ]
  store <2 x double> %332, ptr %23, align 16, !tbaa !9
  br label %333

333:                                              ; preds = %._crit_edge540, %297
  %334 = call i32 @zgbtrs_(ptr noundef nonnull %26, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull @c__1, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %9, ptr noundef %16, ptr noundef nonnull %1, ptr noundef nonnull %18) #5
  br label %.loopexit481.backedge

..loopexit481_crit_edge:                          ; preds = %.lr.ph533.prol.loopexit, %.lr.ph533, %middle.block611
  %335 = phi <2 x double> [ %271, %middle.block611 ], [ %.lcssa657.unr, %.lr.ph533.prol.loopexit ], [ %295, %.lr.ph533 ]
  store <2 x double> %335, ptr %23, align 16, !tbaa !9
  br label %.loopexit481.backedge

336:                                              ; preds = %.loopexit481
  %337 = load i64, ptr %1, align 8, !tbaa !5
  %.not471545 = icmp slt i64 %337, 1
  br i1 %.not471545, label %._crit_edge550.thread, label %.lr.ph549

.lr.ph549:                                        ; preds = %336, %.lr.ph549
  %.1547 = phi double [ %348, %.lr.ph549 ], [ 0.000000e+00, %336 ]
  %.7546 = phi i64 [ %349, %.lr.ph549 ], [ 1, %336 ]
  %gep544 = getelementptr %struct.doublecomplex, ptr %invariant.gep496, i64 %.7546
  %338 = load double, ptr %gep544, align 8, !tbaa !19
  %339 = call double @d_imag(ptr noundef nonnull %gep544) #5
  %340 = insertelement <2 x double> poison, double %338, i64 0
  %341 = insertelement <2 x double> %340, double %339, i64 1
  %342 = fcmp oge <2 x double> %341, zeroinitializer
  %343 = fneg <2 x double> %341
  %344 = select <2 x i1> %342, <2 x double> %341, <2 x double> %343
  %shift648 = shufflevector <2 x double> %344, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %345 = fadd <2 x double> %344, %shift648
  %346 = extractelement <2 x double> %345, i64 0
  %347 = fcmp oge double %.1547, %346
  %348 = select i1 %347, double %.1547, double %346
  %349 = add nuw i64 %.7546, 1
  %exitcond574.not = icmp eq i64 %.7546, %337
  br i1 %exitcond574.not, label %._crit_edge550, label %.lr.ph549, !llvm.loop !38

._crit_edge550:                                   ; preds = %.lr.ph549
  %350 = fcmp une double %348, 0.000000e+00
  br i1 %350, label %351, label %._crit_edge550.thread

351:                                              ; preds = %._crit_edge550
  %352 = load double, ptr %256, align 8, !tbaa !9
  %353 = fdiv double %352, %348
  store double %353, ptr %256, align 8, !tbaa !9
  br label %._crit_edge550.thread

._crit_edge550.thread:                            ; preds = %336, %._crit_edge550, %351
  %354 = add nuw nsw i64 %.1445555, 1
  %.not462.not = icmp slt i64 %.1445555, %113
  br i1 %.not462.not, label %.preheader, label %.loopexit, !llvm.loop !39

.loopexit:                                        ; preds = %._crit_edge550.thread, %.lr.ph559.prol.loopexit, %.lr.ph559, %middle.block630, %77, %103, %78, %.thread
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #5
  ret i32 0
}

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

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

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

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

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #3

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.smin.i64(i64, i64) #4

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.smax.i64(i64, i64) #4

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

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 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = distinct !{!11, !12, !13, !14}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!"llvm.loop.isvectorized", i32 1}
!14 = !{!"llvm.loop.unroll.runtime.disable"}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.unroll.disable"}
!17 = distinct !{!17, !12, !13}
!18 = !{!7, !7, i64 0}
!19 = !{!20, !10, i64 0}
!20 = !{!"", !10, i64 0, !10, i64 8}
!21 = distinct !{!21, !12}
!22 = distinct !{!22, !12}
!23 = distinct !{!23, !12}
!24 = distinct !{!24, !12}
!25 = distinct !{!25, !12}
!26 = distinct !{!26, !12}
!27 = distinct !{!27, !12}
!28 = !{!29}
!29 = distinct !{!29, !30}
!30 = distinct !{!30, !"LVerDomain"}
!31 = distinct !{!31, !12, !13, !14}
!32 = distinct !{!32, !12, !13}
!33 = !{!34}
!34 = distinct !{!34, !35}
!35 = distinct !{!35, !"LVerDomain"}
!36 = distinct !{!36, !12, !13, !14}
!37 = distinct !{!37, !12, !13}
!38 = distinct !{!38, !12}
!39 = distinct !{!39, !12}


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