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

; 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 [7 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.3 = external hidden unnamed_addr constant [7 x i8], align 1
@c_n1 = external hidden global i64, align 8
@.str.4 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [6 x i8], align 1
@c_b1 = external hidden global %struct.doublecomplex, align 8
@.str.6 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [11 x i8], align 1
@c_b29 = external hidden global double, align 8
@c_b30 = external hidden global double, align 8
@.str.8 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [6 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i32 @zpstrf_(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) #0 {
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca i64, align 8
  %23 = alloca i64, align 8
  %24 = alloca i64, align 8
  %25 = alloca i64, align 8
  %26 = alloca i64, align 8
  %27 = alloca double, align 8
  %28 = alloca %struct.doublecomplex, align 8
  %29 = alloca %struct.doublecomplex, align 8
  %30 = alloca i64, align 8
  %31 = alloca i64, align 8
  %32 = alloca i64, align 8
  %33 = alloca i64, align 8
  %34 = alloca i64, align 8
  %35 = alloca i64, align 8
  %36 = alloca double, align 8
  %37 = alloca i64, align 8
  %38 = alloca double, align 8
  %39 = alloca i64, align 8
  %40 = alloca double, align 8
  %41 = alloca i64, align 8
  %42 = alloca %struct.doublecomplex, align 8
  %43 = alloca i32, align 4
  store ptr %0, ptr %11, align 8, !tbaa !5
  store ptr %1, ptr %12, align 8, !tbaa !5
  store ptr %2, ptr %13, align 8, !tbaa !5
  store ptr %3, ptr %14, align 8, !tbaa !5
  store ptr %4, ptr %15, align 8, !tbaa !5
  store ptr %5, ptr %16, align 8, !tbaa !5
  store ptr %6, ptr %17, align 8, !tbaa !5
  store ptr %7, ptr %18, align 8, !tbaa !5
  store ptr %8, ptr %19, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %28) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %29) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %42) #5
  %44 = load ptr, ptr %18, align 8, !tbaa !5
  %45 = getelementptr inbounds double, ptr %44, i32 -1
  store ptr %45, ptr %18, align 8, !tbaa !5
  %46 = load ptr, ptr %15, align 8, !tbaa !5
  %47 = getelementptr inbounds i64, ptr %46, i32 -1
  store ptr %47, ptr %15, align 8, !tbaa !5
  %48 = load ptr, ptr %14, align 8, !tbaa !5
  %49 = load i64, ptr %48, align 8, !tbaa !9
  store i64 %49, ptr %20, align 8, !tbaa !9
  %50 = load i64, ptr %20, align 8, !tbaa !9
  %51 = add nsw i64 1, %50
  store i64 %51, ptr %21, align 8, !tbaa !9
  %52 = load i64, ptr %21, align 8, !tbaa !9
  %53 = load ptr, ptr %13, align 8, !tbaa !5
  %54 = sub i64 0, %52
  %55 = getelementptr inbounds %struct.doublecomplex, ptr %53, i64 %54
  store ptr %55, ptr %13, align 8, !tbaa !5
  %56 = load ptr, ptr %19, align 8, !tbaa !5
  store i64 0, ptr %56, align 8, !tbaa !9
  %57 = load ptr, ptr %11, align 8, !tbaa !5
  %58 = call i64 @lsame_(ptr noundef %57, ptr noundef @.str)
  store i64 %58, ptr %41, align 8, !tbaa !9
  %59 = load i64, ptr %41, align 8, !tbaa !9
  %60 = icmp ne i64 %59, 0
  br i1 %60, label %67, label %61

61:                                               ; preds = %9
  %62 = load ptr, ptr %11, align 8, !tbaa !5
  %63 = call i64 @lsame_(ptr noundef %62, ptr noundef @.str.1)
  %64 = icmp ne i64 %63, 0
  br i1 %64, label %67, label %65

65:                                               ; preds = %61
  %66 = load ptr, ptr %19, align 8, !tbaa !5
  store i64 -1, ptr %66, align 8, !tbaa !9
  br label %90

67:                                               ; preds = %61, %9
  %68 = load ptr, ptr %12, align 8, !tbaa !5
  %69 = load i64, ptr %68, align 8, !tbaa !9
  %70 = icmp slt i64 %69, 0
  br i1 %70, label %71, label %73

71:                                               ; preds = %67
  %72 = load ptr, ptr %19, align 8, !tbaa !5
  store i64 -2, ptr %72, align 8, !tbaa !9
  br label %89

73:                                               ; preds = %67
  %74 = load ptr, ptr %14, align 8, !tbaa !5
  %75 = load i64, ptr %74, align 8, !tbaa !9
  %76 = load ptr, ptr %12, align 8, !tbaa !5
  %77 = load i64, ptr %76, align 8, !tbaa !9
  %78 = icmp sge i64 1, %77
  br i1 %78, label %79, label %80

79:                                               ; preds = %73
  br label %83

80:                                               ; preds = %73
  %81 = load ptr, ptr %12, align 8, !tbaa !5
  %82 = load i64, ptr %81, align 8, !tbaa !9
  br label %83

83:                                               ; preds = %80, %79
  %84 = phi i64 [ 1, %79 ], [ %82, %80 ]
  %85 = icmp slt i64 %75, %84
  br i1 %85, label %86, label %88

86:                                               ; preds = %83
  %87 = load ptr, ptr %19, align 8, !tbaa !5
  store i64 -4, ptr %87, align 8, !tbaa !9
  br label %88

88:                                               ; preds = %86, %83
  br label %89

89:                                               ; preds = %88, %71
  br label %90

90:                                               ; preds = %89, %65
  %91 = load ptr, ptr %19, align 8, !tbaa !5
  %92 = load i64, ptr %91, align 8, !tbaa !9
  %93 = icmp ne i64 %92, 0
  br i1 %93, label %94, label %99

94:                                               ; preds = %90
  %95 = load ptr, ptr %19, align 8, !tbaa !5
  %96 = load i64, ptr %95, align 8, !tbaa !9
  %97 = sub nsw i64 0, %96
  store i64 %97, ptr %22, align 8, !tbaa !9
  %98 = call i32 @xerbla_(ptr noundef @.str.2, ptr noundef %22)
  store i32 0, ptr %10, align 4
  store i32 1, ptr %43, align 4
  br label %1291

99:                                               ; preds = %90
  %100 = load ptr, ptr %12, align 8, !tbaa !5
  %101 = load i64, ptr %100, align 8, !tbaa !9
  %102 = icmp eq i64 %101, 0
  br i1 %102, label %103, label %104

103:                                              ; preds = %99
  store i32 0, ptr %10, align 4
  store i32 1, ptr %43, align 4
  br label %1291

104:                                              ; preds = %99
  %105 = load ptr, ptr %11, align 8, !tbaa !5
  %106 = load ptr, ptr %12, align 8, !tbaa !5
  %107 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.3, ptr noundef %105, ptr noundef %106, ptr noundef @c_n1, ptr noundef @c_n1, ptr noundef @c_n1)
  store i64 %107, ptr %35, align 8, !tbaa !9
  %108 = load i64, ptr %35, align 8, !tbaa !9
  %109 = icmp sle i64 %108, 1
  br i1 %109, label %115, label %110

110:                                              ; preds = %104
  %111 = load i64, ptr %35, align 8, !tbaa !9
  %112 = load ptr, ptr %12, align 8, !tbaa !5
  %113 = load i64, ptr %112, align 8, !tbaa !9
  %114 = icmp sge i64 %111, %113
  br i1 %114, label %115, label %131

115:                                              ; preds = %110, %104
  %116 = load ptr, ptr %11, align 8, !tbaa !5
  %117 = load ptr, ptr %12, align 8, !tbaa !5
  %118 = load ptr, ptr %13, align 8, !tbaa !5
  %119 = load i64, ptr %20, align 8, !tbaa !9
  %120 = add nsw i64 %119, 1
  %121 = getelementptr inbounds %struct.doublecomplex, ptr %118, i64 %120
  %122 = load ptr, ptr %14, align 8, !tbaa !5
  %123 = load ptr, ptr %15, align 8, !tbaa !5
  %124 = getelementptr inbounds i64, ptr %123, i64 1
  %125 = load ptr, ptr %16, align 8, !tbaa !5
  %126 = load ptr, ptr %17, align 8, !tbaa !5
  %127 = load ptr, ptr %18, align 8, !tbaa !5
  %128 = getelementptr inbounds double, ptr %127, i64 1
  %129 = load ptr, ptr %19, align 8, !tbaa !5
  %130 = call i32 @zpstf2_(ptr noundef %116, ptr noundef %117, ptr noundef %121, ptr noundef %122, ptr noundef %124, ptr noundef %125, ptr noundef %126, ptr noundef %128, ptr noundef %129)
  br label %1290

131:                                              ; preds = %110
  %132 = load ptr, ptr %12, align 8, !tbaa !5
  %133 = load i64, ptr %132, align 8, !tbaa !9
  store i64 %133, ptr %22, align 8, !tbaa !9
  store i64 1, ptr %30, align 8, !tbaa !9
  br label %134

134:                                              ; preds = %143, %131
  %135 = load i64, ptr %30, align 8, !tbaa !9
  %136 = load i64, ptr %22, align 8, !tbaa !9
  %137 = icmp sle i64 %135, %136
  br i1 %137, label %138, label %146

138:                                              ; preds = %134
  %139 = load i64, ptr %30, align 8, !tbaa !9
  %140 = load ptr, ptr %15, align 8, !tbaa !5
  %141 = load i64, ptr %30, align 8, !tbaa !9
  %142 = getelementptr inbounds i64, ptr %140, i64 %141
  store i64 %139, ptr %142, align 8, !tbaa !9
  br label %143

143:                                              ; preds = %138
  %144 = load i64, ptr %30, align 8, !tbaa !9
  %145 = add nsw i64 %144, 1
  store i64 %145, ptr %30, align 8, !tbaa !9
  br label %134, !llvm.loop !11

146:                                              ; preds = %134
  %147 = load ptr, ptr %12, align 8, !tbaa !5
  %148 = load i64, ptr %147, align 8, !tbaa !9
  store i64 %148, ptr %22, align 8, !tbaa !9
  store i64 1, ptr %30, align 8, !tbaa !9
  br label %149

149:                                              ; preds = %167, %146
  %150 = load i64, ptr %30, align 8, !tbaa !9
  %151 = load i64, ptr %22, align 8, !tbaa !9
  %152 = icmp sle i64 %150, %151
  br i1 %152, label %153, label %170

153:                                              ; preds = %149
  %154 = load i64, ptr %30, align 8, !tbaa !9
  %155 = load i64, ptr %30, align 8, !tbaa !9
  %156 = load i64, ptr %20, align 8, !tbaa !9
  %157 = mul nsw i64 %155, %156
  %158 = add nsw i64 %154, %157
  store i64 %158, ptr %23, align 8, !tbaa !9
  %159 = load ptr, ptr %13, align 8, !tbaa !5
  %160 = load i64, ptr %23, align 8, !tbaa !9
  %161 = getelementptr inbounds %struct.doublecomplex, ptr %159, i64 %160
  %162 = getelementptr inbounds %struct.doublecomplex, ptr %161, i32 0, i32 0
  %163 = load double, ptr %162, align 8, !tbaa !13
  %164 = load ptr, ptr %18, align 8, !tbaa !5
  %165 = load i64, ptr %30, align 8, !tbaa !9
  %166 = getelementptr inbounds double, ptr %164, i64 %165
  store double %163, ptr %166, align 8, !tbaa !16
  br label %167

167:                                              ; preds = %153
  %168 = load i64, ptr %30, align 8, !tbaa !9
  %169 = add nsw i64 %168, 1
  store i64 %169, ptr %30, align 8, !tbaa !9
  br label %149, !llvm.loop !17

170:                                              ; preds = %149
  %171 = load ptr, ptr %18, align 8, !tbaa !5
  %172 = getelementptr inbounds double, ptr %171, i64 1
  %173 = load ptr, ptr %12, align 8, !tbaa !5
  %174 = call i64 @dmaxloc_(ptr noundef %172, ptr noundef %173)
  store i64 %174, ptr %37, align 8, !tbaa !9
  %175 = load i64, ptr %37, align 8, !tbaa !9
  %176 = load i64, ptr %37, align 8, !tbaa !9
  %177 = load i64, ptr %20, align 8, !tbaa !9
  %178 = mul nsw i64 %176, %177
  %179 = add nsw i64 %175, %178
  store i64 %179, ptr %22, align 8, !tbaa !9
  %180 = load ptr, ptr %13, align 8, !tbaa !5
  %181 = load i64, ptr %22, align 8, !tbaa !9
  %182 = getelementptr inbounds %struct.doublecomplex, ptr %180, i64 %181
  %183 = getelementptr inbounds %struct.doublecomplex, ptr %182, i32 0, i32 0
  %184 = load double, ptr %183, align 8, !tbaa !13
  store double %184, ptr %36, align 8, !tbaa !16
  %185 = load double, ptr %36, align 8, !tbaa !16
  %186 = fcmp oeq double %185, 0.000000e+00
  br i1 %186, label %190, label %187

187:                                              ; preds = %170
  %188 = call i64 @disnan_(ptr noundef %36)
  %189 = icmp ne i64 %188, 0
  br i1 %189, label %190, label %193

190:                                              ; preds = %187, %170
  %191 = load ptr, ptr %16, align 8, !tbaa !5
  store i64 0, ptr %191, align 8, !tbaa !9
  %192 = load ptr, ptr %19, align 8, !tbaa !5
  store i64 1, ptr %192, align 8, !tbaa !9
  br label %1290

193:                                              ; preds = %187
  %194 = load ptr, ptr %17, align 8, !tbaa !5
  %195 = load double, ptr %194, align 8, !tbaa !16
  %196 = fcmp olt double %195, 0.000000e+00
  br i1 %196, label %197, label %205

197:                                              ; preds = %193
  %198 = load ptr, ptr %12, align 8, !tbaa !5
  %199 = load i64, ptr %198, align 8, !tbaa !9
  %200 = sitofp i64 %199 to double
  %201 = call double @dlamch_(ptr noundef @.str.4)
  %202 = fmul double %200, %201
  %203 = load double, ptr %36, align 8, !tbaa !16
  %204 = fmul double %202, %203
  store double %204, ptr %40, align 8, !tbaa !16
  br label %208

205:                                              ; preds = %193
  %206 = load ptr, ptr %17, align 8, !tbaa !5
  %207 = load double, ptr %206, align 8, !tbaa !16
  store double %207, ptr %40, align 8, !tbaa !16
  br label %208

208:                                              ; preds = %205, %197
  %209 = load i64, ptr %41, align 8, !tbaa !9
  %210 = icmp ne i64 %209, 0
  br i1 %210, label %211, label %747

211:                                              ; preds = %208
  %212 = load ptr, ptr %12, align 8, !tbaa !5
  %213 = load i64, ptr %212, align 8, !tbaa !9
  store i64 %213, ptr %22, align 8, !tbaa !9
  %214 = load i64, ptr %35, align 8, !tbaa !9
  store i64 %214, ptr %23, align 8, !tbaa !9
  store i64 1, ptr %32, align 8, !tbaa !9
  br label %215

215:                                              ; preds = %742, %211
  %216 = load i64, ptr %23, align 8, !tbaa !9
  %217 = icmp slt i64 %216, 0
  br i1 %217, label %218, label %223

218:                                              ; preds = %215
  %219 = load i64, ptr %32, align 8, !tbaa !9
  %220 = load i64, ptr %22, align 8, !tbaa !9
  %221 = icmp sge i64 %219, %220
  %222 = zext i1 %221 to i32
  br label %228

223:                                              ; preds = %215
  %224 = load i64, ptr %32, align 8, !tbaa !9
  %225 = load i64, ptr %22, align 8, !tbaa !9
  %226 = icmp sle i64 %224, %225
  %227 = zext i1 %226 to i32
  br label %228

228:                                              ; preds = %223, %218
  %229 = phi i32 [ %222, %218 ], [ %227, %223 ]
  %230 = icmp ne i32 %229, 0
  br i1 %230, label %231, label %746

231:                                              ; preds = %228
  %232 = load i64, ptr %35, align 8, !tbaa !9
  store i64 %232, ptr %24, align 8, !tbaa !9
  %233 = load ptr, ptr %12, align 8, !tbaa !5
  %234 = load i64, ptr %233, align 8, !tbaa !9
  %235 = load i64, ptr %32, align 8, !tbaa !9
  %236 = sub nsw i64 %234, %235
  %237 = add nsw i64 %236, 1
  store i64 %237, ptr %25, align 8, !tbaa !9
  %238 = load i64, ptr %24, align 8, !tbaa !9
  %239 = load i64, ptr %25, align 8, !tbaa !9
  %240 = icmp sle i64 %238, %239
  br i1 %240, label %241, label %243

241:                                              ; preds = %231
  %242 = load i64, ptr %24, align 8, !tbaa !9
  br label %245

243:                                              ; preds = %231
  %244 = load i64, ptr %25, align 8, !tbaa !9
  br label %245

245:                                              ; preds = %243, %241
  %246 = phi i64 [ %242, %241 ], [ %244, %243 ]
  store i64 %246, ptr %34, align 8, !tbaa !9
  %247 = load ptr, ptr %12, align 8, !tbaa !5
  %248 = load i64, ptr %247, align 8, !tbaa !9
  store i64 %248, ptr %24, align 8, !tbaa !9
  %249 = load i64, ptr %32, align 8, !tbaa !9
  store i64 %249, ptr %30, align 8, !tbaa !9
  br label %250

250:                                              ; preds = %258, %245
  %251 = load i64, ptr %30, align 8, !tbaa !9
  %252 = load i64, ptr %24, align 8, !tbaa !9
  %253 = icmp sle i64 %251, %252
  br i1 %253, label %254, label %261

254:                                              ; preds = %250
  %255 = load ptr, ptr %18, align 8, !tbaa !5
  %256 = load i64, ptr %30, align 8, !tbaa !9
  %257 = getelementptr inbounds double, ptr %255, i64 %256
  store double 0.000000e+00, ptr %257, align 8, !tbaa !16
  br label %258

258:                                              ; preds = %254
  %259 = load i64, ptr %30, align 8, !tbaa !9
  %260 = add nsw i64 %259, 1
  store i64 %260, ptr %30, align 8, !tbaa !9
  br label %250, !llvm.loop !18

261:                                              ; preds = %250
  %262 = load i64, ptr %32, align 8, !tbaa !9
  %263 = load i64, ptr %34, align 8, !tbaa !9
  %264 = add nsw i64 %262, %263
  %265 = sub nsw i64 %264, 1
  store i64 %265, ptr %24, align 8, !tbaa !9
  %266 = load i64, ptr %32, align 8, !tbaa !9
  store i64 %266, ptr %31, align 8, !tbaa !9
  br label %267

267:                                              ; preds = %708, %261
  %268 = load i64, ptr %31, align 8, !tbaa !9
  %269 = load i64, ptr %24, align 8, !tbaa !9
  %270 = icmp sle i64 %268, %269
  br i1 %270, label %271, label %711

271:                                              ; preds = %267
  %272 = load ptr, ptr %12, align 8, !tbaa !5
  %273 = load i64, ptr %272, align 8, !tbaa !9
  store i64 %273, ptr %25, align 8, !tbaa !9
  %274 = load i64, ptr %31, align 8, !tbaa !9
  store i64 %274, ptr %30, align 8, !tbaa !9
  br label %275

275:                                              ; preds = %362, %271
  %276 = load i64, ptr %30, align 8, !tbaa !9
  %277 = load i64, ptr %25, align 8, !tbaa !9
  %278 = icmp sle i64 %276, %277
  br i1 %278, label %279, label %365

279:                                              ; preds = %275
  %280 = load i64, ptr %31, align 8, !tbaa !9
  %281 = load i64, ptr %32, align 8, !tbaa !9
  %282 = icmp sgt i64 %280, %281
  br i1 %282, label %283, label %340

283:                                              ; preds = %279
  %284 = load ptr, ptr %13, align 8, !tbaa !5
  %285 = load i64, ptr %31, align 8, !tbaa !9
  %286 = sub nsw i64 %285, 1
  %287 = load i64, ptr %30, align 8, !tbaa !9
  %288 = load i64, ptr %20, align 8, !tbaa !9
  %289 = mul nsw i64 %287, %288
  %290 = add nsw i64 %286, %289
  %291 = getelementptr inbounds %struct.doublecomplex, ptr %284, i64 %290
  call void @d_cnjg(ptr noundef %29, ptr noundef %291)
  %292 = load i64, ptr %31, align 8, !tbaa !9
  %293 = sub nsw i64 %292, 1
  %294 = load i64, ptr %30, align 8, !tbaa !9
  %295 = load i64, ptr %20, align 8, !tbaa !9
  %296 = mul nsw i64 %294, %295
  %297 = add nsw i64 %293, %296
  store i64 %297, ptr %26, align 8, !tbaa !9
  %298 = getelementptr inbounds %struct.doublecomplex, ptr %29, i32 0, i32 0
  %299 = load double, ptr %298, align 8, !tbaa !13
  %300 = load ptr, ptr %13, align 8, !tbaa !5
  %301 = load i64, ptr %26, align 8, !tbaa !9
  %302 = getelementptr inbounds %struct.doublecomplex, ptr %300, i64 %301
  %303 = getelementptr inbounds %struct.doublecomplex, ptr %302, i32 0, i32 0
  %304 = load double, ptr %303, align 8, !tbaa !13
  %305 = getelementptr inbounds %struct.doublecomplex, ptr %29, i32 0, i32 1
  %306 = load double, ptr %305, align 8, !tbaa !19
  %307 = load ptr, ptr %13, align 8, !tbaa !5
  %308 = load i64, ptr %26, align 8, !tbaa !9
  %309 = getelementptr inbounds %struct.doublecomplex, ptr %307, i64 %308
  %310 = getelementptr inbounds %struct.doublecomplex, ptr %309, i32 0, i32 1
  %311 = load double, ptr %310, align 8, !tbaa !19
  %312 = fmul double %306, %311
  %313 = fneg double %312
  %314 = call double @llvm.fmuladd.f64(double %299, double %304, double %313)
  %315 = getelementptr inbounds %struct.doublecomplex, ptr %28, i32 0, i32 0
  store double %314, ptr %315, align 8, !tbaa !13
  %316 = getelementptr inbounds %struct.doublecomplex, ptr %29, i32 0, i32 0
  %317 = load double, ptr %316, align 8, !tbaa !13
  %318 = load ptr, ptr %13, align 8, !tbaa !5
  %319 = load i64, ptr %26, align 8, !tbaa !9
  %320 = getelementptr inbounds %struct.doublecomplex, ptr %318, i64 %319
  %321 = getelementptr inbounds %struct.doublecomplex, ptr %320, i32 0, i32 1
  %322 = load double, ptr %321, align 8, !tbaa !19
  %323 = getelementptr inbounds %struct.doublecomplex, ptr %29, i32 0, i32 1
  %324 = load double, ptr %323, align 8, !tbaa !19
  %325 = load ptr, ptr %13, align 8, !tbaa !5
  %326 = load i64, ptr %26, align 8, !tbaa !9
  %327 = getelementptr inbounds %struct.doublecomplex, ptr %325, i64 %326
  %328 = getelementptr inbounds %struct.doublecomplex, ptr %327, i32 0, i32 0
  %329 = load double, ptr %328, align 8, !tbaa !13
  %330 = fmul double %324, %329
  %331 = call double @llvm.fmuladd.f64(double %317, double %322, double %330)
  %332 = getelementptr inbounds %struct.doublecomplex, ptr %28, i32 0, i32 1
  store double %331, ptr %332, align 8, !tbaa !19
  %333 = getelementptr inbounds %struct.doublecomplex, ptr %28, i32 0, i32 0
  %334 = load double, ptr %333, align 8, !tbaa !13
  %335 = load ptr, ptr %18, align 8, !tbaa !5
  %336 = load i64, ptr %30, align 8, !tbaa !9
  %337 = getelementptr inbounds double, ptr %335, i64 %336
  %338 = load double, ptr %337, align 8, !tbaa !16
  %339 = fadd double %338, %334
  store double %339, ptr %337, align 8, !tbaa !16
  br label %340

340:                                              ; preds = %283, %279
  %341 = load i64, ptr %30, align 8, !tbaa !9
  %342 = load i64, ptr %30, align 8, !tbaa !9
  %343 = load i64, ptr %20, align 8, !tbaa !9
  %344 = mul nsw i64 %342, %343
  %345 = add nsw i64 %341, %344
  store i64 %345, ptr %26, align 8, !tbaa !9
  %346 = load ptr, ptr %13, align 8, !tbaa !5
  %347 = load i64, ptr %26, align 8, !tbaa !9
  %348 = getelementptr inbounds %struct.doublecomplex, ptr %346, i64 %347
  %349 = getelementptr inbounds %struct.doublecomplex, ptr %348, i32 0, i32 0
  %350 = load double, ptr %349, align 8, !tbaa !13
  %351 = load ptr, ptr %18, align 8, !tbaa !5
  %352 = load i64, ptr %30, align 8, !tbaa !9
  %353 = getelementptr inbounds double, ptr %351, i64 %352
  %354 = load double, ptr %353, align 8, !tbaa !16
  %355 = fsub double %350, %354
  %356 = load ptr, ptr %18, align 8, !tbaa !5
  %357 = load ptr, ptr %12, align 8, !tbaa !5
  %358 = load i64, ptr %357, align 8, !tbaa !9
  %359 = load i64, ptr %30, align 8, !tbaa !9
  %360 = add nsw i64 %358, %359
  %361 = getelementptr inbounds double, ptr %356, i64 %360
  store double %355, ptr %361, align 8, !tbaa !16
  br label %362

362:                                              ; preds = %340
  %363 = load i64, ptr %30, align 8, !tbaa !9
  %364 = add nsw i64 %363, 1
  store i64 %364, ptr %30, align 8, !tbaa !9
  br label %275, !llvm.loop !20

365:                                              ; preds = %275
  %366 = load i64, ptr %31, align 8, !tbaa !9
  %367 = icmp sgt i64 %366, 1
  br i1 %367, label %368, label %418

368:                                              ; preds = %365
  %369 = load ptr, ptr %12, align 8, !tbaa !5
  %370 = load i64, ptr %369, align 8, !tbaa !9
  %371 = shl i64 %370, 1
  %372 = load ptr, ptr %12, align 8, !tbaa !5
  %373 = load i64, ptr %372, align 8, !tbaa !9
  %374 = load i64, ptr %31, align 8, !tbaa !9
  %375 = add nsw i64 %373, %374
  %376 = sub nsw i64 %371, %375
  %377 = add nsw i64 %376, 1
  store i64 %377, ptr %33, align 8, !tbaa !9
  %378 = load ptr, ptr %18, align 8, !tbaa !5
  %379 = load ptr, ptr %12, align 8, !tbaa !5
  %380 = load i64, ptr %379, align 8, !tbaa !9
  %381 = load i64, ptr %31, align 8, !tbaa !9
  %382 = add nsw i64 %380, %381
  %383 = getelementptr inbounds double, ptr %378, i64 %382
  %384 = call i64 @dmaxloc_(ptr noundef %383, ptr noundef %33)
  store i64 %384, ptr %39, align 8, !tbaa !9
  %385 = load i64, ptr %39, align 8, !tbaa !9
  %386 = load i64, ptr %31, align 8, !tbaa !9
  %387 = add nsw i64 %385, %386
  %388 = sub nsw i64 %387, 1
  store i64 %388, ptr %37, align 8, !tbaa !9
  %389 = load ptr, ptr %18, align 8, !tbaa !5
  %390 = load ptr, ptr %12, align 8, !tbaa !5
  %391 = load i64, ptr %390, align 8, !tbaa !9
  %392 = load i64, ptr %37, align 8, !tbaa !9
  %393 = add nsw i64 %391, %392
  %394 = getelementptr inbounds double, ptr %389, i64 %393
  %395 = load double, ptr %394, align 8, !tbaa !16
  store double %395, ptr %36, align 8, !tbaa !16
  %396 = load double, ptr %36, align 8, !tbaa !16
  %397 = load double, ptr %40, align 8, !tbaa !16
  %398 = fcmp ole double %396, %397
  br i1 %398, label %402, label %399

399:                                              ; preds = %368
  %400 = call i64 @disnan_(ptr noundef %36)
  %401 = icmp ne i64 %400, 0
  br i1 %401, label %402, label %417

402:                                              ; preds = %399, %368
  %403 = load i64, ptr %31, align 8, !tbaa !9
  %404 = load i64, ptr %31, align 8, !tbaa !9
  %405 = load i64, ptr %20, align 8, !tbaa !9
  %406 = mul nsw i64 %404, %405
  %407 = add nsw i64 %403, %406
  store i64 %407, ptr %25, align 8, !tbaa !9
  %408 = load double, ptr %36, align 8, !tbaa !16
  %409 = load ptr, ptr %13, align 8, !tbaa !5
  %410 = load i64, ptr %25, align 8, !tbaa !9
  %411 = getelementptr inbounds %struct.doublecomplex, ptr %409, i64 %410
  %412 = getelementptr inbounds %struct.doublecomplex, ptr %411, i32 0, i32 0
  store double %408, ptr %412, align 8, !tbaa !13
  %413 = load ptr, ptr %13, align 8, !tbaa !5
  %414 = load i64, ptr %25, align 8, !tbaa !9
  %415 = getelementptr inbounds %struct.doublecomplex, ptr %413, i64 %414
  %416 = getelementptr inbounds %struct.doublecomplex, ptr %415, i32 0, i32 1
  store double 0.000000e+00, ptr %416, align 8, !tbaa !19
  br label %1285

417:                                              ; preds = %399
  br label %418

418:                                              ; preds = %417, %365
  %419 = load i64, ptr %31, align 8, !tbaa !9
  %420 = load i64, ptr %37, align 8, !tbaa !9
  %421 = icmp ne i64 %419, %420
  br i1 %421, label %422, label %616

422:                                              ; preds = %418
  %423 = load i64, ptr %37, align 8, !tbaa !9
  %424 = load i64, ptr %37, align 8, !tbaa !9
  %425 = load i64, ptr %20, align 8, !tbaa !9
  %426 = mul nsw i64 %424, %425
  %427 = add nsw i64 %423, %426
  store i64 %427, ptr %25, align 8, !tbaa !9
  %428 = load i64, ptr %31, align 8, !tbaa !9
  %429 = load i64, ptr %31, align 8, !tbaa !9
  %430 = load i64, ptr %20, align 8, !tbaa !9
  %431 = mul nsw i64 %429, %430
  %432 = add nsw i64 %428, %431
  store i64 %432, ptr %26, align 8, !tbaa !9
  %433 = load ptr, ptr %13, align 8, !tbaa !5
  %434 = load i64, ptr %26, align 8, !tbaa !9
  %435 = getelementptr inbounds %struct.doublecomplex, ptr %433, i64 %434
  %436 = getelementptr inbounds %struct.doublecomplex, ptr %435, i32 0, i32 0
  %437 = load double, ptr %436, align 8, !tbaa !13
  %438 = load ptr, ptr %13, align 8, !tbaa !5
  %439 = load i64, ptr %25, align 8, !tbaa !9
  %440 = getelementptr inbounds %struct.doublecomplex, ptr %438, i64 %439
  %441 = getelementptr inbounds %struct.doublecomplex, ptr %440, i32 0, i32 0
  store double %437, ptr %441, align 8, !tbaa !13
  %442 = load ptr, ptr %13, align 8, !tbaa !5
  %443 = load i64, ptr %26, align 8, !tbaa !9
  %444 = getelementptr inbounds %struct.doublecomplex, ptr %442, i64 %443
  %445 = getelementptr inbounds %struct.doublecomplex, ptr %444, i32 0, i32 1
  %446 = load double, ptr %445, align 8, !tbaa !19
  %447 = load ptr, ptr %13, align 8, !tbaa !5
  %448 = load i64, ptr %25, align 8, !tbaa !9
  %449 = getelementptr inbounds %struct.doublecomplex, ptr %447, i64 %448
  %450 = getelementptr inbounds %struct.doublecomplex, ptr %449, i32 0, i32 1
  store double %446, ptr %450, align 8, !tbaa !19
  %451 = load i64, ptr %31, align 8, !tbaa !9
  %452 = sub nsw i64 %451, 1
  store i64 %452, ptr %25, align 8, !tbaa !9
  %453 = load ptr, ptr %13, align 8, !tbaa !5
  %454 = load i64, ptr %31, align 8, !tbaa !9
  %455 = load i64, ptr %20, align 8, !tbaa !9
  %456 = mul nsw i64 %454, %455
  %457 = add nsw i64 %456, 1
  %458 = getelementptr inbounds %struct.doublecomplex, ptr %453, i64 %457
  %459 = load ptr, ptr %13, align 8, !tbaa !5
  %460 = load i64, ptr %37, align 8, !tbaa !9
  %461 = load i64, ptr %20, align 8, !tbaa !9
  %462 = mul nsw i64 %460, %461
  %463 = add nsw i64 %462, 1
  %464 = getelementptr inbounds %struct.doublecomplex, ptr %459, i64 %463
  %465 = call i32 @f2c_zswap(ptr noundef %25, ptr noundef %458, ptr noundef @c__1, ptr noundef %464, ptr noundef @c__1)
  %466 = load i64, ptr %37, align 8, !tbaa !9
  %467 = load ptr, ptr %12, align 8, !tbaa !5
  %468 = load i64, ptr %467, align 8, !tbaa !9
  %469 = icmp slt i64 %466, %468
  br i1 %469, label %470, label %494

470:                                              ; preds = %422
  %471 = load ptr, ptr %12, align 8, !tbaa !5
  %472 = load i64, ptr %471, align 8, !tbaa !9
  %473 = load i64, ptr %37, align 8, !tbaa !9
  %474 = sub nsw i64 %472, %473
  store i64 %474, ptr %25, align 8, !tbaa !9
  %475 = load ptr, ptr %13, align 8, !tbaa !5
  %476 = load i64, ptr %31, align 8, !tbaa !9
  %477 = load i64, ptr %37, align 8, !tbaa !9
  %478 = add nsw i64 %477, 1
  %479 = load i64, ptr %20, align 8, !tbaa !9
  %480 = mul nsw i64 %478, %479
  %481 = add nsw i64 %476, %480
  %482 = getelementptr inbounds %struct.doublecomplex, ptr %475, i64 %481
  %483 = load ptr, ptr %14, align 8, !tbaa !5
  %484 = load ptr, ptr %13, align 8, !tbaa !5
  %485 = load i64, ptr %37, align 8, !tbaa !9
  %486 = load i64, ptr %37, align 8, !tbaa !9
  %487 = add nsw i64 %486, 1
  %488 = load i64, ptr %20, align 8, !tbaa !9
  %489 = mul nsw i64 %487, %488
  %490 = add nsw i64 %485, %489
  %491 = getelementptr inbounds %struct.doublecomplex, ptr %484, i64 %490
  %492 = load ptr, ptr %14, align 8, !tbaa !5
  %493 = call i32 @f2c_zswap(ptr noundef %25, ptr noundef %482, ptr noundef %483, ptr noundef %491, ptr noundef %492)
  br label %494

494:                                              ; preds = %470, %422
  %495 = load i64, ptr %37, align 8, !tbaa !9
  %496 = sub nsw i64 %495, 1
  store i64 %496, ptr %25, align 8, !tbaa !9
  %497 = load i64, ptr %31, align 8, !tbaa !9
  %498 = add nsw i64 %497, 1
  store i64 %498, ptr %30, align 8, !tbaa !9
  br label %499

499:                                              ; preds = %558, %494
  %500 = load i64, ptr %30, align 8, !tbaa !9
  %501 = load i64, ptr %25, align 8, !tbaa !9
  %502 = icmp sle i64 %500, %501
  br i1 %502, label %503, label %561

503:                                              ; preds = %499
  %504 = load ptr, ptr %13, align 8, !tbaa !5
  %505 = load i64, ptr %31, align 8, !tbaa !9
  %506 = load i64, ptr %30, align 8, !tbaa !9
  %507 = load i64, ptr %20, align 8, !tbaa !9
  %508 = mul nsw i64 %506, %507
  %509 = add nsw i64 %505, %508
  %510 = getelementptr inbounds %struct.doublecomplex, ptr %504, i64 %509
  call void @d_cnjg(ptr noundef %28, ptr noundef %510)
  %511 = getelementptr inbounds %struct.doublecomplex, ptr %28, i32 0, i32 0
  %512 = load double, ptr %511, align 8, !tbaa !13
  %513 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 0
  store double %512, ptr %513, align 8, !tbaa !13
  %514 = getelementptr inbounds %struct.doublecomplex, ptr %28, i32 0, i32 1
  %515 = load double, ptr %514, align 8, !tbaa !19
  %516 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 1
  store double %515, ptr %516, align 8, !tbaa !19
  %517 = load i64, ptr %31, align 8, !tbaa !9
  %518 = load i64, ptr %30, align 8, !tbaa !9
  %519 = load i64, ptr %20, align 8, !tbaa !9
  %520 = mul nsw i64 %518, %519
  %521 = add nsw i64 %517, %520
  store i64 %521, ptr %26, align 8, !tbaa !9
  %522 = load ptr, ptr %13, align 8, !tbaa !5
  %523 = load i64, ptr %30, align 8, !tbaa !9
  %524 = load i64, ptr %37, align 8, !tbaa !9
  %525 = load i64, ptr %20, align 8, !tbaa !9
  %526 = mul nsw i64 %524, %525
  %527 = add nsw i64 %523, %526
  %528 = getelementptr inbounds %struct.doublecomplex, ptr %522, i64 %527
  call void @d_cnjg(ptr noundef %28, ptr noundef %528)
  %529 = getelementptr inbounds %struct.doublecomplex, ptr %28, i32 0, i32 0
  %530 = load double, ptr %529, align 8, !tbaa !13
  %531 = load ptr, ptr %13, align 8, !tbaa !5
  %532 = load i64, ptr %26, align 8, !tbaa !9
  %533 = getelementptr inbounds %struct.doublecomplex, ptr %531, i64 %532
  %534 = getelementptr inbounds %struct.doublecomplex, ptr %533, i32 0, i32 0
  store double %530, ptr %534, align 8, !tbaa !13
  %535 = getelementptr inbounds %struct.doublecomplex, ptr %28, i32 0, i32 1
  %536 = load double, ptr %535, align 8, !tbaa !19
  %537 = load ptr, ptr %13, align 8, !tbaa !5
  %538 = load i64, ptr %26, align 8, !tbaa !9
  %539 = getelementptr inbounds %struct.doublecomplex, ptr %537, i64 %538
  %540 = getelementptr inbounds %struct.doublecomplex, ptr %539, i32 0, i32 1
  store double %536, ptr %540, align 8, !tbaa !19
  %541 = load i64, ptr %30, align 8, !tbaa !9
  %542 = load i64, ptr %37, align 8, !tbaa !9
  %543 = load i64, ptr %20, align 8, !tbaa !9
  %544 = mul nsw i64 %542, %543
  %545 = add nsw i64 %541, %544
  store i64 %545, ptr %26, align 8, !tbaa !9
  %546 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 0
  %547 = load double, ptr %546, align 8, !tbaa !13
  %548 = load ptr, ptr %13, align 8, !tbaa !5
  %549 = load i64, ptr %26, align 8, !tbaa !9
  %550 = getelementptr inbounds %struct.doublecomplex, ptr %548, i64 %549
  %551 = getelementptr inbounds %struct.doublecomplex, ptr %550, i32 0, i32 0
  store double %547, ptr %551, align 8, !tbaa !13
  %552 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 1
  %553 = load double, ptr %552, align 8, !tbaa !19
  %554 = load ptr, ptr %13, align 8, !tbaa !5
  %555 = load i64, ptr %26, align 8, !tbaa !9
  %556 = getelementptr inbounds %struct.doublecomplex, ptr %554, i64 %555
  %557 = getelementptr inbounds %struct.doublecomplex, ptr %556, i32 0, i32 1
  store double %553, ptr %557, align 8, !tbaa !19
  br label %558

558:                                              ; preds = %503
  %559 = load i64, ptr %30, align 8, !tbaa !9
  %560 = add nsw i64 %559, 1
  store i64 %560, ptr %30, align 8, !tbaa !9
  br label %499, !llvm.loop !21

561:                                              ; preds = %499
  %562 = load i64, ptr %31, align 8, !tbaa !9
  %563 = load i64, ptr %37, align 8, !tbaa !9
  %564 = load i64, ptr %20, align 8, !tbaa !9
  %565 = mul nsw i64 %563, %564
  %566 = add nsw i64 %562, %565
  store i64 %566, ptr %25, align 8, !tbaa !9
  %567 = load ptr, ptr %13, align 8, !tbaa !5
  %568 = load i64, ptr %31, align 8, !tbaa !9
  %569 = load i64, ptr %37, align 8, !tbaa !9
  %570 = load i64, ptr %20, align 8, !tbaa !9
  %571 = mul nsw i64 %569, %570
  %572 = add nsw i64 %568, %571
  %573 = getelementptr inbounds %struct.doublecomplex, ptr %567, i64 %572
  call void @d_cnjg(ptr noundef %28, ptr noundef %573)
  %574 = getelementptr inbounds %struct.doublecomplex, ptr %28, i32 0, i32 0
  %575 = load double, ptr %574, align 8, !tbaa !13
  %576 = load ptr, ptr %13, align 8, !tbaa !5
  %577 = load i64, ptr %25, align 8, !tbaa !9
  %578 = getelementptr inbounds %struct.doublecomplex, ptr %576, i64 %577
  %579 = getelementptr inbounds %struct.doublecomplex, ptr %578, i32 0, i32 0
  store double %575, ptr %579, align 8, !tbaa !13
  %580 = getelementptr inbounds %struct.doublecomplex, ptr %28, i32 0, i32 1
  %581 = load double, ptr %580, align 8, !tbaa !19
  %582 = load ptr, ptr %13, align 8, !tbaa !5
  %583 = load i64, ptr %25, align 8, !tbaa !9
  %584 = getelementptr inbounds %struct.doublecomplex, ptr %582, i64 %583
  %585 = getelementptr inbounds %struct.doublecomplex, ptr %584, i32 0, i32 1
  store double %581, ptr %585, align 8, !tbaa !19
  %586 = load ptr, ptr %18, align 8, !tbaa !5
  %587 = load i64, ptr %31, align 8, !tbaa !9
  %588 = getelementptr inbounds double, ptr %586, i64 %587
  %589 = load double, ptr %588, align 8, !tbaa !16
  store double %589, ptr %38, align 8, !tbaa !16
  %590 = load ptr, ptr %18, align 8, !tbaa !5
  %591 = load i64, ptr %37, align 8, !tbaa !9
  %592 = getelementptr inbounds double, ptr %590, i64 %591
  %593 = load double, ptr %592, align 8, !tbaa !16
  %594 = load ptr, ptr %18, align 8, !tbaa !5
  %595 = load i64, ptr %31, align 8, !tbaa !9
  %596 = getelementptr inbounds double, ptr %594, i64 %595
  store double %593, ptr %596, align 8, !tbaa !16
  %597 = load double, ptr %38, align 8, !tbaa !16
  %598 = load ptr, ptr %18, align 8, !tbaa !5
  %599 = load i64, ptr %37, align 8, !tbaa !9
  %600 = getelementptr inbounds double, ptr %598, i64 %599
  store double %597, ptr %600, align 8, !tbaa !16
  %601 = load ptr, ptr %15, align 8, !tbaa !5
  %602 = load i64, ptr %37, align 8, !tbaa !9
  %603 = getelementptr inbounds i64, ptr %601, i64 %602
  %604 = load i64, ptr %603, align 8, !tbaa !9
  store i64 %604, ptr %39, align 8, !tbaa !9
  %605 = load ptr, ptr %15, align 8, !tbaa !5
  %606 = load i64, ptr %31, align 8, !tbaa !9
  %607 = getelementptr inbounds i64, ptr %605, i64 %606
  %608 = load i64, ptr %607, align 8, !tbaa !9
  %609 = load ptr, ptr %15, align 8, !tbaa !5
  %610 = load i64, ptr %37, align 8, !tbaa !9
  %611 = getelementptr inbounds i64, ptr %609, i64 %610
  store i64 %608, ptr %611, align 8, !tbaa !9
  %612 = load i64, ptr %39, align 8, !tbaa !9
  %613 = load ptr, ptr %15, align 8, !tbaa !5
  %614 = load i64, ptr %31, align 8, !tbaa !9
  %615 = getelementptr inbounds i64, ptr %613, i64 %614
  store i64 %612, ptr %615, align 8, !tbaa !9
  br label %616

616:                                              ; preds = %561, %418
  %617 = load double, ptr %36, align 8, !tbaa !16
  %618 = call double @sqrt(double noundef %617) #5
  store double %618, ptr %36, align 8, !tbaa !16
  %619 = load i64, ptr %31, align 8, !tbaa !9
  %620 = load i64, ptr %31, align 8, !tbaa !9
  %621 = load i64, ptr %20, align 8, !tbaa !9
  %622 = mul nsw i64 %620, %621
  %623 = add nsw i64 %619, %622
  store i64 %623, ptr %25, align 8, !tbaa !9
  %624 = load double, ptr %36, align 8, !tbaa !16
  %625 = load ptr, ptr %13, align 8, !tbaa !5
  %626 = load i64, ptr %25, align 8, !tbaa !9
  %627 = getelementptr inbounds %struct.doublecomplex, ptr %625, i64 %626
  %628 = getelementptr inbounds %struct.doublecomplex, ptr %627, i32 0, i32 0
  store double %624, ptr %628, align 8, !tbaa !13
  %629 = load ptr, ptr %13, align 8, !tbaa !5
  %630 = load i64, ptr %25, align 8, !tbaa !9
  %631 = getelementptr inbounds %struct.doublecomplex, ptr %629, i64 %630
  %632 = getelementptr inbounds %struct.doublecomplex, ptr %631, i32 0, i32 1
  store double 0.000000e+00, ptr %632, align 8, !tbaa !19
  %633 = load i64, ptr %31, align 8, !tbaa !9
  %634 = load ptr, ptr %12, align 8, !tbaa !5
  %635 = load i64, ptr %634, align 8, !tbaa !9
  %636 = icmp slt i64 %633, %635
  br i1 %636, label %637, label %707

637:                                              ; preds = %616
  %638 = load i64, ptr %31, align 8, !tbaa !9
  %639 = sub nsw i64 %638, 1
  store i64 %639, ptr %25, align 8, !tbaa !9
  %640 = load ptr, ptr %13, align 8, !tbaa !5
  %641 = load i64, ptr %31, align 8, !tbaa !9
  %642 = load i64, ptr %20, align 8, !tbaa !9
  %643 = mul nsw i64 %641, %642
  %644 = add nsw i64 %643, 1
  %645 = getelementptr inbounds %struct.doublecomplex, ptr %640, i64 %644
  %646 = call i32 @zlacgv_(ptr noundef %25, ptr noundef %645, ptr noundef @c__1)
  %647 = load i64, ptr %31, align 8, !tbaa !9
  %648 = load i64, ptr %32, align 8, !tbaa !9
  %649 = sub nsw i64 %647, %648
  store i64 %649, ptr %25, align 8, !tbaa !9
  %650 = load ptr, ptr %12, align 8, !tbaa !5
  %651 = load i64, ptr %650, align 8, !tbaa !9
  %652 = load i64, ptr %31, align 8, !tbaa !9
  %653 = sub nsw i64 %651, %652
  store i64 %653, ptr %26, align 8, !tbaa !9
  %654 = getelementptr inbounds %struct.doublecomplex, ptr %28, i32 0, i32 0
  store double -1.000000e+00, ptr %654, align 8, !tbaa !13
  %655 = getelementptr inbounds %struct.doublecomplex, ptr %28, i32 0, i32 1
  store double -0.000000e+00, ptr %655, align 8, !tbaa !19
  %656 = load ptr, ptr %13, align 8, !tbaa !5
  %657 = load i64, ptr %32, align 8, !tbaa !9
  %658 = load i64, ptr %31, align 8, !tbaa !9
  %659 = add nsw i64 %658, 1
  %660 = load i64, ptr %20, align 8, !tbaa !9
  %661 = mul nsw i64 %659, %660
  %662 = add nsw i64 %657, %661
  %663 = getelementptr inbounds %struct.doublecomplex, ptr %656, i64 %662
  %664 = load ptr, ptr %14, align 8, !tbaa !5
  %665 = load ptr, ptr %13, align 8, !tbaa !5
  %666 = load i64, ptr %32, align 8, !tbaa !9
  %667 = load i64, ptr %31, align 8, !tbaa !9
  %668 = load i64, ptr %20, align 8, !tbaa !9
  %669 = mul nsw i64 %667, %668
  %670 = add nsw i64 %666, %669
  %671 = getelementptr inbounds %struct.doublecomplex, ptr %665, i64 %670
  %672 = load ptr, ptr %13, align 8, !tbaa !5
  %673 = load i64, ptr %31, align 8, !tbaa !9
  %674 = load i64, ptr %31, align 8, !tbaa !9
  %675 = add nsw i64 %674, 1
  %676 = load i64, ptr %20, align 8, !tbaa !9
  %677 = mul nsw i64 %675, %676
  %678 = add nsw i64 %673, %677
  %679 = getelementptr inbounds %struct.doublecomplex, ptr %672, i64 %678
  %680 = load ptr, ptr %14, align 8, !tbaa !5
  %681 = call i32 @f2c_zgemv(ptr noundef @.str.5, ptr noundef %25, ptr noundef %26, ptr noundef %28, ptr noundef %663, ptr noundef %664, ptr noundef %671, ptr noundef @c__1, ptr noundef @c_b1, ptr noundef %679, ptr noundef %680)
  %682 = load i64, ptr %31, align 8, !tbaa !9
  %683 = sub nsw i64 %682, 1
  store i64 %683, ptr %25, align 8, !tbaa !9
  %684 = load ptr, ptr %13, align 8, !tbaa !5
  %685 = load i64, ptr %31, align 8, !tbaa !9
  %686 = load i64, ptr %20, align 8, !tbaa !9
  %687 = mul nsw i64 %685, %686
  %688 = add nsw i64 %687, 1
  %689 = getelementptr inbounds %struct.doublecomplex, ptr %684, i64 %688
  %690 = call i32 @zlacgv_(ptr noundef %25, ptr noundef %689, ptr noundef @c__1)
  %691 = load ptr, ptr %12, align 8, !tbaa !5
  %692 = load i64, ptr %691, align 8, !tbaa !9
  %693 = load i64, ptr %31, align 8, !tbaa !9
  %694 = sub nsw i64 %692, %693
  store i64 %694, ptr %25, align 8, !tbaa !9
  %695 = load double, ptr %36, align 8, !tbaa !16
  %696 = fdiv double 1.000000e+00, %695
  store double %696, ptr %27, align 8, !tbaa !16
  %697 = load ptr, ptr %13, align 8, !tbaa !5
  %698 = load i64, ptr %31, align 8, !tbaa !9
  %699 = load i64, ptr %31, align 8, !tbaa !9
  %700 = add nsw i64 %699, 1
  %701 = load i64, ptr %20, align 8, !tbaa !9
  %702 = mul nsw i64 %700, %701
  %703 = add nsw i64 %698, %702
  %704 = getelementptr inbounds %struct.doublecomplex, ptr %697, i64 %703
  %705 = load ptr, ptr %14, align 8, !tbaa !5
  %706 = call i32 @f2c_zdscal(ptr noundef %25, ptr noundef %27, ptr noundef %704, ptr noundef %705)
  br label %707

707:                                              ; preds = %637, %616
  br label %708

708:                                              ; preds = %707
  %709 = load i64, ptr %31, align 8, !tbaa !9
  %710 = add nsw i64 %709, 1
  store i64 %710, ptr %31, align 8, !tbaa !9
  br label %267, !llvm.loop !22

711:                                              ; preds = %267
  %712 = load i64, ptr %32, align 8, !tbaa !9
  %713 = load i64, ptr %34, align 8, !tbaa !9
  %714 = add nsw i64 %712, %713
  %715 = load ptr, ptr %12, align 8, !tbaa !5
  %716 = load i64, ptr %715, align 8, !tbaa !9
  %717 = icmp sle i64 %714, %716
  br i1 %717, label %718, label %741

718:                                              ; preds = %711
  %719 = load ptr, ptr %12, align 8, !tbaa !5
  %720 = load i64, ptr %719, align 8, !tbaa !9
  %721 = load i64, ptr %31, align 8, !tbaa !9
  %722 = sub nsw i64 %720, %721
  %723 = add nsw i64 %722, 1
  store i64 %723, ptr %24, align 8, !tbaa !9
  %724 = load ptr, ptr %13, align 8, !tbaa !5
  %725 = load i64, ptr %32, align 8, !tbaa !9
  %726 = load i64, ptr %31, align 8, !tbaa !9
  %727 = load i64, ptr %20, align 8, !tbaa !9
  %728 = mul nsw i64 %726, %727
  %729 = add nsw i64 %725, %728
  %730 = getelementptr inbounds %struct.doublecomplex, ptr %724, i64 %729
  %731 = load ptr, ptr %14, align 8, !tbaa !5
  %732 = load ptr, ptr %13, align 8, !tbaa !5
  %733 = load i64, ptr %31, align 8, !tbaa !9
  %734 = load i64, ptr %31, align 8, !tbaa !9
  %735 = load i64, ptr %20, align 8, !tbaa !9
  %736 = mul nsw i64 %734, %735
  %737 = add nsw i64 %733, %736
  %738 = getelementptr inbounds %struct.doublecomplex, ptr %732, i64 %737
  %739 = load ptr, ptr %14, align 8, !tbaa !5
  %740 = call i32 @f2c_zherk(ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %24, ptr noundef %34, ptr noundef @c_b29, ptr noundef %730, ptr noundef %731, ptr noundef @c_b30, ptr noundef %738, ptr noundef %739)
  br label %741

741:                                              ; preds = %718, %711
  br label %742

742:                                              ; preds = %741
  %743 = load i64, ptr %23, align 8, !tbaa !9
  %744 = load i64, ptr %32, align 8, !tbaa !9
  %745 = add nsw i64 %744, %743
  store i64 %745, ptr %32, align 8, !tbaa !9
  br label %215, !llvm.loop !23

746:                                              ; preds = %228
  br label %1280

747:                                              ; preds = %208
  %748 = load ptr, ptr %12, align 8, !tbaa !5
  %749 = load i64, ptr %748, align 8, !tbaa !9
  store i64 %749, ptr %23, align 8, !tbaa !9
  %750 = load i64, ptr %35, align 8, !tbaa !9
  store i64 %750, ptr %22, align 8, !tbaa !9
  store i64 1, ptr %32, align 8, !tbaa !9
  br label %751

751:                                              ; preds = %1275, %747
  %752 = load i64, ptr %22, align 8, !tbaa !9
  %753 = icmp slt i64 %752, 0
  br i1 %753, label %754, label %759

754:                                              ; preds = %751
  %755 = load i64, ptr %32, align 8, !tbaa !9
  %756 = load i64, ptr %23, align 8, !tbaa !9
  %757 = icmp sge i64 %755, %756
  %758 = zext i1 %757 to i32
  br label %764

759:                                              ; preds = %751
  %760 = load i64, ptr %32, align 8, !tbaa !9
  %761 = load i64, ptr %23, align 8, !tbaa !9
  %762 = icmp sle i64 %760, %761
  %763 = zext i1 %762 to i32
  br label %764

764:                                              ; preds = %759, %754
  %765 = phi i32 [ %758, %754 ], [ %763, %759 ]
  %766 = icmp ne i32 %765, 0
  br i1 %766, label %767, label %1279

767:                                              ; preds = %764
  %768 = load i64, ptr %35, align 8, !tbaa !9
  store i64 %768, ptr %24, align 8, !tbaa !9
  %769 = load ptr, ptr %12, align 8, !tbaa !5
  %770 = load i64, ptr %769, align 8, !tbaa !9
  %771 = load i64, ptr %32, align 8, !tbaa !9
  %772 = sub nsw i64 %770, %771
  %773 = add nsw i64 %772, 1
  store i64 %773, ptr %25, align 8, !tbaa !9
  %774 = load i64, ptr %24, align 8, !tbaa !9
  %775 = load i64, ptr %25, align 8, !tbaa !9
  %776 = icmp sle i64 %774, %775
  br i1 %776, label %777, label %779

777:                                              ; preds = %767
  %778 = load i64, ptr %24, align 8, !tbaa !9
  br label %781

779:                                              ; preds = %767
  %780 = load i64, ptr %25, align 8, !tbaa !9
  br label %781

781:                                              ; preds = %779, %777
  %782 = phi i64 [ %778, %777 ], [ %780, %779 ]
  store i64 %782, ptr %34, align 8, !tbaa !9
  %783 = load ptr, ptr %12, align 8, !tbaa !5
  %784 = load i64, ptr %783, align 8, !tbaa !9
  store i64 %784, ptr %24, align 8, !tbaa !9
  %785 = load i64, ptr %32, align 8, !tbaa !9
  store i64 %785, ptr %30, align 8, !tbaa !9
  br label %786

786:                                              ; preds = %794, %781
  %787 = load i64, ptr %30, align 8, !tbaa !9
  %788 = load i64, ptr %24, align 8, !tbaa !9
  %789 = icmp sle i64 %787, %788
  br i1 %789, label %790, label %797

790:                                              ; preds = %786
  %791 = load ptr, ptr %18, align 8, !tbaa !5
  %792 = load i64, ptr %30, align 8, !tbaa !9
  %793 = getelementptr inbounds double, ptr %791, i64 %792
  store double 0.000000e+00, ptr %793, align 8, !tbaa !16
  br label %794

794:                                              ; preds = %790
  %795 = load i64, ptr %30, align 8, !tbaa !9
  %796 = add nsw i64 %795, 1
  store i64 %796, ptr %30, align 8, !tbaa !9
  br label %786, !llvm.loop !24

797:                                              ; preds = %786
  %798 = load i64, ptr %32, align 8, !tbaa !9
  %799 = load i64, ptr %34, align 8, !tbaa !9
  %800 = add nsw i64 %798, %799
  %801 = sub nsw i64 %800, 1
  store i64 %801, ptr %24, align 8, !tbaa !9
  %802 = load i64, ptr %32, align 8, !tbaa !9
  store i64 %802, ptr %31, align 8, !tbaa !9
  br label %803

803:                                              ; preds = %1241, %797
  %804 = load i64, ptr %31, align 8, !tbaa !9
  %805 = load i64, ptr %24, align 8, !tbaa !9
  %806 = icmp sle i64 %804, %805
  br i1 %806, label %807, label %1244

807:                                              ; preds = %803
  %808 = load ptr, ptr %12, align 8, !tbaa !5
  %809 = load i64, ptr %808, align 8, !tbaa !9
  store i64 %809, ptr %25, align 8, !tbaa !9
  %810 = load i64, ptr %31, align 8, !tbaa !9
  store i64 %810, ptr %30, align 8, !tbaa !9
  br label %811

811:                                              ; preds = %898, %807
  %812 = load i64, ptr %30, align 8, !tbaa !9
  %813 = load i64, ptr %25, align 8, !tbaa !9
  %814 = icmp sle i64 %812, %813
  br i1 %814, label %815, label %901

815:                                              ; preds = %811
  %816 = load i64, ptr %31, align 8, !tbaa !9
  %817 = load i64, ptr %32, align 8, !tbaa !9
  %818 = icmp sgt i64 %816, %817
  br i1 %818, label %819, label %876

819:                                              ; preds = %815
  %820 = load ptr, ptr %13, align 8, !tbaa !5
  %821 = load i64, ptr %30, align 8, !tbaa !9
  %822 = load i64, ptr %31, align 8, !tbaa !9
  %823 = sub nsw i64 %822, 1
  %824 = load i64, ptr %20, align 8, !tbaa !9
  %825 = mul nsw i64 %823, %824
  %826 = add nsw i64 %821, %825
  %827 = getelementptr inbounds %struct.doublecomplex, ptr %820, i64 %826
  call void @d_cnjg(ptr noundef %29, ptr noundef %827)
  %828 = load i64, ptr %30, align 8, !tbaa !9
  %829 = load i64, ptr %31, align 8, !tbaa !9
  %830 = sub nsw i64 %829, 1
  %831 = load i64, ptr %20, align 8, !tbaa !9
  %832 = mul nsw i64 %830, %831
  %833 = add nsw i64 %828, %832
  store i64 %833, ptr %26, align 8, !tbaa !9
  %834 = getelementptr inbounds %struct.doublecomplex, ptr %29, i32 0, i32 0
  %835 = load double, ptr %834, align 8, !tbaa !13
  %836 = load ptr, ptr %13, align 8, !tbaa !5
  %837 = load i64, ptr %26, align 8, !tbaa !9
  %838 = getelementptr inbounds %struct.doublecomplex, ptr %836, i64 %837
  %839 = getelementptr inbounds %struct.doublecomplex, ptr %838, i32 0, i32 0
  %840 = load double, ptr %839, align 8, !tbaa !13
  %841 = getelementptr inbounds %struct.doublecomplex, ptr %29, i32 0, i32 1
  %842 = load double, ptr %841, align 8, !tbaa !19
  %843 = load ptr, ptr %13, align 8, !tbaa !5
  %844 = load i64, ptr %26, align 8, !tbaa !9
  %845 = getelementptr inbounds %struct.doublecomplex, ptr %843, i64 %844
  %846 = getelementptr inbounds %struct.doublecomplex, ptr %845, i32 0, i32 1
  %847 = load double, ptr %846, align 8, !tbaa !19
  %848 = fmul double %842, %847
  %849 = fneg double %848
  %850 = call double @llvm.fmuladd.f64(double %835, double %840, double %849)
  %851 = getelementptr inbounds %struct.doublecomplex, ptr %28, i32 0, i32 0
  store double %850, ptr %851, align 8, !tbaa !13
  %852 = getelementptr inbounds %struct.doublecomplex, ptr %29, i32 0, i32 0
  %853 = load double, ptr %852, align 8, !tbaa !13
  %854 = load ptr, ptr %13, align 8, !tbaa !5
  %855 = load i64, ptr %26, align 8, !tbaa !9
  %856 = getelementptr inbounds %struct.doublecomplex, ptr %854, i64 %855
  %857 = getelementptr inbounds %struct.doublecomplex, ptr %856, i32 0, i32 1
  %858 = load double, ptr %857, align 8, !tbaa !19
  %859 = getelementptr inbounds %struct.doublecomplex, ptr %29, i32 0, i32 1
  %860 = load double, ptr %859, align 8, !tbaa !19
  %861 = load ptr, ptr %13, align 8, !tbaa !5
  %862 = load i64, ptr %26, align 8, !tbaa !9
  %863 = getelementptr inbounds %struct.doublecomplex, ptr %861, i64 %862
  %864 = getelementptr inbounds %struct.doublecomplex, ptr %863, i32 0, i32 0
  %865 = load double, ptr %864, align 8, !tbaa !13
  %866 = fmul double %860, %865
  %867 = call double @llvm.fmuladd.f64(double %853, double %858, double %866)
  %868 = getelementptr inbounds %struct.doublecomplex, ptr %28, i32 0, i32 1
  store double %867, ptr %868, align 8, !tbaa !19
  %869 = getelementptr inbounds %struct.doublecomplex, ptr %28, i32 0, i32 0
  %870 = load double, ptr %869, align 8, !tbaa !13
  %871 = load ptr, ptr %18, align 8, !tbaa !5
  %872 = load i64, ptr %30, align 8, !tbaa !9
  %873 = getelementptr inbounds double, ptr %871, i64 %872
  %874 = load double, ptr %873, align 8, !tbaa !16
  %875 = fadd double %874, %870
  store double %875, ptr %873, align 8, !tbaa !16
  br label %876

876:                                              ; preds = %819, %815
  %877 = load i64, ptr %30, align 8, !tbaa !9
  %878 = load i64, ptr %30, align 8, !tbaa !9
  %879 = load i64, ptr %20, align 8, !tbaa !9
  %880 = mul nsw i64 %878, %879
  %881 = add nsw i64 %877, %880
  store i64 %881, ptr %26, align 8, !tbaa !9
  %882 = load ptr, ptr %13, align 8, !tbaa !5
  %883 = load i64, ptr %26, align 8, !tbaa !9
  %884 = getelementptr inbounds %struct.doublecomplex, ptr %882, i64 %883
  %885 = getelementptr inbounds %struct.doublecomplex, ptr %884, i32 0, i32 0
  %886 = load double, ptr %885, align 8, !tbaa !13
  %887 = load ptr, ptr %18, align 8, !tbaa !5
  %888 = load i64, ptr %30, align 8, !tbaa !9
  %889 = getelementptr inbounds double, ptr %887, i64 %888
  %890 = load double, ptr %889, align 8, !tbaa !16
  %891 = fsub double %886, %890
  %892 = load ptr, ptr %18, align 8, !tbaa !5
  %893 = load ptr, ptr %12, align 8, !tbaa !5
  %894 = load i64, ptr %893, align 8, !tbaa !9
  %895 = load i64, ptr %30, align 8, !tbaa !9
  %896 = add nsw i64 %894, %895
  %897 = getelementptr inbounds double, ptr %892, i64 %896
  store double %891, ptr %897, align 8, !tbaa !16
  br label %898

898:                                              ; preds = %876
  %899 = load i64, ptr %30, align 8, !tbaa !9
  %900 = add nsw i64 %899, 1
  store i64 %900, ptr %30, align 8, !tbaa !9
  br label %811, !llvm.loop !25

901:                                              ; preds = %811
  %902 = load i64, ptr %31, align 8, !tbaa !9
  %903 = icmp sgt i64 %902, 1
  br i1 %903, label %904, label %954

904:                                              ; preds = %901
  %905 = load ptr, ptr %12, align 8, !tbaa !5
  %906 = load i64, ptr %905, align 8, !tbaa !9
  %907 = shl i64 %906, 1
  %908 = load ptr, ptr %12, align 8, !tbaa !5
  %909 = load i64, ptr %908, align 8, !tbaa !9
  %910 = load i64, ptr %31, align 8, !tbaa !9
  %911 = add nsw i64 %909, %910
  %912 = sub nsw i64 %907, %911
  %913 = add nsw i64 %912, 1
  store i64 %913, ptr %33, align 8, !tbaa !9
  %914 = load ptr, ptr %18, align 8, !tbaa !5
  %915 = load ptr, ptr %12, align 8, !tbaa !5
  %916 = load i64, ptr %915, align 8, !tbaa !9
  %917 = load i64, ptr %31, align 8, !tbaa !9
  %918 = add nsw i64 %916, %917
  %919 = getelementptr inbounds double, ptr %914, i64 %918
  %920 = call i64 @dmaxloc_(ptr noundef %919, ptr noundef %33)
  store i64 %920, ptr %39, align 8, !tbaa !9
  %921 = load i64, ptr %39, align 8, !tbaa !9
  %922 = load i64, ptr %31, align 8, !tbaa !9
  %923 = add nsw i64 %921, %922
  %924 = sub nsw i64 %923, 1
  store i64 %924, ptr %37, align 8, !tbaa !9
  %925 = load ptr, ptr %18, align 8, !tbaa !5
  %926 = load ptr, ptr %12, align 8, !tbaa !5
  %927 = load i64, ptr %926, align 8, !tbaa !9
  %928 = load i64, ptr %37, align 8, !tbaa !9
  %929 = add nsw i64 %927, %928
  %930 = getelementptr inbounds double, ptr %925, i64 %929
  %931 = load double, ptr %930, align 8, !tbaa !16
  store double %931, ptr %36, align 8, !tbaa !16
  %932 = load double, ptr %36, align 8, !tbaa !16
  %933 = load double, ptr %40, align 8, !tbaa !16
  %934 = fcmp ole double %932, %933
  br i1 %934, label %938, label %935

935:                                              ; preds = %904
  %936 = call i64 @disnan_(ptr noundef %36)
  %937 = icmp ne i64 %936, 0
  br i1 %937, label %938, label %953

938:                                              ; preds = %935, %904
  %939 = load i64, ptr %31, align 8, !tbaa !9
  %940 = load i64, ptr %31, align 8, !tbaa !9
  %941 = load i64, ptr %20, align 8, !tbaa !9
  %942 = mul nsw i64 %940, %941
  %943 = add nsw i64 %939, %942
  store i64 %943, ptr %25, align 8, !tbaa !9
  %944 = load double, ptr %36, align 8, !tbaa !16
  %945 = load ptr, ptr %13, align 8, !tbaa !5
  %946 = load i64, ptr %25, align 8, !tbaa !9
  %947 = getelementptr inbounds %struct.doublecomplex, ptr %945, i64 %946
  %948 = getelementptr inbounds %struct.doublecomplex, ptr %947, i32 0, i32 0
  store double %944, ptr %948, align 8, !tbaa !13
  %949 = load ptr, ptr %13, align 8, !tbaa !5
  %950 = load i64, ptr %25, align 8, !tbaa !9
  %951 = getelementptr inbounds %struct.doublecomplex, ptr %949, i64 %950
  %952 = getelementptr inbounds %struct.doublecomplex, ptr %951, i32 0, i32 1
  store double 0.000000e+00, ptr %952, align 8, !tbaa !19
  br label %1285

953:                                              ; preds = %935
  br label %954

954:                                              ; preds = %953, %901
  %955 = load i64, ptr %31, align 8, !tbaa !9
  %956 = load i64, ptr %37, align 8, !tbaa !9
  %957 = icmp ne i64 %955, %956
  br i1 %957, label %958, label %1150

958:                                              ; preds = %954
  %959 = load i64, ptr %37, align 8, !tbaa !9
  %960 = load i64, ptr %37, align 8, !tbaa !9
  %961 = load i64, ptr %20, align 8, !tbaa !9
  %962 = mul nsw i64 %960, %961
  %963 = add nsw i64 %959, %962
  store i64 %963, ptr %25, align 8, !tbaa !9
  %964 = load i64, ptr %31, align 8, !tbaa !9
  %965 = load i64, ptr %31, align 8, !tbaa !9
  %966 = load i64, ptr %20, align 8, !tbaa !9
  %967 = mul nsw i64 %965, %966
  %968 = add nsw i64 %964, %967
  store i64 %968, ptr %26, align 8, !tbaa !9
  %969 = load ptr, ptr %13, align 8, !tbaa !5
  %970 = load i64, ptr %26, align 8, !tbaa !9
  %971 = getelementptr inbounds %struct.doublecomplex, ptr %969, i64 %970
  %972 = getelementptr inbounds %struct.doublecomplex, ptr %971, i32 0, i32 0
  %973 = load double, ptr %972, align 8, !tbaa !13
  %974 = load ptr, ptr %13, align 8, !tbaa !5
  %975 = load i64, ptr %25, align 8, !tbaa !9
  %976 = getelementptr inbounds %struct.doublecomplex, ptr %974, i64 %975
  %977 = getelementptr inbounds %struct.doublecomplex, ptr %976, i32 0, i32 0
  store double %973, ptr %977, align 8, !tbaa !13
  %978 = load ptr, ptr %13, align 8, !tbaa !5
  %979 = load i64, ptr %26, align 8, !tbaa !9
  %980 = getelementptr inbounds %struct.doublecomplex, ptr %978, i64 %979
  %981 = getelementptr inbounds %struct.doublecomplex, ptr %980, i32 0, i32 1
  %982 = load double, ptr %981, align 8, !tbaa !19
  %983 = load ptr, ptr %13, align 8, !tbaa !5
  %984 = load i64, ptr %25, align 8, !tbaa !9
  %985 = getelementptr inbounds %struct.doublecomplex, ptr %983, i64 %984
  %986 = getelementptr inbounds %struct.doublecomplex, ptr %985, i32 0, i32 1
  store double %982, ptr %986, align 8, !tbaa !19
  %987 = load i64, ptr %31, align 8, !tbaa !9
  %988 = sub nsw i64 %987, 1
  store i64 %988, ptr %25, align 8, !tbaa !9
  %989 = load ptr, ptr %13, align 8, !tbaa !5
  %990 = load i64, ptr %31, align 8, !tbaa !9
  %991 = load i64, ptr %20, align 8, !tbaa !9
  %992 = add nsw i64 %990, %991
  %993 = getelementptr inbounds %struct.doublecomplex, ptr %989, i64 %992
  %994 = load ptr, ptr %14, align 8, !tbaa !5
  %995 = load ptr, ptr %13, align 8, !tbaa !5
  %996 = load i64, ptr %37, align 8, !tbaa !9
  %997 = load i64, ptr %20, align 8, !tbaa !9
  %998 = add nsw i64 %996, %997
  %999 = getelementptr inbounds %struct.doublecomplex, ptr %995, i64 %998
  %1000 = load ptr, ptr %14, align 8, !tbaa !5
  %1001 = call i32 @f2c_zswap(ptr noundef %25, ptr noundef %993, ptr noundef %994, ptr noundef %999, ptr noundef %1000)
  %1002 = load i64, ptr %37, align 8, !tbaa !9
  %1003 = load ptr, ptr %12, align 8, !tbaa !5
  %1004 = load i64, ptr %1003, align 8, !tbaa !9
  %1005 = icmp slt i64 %1002, %1004
  br i1 %1005, label %1006, label %1028

1006:                                             ; preds = %958
  %1007 = load ptr, ptr %12, align 8, !tbaa !5
  %1008 = load i64, ptr %1007, align 8, !tbaa !9
  %1009 = load i64, ptr %37, align 8, !tbaa !9
  %1010 = sub nsw i64 %1008, %1009
  store i64 %1010, ptr %25, align 8, !tbaa !9
  %1011 = load ptr, ptr %13, align 8, !tbaa !5
  %1012 = load i64, ptr %37, align 8, !tbaa !9
  %1013 = add nsw i64 %1012, 1
  %1014 = load i64, ptr %31, align 8, !tbaa !9
  %1015 = load i64, ptr %20, align 8, !tbaa !9
  %1016 = mul nsw i64 %1014, %1015
  %1017 = add nsw i64 %1013, %1016
  %1018 = getelementptr inbounds %struct.doublecomplex, ptr %1011, i64 %1017
  %1019 = load ptr, ptr %13, align 8, !tbaa !5
  %1020 = load i64, ptr %37, align 8, !tbaa !9
  %1021 = add nsw i64 %1020, 1
  %1022 = load i64, ptr %37, align 8, !tbaa !9
  %1023 = load i64, ptr %20, align 8, !tbaa !9
  %1024 = mul nsw i64 %1022, %1023
  %1025 = add nsw i64 %1021, %1024
  %1026 = getelementptr inbounds %struct.doublecomplex, ptr %1019, i64 %1025
  %1027 = call i32 @f2c_zswap(ptr noundef %25, ptr noundef %1018, ptr noundef @c__1, ptr noundef %1026, ptr noundef @c__1)
  br label %1028

1028:                                             ; preds = %1006, %958
  %1029 = load i64, ptr %37, align 8, !tbaa !9
  %1030 = sub nsw i64 %1029, 1
  store i64 %1030, ptr %25, align 8, !tbaa !9
  %1031 = load i64, ptr %31, align 8, !tbaa !9
  %1032 = add nsw i64 %1031, 1
  store i64 %1032, ptr %30, align 8, !tbaa !9
  br label %1033

1033:                                             ; preds = %1092, %1028
  %1034 = load i64, ptr %30, align 8, !tbaa !9
  %1035 = load i64, ptr %25, align 8, !tbaa !9
  %1036 = icmp sle i64 %1034, %1035
  br i1 %1036, label %1037, label %1095

1037:                                             ; preds = %1033
  %1038 = load ptr, ptr %13, align 8, !tbaa !5
  %1039 = load i64, ptr %30, align 8, !tbaa !9
  %1040 = load i64, ptr %31, align 8, !tbaa !9
  %1041 = load i64, ptr %20, align 8, !tbaa !9
  %1042 = mul nsw i64 %1040, %1041
  %1043 = add nsw i64 %1039, %1042
  %1044 = getelementptr inbounds %struct.doublecomplex, ptr %1038, i64 %1043
  call void @d_cnjg(ptr noundef %28, ptr noundef %1044)
  %1045 = getelementptr inbounds %struct.doublecomplex, ptr %28, i32 0, i32 0
  %1046 = load double, ptr %1045, align 8, !tbaa !13
  %1047 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 0
  store double %1046, ptr %1047, align 8, !tbaa !13
  %1048 = getelementptr inbounds %struct.doublecomplex, ptr %28, i32 0, i32 1
  %1049 = load double, ptr %1048, align 8, !tbaa !19
  %1050 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 1
  store double %1049, ptr %1050, align 8, !tbaa !19
  %1051 = load i64, ptr %30, align 8, !tbaa !9
  %1052 = load i64, ptr %31, align 8, !tbaa !9
  %1053 = load i64, ptr %20, align 8, !tbaa !9
  %1054 = mul nsw i64 %1052, %1053
  %1055 = add nsw i64 %1051, %1054
  store i64 %1055, ptr %26, align 8, !tbaa !9
  %1056 = load ptr, ptr %13, align 8, !tbaa !5
  %1057 = load i64, ptr %37, align 8, !tbaa !9
  %1058 = load i64, ptr %30, align 8, !tbaa !9
  %1059 = load i64, ptr %20, align 8, !tbaa !9
  %1060 = mul nsw i64 %1058, %1059
  %1061 = add nsw i64 %1057, %1060
  %1062 = getelementptr inbounds %struct.doublecomplex, ptr %1056, i64 %1061
  call void @d_cnjg(ptr noundef %28, ptr noundef %1062)
  %1063 = getelementptr inbounds %struct.doublecomplex, ptr %28, i32 0, i32 0
  %1064 = load double, ptr %1063, align 8, !tbaa !13
  %1065 = load ptr, ptr %13, align 8, !tbaa !5
  %1066 = load i64, ptr %26, align 8, !tbaa !9
  %1067 = getelementptr inbounds %struct.doublecomplex, ptr %1065, i64 %1066
  %1068 = getelementptr inbounds %struct.doublecomplex, ptr %1067, i32 0, i32 0
  store double %1064, ptr %1068, align 8, !tbaa !13
  %1069 = getelementptr inbounds %struct.doublecomplex, ptr %28, i32 0, i32 1
  %1070 = load double, ptr %1069, align 8, !tbaa !19
  %1071 = load ptr, ptr %13, align 8, !tbaa !5
  %1072 = load i64, ptr %26, align 8, !tbaa !9
  %1073 = getelementptr inbounds %struct.doublecomplex, ptr %1071, i64 %1072
  %1074 = getelementptr inbounds %struct.doublecomplex, ptr %1073, i32 0, i32 1
  store double %1070, ptr %1074, align 8, !tbaa !19
  %1075 = load i64, ptr %37, align 8, !tbaa !9
  %1076 = load i64, ptr %30, align 8, !tbaa !9
  %1077 = load i64, ptr %20, align 8, !tbaa !9
  %1078 = mul nsw i64 %1076, %1077
  %1079 = add nsw i64 %1075, %1078
  store i64 %1079, ptr %26, align 8, !tbaa !9
  %1080 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 0
  %1081 = load double, ptr %1080, align 8, !tbaa !13
  %1082 = load ptr, ptr %13, align 8, !tbaa !5
  %1083 = load i64, ptr %26, align 8, !tbaa !9
  %1084 = getelementptr inbounds %struct.doublecomplex, ptr %1082, i64 %1083
  %1085 = getelementptr inbounds %struct.doublecomplex, ptr %1084, i32 0, i32 0
  store double %1081, ptr %1085, align 8, !tbaa !13
  %1086 = getelementptr inbounds %struct.doublecomplex, ptr %42, i32 0, i32 1
  %1087 = load double, ptr %1086, align 8, !tbaa !19
  %1088 = load ptr, ptr %13, align 8, !tbaa !5
  %1089 = load i64, ptr %26, align 8, !tbaa !9
  %1090 = getelementptr inbounds %struct.doublecomplex, ptr %1088, i64 %1089
  %1091 = getelementptr inbounds %struct.doublecomplex, ptr %1090, i32 0, i32 1
  store double %1087, ptr %1091, align 8, !tbaa !19
  br label %1092

1092:                                             ; preds = %1037
  %1093 = load i64, ptr %30, align 8, !tbaa !9
  %1094 = add nsw i64 %1093, 1
  store i64 %1094, ptr %30, align 8, !tbaa !9
  br label %1033, !llvm.loop !26

1095:                                             ; preds = %1033
  %1096 = load i64, ptr %37, align 8, !tbaa !9
  %1097 = load i64, ptr %31, align 8, !tbaa !9
  %1098 = load i64, ptr %20, align 8, !tbaa !9
  %1099 = mul nsw i64 %1097, %1098
  %1100 = add nsw i64 %1096, %1099
  store i64 %1100, ptr %25, align 8, !tbaa !9
  %1101 = load ptr, ptr %13, align 8, !tbaa !5
  %1102 = load i64, ptr %37, align 8, !tbaa !9
  %1103 = load i64, ptr %31, align 8, !tbaa !9
  %1104 = load i64, ptr %20, align 8, !tbaa !9
  %1105 = mul nsw i64 %1103, %1104
  %1106 = add nsw i64 %1102, %1105
  %1107 = getelementptr inbounds %struct.doublecomplex, ptr %1101, i64 %1106
  call void @d_cnjg(ptr noundef %28, ptr noundef %1107)
  %1108 = getelementptr inbounds %struct.doublecomplex, ptr %28, i32 0, i32 0
  %1109 = load double, ptr %1108, align 8, !tbaa !13
  %1110 = load ptr, ptr %13, align 8, !tbaa !5
  %1111 = load i64, ptr %25, align 8, !tbaa !9
  %1112 = getelementptr inbounds %struct.doublecomplex, ptr %1110, i64 %1111
  %1113 = getelementptr inbounds %struct.doublecomplex, ptr %1112, i32 0, i32 0
  store double %1109, ptr %1113, align 8, !tbaa !13
  %1114 = getelementptr inbounds %struct.doublecomplex, ptr %28, i32 0, i32 1
  %1115 = load double, ptr %1114, align 8, !tbaa !19
  %1116 = load ptr, ptr %13, align 8, !tbaa !5
  %1117 = load i64, ptr %25, align 8, !tbaa !9
  %1118 = getelementptr inbounds %struct.doublecomplex, ptr %1116, i64 %1117
  %1119 = getelementptr inbounds %struct.doublecomplex, ptr %1118, i32 0, i32 1
  store double %1115, ptr %1119, align 8, !tbaa !19
  %1120 = load ptr, ptr %18, align 8, !tbaa !5
  %1121 = load i64, ptr %31, align 8, !tbaa !9
  %1122 = getelementptr inbounds double, ptr %1120, i64 %1121
  %1123 = load double, ptr %1122, align 8, !tbaa !16
  store double %1123, ptr %38, align 8, !tbaa !16
  %1124 = load ptr, ptr %18, align 8, !tbaa !5
  %1125 = load i64, ptr %37, align 8, !tbaa !9
  %1126 = getelementptr inbounds double, ptr %1124, i64 %1125
  %1127 = load double, ptr %1126, align 8, !tbaa !16
  %1128 = load ptr, ptr %18, align 8, !tbaa !5
  %1129 = load i64, ptr %31, align 8, !tbaa !9
  %1130 = getelementptr inbounds double, ptr %1128, i64 %1129
  store double %1127, ptr %1130, align 8, !tbaa !16
  %1131 = load double, ptr %38, align 8, !tbaa !16
  %1132 = load ptr, ptr %18, align 8, !tbaa !5
  %1133 = load i64, ptr %37, align 8, !tbaa !9
  %1134 = getelementptr inbounds double, ptr %1132, i64 %1133
  store double %1131, ptr %1134, align 8, !tbaa !16
  %1135 = load ptr, ptr %15, align 8, !tbaa !5
  %1136 = load i64, ptr %37, align 8, !tbaa !9
  %1137 = getelementptr inbounds i64, ptr %1135, i64 %1136
  %1138 = load i64, ptr %1137, align 8, !tbaa !9
  store i64 %1138, ptr %39, align 8, !tbaa !9
  %1139 = load ptr, ptr %15, align 8, !tbaa !5
  %1140 = load i64, ptr %31, align 8, !tbaa !9
  %1141 = getelementptr inbounds i64, ptr %1139, i64 %1140
  %1142 = load i64, ptr %1141, align 8, !tbaa !9
  %1143 = load ptr, ptr %15, align 8, !tbaa !5
  %1144 = load i64, ptr %37, align 8, !tbaa !9
  %1145 = getelementptr inbounds i64, ptr %1143, i64 %1144
  store i64 %1142, ptr %1145, align 8, !tbaa !9
  %1146 = load i64, ptr %39, align 8, !tbaa !9
  %1147 = load ptr, ptr %15, align 8, !tbaa !5
  %1148 = load i64, ptr %31, align 8, !tbaa !9
  %1149 = getelementptr inbounds i64, ptr %1147, i64 %1148
  store i64 %1146, ptr %1149, align 8, !tbaa !9
  br label %1150

1150:                                             ; preds = %1095, %954
  %1151 = load double, ptr %36, align 8, !tbaa !16
  %1152 = call double @sqrt(double noundef %1151) #5
  store double %1152, ptr %36, align 8, !tbaa !16
  %1153 = load i64, ptr %31, align 8, !tbaa !9
  %1154 = load i64, ptr %31, align 8, !tbaa !9
  %1155 = load i64, ptr %20, align 8, !tbaa !9
  %1156 = mul nsw i64 %1154, %1155
  %1157 = add nsw i64 %1153, %1156
  store i64 %1157, ptr %25, align 8, !tbaa !9
  %1158 = load double, ptr %36, align 8, !tbaa !16
  %1159 = load ptr, ptr %13, align 8, !tbaa !5
  %1160 = load i64, ptr %25, align 8, !tbaa !9
  %1161 = getelementptr inbounds %struct.doublecomplex, ptr %1159, i64 %1160
  %1162 = getelementptr inbounds %struct.doublecomplex, ptr %1161, i32 0, i32 0
  store double %1158, ptr %1162, align 8, !tbaa !13
  %1163 = load ptr, ptr %13, align 8, !tbaa !5
  %1164 = load i64, ptr %25, align 8, !tbaa !9
  %1165 = getelementptr inbounds %struct.doublecomplex, ptr %1163, i64 %1164
  %1166 = getelementptr inbounds %struct.doublecomplex, ptr %1165, i32 0, i32 1
  store double 0.000000e+00, ptr %1166, align 8, !tbaa !19
  %1167 = load i64, ptr %31, align 8, !tbaa !9
  %1168 = load ptr, ptr %12, align 8, !tbaa !5
  %1169 = load i64, ptr %1168, align 8, !tbaa !9
  %1170 = icmp slt i64 %1167, %1169
  br i1 %1170, label %1171, label %1240

1171:                                             ; preds = %1150
  %1172 = load i64, ptr %31, align 8, !tbaa !9
  %1173 = sub nsw i64 %1172, 1
  store i64 %1173, ptr %25, align 8, !tbaa !9
  %1174 = load ptr, ptr %13, align 8, !tbaa !5
  %1175 = load i64, ptr %31, align 8, !tbaa !9
  %1176 = load i64, ptr %20, align 8, !tbaa !9
  %1177 = add nsw i64 %1175, %1176
  %1178 = getelementptr inbounds %struct.doublecomplex, ptr %1174, i64 %1177
  %1179 = load ptr, ptr %14, align 8, !tbaa !5
  %1180 = call i32 @zlacgv_(ptr noundef %25, ptr noundef %1178, ptr noundef %1179)
  %1181 = load ptr, ptr %12, align 8, !tbaa !5
  %1182 = load i64, ptr %1181, align 8, !tbaa !9
  %1183 = load i64, ptr %31, align 8, !tbaa !9
  %1184 = sub nsw i64 %1182, %1183
  store i64 %1184, ptr %25, align 8, !tbaa !9
  %1185 = load i64, ptr %31, align 8, !tbaa !9
  %1186 = load i64, ptr %32, align 8, !tbaa !9
  %1187 = sub nsw i64 %1185, %1186
  store i64 %1187, ptr %26, align 8, !tbaa !9
  %1188 = getelementptr inbounds %struct.doublecomplex, ptr %28, i32 0, i32 0
  store double -1.000000e+00, ptr %1188, align 8, !tbaa !13
  %1189 = getelementptr inbounds %struct.doublecomplex, ptr %28, i32 0, i32 1
  store double -0.000000e+00, ptr %1189, align 8, !tbaa !19
  %1190 = load ptr, ptr %13, align 8, !tbaa !5
  %1191 = load i64, ptr %31, align 8, !tbaa !9
  %1192 = add nsw i64 %1191, 1
  %1193 = load i64, ptr %32, align 8, !tbaa !9
  %1194 = load i64, ptr %20, align 8, !tbaa !9
  %1195 = mul nsw i64 %1193, %1194
  %1196 = add nsw i64 %1192, %1195
  %1197 = getelementptr inbounds %struct.doublecomplex, ptr %1190, i64 %1196
  %1198 = load ptr, ptr %14, align 8, !tbaa !5
  %1199 = load ptr, ptr %13, align 8, !tbaa !5
  %1200 = load i64, ptr %31, align 8, !tbaa !9
  %1201 = load i64, ptr %32, align 8, !tbaa !9
  %1202 = load i64, ptr %20, align 8, !tbaa !9
  %1203 = mul nsw i64 %1201, %1202
  %1204 = add nsw i64 %1200, %1203
  %1205 = getelementptr inbounds %struct.doublecomplex, ptr %1199, i64 %1204
  %1206 = load ptr, ptr %14, align 8, !tbaa !5
  %1207 = load ptr, ptr %13, align 8, !tbaa !5
  %1208 = load i64, ptr %31, align 8, !tbaa !9
  %1209 = add nsw i64 %1208, 1
  %1210 = load i64, ptr %31, align 8, !tbaa !9
  %1211 = load i64, ptr %20, align 8, !tbaa !9
  %1212 = mul nsw i64 %1210, %1211
  %1213 = add nsw i64 %1209, %1212
  %1214 = getelementptr inbounds %struct.doublecomplex, ptr %1207, i64 %1213
  %1215 = call i32 @f2c_zgemv(ptr noundef @.str.8, ptr noundef %25, ptr noundef %26, ptr noundef %28, ptr noundef %1197, ptr noundef %1198, ptr noundef %1205, ptr noundef %1206, ptr noundef @c_b1, ptr noundef %1214, ptr noundef @c__1)
  %1216 = load i64, ptr %31, align 8, !tbaa !9
  %1217 = sub nsw i64 %1216, 1
  store i64 %1217, ptr %25, align 8, !tbaa !9
  %1218 = load ptr, ptr %13, align 8, !tbaa !5
  %1219 = load i64, ptr %31, align 8, !tbaa !9
  %1220 = load i64, ptr %20, align 8, !tbaa !9
  %1221 = add nsw i64 %1219, %1220
  %1222 = getelementptr inbounds %struct.doublecomplex, ptr %1218, i64 %1221
  %1223 = load ptr, ptr %14, align 8, !tbaa !5
  %1224 = call i32 @zlacgv_(ptr noundef %25, ptr noundef %1222, ptr noundef %1223)
  %1225 = load ptr, ptr %12, align 8, !tbaa !5
  %1226 = load i64, ptr %1225, align 8, !tbaa !9
  %1227 = load i64, ptr %31, align 8, !tbaa !9
  %1228 = sub nsw i64 %1226, %1227
  store i64 %1228, ptr %25, align 8, !tbaa !9
  %1229 = load double, ptr %36, align 8, !tbaa !16
  %1230 = fdiv double 1.000000e+00, %1229
  store double %1230, ptr %27, align 8, !tbaa !16
  %1231 = load ptr, ptr %13, align 8, !tbaa !5
  %1232 = load i64, ptr %31, align 8, !tbaa !9
  %1233 = add nsw i64 %1232, 1
  %1234 = load i64, ptr %31, align 8, !tbaa !9
  %1235 = load i64, ptr %20, align 8, !tbaa !9
  %1236 = mul nsw i64 %1234, %1235
  %1237 = add nsw i64 %1233, %1236
  %1238 = getelementptr inbounds %struct.doublecomplex, ptr %1231, i64 %1237
  %1239 = call i32 @f2c_zdscal(ptr noundef %25, ptr noundef %27, ptr noundef %1238, ptr noundef @c__1)
  br label %1240

1240:                                             ; preds = %1171, %1150
  br label %1241

1241:                                             ; preds = %1240
  %1242 = load i64, ptr %31, align 8, !tbaa !9
  %1243 = add nsw i64 %1242, 1
  store i64 %1243, ptr %31, align 8, !tbaa !9
  br label %803, !llvm.loop !27

1244:                                             ; preds = %803
  %1245 = load i64, ptr %32, align 8, !tbaa !9
  %1246 = load i64, ptr %34, align 8, !tbaa !9
  %1247 = add nsw i64 %1245, %1246
  %1248 = load ptr, ptr %12, align 8, !tbaa !5
  %1249 = load i64, ptr %1248, align 8, !tbaa !9
  %1250 = icmp sle i64 %1247, %1249
  br i1 %1250, label %1251, label %1274

1251:                                             ; preds = %1244
  %1252 = load ptr, ptr %12, align 8, !tbaa !5
  %1253 = load i64, ptr %1252, align 8, !tbaa !9
  %1254 = load i64, ptr %31, align 8, !tbaa !9
  %1255 = sub nsw i64 %1253, %1254
  %1256 = add nsw i64 %1255, 1
  store i64 %1256, ptr %24, align 8, !tbaa !9
  %1257 = load ptr, ptr %13, align 8, !tbaa !5
  %1258 = load i64, ptr %31, align 8, !tbaa !9
  %1259 = load i64, ptr %32, align 8, !tbaa !9
  %1260 = load i64, ptr %20, align 8, !tbaa !9
  %1261 = mul nsw i64 %1259, %1260
  %1262 = add nsw i64 %1258, %1261
  %1263 = getelementptr inbounds %struct.doublecomplex, ptr %1257, i64 %1262
  %1264 = load ptr, ptr %14, align 8, !tbaa !5
  %1265 = load ptr, ptr %13, align 8, !tbaa !5
  %1266 = load i64, ptr %31, align 8, !tbaa !9
  %1267 = load i64, ptr %31, align 8, !tbaa !9
  %1268 = load i64, ptr %20, align 8, !tbaa !9
  %1269 = mul nsw i64 %1267, %1268
  %1270 = add nsw i64 %1266, %1269
  %1271 = getelementptr inbounds %struct.doublecomplex, ptr %1265, i64 %1270
  %1272 = load ptr, ptr %14, align 8, !tbaa !5
  %1273 = call i32 @f2c_zherk(ptr noundef @.str.9, ptr noundef @.str.8, ptr noundef %24, ptr noundef %34, ptr noundef @c_b29, ptr noundef %1263, ptr noundef %1264, ptr noundef @c_b30, ptr noundef %1271, ptr noundef %1272)
  br label %1274

1274:                                             ; preds = %1251, %1244
  br label %1275

1275:                                             ; preds = %1274
  %1276 = load i64, ptr %22, align 8, !tbaa !9
  %1277 = load i64, ptr %32, align 8, !tbaa !9
  %1278 = add nsw i64 %1277, %1276
  store i64 %1278, ptr %32, align 8, !tbaa !9
  br label %751, !llvm.loop !28

1279:                                             ; preds = %764
  br label %1280

1280:                                             ; preds = %1279, %746
  br label %1281

1281:                                             ; preds = %1280
  %1282 = load ptr, ptr %12, align 8, !tbaa !5
  %1283 = load i64, ptr %1282, align 8, !tbaa !9
  %1284 = load ptr, ptr %16, align 8, !tbaa !5
  store i64 %1283, ptr %1284, align 8, !tbaa !9
  br label %1290

1285:                                             ; preds = %938, %402
  %1286 = load i64, ptr %31, align 8, !tbaa !9
  %1287 = sub nsw i64 %1286, 1
  %1288 = load ptr, ptr %16, align 8, !tbaa !5
  store i64 %1287, ptr %1288, align 8, !tbaa !9
  %1289 = load ptr, ptr %19, align 8, !tbaa !5
  store i64 1, ptr %1289, align 8, !tbaa !9
  br label %1290

1290:                                             ; preds = %1285, %1281, %190, %115
  store i32 0, ptr %10, align 4
  store i32 1, ptr %43, align 4
  br label %1291

1291:                                             ; preds = %1290, %103, %94
  call void @llvm.lifetime.end.p0(i64 16, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #5
  %1292 = load i32, ptr %10, align 4
  ret i32 %1292
}

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

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

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

declare i64 @disnan_(ptr noundef) #2

declare double @dlamch_(ptr noundef) #2

declare void @d_cnjg(ptr noundef, ptr noundef) #2

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

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

; Function Attrs: nounwind
declare double @sqrt(double noundef) #4

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

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

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

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { nounwind "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 #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 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!14, !15, i64 0}
!14 = !{!"", !15, i64 0, !15, i64 8}
!15 = !{!"double", !7, i64 0}
!16 = !{!15, !15, i64 0}
!17 = distinct !{!17, !12}
!18 = distinct !{!18, !12}
!19 = !{!14, !15, i64 8}
!20 = distinct !{!20, !12}
!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 = distinct !{!28, !12}


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

%struct.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 [7 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.3 = external hidden unnamed_addr constant [7 x i8], align 1
@c_n1 = external hidden global i64, align 8
@.str.4 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [6 x i8], align 1
@c_b1 = external hidden global %struct.doublecomplex, align 8
@.str.6 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [11 x i8], align 1
@c_b29 = external hidden global double, align 8
@c_b30 = external hidden global double, align 8
@.str.8 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [6 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @zpstrf_(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) local_unnamed_addr #0 {
  %10 = alloca i64, align 8
  %11 = alloca i64, align 8
  %12 = alloca i64, align 8
  %13 = alloca i64, align 8
  %14 = alloca double, align 8
  %15 = alloca %struct.doublecomplex, align 16
  %16 = alloca %struct.doublecomplex, align 16
  %17 = alloca i64, align 8
  %18 = alloca i64, align 8
  %19 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #6
  %20 = getelementptr i8, ptr %7, i64 -8
  %21 = getelementptr inbounds i8, ptr %4, i64 -8
  %22 = load i64, ptr %3, align 8, !tbaa !5
  %23 = xor i64 %22, -1
  %24 = getelementptr inbounds %struct.doublecomplex, ptr %2, i64 %23
  store i64 0, ptr %8, align 8, !tbaa !5
  %25 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #6
  %.not = icmp eq i64 %25, 0
  br i1 %.not, label %26, label %28

26:                                               ; preds = %9
  %27 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #6
  %.not496 = icmp eq i64 %27, 0
  br i1 %.not496, label %.thread.sink.split, label %28

28:                                               ; preds = %26, %9
  %29 = load i64, ptr %1, align 8, !tbaa !5
  %30 = icmp slt i64 %29, 0
  br i1 %30, label %.thread.sink.split, label %31

31:                                               ; preds = %28
  %32 = load i64, ptr %3, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %29, i64 1)
  %33 = icmp slt i64 %32, %spec.select
  br i1 %33, label %.thread.sink.split, label %34

34:                                               ; preds = %31
  %.pr = load i64, ptr %8, align 8, !tbaa !5
  %.not497 = icmp eq i64 %.pr, 0
  br i1 %.not497, label %38, label %.thread

.thread.sink.split:                               ; preds = %31, %28, %26
  %.sink = phi i64 [ -1, %26 ], [ -2, %28 ], [ -4, %31 ]
  store i64 %.sink, ptr %8, align 8, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %34
  %35 = phi i64 [ %.pr, %34 ], [ %.sink, %.thread.sink.split ]
  %36 = sub nsw i64 0, %35
  store i64 %36, ptr %10, align 8, !tbaa !5
  %37 = call i32 @xerbla_(ptr noundef nonnull @.str.2, ptr noundef nonnull %10) #6
  br label %436

38:                                               ; preds = %34
  %39 = icmp eq i64 %29, 0
  br i1 %39, label %436, label %40

40:                                               ; preds = %38
  %41 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.3, ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1) #6
  %42 = icmp slt i64 %41, 2
  br i1 %42, label %48, label %43

43:                                               ; preds = %40
  %44 = load i64, ptr %1, align 8, !tbaa !5
  %.not498 = icmp slt i64 %41, %44
  br i1 %.not498, label %.lr.ph.preheader, label %48

.lr.ph.preheader:                                 ; preds = %43
  %min.iters.check = icmp ult i64 %44, 4
  br i1 %min.iters.check, label %.lr.ph.preheader715, label %vector.ph

.lr.ph.preheader715:                              ; preds = %middle.block, %.lr.ph.preheader
  %.0482531.ph = phi i64 [ 1, %.lr.ph.preheader ], [ %ind.end, %middle.block ]
  br label %.lr.ph

vector.ph:                                        ; preds = %.lr.ph.preheader
  %n.vec = and i64 %44, -4
  %ind.end = or disjoint i64 %n.vec, 1
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %vec.ind = phi <2 x i64> [ <i64 1, i64 2>, %vector.ph ], [ %vec.ind.next, %vector.body ]
  %step.add = add <2 x i64> %vec.ind, <i64 2, i64 2>
  %45 = getelementptr i64, ptr %4, i64 %index
  %46 = getelementptr inbounds i8, ptr %45, i64 16
  store <2 x i64> %vec.ind, ptr %45, align 8, !tbaa !5
  store <2 x i64> %step.add, ptr %46, align 8, !tbaa !5
  %index.next = add nuw i64 %index, 4
  %vec.ind.next = add <2 x i64> %vec.ind, <i64 4, i64 4>
  %47 = icmp eq i64 %index.next, %n.vec
  br i1 %47, label %middle.block, label %vector.body, !llvm.loop !9

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %44, %n.vec
  br i1 %cmp.n, label %._crit_edge, label %.lr.ph.preheader715

48:                                               ; preds = %43, %40
  %49 = tail call i32 @zpstf2_(ptr noundef %0, ptr noundef nonnull %1, ptr noundef %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef nonnull %8) #6
  br label %436

.lr.ph:                                           ; preds = %.lr.ph.preheader715, %.lr.ph
  %.0482531 = phi i64 [ %51, %.lr.ph ], [ %.0482531.ph, %.lr.ph.preheader715 ]
  %50 = getelementptr inbounds i64, ptr %21, i64 %.0482531
  store i64 %.0482531, ptr %50, align 8, !tbaa !5
  %51 = add nuw i64 %.0482531, 1
  %exitcond.not = icmp eq i64 %.0482531, %44
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !13

._crit_edge:                                      ; preds = %.lr.ph, %middle.block
  %.pre = load i64, ptr %1, align 8, !tbaa !5
  %.not500532 = icmp slt i64 %.pre, 1
  %.pre635 = add i64 %22, 1
  br i1 %.not500532, label %._crit_edge536, label %.lr.ph535.preheader

.lr.ph535.preheader:                              ; preds = %._crit_edge
  %xtraiter = and i64 %.pre, 3
  %52 = icmp ult i64 %.pre, 4
  br i1 %52, label %._crit_edge536.loopexit.unr-lcssa, label %.lr.ph535.preheader.new

.lr.ph535.preheader.new:                          ; preds = %.lr.ph535.preheader
  %unroll_iter = and i64 %.pre, 9223372036854775804
  br label %.lr.ph535

.lr.ph535:                                        ; preds = %.lr.ph535, %.lr.ph535.preheader.new
  %.1483533 = phi i64 [ 1, %.lr.ph535.preheader.new ], [ %72, %.lr.ph535 ]
  %niter = phi i64 [ 0, %.lr.ph535.preheader.new ], [ %niter.next.3, %.lr.ph535 ]
  %53 = mul i64 %.1483533, %.pre635
  %54 = getelementptr inbounds %struct.doublecomplex, ptr %24, i64 %53
  %55 = load double, ptr %54, align 8, !tbaa !14
  %56 = getelementptr inbounds double, ptr %20, i64 %.1483533
  store double %55, ptr %56, align 8, !tbaa !17
  %57 = add nuw nsw i64 %.1483533, 1
  %58 = mul i64 %57, %.pre635
  %59 = getelementptr inbounds %struct.doublecomplex, ptr %24, i64 %58
  %60 = load double, ptr %59, align 8, !tbaa !14
  %61 = getelementptr double, ptr %7, i64 %.1483533
  store double %60, ptr %61, align 8, !tbaa !17
  %62 = add nuw nsw i64 %.1483533, 2
  %63 = mul i64 %62, %.pre635
  %64 = getelementptr inbounds %struct.doublecomplex, ptr %24, i64 %63
  %65 = load double, ptr %64, align 8, !tbaa !14
  %66 = getelementptr inbounds double, ptr %20, i64 %62
  store double %65, ptr %66, align 8, !tbaa !17
  %67 = add nuw i64 %.1483533, 3
  %68 = mul i64 %67, %.pre635
  %69 = getelementptr inbounds %struct.doublecomplex, ptr %24, i64 %68
  %70 = load double, ptr %69, align 8, !tbaa !14
  %71 = getelementptr inbounds double, ptr %20, i64 %67
  store double %70, ptr %71, align 8, !tbaa !17
  %72 = add nuw i64 %.1483533, 4
  %niter.next.3 = add nuw i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %._crit_edge536.loopexit.unr-lcssa, label %.lr.ph535, !llvm.loop !18

._crit_edge536.loopexit.unr-lcssa:                ; preds = %.lr.ph535, %.lr.ph535.preheader
  %.1483533.unr = phi i64 [ 1, %.lr.ph535.preheader ], [ %72, %.lr.ph535 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge536, label %.lr.ph535.epil

.lr.ph535.epil:                                   ; preds = %._crit_edge536.loopexit.unr-lcssa, %.lr.ph535.epil
  %.1483533.epil = phi i64 [ %77, %.lr.ph535.epil ], [ %.1483533.unr, %._crit_edge536.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph535.epil ], [ 0, %._crit_edge536.loopexit.unr-lcssa ]
  %73 = mul i64 %.1483533.epil, %.pre635
  %74 = getelementptr inbounds %struct.doublecomplex, ptr %24, i64 %73
  %75 = load double, ptr %74, align 8, !tbaa !14
  %76 = getelementptr inbounds double, ptr %20, i64 %.1483533.epil
  store double %75, ptr %76, align 8, !tbaa !17
  %77 = add nuw i64 %.1483533.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %._crit_edge536, label %.lr.ph535.epil, !llvm.loop !19

._crit_edge536:                                   ; preds = %._crit_edge536.loopexit.unr-lcssa, %.lr.ph535.epil, %._crit_edge
  %78 = tail call i64 @dmaxloc_(ptr noundef %7, ptr noundef nonnull %1) #6
  %79 = mul i64 %78, %.pre635
  %80 = getelementptr inbounds %struct.doublecomplex, ptr %24, i64 %79
  %81 = load double, ptr %80, align 8, !tbaa !14
  store double %81, ptr %19, align 8, !tbaa !17
  %82 = fcmp oeq double %81, 0.000000e+00
  br i1 %82, label %85, label %83

83:                                               ; preds = %._crit_edge536
  %84 = call i64 @disnan_(ptr noundef nonnull %19) #6
  %.not501 = icmp eq i64 %84, 0
  br i1 %.not501, label %86, label %85

85:                                               ; preds = %83, %._crit_edge536
  store i64 0, ptr %5, align 8, !tbaa !5
  store i64 1, ptr %8, align 8, !tbaa !5
  br label %436

86:                                               ; preds = %83
  %87 = load double, ptr %6, align 8, !tbaa !17
  %88 = fcmp olt double %87, 0.000000e+00
  br i1 %88, label %89, label %96

89:                                               ; preds = %86
  %90 = load i64, ptr %1, align 8, !tbaa !5
  %91 = sitofp i64 %90 to double
  %92 = call double @dlamch_(ptr noundef nonnull @.str.4) #6
  %93 = fmul double %92, %91
  %94 = load double, ptr %19, align 8, !tbaa !17
  %95 = fmul double %93, %94
  br label %96

96:                                               ; preds = %86, %89
  %.0475 = phi double [ %95, %89 ], [ %87, %86 ]
  %97 = load i64, ptr %1, align 8, !tbaa !5
  br i1 %.not, label %276, label %98

98:                                               ; preds = %96
  %.not510567 = icmp slt i64 %97, 1
  br i1 %.not510567, label %.loopexit, label %.lr.ph571

.lr.ph571:                                        ; preds = %98
  %invariant.gep = getelementptr i8, ptr %24, i64 16
  %99 = getelementptr inbounds i8, ptr %16, i64 8
  %100 = shl i64 %41, 3
  %invariant.gep737 = getelementptr i8, ptr %24, i64 -16
  br label %101

101:                                              ; preds = %.lr.ph571, %274
  %indvar = phi i64 [ 0, %.lr.ph571 ], [ %indvar.next, %274 ]
  %.0476569 = phi i64 [ %78, %.lr.ph571 ], [ %.1.lcssa, %274 ]
  %.0477568 = phi i64 [ 1, %.lr.ph571 ], [ %275, %274 ]
  %102 = load i64, ptr %1, align 8, !tbaa !5
  %103 = sub nsw i64 %102, %.0477568
  %104 = add nsw i64 %103, 1
  store i64 %104, ptr %12, align 8, !tbaa !5
  %105 = call i64 @llvm.smin.i64(i64 %41, i64 %104)
  store i64 %105, ptr %18, align 8, !tbaa !5
  %.not512537 = icmp sgt i64 %.0477568, %102
  br i1 %.not512537, label %._crit_edge541, label %.lr.ph540.preheader

.lr.ph540.preheader:                              ; preds = %101
  %106 = mul i64 %41, %indvar
  %107 = mul i64 %100, %indvar
  %scevgep = getelementptr i8, ptr %7, i64 %107
  %108 = sub i64 %102, %106
  %109 = shl nuw i64 %108, 3
  call void @llvm.memset.p0.i64(ptr align 8 %scevgep, i8 0, i64 %109, i1 false), !tbaa !17
  br label %._crit_edge541

._crit_edge541:                                   ; preds = %.lr.ph540.preheader, %101
  %110 = add nsw i64 %.0477568, -1
  %111 = add i64 %110, %105
  store i64 %111, ptr %11, align 8, !tbaa !5
  %.0479.neg556 = sub nsw i64 0, %.0477568
  %.not513557 = icmp sgt i64 %.0477568, %111
  br i1 %.not513557, label %._crit_edge564, label %.lr.ph563

.lr.ph563:                                        ; preds = %._crit_edge541
  %112 = getelementptr %struct.doublecomplex, ptr %24, i64 %.0477568
  br label %113

113:                                              ; preds = %.lr.ph563, %260
  %.0479.neg561 = phi i64 [ %.0479.neg556, %.lr.ph563 ], [ %.0479.neg, %260 ]
  %.1560 = phi i64 [ %.0476569, %.lr.ph563 ], [ %.2, %260 ]
  %.0479558 = phi i64 [ %.0477568, %.lr.ph563 ], [ %.pre-phi646, %260 ]
  %114 = load i64, ptr %1, align 8, !tbaa !5
  store i64 %114, ptr %12, align 8, !tbaa !5
  %.not515542 = icmp sgt i64 %.0479558, %114
  br i1 %.not515542, label %._crit_edge546, label %.lr.ph545

.lr.ph545:                                        ; preds = %113
  %115 = icmp sgt i64 %.0479558, %.0477568
  br i1 %115, label %.lr.ph545.split.us.preheader, label %.lr.ph545.split

.lr.ph545.split.us.preheader:                     ; preds = %.lr.ph545
  %gep738 = getelementptr %struct.doublecomplex, ptr %invariant.gep737, i64 %.0479558
  br label %.lr.ph545.split.us

.lr.ph545.split.us:                               ; preds = %.lr.ph545.split.us.preheader, %.lr.ph545.split.us
  %.3485543.us = phi i64 [ %139, %.lr.ph545.split.us ], [ %.0479558, %.lr.ph545.split.us.preheader ]
  %116 = mul nsw i64 %.3485543.us, %22
  %117 = getelementptr %struct.doublecomplex, ptr %gep738, i64 %116
  call void @d_cnjg(ptr noundef nonnull %16, ptr noundef %117) #6
  %118 = load <2 x double>, ptr %16, align 16
  %119 = load double, ptr %99, align 8, !tbaa !21
  %120 = fneg double %119
  %121 = load <2 x double>, ptr %117, align 8, !tbaa !17
  %122 = insertelement <2 x double> poison, double %119, i64 0
  %123 = insertelement <2 x double> %122, double %120, i64 1
  %124 = fmul <2 x double> %121, %123
  %125 = shufflevector <2 x double> %124, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %126 = shufflevector <2 x double> %118, <2 x double> poison, <2 x i32> zeroinitializer
  %127 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %126, <2 x double> %121, <2 x double> %125)
  store <2 x double> %127, ptr %15, align 16, !tbaa !17
  %128 = getelementptr inbounds double, ptr %20, i64 %.3485543.us
  %129 = load double, ptr %128, align 8, !tbaa !17
  %130 = extractelement <2 x double> %127, i64 0
  %131 = fadd double %130, %129
  store double %131, ptr %128, align 8, !tbaa !17
  %132 = mul i64 %.3485543.us, %.pre635
  store i64 %132, ptr %13, align 8, !tbaa !5
  %133 = getelementptr inbounds %struct.doublecomplex, ptr %24, i64 %132
  %134 = load double, ptr %133, align 8, !tbaa !14
  %135 = fsub double %134, %131
  %136 = load i64, ptr %1, align 8, !tbaa !5
  %137 = getelementptr double, ptr %20, i64 %136
  %138 = getelementptr double, ptr %137, i64 %.3485543.us
  store double %135, ptr %138, align 8, !tbaa !17
  %139 = add nuw nsw i64 %.3485543.us, 1
  %140 = load i64, ptr %12, align 8, !tbaa !5
  %.not515.us.not = icmp slt i64 %.3485543.us, %140
  br i1 %.not515.us.not, label %.lr.ph545.split.us, label %._crit_edge546, !llvm.loop !22

.lr.ph545.split:                                  ; preds = %.lr.ph545
  %141 = getelementptr double, ptr %20, i64 %114
  %142 = add i64 %114, %.0479558
  %143 = and i64 %142, 1
  %lcmp.mod717.not.not = icmp eq i64 %143, 0
  br i1 %lcmp.mod717.not.not, label %.prol.loopexit.unr-lcssa, label %.prol.loopexit

.prol.loopexit.unr-lcssa:                         ; preds = %.lr.ph545.split
  %144 = mul i64 %.0479558, %.pre635
  %145 = getelementptr inbounds %struct.doublecomplex, ptr %24, i64 %144
  %146 = load double, ptr %145, align 8, !tbaa !14
  %147 = getelementptr inbounds double, ptr %20, i64 %.0479558
  %148 = load double, ptr %147, align 8, !tbaa !17
  %149 = fsub double %146, %148
  %150 = getelementptr double, ptr %141, i64 %.0479558
  store double %149, ptr %150, align 8, !tbaa !17
  %151 = add nuw nsw i64 %.0479558, 1
  br label %.prol.loopexit

.prol.loopexit:                                   ; preds = %.prol.loopexit.unr-lcssa, %.lr.ph545.split
  %.3485543.unr = phi i64 [ %.0479558, %.lr.ph545.split ], [ %151, %.prol.loopexit.unr-lcssa ]
  %.lcssa706.unr = phi i64 [ poison, %.lr.ph545.split ], [ %144, %.prol.loopexit.unr-lcssa ]
  %152 = icmp eq i64 %114, %.0479558
  br i1 %152, label %._crit_edge546.split, label %.lr.ph545.split.new

.lr.ph545.split.new:                              ; preds = %.prol.loopexit, %.lr.ph545.split.new
  %.3485543 = phi i64 [ %168, %.lr.ph545.split.new ], [ %.3485543.unr, %.prol.loopexit ]
  %153 = mul i64 %.3485543, %.pre635
  %154 = getelementptr inbounds %struct.doublecomplex, ptr %24, i64 %153
  %155 = load double, ptr %154, align 8, !tbaa !14
  %156 = getelementptr inbounds double, ptr %20, i64 %.3485543
  %157 = load double, ptr %156, align 8, !tbaa !17
  %158 = fsub double %155, %157
  %159 = getelementptr double, ptr %141, i64 %.3485543
  store double %158, ptr %159, align 8, !tbaa !17
  %160 = add nuw nsw i64 %.3485543, 1
  %161 = mul i64 %160, %.pre635
  %162 = getelementptr inbounds %struct.doublecomplex, ptr %24, i64 %161
  %163 = load double, ptr %162, align 8, !tbaa !14
  %164 = getelementptr double, ptr %7, i64 %.3485543
  %165 = load double, ptr %164, align 8, !tbaa !17
  %166 = fsub double %163, %165
  %167 = getelementptr double, ptr %141, i64 %160
  store double %166, ptr %167, align 8, !tbaa !17
  %168 = add nuw nsw i64 %.3485543, 2
  %.not515.not.1 = icmp slt i64 %160, %114
  br i1 %.not515.not.1, label %.lr.ph545.split.new, label %._crit_edge546.split, !llvm.loop !22

._crit_edge546.split:                             ; preds = %.lr.ph545.split.new, %.prol.loopexit
  %.lcssa706 = phi i64 [ %.lcssa706.unr, %.prol.loopexit ], [ %161, %.lr.ph545.split.new ]
  store i64 %.lcssa706, ptr %13, align 8, !tbaa !5
  br label %._crit_edge546

._crit_edge546:                                   ; preds = %.lr.ph545.split.us, %._crit_edge546.split, %113
  %169 = phi i64 [ %114, %._crit_edge546.split ], [ %114, %113 ], [ %136, %.lr.ph545.split.us ]
  %170 = icmp sgt i64 %.0479558, 1
  br i1 %170, label %171, label %187

171:                                              ; preds = %._crit_edge546
  %172 = shl i64 %169, 1
  %.neg520 = add i64 %.0479.neg561, 1
  %173 = sub i64 %.neg520, %169
  %174 = add i64 %173, %172
  store i64 %174, ptr %17, align 8, !tbaa !5
  %175 = getelementptr double, ptr %20, i64 %169
  %176 = getelementptr double, ptr %175, i64 %.0479558
  %177 = call i64 @dmaxloc_(ptr noundef %176, ptr noundef nonnull %17) #6
  %178 = add nsw i64 %.0479558, -1
  %179 = add i64 %178, %177
  %180 = load i64, ptr %1, align 8, !tbaa !5
  %181 = getelementptr double, ptr %20, i64 %180
  %182 = getelementptr double, ptr %181, i64 %179
  %183 = load double, ptr %182, align 8, !tbaa !17
  store double %183, ptr %19, align 8, !tbaa !17
  %184 = fcmp ugt double %183, %.0475
  br i1 %184, label %185, label %split

185:                                              ; preds = %171
  %186 = call i64 @disnan_(ptr noundef nonnull %19) #6
  %.not516 = icmp eq i64 %186, 0
  br i1 %.not516, label %187, label %._crit_edge623

._crit_edge623:                                   ; preds = %185
  %.pre624 = load double, ptr %19, align 8, !tbaa !17
  br label %split

187:                                              ; preds = %185, %._crit_edge546
  %.2 = phi i64 [ %179, %185 ], [ %.1560, %._crit_edge546 ]
  %.not517 = icmp eq i64 %.0479558, %.2
  br i1 %.not517, label %._crit_edge633, label %188

._crit_edge633:                                   ; preds = %187
  %.pre641 = mul nsw i64 %.0479558, %22
  %.pre643 = add nsw i64 %.pre641, %.0479558
  br label %234

188:                                              ; preds = %187
  %189 = mul nsw i64 %.2, %22
  %190 = mul nsw i64 %.0479558, %22
  %191 = add nsw i64 %190, %.0479558
  store i64 %191, ptr %13, align 8, !tbaa !5
  %192 = getelementptr inbounds %struct.doublecomplex, ptr %24, i64 %191
  %193 = getelementptr %struct.doublecomplex, ptr %24, i64 %189
  %194 = getelementptr %struct.doublecomplex, ptr %193, i64 %.2
  %195 = load <2 x double>, ptr %192, align 8, !tbaa !17
  store <2 x double> %195, ptr %194, align 8, !tbaa !17
  %196 = add nsw i64 %.0479558, -1
  store i64 %196, ptr %12, align 8, !tbaa !5
  %gep = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %190
  %gep553 = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %189
  %197 = call i32 @f2c_zswap(ptr noundef nonnull %12, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %gep553, ptr noundef nonnull @c__1) #6
  %198 = load i64, ptr %1, align 8, !tbaa !5
  %199 = icmp slt i64 %.2, %198
  br i1 %199, label %200, label %209

200:                                              ; preds = %188
  %201 = sub nsw i64 %198, %.2
  store i64 %201, ptr %12, align 8, !tbaa !5
  %202 = add nsw i64 %.2, 1
  %203 = mul nsw i64 %202, %22
  %204 = getelementptr %struct.doublecomplex, ptr %24, i64 %.0479558
  %205 = getelementptr %struct.doublecomplex, ptr %204, i64 %203
  %206 = getelementptr %struct.doublecomplex, ptr %24, i64 %.2
  %207 = getelementptr %struct.doublecomplex, ptr %206, i64 %203
  %208 = call i32 @f2c_zswap(ptr noundef nonnull %12, ptr noundef %205, ptr noundef nonnull %3, ptr noundef %207, ptr noundef nonnull %3) #6
  br label %209

209:                                              ; preds = %200, %188
  %210 = add nsw i64 %.2, -1
  store i64 %210, ptr %12, align 8, !tbaa !5
  %.not518.not547 = icmp slt i64 %.0479558, %210
  br i1 %.not518.not547, label %.lr.ph550, label %._crit_edge551

.lr.ph550:                                        ; preds = %209, %.lr.ph550
  %.4486.in548 = phi i64 [ %.4486, %.lr.ph550 ], [ %.0479558, %209 ]
  %.4486 = add nuw nsw i64 %.4486.in548, 1
  %211 = mul nsw i64 %.4486, %22
  %212 = add nsw i64 %211, %.0479558
  %213 = getelementptr inbounds %struct.doublecomplex, ptr %24, i64 %212
  call void @d_cnjg(ptr noundef nonnull %15, ptr noundef %213) #6
  store i64 %212, ptr %13, align 8, !tbaa !5
  %214 = add nsw i64 %.4486, %189
  %215 = getelementptr inbounds %struct.doublecomplex, ptr %24, i64 %214
  %216 = load <2 x double>, ptr %15, align 16, !tbaa !17
  call void @d_cnjg(ptr noundef nonnull %15, ptr noundef %215) #6
  %217 = load i64, ptr %13, align 8, !tbaa !5
  %218 = getelementptr inbounds %struct.doublecomplex, ptr %24, i64 %217
  %219 = load <2 x double>, ptr %15, align 16, !tbaa !17
  store <2 x double> %219, ptr %218, align 8, !tbaa !17
  store i64 %214, ptr %13, align 8, !tbaa !5
  store <2 x double> %216, ptr %215, align 8, !tbaa !17
  %220 = load i64, ptr %12, align 8, !tbaa !5
  %.not518.not = icmp slt i64 %.4486, %220
  br i1 %.not518.not, label %.lr.ph550, label %._crit_edge551, !llvm.loop !23

._crit_edge551:                                   ; preds = %.lr.ph550, %209
  %221 = add nsw i64 %189, %.0479558
  store i64 %221, ptr %12, align 8, !tbaa !5
  %222 = getelementptr inbounds %struct.doublecomplex, ptr %24, i64 %221
  call void @d_cnjg(ptr noundef nonnull %15, ptr noundef %222) #6
  %223 = load i64, ptr %12, align 8, !tbaa !5
  %224 = getelementptr inbounds %struct.doublecomplex, ptr %24, i64 %223
  %225 = load <2 x double>, ptr %15, align 16, !tbaa !17
  store <2 x double> %225, ptr %224, align 8, !tbaa !17
  %226 = getelementptr inbounds double, ptr %20, i64 %.0479558
  %227 = load double, ptr %226, align 8, !tbaa !17
  %228 = getelementptr inbounds double, ptr %20, i64 %.2
  %229 = load double, ptr %228, align 8, !tbaa !17
  store double %229, ptr %226, align 8, !tbaa !17
  store double %227, ptr %228, align 8, !tbaa !17
  %230 = getelementptr inbounds i64, ptr %21, i64 %.2
  %231 = load i64, ptr %230, align 8, !tbaa !5
  %232 = getelementptr inbounds i64, ptr %21, i64 %.0479558
  %233 = load i64, ptr %232, align 8, !tbaa !5
  store i64 %233, ptr %230, align 8, !tbaa !5
  store i64 %231, ptr %232, align 8, !tbaa !5
  br label %234

234:                                              ; preds = %._crit_edge633, %._crit_edge551
  %.pre-phi644 = phi i64 [ %.pre643, %._crit_edge633 ], [ %191, %._crit_edge551 ]
  %.pre-phi642 = phi i64 [ %.pre641, %._crit_edge633 ], [ %190, %._crit_edge551 ]
  %235 = load double, ptr %19, align 8, !tbaa !17
  %236 = call double @sqrt(double noundef %235) #6
  store double %236, ptr %19, align 8, !tbaa !17
  store i64 %.pre-phi644, ptr %12, align 8, !tbaa !5
  %237 = getelementptr inbounds %struct.doublecomplex, ptr %24, i64 %.pre-phi644
  store double %236, ptr %237, align 8, !tbaa !14
  %238 = getelementptr inbounds %struct.doublecomplex, ptr %24, i64 %.pre-phi644, i32 1
  store double 0.000000e+00, ptr %238, align 8, !tbaa !21
  %239 = load i64, ptr %1, align 8, !tbaa !5
  %240 = icmp slt i64 %.0479558, %239
  br i1 %240, label %241, label %._crit_edge632

._crit_edge632:                                   ; preds = %234
  %.pre645 = add nuw nsw i64 %.0479558, 1
  br label %260

241:                                              ; preds = %234
  %242 = add nsw i64 %.0479558, -1
  store i64 %242, ptr %12, align 8, !tbaa !5
  %gep555 = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %.pre-phi642
  %243 = call i32 @zlacgv_(ptr noundef nonnull %12, ptr noundef %gep555, ptr noundef nonnull @c__1) #6
  %244 = sub nuw nsw i64 %.0479558, %.0477568
  store i64 %244, ptr %12, align 8, !tbaa !5
  %245 = load i64, ptr %1, align 8, !tbaa !5
  %246 = sub nsw i64 %245, %.0479558
  store i64 %246, ptr %13, align 8, !tbaa !5
  store <2 x double> <double -1.000000e+00, double -0.000000e+00>, ptr %15, align 16, !tbaa !17
  %247 = add nuw nsw i64 %.0479558, 1
  %248 = mul nsw i64 %247, %22
  %249 = getelementptr %struct.doublecomplex, ptr %112, i64 %248
  %250 = getelementptr %struct.doublecomplex, ptr %112, i64 %.pre-phi642
  %251 = getelementptr %struct.doublecomplex, ptr %24, i64 %.0479558
  %252 = getelementptr %struct.doublecomplex, ptr %251, i64 %248
  %253 = call i32 @f2c_zgemv(ptr noundef nonnull @.str.5, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %15, ptr noundef %249, ptr noundef nonnull %3, ptr noundef %250, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b1, ptr noundef %252, ptr noundef nonnull %3) #6
  store i64 %242, ptr %12, align 8, !tbaa !5
  %254 = call i32 @zlacgv_(ptr noundef nonnull %12, ptr noundef %gep555, ptr noundef nonnull @c__1) #6
  %255 = load i64, ptr %1, align 8, !tbaa !5
  %256 = sub nsw i64 %255, %.0479558
  store i64 %256, ptr %12, align 8, !tbaa !5
  %257 = load double, ptr %19, align 8, !tbaa !17
  %258 = fdiv double 1.000000e+00, %257
  store double %258, ptr %14, align 8, !tbaa !17
  %259 = call i32 @f2c_zdscal(ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef %252, ptr noundef nonnull %3) #6
  br label %260

260:                                              ; preds = %._crit_edge632, %241
  %.pre-phi646 = phi i64 [ %.pre645, %._crit_edge632 ], [ %247, %241 ]
  %.0479.neg = xor i64 %.0479558, -1
  %261 = load i64, ptr %11, align 8, !tbaa !5
  %.not513.not = icmp slt i64 %.0479558, %261
  br i1 %.not513.not, label %113, label %._crit_edge564.loopexit, !llvm.loop !24

._crit_edge564.loopexit:                          ; preds = %260
  %.pre625 = load i64, ptr %18, align 8, !tbaa !5
  %.pre626 = load i64, ptr %1, align 8, !tbaa !5
  br label %._crit_edge564

._crit_edge564:                                   ; preds = %._crit_edge564.loopexit, %._crit_edge541
  %262 = phi i64 [ %102, %._crit_edge541 ], [ %.pre626, %._crit_edge564.loopexit ]
  %263 = phi i64 [ %105, %._crit_edge541 ], [ %.pre625, %._crit_edge564.loopexit ]
  %.0479.lcssa = phi i64 [ %.0477568, %._crit_edge541 ], [ %.pre-phi646, %._crit_edge564.loopexit ]
  %.1.lcssa = phi i64 [ %.0476569, %._crit_edge541 ], [ %.2, %._crit_edge564.loopexit ]
  %.0479.neg.lcssa = phi i64 [ %.0479.neg556, %._crit_edge541 ], [ %.0479.neg, %._crit_edge564.loopexit ]
  %264 = add nsw i64 %263, %.0477568
  %.not514 = icmp sgt i64 %264, %262
  br i1 %.not514, label %274, label %265

265:                                              ; preds = %._crit_edge564
  %266 = add i64 %.0479.neg.lcssa, 1
  %267 = add i64 %266, %262
  store i64 %267, ptr %11, align 8, !tbaa !5
  %268 = mul nsw i64 %.0479.lcssa, %22
  %269 = getelementptr %struct.doublecomplex, ptr %24, i64 %.0477568
  %270 = getelementptr %struct.doublecomplex, ptr %269, i64 %268
  %271 = getelementptr %struct.doublecomplex, ptr %24, i64 %.0479.lcssa
  %272 = getelementptr %struct.doublecomplex, ptr %271, i64 %268
  %273 = call i32 @f2c_zherk(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %11, ptr noundef nonnull %18, ptr noundef nonnull @c_b29, ptr noundef %270, ptr noundef nonnull %3, ptr noundef nonnull @c_b30, ptr noundef %272, ptr noundef nonnull %3) #6
  br label %274

274:                                              ; preds = %._crit_edge564, %265
  %275 = add nuw nsw i64 %.0477568, %41
  %.not510 = icmp sgt i64 %275, %97
  %indvar.next = add i64 %indvar, 1
  br i1 %.not510, label %.loopexit, label %101, !llvm.loop !25

276:                                              ; preds = %96
  %277 = icmp sgt i64 %97, 0
  br i1 %277, label %.lr.ph611, label %.loopexit

.lr.ph611:                                        ; preds = %276
  %invariant.gep588 = getelementptr i8, ptr %2, i64 -16
  %invariant.gep592 = getelementptr i8, ptr %24, i64 16
  %278 = getelementptr inbounds i8, ptr %16, i64 8
  br label %279

279:                                              ; preds = %.lr.ph611, %430
  %.3609 = phi i64 [ %78, %.lr.ph611 ], [ %.4.lcssa, %430 ]
  %.1478608 = phi i64 [ 1, %.lr.ph611 ], [ %431, %430 ]
  %280 = load i64, ptr %1, align 8, !tbaa !5
  %281 = sub nsw i64 %280, %.1478608
  %282 = add nsw i64 %281, 1
  store i64 %282, ptr %12, align 8, !tbaa !5
  %283 = call i64 @llvm.smin.i64(i64 %41, i64 %282)
  store i64 %283, ptr %18, align 8, !tbaa !5
  %.not503572 = icmp sgt i64 %.1478608, %280
  br i1 %.not503572, label %._crit_edge576, label %.lr.ph575.preheader

.lr.ph575.preheader:                              ; preds = %279
  %284 = shl i64 %.1478608, 3
  %scevgep622 = getelementptr i8, ptr %20, i64 %284
  %285 = add i64 %280, 1
  %286 = sub i64 %285, %.1478608
  %287 = shl nuw i64 %286, 3
  call void @llvm.memset.p0.i64(ptr align 8 %scevgep622, i8 0, i64 %287, i1 false), !tbaa !17
  br label %._crit_edge576

._crit_edge576:                                   ; preds = %.lr.ph575.preheader, %279
  %288 = add nsw i64 %.1478608, -1
  %289 = add i64 %288, %283
  store i64 %289, ptr %11, align 8, !tbaa !5
  %.1480.neg596 = sub nsw i64 0, %.1478608
  %.not504597 = icmp sgt i64 %.1478608, %289
  br i1 %.not504597, label %._crit_edge603, label %.lr.ph602

.lr.ph602:                                        ; preds = %._crit_edge576
  %290 = mul nsw i64 %.1478608, %22
  br label %291

291:                                              ; preds = %.lr.ph602, %415
  %.1480.neg600 = phi i64 [ %.1480.neg596, %.lr.ph602 ], [ %.1480.neg, %415 ]
  %.4599 = phi i64 [ %.3609, %.lr.ph602 ], [ %.5, %415 ]
  %.1480598 = phi i64 [ %.1478608, %.lr.ph602 ], [ %416, %415 ]
  %292 = load i64, ptr %1, align 8, !tbaa !5
  store i64 %292, ptr %12, align 8, !tbaa !5
  %.not506577 = icmp sgt i64 %.1480598, %292
  br i1 %.not506577, label %._crit_edge581, label %.lr.ph580

.lr.ph580:                                        ; preds = %291
  %293 = icmp sgt i64 %.1480598, %.1478608
  %294 = add nsw i64 %.1480598, -1
  %295 = mul nsw i64 %294, %22
  br i1 %293, label %.lr.ph580.split.us.preheader, label %.lr.ph580.split

.lr.ph580.split.us.preheader:                     ; preds = %.lr.ph580
  %invariant.gep739 = getelementptr %struct.doublecomplex, ptr %24, i64 %295
  br label %.lr.ph580.split.us

.lr.ph580.split.us:                               ; preds = %.lr.ph580.split.us.preheader, %.lr.ph580.split.us
  %.6578.us = phi i64 [ %317, %.lr.ph580.split.us ], [ %.1480598, %.lr.ph580.split.us.preheader ]
  %gep740 = getelementptr %struct.doublecomplex, ptr %invariant.gep739, i64 %.6578.us
  call void @d_cnjg(ptr noundef nonnull %16, ptr noundef %gep740) #6
  %296 = load <2 x double>, ptr %16, align 16
  %297 = load double, ptr %278, align 8, !tbaa !21
  %298 = fneg double %297
  %299 = load <2 x double>, ptr %gep740, align 8, !tbaa !17
  %300 = insertelement <2 x double> poison, double %297, i64 0
  %301 = insertelement <2 x double> %300, double %298, i64 1
  %302 = fmul <2 x double> %299, %301
  %303 = shufflevector <2 x double> %302, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %304 = shufflevector <2 x double> %296, <2 x double> poison, <2 x i32> zeroinitializer
  %305 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %304, <2 x double> %299, <2 x double> %303)
  store <2 x double> %305, ptr %15, align 16, !tbaa !17
  %306 = getelementptr inbounds double, ptr %20, i64 %.6578.us
  %307 = load double, ptr %306, align 8, !tbaa !17
  %308 = extractelement <2 x double> %305, i64 0
  %309 = fadd double %308, %307
  store double %309, ptr %306, align 8, !tbaa !17
  %310 = mul i64 %.6578.us, %.pre635
  store i64 %310, ptr %13, align 8, !tbaa !5
  %311 = getelementptr inbounds %struct.doublecomplex, ptr %24, i64 %310
  %312 = load double, ptr %311, align 8, !tbaa !14
  %313 = fsub double %312, %309
  %314 = load i64, ptr %1, align 8, !tbaa !5
  %315 = getelementptr double, ptr %20, i64 %314
  %316 = getelementptr double, ptr %315, i64 %.6578.us
  store double %313, ptr %316, align 8, !tbaa !17
  %317 = add nuw nsw i64 %.6578.us, 1
  %318 = load i64, ptr %12, align 8, !tbaa !5
  %.not506.us.not = icmp slt i64 %.6578.us, %318
  br i1 %.not506.us.not, label %.lr.ph580.split.us, label %._crit_edge581, !llvm.loop !26

.lr.ph580.split:                                  ; preds = %.lr.ph580
  %319 = getelementptr double, ptr %20, i64 %292
  br label %320

320:                                              ; preds = %.lr.ph580.split, %320
  %.6578 = phi i64 [ %.1480598, %.lr.ph580.split ], [ %328, %320 ]
  %321 = mul i64 %.6578, %.pre635
  %322 = getelementptr inbounds %struct.doublecomplex, ptr %24, i64 %321
  %323 = load double, ptr %322, align 8, !tbaa !14
  %324 = getelementptr inbounds double, ptr %20, i64 %.6578
  %325 = load double, ptr %324, align 8, !tbaa !17
  %326 = fsub double %323, %325
  %327 = getelementptr double, ptr %319, i64 %.6578
  store double %326, ptr %327, align 8, !tbaa !17
  %328 = add nuw nsw i64 %.6578, 1
  %.not506.not = icmp slt i64 %.6578, %292
  br i1 %.not506.not, label %320, label %._crit_edge581.split, !llvm.loop !26

._crit_edge581.split:                             ; preds = %320
  store i64 %321, ptr %13, align 8, !tbaa !5
  br label %._crit_edge581

._crit_edge581:                                   ; preds = %.lr.ph580.split.us, %._crit_edge581.split, %291
  %329 = phi i64 [ %292, %._crit_edge581.split ], [ %292, %291 ], [ %314, %.lr.ph580.split.us ]
  %330 = icmp sgt i64 %.1480598, 1
  br i1 %330, label %331, label %347

331:                                              ; preds = %._crit_edge581
  %332 = shl i64 %329, 1
  %.neg522 = add i64 %.1480.neg600, 1
  %333 = sub i64 %.neg522, %329
  %334 = add i64 %333, %332
  store i64 %334, ptr %17, align 8, !tbaa !5
  %335 = getelementptr double, ptr %20, i64 %329
  %336 = getelementptr double, ptr %335, i64 %.1480598
  %337 = call i64 @dmaxloc_(ptr noundef %336, ptr noundef nonnull %17) #6
  %338 = add nsw i64 %.1480598, -1
  %339 = add i64 %338, %337
  %340 = load i64, ptr %1, align 8, !tbaa !5
  %341 = getelementptr double, ptr %20, i64 %340
  %342 = getelementptr double, ptr %341, i64 %339
  %343 = load double, ptr %342, align 8, !tbaa !17
  store double %343, ptr %19, align 8, !tbaa !17
  %344 = fcmp ugt double %343, %.0475
  br i1 %344, label %345, label %split

345:                                              ; preds = %331
  %346 = call i64 @disnan_(ptr noundef nonnull %19) #6
  %.not507 = icmp eq i64 %346, 0
  br i1 %.not507, label %347, label %._crit_edge627

._crit_edge627:                                   ; preds = %345
  %.pre629 = load double, ptr %19, align 8, !tbaa !17
  br label %split

347:                                              ; preds = %345, %._crit_edge581
  %.5 = phi i64 [ %339, %345 ], [ %.4599, %._crit_edge581 ]
  %.not508 = icmp eq i64 %.1480598, %.5
  br i1 %.not508, label %._crit_edge634, label %348

._crit_edge634:                                   ; preds = %347
  %.pre637 = mul nsw i64 %.1480598, %22
  %.pre639 = add nsw i64 %.pre637, %.1480598
  br label %390

348:                                              ; preds = %347
  %349 = mul nsw i64 %.5, %22
  %350 = mul nsw i64 %.1480598, %22
  %351 = add nsw i64 %350, %.1480598
  store i64 %351, ptr %13, align 8, !tbaa !5
  %352 = getelementptr inbounds %struct.doublecomplex, ptr %24, i64 %351
  %353 = getelementptr %struct.doublecomplex, ptr %24, i64 %349
  %354 = getelementptr %struct.doublecomplex, ptr %353, i64 %.5
  %355 = load <2 x double>, ptr %352, align 8, !tbaa !17
  store <2 x double> %355, ptr %354, align 8, !tbaa !17
  %356 = add nsw i64 %.1480598, -1
  store i64 %356, ptr %12, align 8, !tbaa !5
  %gep589 = getelementptr %struct.doublecomplex, ptr %invariant.gep588, i64 %.1480598
  %gep591 = getelementptr %struct.doublecomplex, ptr %invariant.gep588, i64 %.5
  %357 = call i32 @f2c_zswap(ptr noundef nonnull %12, ptr noundef %gep589, ptr noundef nonnull %3, ptr noundef %gep591, ptr noundef nonnull %3) #6
  %358 = load i64, ptr %1, align 8, !tbaa !5
  %359 = icmp slt i64 %.5, %358
  br i1 %359, label %360, label %365

360:                                              ; preds = %348
  %361 = sub nsw i64 %358, %.5
  store i64 %361, ptr %12, align 8, !tbaa !5
  %gep593 = getelementptr %struct.doublecomplex, ptr %invariant.gep592, i64 %.5
  %362 = getelementptr %struct.doublecomplex, ptr %gep593, i64 %350
  %363 = getelementptr %struct.doublecomplex, ptr %gep593, i64 %349
  %364 = call i32 @f2c_zswap(ptr noundef nonnull %12, ptr noundef %362, ptr noundef nonnull @c__1, ptr noundef %363, ptr noundef nonnull @c__1) #6
  br label %365

365:                                              ; preds = %360, %348
  %366 = add nsw i64 %.5, -1
  store i64 %366, ptr %12, align 8, !tbaa !5
  %.not509.not583 = icmp slt i64 %.1480598, %366
  br i1 %.not509.not583, label %.lr.ph586, label %._crit_edge587

.lr.ph586:                                        ; preds = %365, %.lr.ph586
  %.7.in584 = phi i64 [ %.7, %.lr.ph586 ], [ %.1480598, %365 ]
  %.7 = add nuw nsw i64 %.7.in584, 1
  %367 = add nsw i64 %.7, %350
  %368 = getelementptr inbounds %struct.doublecomplex, ptr %24, i64 %367
  call void @d_cnjg(ptr noundef nonnull %15, ptr noundef %368) #6
  store i64 %367, ptr %13, align 8, !tbaa !5
  %369 = mul nsw i64 %.7, %22
  %370 = add nsw i64 %369, %.5
  %371 = getelementptr inbounds %struct.doublecomplex, ptr %24, i64 %370
  %372 = load <2 x double>, ptr %15, align 16, !tbaa !17
  call void @d_cnjg(ptr noundef nonnull %15, ptr noundef %371) #6
  %373 = load i64, ptr %13, align 8, !tbaa !5
  %374 = getelementptr inbounds %struct.doublecomplex, ptr %24, i64 %373
  %375 = load <2 x double>, ptr %15, align 16, !tbaa !17
  store <2 x double> %375, ptr %374, align 8, !tbaa !17
  store i64 %370, ptr %13, align 8, !tbaa !5
  store <2 x double> %372, ptr %371, align 8, !tbaa !17
  %376 = load i64, ptr %12, align 8, !tbaa !5
  %.not509.not = icmp slt i64 %.7, %376
  br i1 %.not509.not, label %.lr.ph586, label %._crit_edge587, !llvm.loop !27

._crit_edge587:                                   ; preds = %.lr.ph586, %365
  %377 = add nsw i64 %.5, %350
  store i64 %377, ptr %12, align 8, !tbaa !5
  %378 = getelementptr inbounds %struct.doublecomplex, ptr %24, i64 %377
  call void @d_cnjg(ptr noundef nonnull %15, ptr noundef %378) #6
  %379 = load i64, ptr %12, align 8, !tbaa !5
  %380 = getelementptr inbounds %struct.doublecomplex, ptr %24, i64 %379
  %381 = load <2 x double>, ptr %15, align 16, !tbaa !17
  store <2 x double> %381, ptr %380, align 8, !tbaa !17
  %382 = getelementptr inbounds double, ptr %20, i64 %.1480598
  %383 = load double, ptr %382, align 8, !tbaa !17
  %384 = getelementptr inbounds double, ptr %20, i64 %.5
  %385 = load double, ptr %384, align 8, !tbaa !17
  store double %385, ptr %382, align 8, !tbaa !17
  store double %383, ptr %384, align 8, !tbaa !17
  %386 = getelementptr inbounds i64, ptr %21, i64 %.5
  %387 = load i64, ptr %386, align 8, !tbaa !5
  %388 = getelementptr inbounds i64, ptr %21, i64 %.1480598
  %389 = load i64, ptr %388, align 8, !tbaa !5
  store i64 %389, ptr %386, align 8, !tbaa !5
  store i64 %387, ptr %388, align 8, !tbaa !5
  br label %390

390:                                              ; preds = %._crit_edge634, %._crit_edge587
  %.pre-phi640 = phi i64 [ %.pre639, %._crit_edge634 ], [ %351, %._crit_edge587 ]
  %.pre-phi638 = phi i64 [ %.pre637, %._crit_edge634 ], [ %350, %._crit_edge587 ]
  %391 = load double, ptr %19, align 8, !tbaa !17
  %392 = call double @sqrt(double noundef %391) #6
  store double %392, ptr %19, align 8, !tbaa !17
  store i64 %.pre-phi640, ptr %12, align 8, !tbaa !5
  %393 = getelementptr inbounds %struct.doublecomplex, ptr %24, i64 %.pre-phi640
  store double %392, ptr %393, align 8, !tbaa !14
  %394 = getelementptr inbounds %struct.doublecomplex, ptr %24, i64 %.pre-phi640, i32 1
  store double 0.000000e+00, ptr %394, align 8, !tbaa !21
  %395 = load i64, ptr %1, align 8, !tbaa !5
  %396 = icmp slt i64 %.1480598, %395
  br i1 %396, label %397, label %415

397:                                              ; preds = %390
  %398 = add nsw i64 %.1480598, -1
  store i64 %398, ptr %12, align 8, !tbaa !5
  %399 = getelementptr %struct.doublecomplex, ptr %24, i64 %.1480598
  %400 = getelementptr %struct.doublecomplex, ptr %399, i64 %22
  %401 = call i32 @zlacgv_(ptr noundef nonnull %12, ptr noundef %400, ptr noundef nonnull %3) #6
  %402 = load i64, ptr %1, align 8, !tbaa !5
  %403 = sub nsw i64 %402, %.1480598
  store i64 %403, ptr %12, align 8, !tbaa !5
  %404 = sub nsw i64 %.1480598, %.1478608
  store i64 %404, ptr %13, align 8, !tbaa !5
  store <2 x double> <double -1.000000e+00, double -0.000000e+00>, ptr %15, align 16, !tbaa !17
  %gep595 = getelementptr %struct.doublecomplex, ptr %invariant.gep592, i64 %.1480598
  %405 = getelementptr %struct.doublecomplex, ptr %gep595, i64 %290
  %406 = getelementptr %struct.doublecomplex, ptr %399, i64 %290
  %407 = getelementptr %struct.doublecomplex, ptr %gep595, i64 %.pre-phi638
  %408 = call i32 @f2c_zgemv(ptr noundef nonnull @.str.8, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %15, ptr noundef %405, ptr noundef nonnull %3, ptr noundef %406, ptr noundef nonnull %3, ptr noundef nonnull @c_b1, ptr noundef %407, ptr noundef nonnull @c__1) #6
  store i64 %398, ptr %12, align 8, !tbaa !5
  %409 = call i32 @zlacgv_(ptr noundef nonnull %12, ptr noundef %400, ptr noundef nonnull %3) #6
  %410 = load i64, ptr %1, align 8, !tbaa !5
  %411 = sub nsw i64 %410, %.1480598
  store i64 %411, ptr %12, align 8, !tbaa !5
  %412 = load double, ptr %19, align 8, !tbaa !17
  %413 = fdiv double 1.000000e+00, %412
  store double %413, ptr %14, align 8, !tbaa !17
  %414 = call i32 @f2c_zdscal(ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef %407, ptr noundef nonnull @c__1) #6
  br label %415

415:                                              ; preds = %390, %397
  %416 = add nuw nsw i64 %.1480598, 1
  %.1480.neg = xor i64 %.1480598, -1
  %417 = load i64, ptr %11, align 8, !tbaa !5
  %.not504.not = icmp slt i64 %.1480598, %417
  br i1 %.not504.not, label %291, label %._crit_edge603.loopexit, !llvm.loop !28

._crit_edge603.loopexit:                          ; preds = %415
  %.pre630 = load i64, ptr %18, align 8, !tbaa !5
  %.pre631 = load i64, ptr %1, align 8, !tbaa !5
  br label %._crit_edge603

._crit_edge603:                                   ; preds = %._crit_edge603.loopexit, %._crit_edge576
  %418 = phi i64 [ %280, %._crit_edge576 ], [ %.pre631, %._crit_edge603.loopexit ]
  %419 = phi i64 [ %283, %._crit_edge576 ], [ %.pre630, %._crit_edge603.loopexit ]
  %.1480.lcssa = phi i64 [ %.1478608, %._crit_edge576 ], [ %416, %._crit_edge603.loopexit ]
  %.4.lcssa = phi i64 [ %.3609, %._crit_edge576 ], [ %.5, %._crit_edge603.loopexit ]
  %.1480.neg.lcssa = phi i64 [ %.1480.neg596, %._crit_edge576 ], [ %.1480.neg, %._crit_edge603.loopexit ]
  %420 = add nsw i64 %419, %.1478608
  %.not505 = icmp sgt i64 %420, %418
  br i1 %.not505, label %430, label %421

421:                                              ; preds = %._crit_edge603
  %422 = add i64 %.1480.neg.lcssa, 1
  %423 = add i64 %422, %418
  store i64 %423, ptr %11, align 8, !tbaa !5
  %424 = mul nsw i64 %.1478608, %22
  %425 = getelementptr %struct.doublecomplex, ptr %24, i64 %.1480.lcssa
  %426 = getelementptr %struct.doublecomplex, ptr %425, i64 %424
  %427 = mul i64 %.1480.lcssa, %.pre635
  %428 = getelementptr inbounds %struct.doublecomplex, ptr %24, i64 %427
  %429 = call i32 @f2c_zherk(ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.8, ptr noundef nonnull %11, ptr noundef nonnull %18, ptr noundef nonnull @c_b29, ptr noundef %426, ptr noundef nonnull %3, ptr noundef nonnull @c_b30, ptr noundef %428, ptr noundef nonnull %3) #6
  br label %430

430:                                              ; preds = %._crit_edge603, %421
  %431 = add nuw nsw i64 %41, %.1478608
  %.not647 = icmp sgt i64 %431, %97
  br i1 %.not647, label %.loopexit, label %279, !llvm.loop !29

.loopexit:                                        ; preds = %274, %430, %98, %276
  %432 = load i64, ptr %1, align 8, !tbaa !5
  store i64 %432, ptr %5, align 8, !tbaa !5
  br label %436

split:                                            ; preds = %171, %331, %._crit_edge627, %._crit_edge623
  %.1480598656.sink = phi i64 [ %.0479558, %._crit_edge623 ], [ %.1480598, %._crit_edge627 ], [ %.1480598, %331 ], [ %.0479558, %171 ]
  %.sink671 = phi double [ %.pre624, %._crit_edge623 ], [ %.pre629, %._crit_edge627 ], [ %343, %331 ], [ %183, %171 ]
  %.pre-phi = phi i64 [ %178, %._crit_edge623 ], [ %338, %._crit_edge627 ], [ %338, %331 ], [ %178, %171 ]
  %433 = mul i64 %.1480598656.sink, %.pre635
  %434 = getelementptr inbounds %struct.doublecomplex, ptr %24, i64 %433
  store double %.sink671, ptr %434, align 8, !tbaa !14
  %435 = getelementptr inbounds %struct.doublecomplex, ptr %24, i64 %433, i32 1
  store double 0.000000e+00, ptr %435, align 8, !tbaa !21
  store i64 %.pre-phi, ptr %5, align 8, !tbaa !5
  store i64 1, ptr %8, align 8, !tbaa !5
  br label %436

436:                                              ; preds = %48, %85, %.loopexit, %split, %38, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #6
  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 i64 @ilaenv_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

declare i64 @disnan_(ptr noundef) local_unnamed_addr #2

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @sqrt(double noundef) local_unnamed_addr #3

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

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

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

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

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x double> @llvm.fmuladd.v2f64(<2 x double>, <2 x double>, <2 x double>) #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 nofree nounwind willreturn memory(write) "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 #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #6 = { nounwind }

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

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


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