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

; 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 @zlaqr4_(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 %1862

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 %1846

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 @zlaqr2_(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 %1862

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 = %1839, %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 %1842

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 %1845

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 @zlaqr2_(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 %1831

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 %1831

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 %1571

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 %1422

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 ptr, ptr %22, align 8, !tbaa !5
  %932 = load i64, ptr %65, align 8, !tbaa !9
  %933 = load i64, ptr %32, align 8, !tbaa !9
  %934 = add nsw i64 %932, %933
  %935 = getelementptr inbounds %struct.doublecomplex, ptr %931, i64 %934
  %936 = load ptr, ptr %23, align 8, !tbaa !5
  %937 = load ptr, ptr %24, align 8, !tbaa !5
  %938 = load i64, ptr %64, align 8, !tbaa !9
  %939 = getelementptr inbounds %struct.doublecomplex, ptr %937, i64 %938
  %940 = getelementptr inbounds [1 x %struct.doublecomplex], ptr %87, i64 0, i64 0
  %941 = call i32 @zlahqr_(ptr noundef @c_false, ptr noundef @c_false, ptr noundef %69, ptr noundef @c__1, ptr noundef %69, ptr noundef %935, ptr noundef %936, ptr noundef %939, ptr noundef @c__1, ptr noundef @c__1, ptr noundef %940, ptr noundef @c__1, ptr noundef %73)
  %942 = load i64, ptr %73, align 8, !tbaa !9
  %943 = load i64, ptr %64, align 8, !tbaa !9
  %944 = add nsw i64 %943, %942
  store i64 %944, ptr %64, align 8, !tbaa !9
  %945 = load i64, ptr %64, align 8, !tbaa !9
  %946 = load i64, ptr %83, align 8, !tbaa !9
  %947 = icmp sge i64 %945, %946
  br i1 %947, label %948, label %1421

948:                                              ; preds = %906
  %949 = load i64, ptr %83, align 8, !tbaa !9
  %950 = sub nsw i64 %949, 1
  %951 = load i64, ptr %83, align 8, !tbaa !9
  %952 = sub nsw i64 %951, 1
  %953 = load i64, ptr %32, align 8, !tbaa !9
  %954 = mul nsw i64 %952, %953
  %955 = add nsw i64 %950, %954
  store i64 %955, ptr %37, align 8, !tbaa !9
  %956 = load i64, ptr %83, align 8, !tbaa !9
  %957 = load i64, ptr %83, align 8, !tbaa !9
  %958 = sub nsw i64 %957, 1
  %959 = load i64, ptr %32, align 8, !tbaa !9
  %960 = mul nsw i64 %958, %959
  %961 = add nsw i64 %956, %960
  store i64 %961, ptr %38, align 8, !tbaa !9
  %962 = load i64, ptr %83, align 8, !tbaa !9
  %963 = sub nsw i64 %962, 1
  %964 = load i64, ptr %83, align 8, !tbaa !9
  %965 = load i64, ptr %32, align 8, !tbaa !9
  %966 = mul nsw i64 %964, %965
  %967 = add nsw i64 %963, %966
  store i64 %967, ptr %39, align 8, !tbaa !9
  %968 = load i64, ptr %83, align 8, !tbaa !9
  %969 = load i64, ptr %83, align 8, !tbaa !9
  %970 = load i64, ptr %32, align 8, !tbaa !9
  %971 = mul nsw i64 %969, %970
  %972 = add nsw i64 %968, %971
  store i64 %972, ptr %40, align 8, !tbaa !9
  %973 = load ptr, ptr %22, align 8, !tbaa !5
  %974 = load i64, ptr %37, align 8, !tbaa !9
  %975 = getelementptr inbounds %struct.doublecomplex, ptr %973, i64 %974
  %976 = getelementptr inbounds %struct.doublecomplex, ptr %975, i32 0, i32 0
  %977 = load double, ptr %976, align 8, !tbaa !11
  store double %977, ptr %41, align 8, !tbaa !16
  %978 = load double, ptr %41, align 8, !tbaa !16
  %979 = fcmp oge double %978, 0.000000e+00
  br i1 %979, label %980, label %982

980:                                              ; preds = %948
  %981 = load double, ptr %41, align 8, !tbaa !16
  br label %985

982:                                              ; preds = %948
  %983 = load double, ptr %41, align 8, !tbaa !16
  %984 = fneg double %983
  br label %985

985:                                              ; preds = %982, %980
  %986 = phi double [ %981, %980 ], [ %984, %982 ]
  %987 = load ptr, ptr %22, align 8, !tbaa !5
  %988 = load i64, ptr %83, align 8, !tbaa !9
  %989 = sub nsw i64 %988, 1
  %990 = load i64, ptr %83, align 8, !tbaa !9
  %991 = sub nsw i64 %990, 1
  %992 = load i64, ptr %32, align 8, !tbaa !9
  %993 = mul nsw i64 %991, %992
  %994 = add nsw i64 %989, %993
  %995 = getelementptr inbounds %struct.doublecomplex, ptr %987, i64 %994
  %996 = call double @d_imag(ptr noundef %995)
  store double %996, ptr %42, align 8, !tbaa !16
  %997 = load double, ptr %42, align 8, !tbaa !16
  %998 = fcmp oge double %997, 0.000000e+00
  br i1 %998, label %999, label %1001

999:                                              ; preds = %985
  %1000 = load double, ptr %42, align 8, !tbaa !16
  br label %1004

1001:                                             ; preds = %985
  %1002 = load double, ptr %42, align 8, !tbaa !16
  %1003 = fneg double %1002
  br label %1004

1004:                                             ; preds = %1001, %999
  %1005 = phi double [ %1000, %999 ], [ %1003, %1001 ]
  %1006 = fadd double %986, %1005
  %1007 = load ptr, ptr %22, align 8, !tbaa !5
  %1008 = load i64, ptr %38, align 8, !tbaa !9
  %1009 = getelementptr inbounds %struct.doublecomplex, ptr %1007, i64 %1008
  %1010 = getelementptr inbounds %struct.doublecomplex, ptr %1009, i32 0, i32 0
  %1011 = load double, ptr %1010, align 8, !tbaa !11
  store double %1011, ptr %43, align 8, !tbaa !16
  %1012 = load double, ptr %43, align 8, !tbaa !16
  %1013 = fcmp oge double %1012, 0.000000e+00
  br i1 %1013, label %1014, label %1016

1014:                                             ; preds = %1004
  %1015 = load double, ptr %43, align 8, !tbaa !16
  br label %1019

1016:                                             ; preds = %1004
  %1017 = load double, ptr %43, align 8, !tbaa !16
  %1018 = fneg double %1017
  br label %1019

1019:                                             ; preds = %1016, %1014
  %1020 = phi double [ %1015, %1014 ], [ %1018, %1016 ]
  %1021 = load ptr, ptr %22, align 8, !tbaa !5
  %1022 = load i64, ptr %83, align 8, !tbaa !9
  %1023 = load i64, ptr %83, align 8, !tbaa !9
  %1024 = sub nsw i64 %1023, 1
  %1025 = load i64, ptr %32, align 8, !tbaa !9
  %1026 = mul nsw i64 %1024, %1025
  %1027 = add nsw i64 %1022, %1026
  %1028 = getelementptr inbounds %struct.doublecomplex, ptr %1021, i64 %1027
  %1029 = call double @d_imag(ptr noundef %1028)
  store double %1029, ptr %44, align 8, !tbaa !16
  %1030 = load double, ptr %44, align 8, !tbaa !16
  %1031 = fcmp oge double %1030, 0.000000e+00
  br i1 %1031, label %1032, label %1034

1032:                                             ; preds = %1019
  %1033 = load double, ptr %44, align 8, !tbaa !16
  br label %1037

1034:                                             ; preds = %1019
  %1035 = load double, ptr %44, align 8, !tbaa !16
  %1036 = fneg double %1035
  br label %1037

1037:                                             ; preds = %1034, %1032
  %1038 = phi double [ %1033, %1032 ], [ %1036, %1034 ]
  %1039 = fadd double %1020, %1038
  %1040 = fadd double %1006, %1039
  %1041 = load ptr, ptr %22, align 8, !tbaa !5
  %1042 = load i64, ptr %39, align 8, !tbaa !9
  %1043 = getelementptr inbounds %struct.doublecomplex, ptr %1041, i64 %1042
  %1044 = getelementptr inbounds %struct.doublecomplex, ptr %1043, i32 0, i32 0
  %1045 = load double, ptr %1044, align 8, !tbaa !11
  store double %1045, ptr %45, align 8, !tbaa !16
  %1046 = load double, ptr %45, align 8, !tbaa !16
  %1047 = fcmp oge double %1046, 0.000000e+00
  br i1 %1047, label %1048, label %1050

1048:                                             ; preds = %1037
  %1049 = load double, ptr %45, align 8, !tbaa !16
  br label %1053

1050:                                             ; preds = %1037
  %1051 = load double, ptr %45, align 8, !tbaa !16
  %1052 = fneg double %1051
  br label %1053

1053:                                             ; preds = %1050, %1048
  %1054 = phi double [ %1049, %1048 ], [ %1052, %1050 ]
  %1055 = load ptr, ptr %22, align 8, !tbaa !5
  %1056 = load i64, ptr %83, align 8, !tbaa !9
  %1057 = sub nsw i64 %1056, 1
  %1058 = load i64, ptr %83, align 8, !tbaa !9
  %1059 = load i64, ptr %32, align 8, !tbaa !9
  %1060 = mul nsw i64 %1058, %1059
  %1061 = add nsw i64 %1057, %1060
  %1062 = getelementptr inbounds %struct.doublecomplex, ptr %1055, i64 %1061
  %1063 = call double @d_imag(ptr noundef %1062)
  store double %1063, ptr %46, align 8, !tbaa !16
  %1064 = load double, ptr %46, align 8, !tbaa !16
  %1065 = fcmp oge double %1064, 0.000000e+00
  br i1 %1065, label %1066, label %1068

1066:                                             ; preds = %1053
  %1067 = load double, ptr %46, align 8, !tbaa !16
  br label %1071

1068:                                             ; preds = %1053
  %1069 = load double, ptr %46, align 8, !tbaa !16
  %1070 = fneg double %1069
  br label %1071

1071:                                             ; preds = %1068, %1066
  %1072 = phi double [ %1067, %1066 ], [ %1070, %1068 ]
  %1073 = fadd double %1054, %1072
  %1074 = fadd double %1040, %1073
  %1075 = load ptr, ptr %22, align 8, !tbaa !5
  %1076 = load i64, ptr %40, align 8, !tbaa !9
  %1077 = getelementptr inbounds %struct.doublecomplex, ptr %1075, i64 %1076
  %1078 = getelementptr inbounds %struct.doublecomplex, ptr %1077, i32 0, i32 0
  %1079 = load double, ptr %1078, align 8, !tbaa !11
  store double %1079, ptr %47, align 8, !tbaa !16
  %1080 = load double, ptr %47, align 8, !tbaa !16
  %1081 = fcmp oge double %1080, 0.000000e+00
  br i1 %1081, label %1082, label %1084

1082:                                             ; preds = %1071
  %1083 = load double, ptr %47, align 8, !tbaa !16
  br label %1087

1084:                                             ; preds = %1071
  %1085 = load double, ptr %47, align 8, !tbaa !16
  %1086 = fneg double %1085
  br label %1087

1087:                                             ; preds = %1084, %1082
  %1088 = phi double [ %1083, %1082 ], [ %1086, %1084 ]
  %1089 = load ptr, ptr %22, align 8, !tbaa !5
  %1090 = load i64, ptr %83, align 8, !tbaa !9
  %1091 = load i64, ptr %83, align 8, !tbaa !9
  %1092 = load i64, ptr %32, align 8, !tbaa !9
  %1093 = mul nsw i64 %1091, %1092
  %1094 = add nsw i64 %1090, %1093
  %1095 = getelementptr inbounds %struct.doublecomplex, ptr %1089, i64 %1094
  %1096 = call double @d_imag(ptr noundef %1095)
  store double %1096, ptr %48, align 8, !tbaa !16
  %1097 = load double, ptr %48, align 8, !tbaa !16
  %1098 = fcmp oge double %1097, 0.000000e+00
  br i1 %1098, label %1099, label %1101

1099:                                             ; preds = %1087
  %1100 = load double, ptr %48, align 8, !tbaa !16
  br label %1104

1101:                                             ; preds = %1087
  %1102 = load double, ptr %48, align 8, !tbaa !16
  %1103 = fneg double %1102
  br label %1104

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

1421:                                             ; preds = %1104, %906
  br label %1422

1422:                                             ; preds = %1421, %898
  %1423 = load i64, ptr %83, align 8, !tbaa !9
  %1424 = load i64, ptr %64, align 8, !tbaa !9
  %1425 = sub nsw i64 %1423, %1424
  %1426 = add nsw i64 %1425, 1
  %1427 = load i64, ptr %69, align 8, !tbaa !9
  %1428 = icmp sgt i64 %1426, %1427
  br i1 %1428, label %1429, label %1570

1429:                                             ; preds = %1422
  store i64 0, ptr %97, align 8, !tbaa !9
  %1430 = load i64, ptr %64, align 8, !tbaa !9
  %1431 = add nsw i64 %1430, 1
  store i64 %1431, ptr %37, align 8, !tbaa !9
  %1432 = load i64, ptr %83, align 8, !tbaa !9
  store i64 %1432, ptr %55, align 8, !tbaa !9
  br label %1433

1433:                                             ; preds = %1565, %1429
  %1434 = load i64, ptr %55, align 8, !tbaa !9
  %1435 = load i64, ptr %37, align 8, !tbaa !9
  %1436 = icmp sge i64 %1434, %1435
  br i1 %1436, label %1437, label %1568

1437:                                             ; preds = %1433
  %1438 = load i64, ptr %97, align 8, !tbaa !9
  %1439 = icmp ne i64 %1438, 0
  br i1 %1439, label %1440, label %1441

1440:                                             ; preds = %1437
  br label %1569

1441:                                             ; preds = %1437
  store i64 1, ptr %97, align 8, !tbaa !9
  %1442 = load i64, ptr %55, align 8, !tbaa !9
  %1443 = sub nsw i64 %1442, 1
  store i64 %1443, ptr %38, align 8, !tbaa !9
  %1444 = load i64, ptr %64, align 8, !tbaa !9
  store i64 %1444, ptr %54, align 8, !tbaa !9
  br label %1445

1445:                                             ; preds = %1561, %1441
  %1446 = load i64, ptr %54, align 8, !tbaa !9
  %1447 = load i64, ptr %38, align 8, !tbaa !9
  %1448 = icmp sle i64 %1446, %1447
  br i1 %1448, label %1449, label %1564

1449:                                             ; preds = %1445
  %1450 = load i64, ptr %54, align 8, !tbaa !9
  store i64 %1450, ptr %39, align 8, !tbaa !9
  %1451 = load i64, ptr %54, align 8, !tbaa !9
  %1452 = add nsw i64 %1451, 1
  store i64 %1452, ptr %40, align 8, !tbaa !9
  %1453 = load ptr, ptr %24, align 8, !tbaa !5
  %1454 = load i64, ptr %39, align 8, !tbaa !9
  %1455 = getelementptr inbounds %struct.doublecomplex, ptr %1453, i64 %1454
  %1456 = getelementptr inbounds %struct.doublecomplex, ptr %1455, i32 0, i32 0
  %1457 = load double, ptr %1456, align 8, !tbaa !11
  store double %1457, ptr %41, align 8, !tbaa !16
  %1458 = load double, ptr %41, align 8, !tbaa !16
  %1459 = fcmp oge double %1458, 0.000000e+00
  br i1 %1459, label %1460, label %1462

1460:                                             ; preds = %1449
  %1461 = load double, ptr %41, align 8, !tbaa !16
  br label %1465

1462:                                             ; preds = %1449
  %1463 = load double, ptr %41, align 8, !tbaa !16
  %1464 = fneg double %1463
  br label %1465

1465:                                             ; preds = %1462, %1460
  %1466 = phi double [ %1461, %1460 ], [ %1464, %1462 ]
  %1467 = load ptr, ptr %24, align 8, !tbaa !5
  %1468 = load i64, ptr %54, align 8, !tbaa !9
  %1469 = getelementptr inbounds %struct.doublecomplex, ptr %1467, i64 %1468
  %1470 = call double @d_imag(ptr noundef %1469)
  store double %1470, ptr %42, align 8, !tbaa !16
  %1471 = load double, ptr %42, align 8, !tbaa !16
  %1472 = fcmp oge double %1471, 0.000000e+00
  br i1 %1472, label %1473, label %1475

1473:                                             ; preds = %1465
  %1474 = load double, ptr %42, align 8, !tbaa !16
  br label %1478

1475:                                             ; preds = %1465
  %1476 = load double, ptr %42, align 8, !tbaa !16
  %1477 = fneg double %1476
  br label %1478

1478:                                             ; preds = %1475, %1473
  %1479 = phi double [ %1474, %1473 ], [ %1477, %1475 ]
  %1480 = fadd double %1466, %1479
  %1481 = load ptr, ptr %24, align 8, !tbaa !5
  %1482 = load i64, ptr %40, align 8, !tbaa !9
  %1483 = getelementptr inbounds %struct.doublecomplex, ptr %1481, i64 %1482
  %1484 = getelementptr inbounds %struct.doublecomplex, ptr %1483, i32 0, i32 0
  %1485 = load double, ptr %1484, align 8, !tbaa !11
  store double %1485, ptr %43, align 8, !tbaa !16
  %1486 = load double, ptr %43, align 8, !tbaa !16
  %1487 = fcmp oge double %1486, 0.000000e+00
  br i1 %1487, label %1488, label %1490

1488:                                             ; preds = %1478
  %1489 = load double, ptr %43, align 8, !tbaa !16
  br label %1493

1490:                                             ; preds = %1478
  %1491 = load double, ptr %43, align 8, !tbaa !16
  %1492 = fneg double %1491
  br label %1493

1493:                                             ; preds = %1490, %1488
  %1494 = phi double [ %1489, %1488 ], [ %1492, %1490 ]
  %1495 = load ptr, ptr %24, align 8, !tbaa !5
  %1496 = load i64, ptr %54, align 8, !tbaa !9
  %1497 = add nsw i64 %1496, 1
  %1498 = getelementptr inbounds %struct.doublecomplex, ptr %1495, i64 %1497
  %1499 = call double @d_imag(ptr noundef %1498)
  store double %1499, ptr %44, align 8, !tbaa !16
  %1500 = load double, ptr %44, align 8, !tbaa !16
  %1501 = fcmp oge double %1500, 0.000000e+00
  br i1 %1501, label %1502, label %1504

1502:                                             ; preds = %1493
  %1503 = load double, ptr %44, align 8, !tbaa !16
  br label %1507

1504:                                             ; preds = %1493
  %1505 = load double, ptr %44, align 8, !tbaa !16
  %1506 = fneg double %1505
  br label %1507

1507:                                             ; preds = %1504, %1502
  %1508 = phi double [ %1503, %1502 ], [ %1506, %1504 ]
  %1509 = fadd double %1494, %1508
  %1510 = fcmp olt double %1480, %1509
  br i1 %1510, label %1511, label %1560

1511:                                             ; preds = %1507
  store i64 0, ptr %97, align 8, !tbaa !9
  %1512 = load i64, ptr %54, align 8, !tbaa !9
  store i64 %1512, ptr %39, align 8, !tbaa !9
  %1513 = load ptr, ptr %24, align 8, !tbaa !5
  %1514 = load i64, ptr %39, align 8, !tbaa !9
  %1515 = getelementptr inbounds %struct.doublecomplex, ptr %1513, i64 %1514
  %1516 = getelementptr inbounds %struct.doublecomplex, ptr %1515, i32 0, i32 0
  %1517 = load double, ptr %1516, align 8, !tbaa !11
  %1518 = getelementptr inbounds %struct.doublecomplex, ptr %85, i32 0, i32 0
  store double %1517, ptr %1518, align 8, !tbaa !11
  %1519 = load ptr, ptr %24, align 8, !tbaa !5
  %1520 = load i64, ptr %39, align 8, !tbaa !9
  %1521 = getelementptr inbounds %struct.doublecomplex, ptr %1519, i64 %1520
  %1522 = getelementptr inbounds %struct.doublecomplex, ptr %1521, i32 0, i32 1
  %1523 = load double, ptr %1522, align 8, !tbaa !14
  %1524 = getelementptr inbounds %struct.doublecomplex, ptr %85, i32 0, i32 1
  store double %1523, ptr %1524, align 8, !tbaa !14
  %1525 = load i64, ptr %54, align 8, !tbaa !9
  store i64 %1525, ptr %39, align 8, !tbaa !9
  %1526 = load i64, ptr %54, align 8, !tbaa !9
  %1527 = add nsw i64 %1526, 1
  store i64 %1527, ptr %40, align 8, !tbaa !9
  %1528 = load ptr, ptr %24, align 8, !tbaa !5
  %1529 = load i64, ptr %40, align 8, !tbaa !9
  %1530 = getelementptr inbounds %struct.doublecomplex, ptr %1528, i64 %1529
  %1531 = getelementptr inbounds %struct.doublecomplex, ptr %1530, i32 0, i32 0
  %1532 = load double, ptr %1531, align 8, !tbaa !11
  %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
  store double %1532, ptr %1536, align 8, !tbaa !11
  %1537 = load ptr, ptr %24, align 8, !tbaa !5
  %1538 = load i64, ptr %40, align 8, !tbaa !9
  %1539 = getelementptr inbounds %struct.doublecomplex, ptr %1537, i64 %1538
  %1540 = getelementptr inbounds %struct.doublecomplex, ptr %1539, i32 0, i32 1
  %1541 = load double, ptr %1540, align 8, !tbaa !14
  %1542 = load ptr, ptr %24, align 8, !tbaa !5
  %1543 = load i64, ptr %39, align 8, !tbaa !9
  %1544 = getelementptr inbounds %struct.doublecomplex, ptr %1542, i64 %1543
  %1545 = getelementptr inbounds %struct.doublecomplex, ptr %1544, i32 0, i32 1
  store double %1541, ptr %1545, align 8, !tbaa !14
  %1546 = load i64, ptr %54, align 8, !tbaa !9
  %1547 = add nsw i64 %1546, 1
  store i64 %1547, ptr %39, align 8, !tbaa !9
  %1548 = getelementptr inbounds %struct.doublecomplex, ptr %85, i32 0, i32 0
  %1549 = load double, ptr %1548, align 8, !tbaa !11
  %1550 = load ptr, ptr %24, align 8, !tbaa !5
  %1551 = load i64, ptr %39, align 8, !tbaa !9
  %1552 = getelementptr inbounds %struct.doublecomplex, ptr %1550, i64 %1551
  %1553 = getelementptr inbounds %struct.doublecomplex, ptr %1552, i32 0, i32 0
  store double %1549, ptr %1553, align 8, !tbaa !11
  %1554 = getelementptr inbounds %struct.doublecomplex, ptr %85, i32 0, i32 1
  %1555 = load double, ptr %1554, align 8, !tbaa !14
  %1556 = load ptr, ptr %24, align 8, !tbaa !5
  %1557 = load i64, ptr %39, align 8, !tbaa !9
  %1558 = getelementptr inbounds %struct.doublecomplex, ptr %1556, i64 %1557
  %1559 = getelementptr inbounds %struct.doublecomplex, ptr %1558, i32 0, i32 1
  store double %1555, ptr %1559, align 8, !tbaa !14
  br label %1560

1560:                                             ; preds = %1511, %1507
  br label %1561

1561:                                             ; preds = %1560
  %1562 = load i64, ptr %54, align 8, !tbaa !9
  %1563 = add nsw i64 %1562, 1
  store i64 %1563, ptr %54, align 8, !tbaa !9
  br label %1445, !llvm.loop !20

1564:                                             ; preds = %1445
  br label %1565

1565:                                             ; preds = %1564
  %1566 = load i64, ptr %55, align 8, !tbaa !9
  %1567 = add nsw i64 %1566, -1
  store i64 %1567, ptr %55, align 8, !tbaa !9
  br label %1433, !llvm.loop !21

1568:                                             ; preds = %1433
  br label %1569

1569:                                             ; preds = %1568, %1440
  br label %1570

1570:                                             ; preds = %1569, %1422
  br label %1571

1571:                                             ; preds = %1570, %897
  %1572 = load i64, ptr %83, align 8, !tbaa !9
  %1573 = load i64, ptr %64, align 8, !tbaa !9
  %1574 = sub nsw i64 %1572, %1573
  %1575 = add nsw i64 %1574, 1
  %1576 = icmp eq i64 %1575, 2
  br i1 %1576, label %1577, label %1741

1577:                                             ; preds = %1571
  %1578 = load i64, ptr %83, align 8, !tbaa !9
  store i64 %1578, ptr %37, align 8, !tbaa !9
  %1579 = load i64, ptr %83, align 8, !tbaa !9
  %1580 = load i64, ptr %83, align 8, !tbaa !9
  %1581 = load i64, ptr %32, align 8, !tbaa !9
  %1582 = mul nsw i64 %1580, %1581
  %1583 = add nsw i64 %1579, %1582
  store i64 %1583, ptr %38, align 8, !tbaa !9
  %1584 = load ptr, ptr %24, align 8, !tbaa !5
  %1585 = load i64, ptr %37, align 8, !tbaa !9
  %1586 = getelementptr inbounds %struct.doublecomplex, ptr %1584, i64 %1585
  %1587 = getelementptr inbounds %struct.doublecomplex, ptr %1586, i32 0, i32 0
  %1588 = load double, ptr %1587, align 8, !tbaa !11
  %1589 = load ptr, ptr %22, align 8, !tbaa !5
  %1590 = load i64, ptr %38, align 8, !tbaa !9
  %1591 = getelementptr inbounds %struct.doublecomplex, ptr %1589, i64 %1590
  %1592 = getelementptr inbounds %struct.doublecomplex, ptr %1591, i32 0, i32 0
  %1593 = load double, ptr %1592, align 8, !tbaa !11
  %1594 = fsub double %1588, %1593
  %1595 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  store double %1594, ptr %1595, align 8, !tbaa !11
  %1596 = load ptr, ptr %24, align 8, !tbaa !5
  %1597 = load i64, ptr %37, align 8, !tbaa !9
  %1598 = getelementptr inbounds %struct.doublecomplex, ptr %1596, i64 %1597
  %1599 = getelementptr inbounds %struct.doublecomplex, ptr %1598, i32 0, i32 1
  %1600 = load double, ptr %1599, align 8, !tbaa !14
  %1601 = load ptr, ptr %22, align 8, !tbaa !5
  %1602 = load i64, ptr %38, align 8, !tbaa !9
  %1603 = getelementptr inbounds %struct.doublecomplex, ptr %1601, i64 %1602
  %1604 = getelementptr inbounds %struct.doublecomplex, ptr %1603, i32 0, i32 1
  %1605 = load double, ptr %1604, align 8, !tbaa !14
  %1606 = fsub double %1600, %1605
  %1607 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  store double %1606, ptr %1607, align 8, !tbaa !14
  %1608 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %1609 = load double, ptr %1608, align 8, !tbaa !11
  %1610 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  store double %1609, ptr %1610, align 8, !tbaa !11
  %1611 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %1612 = load double, ptr %1611, align 8, !tbaa !14
  %1613 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  store double %1612, ptr %1613, align 8, !tbaa !14
  %1614 = load i64, ptr %83, align 8, !tbaa !9
  %1615 = sub nsw i64 %1614, 1
  store i64 %1615, ptr %39, align 8, !tbaa !9
  %1616 = load i64, ptr %83, align 8, !tbaa !9
  %1617 = load i64, ptr %83, align 8, !tbaa !9
  %1618 = load i64, ptr %32, align 8, !tbaa !9
  %1619 = mul nsw i64 %1617, %1618
  %1620 = add nsw i64 %1616, %1619
  store i64 %1620, ptr %40, align 8, !tbaa !9
  %1621 = load ptr, ptr %24, align 8, !tbaa !5
  %1622 = load i64, ptr %39, align 8, !tbaa !9
  %1623 = getelementptr inbounds %struct.doublecomplex, ptr %1621, i64 %1622
  %1624 = getelementptr inbounds %struct.doublecomplex, ptr %1623, i32 0, i32 0
  %1625 = load double, ptr %1624, align 8, !tbaa !11
  %1626 = load ptr, ptr %22, align 8, !tbaa !5
  %1627 = load i64, ptr %40, align 8, !tbaa !9
  %1628 = getelementptr inbounds %struct.doublecomplex, ptr %1626, i64 %1627
  %1629 = getelementptr inbounds %struct.doublecomplex, ptr %1628, i32 0, i32 0
  %1630 = load double, ptr %1629, align 8, !tbaa !11
  %1631 = fsub double %1625, %1630
  %1632 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  store double %1631, ptr %1632, align 8, !tbaa !11
  %1633 = load ptr, ptr %24, align 8, !tbaa !5
  %1634 = load i64, ptr %39, align 8, !tbaa !9
  %1635 = getelementptr inbounds %struct.doublecomplex, ptr %1633, i64 %1634
  %1636 = getelementptr inbounds %struct.doublecomplex, ptr %1635, i32 0, i32 1
  %1637 = load double, ptr %1636, align 8, !tbaa !14
  %1638 = load ptr, ptr %22, align 8, !tbaa !5
  %1639 = load i64, ptr %40, align 8, !tbaa !9
  %1640 = getelementptr inbounds %struct.doublecomplex, ptr %1638, i64 %1639
  %1641 = getelementptr inbounds %struct.doublecomplex, ptr %1640, i32 0, i32 1
  %1642 = load double, ptr %1641, align 8, !tbaa !14
  %1643 = fsub double %1637, %1642
  %1644 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  store double %1643, ptr %1644, align 8, !tbaa !14
  %1645 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %1646 = load double, ptr %1645, align 8, !tbaa !11
  %1647 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  store double %1646, ptr %1647, align 8, !tbaa !11
  %1648 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %1649 = load double, ptr %1648, align 8, !tbaa !14
  %1650 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  store double %1649, ptr %1650, align 8, !tbaa !14
  %1651 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  %1652 = load double, ptr %1651, align 8, !tbaa !11
  store double %1652, ptr %41, align 8, !tbaa !16
  %1653 = load double, ptr %41, align 8, !tbaa !16
  %1654 = fcmp oge double %1653, 0.000000e+00
  br i1 %1654, label %1655, label %1657

1655:                                             ; preds = %1577
  %1656 = load double, ptr %41, align 8, !tbaa !16
  br label %1660

1657:                                             ; preds = %1577
  %1658 = load double, ptr %41, align 8, !tbaa !16
  %1659 = fneg double %1658
  br label %1660

1660:                                             ; preds = %1657, %1655
  %1661 = phi double [ %1656, %1655 ], [ %1659, %1657 ]
  %1662 = call double @d_imag(ptr noundef %49)
  store double %1662, ptr %42, align 8, !tbaa !16
  %1663 = load double, ptr %42, align 8, !tbaa !16
  %1664 = fcmp oge double %1663, 0.000000e+00
  br i1 %1664, label %1665, label %1667

1665:                                             ; preds = %1660
  %1666 = load double, ptr %42, align 8, !tbaa !16
  br label %1670

1667:                                             ; preds = %1660
  %1668 = load double, ptr %42, align 8, !tbaa !16
  %1669 = fneg double %1668
  br label %1670

1670:                                             ; preds = %1667, %1665
  %1671 = phi double [ %1666, %1665 ], [ %1669, %1667 ]
  %1672 = fadd double %1661, %1671
  %1673 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %1674 = load double, ptr %1673, align 8, !tbaa !11
  store double %1674, ptr %43, align 8, !tbaa !16
  %1675 = load double, ptr %43, align 8, !tbaa !16
  %1676 = fcmp oge double %1675, 0.000000e+00
  br i1 %1676, label %1677, label %1679

1677:                                             ; preds = %1670
  %1678 = load double, ptr %43, align 8, !tbaa !16
  br label %1682

1679:                                             ; preds = %1670
  %1680 = load double, ptr %43, align 8, !tbaa !16
  %1681 = fneg double %1680
  br label %1682

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

1687:                                             ; preds = %1682
  %1688 = load double, ptr %44, align 8, !tbaa !16
  br label %1692

1689:                                             ; preds = %1682
  %1690 = load double, ptr %44, align 8, !tbaa !16
  %1691 = fneg double %1690
  br label %1692

1692:                                             ; preds = %1689, %1687
  %1693 = phi double [ %1688, %1687 ], [ %1691, %1689 ]
  %1694 = fadd double %1683, %1693
  %1695 = fcmp olt double %1672, %1694
  br i1 %1695, label %1696, label %1718

1696:                                             ; preds = %1692
  %1697 = load i64, ptr %83, align 8, !tbaa !9
  %1698 = sub nsw i64 %1697, 1
  store i64 %1698, ptr %37, align 8, !tbaa !9
  %1699 = load i64, ptr %83, align 8, !tbaa !9
  store i64 %1699, ptr %38, align 8, !tbaa !9
  %1700 = load ptr, ptr %24, align 8, !tbaa !5
  %1701 = load i64, ptr %38, align 8, !tbaa !9
  %1702 = getelementptr inbounds %struct.doublecomplex, ptr %1700, i64 %1701
  %1703 = getelementptr inbounds %struct.doublecomplex, ptr %1702, i32 0, i32 0
  %1704 = load double, ptr %1703, align 8, !tbaa !11
  %1705 = load ptr, ptr %24, align 8, !tbaa !5
  %1706 = load i64, ptr %37, align 8, !tbaa !9
  %1707 = getelementptr inbounds %struct.doublecomplex, ptr %1705, i64 %1706
  %1708 = getelementptr inbounds %struct.doublecomplex, ptr %1707, i32 0, i32 0
  store double %1704, ptr %1708, align 8, !tbaa !11
  %1709 = load ptr, ptr %24, align 8, !tbaa !5
  %1710 = load i64, ptr %38, align 8, !tbaa !9
  %1711 = getelementptr inbounds %struct.doublecomplex, ptr %1709, i64 %1710
  %1712 = getelementptr inbounds %struct.doublecomplex, ptr %1711, i32 0, i32 1
  %1713 = load double, ptr %1712, align 8, !tbaa !14
  %1714 = load ptr, ptr %24, align 8, !tbaa !5
  %1715 = load i64, ptr %37, align 8, !tbaa !9
  %1716 = getelementptr inbounds %struct.doublecomplex, ptr %1714, i64 %1715
  %1717 = getelementptr inbounds %struct.doublecomplex, ptr %1716, i32 0, i32 1
  store double %1713, ptr %1717, align 8, !tbaa !14
  br label %1740

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

1740:                                             ; preds = %1718, %1696
  br label %1741

1741:                                             ; preds = %1740, %1571
  %1742 = load i64, ptr %69, align 8, !tbaa !9
  store i64 %1742, ptr %37, align 8, !tbaa !9
  %1743 = load i64, ptr %83, align 8, !tbaa !9
  %1744 = load i64, ptr %64, align 8, !tbaa !9
  %1745 = sub nsw i64 %1743, %1744
  %1746 = add nsw i64 %1745, 1
  store i64 %1746, ptr %38, align 8, !tbaa !9
  %1747 = load i64, ptr %37, align 8, !tbaa !9
  %1748 = load i64, ptr %38, align 8, !tbaa !9
  %1749 = icmp sle i64 %1747, %1748
  br i1 %1749, label %1750, label %1752

1750:                                             ; preds = %1741
  %1751 = load i64, ptr %37, align 8, !tbaa !9
  br label %1754

1752:                                             ; preds = %1741
  %1753 = load i64, ptr %38, align 8, !tbaa !9
  br label %1754

1754:                                             ; preds = %1752, %1750
  %1755 = phi i64 [ %1751, %1750 ], [ %1753, %1752 ]
  store i64 %1755, ptr %69, align 8, !tbaa !9
  %1756 = load i64, ptr %69, align 8, !tbaa !9
  %1757 = srem i64 %1756, 2
  %1758 = load i64, ptr %69, align 8, !tbaa !9
  %1759 = sub nsw i64 %1758, %1757
  store i64 %1759, ptr %69, align 8, !tbaa !9
  %1760 = load i64, ptr %83, align 8, !tbaa !9
  %1761 = load i64, ptr %69, align 8, !tbaa !9
  %1762 = sub nsw i64 %1760, %1761
  %1763 = add nsw i64 %1762, 1
  store i64 %1763, ptr %64, align 8, !tbaa !9
  %1764 = load i64, ptr %69, align 8, !tbaa !9
  %1765 = mul nsw i64 %1764, 3
  %1766 = sub nsw i64 %1765, 3
  store i64 %1766, ptr %74, align 8, !tbaa !9
  %1767 = load ptr, ptr %19, align 8, !tbaa !5
  %1768 = load i64, ptr %1767, align 8, !tbaa !9
  %1769 = load i64, ptr %74, align 8, !tbaa !9
  %1770 = sub nsw i64 %1768, %1769
  %1771 = add nsw i64 %1770, 1
  store i64 %1771, ptr %66, align 8, !tbaa !9
  %1772 = load i64, ptr %74, align 8, !tbaa !9
  %1773 = add nsw i64 %1772, 1
  store i64 %1773, ptr %77, align 8, !tbaa !9
  %1774 = load ptr, ptr %19, align 8, !tbaa !5
  %1775 = load i64, ptr %1774, align 8, !tbaa !9
  %1776 = load i64, ptr %74, align 8, !tbaa !9
  %1777 = sub nsw i64 %1775, %1776
  %1778 = sub nsw i64 %1777, 3
  %1779 = load i64, ptr %74, align 8, !tbaa !9
  %1780 = add nsw i64 %1779, 1
  %1781 = sub nsw i64 %1778, %1780
  %1782 = add nsw i64 %1781, 1
  store i64 %1782, ptr %75, align 8, !tbaa !9
  %1783 = load i64, ptr %74, align 8, !tbaa !9
  %1784 = add nsw i64 %1783, 4
  store i64 %1784, ptr %80, align 8, !tbaa !9
  %1785 = load ptr, ptr %19, align 8, !tbaa !5
  %1786 = load i64, ptr %1785, align 8, !tbaa !9
  %1787 = load i64, ptr %74, align 8, !tbaa !9
  %1788 = sub nsw i64 %1786, %1787
  %1789 = load i64, ptr %80, align 8, !tbaa !9
  %1790 = sub nsw i64 %1788, %1789
  %1791 = add nsw i64 %1790, 1
  store i64 %1791, ptr %76, align 8, !tbaa !9
  %1792 = load ptr, ptr %17, align 8, !tbaa !5
  %1793 = load ptr, ptr %18, align 8, !tbaa !5
  %1794 = load ptr, ptr %19, align 8, !tbaa !5
  %1795 = load ptr, ptr %24, align 8, !tbaa !5
  %1796 = load i64, ptr %64, align 8, !tbaa !9
  %1797 = getelementptr inbounds %struct.doublecomplex, ptr %1795, i64 %1796
  %1798 = load ptr, ptr %22, align 8, !tbaa !5
  %1799 = load i64, ptr %33, align 8, !tbaa !9
  %1800 = getelementptr inbounds %struct.doublecomplex, ptr %1798, i64 %1799
  %1801 = load ptr, ptr %23, align 8, !tbaa !5
  %1802 = load ptr, ptr %25, align 8, !tbaa !5
  %1803 = load ptr, ptr %26, align 8, !tbaa !5
  %1804 = load ptr, ptr %27, align 8, !tbaa !5
  %1805 = load i64, ptr %35, align 8, !tbaa !9
  %1806 = getelementptr inbounds %struct.doublecomplex, ptr %1804, i64 %1805
  %1807 = load ptr, ptr %28, align 8, !tbaa !5
  %1808 = load ptr, ptr %29, align 8, !tbaa !5
  %1809 = getelementptr inbounds %struct.doublecomplex, ptr %1808, i64 1
  %1810 = load ptr, ptr %22, align 8, !tbaa !5
  %1811 = load i64, ptr %66, align 8, !tbaa !9
  %1812 = load i64, ptr %32, align 8, !tbaa !9
  %1813 = add nsw i64 %1811, %1812
  %1814 = getelementptr inbounds %struct.doublecomplex, ptr %1810, i64 %1813
  %1815 = load ptr, ptr %23, align 8, !tbaa !5
  %1816 = load ptr, ptr %22, align 8, !tbaa !5
  %1817 = load i64, ptr %80, align 8, !tbaa !9
  %1818 = load i64, ptr %32, align 8, !tbaa !9
  %1819 = add nsw i64 %1817, %1818
  %1820 = getelementptr inbounds %struct.doublecomplex, ptr %1816, i64 %1819
  %1821 = load ptr, ptr %23, align 8, !tbaa !5
  %1822 = load ptr, ptr %22, align 8, !tbaa !5
  %1823 = load i64, ptr %66, align 8, !tbaa !9
  %1824 = load i64, ptr %77, align 8, !tbaa !9
  %1825 = load i64, ptr %32, align 8, !tbaa !9
  %1826 = mul nsw i64 %1824, %1825
  %1827 = add nsw i64 %1823, %1826
  %1828 = getelementptr inbounds %struct.doublecomplex, ptr %1822, i64 %1827
  %1829 = load ptr, ptr %23, align 8, !tbaa !5
  %1830 = call i32 @zlaqr5_(ptr noundef %1792, ptr noundef %1793, ptr noundef %88, ptr noundef %1794, ptr noundef %86, ptr noundef %83, ptr noundef %69, ptr noundef %1797, ptr noundef %1800, ptr noundef %1801, ptr noundef %1802, ptr noundef %1803, ptr noundef %1806, ptr noundef %1807, ptr noundef %1809, ptr noundef @c__3, ptr noundef %1814, ptr noundef %1815, ptr noundef %76, ptr noundef %1820, ptr noundef %1821, ptr noundef %75, ptr noundef %1828, ptr noundef %1829)
  br label %1831

1831:                                             ; preds = %1754, %747, %728
  %1832 = load i64, ptr %61, align 8, !tbaa !9
  %1833 = icmp sgt i64 %1832, 0
  br i1 %1833, label %1834, label %1835

1834:                                             ; preds = %1831
  store i64 1, ptr %82, align 8, !tbaa !9
  br label %1838

1835:                                             ; preds = %1831
  %1836 = load i64, ptr %82, align 8, !tbaa !9
  %1837 = add nsw i64 %1836, 1
  store i64 %1837, ptr %82, align 8, !tbaa !9
  br label %1838

1838:                                             ; preds = %1835, %1834
  br label %1839

1839:                                             ; preds = %1838
  %1840 = load i64, ptr %63, align 8, !tbaa !9
  %1841 = add nsw i64 %1840, 1
  store i64 %1841, ptr %63, align 8, !tbaa !9
  br label %442, !llvm.loop !22

1842:                                             ; preds = %442
  %1843 = load i64, ptr %83, align 8, !tbaa !9
  %1844 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 %1843, ptr %1844, align 8, !tbaa !9
  br label %1845

1845:                                             ; preds = %1842, %451
  br label %1846

1846:                                             ; preds = %1845, %159
  %1847 = load i64, ptr %98, align 8, !tbaa !9
  %1848 = sitofp i64 %1847 to double
  store double %1848, ptr %41, align 8, !tbaa !16
  %1849 = load double, ptr %41, align 8, !tbaa !16
  %1850 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  store double %1849, ptr %1850, align 8, !tbaa !11
  %1851 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  store double 0.000000e+00, ptr %1851, align 8, !tbaa !14
  %1852 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  %1853 = load double, ptr %1852, align 8, !tbaa !11
  %1854 = load ptr, ptr %29, align 8, !tbaa !5
  %1855 = getelementptr inbounds %struct.doublecomplex, ptr %1854, i64 1
  %1856 = getelementptr inbounds %struct.doublecomplex, ptr %1855, i32 0, i32 0
  store double %1853, ptr %1856, align 8, !tbaa !11
  %1857 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  %1858 = load double, ptr %1857, align 8, !tbaa !14
  %1859 = load ptr, ptr %29, align 8, !tbaa !5
  %1860 = getelementptr inbounds %struct.doublecomplex, ptr %1859, i64 1
  %1861 = getelementptr inbounds %struct.doublecomplex, ptr %1860, i32 0, i32 1
  store double %1858, ptr %1861, align 8, !tbaa !14
  store i32 0, ptr %16, align 4
  store i32 1, ptr %99, align 4
  br label %1862

1862:                                             ; preds = %1846, %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
  %1863 = load i32, ptr %16, align 4
  ret i32 %1863
}

; 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 @zlaqr2_(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

; 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 @zlaqr4_(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 %475, 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
  %.not629 = icmp eq i64 %41, -1
  br i1 %.not629, label %.loopexit641, 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 %.loopexit641

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
  %.not602 = icmp eq i64 %46, 0
  %spec.select = select i1 %.not602, 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 @zlaqr2_(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 %475

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 @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
  %85 = call i64 @llvm.smax.i64(i64 %84, i64 0)
  %86 = 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
  %87 = call i64 @llvm.smax.i64(i64 %86, i64 0)
  %88 = call i64 @llvm.umin.i64(i64 %87, i64 2)
  store i64 %88, ptr %30, align 8, !tbaa !5
  %89 = load i64, ptr %2, align 8, !tbaa !5
  %90 = add nsw i64 %89, -1
  %91 = sdiv i64 %90, 3
  %92 = load i64, ptr %13, align 8, !tbaa !5
  %93 = sdiv i64 %92, 2
  %94 = call i64 @llvm.smin.i64(i64 %91, i64 %93)
  store i64 %94, ptr %23, align 8, !tbaa !5
  %95 = load i64, ptr %4, align 8, !tbaa !5
  %96 = load i64, ptr %3, align 8, !tbaa !5
  %97 = sub nsw i64 %95, %96
  %98 = icmp slt i64 %97, 10
  %99 = mul i64 %97, 30
  %100 = add i64 %99, 30
  %101 = select i1 %98, i64 300, i64 %100
  store i64 %95, ptr %27, align 8, !tbaa !5
  store i64 %101, ptr %16, align 8, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %34, i64 16
  %invariant.gep655 = getelementptr i8, ptr %34, i64 -16
  %.not610659 = icmp slt i64 %101, 1
  br i1 %.not610659, label %._crit_edge665, label %.lr.ph664

.lr.ph664:                                        ; preds = %82
  %102 = add nsw i64 %89, 6
  %103 = sdiv i64 %102, 9
  %104 = shl i64 %92, 1
  %105 = sdiv i64 %104, 3
  %106 = call i64 @llvm.smin.i64(i64 %103, i64 %105)
  %107 = srem i64 %106, 2
  %108 = sub nsw i64 %106, %107
  %109 = call i64 @llvm.smax.i64(i64 %83, i64 11)
  %110 = call i64 @llvm.smin.i64(i64 %109, i64 %94)
  %111 = call i64 @llvm.smin.i64(i64 %108, 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.ph664, %468
  %.0583662 = phi i64 [ 1, %.lr.ph664 ], [ %.1584, %468 ]
  %.0585661 = phi i64 [ undef, %.lr.ph664 ], [ %.1586, %468 ]
  %.0591660 = phi i64 [ 1, %.lr.ph664 ], [ %471, %468 ]
  %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 %.loopexit641, label %.preheader640

.preheader640:                                    ; preds = %115
  %.not611.not642 = icmp sgt i64 %116, %117
  br i1 %.not611.not642, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %.preheader640, %129
  %.0592643 = phi i64 [ %119, %129 ], [ %116, %.preheader640 ]
  %119 = add nsw i64 %.0592643, -1
  %120 = mul nsw i64 %119, %32
  %121 = getelementptr %struct.doublecomplex, ptr %34, i64 %.0592643
  %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
  %.not611.not = icmp sgt i64 %119, %117
  br i1 %.not611.not, label %.lr.ph, label %._crit_edge, !llvm.loop !14

._crit_edge:                                      ; preds = %125, %129, %.preheader640
  %.1593 = phi i64 [ %117, %.preheader640 ], [ %117, %129 ], [ %.0592643, %125 ]
  store i64 %.1593, ptr %28, align 8, !tbaa !5
  %130 = sub nsw i64 %116, %.1593
  %131 = add nsw i64 %130, 1
  %132 = call i64 @llvm.smin.i64(i64 %131, i64 %94)
  %133 = icmp slt i64 %.0583662, 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, %94
  br i1 %137, label %138, label %171

138:                                              ; preds = %._crit_edge
  %.not616 = icmp slt i64 %136, %130
  br i1 %.not616, 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 %.0585661, 0
  %.not617 = icmp slt i64 %.pre, %132
  %or.cond630 = select i1 %173, i1 %.not617, i1 false
  br i1 %or.cond630, label %179, label %174

174:                                              ; preds = %172
  %175 = add nsw i64 %.0585661, 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 ]
  %.1586 = phi i64 [ %spec.store.select, %174 ], [ -1, %171 ], [ %.0585661, %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
  %.neg632 = add i64 %181, 1
  %186 = shl i64 %180, 1
  %reass.sub = sub i64 %.neg632, %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
  %gep654 = getelementptr %struct.doublecomplex, ptr %114, i64 %180
  %191 = call i32 @zlaqr2_(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 %gep654, 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_edge670, label %199

._crit_edge670:                                   ; preds = %179
  %.pre671 = load i64, ptr %28, align 8, !tbaa !5
  %.pre675 = sub nsw i64 %194, %.pre671
  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, %85
  %.not618 = icmp sgt i64 %200, %202
  br i1 %.not618, label %468, label %203

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

206:                                              ; preds = %._crit_edge670, %203
  %.pre-phi = phi i64 [ %.pre675, %._crit_edge670 ], [ %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 %.0583662, 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
  %.not627649 = icmp slt i64 %194, %217
  br i1 %.not627649, label %.loopexit, label %.lr.ph652

.lr.ph652:                                        ; preds = %214, %.lr.ph652
  %.0587650 = phi i64 [ %242, %.lr.ph652 ], [ %194, %214 ]
  %218 = mul i64 %.0587650, %112
  %219 = add nsw i64 %.0587650, -1
  %220 = mul nsw i64 %219, %32
  %221 = getelementptr %struct.doublecomplex, ptr %34, i64 %.0587650
  %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 %.0587650
  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 %.0587650, -2
  %.not627 = icmp slt i64 %242, %217
  br i1 %.not627, label %.loopexit, label %.lr.ph652, !llvm.loop !16

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

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 = getelementptr %struct.doublecomplex, ptr %7, i64 %246
  %255 = 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 %254, ptr noundef nonnull @c__1, ptr noundef nonnull @c__1, ptr noundef nonnull %29, ptr noundef nonnull @c__1, ptr noundef nonnull %24) #4
  %256 = load i64, ptr %24, align 8, !tbaa !5
  %257 = add nsw i64 %256, %247
  %258 = load i64, ptr %27, align 8, !tbaa !5
  %.not624 = icmp slt i64 %257, %258
  br i1 %.not624, label %368, label %259

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

368:                                              ; preds = %245, %259, %243
  %369 = phi i64 [ %359, %259 ], [ %258, %245 ], [ %194, %243 ]
  %.0589 = phi i64 [ %367, %259 ], [ %257, %245 ], [ %197, %243 ]
  %370 = sub nsw i64 %369, %.0589
  %371 = load i64, ptr %22, align 8, !tbaa !5
  %.not625 = icmp slt i64 %370, %371
  %372 = icmp sle i64 %369, %.0589
  %or.cond666 = or i1 %.not625, %372
  br i1 %or.cond666, label %.loopexit, label %.preheader

.preheader:                                       ; preds = %368, %401
  %.2594648 = phi i64 [ %402, %401 ], [ %369, %368 ]
  br label %373

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

397:                                              ; preds = %373
  %398 = load <2 x double>, ptr %383, align 8, !tbaa !17
  %399 = load <2 x double>, ptr %375, align 8, !tbaa !17
  store <2 x double> %398, ptr %375, align 8, !tbaa !17
  store <2 x double> %399, ptr %383, align 8, !tbaa !17
  br label %400

400:                                              ; preds = %373, %397
  %.2 = phi i64 [ 0, %397 ], [ %.1647, %373 ]
  %.not626.not = icmp slt i64 %374, %.2594648
  br i1 %.not626.not, label %373, label %401, !llvm.loop !18

401:                                              ; preds = %400
  %402 = add nsw i64 %.2594648, -1
  %403 = icmp sle i64 %402, %.0589
  %404 = icmp ne i64 %.2, 0
  %or.cond = select i1 %403, i1 true, i1 %404
  br i1 %or.cond, label %.loopexit, label %.preheader, !llvm.loop !19

.loopexit:                                        ; preds = %401, %.lr.ph652, %214, %368
  %.1590 = phi i64 [ %.0589, %368 ], [ %216, %214 ], [ %216, %.lr.ph652 ], [ %.0589, %401 ]
  %405 = load i64, ptr %27, align 8, !tbaa !5
  %406 = sub nsw i64 %405, %.1590
  %407 = icmp eq i64 %406, 1
  br i1 %407, label %408, label %447

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

438:                                              ; preds = %408
  %439 = load double, ptr %437, align 8, !tbaa !10
  %440 = getelementptr i8, ptr %437, i64 -16
  store double %439, ptr %440, align 8, !tbaa !10
  br label %.sink.split

441:                                              ; preds = %408
  %442 = getelementptr i8, ptr %437, i64 -16
  %443 = load double, ptr %442, align 8, !tbaa !10
  store double %443, ptr %437, align 8, !tbaa !10
  br label %.sink.split

.sink.split:                                      ; preds = %441, %438
  %.sink681 = phi i64 [ 8, %438 ], [ -8, %441 ]
  %.sink679 = phi i64 [ -8, %438 ], [ 8, %441 ]
  %444 = getelementptr i8, ptr %437, i64 %.sink681
  %445 = load double, ptr %444, align 8, !tbaa !13
  %446 = getelementptr i8, ptr %437, i64 %.sink679
  store double %445, ptr %446, align 8, !tbaa !13
  br label %447

447:                                              ; preds = %.sink.split, %.loopexit
  %448 = phi i64 [ %405, %.loopexit ], [ %436, %.sink.split ]
  %449 = load i64, ptr %22, align 8, !tbaa !5
  %reass.sub667 = sub i64 %448, %.1590
  %450 = add i64 %reass.sub667, 1
  %451 = call i64 @llvm.smin.i64(i64 %449, i64 %450)
  %452 = srem i64 %451, 2
  %453 = sub nsw i64 %451, %452
  store i64 %453, ptr %22, align 8, !tbaa !5
  %454 = sub nsw i64 %448, %453
  %455 = mul nsw i64 %453, 3
  %456 = add nsw i64 %455, -3
  %457 = load i64, ptr %2, align 8, !tbaa !5
  %458 = sub nsw i64 %457, %456
  %459 = add nsw i64 %455, -2
  %460 = sub i64 %458, %455
  store i64 %460, ptr %25, align 8, !tbaa !5
  %.neg = mul i64 %453, -6
  %reass.sub668 = add i64 %.neg, %457
  %461 = add i64 %reass.sub668, 3
  store i64 %461, ptr %26, align 8, !tbaa !5
  %462 = getelementptr %struct.doublecomplex, ptr %7, i64 %454
  %463 = getelementptr inbounds %struct.doublecomplex, ptr %5, i64 %458
  %464 = getelementptr inbounds %struct.doublecomplex, ptr %5, i64 %455
  %465 = mul nsw i64 %459, %32
  %gep658 = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %458
  %466 = getelementptr %struct.doublecomplex, ptr %gep658, i64 %465
  %467 = 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 %462, 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 %463, ptr noundef nonnull %6, ptr noundef nonnull %26, ptr noundef %464, ptr noundef nonnull %6, ptr noundef nonnull %25, ptr noundef %466, ptr noundef nonnull %6) #4
  %.pre672 = load i64, ptr %20, align 8, !tbaa !5
  br label %468

468:                                              ; preds = %447, %203, %199
  %469 = phi i64 [ %.pre672, %447 ], [ %192, %203 ], [ %192, %199 ]
  %470 = add nsw i64 %.0583662, 1
  %.inv = icmp slt i64 %469, 1
  %.1584 = select i1 %.inv, i64 %470, i64 1
  %471 = add nuw nsw i64 %.0591660, 1
  %472 = load i64, ptr %16, align 8, !tbaa !5
  %.not610.not = icmp slt i64 %.0591660, %472
  br i1 %.not610.not, label %115, label %._crit_edge665.loopexit, !llvm.loop !20

._crit_edge665.loopexit:                          ; preds = %468
  %.pre673 = load i64, ptr %27, align 8, !tbaa !5
  br label %._crit_edge665

._crit_edge665:                                   ; preds = %._crit_edge665.loopexit, %82
  %473 = phi i64 [ %.pre673, %._crit_edge665.loopexit ], [ %95, %82 ]
  store i64 %473, ptr %14, align 8, !tbaa !5
  br label %.loopexit641

.loopexit641:                                     ; preds = %115, %._crit_edge665, %40, %42
  %.0 = phi i64 [ 1, %42 ], [ 1, %40 ], [ %77, %._crit_edge665 ], [ %77, %115 ]
  %474 = uitofp nneg i64 %.0 to double
  br label %475

475:                                              ; preds = %15, %.loopexit641, %80
  %.sink683 = phi double [ %474, %.loopexit641 ], [ %81, %80 ], [ 1.000000e+00, %15 ]
  store double %.sink683, ptr %12, align 8, !tbaa !10
  %476 = getelementptr inbounds i8, ptr %12, i64 8
  store double 0.000000e+00, ptr %476, 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 @zlaqr2_(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 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