; LLVM IR from OpenMathLib/OpenBLAS :: lapack-netlib/SRC (zhetf2_rook)

; 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 [12 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i32, align 4

; Function Attrs: nounwind uwtable
define dso_local void @zhetf2_rook_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5) #0 {
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca double, align 8
  %22 = alloca double, align 8
  %23 = alloca %struct.doublecomplex, align 8
  %24 = alloca %struct.doublecomplex, align 8
  %25 = alloca %struct.doublecomplex, align 8
  %26 = alloca %struct.doublecomplex, align 8
  %27 = alloca %struct.doublecomplex, align 8
  %28 = alloca %struct.doublecomplex, align 8
  %29 = alloca %struct.doublecomplex, align 8
  %30 = alloca %struct.doublecomplex, align 8
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca double, align 8
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca %struct.doublecomplex, align 8
  %40 = alloca double, align 8
  %41 = alloca double, align 8
  %42 = alloca double, align 8
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca double, align 8
  %47 = alloca double, align 8
  %48 = alloca %struct.doublecomplex, align 8
  %49 = alloca double, align 8
  %50 = alloca %struct.doublecomplex, align 8
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca i32, align 4
  %54 = alloca double, align 8
  %55 = alloca %struct.doublecomplex, align 8
  %56 = alloca double, align 8
  %57 = alloca double, align 8
  %58 = alloca double, align 8
  %59 = alloca %struct.doublecomplex, align 8
  %60 = alloca %struct.doublecomplex, align 8
  %61 = alloca i32, align 4
  store ptr %0, ptr %7, align 8, !tbaa !5
  store ptr %1, ptr %8, align 8, !tbaa !5
  store ptr %2, ptr %9, align 8, !tbaa !5
  store ptr %3, ptr %10, align 8, !tbaa !5
  store ptr %4, ptr %11, align 8, !tbaa !5
  store ptr %5, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %23) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %24) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %25) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %26) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %27) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %28) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %29) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %30) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %39) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %48) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %50) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %55) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %59) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %60) #6
  %62 = load ptr, ptr %10, align 8, !tbaa !5
  %63 = load i32, ptr %62, align 4, !tbaa !9
  store i32 %63, ptr %13, align 4, !tbaa !9
  %64 = load i32, ptr %13, align 4, !tbaa !9
  %65 = mul nsw i32 %64, 1
  %66 = add nsw i32 1, %65
  store i32 %66, ptr %14, align 4, !tbaa !9
  %67 = load i32, ptr %14, align 4, !tbaa !9
  %68 = load ptr, ptr %9, align 8, !tbaa !5
  %69 = sext i32 %67 to i64
  %70 = sub i64 0, %69
  %71 = getelementptr inbounds %struct.doublecomplex, ptr %68, i64 %70
  store ptr %71, ptr %9, align 8, !tbaa !5
  %72 = load ptr, ptr %11, align 8, !tbaa !5
  %73 = getelementptr inbounds i32, ptr %72, i32 -1
  store ptr %73, ptr %11, align 8, !tbaa !5
  %74 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 0, ptr %74, align 4, !tbaa !9
  %75 = load ptr, ptr %7, align 8, !tbaa !5
  %76 = call i32 @lsame_(ptr noundef %75, ptr noundef @.str)
  store i32 %76, ptr %45, align 4, !tbaa !9
  %77 = load i32, ptr %45, align 4, !tbaa !9
  %78 = icmp ne i32 %77, 0
  br i1 %78, label %85, label %79

79:                                               ; preds = %6
  %80 = load ptr, ptr %7, align 8, !tbaa !5
  %81 = call i32 @lsame_(ptr noundef %80, ptr noundef @.str.1)
  %82 = icmp ne i32 %81, 0
  br i1 %82, label %85, label %83

83:                                               ; preds = %79
  %84 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 -1, ptr %84, align 4, !tbaa !9
  br label %108

85:                                               ; preds = %79, %6
  %86 = load ptr, ptr %8, align 8, !tbaa !5
  %87 = load i32, ptr %86, align 4, !tbaa !9
  %88 = icmp slt i32 %87, 0
  br i1 %88, label %89, label %91

89:                                               ; preds = %85
  %90 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 -2, ptr %90, align 4, !tbaa !9
  br label %107

91:                                               ; preds = %85
  %92 = load ptr, ptr %10, align 8, !tbaa !5
  %93 = load i32, ptr %92, align 4, !tbaa !9
  %94 = load ptr, ptr %8, align 8, !tbaa !5
  %95 = load i32, ptr %94, align 4, !tbaa !9
  %96 = icmp sge i32 1, %95
  br i1 %96, label %97, label %98

97:                                               ; preds = %91
  br label %101

98:                                               ; preds = %91
  %99 = load ptr, ptr %8, align 8, !tbaa !5
  %100 = load i32, ptr %99, align 4, !tbaa !9
  br label %101

101:                                              ; preds = %98, %97
  %102 = phi i32 [ 1, %97 ], [ %100, %98 ]
  %103 = icmp slt i32 %93, %102
  br i1 %103, label %104, label %106

104:                                              ; preds = %101
  %105 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 -4, ptr %105, align 4, !tbaa !9
  br label %106

106:                                              ; preds = %104, %101
  br label %107

107:                                              ; preds = %106, %89
  br label %108

108:                                              ; preds = %107, %83
  %109 = load ptr, ptr %12, align 8, !tbaa !5
  %110 = load i32, ptr %109, align 4, !tbaa !9
  %111 = icmp ne i32 %110, 0
  br i1 %111, label %112, label %117

112:                                              ; preds = %108
  %113 = load ptr, ptr %12, align 8, !tbaa !5
  %114 = load i32, ptr %113, align 4, !tbaa !9
  %115 = sub nsw i32 0, %114
  store i32 %115, ptr %15, align 4, !tbaa !9
  %116 = call i32 @xerbla_(ptr noundef @.str.2, ptr noundef %15, i32 noundef 11)
  store i32 1, ptr %61, align 4
  br label %3478

117:                                              ; preds = %108
  %118 = call double @sqrt(double noundef 1.700000e+01) #6
  %119 = fadd double %118, 1.000000e+00
  %120 = fdiv double %119, 8.000000e+00
  store double %120, ptr %40, align 8, !tbaa !11
  %121 = call double @dlamch_(ptr noundef @.str.3)
  store double %121, ptr %42, align 8, !tbaa !11
  %122 = load i32, ptr %45, align 4, !tbaa !9
  %123 = icmp ne i32 %122, 0
  br i1 %123, label %124, label %1778

124:                                              ; preds = %117
  %125 = load ptr, ptr %8, align 8, !tbaa !5
  %126 = load i32, ptr %125, align 4, !tbaa !9
  store i32 %126, ptr %37, align 4, !tbaa !9
  br label %127

127:                                              ; preds = %1774, %124
  %128 = load i32, ptr %37, align 4, !tbaa !9
  %129 = icmp slt i32 %128, 1
  br i1 %129, label %130, label %131

130:                                              ; preds = %127
  br label %3477

131:                                              ; preds = %127
  store i32 1, ptr %44, align 4, !tbaa !9
  %132 = load i32, ptr %37, align 4, !tbaa !9
  store i32 %132, ptr %38, align 4, !tbaa !9
  %133 = load i32, ptr %37, align 4, !tbaa !9
  %134 = load i32, ptr %37, align 4, !tbaa !9
  %135 = load i32, ptr %13, align 4, !tbaa !9
  %136 = mul nsw i32 %134, %135
  %137 = add nsw i32 %133, %136
  store i32 %137, ptr %15, align 4, !tbaa !9
  %138 = load ptr, ptr %9, align 8, !tbaa !5
  %139 = load i32, ptr %15, align 4, !tbaa !9
  %140 = sext i32 %139 to i64
  %141 = getelementptr inbounds %struct.doublecomplex, ptr %138, i64 %140
  %142 = getelementptr inbounds %struct.doublecomplex, ptr %141, i32 0, i32 0
  %143 = load double, ptr %142, align 8, !tbaa !13
  store double %143, ptr %21, align 8, !tbaa !11
  %144 = load double, ptr %21, align 8, !tbaa !11
  %145 = fcmp oge double %144, 0.000000e+00
  br i1 %145, label %146, label %148

146:                                              ; preds = %131
  %147 = load double, ptr %21, align 8, !tbaa !11
  br label %151

148:                                              ; preds = %131
  %149 = load double, ptr %21, align 8, !tbaa !11
  %150 = fneg double %149
  br label %151

151:                                              ; preds = %148, %146
  %152 = phi double [ %147, %146 ], [ %150, %148 ]
  store double %152, ptr %54, align 8, !tbaa !11
  %153 = load i32, ptr %37, align 4, !tbaa !9
  %154 = icmp sgt i32 %153, 1
  br i1 %154, label %155, label %207

155:                                              ; preds = %151
  %156 = load i32, ptr %37, align 4, !tbaa !9
  %157 = sub nsw i32 %156, 1
  store i32 %157, ptr %15, align 4, !tbaa !9
  %158 = load ptr, ptr %9, align 8, !tbaa !5
  %159 = load i32, ptr %37, align 4, !tbaa !9
  %160 = load i32, ptr %13, align 4, !tbaa !9
  %161 = mul nsw i32 %159, %160
  %162 = add nsw i32 %161, 1
  %163 = sext i32 %162 to i64
  %164 = getelementptr inbounds %struct.doublecomplex, ptr %158, i64 %163
  %165 = call i32 @izamax_(ptr noundef %15, ptr noundef %164, ptr noundef @c__1)
  store i32 %165, ptr %32, align 4, !tbaa !9
  %166 = load i32, ptr %32, align 4, !tbaa !9
  %167 = load i32, ptr %37, align 4, !tbaa !9
  %168 = load i32, ptr %13, align 4, !tbaa !9
  %169 = mul nsw i32 %167, %168
  %170 = add nsw i32 %166, %169
  store i32 %170, ptr %15, align 4, !tbaa !9
  %171 = load ptr, ptr %9, align 8, !tbaa !5
  %172 = load i32, ptr %15, align 4, !tbaa !9
  %173 = sext i32 %172 to i64
  %174 = getelementptr inbounds %struct.doublecomplex, ptr %171, i64 %173
  %175 = getelementptr inbounds %struct.doublecomplex, ptr %174, i32 0, i32 0
  %176 = load double, ptr %175, align 8, !tbaa !13
  store double %176, ptr %21, align 8, !tbaa !11
  %177 = load double, ptr %21, align 8, !tbaa !11
  %178 = fcmp oge double %177, 0.000000e+00
  br i1 %178, label %179, label %181

179:                                              ; preds = %155
  %180 = load double, ptr %21, align 8, !tbaa !11
  br label %184

181:                                              ; preds = %155
  %182 = load double, ptr %21, align 8, !tbaa !11
  %183 = fneg double %182
  br label %184

184:                                              ; preds = %181, %179
  %185 = phi double [ %180, %179 ], [ %183, %181 ]
  %186 = load ptr, ptr %9, align 8, !tbaa !5
  %187 = load i32, ptr %32, align 4, !tbaa !9
  %188 = load i32, ptr %37, align 4, !tbaa !9
  %189 = load i32, ptr %13, align 4, !tbaa !9
  %190 = mul nsw i32 %188, %189
  %191 = add nsw i32 %187, %190
  %192 = sext i32 %191 to i64
  %193 = getelementptr inbounds %struct.doublecomplex, ptr %186, i64 %192
  %194 = call { double, double } @Cd(ptr noundef %193)
  %195 = extractvalue { double, double } %194, 0
  %196 = extractvalue { double, double } %194, 1
  store double %196, ptr %22, align 8, !tbaa !11
  %197 = load double, ptr %22, align 8, !tbaa !11
  %198 = fcmp oge double %197, 0.000000e+00
  br i1 %198, label %199, label %201

199:                                              ; preds = %184
  %200 = load double, ptr %22, align 8, !tbaa !11
  br label %204

201:                                              ; preds = %184
  %202 = load double, ptr %22, align 8, !tbaa !11
  %203 = fneg double %202
  br label %204

204:                                              ; preds = %201, %199
  %205 = phi double [ %200, %199 ], [ %203, %201 ]
  %206 = fadd double %185, %205
  store double %206, ptr %57, align 8, !tbaa !11
  br label %208

207:                                              ; preds = %151
  store double 0.000000e+00, ptr %57, align 8, !tbaa !11
  br label %208

208:                                              ; preds = %207, %204
  %209 = load double, ptr %54, align 8, !tbaa !11
  %210 = load double, ptr %57, align 8, !tbaa !11
  %211 = fcmp oge double %209, %210
  br i1 %211, label %212, label %214

212:                                              ; preds = %208
  %213 = load double, ptr %54, align 8, !tbaa !11
  br label %216

214:                                              ; preds = %208
  %215 = load double, ptr %57, align 8, !tbaa !11
  br label %216

216:                                              ; preds = %214, %212
  %217 = phi double [ %213, %212 ], [ %215, %214 ]
  %218 = fcmp oeq double %217, 0.000000e+00
  br i1 %218, label %219, label %255

219:                                              ; preds = %216
  %220 = load ptr, ptr %12, align 8, !tbaa !5
  %221 = load i32, ptr %220, align 4, !tbaa !9
  %222 = icmp eq i32 %221, 0
  br i1 %222, label %223, label %226

223:                                              ; preds = %219
  %224 = load i32, ptr %37, align 4, !tbaa !9
  %225 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 %224, ptr %225, align 4, !tbaa !9
  br label %226

226:                                              ; preds = %223, %219
  %227 = load i32, ptr %37, align 4, !tbaa !9
  store i32 %227, ptr %53, align 4, !tbaa !9
  %228 = load i32, ptr %37, align 4, !tbaa !9
  %229 = load i32, ptr %37, align 4, !tbaa !9
  %230 = load i32, ptr %13, align 4, !tbaa !9
  %231 = mul nsw i32 %229, %230
  %232 = add nsw i32 %228, %231
  store i32 %232, ptr %15, align 4, !tbaa !9
  %233 = load i32, ptr %37, align 4, !tbaa !9
  %234 = load i32, ptr %37, align 4, !tbaa !9
  %235 = load i32, ptr %13, align 4, !tbaa !9
  %236 = mul nsw i32 %234, %235
  %237 = add nsw i32 %233, %236
  store i32 %237, ptr %16, align 4, !tbaa !9
  %238 = load ptr, ptr %9, align 8, !tbaa !5
  %239 = load i32, ptr %16, align 4, !tbaa !9
  %240 = sext i32 %239 to i64
  %241 = getelementptr inbounds %struct.doublecomplex, ptr %238, i64 %240
  %242 = getelementptr inbounds %struct.doublecomplex, ptr %241, i32 0, i32 0
  %243 = load double, ptr %242, align 8, !tbaa !13
  store double %243, ptr %21, align 8, !tbaa !11
  %244 = load double, ptr %21, align 8, !tbaa !11
  %245 = load ptr, ptr %9, align 8, !tbaa !5
  %246 = load i32, ptr %15, align 4, !tbaa !9
  %247 = sext i32 %246 to i64
  %248 = getelementptr inbounds %struct.doublecomplex, ptr %245, i64 %247
  %249 = getelementptr inbounds %struct.doublecomplex, ptr %248, i32 0, i32 0
  store double %244, ptr %249, align 8, !tbaa !13
  %250 = load ptr, ptr %9, align 8, !tbaa !5
  %251 = load i32, ptr %15, align 4, !tbaa !9
  %252 = sext i32 %251 to i64
  %253 = getelementptr inbounds %struct.doublecomplex, ptr %250, i64 %252
  %254 = getelementptr inbounds %struct.doublecomplex, ptr %253, i32 0, i32 1
  store double 0.000000e+00, ptr %254, align 8, !tbaa !15
  br label %1751

255:                                              ; preds = %216
  %256 = load double, ptr %54, align 8, !tbaa !11
  %257 = load double, ptr %40, align 8, !tbaa !11
  %258 = load double, ptr %57, align 8, !tbaa !11
  %259 = fmul double %257, %258
  %260 = fcmp olt double %256, %259
  br i1 %260, label %263, label %261

261:                                              ; preds = %255
  %262 = load i32, ptr %37, align 4, !tbaa !9
  store i32 %262, ptr %53, align 4, !tbaa !9
  br label %436

263:                                              ; preds = %255
  store i32 0, ptr %31, align 4, !tbaa !9
  br label %264

264:                                              ; preds = %434, %263
  %265 = load i32, ptr %32, align 4, !tbaa !9
  %266 = load i32, ptr %37, align 4, !tbaa !9
  %267 = icmp ne i32 %265, %266
  br i1 %267, label %268, label %326

268:                                              ; preds = %264
  %269 = load i32, ptr %37, align 4, !tbaa !9
  %270 = load i32, ptr %32, align 4, !tbaa !9
  %271 = sub nsw i32 %269, %270
  store i32 %271, ptr %15, align 4, !tbaa !9
  %272 = load i32, ptr %32, align 4, !tbaa !9
  %273 = load ptr, ptr %9, align 8, !tbaa !5
  %274 = load i32, ptr %32, align 4, !tbaa !9
  %275 = load i32, ptr %32, align 4, !tbaa !9
  %276 = add nsw i32 %275, 1
  %277 = load i32, ptr %13, align 4, !tbaa !9
  %278 = mul nsw i32 %276, %277
  %279 = add nsw i32 %274, %278
  %280 = sext i32 %279 to i64
  %281 = getelementptr inbounds %struct.doublecomplex, ptr %273, i64 %280
  %282 = load ptr, ptr %10, align 8, !tbaa !5
  %283 = call i32 @izamax_(ptr noundef %15, ptr noundef %281, ptr noundef %282)
  %284 = add nsw i32 %272, %283
  store i32 %284, ptr %33, align 4, !tbaa !9
  %285 = load i32, ptr %32, align 4, !tbaa !9
  %286 = load i32, ptr %33, align 4, !tbaa !9
  %287 = load i32, ptr %13, align 4, !tbaa !9
  %288 = mul nsw i32 %286, %287
  %289 = add nsw i32 %285, %288
  store i32 %289, ptr %15, align 4, !tbaa !9
  %290 = load ptr, ptr %9, align 8, !tbaa !5
  %291 = load i32, ptr %15, align 4, !tbaa !9
  %292 = sext i32 %291 to i64
  %293 = getelementptr inbounds %struct.doublecomplex, ptr %290, i64 %292
  %294 = getelementptr inbounds %struct.doublecomplex, ptr %293, i32 0, i32 0
  %295 = load double, ptr %294, align 8, !tbaa !13
  store double %295, ptr %21, align 8, !tbaa !11
  %296 = load double, ptr %21, align 8, !tbaa !11
  %297 = fcmp oge double %296, 0.000000e+00
  br i1 %297, label %298, label %300

298:                                              ; preds = %268
  %299 = load double, ptr %21, align 8, !tbaa !11
  br label %303

300:                                              ; preds = %268
  %301 = load double, ptr %21, align 8, !tbaa !11
  %302 = fneg double %301
  br label %303

303:                                              ; preds = %300, %298
  %304 = phi double [ %299, %298 ], [ %302, %300 ]
  %305 = load ptr, ptr %9, align 8, !tbaa !5
  %306 = load i32, ptr %32, align 4, !tbaa !9
  %307 = load i32, ptr %33, align 4, !tbaa !9
  %308 = load i32, ptr %13, align 4, !tbaa !9
  %309 = mul nsw i32 %307, %308
  %310 = add nsw i32 %306, %309
  %311 = sext i32 %310 to i64
  %312 = getelementptr inbounds %struct.doublecomplex, ptr %305, i64 %311
  %313 = call { double, double } @Cd(ptr noundef %312)
  %314 = extractvalue { double, double } %313, 0
  %315 = extractvalue { double, double } %313, 1
  store double %315, ptr %22, align 8, !tbaa !11
  %316 = load double, ptr %22, align 8, !tbaa !11
  %317 = fcmp oge double %316, 0.000000e+00
  br i1 %317, label %318, label %320

318:                                              ; preds = %303
  %319 = load double, ptr %22, align 8, !tbaa !11
  br label %323

320:                                              ; preds = %303
  %321 = load double, ptr %22, align 8, !tbaa !11
  %322 = fneg double %321
  br label %323

323:                                              ; preds = %320, %318
  %324 = phi double [ %319, %318 ], [ %322, %320 ]
  %325 = fadd double %304, %324
  store double %325, ptr %58, align 8, !tbaa !11
  br label %327

326:                                              ; preds = %264
  store double 0.000000e+00, ptr %58, align 8, !tbaa !11
  br label %327

327:                                              ; preds = %326, %323
  %328 = load i32, ptr %32, align 4, !tbaa !9
  %329 = icmp sgt i32 %328, 1
  br i1 %329, label %330, label %389

330:                                              ; preds = %327
  %331 = load i32, ptr %32, align 4, !tbaa !9
  %332 = sub nsw i32 %331, 1
  store i32 %332, ptr %15, align 4, !tbaa !9
  %333 = load ptr, ptr %9, align 8, !tbaa !5
  %334 = load i32, ptr %32, align 4, !tbaa !9
  %335 = load i32, ptr %13, align 4, !tbaa !9
  %336 = mul nsw i32 %334, %335
  %337 = add nsw i32 %336, 1
  %338 = sext i32 %337 to i64
  %339 = getelementptr inbounds %struct.doublecomplex, ptr %333, i64 %338
  %340 = call i32 @izamax_(ptr noundef %15, ptr noundef %339, ptr noundef @c__1)
  store i32 %340, ptr %43, align 4, !tbaa !9
  %341 = load i32, ptr %43, align 4, !tbaa !9
  %342 = load i32, ptr %32, align 4, !tbaa !9
  %343 = load i32, ptr %13, align 4, !tbaa !9
  %344 = mul nsw i32 %342, %343
  %345 = add nsw i32 %341, %344
  store i32 %345, ptr %15, align 4, !tbaa !9
  %346 = load ptr, ptr %9, align 8, !tbaa !5
  %347 = load i32, ptr %15, align 4, !tbaa !9
  %348 = sext i32 %347 to i64
  %349 = getelementptr inbounds %struct.doublecomplex, ptr %346, i64 %348
  %350 = getelementptr inbounds %struct.doublecomplex, ptr %349, i32 0, i32 0
  %351 = load double, ptr %350, align 8, !tbaa !13
  store double %351, ptr %21, align 8, !tbaa !11
  %352 = load double, ptr %21, align 8, !tbaa !11
  %353 = fcmp oge double %352, 0.000000e+00
  br i1 %353, label %354, label %356

354:                                              ; preds = %330
  %355 = load double, ptr %21, align 8, !tbaa !11
  br label %359

356:                                              ; preds = %330
  %357 = load double, ptr %21, align 8, !tbaa !11
  %358 = fneg double %357
  br label %359

359:                                              ; preds = %356, %354
  %360 = phi double [ %355, %354 ], [ %358, %356 ]
  %361 = load ptr, ptr %9, align 8, !tbaa !5
  %362 = load i32, ptr %43, align 4, !tbaa !9
  %363 = load i32, ptr %32, align 4, !tbaa !9
  %364 = load i32, ptr %13, align 4, !tbaa !9
  %365 = mul nsw i32 %363, %364
  %366 = add nsw i32 %362, %365
  %367 = sext i32 %366 to i64
  %368 = getelementptr inbounds %struct.doublecomplex, ptr %361, i64 %367
  %369 = call { double, double } @Cd(ptr noundef %368)
  %370 = extractvalue { double, double } %369, 0
  %371 = extractvalue { double, double } %369, 1
  store double %371, ptr %22, align 8, !tbaa !11
  %372 = load double, ptr %22, align 8, !tbaa !11
  %373 = fcmp oge double %372, 0.000000e+00
  br i1 %373, label %374, label %376

374:                                              ; preds = %359
  %375 = load double, ptr %22, align 8, !tbaa !11
  br label %379

376:                                              ; preds = %359
  %377 = load double, ptr %22, align 8, !tbaa !11
  %378 = fneg double %377
  br label %379

379:                                              ; preds = %376, %374
  %380 = phi double [ %375, %374 ], [ %378, %376 ]
  %381 = fadd double %360, %380
  store double %381, ptr %41, align 8, !tbaa !11
  %382 = load double, ptr %41, align 8, !tbaa !11
  %383 = load double, ptr %58, align 8, !tbaa !11
  %384 = fcmp ogt double %382, %383
  br i1 %384, label %385, label %388

385:                                              ; preds = %379
  %386 = load double, ptr %41, align 8, !tbaa !11
  store double %386, ptr %58, align 8, !tbaa !11
  %387 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %387, ptr %33, align 4, !tbaa !9
  br label %388

388:                                              ; preds = %385, %379
  br label %389

389:                                              ; preds = %388, %327
  %390 = load i32, ptr %32, align 4, !tbaa !9
  %391 = load i32, ptr %32, align 4, !tbaa !9
  %392 = load i32, ptr %13, align 4, !tbaa !9
  %393 = mul nsw i32 %391, %392
  %394 = add nsw i32 %390, %393
  store i32 %394, ptr %15, align 4, !tbaa !9
  %395 = load ptr, ptr %9, align 8, !tbaa !5
  %396 = load i32, ptr %15, align 4, !tbaa !9
  %397 = sext i32 %396 to i64
  %398 = getelementptr inbounds %struct.doublecomplex, ptr %395, i64 %397
  %399 = getelementptr inbounds %struct.doublecomplex, ptr %398, i32 0, i32 0
  %400 = load double, ptr %399, align 8, !tbaa !13
  store double %400, ptr %21, align 8, !tbaa !11
  %401 = load double, ptr %21, align 8, !tbaa !11
  %402 = fcmp oge double %401, 0.000000e+00
  br i1 %402, label %403, label %405

403:                                              ; preds = %389
  %404 = load double, ptr %21, align 8, !tbaa !11
  br label %408

405:                                              ; preds = %389
  %406 = load double, ptr %21, align 8, !tbaa !11
  %407 = fneg double %406
  br label %408

408:                                              ; preds = %405, %403
  %409 = phi double [ %404, %403 ], [ %407, %405 ]
  %410 = load double, ptr %40, align 8, !tbaa !11
  %411 = load double, ptr %58, align 8, !tbaa !11
  %412 = fmul double %410, %411
  %413 = fcmp olt double %409, %412
  br i1 %413, label %416, label %414

414:                                              ; preds = %408
  %415 = load i32, ptr %32, align 4, !tbaa !9
  store i32 %415, ptr %53, align 4, !tbaa !9
  store i32 1, ptr %31, align 4, !tbaa !9
  br label %431

416:                                              ; preds = %408
  %417 = load i32, ptr %38, align 4, !tbaa !9
  %418 = load i32, ptr %33, align 4, !tbaa !9
  %419 = icmp eq i32 %417, %418
  br i1 %419, label %424, label %420

420:                                              ; preds = %416
  %421 = load double, ptr %58, align 8, !tbaa !11
  %422 = load double, ptr %57, align 8, !tbaa !11
  %423 = fcmp ole double %421, %422
  br i1 %423, label %424, label %426

424:                                              ; preds = %420, %416
  %425 = load i32, ptr %32, align 4, !tbaa !9
  store i32 %425, ptr %53, align 4, !tbaa !9
  store i32 2, ptr %44, align 4, !tbaa !9
  store i32 1, ptr %31, align 4, !tbaa !9
  br label %430

426:                                              ; preds = %420
  %427 = load i32, ptr %32, align 4, !tbaa !9
  store i32 %427, ptr %38, align 4, !tbaa !9
  %428 = load double, ptr %58, align 8, !tbaa !11
  store double %428, ptr %57, align 8, !tbaa !11
  %429 = load i32, ptr %33, align 4, !tbaa !9
  store i32 %429, ptr %32, align 4, !tbaa !9
  br label %430

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

431:                                              ; preds = %430, %414
  %432 = load i32, ptr %31, align 4, !tbaa !9
  %433 = icmp ne i32 %432, 0
  br i1 %433, label %435, label %434

434:                                              ; preds = %431
  br label %264

435:                                              ; preds = %431
  br label %436

436:                                              ; preds = %435, %261
  %437 = load i32, ptr %37, align 4, !tbaa !9
  %438 = load i32, ptr %44, align 4, !tbaa !9
  %439 = sub nsw i32 %437, %438
  %440 = add nsw i32 %439, 1
  store i32 %440, ptr %52, align 4, !tbaa !9
  %441 = load i32, ptr %44, align 4, !tbaa !9
  %442 = icmp eq i32 %441, 2
  br i1 %442, label %443, label %643

443:                                              ; preds = %436
  %444 = load i32, ptr %38, align 4, !tbaa !9
  %445 = load i32, ptr %37, align 4, !tbaa !9
  %446 = icmp ne i32 %444, %445
  br i1 %446, label %447, label %643

447:                                              ; preds = %443
  %448 = load i32, ptr %38, align 4, !tbaa !9
  %449 = icmp sgt i32 %448, 1
  br i1 %449, label %450, label %467

450:                                              ; preds = %447
  %451 = load i32, ptr %38, align 4, !tbaa !9
  %452 = sub nsw i32 %451, 1
  store i32 %452, ptr %15, align 4, !tbaa !9
  %453 = load ptr, ptr %9, align 8, !tbaa !5
  %454 = load i32, ptr %37, align 4, !tbaa !9
  %455 = load i32, ptr %13, align 4, !tbaa !9
  %456 = mul nsw i32 %454, %455
  %457 = add nsw i32 %456, 1
  %458 = sext i32 %457 to i64
  %459 = getelementptr inbounds %struct.doublecomplex, ptr %453, i64 %458
  %460 = load ptr, ptr %9, align 8, !tbaa !5
  %461 = load i32, ptr %38, align 4, !tbaa !9
  %462 = load i32, ptr %13, align 4, !tbaa !9
  %463 = mul nsw i32 %461, %462
  %464 = add nsw i32 %463, 1
  %465 = sext i32 %464 to i64
  %466 = getelementptr inbounds %struct.doublecomplex, ptr %460, i64 %465
  call void @zswap_(ptr noundef %15, ptr noundef %459, ptr noundef @c__1, ptr noundef %466, ptr noundef @c__1)
  br label %467

467:                                              ; preds = %450, %447
  %468 = load i32, ptr %37, align 4, !tbaa !9
  %469 = sub nsw i32 %468, 1
  store i32 %469, ptr %15, align 4, !tbaa !9
  %470 = load i32, ptr %38, align 4, !tbaa !9
  %471 = add nsw i32 %470, 1
  store i32 %471, ptr %36, align 4, !tbaa !9
  br label %472

472:                                              ; preds = %551, %467
  %473 = load i32, ptr %36, align 4, !tbaa !9
  %474 = load i32, ptr %15, align 4, !tbaa !9
  %475 = icmp sle i32 %473, %474
  br i1 %475, label %476, label %554

476:                                              ; preds = %472
  %477 = load ptr, ptr %9, align 8, !tbaa !5
  %478 = load i32, ptr %36, align 4, !tbaa !9
  %479 = load i32, ptr %37, align 4, !tbaa !9
  %480 = load i32, ptr %13, align 4, !tbaa !9
  %481 = mul nsw i32 %479, %480
  %482 = add nsw i32 %478, %481
  %483 = sext i32 %482 to i64
  %484 = getelementptr inbounds %struct.doublecomplex, ptr %477, i64 %483
  %485 = call { double, double } @Cd(ptr noundef %484)
  %486 = extractvalue { double, double } %485, 0
  %487 = extractvalue { double, double } %485, 1
  %488 = fneg double %487
  %489 = call ptr @_pCd(ptr noundef %23)
  %490 = getelementptr inbounds { double, double }, ptr %489, i32 0, i32 0
  %491 = getelementptr inbounds { double, double }, ptr %489, i32 0, i32 1
  store double %486, ptr %490, align 8
  store double %488, ptr %491, align 8
  %492 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  %493 = load double, ptr %492, align 8, !tbaa !13
  %494 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  store double %493, ptr %494, align 8, !tbaa !13
  %495 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  %496 = load double, ptr %495, align 8, !tbaa !15
  %497 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  store double %496, ptr %497, align 8, !tbaa !15
  %498 = load i32, ptr %36, align 4, !tbaa !9
  %499 = load i32, ptr %37, align 4, !tbaa !9
  %500 = load i32, ptr %13, align 4, !tbaa !9
  %501 = mul nsw i32 %499, %500
  %502 = add nsw i32 %498, %501
  store i32 %502, ptr %16, align 4, !tbaa !9
  %503 = load ptr, ptr %9, align 8, !tbaa !5
  %504 = load i32, ptr %38, align 4, !tbaa !9
  %505 = load i32, ptr %36, align 4, !tbaa !9
  %506 = load i32, ptr %13, align 4, !tbaa !9
  %507 = mul nsw i32 %505, %506
  %508 = add nsw i32 %504, %507
  %509 = sext i32 %508 to i64
  %510 = getelementptr inbounds %struct.doublecomplex, ptr %503, i64 %509
  %511 = call { double, double } @Cd(ptr noundef %510)
  %512 = extractvalue { double, double } %511, 0
  %513 = extractvalue { double, double } %511, 1
  %514 = fneg double %513
  %515 = call ptr @_pCd(ptr noundef %23)
  %516 = getelementptr inbounds { double, double }, ptr %515, i32 0, i32 0
  %517 = getelementptr inbounds { double, double }, ptr %515, i32 0, i32 1
  store double %512, ptr %516, align 8
  store double %514, ptr %517, align 8
  %518 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  %519 = load double, ptr %518, align 8, !tbaa !13
  %520 = load ptr, ptr %9, align 8, !tbaa !5
  %521 = load i32, ptr %16, align 4, !tbaa !9
  %522 = sext i32 %521 to i64
  %523 = getelementptr inbounds %struct.doublecomplex, ptr %520, i64 %522
  %524 = getelementptr inbounds %struct.doublecomplex, ptr %523, i32 0, i32 0
  store double %519, ptr %524, align 8, !tbaa !13
  %525 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  %526 = load double, ptr %525, align 8, !tbaa !15
  %527 = load ptr, ptr %9, align 8, !tbaa !5
  %528 = load i32, ptr %16, align 4, !tbaa !9
  %529 = sext i32 %528 to i64
  %530 = getelementptr inbounds %struct.doublecomplex, ptr %527, i64 %529
  %531 = getelementptr inbounds %struct.doublecomplex, ptr %530, i32 0, i32 1
  store double %526, ptr %531, align 8, !tbaa !15
  %532 = load i32, ptr %38, align 4, !tbaa !9
  %533 = load i32, ptr %36, align 4, !tbaa !9
  %534 = load i32, ptr %13, align 4, !tbaa !9
  %535 = mul nsw i32 %533, %534
  %536 = add nsw i32 %532, %535
  store i32 %536, ptr %16, align 4, !tbaa !9
  %537 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  %538 = load double, ptr %537, align 8, !tbaa !13
  %539 = load ptr, ptr %9, align 8, !tbaa !5
  %540 = load i32, ptr %16, align 4, !tbaa !9
  %541 = sext i32 %540 to i64
  %542 = getelementptr inbounds %struct.doublecomplex, ptr %539, i64 %541
  %543 = getelementptr inbounds %struct.doublecomplex, ptr %542, i32 0, i32 0
  store double %538, ptr %543, align 8, !tbaa !13
  %544 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  %545 = load double, ptr %544, align 8, !tbaa !15
  %546 = load ptr, ptr %9, align 8, !tbaa !5
  %547 = load i32, ptr %16, align 4, !tbaa !9
  %548 = sext i32 %547 to i64
  %549 = getelementptr inbounds %struct.doublecomplex, ptr %546, i64 %548
  %550 = getelementptr inbounds %struct.doublecomplex, ptr %549, i32 0, i32 1
  store double %545, ptr %550, align 8, !tbaa !15
  br label %551

551:                                              ; preds = %476
  %552 = load i32, ptr %36, align 4, !tbaa !9
  %553 = add nsw i32 %552, 1
  store i32 %553, ptr %36, align 4, !tbaa !9
  br label %472, !llvm.loop !16

554:                                              ; preds = %472
  %555 = load i32, ptr %38, align 4, !tbaa !9
  %556 = load i32, ptr %37, align 4, !tbaa !9
  %557 = load i32, ptr %13, align 4, !tbaa !9
  %558 = mul nsw i32 %556, %557
  %559 = add nsw i32 %555, %558
  store i32 %559, ptr %15, align 4, !tbaa !9
  %560 = load ptr, ptr %9, align 8, !tbaa !5
  %561 = load i32, ptr %38, align 4, !tbaa !9
  %562 = load i32, ptr %37, align 4, !tbaa !9
  %563 = load i32, ptr %13, align 4, !tbaa !9
  %564 = mul nsw i32 %562, %563
  %565 = add nsw i32 %561, %564
  %566 = sext i32 %565 to i64
  %567 = getelementptr inbounds %struct.doublecomplex, ptr %560, i64 %566
  %568 = call { double, double } @Cd(ptr noundef %567)
  %569 = extractvalue { double, double } %568, 0
  %570 = extractvalue { double, double } %568, 1
  %571 = fneg double %570
  %572 = call ptr @_pCd(ptr noundef %23)
  %573 = getelementptr inbounds { double, double }, ptr %572, i32 0, i32 0
  %574 = getelementptr inbounds { double, double }, ptr %572, i32 0, i32 1
  store double %569, ptr %573, align 8
  store double %571, ptr %574, align 8
  %575 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  %576 = load double, ptr %575, align 8, !tbaa !13
  %577 = load ptr, ptr %9, align 8, !tbaa !5
  %578 = load i32, ptr %15, align 4, !tbaa !9
  %579 = sext i32 %578 to i64
  %580 = getelementptr inbounds %struct.doublecomplex, ptr %577, i64 %579
  %581 = getelementptr inbounds %struct.doublecomplex, ptr %580, i32 0, i32 0
  store double %576, ptr %581, align 8, !tbaa !13
  %582 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  %583 = load double, ptr %582, align 8, !tbaa !15
  %584 = load ptr, ptr %9, align 8, !tbaa !5
  %585 = load i32, ptr %15, align 4, !tbaa !9
  %586 = sext i32 %585 to i64
  %587 = getelementptr inbounds %struct.doublecomplex, ptr %584, i64 %586
  %588 = getelementptr inbounds %struct.doublecomplex, ptr %587, i32 0, i32 1
  store double %583, ptr %588, align 8, !tbaa !15
  %589 = load i32, ptr %37, align 4, !tbaa !9
  %590 = load i32, ptr %37, align 4, !tbaa !9
  %591 = load i32, ptr %13, align 4, !tbaa !9
  %592 = mul nsw i32 %590, %591
  %593 = add nsw i32 %589, %592
  store i32 %593, ptr %15, align 4, !tbaa !9
  %594 = load ptr, ptr %9, align 8, !tbaa !5
  %595 = load i32, ptr %15, align 4, !tbaa !9
  %596 = sext i32 %595 to i64
  %597 = getelementptr inbounds %struct.doublecomplex, ptr %594, i64 %596
  %598 = getelementptr inbounds %struct.doublecomplex, ptr %597, i32 0, i32 0
  %599 = load double, ptr %598, align 8, !tbaa !13
  store double %599, ptr %46, align 8, !tbaa !11
  %600 = load i32, ptr %37, align 4, !tbaa !9
  %601 = load i32, ptr %37, align 4, !tbaa !9
  %602 = load i32, ptr %13, align 4, !tbaa !9
  %603 = mul nsw i32 %601, %602
  %604 = add nsw i32 %600, %603
  store i32 %604, ptr %15, align 4, !tbaa !9
  %605 = load i32, ptr %38, align 4, !tbaa !9
  %606 = load i32, ptr %38, align 4, !tbaa !9
  %607 = load i32, ptr %13, align 4, !tbaa !9
  %608 = mul nsw i32 %606, %607
  %609 = add nsw i32 %605, %608
  store i32 %609, ptr %16, align 4, !tbaa !9
  %610 = load ptr, ptr %9, align 8, !tbaa !5
  %611 = load i32, ptr %16, align 4, !tbaa !9
  %612 = sext i32 %611 to i64
  %613 = getelementptr inbounds %struct.doublecomplex, ptr %610, i64 %612
  %614 = getelementptr inbounds %struct.doublecomplex, ptr %613, i32 0, i32 0
  %615 = load double, ptr %614, align 8, !tbaa !13
  store double %615, ptr %21, align 8, !tbaa !11
  %616 = load double, ptr %21, align 8, !tbaa !11
  %617 = load ptr, ptr %9, align 8, !tbaa !5
  %618 = load i32, ptr %15, align 4, !tbaa !9
  %619 = sext i32 %618 to i64
  %620 = getelementptr inbounds %struct.doublecomplex, ptr %617, i64 %619
  %621 = getelementptr inbounds %struct.doublecomplex, ptr %620, i32 0, i32 0
  store double %616, ptr %621, align 8, !tbaa !13
  %622 = load ptr, ptr %9, align 8, !tbaa !5
  %623 = load i32, ptr %15, align 4, !tbaa !9
  %624 = sext i32 %623 to i64
  %625 = getelementptr inbounds %struct.doublecomplex, ptr %622, i64 %624
  %626 = getelementptr inbounds %struct.doublecomplex, ptr %625, i32 0, i32 1
  store double 0.000000e+00, ptr %626, align 8, !tbaa !15
  %627 = load i32, ptr %38, align 4, !tbaa !9
  %628 = load i32, ptr %38, align 4, !tbaa !9
  %629 = load i32, ptr %13, align 4, !tbaa !9
  %630 = mul nsw i32 %628, %629
  %631 = add nsw i32 %627, %630
  store i32 %631, ptr %15, align 4, !tbaa !9
  %632 = load double, ptr %46, align 8, !tbaa !11
  %633 = load ptr, ptr %9, align 8, !tbaa !5
  %634 = load i32, ptr %15, align 4, !tbaa !9
  %635 = sext i32 %634 to i64
  %636 = getelementptr inbounds %struct.doublecomplex, ptr %633, i64 %635
  %637 = getelementptr inbounds %struct.doublecomplex, ptr %636, i32 0, i32 0
  store double %632, ptr %637, align 8, !tbaa !13
  %638 = load ptr, ptr %9, align 8, !tbaa !5
  %639 = load i32, ptr %15, align 4, !tbaa !9
  %640 = sext i32 %639 to i64
  %641 = getelementptr inbounds %struct.doublecomplex, ptr %638, i64 %640
  %642 = getelementptr inbounds %struct.doublecomplex, ptr %641, i32 0, i32 1
  store double 0.000000e+00, ptr %642, align 8, !tbaa !15
  br label %643

643:                                              ; preds = %554, %443, %436
  %644 = load i32, ptr %53, align 4, !tbaa !9
  %645 = load i32, ptr %52, align 4, !tbaa !9
  %646 = icmp ne i32 %644, %645
  br i1 %646, label %647, label %946

647:                                              ; preds = %643
  %648 = load i32, ptr %53, align 4, !tbaa !9
  %649 = icmp sgt i32 %648, 1
  br i1 %649, label %650, label %667

650:                                              ; preds = %647
  %651 = load i32, ptr %53, align 4, !tbaa !9
  %652 = sub nsw i32 %651, 1
  store i32 %652, ptr %15, align 4, !tbaa !9
  %653 = load ptr, ptr %9, align 8, !tbaa !5
  %654 = load i32, ptr %52, align 4, !tbaa !9
  %655 = load i32, ptr %13, align 4, !tbaa !9
  %656 = mul nsw i32 %654, %655
  %657 = add nsw i32 %656, 1
  %658 = sext i32 %657 to i64
  %659 = getelementptr inbounds %struct.doublecomplex, ptr %653, i64 %658
  %660 = load ptr, ptr %9, align 8, !tbaa !5
  %661 = load i32, ptr %53, align 4, !tbaa !9
  %662 = load i32, ptr %13, align 4, !tbaa !9
  %663 = mul nsw i32 %661, %662
  %664 = add nsw i32 %663, 1
  %665 = sext i32 %664 to i64
  %666 = getelementptr inbounds %struct.doublecomplex, ptr %660, i64 %665
  call void @zswap_(ptr noundef %15, ptr noundef %659, ptr noundef @c__1, ptr noundef %666, ptr noundef @c__1)
  br label %667

667:                                              ; preds = %650, %647
  %668 = load i32, ptr %52, align 4, !tbaa !9
  %669 = sub nsw i32 %668, 1
  store i32 %669, ptr %15, align 4, !tbaa !9
  %670 = load i32, ptr %53, align 4, !tbaa !9
  %671 = add nsw i32 %670, 1
  store i32 %671, ptr %36, align 4, !tbaa !9
  br label %672

672:                                              ; preds = %751, %667
  %673 = load i32, ptr %36, align 4, !tbaa !9
  %674 = load i32, ptr %15, align 4, !tbaa !9
  %675 = icmp sle i32 %673, %674
  br i1 %675, label %676, label %754

676:                                              ; preds = %672
  %677 = load ptr, ptr %9, align 8, !tbaa !5
  %678 = load i32, ptr %36, align 4, !tbaa !9
  %679 = load i32, ptr %52, align 4, !tbaa !9
  %680 = load i32, ptr %13, align 4, !tbaa !9
  %681 = mul nsw i32 %679, %680
  %682 = add nsw i32 %678, %681
  %683 = sext i32 %682 to i64
  %684 = getelementptr inbounds %struct.doublecomplex, ptr %677, i64 %683
  %685 = call { double, double } @Cd(ptr noundef %684)
  %686 = extractvalue { double, double } %685, 0
  %687 = extractvalue { double, double } %685, 1
  %688 = fneg double %687
  %689 = call ptr @_pCd(ptr noundef %23)
  %690 = getelementptr inbounds { double, double }, ptr %689, i32 0, i32 0
  %691 = getelementptr inbounds { double, double }, ptr %689, i32 0, i32 1
  store double %686, ptr %690, align 8
  store double %688, ptr %691, align 8
  %692 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  %693 = load double, ptr %692, align 8, !tbaa !13
  %694 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  store double %693, ptr %694, align 8, !tbaa !13
  %695 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  %696 = load double, ptr %695, align 8, !tbaa !15
  %697 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  store double %696, ptr %697, align 8, !tbaa !15
  %698 = load i32, ptr %36, align 4, !tbaa !9
  %699 = load i32, ptr %52, align 4, !tbaa !9
  %700 = load i32, ptr %13, align 4, !tbaa !9
  %701 = mul nsw i32 %699, %700
  %702 = add nsw i32 %698, %701
  store i32 %702, ptr %16, align 4, !tbaa !9
  %703 = load ptr, ptr %9, align 8, !tbaa !5
  %704 = load i32, ptr %53, align 4, !tbaa !9
  %705 = load i32, ptr %36, align 4, !tbaa !9
  %706 = load i32, ptr %13, align 4, !tbaa !9
  %707 = mul nsw i32 %705, %706
  %708 = add nsw i32 %704, %707
  %709 = sext i32 %708 to i64
  %710 = getelementptr inbounds %struct.doublecomplex, ptr %703, i64 %709
  %711 = call { double, double } @Cd(ptr noundef %710)
  %712 = extractvalue { double, double } %711, 0
  %713 = extractvalue { double, double } %711, 1
  %714 = fneg double %713
  %715 = call ptr @_pCd(ptr noundef %23)
  %716 = getelementptr inbounds { double, double }, ptr %715, i32 0, i32 0
  %717 = getelementptr inbounds { double, double }, ptr %715, i32 0, i32 1
  store double %712, ptr %716, align 8
  store double %714, ptr %717, align 8
  %718 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  %719 = load double, ptr %718, align 8, !tbaa !13
  %720 = load ptr, ptr %9, align 8, !tbaa !5
  %721 = load i32, ptr %16, align 4, !tbaa !9
  %722 = sext i32 %721 to i64
  %723 = getelementptr inbounds %struct.doublecomplex, ptr %720, i64 %722
  %724 = getelementptr inbounds %struct.doublecomplex, ptr %723, i32 0, i32 0
  store double %719, ptr %724, align 8, !tbaa !13
  %725 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  %726 = load double, ptr %725, align 8, !tbaa !15
  %727 = load ptr, ptr %9, align 8, !tbaa !5
  %728 = load i32, ptr %16, align 4, !tbaa !9
  %729 = sext i32 %728 to i64
  %730 = getelementptr inbounds %struct.doublecomplex, ptr %727, i64 %729
  %731 = getelementptr inbounds %struct.doublecomplex, ptr %730, i32 0, i32 1
  store double %726, ptr %731, align 8, !tbaa !15
  %732 = load i32, ptr %53, align 4, !tbaa !9
  %733 = load i32, ptr %36, align 4, !tbaa !9
  %734 = load i32, ptr %13, align 4, !tbaa !9
  %735 = mul nsw i32 %733, %734
  %736 = add nsw i32 %732, %735
  store i32 %736, ptr %16, align 4, !tbaa !9
  %737 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  %738 = load double, ptr %737, align 8, !tbaa !13
  %739 = load ptr, ptr %9, align 8, !tbaa !5
  %740 = load i32, ptr %16, align 4, !tbaa !9
  %741 = sext i32 %740 to i64
  %742 = getelementptr inbounds %struct.doublecomplex, ptr %739, i64 %741
  %743 = getelementptr inbounds %struct.doublecomplex, ptr %742, i32 0, i32 0
  store double %738, ptr %743, align 8, !tbaa !13
  %744 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  %745 = load double, ptr %744, align 8, !tbaa !15
  %746 = load ptr, ptr %9, align 8, !tbaa !5
  %747 = load i32, ptr %16, align 4, !tbaa !9
  %748 = sext i32 %747 to i64
  %749 = getelementptr inbounds %struct.doublecomplex, ptr %746, i64 %748
  %750 = getelementptr inbounds %struct.doublecomplex, ptr %749, i32 0, i32 1
  store double %745, ptr %750, align 8, !tbaa !15
  br label %751

751:                                              ; preds = %676
  %752 = load i32, ptr %36, align 4, !tbaa !9
  %753 = add nsw i32 %752, 1
  store i32 %753, ptr %36, align 4, !tbaa !9
  br label %672, !llvm.loop !18

754:                                              ; preds = %672
  %755 = load i32, ptr %53, align 4, !tbaa !9
  %756 = load i32, ptr %52, align 4, !tbaa !9
  %757 = load i32, ptr %13, align 4, !tbaa !9
  %758 = mul nsw i32 %756, %757
  %759 = add nsw i32 %755, %758
  store i32 %759, ptr %15, align 4, !tbaa !9
  %760 = load ptr, ptr %9, align 8, !tbaa !5
  %761 = load i32, ptr %53, align 4, !tbaa !9
  %762 = load i32, ptr %52, align 4, !tbaa !9
  %763 = load i32, ptr %13, align 4, !tbaa !9
  %764 = mul nsw i32 %762, %763
  %765 = add nsw i32 %761, %764
  %766 = sext i32 %765 to i64
  %767 = getelementptr inbounds %struct.doublecomplex, ptr %760, i64 %766
  %768 = call { double, double } @Cd(ptr noundef %767)
  %769 = extractvalue { double, double } %768, 0
  %770 = extractvalue { double, double } %768, 1
  %771 = fneg double %770
  %772 = call ptr @_pCd(ptr noundef %23)
  %773 = getelementptr inbounds { double, double }, ptr %772, i32 0, i32 0
  %774 = getelementptr inbounds { double, double }, ptr %772, i32 0, i32 1
  store double %769, ptr %773, align 8
  store double %771, ptr %774, align 8
  %775 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  %776 = load double, ptr %775, align 8, !tbaa !13
  %777 = load ptr, ptr %9, align 8, !tbaa !5
  %778 = load i32, ptr %15, align 4, !tbaa !9
  %779 = sext i32 %778 to i64
  %780 = getelementptr inbounds %struct.doublecomplex, ptr %777, i64 %779
  %781 = getelementptr inbounds %struct.doublecomplex, ptr %780, i32 0, i32 0
  store double %776, ptr %781, align 8, !tbaa !13
  %782 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  %783 = load double, ptr %782, align 8, !tbaa !15
  %784 = load ptr, ptr %9, align 8, !tbaa !5
  %785 = load i32, ptr %15, align 4, !tbaa !9
  %786 = sext i32 %785 to i64
  %787 = getelementptr inbounds %struct.doublecomplex, ptr %784, i64 %786
  %788 = getelementptr inbounds %struct.doublecomplex, ptr %787, i32 0, i32 1
  store double %783, ptr %788, align 8, !tbaa !15
  %789 = load i32, ptr %52, align 4, !tbaa !9
  %790 = load i32, ptr %52, align 4, !tbaa !9
  %791 = load i32, ptr %13, align 4, !tbaa !9
  %792 = mul nsw i32 %790, %791
  %793 = add nsw i32 %789, %792
  store i32 %793, ptr %15, align 4, !tbaa !9
  %794 = load ptr, ptr %9, align 8, !tbaa !5
  %795 = load i32, ptr %15, align 4, !tbaa !9
  %796 = sext i32 %795 to i64
  %797 = getelementptr inbounds %struct.doublecomplex, ptr %794, i64 %796
  %798 = getelementptr inbounds %struct.doublecomplex, ptr %797, i32 0, i32 0
  %799 = load double, ptr %798, align 8, !tbaa !13
  store double %799, ptr %46, align 8, !tbaa !11
  %800 = load i32, ptr %52, align 4, !tbaa !9
  %801 = load i32, ptr %52, align 4, !tbaa !9
  %802 = load i32, ptr %13, align 4, !tbaa !9
  %803 = mul nsw i32 %801, %802
  %804 = add nsw i32 %800, %803
  store i32 %804, ptr %15, align 4, !tbaa !9
  %805 = load i32, ptr %53, align 4, !tbaa !9
  %806 = load i32, ptr %53, align 4, !tbaa !9
  %807 = load i32, ptr %13, align 4, !tbaa !9
  %808 = mul nsw i32 %806, %807
  %809 = add nsw i32 %805, %808
  store i32 %809, ptr %16, align 4, !tbaa !9
  %810 = load ptr, ptr %9, align 8, !tbaa !5
  %811 = load i32, ptr %16, align 4, !tbaa !9
  %812 = sext i32 %811 to i64
  %813 = getelementptr inbounds %struct.doublecomplex, ptr %810, i64 %812
  %814 = getelementptr inbounds %struct.doublecomplex, ptr %813, i32 0, i32 0
  %815 = load double, ptr %814, align 8, !tbaa !13
  store double %815, ptr %21, align 8, !tbaa !11
  %816 = load double, ptr %21, align 8, !tbaa !11
  %817 = load ptr, ptr %9, align 8, !tbaa !5
  %818 = load i32, ptr %15, align 4, !tbaa !9
  %819 = sext i32 %818 to i64
  %820 = getelementptr inbounds %struct.doublecomplex, ptr %817, i64 %819
  %821 = getelementptr inbounds %struct.doublecomplex, ptr %820, i32 0, i32 0
  store double %816, ptr %821, align 8, !tbaa !13
  %822 = load ptr, ptr %9, align 8, !tbaa !5
  %823 = load i32, ptr %15, align 4, !tbaa !9
  %824 = sext i32 %823 to i64
  %825 = getelementptr inbounds %struct.doublecomplex, ptr %822, i64 %824
  %826 = getelementptr inbounds %struct.doublecomplex, ptr %825, i32 0, i32 1
  store double 0.000000e+00, ptr %826, align 8, !tbaa !15
  %827 = load i32, ptr %53, align 4, !tbaa !9
  %828 = load i32, ptr %53, align 4, !tbaa !9
  %829 = load i32, ptr %13, align 4, !tbaa !9
  %830 = mul nsw i32 %828, %829
  %831 = add nsw i32 %827, %830
  store i32 %831, ptr %15, align 4, !tbaa !9
  %832 = load double, ptr %46, align 8, !tbaa !11
  %833 = load ptr, ptr %9, align 8, !tbaa !5
  %834 = load i32, ptr %15, align 4, !tbaa !9
  %835 = sext i32 %834 to i64
  %836 = getelementptr inbounds %struct.doublecomplex, ptr %833, i64 %835
  %837 = getelementptr inbounds %struct.doublecomplex, ptr %836, i32 0, i32 0
  store double %832, ptr %837, align 8, !tbaa !13
  %838 = load ptr, ptr %9, align 8, !tbaa !5
  %839 = load i32, ptr %15, align 4, !tbaa !9
  %840 = sext i32 %839 to i64
  %841 = getelementptr inbounds %struct.doublecomplex, ptr %838, i64 %840
  %842 = getelementptr inbounds %struct.doublecomplex, ptr %841, i32 0, i32 1
  store double 0.000000e+00, ptr %842, align 8, !tbaa !15
  %843 = load i32, ptr %44, align 4, !tbaa !9
  %844 = icmp eq i32 %843, 2
  br i1 %844, label %845, label %945

845:                                              ; preds = %754
  %846 = load i32, ptr %37, align 4, !tbaa !9
  %847 = load i32, ptr %37, align 4, !tbaa !9
  %848 = load i32, ptr %13, align 4, !tbaa !9
  %849 = mul nsw i32 %847, %848
  %850 = add nsw i32 %846, %849
  store i32 %850, ptr %15, align 4, !tbaa !9
  %851 = load i32, ptr %37, align 4, !tbaa !9
  %852 = load i32, ptr %37, align 4, !tbaa !9
  %853 = load i32, ptr %13, align 4, !tbaa !9
  %854 = mul nsw i32 %852, %853
  %855 = add nsw i32 %851, %854
  store i32 %855, ptr %16, align 4, !tbaa !9
  %856 = load ptr, ptr %9, align 8, !tbaa !5
  %857 = load i32, ptr %16, align 4, !tbaa !9
  %858 = sext i32 %857 to i64
  %859 = getelementptr inbounds %struct.doublecomplex, ptr %856, i64 %858
  %860 = getelementptr inbounds %struct.doublecomplex, ptr %859, i32 0, i32 0
  %861 = load double, ptr %860, align 8, !tbaa !13
  store double %861, ptr %21, align 8, !tbaa !11
  %862 = load double, ptr %21, align 8, !tbaa !11
  %863 = load ptr, ptr %9, align 8, !tbaa !5
  %864 = load i32, ptr %15, align 4, !tbaa !9
  %865 = sext i32 %864 to i64
  %866 = getelementptr inbounds %struct.doublecomplex, ptr %863, i64 %865
  %867 = getelementptr inbounds %struct.doublecomplex, ptr %866, i32 0, i32 0
  store double %862, ptr %867, align 8, !tbaa !13
  %868 = load ptr, ptr %9, align 8, !tbaa !5
  %869 = load i32, ptr %15, align 4, !tbaa !9
  %870 = sext i32 %869 to i64
  %871 = getelementptr inbounds %struct.doublecomplex, ptr %868, i64 %870
  %872 = getelementptr inbounds %struct.doublecomplex, ptr %871, i32 0, i32 1
  store double 0.000000e+00, ptr %872, align 8, !tbaa !15
  %873 = load i32, ptr %37, align 4, !tbaa !9
  %874 = sub nsw i32 %873, 1
  %875 = load i32, ptr %37, align 4, !tbaa !9
  %876 = load i32, ptr %13, align 4, !tbaa !9
  %877 = mul nsw i32 %875, %876
  %878 = add nsw i32 %874, %877
  store i32 %878, ptr %15, align 4, !tbaa !9
  %879 = load ptr, ptr %9, align 8, !tbaa !5
  %880 = load i32, ptr %15, align 4, !tbaa !9
  %881 = sext i32 %880 to i64
  %882 = getelementptr inbounds %struct.doublecomplex, ptr %879, i64 %881
  %883 = getelementptr inbounds %struct.doublecomplex, ptr %882, i32 0, i32 0
  %884 = load double, ptr %883, align 8, !tbaa !13
  %885 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  store double %884, ptr %885, align 8, !tbaa !13
  %886 = load ptr, ptr %9, align 8, !tbaa !5
  %887 = load i32, ptr %15, align 4, !tbaa !9
  %888 = sext i32 %887 to i64
  %889 = getelementptr inbounds %struct.doublecomplex, ptr %886, i64 %888
  %890 = getelementptr inbounds %struct.doublecomplex, ptr %889, i32 0, i32 1
  %891 = load double, ptr %890, align 8, !tbaa !15
  %892 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  store double %891, ptr %892, align 8, !tbaa !15
  %893 = load i32, ptr %37, align 4, !tbaa !9
  %894 = sub nsw i32 %893, 1
  %895 = load i32, ptr %37, align 4, !tbaa !9
  %896 = load i32, ptr %13, align 4, !tbaa !9
  %897 = mul nsw i32 %895, %896
  %898 = add nsw i32 %894, %897
  store i32 %898, ptr %15, align 4, !tbaa !9
  %899 = load i32, ptr %53, align 4, !tbaa !9
  %900 = load i32, ptr %37, align 4, !tbaa !9
  %901 = load i32, ptr %13, align 4, !tbaa !9
  %902 = mul nsw i32 %900, %901
  %903 = add nsw i32 %899, %902
  store i32 %903, ptr %16, align 4, !tbaa !9
  %904 = load ptr, ptr %9, align 8, !tbaa !5
  %905 = load i32, ptr %16, align 4, !tbaa !9
  %906 = sext i32 %905 to i64
  %907 = getelementptr inbounds %struct.doublecomplex, ptr %904, i64 %906
  %908 = getelementptr inbounds %struct.doublecomplex, ptr %907, i32 0, i32 0
  %909 = load double, ptr %908, align 8, !tbaa !13
  %910 = load ptr, ptr %9, align 8, !tbaa !5
  %911 = load i32, ptr %15, align 4, !tbaa !9
  %912 = sext i32 %911 to i64
  %913 = getelementptr inbounds %struct.doublecomplex, ptr %910, i64 %912
  %914 = getelementptr inbounds %struct.doublecomplex, ptr %913, i32 0, i32 0
  store double %909, ptr %914, align 8, !tbaa !13
  %915 = load ptr, ptr %9, align 8, !tbaa !5
  %916 = load i32, ptr %16, align 4, !tbaa !9
  %917 = sext i32 %916 to i64
  %918 = getelementptr inbounds %struct.doublecomplex, ptr %915, i64 %917
  %919 = getelementptr inbounds %struct.doublecomplex, ptr %918, i32 0, i32 1
  %920 = load double, ptr %919, align 8, !tbaa !15
  %921 = load ptr, ptr %9, align 8, !tbaa !5
  %922 = load i32, ptr %15, align 4, !tbaa !9
  %923 = sext i32 %922 to i64
  %924 = getelementptr inbounds %struct.doublecomplex, ptr %921, i64 %923
  %925 = getelementptr inbounds %struct.doublecomplex, ptr %924, i32 0, i32 1
  store double %920, ptr %925, align 8, !tbaa !15
  %926 = load i32, ptr %53, align 4, !tbaa !9
  %927 = load i32, ptr %37, align 4, !tbaa !9
  %928 = load i32, ptr %13, align 4, !tbaa !9
  %929 = mul nsw i32 %927, %928
  %930 = add nsw i32 %926, %929
  store i32 %930, ptr %15, align 4, !tbaa !9
  %931 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  %932 = load double, ptr %931, align 8, !tbaa !13
  %933 = load ptr, ptr %9, align 8, !tbaa !5
  %934 = load i32, ptr %15, align 4, !tbaa !9
  %935 = sext i32 %934 to i64
  %936 = getelementptr inbounds %struct.doublecomplex, ptr %933, i64 %935
  %937 = getelementptr inbounds %struct.doublecomplex, ptr %936, i32 0, i32 0
  store double %932, ptr %937, align 8, !tbaa !13
  %938 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  %939 = load double, ptr %938, align 8, !tbaa !15
  %940 = load ptr, ptr %9, align 8, !tbaa !5
  %941 = load i32, ptr %15, align 4, !tbaa !9
  %942 = sext i32 %941 to i64
  %943 = getelementptr inbounds %struct.doublecomplex, ptr %940, i64 %942
  %944 = getelementptr inbounds %struct.doublecomplex, ptr %943, i32 0, i32 1
  store double %939, ptr %944, align 8, !tbaa !15
  br label %945

945:                                              ; preds = %845, %754
  br label %1009

946:                                              ; preds = %643
  %947 = load i32, ptr %37, align 4, !tbaa !9
  %948 = load i32, ptr %37, align 4, !tbaa !9
  %949 = load i32, ptr %13, align 4, !tbaa !9
  %950 = mul nsw i32 %948, %949
  %951 = add nsw i32 %947, %950
  store i32 %951, ptr %15, align 4, !tbaa !9
  %952 = load i32, ptr %37, align 4, !tbaa !9
  %953 = load i32, ptr %37, align 4, !tbaa !9
  %954 = load i32, ptr %13, align 4, !tbaa !9
  %955 = mul nsw i32 %953, %954
  %956 = add nsw i32 %952, %955
  store i32 %956, ptr %16, align 4, !tbaa !9
  %957 = load ptr, ptr %9, align 8, !tbaa !5
  %958 = load i32, ptr %16, align 4, !tbaa !9
  %959 = sext i32 %958 to i64
  %960 = getelementptr inbounds %struct.doublecomplex, ptr %957, i64 %959
  %961 = getelementptr inbounds %struct.doublecomplex, ptr %960, i32 0, i32 0
  %962 = load double, ptr %961, align 8, !tbaa !13
  store double %962, ptr %21, align 8, !tbaa !11
  %963 = load double, ptr %21, align 8, !tbaa !11
  %964 = load ptr, ptr %9, align 8, !tbaa !5
  %965 = load i32, ptr %15, align 4, !tbaa !9
  %966 = sext i32 %965 to i64
  %967 = getelementptr inbounds %struct.doublecomplex, ptr %964, i64 %966
  %968 = getelementptr inbounds %struct.doublecomplex, ptr %967, i32 0, i32 0
  store double %963, ptr %968, align 8, !tbaa !13
  %969 = load ptr, ptr %9, align 8, !tbaa !5
  %970 = load i32, ptr %15, align 4, !tbaa !9
  %971 = sext i32 %970 to i64
  %972 = getelementptr inbounds %struct.doublecomplex, ptr %969, i64 %971
  %973 = getelementptr inbounds %struct.doublecomplex, ptr %972, i32 0, i32 1
  store double 0.000000e+00, ptr %973, align 8, !tbaa !15
  %974 = load i32, ptr %44, align 4, !tbaa !9
  %975 = icmp eq i32 %974, 2
  br i1 %975, label %976, label %1008

976:                                              ; preds = %946
  %977 = load i32, ptr %37, align 4, !tbaa !9
  %978 = sub nsw i32 %977, 1
  %979 = load i32, ptr %37, align 4, !tbaa !9
  %980 = sub nsw i32 %979, 1
  %981 = load i32, ptr %13, align 4, !tbaa !9
  %982 = mul nsw i32 %980, %981
  %983 = add nsw i32 %978, %982
  store i32 %983, ptr %15, align 4, !tbaa !9
  %984 = load i32, ptr %37, align 4, !tbaa !9
  %985 = sub nsw i32 %984, 1
  %986 = load i32, ptr %37, align 4, !tbaa !9
  %987 = sub nsw i32 %986, 1
  %988 = load i32, ptr %13, align 4, !tbaa !9
  %989 = mul nsw i32 %987, %988
  %990 = add nsw i32 %985, %989
  store i32 %990, ptr %16, align 4, !tbaa !9
  %991 = load ptr, ptr %9, align 8, !tbaa !5
  %992 = load i32, ptr %16, align 4, !tbaa !9
  %993 = sext i32 %992 to i64
  %994 = getelementptr inbounds %struct.doublecomplex, ptr %991, i64 %993
  %995 = getelementptr inbounds %struct.doublecomplex, ptr %994, i32 0, i32 0
  %996 = load double, ptr %995, align 8, !tbaa !13
  store double %996, ptr %21, align 8, !tbaa !11
  %997 = load double, ptr %21, align 8, !tbaa !11
  %998 = load ptr, ptr %9, align 8, !tbaa !5
  %999 = load i32, ptr %15, align 4, !tbaa !9
  %1000 = sext i32 %999 to i64
  %1001 = getelementptr inbounds %struct.doublecomplex, ptr %998, i64 %1000
  %1002 = getelementptr inbounds %struct.doublecomplex, ptr %1001, i32 0, i32 0
  store double %997, ptr %1002, align 8, !tbaa !13
  %1003 = load ptr, ptr %9, align 8, !tbaa !5
  %1004 = load i32, ptr %15, align 4, !tbaa !9
  %1005 = sext i32 %1004 to i64
  %1006 = getelementptr inbounds %struct.doublecomplex, ptr %1003, i64 %1005
  %1007 = getelementptr inbounds %struct.doublecomplex, ptr %1006, i32 0, i32 1
  store double 0.000000e+00, ptr %1007, align 8, !tbaa !15
  br label %1008

1008:                                             ; preds = %976, %946
  br label %1009

1009:                                             ; preds = %1008, %945
  %1010 = load i32, ptr %44, align 4, !tbaa !9
  %1011 = icmp eq i32 %1010, 1
  br i1 %1011, label %1012, label %1161

1012:                                             ; preds = %1009
  %1013 = load i32, ptr %37, align 4, !tbaa !9
  %1014 = icmp sgt i32 %1013, 1
  br i1 %1014, label %1015, label %1160

1015:                                             ; preds = %1012
  %1016 = load i32, ptr %37, align 4, !tbaa !9
  %1017 = load i32, ptr %37, align 4, !tbaa !9
  %1018 = load i32, ptr %13, align 4, !tbaa !9
  %1019 = mul nsw i32 %1017, %1018
  %1020 = add nsw i32 %1016, %1019
  store i32 %1020, ptr %15, align 4, !tbaa !9
  %1021 = load ptr, ptr %9, align 8, !tbaa !5
  %1022 = load i32, ptr %15, align 4, !tbaa !9
  %1023 = sext i32 %1022 to i64
  %1024 = getelementptr inbounds %struct.doublecomplex, ptr %1021, i64 %1023
  %1025 = getelementptr inbounds %struct.doublecomplex, ptr %1024, i32 0, i32 0
  %1026 = load double, ptr %1025, align 8, !tbaa !13
  store double %1026, ptr %21, align 8, !tbaa !11
  %1027 = load double, ptr %21, align 8, !tbaa !11
  %1028 = fcmp oge double %1027, 0.000000e+00
  br i1 %1028, label %1029, label %1031

1029:                                             ; preds = %1015
  %1030 = load double, ptr %21, align 8, !tbaa !11
  br label %1034

1031:                                             ; preds = %1015
  %1032 = load double, ptr %21, align 8, !tbaa !11
  %1033 = fneg double %1032
  br label %1034

1034:                                             ; preds = %1031, %1029
  %1035 = phi double [ %1030, %1029 ], [ %1033, %1031 ]
  %1036 = load double, ptr %42, align 8, !tbaa !11
  %1037 = fcmp oge double %1035, %1036
  br i1 %1037, label %1038, label %1077

1038:                                             ; preds = %1034
  %1039 = load i32, ptr %37, align 4, !tbaa !9
  %1040 = load i32, ptr %37, align 4, !tbaa !9
  %1041 = load i32, ptr %13, align 4, !tbaa !9
  %1042 = mul nsw i32 %1040, %1041
  %1043 = add nsw i32 %1039, %1042
  store i32 %1043, ptr %15, align 4, !tbaa !9
  %1044 = load ptr, ptr %9, align 8, !tbaa !5
  %1045 = load i32, ptr %15, align 4, !tbaa !9
  %1046 = sext i32 %1045 to i64
  %1047 = getelementptr inbounds %struct.doublecomplex, ptr %1044, i64 %1046
  %1048 = getelementptr inbounds %struct.doublecomplex, ptr %1047, i32 0, i32 0
  %1049 = load double, ptr %1048, align 8, !tbaa !13
  %1050 = fdiv double 1.000000e+00, %1049
  store double %1050, ptr %47, align 8, !tbaa !11
  %1051 = load i32, ptr %37, align 4, !tbaa !9
  %1052 = sub nsw i32 %1051, 1
  store i32 %1052, ptr %15, align 4, !tbaa !9
  %1053 = load double, ptr %47, align 8, !tbaa !11
  %1054 = fneg double %1053
  store double %1054, ptr %21, align 8, !tbaa !11
  %1055 = load ptr, ptr %7, align 8, !tbaa !5
  %1056 = load ptr, ptr %9, align 8, !tbaa !5
  %1057 = load i32, ptr %37, align 4, !tbaa !9
  %1058 = load i32, ptr %13, align 4, !tbaa !9
  %1059 = mul nsw i32 %1057, %1058
  %1060 = add nsw i32 %1059, 1
  %1061 = sext i32 %1060 to i64
  %1062 = getelementptr inbounds %struct.doublecomplex, ptr %1056, i64 %1061
  %1063 = load ptr, ptr %9, align 8, !tbaa !5
  %1064 = load i32, ptr %14, align 4, !tbaa !9
  %1065 = sext i32 %1064 to i64
  %1066 = getelementptr inbounds %struct.doublecomplex, ptr %1063, i64 %1065
  %1067 = load ptr, ptr %10, align 8, !tbaa !5
  call void @zher_(ptr noundef %1055, ptr noundef %15, ptr noundef %21, ptr noundef %1062, ptr noundef @c__1, ptr noundef %1066, ptr noundef %1067)
  %1068 = load i32, ptr %37, align 4, !tbaa !9
  %1069 = sub nsw i32 %1068, 1
  store i32 %1069, ptr %15, align 4, !tbaa !9
  %1070 = load ptr, ptr %9, align 8, !tbaa !5
  %1071 = load i32, ptr %37, align 4, !tbaa !9
  %1072 = load i32, ptr %13, align 4, !tbaa !9
  %1073 = mul nsw i32 %1071, %1072
  %1074 = add nsw i32 %1073, 1
  %1075 = sext i32 %1074 to i64
  %1076 = getelementptr inbounds %struct.doublecomplex, ptr %1070, i64 %1075
  call void @zdscal_(ptr noundef %15, ptr noundef %47, ptr noundef %1076, ptr noundef @c__1)
  br label %1159

1077:                                             ; preds = %1034
  %1078 = load i32, ptr %37, align 4, !tbaa !9
  %1079 = load i32, ptr %37, align 4, !tbaa !9
  %1080 = load i32, ptr %13, align 4, !tbaa !9
  %1081 = mul nsw i32 %1079, %1080
  %1082 = add nsw i32 %1078, %1081
  store i32 %1082, ptr %15, align 4, !tbaa !9
  %1083 = load ptr, ptr %9, align 8, !tbaa !5
  %1084 = load i32, ptr %15, align 4, !tbaa !9
  %1085 = sext i32 %1084 to i64
  %1086 = getelementptr inbounds %struct.doublecomplex, ptr %1083, i64 %1085
  %1087 = getelementptr inbounds %struct.doublecomplex, ptr %1086, i32 0, i32 0
  %1088 = load double, ptr %1087, align 8, !tbaa !13
  store double %1088, ptr %47, align 8, !tbaa !11
  %1089 = load i32, ptr %37, align 4, !tbaa !9
  %1090 = sub nsw i32 %1089, 1
  store i32 %1090, ptr %15, align 4, !tbaa !9
  store i32 1, ptr %51, align 4, !tbaa !9
  br label %1091

1091:                                             ; preds = %1138, %1077
  %1092 = load i32, ptr %51, align 4, !tbaa !9
  %1093 = load i32, ptr %15, align 4, !tbaa !9
  %1094 = icmp sle i32 %1092, %1093
  br i1 %1094, label %1095, label %1141

1095:                                             ; preds = %1091
  %1096 = load i32, ptr %51, align 4, !tbaa !9
  %1097 = load i32, ptr %37, align 4, !tbaa !9
  %1098 = load i32, ptr %13, align 4, !tbaa !9
  %1099 = mul nsw i32 %1097, %1098
  %1100 = add nsw i32 %1096, %1099
  store i32 %1100, ptr %16, align 4, !tbaa !9
  %1101 = load i32, ptr %51, align 4, !tbaa !9
  %1102 = load i32, ptr %37, align 4, !tbaa !9
  %1103 = load i32, ptr %13, align 4, !tbaa !9
  %1104 = mul nsw i32 %1102, %1103
  %1105 = add nsw i32 %1101, %1104
  store i32 %1105, ptr %17, align 4, !tbaa !9
  %1106 = load ptr, ptr %9, align 8, !tbaa !5
  %1107 = load i32, ptr %17, align 4, !tbaa !9
  %1108 = sext i32 %1107 to i64
  %1109 = getelementptr inbounds %struct.doublecomplex, ptr %1106, i64 %1108
  %1110 = getelementptr inbounds %struct.doublecomplex, ptr %1109, i32 0, i32 0
  %1111 = load double, ptr %1110, align 8, !tbaa !13
  %1112 = load double, ptr %47, align 8, !tbaa !11
  %1113 = fdiv double %1111, %1112
  %1114 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  store double %1113, ptr %1114, align 8, !tbaa !13
  %1115 = load ptr, ptr %9, align 8, !tbaa !5
  %1116 = load i32, ptr %17, align 4, !tbaa !9
  %1117 = sext i32 %1116 to i64
  %1118 = getelementptr inbounds %struct.doublecomplex, ptr %1115, i64 %1117
  %1119 = getelementptr inbounds %struct.doublecomplex, ptr %1118, i32 0, i32 1
  %1120 = load double, ptr %1119, align 8, !tbaa !15
  %1121 = load double, ptr %47, align 8, !tbaa !11
  %1122 = fdiv double %1120, %1121
  %1123 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  store double %1122, ptr %1123, align 8, !tbaa !15
  %1124 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  %1125 = load double, ptr %1124, align 8, !tbaa !13
  %1126 = load ptr, ptr %9, align 8, !tbaa !5
  %1127 = load i32, ptr %16, align 4, !tbaa !9
  %1128 = sext i32 %1127 to i64
  %1129 = getelementptr inbounds %struct.doublecomplex, ptr %1126, i64 %1128
  %1130 = getelementptr inbounds %struct.doublecomplex, ptr %1129, i32 0, i32 0
  store double %1125, ptr %1130, align 8, !tbaa !13
  %1131 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  %1132 = load double, ptr %1131, align 8, !tbaa !15
  %1133 = load ptr, ptr %9, align 8, !tbaa !5
  %1134 = load i32, ptr %16, align 4, !tbaa !9
  %1135 = sext i32 %1134 to i64
  %1136 = getelementptr inbounds %struct.doublecomplex, ptr %1133, i64 %1135
  %1137 = getelementptr inbounds %struct.doublecomplex, ptr %1136, i32 0, i32 1
  store double %1132, ptr %1137, align 8, !tbaa !15
  br label %1138

1138:                                             ; preds = %1095
  %1139 = load i32, ptr %51, align 4, !tbaa !9
  %1140 = add nsw i32 %1139, 1
  store i32 %1140, ptr %51, align 4, !tbaa !9
  br label %1091, !llvm.loop !19

1141:                                             ; preds = %1091
  %1142 = load i32, ptr %37, align 4, !tbaa !9
  %1143 = sub nsw i32 %1142, 1
  store i32 %1143, ptr %15, align 4, !tbaa !9
  %1144 = load double, ptr %47, align 8, !tbaa !11
  %1145 = fneg double %1144
  store double %1145, ptr %21, align 8, !tbaa !11
  %1146 = load ptr, ptr %7, align 8, !tbaa !5
  %1147 = load ptr, ptr %9, align 8, !tbaa !5
  %1148 = load i32, ptr %37, align 4, !tbaa !9
  %1149 = load i32, ptr %13, align 4, !tbaa !9
  %1150 = mul nsw i32 %1148, %1149
  %1151 = add nsw i32 %1150, 1
  %1152 = sext i32 %1151 to i64
  %1153 = getelementptr inbounds %struct.doublecomplex, ptr %1147, i64 %1152
  %1154 = load ptr, ptr %9, align 8, !tbaa !5
  %1155 = load i32, ptr %14, align 4, !tbaa !9
  %1156 = sext i32 %1155 to i64
  %1157 = getelementptr inbounds %struct.doublecomplex, ptr %1154, i64 %1156
  %1158 = load ptr, ptr %10, align 8, !tbaa !5
  call void @zher_(ptr noundef %1146, ptr noundef %15, ptr noundef %21, ptr noundef %1153, ptr noundef @c__1, ptr noundef %1157, ptr noundef %1158)
  br label %1159

1159:                                             ; preds = %1141, %1038
  br label %1160

1160:                                             ; preds = %1159, %1012
  br label %1750

1161:                                             ; preds = %1009
  %1162 = load i32, ptr %37, align 4, !tbaa !9
  %1163 = icmp sgt i32 %1162, 2
  br i1 %1163, label %1164, label %1749

1164:                                             ; preds = %1161
  %1165 = load i32, ptr %37, align 4, !tbaa !9
  %1166 = sub nsw i32 %1165, 1
  %1167 = load i32, ptr %37, align 4, !tbaa !9
  %1168 = load i32, ptr %13, align 4, !tbaa !9
  %1169 = mul nsw i32 %1167, %1168
  %1170 = add nsw i32 %1166, %1169
  store i32 %1170, ptr %15, align 4, !tbaa !9
  %1171 = load ptr, ptr %9, align 8, !tbaa !5
  %1172 = load i32, ptr %15, align 4, !tbaa !9
  %1173 = sext i32 %1172 to i64
  %1174 = getelementptr inbounds %struct.doublecomplex, ptr %1171, i64 %1173
  %1175 = getelementptr inbounds %struct.doublecomplex, ptr %1174, i32 0, i32 0
  %1176 = load double, ptr %1175, align 8, !tbaa !13
  store double %1176, ptr %21, align 8, !tbaa !11
  %1177 = load ptr, ptr %9, align 8, !tbaa !5
  %1178 = load i32, ptr %37, align 4, !tbaa !9
  %1179 = sub nsw i32 %1178, 1
  %1180 = load i32, ptr %37, align 4, !tbaa !9
  %1181 = load i32, ptr %13, align 4, !tbaa !9
  %1182 = mul nsw i32 %1180, %1181
  %1183 = add nsw i32 %1179, %1182
  %1184 = sext i32 %1183 to i64
  %1185 = getelementptr inbounds %struct.doublecomplex, ptr %1177, i64 %1184
  %1186 = call { double, double } @Cd(ptr noundef %1185)
  %1187 = extractvalue { double, double } %1186, 0
  %1188 = extractvalue { double, double } %1186, 1
  store double %1188, ptr %22, align 8, !tbaa !11
  %1189 = call double @dlapy2_(ptr noundef %21, ptr noundef %22)
  store double %1189, ptr %34, align 8, !tbaa !11
  %1190 = load i32, ptr %37, align 4, !tbaa !9
  %1191 = load i32, ptr %37, align 4, !tbaa !9
  %1192 = load i32, ptr %13, align 4, !tbaa !9
  %1193 = mul nsw i32 %1191, %1192
  %1194 = add nsw i32 %1190, %1193
  store i32 %1194, ptr %15, align 4, !tbaa !9
  %1195 = load ptr, ptr %9, align 8, !tbaa !5
  %1196 = load i32, ptr %15, align 4, !tbaa !9
  %1197 = sext i32 %1196 to i64
  %1198 = getelementptr inbounds %struct.doublecomplex, ptr %1195, i64 %1197
  %1199 = getelementptr inbounds %struct.doublecomplex, ptr %1198, i32 0, i32 0
  %1200 = load double, ptr %1199, align 8, !tbaa !13
  %1201 = load double, ptr %34, align 8, !tbaa !11
  %1202 = fdiv double %1200, %1201
  %1203 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  store double %1202, ptr %1203, align 8, !tbaa !13
  %1204 = load ptr, ptr %9, align 8, !tbaa !5
  %1205 = load i32, ptr %15, align 4, !tbaa !9
  %1206 = sext i32 %1205 to i64
  %1207 = getelementptr inbounds %struct.doublecomplex, ptr %1204, i64 %1206
  %1208 = getelementptr inbounds %struct.doublecomplex, ptr %1207, i32 0, i32 1
  %1209 = load double, ptr %1208, align 8, !tbaa !15
  %1210 = load double, ptr %34, align 8, !tbaa !11
  %1211 = fdiv double %1209, %1210
  %1212 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  store double %1211, ptr %1212, align 8, !tbaa !15
  %1213 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  %1214 = load double, ptr %1213, align 8, !tbaa !13
  store double %1214, ptr %47, align 8, !tbaa !11
  %1215 = load i32, ptr %37, align 4, !tbaa !9
  %1216 = sub nsw i32 %1215, 1
  %1217 = load i32, ptr %37, align 4, !tbaa !9
  %1218 = sub nsw i32 %1217, 1
  %1219 = load i32, ptr %13, align 4, !tbaa !9
  %1220 = mul nsw i32 %1218, %1219
  %1221 = add nsw i32 %1216, %1220
  store i32 %1221, ptr %15, align 4, !tbaa !9
  %1222 = load ptr, ptr %9, align 8, !tbaa !5
  %1223 = load i32, ptr %15, align 4, !tbaa !9
  %1224 = sext i32 %1223 to i64
  %1225 = getelementptr inbounds %struct.doublecomplex, ptr %1222, i64 %1224
  %1226 = getelementptr inbounds %struct.doublecomplex, ptr %1225, i32 0, i32 0
  %1227 = load double, ptr %1226, align 8, !tbaa !13
  %1228 = load double, ptr %34, align 8, !tbaa !11
  %1229 = fdiv double %1227, %1228
  %1230 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  store double %1229, ptr %1230, align 8, !tbaa !13
  %1231 = load ptr, ptr %9, align 8, !tbaa !5
  %1232 = load i32, ptr %15, align 4, !tbaa !9
  %1233 = sext i32 %1232 to i64
  %1234 = getelementptr inbounds %struct.doublecomplex, ptr %1231, i64 %1233
  %1235 = getelementptr inbounds %struct.doublecomplex, ptr %1234, i32 0, i32 1
  %1236 = load double, ptr %1235, align 8, !tbaa !15
  %1237 = load double, ptr %34, align 8, !tbaa !11
  %1238 = fdiv double %1236, %1237
  %1239 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  store double %1238, ptr %1239, align 8, !tbaa !15
  %1240 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  %1241 = load double, ptr %1240, align 8, !tbaa !13
  store double %1241, ptr %49, align 8, !tbaa !11
  %1242 = load i32, ptr %37, align 4, !tbaa !9
  %1243 = sub nsw i32 %1242, 1
  %1244 = load i32, ptr %37, align 4, !tbaa !9
  %1245 = load i32, ptr %13, align 4, !tbaa !9
  %1246 = mul nsw i32 %1244, %1245
  %1247 = add nsw i32 %1243, %1246
  store i32 %1247, ptr %15, align 4, !tbaa !9
  %1248 = load ptr, ptr %9, align 8, !tbaa !5
  %1249 = load i32, ptr %15, align 4, !tbaa !9
  %1250 = sext i32 %1249 to i64
  %1251 = getelementptr inbounds %struct.doublecomplex, ptr %1248, i64 %1250
  %1252 = getelementptr inbounds %struct.doublecomplex, ptr %1251, i32 0, i32 0
  %1253 = load double, ptr %1252, align 8, !tbaa !13
  %1254 = load double, ptr %34, align 8, !tbaa !11
  %1255 = fdiv double %1253, %1254
  %1256 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  store double %1255, ptr %1256, align 8, !tbaa !13
  %1257 = load ptr, ptr %9, align 8, !tbaa !5
  %1258 = load i32, ptr %15, align 4, !tbaa !9
  %1259 = sext i32 %1258 to i64
  %1260 = getelementptr inbounds %struct.doublecomplex, ptr %1257, i64 %1259
  %1261 = getelementptr inbounds %struct.doublecomplex, ptr %1260, i32 0, i32 1
  %1262 = load double, ptr %1261, align 8, !tbaa !15
  %1263 = load double, ptr %34, align 8, !tbaa !11
  %1264 = fdiv double %1262, %1263
  %1265 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  store double %1264, ptr %1265, align 8, !tbaa !15
  %1266 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  %1267 = load double, ptr %1266, align 8, !tbaa !13
  %1268 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  store double %1267, ptr %1268, align 8, !tbaa !13
  %1269 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  %1270 = load double, ptr %1269, align 8, !tbaa !15
  %1271 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  store double %1270, ptr %1271, align 8, !tbaa !15
  %1272 = load double, ptr %47, align 8, !tbaa !11
  %1273 = load double, ptr %49, align 8, !tbaa !11
  %1274 = call double @llvm.fmuladd.f64(double %1272, double %1273, double -1.000000e+00)
  %1275 = fdiv double 1.000000e+00, %1274
  store double %1275, ptr %56, align 8, !tbaa !11
  %1276 = load i32, ptr %37, align 4, !tbaa !9
  %1277 = sub nsw i32 %1276, 2
  store i32 %1277, ptr %36, align 4, !tbaa !9
  br label %1278

1278:                                             ; preds = %1745, %1164
  %1279 = load i32, ptr %36, align 4, !tbaa !9
  %1280 = icmp sge i32 %1279, 1
  br i1 %1280, label %1281, label %1748

1281:                                             ; preds = %1278
  %1282 = load i32, ptr %36, align 4, !tbaa !9
  %1283 = load i32, ptr %37, align 4, !tbaa !9
  %1284 = sub nsw i32 %1283, 1
  %1285 = load i32, ptr %13, align 4, !tbaa !9
  %1286 = mul nsw i32 %1284, %1285
  %1287 = add nsw i32 %1282, %1286
  store i32 %1287, ptr %15, align 4, !tbaa !9
  %1288 = load double, ptr %47, align 8, !tbaa !11
  %1289 = load ptr, ptr %9, align 8, !tbaa !5
  %1290 = load i32, ptr %15, align 4, !tbaa !9
  %1291 = sext i32 %1290 to i64
  %1292 = getelementptr inbounds %struct.doublecomplex, ptr %1289, i64 %1291
  %1293 = getelementptr inbounds %struct.doublecomplex, ptr %1292, i32 0, i32 0
  %1294 = load double, ptr %1293, align 8, !tbaa !13
  %1295 = fmul double %1288, %1294
  %1296 = getelementptr inbounds %struct.doublecomplex, ptr %25, i32 0, i32 0
  store double %1295, ptr %1296, align 8, !tbaa !13
  %1297 = load double, ptr %47, align 8, !tbaa !11
  %1298 = load ptr, ptr %9, align 8, !tbaa !5
  %1299 = load i32, ptr %15, align 4, !tbaa !9
  %1300 = sext i32 %1299 to i64
  %1301 = getelementptr inbounds %struct.doublecomplex, ptr %1298, i64 %1300
  %1302 = getelementptr inbounds %struct.doublecomplex, ptr %1301, i32 0, i32 1
  %1303 = load double, ptr %1302, align 8, !tbaa !15
  %1304 = fmul double %1297, %1303
  %1305 = getelementptr inbounds %struct.doublecomplex, ptr %25, i32 0, i32 1
  store double %1304, ptr %1305, align 8, !tbaa !15
  %1306 = call { double, double } @Cd(ptr noundef %48)
  %1307 = extractvalue { double, double } %1306, 0
  %1308 = extractvalue { double, double } %1306, 1
  %1309 = fneg double %1308
  %1310 = call ptr @_pCd(ptr noundef %27)
  %1311 = getelementptr inbounds { double, double }, ptr %1310, i32 0, i32 0
  %1312 = getelementptr inbounds { double, double }, ptr %1310, i32 0, i32 1
  store double %1307, ptr %1311, align 8
  store double %1309, ptr %1312, align 8
  %1313 = load i32, ptr %36, align 4, !tbaa !9
  %1314 = load i32, ptr %37, align 4, !tbaa !9
  %1315 = load i32, ptr %13, align 4, !tbaa !9
  %1316 = mul nsw i32 %1314, %1315
  %1317 = add nsw i32 %1313, %1316
  store i32 %1317, ptr %16, align 4, !tbaa !9
  %1318 = getelementptr inbounds %struct.doublecomplex, ptr %27, i32 0, i32 0
  %1319 = load double, ptr %1318, align 8, !tbaa !13
  %1320 = load ptr, ptr %9, align 8, !tbaa !5
  %1321 = load i32, ptr %16, align 4, !tbaa !9
  %1322 = sext i32 %1321 to i64
  %1323 = getelementptr inbounds %struct.doublecomplex, ptr %1320, i64 %1322
  %1324 = getelementptr inbounds %struct.doublecomplex, ptr %1323, i32 0, i32 0
  %1325 = load double, ptr %1324, align 8, !tbaa !13
  %1326 = getelementptr inbounds %struct.doublecomplex, ptr %27, i32 0, i32 1
  %1327 = load double, ptr %1326, align 8, !tbaa !15
  %1328 = load ptr, ptr %9, align 8, !tbaa !5
  %1329 = load i32, ptr %16, align 4, !tbaa !9
  %1330 = sext i32 %1329 to i64
  %1331 = getelementptr inbounds %struct.doublecomplex, ptr %1328, i64 %1330
  %1332 = getelementptr inbounds %struct.doublecomplex, ptr %1331, i32 0, i32 1
  %1333 = load double, ptr %1332, align 8, !tbaa !15
  %1334 = fmul double %1327, %1333
  %1335 = fneg double %1334
  %1336 = call double @llvm.fmuladd.f64(double %1319, double %1325, double %1335)
  %1337 = getelementptr inbounds %struct.doublecomplex, ptr %26, i32 0, i32 0
  store double %1336, ptr %1337, align 8, !tbaa !13
  %1338 = getelementptr inbounds %struct.doublecomplex, ptr %27, i32 0, i32 0
  %1339 = load double, ptr %1338, align 8, !tbaa !13
  %1340 = load ptr, ptr %9, align 8, !tbaa !5
  %1341 = load i32, ptr %16, align 4, !tbaa !9
  %1342 = sext i32 %1341 to i64
  %1343 = getelementptr inbounds %struct.doublecomplex, ptr %1340, i64 %1342
  %1344 = getelementptr inbounds %struct.doublecomplex, ptr %1343, i32 0, i32 1
  %1345 = load double, ptr %1344, align 8, !tbaa !15
  %1346 = getelementptr inbounds %struct.doublecomplex, ptr %27, i32 0, i32 1
  %1347 = load double, ptr %1346, align 8, !tbaa !15
  %1348 = load ptr, ptr %9, align 8, !tbaa !5
  %1349 = load i32, ptr %16, align 4, !tbaa !9
  %1350 = sext i32 %1349 to i64
  %1351 = getelementptr inbounds %struct.doublecomplex, ptr %1348, i64 %1350
  %1352 = getelementptr inbounds %struct.doublecomplex, ptr %1351, i32 0, i32 0
  %1353 = load double, ptr %1352, align 8, !tbaa !13
  %1354 = fmul double %1347, %1353
  %1355 = call double @llvm.fmuladd.f64(double %1339, double %1345, double %1354)
  %1356 = getelementptr inbounds %struct.doublecomplex, ptr %26, i32 0, i32 1
  store double %1355, ptr %1356, align 8, !tbaa !15
  %1357 = getelementptr inbounds %struct.doublecomplex, ptr %25, i32 0, i32 0
  %1358 = load double, ptr %1357, align 8, !tbaa !13
  %1359 = getelementptr inbounds %struct.doublecomplex, ptr %26, i32 0, i32 0
  %1360 = load double, ptr %1359, align 8, !tbaa !13
  %1361 = fsub double %1358, %1360
  %1362 = getelementptr inbounds %struct.doublecomplex, ptr %24, i32 0, i32 0
  store double %1361, ptr %1362, align 8, !tbaa !13
  %1363 = getelementptr inbounds %struct.doublecomplex, ptr %25, i32 0, i32 1
  %1364 = load double, ptr %1363, align 8, !tbaa !15
  %1365 = getelementptr inbounds %struct.doublecomplex, ptr %26, i32 0, i32 1
  %1366 = load double, ptr %1365, align 8, !tbaa !15
  %1367 = fsub double %1364, %1366
  %1368 = getelementptr inbounds %struct.doublecomplex, ptr %24, i32 0, i32 1
  store double %1367, ptr %1368, align 8, !tbaa !15
  %1369 = load double, ptr %56, align 8, !tbaa !11
  %1370 = getelementptr inbounds %struct.doublecomplex, ptr %24, i32 0, i32 0
  %1371 = load double, ptr %1370, align 8, !tbaa !13
  %1372 = fmul double %1369, %1371
  %1373 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  store double %1372, ptr %1373, align 8, !tbaa !13
  %1374 = load double, ptr %56, align 8, !tbaa !11
  %1375 = getelementptr inbounds %struct.doublecomplex, ptr %24, i32 0, i32 1
  %1376 = load double, ptr %1375, align 8, !tbaa !15
  %1377 = fmul double %1374, %1376
  %1378 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  store double %1377, ptr %1378, align 8, !tbaa !15
  %1379 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  %1380 = load double, ptr %1379, align 8, !tbaa !13
  %1381 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  store double %1380, ptr %1381, align 8, !tbaa !13
  %1382 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  %1383 = load double, ptr %1382, align 8, !tbaa !15
  %1384 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  store double %1383, ptr %1384, align 8, !tbaa !15
  %1385 = load i32, ptr %36, align 4, !tbaa !9
  %1386 = load i32, ptr %37, align 4, !tbaa !9
  %1387 = load i32, ptr %13, align 4, !tbaa !9
  %1388 = mul nsw i32 %1386, %1387
  %1389 = add nsw i32 %1385, %1388
  store i32 %1389, ptr %15, align 4, !tbaa !9
  %1390 = load double, ptr %49, align 8, !tbaa !11
  %1391 = load ptr, ptr %9, align 8, !tbaa !5
  %1392 = load i32, ptr %15, align 4, !tbaa !9
  %1393 = sext i32 %1392 to i64
  %1394 = getelementptr inbounds %struct.doublecomplex, ptr %1391, i64 %1393
  %1395 = getelementptr inbounds %struct.doublecomplex, ptr %1394, i32 0, i32 0
  %1396 = load double, ptr %1395, align 8, !tbaa !13
  %1397 = fmul double %1390, %1396
  %1398 = getelementptr inbounds %struct.doublecomplex, ptr %25, i32 0, i32 0
  store double %1397, ptr %1398, align 8, !tbaa !13
  %1399 = load double, ptr %49, align 8, !tbaa !11
  %1400 = load ptr, ptr %9, align 8, !tbaa !5
  %1401 = load i32, ptr %15, align 4, !tbaa !9
  %1402 = sext i32 %1401 to i64
  %1403 = getelementptr inbounds %struct.doublecomplex, ptr %1400, i64 %1402
  %1404 = getelementptr inbounds %struct.doublecomplex, ptr %1403, i32 0, i32 1
  %1405 = load double, ptr %1404, align 8, !tbaa !15
  %1406 = fmul double %1399, %1405
  %1407 = getelementptr inbounds %struct.doublecomplex, ptr %25, i32 0, i32 1
  store double %1406, ptr %1407, align 8, !tbaa !15
  %1408 = load i32, ptr %36, align 4, !tbaa !9
  %1409 = load i32, ptr %37, align 4, !tbaa !9
  %1410 = sub nsw i32 %1409, 1
  %1411 = load i32, ptr %13, align 4, !tbaa !9
  %1412 = mul nsw i32 %1410, %1411
  %1413 = add nsw i32 %1408, %1412
  store i32 %1413, ptr %16, align 4, !tbaa !9
  %1414 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  %1415 = load double, ptr %1414, align 8, !tbaa !13
  %1416 = load ptr, ptr %9, align 8, !tbaa !5
  %1417 = load i32, ptr %16, align 4, !tbaa !9
  %1418 = sext i32 %1417 to i64
  %1419 = getelementptr inbounds %struct.doublecomplex, ptr %1416, i64 %1418
  %1420 = getelementptr inbounds %struct.doublecomplex, ptr %1419, i32 0, i32 0
  %1421 = load double, ptr %1420, align 8, !tbaa !13
  %1422 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  %1423 = load double, ptr %1422, align 8, !tbaa !15
  %1424 = load ptr, ptr %9, align 8, !tbaa !5
  %1425 = load i32, ptr %16, align 4, !tbaa !9
  %1426 = sext i32 %1425 to i64
  %1427 = getelementptr inbounds %struct.doublecomplex, ptr %1424, i64 %1426
  %1428 = getelementptr inbounds %struct.doublecomplex, ptr %1427, i32 0, i32 1
  %1429 = load double, ptr %1428, align 8, !tbaa !15
  %1430 = fmul double %1423, %1429
  %1431 = fneg double %1430
  %1432 = call double @llvm.fmuladd.f64(double %1415, double %1421, double %1431)
  %1433 = getelementptr inbounds %struct.doublecomplex, ptr %26, i32 0, i32 0
  store double %1432, ptr %1433, align 8, !tbaa !13
  %1434 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  %1435 = load double, ptr %1434, align 8, !tbaa !13
  %1436 = load ptr, ptr %9, align 8, !tbaa !5
  %1437 = load i32, ptr %16, align 4, !tbaa !9
  %1438 = sext i32 %1437 to i64
  %1439 = getelementptr inbounds %struct.doublecomplex, ptr %1436, i64 %1438
  %1440 = getelementptr inbounds %struct.doublecomplex, ptr %1439, i32 0, i32 1
  %1441 = load double, ptr %1440, align 8, !tbaa !15
  %1442 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  %1443 = load double, ptr %1442, align 8, !tbaa !15
  %1444 = load ptr, ptr %9, align 8, !tbaa !5
  %1445 = load i32, ptr %16, align 4, !tbaa !9
  %1446 = sext i32 %1445 to i64
  %1447 = getelementptr inbounds %struct.doublecomplex, ptr %1444, i64 %1446
  %1448 = getelementptr inbounds %struct.doublecomplex, ptr %1447, i32 0, i32 0
  %1449 = load double, ptr %1448, align 8, !tbaa !13
  %1450 = fmul double %1443, %1449
  %1451 = call double @llvm.fmuladd.f64(double %1435, double %1441, double %1450)
  %1452 = getelementptr inbounds %struct.doublecomplex, ptr %26, i32 0, i32 1
  store double %1451, ptr %1452, align 8, !tbaa !15
  %1453 = getelementptr inbounds %struct.doublecomplex, ptr %25, i32 0, i32 0
  %1454 = load double, ptr %1453, align 8, !tbaa !13
  %1455 = getelementptr inbounds %struct.doublecomplex, ptr %26, i32 0, i32 0
  %1456 = load double, ptr %1455, align 8, !tbaa !13
  %1457 = fsub double %1454, %1456
  %1458 = getelementptr inbounds %struct.doublecomplex, ptr %24, i32 0, i32 0
  store double %1457, ptr %1458, align 8, !tbaa !13
  %1459 = getelementptr inbounds %struct.doublecomplex, ptr %25, i32 0, i32 1
  %1460 = load double, ptr %1459, align 8, !tbaa !15
  %1461 = getelementptr inbounds %struct.doublecomplex, ptr %26, i32 0, i32 1
  %1462 = load double, ptr %1461, align 8, !tbaa !15
  %1463 = fsub double %1460, %1462
  %1464 = getelementptr inbounds %struct.doublecomplex, ptr %24, i32 0, i32 1
  store double %1463, ptr %1464, align 8, !tbaa !15
  %1465 = load double, ptr %56, align 8, !tbaa !11
  %1466 = getelementptr inbounds %struct.doublecomplex, ptr %24, i32 0, i32 0
  %1467 = load double, ptr %1466, align 8, !tbaa !13
  %1468 = fmul double %1465, %1467
  %1469 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  store double %1468, ptr %1469, align 8, !tbaa !13
  %1470 = load double, ptr %56, align 8, !tbaa !11
  %1471 = getelementptr inbounds %struct.doublecomplex, ptr %24, i32 0, i32 1
  %1472 = load double, ptr %1471, align 8, !tbaa !15
  %1473 = fmul double %1470, %1472
  %1474 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  store double %1473, ptr %1474, align 8, !tbaa !15
  %1475 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  %1476 = load double, ptr %1475, align 8, !tbaa !13
  %1477 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %1476, ptr %1477, align 8, !tbaa !13
  %1478 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  %1479 = load double, ptr %1478, align 8, !tbaa !15
  %1480 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double %1479, ptr %1480, align 8, !tbaa !15
  %1481 = load i32, ptr %36, align 4, !tbaa !9
  store i32 %1481, ptr %35, align 4, !tbaa !9
  br label %1482

1482:                                             ; preds = %1649, %1281
  %1483 = load i32, ptr %35, align 4, !tbaa !9
  %1484 = icmp sge i32 %1483, 1
  br i1 %1484, label %1485, label %1652

1485:                                             ; preds = %1482
  %1486 = load i32, ptr %35, align 4, !tbaa !9
  %1487 = load i32, ptr %36, align 4, !tbaa !9
  %1488 = load i32, ptr %13, align 4, !tbaa !9
  %1489 = mul nsw i32 %1487, %1488
  %1490 = add nsw i32 %1486, %1489
  store i32 %1490, ptr %15, align 4, !tbaa !9
  %1491 = load i32, ptr %35, align 4, !tbaa !9
  %1492 = load i32, ptr %36, align 4, !tbaa !9
  %1493 = load i32, ptr %13, align 4, !tbaa !9
  %1494 = mul nsw i32 %1492, %1493
  %1495 = add nsw i32 %1491, %1494
  store i32 %1495, ptr %16, align 4, !tbaa !9
  %1496 = load i32, ptr %35, align 4, !tbaa !9
  %1497 = load i32, ptr %37, align 4, !tbaa !9
  %1498 = load i32, ptr %13, align 4, !tbaa !9
  %1499 = mul nsw i32 %1497, %1498
  %1500 = add nsw i32 %1496, %1499
  store i32 %1500, ptr %17, align 4, !tbaa !9
  %1501 = load ptr, ptr %9, align 8, !tbaa !5
  %1502 = load i32, ptr %17, align 4, !tbaa !9
  %1503 = sext i32 %1502 to i64
  %1504 = getelementptr inbounds %struct.doublecomplex, ptr %1501, i64 %1503
  %1505 = getelementptr inbounds %struct.doublecomplex, ptr %1504, i32 0, i32 0
  %1506 = load double, ptr %1505, align 8, !tbaa !13
  %1507 = load double, ptr %34, align 8, !tbaa !11
  %1508 = fdiv double %1506, %1507
  %1509 = getelementptr inbounds %struct.doublecomplex, ptr %26, i32 0, i32 0
  store double %1508, ptr %1509, align 8, !tbaa !13
  %1510 = load ptr, ptr %9, align 8, !tbaa !5
  %1511 = load i32, ptr %17, align 4, !tbaa !9
  %1512 = sext i32 %1511 to i64
  %1513 = getelementptr inbounds %struct.doublecomplex, ptr %1510, i64 %1512
  %1514 = getelementptr inbounds %struct.doublecomplex, ptr %1513, i32 0, i32 1
  %1515 = load double, ptr %1514, align 8, !tbaa !15
  %1516 = load double, ptr %34, align 8, !tbaa !11
  %1517 = fdiv double %1515, %1516
  %1518 = getelementptr inbounds %struct.doublecomplex, ptr %26, i32 0, i32 1
  store double %1517, ptr %1518, align 8, !tbaa !15
  %1519 = call { double, double } @Cd(ptr noundef %55)
  %1520 = extractvalue { double, double } %1519, 0
  %1521 = extractvalue { double, double } %1519, 1
  %1522 = fneg double %1521
  %1523 = call ptr @_pCd(ptr noundef %27)
  %1524 = getelementptr inbounds { double, double }, ptr %1523, i32 0, i32 0
  %1525 = getelementptr inbounds { double, double }, ptr %1523, i32 0, i32 1
  store double %1520, ptr %1524, align 8
  store double %1522, ptr %1525, align 8
  %1526 = getelementptr inbounds %struct.doublecomplex, ptr %26, i32 0, i32 0
  %1527 = load double, ptr %1526, align 8, !tbaa !13
  %1528 = getelementptr inbounds %struct.doublecomplex, ptr %27, i32 0, i32 0
  %1529 = load double, ptr %1528, align 8, !tbaa !13
  %1530 = getelementptr inbounds %struct.doublecomplex, ptr %26, i32 0, i32 1
  %1531 = load double, ptr %1530, align 8, !tbaa !15
  %1532 = getelementptr inbounds %struct.doublecomplex, ptr %27, i32 0, i32 1
  %1533 = load double, ptr %1532, align 8, !tbaa !15
  %1534 = fmul double %1531, %1533
  %1535 = fneg double %1534
  %1536 = call double @llvm.fmuladd.f64(double %1527, double %1529, double %1535)
  %1537 = getelementptr inbounds %struct.doublecomplex, ptr %25, i32 0, i32 0
  store double %1536, ptr %1537, align 8, !tbaa !13
  %1538 = getelementptr inbounds %struct.doublecomplex, ptr %26, i32 0, i32 0
  %1539 = load double, ptr %1538, align 8, !tbaa !13
  %1540 = getelementptr inbounds %struct.doublecomplex, ptr %27, i32 0, i32 1
  %1541 = load double, ptr %1540, align 8, !tbaa !15
  %1542 = getelementptr inbounds %struct.doublecomplex, ptr %26, i32 0, i32 1
  %1543 = load double, ptr %1542, align 8, !tbaa !15
  %1544 = getelementptr inbounds %struct.doublecomplex, ptr %27, i32 0, i32 0
  %1545 = load double, ptr %1544, align 8, !tbaa !13
  %1546 = fmul double %1543, %1545
  %1547 = call double @llvm.fmuladd.f64(double %1539, double %1541, double %1546)
  %1548 = getelementptr inbounds %struct.doublecomplex, ptr %25, i32 0, i32 1
  store double %1547, ptr %1548, align 8, !tbaa !15
  %1549 = load ptr, ptr %9, align 8, !tbaa !5
  %1550 = load i32, ptr %16, align 4, !tbaa !9
  %1551 = sext i32 %1550 to i64
  %1552 = getelementptr inbounds %struct.doublecomplex, ptr %1549, i64 %1551
  %1553 = getelementptr inbounds %struct.doublecomplex, ptr %1552, i32 0, i32 0
  %1554 = load double, ptr %1553, align 8, !tbaa !13
  %1555 = getelementptr inbounds %struct.doublecomplex, ptr %25, i32 0, i32 0
  %1556 = load double, ptr %1555, align 8, !tbaa !13
  %1557 = fsub double %1554, %1556
  %1558 = getelementptr inbounds %struct.doublecomplex, ptr %24, i32 0, i32 0
  store double %1557, ptr %1558, align 8, !tbaa !13
  %1559 = load ptr, ptr %9, align 8, !tbaa !5
  %1560 = load i32, ptr %16, align 4, !tbaa !9
  %1561 = sext i32 %1560 to i64
  %1562 = getelementptr inbounds %struct.doublecomplex, ptr %1559, i64 %1561
  %1563 = getelementptr inbounds %struct.doublecomplex, ptr %1562, i32 0, i32 1
  %1564 = load double, ptr %1563, align 8, !tbaa !15
  %1565 = getelementptr inbounds %struct.doublecomplex, ptr %25, i32 0, i32 1
  %1566 = load double, ptr %1565, align 8, !tbaa !15
  %1567 = fsub double %1564, %1566
  %1568 = getelementptr inbounds %struct.doublecomplex, ptr %24, i32 0, i32 1
  store double %1567, ptr %1568, align 8, !tbaa !15
  %1569 = load i32, ptr %35, align 4, !tbaa !9
  %1570 = load i32, ptr %37, align 4, !tbaa !9
  %1571 = sub nsw i32 %1570, 1
  %1572 = load i32, ptr %13, align 4, !tbaa !9
  %1573 = mul nsw i32 %1571, %1572
  %1574 = add nsw i32 %1569, %1573
  store i32 %1574, ptr %18, align 4, !tbaa !9
  %1575 = load ptr, ptr %9, align 8, !tbaa !5
  %1576 = load i32, ptr %18, align 4, !tbaa !9
  %1577 = sext i32 %1576 to i64
  %1578 = getelementptr inbounds %struct.doublecomplex, ptr %1575, i64 %1577
  %1579 = getelementptr inbounds %struct.doublecomplex, ptr %1578, i32 0, i32 0
  %1580 = load double, ptr %1579, align 8, !tbaa !13
  %1581 = load double, ptr %34, align 8, !tbaa !11
  %1582 = fdiv double %1580, %1581
  %1583 = getelementptr inbounds %struct.doublecomplex, ptr %29, i32 0, i32 0
  store double %1582, ptr %1583, align 8, !tbaa !13
  %1584 = load ptr, ptr %9, align 8, !tbaa !5
  %1585 = load i32, ptr %18, align 4, !tbaa !9
  %1586 = sext i32 %1585 to i64
  %1587 = getelementptr inbounds %struct.doublecomplex, ptr %1584, i64 %1586
  %1588 = getelementptr inbounds %struct.doublecomplex, ptr %1587, i32 0, i32 1
  %1589 = load double, ptr %1588, align 8, !tbaa !15
  %1590 = load double, ptr %34, align 8, !tbaa !11
  %1591 = fdiv double %1589, %1590
  %1592 = getelementptr inbounds %struct.doublecomplex, ptr %29, i32 0, i32 1
  store double %1591, ptr %1592, align 8, !tbaa !15
  %1593 = call { double, double } @Cd(ptr noundef %59)
  %1594 = extractvalue { double, double } %1593, 0
  %1595 = extractvalue { double, double } %1593, 1
  %1596 = fneg double %1595
  %1597 = call ptr @_pCd(ptr noundef %30)
  %1598 = getelementptr inbounds { double, double }, ptr %1597, i32 0, i32 0
  %1599 = getelementptr inbounds { double, double }, ptr %1597, i32 0, i32 1
  store double %1594, ptr %1598, align 8
  store double %1596, ptr %1599, align 8
  %1600 = getelementptr inbounds %struct.doublecomplex, ptr %29, i32 0, i32 0
  %1601 = load double, ptr %1600, align 8, !tbaa !13
  %1602 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %1603 = load double, ptr %1602, align 8, !tbaa !13
  %1604 = getelementptr inbounds %struct.doublecomplex, ptr %29, i32 0, i32 1
  %1605 = load double, ptr %1604, align 8, !tbaa !15
  %1606 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %1607 = load double, ptr %1606, align 8, !tbaa !15
  %1608 = fmul double %1605, %1607
  %1609 = fneg double %1608
  %1610 = call double @llvm.fmuladd.f64(double %1601, double %1603, double %1609)
  %1611 = getelementptr inbounds %struct.doublecomplex, ptr %28, i32 0, i32 0
  store double %1610, ptr %1611, align 8, !tbaa !13
  %1612 = getelementptr inbounds %struct.doublecomplex, ptr %29, i32 0, i32 0
  %1613 = load double, ptr %1612, align 8, !tbaa !13
  %1614 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %1615 = load double, ptr %1614, align 8, !tbaa !15
  %1616 = getelementptr inbounds %struct.doublecomplex, ptr %29, i32 0, i32 1
  %1617 = load double, ptr %1616, align 8, !tbaa !15
  %1618 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %1619 = load double, ptr %1618, align 8, !tbaa !13
  %1620 = fmul double %1617, %1619
  %1621 = call double @llvm.fmuladd.f64(double %1613, double %1615, double %1620)
  %1622 = getelementptr inbounds %struct.doublecomplex, ptr %28, i32 0, i32 1
  store double %1621, ptr %1622, align 8, !tbaa !15
  %1623 = getelementptr inbounds %struct.doublecomplex, ptr %24, i32 0, i32 0
  %1624 = load double, ptr %1623, align 8, !tbaa !13
  %1625 = getelementptr inbounds %struct.doublecomplex, ptr %28, i32 0, i32 0
  %1626 = load double, ptr %1625, align 8, !tbaa !13
  %1627 = fsub double %1624, %1626
  %1628 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  store double %1627, ptr %1628, align 8, !tbaa !13
  %1629 = getelementptr inbounds %struct.doublecomplex, ptr %24, i32 0, i32 1
  %1630 = load double, ptr %1629, align 8, !tbaa !15
  %1631 = getelementptr inbounds %struct.doublecomplex, ptr %28, i32 0, i32 1
  %1632 = load double, ptr %1631, align 8, !tbaa !15
  %1633 = fsub double %1630, %1632
  %1634 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  store double %1633, ptr %1634, align 8, !tbaa !15
  %1635 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  %1636 = load double, ptr %1635, align 8, !tbaa !13
  %1637 = load ptr, ptr %9, align 8, !tbaa !5
  %1638 = load i32, ptr %15, align 4, !tbaa !9
  %1639 = sext i32 %1638 to i64
  %1640 = getelementptr inbounds %struct.doublecomplex, ptr %1637, i64 %1639
  %1641 = getelementptr inbounds %struct.doublecomplex, ptr %1640, i32 0, i32 0
  store double %1636, ptr %1641, align 8, !tbaa !13
  %1642 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  %1643 = load double, ptr %1642, align 8, !tbaa !15
  %1644 = load ptr, ptr %9, align 8, !tbaa !5
  %1645 = load i32, ptr %15, align 4, !tbaa !9
  %1646 = sext i32 %1645 to i64
  %1647 = getelementptr inbounds %struct.doublecomplex, ptr %1644, i64 %1646
  %1648 = getelementptr inbounds %struct.doublecomplex, ptr %1647, i32 0, i32 1
  store double %1643, ptr %1648, align 8, !tbaa !15
  br label %1649

1649:                                             ; preds = %1485
  %1650 = load i32, ptr %35, align 4, !tbaa !9
  %1651 = add nsw i32 %1650, -1
  store i32 %1651, ptr %35, align 4, !tbaa !9
  br label %1482, !llvm.loop !20

1652:                                             ; preds = %1482
  %1653 = load i32, ptr %36, align 4, !tbaa !9
  %1654 = load i32, ptr %37, align 4, !tbaa !9
  %1655 = load i32, ptr %13, align 4, !tbaa !9
  %1656 = mul nsw i32 %1654, %1655
  %1657 = add nsw i32 %1653, %1656
  store i32 %1657, ptr %15, align 4, !tbaa !9
  %1658 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %1659 = load double, ptr %1658, align 8, !tbaa !13
  %1660 = load double, ptr %34, align 8, !tbaa !11
  %1661 = fdiv double %1659, %1660
  %1662 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  store double %1661, ptr %1662, align 8, !tbaa !13
  %1663 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %1664 = load double, ptr %1663, align 8, !tbaa !15
  %1665 = load double, ptr %34, align 8, !tbaa !11
  %1666 = fdiv double %1664, %1665
  %1667 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  store double %1666, ptr %1667, align 8, !tbaa !15
  %1668 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  %1669 = load double, ptr %1668, align 8, !tbaa !13
  %1670 = load ptr, ptr %9, align 8, !tbaa !5
  %1671 = load i32, ptr %15, align 4, !tbaa !9
  %1672 = sext i32 %1671 to i64
  %1673 = getelementptr inbounds %struct.doublecomplex, ptr %1670, i64 %1672
  %1674 = getelementptr inbounds %struct.doublecomplex, ptr %1673, i32 0, i32 0
  store double %1669, ptr %1674, align 8, !tbaa !13
  %1675 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  %1676 = load double, ptr %1675, align 8, !tbaa !15
  %1677 = load ptr, ptr %9, align 8, !tbaa !5
  %1678 = load i32, ptr %15, align 4, !tbaa !9
  %1679 = sext i32 %1678 to i64
  %1680 = getelementptr inbounds %struct.doublecomplex, ptr %1677, i64 %1679
  %1681 = getelementptr inbounds %struct.doublecomplex, ptr %1680, i32 0, i32 1
  store double %1676, ptr %1681, align 8, !tbaa !15
  %1682 = load i32, ptr %36, align 4, !tbaa !9
  %1683 = load i32, ptr %37, align 4, !tbaa !9
  %1684 = sub nsw i32 %1683, 1
  %1685 = load i32, ptr %13, align 4, !tbaa !9
  %1686 = mul nsw i32 %1684, %1685
  %1687 = add nsw i32 %1682, %1686
  store i32 %1687, ptr %15, align 4, !tbaa !9
  %1688 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  %1689 = load double, ptr %1688, align 8, !tbaa !13
  %1690 = load double, ptr %34, align 8, !tbaa !11
  %1691 = fdiv double %1689, %1690
  %1692 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  store double %1691, ptr %1692, align 8, !tbaa !13
  %1693 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  %1694 = load double, ptr %1693, align 8, !tbaa !15
  %1695 = load double, ptr %34, align 8, !tbaa !11
  %1696 = fdiv double %1694, %1695
  %1697 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  store double %1696, ptr %1697, align 8, !tbaa !15
  %1698 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  %1699 = load double, ptr %1698, align 8, !tbaa !13
  %1700 = load ptr, ptr %9, align 8, !tbaa !5
  %1701 = load i32, ptr %15, align 4, !tbaa !9
  %1702 = sext i32 %1701 to i64
  %1703 = getelementptr inbounds %struct.doublecomplex, ptr %1700, i64 %1702
  %1704 = getelementptr inbounds %struct.doublecomplex, ptr %1703, i32 0, i32 0
  store double %1699, ptr %1704, align 8, !tbaa !13
  %1705 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  %1706 = load double, ptr %1705, align 8, !tbaa !15
  %1707 = load ptr, ptr %9, align 8, !tbaa !5
  %1708 = load i32, ptr %15, align 4, !tbaa !9
  %1709 = sext i32 %1708 to i64
  %1710 = getelementptr inbounds %struct.doublecomplex, ptr %1707, i64 %1709
  %1711 = getelementptr inbounds %struct.doublecomplex, ptr %1710, i32 0, i32 1
  store double %1706, ptr %1711, align 8, !tbaa !15
  %1712 = load i32, ptr %36, align 4, !tbaa !9
  %1713 = load i32, ptr %36, align 4, !tbaa !9
  %1714 = load i32, ptr %13, align 4, !tbaa !9
  %1715 = mul nsw i32 %1713, %1714
  %1716 = add nsw i32 %1712, %1715
  store i32 %1716, ptr %15, align 4, !tbaa !9
  %1717 = load i32, ptr %36, align 4, !tbaa !9
  %1718 = load i32, ptr %36, align 4, !tbaa !9
  %1719 = load i32, ptr %13, align 4, !tbaa !9
  %1720 = mul nsw i32 %1718, %1719
  %1721 = add nsw i32 %1717, %1720
  store i32 %1721, ptr %16, align 4, !tbaa !9
  %1722 = load ptr, ptr %9, align 8, !tbaa !5
  %1723 = load i32, ptr %16, align 4, !tbaa !9
  %1724 = sext i32 %1723 to i64
  %1725 = getelementptr inbounds %struct.doublecomplex, ptr %1722, i64 %1724
  %1726 = getelementptr inbounds %struct.doublecomplex, ptr %1725, i32 0, i32 0
  %1727 = load double, ptr %1726, align 8, !tbaa !13
  store double %1727, ptr %21, align 8, !tbaa !11
  %1728 = load double, ptr %21, align 8, !tbaa !11
  %1729 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  store double %1728, ptr %1729, align 8, !tbaa !13
  %1730 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  store double 0.000000e+00, ptr %1730, align 8, !tbaa !15
  %1731 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  %1732 = load double, ptr %1731, align 8, !tbaa !13
  %1733 = load ptr, ptr %9, align 8, !tbaa !5
  %1734 = load i32, ptr %15, align 4, !tbaa !9
  %1735 = sext i32 %1734 to i64
  %1736 = getelementptr inbounds %struct.doublecomplex, ptr %1733, i64 %1735
  %1737 = getelementptr inbounds %struct.doublecomplex, ptr %1736, i32 0, i32 0
  store double %1732, ptr %1737, align 8, !tbaa !13
  %1738 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  %1739 = load double, ptr %1738, align 8, !tbaa !15
  %1740 = load ptr, ptr %9, align 8, !tbaa !5
  %1741 = load i32, ptr %15, align 4, !tbaa !9
  %1742 = sext i32 %1741 to i64
  %1743 = getelementptr inbounds %struct.doublecomplex, ptr %1740, i64 %1742
  %1744 = getelementptr inbounds %struct.doublecomplex, ptr %1743, i32 0, i32 1
  store double %1739, ptr %1744, align 8, !tbaa !15
  br label %1745

1745:                                             ; preds = %1652
  %1746 = load i32, ptr %36, align 4, !tbaa !9
  %1747 = add nsw i32 %1746, -1
  store i32 %1747, ptr %36, align 4, !tbaa !9
  br label %1278, !llvm.loop !21

1748:                                             ; preds = %1278
  br label %1749

1749:                                             ; preds = %1748, %1161
  br label %1750

1750:                                             ; preds = %1749, %1160
  br label %1751

1751:                                             ; preds = %1750, %226
  %1752 = load i32, ptr %44, align 4, !tbaa !9
  %1753 = icmp eq i32 %1752, 1
  br i1 %1753, label %1754, label %1760

1754:                                             ; preds = %1751
  %1755 = load i32, ptr %53, align 4, !tbaa !9
  %1756 = load ptr, ptr %11, align 8, !tbaa !5
  %1757 = load i32, ptr %37, align 4, !tbaa !9
  %1758 = sext i32 %1757 to i64
  %1759 = getelementptr inbounds i32, ptr %1756, i64 %1758
  store i32 %1755, ptr %1759, align 4, !tbaa !9
  br label %1774

1760:                                             ; preds = %1751
  %1761 = load i32, ptr %38, align 4, !tbaa !9
  %1762 = sub nsw i32 0, %1761
  %1763 = load ptr, ptr %11, align 8, !tbaa !5
  %1764 = load i32, ptr %37, align 4, !tbaa !9
  %1765 = sext i32 %1764 to i64
  %1766 = getelementptr inbounds i32, ptr %1763, i64 %1765
  store i32 %1762, ptr %1766, align 4, !tbaa !9
  %1767 = load i32, ptr %53, align 4, !tbaa !9
  %1768 = sub nsw i32 0, %1767
  %1769 = load ptr, ptr %11, align 8, !tbaa !5
  %1770 = load i32, ptr %37, align 4, !tbaa !9
  %1771 = sub nsw i32 %1770, 1
  %1772 = sext i32 %1771 to i64
  %1773 = getelementptr inbounds i32, ptr %1769, i64 %1772
  store i32 %1768, ptr %1773, align 4, !tbaa !9
  br label %1774

1774:                                             ; preds = %1760, %1754
  %1775 = load i32, ptr %44, align 4, !tbaa !9
  %1776 = load i32, ptr %37, align 4, !tbaa !9
  %1777 = sub nsw i32 %1776, %1775
  store i32 %1777, ptr %37, align 4, !tbaa !9
  br label %127

1778:                                             ; preds = %117
  store i32 1, ptr %37, align 4, !tbaa !9
  br label %1779

1779:                                             ; preds = %3473, %1778
  %1780 = load i32, ptr %37, align 4, !tbaa !9
  %1781 = load ptr, ptr %8, align 8, !tbaa !5
  %1782 = load i32, ptr %1781, align 4, !tbaa !9
  %1783 = icmp sgt i32 %1780, %1782
  br i1 %1783, label %1784, label %1785

1784:                                             ; preds = %1779
  br label %3477

1785:                                             ; preds = %1779
  store i32 1, ptr %44, align 4, !tbaa !9
  %1786 = load i32, ptr %37, align 4, !tbaa !9
  store i32 %1786, ptr %38, align 4, !tbaa !9
  %1787 = load i32, ptr %37, align 4, !tbaa !9
  %1788 = load i32, ptr %37, align 4, !tbaa !9
  %1789 = load i32, ptr %13, align 4, !tbaa !9
  %1790 = mul nsw i32 %1788, %1789
  %1791 = add nsw i32 %1787, %1790
  store i32 %1791, ptr %15, align 4, !tbaa !9
  %1792 = load ptr, ptr %9, align 8, !tbaa !5
  %1793 = load i32, ptr %15, align 4, !tbaa !9
  %1794 = sext i32 %1793 to i64
  %1795 = getelementptr inbounds %struct.doublecomplex, ptr %1792, i64 %1794
  %1796 = getelementptr inbounds %struct.doublecomplex, ptr %1795, i32 0, i32 0
  %1797 = load double, ptr %1796, align 8, !tbaa !13
  store double %1797, ptr %21, align 8, !tbaa !11
  %1798 = load double, ptr %21, align 8, !tbaa !11
  %1799 = fcmp oge double %1798, 0.000000e+00
  br i1 %1799, label %1800, label %1802

1800:                                             ; preds = %1785
  %1801 = load double, ptr %21, align 8, !tbaa !11
  br label %1805

1802:                                             ; preds = %1785
  %1803 = load double, ptr %21, align 8, !tbaa !11
  %1804 = fneg double %1803
  br label %1805

1805:                                             ; preds = %1802, %1800
  %1806 = phi double [ %1801, %1800 ], [ %1804, %1802 ]
  store double %1806, ptr %54, align 8, !tbaa !11
  %1807 = load i32, ptr %37, align 4, !tbaa !9
  %1808 = load ptr, ptr %8, align 8, !tbaa !5
  %1809 = load i32, ptr %1808, align 4, !tbaa !9
  %1810 = icmp slt i32 %1807, %1809
  br i1 %1810, label %1811, label %1869

1811:                                             ; preds = %1805
  %1812 = load ptr, ptr %8, align 8, !tbaa !5
  %1813 = load i32, ptr %1812, align 4, !tbaa !9
  %1814 = load i32, ptr %37, align 4, !tbaa !9
  %1815 = sub nsw i32 %1813, %1814
  store i32 %1815, ptr %15, align 4, !tbaa !9
  %1816 = load i32, ptr %37, align 4, !tbaa !9
  %1817 = load ptr, ptr %9, align 8, !tbaa !5
  %1818 = load i32, ptr %37, align 4, !tbaa !9
  %1819 = add nsw i32 %1818, 1
  %1820 = load i32, ptr %37, align 4, !tbaa !9
  %1821 = load i32, ptr %13, align 4, !tbaa !9
  %1822 = mul nsw i32 %1820, %1821
  %1823 = add nsw i32 %1819, %1822
  %1824 = sext i32 %1823 to i64
  %1825 = getelementptr inbounds %struct.doublecomplex, ptr %1817, i64 %1824
  %1826 = call i32 @izamax_(ptr noundef %15, ptr noundef %1825, ptr noundef @c__1)
  %1827 = add nsw i32 %1816, %1826
  store i32 %1827, ptr %32, align 4, !tbaa !9
  %1828 = load i32, ptr %32, align 4, !tbaa !9
  %1829 = load i32, ptr %37, align 4, !tbaa !9
  %1830 = load i32, ptr %13, align 4, !tbaa !9
  %1831 = mul nsw i32 %1829, %1830
  %1832 = add nsw i32 %1828, %1831
  store i32 %1832, ptr %15, align 4, !tbaa !9
  %1833 = load ptr, ptr %9, align 8, !tbaa !5
  %1834 = load i32, ptr %15, align 4, !tbaa !9
  %1835 = sext i32 %1834 to i64
  %1836 = getelementptr inbounds %struct.doublecomplex, ptr %1833, i64 %1835
  %1837 = getelementptr inbounds %struct.doublecomplex, ptr %1836, i32 0, i32 0
  %1838 = load double, ptr %1837, align 8, !tbaa !13
  store double %1838, ptr %21, align 8, !tbaa !11
  %1839 = load double, ptr %21, align 8, !tbaa !11
  %1840 = fcmp oge double %1839, 0.000000e+00
  br i1 %1840, label %1841, label %1843

1841:                                             ; preds = %1811
  %1842 = load double, ptr %21, align 8, !tbaa !11
  br label %1846

1843:                                             ; preds = %1811
  %1844 = load double, ptr %21, align 8, !tbaa !11
  %1845 = fneg double %1844
  br label %1846

1846:                                             ; preds = %1843, %1841
  %1847 = phi double [ %1842, %1841 ], [ %1845, %1843 ]
  %1848 = load ptr, ptr %9, align 8, !tbaa !5
  %1849 = load i32, ptr %32, align 4, !tbaa !9
  %1850 = load i32, ptr %37, align 4, !tbaa !9
  %1851 = load i32, ptr %13, align 4, !tbaa !9
  %1852 = mul nsw i32 %1850, %1851
  %1853 = add nsw i32 %1849, %1852
  %1854 = sext i32 %1853 to i64
  %1855 = getelementptr inbounds %struct.doublecomplex, ptr %1848, i64 %1854
  %1856 = call { double, double } @Cd(ptr noundef %1855)
  %1857 = extractvalue { double, double } %1856, 0
  %1858 = extractvalue { double, double } %1856, 1
  store double %1858, ptr %22, align 8, !tbaa !11
  %1859 = load double, ptr %22, align 8, !tbaa !11
  %1860 = fcmp oge double %1859, 0.000000e+00
  br i1 %1860, label %1861, label %1863

1861:                                             ; preds = %1846
  %1862 = load double, ptr %22, align 8, !tbaa !11
  br label %1866

1863:                                             ; preds = %1846
  %1864 = load double, ptr %22, align 8, !tbaa !11
  %1865 = fneg double %1864
  br label %1866

1866:                                             ; preds = %1863, %1861
  %1867 = phi double [ %1862, %1861 ], [ %1865, %1863 ]
  %1868 = fadd double %1847, %1867
  store double %1868, ptr %57, align 8, !tbaa !11
  br label %1870

1869:                                             ; preds = %1805
  store double 0.000000e+00, ptr %57, align 8, !tbaa !11
  br label %1870

1870:                                             ; preds = %1869, %1866
  %1871 = load double, ptr %54, align 8, !tbaa !11
  %1872 = load double, ptr %57, align 8, !tbaa !11
  %1873 = fcmp oge double %1871, %1872
  br i1 %1873, label %1874, label %1876

1874:                                             ; preds = %1870
  %1875 = load double, ptr %54, align 8, !tbaa !11
  br label %1878

1876:                                             ; preds = %1870
  %1877 = load double, ptr %57, align 8, !tbaa !11
  br label %1878

1878:                                             ; preds = %1876, %1874
  %1879 = phi double [ %1875, %1874 ], [ %1877, %1876 ]
  %1880 = fcmp oeq double %1879, 0.000000e+00
  br i1 %1880, label %1881, label %1917

1881:                                             ; preds = %1878
  %1882 = load ptr, ptr %12, align 8, !tbaa !5
  %1883 = load i32, ptr %1882, align 4, !tbaa !9
  %1884 = icmp eq i32 %1883, 0
  br i1 %1884, label %1885, label %1888

1885:                                             ; preds = %1881
  %1886 = load i32, ptr %37, align 4, !tbaa !9
  %1887 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 %1886, ptr %1887, align 4, !tbaa !9
  br label %1888

1888:                                             ; preds = %1885, %1881
  %1889 = load i32, ptr %37, align 4, !tbaa !9
  store i32 %1889, ptr %53, align 4, !tbaa !9
  %1890 = load i32, ptr %37, align 4, !tbaa !9
  %1891 = load i32, ptr %37, align 4, !tbaa !9
  %1892 = load i32, ptr %13, align 4, !tbaa !9
  %1893 = mul nsw i32 %1891, %1892
  %1894 = add nsw i32 %1890, %1893
  store i32 %1894, ptr %15, align 4, !tbaa !9
  %1895 = load i32, ptr %37, align 4, !tbaa !9
  %1896 = load i32, ptr %37, align 4, !tbaa !9
  %1897 = load i32, ptr %13, align 4, !tbaa !9
  %1898 = mul nsw i32 %1896, %1897
  %1899 = add nsw i32 %1895, %1898
  store i32 %1899, ptr %16, align 4, !tbaa !9
  %1900 = load ptr, ptr %9, align 8, !tbaa !5
  %1901 = load i32, ptr %16, align 4, !tbaa !9
  %1902 = sext i32 %1901 to i64
  %1903 = getelementptr inbounds %struct.doublecomplex, ptr %1900, i64 %1902
  %1904 = getelementptr inbounds %struct.doublecomplex, ptr %1903, i32 0, i32 0
  %1905 = load double, ptr %1904, align 8, !tbaa !13
  store double %1905, ptr %21, align 8, !tbaa !11
  %1906 = load double, ptr %21, align 8, !tbaa !11
  %1907 = load ptr, ptr %9, align 8, !tbaa !5
  %1908 = load i32, ptr %15, align 4, !tbaa !9
  %1909 = sext i32 %1908 to i64
  %1910 = getelementptr inbounds %struct.doublecomplex, ptr %1907, i64 %1909
  %1911 = getelementptr inbounds %struct.doublecomplex, ptr %1910, i32 0, i32 0
  store double %1906, ptr %1911, align 8, !tbaa !13
  %1912 = load ptr, ptr %9, align 8, !tbaa !5
  %1913 = load i32, ptr %15, align 4, !tbaa !9
  %1914 = sext i32 %1913 to i64
  %1915 = getelementptr inbounds %struct.doublecomplex, ptr %1912, i64 %1914
  %1916 = getelementptr inbounds %struct.doublecomplex, ptr %1915, i32 0, i32 1
  store double 0.000000e+00, ptr %1916, align 8, !tbaa !15
  br label %3450

1917:                                             ; preds = %1878
  %1918 = load double, ptr %54, align 8, !tbaa !11
  %1919 = load double, ptr %40, align 8, !tbaa !11
  %1920 = load double, ptr %57, align 8, !tbaa !11
  %1921 = fmul double %1919, %1920
  %1922 = fcmp olt double %1918, %1921
  br i1 %1922, label %1925, label %1923

1923:                                             ; preds = %1917
  %1924 = load i32, ptr %37, align 4, !tbaa !9
  store i32 %1924, ptr %53, align 4, !tbaa !9
  br label %2106

1925:                                             ; preds = %1917
  store i32 0, ptr %31, align 4, !tbaa !9
  br label %1926

1926:                                             ; preds = %2104, %1925
  %1927 = load i32, ptr %32, align 4, !tbaa !9
  %1928 = load i32, ptr %37, align 4, !tbaa !9
  %1929 = icmp ne i32 %1927, %1928
  br i1 %1929, label %1930, label %1988

1930:                                             ; preds = %1926
  %1931 = load i32, ptr %32, align 4, !tbaa !9
  %1932 = load i32, ptr %37, align 4, !tbaa !9
  %1933 = sub nsw i32 %1931, %1932
  store i32 %1933, ptr %15, align 4, !tbaa !9
  %1934 = load i32, ptr %37, align 4, !tbaa !9
  %1935 = sub nsw i32 %1934, 1
  %1936 = load ptr, ptr %9, align 8, !tbaa !5
  %1937 = load i32, ptr %32, align 4, !tbaa !9
  %1938 = load i32, ptr %37, align 4, !tbaa !9
  %1939 = load i32, ptr %13, align 4, !tbaa !9
  %1940 = mul nsw i32 %1938, %1939
  %1941 = add nsw i32 %1937, %1940
  %1942 = sext i32 %1941 to i64
  %1943 = getelementptr inbounds %struct.doublecomplex, ptr %1936, i64 %1942
  %1944 = load ptr, ptr %10, align 8, !tbaa !5
  %1945 = call i32 @izamax_(ptr noundef %15, ptr noundef %1943, ptr noundef %1944)
  %1946 = add nsw i32 %1935, %1945
  store i32 %1946, ptr %33, align 4, !tbaa !9
  %1947 = load i32, ptr %32, align 4, !tbaa !9
  %1948 = load i32, ptr %33, align 4, !tbaa !9
  %1949 = load i32, ptr %13, align 4, !tbaa !9
  %1950 = mul nsw i32 %1948, %1949
  %1951 = add nsw i32 %1947, %1950
  store i32 %1951, ptr %15, align 4, !tbaa !9
  %1952 = load ptr, ptr %9, align 8, !tbaa !5
  %1953 = load i32, ptr %15, align 4, !tbaa !9
  %1954 = sext i32 %1953 to i64
  %1955 = getelementptr inbounds %struct.doublecomplex, ptr %1952, i64 %1954
  %1956 = getelementptr inbounds %struct.doublecomplex, ptr %1955, i32 0, i32 0
  %1957 = load double, ptr %1956, align 8, !tbaa !13
  store double %1957, ptr %21, align 8, !tbaa !11
  %1958 = load double, ptr %21, align 8, !tbaa !11
  %1959 = fcmp oge double %1958, 0.000000e+00
  br i1 %1959, label %1960, label %1962

1960:                                             ; preds = %1930
  %1961 = load double, ptr %21, align 8, !tbaa !11
  br label %1965

1962:                                             ; preds = %1930
  %1963 = load double, ptr %21, align 8, !tbaa !11
  %1964 = fneg double %1963
  br label %1965

1965:                                             ; preds = %1962, %1960
  %1966 = phi double [ %1961, %1960 ], [ %1964, %1962 ]
  %1967 = load ptr, ptr %9, align 8, !tbaa !5
  %1968 = load i32, ptr %32, align 4, !tbaa !9
  %1969 = load i32, ptr %33, align 4, !tbaa !9
  %1970 = load i32, ptr %13, align 4, !tbaa !9
  %1971 = mul nsw i32 %1969, %1970
  %1972 = add nsw i32 %1968, %1971
  %1973 = sext i32 %1972 to i64
  %1974 = getelementptr inbounds %struct.doublecomplex, ptr %1967, i64 %1973
  %1975 = call { double, double } @Cd(ptr noundef %1974)
  %1976 = extractvalue { double, double } %1975, 0
  %1977 = extractvalue { double, double } %1975, 1
  store double %1977, ptr %22, align 8, !tbaa !11
  %1978 = load double, ptr %22, align 8, !tbaa !11
  %1979 = fcmp oge double %1978, 0.000000e+00
  br i1 %1979, label %1980, label %1982

1980:                                             ; preds = %1965
  %1981 = load double, ptr %22, align 8, !tbaa !11
  br label %1985

1982:                                             ; preds = %1965
  %1983 = load double, ptr %22, align 8, !tbaa !11
  %1984 = fneg double %1983
  br label %1985

1985:                                             ; preds = %1982, %1980
  %1986 = phi double [ %1981, %1980 ], [ %1984, %1982 ]
  %1987 = fadd double %1966, %1986
  store double %1987, ptr %58, align 8, !tbaa !11
  br label %1989

1988:                                             ; preds = %1926
  store double 0.000000e+00, ptr %58, align 8, !tbaa !11
  br label %1989

1989:                                             ; preds = %1988, %1985
  %1990 = load i32, ptr %32, align 4, !tbaa !9
  %1991 = load ptr, ptr %8, align 8, !tbaa !5
  %1992 = load i32, ptr %1991, align 4, !tbaa !9
  %1993 = icmp slt i32 %1990, %1992
  br i1 %1993, label %1994, label %2059

1994:                                             ; preds = %1989
  %1995 = load ptr, ptr %8, align 8, !tbaa !5
  %1996 = load i32, ptr %1995, align 4, !tbaa !9
  %1997 = load i32, ptr %32, align 4, !tbaa !9
  %1998 = sub nsw i32 %1996, %1997
  store i32 %1998, ptr %15, align 4, !tbaa !9
  %1999 = load i32, ptr %32, align 4, !tbaa !9
  %2000 = load ptr, ptr %9, align 8, !tbaa !5
  %2001 = load i32, ptr %32, align 4, !tbaa !9
  %2002 = add nsw i32 %2001, 1
  %2003 = load i32, ptr %32, align 4, !tbaa !9
  %2004 = load i32, ptr %13, align 4, !tbaa !9
  %2005 = mul nsw i32 %2003, %2004
  %2006 = add nsw i32 %2002, %2005
  %2007 = sext i32 %2006 to i64
  %2008 = getelementptr inbounds %struct.doublecomplex, ptr %2000, i64 %2007
  %2009 = call i32 @izamax_(ptr noundef %15, ptr noundef %2008, ptr noundef @c__1)
  %2010 = add nsw i32 %1999, %2009
  store i32 %2010, ptr %43, align 4, !tbaa !9
  %2011 = load i32, ptr %43, align 4, !tbaa !9
  %2012 = load i32, ptr %32, align 4, !tbaa !9
  %2013 = load i32, ptr %13, align 4, !tbaa !9
  %2014 = mul nsw i32 %2012, %2013
  %2015 = add nsw i32 %2011, %2014
  store i32 %2015, ptr %15, align 4, !tbaa !9
  %2016 = load ptr, ptr %9, align 8, !tbaa !5
  %2017 = load i32, ptr %15, align 4, !tbaa !9
  %2018 = sext i32 %2017 to i64
  %2019 = getelementptr inbounds %struct.doublecomplex, ptr %2016, i64 %2018
  %2020 = getelementptr inbounds %struct.doublecomplex, ptr %2019, i32 0, i32 0
  %2021 = load double, ptr %2020, align 8, !tbaa !13
  store double %2021, ptr %21, align 8, !tbaa !11
  %2022 = load double, ptr %21, align 8, !tbaa !11
  %2023 = fcmp oge double %2022, 0.000000e+00
  br i1 %2023, label %2024, label %2026

2024:                                             ; preds = %1994
  %2025 = load double, ptr %21, align 8, !tbaa !11
  br label %2029

2026:                                             ; preds = %1994
  %2027 = load double, ptr %21, align 8, !tbaa !11
  %2028 = fneg double %2027
  br label %2029

2029:                                             ; preds = %2026, %2024
  %2030 = phi double [ %2025, %2024 ], [ %2028, %2026 ]
  %2031 = load ptr, ptr %9, align 8, !tbaa !5
  %2032 = load i32, ptr %43, align 4, !tbaa !9
  %2033 = load i32, ptr %32, align 4, !tbaa !9
  %2034 = load i32, ptr %13, align 4, !tbaa !9
  %2035 = mul nsw i32 %2033, %2034
  %2036 = add nsw i32 %2032, %2035
  %2037 = sext i32 %2036 to i64
  %2038 = getelementptr inbounds %struct.doublecomplex, ptr %2031, i64 %2037
  %2039 = call { double, double } @Cd(ptr noundef %2038)
  %2040 = extractvalue { double, double } %2039, 0
  %2041 = extractvalue { double, double } %2039, 1
  store double %2041, ptr %22, align 8, !tbaa !11
  %2042 = load double, ptr %22, align 8, !tbaa !11
  %2043 = fcmp oge double %2042, 0.000000e+00
  br i1 %2043, label %2044, label %2046

2044:                                             ; preds = %2029
  %2045 = load double, ptr %22, align 8, !tbaa !11
  br label %2049

2046:                                             ; preds = %2029
  %2047 = load double, ptr %22, align 8, !tbaa !11
  %2048 = fneg double %2047
  br label %2049

2049:                                             ; preds = %2046, %2044
  %2050 = phi double [ %2045, %2044 ], [ %2048, %2046 ]
  %2051 = fadd double %2030, %2050
  store double %2051, ptr %41, align 8, !tbaa !11
  %2052 = load double, ptr %41, align 8, !tbaa !11
  %2053 = load double, ptr %58, align 8, !tbaa !11
  %2054 = fcmp ogt double %2052, %2053
  br i1 %2054, label %2055, label %2058

2055:                                             ; preds = %2049
  %2056 = load double, ptr %41, align 8, !tbaa !11
  store double %2056, ptr %58, align 8, !tbaa !11
  %2057 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %2057, ptr %33, align 4, !tbaa !9
  br label %2058

2058:                                             ; preds = %2055, %2049
  br label %2059

2059:                                             ; preds = %2058, %1989
  %2060 = load i32, ptr %32, align 4, !tbaa !9
  %2061 = load i32, ptr %32, align 4, !tbaa !9
  %2062 = load i32, ptr %13, align 4, !tbaa !9
  %2063 = mul nsw i32 %2061, %2062
  %2064 = add nsw i32 %2060, %2063
  store i32 %2064, ptr %15, align 4, !tbaa !9
  %2065 = load ptr, ptr %9, align 8, !tbaa !5
  %2066 = load i32, ptr %15, align 4, !tbaa !9
  %2067 = sext i32 %2066 to i64
  %2068 = getelementptr inbounds %struct.doublecomplex, ptr %2065, i64 %2067
  %2069 = getelementptr inbounds %struct.doublecomplex, ptr %2068, i32 0, i32 0
  %2070 = load double, ptr %2069, align 8, !tbaa !13
  store double %2070, ptr %21, align 8, !tbaa !11
  %2071 = load double, ptr %21, align 8, !tbaa !11
  %2072 = fcmp oge double %2071, 0.000000e+00
  br i1 %2072, label %2073, label %2075

2073:                                             ; preds = %2059
  %2074 = load double, ptr %21, align 8, !tbaa !11
  br label %2078

2075:                                             ; preds = %2059
  %2076 = load double, ptr %21, align 8, !tbaa !11
  %2077 = fneg double %2076
  br label %2078

2078:                                             ; preds = %2075, %2073
  %2079 = phi double [ %2074, %2073 ], [ %2077, %2075 ]
  %2080 = load double, ptr %40, align 8, !tbaa !11
  %2081 = load double, ptr %58, align 8, !tbaa !11
  %2082 = fmul double %2080, %2081
  %2083 = fcmp olt double %2079, %2082
  br i1 %2083, label %2086, label %2084

2084:                                             ; preds = %2078
  %2085 = load i32, ptr %32, align 4, !tbaa !9
  store i32 %2085, ptr %53, align 4, !tbaa !9
  store i32 1, ptr %31, align 4, !tbaa !9
  br label %2101

2086:                                             ; preds = %2078
  %2087 = load i32, ptr %38, align 4, !tbaa !9
  %2088 = load i32, ptr %33, align 4, !tbaa !9
  %2089 = icmp eq i32 %2087, %2088
  br i1 %2089, label %2094, label %2090

2090:                                             ; preds = %2086
  %2091 = load double, ptr %58, align 8, !tbaa !11
  %2092 = load double, ptr %57, align 8, !tbaa !11
  %2093 = fcmp ole double %2091, %2092
  br i1 %2093, label %2094, label %2096

2094:                                             ; preds = %2090, %2086
  %2095 = load i32, ptr %32, align 4, !tbaa !9
  store i32 %2095, ptr %53, align 4, !tbaa !9
  store i32 2, ptr %44, align 4, !tbaa !9
  store i32 1, ptr %31, align 4, !tbaa !9
  br label %2100

2096:                                             ; preds = %2090
  %2097 = load i32, ptr %32, align 4, !tbaa !9
  store i32 %2097, ptr %38, align 4, !tbaa !9
  %2098 = load double, ptr %58, align 8, !tbaa !11
  store double %2098, ptr %57, align 8, !tbaa !11
  %2099 = load i32, ptr %33, align 4, !tbaa !9
  store i32 %2099, ptr %32, align 4, !tbaa !9
  br label %2100

2100:                                             ; preds = %2096, %2094
  br label %2101

2101:                                             ; preds = %2100, %2084
  %2102 = load i32, ptr %31, align 4, !tbaa !9
  %2103 = icmp ne i32 %2102, 0
  br i1 %2103, label %2105, label %2104

2104:                                             ; preds = %2101
  br label %1926

2105:                                             ; preds = %2101
  br label %2106

2106:                                             ; preds = %2105, %1923
  %2107 = load i32, ptr %37, align 4, !tbaa !9
  %2108 = load i32, ptr %44, align 4, !tbaa !9
  %2109 = add nsw i32 %2107, %2108
  %2110 = sub nsw i32 %2109, 1
  store i32 %2110, ptr %52, align 4, !tbaa !9
  %2111 = load i32, ptr %44, align 4, !tbaa !9
  %2112 = icmp eq i32 %2111, 2
  br i1 %2112, label %2113, label %2321

2113:                                             ; preds = %2106
  %2114 = load i32, ptr %38, align 4, !tbaa !9
  %2115 = load i32, ptr %37, align 4, !tbaa !9
  %2116 = icmp ne i32 %2114, %2115
  br i1 %2116, label %2117, label %2321

2117:                                             ; preds = %2113
  %2118 = load i32, ptr %38, align 4, !tbaa !9
  %2119 = load ptr, ptr %8, align 8, !tbaa !5
  %2120 = load i32, ptr %2119, align 4, !tbaa !9
  %2121 = icmp slt i32 %2118, %2120
  br i1 %2121, label %2122, label %2145

2122:                                             ; preds = %2117
  %2123 = load ptr, ptr %8, align 8, !tbaa !5
  %2124 = load i32, ptr %2123, align 4, !tbaa !9
  %2125 = load i32, ptr %38, align 4, !tbaa !9
  %2126 = sub nsw i32 %2124, %2125
  store i32 %2126, ptr %15, align 4, !tbaa !9
  %2127 = load ptr, ptr %9, align 8, !tbaa !5
  %2128 = load i32, ptr %38, align 4, !tbaa !9
  %2129 = add nsw i32 %2128, 1
  %2130 = load i32, ptr %37, align 4, !tbaa !9
  %2131 = load i32, ptr %13, align 4, !tbaa !9
  %2132 = mul nsw i32 %2130, %2131
  %2133 = add nsw i32 %2129, %2132
  %2134 = sext i32 %2133 to i64
  %2135 = getelementptr inbounds %struct.doublecomplex, ptr %2127, i64 %2134
  %2136 = load ptr, ptr %9, align 8, !tbaa !5
  %2137 = load i32, ptr %38, align 4, !tbaa !9
  %2138 = add nsw i32 %2137, 1
  %2139 = load i32, ptr %38, align 4, !tbaa !9
  %2140 = load i32, ptr %13, align 4, !tbaa !9
  %2141 = mul nsw i32 %2139, %2140
  %2142 = add nsw i32 %2138, %2141
  %2143 = sext i32 %2142 to i64
  %2144 = getelementptr inbounds %struct.doublecomplex, ptr %2136, i64 %2143
  call void @zswap_(ptr noundef %15, ptr noundef %2135, ptr noundef @c__1, ptr noundef %2144, ptr noundef @c__1)
  br label %2145

2145:                                             ; preds = %2122, %2117
  %2146 = load i32, ptr %38, align 4, !tbaa !9
  %2147 = sub nsw i32 %2146, 1
  store i32 %2147, ptr %15, align 4, !tbaa !9
  %2148 = load i32, ptr %37, align 4, !tbaa !9
  %2149 = add nsw i32 %2148, 1
  store i32 %2149, ptr %36, align 4, !tbaa !9
  br label %2150

2150:                                             ; preds = %2229, %2145
  %2151 = load i32, ptr %36, align 4, !tbaa !9
  %2152 = load i32, ptr %15, align 4, !tbaa !9
  %2153 = icmp sle i32 %2151, %2152
  br i1 %2153, label %2154, label %2232

2154:                                             ; preds = %2150
  %2155 = load ptr, ptr %9, align 8, !tbaa !5
  %2156 = load i32, ptr %36, align 4, !tbaa !9
  %2157 = load i32, ptr %37, align 4, !tbaa !9
  %2158 = load i32, ptr %13, align 4, !tbaa !9
  %2159 = mul nsw i32 %2157, %2158
  %2160 = add nsw i32 %2156, %2159
  %2161 = sext i32 %2160 to i64
  %2162 = getelementptr inbounds %struct.doublecomplex, ptr %2155, i64 %2161
  %2163 = call { double, double } @Cd(ptr noundef %2162)
  %2164 = extractvalue { double, double } %2163, 0
  %2165 = extractvalue { double, double } %2163, 1
  %2166 = fneg double %2165
  %2167 = call ptr @_pCd(ptr noundef %23)
  %2168 = getelementptr inbounds { double, double }, ptr %2167, i32 0, i32 0
  %2169 = getelementptr inbounds { double, double }, ptr %2167, i32 0, i32 1
  store double %2164, ptr %2168, align 8
  store double %2166, ptr %2169, align 8
  %2170 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  %2171 = load double, ptr %2170, align 8, !tbaa !13
  %2172 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  store double %2171, ptr %2172, align 8, !tbaa !13
  %2173 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  %2174 = load double, ptr %2173, align 8, !tbaa !15
  %2175 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  store double %2174, ptr %2175, align 8, !tbaa !15
  %2176 = load i32, ptr %36, align 4, !tbaa !9
  %2177 = load i32, ptr %37, align 4, !tbaa !9
  %2178 = load i32, ptr %13, align 4, !tbaa !9
  %2179 = mul nsw i32 %2177, %2178
  %2180 = add nsw i32 %2176, %2179
  store i32 %2180, ptr %16, align 4, !tbaa !9
  %2181 = load ptr, ptr %9, align 8, !tbaa !5
  %2182 = load i32, ptr %38, align 4, !tbaa !9
  %2183 = load i32, ptr %36, align 4, !tbaa !9
  %2184 = load i32, ptr %13, align 4, !tbaa !9
  %2185 = mul nsw i32 %2183, %2184
  %2186 = add nsw i32 %2182, %2185
  %2187 = sext i32 %2186 to i64
  %2188 = getelementptr inbounds %struct.doublecomplex, ptr %2181, i64 %2187
  %2189 = call { double, double } @Cd(ptr noundef %2188)
  %2190 = extractvalue { double, double } %2189, 0
  %2191 = extractvalue { double, double } %2189, 1
  %2192 = fneg double %2191
  %2193 = call ptr @_pCd(ptr noundef %23)
  %2194 = getelementptr inbounds { double, double }, ptr %2193, i32 0, i32 0
  %2195 = getelementptr inbounds { double, double }, ptr %2193, i32 0, i32 1
  store double %2190, ptr %2194, align 8
  store double %2192, ptr %2195, align 8
  %2196 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  %2197 = load double, ptr %2196, align 8, !tbaa !13
  %2198 = load ptr, ptr %9, align 8, !tbaa !5
  %2199 = load i32, ptr %16, align 4, !tbaa !9
  %2200 = sext i32 %2199 to i64
  %2201 = getelementptr inbounds %struct.doublecomplex, ptr %2198, i64 %2200
  %2202 = getelementptr inbounds %struct.doublecomplex, ptr %2201, i32 0, i32 0
  store double %2197, ptr %2202, align 8, !tbaa !13
  %2203 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  %2204 = load double, ptr %2203, align 8, !tbaa !15
  %2205 = load ptr, ptr %9, align 8, !tbaa !5
  %2206 = load i32, ptr %16, align 4, !tbaa !9
  %2207 = sext i32 %2206 to i64
  %2208 = getelementptr inbounds %struct.doublecomplex, ptr %2205, i64 %2207
  %2209 = getelementptr inbounds %struct.doublecomplex, ptr %2208, i32 0, i32 1
  store double %2204, ptr %2209, align 8, !tbaa !15
  %2210 = load i32, ptr %38, align 4, !tbaa !9
  %2211 = load i32, ptr %36, align 4, !tbaa !9
  %2212 = load i32, ptr %13, align 4, !tbaa !9
  %2213 = mul nsw i32 %2211, %2212
  %2214 = add nsw i32 %2210, %2213
  store i32 %2214, ptr %16, align 4, !tbaa !9
  %2215 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  %2216 = load double, ptr %2215, align 8, !tbaa !13
  %2217 = load ptr, ptr %9, align 8, !tbaa !5
  %2218 = load i32, ptr %16, align 4, !tbaa !9
  %2219 = sext i32 %2218 to i64
  %2220 = getelementptr inbounds %struct.doublecomplex, ptr %2217, i64 %2219
  %2221 = getelementptr inbounds %struct.doublecomplex, ptr %2220, i32 0, i32 0
  store double %2216, ptr %2221, align 8, !tbaa !13
  %2222 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  %2223 = load double, ptr %2222, align 8, !tbaa !15
  %2224 = load ptr, ptr %9, align 8, !tbaa !5
  %2225 = load i32, ptr %16, align 4, !tbaa !9
  %2226 = sext i32 %2225 to i64
  %2227 = getelementptr inbounds %struct.doublecomplex, ptr %2224, i64 %2226
  %2228 = getelementptr inbounds %struct.doublecomplex, ptr %2227, i32 0, i32 1
  store double %2223, ptr %2228, align 8, !tbaa !15
  br label %2229

2229:                                             ; preds = %2154
  %2230 = load i32, ptr %36, align 4, !tbaa !9
  %2231 = add nsw i32 %2230, 1
  store i32 %2231, ptr %36, align 4, !tbaa !9
  br label %2150, !llvm.loop !22

2232:                                             ; preds = %2150
  %2233 = load i32, ptr %38, align 4, !tbaa !9
  %2234 = load i32, ptr %37, align 4, !tbaa !9
  %2235 = load i32, ptr %13, align 4, !tbaa !9
  %2236 = mul nsw i32 %2234, %2235
  %2237 = add nsw i32 %2233, %2236
  store i32 %2237, ptr %15, align 4, !tbaa !9
  %2238 = load ptr, ptr %9, align 8, !tbaa !5
  %2239 = load i32, ptr %38, align 4, !tbaa !9
  %2240 = load i32, ptr %37, align 4, !tbaa !9
  %2241 = load i32, ptr %13, align 4, !tbaa !9
  %2242 = mul nsw i32 %2240, %2241
  %2243 = add nsw i32 %2239, %2242
  %2244 = sext i32 %2243 to i64
  %2245 = getelementptr inbounds %struct.doublecomplex, ptr %2238, i64 %2244
  %2246 = call { double, double } @Cd(ptr noundef %2245)
  %2247 = extractvalue { double, double } %2246, 0
  %2248 = extractvalue { double, double } %2246, 1
  %2249 = fneg double %2248
  %2250 = call ptr @_pCd(ptr noundef %23)
  %2251 = getelementptr inbounds { double, double }, ptr %2250, i32 0, i32 0
  %2252 = getelementptr inbounds { double, double }, ptr %2250, i32 0, i32 1
  store double %2247, ptr %2251, align 8
  store double %2249, ptr %2252, align 8
  %2253 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  %2254 = load double, ptr %2253, align 8, !tbaa !13
  %2255 = load ptr, ptr %9, align 8, !tbaa !5
  %2256 = load i32, ptr %15, align 4, !tbaa !9
  %2257 = sext i32 %2256 to i64
  %2258 = getelementptr inbounds %struct.doublecomplex, ptr %2255, i64 %2257
  %2259 = getelementptr inbounds %struct.doublecomplex, ptr %2258, i32 0, i32 0
  store double %2254, ptr %2259, align 8, !tbaa !13
  %2260 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  %2261 = load double, ptr %2260, align 8, !tbaa !15
  %2262 = load ptr, ptr %9, align 8, !tbaa !5
  %2263 = load i32, ptr %15, align 4, !tbaa !9
  %2264 = sext i32 %2263 to i64
  %2265 = getelementptr inbounds %struct.doublecomplex, ptr %2262, i64 %2264
  %2266 = getelementptr inbounds %struct.doublecomplex, ptr %2265, i32 0, i32 1
  store double %2261, ptr %2266, align 8, !tbaa !15
  %2267 = load i32, ptr %37, align 4, !tbaa !9
  %2268 = load i32, ptr %37, align 4, !tbaa !9
  %2269 = load i32, ptr %13, align 4, !tbaa !9
  %2270 = mul nsw i32 %2268, %2269
  %2271 = add nsw i32 %2267, %2270
  store i32 %2271, ptr %15, align 4, !tbaa !9
  %2272 = load ptr, ptr %9, align 8, !tbaa !5
  %2273 = load i32, ptr %15, align 4, !tbaa !9
  %2274 = sext i32 %2273 to i64
  %2275 = getelementptr inbounds %struct.doublecomplex, ptr %2272, i64 %2274
  %2276 = getelementptr inbounds %struct.doublecomplex, ptr %2275, i32 0, i32 0
  %2277 = load double, ptr %2276, align 8, !tbaa !13
  store double %2277, ptr %46, align 8, !tbaa !11
  %2278 = load i32, ptr %37, align 4, !tbaa !9
  %2279 = load i32, ptr %37, align 4, !tbaa !9
  %2280 = load i32, ptr %13, align 4, !tbaa !9
  %2281 = mul nsw i32 %2279, %2280
  %2282 = add nsw i32 %2278, %2281
  store i32 %2282, ptr %15, align 4, !tbaa !9
  %2283 = load i32, ptr %38, align 4, !tbaa !9
  %2284 = load i32, ptr %38, align 4, !tbaa !9
  %2285 = load i32, ptr %13, align 4, !tbaa !9
  %2286 = mul nsw i32 %2284, %2285
  %2287 = add nsw i32 %2283, %2286
  store i32 %2287, ptr %16, align 4, !tbaa !9
  %2288 = load ptr, ptr %9, align 8, !tbaa !5
  %2289 = load i32, ptr %16, align 4, !tbaa !9
  %2290 = sext i32 %2289 to i64
  %2291 = getelementptr inbounds %struct.doublecomplex, ptr %2288, i64 %2290
  %2292 = getelementptr inbounds %struct.doublecomplex, ptr %2291, i32 0, i32 0
  %2293 = load double, ptr %2292, align 8, !tbaa !13
  store double %2293, ptr %21, align 8, !tbaa !11
  %2294 = load double, ptr %21, align 8, !tbaa !11
  %2295 = load ptr, ptr %9, align 8, !tbaa !5
  %2296 = load i32, ptr %15, align 4, !tbaa !9
  %2297 = sext i32 %2296 to i64
  %2298 = getelementptr inbounds %struct.doublecomplex, ptr %2295, i64 %2297
  %2299 = getelementptr inbounds %struct.doublecomplex, ptr %2298, i32 0, i32 0
  store double %2294, ptr %2299, align 8, !tbaa !13
  %2300 = load ptr, ptr %9, align 8, !tbaa !5
  %2301 = load i32, ptr %15, align 4, !tbaa !9
  %2302 = sext i32 %2301 to i64
  %2303 = getelementptr inbounds %struct.doublecomplex, ptr %2300, i64 %2302
  %2304 = getelementptr inbounds %struct.doublecomplex, ptr %2303, i32 0, i32 1
  store double 0.000000e+00, ptr %2304, align 8, !tbaa !15
  %2305 = load i32, ptr %38, align 4, !tbaa !9
  %2306 = load i32, ptr %38, align 4, !tbaa !9
  %2307 = load i32, ptr %13, align 4, !tbaa !9
  %2308 = mul nsw i32 %2306, %2307
  %2309 = add nsw i32 %2305, %2308
  store i32 %2309, ptr %15, align 4, !tbaa !9
  %2310 = load double, ptr %46, align 8, !tbaa !11
  %2311 = load ptr, ptr %9, align 8, !tbaa !5
  %2312 = load i32, ptr %15, align 4, !tbaa !9
  %2313 = sext i32 %2312 to i64
  %2314 = getelementptr inbounds %struct.doublecomplex, ptr %2311, i64 %2313
  %2315 = getelementptr inbounds %struct.doublecomplex, ptr %2314, i32 0, i32 0
  store double %2310, ptr %2315, align 8, !tbaa !13
  %2316 = load ptr, ptr %9, align 8, !tbaa !5
  %2317 = load i32, ptr %15, align 4, !tbaa !9
  %2318 = sext i32 %2317 to i64
  %2319 = getelementptr inbounds %struct.doublecomplex, ptr %2316, i64 %2318
  %2320 = getelementptr inbounds %struct.doublecomplex, ptr %2319, i32 0, i32 1
  store double 0.000000e+00, ptr %2320, align 8, !tbaa !15
  br label %2321

2321:                                             ; preds = %2232, %2113, %2106
  %2322 = load i32, ptr %53, align 4, !tbaa !9
  %2323 = load i32, ptr %52, align 4, !tbaa !9
  %2324 = icmp ne i32 %2322, %2323
  br i1 %2324, label %2325, label %2632

2325:                                             ; preds = %2321
  %2326 = load i32, ptr %53, align 4, !tbaa !9
  %2327 = load ptr, ptr %8, align 8, !tbaa !5
  %2328 = load i32, ptr %2327, align 4, !tbaa !9
  %2329 = icmp slt i32 %2326, %2328
  br i1 %2329, label %2330, label %2353

2330:                                             ; preds = %2325
  %2331 = load ptr, ptr %8, align 8, !tbaa !5
  %2332 = load i32, ptr %2331, align 4, !tbaa !9
  %2333 = load i32, ptr %53, align 4, !tbaa !9
  %2334 = sub nsw i32 %2332, %2333
  store i32 %2334, ptr %15, align 4, !tbaa !9
  %2335 = load ptr, ptr %9, align 8, !tbaa !5
  %2336 = load i32, ptr %53, align 4, !tbaa !9
  %2337 = add nsw i32 %2336, 1
  %2338 = load i32, ptr %52, align 4, !tbaa !9
  %2339 = load i32, ptr %13, align 4, !tbaa !9
  %2340 = mul nsw i32 %2338, %2339
  %2341 = add nsw i32 %2337, %2340
  %2342 = sext i32 %2341 to i64
  %2343 = getelementptr inbounds %struct.doublecomplex, ptr %2335, i64 %2342
  %2344 = load ptr, ptr %9, align 8, !tbaa !5
  %2345 = load i32, ptr %53, align 4, !tbaa !9
  %2346 = add nsw i32 %2345, 1
  %2347 = load i32, ptr %53, align 4, !tbaa !9
  %2348 = load i32, ptr %13, align 4, !tbaa !9
  %2349 = mul nsw i32 %2347, %2348
  %2350 = add nsw i32 %2346, %2349
  %2351 = sext i32 %2350 to i64
  %2352 = getelementptr inbounds %struct.doublecomplex, ptr %2344, i64 %2351
  call void @zswap_(ptr noundef %15, ptr noundef %2343, ptr noundef @c__1, ptr noundef %2352, ptr noundef @c__1)
  br label %2353

2353:                                             ; preds = %2330, %2325
  %2354 = load i32, ptr %53, align 4, !tbaa !9
  %2355 = sub nsw i32 %2354, 1
  store i32 %2355, ptr %15, align 4, !tbaa !9
  %2356 = load i32, ptr %52, align 4, !tbaa !9
  %2357 = add nsw i32 %2356, 1
  store i32 %2357, ptr %36, align 4, !tbaa !9
  br label %2358

2358:                                             ; preds = %2437, %2353
  %2359 = load i32, ptr %36, align 4, !tbaa !9
  %2360 = load i32, ptr %15, align 4, !tbaa !9
  %2361 = icmp sle i32 %2359, %2360
  br i1 %2361, label %2362, label %2440

2362:                                             ; preds = %2358
  %2363 = load ptr, ptr %9, align 8, !tbaa !5
  %2364 = load i32, ptr %36, align 4, !tbaa !9
  %2365 = load i32, ptr %52, align 4, !tbaa !9
  %2366 = load i32, ptr %13, align 4, !tbaa !9
  %2367 = mul nsw i32 %2365, %2366
  %2368 = add nsw i32 %2364, %2367
  %2369 = sext i32 %2368 to i64
  %2370 = getelementptr inbounds %struct.doublecomplex, ptr %2363, i64 %2369
  %2371 = call { double, double } @Cd(ptr noundef %2370)
  %2372 = extractvalue { double, double } %2371, 0
  %2373 = extractvalue { double, double } %2371, 1
  %2374 = fneg double %2373
  %2375 = call ptr @_pCd(ptr noundef %23)
  %2376 = getelementptr inbounds { double, double }, ptr %2375, i32 0, i32 0
  %2377 = getelementptr inbounds { double, double }, ptr %2375, i32 0, i32 1
  store double %2372, ptr %2376, align 8
  store double %2374, ptr %2377, align 8
  %2378 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  %2379 = load double, ptr %2378, align 8, !tbaa !13
  %2380 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  store double %2379, ptr %2380, align 8, !tbaa !13
  %2381 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  %2382 = load double, ptr %2381, align 8, !tbaa !15
  %2383 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  store double %2382, ptr %2383, align 8, !tbaa !15
  %2384 = load i32, ptr %36, align 4, !tbaa !9
  %2385 = load i32, ptr %52, align 4, !tbaa !9
  %2386 = load i32, ptr %13, align 4, !tbaa !9
  %2387 = mul nsw i32 %2385, %2386
  %2388 = add nsw i32 %2384, %2387
  store i32 %2388, ptr %16, align 4, !tbaa !9
  %2389 = load ptr, ptr %9, align 8, !tbaa !5
  %2390 = load i32, ptr %53, align 4, !tbaa !9
  %2391 = load i32, ptr %36, align 4, !tbaa !9
  %2392 = load i32, ptr %13, align 4, !tbaa !9
  %2393 = mul nsw i32 %2391, %2392
  %2394 = add nsw i32 %2390, %2393
  %2395 = sext i32 %2394 to i64
  %2396 = getelementptr inbounds %struct.doublecomplex, ptr %2389, i64 %2395
  %2397 = call { double, double } @Cd(ptr noundef %2396)
  %2398 = extractvalue { double, double } %2397, 0
  %2399 = extractvalue { double, double } %2397, 1
  %2400 = fneg double %2399
  %2401 = call ptr @_pCd(ptr noundef %23)
  %2402 = getelementptr inbounds { double, double }, ptr %2401, i32 0, i32 0
  %2403 = getelementptr inbounds { double, double }, ptr %2401, i32 0, i32 1
  store double %2398, ptr %2402, align 8
  store double %2400, ptr %2403, align 8
  %2404 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  %2405 = load double, ptr %2404, align 8, !tbaa !13
  %2406 = load ptr, ptr %9, align 8, !tbaa !5
  %2407 = load i32, ptr %16, align 4, !tbaa !9
  %2408 = sext i32 %2407 to i64
  %2409 = getelementptr inbounds %struct.doublecomplex, ptr %2406, i64 %2408
  %2410 = getelementptr inbounds %struct.doublecomplex, ptr %2409, i32 0, i32 0
  store double %2405, ptr %2410, align 8, !tbaa !13
  %2411 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  %2412 = load double, ptr %2411, align 8, !tbaa !15
  %2413 = load ptr, ptr %9, align 8, !tbaa !5
  %2414 = load i32, ptr %16, align 4, !tbaa !9
  %2415 = sext i32 %2414 to i64
  %2416 = getelementptr inbounds %struct.doublecomplex, ptr %2413, i64 %2415
  %2417 = getelementptr inbounds %struct.doublecomplex, ptr %2416, i32 0, i32 1
  store double %2412, ptr %2417, align 8, !tbaa !15
  %2418 = load i32, ptr %53, align 4, !tbaa !9
  %2419 = load i32, ptr %36, align 4, !tbaa !9
  %2420 = load i32, ptr %13, align 4, !tbaa !9
  %2421 = mul nsw i32 %2419, %2420
  %2422 = add nsw i32 %2418, %2421
  store i32 %2422, ptr %16, align 4, !tbaa !9
  %2423 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  %2424 = load double, ptr %2423, align 8, !tbaa !13
  %2425 = load ptr, ptr %9, align 8, !tbaa !5
  %2426 = load i32, ptr %16, align 4, !tbaa !9
  %2427 = sext i32 %2426 to i64
  %2428 = getelementptr inbounds %struct.doublecomplex, ptr %2425, i64 %2427
  %2429 = getelementptr inbounds %struct.doublecomplex, ptr %2428, i32 0, i32 0
  store double %2424, ptr %2429, align 8, !tbaa !13
  %2430 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  %2431 = load double, ptr %2430, align 8, !tbaa !15
  %2432 = load ptr, ptr %9, align 8, !tbaa !5
  %2433 = load i32, ptr %16, align 4, !tbaa !9
  %2434 = sext i32 %2433 to i64
  %2435 = getelementptr inbounds %struct.doublecomplex, ptr %2432, i64 %2434
  %2436 = getelementptr inbounds %struct.doublecomplex, ptr %2435, i32 0, i32 1
  store double %2431, ptr %2436, align 8, !tbaa !15
  br label %2437

2437:                                             ; preds = %2362
  %2438 = load i32, ptr %36, align 4, !tbaa !9
  %2439 = add nsw i32 %2438, 1
  store i32 %2439, ptr %36, align 4, !tbaa !9
  br label %2358, !llvm.loop !23

2440:                                             ; preds = %2358
  %2441 = load i32, ptr %53, align 4, !tbaa !9
  %2442 = load i32, ptr %52, align 4, !tbaa !9
  %2443 = load i32, ptr %13, align 4, !tbaa !9
  %2444 = mul nsw i32 %2442, %2443
  %2445 = add nsw i32 %2441, %2444
  store i32 %2445, ptr %15, align 4, !tbaa !9
  %2446 = load ptr, ptr %9, align 8, !tbaa !5
  %2447 = load i32, ptr %53, align 4, !tbaa !9
  %2448 = load i32, ptr %52, align 4, !tbaa !9
  %2449 = load i32, ptr %13, align 4, !tbaa !9
  %2450 = mul nsw i32 %2448, %2449
  %2451 = add nsw i32 %2447, %2450
  %2452 = sext i32 %2451 to i64
  %2453 = getelementptr inbounds %struct.doublecomplex, ptr %2446, i64 %2452
  %2454 = call { double, double } @Cd(ptr noundef %2453)
  %2455 = extractvalue { double, double } %2454, 0
  %2456 = extractvalue { double, double } %2454, 1
  %2457 = fneg double %2456
  %2458 = call ptr @_pCd(ptr noundef %23)
  %2459 = getelementptr inbounds { double, double }, ptr %2458, i32 0, i32 0
  %2460 = getelementptr inbounds { double, double }, ptr %2458, i32 0, i32 1
  store double %2455, ptr %2459, align 8
  store double %2457, ptr %2460, align 8
  %2461 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  %2462 = load double, ptr %2461, align 8, !tbaa !13
  %2463 = load ptr, ptr %9, align 8, !tbaa !5
  %2464 = load i32, ptr %15, align 4, !tbaa !9
  %2465 = sext i32 %2464 to i64
  %2466 = getelementptr inbounds %struct.doublecomplex, ptr %2463, i64 %2465
  %2467 = getelementptr inbounds %struct.doublecomplex, ptr %2466, i32 0, i32 0
  store double %2462, ptr %2467, align 8, !tbaa !13
  %2468 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  %2469 = load double, ptr %2468, align 8, !tbaa !15
  %2470 = load ptr, ptr %9, align 8, !tbaa !5
  %2471 = load i32, ptr %15, align 4, !tbaa !9
  %2472 = sext i32 %2471 to i64
  %2473 = getelementptr inbounds %struct.doublecomplex, ptr %2470, i64 %2472
  %2474 = getelementptr inbounds %struct.doublecomplex, ptr %2473, i32 0, i32 1
  store double %2469, ptr %2474, align 8, !tbaa !15
  %2475 = load i32, ptr %52, align 4, !tbaa !9
  %2476 = load i32, ptr %52, align 4, !tbaa !9
  %2477 = load i32, ptr %13, align 4, !tbaa !9
  %2478 = mul nsw i32 %2476, %2477
  %2479 = add nsw i32 %2475, %2478
  store i32 %2479, ptr %15, align 4, !tbaa !9
  %2480 = load ptr, ptr %9, align 8, !tbaa !5
  %2481 = load i32, ptr %15, align 4, !tbaa !9
  %2482 = sext i32 %2481 to i64
  %2483 = getelementptr inbounds %struct.doublecomplex, ptr %2480, i64 %2482
  %2484 = getelementptr inbounds %struct.doublecomplex, ptr %2483, i32 0, i32 0
  %2485 = load double, ptr %2484, align 8, !tbaa !13
  store double %2485, ptr %46, align 8, !tbaa !11
  %2486 = load i32, ptr %52, align 4, !tbaa !9
  %2487 = load i32, ptr %52, align 4, !tbaa !9
  %2488 = load i32, ptr %13, align 4, !tbaa !9
  %2489 = mul nsw i32 %2487, %2488
  %2490 = add nsw i32 %2486, %2489
  store i32 %2490, ptr %15, align 4, !tbaa !9
  %2491 = load i32, ptr %53, align 4, !tbaa !9
  %2492 = load i32, ptr %53, align 4, !tbaa !9
  %2493 = load i32, ptr %13, align 4, !tbaa !9
  %2494 = mul nsw i32 %2492, %2493
  %2495 = add nsw i32 %2491, %2494
  store i32 %2495, ptr %16, align 4, !tbaa !9
  %2496 = load ptr, ptr %9, align 8, !tbaa !5
  %2497 = load i32, ptr %16, align 4, !tbaa !9
  %2498 = sext i32 %2497 to i64
  %2499 = getelementptr inbounds %struct.doublecomplex, ptr %2496, i64 %2498
  %2500 = getelementptr inbounds %struct.doublecomplex, ptr %2499, i32 0, i32 0
  %2501 = load double, ptr %2500, align 8, !tbaa !13
  store double %2501, ptr %21, align 8, !tbaa !11
  %2502 = load double, ptr %21, align 8, !tbaa !11
  %2503 = load ptr, ptr %9, align 8, !tbaa !5
  %2504 = load i32, ptr %15, align 4, !tbaa !9
  %2505 = sext i32 %2504 to i64
  %2506 = getelementptr inbounds %struct.doublecomplex, ptr %2503, i64 %2505
  %2507 = getelementptr inbounds %struct.doublecomplex, ptr %2506, i32 0, i32 0
  store double %2502, ptr %2507, align 8, !tbaa !13
  %2508 = load ptr, ptr %9, align 8, !tbaa !5
  %2509 = load i32, ptr %15, align 4, !tbaa !9
  %2510 = sext i32 %2509 to i64
  %2511 = getelementptr inbounds %struct.doublecomplex, ptr %2508, i64 %2510
  %2512 = getelementptr inbounds %struct.doublecomplex, ptr %2511, i32 0, i32 1
  store double 0.000000e+00, ptr %2512, align 8, !tbaa !15
  %2513 = load i32, ptr %53, align 4, !tbaa !9
  %2514 = load i32, ptr %53, align 4, !tbaa !9
  %2515 = load i32, ptr %13, align 4, !tbaa !9
  %2516 = mul nsw i32 %2514, %2515
  %2517 = add nsw i32 %2513, %2516
  store i32 %2517, ptr %15, align 4, !tbaa !9
  %2518 = load double, ptr %46, align 8, !tbaa !11
  %2519 = load ptr, ptr %9, align 8, !tbaa !5
  %2520 = load i32, ptr %15, align 4, !tbaa !9
  %2521 = sext i32 %2520 to i64
  %2522 = getelementptr inbounds %struct.doublecomplex, ptr %2519, i64 %2521
  %2523 = getelementptr inbounds %struct.doublecomplex, ptr %2522, i32 0, i32 0
  store double %2518, ptr %2523, align 8, !tbaa !13
  %2524 = load ptr, ptr %9, align 8, !tbaa !5
  %2525 = load i32, ptr %15, align 4, !tbaa !9
  %2526 = sext i32 %2525 to i64
  %2527 = getelementptr inbounds %struct.doublecomplex, ptr %2524, i64 %2526
  %2528 = getelementptr inbounds %struct.doublecomplex, ptr %2527, i32 0, i32 1
  store double 0.000000e+00, ptr %2528, align 8, !tbaa !15
  %2529 = load i32, ptr %44, align 4, !tbaa !9
  %2530 = icmp eq i32 %2529, 2
  br i1 %2530, label %2531, label %2631

2531:                                             ; preds = %2440
  %2532 = load i32, ptr %37, align 4, !tbaa !9
  %2533 = load i32, ptr %37, align 4, !tbaa !9
  %2534 = load i32, ptr %13, align 4, !tbaa !9
  %2535 = mul nsw i32 %2533, %2534
  %2536 = add nsw i32 %2532, %2535
  store i32 %2536, ptr %15, align 4, !tbaa !9
  %2537 = load i32, ptr %37, align 4, !tbaa !9
  %2538 = load i32, ptr %37, align 4, !tbaa !9
  %2539 = load i32, ptr %13, align 4, !tbaa !9
  %2540 = mul nsw i32 %2538, %2539
  %2541 = add nsw i32 %2537, %2540
  store i32 %2541, ptr %16, align 4, !tbaa !9
  %2542 = load ptr, ptr %9, align 8, !tbaa !5
  %2543 = load i32, ptr %16, align 4, !tbaa !9
  %2544 = sext i32 %2543 to i64
  %2545 = getelementptr inbounds %struct.doublecomplex, ptr %2542, i64 %2544
  %2546 = getelementptr inbounds %struct.doublecomplex, ptr %2545, i32 0, i32 0
  %2547 = load double, ptr %2546, align 8, !tbaa !13
  store double %2547, ptr %21, align 8, !tbaa !11
  %2548 = load double, ptr %21, align 8, !tbaa !11
  %2549 = load ptr, ptr %9, align 8, !tbaa !5
  %2550 = load i32, ptr %15, align 4, !tbaa !9
  %2551 = sext i32 %2550 to i64
  %2552 = getelementptr inbounds %struct.doublecomplex, ptr %2549, i64 %2551
  %2553 = getelementptr inbounds %struct.doublecomplex, ptr %2552, i32 0, i32 0
  store double %2548, ptr %2553, align 8, !tbaa !13
  %2554 = load ptr, ptr %9, align 8, !tbaa !5
  %2555 = load i32, ptr %15, align 4, !tbaa !9
  %2556 = sext i32 %2555 to i64
  %2557 = getelementptr inbounds %struct.doublecomplex, ptr %2554, i64 %2556
  %2558 = getelementptr inbounds %struct.doublecomplex, ptr %2557, i32 0, i32 1
  store double 0.000000e+00, ptr %2558, align 8, !tbaa !15
  %2559 = load i32, ptr %37, align 4, !tbaa !9
  %2560 = add nsw i32 %2559, 1
  %2561 = load i32, ptr %37, align 4, !tbaa !9
  %2562 = load i32, ptr %13, align 4, !tbaa !9
  %2563 = mul nsw i32 %2561, %2562
  %2564 = add nsw i32 %2560, %2563
  store i32 %2564, ptr %15, align 4, !tbaa !9
  %2565 = load ptr, ptr %9, align 8, !tbaa !5
  %2566 = load i32, ptr %15, align 4, !tbaa !9
  %2567 = sext i32 %2566 to i64
  %2568 = getelementptr inbounds %struct.doublecomplex, ptr %2565, i64 %2567
  %2569 = getelementptr inbounds %struct.doublecomplex, ptr %2568, i32 0, i32 0
  %2570 = load double, ptr %2569, align 8, !tbaa !13
  %2571 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  store double %2570, ptr %2571, align 8, !tbaa !13
  %2572 = load ptr, ptr %9, align 8, !tbaa !5
  %2573 = load i32, ptr %15, align 4, !tbaa !9
  %2574 = sext i32 %2573 to i64
  %2575 = getelementptr inbounds %struct.doublecomplex, ptr %2572, i64 %2574
  %2576 = getelementptr inbounds %struct.doublecomplex, ptr %2575, i32 0, i32 1
  %2577 = load double, ptr %2576, align 8, !tbaa !15
  %2578 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  store double %2577, ptr %2578, align 8, !tbaa !15
  %2579 = load i32, ptr %37, align 4, !tbaa !9
  %2580 = add nsw i32 %2579, 1
  %2581 = load i32, ptr %37, align 4, !tbaa !9
  %2582 = load i32, ptr %13, align 4, !tbaa !9
  %2583 = mul nsw i32 %2581, %2582
  %2584 = add nsw i32 %2580, %2583
  store i32 %2584, ptr %15, align 4, !tbaa !9
  %2585 = load i32, ptr %53, align 4, !tbaa !9
  %2586 = load i32, ptr %37, align 4, !tbaa !9
  %2587 = load i32, ptr %13, align 4, !tbaa !9
  %2588 = mul nsw i32 %2586, %2587
  %2589 = add nsw i32 %2585, %2588
  store i32 %2589, ptr %16, align 4, !tbaa !9
  %2590 = load ptr, ptr %9, align 8, !tbaa !5
  %2591 = load i32, ptr %16, align 4, !tbaa !9
  %2592 = sext i32 %2591 to i64
  %2593 = getelementptr inbounds %struct.doublecomplex, ptr %2590, i64 %2592
  %2594 = getelementptr inbounds %struct.doublecomplex, ptr %2593, i32 0, i32 0
  %2595 = load double, ptr %2594, align 8, !tbaa !13
  %2596 = load ptr, ptr %9, align 8, !tbaa !5
  %2597 = load i32, ptr %15, align 4, !tbaa !9
  %2598 = sext i32 %2597 to i64
  %2599 = getelementptr inbounds %struct.doublecomplex, ptr %2596, i64 %2598
  %2600 = getelementptr inbounds %struct.doublecomplex, ptr %2599, i32 0, i32 0
  store double %2595, ptr %2600, align 8, !tbaa !13
  %2601 = load ptr, ptr %9, align 8, !tbaa !5
  %2602 = load i32, ptr %16, align 4, !tbaa !9
  %2603 = sext i32 %2602 to i64
  %2604 = getelementptr inbounds %struct.doublecomplex, ptr %2601, i64 %2603
  %2605 = getelementptr inbounds %struct.doublecomplex, ptr %2604, i32 0, i32 1
  %2606 = load double, ptr %2605, align 8, !tbaa !15
  %2607 = load ptr, ptr %9, align 8, !tbaa !5
  %2608 = load i32, ptr %15, align 4, !tbaa !9
  %2609 = sext i32 %2608 to i64
  %2610 = getelementptr inbounds %struct.doublecomplex, ptr %2607, i64 %2609
  %2611 = getelementptr inbounds %struct.doublecomplex, ptr %2610, i32 0, i32 1
  store double %2606, ptr %2611, align 8, !tbaa !15
  %2612 = load i32, ptr %53, align 4, !tbaa !9
  %2613 = load i32, ptr %37, align 4, !tbaa !9
  %2614 = load i32, ptr %13, align 4, !tbaa !9
  %2615 = mul nsw i32 %2613, %2614
  %2616 = add nsw i32 %2612, %2615
  store i32 %2616, ptr %15, align 4, !tbaa !9
  %2617 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  %2618 = load double, ptr %2617, align 8, !tbaa !13
  %2619 = load ptr, ptr %9, align 8, !tbaa !5
  %2620 = load i32, ptr %15, align 4, !tbaa !9
  %2621 = sext i32 %2620 to i64
  %2622 = getelementptr inbounds %struct.doublecomplex, ptr %2619, i64 %2621
  %2623 = getelementptr inbounds %struct.doublecomplex, ptr %2622, i32 0, i32 0
  store double %2618, ptr %2623, align 8, !tbaa !13
  %2624 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  %2625 = load double, ptr %2624, align 8, !tbaa !15
  %2626 = load ptr, ptr %9, align 8, !tbaa !5
  %2627 = load i32, ptr %15, align 4, !tbaa !9
  %2628 = sext i32 %2627 to i64
  %2629 = getelementptr inbounds %struct.doublecomplex, ptr %2626, i64 %2628
  %2630 = getelementptr inbounds %struct.doublecomplex, ptr %2629, i32 0, i32 1
  store double %2625, ptr %2630, align 8, !tbaa !15
  br label %2631

2631:                                             ; preds = %2531, %2440
  br label %2695

2632:                                             ; preds = %2321
  %2633 = load i32, ptr %37, align 4, !tbaa !9
  %2634 = load i32, ptr %37, align 4, !tbaa !9
  %2635 = load i32, ptr %13, align 4, !tbaa !9
  %2636 = mul nsw i32 %2634, %2635
  %2637 = add nsw i32 %2633, %2636
  store i32 %2637, ptr %15, align 4, !tbaa !9
  %2638 = load i32, ptr %37, align 4, !tbaa !9
  %2639 = load i32, ptr %37, align 4, !tbaa !9
  %2640 = load i32, ptr %13, align 4, !tbaa !9
  %2641 = mul nsw i32 %2639, %2640
  %2642 = add nsw i32 %2638, %2641
  store i32 %2642, ptr %16, align 4, !tbaa !9
  %2643 = load ptr, ptr %9, align 8, !tbaa !5
  %2644 = load i32, ptr %16, align 4, !tbaa !9
  %2645 = sext i32 %2644 to i64
  %2646 = getelementptr inbounds %struct.doublecomplex, ptr %2643, i64 %2645
  %2647 = getelementptr inbounds %struct.doublecomplex, ptr %2646, i32 0, i32 0
  %2648 = load double, ptr %2647, align 8, !tbaa !13
  store double %2648, ptr %21, align 8, !tbaa !11
  %2649 = load double, ptr %21, align 8, !tbaa !11
  %2650 = load ptr, ptr %9, align 8, !tbaa !5
  %2651 = load i32, ptr %15, align 4, !tbaa !9
  %2652 = sext i32 %2651 to i64
  %2653 = getelementptr inbounds %struct.doublecomplex, ptr %2650, i64 %2652
  %2654 = getelementptr inbounds %struct.doublecomplex, ptr %2653, i32 0, i32 0
  store double %2649, ptr %2654, align 8, !tbaa !13
  %2655 = load ptr, ptr %9, align 8, !tbaa !5
  %2656 = load i32, ptr %15, align 4, !tbaa !9
  %2657 = sext i32 %2656 to i64
  %2658 = getelementptr inbounds %struct.doublecomplex, ptr %2655, i64 %2657
  %2659 = getelementptr inbounds %struct.doublecomplex, ptr %2658, i32 0, i32 1
  store double 0.000000e+00, ptr %2659, align 8, !tbaa !15
  %2660 = load i32, ptr %44, align 4, !tbaa !9
  %2661 = icmp eq i32 %2660, 2
  br i1 %2661, label %2662, label %2694

2662:                                             ; preds = %2632
  %2663 = load i32, ptr %37, align 4, !tbaa !9
  %2664 = add nsw i32 %2663, 1
  %2665 = load i32, ptr %37, align 4, !tbaa !9
  %2666 = add nsw i32 %2665, 1
  %2667 = load i32, ptr %13, align 4, !tbaa !9
  %2668 = mul nsw i32 %2666, %2667
  %2669 = add nsw i32 %2664, %2668
  store i32 %2669, ptr %15, align 4, !tbaa !9
  %2670 = load i32, ptr %37, align 4, !tbaa !9
  %2671 = add nsw i32 %2670, 1
  %2672 = load i32, ptr %37, align 4, !tbaa !9
  %2673 = add nsw i32 %2672, 1
  %2674 = load i32, ptr %13, align 4, !tbaa !9
  %2675 = mul nsw i32 %2673, %2674
  %2676 = add nsw i32 %2671, %2675
  store i32 %2676, ptr %16, align 4, !tbaa !9
  %2677 = load ptr, ptr %9, align 8, !tbaa !5
  %2678 = load i32, ptr %16, align 4, !tbaa !9
  %2679 = sext i32 %2678 to i64
  %2680 = getelementptr inbounds %struct.doublecomplex, ptr %2677, i64 %2679
  %2681 = getelementptr inbounds %struct.doublecomplex, ptr %2680, i32 0, i32 0
  %2682 = load double, ptr %2681, align 8, !tbaa !13
  store double %2682, ptr %21, align 8, !tbaa !11
  %2683 = load double, ptr %21, align 8, !tbaa !11
  %2684 = load ptr, ptr %9, align 8, !tbaa !5
  %2685 = load i32, ptr %15, align 4, !tbaa !9
  %2686 = sext i32 %2685 to i64
  %2687 = getelementptr inbounds %struct.doublecomplex, ptr %2684, i64 %2686
  %2688 = getelementptr inbounds %struct.doublecomplex, ptr %2687, i32 0, i32 0
  store double %2683, ptr %2688, align 8, !tbaa !13
  %2689 = load ptr, ptr %9, align 8, !tbaa !5
  %2690 = load i32, ptr %15, align 4, !tbaa !9
  %2691 = sext i32 %2690 to i64
  %2692 = getelementptr inbounds %struct.doublecomplex, ptr %2689, i64 %2691
  %2693 = getelementptr inbounds %struct.doublecomplex, ptr %2692, i32 0, i32 1
  store double 0.000000e+00, ptr %2693, align 8, !tbaa !15
  br label %2694

2694:                                             ; preds = %2662, %2632
  br label %2695

2695:                                             ; preds = %2694, %2631
  %2696 = load i32, ptr %44, align 4, !tbaa !9
  %2697 = icmp eq i32 %2696, 1
  br i1 %2697, label %2698, label %2875

2698:                                             ; preds = %2695
  %2699 = load i32, ptr %37, align 4, !tbaa !9
  %2700 = load ptr, ptr %8, align 8, !tbaa !5
  %2701 = load i32, ptr %2700, align 4, !tbaa !9
  %2702 = icmp slt i32 %2699, %2701
  br i1 %2702, label %2703, label %2874

2703:                                             ; preds = %2698
  %2704 = load i32, ptr %37, align 4, !tbaa !9
  %2705 = load i32, ptr %37, align 4, !tbaa !9
  %2706 = load i32, ptr %13, align 4, !tbaa !9
  %2707 = mul nsw i32 %2705, %2706
  %2708 = add nsw i32 %2704, %2707
  store i32 %2708, ptr %15, align 4, !tbaa !9
  %2709 = load ptr, ptr %9, align 8, !tbaa !5
  %2710 = load i32, ptr %15, align 4, !tbaa !9
  %2711 = sext i32 %2710 to i64
  %2712 = getelementptr inbounds %struct.doublecomplex, ptr %2709, i64 %2711
  %2713 = getelementptr inbounds %struct.doublecomplex, ptr %2712, i32 0, i32 0
  %2714 = load double, ptr %2713, align 8, !tbaa !13
  store double %2714, ptr %21, align 8, !tbaa !11
  %2715 = load double, ptr %21, align 8, !tbaa !11
  %2716 = fcmp oge double %2715, 0.000000e+00
  br i1 %2716, label %2717, label %2719

2717:                                             ; preds = %2703
  %2718 = load double, ptr %21, align 8, !tbaa !11
  br label %2722

2719:                                             ; preds = %2703
  %2720 = load double, ptr %21, align 8, !tbaa !11
  %2721 = fneg double %2720
  br label %2722

2722:                                             ; preds = %2719, %2717
  %2723 = phi double [ %2718, %2717 ], [ %2721, %2719 ]
  %2724 = load double, ptr %42, align 8, !tbaa !11
  %2725 = fcmp oge double %2723, %2724
  br i1 %2725, label %2726, label %2779

2726:                                             ; preds = %2722
  %2727 = load i32, ptr %37, align 4, !tbaa !9
  %2728 = load i32, ptr %37, align 4, !tbaa !9
  %2729 = load i32, ptr %13, align 4, !tbaa !9
  %2730 = mul nsw i32 %2728, %2729
  %2731 = add nsw i32 %2727, %2730
  store i32 %2731, ptr %15, align 4, !tbaa !9
  %2732 = load ptr, ptr %9, align 8, !tbaa !5
  %2733 = load i32, ptr %15, align 4, !tbaa !9
  %2734 = sext i32 %2733 to i64
  %2735 = getelementptr inbounds %struct.doublecomplex, ptr %2732, i64 %2734
  %2736 = getelementptr inbounds %struct.doublecomplex, ptr %2735, i32 0, i32 0
  %2737 = load double, ptr %2736, align 8, !tbaa !13
  %2738 = fdiv double 1.000000e+00, %2737
  store double %2738, ptr %47, align 8, !tbaa !11
  %2739 = load ptr, ptr %8, align 8, !tbaa !5
  %2740 = load i32, ptr %2739, align 4, !tbaa !9
  %2741 = load i32, ptr %37, align 4, !tbaa !9
  %2742 = sub nsw i32 %2740, %2741
  store i32 %2742, ptr %15, align 4, !tbaa !9
  %2743 = load double, ptr %47, align 8, !tbaa !11
  %2744 = fneg double %2743
  store double %2744, ptr %21, align 8, !tbaa !11
  %2745 = load ptr, ptr %7, align 8, !tbaa !5
  %2746 = load ptr, ptr %9, align 8, !tbaa !5
  %2747 = load i32, ptr %37, align 4, !tbaa !9
  %2748 = add nsw i32 %2747, 1
  %2749 = load i32, ptr %37, align 4, !tbaa !9
  %2750 = load i32, ptr %13, align 4, !tbaa !9
  %2751 = mul nsw i32 %2749, %2750
  %2752 = add nsw i32 %2748, %2751
  %2753 = sext i32 %2752 to i64
  %2754 = getelementptr inbounds %struct.doublecomplex, ptr %2746, i64 %2753
  %2755 = load ptr, ptr %9, align 8, !tbaa !5
  %2756 = load i32, ptr %37, align 4, !tbaa !9
  %2757 = add nsw i32 %2756, 1
  %2758 = load i32, ptr %37, align 4, !tbaa !9
  %2759 = add nsw i32 %2758, 1
  %2760 = load i32, ptr %13, align 4, !tbaa !9
  %2761 = mul nsw i32 %2759, %2760
  %2762 = add nsw i32 %2757, %2761
  %2763 = sext i32 %2762 to i64
  %2764 = getelementptr inbounds %struct.doublecomplex, ptr %2755, i64 %2763
  %2765 = load ptr, ptr %10, align 8, !tbaa !5
  call void @zher_(ptr noundef %2745, ptr noundef %15, ptr noundef %21, ptr noundef %2754, ptr noundef @c__1, ptr noundef %2764, ptr noundef %2765)
  %2766 = load ptr, ptr %8, align 8, !tbaa !5
  %2767 = load i32, ptr %2766, align 4, !tbaa !9
  %2768 = load i32, ptr %37, align 4, !tbaa !9
  %2769 = sub nsw i32 %2767, %2768
  store i32 %2769, ptr %15, align 4, !tbaa !9
  %2770 = load ptr, ptr %9, align 8, !tbaa !5
  %2771 = load i32, ptr %37, align 4, !tbaa !9
  %2772 = add nsw i32 %2771, 1
  %2773 = load i32, ptr %37, align 4, !tbaa !9
  %2774 = load i32, ptr %13, align 4, !tbaa !9
  %2775 = mul nsw i32 %2773, %2774
  %2776 = add nsw i32 %2772, %2775
  %2777 = sext i32 %2776 to i64
  %2778 = getelementptr inbounds %struct.doublecomplex, ptr %2770, i64 %2777
  call void @zdscal_(ptr noundef %15, ptr noundef %47, ptr noundef %2778, ptr noundef @c__1)
  br label %2873

2779:                                             ; preds = %2722
  %2780 = load i32, ptr %37, align 4, !tbaa !9
  %2781 = load i32, ptr %37, align 4, !tbaa !9
  %2782 = load i32, ptr %13, align 4, !tbaa !9
  %2783 = mul nsw i32 %2781, %2782
  %2784 = add nsw i32 %2780, %2783
  store i32 %2784, ptr %15, align 4, !tbaa !9
  %2785 = load ptr, ptr %9, align 8, !tbaa !5
  %2786 = load i32, ptr %15, align 4, !tbaa !9
  %2787 = sext i32 %2786 to i64
  %2788 = getelementptr inbounds %struct.doublecomplex, ptr %2785, i64 %2787
  %2789 = getelementptr inbounds %struct.doublecomplex, ptr %2788, i32 0, i32 0
  %2790 = load double, ptr %2789, align 8, !tbaa !13
  store double %2790, ptr %47, align 8, !tbaa !11
  %2791 = load ptr, ptr %8, align 8, !tbaa !5
  %2792 = load i32, ptr %2791, align 4, !tbaa !9
  store i32 %2792, ptr %15, align 4, !tbaa !9
  %2793 = load i32, ptr %37, align 4, !tbaa !9
  %2794 = add nsw i32 %2793, 1
  store i32 %2794, ptr %51, align 4, !tbaa !9
  br label %2795

2795:                                             ; preds = %2842, %2779
  %2796 = load i32, ptr %51, align 4, !tbaa !9
  %2797 = load i32, ptr %15, align 4, !tbaa !9
  %2798 = icmp sle i32 %2796, %2797
  br i1 %2798, label %2799, label %2845

2799:                                             ; preds = %2795
  %2800 = load i32, ptr %51, align 4, !tbaa !9
  %2801 = load i32, ptr %37, align 4, !tbaa !9
  %2802 = load i32, ptr %13, align 4, !tbaa !9
  %2803 = mul nsw i32 %2801, %2802
  %2804 = add nsw i32 %2800, %2803
  store i32 %2804, ptr %16, align 4, !tbaa !9
  %2805 = load i32, ptr %51, align 4, !tbaa !9
  %2806 = load i32, ptr %37, align 4, !tbaa !9
  %2807 = load i32, ptr %13, align 4, !tbaa !9
  %2808 = mul nsw i32 %2806, %2807
  %2809 = add nsw i32 %2805, %2808
  store i32 %2809, ptr %17, align 4, !tbaa !9
  %2810 = load ptr, ptr %9, align 8, !tbaa !5
  %2811 = load i32, ptr %17, align 4, !tbaa !9
  %2812 = sext i32 %2811 to i64
  %2813 = getelementptr inbounds %struct.doublecomplex, ptr %2810, i64 %2812
  %2814 = getelementptr inbounds %struct.doublecomplex, ptr %2813, i32 0, i32 0
  %2815 = load double, ptr %2814, align 8, !tbaa !13
  %2816 = load double, ptr %47, align 8, !tbaa !11
  %2817 = fdiv double %2815, %2816
  %2818 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  store double %2817, ptr %2818, align 8, !tbaa !13
  %2819 = load ptr, ptr %9, align 8, !tbaa !5
  %2820 = load i32, ptr %17, align 4, !tbaa !9
  %2821 = sext i32 %2820 to i64
  %2822 = getelementptr inbounds %struct.doublecomplex, ptr %2819, i64 %2821
  %2823 = getelementptr inbounds %struct.doublecomplex, ptr %2822, i32 0, i32 1
  %2824 = load double, ptr %2823, align 8, !tbaa !15
  %2825 = load double, ptr %47, align 8, !tbaa !11
  %2826 = fdiv double %2824, %2825
  %2827 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  store double %2826, ptr %2827, align 8, !tbaa !15
  %2828 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  %2829 = load double, ptr %2828, align 8, !tbaa !13
  %2830 = load ptr, ptr %9, align 8, !tbaa !5
  %2831 = load i32, ptr %16, align 4, !tbaa !9
  %2832 = sext i32 %2831 to i64
  %2833 = getelementptr inbounds %struct.doublecomplex, ptr %2830, i64 %2832
  %2834 = getelementptr inbounds %struct.doublecomplex, ptr %2833, i32 0, i32 0
  store double %2829, ptr %2834, align 8, !tbaa !13
  %2835 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  %2836 = load double, ptr %2835, align 8, !tbaa !15
  %2837 = load ptr, ptr %9, align 8, !tbaa !5
  %2838 = load i32, ptr %16, align 4, !tbaa !9
  %2839 = sext i32 %2838 to i64
  %2840 = getelementptr inbounds %struct.doublecomplex, ptr %2837, i64 %2839
  %2841 = getelementptr inbounds %struct.doublecomplex, ptr %2840, i32 0, i32 1
  store double %2836, ptr %2841, align 8, !tbaa !15
  br label %2842

2842:                                             ; preds = %2799
  %2843 = load i32, ptr %51, align 4, !tbaa !9
  %2844 = add nsw i32 %2843, 1
  store i32 %2844, ptr %51, align 4, !tbaa !9
  br label %2795, !llvm.loop !24

2845:                                             ; preds = %2795
  %2846 = load ptr, ptr %8, align 8, !tbaa !5
  %2847 = load i32, ptr %2846, align 4, !tbaa !9
  %2848 = load i32, ptr %37, align 4, !tbaa !9
  %2849 = sub nsw i32 %2847, %2848
  store i32 %2849, ptr %15, align 4, !tbaa !9
  %2850 = load double, ptr %47, align 8, !tbaa !11
  %2851 = fneg double %2850
  store double %2851, ptr %21, align 8, !tbaa !11
  %2852 = load ptr, ptr %7, align 8, !tbaa !5
  %2853 = load ptr, ptr %9, align 8, !tbaa !5
  %2854 = load i32, ptr %37, align 4, !tbaa !9
  %2855 = add nsw i32 %2854, 1
  %2856 = load i32, ptr %37, align 4, !tbaa !9
  %2857 = load i32, ptr %13, align 4, !tbaa !9
  %2858 = mul nsw i32 %2856, %2857
  %2859 = add nsw i32 %2855, %2858
  %2860 = sext i32 %2859 to i64
  %2861 = getelementptr inbounds %struct.doublecomplex, ptr %2853, i64 %2860
  %2862 = load ptr, ptr %9, align 8, !tbaa !5
  %2863 = load i32, ptr %37, align 4, !tbaa !9
  %2864 = add nsw i32 %2863, 1
  %2865 = load i32, ptr %37, align 4, !tbaa !9
  %2866 = add nsw i32 %2865, 1
  %2867 = load i32, ptr %13, align 4, !tbaa !9
  %2868 = mul nsw i32 %2866, %2867
  %2869 = add nsw i32 %2864, %2868
  %2870 = sext i32 %2869 to i64
  %2871 = getelementptr inbounds %struct.doublecomplex, ptr %2862, i64 %2870
  %2872 = load ptr, ptr %10, align 8, !tbaa !5
  call void @zher_(ptr noundef %2852, ptr noundef %15, ptr noundef %21, ptr noundef %2861, ptr noundef @c__1, ptr noundef %2871, ptr noundef %2872)
  br label %2873

2873:                                             ; preds = %2845, %2726
  br label %2874

2874:                                             ; preds = %2873, %2698
  br label %3449

2875:                                             ; preds = %2695
  %2876 = load i32, ptr %37, align 4, !tbaa !9
  %2877 = load ptr, ptr %8, align 8, !tbaa !5
  %2878 = load i32, ptr %2877, align 4, !tbaa !9
  %2879 = sub nsw i32 %2878, 1
  %2880 = icmp slt i32 %2876, %2879
  br i1 %2880, label %2881, label %3448

2881:                                             ; preds = %2875
  %2882 = load i32, ptr %37, align 4, !tbaa !9
  %2883 = add nsw i32 %2882, 1
  %2884 = load i32, ptr %37, align 4, !tbaa !9
  %2885 = load i32, ptr %13, align 4, !tbaa !9
  %2886 = mul nsw i32 %2884, %2885
  %2887 = add nsw i32 %2883, %2886
  store i32 %2887, ptr %15, align 4, !tbaa !9
  %2888 = load ptr, ptr %9, align 8, !tbaa !5
  %2889 = load i32, ptr %15, align 4, !tbaa !9
  %2890 = sext i32 %2889 to i64
  %2891 = getelementptr inbounds %struct.doublecomplex, ptr %2888, i64 %2890
  %2892 = getelementptr inbounds %struct.doublecomplex, ptr %2891, i32 0, i32 0
  %2893 = load double, ptr %2892, align 8, !tbaa !13
  store double %2893, ptr %21, align 8, !tbaa !11
  %2894 = load ptr, ptr %9, align 8, !tbaa !5
  %2895 = load i32, ptr %37, align 4, !tbaa !9
  %2896 = add nsw i32 %2895, 1
  %2897 = load i32, ptr %37, align 4, !tbaa !9
  %2898 = load i32, ptr %13, align 4, !tbaa !9
  %2899 = mul nsw i32 %2897, %2898
  %2900 = add nsw i32 %2896, %2899
  %2901 = sext i32 %2900 to i64
  %2902 = getelementptr inbounds %struct.doublecomplex, ptr %2894, i64 %2901
  %2903 = call { double, double } @Cd(ptr noundef %2902)
  %2904 = extractvalue { double, double } %2903, 0
  %2905 = extractvalue { double, double } %2903, 1
  store double %2905, ptr %22, align 8, !tbaa !11
  %2906 = call double @dlapy2_(ptr noundef %21, ptr noundef %22)
  store double %2906, ptr %34, align 8, !tbaa !11
  %2907 = load i32, ptr %37, align 4, !tbaa !9
  %2908 = add nsw i32 %2907, 1
  %2909 = load i32, ptr %37, align 4, !tbaa !9
  %2910 = add nsw i32 %2909, 1
  %2911 = load i32, ptr %13, align 4, !tbaa !9
  %2912 = mul nsw i32 %2910, %2911
  %2913 = add nsw i32 %2908, %2912
  store i32 %2913, ptr %15, align 4, !tbaa !9
  %2914 = load ptr, ptr %9, align 8, !tbaa !5
  %2915 = load i32, ptr %15, align 4, !tbaa !9
  %2916 = sext i32 %2915 to i64
  %2917 = getelementptr inbounds %struct.doublecomplex, ptr %2914, i64 %2916
  %2918 = getelementptr inbounds %struct.doublecomplex, ptr %2917, i32 0, i32 0
  %2919 = load double, ptr %2918, align 8, !tbaa !13
  %2920 = load double, ptr %34, align 8, !tbaa !11
  %2921 = fdiv double %2919, %2920
  store double %2921, ptr %47, align 8, !tbaa !11
  %2922 = load i32, ptr %37, align 4, !tbaa !9
  %2923 = load i32, ptr %37, align 4, !tbaa !9
  %2924 = load i32, ptr %13, align 4, !tbaa !9
  %2925 = mul nsw i32 %2923, %2924
  %2926 = add nsw i32 %2922, %2925
  store i32 %2926, ptr %15, align 4, !tbaa !9
  %2927 = load ptr, ptr %9, align 8, !tbaa !5
  %2928 = load i32, ptr %15, align 4, !tbaa !9
  %2929 = sext i32 %2928 to i64
  %2930 = getelementptr inbounds %struct.doublecomplex, ptr %2927, i64 %2929
  %2931 = getelementptr inbounds %struct.doublecomplex, ptr %2930, i32 0, i32 0
  %2932 = load double, ptr %2931, align 8, !tbaa !13
  %2933 = load double, ptr %34, align 8, !tbaa !11
  %2934 = fdiv double %2932, %2933
  store double %2934, ptr %49, align 8, !tbaa !11
  %2935 = load i32, ptr %37, align 4, !tbaa !9
  %2936 = add nsw i32 %2935, 1
  %2937 = load i32, ptr %37, align 4, !tbaa !9
  %2938 = load i32, ptr %13, align 4, !tbaa !9
  %2939 = mul nsw i32 %2937, %2938
  %2940 = add nsw i32 %2936, %2939
  store i32 %2940, ptr %15, align 4, !tbaa !9
  %2941 = load ptr, ptr %9, align 8, !tbaa !5
  %2942 = load i32, ptr %15, align 4, !tbaa !9
  %2943 = sext i32 %2942 to i64
  %2944 = getelementptr inbounds %struct.doublecomplex, ptr %2941, i64 %2943
  %2945 = getelementptr inbounds %struct.doublecomplex, ptr %2944, i32 0, i32 0
  %2946 = load double, ptr %2945, align 8, !tbaa !13
  %2947 = load double, ptr %34, align 8, !tbaa !11
  %2948 = fdiv double %2946, %2947
  %2949 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  store double %2948, ptr %2949, align 8, !tbaa !13
  %2950 = load ptr, ptr %9, align 8, !tbaa !5
  %2951 = load i32, ptr %15, align 4, !tbaa !9
  %2952 = sext i32 %2951 to i64
  %2953 = getelementptr inbounds %struct.doublecomplex, ptr %2950, i64 %2952
  %2954 = getelementptr inbounds %struct.doublecomplex, ptr %2953, i32 0, i32 1
  %2955 = load double, ptr %2954, align 8, !tbaa !15
  %2956 = load double, ptr %34, align 8, !tbaa !11
  %2957 = fdiv double %2955, %2956
  %2958 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  store double %2957, ptr %2958, align 8, !tbaa !15
  %2959 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  %2960 = load double, ptr %2959, align 8, !tbaa !13
  %2961 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  store double %2960, ptr %2961, align 8, !tbaa !13
  %2962 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  %2963 = load double, ptr %2962, align 8, !tbaa !15
  %2964 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  store double %2963, ptr %2964, align 8, !tbaa !15
  %2965 = load double, ptr %47, align 8, !tbaa !11
  %2966 = load double, ptr %49, align 8, !tbaa !11
  %2967 = call double @llvm.fmuladd.f64(double %2965, double %2966, double -1.000000e+00)
  %2968 = fdiv double 1.000000e+00, %2967
  store double %2968, ptr %56, align 8, !tbaa !11
  %2969 = load ptr, ptr %8, align 8, !tbaa !5
  %2970 = load i32, ptr %2969, align 4, !tbaa !9
  store i32 %2970, ptr %15, align 4, !tbaa !9
  %2971 = load i32, ptr %37, align 4, !tbaa !9
  %2972 = add nsw i32 %2971, 2
  store i32 %2972, ptr %36, align 4, !tbaa !9
  br label %2973

2973:                                             ; preds = %3444, %2881
  %2974 = load i32, ptr %36, align 4, !tbaa !9
  %2975 = load i32, ptr %15, align 4, !tbaa !9
  %2976 = icmp sle i32 %2974, %2975
  br i1 %2976, label %2977, label %3447

2977:                                             ; preds = %2973
  %2978 = load i32, ptr %36, align 4, !tbaa !9
  %2979 = load i32, ptr %37, align 4, !tbaa !9
  %2980 = load i32, ptr %13, align 4, !tbaa !9
  %2981 = mul nsw i32 %2979, %2980
  %2982 = add nsw i32 %2978, %2981
  store i32 %2982, ptr %16, align 4, !tbaa !9
  %2983 = load double, ptr %47, align 8, !tbaa !11
  %2984 = load ptr, ptr %9, align 8, !tbaa !5
  %2985 = load i32, ptr %16, align 4, !tbaa !9
  %2986 = sext i32 %2985 to i64
  %2987 = getelementptr inbounds %struct.doublecomplex, ptr %2984, i64 %2986
  %2988 = getelementptr inbounds %struct.doublecomplex, ptr %2987, i32 0, i32 0
  %2989 = load double, ptr %2988, align 8, !tbaa !13
  %2990 = fmul double %2983, %2989
  %2991 = getelementptr inbounds %struct.doublecomplex, ptr %25, i32 0, i32 0
  store double %2990, ptr %2991, align 8, !tbaa !13
  %2992 = load double, ptr %47, align 8, !tbaa !11
  %2993 = load ptr, ptr %9, align 8, !tbaa !5
  %2994 = load i32, ptr %16, align 4, !tbaa !9
  %2995 = sext i32 %2994 to i64
  %2996 = getelementptr inbounds %struct.doublecomplex, ptr %2993, i64 %2995
  %2997 = getelementptr inbounds %struct.doublecomplex, ptr %2996, i32 0, i32 1
  %2998 = load double, ptr %2997, align 8, !tbaa !15
  %2999 = fmul double %2992, %2998
  %3000 = getelementptr inbounds %struct.doublecomplex, ptr %25, i32 0, i32 1
  store double %2999, ptr %3000, align 8, !tbaa !15
  %3001 = load i32, ptr %36, align 4, !tbaa !9
  %3002 = load i32, ptr %37, align 4, !tbaa !9
  %3003 = add nsw i32 %3002, 1
  %3004 = load i32, ptr %13, align 4, !tbaa !9
  %3005 = mul nsw i32 %3003, %3004
  %3006 = add nsw i32 %3001, %3005
  store i32 %3006, ptr %17, align 4, !tbaa !9
  %3007 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %3008 = load double, ptr %3007, align 8, !tbaa !13
  %3009 = load ptr, ptr %9, align 8, !tbaa !5
  %3010 = load i32, ptr %17, align 4, !tbaa !9
  %3011 = sext i32 %3010 to i64
  %3012 = getelementptr inbounds %struct.doublecomplex, ptr %3009, i64 %3011
  %3013 = getelementptr inbounds %struct.doublecomplex, ptr %3012, i32 0, i32 0
  %3014 = load double, ptr %3013, align 8, !tbaa !13
  %3015 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %3016 = load double, ptr %3015, align 8, !tbaa !15
  %3017 = load ptr, ptr %9, align 8, !tbaa !5
  %3018 = load i32, ptr %17, align 4, !tbaa !9
  %3019 = sext i32 %3018 to i64
  %3020 = getelementptr inbounds %struct.doublecomplex, ptr %3017, i64 %3019
  %3021 = getelementptr inbounds %struct.doublecomplex, ptr %3020, i32 0, i32 1
  %3022 = load double, ptr %3021, align 8, !tbaa !15
  %3023 = fmul double %3016, %3022
  %3024 = fneg double %3023
  %3025 = call double @llvm.fmuladd.f64(double %3008, double %3014, double %3024)
  %3026 = getelementptr inbounds %struct.doublecomplex, ptr %26, i32 0, i32 0
  store double %3025, ptr %3026, align 8, !tbaa !13
  %3027 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %3028 = load double, ptr %3027, align 8, !tbaa !13
  %3029 = load ptr, ptr %9, align 8, !tbaa !5
  %3030 = load i32, ptr %17, align 4, !tbaa !9
  %3031 = sext i32 %3030 to i64
  %3032 = getelementptr inbounds %struct.doublecomplex, ptr %3029, i64 %3031
  %3033 = getelementptr inbounds %struct.doublecomplex, ptr %3032, i32 0, i32 1
  %3034 = load double, ptr %3033, align 8, !tbaa !15
  %3035 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %3036 = load double, ptr %3035, align 8, !tbaa !15
  %3037 = load ptr, ptr %9, align 8, !tbaa !5
  %3038 = load i32, ptr %17, align 4, !tbaa !9
  %3039 = sext i32 %3038 to i64
  %3040 = getelementptr inbounds %struct.doublecomplex, ptr %3037, i64 %3039
  %3041 = getelementptr inbounds %struct.doublecomplex, ptr %3040, i32 0, i32 0
  %3042 = load double, ptr %3041, align 8, !tbaa !13
  %3043 = fmul double %3036, %3042
  %3044 = call double @llvm.fmuladd.f64(double %3028, double %3034, double %3043)
  %3045 = getelementptr inbounds %struct.doublecomplex, ptr %26, i32 0, i32 1
  store double %3044, ptr %3045, align 8, !tbaa !15
  %3046 = getelementptr inbounds %struct.doublecomplex, ptr %25, i32 0, i32 0
  %3047 = load double, ptr %3046, align 8, !tbaa !13
  %3048 = getelementptr inbounds %struct.doublecomplex, ptr %26, i32 0, i32 0
  %3049 = load double, ptr %3048, align 8, !tbaa !13
  %3050 = fsub double %3047, %3049
  %3051 = getelementptr inbounds %struct.doublecomplex, ptr %24, i32 0, i32 0
  store double %3050, ptr %3051, align 8, !tbaa !13
  %3052 = getelementptr inbounds %struct.doublecomplex, ptr %25, i32 0, i32 1
  %3053 = load double, ptr %3052, align 8, !tbaa !15
  %3054 = getelementptr inbounds %struct.doublecomplex, ptr %26, i32 0, i32 1
  %3055 = load double, ptr %3054, align 8, !tbaa !15
  %3056 = fsub double %3053, %3055
  %3057 = getelementptr inbounds %struct.doublecomplex, ptr %24, i32 0, i32 1
  store double %3056, ptr %3057, align 8, !tbaa !15
  %3058 = load double, ptr %56, align 8, !tbaa !11
  %3059 = getelementptr inbounds %struct.doublecomplex, ptr %24, i32 0, i32 0
  %3060 = load double, ptr %3059, align 8, !tbaa !13
  %3061 = fmul double %3058, %3060
  %3062 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  store double %3061, ptr %3062, align 8, !tbaa !13
  %3063 = load double, ptr %56, align 8, !tbaa !11
  %3064 = getelementptr inbounds %struct.doublecomplex, ptr %24, i32 0, i32 1
  %3065 = load double, ptr %3064, align 8, !tbaa !15
  %3066 = fmul double %3063, %3065
  %3067 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  store double %3066, ptr %3067, align 8, !tbaa !15
  %3068 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  %3069 = load double, ptr %3068, align 8, !tbaa !13
  %3070 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %3069, ptr %3070, align 8, !tbaa !13
  %3071 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  %3072 = load double, ptr %3071, align 8, !tbaa !15
  %3073 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double %3072, ptr %3073, align 8, !tbaa !15
  %3074 = load i32, ptr %36, align 4, !tbaa !9
  %3075 = load i32, ptr %37, align 4, !tbaa !9
  %3076 = add nsw i32 %3075, 1
  %3077 = load i32, ptr %13, align 4, !tbaa !9
  %3078 = mul nsw i32 %3076, %3077
  %3079 = add nsw i32 %3074, %3078
  store i32 %3079, ptr %16, align 4, !tbaa !9
  %3080 = load double, ptr %49, align 8, !tbaa !11
  %3081 = load ptr, ptr %9, align 8, !tbaa !5
  %3082 = load i32, ptr %16, align 4, !tbaa !9
  %3083 = sext i32 %3082 to i64
  %3084 = getelementptr inbounds %struct.doublecomplex, ptr %3081, i64 %3083
  %3085 = getelementptr inbounds %struct.doublecomplex, ptr %3084, i32 0, i32 0
  %3086 = load double, ptr %3085, align 8, !tbaa !13
  %3087 = fmul double %3080, %3086
  %3088 = getelementptr inbounds %struct.doublecomplex, ptr %25, i32 0, i32 0
  store double %3087, ptr %3088, align 8, !tbaa !13
  %3089 = load double, ptr %49, align 8, !tbaa !11
  %3090 = load ptr, ptr %9, align 8, !tbaa !5
  %3091 = load i32, ptr %16, align 4, !tbaa !9
  %3092 = sext i32 %3091 to i64
  %3093 = getelementptr inbounds %struct.doublecomplex, ptr %3090, i64 %3092
  %3094 = getelementptr inbounds %struct.doublecomplex, ptr %3093, i32 0, i32 1
  %3095 = load double, ptr %3094, align 8, !tbaa !15
  %3096 = fmul double %3089, %3095
  %3097 = getelementptr inbounds %struct.doublecomplex, ptr %25, i32 0, i32 1
  store double %3096, ptr %3097, align 8, !tbaa !15
  %3098 = call { double, double } @Cd(ptr noundef %50)
  %3099 = extractvalue { double, double } %3098, 0
  %3100 = extractvalue { double, double } %3098, 1
  %3101 = fneg double %3100
  %3102 = call ptr @_pCd(ptr noundef %27)
  %3103 = getelementptr inbounds { double, double }, ptr %3102, i32 0, i32 0
  %3104 = getelementptr inbounds { double, double }, ptr %3102, i32 0, i32 1
  store double %3099, ptr %3103, align 8
  store double %3101, ptr %3104, align 8
  %3105 = load i32, ptr %36, align 4, !tbaa !9
  %3106 = load i32, ptr %37, align 4, !tbaa !9
  %3107 = load i32, ptr %13, align 4, !tbaa !9
  %3108 = mul nsw i32 %3106, %3107
  %3109 = add nsw i32 %3105, %3108
  store i32 %3109, ptr %17, align 4, !tbaa !9
  %3110 = getelementptr inbounds %struct.doublecomplex, ptr %27, i32 0, i32 0
  %3111 = load double, ptr %3110, align 8, !tbaa !13
  %3112 = load ptr, ptr %9, align 8, !tbaa !5
  %3113 = load i32, ptr %17, align 4, !tbaa !9
  %3114 = sext i32 %3113 to i64
  %3115 = getelementptr inbounds %struct.doublecomplex, ptr %3112, i64 %3114
  %3116 = getelementptr inbounds %struct.doublecomplex, ptr %3115, i32 0, i32 0
  %3117 = load double, ptr %3116, align 8, !tbaa !13
  %3118 = getelementptr inbounds %struct.doublecomplex, ptr %27, i32 0, i32 1
  %3119 = load double, ptr %3118, align 8, !tbaa !15
  %3120 = load ptr, ptr %9, align 8, !tbaa !5
  %3121 = load i32, ptr %17, align 4, !tbaa !9
  %3122 = sext i32 %3121 to i64
  %3123 = getelementptr inbounds %struct.doublecomplex, ptr %3120, i64 %3122
  %3124 = getelementptr inbounds %struct.doublecomplex, ptr %3123, i32 0, i32 1
  %3125 = load double, ptr %3124, align 8, !tbaa !15
  %3126 = fmul double %3119, %3125
  %3127 = fneg double %3126
  %3128 = call double @llvm.fmuladd.f64(double %3111, double %3117, double %3127)
  %3129 = getelementptr inbounds %struct.doublecomplex, ptr %26, i32 0, i32 0
  store double %3128, ptr %3129, align 8, !tbaa !13
  %3130 = getelementptr inbounds %struct.doublecomplex, ptr %27, i32 0, i32 0
  %3131 = load double, ptr %3130, align 8, !tbaa !13
  %3132 = load ptr, ptr %9, align 8, !tbaa !5
  %3133 = load i32, ptr %17, align 4, !tbaa !9
  %3134 = sext i32 %3133 to i64
  %3135 = getelementptr inbounds %struct.doublecomplex, ptr %3132, i64 %3134
  %3136 = getelementptr inbounds %struct.doublecomplex, ptr %3135, i32 0, i32 1
  %3137 = load double, ptr %3136, align 8, !tbaa !15
  %3138 = getelementptr inbounds %struct.doublecomplex, ptr %27, i32 0, i32 1
  %3139 = load double, ptr %3138, align 8, !tbaa !15
  %3140 = load ptr, ptr %9, align 8, !tbaa !5
  %3141 = load i32, ptr %17, align 4, !tbaa !9
  %3142 = sext i32 %3141 to i64
  %3143 = getelementptr inbounds %struct.doublecomplex, ptr %3140, i64 %3142
  %3144 = getelementptr inbounds %struct.doublecomplex, ptr %3143, i32 0, i32 0
  %3145 = load double, ptr %3144, align 8, !tbaa !13
  %3146 = fmul double %3139, %3145
  %3147 = call double @llvm.fmuladd.f64(double %3131, double %3137, double %3146)
  %3148 = getelementptr inbounds %struct.doublecomplex, ptr %26, i32 0, i32 1
  store double %3147, ptr %3148, align 8, !tbaa !15
  %3149 = getelementptr inbounds %struct.doublecomplex, ptr %25, i32 0, i32 0
  %3150 = load double, ptr %3149, align 8, !tbaa !13
  %3151 = getelementptr inbounds %struct.doublecomplex, ptr %26, i32 0, i32 0
  %3152 = load double, ptr %3151, align 8, !tbaa !13
  %3153 = fsub double %3150, %3152
  %3154 = getelementptr inbounds %struct.doublecomplex, ptr %24, i32 0, i32 0
  store double %3153, ptr %3154, align 8, !tbaa !13
  %3155 = getelementptr inbounds %struct.doublecomplex, ptr %25, i32 0, i32 1
  %3156 = load double, ptr %3155, align 8, !tbaa !15
  %3157 = getelementptr inbounds %struct.doublecomplex, ptr %26, i32 0, i32 1
  %3158 = load double, ptr %3157, align 8, !tbaa !15
  %3159 = fsub double %3156, %3158
  %3160 = getelementptr inbounds %struct.doublecomplex, ptr %24, i32 0, i32 1
  store double %3159, ptr %3160, align 8, !tbaa !15
  %3161 = load double, ptr %56, align 8, !tbaa !11
  %3162 = getelementptr inbounds %struct.doublecomplex, ptr %24, i32 0, i32 0
  %3163 = load double, ptr %3162, align 8, !tbaa !13
  %3164 = fmul double %3161, %3163
  %3165 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  store double %3164, ptr %3165, align 8, !tbaa !13
  %3166 = load double, ptr %56, align 8, !tbaa !11
  %3167 = getelementptr inbounds %struct.doublecomplex, ptr %24, i32 0, i32 1
  %3168 = load double, ptr %3167, align 8, !tbaa !15
  %3169 = fmul double %3166, %3168
  %3170 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  store double %3169, ptr %3170, align 8, !tbaa !15
  %3171 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  %3172 = load double, ptr %3171, align 8, !tbaa !13
  %3173 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  store double %3172, ptr %3173, align 8, !tbaa !13
  %3174 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  %3175 = load double, ptr %3174, align 8, !tbaa !15
  %3176 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  store double %3175, ptr %3176, align 8, !tbaa !15
  %3177 = load ptr, ptr %8, align 8, !tbaa !5
  %3178 = load i32, ptr %3177, align 4, !tbaa !9
  store i32 %3178, ptr %16, align 4, !tbaa !9
  %3179 = load i32, ptr %36, align 4, !tbaa !9
  store i32 %3179, ptr %35, align 4, !tbaa !9
  br label %3180

3180:                                             ; preds = %3348, %2977
  %3181 = load i32, ptr %35, align 4, !tbaa !9
  %3182 = load i32, ptr %16, align 4, !tbaa !9
  %3183 = icmp sle i32 %3181, %3182
  br i1 %3183, label %3184, label %3351

3184:                                             ; preds = %3180
  %3185 = load i32, ptr %35, align 4, !tbaa !9
  %3186 = load i32, ptr %36, align 4, !tbaa !9
  %3187 = load i32, ptr %13, align 4, !tbaa !9
  %3188 = mul nsw i32 %3186, %3187
  %3189 = add nsw i32 %3185, %3188
  store i32 %3189, ptr %17, align 4, !tbaa !9
  %3190 = load i32, ptr %35, align 4, !tbaa !9
  %3191 = load i32, ptr %36, align 4, !tbaa !9
  %3192 = load i32, ptr %13, align 4, !tbaa !9
  %3193 = mul nsw i32 %3191, %3192
  %3194 = add nsw i32 %3190, %3193
  store i32 %3194, ptr %18, align 4, !tbaa !9
  %3195 = load i32, ptr %35, align 4, !tbaa !9
  %3196 = load i32, ptr %37, align 4, !tbaa !9
  %3197 = load i32, ptr %13, align 4, !tbaa !9
  %3198 = mul nsw i32 %3196, %3197
  %3199 = add nsw i32 %3195, %3198
  store i32 %3199, ptr %19, align 4, !tbaa !9
  %3200 = load ptr, ptr %9, align 8, !tbaa !5
  %3201 = load i32, ptr %19, align 4, !tbaa !9
  %3202 = sext i32 %3201 to i64
  %3203 = getelementptr inbounds %struct.doublecomplex, ptr %3200, i64 %3202
  %3204 = getelementptr inbounds %struct.doublecomplex, ptr %3203, i32 0, i32 0
  %3205 = load double, ptr %3204, align 8, !tbaa !13
  %3206 = load double, ptr %34, align 8, !tbaa !11
  %3207 = fdiv double %3205, %3206
  %3208 = getelementptr inbounds %struct.doublecomplex, ptr %26, i32 0, i32 0
  store double %3207, ptr %3208, align 8, !tbaa !13
  %3209 = load ptr, ptr %9, align 8, !tbaa !5
  %3210 = load i32, ptr %19, align 4, !tbaa !9
  %3211 = sext i32 %3210 to i64
  %3212 = getelementptr inbounds %struct.doublecomplex, ptr %3209, i64 %3211
  %3213 = getelementptr inbounds %struct.doublecomplex, ptr %3212, i32 0, i32 1
  %3214 = load double, ptr %3213, align 8, !tbaa !15
  %3215 = load double, ptr %34, align 8, !tbaa !11
  %3216 = fdiv double %3214, %3215
  %3217 = getelementptr inbounds %struct.doublecomplex, ptr %26, i32 0, i32 1
  store double %3216, ptr %3217, align 8, !tbaa !15
  %3218 = call { double, double } @Cd(ptr noundef %55)
  %3219 = extractvalue { double, double } %3218, 0
  %3220 = extractvalue { double, double } %3218, 1
  %3221 = fneg double %3220
  %3222 = call ptr @_pCd(ptr noundef %27)
  %3223 = getelementptr inbounds { double, double }, ptr %3222, i32 0, i32 0
  %3224 = getelementptr inbounds { double, double }, ptr %3222, i32 0, i32 1
  store double %3219, ptr %3223, align 8
  store double %3221, ptr %3224, align 8
  %3225 = getelementptr inbounds %struct.doublecomplex, ptr %26, i32 0, i32 0
  %3226 = load double, ptr %3225, align 8, !tbaa !13
  %3227 = getelementptr inbounds %struct.doublecomplex, ptr %27, i32 0, i32 0
  %3228 = load double, ptr %3227, align 8, !tbaa !13
  %3229 = getelementptr inbounds %struct.doublecomplex, ptr %26, i32 0, i32 1
  %3230 = load double, ptr %3229, align 8, !tbaa !15
  %3231 = getelementptr inbounds %struct.doublecomplex, ptr %27, i32 0, i32 1
  %3232 = load double, ptr %3231, align 8, !tbaa !15
  %3233 = fmul double %3230, %3232
  %3234 = fneg double %3233
  %3235 = call double @llvm.fmuladd.f64(double %3226, double %3228, double %3234)
  %3236 = getelementptr inbounds %struct.doublecomplex, ptr %25, i32 0, i32 0
  store double %3235, ptr %3236, align 8, !tbaa !13
  %3237 = getelementptr inbounds %struct.doublecomplex, ptr %26, i32 0, i32 0
  %3238 = load double, ptr %3237, align 8, !tbaa !13
  %3239 = getelementptr inbounds %struct.doublecomplex, ptr %27, i32 0, i32 1
  %3240 = load double, ptr %3239, align 8, !tbaa !15
  %3241 = getelementptr inbounds %struct.doublecomplex, ptr %26, i32 0, i32 1
  %3242 = load double, ptr %3241, align 8, !tbaa !15
  %3243 = getelementptr inbounds %struct.doublecomplex, ptr %27, i32 0, i32 0
  %3244 = load double, ptr %3243, align 8, !tbaa !13
  %3245 = fmul double %3242, %3244
  %3246 = call double @llvm.fmuladd.f64(double %3238, double %3240, double %3245)
  %3247 = getelementptr inbounds %struct.doublecomplex, ptr %25, i32 0, i32 1
  store double %3246, ptr %3247, align 8, !tbaa !15
  %3248 = load ptr, ptr %9, align 8, !tbaa !5
  %3249 = load i32, ptr %18, align 4, !tbaa !9
  %3250 = sext i32 %3249 to i64
  %3251 = getelementptr inbounds %struct.doublecomplex, ptr %3248, i64 %3250
  %3252 = getelementptr inbounds %struct.doublecomplex, ptr %3251, i32 0, i32 0
  %3253 = load double, ptr %3252, align 8, !tbaa !13
  %3254 = getelementptr inbounds %struct.doublecomplex, ptr %25, i32 0, i32 0
  %3255 = load double, ptr %3254, align 8, !tbaa !13
  %3256 = fsub double %3253, %3255
  %3257 = getelementptr inbounds %struct.doublecomplex, ptr %24, i32 0, i32 0
  store double %3256, ptr %3257, align 8, !tbaa !13
  %3258 = load ptr, ptr %9, align 8, !tbaa !5
  %3259 = load i32, ptr %18, align 4, !tbaa !9
  %3260 = sext i32 %3259 to i64
  %3261 = getelementptr inbounds %struct.doublecomplex, ptr %3258, i64 %3260
  %3262 = getelementptr inbounds %struct.doublecomplex, ptr %3261, i32 0, i32 1
  %3263 = load double, ptr %3262, align 8, !tbaa !15
  %3264 = getelementptr inbounds %struct.doublecomplex, ptr %25, i32 0, i32 1
  %3265 = load double, ptr %3264, align 8, !tbaa !15
  %3266 = fsub double %3263, %3265
  %3267 = getelementptr inbounds %struct.doublecomplex, ptr %24, i32 0, i32 1
  store double %3266, ptr %3267, align 8, !tbaa !15
  %3268 = load i32, ptr %35, align 4, !tbaa !9
  %3269 = load i32, ptr %37, align 4, !tbaa !9
  %3270 = add nsw i32 %3269, 1
  %3271 = load i32, ptr %13, align 4, !tbaa !9
  %3272 = mul nsw i32 %3270, %3271
  %3273 = add nsw i32 %3268, %3272
  store i32 %3273, ptr %20, align 4, !tbaa !9
  %3274 = load ptr, ptr %9, align 8, !tbaa !5
  %3275 = load i32, ptr %20, align 4, !tbaa !9
  %3276 = sext i32 %3275 to i64
  %3277 = getelementptr inbounds %struct.doublecomplex, ptr %3274, i64 %3276
  %3278 = getelementptr inbounds %struct.doublecomplex, ptr %3277, i32 0, i32 0
  %3279 = load double, ptr %3278, align 8, !tbaa !13
  %3280 = load double, ptr %34, align 8, !tbaa !11
  %3281 = fdiv double %3279, %3280
  %3282 = getelementptr inbounds %struct.doublecomplex, ptr %29, i32 0, i32 0
  store double %3281, ptr %3282, align 8, !tbaa !13
  %3283 = load ptr, ptr %9, align 8, !tbaa !5
  %3284 = load i32, ptr %20, align 4, !tbaa !9
  %3285 = sext i32 %3284 to i64
  %3286 = getelementptr inbounds %struct.doublecomplex, ptr %3283, i64 %3285
  %3287 = getelementptr inbounds %struct.doublecomplex, ptr %3286, i32 0, i32 1
  %3288 = load double, ptr %3287, align 8, !tbaa !15
  %3289 = load double, ptr %34, align 8, !tbaa !11
  %3290 = fdiv double %3288, %3289
  %3291 = getelementptr inbounds %struct.doublecomplex, ptr %29, i32 0, i32 1
  store double %3290, ptr %3291, align 8, !tbaa !15
  %3292 = call { double, double } @Cd(ptr noundef %60)
  %3293 = extractvalue { double, double } %3292, 0
  %3294 = extractvalue { double, double } %3292, 1
  %3295 = fneg double %3294
  %3296 = call ptr @_pCd(ptr noundef %30)
  %3297 = getelementptr inbounds { double, double }, ptr %3296, i32 0, i32 0
  %3298 = getelementptr inbounds { double, double }, ptr %3296, i32 0, i32 1
  store double %3293, ptr %3297, align 8
  store double %3295, ptr %3298, align 8
  %3299 = getelementptr inbounds %struct.doublecomplex, ptr %29, i32 0, i32 0
  %3300 = load double, ptr %3299, align 8, !tbaa !13
  %3301 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %3302 = load double, ptr %3301, align 8, !tbaa !13
  %3303 = getelementptr inbounds %struct.doublecomplex, ptr %29, i32 0, i32 1
  %3304 = load double, ptr %3303, align 8, !tbaa !15
  %3305 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %3306 = load double, ptr %3305, align 8, !tbaa !15
  %3307 = fmul double %3304, %3306
  %3308 = fneg double %3307
  %3309 = call double @llvm.fmuladd.f64(double %3300, double %3302, double %3308)
  %3310 = getelementptr inbounds %struct.doublecomplex, ptr %28, i32 0, i32 0
  store double %3309, ptr %3310, align 8, !tbaa !13
  %3311 = getelementptr inbounds %struct.doublecomplex, ptr %29, i32 0, i32 0
  %3312 = load double, ptr %3311, align 8, !tbaa !13
  %3313 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 1
  %3314 = load double, ptr %3313, align 8, !tbaa !15
  %3315 = getelementptr inbounds %struct.doublecomplex, ptr %29, i32 0, i32 1
  %3316 = load double, ptr %3315, align 8, !tbaa !15
  %3317 = getelementptr inbounds %struct.doublecomplex, ptr %30, i32 0, i32 0
  %3318 = load double, ptr %3317, align 8, !tbaa !13
  %3319 = fmul double %3316, %3318
  %3320 = call double @llvm.fmuladd.f64(double %3312, double %3314, double %3319)
  %3321 = getelementptr inbounds %struct.doublecomplex, ptr %28, i32 0, i32 1
  store double %3320, ptr %3321, align 8, !tbaa !15
  %3322 = getelementptr inbounds %struct.doublecomplex, ptr %24, i32 0, i32 0
  %3323 = load double, ptr %3322, align 8, !tbaa !13
  %3324 = getelementptr inbounds %struct.doublecomplex, ptr %28, i32 0, i32 0
  %3325 = load double, ptr %3324, align 8, !tbaa !13
  %3326 = fsub double %3323, %3325
  %3327 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  store double %3326, ptr %3327, align 8, !tbaa !13
  %3328 = getelementptr inbounds %struct.doublecomplex, ptr %24, i32 0, i32 1
  %3329 = load double, ptr %3328, align 8, !tbaa !15
  %3330 = getelementptr inbounds %struct.doublecomplex, ptr %28, i32 0, i32 1
  %3331 = load double, ptr %3330, align 8, !tbaa !15
  %3332 = fsub double %3329, %3331
  %3333 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  store double %3332, ptr %3333, align 8, !tbaa !15
  %3334 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  %3335 = load double, ptr %3334, align 8, !tbaa !13
  %3336 = load ptr, ptr %9, align 8, !tbaa !5
  %3337 = load i32, ptr %17, align 4, !tbaa !9
  %3338 = sext i32 %3337 to i64
  %3339 = getelementptr inbounds %struct.doublecomplex, ptr %3336, i64 %3338
  %3340 = getelementptr inbounds %struct.doublecomplex, ptr %3339, i32 0, i32 0
  store double %3335, ptr %3340, align 8, !tbaa !13
  %3341 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  %3342 = load double, ptr %3341, align 8, !tbaa !15
  %3343 = load ptr, ptr %9, align 8, !tbaa !5
  %3344 = load i32, ptr %17, align 4, !tbaa !9
  %3345 = sext i32 %3344 to i64
  %3346 = getelementptr inbounds %struct.doublecomplex, ptr %3343, i64 %3345
  %3347 = getelementptr inbounds %struct.doublecomplex, ptr %3346, i32 0, i32 1
  store double %3342, ptr %3347, align 8, !tbaa !15
  br label %3348

3348:                                             ; preds = %3184
  %3349 = load i32, ptr %35, align 4, !tbaa !9
  %3350 = add nsw i32 %3349, 1
  store i32 %3350, ptr %35, align 4, !tbaa !9
  br label %3180, !llvm.loop !25

3351:                                             ; preds = %3180
  %3352 = load i32, ptr %36, align 4, !tbaa !9
  %3353 = load i32, ptr %37, align 4, !tbaa !9
  %3354 = load i32, ptr %13, align 4, !tbaa !9
  %3355 = mul nsw i32 %3353, %3354
  %3356 = add nsw i32 %3352, %3355
  store i32 %3356, ptr %16, align 4, !tbaa !9
  %3357 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %3358 = load double, ptr %3357, align 8, !tbaa !13
  %3359 = load double, ptr %34, align 8, !tbaa !11
  %3360 = fdiv double %3358, %3359
  %3361 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  store double %3360, ptr %3361, align 8, !tbaa !13
  %3362 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %3363 = load double, ptr %3362, align 8, !tbaa !15
  %3364 = load double, ptr %34, align 8, !tbaa !11
  %3365 = fdiv double %3363, %3364
  %3366 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  store double %3365, ptr %3366, align 8, !tbaa !15
  %3367 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  %3368 = load double, ptr %3367, align 8, !tbaa !13
  %3369 = load ptr, ptr %9, align 8, !tbaa !5
  %3370 = load i32, ptr %16, align 4, !tbaa !9
  %3371 = sext i32 %3370 to i64
  %3372 = getelementptr inbounds %struct.doublecomplex, ptr %3369, i64 %3371
  %3373 = getelementptr inbounds %struct.doublecomplex, ptr %3372, i32 0, i32 0
  store double %3368, ptr %3373, align 8, !tbaa !13
  %3374 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  %3375 = load double, ptr %3374, align 8, !tbaa !15
  %3376 = load ptr, ptr %9, align 8, !tbaa !5
  %3377 = load i32, ptr %16, align 4, !tbaa !9
  %3378 = sext i32 %3377 to i64
  %3379 = getelementptr inbounds %struct.doublecomplex, ptr %3376, i64 %3378
  %3380 = getelementptr inbounds %struct.doublecomplex, ptr %3379, i32 0, i32 1
  store double %3375, ptr %3380, align 8, !tbaa !15
  %3381 = load i32, ptr %36, align 4, !tbaa !9
  %3382 = load i32, ptr %37, align 4, !tbaa !9
  %3383 = add nsw i32 %3382, 1
  %3384 = load i32, ptr %13, align 4, !tbaa !9
  %3385 = mul nsw i32 %3383, %3384
  %3386 = add nsw i32 %3381, %3385
  store i32 %3386, ptr %16, align 4, !tbaa !9
  %3387 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %3388 = load double, ptr %3387, align 8, !tbaa !13
  %3389 = load double, ptr %34, align 8, !tbaa !11
  %3390 = fdiv double %3388, %3389
  %3391 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  store double %3390, ptr %3391, align 8, !tbaa !13
  %3392 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %3393 = load double, ptr %3392, align 8, !tbaa !15
  %3394 = load double, ptr %34, align 8, !tbaa !11
  %3395 = fdiv double %3393, %3394
  %3396 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  store double %3395, ptr %3396, align 8, !tbaa !15
  %3397 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  %3398 = load double, ptr %3397, align 8, !tbaa !13
  %3399 = load ptr, ptr %9, align 8, !tbaa !5
  %3400 = load i32, ptr %16, align 4, !tbaa !9
  %3401 = sext i32 %3400 to i64
  %3402 = getelementptr inbounds %struct.doublecomplex, ptr %3399, i64 %3401
  %3403 = getelementptr inbounds %struct.doublecomplex, ptr %3402, i32 0, i32 0
  store double %3398, ptr %3403, align 8, !tbaa !13
  %3404 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  %3405 = load double, ptr %3404, align 8, !tbaa !15
  %3406 = load ptr, ptr %9, align 8, !tbaa !5
  %3407 = load i32, ptr %16, align 4, !tbaa !9
  %3408 = sext i32 %3407 to i64
  %3409 = getelementptr inbounds %struct.doublecomplex, ptr %3406, i64 %3408
  %3410 = getelementptr inbounds %struct.doublecomplex, ptr %3409, i32 0, i32 1
  store double %3405, ptr %3410, align 8, !tbaa !15
  %3411 = load i32, ptr %36, align 4, !tbaa !9
  %3412 = load i32, ptr %36, align 4, !tbaa !9
  %3413 = load i32, ptr %13, align 4, !tbaa !9
  %3414 = mul nsw i32 %3412, %3413
  %3415 = add nsw i32 %3411, %3414
  store i32 %3415, ptr %16, align 4, !tbaa !9
  %3416 = load i32, ptr %36, align 4, !tbaa !9
  %3417 = load i32, ptr %36, align 4, !tbaa !9
  %3418 = load i32, ptr %13, align 4, !tbaa !9
  %3419 = mul nsw i32 %3417, %3418
  %3420 = add nsw i32 %3416, %3419
  store i32 %3420, ptr %17, align 4, !tbaa !9
  %3421 = load ptr, ptr %9, align 8, !tbaa !5
  %3422 = load i32, ptr %17, align 4, !tbaa !9
  %3423 = sext i32 %3422 to i64
  %3424 = getelementptr inbounds %struct.doublecomplex, ptr %3421, i64 %3423
  %3425 = getelementptr inbounds %struct.doublecomplex, ptr %3424, i32 0, i32 0
  %3426 = load double, ptr %3425, align 8, !tbaa !13
  store double %3426, ptr %21, align 8, !tbaa !11
  %3427 = load double, ptr %21, align 8, !tbaa !11
  %3428 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  store double %3427, ptr %3428, align 8, !tbaa !13
  %3429 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  store double 0.000000e+00, ptr %3429, align 8, !tbaa !15
  %3430 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  %3431 = load double, ptr %3430, align 8, !tbaa !13
  %3432 = load ptr, ptr %9, align 8, !tbaa !5
  %3433 = load i32, ptr %16, align 4, !tbaa !9
  %3434 = sext i32 %3433 to i64
  %3435 = getelementptr inbounds %struct.doublecomplex, ptr %3432, i64 %3434
  %3436 = getelementptr inbounds %struct.doublecomplex, ptr %3435, i32 0, i32 0
  store double %3431, ptr %3436, align 8, !tbaa !13
  %3437 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  %3438 = load double, ptr %3437, align 8, !tbaa !15
  %3439 = load ptr, ptr %9, align 8, !tbaa !5
  %3440 = load i32, ptr %16, align 4, !tbaa !9
  %3441 = sext i32 %3440 to i64
  %3442 = getelementptr inbounds %struct.doublecomplex, ptr %3439, i64 %3441
  %3443 = getelementptr inbounds %struct.doublecomplex, ptr %3442, i32 0, i32 1
  store double %3438, ptr %3443, align 8, !tbaa !15
  br label %3444

3444:                                             ; preds = %3351
  %3445 = load i32, ptr %36, align 4, !tbaa !9
  %3446 = add nsw i32 %3445, 1
  store i32 %3446, ptr %36, align 4, !tbaa !9
  br label %2973, !llvm.loop !26

3447:                                             ; preds = %2973
  br label %3448

3448:                                             ; preds = %3447, %2875
  br label %3449

3449:                                             ; preds = %3448, %2874
  br label %3450

3450:                                             ; preds = %3449, %1888
  %3451 = load i32, ptr %44, align 4, !tbaa !9
  %3452 = icmp eq i32 %3451, 1
  br i1 %3452, label %3453, label %3459

3453:                                             ; preds = %3450
  %3454 = load i32, ptr %53, align 4, !tbaa !9
  %3455 = load ptr, ptr %11, align 8, !tbaa !5
  %3456 = load i32, ptr %37, align 4, !tbaa !9
  %3457 = sext i32 %3456 to i64
  %3458 = getelementptr inbounds i32, ptr %3455, i64 %3457
  store i32 %3454, ptr %3458, align 4, !tbaa !9
  br label %3473

3459:                                             ; preds = %3450
  %3460 = load i32, ptr %38, align 4, !tbaa !9
  %3461 = sub nsw i32 0, %3460
  %3462 = load ptr, ptr %11, align 8, !tbaa !5
  %3463 = load i32, ptr %37, align 4, !tbaa !9
  %3464 = sext i32 %3463 to i64
  %3465 = getelementptr inbounds i32, ptr %3462, i64 %3464
  store i32 %3461, ptr %3465, align 4, !tbaa !9
  %3466 = load i32, ptr %53, align 4, !tbaa !9
  %3467 = sub nsw i32 0, %3466
  %3468 = load ptr, ptr %11, align 8, !tbaa !5
  %3469 = load i32, ptr %37, align 4, !tbaa !9
  %3470 = add nsw i32 %3469, 1
  %3471 = sext i32 %3470 to i64
  %3472 = getelementptr inbounds i32, ptr %3468, i64 %3471
  store i32 %3467, ptr %3472, align 4, !tbaa !9
  br label %3473

3473:                                             ; preds = %3459, %3453
  %3474 = load i32, ptr %44, align 4, !tbaa !9
  %3475 = load i32, ptr %37, align 4, !tbaa !9
  %3476 = add nsw i32 %3475, %3474
  store i32 %3476, ptr %37, align 4, !tbaa !9
  br label %1779

3477:                                             ; preds = %1784, %130
  store i32 1, ptr %61, align 4
  br label %3478

3478:                                             ; preds = %3477, %112
  call void @llvm.lifetime.end.p0(i64 16, ptr %60) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %59) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %55) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %50) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %48) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %39) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #6
  ret void
}

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

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

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

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

declare double @dlamch_(ptr noundef) #2

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden { double, double } @Cd(ptr noundef) #4

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden ptr @_pCd(ptr noundef) #4

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

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

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

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

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

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


; 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 [12 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i32, align 4

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

24:                                               ; preds = %6
  %25 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #6
  %.not1137 = icmp eq i32 %25, 0
  br i1 %.not1137, label %.thread.sink.split, label %26

26:                                               ; preds = %24, %6
  %27 = load i32, ptr %1, align 4, !tbaa !5
  %28 = icmp slt i32 %27, 0
  br i1 %28, label %.thread.sink.split, label %29

29:                                               ; preds = %26
  %30 = load i32, ptr %3, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %27, i32 1)
  %31 = icmp slt i32 %30, %spec.select
  br i1 %31, label %.thread.sink.split, label %32

32:                                               ; preds = %29
  %.pr = load i32, ptr %5, align 4, !tbaa !5
  %.not1138 = icmp eq i32 %.pr, 0
  br i1 %.not1138, label %36, label %.thread

.thread.sink.split:                               ; preds = %29, %26, %24
  %.sink = phi i32 [ -1, %24 ], [ -2, %26 ], [ -4, %29 ]
  store i32 %.sink, ptr %5, align 4, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %32
  %33 = phi i32 [ %.pr, %32 ], [ %.sink, %.thread.sink.split ]
  %34 = sub nsw i32 0, %33
  store i32 %34, ptr %7, align 4, !tbaa !5
  %35 = call i32 @xerbla_(ptr noundef nonnull @.str.2, ptr noundef nonnull %7, i32 noundef 11) #6
  br label %.loopexit1315

36:                                               ; preds = %32
  %37 = tail call double @dlamch_(ptr noundef nonnull @.str.3) #6
  %38 = load i32, ptr %1, align 4, !tbaa !5
  br i1 %.not, label %.preheader1314, label %45

.preheader1314:                                   ; preds = %36
  %39 = icmp slt i32 %38, 1
  br i1 %39, label %.loopexit1315, label %.lr.ph1406

.lr.ph1406:                                       ; preds = %.preheader1314
  %40 = add i32 %19, 1
  %41 = getelementptr inbounds i8, ptr %10, i64 8
  %42 = getelementptr inbounds i8, ptr %15, i64 8
  %43 = getelementptr inbounds i8, ptr %11, i64 8
  %44 = sext i32 %19 to i64
  br label %449

45:                                               ; preds = %36
  %invariant.gep1352 = getelementptr i8, ptr %21, i64 16
  %46 = icmp slt i32 %38, 1
  br i1 %46, label %.loopexit1315, label %.lr.ph1372

.lr.ph1372:                                       ; preds = %45
  %47 = add i32 %19, 1
  %48 = getelementptr inbounds i8, ptr %10, i64 8
  %49 = getelementptr inbounds i8, ptr %14, i64 8
  %50 = getelementptr inbounds i8, ptr %11, i64 8
  %51 = sext i32 %19 to i64
  br label %52

52:                                               ; preds = %.lr.ph1372, %446
  %.010911368 = phi i32 [ %38, %.lr.ph1372 ], [ %447, %446 ]
  %.011011367 = phi i32 [ undef, %.lr.ph1372 ], [ %.511061231, %446 ]
  %.011111366 = phi i32 [ undef, %.lr.ph1372 ], [ %.511161229, %446 ]
  %53 = mul nsw i32 %.010911368, %19
  %54 = add nsw i32 %53, %.010911368
  %55 = sext i32 %54 to i64
  %56 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %55
  %57 = load double, ptr %56, align 8, !tbaa !9
  store double %57, ptr %8, align 8, !tbaa !12
  %58 = fcmp oge double %57, 0.000000e+00
  %59 = fneg double %57
  %60 = select i1 %58, double %57, double %59
  %.not1148 = icmp eq i32 %.010911368, 1
  br i1 %.not1148, label %78, label %61

61:                                               ; preds = %52
  %62 = add nsw i32 %.010911368, -1
  store i32 %62, ptr %7, align 4, !tbaa !5
  %63 = sext i32 %53 to i64
  %gep1353 = getelementptr %struct.doublecomplex, ptr %invariant.gep1352, i64 %63
  %64 = call i32 @izamax_(ptr noundef nonnull %7, ptr noundef %gep1353, ptr noundef nonnull @c__1) #6
  %65 = add nsw i32 %64, %53
  store i32 %65, ptr %7, align 4, !tbaa !5
  %66 = sext i32 %65 to i64
  %67 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %66
  %68 = load double, ptr %67, align 8, !tbaa !9
  store double %68, ptr %8, align 8, !tbaa !12
  %69 = call { double, double } @Cd(ptr noundef nonnull %67)
  %70 = extractvalue { double, double } %69, 1
  store double %70, ptr %9, align 8, !tbaa !12
  %71 = insertelement <2 x double> poison, double %68, i64 0
  %72 = insertelement <2 x double> %71, double %70, i64 1
  %73 = fcmp oge <2 x double> %72, zeroinitializer
  %74 = fneg <2 x double> %72
  %75 = select <2 x i1> %73, <2 x double> %72, <2 x double> %74
  %shift = shufflevector <2 x double> %75, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %76 = fadd <2 x double> %75, %shift
  %77 = extractelement <2 x double> %76, i64 0
  br label %78

78:                                               ; preds = %52, %61
  %.11112 = phi i32 [ %64, %61 ], [ %.011111366, %52 ]
  %.01063 = phi double [ %77, %61 ], [ 0.000000e+00, %52 ]
  %79 = fcmp oge double %60, %.01063
  %80 = select i1 %79, double %60, double %.01063
  %81 = fcmp oeq double %80, 0.000000e+00
  br i1 %81, label %82, label %89

82:                                               ; preds = %78
  %83 = load i32, ptr %5, align 4, !tbaa !5
  %84 = icmp eq i32 %83, 0
  br i1 %84, label %85, label %86

85:                                               ; preds = %82
  store i32 %.010911368, ptr %5, align 4, !tbaa !5
  br label %86

86:                                               ; preds = %85, %82
  store i32 %54, ptr %7, align 4, !tbaa !5
  %87 = load double, ptr %56, align 8, !tbaa !9
  store double %87, ptr %8, align 8, !tbaa !12
  %88 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %55, i32 1
  store double 0.000000e+00, ptr %88, align 8, !tbaa !13
  br label %438

89:                                               ; preds = %78
  %90 = fmul double %.01063, 0x3FE47E0F66AFED07
  %91 = fcmp olt double %60, %90
  br i1 %91, label %.preheader1317, label %.critedge.sink.split

.preheader1317:                                   ; preds = %89, %147
  %.21113 = phi i32 [ %.31104, %147 ], [ %.11112, %89 ]
  %.11102 = phi i32 [ %.31104, %147 ], [ %.011011367, %89 ]
  %.01083 = phi i32 [ %.21113, %147 ], [ %.010911368, %89 ]
  %.11064 = phi double [ %.1, %147 ], [ %.01063, %89 ]
  %.not1149 = icmp eq i32 %.21113, %.010911368
  br i1 %.not1149, label %115, label %92

92:                                               ; preds = %.preheader1317
  %93 = sub nsw i32 %.010911368, %.21113
  store i32 %93, ptr %7, align 4, !tbaa !5
  %94 = add nsw i32 %.21113, 1
  %95 = mul nsw i32 %94, %19
  %96 = add nsw i32 %95, %.21113
  %97 = sext i32 %96 to i64
  %98 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %97
  %99 = call i32 @izamax_(ptr noundef nonnull %7, ptr noundef %98, ptr noundef nonnull %3) #6
  %100 = add nsw i32 %99, %.21113
  %101 = mul nsw i32 %100, %19
  %102 = add nsw i32 %101, %.21113
  store i32 %102, ptr %7, align 4, !tbaa !5
  %103 = sext i32 %102 to i64
  %104 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %103
  %105 = load double, ptr %104, align 8, !tbaa !9
  store double %105, ptr %8, align 8, !tbaa !12
  %106 = call { double, double } @Cd(ptr noundef nonnull %104)
  %107 = extractvalue { double, double } %106, 1
  store double %107, ptr %9, align 8, !tbaa !12
  %108 = insertelement <2 x double> poison, double %105, i64 0
  %109 = insertelement <2 x double> %108, double %107, i64 1
  %110 = fcmp oge <2 x double> %109, zeroinitializer
  %111 = fneg <2 x double> %109
  %112 = select <2 x i1> %110, <2 x double> %109, <2 x double> %111
  %shift1628 = shufflevector <2 x double> %112, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %113 = fadd <2 x double> %112, %shift1628
  %114 = extractelement <2 x double> %113, i64 0
  br label %115

115:                                              ; preds = %.preheader1317, %92
  %.21103 = phi i32 [ %100, %92 ], [ %.11102, %.preheader1317 ]
  %.0 = phi double [ %114, %92 ], [ 0.000000e+00, %.preheader1317 ]
  %116 = icmp sgt i32 %.21113, 1
  br i1 %116, label %117, label %137

117:                                              ; preds = %115
  %118 = add nsw i32 %.21113, -1
  store i32 %118, ptr %7, align 4, !tbaa !5
  %119 = mul nsw i32 %.21113, %19
  %120 = sext i32 %119 to i64
  %gep = getelementptr %struct.doublecomplex, ptr %invariant.gep1352, i64 %120
  %121 = call i32 @izamax_(ptr noundef nonnull %7, ptr noundef %gep, ptr noundef nonnull @c__1) #6
  %122 = add nsw i32 %121, %119
  store i32 %122, ptr %7, align 4, !tbaa !5
  %123 = sext i32 %122 to i64
  %124 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %123
  %125 = load double, ptr %124, align 8, !tbaa !9
  store double %125, ptr %8, align 8, !tbaa !12
  %126 = call { double, double } @Cd(ptr noundef nonnull %124)
  %127 = extractvalue { double, double } %126, 1
  store double %127, ptr %9, align 8, !tbaa !12
  %128 = insertelement <2 x double> poison, double %125, i64 0
  %129 = insertelement <2 x double> %128, double %127, i64 1
  %130 = fcmp oge <2 x double> %129, zeroinitializer
  %131 = fneg <2 x double> %129
  %132 = select <2 x i1> %130, <2 x double> %129, <2 x double> %131
  %shift1629 = shufflevector <2 x double> %132, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %133 = fadd <2 x double> %132, %shift1629
  %134 = extractelement <2 x double> %133, i64 0
  %135 = fcmp ogt double %134, %.0
  br i1 %135, label %136, label %137

136:                                              ; preds = %117
  br label %137

137:                                              ; preds = %117, %136, %115
  %.31104 = phi i32 [ %121, %136 ], [ %.21103, %117 ], [ %.21103, %115 ]
  %.1 = phi double [ %134, %136 ], [ %.0, %117 ], [ %.0, %115 ]
  %138 = mul i32 %.21113, %47
  store i32 %138, ptr %7, align 4, !tbaa !5
  %139 = sext i32 %138 to i64
  %140 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %139
  %141 = load double, ptr %140, align 8, !tbaa !9
  store double %141, ptr %8, align 8, !tbaa !12
  %142 = fcmp oge double %141, 0.000000e+00
  %143 = fneg double %141
  %144 = select i1 %142, double %141, double %143
  %145 = fmul double %.1, 0x3FE47E0F66AFED07
  %146 = fcmp uge double %144, %145
  br i1 %146, label %.thread1474, label %147

147:                                              ; preds = %137
  %148 = icmp ne i32 %.01083, %.31104
  %149 = fcmp ugt double %.1, %.11064
  %or.cond = and i1 %148, %149
  br i1 %or.cond, label %.preheader1317, label %150

150:                                              ; preds = %147
  %151 = add nsw i32 %.010911368, -2
  %152 = add nsw i32 %.010911368, -1
  %.not1151 = icmp eq i32 %.01083, %.010911368
  br i1 %.not1151, label %.thread1465, label %153

153:                                              ; preds = %150
  %154 = icmp sgt i32 %.01083, 1
  br i1 %154, label %155, label %160

155:                                              ; preds = %153
  %156 = add nsw i32 %.01083, -1
  store i32 %156, ptr %7, align 4, !tbaa !5
  %157 = sext i32 %53 to i64
  %gep1355 = getelementptr %struct.doublecomplex, ptr %invariant.gep1352, i64 %157
  %158 = mul nsw i32 %.01083, %19
  %159 = sext i32 %158 to i64
  %gep1357 = getelementptr %struct.doublecomplex, ptr %invariant.gep1352, i64 %159
  call void @zswap_(ptr noundef nonnull %7, ptr noundef %gep1355, ptr noundef nonnull @c__1, ptr noundef %gep1357, ptr noundef nonnull @c__1) #6
  br label %160

160:                                              ; preds = %155, %153
  store i32 %152, ptr %7, align 4, !tbaa !5
  %.not1152.not1334 = icmp slt i32 %.01083, %152
  br i1 %.not1152.not1334, label %.lr.ph.preheader, label %.loopexit1492

.lr.ph.preheader:                                 ; preds = %160
  %161 = sext i32 %.01083 to i64
  %162 = sext i32 %53 to i64
  %invariant.gep = getelementptr %struct.doublecomplex, ptr %21, i64 %162
  %invariant.gep1530 = getelementptr %struct.doublecomplex, ptr %21, i64 %161
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %.lr.ph
  %indvars.iv = phi i64 [ %161, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ]
  %indvars.iv.next = add nsw i64 %indvars.iv, 1
  %gep1529 = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %indvars.iv.next
  %163 = call { double, double } @Cd(ptr noundef %gep1529)
  %164 = extractvalue { double, double } %163, 0
  %165 = extractvalue { double, double } %163, 1
  %166 = fneg double %165
  %167 = call ptr @_pCd(ptr noundef nonnull %10)
  %168 = getelementptr inbounds i8, ptr %167, i64 8
  store double %164, ptr %167, align 8
  store double %166, ptr %168, align 8
  %169 = mul nsw i64 %indvars.iv.next, %51
  %gep1531 = getelementptr %struct.doublecomplex, ptr %invariant.gep1530, i64 %169
  %170 = load <2 x double>, ptr %10, align 16, !tbaa !12
  %171 = call { double, double } @Cd(ptr noundef %gep1531)
  %172 = extractvalue { double, double } %171, 0
  %173 = extractvalue { double, double } %171, 1
  %174 = fneg double %173
  %175 = call ptr @_pCd(ptr noundef nonnull %10)
  %176 = getelementptr inbounds i8, ptr %175, i64 8
  store double %172, ptr %175, align 8
  store double %174, ptr %176, align 8
  %177 = load <2 x double>, ptr %10, align 16, !tbaa !12
  store <2 x double> %177, ptr %gep1529, align 8, !tbaa !12
  store <2 x double> %170, ptr %gep1531, align 8, !tbaa !12
  %178 = load i32, ptr %7, align 4, !tbaa !5
  %179 = sext i32 %178 to i64
  %.not1152.not = icmp slt i64 %indvars.iv.next, %179
  br i1 %.not1152.not, label %.lr.ph, label %.loopexit1492, !llvm.loop !14

.loopexit1492:                                    ; preds = %.lr.ph, %160
  %180 = add nsw i32 %.01083, %53
  store i32 %180, ptr %7, align 4, !tbaa !5
  %181 = sext i32 %180 to i64
  %182 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %181
  %183 = call { double, double } @Cd(ptr noundef %182)
  %184 = extractvalue { double, double } %183, 0
  %185 = extractvalue { double, double } %183, 1
  %186 = fneg double %185
  %187 = call ptr @_pCd(ptr noundef nonnull %10)
  %188 = getelementptr inbounds i8, ptr %187, i64 8
  store double %184, ptr %187, align 8
  store double %186, ptr %188, align 8
  %189 = load i32, ptr %7, align 4, !tbaa !5
  %190 = sext i32 %189 to i64
  %191 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %190
  %192 = load <2 x double>, ptr %10, align 16, !tbaa !12
  store <2 x double> %192, ptr %191, align 8, !tbaa !12
  %193 = load double, ptr %56, align 8, !tbaa !9
  %194 = mul i32 %.01083, %47
  %195 = sext i32 %194 to i64
  %196 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %195
  %197 = load double, ptr %196, align 8, !tbaa !9
  store double %197, ptr %8, align 8, !tbaa !12
  store double %197, ptr %56, align 8, !tbaa !9
  %198 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %55, i32 1
  store double 0.000000e+00, ptr %198, align 8, !tbaa !13
  store double %193, ptr %196, align 8, !tbaa !9
  %199 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %195, i32 1
  store double 0.000000e+00, ptr %199, align 8, !tbaa !13
  %.not1153 = icmp eq i32 %.21113, %152
  br i1 %.not1153, label %267, label %202

.thread1474:                                      ; preds = %137
  %200 = add nsw i32 %.010911368, -1
  %.not11531475 = icmp eq i32 %.21113, %.010911368
  br i1 %.not11531475, label %.critedge.sink.split, label %202

.thread1465:                                      ; preds = %150
  %.not11531467 = icmp eq i32 %.21113, %152
  br i1 %.not11531467, label %.thread1471, label %202

.thread1471:                                      ; preds = %.thread1465
  %201 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %55, i32 1
  store double 0.000000e+00, ptr %201, align 8, !tbaa !13
  br label %270

202:                                              ; preds = %.thread1474, %.thread1465, %.loopexit1492
  %203 = phi i32 [ %151, %.thread1465 ], [ %151, %.loopexit1492 ], [ %200, %.thread1474 ]
  %204 = phi i32 [ %152, %.thread1465 ], [ %152, %.loopexit1492 ], [ %.010911368, %.thread1474 ]
  %.0108314181469 = phi i32 [ %.010911368, %.thread1465 ], [ %.01083, %.loopexit1492 ], [ %.01083, %.thread1474 ]
  br i1 %116, label %205, label %211

205:                                              ; preds = %202
  %206 = add nsw i32 %.21113, -1
  store i32 %206, ptr %7, align 4, !tbaa !5
  %207 = mul nsw i32 %204, %19
  %208 = sext i32 %207 to i64
  %gep1359 = getelementptr %struct.doublecomplex, ptr %invariant.gep1352, i64 %208
  %209 = mul nsw i32 %.21113, %19
  %210 = sext i32 %209 to i64
  %gep1361 = getelementptr %struct.doublecomplex, ptr %invariant.gep1352, i64 %210
  call void @zswap_(ptr noundef nonnull %7, ptr noundef %gep1359, ptr noundef nonnull @c__1, ptr noundef %gep1361, ptr noundef nonnull @c__1) #6
  br label %211

211:                                              ; preds = %205, %202
  store i32 %203, ptr %7, align 4, !tbaa !5
  %.not1154.not1336 = icmp slt i32 %.21113, %203
  %212 = mul nsw i32 %204, %19
  br i1 %.not1154.not1336, label %.lr.ph1339, label %._crit_edge1340

.lr.ph1339:                                       ; preds = %211
  %213 = sext i32 %.21113 to i64
  %214 = sext i32 %212 to i64
  %invariant.gep1532 = getelementptr %struct.doublecomplex, ptr %21, i64 %214
  %invariant.gep1534 = getelementptr %struct.doublecomplex, ptr %21, i64 %213
  br label %215

215:                                              ; preds = %.lr.ph1339, %215
  %indvars.iv1428 = phi i64 [ %213, %.lr.ph1339 ], [ %indvars.iv.next1429, %215 ]
  %indvars.iv.next1429 = add nsw i64 %indvars.iv1428, 1
  %gep1533 = getelementptr %struct.doublecomplex, ptr %invariant.gep1532, i64 %indvars.iv.next1429
  %216 = call { double, double } @Cd(ptr noundef %gep1533)
  %217 = extractvalue { double, double } %216, 0
  %218 = extractvalue { double, double } %216, 1
  %219 = fneg double %218
  %220 = call ptr @_pCd(ptr noundef nonnull %10)
  %221 = getelementptr inbounds i8, ptr %220, i64 8
  store double %217, ptr %220, align 8
  store double %219, ptr %221, align 8
  %222 = mul nsw i64 %indvars.iv.next1429, %51
  %gep1535 = getelementptr %struct.doublecomplex, ptr %invariant.gep1534, i64 %222
  %223 = load <2 x double>, ptr %10, align 16, !tbaa !12
  %224 = call { double, double } @Cd(ptr noundef %gep1535)
  %225 = extractvalue { double, double } %224, 0
  %226 = extractvalue { double, double } %224, 1
  %227 = fneg double %226
  %228 = call ptr @_pCd(ptr noundef nonnull %10)
  %229 = getelementptr inbounds i8, ptr %228, i64 8
  store double %225, ptr %228, align 8
  store double %227, ptr %229, align 8
  %230 = load <2 x double>, ptr %10, align 16, !tbaa !12
  store <2 x double> %230, ptr %gep1533, align 8, !tbaa !12
  store <2 x double> %223, ptr %gep1535, align 8, !tbaa !12
  %231 = load i32, ptr %7, align 4, !tbaa !5
  %232 = sext i32 %231 to i64
  %.not1154.not = icmp slt i64 %indvars.iv.next1429, %232
  br i1 %.not1154.not, label %215, label %._crit_edge1340, !llvm.loop !16

._crit_edge1340:                                  ; preds = %215, %211
  %233 = add nsw i32 %212, %.21113
  store i32 %233, ptr %7, align 4, !tbaa !5
  %234 = sext i32 %233 to i64
  %235 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %234
  %236 = call { double, double } @Cd(ptr noundef %235)
  %237 = extractvalue { double, double } %236, 0
  %238 = extractvalue { double, double } %236, 1
  %239 = fneg double %238
  %240 = call ptr @_pCd(ptr noundef nonnull %10)
  %241 = getelementptr inbounds i8, ptr %240, i64 8
  store double %237, ptr %240, align 8
  store double %239, ptr %241, align 8
  %242 = load i32, ptr %7, align 4, !tbaa !5
  %243 = sext i32 %242 to i64
  %244 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %243
  %245 = load <2 x double>, ptr %10, align 16, !tbaa !12
  store <2 x double> %245, ptr %244, align 8, !tbaa !12
  %246 = add nsw i32 %212, %204
  %247 = sext i32 %246 to i64
  %248 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %247
  %249 = load double, ptr %248, align 8, !tbaa !9
  %250 = load double, ptr %140, align 8, !tbaa !9
  store double %250, ptr %8, align 8, !tbaa !12
  store double %250, ptr %248, align 8, !tbaa !9
  %251 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %247, i32 1
  store double 0.000000e+00, ptr %251, align 8, !tbaa !13
  store i32 %138, ptr %7, align 4, !tbaa !5
  store double %249, ptr %140, align 8, !tbaa !9
  %252 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %139, i32 1
  store double 0.000000e+00, ptr %252, align 8, !tbaa !13
  br i1 %146, label %.critedge, label %253

253:                                              ; preds = %._crit_edge1340
  %254 = load double, ptr %56, align 8, !tbaa !9
  store double %254, ptr %8, align 8, !tbaa !12
  %255 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %55, i32 1
  store double 0.000000e+00, ptr %255, align 8, !tbaa !13
  %256 = add nsw i32 %.010911368, -1
  %257 = add nsw i32 %256, %53
  %258 = sext i32 %257 to i64
  %259 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %258
  %260 = load double, ptr %259, align 8, !tbaa !9
  %261 = getelementptr inbounds i8, ptr %259, i64 8
  %262 = load double, ptr %261, align 8, !tbaa !13
  %263 = add nsw i32 %.21113, %53
  %264 = sext i32 %263 to i64
  %265 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %264
  %266 = load <2 x double>, ptr %265, align 8, !tbaa !12
  store <2 x double> %266, ptr %259, align 8, !tbaa !12
  store i32 %263, ptr %7, align 4, !tbaa !5
  store double %260, ptr %265, align 8, !tbaa !9
  br label %302

267:                                              ; preds = %.loopexit1492
  store i32 %54, ptr %7, align 4, !tbaa !5
  %268 = load double, ptr %56, align 8, !tbaa !9
  store double %268, ptr %8, align 8, !tbaa !12
  %269 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %55, i32 1
  store double 0.000000e+00, ptr %269, align 8, !tbaa !13
  br i1 %146, label %.critedge, label %270

270:                                              ; preds = %.thread1471, %267
  %.01083141814701473 = phi i32 [ %.010911368, %.thread1471 ], [ %.01083, %267 ]
  %271 = add nsw i32 %.010911368, -1
  %272 = mul i32 %271, %47
  store i32 %272, ptr %7, align 4, !tbaa !5
  %273 = sext i32 %272 to i64
  %274 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %273
  %275 = load double, ptr %274, align 8, !tbaa !9
  store double %275, ptr %8, align 8, !tbaa !12
  br label %302

.critedge.sink.split:                             ; preds = %.thread1474, %89
  %.31070118311961221.ph = phi i32 [ %.010911368, %89 ], [ %.21113, %.thread1474 ]
  %.41105118012021219.ph = phi i32 [ %.011011367, %89 ], [ %.31104, %.thread1474 ]
  %.41115117912041218.ph = phi i32 [ %.11112, %89 ], [ %.21113, %.thread1474 ]
  store i32 %54, ptr %7, align 4, !tbaa !5
  %storemerge = load double, ptr %56, align 8, !tbaa !9
  store double %storemerge, ptr %8, align 8, !tbaa !12
  %276 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %55, i32 1
  store double 0.000000e+00, ptr %276, align 8, !tbaa !13
  br label %.critedge

.critedge:                                        ; preds = %.critedge.sink.split, %267, %._crit_edge1340
  %.31070118311961221 = phi i32 [ %.21113, %._crit_edge1340 ], [ %.21113, %267 ], [ %.31070118311961221.ph, %.critedge.sink.split ]
  %.41105118012021219 = phi i32 [ %.31104, %._crit_edge1340 ], [ %.31104, %267 ], [ %.41105118012021219.ph, %.critedge.sink.split ]
  %.41115117912041218 = phi i32 [ %.21113, %._crit_edge1340 ], [ %.21113, %267 ], [ %.41115117912041218.ph, %.critedge.sink.split ]
  br i1 %.not1148, label %438, label %277

277:                                              ; preds = %.critedge
  %278 = load double, ptr %56, align 8, !tbaa !9
  %279 = fcmp oge double %278, 0.000000e+00
  %280 = fneg double %278
  %281 = select i1 %279, double %278, double %280
  %282 = fcmp ult double %281, %37
  br i1 %282, label %288, label %283

283:                                              ; preds = %277
  %284 = fdiv double 1.000000e+00, %278
  store double %284, ptr %13, align 8, !tbaa !12
  %285 = add nsw i32 %.010911368, -1
  store i32 %285, ptr %7, align 4, !tbaa !5
  %286 = fneg double %284
  store double %286, ptr %8, align 8, !tbaa !12
  %287 = sext i32 %53 to i64
  %gep1363 = getelementptr %struct.doublecomplex, ptr %invariant.gep1352, i64 %287
  call void @zher_(ptr noundef %0, ptr noundef nonnull %7, ptr noundef nonnull %8, ptr noundef %gep1363, ptr noundef nonnull @c__1, ptr noundef nonnull %2, ptr noundef nonnull %3) #6
  store i32 %285, ptr %7, align 4, !tbaa !5
  call void @zdscal_(ptr noundef nonnull %7, ptr noundef nonnull %13, ptr noundef %gep1363, ptr noundef nonnull @c__1) #6
  br label %438

288:                                              ; preds = %277
  store double %278, ptr %13, align 8, !tbaa !12
  %289 = add nsw i32 %.010911368, -1
  %.not1155.not1345 = icmp sgt i32 %.010911368, 1
  %290 = sext i32 %53 to i64
  br i1 %.not1155.not1345, label %.lr.ph1348.preheader, label %._crit_edge1458

.lr.ph1348.preheader:                             ; preds = %288
  %wide.trip.count = zext nneg i32 %.010911368 to i64
  %invariant.gep1540 = getelementptr %struct.doublecomplex, ptr %21, i64 %290
  %291 = add nsw i64 %wide.trip.count, -1
  %min.iters.check = icmp eq i32 %.010911368, 2
  br i1 %min.iters.check, label %.lr.ph1348.preheader1651, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph1348.preheader
  %n.vec = and i64 %291, -2
  %ind.end = or i64 %291, 1
  %broadcast.splatinsert = insertelement <2 x double> poison, double %278, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = or disjoint i64 %index, 1
  %292 = getelementptr %struct.doublecomplex, ptr %invariant.gep1540, i64 %offset.idx
  %wide.vec = load <4 x double>, ptr %292, align 8, !tbaa !12
  %strided.vec = shufflevector <4 x double> %wide.vec, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec1607 = shufflevector <4 x double> %wide.vec, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %293 = fdiv <2 x double> %strided.vec, %broadcast.splat
  %294 = fdiv <2 x double> %strided.vec1607, %broadcast.splat
  %interleaved.vec = shufflevector <2 x double> %293, <2 x double> %294, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec, ptr %292, align 8, !tbaa !12
  %index.next = add nuw i64 %index, 2
  %295 = icmp eq i64 %index.next, %n.vec
  br i1 %295, label %middle.block, label %vector.body, !llvm.loop !17

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %291, %n.vec
  %296 = shufflevector <2 x double> %293, <2 x double> %294, <2 x i32> <i32 1, i32 3>
  br i1 %cmp.n, label %._crit_edge1349, label %.lr.ph1348.preheader1651

.lr.ph1348.preheader1651:                         ; preds = %middle.block, %.lr.ph1348.preheader
  %indvars.iv1437.ph = phi i64 [ 1, %.lr.ph1348.preheader ], [ %ind.end, %middle.block ]
  %297 = insertelement <2 x double> poison, double %278, i64 0
  %298 = shufflevector <2 x double> %297, <2 x double> poison, <2 x i32> zeroinitializer
  br label %.lr.ph1348

.lr.ph1348:                                       ; preds = %.lr.ph1348.preheader1651, %.lr.ph1348
  %indvars.iv1437 = phi i64 [ %indvars.iv.next1438, %.lr.ph1348 ], [ %indvars.iv1437.ph, %.lr.ph1348.preheader1651 ]
  %gep1541 = getelementptr %struct.doublecomplex, ptr %invariant.gep1540, i64 %indvars.iv1437
  %299 = load <2 x double>, ptr %gep1541, align 8, !tbaa !12
  %300 = fdiv <2 x double> %299, %298
  store <2 x double> %300, ptr %gep1541, align 8, !tbaa !12
  %indvars.iv.next1438 = add nuw nsw i64 %indvars.iv1437, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next1438, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge1349, label %.lr.ph1348, !llvm.loop !20

._crit_edge1349:                                  ; preds = %.lr.ph1348, %middle.block
  %301 = phi <2 x double> [ %296, %middle.block ], [ %300, %.lr.ph1348 ]
  store <2 x double> %301, ptr %10, align 16, !tbaa !12
  br label %._crit_edge1458

._crit_edge1458:                                  ; preds = %288, %._crit_edge1349
  store i32 %289, ptr %7, align 4, !tbaa !5
  store double %280, ptr %8, align 8, !tbaa !12
  %gep1365 = getelementptr %struct.doublecomplex, ptr %invariant.gep1352, i64 %290
  call void @zher_(ptr noundef %0, ptr noundef nonnull %7, ptr noundef nonnull %8, ptr noundef %gep1365, ptr noundef nonnull @c__1, ptr noundef nonnull %2, ptr noundef nonnull %3) #6
  br label %438

302:                                              ; preds = %253, %270
  %.sink1565 = phi i64 [ %264, %253 ], [ %273, %270 ]
  %.sink1563 = phi double [ %262, %253 ], [ 0.000000e+00, %270 ]
  %.0108314181468 = phi i32 [ %.0108314181469, %253 ], [ %.01083141814701473, %270 ]
  %303 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %.sink1565, i32 1
  store double %.sink1563, ptr %303, align 8, !tbaa !13
  %304 = icmp sgt i32 %.010911368, 2
  br i1 %304, label %.lr.ph1344.preheader, label %.loopexit1316

.lr.ph1344.preheader:                             ; preds = %302
  %305 = add nsw i32 %.010911368, -1
  %306 = add nsw i32 %305, %53
  store i32 %306, ptr %7, align 4, !tbaa !5
  %307 = sext i32 %306 to i64
  %308 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %307
  %309 = load double, ptr %308, align 8, !tbaa !9
  store double %309, ptr %8, align 8, !tbaa !12
  %310 = call { double, double } @Cd(ptr noundef nonnull %308)
  %311 = extractvalue { double, double } %310, 1
  store double %311, ptr %9, align 8, !tbaa !12
  %312 = call double @dlapy2_(ptr noundef nonnull %8, ptr noundef nonnull %9) #6
  %313 = load double, ptr %56, align 8, !tbaa !9
  %314 = fdiv double %313, %312
  store double %314, ptr %13, align 8, !tbaa !12
  %315 = mul nsw i32 %305, %19
  %316 = add nsw i32 %315, %305
  %317 = sext i32 %316 to i64
  %318 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %317
  %319 = load double, ptr %318, align 8, !tbaa !9
  %320 = fdiv double %319, %312
  %321 = load <2 x double>, ptr %308, align 8, !tbaa !12
  %322 = insertelement <2 x double> poison, double %312, i64 0
  %323 = shufflevector <2 x double> %322, <2 x double> poison, <2 x i32> zeroinitializer
  %324 = fdiv <2 x double> %321, %323
  store <2 x double> %324, ptr %10, align 16, !tbaa !12
  store <2 x double> %324, ptr %14, align 16, !tbaa !12
  %325 = call double @llvm.fmuladd.f64(double %314, double %320, double -1.000000e+00)
  %326 = fdiv double 1.000000e+00, %325
  %327 = add nsw i32 %.010911368, -2
  %328 = zext nneg i32 %327 to i64
  %329 = sext i32 %53 to i64
  %330 = sext i32 %315 to i64
  %invariant.gep1536 = getelementptr %struct.doublecomplex, ptr %21, i64 %329
  %invariant.gep1538 = getelementptr %struct.doublecomplex, ptr %21, i64 %330
  %331 = insertelement <2 x double> poison, double %326, i64 0
  %332 = shufflevector <2 x double> %331, <2 x double> poison, <2 x i32> zeroinitializer
  %333 = insertelement <2 x double> poison, double %320, i64 0
  %334 = shufflevector <2 x double> %333, <2 x double> poison, <2 x i32> zeroinitializer
  %invariant.gep1710 = getelementptr %struct.doublecomplex, ptr %21, i64 %329
  br label %.lr.ph1344

.lr.ph1344:                                       ; preds = %.lr.ph1344.preheader, %426
  %indvars.iv1431 = phi i64 [ %328, %.lr.ph1344.preheader ], [ %indvars.iv.next1432, %426 ]
  %335 = add nsw i64 %indvars.iv1431, %330
  %336 = trunc nsw i64 %335 to i32
  store i32 %336, ptr %7, align 4, !tbaa !5
  %337 = load double, ptr %13, align 8, !tbaa !12
  %338 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %335
  %gep1711 = getelementptr %struct.doublecomplex, ptr %invariant.gep1710, i64 %indvars.iv1431
  %339 = load <2 x double>, ptr %338, align 8, !tbaa !12
  %340 = insertelement <2 x double> poison, double %337, i64 0
  %341 = shufflevector <2 x double> %340, <2 x double> poison, <2 x i32> zeroinitializer
  %342 = fmul <2 x double> %341, %339
  %343 = call { double, double } @Cd(ptr noundef nonnull %14)
  %344 = extractvalue { double, double } %343, 0
  %345 = extractvalue { double, double } %343, 1
  %346 = fneg double %345
  %347 = call ptr @_pCd(ptr noundef nonnull %11)
  %348 = getelementptr inbounds i8, ptr %347, i64 8
  store double %344, ptr %347, align 8
  store double %346, ptr %348, align 8
  %349 = load <2 x double>, ptr %11, align 16
  %350 = load double, ptr %50, align 8, !tbaa !13
  %351 = load <2 x double>, ptr %gep1711, align 8, !tbaa !12
  %352 = fneg double %350
  %353 = insertelement <2 x double> poison, double %350, i64 0
  %354 = insertelement <2 x double> %353, double %352, i64 1
  %355 = fmul <2 x double> %351, %354
  %356 = shufflevector <2 x double> %355, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %357 = shufflevector <2 x double> %349, <2 x double> poison, <2 x i32> zeroinitializer
  %358 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %357, <2 x double> %351, <2 x double> %356)
  %359 = fsub <2 x double> %342, %358
  %360 = fmul <2 x double> %332, %359
  store <2 x double> %360, ptr %17, align 16, !tbaa !12
  %361 = load <2 x double>, ptr %14, align 16
  %362 = load double, ptr %49, align 8, !tbaa !13
  %363 = fneg double %362
  %364 = fmul <2 x double> %334, %351
  %365 = load <2 x double>, ptr %338, align 8, !tbaa !12
  %366 = insertelement <2 x double> poison, double %362, i64 0
  %367 = insertelement <2 x double> %366, double %363, i64 1
  %368 = fmul <2 x double> %365, %367
  %369 = shufflevector <2 x double> %368, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %370 = shufflevector <2 x double> %361, <2 x double> poison, <2 x i32> zeroinitializer
  %371 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %370, <2 x double> %365, <2 x double> %369)
  %372 = fsub <2 x double> %364, %371
  %373 = fmul <2 x double> %332, %372
  store <2 x double> %373, ptr %10, align 16, !tbaa !12
  store <2 x double> %373, ptr %16, align 16, !tbaa !12
  %374 = mul nsw i64 %indvars.iv1431, %51
  br label %375

375:                                              ; preds = %.lr.ph1344, %375
  %indvars.iv1433 = phi i64 [ %indvars.iv1431, %.lr.ph1344 ], [ %indvars.iv.next1434, %375 ]
  %376 = add nsw i64 %indvars.iv1433, %374
  %377 = trunc nsw i64 %376 to i32
  store i32 %377, ptr %7, align 4, !tbaa !5
  %gep1537 = getelementptr %struct.doublecomplex, ptr %invariant.gep1536, i64 %indvars.iv1433
  %378 = load double, ptr %gep1537, align 8, !tbaa !9
  %379 = fdiv double %378, %312
  %380 = getelementptr inbounds i8, ptr %gep1537, i64 8
  %381 = load double, ptr %380, align 8, !tbaa !13
  %382 = fdiv double %381, %312
  %383 = call { double, double } @Cd(ptr noundef nonnull %16)
  %384 = extractvalue { double, double } %383, 0
  %385 = extractvalue { double, double } %383, 1
  %386 = fneg double %385
  %387 = call ptr @_pCd(ptr noundef nonnull %11)
  %388 = getelementptr inbounds i8, ptr %387, i64 8
  store double %384, ptr %387, align 8
  store double %386, ptr %388, align 8
  %389 = fneg double %382
  %390 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %376
  %gep1539 = getelementptr %struct.doublecomplex, ptr %invariant.gep1538, i64 %indvars.iv1433
  %391 = load double, ptr %gep1539, align 8, !tbaa !9
  %392 = fdiv double %391, %312
  %393 = getelementptr inbounds i8, ptr %gep1539, i64 8
  %394 = load double, ptr %393, align 8, !tbaa !13
  %395 = fdiv double %394, %312
  %396 = fneg double %395
  %397 = load <2 x double>, ptr %11, align 16, !tbaa !12
  %398 = insertelement <2 x double> poison, double %382, i64 0
  %399 = insertelement <2 x double> %398, double %389, i64 1
  %400 = fmul <2 x double> %397, %399
  %401 = shufflevector <2 x double> %400, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %402 = insertelement <2 x double> poison, double %379, i64 0
  %403 = shufflevector <2 x double> %402, <2 x double> poison, <2 x i32> zeroinitializer
  %404 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %403, <2 x double> %397, <2 x double> %401)
  %405 = load <2 x double>, ptr %390, align 8, !tbaa !12
  %406 = fsub <2 x double> %405, %404
  %407 = call { double, double } @Cd(ptr noundef nonnull %17)
  %408 = extractvalue { double, double } %407, 0
  %409 = extractvalue { double, double } %407, 1
  %410 = fneg double %409
  %411 = call ptr @_pCd(ptr noundef nonnull %12)
  %412 = getelementptr inbounds i8, ptr %411, i64 8
  store double %408, ptr %411, align 8
  store double %410, ptr %412, align 8
  %413 = load <2 x double>, ptr %12, align 16, !tbaa !12
  %414 = insertelement <2 x double> poison, double %395, i64 0
  %415 = insertelement <2 x double> %414, double %396, i64 1
  %416 = fmul <2 x double> %413, %415
  %417 = shufflevector <2 x double> %416, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %418 = insertelement <2 x double> poison, double %392, i64 0
  %419 = shufflevector <2 x double> %418, <2 x double> poison, <2 x i32> zeroinitializer
  %420 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %419, <2 x double> %413, <2 x double> %417)
  %421 = fsub <2 x double> %406, %420
  store <2 x double> %421, ptr %10, align 16, !tbaa !12
  %422 = load i32, ptr %7, align 4, !tbaa !5
  %423 = sext i32 %422 to i64
  %424 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %423
  store <2 x double> %421, ptr %424, align 8, !tbaa !12
  %indvars.iv.next1434 = add nsw i64 %indvars.iv1433, -1
  %425 = icmp ugt i64 %indvars.iv1433, 1
  br i1 %425, label %375, label %426, !llvm.loop !21

426:                                              ; preds = %375
  %427 = load <2 x double>, ptr %16, align 16, !tbaa !12
  %428 = fdiv <2 x double> %427, %323
  store <2 x double> %428, ptr %gep1711, align 8, !tbaa !12
  %429 = load <2 x double>, ptr %17, align 16, !tbaa !12
  %430 = fdiv <2 x double> %429, %323
  store <2 x double> %430, ptr %338, align 8, !tbaa !12
  %431 = trunc nuw nsw i64 %indvars.iv1431 to i32
  %432 = mul i32 %47, %431
  store i32 %432, ptr %7, align 4, !tbaa !5
  %433 = sext i32 %432 to i64
  %434 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %433
  %435 = load double, ptr %434, align 8, !tbaa !9
  store double %435, ptr %8, align 8, !tbaa !12
  store double %435, ptr %10, align 16, !tbaa !9
  store double 0.000000e+00, ptr %48, align 8, !tbaa !13
  %436 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %433, i32 1
  store double 0.000000e+00, ptr %436, align 8, !tbaa !13
  %indvars.iv.next1432 = add nsw i64 %indvars.iv1431, -1
  %437 = icmp sgt i64 %indvars.iv1431, 1
  br i1 %437, label %.lr.ph1344, label %.loopexit1316, !llvm.loop !22

438:                                              ; preds = %86, %283, %._crit_edge1458, %.critedge
  %.51116.ph = phi i32 [ %.41115117912041218, %.critedge ], [ %.41115117912041218, %._crit_edge1458 ], [ %.41115117912041218, %283 ], [ %.11112, %86 ]
  %.51106.ph = phi i32 [ %.41105118012021219, %.critedge ], [ %.41105118012021219, %._crit_edge1458 ], [ %.41105118012021219, %283 ], [ %.011011367, %86 ]
  %.41071.ph = phi i32 [ %.31070118311961221, %.critedge ], [ %.31070118311961221, %._crit_edge1458 ], [ %.31070118311961221, %283 ], [ %.010911368, %86 ]
  %439 = zext nneg i32 %.010911368 to i64
  %440 = getelementptr inbounds i32, ptr %22, i64 %439
  store i32 %.41071.ph, ptr %440, align 4, !tbaa !5
  br label %446

.loopexit1316:                                    ; preds = %426, %302
  %441 = sub nsw i32 0, %.0108314181468
  %442 = zext nneg i32 %.010911368 to i64
  %443 = getelementptr inbounds i32, ptr %22, i64 %442
  store i32 %441, ptr %443, align 4, !tbaa !5
  %444 = sub nsw i32 0, %.21113
  %445 = getelementptr i8, ptr %443, i64 -4
  store i32 %444, ptr %445, align 4, !tbaa !5
  br label %446

446:                                              ; preds = %.loopexit1316, %438
  %.31078.neg1233 = phi i32 [ -2, %.loopexit1316 ], [ -1, %438 ]
  %.511061231 = phi i32 [ %.31104, %.loopexit1316 ], [ %.51106.ph, %438 ]
  %.511161229 = phi i32 [ %.21113, %.loopexit1316 ], [ %.51116.ph, %438 ]
  %447 = add nsw i32 %.31078.neg1233, %.010911368
  %448 = icmp slt i32 %447, 1
  br i1 %448, label %.loopexit1315, label %52

449:                                              ; preds = %.lr.ph1406, %888
  %450 = phi i32 [ %38, %.lr.ph1406 ], [ %890, %888 ]
  %.110921401 = phi i32 [ 1, %.lr.ph1406 ], [ %889, %888 ]
  %.611071400 = phi i32 [ undef, %.lr.ph1406 ], [ %.111306, %888 ]
  %.611171399 = phi i32 [ undef, %.lr.ph1406 ], [ %.1111221304, %888 ]
  %451 = mul nsw i32 %.110921401, %19
  %452 = add nsw i32 %451, %.110921401
  %453 = sext i32 %452 to i64
  %454 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %453
  %455 = load double, ptr %454, align 8, !tbaa !9
  store double %455, ptr %8, align 8, !tbaa !12
  %456 = fcmp oge double %455, 0.000000e+00
  %457 = fneg double %455
  %458 = select i1 %456, double %455, double %457
  %459 = icmp slt i32 %.110921401, %450
  br i1 %459, label %460, label %481

460:                                              ; preds = %449
  %461 = sub nsw i32 %450, %.110921401
  store i32 %461, ptr %7, align 4, !tbaa !5
  %462 = add nuw nsw i32 %.110921401, 1
  %463 = add nsw i32 %462, %451
  %464 = sext i32 %463 to i64
  %465 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %464
  %466 = call i32 @izamax_(ptr noundef nonnull %7, ptr noundef %465, ptr noundef nonnull @c__1) #6
  %467 = add nsw i32 %466, %.110921401
  %468 = add nsw i32 %467, %451
  store i32 %468, ptr %7, align 4, !tbaa !5
  %469 = sext i32 %468 to i64
  %470 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %469
  %471 = load double, ptr %470, align 8, !tbaa !9
  store double %471, ptr %8, align 8, !tbaa !12
  %472 = call { double, double } @Cd(ptr noundef nonnull %470)
  %473 = extractvalue { double, double } %472, 1
  store double %473, ptr %9, align 8, !tbaa !12
  %474 = insertelement <2 x double> poison, double %471, i64 0
  %475 = insertelement <2 x double> %474, double %473, i64 1
  %476 = fcmp oge <2 x double> %475, zeroinitializer
  %477 = fneg <2 x double> %475
  %478 = select <2 x i1> %476, <2 x double> %475, <2 x double> %477
  %shift1630 = shufflevector <2 x double> %478, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %479 = fadd <2 x double> %478, %shift1630
  %480 = extractelement <2 x double> %479, i64 0
  br label %481

481:                                              ; preds = %449, %460
  %.71118 = phi i32 [ %467, %460 ], [ %.611171399, %449 ]
  %.31066 = phi double [ %480, %460 ], [ 0.000000e+00, %449 ]
  %482 = fcmp oge double %458, %.31066
  %483 = select i1 %482, double %458, double %.31066
  %484 = fcmp oeq double %483, 0.000000e+00
  br i1 %484, label %485, label %492

485:                                              ; preds = %481
  %486 = load i32, ptr %5, align 4, !tbaa !5
  %487 = icmp eq i32 %486, 0
  br i1 %487, label %488, label %489

488:                                              ; preds = %485
  store i32 %.110921401, ptr %5, align 4, !tbaa !5
  br label %489

489:                                              ; preds = %488, %485
  store i32 %452, ptr %7, align 4, !tbaa !5
  %490 = load double, ptr %454, align 8, !tbaa !9
  store double %490, ptr %8, align 8, !tbaa !12
  %491 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %453, i32 1
  store double 0.000000e+00, ptr %491, align 8, !tbaa !13
  br label %880

492:                                              ; preds = %481
  %493 = fmul double %.31066, 0x3FE47E0F66AFED07
  %494 = fcmp olt double %458, %493
  br i1 %494, label %.preheader, label %.critedge1313.sink.split

.preheader:                                       ; preds = %492
  %495 = add nsw i32 %.110921401, -1
  br label %496

496:                                              ; preds = %.preheader, %555
  %.81119 = phi i32 [ %.91110, %555 ], [ %.71118, %.preheader ]
  %.71108 = phi i32 [ %.91110, %555 ], [ %.611071400, %.preheader ]
  %.41087 = phi i32 [ %.81119, %555 ], [ %.110921401, %.preheader ]
  %.4 = phi double [ %.3, %555 ], [ %.31066, %.preheader ]
  %.not1139 = icmp eq i32 %.81119, %.110921401
  br i1 %.not1139, label %518, label %497

497:                                              ; preds = %496
  %498 = sub nsw i32 %.81119, %.110921401
  store i32 %498, ptr %7, align 4, !tbaa !5
  %499 = add nsw i32 %.81119, %451
  %500 = sext i32 %499 to i64
  %501 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %500
  %502 = call i32 @izamax_(ptr noundef nonnull %7, ptr noundef %501, ptr noundef nonnull %3) #6
  %503 = add nsw i32 %495, %502
  %504 = mul nsw i32 %503, %19
  %505 = add nsw i32 %504, %.81119
  store i32 %505, ptr %7, align 4, !tbaa !5
  %506 = sext i32 %505 to i64
  %507 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %506
  %508 = load double, ptr %507, align 8, !tbaa !9
  store double %508, ptr %8, align 8, !tbaa !12
  %509 = call { double, double } @Cd(ptr noundef nonnull %507)
  %510 = extractvalue { double, double } %509, 1
  store double %510, ptr %9, align 8, !tbaa !12
  %511 = insertelement <2 x double> poison, double %508, i64 0
  %512 = insertelement <2 x double> %511, double %510, i64 1
  %513 = fcmp oge <2 x double> %512, zeroinitializer
  %514 = fneg <2 x double> %512
  %515 = select <2 x i1> %513, <2 x double> %512, <2 x double> %514
  %shift1631 = shufflevector <2 x double> %515, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %516 = fadd <2 x double> %515, %shift1631
  %517 = extractelement <2 x double> %516, i64 0
  br label %518

518:                                              ; preds = %496, %497
  %.81109 = phi i32 [ %503, %497 ], [ %.71108, %496 ]
  %.2 = phi double [ %517, %497 ], [ 0.000000e+00, %496 ]
  %519 = load i32, ptr %1, align 4, !tbaa !5
  %520 = icmp slt i32 %.81119, %519
  br i1 %520, label %521, label %545

521:                                              ; preds = %518
  %522 = sub nsw i32 %519, %.81119
  store i32 %522, ptr %7, align 4, !tbaa !5
  %523 = add nsw i32 %.81119, 1
  %524 = mul nsw i32 %.81119, %19
  %525 = add nsw i32 %523, %524
  %526 = sext i32 %525 to i64
  %527 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %526
  %528 = call i32 @izamax_(ptr noundef nonnull %7, ptr noundef %527, ptr noundef nonnull @c__1) #6
  %529 = add nsw i32 %528, %.81119
  %530 = add nsw i32 %529, %524
  store i32 %530, ptr %7, align 4, !tbaa !5
  %531 = sext i32 %530 to i64
  %532 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %531
  %533 = load double, ptr %532, align 8, !tbaa !9
  store double %533, ptr %8, align 8, !tbaa !12
  %534 = call { double, double } @Cd(ptr noundef nonnull %532)
  %535 = extractvalue { double, double } %534, 1
  store double %535, ptr %9, align 8, !tbaa !12
  %536 = insertelement <2 x double> poison, double %533, i64 0
  %537 = insertelement <2 x double> %536, double %535, i64 1
  %538 = fcmp oge <2 x double> %537, zeroinitializer
  %539 = fneg <2 x double> %537
  %540 = select <2 x i1> %538, <2 x double> %537, <2 x double> %539
  %shift1632 = shufflevector <2 x double> %540, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %541 = fadd <2 x double> %540, %shift1632
  %542 = extractelement <2 x double> %541, i64 0
  %543 = fcmp ogt double %542, %.2
  br i1 %543, label %544, label %545

544:                                              ; preds = %521
  br label %545

545:                                              ; preds = %521, %544, %518
  %.91110 = phi i32 [ %529, %544 ], [ %.81109, %521 ], [ %.81109, %518 ]
  %.3 = phi double [ %542, %544 ], [ %.2, %521 ], [ %.2, %518 ]
  %546 = mul i32 %.81119, %40
  store i32 %546, ptr %7, align 4, !tbaa !5
  %547 = sext i32 %546 to i64
  %548 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %547
  %549 = load double, ptr %548, align 8, !tbaa !9
  store double %549, ptr %8, align 8, !tbaa !12
  %550 = fcmp oge double %549, 0.000000e+00
  %551 = fneg double %549
  %552 = select i1 %550, double %549, double %551
  %553 = fmul double %.3, 0x3FE47E0F66AFED07
  %554 = fcmp uge double %552, %553
  br i1 %554, label %.thread1487, label %555

555:                                              ; preds = %545
  %556 = icmp ne i32 %.41087, %.91110
  %557 = fcmp ugt double %.3, %.4
  %or.cond1158 = and i1 %556, %557
  br i1 %or.cond1158, label %496, label %558

558:                                              ; preds = %555
  %559 = add nuw nsw i32 %.110921401, 2
  %560 = add nuw nsw i32 %.110921401, 1
  %.not1141 = icmp eq i32 %.41087, %.110921401
  br i1 %.not1141, label %.thread1478, label %561

561:                                              ; preds = %558
  %562 = load i32, ptr %1, align 4, !tbaa !5
  %563 = icmp slt i32 %.41087, %562
  br i1 %563, label %564, label %574

564:                                              ; preds = %561
  %565 = sub nsw i32 %562, %.41087
  store i32 %565, ptr %7, align 4, !tbaa !5
  %566 = add nsw i32 %.41087, 1
  %567 = add nsw i32 %566, %451
  %568 = sext i32 %567 to i64
  %569 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %568
  %570 = mul nsw i32 %.41087, %19
  %571 = add nsw i32 %566, %570
  %572 = sext i32 %571 to i64
  %573 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %572
  call void @zswap_(ptr noundef nonnull %7, ptr noundef %569, ptr noundef nonnull @c__1, ptr noundef %573, ptr noundef nonnull @c__1) #6
  br label %574

574:                                              ; preds = %564, %561
  %575 = add nsw i32 %.41087, -1
  store i32 %575, ptr %7, align 4, !tbaa !5
  %.not1142.not1373 = icmp slt i32 %.110921401, %575
  br i1 %.not1142.not1373, label %.lr.ph1376.preheader, label %.loopexit1491

.lr.ph1376.preheader:                             ; preds = %574
  %576 = zext nneg i32 %.110921401 to i64
  %577 = sext i32 %451 to i64
  %578 = sext i32 %.41087 to i64
  %invariant.gep1542 = getelementptr %struct.doublecomplex, ptr %21, i64 %577
  %invariant.gep1544 = getelementptr %struct.doublecomplex, ptr %21, i64 %578
  br label %.lr.ph1376

.lr.ph1376:                                       ; preds = %.lr.ph1376.preheader, %.lr.ph1376
  %indvars.iv1440 = phi i64 [ %576, %.lr.ph1376.preheader ], [ %indvars.iv.next1441, %.lr.ph1376 ]
  %indvars.iv.next1441 = add nuw nsw i64 %indvars.iv1440, 1
  %gep1543 = getelementptr %struct.doublecomplex, ptr %invariant.gep1542, i64 %indvars.iv.next1441
  %579 = call { double, double } @Cd(ptr noundef %gep1543)
  %580 = extractvalue { double, double } %579, 0
  %581 = extractvalue { double, double } %579, 1
  %582 = fneg double %581
  %583 = call ptr @_pCd(ptr noundef nonnull %10)
  %584 = getelementptr inbounds i8, ptr %583, i64 8
  store double %580, ptr %583, align 8
  store double %582, ptr %584, align 8
  %585 = mul nsw i64 %indvars.iv.next1441, %44
  %gep1545 = getelementptr %struct.doublecomplex, ptr %invariant.gep1544, i64 %585
  %586 = load <2 x double>, ptr %10, align 16, !tbaa !12
  %587 = call { double, double } @Cd(ptr noundef %gep1545)
  %588 = extractvalue { double, double } %587, 0
  %589 = extractvalue { double, double } %587, 1
  %590 = fneg double %589
  %591 = call ptr @_pCd(ptr noundef nonnull %10)
  %592 = getelementptr inbounds i8, ptr %591, i64 8
  store double %588, ptr %591, align 8
  store double %590, ptr %592, align 8
  %593 = load <2 x double>, ptr %10, align 16, !tbaa !12
  store <2 x double> %593, ptr %gep1543, align 8, !tbaa !12
  store <2 x double> %586, ptr %gep1545, align 8, !tbaa !12
  %594 = load i32, ptr %7, align 4, !tbaa !5
  %595 = sext i32 %594 to i64
  %.not1142.not = icmp slt i64 %indvars.iv.next1441, %595
  br i1 %.not1142.not, label %.lr.ph1376, label %.loopexit1491, !llvm.loop !23

.loopexit1491:                                    ; preds = %.lr.ph1376, %574
  %596 = add nsw i32 %.41087, %451
  store i32 %596, ptr %7, align 4, !tbaa !5
  %597 = sext i32 %596 to i64
  %598 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %597
  %599 = call { double, double } @Cd(ptr noundef %598)
  %600 = extractvalue { double, double } %599, 0
  %601 = extractvalue { double, double } %599, 1
  %602 = fneg double %601
  %603 = call ptr @_pCd(ptr noundef nonnull %10)
  %604 = getelementptr inbounds i8, ptr %603, i64 8
  store double %600, ptr %603, align 8
  store double %602, ptr %604, align 8
  %605 = load i32, ptr %7, align 4, !tbaa !5
  %606 = sext i32 %605 to i64
  %607 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %606
  %608 = load <2 x double>, ptr %10, align 16, !tbaa !12
  store <2 x double> %608, ptr %607, align 8, !tbaa !12
  %609 = load double, ptr %454, align 8, !tbaa !9
  %610 = mul i32 %.41087, %40
  %611 = sext i32 %610 to i64
  %612 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %611
  %613 = load double, ptr %612, align 8, !tbaa !9
  store double %613, ptr %8, align 8, !tbaa !12
  store double %613, ptr %454, align 8, !tbaa !9
  %614 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %453, i32 1
  store double 0.000000e+00, ptr %614, align 8, !tbaa !13
  store double %609, ptr %612, align 8, !tbaa !9
  %615 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %611, i32 1
  store double 0.000000e+00, ptr %615, align 8, !tbaa !13
  %.not1143 = icmp eq i32 %.81119, %560
  br i1 %.not1143, label %692, label %618

.thread1487:                                      ; preds = %545
  %616 = add nuw nsw i32 %.110921401, 1
  %.not11431488 = icmp eq i32 %.81119, %.110921401
  br i1 %.not11431488, label %.critedge1313.sink.split, label %618

.thread1478:                                      ; preds = %558
  %.not11431480 = icmp eq i32 %.81119, %560
  br i1 %.not11431480, label %.thread1484, label %618

.thread1484:                                      ; preds = %.thread1478
  %617 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %453, i32 1
  store double 0.000000e+00, ptr %617, align 8, !tbaa !13
  br label %695

618:                                              ; preds = %.thread1487, %.thread1478, %.loopexit1491
  %619 = phi i32 [ %559, %.thread1478 ], [ %559, %.loopexit1491 ], [ %616, %.thread1487 ]
  %620 = phi i32 [ %560, %.thread1478 ], [ %560, %.loopexit1491 ], [ %.110921401, %.thread1487 ]
  %.4108714091482 = phi i32 [ %.110921401, %.thread1478 ], [ %.41087, %.loopexit1491 ], [ %.41087, %.thread1487 ]
  %621 = load i32, ptr %1, align 4, !tbaa !5
  %622 = icmp slt i32 %.81119, %621
  br i1 %622, label %623, label %634

623:                                              ; preds = %618
  %624 = sub nsw i32 %621, %.81119
  store i32 %624, ptr %7, align 4, !tbaa !5
  %625 = add nsw i32 %.81119, 1
  %626 = mul nsw i32 %620, %19
  %627 = add nsw i32 %626, %625
  %628 = sext i32 %627 to i64
  %629 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %628
  %630 = mul nsw i32 %.81119, %19
  %631 = add nsw i32 %625, %630
  %632 = sext i32 %631 to i64
  %633 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %632
  call void @zswap_(ptr noundef nonnull %7, ptr noundef %629, ptr noundef nonnull @c__1, ptr noundef %633, ptr noundef nonnull @c__1) #6
  br label %634

634:                                              ; preds = %623, %618
  %635 = add nsw i32 %.81119, -1
  store i32 %635, ptr %7, align 4, !tbaa !5
  %.not11441378.not = icmp slt i32 %619, %.81119
  %636 = mul nsw i32 %620, %19
  br i1 %.not11441378.not, label %.lr.ph1381, label %._crit_edge1382

.lr.ph1381:                                       ; preds = %634
  %637 = sext i32 %619 to i64
  %638 = sext i32 %636 to i64
  %639 = sext i32 %.81119 to i64
  %invariant.gep1546 = getelementptr %struct.doublecomplex, ptr %21, i64 %638
  %invariant.gep1548 = getelementptr %struct.doublecomplex, ptr %21, i64 %639
  br label %640

640:                                              ; preds = %.lr.ph1381, %640
  %indvars.iv1443 = phi i64 [ %637, %.lr.ph1381 ], [ %indvars.iv.next1444, %640 ]
  %gep1547 = getelementptr %struct.doublecomplex, ptr %invariant.gep1546, i64 %indvars.iv1443
  %641 = call { double, double } @Cd(ptr noundef %gep1547)
  %642 = extractvalue { double, double } %641, 0
  %643 = extractvalue { double, double } %641, 1
  %644 = fneg double %643
  %645 = call ptr @_pCd(ptr noundef nonnull %10)
  %646 = getelementptr inbounds i8, ptr %645, i64 8
  store double %642, ptr %645, align 8
  store double %644, ptr %646, align 8
  %647 = mul nsw i64 %indvars.iv1443, %44
  %gep1549 = getelementptr %struct.doublecomplex, ptr %invariant.gep1548, i64 %647
  %648 = load <2 x double>, ptr %10, align 16, !tbaa !12
  %649 = call { double, double } @Cd(ptr noundef %gep1549)
  %650 = extractvalue { double, double } %649, 0
  %651 = extractvalue { double, double } %649, 1
  %652 = fneg double %651
  %653 = call ptr @_pCd(ptr noundef nonnull %10)
  %654 = getelementptr inbounds i8, ptr %653, i64 8
  store double %650, ptr %653, align 8
  store double %652, ptr %654, align 8
  %655 = load <2 x double>, ptr %10, align 16, !tbaa !12
  store <2 x double> %655, ptr %gep1547, align 8, !tbaa !12
  store <2 x double> %648, ptr %gep1549, align 8, !tbaa !12
  %indvars.iv.next1444 = add nsw i64 %indvars.iv1443, 1
  %656 = load i32, ptr %7, align 4, !tbaa !5
  %657 = sext i32 %656 to i64
  %.not1144.not = icmp slt i64 %indvars.iv1443, %657
  br i1 %.not1144.not, label %640, label %._crit_edge1382, !llvm.loop !24

._crit_edge1382:                                  ; preds = %640, %634
  %658 = add nsw i32 %636, %.81119
  store i32 %658, ptr %7, align 4, !tbaa !5
  %659 = sext i32 %658 to i64
  %660 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %659
  %661 = call { double, double } @Cd(ptr noundef %660)
  %662 = extractvalue { double, double } %661, 0
  %663 = extractvalue { double, double } %661, 1
  %664 = fneg double %663
  %665 = call ptr @_pCd(ptr noundef nonnull %10)
  %666 = getelementptr inbounds i8, ptr %665, i64 8
  store double %662, ptr %665, align 8
  store double %664, ptr %666, align 8
  %667 = load i32, ptr %7, align 4, !tbaa !5
  %668 = sext i32 %667 to i64
  %669 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %668
  %670 = load <2 x double>, ptr %10, align 16, !tbaa !12
  store <2 x double> %670, ptr %669, align 8, !tbaa !12
  %671 = add nsw i32 %636, %620
  %672 = sext i32 %671 to i64
  %673 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %672
  %674 = load double, ptr %673, align 8, !tbaa !9
  %675 = load double, ptr %548, align 8, !tbaa !9
  store double %675, ptr %8, align 8, !tbaa !12
  store double %675, ptr %673, align 8, !tbaa !9
  %676 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %672, i32 1
  store double 0.000000e+00, ptr %676, align 8, !tbaa !13
  store i32 %546, ptr %7, align 4, !tbaa !5
  store double %674, ptr %548, align 8, !tbaa !9
  %677 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %547, i32 1
  store double 0.000000e+00, ptr %677, align 8, !tbaa !13
  br i1 %554, label %.critedge1313, label %678

678:                                              ; preds = %._crit_edge1382
  %679 = load double, ptr %454, align 8, !tbaa !9
  store double %679, ptr %8, align 8, !tbaa !12
  %680 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %453, i32 1
  store double 0.000000e+00, ptr %680, align 8, !tbaa !13
  %681 = add nuw nsw i32 %.110921401, 1
  %682 = add nsw i32 %681, %451
  %683 = sext i32 %682 to i64
  %684 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %683
  %685 = load double, ptr %684, align 8, !tbaa !9
  %686 = getelementptr inbounds i8, ptr %684, i64 8
  %687 = load double, ptr %686, align 8, !tbaa !13
  %688 = add nsw i32 %.81119, %451
  %689 = sext i32 %688 to i64
  %690 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %689
  %691 = load <2 x double>, ptr %690, align 8, !tbaa !12
  store <2 x double> %691, ptr %684, align 8, !tbaa !12
  store i32 %688, ptr %7, align 4, !tbaa !5
  store double %685, ptr %690, align 8, !tbaa !9
  br label %747

692:                                              ; preds = %.loopexit1491
  store i32 %452, ptr %7, align 4, !tbaa !5
  %693 = load double, ptr %454, align 8, !tbaa !9
  store double %693, ptr %8, align 8, !tbaa !12
  %694 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %453, i32 1
  store double 0.000000e+00, ptr %694, align 8, !tbaa !13
  br i1 %554, label %.critedge1313, label %695

695:                                              ; preds = %.thread1484, %692
  %.41087140914831486 = phi i32 [ %.110921401, %.thread1484 ], [ %.41087, %692 ]
  %696 = add nuw nsw i32 %.110921401, 1
  %697 = mul i32 %696, %40
  store i32 %697, ptr %7, align 4, !tbaa !5
  %698 = sext i32 %697 to i64
  %699 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %698
  %700 = load double, ptr %699, align 8, !tbaa !9
  store double %700, ptr %8, align 8, !tbaa !12
  br label %747

.critedge1313.sink.split:                         ; preds = %.thread1487, %492
  %.8125812711296.ph = phi i32 [ %.110921401, %492 ], [ %.81119, %.thread1487 ]
  %.10125512771294.ph = phi i32 [ %.611071400, %492 ], [ %.91110, %.thread1487 ]
  %.101121125412791293.ph = phi i32 [ %.71118, %492 ], [ %.81119, %.thread1487 ]
  store i32 %452, ptr %7, align 4, !tbaa !5
  %storemerge1570 = load double, ptr %454, align 8, !tbaa !9
  store double %storemerge1570, ptr %8, align 8, !tbaa !12
  %701 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %453, i32 1
  store double 0.000000e+00, ptr %701, align 8, !tbaa !13
  br label %.critedge1313

.critedge1313:                                    ; preds = %.critedge1313.sink.split, %692, %._crit_edge1382
  %.8125812711296 = phi i32 [ %.81119, %._crit_edge1382 ], [ %.81119, %692 ], [ %.8125812711296.ph, %.critedge1313.sink.split ]
  %.10125512771294 = phi i32 [ %.91110, %._crit_edge1382 ], [ %.91110, %692 ], [ %.10125512771294.ph, %.critedge1313.sink.split ]
  %.101121125412791293 = phi i32 [ %.81119, %._crit_edge1382 ], [ %.81119, %692 ], [ %.101121125412791293.ph, %.critedge1313.sink.split ]
  %702 = load i32, ptr %1, align 4, !tbaa !5
  %703 = icmp slt i32 %.110921401, %702
  br i1 %703, label %704, label %880

704:                                              ; preds = %.critedge1313
  %705 = load double, ptr %454, align 8, !tbaa !9
  %706 = fcmp oge double %705, 0.000000e+00
  %707 = fneg double %705
  %708 = select i1 %706, double %705, double %707
  %709 = fcmp ult double %708, %37
  br i1 %709, label %.lr.ph1395.preheader, label %710

710:                                              ; preds = %704
  %711 = fdiv double 1.000000e+00, %705
  store double %711, ptr %13, align 8, !tbaa !12
  %712 = sub nsw i32 %702, %.110921401
  store i32 %712, ptr %7, align 4, !tbaa !5
  %713 = fneg double %711
  store double %713, ptr %8, align 8, !tbaa !12
  %714 = add nuw nsw i32 %.110921401, 1
  %715 = add nsw i32 %714, %451
  %716 = sext i32 %715 to i64
  %717 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %716
  %718 = mul i32 %714, %40
  %719 = sext i32 %718 to i64
  %720 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %719
  call void @zher_(ptr noundef %0, ptr noundef nonnull %7, ptr noundef nonnull %8, ptr noundef %717, ptr noundef nonnull @c__1, ptr noundef %720, ptr noundef nonnull %3) #6
  %721 = load i32, ptr %1, align 4, !tbaa !5
  %722 = sub nsw i32 %721, %.110921401
  store i32 %722, ptr %7, align 4, !tbaa !5
  call void @zdscal_(ptr noundef nonnull %7, ptr noundef nonnull %13, ptr noundef %717, ptr noundef nonnull @c__1) #6
  br label %880

.lr.ph1395.preheader:                             ; preds = %704
  store double %705, ptr %13, align 8, !tbaa !12
  %723 = add nuw nsw i32 %.110921401, 1
  %narrow1464 = add nuw nsw i32 %.110921401, 1
  %724 = zext nneg i32 %narrow1464 to i64
  %725 = sext i32 %451 to i64
  %726 = add i32 %702, 1
  %invariant.gep1560 = getelementptr %struct.doublecomplex, ptr %21, i64 %725
  %727 = xor i32 %.110921401, -1
  %728 = add i32 %702, %727
  %729 = zext i32 %728 to i64
  %730 = add nuw nsw i64 %729, 1
  %min.iters.check1610 = icmp eq i32 %728, 0
  br i1 %min.iters.check1610, label %.lr.ph1395.preheader1633, label %vector.ph1611

vector.ph1611:                                    ; preds = %.lr.ph1395.preheader
  %n.vec1613 = and i64 %730, 8589934590
  %ind.end1614 = add nuw nsw i64 %n.vec1613, %724
  %broadcast.splatinsert1622 = insertelement <2 x double> poison, double %705, i64 0
  %broadcast.splat1623 = shufflevector <2 x double> %broadcast.splatinsert1622, <2 x double> poison, <2 x i32> zeroinitializer
  %invariant.gep1712 = getelementptr %struct.doublecomplex, ptr %invariant.gep1560, i64 %724
  br label %vector.body1616

vector.body1616:                                  ; preds = %vector.body1616, %vector.ph1611
  %index1617 = phi i64 [ 0, %vector.ph1611 ], [ %index.next1625, %vector.body1616 ]
  %gep1713 = getelementptr %struct.doublecomplex, ptr %invariant.gep1712, i64 %index1617
  %wide.vec1619 = load <4 x double>, ptr %gep1713, align 8, !tbaa !12
  %strided.vec1620 = shufflevector <4 x double> %wide.vec1619, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec1621 = shufflevector <4 x double> %wide.vec1619, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %731 = fdiv <2 x double> %strided.vec1620, %broadcast.splat1623
  %732 = fdiv <2 x double> %strided.vec1621, %broadcast.splat1623
  %interleaved.vec1624 = shufflevector <2 x double> %731, <2 x double> %732, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec1624, ptr %gep1713, align 8, !tbaa !12
  %index.next1625 = add nuw i64 %index1617, 2
  %733 = icmp eq i64 %index.next1625, %n.vec1613
  br i1 %733, label %middle.block1608, label %vector.body1616, !llvm.loop !25

middle.block1608:                                 ; preds = %vector.body1616
  %cmp.n1626 = icmp eq i64 %730, %n.vec1613
  %734 = shufflevector <2 x double> %731, <2 x double> %732, <2 x i32> <i32 1, i32 3>
  br i1 %cmp.n1626, label %.loopexit1627, label %.lr.ph1395.preheader1633

.lr.ph1395.preheader1633:                         ; preds = %middle.block1608, %.lr.ph1395.preheader
  %indvars.iv1452.ph = phi i64 [ %724, %.lr.ph1395.preheader ], [ %ind.end1614, %middle.block1608 ]
  %735 = insertelement <2 x double> poison, double %705, i64 0
  %736 = shufflevector <2 x double> %735, <2 x double> poison, <2 x i32> zeroinitializer
  br label %.lr.ph1395

.lr.ph1395:                                       ; preds = %.lr.ph1395.preheader1633, %.lr.ph1395
  %indvars.iv1452 = phi i64 [ %indvars.iv.next1453, %.lr.ph1395 ], [ %indvars.iv1452.ph, %.lr.ph1395.preheader1633 ]
  %gep1561 = getelementptr %struct.doublecomplex, ptr %invariant.gep1560, i64 %indvars.iv1452
  %737 = load <2 x double>, ptr %gep1561, align 8, !tbaa !12
  %738 = fdiv <2 x double> %737, %736
  store <2 x double> %738, ptr %gep1561, align 8, !tbaa !12
  %indvars.iv.next1453 = add nuw nsw i64 %indvars.iv1452, 1
  %lftr.wideiv = trunc i64 %indvars.iv.next1453 to i32
  %exitcond1455.not = icmp eq i32 %726, %lftr.wideiv
  br i1 %exitcond1455.not, label %.loopexit1627, label %.lr.ph1395, !llvm.loop !26

.loopexit1627:                                    ; preds = %.lr.ph1395, %middle.block1608
  %739 = phi <2 x double> [ %734, %middle.block1608 ], [ %738, %.lr.ph1395 ]
  store <2 x double> %739, ptr %10, align 16, !tbaa !12
  %740 = sub nsw i32 %702, %.110921401
  store i32 %740, ptr %7, align 4, !tbaa !5
  store double %707, ptr %8, align 8, !tbaa !12
  %741 = add nsw i32 %723, %451
  %742 = sext i32 %741 to i64
  %743 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %742
  %744 = mul i32 %723, %40
  %745 = sext i32 %744 to i64
  %746 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %745
  call void @zher_(ptr noundef %0, ptr noundef nonnull %7, ptr noundef nonnull %8, ptr noundef %743, ptr noundef nonnull @c__1, ptr noundef %746, ptr noundef nonnull %3) #6
  br label %880

747:                                              ; preds = %678, %695
  %.sink1569 = phi i64 [ %689, %678 ], [ %698, %695 ]
  %.sink1567 = phi double [ %687, %678 ], [ 0.000000e+00, %695 ]
  %.4108714091481 = phi i32 [ %.4108714091482, %678 ], [ %.41087140914831486, %695 ]
  %748 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %.sink1569, i32 1
  store double %.sink1567, ptr %748, align 8, !tbaa !13
  %749 = load i32, ptr %1, align 4, !tbaa !5
  %750 = add nsw i32 %749, -1
  %751 = icmp slt i32 %.110921401, %750
  br i1 %751, label %752, label %.loopexit

752:                                              ; preds = %747
  %753 = add nuw nsw i32 %.110921401, 1
  %754 = add nsw i32 %753, %451
  store i32 %754, ptr %7, align 4, !tbaa !5
  %755 = sext i32 %754 to i64
  %756 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %755
  %757 = load double, ptr %756, align 8, !tbaa !9
  store double %757, ptr %8, align 8, !tbaa !12
  %758 = call { double, double } @Cd(ptr noundef nonnull %756)
  %759 = extractvalue { double, double } %758, 1
  store double %759, ptr %9, align 8, !tbaa !12
  %760 = call double @dlapy2_(ptr noundef nonnull %8, ptr noundef nonnull %9) #6
  %761 = mul nsw i32 %753, %19
  %762 = add nsw i32 %761, %753
  %763 = sext i32 %762 to i64
  %764 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %763
  %765 = load double, ptr %764, align 8, !tbaa !9
  %766 = fdiv double %765, %760
  store double %766, ptr %13, align 8, !tbaa !12
  %767 = load double, ptr %454, align 8, !tbaa !9
  %768 = load <2 x double>, ptr %756, align 8, !tbaa !12
  %769 = insertelement <2 x double> poison, double %760, i64 0
  %770 = shufflevector <2 x double> %769, <2 x double> poison, <2 x i32> zeroinitializer
  %771 = fdiv <2 x double> %768, %770
  store <2 x double> %771, ptr %10, align 16, !tbaa !12
  store <2 x double> %771, ptr %15, align 16, !tbaa !12
  %772 = load i32, ptr %1, align 4, !tbaa !5
  store i32 %772, ptr %7, align 4, !tbaa !5
  %773 = add nuw nsw i32 %.110921401, 2
  %.not11451388 = icmp sgt i32 %773, %772
  br i1 %.not11451388, label %.loopexit, label %.lr.ph1391.preheader

.lr.ph1391.preheader:                             ; preds = %752
  %774 = fdiv double %767, %760
  %775 = call double @llvm.fmuladd.f64(double %766, double %774, double -1.000000e+00)
  %776 = fdiv double 1.000000e+00, %775
  %777 = zext nneg i32 %773 to i64
  %778 = sext i32 %451 to i64
  %779 = sext i32 %761 to i64
  %invariant.gep1556 = getelementptr %struct.doublecomplex, ptr %21, i64 %778
  %invariant.gep1558 = getelementptr %struct.doublecomplex, ptr %21, i64 %779
  %invariant.gep1550 = getelementptr %struct.doublecomplex, ptr %21, i64 %778
  %invariant.gep1554 = getelementptr %struct.doublecomplex, ptr %21, i64 %779
  %780 = insertelement <2 x double> poison, double %776, i64 0
  %781 = shufflevector <2 x double> %780, <2 x double> poison, <2 x i32> zeroinitializer
  %782 = insertelement <2 x double> poison, double %774, i64 0
  %783 = shufflevector <2 x double> %782, <2 x double> poison, <2 x i32> zeroinitializer
  br label %.lr.ph1391

.lr.ph1391:                                       ; preds = %.lr.ph1391.preheader, %._crit_edge1387
  %indvars.iv1446 = phi i64 [ %777, %.lr.ph1391.preheader ], [ %indvars.iv.next1447, %._crit_edge1387 ]
  %784 = load double, ptr %13, align 8, !tbaa !12
  %gep1557 = getelementptr %struct.doublecomplex, ptr %invariant.gep1556, i64 %indvars.iv1446
  %785 = load <2 x double>, ptr %15, align 16
  %gep1559 = getelementptr %struct.doublecomplex, ptr %invariant.gep1558, i64 %indvars.iv1446
  %786 = load double, ptr %42, align 8, !tbaa !13
  %787 = fneg double %786
  %788 = load <2 x double>, ptr %gep1559, align 8, !tbaa !12
  %789 = load <2 x double>, ptr %gep1557, align 8, !tbaa !12
  %790 = insertelement <2 x double> poison, double %784, i64 0
  %791 = shufflevector <2 x double> %790, <2 x double> poison, <2 x i32> zeroinitializer
  %792 = fmul <2 x double> %791, %789
  %793 = insertelement <2 x double> poison, double %786, i64 0
  %794 = insertelement <2 x double> %793, double %787, i64 1
  %795 = fmul <2 x double> %788, %794
  %796 = shufflevector <2 x double> %795, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %797 = shufflevector <2 x double> %785, <2 x double> poison, <2 x i32> zeroinitializer
  %798 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %797, <2 x double> %788, <2 x double> %796)
  %799 = fsub <2 x double> %792, %798
  %800 = fmul <2 x double> %781, %799
  store <2 x double> %800, ptr %10, align 16, !tbaa !12
  store <2 x double> %800, ptr %16, align 16, !tbaa !12
  %801 = fmul <2 x double> %783, %788
  %802 = call { double, double } @Cd(ptr noundef nonnull %15)
  %803 = extractvalue { double, double } %802, 0
  %804 = extractvalue { double, double } %802, 1
  %805 = fneg double %804
  %806 = call ptr @_pCd(ptr noundef nonnull %11)
  %807 = getelementptr inbounds i8, ptr %806, i64 8
  store double %803, ptr %806, align 8
  store double %805, ptr %807, align 8
  %808 = load <2 x double>, ptr %11, align 16
  %809 = load double, ptr %43, align 8, !tbaa !13
  %810 = load <2 x double>, ptr %gep1557, align 8, !tbaa !12
  %811 = fneg double %809
  %812 = insertelement <2 x double> poison, double %809, i64 0
  %813 = insertelement <2 x double> %812, double %811, i64 1
  %814 = fmul <2 x double> %810, %813
  %815 = shufflevector <2 x double> %814, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %816 = shufflevector <2 x double> %808, <2 x double> poison, <2 x i32> zeroinitializer
  %817 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %816, <2 x double> %810, <2 x double> %815)
  %818 = fsub <2 x double> %801, %817
  %819 = fmul <2 x double> %781, %818
  store <2 x double> %819, ptr %10, align 16, !tbaa !12
  store <2 x double> %819, ptr %18, align 16, !tbaa !12
  %820 = load i32, ptr %1, align 4, !tbaa !5
  %821 = sext i32 %820 to i64
  %.not11461383 = icmp sgt i64 %indvars.iv1446, %821
  br i1 %.not11461383, label %._crit_edge1387, label %.lr.ph1386

.lr.ph1386:                                       ; preds = %.lr.ph1391
  %822 = mul nsw i64 %indvars.iv1446, %44
  %invariant.gep1552 = getelementptr %struct.doublecomplex, ptr %21, i64 %822
  br label %823

823:                                              ; preds = %.lr.ph1386, %823
  %indvars.iv1448 = phi i64 [ %indvars.iv1446, %.lr.ph1386 ], [ %indvars.iv.next1449, %823 ]
  %gep1551 = getelementptr %struct.doublecomplex, ptr %invariant.gep1550, i64 %indvars.iv1448
  %824 = load double, ptr %gep1551, align 8, !tbaa !9
  %825 = fdiv double %824, %760
  %826 = getelementptr inbounds i8, ptr %gep1551, i64 8
  %827 = load double, ptr %826, align 8, !tbaa !13
  %828 = fdiv double %827, %760
  %829 = call { double, double } @Cd(ptr noundef nonnull %16)
  %830 = extractvalue { double, double } %829, 0
  %831 = extractvalue { double, double } %829, 1
  %832 = fneg double %831
  %833 = call ptr @_pCd(ptr noundef nonnull %11)
  %834 = getelementptr inbounds i8, ptr %833, i64 8
  store double %830, ptr %833, align 8
  store double %832, ptr %834, align 8
  %835 = fneg double %828
  %gep1553 = getelementptr %struct.doublecomplex, ptr %invariant.gep1552, i64 %indvars.iv1448
  %gep1555 = getelementptr %struct.doublecomplex, ptr %invariant.gep1554, i64 %indvars.iv1448
  %836 = load double, ptr %gep1555, align 8, !tbaa !9
  %837 = fdiv double %836, %760
  %838 = getelementptr inbounds i8, ptr %gep1555, i64 8
  %839 = load double, ptr %838, align 8, !tbaa !13
  %840 = fdiv double %839, %760
  %841 = fneg double %840
  %842 = load <2 x double>, ptr %11, align 16, !tbaa !12
  %843 = insertelement <2 x double> poison, double %828, i64 0
  %844 = insertelement <2 x double> %843, double %835, i64 1
  %845 = fmul <2 x double> %842, %844
  %846 = shufflevector <2 x double> %845, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %847 = insertelement <2 x double> poison, double %825, i64 0
  %848 = shufflevector <2 x double> %847, <2 x double> poison, <2 x i32> zeroinitializer
  %849 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %848, <2 x double> %842, <2 x double> %846)
  %850 = load <2 x double>, ptr %gep1553, align 8, !tbaa !12
  %851 = fsub <2 x double> %850, %849
  %852 = call { double, double } @Cd(ptr noundef nonnull %18)
  %853 = extractvalue { double, double } %852, 0
  %854 = extractvalue { double, double } %852, 1
  %855 = fneg double %854
  %856 = call ptr @_pCd(ptr noundef nonnull %12)
  %857 = getelementptr inbounds i8, ptr %856, i64 8
  store double %853, ptr %856, align 8
  store double %855, ptr %857, align 8
  %858 = load <2 x double>, ptr %12, align 16, !tbaa !12
  %859 = insertelement <2 x double> poison, double %840, i64 0
  %860 = insertelement <2 x double> %859, double %841, i64 1
  %861 = fmul <2 x double> %858, %860
  %862 = shufflevector <2 x double> %861, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %863 = insertelement <2 x double> poison, double %837, i64 0
  %864 = shufflevector <2 x double> %863, <2 x double> poison, <2 x i32> zeroinitializer
  %865 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %864, <2 x double> %858, <2 x double> %862)
  %866 = fsub <2 x double> %851, %865
  store <2 x double> %866, ptr %10, align 16, !tbaa !12
  store <2 x double> %866, ptr %gep1553, align 8, !tbaa !12
  %indvars.iv.next1449 = add nuw nsw i64 %indvars.iv1448, 1
  %.not1146.not = icmp slt i64 %indvars.iv1448, %821
  br i1 %.not1146.not, label %823, label %._crit_edge1387.loopexit, !llvm.loop !27

._crit_edge1387.loopexit:                         ; preds = %823
  %867 = load <2 x double>, ptr %18, align 16, !tbaa !12
  br label %._crit_edge1387

._crit_edge1387:                                  ; preds = %._crit_edge1387.loopexit, %.lr.ph1391
  %868 = phi <2 x double> [ %867, %._crit_edge1387.loopexit ], [ %819, %.lr.ph1391 ]
  %869 = load <2 x double>, ptr %16, align 16, !tbaa !12
  %870 = fdiv <2 x double> %869, %770
  store <2 x double> %870, ptr %gep1557, align 8, !tbaa !12
  %871 = fdiv <2 x double> %868, %770
  store <2 x double> %871, ptr %gep1559, align 8, !tbaa !12
  %872 = trunc nsw i64 %indvars.iv1446 to i32
  %873 = mul i32 %40, %872
  %874 = sext i32 %873 to i64
  %875 = getelementptr inbounds %struct.doublecomplex, ptr %21, i64 %874
  %876 = load double, ptr %875, align 8, !tbaa !9
  store double %876, ptr %8, align 8, !tbaa !12
  store double %876, ptr %10, align 16, !tbaa !9
  store double 0.000000e+00, ptr %41, align 8, !tbaa !13
  %877 = getelementptr inbounds i8, ptr %875, i64 8
  store double 0.000000e+00, ptr %877, align 8, !tbaa !13
  %indvars.iv.next1447 = add nuw nsw i64 %indvars.iv1446, 1
  %878 = load i32, ptr %7, align 4, !tbaa !5
  %879 = sext i32 %878 to i64
  %.not1145.not = icmp slt i64 %indvars.iv1446, %879
  br i1 %.not1145.not, label %.lr.ph1391, label %.loopexit, !llvm.loop !28

880:                                              ; preds = %489, %710, %.loopexit1627, %.critedge1313
  %.111122.ph = phi i32 [ %.101121125412791293, %.critedge1313 ], [ %.101121125412791293, %.loopexit1627 ], [ %.101121125412791293, %710 ], [ %.71118, %489 ]
  %.11.ph = phi i32 [ %.10125512771294, %.critedge1313 ], [ %.10125512771294, %.loopexit1627 ], [ %.10125512771294, %710 ], [ %.611071400, %489 ]
  %.9.ph = phi i32 [ %.8125812711296, %.critedge1313 ], [ %.8125812711296, %.loopexit1627 ], [ %.8125812711296, %710 ], [ %.110921401, %489 ]
  %881 = zext nneg i32 %.110921401 to i64
  %882 = getelementptr inbounds i32, ptr %22, i64 %881
  store i32 %.9.ph, ptr %882, align 4, !tbaa !5
  br label %888

.loopexit:                                        ; preds = %._crit_edge1387, %752, %747
  %883 = sub nsw i32 0, %.4108714091481
  %884 = zext nneg i32 %.110921401 to i64
  %885 = getelementptr inbounds i32, ptr %22, i64 %884
  store i32 %883, ptr %885, align 4, !tbaa !5
  %886 = sub nsw i32 0, %.81119
  %887 = getelementptr inbounds i8, ptr %885, i64 4
  store i32 %886, ptr %887, align 4, !tbaa !5
  br label %888

888:                                              ; preds = %.loopexit, %880
  %.710821308 = phi i32 [ 2, %.loopexit ], [ 1, %880 ]
  %.111306 = phi i32 [ %.91110, %.loopexit ], [ %.11.ph, %880 ]
  %.1111221304 = phi i32 [ %.81119, %.loopexit ], [ %.111122.ph, %880 ]
  %889 = add nuw nsw i32 %.710821308, %.110921401
  %890 = load i32, ptr %1, align 4, !tbaa !5
  %891 = icmp sgt i32 %889, %890
  br i1 %891, label %.loopexit1315, label %449

.loopexit1315:                                    ; preds = %446, %888, %45, %.preheader1314, %.thread
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #6
  call void @llvm.lifetime.end.p0(i64 16, 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 16, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #6
  ret void
}

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

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

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden { double, double } @Cd(ptr noundef) local_unnamed_addr #3

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden ptr @_pCd(ptr noundef) local_unnamed_addr #3

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

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

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

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

; 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 i32 @llvm.umax.i32(i32, i32) #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>) #5

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 = { inlinehint 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 #4 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !11, i64 0}
!10 = !{!"", !11, i64 0, !11, i64 8}
!11 = !{!"double", !7, i64 0}
!12 = !{!11, !11, i64 0}
!13 = !{!10, !11, i64 8}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = distinct !{!16, !15}
!17 = distinct !{!17, !15, !18, !19}
!18 = !{!"llvm.loop.isvectorized", i32 1}
!19 = !{!"llvm.loop.unroll.runtime.disable"}
!20 = distinct !{!20, !15, !19, !18}
!21 = distinct !{!21, !15}
!22 = distinct !{!22, !15}
!23 = distinct !{!23, !15}
!24 = distinct !{!24, !15}
!25 = distinct !{!25, !15, !18, !19}
!26 = distinct !{!26, !15, !19, !18}
!27 = distinct !{!27, !15}
!28 = distinct !{!28, !15}


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