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

; 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 }

@c__13 = external hidden global i64, align 8
@.str = external hidden unnamed_addr constant [7 x i8], align 1
@c__15 = external hidden global i64, align 8
@c_n1 = external hidden global i64, align 8
@c__12 = external hidden global i64, align 8
@c__14 = external hidden global i64, align 8
@c__16 = external hidden global i64, align 8
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c_false = external hidden global i64, align 8
@c__1 = external hidden global i64, align 8
@c__3 = external hidden global i64, align 8

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

124:                                              ; preds = %15
  %125 = load ptr, ptr %29, align 8, !tbaa !5
  %126 = getelementptr inbounds %struct.doublecomplex, ptr %125, i64 1
  %127 = getelementptr inbounds %struct.doublecomplex, ptr %126, i32 0, i32 0
  store double 1.000000e+00, ptr %127, align 8, !tbaa !11
  %128 = load ptr, ptr %29, align 8, !tbaa !5
  %129 = getelementptr inbounds %struct.doublecomplex, ptr %128, i64 1
  %130 = getelementptr inbounds %struct.doublecomplex, ptr %129, i32 0, i32 1
  store double 0.000000e+00, ptr %130, align 8, !tbaa !14
  store i32 0, ptr %16, align 4
  store i32 1, ptr %99, align 4
  br label %1882

131:                                              ; preds = %15
  %132 = load ptr, ptr %19, align 8, !tbaa !5
  %133 = load i64, ptr %132, align 8, !tbaa !9
  %134 = icmp sle i64 %133, 11
  br i1 %134, label %135, label %160

135:                                              ; preds = %131
  store i64 1, ptr %98, align 8, !tbaa !9
  %136 = load ptr, ptr %30, align 8, !tbaa !5
  %137 = load i64, ptr %136, align 8, !tbaa !9
  %138 = icmp ne i64 %137, -1
  br i1 %138, label %139, label %159

139:                                              ; preds = %135
  %140 = load ptr, ptr %17, align 8, !tbaa !5
  %141 = load ptr, ptr %18, align 8, !tbaa !5
  %142 = load ptr, ptr %19, align 8, !tbaa !5
  %143 = load ptr, ptr %20, align 8, !tbaa !5
  %144 = load ptr, ptr %21, align 8, !tbaa !5
  %145 = load ptr, ptr %22, align 8, !tbaa !5
  %146 = load i64, ptr %33, align 8, !tbaa !9
  %147 = getelementptr inbounds %struct.doublecomplex, ptr %145, i64 %146
  %148 = load ptr, ptr %23, align 8, !tbaa !5
  %149 = load ptr, ptr %24, align 8, !tbaa !5
  %150 = getelementptr inbounds %struct.doublecomplex, ptr %149, i64 1
  %151 = load ptr, ptr %25, align 8, !tbaa !5
  %152 = load ptr, ptr %26, align 8, !tbaa !5
  %153 = load ptr, ptr %27, align 8, !tbaa !5
  %154 = load i64, ptr %35, align 8, !tbaa !9
  %155 = getelementptr inbounds %struct.doublecomplex, ptr %153, i64 %154
  %156 = load ptr, ptr %28, align 8, !tbaa !5
  %157 = load ptr, ptr %31, align 8, !tbaa !5
  %158 = call i32 @zlahqr_(ptr noundef %140, ptr noundef %141, ptr noundef %142, ptr noundef %143, ptr noundef %144, ptr noundef %147, ptr noundef %148, ptr noundef %150, ptr noundef %151, ptr noundef %152, ptr noundef %155, ptr noundef %156, ptr noundef %157)
  br label %159

159:                                              ; preds = %139, %135
  br label %1866

160:                                              ; preds = %131
  %161 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 0, ptr %161, align 8, !tbaa !9
  %162 = load ptr, ptr %17, align 8, !tbaa !5
  %163 = load i64, ptr %162, align 8, !tbaa !9
  %164 = icmp ne i64 %163, 0
  br i1 %164, label %165, label %167

165:                                              ; preds = %160
  %166 = getelementptr inbounds [2 x i8], ptr %94, i64 0, i64 0
  store i8 83, ptr %166, align 1, !tbaa !15
  br label %169

167:                                              ; preds = %160
  %168 = getelementptr inbounds [2 x i8], ptr %94, i64 0, i64 0
  store i8 69, ptr %168, align 1, !tbaa !15
  br label %169

169:                                              ; preds = %167, %165
  %170 = load ptr, ptr %18, align 8, !tbaa !5
  %171 = load i64, ptr %170, align 8, !tbaa !9
  %172 = icmp ne i64 %171, 0
  br i1 %172, label %173, label %175

173:                                              ; preds = %169
  %174 = getelementptr inbounds [2 x i8], ptr %94, i64 0, i64 1
  store i8 86, ptr %174, align 1, !tbaa !15
  br label %177

175:                                              ; preds = %169
  %176 = getelementptr inbounds [2 x i8], ptr %94, i64 0, i64 1
  store i8 78, ptr %176, align 1, !tbaa !15
  br label %177

177:                                              ; preds = %175, %173
  %178 = getelementptr inbounds [2 x i8], ptr %94, i64 0, i64 0
  %179 = load ptr, ptr %19, align 8, !tbaa !5
  %180 = load ptr, ptr %20, align 8, !tbaa !5
  %181 = load ptr, ptr %21, align 8, !tbaa !5
  %182 = load ptr, ptr %30, align 8, !tbaa !5
  %183 = call i64 @ilaenv_(ptr noundef @c__13, ptr noundef @.str, ptr noundef %178, ptr noundef %179, ptr noundef %180, ptr noundef %181, ptr noundef %182)
  store i64 %183, ptr %79, align 8, !tbaa !9
  %184 = load i64, ptr %79, align 8, !tbaa !9
  %185 = icmp sge i64 2, %184
  br i1 %185, label %186, label %187

186:                                              ; preds = %177
  br label %189

187:                                              ; preds = %177
  %188 = load i64, ptr %79, align 8, !tbaa !9
  br label %189

189:                                              ; preds = %187, %186
  %190 = phi i64 [ 2, %186 ], [ %188, %187 ]
  store i64 %190, ptr %79, align 8, !tbaa !9
  %191 = load ptr, ptr %21, align 8, !tbaa !5
  %192 = load i64, ptr %191, align 8, !tbaa !9
  %193 = load ptr, ptr %20, align 8, !tbaa !5
  %194 = load i64, ptr %193, align 8, !tbaa !9
  %195 = sub nsw i64 %192, %194
  %196 = add nsw i64 %195, 1
  store i64 %196, ptr %36, align 8, !tbaa !9
  %197 = load ptr, ptr %19, align 8, !tbaa !5
  %198 = load i64, ptr %197, align 8, !tbaa !9
  %199 = sub nsw i64 %198, 1
  %200 = sdiv i64 %199, 3
  store i64 %200, ptr %37, align 8, !tbaa !9
  %201 = load i64, ptr %36, align 8, !tbaa !9
  %202 = load i64, ptr %37, align 8, !tbaa !9
  %203 = icmp sle i64 %201, %202
  br i1 %203, label %204, label %206

204:                                              ; preds = %189
  %205 = load i64, ptr %36, align 8, !tbaa !9
  br label %208

206:                                              ; preds = %189
  %207 = load i64, ptr %37, align 8, !tbaa !9
  br label %208

208:                                              ; preds = %206, %204
  %209 = phi i64 [ %205, %204 ], [ %207, %206 ]
  store i64 %209, ptr %36, align 8, !tbaa !9
  %210 = load i64, ptr %36, align 8, !tbaa !9
  %211 = load i64, ptr %79, align 8, !tbaa !9
  %212 = icmp sle i64 %210, %211
  br i1 %212, label %213, label %215

213:                                              ; preds = %208
  %214 = load i64, ptr %36, align 8, !tbaa !9
  br label %217

215:                                              ; preds = %208
  %216 = load i64, ptr %79, align 8, !tbaa !9
  br label %217

217:                                              ; preds = %215, %213
  %218 = phi i64 [ %214, %213 ], [ %216, %215 ]
  store i64 %218, ptr %79, align 8, !tbaa !9
  %219 = getelementptr inbounds [2 x i8], ptr %94, i64 0, i64 0
  %220 = load ptr, ptr %19, align 8, !tbaa !5
  %221 = load ptr, ptr %20, align 8, !tbaa !5
  %222 = load ptr, ptr %21, align 8, !tbaa !5
  %223 = load ptr, ptr %30, align 8, !tbaa !5
  %224 = call i64 @ilaenv_(ptr noundef @c__15, ptr noundef @.str, ptr noundef %219, ptr noundef %220, ptr noundef %221, ptr noundef %222, ptr noundef %223)
  store i64 %224, ptr %78, align 8, !tbaa !9
  %225 = load i64, ptr %78, align 8, !tbaa !9
  store i64 %225, ptr %36, align 8, !tbaa !9
  %226 = load ptr, ptr %19, align 8, !tbaa !5
  %227 = load i64, ptr %226, align 8, !tbaa !9
  %228 = add nsw i64 %227, 6
  %229 = sdiv i64 %228, 9
  store i64 %229, ptr %37, align 8, !tbaa !9
  %230 = load i64, ptr %36, align 8, !tbaa !9
  %231 = load i64, ptr %37, align 8, !tbaa !9
  %232 = icmp sle i64 %230, %231
  br i1 %232, label %233, label %235

233:                                              ; preds = %217
  %234 = load i64, ptr %36, align 8, !tbaa !9
  br label %237

235:                                              ; preds = %217
  %236 = load i64, ptr %37, align 8, !tbaa !9
  br label %237

237:                                              ; preds = %235, %233
  %238 = phi i64 [ %234, %233 ], [ %236, %235 ]
  store i64 %238, ptr %36, align 8, !tbaa !9
  %239 = load ptr, ptr %21, align 8, !tbaa !5
  %240 = load i64, ptr %239, align 8, !tbaa !9
  %241 = load ptr, ptr %20, align 8, !tbaa !5
  %242 = load i64, ptr %241, align 8, !tbaa !9
  %243 = sub nsw i64 %240, %242
  store i64 %243, ptr %37, align 8, !tbaa !9
  %244 = load i64, ptr %36, align 8, !tbaa !9
  %245 = load i64, ptr %37, align 8, !tbaa !9
  %246 = icmp sle i64 %244, %245
  br i1 %246, label %247, label %249

247:                                              ; preds = %237
  %248 = load i64, ptr %36, align 8, !tbaa !9
  br label %251

249:                                              ; preds = %237
  %250 = load i64, ptr %37, align 8, !tbaa !9
  br label %251

251:                                              ; preds = %249, %247
  %252 = phi i64 [ %248, %247 ], [ %250, %249 ]
  store i64 %252, ptr %78, align 8, !tbaa !9
  store i64 2, ptr %36, align 8, !tbaa !9
  %253 = load i64, ptr %78, align 8, !tbaa !9
  %254 = load i64, ptr %78, align 8, !tbaa !9
  %255 = srem i64 %254, 2
  %256 = sub nsw i64 %253, %255
  store i64 %256, ptr %37, align 8, !tbaa !9
  %257 = load i64, ptr %36, align 8, !tbaa !9
  %258 = load i64, ptr %37, align 8, !tbaa !9
  %259 = icmp sge i64 %257, %258
  br i1 %259, label %260, label %262

260:                                              ; preds = %251
  %261 = load i64, ptr %36, align 8, !tbaa !9
  br label %264

262:                                              ; preds = %251
  %263 = load i64, ptr %37, align 8, !tbaa !9
  br label %264

264:                                              ; preds = %262, %260
  %265 = phi i64 [ %261, %260 ], [ %263, %262 ]
  store i64 %265, ptr %78, align 8, !tbaa !9
  %266 = load i64, ptr %79, align 8, !tbaa !9
  %267 = add nsw i64 %266, 1
  store i64 %267, ptr %36, align 8, !tbaa !9
  %268 = load ptr, ptr %17, align 8, !tbaa !5
  %269 = load ptr, ptr %18, align 8, !tbaa !5
  %270 = load ptr, ptr %19, align 8, !tbaa !5
  %271 = load ptr, ptr %20, align 8, !tbaa !5
  %272 = load ptr, ptr %21, align 8, !tbaa !5
  %273 = load ptr, ptr %22, align 8, !tbaa !5
  %274 = load i64, ptr %33, align 8, !tbaa !9
  %275 = getelementptr inbounds %struct.doublecomplex, ptr %273, i64 %274
  %276 = load ptr, ptr %23, align 8, !tbaa !5
  %277 = load ptr, ptr %25, align 8, !tbaa !5
  %278 = load ptr, ptr %26, align 8, !tbaa !5
  %279 = load ptr, ptr %27, align 8, !tbaa !5
  %280 = load i64, ptr %35, align 8, !tbaa !9
  %281 = getelementptr inbounds %struct.doublecomplex, ptr %279, i64 %280
  %282 = load ptr, ptr %28, align 8, !tbaa !5
  %283 = load ptr, ptr %24, align 8, !tbaa !5
  %284 = getelementptr inbounds %struct.doublecomplex, ptr %283, i64 1
  %285 = load ptr, ptr %22, align 8, !tbaa !5
  %286 = load i64, ptr %33, align 8, !tbaa !9
  %287 = getelementptr inbounds %struct.doublecomplex, ptr %285, i64 %286
  %288 = load ptr, ptr %23, align 8, !tbaa !5
  %289 = load ptr, ptr %19, align 8, !tbaa !5
  %290 = load ptr, ptr %22, align 8, !tbaa !5
  %291 = load i64, ptr %33, align 8, !tbaa !9
  %292 = getelementptr inbounds %struct.doublecomplex, ptr %290, i64 %291
  %293 = load ptr, ptr %23, align 8, !tbaa !5
  %294 = load ptr, ptr %19, align 8, !tbaa !5
  %295 = load ptr, ptr %22, align 8, !tbaa !5
  %296 = load i64, ptr %33, align 8, !tbaa !9
  %297 = getelementptr inbounds %struct.doublecomplex, ptr %295, i64 %296
  %298 = load ptr, ptr %23, align 8, !tbaa !5
  %299 = load ptr, ptr %29, align 8, !tbaa !5
  %300 = getelementptr inbounds %struct.doublecomplex, ptr %299, i64 1
  %301 = call i32 @zlaqr3_(ptr noundef %268, ptr noundef %269, ptr noundef %270, ptr noundef %271, ptr noundef %272, ptr noundef %36, ptr noundef %275, ptr noundef %276, ptr noundef %277, ptr noundef %278, ptr noundef %281, ptr noundef %282, ptr noundef %68, ptr noundef %61, ptr noundef %284, ptr noundef %287, ptr noundef %288, ptr noundef %289, ptr noundef %292, ptr noundef %293, ptr noundef %294, ptr noundef %297, ptr noundef %298, ptr noundef %300, ptr noundef @c_n1)
  %302 = load i64, ptr %78, align 8, !tbaa !9
  %303 = mul nsw i64 %302, 3
  %304 = sdiv i64 %303, 2
  store i64 %304, ptr %36, align 8, !tbaa !9
  %305 = load ptr, ptr %29, align 8, !tbaa !5
  %306 = getelementptr inbounds %struct.doublecomplex, ptr %305, i64 1
  %307 = getelementptr inbounds %struct.doublecomplex, ptr %306, i32 0, i32 0
  %308 = load double, ptr %307, align 8, !tbaa !11
  %309 = fptosi double %308 to i64
  store i64 %309, ptr %37, align 8, !tbaa !9
  %310 = load i64, ptr %36, align 8, !tbaa !9
  %311 = load i64, ptr %37, align 8, !tbaa !9
  %312 = icmp sge i64 %310, %311
  br i1 %312, label %313, label %315

313:                                              ; preds = %264
  %314 = load i64, ptr %36, align 8, !tbaa !9
  br label %317

315:                                              ; preds = %264
  %316 = load i64, ptr %37, align 8, !tbaa !9
  br label %317

317:                                              ; preds = %315, %313
  %318 = phi i64 [ %314, %313 ], [ %316, %315 ]
  store i64 %318, ptr %98, align 8, !tbaa !9
  %319 = load ptr, ptr %30, align 8, !tbaa !5
  %320 = load i64, ptr %319, align 8, !tbaa !9
  %321 = icmp eq i64 %320, -1
  br i1 %321, label %322, label %338

322:                                              ; preds = %317
  %323 = load i64, ptr %98, align 8, !tbaa !9
  %324 = sitofp i64 %323 to double
  store double %324, ptr %41, align 8, !tbaa !16
  %325 = load double, ptr %41, align 8, !tbaa !16
  %326 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  store double %325, ptr %326, align 8, !tbaa !11
  %327 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  store double 0.000000e+00, ptr %327, align 8, !tbaa !14
  %328 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  %329 = load double, ptr %328, align 8, !tbaa !11
  %330 = load ptr, ptr %29, align 8, !tbaa !5
  %331 = getelementptr inbounds %struct.doublecomplex, ptr %330, i64 1
  %332 = getelementptr inbounds %struct.doublecomplex, ptr %331, i32 0, i32 0
  store double %329, ptr %332, align 8, !tbaa !11
  %333 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  %334 = load double, ptr %333, align 8, !tbaa !14
  %335 = load ptr, ptr %29, align 8, !tbaa !5
  %336 = getelementptr inbounds %struct.doublecomplex, ptr %335, i64 1
  %337 = getelementptr inbounds %struct.doublecomplex, ptr %336, i32 0, i32 1
  store double %334, ptr %337, align 8, !tbaa !14
  store i32 0, ptr %16, align 4
  store i32 1, ptr %99, align 4
  br label %1882

338:                                              ; preds = %317
  %339 = getelementptr inbounds [2 x i8], ptr %94, i64 0, i64 0
  %340 = load ptr, ptr %19, align 8, !tbaa !5
  %341 = load ptr, ptr %20, align 8, !tbaa !5
  %342 = load ptr, ptr %21, align 8, !tbaa !5
  %343 = load ptr, ptr %30, align 8, !tbaa !5
  %344 = call i64 @ilaenv_(ptr noundef @c__12, ptr noundef @.str, ptr noundef %339, ptr noundef %340, ptr noundef %341, ptr noundef %342, ptr noundef %343)
  store i64 %344, ptr %84, align 8, !tbaa !9
  %345 = load i64, ptr %84, align 8, !tbaa !9
  %346 = icmp sge i64 11, %345
  br i1 %346, label %347, label %348

347:                                              ; preds = %338
  br label %350

348:                                              ; preds = %338
  %349 = load i64, ptr %84, align 8, !tbaa !9
  br label %350

350:                                              ; preds = %348, %347
  %351 = phi i64 [ 11, %347 ], [ %349, %348 ]
  store i64 %351, ptr %84, align 8, !tbaa !9
  %352 = getelementptr inbounds [2 x i8], ptr %94, i64 0, i64 0
  %353 = load ptr, ptr %19, align 8, !tbaa !5
  %354 = load ptr, ptr %20, align 8, !tbaa !5
  %355 = load ptr, ptr %21, align 8, !tbaa !5
  %356 = load ptr, ptr %30, align 8, !tbaa !5
  %357 = call i64 @ilaenv_(ptr noundef @c__14, ptr noundef @.str, ptr noundef %352, ptr noundef %353, ptr noundef %354, ptr noundef %355, ptr noundef %356)
  store i64 %357, ptr %93, align 8, !tbaa !9
  %358 = load i64, ptr %93, align 8, !tbaa !9
  %359 = icmp sge i64 0, %358
  br i1 %359, label %360, label %361

360:                                              ; preds = %350
  br label %363

361:                                              ; preds = %350
  %362 = load i64, ptr %93, align 8, !tbaa !9
  br label %363

363:                                              ; preds = %361, %360
  %364 = phi i64 [ 0, %360 ], [ %362, %361 ]
  store i64 %364, ptr %93, align 8, !tbaa !9
  %365 = getelementptr inbounds [2 x i8], ptr %94, i64 0, i64 0
  %366 = load ptr, ptr %19, align 8, !tbaa !5
  %367 = load ptr, ptr %20, align 8, !tbaa !5
  %368 = load ptr, ptr %21, align 8, !tbaa !5
  %369 = load ptr, ptr %30, align 8, !tbaa !5
  %370 = call i64 @ilaenv_(ptr noundef @c__16, ptr noundef @.str, ptr noundef %365, ptr noundef %366, ptr noundef %367, ptr noundef %368, ptr noundef %369)
  store i64 %370, ptr %88, align 8, !tbaa !9
  %371 = load i64, ptr %88, align 8, !tbaa !9
  %372 = icmp sge i64 0, %371
  br i1 %372, label %373, label %374

373:                                              ; preds = %363
  br label %376

374:                                              ; preds = %363
  %375 = load i64, ptr %88, align 8, !tbaa !9
  br label %376

376:                                              ; preds = %374, %373
  %377 = phi i64 [ 0, %373 ], [ %375, %374 ]
  store i64 %377, ptr %88, align 8, !tbaa !9
  %378 = load i64, ptr %88, align 8, !tbaa !9
  %379 = icmp sle i64 2, %378
  br i1 %379, label %380, label %381

380:                                              ; preds = %376
  br label %383

381:                                              ; preds = %376
  %382 = load i64, ptr %88, align 8, !tbaa !9
  br label %383

383:                                              ; preds = %381, %380
  %384 = phi i64 [ 2, %380 ], [ %382, %381 ]
  store i64 %384, ptr %88, align 8, !tbaa !9
  %385 = load ptr, ptr %19, align 8, !tbaa !5
  %386 = load i64, ptr %385, align 8, !tbaa !9
  %387 = sub nsw i64 %386, 1
  %388 = sdiv i64 %387, 3
  store i64 %388, ptr %36, align 8, !tbaa !9
  %389 = load ptr, ptr %30, align 8, !tbaa !5
  %390 = load i64, ptr %389, align 8, !tbaa !9
  %391 = sdiv i64 %390, 2
  store i64 %391, ptr %37, align 8, !tbaa !9
  %392 = load i64, ptr %36, align 8, !tbaa !9
  %393 = load i64, ptr %37, align 8, !tbaa !9
  %394 = icmp sle i64 %392, %393
  br i1 %394, label %395, label %397

395:                                              ; preds = %383
  %396 = load i64, ptr %36, align 8, !tbaa !9
  br label %399

397:                                              ; preds = %383
  %398 = load i64, ptr %37, align 8, !tbaa !9
  br label %399

399:                                              ; preds = %397, %395
  %400 = phi i64 [ %396, %395 ], [ %398, %397 ]
  store i64 %400, ptr %91, align 8, !tbaa !9
  %401 = load i64, ptr %91, align 8, !tbaa !9
  store i64 %401, ptr %70, align 8, !tbaa !9
  %402 = load ptr, ptr %19, align 8, !tbaa !5
  %403 = load i64, ptr %402, align 8, !tbaa !9
  %404 = add nsw i64 %403, 6
  %405 = sdiv i64 %404, 9
  store i64 %405, ptr %36, align 8, !tbaa !9
  %406 = load ptr, ptr %30, align 8, !tbaa !5
  %407 = load i64, ptr %406, align 8, !tbaa !9
  %408 = shl i64 %407, 1
  %409 = sdiv i64 %408, 3
  store i64 %409, ptr %37, align 8, !tbaa !9
  %410 = load i64, ptr %36, align 8, !tbaa !9
  %411 = load i64, ptr %37, align 8, !tbaa !9
  %412 = icmp sle i64 %410, %411
  br i1 %412, label %413, label %415

413:                                              ; preds = %399
  %414 = load i64, ptr %36, align 8, !tbaa !9
  br label %417

415:                                              ; preds = %399
  %416 = load i64, ptr %37, align 8, !tbaa !9
  br label %417

417:                                              ; preds = %415, %413
  %418 = phi i64 [ %414, %413 ], [ %416, %415 ]
  store i64 %418, ptr %90, align 8, !tbaa !9
  %419 = load i64, ptr %90, align 8, !tbaa !9
  %420 = srem i64 %419, 2
  %421 = load i64, ptr %90, align 8, !tbaa !9
  %422 = sub nsw i64 %421, %420
  store i64 %422, ptr %90, align 8, !tbaa !9
  store i64 1, ptr %82, align 8, !tbaa !9
  store i64 10, ptr %36, align 8, !tbaa !9
  %423 = load ptr, ptr %21, align 8, !tbaa !5
  %424 = load i64, ptr %423, align 8, !tbaa !9
  %425 = load ptr, ptr %20, align 8, !tbaa !5
  %426 = load i64, ptr %425, align 8, !tbaa !9
  %427 = sub nsw i64 %424, %426
  %428 = add nsw i64 %427, 1
  store i64 %428, ptr %37, align 8, !tbaa !9
  %429 = load i64, ptr %36, align 8, !tbaa !9
  %430 = load i64, ptr %37, align 8, !tbaa !9
  %431 = icmp sge i64 %429, %430
  br i1 %431, label %432, label %434

432:                                              ; preds = %417
  %433 = load i64, ptr %36, align 8, !tbaa !9
  br label %436

434:                                              ; preds = %417
  %435 = load i64, ptr %37, align 8, !tbaa !9
  br label %436

436:                                              ; preds = %434, %432
  %437 = phi i64 [ %433, %432 ], [ %435, %434 ]
  %438 = mul nsw i64 %437, 30
  store i64 %438, ptr %89, align 8, !tbaa !9
  %439 = load ptr, ptr %21, align 8, !tbaa !5
  %440 = load i64, ptr %439, align 8, !tbaa !9
  store i64 %440, ptr %83, align 8, !tbaa !9
  %441 = load i64, ptr %89, align 8, !tbaa !9
  store i64 %441, ptr %36, align 8, !tbaa !9
  store i64 1, ptr %63, align 8, !tbaa !9
  br label %442

442:                                              ; preds = %1859, %436
  %443 = load i64, ptr %63, align 8, !tbaa !9
  %444 = load i64, ptr %36, align 8, !tbaa !9
  %445 = icmp sle i64 %443, %444
  br i1 %445, label %446, label %1862

446:                                              ; preds = %442
  %447 = load i64, ptr %83, align 8, !tbaa !9
  %448 = load ptr, ptr %20, align 8, !tbaa !5
  %449 = load i64, ptr %448, align 8, !tbaa !9
  %450 = icmp slt i64 %447, %449
  br i1 %450, label %451, label %452

451:                                              ; preds = %446
  br label %1865

452:                                              ; preds = %446
  %453 = load ptr, ptr %20, align 8, !tbaa !5
  %454 = load i64, ptr %453, align 8, !tbaa !9
  %455 = add nsw i64 %454, 1
  store i64 %455, ptr %37, align 8, !tbaa !9
  %456 = load i64, ptr %83, align 8, !tbaa !9
  store i64 %456, ptr %55, align 8, !tbaa !9
  br label %457

457:                                              ; preds = %483, %452
  %458 = load i64, ptr %55, align 8, !tbaa !9
  %459 = load i64, ptr %37, align 8, !tbaa !9
  %460 = icmp sge i64 %458, %459
  br i1 %460, label %461, label %486

461:                                              ; preds = %457
  %462 = load i64, ptr %55, align 8, !tbaa !9
  %463 = load i64, ptr %55, align 8, !tbaa !9
  %464 = sub nsw i64 %463, 1
  %465 = load i64, ptr %32, align 8, !tbaa !9
  %466 = mul nsw i64 %464, %465
  %467 = add nsw i64 %462, %466
  store i64 %467, ptr %38, align 8, !tbaa !9
  %468 = load ptr, ptr %22, align 8, !tbaa !5
  %469 = load i64, ptr %38, align 8, !tbaa !9
  %470 = getelementptr inbounds %struct.doublecomplex, ptr %468, i64 %469
  %471 = getelementptr inbounds %struct.doublecomplex, ptr %470, i32 0, i32 0
  %472 = load double, ptr %471, align 8, !tbaa !11
  %473 = fcmp oeq double %472, 0.000000e+00
  br i1 %473, label %474, label %482

474:                                              ; preds = %461
  %475 = load ptr, ptr %22, align 8, !tbaa !5
  %476 = load i64, ptr %38, align 8, !tbaa !9
  %477 = getelementptr inbounds %struct.doublecomplex, ptr %475, i64 %476
  %478 = getelementptr inbounds %struct.doublecomplex, ptr %477, i32 0, i32 1
  %479 = load double, ptr %478, align 8, !tbaa !14
  %480 = fcmp oeq double %479, 0.000000e+00
  br i1 %480, label %481, label %482

481:                                              ; preds = %474
  br label %489

482:                                              ; preds = %474, %461
  br label %483

483:                                              ; preds = %482
  %484 = load i64, ptr %55, align 8, !tbaa !9
  %485 = add nsw i64 %484, -1
  store i64 %485, ptr %55, align 8, !tbaa !9
  br label %457, !llvm.loop !17

486:                                              ; preds = %457
  %487 = load ptr, ptr %20, align 8, !tbaa !5
  %488 = load i64, ptr %487, align 8, !tbaa !9
  store i64 %488, ptr %55, align 8, !tbaa !9
  br label %489

489:                                              ; preds = %486, %481
  %490 = load i64, ptr %55, align 8, !tbaa !9
  store i64 %490, ptr %86, align 8, !tbaa !9
  %491 = load i64, ptr %83, align 8, !tbaa !9
  %492 = load i64, ptr %86, align 8, !tbaa !9
  %493 = sub nsw i64 %491, %492
  %494 = add nsw i64 %493, 1
  store i64 %494, ptr %62, align 8, !tbaa !9
  %495 = load i64, ptr %62, align 8, !tbaa !9
  %496 = load i64, ptr %91, align 8, !tbaa !9
  %497 = icmp sle i64 %495, %496
  br i1 %497, label %498, label %500

498:                                              ; preds = %489
  %499 = load i64, ptr %62, align 8, !tbaa !9
  br label %502

500:                                              ; preds = %489
  %501 = load i64, ptr %91, align 8, !tbaa !9
  br label %502

502:                                              ; preds = %500, %498
  %503 = phi i64 [ %499, %498 ], [ %501, %500 ]
  store i64 %503, ptr %96, align 8, !tbaa !9
  %504 = load i64, ptr %82, align 8, !tbaa !9
  %505 = icmp slt i64 %504, 5
  br i1 %505, label %506, label %516

506:                                              ; preds = %502
  %507 = load i64, ptr %96, align 8, !tbaa !9
  %508 = load i64, ptr %79, align 8, !tbaa !9
  %509 = icmp sle i64 %507, %508
  br i1 %509, label %510, label %512

510:                                              ; preds = %506
  %511 = load i64, ptr %96, align 8, !tbaa !9
  br label %514

512:                                              ; preds = %506
  %513 = load i64, ptr %79, align 8, !tbaa !9
  br label %514

514:                                              ; preds = %512, %510
  %515 = phi i64 [ %511, %510 ], [ %513, %512 ]
  store i64 %515, ptr %70, align 8, !tbaa !9
  br label %529

516:                                              ; preds = %502
  %517 = load i64, ptr %96, align 8, !tbaa !9
  store i64 %517, ptr %37, align 8, !tbaa !9
  %518 = load i64, ptr %70, align 8, !tbaa !9
  %519 = shl i64 %518, 1
  store i64 %519, ptr %38, align 8, !tbaa !9
  %520 = load i64, ptr %37, align 8, !tbaa !9
  %521 = load i64, ptr %38, align 8, !tbaa !9
  %522 = icmp sle i64 %520, %521
  br i1 %522, label %523, label %525

523:                                              ; preds = %516
  %524 = load i64, ptr %37, align 8, !tbaa !9
  br label %527

525:                                              ; preds = %516
  %526 = load i64, ptr %38, align 8, !tbaa !9
  br label %527

527:                                              ; preds = %525, %523
  %528 = phi i64 [ %524, %523 ], [ %526, %525 ]
  store i64 %528, ptr %70, align 8, !tbaa !9
  br label %529

529:                                              ; preds = %527, %514
  %530 = load i64, ptr %70, align 8, !tbaa !9
  %531 = load i64, ptr %91, align 8, !tbaa !9
  %532 = icmp slt i64 %530, %531
  br i1 %532, label %533, label %631

533:                                              ; preds = %529
  %534 = load i64, ptr %70, align 8, !tbaa !9
  %535 = load i64, ptr %62, align 8, !tbaa !9
  %536 = sub nsw i64 %535, 1
  %537 = icmp sge i64 %534, %536
  br i1 %537, label %538, label %540

538:                                              ; preds = %533
  %539 = load i64, ptr %62, align 8, !tbaa !9
  store i64 %539, ptr %70, align 8, !tbaa !9
  br label %630

540:                                              ; preds = %533
  %541 = load i64, ptr %83, align 8, !tbaa !9
  %542 = load i64, ptr %70, align 8, !tbaa !9
  %543 = sub nsw i64 %541, %542
  %544 = add nsw i64 %543, 1
  store i64 %544, ptr %92, align 8, !tbaa !9
  %545 = load i64, ptr %92, align 8, !tbaa !9
  %546 = load i64, ptr %92, align 8, !tbaa !9
  %547 = sub nsw i64 %546, 1
  %548 = load i64, ptr %32, align 8, !tbaa !9
  %549 = mul nsw i64 %547, %548
  %550 = add nsw i64 %545, %549
  store i64 %550, ptr %37, align 8, !tbaa !9
  %551 = load i64, ptr %92, align 8, !tbaa !9
  %552 = sub nsw i64 %551, 1
  %553 = load i64, ptr %92, align 8, !tbaa !9
  %554 = sub nsw i64 %553, 2
  %555 = load i64, ptr %32, align 8, !tbaa !9
  %556 = mul nsw i64 %554, %555
  %557 = add nsw i64 %552, %556
  store i64 %557, ptr %38, align 8, !tbaa !9
  %558 = load ptr, ptr %22, align 8, !tbaa !5
  %559 = load i64, ptr %37, align 8, !tbaa !9
  %560 = getelementptr inbounds %struct.doublecomplex, ptr %558, i64 %559
  %561 = getelementptr inbounds %struct.doublecomplex, ptr %560, i32 0, i32 0
  %562 = load double, ptr %561, align 8, !tbaa !11
  store double %562, ptr %41, align 8, !tbaa !16
  %563 = load double, ptr %41, align 8, !tbaa !16
  %564 = fcmp oge double %563, 0.000000e+00
  br i1 %564, label %565, label %567

565:                                              ; preds = %540
  %566 = load double, ptr %41, align 8, !tbaa !16
  br label %570

567:                                              ; preds = %540
  %568 = load double, ptr %41, align 8, !tbaa !16
  %569 = fneg double %568
  br label %570

570:                                              ; preds = %567, %565
  %571 = phi double [ %566, %565 ], [ %569, %567 ]
  %572 = load ptr, ptr %22, align 8, !tbaa !5
  %573 = load i64, ptr %92, align 8, !tbaa !9
  %574 = load i64, ptr %92, align 8, !tbaa !9
  %575 = sub nsw i64 %574, 1
  %576 = load i64, ptr %32, align 8, !tbaa !9
  %577 = mul nsw i64 %575, %576
  %578 = add nsw i64 %573, %577
  %579 = getelementptr inbounds %struct.doublecomplex, ptr %572, i64 %578
  %580 = call double @d_imag(ptr noundef %579)
  store double %580, ptr %42, align 8, !tbaa !16
  %581 = load double, ptr %42, align 8, !tbaa !16
  %582 = fcmp oge double %581, 0.000000e+00
  br i1 %582, label %583, label %585

583:                                              ; preds = %570
  %584 = load double, ptr %42, align 8, !tbaa !16
  br label %588

585:                                              ; preds = %570
  %586 = load double, ptr %42, align 8, !tbaa !16
  %587 = fneg double %586
  br label %588

588:                                              ; preds = %585, %583
  %589 = phi double [ %584, %583 ], [ %587, %585 ]
  %590 = fadd double %571, %589
  %591 = load ptr, ptr %22, align 8, !tbaa !5
  %592 = load i64, ptr %38, align 8, !tbaa !9
  %593 = getelementptr inbounds %struct.doublecomplex, ptr %591, i64 %592
  %594 = getelementptr inbounds %struct.doublecomplex, ptr %593, i32 0, i32 0
  %595 = load double, ptr %594, align 8, !tbaa !11
  store double %595, ptr %43, align 8, !tbaa !16
  %596 = load double, ptr %43, align 8, !tbaa !16
  %597 = fcmp oge double %596, 0.000000e+00
  br i1 %597, label %598, label %600

598:                                              ; preds = %588
  %599 = load double, ptr %43, align 8, !tbaa !16
  br label %603

600:                                              ; preds = %588
  %601 = load double, ptr %43, align 8, !tbaa !16
  %602 = fneg double %601
  br label %603

603:                                              ; preds = %600, %598
  %604 = phi double [ %599, %598 ], [ %602, %600 ]
  %605 = load ptr, ptr %22, align 8, !tbaa !5
  %606 = load i64, ptr %92, align 8, !tbaa !9
  %607 = sub nsw i64 %606, 1
  %608 = load i64, ptr %92, align 8, !tbaa !9
  %609 = sub nsw i64 %608, 2
  %610 = load i64, ptr %32, align 8, !tbaa !9
  %611 = mul nsw i64 %609, %610
  %612 = add nsw i64 %607, %611
  %613 = getelementptr inbounds %struct.doublecomplex, ptr %605, i64 %612
  %614 = call double @d_imag(ptr noundef %613)
  store double %614, ptr %44, align 8, !tbaa !16
  %615 = load double, ptr %44, align 8, !tbaa !16
  %616 = fcmp oge double %615, 0.000000e+00
  br i1 %616, label %617, label %619

617:                                              ; preds = %603
  %618 = load double, ptr %44, align 8, !tbaa !16
  br label %622

619:                                              ; preds = %603
  %620 = load double, ptr %44, align 8, !tbaa !16
  %621 = fneg double %620
  br label %622

622:                                              ; preds = %619, %617
  %623 = phi double [ %618, %617 ], [ %621, %619 ]
  %624 = fadd double %604, %623
  %625 = fcmp ogt double %590, %624
  br i1 %625, label %626, label %629

626:                                              ; preds = %622
  %627 = load i64, ptr %70, align 8, !tbaa !9
  %628 = add nsw i64 %627, 1
  store i64 %628, ptr %70, align 8, !tbaa !9
  br label %629

629:                                              ; preds = %626, %622
  br label %630

630:                                              ; preds = %629, %538
  br label %631

631:                                              ; preds = %630, %529
  %632 = load i64, ptr %82, align 8, !tbaa !9
  %633 = icmp slt i64 %632, 5
  br i1 %633, label %634, label %635

634:                                              ; preds = %631
  store i64 -1, ptr %81, align 8, !tbaa !9
  br label %655

635:                                              ; preds = %631
  %636 = load i64, ptr %81, align 8, !tbaa !9
  %637 = icmp sge i64 %636, 0
  br i1 %637, label %642, label %638

638:                                              ; preds = %635
  %639 = load i64, ptr %70, align 8, !tbaa !9
  %640 = load i64, ptr %96, align 8, !tbaa !9
  %641 = icmp sge i64 %639, %640
  br i1 %641, label %642, label %654

642:                                              ; preds = %638, %635
  %643 = load i64, ptr %81, align 8, !tbaa !9
  %644 = add nsw i64 %643, 1
  store i64 %644, ptr %81, align 8, !tbaa !9
  %645 = load i64, ptr %70, align 8, !tbaa !9
  %646 = load i64, ptr %81, align 8, !tbaa !9
  %647 = sub nsw i64 %645, %646
  %648 = icmp slt i64 %647, 2
  br i1 %648, label %649, label %650

649:                                              ; preds = %642
  store i64 0, ptr %81, align 8, !tbaa !9
  br label %650

650:                                              ; preds = %649, %642
  %651 = load i64, ptr %81, align 8, !tbaa !9
  %652 = load i64, ptr %70, align 8, !tbaa !9
  %653 = sub nsw i64 %652, %651
  store i64 %653, ptr %70, align 8, !tbaa !9
  br label %654

654:                                              ; preds = %650, %638
  br label %655

655:                                              ; preds = %654, %634
  %656 = load ptr, ptr %19, align 8, !tbaa !5
  %657 = load i64, ptr %656, align 8, !tbaa !9
  %658 = load i64, ptr %70, align 8, !tbaa !9
  %659 = sub nsw i64 %657, %658
  %660 = add nsw i64 %659, 1
  store i64 %660, ptr %67, align 8, !tbaa !9
  %661 = load i64, ptr %70, align 8, !tbaa !9
  %662 = add nsw i64 %661, 1
  store i64 %662, ptr %65, align 8, !tbaa !9
  %663 = load ptr, ptr %19, align 8, !tbaa !5
  %664 = load i64, ptr %663, align 8, !tbaa !9
  %665 = load i64, ptr %70, align 8, !tbaa !9
  %666 = sub nsw i64 %664, %665
  %667 = sub nsw i64 %666, 1
  %668 = load i64, ptr %65, align 8, !tbaa !9
  %669 = sub nsw i64 %667, %668
  %670 = add nsw i64 %669, 1
  store i64 %670, ptr %75, align 8, !tbaa !9
  %671 = load i64, ptr %70, align 8, !tbaa !9
  %672 = add nsw i64 %671, 2
  store i64 %672, ptr %80, align 8, !tbaa !9
  %673 = load ptr, ptr %19, align 8, !tbaa !5
  %674 = load i64, ptr %673, align 8, !tbaa !9
  %675 = load i64, ptr %70, align 8, !tbaa !9
  %676 = sub nsw i64 %674, %675
  %677 = load i64, ptr %80, align 8, !tbaa !9
  %678 = sub nsw i64 %676, %677
  %679 = add nsw i64 %678, 1
  store i64 %679, ptr %76, align 8, !tbaa !9
  %680 = load ptr, ptr %17, align 8, !tbaa !5
  %681 = load ptr, ptr %18, align 8, !tbaa !5
  %682 = load ptr, ptr %19, align 8, !tbaa !5
  %683 = load ptr, ptr %22, align 8, !tbaa !5
  %684 = load i64, ptr %33, align 8, !tbaa !9
  %685 = getelementptr inbounds %struct.doublecomplex, ptr %683, i64 %684
  %686 = load ptr, ptr %23, align 8, !tbaa !5
  %687 = load ptr, ptr %25, align 8, !tbaa !5
  %688 = load ptr, ptr %26, align 8, !tbaa !5
  %689 = load ptr, ptr %27, align 8, !tbaa !5
  %690 = load i64, ptr %35, align 8, !tbaa !9
  %691 = getelementptr inbounds %struct.doublecomplex, ptr %689, i64 %690
  %692 = load ptr, ptr %28, align 8, !tbaa !5
  %693 = load ptr, ptr %24, align 8, !tbaa !5
  %694 = getelementptr inbounds %struct.doublecomplex, ptr %693, i64 1
  %695 = load ptr, ptr %22, align 8, !tbaa !5
  %696 = load i64, ptr %67, align 8, !tbaa !9
  %697 = load i64, ptr %32, align 8, !tbaa !9
  %698 = add nsw i64 %696, %697
  %699 = getelementptr inbounds %struct.doublecomplex, ptr %695, i64 %698
  %700 = load ptr, ptr %23, align 8, !tbaa !5
  %701 = load ptr, ptr %22, align 8, !tbaa !5
  %702 = load i64, ptr %67, align 8, !tbaa !9
  %703 = load i64, ptr %65, align 8, !tbaa !9
  %704 = load i64, ptr %32, align 8, !tbaa !9
  %705 = mul nsw i64 %703, %704
  %706 = add nsw i64 %702, %705
  %707 = getelementptr inbounds %struct.doublecomplex, ptr %701, i64 %706
  %708 = load ptr, ptr %23, align 8, !tbaa !5
  %709 = load ptr, ptr %22, align 8, !tbaa !5
  %710 = load i64, ptr %80, align 8, !tbaa !9
  %711 = load i64, ptr %32, align 8, !tbaa !9
  %712 = add nsw i64 %710, %711
  %713 = getelementptr inbounds %struct.doublecomplex, ptr %709, i64 %712
  %714 = load ptr, ptr %23, align 8, !tbaa !5
  %715 = load ptr, ptr %29, align 8, !tbaa !5
  %716 = getelementptr inbounds %struct.doublecomplex, ptr %715, i64 1
  %717 = load ptr, ptr %30, align 8, !tbaa !5
  %718 = call i32 @zlaqr3_(ptr noundef %680, ptr noundef %681, ptr noundef %682, ptr noundef %86, ptr noundef %83, ptr noundef %70, ptr noundef %685, ptr noundef %686, ptr noundef %687, ptr noundef %688, ptr noundef %691, ptr noundef %692, ptr noundef %68, ptr noundef %61, ptr noundef %694, ptr noundef %699, ptr noundef %700, ptr noundef %75, ptr noundef %707, ptr noundef %708, ptr noundef %76, ptr noundef %713, ptr noundef %714, ptr noundef %716, ptr noundef %717)
  %719 = load i64, ptr %61, align 8, !tbaa !9
  %720 = load i64, ptr %83, align 8, !tbaa !9
  %721 = sub nsw i64 %720, %719
  store i64 %721, ptr %83, align 8, !tbaa !9
  %722 = load i64, ptr %83, align 8, !tbaa !9
  %723 = load i64, ptr %68, align 8, !tbaa !9
  %724 = sub nsw i64 %722, %723
  %725 = add nsw i64 %724, 1
  store i64 %725, ptr %64, align 8, !tbaa !9
  %726 = load i64, ptr %61, align 8, !tbaa !9
  %727 = icmp eq i64 %726, 0
  br i1 %727, label %750, label %728

728:                                              ; preds = %655
  %729 = load i64, ptr %61, align 8, !tbaa !9
  %730 = mul nsw i64 %729, 100
  %731 = load i64, ptr %70, align 8, !tbaa !9
  %732 = load i64, ptr %93, align 8, !tbaa !9
  %733 = mul nsw i64 %731, %732
  %734 = icmp sle i64 %730, %733
  br i1 %734, label %735, label %1851

735:                                              ; preds = %728
  %736 = load i64, ptr %83, align 8, !tbaa !9
  %737 = load i64, ptr %86, align 8, !tbaa !9
  %738 = sub nsw i64 %736, %737
  %739 = add nsw i64 %738, 1
  %740 = load i64, ptr %84, align 8, !tbaa !9
  %741 = load i64, ptr %91, align 8, !tbaa !9
  %742 = icmp sle i64 %740, %741
  br i1 %742, label %743, label %745

743:                                              ; preds = %735
  %744 = load i64, ptr %84, align 8, !tbaa !9
  br label %747

745:                                              ; preds = %735
  %746 = load i64, ptr %91, align 8, !tbaa !9
  br label %747

747:                                              ; preds = %745, %743
  %748 = phi i64 [ %744, %743 ], [ %746, %745 ]
  %749 = icmp sgt i64 %739, %748
  br i1 %749, label %750, label %1851

750:                                              ; preds = %747, %655
  store i64 2, ptr %39, align 8, !tbaa !9
  %751 = load i64, ptr %83, align 8, !tbaa !9
  %752 = load i64, ptr %86, align 8, !tbaa !9
  %753 = sub nsw i64 %751, %752
  store i64 %753, ptr %40, align 8, !tbaa !9
  %754 = load i64, ptr %90, align 8, !tbaa !9
  %755 = load i64, ptr %78, align 8, !tbaa !9
  %756 = icmp sle i64 %754, %755
  br i1 %756, label %757, label %759

757:                                              ; preds = %750
  %758 = load i64, ptr %90, align 8, !tbaa !9
  br label %761

759:                                              ; preds = %750
  %760 = load i64, ptr %78, align 8, !tbaa !9
  br label %761

761:                                              ; preds = %759, %757
  %762 = phi i64 [ %758, %757 ], [ %760, %759 ]
  store i64 %762, ptr %37, align 8, !tbaa !9
  %763 = load i64, ptr %39, align 8, !tbaa !9
  %764 = load i64, ptr %40, align 8, !tbaa !9
  %765 = icmp sge i64 %763, %764
  br i1 %765, label %766, label %768

766:                                              ; preds = %761
  %767 = load i64, ptr %39, align 8, !tbaa !9
  br label %770

768:                                              ; preds = %761
  %769 = load i64, ptr %40, align 8, !tbaa !9
  br label %770

770:                                              ; preds = %768, %766
  %771 = phi i64 [ %767, %766 ], [ %769, %768 ]
  store i64 %771, ptr %38, align 8, !tbaa !9
  %772 = load i64, ptr %37, align 8, !tbaa !9
  %773 = load i64, ptr %38, align 8, !tbaa !9
  %774 = icmp sle i64 %772, %773
  br i1 %774, label %775, label %777

775:                                              ; preds = %770
  %776 = load i64, ptr %37, align 8, !tbaa !9
  br label %779

777:                                              ; preds = %770
  %778 = load i64, ptr %38, align 8, !tbaa !9
  br label %779

779:                                              ; preds = %777, %775
  %780 = phi i64 [ %776, %775 ], [ %778, %777 ]
  store i64 %780, ptr %69, align 8, !tbaa !9
  %781 = load i64, ptr %69, align 8, !tbaa !9
  %782 = srem i64 %781, 2
  %783 = load i64, ptr %69, align 8, !tbaa !9
  %784 = sub nsw i64 %783, %782
  store i64 %784, ptr %69, align 8, !tbaa !9
  %785 = load i64, ptr %82, align 8, !tbaa !9
  %786 = srem i64 %785, 6
  %787 = icmp eq i64 %786, 0
  br i1 %787, label %788, label %898

788:                                              ; preds = %779
  %789 = load i64, ptr %83, align 8, !tbaa !9
  %790 = load i64, ptr %69, align 8, !tbaa !9
  %791 = sub nsw i64 %789, %790
  %792 = add nsw i64 %791, 1
  store i64 %792, ptr %64, align 8, !tbaa !9
  %793 = load i64, ptr %64, align 8, !tbaa !9
  %794 = add nsw i64 %793, 1
  store i64 %794, ptr %37, align 8, !tbaa !9
  %795 = load i64, ptr %83, align 8, !tbaa !9
  store i64 %795, ptr %54, align 8, !tbaa !9
  br label %796

796:                                              ; preds = %894, %788
  %797 = load i64, ptr %54, align 8, !tbaa !9
  %798 = load i64, ptr %37, align 8, !tbaa !9
  %799 = icmp sge i64 %797, %798
  br i1 %799, label %800, label %897

800:                                              ; preds = %796
  %801 = load i64, ptr %54, align 8, !tbaa !9
  store i64 %801, ptr %38, align 8, !tbaa !9
  %802 = load i64, ptr %54, align 8, !tbaa !9
  %803 = load i64, ptr %54, align 8, !tbaa !9
  %804 = load i64, ptr %32, align 8, !tbaa !9
  %805 = mul nsw i64 %803, %804
  %806 = add nsw i64 %802, %805
  store i64 %806, ptr %39, align 8, !tbaa !9
  %807 = load i64, ptr %54, align 8, !tbaa !9
  %808 = load i64, ptr %54, align 8, !tbaa !9
  %809 = sub nsw i64 %808, 1
  %810 = load i64, ptr %32, align 8, !tbaa !9
  %811 = mul nsw i64 %809, %810
  %812 = add nsw i64 %807, %811
  store i64 %812, ptr %40, align 8, !tbaa !9
  %813 = load ptr, ptr %22, align 8, !tbaa !5
  %814 = load i64, ptr %40, align 8, !tbaa !9
  %815 = getelementptr inbounds %struct.doublecomplex, ptr %813, i64 %814
  %816 = getelementptr inbounds %struct.doublecomplex, ptr %815, i32 0, i32 0
  %817 = load double, ptr %816, align 8, !tbaa !11
  store double %817, ptr %41, align 8, !tbaa !16
  %818 = load double, ptr %41, align 8, !tbaa !16
  %819 = fcmp oge double %818, 0.000000e+00
  br i1 %819, label %820, label %822

820:                                              ; preds = %800
  %821 = load double, ptr %41, align 8, !tbaa !16
  br label %825

822:                                              ; preds = %800
  %823 = load double, ptr %41, align 8, !tbaa !16
  %824 = fneg double %823
  br label %825

825:                                              ; preds = %822, %820
  %826 = phi double [ %821, %820 ], [ %824, %822 ]
  %827 = load ptr, ptr %22, align 8, !tbaa !5
  %828 = load i64, ptr %54, align 8, !tbaa !9
  %829 = load i64, ptr %54, align 8, !tbaa !9
  %830 = sub nsw i64 %829, 1
  %831 = load i64, ptr %32, align 8, !tbaa !9
  %832 = mul nsw i64 %830, %831
  %833 = add nsw i64 %828, %832
  %834 = getelementptr inbounds %struct.doublecomplex, ptr %827, i64 %833
  %835 = call double @d_imag(ptr noundef %834)
  store double %835, ptr %42, align 8, !tbaa !16
  %836 = load double, ptr %42, align 8, !tbaa !16
  %837 = fcmp oge double %836, 0.000000e+00
  br i1 %837, label %838, label %840

838:                                              ; preds = %825
  %839 = load double, ptr %42, align 8, !tbaa !16
  br label %843

840:                                              ; preds = %825
  %841 = load double, ptr %42, align 8, !tbaa !16
  %842 = fneg double %841
  br label %843

843:                                              ; preds = %840, %838
  %844 = phi double [ %839, %838 ], [ %842, %840 ]
  %845 = fadd double %826, %844
  %846 = fmul double %845, 7.500000e-01
  store double %846, ptr %43, align 8, !tbaa !16
  %847 = load ptr, ptr %22, align 8, !tbaa !5
  %848 = load i64, ptr %39, align 8, !tbaa !9
  %849 = getelementptr inbounds %struct.doublecomplex, ptr %847, i64 %848
  %850 = getelementptr inbounds %struct.doublecomplex, ptr %849, i32 0, i32 0
  %851 = load double, ptr %850, align 8, !tbaa !11
  %852 = load double, ptr %43, align 8, !tbaa !16
  %853 = fadd double %851, %852
  %854 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  store double %853, ptr %854, align 8, !tbaa !11
  %855 = load ptr, ptr %22, align 8, !tbaa !5
  %856 = load i64, ptr %39, align 8, !tbaa !9
  %857 = getelementptr inbounds %struct.doublecomplex, ptr %855, i64 %856
  %858 = getelementptr inbounds %struct.doublecomplex, ptr %857, i32 0, i32 1
  %859 = load double, ptr %858, align 8, !tbaa !14
  %860 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  store double %859, ptr %860, align 8, !tbaa !14
  %861 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  %862 = load double, ptr %861, align 8, !tbaa !11
  %863 = load ptr, ptr %24, align 8, !tbaa !5
  %864 = load i64, ptr %38, align 8, !tbaa !9
  %865 = getelementptr inbounds %struct.doublecomplex, ptr %863, i64 %864
  %866 = getelementptr inbounds %struct.doublecomplex, ptr %865, i32 0, i32 0
  store double %862, ptr %866, align 8, !tbaa !11
  %867 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  %868 = load double, ptr %867, align 8, !tbaa !14
  %869 = load ptr, ptr %24, align 8, !tbaa !5
  %870 = load i64, ptr %38, align 8, !tbaa !9
  %871 = getelementptr inbounds %struct.doublecomplex, ptr %869, i64 %870
  %872 = getelementptr inbounds %struct.doublecomplex, ptr %871, i32 0, i32 1
  store double %868, ptr %872, align 8, !tbaa !14
  %873 = load i64, ptr %54, align 8, !tbaa !9
  %874 = sub nsw i64 %873, 1
  store i64 %874, ptr %38, align 8, !tbaa !9
  %875 = load i64, ptr %54, align 8, !tbaa !9
  store i64 %875, ptr %39, align 8, !tbaa !9
  %876 = load ptr, ptr %24, align 8, !tbaa !5
  %877 = load i64, ptr %39, align 8, !tbaa !9
  %878 = getelementptr inbounds %struct.doublecomplex, ptr %876, i64 %877
  %879 = getelementptr inbounds %struct.doublecomplex, ptr %878, i32 0, i32 0
  %880 = load double, ptr %879, align 8, !tbaa !11
  %881 = load ptr, ptr %24, align 8, !tbaa !5
  %882 = load i64, ptr %38, align 8, !tbaa !9
  %883 = getelementptr inbounds %struct.doublecomplex, ptr %881, i64 %882
  %884 = getelementptr inbounds %struct.doublecomplex, ptr %883, i32 0, i32 0
  store double %880, ptr %884, align 8, !tbaa !11
  %885 = load ptr, ptr %24, align 8, !tbaa !5
  %886 = load i64, ptr %39, align 8, !tbaa !9
  %887 = getelementptr inbounds %struct.doublecomplex, ptr %885, i64 %886
  %888 = getelementptr inbounds %struct.doublecomplex, ptr %887, i32 0, i32 1
  %889 = load double, ptr %888, align 8, !tbaa !14
  %890 = load ptr, ptr %24, align 8, !tbaa !5
  %891 = load i64, ptr %38, align 8, !tbaa !9
  %892 = getelementptr inbounds %struct.doublecomplex, ptr %890, i64 %891
  %893 = getelementptr inbounds %struct.doublecomplex, ptr %892, i32 0, i32 1
  store double %889, ptr %893, align 8, !tbaa !14
  br label %894

894:                                              ; preds = %843
  %895 = load i64, ptr %54, align 8, !tbaa !9
  %896 = add nsw i64 %895, -2
  store i64 %896, ptr %54, align 8, !tbaa !9
  br label %796, !llvm.loop !19

897:                                              ; preds = %796
  br label %1591

898:                                              ; preds = %779
  %899 = load i64, ptr %83, align 8, !tbaa !9
  %900 = load i64, ptr %64, align 8, !tbaa !9
  %901 = sub nsw i64 %899, %900
  %902 = add nsw i64 %901, 1
  %903 = load i64, ptr %69, align 8, !tbaa !9
  %904 = sdiv i64 %903, 2
  %905 = icmp sle i64 %902, %904
  br i1 %905, label %906, label %1442

906:                                              ; preds = %898
  %907 = load i64, ptr %83, align 8, !tbaa !9
  %908 = load i64, ptr %69, align 8, !tbaa !9
  %909 = sub nsw i64 %907, %908
  %910 = add nsw i64 %909, 1
  store i64 %910, ptr %64, align 8, !tbaa !9
  %911 = load ptr, ptr %19, align 8, !tbaa !5
  %912 = load i64, ptr %911, align 8, !tbaa !9
  %913 = load i64, ptr %69, align 8, !tbaa !9
  %914 = sub nsw i64 %912, %913
  %915 = add nsw i64 %914, 1
  store i64 %915, ptr %65, align 8, !tbaa !9
  %916 = load ptr, ptr %22, align 8, !tbaa !5
  %917 = load i64, ptr %64, align 8, !tbaa !9
  %918 = load i64, ptr %64, align 8, !tbaa !9
  %919 = load i64, ptr %32, align 8, !tbaa !9
  %920 = mul nsw i64 %918, %919
  %921 = add nsw i64 %917, %920
  %922 = getelementptr inbounds %struct.doublecomplex, ptr %916, i64 %921
  %923 = load ptr, ptr %23, align 8, !tbaa !5
  %924 = load ptr, ptr %22, align 8, !tbaa !5
  %925 = load i64, ptr %65, align 8, !tbaa !9
  %926 = load i64, ptr %32, align 8, !tbaa !9
  %927 = add nsw i64 %925, %926
  %928 = getelementptr inbounds %struct.doublecomplex, ptr %924, i64 %927
  %929 = load ptr, ptr %23, align 8, !tbaa !5
  %930 = call i32 @zlacpy_(ptr noundef @.str.1, ptr noundef %69, ptr noundef %69, ptr noundef %922, ptr noundef %923, ptr noundef %928, ptr noundef %929)
  %931 = load i64, ptr %69, align 8, !tbaa !9
  %932 = load i64, ptr %84, align 8, !tbaa !9
  %933 = icmp sgt i64 %931, %932
  br i1 %933, label %934, label %949

934:                                              ; preds = %906
  %935 = load ptr, ptr %22, align 8, !tbaa !5
  %936 = load i64, ptr %65, align 8, !tbaa !9
  %937 = load i64, ptr %32, align 8, !tbaa !9
  %938 = add nsw i64 %936, %937
  %939 = getelementptr inbounds %struct.doublecomplex, ptr %935, i64 %938
  %940 = load ptr, ptr %23, align 8, !tbaa !5
  %941 = load ptr, ptr %24, align 8, !tbaa !5
  %942 = load i64, ptr %64, align 8, !tbaa !9
  %943 = getelementptr inbounds %struct.doublecomplex, ptr %941, i64 %942
  %944 = getelementptr inbounds [1 x %struct.doublecomplex], ptr %87, i64 0, i64 0
  %945 = load ptr, ptr %29, align 8, !tbaa !5
  %946 = getelementptr inbounds %struct.doublecomplex, ptr %945, i64 1
  %947 = load ptr, ptr %30, align 8, !tbaa !5
  %948 = call i32 @zlaqr4_(ptr noundef @c_false, ptr noundef @c_false, ptr noundef %69, ptr noundef @c__1, ptr noundef %69, ptr noundef %939, ptr noundef %940, ptr noundef %943, ptr noundef @c__1, ptr noundef @c__1, ptr noundef %944, ptr noundef @c__1, ptr noundef %946, ptr noundef %947, ptr noundef %73)
  br label %961

949:                                              ; preds = %906
  %950 = load ptr, ptr %22, align 8, !tbaa !5
  %951 = load i64, ptr %65, align 8, !tbaa !9
  %952 = load i64, ptr %32, align 8, !tbaa !9
  %953 = add nsw i64 %951, %952
  %954 = getelementptr inbounds %struct.doublecomplex, ptr %950, i64 %953
  %955 = load ptr, ptr %23, align 8, !tbaa !5
  %956 = load ptr, ptr %24, align 8, !tbaa !5
  %957 = load i64, ptr %64, align 8, !tbaa !9
  %958 = getelementptr inbounds %struct.doublecomplex, ptr %956, i64 %957
  %959 = getelementptr inbounds [1 x %struct.doublecomplex], ptr %87, i64 0, i64 0
  %960 = call i32 @zlahqr_(ptr noundef @c_false, ptr noundef @c_false, ptr noundef %69, ptr noundef @c__1, ptr noundef %69, ptr noundef %954, ptr noundef %955, ptr noundef %958, ptr noundef @c__1, ptr noundef @c__1, ptr noundef %959, ptr noundef @c__1, ptr noundef %73)
  br label %961

961:                                              ; preds = %949, %934
  %962 = load i64, ptr %73, align 8, !tbaa !9
  %963 = load i64, ptr %64, align 8, !tbaa !9
  %964 = add nsw i64 %963, %962
  store i64 %964, ptr %64, align 8, !tbaa !9
  %965 = load i64, ptr %64, align 8, !tbaa !9
  %966 = load i64, ptr %83, align 8, !tbaa !9
  %967 = icmp sge i64 %965, %966
  br i1 %967, label %968, label %1441

968:                                              ; preds = %961
  %969 = load i64, ptr %83, align 8, !tbaa !9
  %970 = sub nsw i64 %969, 1
  %971 = load i64, ptr %83, align 8, !tbaa !9
  %972 = sub nsw i64 %971, 1
  %973 = load i64, ptr %32, align 8, !tbaa !9
  %974 = mul nsw i64 %972, %973
  %975 = add nsw i64 %970, %974
  store i64 %975, ptr %37, align 8, !tbaa !9
  %976 = load i64, ptr %83, align 8, !tbaa !9
  %977 = load i64, ptr %83, align 8, !tbaa !9
  %978 = sub nsw i64 %977, 1
  %979 = load i64, ptr %32, align 8, !tbaa !9
  %980 = mul nsw i64 %978, %979
  %981 = add nsw i64 %976, %980
  store i64 %981, ptr %38, align 8, !tbaa !9
  %982 = load i64, ptr %83, align 8, !tbaa !9
  %983 = sub nsw i64 %982, 1
  %984 = load i64, ptr %83, align 8, !tbaa !9
  %985 = load i64, ptr %32, align 8, !tbaa !9
  %986 = mul nsw i64 %984, %985
  %987 = add nsw i64 %983, %986
  store i64 %987, ptr %39, align 8, !tbaa !9
  %988 = load i64, ptr %83, align 8, !tbaa !9
  %989 = load i64, ptr %83, align 8, !tbaa !9
  %990 = load i64, ptr %32, align 8, !tbaa !9
  %991 = mul nsw i64 %989, %990
  %992 = add nsw i64 %988, %991
  store i64 %992, ptr %40, align 8, !tbaa !9
  %993 = load ptr, ptr %22, align 8, !tbaa !5
  %994 = load i64, ptr %37, align 8, !tbaa !9
  %995 = getelementptr inbounds %struct.doublecomplex, ptr %993, i64 %994
  %996 = getelementptr inbounds %struct.doublecomplex, ptr %995, i32 0, i32 0
  %997 = load double, ptr %996, align 8, !tbaa !11
  store double %997, ptr %41, align 8, !tbaa !16
  %998 = load double, ptr %41, align 8, !tbaa !16
  %999 = fcmp oge double %998, 0.000000e+00
  br i1 %999, label %1000, label %1002

1000:                                             ; preds = %968
  %1001 = load double, ptr %41, align 8, !tbaa !16
  br label %1005

1002:                                             ; preds = %968
  %1003 = load double, ptr %41, align 8, !tbaa !16
  %1004 = fneg double %1003
  br label %1005

1005:                                             ; preds = %1002, %1000
  %1006 = phi double [ %1001, %1000 ], [ %1004, %1002 ]
  %1007 = load ptr, ptr %22, align 8, !tbaa !5
  %1008 = load i64, ptr %83, align 8, !tbaa !9
  %1009 = sub nsw i64 %1008, 1
  %1010 = load i64, ptr %83, align 8, !tbaa !9
  %1011 = sub nsw i64 %1010, 1
  %1012 = load i64, ptr %32, align 8, !tbaa !9
  %1013 = mul nsw i64 %1011, %1012
  %1014 = add nsw i64 %1009, %1013
  %1015 = getelementptr inbounds %struct.doublecomplex, ptr %1007, i64 %1014
  %1016 = call double @d_imag(ptr noundef %1015)
  store double %1016, ptr %42, align 8, !tbaa !16
  %1017 = load double, ptr %42, align 8, !tbaa !16
  %1018 = fcmp oge double %1017, 0.000000e+00
  br i1 %1018, label %1019, label %1021

1019:                                             ; preds = %1005
  %1020 = load double, ptr %42, align 8, !tbaa !16
  br label %1024

1021:                                             ; preds = %1005
  %1022 = load double, ptr %42, align 8, !tbaa !16
  %1023 = fneg double %1022
  br label %1024

1024:                                             ; preds = %1021, %1019
  %1025 = phi double [ %1020, %1019 ], [ %1023, %1021 ]
  %1026 = fadd double %1006, %1025
  %1027 = load ptr, ptr %22, align 8, !tbaa !5
  %1028 = load i64, ptr %38, align 8, !tbaa !9
  %1029 = getelementptr inbounds %struct.doublecomplex, ptr %1027, i64 %1028
  %1030 = getelementptr inbounds %struct.doublecomplex, ptr %1029, i32 0, i32 0
  %1031 = load double, ptr %1030, align 8, !tbaa !11
  store double %1031, ptr %43, align 8, !tbaa !16
  %1032 = load double, ptr %43, align 8, !tbaa !16
  %1033 = fcmp oge double %1032, 0.000000e+00
  br i1 %1033, label %1034, label %1036

1034:                                             ; preds = %1024
  %1035 = load double, ptr %43, align 8, !tbaa !16
  br label %1039

1036:                                             ; preds = %1024
  %1037 = load double, ptr %43, align 8, !tbaa !16
  %1038 = fneg double %1037
  br label %1039

1039:                                             ; preds = %1036, %1034
  %1040 = phi double [ %1035, %1034 ], [ %1038, %1036 ]
  %1041 = load ptr, ptr %22, align 8, !tbaa !5
  %1042 = load i64, ptr %83, align 8, !tbaa !9
  %1043 = load i64, ptr %83, align 8, !tbaa !9
  %1044 = sub nsw i64 %1043, 1
  %1045 = load i64, ptr %32, align 8, !tbaa !9
  %1046 = mul nsw i64 %1044, %1045
  %1047 = add nsw i64 %1042, %1046
  %1048 = getelementptr inbounds %struct.doublecomplex, ptr %1041, i64 %1047
  %1049 = call double @d_imag(ptr noundef %1048)
  store double %1049, ptr %44, align 8, !tbaa !16
  %1050 = load double, ptr %44, align 8, !tbaa !16
  %1051 = fcmp oge double %1050, 0.000000e+00
  br i1 %1051, label %1052, label %1054

1052:                                             ; preds = %1039
  %1053 = load double, ptr %44, align 8, !tbaa !16
  br label %1057

1054:                                             ; preds = %1039
  %1055 = load double, ptr %44, align 8, !tbaa !16
  %1056 = fneg double %1055
  br label %1057

1057:                                             ; preds = %1054, %1052
  %1058 = phi double [ %1053, %1052 ], [ %1056, %1054 ]
  %1059 = fadd double %1040, %1058
  %1060 = fadd double %1026, %1059
  %1061 = load ptr, ptr %22, align 8, !tbaa !5
  %1062 = load i64, ptr %39, align 8, !tbaa !9
  %1063 = getelementptr inbounds %struct.doublecomplex, ptr %1061, i64 %1062
  %1064 = getelementptr inbounds %struct.doublecomplex, ptr %1063, i32 0, i32 0
  %1065 = load double, ptr %1064, align 8, !tbaa !11
  store double %1065, ptr %45, align 8, !tbaa !16
  %1066 = load double, ptr %45, align 8, !tbaa !16
  %1067 = fcmp oge double %1066, 0.000000e+00
  br i1 %1067, label %1068, label %1070

1068:                                             ; preds = %1057
  %1069 = load double, ptr %45, align 8, !tbaa !16
  br label %1073

1070:                                             ; preds = %1057
  %1071 = load double, ptr %45, align 8, !tbaa !16
  %1072 = fneg double %1071
  br label %1073

1073:                                             ; preds = %1070, %1068
  %1074 = phi double [ %1069, %1068 ], [ %1072, %1070 ]
  %1075 = load ptr, ptr %22, align 8, !tbaa !5
  %1076 = load i64, ptr %83, align 8, !tbaa !9
  %1077 = sub nsw i64 %1076, 1
  %1078 = load i64, ptr %83, align 8, !tbaa !9
  %1079 = load i64, ptr %32, align 8, !tbaa !9
  %1080 = mul nsw i64 %1078, %1079
  %1081 = add nsw i64 %1077, %1080
  %1082 = getelementptr inbounds %struct.doublecomplex, ptr %1075, i64 %1081
  %1083 = call double @d_imag(ptr noundef %1082)
  store double %1083, ptr %46, align 8, !tbaa !16
  %1084 = load double, ptr %46, align 8, !tbaa !16
  %1085 = fcmp oge double %1084, 0.000000e+00
  br i1 %1085, label %1086, label %1088

1086:                                             ; preds = %1073
  %1087 = load double, ptr %46, align 8, !tbaa !16
  br label %1091

1088:                                             ; preds = %1073
  %1089 = load double, ptr %46, align 8, !tbaa !16
  %1090 = fneg double %1089
  br label %1091

1091:                                             ; preds = %1088, %1086
  %1092 = phi double [ %1087, %1086 ], [ %1090, %1088 ]
  %1093 = fadd double %1074, %1092
  %1094 = fadd double %1060, %1093
  %1095 = load ptr, ptr %22, align 8, !tbaa !5
  %1096 = load i64, ptr %40, align 8, !tbaa !9
  %1097 = getelementptr inbounds %struct.doublecomplex, ptr %1095, i64 %1096
  %1098 = getelementptr inbounds %struct.doublecomplex, ptr %1097, i32 0, i32 0
  %1099 = load double, ptr %1098, align 8, !tbaa !11
  store double %1099, ptr %47, align 8, !tbaa !16
  %1100 = load double, ptr %47, align 8, !tbaa !16
  %1101 = fcmp oge double %1100, 0.000000e+00
  br i1 %1101, label %1102, label %1104

1102:                                             ; preds = %1091
  %1103 = load double, ptr %47, align 8, !tbaa !16
  br label %1107

1104:                                             ; preds = %1091
  %1105 = load double, ptr %47, align 8, !tbaa !16
  %1106 = fneg double %1105
  br label %1107

1107:                                             ; preds = %1104, %1102
  %1108 = phi double [ %1103, %1102 ], [ %1106, %1104 ]
  %1109 = load ptr, ptr %22, align 8, !tbaa !5
  %1110 = load i64, ptr %83, align 8, !tbaa !9
  %1111 = load i64, ptr %83, align 8, !tbaa !9
  %1112 = load i64, ptr %32, align 8, !tbaa !9
  %1113 = mul nsw i64 %1111, %1112
  %1114 = add nsw i64 %1110, %1113
  %1115 = getelementptr inbounds %struct.doublecomplex, ptr %1109, i64 %1114
  %1116 = call double @d_imag(ptr noundef %1115)
  store double %1116, ptr %48, align 8, !tbaa !16
  %1117 = load double, ptr %48, align 8, !tbaa !16
  %1118 = fcmp oge double %1117, 0.000000e+00
  br i1 %1118, label %1119, label %1121

1119:                                             ; preds = %1107
  %1120 = load double, ptr %48, align 8, !tbaa !16
  br label %1124

1121:                                             ; preds = %1107
  %1122 = load double, ptr %48, align 8, !tbaa !16
  %1123 = fneg double %1122
  br label %1124

1124:                                             ; preds = %1121, %1119
  %1125 = phi double [ %1120, %1119 ], [ %1123, %1121 ]
  %1126 = fadd double %1108, %1125
  %1127 = fadd double %1094, %1126
  store double %1127, ptr %56, align 8, !tbaa !16
  %1128 = load i64, ptr %83, align 8, !tbaa !9
  %1129 = sub nsw i64 %1128, 1
  %1130 = load i64, ptr %83, align 8, !tbaa !9
  %1131 = sub nsw i64 %1130, 1
  %1132 = load i64, ptr %32, align 8, !tbaa !9
  %1133 = mul nsw i64 %1131, %1132
  %1134 = add nsw i64 %1129, %1133
  store i64 %1134, ptr %37, align 8, !tbaa !9
  %1135 = load ptr, ptr %22, align 8, !tbaa !5
  %1136 = load i64, ptr %37, align 8, !tbaa !9
  %1137 = getelementptr inbounds %struct.doublecomplex, ptr %1135, i64 %1136
  %1138 = getelementptr inbounds %struct.doublecomplex, ptr %1137, i32 0, i32 0
  %1139 = load double, ptr %1138, align 8, !tbaa !11
  %1140 = load double, ptr %56, align 8, !tbaa !16
  %1141 = fdiv double %1139, %1140
  %1142 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  store double %1141, ptr %1142, align 8, !tbaa !11
  %1143 = load ptr, ptr %22, align 8, !tbaa !5
  %1144 = load i64, ptr %37, align 8, !tbaa !9
  %1145 = getelementptr inbounds %struct.doublecomplex, ptr %1143, i64 %1144
  %1146 = getelementptr inbounds %struct.doublecomplex, ptr %1145, i32 0, i32 1
  %1147 = load double, ptr %1146, align 8, !tbaa !14
  %1148 = load double, ptr %56, align 8, !tbaa !16
  %1149 = fdiv double %1147, %1148
  %1150 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  store double %1149, ptr %1150, align 8, !tbaa !14
  %1151 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  %1152 = load double, ptr %1151, align 8, !tbaa !11
  %1153 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  store double %1152, ptr %1153, align 8, !tbaa !11
  %1154 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  %1155 = load double, ptr %1154, align 8, !tbaa !14
  %1156 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  store double %1155, ptr %1156, align 8, !tbaa !14
  %1157 = load i64, ptr %83, align 8, !tbaa !9
  %1158 = load i64, ptr %83, align 8, !tbaa !9
  %1159 = sub nsw i64 %1158, 1
  %1160 = load i64, ptr %32, align 8, !tbaa !9
  %1161 = mul nsw i64 %1159, %1160
  %1162 = add nsw i64 %1157, %1161
  store i64 %1162, ptr %37, align 8, !tbaa !9
  %1163 = load ptr, ptr %22, align 8, !tbaa !5
  %1164 = load i64, ptr %37, align 8, !tbaa !9
  %1165 = getelementptr inbounds %struct.doublecomplex, ptr %1163, i64 %1164
  %1166 = getelementptr inbounds %struct.doublecomplex, ptr %1165, i32 0, i32 0
  %1167 = load double, ptr %1166, align 8, !tbaa !11
  %1168 = load double, ptr %56, align 8, !tbaa !16
  %1169 = fdiv double %1167, %1168
  %1170 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  store double %1169, ptr %1170, align 8, !tbaa !11
  %1171 = load ptr, ptr %22, align 8, !tbaa !5
  %1172 = load i64, ptr %37, align 8, !tbaa !9
  %1173 = getelementptr inbounds %struct.doublecomplex, ptr %1171, i64 %1172
  %1174 = getelementptr inbounds %struct.doublecomplex, ptr %1173, i32 0, i32 1
  %1175 = load double, ptr %1174, align 8, !tbaa !14
  %1176 = load double, ptr %56, align 8, !tbaa !16
  %1177 = fdiv double %1175, %1176
  %1178 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  store double %1177, ptr %1178, align 8, !tbaa !14
  %1179 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  %1180 = load double, ptr %1179, align 8, !tbaa !11
  %1181 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  store double %1180, ptr %1181, align 8, !tbaa !11
  %1182 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  %1183 = load double, ptr %1182, align 8, !tbaa !14
  %1184 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  store double %1183, ptr %1184, align 8, !tbaa !14
  %1185 = load i64, ptr %83, align 8, !tbaa !9
  %1186 = sub nsw i64 %1185, 1
  %1187 = load i64, ptr %83, align 8, !tbaa !9
  %1188 = load i64, ptr %32, align 8, !tbaa !9
  %1189 = mul nsw i64 %1187, %1188
  %1190 = add nsw i64 %1186, %1189
  store i64 %1190, ptr %37, align 8, !tbaa !9
  %1191 = load ptr, ptr %22, align 8, !tbaa !5
  %1192 = load i64, ptr %37, align 8, !tbaa !9
  %1193 = getelementptr inbounds %struct.doublecomplex, ptr %1191, i64 %1192
  %1194 = getelementptr inbounds %struct.doublecomplex, ptr %1193, i32 0, i32 0
  %1195 = load double, ptr %1194, align 8, !tbaa !11
  %1196 = load double, ptr %56, align 8, !tbaa !16
  %1197 = fdiv double %1195, %1196
  %1198 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  store double %1197, ptr %1198, align 8, !tbaa !11
  %1199 = load ptr, ptr %22, align 8, !tbaa !5
  %1200 = load i64, ptr %37, align 8, !tbaa !9
  %1201 = getelementptr inbounds %struct.doublecomplex, ptr %1199, i64 %1200
  %1202 = getelementptr inbounds %struct.doublecomplex, ptr %1201, i32 0, i32 1
  %1203 = load double, ptr %1202, align 8, !tbaa !14
  %1204 = load double, ptr %56, align 8, !tbaa !16
  %1205 = fdiv double %1203, %1204
  %1206 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  store double %1205, ptr %1206, align 8, !tbaa !14
  %1207 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  %1208 = load double, ptr %1207, align 8, !tbaa !11
  %1209 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 0
  store double %1208, ptr %1209, align 8, !tbaa !11
  %1210 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  %1211 = load double, ptr %1210, align 8, !tbaa !14
  %1212 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 1
  store double %1211, ptr %1212, align 8, !tbaa !14
  %1213 = load i64, ptr %83, align 8, !tbaa !9
  %1214 = load i64, ptr %83, align 8, !tbaa !9
  %1215 = load i64, ptr %32, align 8, !tbaa !9
  %1216 = mul nsw i64 %1214, %1215
  %1217 = add nsw i64 %1213, %1216
  store i64 %1217, ptr %37, align 8, !tbaa !9
  %1218 = load ptr, ptr %22, align 8, !tbaa !5
  %1219 = load i64, ptr %37, align 8, !tbaa !9
  %1220 = getelementptr inbounds %struct.doublecomplex, ptr %1218, i64 %1219
  %1221 = getelementptr inbounds %struct.doublecomplex, ptr %1220, i32 0, i32 0
  %1222 = load double, ptr %1221, align 8, !tbaa !11
  %1223 = load double, ptr %56, align 8, !tbaa !16
  %1224 = fdiv double %1222, %1223
  %1225 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  store double %1224, ptr %1225, align 8, !tbaa !11
  %1226 = load ptr, ptr %22, align 8, !tbaa !5
  %1227 = load i64, ptr %37, align 8, !tbaa !9
  %1228 = getelementptr inbounds %struct.doublecomplex, ptr %1226, i64 %1227
  %1229 = getelementptr inbounds %struct.doublecomplex, ptr %1228, i32 0, i32 1
  %1230 = load double, ptr %1229, align 8, !tbaa !14
  %1231 = load double, ptr %56, align 8, !tbaa !16
  %1232 = fdiv double %1230, %1231
  %1233 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  store double %1232, ptr %1233, align 8, !tbaa !14
  %1234 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  %1235 = load double, ptr %1234, align 8, !tbaa !11
  %1236 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  store double %1235, ptr %1236, align 8, !tbaa !11
  %1237 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  %1238 = load double, ptr %1237, align 8, !tbaa !14
  %1239 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  store double %1238, ptr %1239, align 8, !tbaa !14
  %1240 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  %1241 = load double, ptr %1240, align 8, !tbaa !11
  %1242 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %1243 = load double, ptr %1242, align 8, !tbaa !11
  %1244 = fadd double %1241, %1243
  %1245 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  store double %1244, ptr %1245, align 8, !tbaa !11
  %1246 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  %1247 = load double, ptr %1246, align 8, !tbaa !14
  %1248 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %1249 = load double, ptr %1248, align 8, !tbaa !14
  %1250 = fadd double %1247, %1249
  %1251 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  store double %1250, ptr %1251, align 8, !tbaa !14
  %1252 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %1253 = load double, ptr %1252, align 8, !tbaa !11
  %1254 = fdiv double %1253, 2.000000e+00
  %1255 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  store double %1254, ptr %1255, align 8, !tbaa !11
  %1256 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %1257 = load double, ptr %1256, align 8, !tbaa !14
  %1258 = fdiv double %1257, 2.000000e+00
  %1259 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  store double %1258, ptr %1259, align 8, !tbaa !14
  %1260 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  %1261 = load double, ptr %1260, align 8, !tbaa !11
  %1262 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 0
  store double %1261, ptr %1262, align 8, !tbaa !11
  %1263 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  %1264 = load double, ptr %1263, align 8, !tbaa !14
  %1265 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 1
  store double %1264, ptr %1265, align 8, !tbaa !14
  %1266 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  %1267 = load double, ptr %1266, align 8, !tbaa !11
  %1268 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 0
  %1269 = load double, ptr %1268, align 8, !tbaa !11
  %1270 = fsub double %1267, %1269
  %1271 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  store double %1270, ptr %1271, align 8, !tbaa !11
  %1272 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  %1273 = load double, ptr %1272, align 8, !tbaa !14
  %1274 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 1
  %1275 = load double, ptr %1274, align 8, !tbaa !14
  %1276 = fsub double %1273, %1275
  %1277 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  store double %1276, ptr %1277, align 8, !tbaa !14
  %1278 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %1279 = load double, ptr %1278, align 8, !tbaa !11
  %1280 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 0
  %1281 = load double, ptr %1280, align 8, !tbaa !11
  %1282 = fsub double %1279, %1281
  %1283 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  store double %1282, ptr %1283, align 8, !tbaa !11
  %1284 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %1285 = load double, ptr %1284, align 8, !tbaa !14
  %1286 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 1
  %1287 = load double, ptr %1286, align 8, !tbaa !14
  %1288 = fsub double %1285, %1287
  %1289 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  store double %1288, ptr %1289, align 8, !tbaa !14
  %1290 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %1291 = load double, ptr %1290, align 8, !tbaa !11
  %1292 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %1293 = load double, ptr %1292, align 8, !tbaa !11
  %1294 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  %1295 = load double, ptr %1294, align 8, !tbaa !14
  %1296 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %1297 = load double, ptr %1296, align 8, !tbaa !14
  %1298 = fmul double %1295, %1297
  %1299 = fneg double %1298
  %1300 = call double @llvm.fmuladd.f64(double %1291, double %1293, double %1299)
  %1301 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  store double %1300, ptr %1301, align 8, !tbaa !11
  %1302 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %1303 = load double, ptr %1302, align 8, !tbaa !11
  %1304 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %1305 = load double, ptr %1304, align 8, !tbaa !14
  %1306 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  %1307 = load double, ptr %1306, align 8, !tbaa !14
  %1308 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %1309 = load double, ptr %1308, align 8, !tbaa !11
  %1310 = fmul double %1307, %1309
  %1311 = call double @llvm.fmuladd.f64(double %1303, double %1305, double %1310)
  %1312 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  store double %1311, ptr %1312, align 8, !tbaa !14
  %1313 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 0
  %1314 = load double, ptr %1313, align 8, !tbaa !11
  %1315 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  %1316 = load double, ptr %1315, align 8, !tbaa !11
  %1317 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 1
  %1318 = load double, ptr %1317, align 8, !tbaa !14
  %1319 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  %1320 = load double, ptr %1319, align 8, !tbaa !14
  %1321 = fmul double %1318, %1320
  %1322 = fneg double %1321
  %1323 = call double @llvm.fmuladd.f64(double %1314, double %1316, double %1322)
  %1324 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  store double %1323, ptr %1324, align 8, !tbaa !11
  %1325 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 0
  %1326 = load double, ptr %1325, align 8, !tbaa !11
  %1327 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 1
  %1328 = load double, ptr %1327, align 8, !tbaa !14
  %1329 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 0, i32 1
  %1330 = load double, ptr %1329, align 8, !tbaa !14
  %1331 = getelementptr inbounds %struct.doublecomplex, ptr %59, i32 0, i32 0
  %1332 = load double, ptr %1331, align 8, !tbaa !11
  %1333 = fmul double %1330, %1332
  %1334 = call double @llvm.fmuladd.f64(double %1326, double %1328, double %1333)
  %1335 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  store double %1334, ptr %1335, align 8, !tbaa !14
  %1336 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %1337 = load double, ptr %1336, align 8, !tbaa !11
  %1338 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 0
  %1339 = load double, ptr %1338, align 8, !tbaa !11
  %1340 = fsub double %1337, %1339
  %1341 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  store double %1340, ptr %1341, align 8, !tbaa !11
  %1342 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %1343 = load double, ptr %1342, align 8, !tbaa !14
  %1344 = getelementptr inbounds %struct.doublecomplex, ptr %53, i32 0, i32 1
  %1345 = load double, ptr %1344, align 8, !tbaa !14
  %1346 = fsub double %1343, %1345
  %1347 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  store double %1346, ptr %1347, align 8, !tbaa !14
  %1348 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  %1349 = load double, ptr %1348, align 8, !tbaa !11
  %1350 = getelementptr inbounds %struct.doublecomplex, ptr %72, i32 0, i32 0
  store double %1349, ptr %1350, align 8, !tbaa !11
  %1351 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  %1352 = load double, ptr %1351, align 8, !tbaa !14
  %1353 = getelementptr inbounds %struct.doublecomplex, ptr %72, i32 0, i32 1
  store double %1352, ptr %1353, align 8, !tbaa !14
  %1354 = getelementptr inbounds %struct.doublecomplex, ptr %72, i32 0, i32 0
  %1355 = load double, ptr %1354, align 8, !tbaa !11
  %1356 = fneg double %1355
  %1357 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  store double %1356, ptr %1357, align 8, !tbaa !11
  %1358 = getelementptr inbounds %struct.doublecomplex, ptr %72, i32 0, i32 1
  %1359 = load double, ptr %1358, align 8, !tbaa !14
  %1360 = fneg double %1359
  %1361 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  store double %1360, ptr %1361, align 8, !tbaa !14
  call void @z_sqrt(ptr noundef %49, ptr noundef %50)
  %1362 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  %1363 = load double, ptr %1362, align 8, !tbaa !11
  %1364 = getelementptr inbounds %struct.doublecomplex, ptr %95, i32 0, i32 0
  store double %1363, ptr %1364, align 8, !tbaa !11
  %1365 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  %1366 = load double, ptr %1365, align 8, !tbaa !14
  %1367 = getelementptr inbounds %struct.doublecomplex, ptr %95, i32 0, i32 1
  store double %1366, ptr %1367, align 8, !tbaa !14
  %1368 = load i64, ptr %83, align 8, !tbaa !9
  %1369 = sub nsw i64 %1368, 1
  store i64 %1369, ptr %37, align 8, !tbaa !9
  %1370 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 0
  %1371 = load double, ptr %1370, align 8, !tbaa !11
  %1372 = getelementptr inbounds %struct.doublecomplex, ptr %95, i32 0, i32 0
  %1373 = load double, ptr %1372, align 8, !tbaa !11
  %1374 = fadd double %1371, %1373
  %1375 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  store double %1374, ptr %1375, align 8, !tbaa !11
  %1376 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 1
  %1377 = load double, ptr %1376, align 8, !tbaa !14
  %1378 = getelementptr inbounds %struct.doublecomplex, ptr %95, i32 0, i32 1
  %1379 = load double, ptr %1378, align 8, !tbaa !14
  %1380 = fadd double %1377, %1379
  %1381 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  store double %1380, ptr %1381, align 8, !tbaa !14
  %1382 = load double, ptr %56, align 8, !tbaa !16
  %1383 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %1384 = load double, ptr %1383, align 8, !tbaa !11
  %1385 = fmul double %1382, %1384
  %1386 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  store double %1385, ptr %1386, align 8, !tbaa !11
  %1387 = load double, ptr %56, align 8, !tbaa !16
  %1388 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %1389 = load double, ptr %1388, align 8, !tbaa !14
  %1390 = fmul double %1387, %1389
  %1391 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  store double %1390, ptr %1391, align 8, !tbaa !14
  %1392 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  %1393 = load double, ptr %1392, align 8, !tbaa !11
  %1394 = load ptr, ptr %24, align 8, !tbaa !5
  %1395 = load i64, ptr %37, align 8, !tbaa !9
  %1396 = getelementptr inbounds %struct.doublecomplex, ptr %1394, i64 %1395
  %1397 = getelementptr inbounds %struct.doublecomplex, ptr %1396, i32 0, i32 0
  store double %1393, ptr %1397, align 8, !tbaa !11
  %1398 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  %1399 = load double, ptr %1398, align 8, !tbaa !14
  %1400 = load ptr, ptr %24, align 8, !tbaa !5
  %1401 = load i64, ptr %37, align 8, !tbaa !9
  %1402 = getelementptr inbounds %struct.doublecomplex, ptr %1400, i64 %1401
  %1403 = getelementptr inbounds %struct.doublecomplex, ptr %1402, i32 0, i32 1
  store double %1399, ptr %1403, align 8, !tbaa !14
  %1404 = load i64, ptr %83, align 8, !tbaa !9
  store i64 %1404, ptr %37, align 8, !tbaa !9
  %1405 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 0
  %1406 = load double, ptr %1405, align 8, !tbaa !11
  %1407 = getelementptr inbounds %struct.doublecomplex, ptr %95, i32 0, i32 0
  %1408 = load double, ptr %1407, align 8, !tbaa !11
  %1409 = fsub double %1406, %1408
  %1410 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  store double %1409, ptr %1410, align 8, !tbaa !11
  %1411 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 1
  %1412 = load double, ptr %1411, align 8, !tbaa !14
  %1413 = getelementptr inbounds %struct.doublecomplex, ptr %95, i32 0, i32 1
  %1414 = load double, ptr %1413, align 8, !tbaa !14
  %1415 = fsub double %1412, %1414
  %1416 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  store double %1415, ptr %1416, align 8, !tbaa !14
  %1417 = load double, ptr %56, align 8, !tbaa !16
  %1418 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %1419 = load double, ptr %1418, align 8, !tbaa !11
  %1420 = fmul double %1417, %1419
  %1421 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  store double %1420, ptr %1421, align 8, !tbaa !11
  %1422 = load double, ptr %56, align 8, !tbaa !16
  %1423 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %1424 = load double, ptr %1423, align 8, !tbaa !14
  %1425 = fmul double %1422, %1424
  %1426 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  store double %1425, ptr %1426, align 8, !tbaa !14
  %1427 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  %1428 = load double, ptr %1427, align 8, !tbaa !11
  %1429 = load ptr, ptr %24, align 8, !tbaa !5
  %1430 = load i64, ptr %37, align 8, !tbaa !9
  %1431 = getelementptr inbounds %struct.doublecomplex, ptr %1429, i64 %1430
  %1432 = getelementptr inbounds %struct.doublecomplex, ptr %1431, i32 0, i32 0
  store double %1428, ptr %1432, align 8, !tbaa !11
  %1433 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  %1434 = load double, ptr %1433, align 8, !tbaa !14
  %1435 = load ptr, ptr %24, align 8, !tbaa !5
  %1436 = load i64, ptr %37, align 8, !tbaa !9
  %1437 = getelementptr inbounds %struct.doublecomplex, ptr %1435, i64 %1436
  %1438 = getelementptr inbounds %struct.doublecomplex, ptr %1437, i32 0, i32 1
  store double %1434, ptr %1438, align 8, !tbaa !14
  %1439 = load i64, ptr %83, align 8, !tbaa !9
  %1440 = sub nsw i64 %1439, 1
  store i64 %1440, ptr %64, align 8, !tbaa !9
  br label %1441

1441:                                             ; preds = %1124, %961
  br label %1442

1442:                                             ; preds = %1441, %898
  %1443 = load i64, ptr %83, align 8, !tbaa !9
  %1444 = load i64, ptr %64, align 8, !tbaa !9
  %1445 = sub nsw i64 %1443, %1444
  %1446 = add nsw i64 %1445, 1
  %1447 = load i64, ptr %69, align 8, !tbaa !9
  %1448 = icmp sgt i64 %1446, %1447
  br i1 %1448, label %1449, label %1590

1449:                                             ; preds = %1442
  store i64 0, ptr %97, align 8, !tbaa !9
  %1450 = load i64, ptr %64, align 8, !tbaa !9
  %1451 = add nsw i64 %1450, 1
  store i64 %1451, ptr %37, align 8, !tbaa !9
  %1452 = load i64, ptr %83, align 8, !tbaa !9
  store i64 %1452, ptr %55, align 8, !tbaa !9
  br label %1453

1453:                                             ; preds = %1585, %1449
  %1454 = load i64, ptr %55, align 8, !tbaa !9
  %1455 = load i64, ptr %37, align 8, !tbaa !9
  %1456 = icmp sge i64 %1454, %1455
  br i1 %1456, label %1457, label %1588

1457:                                             ; preds = %1453
  %1458 = load i64, ptr %97, align 8, !tbaa !9
  %1459 = icmp ne i64 %1458, 0
  br i1 %1459, label %1460, label %1461

1460:                                             ; preds = %1457
  br label %1589

1461:                                             ; preds = %1457
  store i64 1, ptr %97, align 8, !tbaa !9
  %1462 = load i64, ptr %55, align 8, !tbaa !9
  %1463 = sub nsw i64 %1462, 1
  store i64 %1463, ptr %38, align 8, !tbaa !9
  %1464 = load i64, ptr %64, align 8, !tbaa !9
  store i64 %1464, ptr %54, align 8, !tbaa !9
  br label %1465

1465:                                             ; preds = %1581, %1461
  %1466 = load i64, ptr %54, align 8, !tbaa !9
  %1467 = load i64, ptr %38, align 8, !tbaa !9
  %1468 = icmp sle i64 %1466, %1467
  br i1 %1468, label %1469, label %1584

1469:                                             ; preds = %1465
  %1470 = load i64, ptr %54, align 8, !tbaa !9
  store i64 %1470, ptr %39, align 8, !tbaa !9
  %1471 = load i64, ptr %54, align 8, !tbaa !9
  %1472 = add nsw i64 %1471, 1
  store i64 %1472, ptr %40, align 8, !tbaa !9
  %1473 = load ptr, ptr %24, align 8, !tbaa !5
  %1474 = load i64, ptr %39, align 8, !tbaa !9
  %1475 = getelementptr inbounds %struct.doublecomplex, ptr %1473, i64 %1474
  %1476 = getelementptr inbounds %struct.doublecomplex, ptr %1475, i32 0, i32 0
  %1477 = load double, ptr %1476, align 8, !tbaa !11
  store double %1477, ptr %41, align 8, !tbaa !16
  %1478 = load double, ptr %41, align 8, !tbaa !16
  %1479 = fcmp oge double %1478, 0.000000e+00
  br i1 %1479, label %1480, label %1482

1480:                                             ; preds = %1469
  %1481 = load double, ptr %41, align 8, !tbaa !16
  br label %1485

1482:                                             ; preds = %1469
  %1483 = load double, ptr %41, align 8, !tbaa !16
  %1484 = fneg double %1483
  br label %1485

1485:                                             ; preds = %1482, %1480
  %1486 = phi double [ %1481, %1480 ], [ %1484, %1482 ]
  %1487 = load ptr, ptr %24, align 8, !tbaa !5
  %1488 = load i64, ptr %54, align 8, !tbaa !9
  %1489 = getelementptr inbounds %struct.doublecomplex, ptr %1487, i64 %1488
  %1490 = call double @d_imag(ptr noundef %1489)
  store double %1490, ptr %42, align 8, !tbaa !16
  %1491 = load double, ptr %42, align 8, !tbaa !16
  %1492 = fcmp oge double %1491, 0.000000e+00
  br i1 %1492, label %1493, label %1495

1493:                                             ; preds = %1485
  %1494 = load double, ptr %42, align 8, !tbaa !16
  br label %1498

1495:                                             ; preds = %1485
  %1496 = load double, ptr %42, align 8, !tbaa !16
  %1497 = fneg double %1496
  br label %1498

1498:                                             ; preds = %1495, %1493
  %1499 = phi double [ %1494, %1493 ], [ %1497, %1495 ]
  %1500 = fadd double %1486, %1499
  %1501 = load ptr, ptr %24, align 8, !tbaa !5
  %1502 = load i64, ptr %40, align 8, !tbaa !9
  %1503 = getelementptr inbounds %struct.doublecomplex, ptr %1501, i64 %1502
  %1504 = getelementptr inbounds %struct.doublecomplex, ptr %1503, i32 0, i32 0
  %1505 = load double, ptr %1504, align 8, !tbaa !11
  store double %1505, ptr %43, align 8, !tbaa !16
  %1506 = load double, ptr %43, align 8, !tbaa !16
  %1507 = fcmp oge double %1506, 0.000000e+00
  br i1 %1507, label %1508, label %1510

1508:                                             ; preds = %1498
  %1509 = load double, ptr %43, align 8, !tbaa !16
  br label %1513

1510:                                             ; preds = %1498
  %1511 = load double, ptr %43, align 8, !tbaa !16
  %1512 = fneg double %1511
  br label %1513

1513:                                             ; preds = %1510, %1508
  %1514 = phi double [ %1509, %1508 ], [ %1512, %1510 ]
  %1515 = load ptr, ptr %24, align 8, !tbaa !5
  %1516 = load i64, ptr %54, align 8, !tbaa !9
  %1517 = add nsw i64 %1516, 1
  %1518 = getelementptr inbounds %struct.doublecomplex, ptr %1515, i64 %1517
  %1519 = call double @d_imag(ptr noundef %1518)
  store double %1519, ptr %44, align 8, !tbaa !16
  %1520 = load double, ptr %44, align 8, !tbaa !16
  %1521 = fcmp oge double %1520, 0.000000e+00
  br i1 %1521, label %1522, label %1524

1522:                                             ; preds = %1513
  %1523 = load double, ptr %44, align 8, !tbaa !16
  br label %1527

1524:                                             ; preds = %1513
  %1525 = load double, ptr %44, align 8, !tbaa !16
  %1526 = fneg double %1525
  br label %1527

1527:                                             ; preds = %1524, %1522
  %1528 = phi double [ %1523, %1522 ], [ %1526, %1524 ]
  %1529 = fadd double %1514, %1528
  %1530 = fcmp olt double %1500, %1529
  br i1 %1530, label %1531, label %1580

1531:                                             ; preds = %1527
  store i64 0, ptr %97, align 8, !tbaa !9
  %1532 = load i64, ptr %54, align 8, !tbaa !9
  store i64 %1532, ptr %39, align 8, !tbaa !9
  %1533 = load ptr, ptr %24, align 8, !tbaa !5
  %1534 = load i64, ptr %39, align 8, !tbaa !9
  %1535 = getelementptr inbounds %struct.doublecomplex, ptr %1533, i64 %1534
  %1536 = getelementptr inbounds %struct.doublecomplex, ptr %1535, i32 0, i32 0
  %1537 = load double, ptr %1536, align 8, !tbaa !11
  %1538 = getelementptr inbounds %struct.doublecomplex, ptr %85, i32 0, i32 0
  store double %1537, ptr %1538, align 8, !tbaa !11
  %1539 = load ptr, ptr %24, align 8, !tbaa !5
  %1540 = load i64, ptr %39, align 8, !tbaa !9
  %1541 = getelementptr inbounds %struct.doublecomplex, ptr %1539, i64 %1540
  %1542 = getelementptr inbounds %struct.doublecomplex, ptr %1541, i32 0, i32 1
  %1543 = load double, ptr %1542, align 8, !tbaa !14
  %1544 = getelementptr inbounds %struct.doublecomplex, ptr %85, i32 0, i32 1
  store double %1543, ptr %1544, align 8, !tbaa !14
  %1545 = load i64, ptr %54, align 8, !tbaa !9
  store i64 %1545, ptr %39, align 8, !tbaa !9
  %1546 = load i64, ptr %54, align 8, !tbaa !9
  %1547 = add nsw i64 %1546, 1
  store i64 %1547, ptr %40, align 8, !tbaa !9
  %1548 = load ptr, ptr %24, align 8, !tbaa !5
  %1549 = load i64, ptr %40, align 8, !tbaa !9
  %1550 = getelementptr inbounds %struct.doublecomplex, ptr %1548, i64 %1549
  %1551 = getelementptr inbounds %struct.doublecomplex, ptr %1550, i32 0, i32 0
  %1552 = load double, ptr %1551, align 8, !tbaa !11
  %1553 = load ptr, ptr %24, align 8, !tbaa !5
  %1554 = load i64, ptr %39, align 8, !tbaa !9
  %1555 = getelementptr inbounds %struct.doublecomplex, ptr %1553, i64 %1554
  %1556 = getelementptr inbounds %struct.doublecomplex, ptr %1555, i32 0, i32 0
  store double %1552, ptr %1556, align 8, !tbaa !11
  %1557 = load ptr, ptr %24, align 8, !tbaa !5
  %1558 = load i64, ptr %40, align 8, !tbaa !9
  %1559 = getelementptr inbounds %struct.doublecomplex, ptr %1557, i64 %1558
  %1560 = getelementptr inbounds %struct.doublecomplex, ptr %1559, i32 0, i32 1
  %1561 = load double, ptr %1560, align 8, !tbaa !14
  %1562 = load ptr, ptr %24, align 8, !tbaa !5
  %1563 = load i64, ptr %39, align 8, !tbaa !9
  %1564 = getelementptr inbounds %struct.doublecomplex, ptr %1562, i64 %1563
  %1565 = getelementptr inbounds %struct.doublecomplex, ptr %1564, i32 0, i32 1
  store double %1561, ptr %1565, align 8, !tbaa !14
  %1566 = load i64, ptr %54, align 8, !tbaa !9
  %1567 = add nsw i64 %1566, 1
  store i64 %1567, ptr %39, align 8, !tbaa !9
  %1568 = getelementptr inbounds %struct.doublecomplex, ptr %85, i32 0, i32 0
  %1569 = load double, ptr %1568, align 8, !tbaa !11
  %1570 = load ptr, ptr %24, align 8, !tbaa !5
  %1571 = load i64, ptr %39, align 8, !tbaa !9
  %1572 = getelementptr inbounds %struct.doublecomplex, ptr %1570, i64 %1571
  %1573 = getelementptr inbounds %struct.doublecomplex, ptr %1572, i32 0, i32 0
  store double %1569, ptr %1573, align 8, !tbaa !11
  %1574 = getelementptr inbounds %struct.doublecomplex, ptr %85, i32 0, i32 1
  %1575 = load double, ptr %1574, align 8, !tbaa !14
  %1576 = load ptr, ptr %24, align 8, !tbaa !5
  %1577 = load i64, ptr %39, align 8, !tbaa !9
  %1578 = getelementptr inbounds %struct.doublecomplex, ptr %1576, i64 %1577
  %1579 = getelementptr inbounds %struct.doublecomplex, ptr %1578, i32 0, i32 1
  store double %1575, ptr %1579, align 8, !tbaa !14
  br label %1580

1580:                                             ; preds = %1531, %1527
  br label %1581

1581:                                             ; preds = %1580
  %1582 = load i64, ptr %54, align 8, !tbaa !9
  %1583 = add nsw i64 %1582, 1
  store i64 %1583, ptr %54, align 8, !tbaa !9
  br label %1465, !llvm.loop !20

1584:                                             ; preds = %1465
  br label %1585

1585:                                             ; preds = %1584
  %1586 = load i64, ptr %55, align 8, !tbaa !9
  %1587 = add nsw i64 %1586, -1
  store i64 %1587, ptr %55, align 8, !tbaa !9
  br label %1453, !llvm.loop !21

1588:                                             ; preds = %1453
  br label %1589

1589:                                             ; preds = %1588, %1460
  br label %1590

1590:                                             ; preds = %1589, %1442
  br label %1591

1591:                                             ; preds = %1590, %897
  %1592 = load i64, ptr %83, align 8, !tbaa !9
  %1593 = load i64, ptr %64, align 8, !tbaa !9
  %1594 = sub nsw i64 %1592, %1593
  %1595 = add nsw i64 %1594, 1
  %1596 = icmp eq i64 %1595, 2
  br i1 %1596, label %1597, label %1761

1597:                                             ; preds = %1591
  %1598 = load i64, ptr %83, align 8, !tbaa !9
  store i64 %1598, ptr %37, align 8, !tbaa !9
  %1599 = load i64, ptr %83, align 8, !tbaa !9
  %1600 = load i64, ptr %83, align 8, !tbaa !9
  %1601 = load i64, ptr %32, align 8, !tbaa !9
  %1602 = mul nsw i64 %1600, %1601
  %1603 = add nsw i64 %1599, %1602
  store i64 %1603, ptr %38, align 8, !tbaa !9
  %1604 = load ptr, ptr %24, align 8, !tbaa !5
  %1605 = load i64, ptr %37, align 8, !tbaa !9
  %1606 = getelementptr inbounds %struct.doublecomplex, ptr %1604, i64 %1605
  %1607 = getelementptr inbounds %struct.doublecomplex, ptr %1606, i32 0, i32 0
  %1608 = load double, ptr %1607, align 8, !tbaa !11
  %1609 = load ptr, ptr %22, align 8, !tbaa !5
  %1610 = load i64, ptr %38, align 8, !tbaa !9
  %1611 = getelementptr inbounds %struct.doublecomplex, ptr %1609, i64 %1610
  %1612 = getelementptr inbounds %struct.doublecomplex, ptr %1611, i32 0, i32 0
  %1613 = load double, ptr %1612, align 8, !tbaa !11
  %1614 = fsub double %1608, %1613
  %1615 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  store double %1614, ptr %1615, align 8, !tbaa !11
  %1616 = load ptr, ptr %24, align 8, !tbaa !5
  %1617 = load i64, ptr %37, align 8, !tbaa !9
  %1618 = getelementptr inbounds %struct.doublecomplex, ptr %1616, i64 %1617
  %1619 = getelementptr inbounds %struct.doublecomplex, ptr %1618, i32 0, i32 1
  %1620 = load double, ptr %1619, align 8, !tbaa !14
  %1621 = load ptr, ptr %22, align 8, !tbaa !5
  %1622 = load i64, ptr %38, align 8, !tbaa !9
  %1623 = getelementptr inbounds %struct.doublecomplex, ptr %1621, i64 %1622
  %1624 = getelementptr inbounds %struct.doublecomplex, ptr %1623, i32 0, i32 1
  %1625 = load double, ptr %1624, align 8, !tbaa !14
  %1626 = fsub double %1620, %1625
  %1627 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  store double %1626, ptr %1627, align 8, !tbaa !14
  %1628 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %1629 = load double, ptr %1628, align 8, !tbaa !11
  %1630 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  store double %1629, ptr %1630, align 8, !tbaa !11
  %1631 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %1632 = load double, ptr %1631, align 8, !tbaa !14
  %1633 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  store double %1632, ptr %1633, align 8, !tbaa !14
  %1634 = load i64, ptr %83, align 8, !tbaa !9
  %1635 = sub nsw i64 %1634, 1
  store i64 %1635, ptr %39, align 8, !tbaa !9
  %1636 = load i64, ptr %83, align 8, !tbaa !9
  %1637 = load i64, ptr %83, align 8, !tbaa !9
  %1638 = load i64, ptr %32, align 8, !tbaa !9
  %1639 = mul nsw i64 %1637, %1638
  %1640 = add nsw i64 %1636, %1639
  store i64 %1640, ptr %40, align 8, !tbaa !9
  %1641 = load ptr, ptr %24, align 8, !tbaa !5
  %1642 = load i64, ptr %39, align 8, !tbaa !9
  %1643 = getelementptr inbounds %struct.doublecomplex, ptr %1641, i64 %1642
  %1644 = getelementptr inbounds %struct.doublecomplex, ptr %1643, i32 0, i32 0
  %1645 = load double, ptr %1644, align 8, !tbaa !11
  %1646 = load ptr, ptr %22, align 8, !tbaa !5
  %1647 = load i64, ptr %40, align 8, !tbaa !9
  %1648 = getelementptr inbounds %struct.doublecomplex, ptr %1646, i64 %1647
  %1649 = getelementptr inbounds %struct.doublecomplex, ptr %1648, i32 0, i32 0
  %1650 = load double, ptr %1649, align 8, !tbaa !11
  %1651 = fsub double %1645, %1650
  %1652 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  store double %1651, ptr %1652, align 8, !tbaa !11
  %1653 = load ptr, ptr %24, align 8, !tbaa !5
  %1654 = load i64, ptr %39, align 8, !tbaa !9
  %1655 = getelementptr inbounds %struct.doublecomplex, ptr %1653, i64 %1654
  %1656 = getelementptr inbounds %struct.doublecomplex, ptr %1655, i32 0, i32 1
  %1657 = load double, ptr %1656, align 8, !tbaa !14
  %1658 = load ptr, ptr %22, align 8, !tbaa !5
  %1659 = load i64, ptr %40, align 8, !tbaa !9
  %1660 = getelementptr inbounds %struct.doublecomplex, ptr %1658, i64 %1659
  %1661 = getelementptr inbounds %struct.doublecomplex, ptr %1660, i32 0, i32 1
  %1662 = load double, ptr %1661, align 8, !tbaa !14
  %1663 = fsub double %1657, %1662
  %1664 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  store double %1663, ptr %1664, align 8, !tbaa !14
  %1665 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %1666 = load double, ptr %1665, align 8, !tbaa !11
  %1667 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  store double %1666, ptr %1667, align 8, !tbaa !11
  %1668 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %1669 = load double, ptr %1668, align 8, !tbaa !14
  %1670 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  store double %1669, ptr %1670, align 8, !tbaa !14
  %1671 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  %1672 = load double, ptr %1671, align 8, !tbaa !11
  store double %1672, ptr %41, align 8, !tbaa !16
  %1673 = load double, ptr %41, align 8, !tbaa !16
  %1674 = fcmp oge double %1673, 0.000000e+00
  br i1 %1674, label %1675, label %1677

1675:                                             ; preds = %1597
  %1676 = load double, ptr %41, align 8, !tbaa !16
  br label %1680

1677:                                             ; preds = %1597
  %1678 = load double, ptr %41, align 8, !tbaa !16
  %1679 = fneg double %1678
  br label %1680

1680:                                             ; preds = %1677, %1675
  %1681 = phi double [ %1676, %1675 ], [ %1679, %1677 ]
  %1682 = call double @d_imag(ptr noundef %49)
  store double %1682, ptr %42, align 8, !tbaa !16
  %1683 = load double, ptr %42, align 8, !tbaa !16
  %1684 = fcmp oge double %1683, 0.000000e+00
  br i1 %1684, label %1685, label %1687

1685:                                             ; preds = %1680
  %1686 = load double, ptr %42, align 8, !tbaa !16
  br label %1690

1687:                                             ; preds = %1680
  %1688 = load double, ptr %42, align 8, !tbaa !16
  %1689 = fneg double %1688
  br label %1690

1690:                                             ; preds = %1687, %1685
  %1691 = phi double [ %1686, %1685 ], [ %1689, %1687 ]
  %1692 = fadd double %1681, %1691
  %1693 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %1694 = load double, ptr %1693, align 8, !tbaa !11
  store double %1694, ptr %43, align 8, !tbaa !16
  %1695 = load double, ptr %43, align 8, !tbaa !16
  %1696 = fcmp oge double %1695, 0.000000e+00
  br i1 %1696, label %1697, label %1699

1697:                                             ; preds = %1690
  %1698 = load double, ptr %43, align 8, !tbaa !16
  br label %1702

1699:                                             ; preds = %1690
  %1700 = load double, ptr %43, align 8, !tbaa !16
  %1701 = fneg double %1700
  br label %1702

1702:                                             ; preds = %1699, %1697
  %1703 = phi double [ %1698, %1697 ], [ %1701, %1699 ]
  %1704 = call double @d_imag(ptr noundef %51)
  store double %1704, ptr %44, align 8, !tbaa !16
  %1705 = load double, ptr %44, align 8, !tbaa !16
  %1706 = fcmp oge double %1705, 0.000000e+00
  br i1 %1706, label %1707, label %1709

1707:                                             ; preds = %1702
  %1708 = load double, ptr %44, align 8, !tbaa !16
  br label %1712

1709:                                             ; preds = %1702
  %1710 = load double, ptr %44, align 8, !tbaa !16
  %1711 = fneg double %1710
  br label %1712

1712:                                             ; preds = %1709, %1707
  %1713 = phi double [ %1708, %1707 ], [ %1711, %1709 ]
  %1714 = fadd double %1703, %1713
  %1715 = fcmp olt double %1692, %1714
  br i1 %1715, label %1716, label %1738

1716:                                             ; preds = %1712
  %1717 = load i64, ptr %83, align 8, !tbaa !9
  %1718 = sub nsw i64 %1717, 1
  store i64 %1718, ptr %37, align 8, !tbaa !9
  %1719 = load i64, ptr %83, align 8, !tbaa !9
  store i64 %1719, ptr %38, align 8, !tbaa !9
  %1720 = load ptr, ptr %24, align 8, !tbaa !5
  %1721 = load i64, ptr %38, align 8, !tbaa !9
  %1722 = getelementptr inbounds %struct.doublecomplex, ptr %1720, i64 %1721
  %1723 = getelementptr inbounds %struct.doublecomplex, ptr %1722, i32 0, i32 0
  %1724 = load double, ptr %1723, align 8, !tbaa !11
  %1725 = load ptr, ptr %24, align 8, !tbaa !5
  %1726 = load i64, ptr %37, align 8, !tbaa !9
  %1727 = getelementptr inbounds %struct.doublecomplex, ptr %1725, i64 %1726
  %1728 = getelementptr inbounds %struct.doublecomplex, ptr %1727, i32 0, i32 0
  store double %1724, ptr %1728, align 8, !tbaa !11
  %1729 = load ptr, ptr %24, align 8, !tbaa !5
  %1730 = load i64, ptr %38, align 8, !tbaa !9
  %1731 = getelementptr inbounds %struct.doublecomplex, ptr %1729, i64 %1730
  %1732 = getelementptr inbounds %struct.doublecomplex, ptr %1731, i32 0, i32 1
  %1733 = load double, ptr %1732, align 8, !tbaa !14
  %1734 = load ptr, ptr %24, align 8, !tbaa !5
  %1735 = load i64, ptr %37, align 8, !tbaa !9
  %1736 = getelementptr inbounds %struct.doublecomplex, ptr %1734, i64 %1735
  %1737 = getelementptr inbounds %struct.doublecomplex, ptr %1736, i32 0, i32 1
  store double %1733, ptr %1737, align 8, !tbaa !14
  br label %1760

1738:                                             ; preds = %1712
  %1739 = load i64, ptr %83, align 8, !tbaa !9
  store i64 %1739, ptr %37, align 8, !tbaa !9
  %1740 = load i64, ptr %83, align 8, !tbaa !9
  %1741 = sub nsw i64 %1740, 1
  store i64 %1741, ptr %38, align 8, !tbaa !9
  %1742 = load ptr, ptr %24, align 8, !tbaa !5
  %1743 = load i64, ptr %38, align 8, !tbaa !9
  %1744 = getelementptr inbounds %struct.doublecomplex, ptr %1742, i64 %1743
  %1745 = getelementptr inbounds %struct.doublecomplex, ptr %1744, i32 0, i32 0
  %1746 = load double, ptr %1745, align 8, !tbaa !11
  %1747 = load ptr, ptr %24, align 8, !tbaa !5
  %1748 = load i64, ptr %37, align 8, !tbaa !9
  %1749 = getelementptr inbounds %struct.doublecomplex, ptr %1747, i64 %1748
  %1750 = getelementptr inbounds %struct.doublecomplex, ptr %1749, i32 0, i32 0
  store double %1746, ptr %1750, align 8, !tbaa !11
  %1751 = load ptr, ptr %24, align 8, !tbaa !5
  %1752 = load i64, ptr %38, align 8, !tbaa !9
  %1753 = getelementptr inbounds %struct.doublecomplex, ptr %1751, i64 %1752
  %1754 = getelementptr inbounds %struct.doublecomplex, ptr %1753, i32 0, i32 1
  %1755 = load double, ptr %1754, align 8, !tbaa !14
  %1756 = load ptr, ptr %24, align 8, !tbaa !5
  %1757 = load i64, ptr %37, align 8, !tbaa !9
  %1758 = getelementptr inbounds %struct.doublecomplex, ptr %1756, i64 %1757
  %1759 = getelementptr inbounds %struct.doublecomplex, ptr %1758, i32 0, i32 1
  store double %1755, ptr %1759, align 8, !tbaa !14
  br label %1760

1760:                                             ; preds = %1738, %1716
  br label %1761

1761:                                             ; preds = %1760, %1591
  %1762 = load i64, ptr %69, align 8, !tbaa !9
  store i64 %1762, ptr %37, align 8, !tbaa !9
  %1763 = load i64, ptr %83, align 8, !tbaa !9
  %1764 = load i64, ptr %64, align 8, !tbaa !9
  %1765 = sub nsw i64 %1763, %1764
  %1766 = add nsw i64 %1765, 1
  store i64 %1766, ptr %38, align 8, !tbaa !9
  %1767 = load i64, ptr %37, align 8, !tbaa !9
  %1768 = load i64, ptr %38, align 8, !tbaa !9
  %1769 = icmp sle i64 %1767, %1768
  br i1 %1769, label %1770, label %1772

1770:                                             ; preds = %1761
  %1771 = load i64, ptr %37, align 8, !tbaa !9
  br label %1774

1772:                                             ; preds = %1761
  %1773 = load i64, ptr %38, align 8, !tbaa !9
  br label %1774

1774:                                             ; preds = %1772, %1770
  %1775 = phi i64 [ %1771, %1770 ], [ %1773, %1772 ]
  store i64 %1775, ptr %69, align 8, !tbaa !9
  %1776 = load i64, ptr %69, align 8, !tbaa !9
  %1777 = srem i64 %1776, 2
  %1778 = load i64, ptr %69, align 8, !tbaa !9
  %1779 = sub nsw i64 %1778, %1777
  store i64 %1779, ptr %69, align 8, !tbaa !9
  %1780 = load i64, ptr %83, align 8, !tbaa !9
  %1781 = load i64, ptr %69, align 8, !tbaa !9
  %1782 = sub nsw i64 %1780, %1781
  %1783 = add nsw i64 %1782, 1
  store i64 %1783, ptr %64, align 8, !tbaa !9
  %1784 = load i64, ptr %69, align 8, !tbaa !9
  %1785 = mul nsw i64 %1784, 3
  %1786 = sub nsw i64 %1785, 3
  store i64 %1786, ptr %74, align 8, !tbaa !9
  %1787 = load ptr, ptr %19, align 8, !tbaa !5
  %1788 = load i64, ptr %1787, align 8, !tbaa !9
  %1789 = load i64, ptr %74, align 8, !tbaa !9
  %1790 = sub nsw i64 %1788, %1789
  %1791 = add nsw i64 %1790, 1
  store i64 %1791, ptr %66, align 8, !tbaa !9
  %1792 = load i64, ptr %74, align 8, !tbaa !9
  %1793 = add nsw i64 %1792, 1
  store i64 %1793, ptr %77, align 8, !tbaa !9
  %1794 = load ptr, ptr %19, align 8, !tbaa !5
  %1795 = load i64, ptr %1794, align 8, !tbaa !9
  %1796 = load i64, ptr %74, align 8, !tbaa !9
  %1797 = sub nsw i64 %1795, %1796
  %1798 = sub nsw i64 %1797, 3
  %1799 = load i64, ptr %74, align 8, !tbaa !9
  %1800 = add nsw i64 %1799, 1
  %1801 = sub nsw i64 %1798, %1800
  %1802 = add nsw i64 %1801, 1
  store i64 %1802, ptr %75, align 8, !tbaa !9
  %1803 = load i64, ptr %74, align 8, !tbaa !9
  %1804 = add nsw i64 %1803, 4
  store i64 %1804, ptr %80, align 8, !tbaa !9
  %1805 = load ptr, ptr %19, align 8, !tbaa !5
  %1806 = load i64, ptr %1805, align 8, !tbaa !9
  %1807 = load i64, ptr %74, align 8, !tbaa !9
  %1808 = sub nsw i64 %1806, %1807
  %1809 = load i64, ptr %80, align 8, !tbaa !9
  %1810 = sub nsw i64 %1808, %1809
  %1811 = add nsw i64 %1810, 1
  store i64 %1811, ptr %76, align 8, !tbaa !9
  %1812 = load ptr, ptr %17, align 8, !tbaa !5
  %1813 = load ptr, ptr %18, align 8, !tbaa !5
  %1814 = load ptr, ptr %19, align 8, !tbaa !5
  %1815 = load ptr, ptr %24, align 8, !tbaa !5
  %1816 = load i64, ptr %64, align 8, !tbaa !9
  %1817 = getelementptr inbounds %struct.doublecomplex, ptr %1815, i64 %1816
  %1818 = load ptr, ptr %22, align 8, !tbaa !5
  %1819 = load i64, ptr %33, align 8, !tbaa !9
  %1820 = getelementptr inbounds %struct.doublecomplex, ptr %1818, i64 %1819
  %1821 = load ptr, ptr %23, align 8, !tbaa !5
  %1822 = load ptr, ptr %25, align 8, !tbaa !5
  %1823 = load ptr, ptr %26, align 8, !tbaa !5
  %1824 = load ptr, ptr %27, align 8, !tbaa !5
  %1825 = load i64, ptr %35, align 8, !tbaa !9
  %1826 = getelementptr inbounds %struct.doublecomplex, ptr %1824, i64 %1825
  %1827 = load ptr, ptr %28, align 8, !tbaa !5
  %1828 = load ptr, ptr %29, align 8, !tbaa !5
  %1829 = getelementptr inbounds %struct.doublecomplex, ptr %1828, i64 1
  %1830 = load ptr, ptr %22, align 8, !tbaa !5
  %1831 = load i64, ptr %66, align 8, !tbaa !9
  %1832 = load i64, ptr %32, align 8, !tbaa !9
  %1833 = add nsw i64 %1831, %1832
  %1834 = getelementptr inbounds %struct.doublecomplex, ptr %1830, i64 %1833
  %1835 = load ptr, ptr %23, align 8, !tbaa !5
  %1836 = load ptr, ptr %22, align 8, !tbaa !5
  %1837 = load i64, ptr %80, align 8, !tbaa !9
  %1838 = load i64, ptr %32, align 8, !tbaa !9
  %1839 = add nsw i64 %1837, %1838
  %1840 = getelementptr inbounds %struct.doublecomplex, ptr %1836, i64 %1839
  %1841 = load ptr, ptr %23, align 8, !tbaa !5
  %1842 = load ptr, ptr %22, align 8, !tbaa !5
  %1843 = load i64, ptr %66, align 8, !tbaa !9
  %1844 = load i64, ptr %77, align 8, !tbaa !9
  %1845 = load i64, ptr %32, align 8, !tbaa !9
  %1846 = mul nsw i64 %1844, %1845
  %1847 = add nsw i64 %1843, %1846
  %1848 = getelementptr inbounds %struct.doublecomplex, ptr %1842, i64 %1847
  %1849 = load ptr, ptr %23, align 8, !tbaa !5
  %1850 = call i32 @zlaqr5_(ptr noundef %1812, ptr noundef %1813, ptr noundef %88, ptr noundef %1814, ptr noundef %86, ptr noundef %83, ptr noundef %69, ptr noundef %1817, ptr noundef %1820, ptr noundef %1821, ptr noundef %1822, ptr noundef %1823, ptr noundef %1826, ptr noundef %1827, ptr noundef %1829, ptr noundef @c__3, ptr noundef %1834, ptr noundef %1835, ptr noundef %76, ptr noundef %1840, ptr noundef %1841, ptr noundef %75, ptr noundef %1848, ptr noundef %1849)
  br label %1851

1851:                                             ; preds = %1774, %747, %728
  %1852 = load i64, ptr %61, align 8, !tbaa !9
  %1853 = icmp sgt i64 %1852, 0
  br i1 %1853, label %1854, label %1855

1854:                                             ; preds = %1851
  store i64 1, ptr %82, align 8, !tbaa !9
  br label %1858

1855:                                             ; preds = %1851
  %1856 = load i64, ptr %82, align 8, !tbaa !9
  %1857 = add nsw i64 %1856, 1
  store i64 %1857, ptr %82, align 8, !tbaa !9
  br label %1858

1858:                                             ; preds = %1855, %1854
  br label %1859

1859:                                             ; preds = %1858
  %1860 = load i64, ptr %63, align 8, !tbaa !9
  %1861 = add nsw i64 %1860, 1
  store i64 %1861, ptr %63, align 8, !tbaa !9
  br label %442, !llvm.loop !22

1862:                                             ; preds = %442
  %1863 = load i64, ptr %83, align 8, !tbaa !9
  %1864 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 %1863, ptr %1864, align 8, !tbaa !9
  br label %1865

1865:                                             ; preds = %1862, %451
  br label %1866

1866:                                             ; preds = %1865, %159
  %1867 = load i64, ptr %98, align 8, !tbaa !9
  %1868 = sitofp i64 %1867 to double
  store double %1868, ptr %41, align 8, !tbaa !16
  %1869 = load double, ptr %41, align 8, !tbaa !16
  %1870 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  store double %1869, ptr %1870, align 8, !tbaa !11
  %1871 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  store double 0.000000e+00, ptr %1871, align 8, !tbaa !14
  %1872 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  %1873 = load double, ptr %1872, align 8, !tbaa !11
  %1874 = load ptr, ptr %29, align 8, !tbaa !5
  %1875 = getelementptr inbounds %struct.doublecomplex, ptr %1874, i64 1
  %1876 = getelementptr inbounds %struct.doublecomplex, ptr %1875, i32 0, i32 0
  store double %1873, ptr %1876, align 8, !tbaa !11
  %1877 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  %1878 = load double, ptr %1877, align 8, !tbaa !14
  %1879 = load ptr, ptr %29, align 8, !tbaa !5
  %1880 = getelementptr inbounds %struct.doublecomplex, ptr %1879, i64 1
  %1881 = getelementptr inbounds %struct.doublecomplex, ptr %1880, i32 0, i32 1
  store double %1878, ptr %1881, align 8, !tbaa !14
  store i32 0, ptr %16, align 4
  store i32 1, ptr %99, align 4
  br label %1882

1882:                                             ; preds = %1866, %322, %124
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %95) #4
  call void @llvm.lifetime.end.p0(i64 2, ptr %94) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %87) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %85) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  %1883 = load i32, ptr %16, align 4
  ret i32 %1883
}

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

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

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

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

declare double @d_imag(ptr noundef) #2

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

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

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

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

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

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { nounwind }

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

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


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

%struct.doublecomplex = type { double, double }

@c__13 = external hidden global i64, align 8
@.str = external hidden unnamed_addr constant [7 x i8], align 1
@c__15 = external hidden global i64, align 8
@c_n1 = external hidden global i64, align 8
@c__12 = external hidden global i64, align 8
@c__14 = external hidden global i64, align 8
@c__16 = external hidden global i64, align 8
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c_false = external hidden global i64, align 8
@c__1 = external hidden global i64, align 8
@c__3 = external hidden global i64, align 8

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

38:                                               ; preds = %15
  %39 = icmp slt i64 %36, 12
  br i1 %39, label %40, label %44

40:                                               ; preds = %38
  %41 = load i64, ptr %13, align 8, !tbaa !5
  %.not638 = icmp eq i64 %41, -1
  br i1 %.not638, label %.loopexit650, label %42

42:                                               ; preds = %40
  %43 = tail call i32 @zlahqr_(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef nonnull %14) #4
  br label %.loopexit650

44:                                               ; preds = %38
  %45 = load i64, ptr %0, align 8, !tbaa !5
  %.not = icmp eq i64 %45, 0
  %. = select i1 %.not, i8 69, i8 83
  store i8 %., ptr %31, align 1, !tbaa !9
  %46 = load i64, ptr %1, align 8, !tbaa !5
  %.not611 = icmp eq i64 %46, 0
  %spec.select = select i1 %.not611, i8 78, i8 86
  %47 = getelementptr inbounds i8, ptr %31, i64 1
  store i8 %spec.select, ptr %47, align 1
  %48 = call i64 @ilaenv_(ptr noundef nonnull @c__13, ptr noundef nonnull @.str, ptr noundef nonnull %31, ptr noundef nonnull %2, ptr noundef %3, ptr noundef %4, ptr noundef %13) #4
  %49 = call i64 @llvm.smax.i64(i64 %48, i64 2)
  %50 = load i64, ptr %4, align 8, !tbaa !5
  %51 = load i64, ptr %3, align 8, !tbaa !5
  %52 = sub nsw i64 %50, %51
  %53 = add nsw i64 %52, 1
  %54 = load i64, ptr %2, align 8, !tbaa !5
  %55 = add nsw i64 %54, -1
  %56 = sdiv i64 %55, 3
  %57 = call i64 @llvm.smin.i64(i64 %53, i64 %56)
  %58 = call i64 @llvm.smin.i64(i64 %57, i64 %49)
  %59 = call i64 @ilaenv_(ptr noundef nonnull @c__15, ptr noundef nonnull @.str, ptr noundef nonnull %31, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %13) #4
  %60 = load i64, ptr %2, align 8, !tbaa !5
  %61 = add nsw i64 %60, 6
  %62 = sdiv i64 %61, 9
  %63 = call i64 @llvm.smin.i64(i64 %59, i64 %62)
  %64 = load i64, ptr %4, align 8, !tbaa !5
  %65 = load i64, ptr %3, align 8, !tbaa !5
  %66 = sub nsw i64 %64, %65
  %67 = call i64 @llvm.smin.i64(i64 %63, i64 %66)
  %68 = srem i64 %67, 2
  %69 = sub nsw i64 %67, %68
  %70 = call i64 @llvm.smax.i64(i64 %69, i64 2)
  %71 = add nsw i64 %58, 1
  store i64 %71, ptr %16, align 8, !tbaa !5
  %72 = call i32 @zlaqr3_(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %16, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef nonnull %11, ptr noundef nonnull %21, ptr noundef nonnull %20, ptr noundef %7, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %2, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %2, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %12, ptr noundef nonnull @c_n1) #4
  %73 = lshr i64 %70, 1
  %74 = add nuw nsw i64 %73, %70
  store i64 %74, ptr %16, align 8, !tbaa !5
  %75 = load double, ptr %12, align 8, !tbaa !10
  %76 = fptosi double %75 to i64
  %77 = call i64 @llvm.smax.i64(i64 %74, i64 %76)
  %78 = load i64, ptr %13, align 8, !tbaa !5
  %79 = icmp eq i64 %78, -1
  br i1 %79, label %80, label %82

80:                                               ; preds = %44
  %81 = uitofp nneg i64 %77 to double
  br label %481

82:                                               ; preds = %44
  %83 = call i64 @ilaenv_(ptr noundef nonnull @c__12, ptr noundef nonnull @.str, ptr noundef nonnull %31, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %13) #4
  %84 = call i64 @llvm.smax.i64(i64 %83, i64 11)
  %85 = call i64 @ilaenv_(ptr noundef nonnull @c__14, ptr noundef nonnull @.str, ptr noundef nonnull %31, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %13) #4
  %86 = call i64 @llvm.smax.i64(i64 %85, i64 0)
  %87 = call i64 @ilaenv_(ptr noundef nonnull @c__16, ptr noundef nonnull @.str, ptr noundef nonnull %31, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %13) #4
  %88 = call i64 @llvm.smax.i64(i64 %87, i64 0)
  %89 = call i64 @llvm.umin.i64(i64 %88, i64 2)
  store i64 %89, ptr %30, align 8, !tbaa !5
  %90 = load i64, ptr %2, align 8, !tbaa !5
  %91 = add nsw i64 %90, -1
  %92 = sdiv i64 %91, 3
  %93 = load i64, ptr %13, align 8, !tbaa !5
  %94 = sdiv i64 %93, 2
  %95 = call i64 @llvm.smin.i64(i64 %92, i64 %94)
  store i64 %95, ptr %23, align 8, !tbaa !5
  %96 = load i64, ptr %4, align 8, !tbaa !5
  %97 = load i64, ptr %3, align 8, !tbaa !5
  %98 = sub nsw i64 %96, %97
  %99 = icmp slt i64 %98, 10
  %100 = mul i64 %98, 30
  %101 = add i64 %100, 30
  %102 = select i1 %99, i64 300, i64 %101
  store i64 %96, ptr %27, align 8, !tbaa !5
  store i64 %102, ptr %16, align 8, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %34, i64 16
  %invariant.gep664 = getelementptr i8, ptr %34, i64 -16
  %.not619668 = icmp slt i64 %102, 1
  br i1 %.not619668, label %._crit_edge674, label %.lr.ph673

.lr.ph673:                                        ; preds = %82
  %103 = add nsw i64 %90, 6
  %104 = sdiv i64 %103, 9
  %105 = shl i64 %93, 1
  %106 = sdiv i64 %105, 3
  %107 = call i64 @llvm.smin.i64(i64 %104, i64 %106)
  %108 = srem i64 %107, 2
  %109 = sub nsw i64 %107, %108
  %110 = call i64 @llvm.smin.i64(i64 %84, i64 %95)
  %111 = call i64 @llvm.smin.i64(i64 %109, i64 %70)
  %112 = add i64 %32, 1
  %113 = getelementptr inbounds i8, ptr %17, i64 8
  %114 = getelementptr i8, ptr %5, i64 16
  br label %115

115:                                              ; preds = %.lr.ph673, %474
  %.0592671 = phi i64 [ 1, %.lr.ph673 ], [ %.1593, %474 ]
  %.0594670 = phi i64 [ undef, %.lr.ph673 ], [ %.1595, %474 ]
  %.0600669 = phi i64 [ 1, %.lr.ph673 ], [ %477, %474 ]
  %116 = load i64, ptr %27, align 8, !tbaa !5
  %117 = load i64, ptr %3, align 8, !tbaa !5
  %118 = icmp slt i64 %116, %117
  br i1 %118, label %.loopexit650, label %.preheader649

.preheader649:                                    ; preds = %115
  %.not620.not651 = icmp sgt i64 %116, %117
  br i1 %.not620.not651, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %.preheader649, %129
  %.0601652 = phi i64 [ %119, %129 ], [ %116, %.preheader649 ]
  %119 = add nsw i64 %.0601652, -1
  %120 = mul nsw i64 %119, %32
  %121 = getelementptr %struct.doublecomplex, ptr %34, i64 %.0601652
  %122 = getelementptr %struct.doublecomplex, ptr %121, i64 %120
  %123 = load double, ptr %122, align 8, !tbaa !10
  %124 = fcmp oeq double %123, 0.000000e+00
  br i1 %124, label %125, label %129

125:                                              ; preds = %.lr.ph
  %126 = getelementptr inbounds i8, ptr %122, i64 8
  %127 = load double, ptr %126, align 8, !tbaa !13
  %128 = fcmp oeq double %127, 0.000000e+00
  br i1 %128, label %._crit_edge, label %129

129:                                              ; preds = %.lr.ph, %125
  %.not620.not = icmp sgt i64 %119, %117
  br i1 %.not620.not, label %.lr.ph, label %._crit_edge, !llvm.loop !14

._crit_edge:                                      ; preds = %125, %129, %.preheader649
  %.1602 = phi i64 [ %117, %.preheader649 ], [ %117, %129 ], [ %.0601652, %125 ]
  store i64 %.1602, ptr %28, align 8, !tbaa !5
  %130 = sub nsw i64 %116, %.1602
  %131 = add nsw i64 %130, 1
  %132 = call i64 @llvm.smin.i64(i64 %131, i64 %95)
  %133 = icmp slt i64 %.0592671, 5
  %134 = load i64, ptr %23, align 8
  %135 = shl i64 %134, 1
  %.sink = select i1 %133, i64 %58, i64 %135
  %136 = call i64 @llvm.smin.i64(i64 %132, i64 %.sink)
  store i64 %136, ptr %23, align 8, !tbaa !5
  %137 = icmp slt i64 %136, %95
  br i1 %137, label %138, label %171

138:                                              ; preds = %._crit_edge
  %.not625 = icmp slt i64 %136, %130
  br i1 %.not625, label %140, label %139

139:                                              ; preds = %138
  store i64 %131, ptr %23, align 8, !tbaa !5
  br label %171

140:                                              ; preds = %138
  %141 = sub nsw i64 %116, %136
  %142 = mul nsw i64 %141, %32
  %143 = add nsw i64 %141, -1
  %144 = mul nsw i64 %143, %32
  %145 = getelementptr %struct.doublecomplex, ptr %34, i64 %141
  %146 = getelementptr i8, ptr %145, i64 16
  %147 = getelementptr %struct.doublecomplex, ptr %146, i64 %142
  %148 = load double, ptr %147, align 8, !tbaa !10
  %149 = call double @d_imag(ptr noundef nonnull %147) #4
  %150 = insertelement <2 x double> poison, double %148, i64 0
  %151 = insertelement <2 x double> %150, double %149, i64 1
  %152 = fcmp oge <2 x double> %151, zeroinitializer
  %153 = fneg <2 x double> %151
  %154 = select <2 x i1> %152, <2 x double> %151, <2 x double> %153
  %155 = getelementptr %struct.doublecomplex, ptr %145, i64 %144
  %156 = load double, ptr %155, align 8, !tbaa !10
  %157 = call double @d_imag(ptr noundef nonnull %155) #4
  %158 = insertelement <2 x double> poison, double %156, i64 0
  %159 = insertelement <2 x double> %158, double %157, i64 1
  %160 = fcmp oge <2 x double> %159, zeroinitializer
  %161 = fneg <2 x double> %159
  %162 = select <2 x i1> %160, <2 x double> %159, <2 x double> %161
  %163 = shufflevector <2 x double> %154, <2 x double> %162, <2 x i32> <i32 0, i32 2>
  %164 = shufflevector <2 x double> %154, <2 x double> %162, <2 x i32> <i32 1, i32 3>
  %165 = fadd <2 x double> %163, %164
  %166 = extractelement <2 x double> %165, i64 0
  %167 = extractelement <2 x double> %165, i64 1
  %168 = fcmp ogt double %166, %167
  %.pre.pre = load i64, ptr %23, align 8
  br i1 %168, label %169, label %171

169:                                              ; preds = %140
  %170 = add nsw i64 %.pre.pre, 1
  store i64 %170, ptr %23, align 8, !tbaa !5
  br label %171

171:                                              ; preds = %139, %169, %140, %._crit_edge
  %.pre = phi i64 [ %131, %139 ], [ %170, %169 ], [ %.pre.pre, %140 ], [ %136, %._crit_edge ]
  br i1 %133, label %179, label %172

172:                                              ; preds = %171
  %173 = icmp slt i64 %.0594670, 0
  %.not626 = icmp slt i64 %.pre, %132
  %or.cond639 = select i1 %173, i1 %.not626, i1 false
  br i1 %or.cond639, label %179, label %174

174:                                              ; preds = %172
  %175 = add nsw i64 %.0594670, 1
  %176 = sub nsw i64 %.pre, %175
  %177 = icmp slt i64 %176, 2
  %spec.store.select = select i1 %177, i64 0, i64 %175
  %178 = sub nsw i64 %.pre, %spec.store.select
  store i64 %178, ptr %23, align 8, !tbaa !5
  br label %179

179:                                              ; preds = %172, %171, %174
  %180 = phi i64 [ %178, %174 ], [ %.pre, %171 ], [ %.pre, %172 ]
  %.1595 = phi i64 [ %spec.store.select, %174 ], [ -1, %171 ], [ %.0594670, %172 ]
  %181 = load i64, ptr %2, align 8, !tbaa !5
  %182 = sub nsw i64 %181, %180
  %183 = add nsw i64 %180, 1
  %184 = xor i64 %180, -1
  %185 = add i64 %182, %184
  store i64 %185, ptr %25, align 8, !tbaa !5
  %.neg641 = add i64 %181, 1
  %186 = shl i64 %180, 1
  %reass.sub = sub i64 %.neg641, %186
  %187 = add i64 %reass.sub, -2
  store i64 %187, ptr %26, align 8, !tbaa !5
  %188 = getelementptr inbounds %struct.doublecomplex, ptr %5, i64 %182
  %189 = mul nsw i64 %183, %32
  %gep = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %182
  %190 = getelementptr %struct.doublecomplex, ptr %gep, i64 %189
  %gep663 = getelementptr %struct.doublecomplex, ptr %114, i64 %180
  %191 = call i32 @zlaqr3_(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef nonnull %28, ptr noundef nonnull %27, ptr noundef nonnull %23, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef nonnull %11, ptr noundef nonnull %21, ptr noundef nonnull %20, ptr noundef %7, ptr noundef %188, ptr noundef nonnull %6, ptr noundef nonnull %25, ptr noundef %190, ptr noundef nonnull %6, ptr noundef nonnull %26, ptr noundef %gep663, ptr noundef nonnull %6, ptr noundef nonnull %12, ptr noundef nonnull %13) #4
  %192 = load i64, ptr %20, align 8, !tbaa !5
  %193 = load i64, ptr %27, align 8, !tbaa !5
  %194 = sub nsw i64 %193, %192
  store i64 %194, ptr %27, align 8, !tbaa !5
  %195 = load i64, ptr %21, align 8, !tbaa !5
  %196 = sub nsw i64 %194, %195
  %197 = add nsw i64 %196, 1
  %198 = icmp eq i64 %192, 0
  br i1 %198, label %._crit_edge679, label %199

._crit_edge679:                                   ; preds = %179
  %.pre680 = load i64, ptr %28, align 8, !tbaa !5
  %.pre684 = sub nsw i64 %194, %.pre680
  br label %206

199:                                              ; preds = %179
  %200 = mul nsw i64 %192, 100
  %201 = load i64, ptr %23, align 8, !tbaa !5
  %202 = mul nsw i64 %201, %86
  %.not627 = icmp sgt i64 %200, %202
  br i1 %.not627, label %474, label %203

203:                                              ; preds = %199
  %204 = load i64, ptr %28, align 8, !tbaa !5
  %205 = sub nsw i64 %194, %204
  %.not629 = icmp slt i64 %205, %110
  br i1 %.not629, label %474, label %206

206:                                              ; preds = %._crit_edge679, %203
  %.pre-phi = phi i64 [ %.pre684, %._crit_edge679 ], [ %205, %203 ]
  %207 = call i64 @llvm.smax.i64(i64 %.pre-phi, i64 2)
  %208 = call i64 @llvm.smin.i64(i64 %111, i64 %207)
  %209 = srem i64 %208, 2
  %210 = sdiv i64 %208, 2
  %211 = sub nsw i64 %208, %209
  store i64 %211, ptr %22, align 8, !tbaa !5
  %212 = srem i64 %.0592671, 6
  %213 = icmp eq i64 %212, 0
  br i1 %213, label %214, label %243

214:                                              ; preds = %206
  %215 = sub nsw i64 %194, %211
  %216 = add nsw i64 %215, 1
  %217 = add nsw i64 %215, 2
  %.not636658 = icmp slt i64 %194, %217
  br i1 %.not636658, label %.loopexit, label %.lr.ph661

.lr.ph661:                                        ; preds = %214, %.lr.ph661
  %.0596659 = phi i64 [ %242, %.lr.ph661 ], [ %194, %214 ]
  %218 = mul i64 %.0596659, %112
  %219 = add nsw i64 %.0596659, -1
  %220 = mul nsw i64 %219, %32
  %221 = getelementptr %struct.doublecomplex, ptr %34, i64 %.0596659
  %222 = getelementptr %struct.doublecomplex, ptr %221, i64 %220
  %223 = load double, ptr %222, align 8, !tbaa !10
  %224 = fcmp oge double %223, 0.000000e+00
  %225 = fneg double %223
  %226 = select i1 %224, double %223, double %225
  %227 = call double @d_imag(ptr noundef nonnull %222) #4
  %228 = fcmp oge double %227, 0.000000e+00
  %229 = fneg double %227
  %230 = select i1 %228, double %227, double %229
  %231 = fadd double %226, %230
  %232 = fmul double %231, 7.500000e-01
  %233 = getelementptr inbounds %struct.doublecomplex, ptr %34, i64 %218
  %234 = load double, ptr %233, align 8, !tbaa !10
  %235 = fadd double %234, %232
  store double %235, ptr %17, align 16, !tbaa !10
  %236 = getelementptr inbounds i8, ptr %233, i64 8
  %237 = load double, ptr %236, align 8, !tbaa !13
  store double %237, ptr %113, align 8, !tbaa !13
  %238 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %.0596659
  store double %235, ptr %238, align 8, !tbaa !10
  %239 = getelementptr inbounds i8, ptr %238, i64 8
  store double %237, ptr %239, align 8, !tbaa !13
  %240 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %219
  store double %235, ptr %240, align 8, !tbaa !10
  %241 = getelementptr inbounds i8, ptr %240, i64 8
  store double %237, ptr %241, align 8, !tbaa !13
  %242 = add nsw i64 %.0596659, -2
  %.not636 = icmp slt i64 %242, %217
  br i1 %.not636, label %.loopexit, label %.lr.ph661, !llvm.loop !16

243:                                              ; preds = %206
  %244 = sub nsw i64 %194, %197
  %.not632.not = icmp slt i64 %244, %210
  br i1 %.not632.not, label %245, label %374

245:                                              ; preds = %243
  %246 = sub nsw i64 %194, %211
  %247 = add nsw i64 %246, 1
  %248 = load i64, ptr %2, align 8, !tbaa !5
  %249 = sub nsw i64 %248, %211
  %250 = mul i64 %247, %112
  %251 = getelementptr inbounds %struct.doublecomplex, ptr %34, i64 %250
  %252 = getelementptr inbounds %struct.doublecomplex, ptr %5, i64 %249
  %253 = call i32 @zlacpy_(ptr noundef nonnull @.str.1, ptr noundef nonnull %22, ptr noundef nonnull %22, ptr noundef %251, ptr noundef nonnull %6, ptr noundef %252, ptr noundef nonnull %6) #4
  %254 = load i64, ptr %22, align 8, !tbaa !5
  %255 = icmp sgt i64 %254, %84
  %256 = getelementptr %struct.doublecomplex, ptr %7, i64 %246
  br i1 %255, label %257, label %259

257:                                              ; preds = %245
  %258 = call i32 @zlaqr4_(ptr noundef nonnull @c_false, ptr noundef nonnull @c_false, ptr noundef nonnull %22, ptr noundef nonnull @c__1, ptr noundef nonnull %22, ptr noundef %252, ptr noundef nonnull %6, ptr noundef %256, ptr noundef nonnull @c__1, ptr noundef nonnull @c__1, ptr noundef nonnull %29, ptr noundef nonnull @c__1, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %24) #4
  br label %261

259:                                              ; preds = %245
  %260 = call i32 @zlahqr_(ptr noundef nonnull @c_false, ptr noundef nonnull @c_false, ptr noundef nonnull %22, ptr noundef nonnull @c__1, ptr noundef nonnull %22, ptr noundef %252, ptr noundef nonnull %6, ptr noundef %256, ptr noundef nonnull @c__1, ptr noundef nonnull @c__1, ptr noundef nonnull %29, ptr noundef nonnull @c__1, ptr noundef nonnull %24) #4
  br label %261

261:                                              ; preds = %259, %257
  %262 = load i64, ptr %24, align 8, !tbaa !5
  %263 = add nsw i64 %262, %247
  %264 = load i64, ptr %27, align 8, !tbaa !5
  %.not633 = icmp slt i64 %263, %264
  br i1 %.not633, label %374, label %265

265:                                              ; preds = %261
  %266 = add nsw i64 %264, -1
  %267 = mul nsw i64 %266, %32
  %268 = mul nsw i64 %264, %32
  %269 = getelementptr %struct.doublecomplex, ptr %34, i64 %266
  %270 = getelementptr %struct.doublecomplex, ptr %269, i64 %267
  %271 = load double, ptr %270, align 8, !tbaa !10
  %272 = call double @d_imag(ptr noundef nonnull %270) #4
  %273 = getelementptr %struct.doublecomplex, ptr %34, i64 %264
  %274 = getelementptr %struct.doublecomplex, ptr %273, i64 %267
  %275 = load double, ptr %274, align 8, !tbaa !10
  %276 = load i64, ptr %27, align 8, !tbaa !5
  %277 = add nsw i64 %276, -1
  %278 = mul nsw i64 %277, %32
  %279 = getelementptr %struct.doublecomplex, ptr %34, i64 %276
  %280 = getelementptr %struct.doublecomplex, ptr %279, i64 %278
  %281 = call double @d_imag(ptr noundef %280) #4
  %282 = insertelement <2 x double> poison, double %271, i64 0
  %283 = insertelement <2 x double> %282, double %275, i64 1
  %284 = fcmp oge <2 x double> %283, zeroinitializer
  %285 = fneg <2 x double> %283
  %286 = select <2 x i1> %284, <2 x double> %283, <2 x double> %285
  %287 = insertelement <2 x double> poison, double %272, i64 0
  %288 = insertelement <2 x double> %287, double %281, i64 1
  %289 = fcmp oge <2 x double> %288, zeroinitializer
  %290 = fneg <2 x double> %288
  %291 = select <2 x i1> %289, <2 x double> %288, <2 x double> %290
  %292 = fadd <2 x double> %286, %291
  %shift = shufflevector <2 x double> %292, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %293 = fadd <2 x double> %292, %shift
  %294 = getelementptr %struct.doublecomplex, ptr %269, i64 %268
  %295 = load double, ptr %294, align 8, !tbaa !10
  %296 = load i64, ptr %27, align 8, !tbaa !5
  %297 = mul nsw i64 %296, %32
  %gep665 = getelementptr %struct.doublecomplex, ptr %invariant.gep664, i64 %296
  %298 = getelementptr %struct.doublecomplex, ptr %gep665, i64 %297
  %299 = call double @d_imag(ptr noundef %298) #4
  %300 = getelementptr %struct.doublecomplex, ptr %273, i64 %268
  %301 = load double, ptr %300, align 8, !tbaa !10
  %302 = load i64, ptr %27, align 8, !tbaa !5
  %303 = mul i64 %302, %112
  %304 = getelementptr inbounds %struct.doublecomplex, ptr %34, i64 %303
  %305 = call double @d_imag(ptr noundef %304) #4
  %306 = insertelement <2 x double> poison, double %295, i64 0
  %307 = insertelement <2 x double> %306, double %301, i64 1
  %308 = fcmp oge <2 x double> %307, zeroinitializer
  %309 = fneg <2 x double> %307
  %310 = select <2 x i1> %308, <2 x double> %307, <2 x double> %309
  %311 = insertelement <2 x double> poison, double %299, i64 0
  %312 = insertelement <2 x double> %311, double %305, i64 1
  %313 = fcmp oge <2 x double> %312, zeroinitializer
  %314 = fneg <2 x double> %312
  %315 = select <2 x i1> %313, <2 x double> %312, <2 x double> %314
  %316 = fadd <2 x double> %310, %315
  %317 = fadd <2 x double> %293, %316
  %shift694 = shufflevector <2 x double> %316, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %318 = fadd <2 x double> %317, %shift694
  %319 = extractelement <2 x double> %318, i64 0
  %320 = load i64, ptr %27, align 8, !tbaa !5
  %321 = add nsw i64 %320, -1
  %322 = mul i64 %321, %112
  %323 = getelementptr inbounds %struct.doublecomplex, ptr %34, i64 %322
  %324 = mul nsw i64 %321, %32
  %325 = getelementptr %struct.doublecomplex, ptr %34, i64 %320
  %326 = getelementptr %struct.doublecomplex, ptr %325, i64 %324
  %327 = mul nsw i64 %320, %32
  %328 = getelementptr i8, ptr %325, i64 -16
  %329 = getelementptr %struct.doublecomplex, ptr %328, i64 %327
  %330 = load double, ptr %329, align 8, !tbaa !10
  %331 = fdiv double %330, %319
  %332 = getelementptr inbounds i8, ptr %329, i64 8
  %333 = load double, ptr %332, align 8, !tbaa !13
  %334 = fdiv double %333, %319
  %335 = mul i64 %320, %112
  %336 = getelementptr inbounds %struct.doublecomplex, ptr %34, i64 %335
  %337 = load <2 x double>, ptr %323, align 8, !tbaa !17
  %338 = shufflevector <2 x double> %318, <2 x double> poison, <2 x i32> zeroinitializer
  %339 = fdiv <2 x double> %337, %338
  %340 = load <2 x double>, ptr %336, align 8, !tbaa !17
  %341 = fdiv <2 x double> %340, %338
  %342 = fadd <2 x double> %339, %341
  %343 = fmul <2 x double> %342, <double 5.000000e-01, double 5.000000e-01>
  %344 = fsub <2 x double> %339, %343
  store <2 x double> %344, ptr %19, align 16, !tbaa !17
  %345 = fneg double %334
  %346 = load <2 x double>, ptr %326, align 8, !tbaa !17
  %347 = fdiv <2 x double> %346, %338
  %348 = fsub <2 x double> %341, %343
  %349 = shufflevector <2 x double> %344, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %350 = fneg <2 x double> %344
  %351 = shufflevector <2 x double> %349, <2 x double> %350, <2 x i32> <i32 0, i32 3>
  %352 = fmul <2 x double> %348, %351
  %353 = shufflevector <2 x double> %352, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %354 = shufflevector <2 x double> %344, <2 x double> poison, <2 x i32> zeroinitializer
  %355 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %354, <2 x double> %348, <2 x double> %353)
  %356 = insertelement <2 x double> poison, double %334, i64 0
  %357 = insertelement <2 x double> %356, double %345, i64 1
  %358 = fmul <2 x double> %347, %357
  %359 = shufflevector <2 x double> %358, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %360 = insertelement <2 x double> poison, double %331, i64 0
  %361 = shufflevector <2 x double> %360, <2 x double> poison, <2 x i32> zeroinitializer
  %362 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %361, <2 x double> %347, <2 x double> %359)
  %363 = fsub <2 x double> %355, %362
  store <2 x double> %363, ptr %17, align 16, !tbaa !17
  %364 = fneg <2 x double> %363
  store <2 x double> %364, ptr %18, align 16, !tbaa !17
  call void @z_sqrt(ptr noundef nonnull %17, ptr noundef nonnull %18) #4
  %365 = load i64, ptr %27, align 8, !tbaa !5
  %366 = getelementptr %struct.doublecomplex, ptr %35, i64 %365
  %367 = getelementptr i8, ptr %366, i64 -16
  %368 = load <2 x double>, ptr %17, align 16, !tbaa !17
  %369 = fadd <2 x double> %343, %368
  %370 = fmul <2 x double> %338, %369
  store <2 x double> %370, ptr %367, align 8, !tbaa !17
  %371 = fsub <2 x double> %343, %368
  store <2 x double> %371, ptr %18, align 16, !tbaa !17
  %372 = fmul <2 x double> %338, %371
  store <2 x double> %372, ptr %17, align 16, !tbaa !17
  store <2 x double> %372, ptr %366, align 8, !tbaa !17
  %373 = add nsw i64 %365, -1
  br label %374

374:                                              ; preds = %261, %265, %243
  %375 = phi i64 [ %365, %265 ], [ %264, %261 ], [ %194, %243 ]
  %.0598 = phi i64 [ %373, %265 ], [ %263, %261 ], [ %197, %243 ]
  %376 = sub nsw i64 %375, %.0598
  %377 = load i64, ptr %22, align 8, !tbaa !5
  %.not634 = icmp slt i64 %376, %377
  %378 = icmp sle i64 %375, %.0598
  %or.cond675 = or i1 %.not634, %378
  br i1 %or.cond675, label %.loopexit, label %.preheader

.preheader:                                       ; preds = %374, %407
  %.2603657 = phi i64 [ %408, %407 ], [ %375, %374 ]
  br label %379

379:                                              ; preds = %.preheader, %406
  %.1656 = phi i64 [ 1, %.preheader ], [ %.2, %406 ]
  %.1597655 = phi i64 [ %.0598, %.preheader ], [ %380, %406 ]
  %380 = add nsw i64 %.1597655, 1
  %381 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %.1597655
  %382 = load double, ptr %381, align 8, !tbaa !10
  %383 = call double @d_imag(ptr noundef nonnull %381) #4
  %384 = insertelement <2 x double> poison, double %382, i64 0
  %385 = insertelement <2 x double> %384, double %383, i64 1
  %386 = fcmp oge <2 x double> %385, zeroinitializer
  %387 = fneg <2 x double> %385
  %388 = select <2 x i1> %386, <2 x double> %385, <2 x double> %387
  %389 = getelementptr %struct.doublecomplex, ptr %7, i64 %.1597655
  %390 = load double, ptr %389, align 8, !tbaa !10
  %391 = call double @d_imag(ptr noundef nonnull %389) #4
  %392 = insertelement <2 x double> poison, double %390, i64 0
  %393 = insertelement <2 x double> %392, double %391, i64 1
  %394 = fcmp oge <2 x double> %393, zeroinitializer
  %395 = fneg <2 x double> %393
  %396 = select <2 x i1> %394, <2 x double> %393, <2 x double> %395
  %397 = shufflevector <2 x double> %388, <2 x double> %396, <2 x i32> <i32 0, i32 2>
  %398 = shufflevector <2 x double> %388, <2 x double> %396, <2 x i32> <i32 1, i32 3>
  %399 = fadd <2 x double> %397, %398
  %400 = extractelement <2 x double> %399, i64 0
  %401 = extractelement <2 x double> %399, i64 1
  %402 = fcmp olt double %400, %401
  br i1 %402, label %403, label %406

403:                                              ; preds = %379
  %404 = load <2 x double>, ptr %389, align 8, !tbaa !17
  %405 = load <2 x double>, ptr %381, align 8, !tbaa !17
  store <2 x double> %404, ptr %381, align 8, !tbaa !17
  store <2 x double> %405, ptr %389, align 8, !tbaa !17
  br label %406

406:                                              ; preds = %379, %403
  %.2 = phi i64 [ 0, %403 ], [ %.1656, %379 ]
  %.not635.not = icmp slt i64 %380, %.2603657
  br i1 %.not635.not, label %379, label %407, !llvm.loop !18

407:                                              ; preds = %406
  %408 = add nsw i64 %.2603657, -1
  %409 = icmp sle i64 %408, %.0598
  %410 = icmp ne i64 %.2, 0
  %or.cond = select i1 %409, i1 true, i1 %410
  br i1 %or.cond, label %.loopexit, label %.preheader, !llvm.loop !19

.loopexit:                                        ; preds = %407, %.lr.ph661, %214, %374
  %.1599 = phi i64 [ %.0598, %374 ], [ %216, %214 ], [ %216, %.lr.ph661 ], [ %.0598, %407 ]
  %411 = load i64, ptr %27, align 8, !tbaa !5
  %412 = sub nsw i64 %411, %.1599
  %413 = icmp eq i64 %412, 1
  br i1 %413, label %414, label %453

414:                                              ; preds = %.loopexit
  %415 = mul i64 %411, %112
  %416 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %411
  %417 = getelementptr inbounds %struct.doublecomplex, ptr %34, i64 %415
  %418 = load <2 x double>, ptr %416, align 8, !tbaa !17
  %419 = load <2 x double>, ptr %417, align 8, !tbaa !17
  %420 = fsub <2 x double> %418, %419
  store <2 x double> %420, ptr %18, align 16, !tbaa !17
  store <2 x double> %420, ptr %17, align 16, !tbaa !17
  %421 = getelementptr i8, ptr %416, i64 -16
  %422 = load <2 x double>, ptr %421, align 8, !tbaa !17
  %423 = fsub <2 x double> %422, %419
  store <2 x double> %423, ptr %19, align 16, !tbaa !17
  %424 = extractelement <2 x double> %420, i64 0
  %425 = fcmp oge double %424, 0.000000e+00
  %426 = fneg double %424
  %427 = select i1 %425, double %424, double %426
  %428 = call double @d_imag(ptr noundef nonnull %17) #4
  %429 = fcmp oge double %428, 0.000000e+00
  %430 = fneg double %428
  %431 = select i1 %429, double %428, double %430
  %432 = fadd double %427, %431
  %433 = load <2 x double>, ptr %19, align 16
  %434 = call double @d_imag(ptr noundef nonnull %19) #4
  %435 = insertelement <2 x double> %433, double %434, i64 1
  %436 = fcmp oge <2 x double> %435, zeroinitializer
  %437 = fneg <2 x double> %435
  %438 = select <2 x i1> %436, <2 x double> %435, <2 x double> %437
  %shift695 = shufflevector <2 x double> %438, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %439 = fadd <2 x double> %438, %shift695
  %440 = extractelement <2 x double> %439, i64 0
  %441 = fcmp olt double %432, %440
  %442 = load i64, ptr %27, align 8, !tbaa !5
  %443 = getelementptr %struct.doublecomplex, ptr %35, i64 %442
  br i1 %441, label %444, label %447

444:                                              ; preds = %414
  %445 = load double, ptr %443, align 8, !tbaa !10
  %446 = getelementptr i8, ptr %443, i64 -16
  store double %445, ptr %446, align 8, !tbaa !10
  br label %.sink.split

447:                                              ; preds = %414
  %448 = getelementptr i8, ptr %443, i64 -16
  %449 = load double, ptr %448, align 8, !tbaa !10
  store double %449, ptr %443, align 8, !tbaa !10
  br label %.sink.split

.sink.split:                                      ; preds = %447, %444
  %.sink690 = phi i64 [ 8, %444 ], [ -8, %447 ]
  %.sink688 = phi i64 [ -8, %444 ], [ 8, %447 ]
  %450 = getelementptr i8, ptr %443, i64 %.sink690
  %451 = load double, ptr %450, align 8, !tbaa !13
  %452 = getelementptr i8, ptr %443, i64 %.sink688
  store double %451, ptr %452, align 8, !tbaa !13
  br label %453

453:                                              ; preds = %.sink.split, %.loopexit
  %454 = phi i64 [ %411, %.loopexit ], [ %442, %.sink.split ]
  %455 = load i64, ptr %22, align 8, !tbaa !5
  %reass.sub676 = sub i64 %454, %.1599
  %456 = add i64 %reass.sub676, 1
  %457 = call i64 @llvm.smin.i64(i64 %455, i64 %456)
  %458 = srem i64 %457, 2
  %459 = sub nsw i64 %457, %458
  store i64 %459, ptr %22, align 8, !tbaa !5
  %460 = sub nsw i64 %454, %459
  %461 = mul nsw i64 %459, 3
  %462 = add nsw i64 %461, -3
  %463 = load i64, ptr %2, align 8, !tbaa !5
  %464 = sub nsw i64 %463, %462
  %465 = add nsw i64 %461, -2
  %466 = sub i64 %464, %461
  store i64 %466, ptr %25, align 8, !tbaa !5
  %.neg = mul i64 %459, -6
  %reass.sub677 = add i64 %.neg, %463
  %467 = add i64 %reass.sub677, 3
  store i64 %467, ptr %26, align 8, !tbaa !5
  %468 = getelementptr %struct.doublecomplex, ptr %7, i64 %460
  %469 = getelementptr inbounds %struct.doublecomplex, ptr %5, i64 %464
  %470 = getelementptr inbounds %struct.doublecomplex, ptr %5, i64 %461
  %471 = mul nsw i64 %465, %32
  %gep667 = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %464
  %472 = getelementptr %struct.doublecomplex, ptr %gep667, i64 %471
  %473 = call i32 @zlaqr5_(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %30, ptr noundef nonnull %2, ptr noundef nonnull %28, ptr noundef nonnull %27, ptr noundef nonnull %22, ptr noundef %468, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef nonnull @c__3, ptr noundef %469, ptr noundef nonnull %6, ptr noundef nonnull %26, ptr noundef %470, ptr noundef nonnull %6, ptr noundef nonnull %25, ptr noundef %472, ptr noundef nonnull %6) #4
  %.pre681 = load i64, ptr %20, align 8, !tbaa !5
  br label %474

474:                                              ; preds = %453, %203, %199
  %475 = phi i64 [ %.pre681, %453 ], [ %192, %203 ], [ %192, %199 ]
  %476 = add nsw i64 %.0592671, 1
  %.inv = icmp slt i64 %475, 1
  %.1593 = select i1 %.inv, i64 %476, i64 1
  %477 = add nuw nsw i64 %.0600669, 1
  %478 = load i64, ptr %16, align 8, !tbaa !5
  %.not619.not = icmp slt i64 %.0600669, %478
  br i1 %.not619.not, label %115, label %._crit_edge674.loopexit, !llvm.loop !20

._crit_edge674.loopexit:                          ; preds = %474
  %.pre682 = load i64, ptr %27, align 8, !tbaa !5
  br label %._crit_edge674

._crit_edge674:                                   ; preds = %._crit_edge674.loopexit, %82
  %479 = phi i64 [ %.pre682, %._crit_edge674.loopexit ], [ %96, %82 ]
  store i64 %479, ptr %14, align 8, !tbaa !5
  br label %.loopexit650

.loopexit650:                                     ; preds = %115, %._crit_edge674, %40, %42
  %.0 = phi i64 [ 1, %42 ], [ 1, %40 ], [ %77, %._crit_edge674 ], [ %77, %115 ]
  %480 = uitofp nneg i64 %.0 to double
  br label %481

481:                                              ; preds = %15, %.loopexit650, %80
  %.sink692 = phi double [ %480, %.loopexit650 ], [ %81, %80 ], [ 1.000000e+00, %15 ]
  store double %.sink692, ptr %12, align 8, !tbaa !10
  %482 = getelementptr inbounds i8, ptr %12, i64 8
  store double 0.000000e+00, ptr %482, align 8, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #4
  ret i32 0
}

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

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

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

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

declare double @d_imag(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

; 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>) #3

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { nounwind }

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

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


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