; LLVM IR from OpenMathLib/OpenBLAS :: lapack-netlib/SRC (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 i32, align 4
@.str = external hidden unnamed_addr constant [7 x i8], align 1
@c__15 = external hidden global i32, align 4
@c_n1 = external hidden global i32, align 4
@c__12 = external hidden global i32, align 4
@c__14 = external hidden global i32, align 4
@c__16 = external hidden global i32, align 4
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c_false = external hidden global i32, align 4
@c__1 = external hidden global i32, align 4
@c__3 = external hidden global i32, align 4

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

128:                                              ; preds = %15
  %129 = load ptr, ptr %28, align 8, !tbaa !5
  %130 = getelementptr inbounds %struct.doublecomplex, ptr %129, i64 1
  %131 = getelementptr inbounds %struct.doublecomplex, ptr %130, i32 0, i32 0
  store double 1.000000e+00, ptr %131, align 8, !tbaa !11
  %132 = load ptr, ptr %28, align 8, !tbaa !5
  %133 = getelementptr inbounds %struct.doublecomplex, ptr %132, i64 1
  %134 = getelementptr inbounds %struct.doublecomplex, ptr %133, i32 0, i32 1
  store double 0.000000e+00, ptr %134, align 8, !tbaa !14
  store i32 1, ptr %98, align 4
  br label %1982

135:                                              ; preds = %15
  %136 = load ptr, ptr %18, align 8, !tbaa !5
  %137 = load i32, ptr %136, align 4, !tbaa !9
  %138 = icmp sle i32 %137, 15
  br i1 %138, label %139, label %165

139:                                              ; preds = %135
  store i32 1, ptr %87, align 4, !tbaa !9
  %140 = load ptr, ptr %29, align 8, !tbaa !5
  %141 = load i32, ptr %140, align 4, !tbaa !9
  %142 = icmp ne i32 %141, -1
  br i1 %142, label %143, label %164

143:                                              ; preds = %139
  %144 = load ptr, ptr %16, align 8, !tbaa !5
  %145 = load ptr, ptr %17, align 8, !tbaa !5
  %146 = load ptr, ptr %18, align 8, !tbaa !5
  %147 = load ptr, ptr %19, align 8, !tbaa !5
  %148 = load ptr, ptr %20, align 8, !tbaa !5
  %149 = load ptr, ptr %21, align 8, !tbaa !5
  %150 = load i32, ptr %32, align 4, !tbaa !9
  %151 = sext i32 %150 to i64
  %152 = getelementptr inbounds %struct.doublecomplex, ptr %149, i64 %151
  %153 = load ptr, ptr %22, align 8, !tbaa !5
  %154 = load ptr, ptr %23, align 8, !tbaa !5
  %155 = getelementptr inbounds %struct.doublecomplex, ptr %154, i64 1
  %156 = load ptr, ptr %24, align 8, !tbaa !5
  %157 = load ptr, ptr %25, align 8, !tbaa !5
  %158 = load ptr, ptr %26, align 8, !tbaa !5
  %159 = load i32, ptr %34, align 4, !tbaa !9
  %160 = sext i32 %159 to i64
  %161 = getelementptr inbounds %struct.doublecomplex, ptr %158, i64 %160
  %162 = load ptr, ptr %27, align 8, !tbaa !5
  %163 = load ptr, ptr %30, align 8, !tbaa !5
  call void @zlahqr_(ptr noundef %144, ptr noundef %145, ptr noundef %146, ptr noundef %147, ptr noundef %148, ptr noundef %152, ptr noundef %153, ptr noundef %155, ptr noundef %156, ptr noundef %157, ptr noundef %161, ptr noundef %162, ptr noundef %163)
  br label %164

164:                                              ; preds = %143, %139
  br label %1966

165:                                              ; preds = %135
  %166 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 0, ptr %166, align 4, !tbaa !9
  %167 = load ptr, ptr %16, align 8, !tbaa !5
  %168 = load i32, ptr %167, align 4, !tbaa !9
  %169 = icmp ne i32 %168, 0
  br i1 %169, label %170, label %172

170:                                              ; preds = %165
  %171 = getelementptr inbounds [2 x i8], ptr %83, i64 0, i64 0
  store i8 83, ptr %171, align 1, !tbaa !15
  br label %174

172:                                              ; preds = %165
  %173 = getelementptr inbounds [2 x i8], ptr %83, i64 0, i64 0
  store i8 69, ptr %173, align 1, !tbaa !15
  br label %174

174:                                              ; preds = %172, %170
  %175 = load ptr, ptr %17, align 8, !tbaa !5
  %176 = load i32, ptr %175, align 4, !tbaa !9
  %177 = icmp ne i32 %176, 0
  br i1 %177, label %178, label %180

178:                                              ; preds = %174
  %179 = getelementptr inbounds [2 x i8], ptr %83, i64 0, i64 1
  store i8 86, ptr %179, align 1, !tbaa !15
  br label %182

180:                                              ; preds = %174
  %181 = getelementptr inbounds [2 x i8], ptr %83, i64 0, i64 1
  store i8 78, ptr %181, align 1, !tbaa !15
  br label %182

182:                                              ; preds = %180, %178
  %183 = getelementptr inbounds [2 x i8], ptr %83, i64 0, i64 0
  %184 = load ptr, ptr %18, align 8, !tbaa !5
  %185 = load ptr, ptr %19, align 8, !tbaa !5
  %186 = load ptr, ptr %20, align 8, !tbaa !5
  %187 = load ptr, ptr %29, align 8, !tbaa !5
  %188 = call i32 @ilaenv_(ptr noundef @c__13, ptr noundef @.str, ptr noundef %183, ptr noundef %184, ptr noundef %185, ptr noundef %186, ptr noundef %187, i32 noundef 6, i32 noundef 2)
  store i32 %188, ptr %96, align 4, !tbaa !9
  %189 = load i32, ptr %96, align 4, !tbaa !9
  %190 = icmp sge i32 2, %189
  br i1 %190, label %191, label %192

191:                                              ; preds = %182
  br label %194

192:                                              ; preds = %182
  %193 = load i32, ptr %96, align 4, !tbaa !9
  br label %194

194:                                              ; preds = %192, %191
  %195 = phi i32 [ 2, %191 ], [ %193, %192 ]
  store i32 %195, ptr %96, align 4, !tbaa !9
  %196 = load ptr, ptr %20, align 8, !tbaa !5
  %197 = load i32, ptr %196, align 4, !tbaa !9
  %198 = load ptr, ptr %19, align 8, !tbaa !5
  %199 = load i32, ptr %198, align 4, !tbaa !9
  %200 = sub nsw i32 %197, %199
  %201 = add nsw i32 %200, 1
  store i32 %201, ptr %35, align 4, !tbaa !9
  %202 = load ptr, ptr %18, align 8, !tbaa !5
  %203 = load i32, ptr %202, align 4, !tbaa !9
  %204 = sub nsw i32 %203, 1
  %205 = sdiv i32 %204, 3
  store i32 %205, ptr %36, align 4, !tbaa !9
  %206 = load i32, ptr %35, align 4, !tbaa !9
  %207 = load i32, ptr %36, align 4, !tbaa !9
  %208 = icmp sle i32 %206, %207
  br i1 %208, label %209, label %211

209:                                              ; preds = %194
  %210 = load i32, ptr %35, align 4, !tbaa !9
  br label %213

211:                                              ; preds = %194
  %212 = load i32, ptr %36, align 4, !tbaa !9
  br label %213

213:                                              ; preds = %211, %209
  %214 = phi i32 [ %210, %209 ], [ %212, %211 ]
  store i32 %214, ptr %35, align 4, !tbaa !9
  %215 = load i32, ptr %35, align 4, !tbaa !9
  %216 = load i32, ptr %96, align 4, !tbaa !9
  %217 = icmp sle i32 %215, %216
  br i1 %217, label %218, label %220

218:                                              ; preds = %213
  %219 = load i32, ptr %35, align 4, !tbaa !9
  br label %222

220:                                              ; preds = %213
  %221 = load i32, ptr %96, align 4, !tbaa !9
  br label %222

222:                                              ; preds = %220, %218
  %223 = phi i32 [ %219, %218 ], [ %221, %220 ]
  store i32 %223, ptr %96, align 4, !tbaa !9
  %224 = getelementptr inbounds [2 x i8], ptr %83, i64 0, i64 0
  %225 = load ptr, ptr %18, align 8, !tbaa !5
  %226 = load ptr, ptr %19, align 8, !tbaa !5
  %227 = load ptr, ptr %20, align 8, !tbaa !5
  %228 = load ptr, ptr %29, align 8, !tbaa !5
  %229 = call i32 @ilaenv_(ptr noundef @c__15, ptr noundef @.str, ptr noundef %224, ptr noundef %225, ptr noundef %226, ptr noundef %227, ptr noundef %228, i32 noundef 6, i32 noundef 2)
  store i32 %229, ptr %95, align 4, !tbaa !9
  %230 = load i32, ptr %95, align 4, !tbaa !9
  store i32 %230, ptr %35, align 4, !tbaa !9
  %231 = load ptr, ptr %18, align 8, !tbaa !5
  %232 = load i32, ptr %231, align 4, !tbaa !9
  %233 = sub nsw i32 %232, 3
  %234 = sdiv i32 %233, 6
  store i32 %234, ptr %36, align 4, !tbaa !9
  %235 = load i32, ptr %35, align 4, !tbaa !9
  %236 = load i32, ptr %36, align 4, !tbaa !9
  %237 = icmp sle i32 %235, %236
  br i1 %237, label %238, label %240

238:                                              ; preds = %222
  %239 = load i32, ptr %35, align 4, !tbaa !9
  br label %242

240:                                              ; preds = %222
  %241 = load i32, ptr %36, align 4, !tbaa !9
  br label %242

242:                                              ; preds = %240, %238
  %243 = phi i32 [ %239, %238 ], [ %241, %240 ]
  store i32 %243, ptr %35, align 4, !tbaa !9
  %244 = load ptr, ptr %20, align 8, !tbaa !5
  %245 = load i32, ptr %244, align 4, !tbaa !9
  %246 = load ptr, ptr %19, align 8, !tbaa !5
  %247 = load i32, ptr %246, align 4, !tbaa !9
  %248 = sub nsw i32 %245, %247
  store i32 %248, ptr %36, align 4, !tbaa !9
  %249 = load i32, ptr %35, align 4, !tbaa !9
  %250 = load i32, ptr %36, align 4, !tbaa !9
  %251 = icmp sle i32 %249, %250
  br i1 %251, label %252, label %254

252:                                              ; preds = %242
  %253 = load i32, ptr %35, align 4, !tbaa !9
  br label %256

254:                                              ; preds = %242
  %255 = load i32, ptr %36, align 4, !tbaa !9
  br label %256

256:                                              ; preds = %254, %252
  %257 = phi i32 [ %253, %252 ], [ %255, %254 ]
  store i32 %257, ptr %95, align 4, !tbaa !9
  store i32 2, ptr %35, align 4, !tbaa !9
  %258 = load i32, ptr %95, align 4, !tbaa !9
  %259 = load i32, ptr %95, align 4, !tbaa !9
  %260 = srem i32 %259, 2
  %261 = sub nsw i32 %258, %260
  store i32 %261, ptr %36, align 4, !tbaa !9
  %262 = load i32, ptr %35, align 4, !tbaa !9
  %263 = load i32, ptr %36, align 4, !tbaa !9
  %264 = icmp sge i32 %262, %263
  br i1 %264, label %265, label %267

265:                                              ; preds = %256
  %266 = load i32, ptr %35, align 4, !tbaa !9
  br label %269

267:                                              ; preds = %256
  %268 = load i32, ptr %36, align 4, !tbaa !9
  br label %269

269:                                              ; preds = %267, %265
  %270 = phi i32 [ %266, %265 ], [ %268, %267 ]
  store i32 %270, ptr %95, align 4, !tbaa !9
  %271 = load i32, ptr %96, align 4, !tbaa !9
  %272 = add nsw i32 %271, 1
  store i32 %272, ptr %35, align 4, !tbaa !9
  %273 = load ptr, ptr %16, align 8, !tbaa !5
  %274 = load ptr, ptr %17, align 8, !tbaa !5
  %275 = load ptr, ptr %18, align 8, !tbaa !5
  %276 = load ptr, ptr %19, align 8, !tbaa !5
  %277 = load ptr, ptr %20, align 8, !tbaa !5
  %278 = load ptr, ptr %21, align 8, !tbaa !5
  %279 = load i32, ptr %32, align 4, !tbaa !9
  %280 = sext i32 %279 to i64
  %281 = getelementptr inbounds %struct.doublecomplex, ptr %278, i64 %280
  %282 = load ptr, ptr %22, align 8, !tbaa !5
  %283 = load ptr, ptr %24, align 8, !tbaa !5
  %284 = load ptr, ptr %25, align 8, !tbaa !5
  %285 = load ptr, ptr %26, align 8, !tbaa !5
  %286 = load i32, ptr %34, align 4, !tbaa !9
  %287 = sext i32 %286 to i64
  %288 = getelementptr inbounds %struct.doublecomplex, ptr %285, i64 %287
  %289 = load ptr, ptr %27, align 8, !tbaa !5
  %290 = load ptr, ptr %23, align 8, !tbaa !5
  %291 = getelementptr inbounds %struct.doublecomplex, ptr %290, i64 1
  %292 = load ptr, ptr %21, align 8, !tbaa !5
  %293 = load i32, ptr %32, align 4, !tbaa !9
  %294 = sext i32 %293 to i64
  %295 = getelementptr inbounds %struct.doublecomplex, ptr %292, i64 %294
  %296 = load ptr, ptr %22, align 8, !tbaa !5
  %297 = load ptr, ptr %18, align 8, !tbaa !5
  %298 = load ptr, ptr %21, align 8, !tbaa !5
  %299 = load i32, ptr %32, align 4, !tbaa !9
  %300 = sext i32 %299 to i64
  %301 = getelementptr inbounds %struct.doublecomplex, ptr %298, i64 %300
  %302 = load ptr, ptr %22, align 8, !tbaa !5
  %303 = load ptr, ptr %18, align 8, !tbaa !5
  %304 = load ptr, ptr %21, align 8, !tbaa !5
  %305 = load i32, ptr %32, align 4, !tbaa !9
  %306 = sext i32 %305 to i64
  %307 = getelementptr inbounds %struct.doublecomplex, ptr %304, i64 %306
  %308 = load ptr, ptr %22, align 8, !tbaa !5
  %309 = load ptr, ptr %28, align 8, !tbaa !5
  %310 = getelementptr inbounds %struct.doublecomplex, ptr %309, i64 1
  call void @zlaqr2_(ptr noundef %273, ptr noundef %274, ptr noundef %275, ptr noundef %276, ptr noundef %277, ptr noundef %35, ptr noundef %281, ptr noundef %282, ptr noundef %283, ptr noundef %284, ptr noundef %288, ptr noundef %289, ptr noundef %80, ptr noundef %72, ptr noundef %291, ptr noundef %295, ptr noundef %296, ptr noundef %297, ptr noundef %301, ptr noundef %302, ptr noundef %303, ptr noundef %307, ptr noundef %308, ptr noundef %310, ptr noundef @c_n1)
  %311 = load i32, ptr %95, align 4, !tbaa !9
  %312 = mul nsw i32 %311, 3
  %313 = sdiv i32 %312, 2
  store i32 %313, ptr %35, align 4, !tbaa !9
  %314 = load ptr, ptr %28, align 8, !tbaa !5
  %315 = getelementptr inbounds %struct.doublecomplex, ptr %314, i64 1
  %316 = getelementptr inbounds %struct.doublecomplex, ptr %315, i32 0, i32 0
  %317 = load double, ptr %316, align 8, !tbaa !11
  %318 = fptosi double %317 to i32
  store i32 %318, ptr %36, align 4, !tbaa !9
  %319 = load i32, ptr %35, align 4, !tbaa !9
  %320 = load i32, ptr %36, align 4, !tbaa !9
  %321 = icmp sge i32 %319, %320
  br i1 %321, label %322, label %324

322:                                              ; preds = %269
  %323 = load i32, ptr %35, align 4, !tbaa !9
  br label %326

324:                                              ; preds = %269
  %325 = load i32, ptr %36, align 4, !tbaa !9
  br label %326

326:                                              ; preds = %324, %322
  %327 = phi i32 [ %323, %322 ], [ %325, %324 ]
  store i32 %327, ptr %87, align 4, !tbaa !9
  %328 = load ptr, ptr %29, align 8, !tbaa !5
  %329 = load i32, ptr %328, align 4, !tbaa !9
  %330 = icmp eq i32 %329, -1
  br i1 %330, label %331, label %347

331:                                              ; preds = %326
  %332 = load i32, ptr %87, align 4, !tbaa !9
  %333 = sitofp i32 %332 to double
  store double %333, ptr %40, align 8, !tbaa !16
  %334 = load double, ptr %40, align 8, !tbaa !16
  %335 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  store double %334, ptr %335, align 8, !tbaa !11
  %336 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  store double 0.000000e+00, ptr %336, align 8, !tbaa !14
  %337 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  %338 = load double, ptr %337, align 8, !tbaa !11
  %339 = load ptr, ptr %28, align 8, !tbaa !5
  %340 = getelementptr inbounds %struct.doublecomplex, ptr %339, i64 1
  %341 = getelementptr inbounds %struct.doublecomplex, ptr %340, i32 0, i32 0
  store double %338, ptr %341, align 8, !tbaa !11
  %342 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  %343 = load double, ptr %342, align 8, !tbaa !14
  %344 = load ptr, ptr %28, align 8, !tbaa !5
  %345 = getelementptr inbounds %struct.doublecomplex, ptr %344, i64 1
  %346 = getelementptr inbounds %struct.doublecomplex, ptr %345, i32 0, i32 1
  store double %343, ptr %346, align 8, !tbaa !14
  store i32 1, ptr %98, align 4
  br label %1982

347:                                              ; preds = %326
  %348 = getelementptr inbounds [2 x i8], ptr %83, i64 0, i64 0
  %349 = load ptr, ptr %18, align 8, !tbaa !5
  %350 = load ptr, ptr %19, align 8, !tbaa !5
  %351 = load ptr, ptr %20, align 8, !tbaa !5
  %352 = load ptr, ptr %29, align 8, !tbaa !5
  %353 = call i32 @ilaenv_(ptr noundef @c__12, ptr noundef @.str, ptr noundef %348, ptr noundef %349, ptr noundef %350, ptr noundef %351, ptr noundef %352, i32 noundef 6, i32 noundef 2)
  store i32 %353, ptr %56, align 4, !tbaa !9
  %354 = load i32, ptr %56, align 4, !tbaa !9
  %355 = icmp sge i32 15, %354
  br i1 %355, label %356, label %357

356:                                              ; preds = %347
  br label %359

357:                                              ; preds = %347
  %358 = load i32, ptr %56, align 4, !tbaa !9
  br label %359

359:                                              ; preds = %357, %356
  %360 = phi i32 [ 15, %356 ], [ %358, %357 ]
  store i32 %360, ptr %56, align 4, !tbaa !9
  %361 = getelementptr inbounds [2 x i8], ptr %83, i64 0, i64 0
  %362 = load ptr, ptr %18, align 8, !tbaa !5
  %363 = load ptr, ptr %19, align 8, !tbaa !5
  %364 = load ptr, ptr %20, align 8, !tbaa !5
  %365 = load ptr, ptr %29, align 8, !tbaa !5
  %366 = call i32 @ilaenv_(ptr noundef @c__14, ptr noundef @.str, ptr noundef %361, ptr noundef %362, ptr noundef %363, ptr noundef %364, ptr noundef %365, i32 noundef 6, i32 noundef 2)
  store i32 %366, ptr %74, align 4, !tbaa !9
  %367 = load i32, ptr %74, align 4, !tbaa !9
  %368 = icmp sge i32 0, %367
  br i1 %368, label %369, label %370

369:                                              ; preds = %359
  br label %372

370:                                              ; preds = %359
  %371 = load i32, ptr %74, align 4, !tbaa !9
  br label %372

372:                                              ; preds = %370, %369
  %373 = phi i32 [ 0, %369 ], [ %371, %370 ]
  store i32 %373, ptr %74, align 4, !tbaa !9
  %374 = getelementptr inbounds [2 x i8], ptr %83, i64 0, i64 0
  %375 = load ptr, ptr %18, align 8, !tbaa !5
  %376 = load ptr, ptr %19, align 8, !tbaa !5
  %377 = load ptr, ptr %20, align 8, !tbaa !5
  %378 = load ptr, ptr %29, align 8, !tbaa !5
  %379 = call i32 @ilaenv_(ptr noundef @c__16, ptr noundef @.str, ptr noundef %374, ptr noundef %375, ptr noundef %376, ptr noundef %377, ptr noundef %378, i32 noundef 6, i32 noundef 2)
  store i32 %379, ptr %60, align 4, !tbaa !9
  %380 = load i32, ptr %60, align 4, !tbaa !9
  %381 = icmp sge i32 0, %380
  br i1 %381, label %382, label %383

382:                                              ; preds = %372
  br label %385

383:                                              ; preds = %372
  %384 = load i32, ptr %60, align 4, !tbaa !9
  br label %385

385:                                              ; preds = %383, %382
  %386 = phi i32 [ 0, %382 ], [ %384, %383 ]
  store i32 %386, ptr %60, align 4, !tbaa !9
  %387 = load i32, ptr %60, align 4, !tbaa !9
  %388 = icmp sle i32 2, %387
  br i1 %388, label %389, label %390

389:                                              ; preds = %385
  br label %392

390:                                              ; preds = %385
  %391 = load i32, ptr %60, align 4, !tbaa !9
  br label %392

392:                                              ; preds = %390, %389
  %393 = phi i32 [ 2, %389 ], [ %391, %390 ]
  store i32 %393, ptr %60, align 4, !tbaa !9
  %394 = load ptr, ptr %18, align 8, !tbaa !5
  %395 = load i32, ptr %394, align 4, !tbaa !9
  %396 = sub nsw i32 %395, 1
  %397 = sdiv i32 %396, 3
  store i32 %397, ptr %35, align 4, !tbaa !9
  %398 = load ptr, ptr %29, align 8, !tbaa !5
  %399 = load i32, ptr %398, align 4, !tbaa !9
  %400 = sdiv i32 %399, 2
  store i32 %400, ptr %36, align 4, !tbaa !9
  %401 = load i32, ptr %35, align 4, !tbaa !9
  %402 = load i32, ptr %36, align 4, !tbaa !9
  %403 = icmp sle i32 %401, %402
  br i1 %403, label %404, label %406

404:                                              ; preds = %392
  %405 = load i32, ptr %35, align 4, !tbaa !9
  br label %408

406:                                              ; preds = %392
  %407 = load i32, ptr %36, align 4, !tbaa !9
  br label %408

408:                                              ; preds = %406, %404
  %409 = phi i32 [ %405, %404 ], [ %407, %406 ]
  store i32 %409, ptr %66, align 4, !tbaa !9
  %410 = load i32, ptr %66, align 4, !tbaa !9
  store i32 %410, ptr %82, align 4, !tbaa !9
  %411 = load ptr, ptr %18, align 8, !tbaa !5
  %412 = load i32, ptr %411, align 4, !tbaa !9
  %413 = sub nsw i32 %412, 3
  %414 = sdiv i32 %413, 6
  store i32 %414, ptr %35, align 4, !tbaa !9
  %415 = load ptr, ptr %29, align 8, !tbaa !5
  %416 = load i32, ptr %415, align 4, !tbaa !9
  %417 = shl i32 %416, 1
  %418 = sdiv i32 %417, 3
  store i32 %418, ptr %36, align 4, !tbaa !9
  %419 = load i32, ptr %35, align 4, !tbaa !9
  %420 = load i32, ptr %36, align 4, !tbaa !9
  %421 = icmp sle i32 %419, %420
  br i1 %421, label %422, label %424

422:                                              ; preds = %408
  %423 = load i32, ptr %35, align 4, !tbaa !9
  br label %426

424:                                              ; preds = %408
  %425 = load i32, ptr %36, align 4, !tbaa !9
  br label %426

426:                                              ; preds = %424, %422
  %427 = phi i32 [ %423, %422 ], [ %425, %424 ]
  store i32 %427, ptr %65, align 4, !tbaa !9
  %428 = load i32, ptr %65, align 4, !tbaa !9
  %429 = srem i32 %428, 2
  %430 = load i32, ptr %65, align 4, !tbaa !9
  %431 = sub nsw i32 %430, %429
  store i32 %431, ptr %65, align 4, !tbaa !9
  store i32 1, ptr %54, align 4, !tbaa !9
  store i32 10, ptr %35, align 4, !tbaa !9
  %432 = load ptr, ptr %20, align 8, !tbaa !5
  %433 = load i32, ptr %432, align 4, !tbaa !9
  %434 = load ptr, ptr %19, align 8, !tbaa !5
  %435 = load i32, ptr %434, align 4, !tbaa !9
  %436 = sub nsw i32 %433, %435
  %437 = add nsw i32 %436, 1
  store i32 %437, ptr %36, align 4, !tbaa !9
  %438 = load i32, ptr %35, align 4, !tbaa !9
  %439 = load i32, ptr %36, align 4, !tbaa !9
  %440 = icmp sge i32 %438, %439
  br i1 %440, label %441, label %443

441:                                              ; preds = %426
  %442 = load i32, ptr %35, align 4, !tbaa !9
  br label %445

443:                                              ; preds = %426
  %444 = load i32, ptr %36, align 4, !tbaa !9
  br label %445

445:                                              ; preds = %443, %441
  %446 = phi i32 [ %442, %441 ], [ %444, %443 ]
  %447 = mul nsw i32 30, %446
  store i32 %447, ptr %64, align 4, !tbaa !9
  %448 = load ptr, ptr %20, align 8, !tbaa !5
  %449 = load i32, ptr %448, align 4, !tbaa !9
  store i32 %449, ptr %55, align 4, !tbaa !9
  %450 = load i32, ptr %64, align 4, !tbaa !9
  store i32 %450, ptr %35, align 4, !tbaa !9
  store i32 1, ptr %75, align 4, !tbaa !9
  br label %451

451:                                              ; preds = %1959, %445
  %452 = load i32, ptr %75, align 4, !tbaa !9
  %453 = load i32, ptr %35, align 4, !tbaa !9
  %454 = icmp sle i32 %452, %453
  br i1 %454, label %455, label %1962

455:                                              ; preds = %451
  %456 = load i32, ptr %55, align 4, !tbaa !9
  %457 = load ptr, ptr %19, align 8, !tbaa !5
  %458 = load i32, ptr %457, align 4, !tbaa !9
  %459 = icmp slt i32 %456, %458
  br i1 %459, label %460, label %461

460:                                              ; preds = %455
  br label %1965

461:                                              ; preds = %455
  %462 = load ptr, ptr %19, align 8, !tbaa !5
  %463 = load i32, ptr %462, align 4, !tbaa !9
  %464 = add nsw i32 %463, 1
  store i32 %464, ptr %36, align 4, !tbaa !9
  %465 = load i32, ptr %55, align 4, !tbaa !9
  store i32 %465, ptr %62, align 4, !tbaa !9
  br label %466

466:                                              ; preds = %494, %461
  %467 = load i32, ptr %62, align 4, !tbaa !9
  %468 = load i32, ptr %36, align 4, !tbaa !9
  %469 = icmp sge i32 %467, %468
  br i1 %469, label %470, label %497

470:                                              ; preds = %466
  %471 = load i32, ptr %62, align 4, !tbaa !9
  %472 = load i32, ptr %62, align 4, !tbaa !9
  %473 = sub nsw i32 %472, 1
  %474 = load i32, ptr %31, align 4, !tbaa !9
  %475 = mul nsw i32 %473, %474
  %476 = add nsw i32 %471, %475
  store i32 %476, ptr %37, align 4, !tbaa !9
  %477 = load ptr, ptr %21, align 8, !tbaa !5
  %478 = load i32, ptr %37, align 4, !tbaa !9
  %479 = sext i32 %478 to i64
  %480 = getelementptr inbounds %struct.doublecomplex, ptr %477, i64 %479
  %481 = getelementptr inbounds %struct.doublecomplex, ptr %480, i32 0, i32 0
  %482 = load double, ptr %481, align 8, !tbaa !11
  %483 = fcmp oeq double %482, 0.000000e+00
  br i1 %483, label %484, label %493

484:                                              ; preds = %470
  %485 = load ptr, ptr %21, align 8, !tbaa !5
  %486 = load i32, ptr %37, align 4, !tbaa !9
  %487 = sext i32 %486 to i64
  %488 = getelementptr inbounds %struct.doublecomplex, ptr %485, i64 %487
  %489 = getelementptr inbounds %struct.doublecomplex, ptr %488, i32 0, i32 1
  %490 = load double, ptr %489, align 8, !tbaa !14
  %491 = fcmp oeq double %490, 0.000000e+00
  br i1 %491, label %492, label %493

492:                                              ; preds = %484
  br label %500

493:                                              ; preds = %484, %470
  br label %494

494:                                              ; preds = %493
  %495 = load i32, ptr %62, align 4, !tbaa !9
  %496 = add nsw i32 %495, -1
  store i32 %496, ptr %62, align 4, !tbaa !9
  br label %466, !llvm.loop !17

497:                                              ; preds = %466
  %498 = load ptr, ptr %19, align 8, !tbaa !5
  %499 = load i32, ptr %498, align 4, !tbaa !9
  store i32 %499, ptr %62, align 4, !tbaa !9
  br label %500

500:                                              ; preds = %497, %492
  %501 = load i32, ptr %62, align 4, !tbaa !9
  store i32 %501, ptr %58, align 4, !tbaa !9
  %502 = load i32, ptr %55, align 4, !tbaa !9
  %503 = load i32, ptr %58, align 4, !tbaa !9
  %504 = sub nsw i32 %502, %503
  %505 = add nsw i32 %504, 1
  store i32 %505, ptr %73, align 4, !tbaa !9
  %506 = load i32, ptr %73, align 4, !tbaa !9
  %507 = load i32, ptr %66, align 4, !tbaa !9
  %508 = icmp sle i32 %506, %507
  br i1 %508, label %509, label %511

509:                                              ; preds = %500
  %510 = load i32, ptr %73, align 4, !tbaa !9
  br label %513

511:                                              ; preds = %500
  %512 = load i32, ptr %66, align 4, !tbaa !9
  br label %513

513:                                              ; preds = %511, %509
  %514 = phi i32 [ %510, %509 ], [ %512, %511 ]
  store i32 %514, ptr %85, align 4, !tbaa !9
  %515 = load i32, ptr %54, align 4, !tbaa !9
  %516 = icmp slt i32 %515, 5
  br i1 %516, label %517, label %527

517:                                              ; preds = %513
  %518 = load i32, ptr %85, align 4, !tbaa !9
  %519 = load i32, ptr %96, align 4, !tbaa !9
  %520 = icmp sle i32 %518, %519
  br i1 %520, label %521, label %523

521:                                              ; preds = %517
  %522 = load i32, ptr %85, align 4, !tbaa !9
  br label %525

523:                                              ; preds = %517
  %524 = load i32, ptr %96, align 4, !tbaa !9
  br label %525

525:                                              ; preds = %523, %521
  %526 = phi i32 [ %522, %521 ], [ %524, %523 ]
  store i32 %526, ptr %82, align 4, !tbaa !9
  br label %540

527:                                              ; preds = %513
  %528 = load i32, ptr %85, align 4, !tbaa !9
  store i32 %528, ptr %36, align 4, !tbaa !9
  %529 = load i32, ptr %82, align 4, !tbaa !9
  %530 = shl i32 %529, 1
  store i32 %530, ptr %37, align 4, !tbaa !9
  %531 = load i32, ptr %36, align 4, !tbaa !9
  %532 = load i32, ptr %37, align 4, !tbaa !9
  %533 = icmp sle i32 %531, %532
  br i1 %533, label %534, label %536

534:                                              ; preds = %527
  %535 = load i32, ptr %36, align 4, !tbaa !9
  br label %538

536:                                              ; preds = %527
  %537 = load i32, ptr %37, align 4, !tbaa !9
  br label %538

538:                                              ; preds = %536, %534
  %539 = phi i32 [ %535, %534 ], [ %537, %536 ]
  store i32 %539, ptr %82, align 4, !tbaa !9
  br label %540

540:                                              ; preds = %538, %525
  %541 = load i32, ptr %82, align 4, !tbaa !9
  %542 = load i32, ptr %66, align 4, !tbaa !9
  %543 = icmp slt i32 %541, %542
  br i1 %543, label %544, label %650

544:                                              ; preds = %540
  %545 = load i32, ptr %82, align 4, !tbaa !9
  %546 = load i32, ptr %73, align 4, !tbaa !9
  %547 = sub nsw i32 %546, 1
  %548 = icmp sge i32 %545, %547
  br i1 %548, label %549, label %551

549:                                              ; preds = %544
  %550 = load i32, ptr %73, align 4, !tbaa !9
  store i32 %550, ptr %82, align 4, !tbaa !9
  br label %649

551:                                              ; preds = %544
  %552 = load i32, ptr %55, align 4, !tbaa !9
  %553 = load i32, ptr %82, align 4, !tbaa !9
  %554 = sub nsw i32 %552, %553
  %555 = add nsw i32 %554, 1
  store i32 %555, ptr %67, align 4, !tbaa !9
  %556 = load i32, ptr %67, align 4, !tbaa !9
  %557 = load i32, ptr %67, align 4, !tbaa !9
  %558 = sub nsw i32 %557, 1
  %559 = load i32, ptr %31, align 4, !tbaa !9
  %560 = mul nsw i32 %558, %559
  %561 = add nsw i32 %556, %560
  store i32 %561, ptr %36, align 4, !tbaa !9
  %562 = load i32, ptr %67, align 4, !tbaa !9
  %563 = sub nsw i32 %562, 1
  %564 = load i32, ptr %67, align 4, !tbaa !9
  %565 = sub nsw i32 %564, 2
  %566 = load i32, ptr %31, align 4, !tbaa !9
  %567 = mul nsw i32 %565, %566
  %568 = add nsw i32 %563, %567
  store i32 %568, ptr %37, align 4, !tbaa !9
  %569 = load ptr, ptr %21, align 8, !tbaa !5
  %570 = load i32, ptr %36, align 4, !tbaa !9
  %571 = sext i32 %570 to i64
  %572 = getelementptr inbounds %struct.doublecomplex, ptr %569, i64 %571
  %573 = getelementptr inbounds %struct.doublecomplex, ptr %572, i32 0, i32 0
  %574 = load double, ptr %573, align 8, !tbaa !11
  store double %574, ptr %40, align 8, !tbaa !16
  %575 = load double, ptr %40, align 8, !tbaa !16
  %576 = fcmp oge double %575, 0.000000e+00
  br i1 %576, label %577, label %579

577:                                              ; preds = %551
  %578 = load double, ptr %40, align 8, !tbaa !16
  br label %582

579:                                              ; preds = %551
  %580 = load double, ptr %40, align 8, !tbaa !16
  %581 = fneg double %580
  br label %582

582:                                              ; preds = %579, %577
  %583 = phi double [ %578, %577 ], [ %581, %579 ]
  %584 = load ptr, ptr %21, align 8, !tbaa !5
  %585 = load i32, ptr %67, align 4, !tbaa !9
  %586 = load i32, ptr %67, align 4, !tbaa !9
  %587 = sub nsw i32 %586, 1
  %588 = load i32, ptr %31, align 4, !tbaa !9
  %589 = mul nsw i32 %587, %588
  %590 = add nsw i32 %585, %589
  %591 = sext i32 %590 to i64
  %592 = getelementptr inbounds %struct.doublecomplex, ptr %584, i64 %591
  %593 = call { double, double } @Cd(ptr noundef %592)
  %594 = extractvalue { double, double } %593, 0
  %595 = extractvalue { double, double } %593, 1
  store double %595, ptr %41, align 8, !tbaa !16
  %596 = load double, ptr %41, align 8, !tbaa !16
  %597 = fcmp oge double %596, 0.000000e+00
  br i1 %597, label %598, label %600

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

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

603:                                              ; preds = %600, %598
  %604 = phi double [ %599, %598 ], [ %602, %600 ]
  %605 = fadd double %583, %604
  %606 = load ptr, ptr %21, align 8, !tbaa !5
  %607 = load i32, ptr %37, align 4, !tbaa !9
  %608 = sext i32 %607 to i64
  %609 = getelementptr inbounds %struct.doublecomplex, ptr %606, i64 %608
  %610 = getelementptr inbounds %struct.doublecomplex, ptr %609, i32 0, i32 0
  %611 = load double, ptr %610, align 8, !tbaa !11
  store double %611, ptr %42, align 8, !tbaa !16
  %612 = load double, ptr %42, align 8, !tbaa !16
  %613 = fcmp oge double %612, 0.000000e+00
  br i1 %613, label %614, label %616

614:                                              ; preds = %603
  %615 = load double, ptr %42, align 8, !tbaa !16
  br label %619

616:                                              ; preds = %603
  %617 = load double, ptr %42, align 8, !tbaa !16
  %618 = fneg double %617
  br label %619

619:                                              ; preds = %616, %614
  %620 = phi double [ %615, %614 ], [ %618, %616 ]
  %621 = load ptr, ptr %21, align 8, !tbaa !5
  %622 = load i32, ptr %67, align 4, !tbaa !9
  %623 = sub nsw i32 %622, 1
  %624 = load i32, ptr %67, align 4, !tbaa !9
  %625 = sub nsw i32 %624, 2
  %626 = load i32, ptr %31, align 4, !tbaa !9
  %627 = mul nsw i32 %625, %626
  %628 = add nsw i32 %623, %627
  %629 = sext i32 %628 to i64
  %630 = getelementptr inbounds %struct.doublecomplex, ptr %621, i64 %629
  %631 = call { double, double } @Cd(ptr noundef %630)
  %632 = extractvalue { double, double } %631, 0
  %633 = extractvalue { double, double } %631, 1
  store double %633, ptr %43, align 8, !tbaa !16
  %634 = load double, ptr %43, align 8, !tbaa !16
  %635 = fcmp oge double %634, 0.000000e+00
  br i1 %635, label %636, label %638

636:                                              ; preds = %619
  %637 = load double, ptr %43, align 8, !tbaa !16
  br label %641

638:                                              ; preds = %619
  %639 = load double, ptr %43, align 8, !tbaa !16
  %640 = fneg double %639
  br label %641

641:                                              ; preds = %638, %636
  %642 = phi double [ %637, %636 ], [ %640, %638 ]
  %643 = fadd double %620, %642
  %644 = fcmp ogt double %605, %643
  br i1 %644, label %645, label %648

645:                                              ; preds = %641
  %646 = load i32, ptr %82, align 4, !tbaa !9
  %647 = add nsw i32 %646, 1
  store i32 %647, ptr %82, align 4, !tbaa !9
  br label %648

648:                                              ; preds = %645, %641
  br label %649

649:                                              ; preds = %648, %549
  br label %650

650:                                              ; preds = %649, %540
  %651 = load i32, ptr %54, align 4, !tbaa !9
  %652 = icmp slt i32 %651, 5
  br i1 %652, label %653, label %654

653:                                              ; preds = %650
  store i32 -1, ptr %53, align 4, !tbaa !9
  br label %674

654:                                              ; preds = %650
  %655 = load i32, ptr %53, align 4, !tbaa !9
  %656 = icmp sge i32 %655, 0
  br i1 %656, label %661, label %657

657:                                              ; preds = %654
  %658 = load i32, ptr %82, align 4, !tbaa !9
  %659 = load i32, ptr %85, align 4, !tbaa !9
  %660 = icmp sge i32 %658, %659
  br i1 %660, label %661, label %673

661:                                              ; preds = %657, %654
  %662 = load i32, ptr %53, align 4, !tbaa !9
  %663 = add nsw i32 %662, 1
  store i32 %663, ptr %53, align 4, !tbaa !9
  %664 = load i32, ptr %82, align 4, !tbaa !9
  %665 = load i32, ptr %53, align 4, !tbaa !9
  %666 = sub nsw i32 %664, %665
  %667 = icmp slt i32 %666, 2
  br i1 %667, label %668, label %669

668:                                              ; preds = %661
  store i32 0, ptr %53, align 4, !tbaa !9
  br label %669

669:                                              ; preds = %668, %661
  %670 = load i32, ptr %53, align 4, !tbaa !9
  %671 = load i32, ptr %82, align 4, !tbaa !9
  %672 = sub nsw i32 %671, %670
  store i32 %672, ptr %82, align 4, !tbaa !9
  br label %673

673:                                              ; preds = %669, %657
  br label %674

674:                                              ; preds = %673, %653
  %675 = load ptr, ptr %18, align 8, !tbaa !5
  %676 = load i32, ptr %675, align 4, !tbaa !9
  %677 = load i32, ptr %82, align 4, !tbaa !9
  %678 = sub nsw i32 %676, %677
  %679 = add nsw i32 %678, 1
  store i32 %679, ptr %79, align 4, !tbaa !9
  %680 = load i32, ptr %82, align 4, !tbaa !9
  %681 = add nsw i32 %680, 1
  store i32 %681, ptr %77, align 4, !tbaa !9
  %682 = load ptr, ptr %18, align 8, !tbaa !5
  %683 = load i32, ptr %682, align 4, !tbaa !9
  %684 = load i32, ptr %82, align 4, !tbaa !9
  %685 = sub nsw i32 %683, %684
  %686 = sub nsw i32 %685, 1
  %687 = load i32, ptr %77, align 4, !tbaa !9
  %688 = sub nsw i32 %686, %687
  %689 = add nsw i32 %688, 1
  store i32 %689, ptr %92, align 4, !tbaa !9
  %690 = load i32, ptr %82, align 4, !tbaa !9
  %691 = add nsw i32 %690, 2
  store i32 %691, ptr %97, align 4, !tbaa !9
  %692 = load ptr, ptr %18, align 8, !tbaa !5
  %693 = load i32, ptr %692, align 4, !tbaa !9
  %694 = load i32, ptr %82, align 4, !tbaa !9
  %695 = sub nsw i32 %693, %694
  %696 = load i32, ptr %97, align 4, !tbaa !9
  %697 = sub nsw i32 %695, %696
  %698 = add nsw i32 %697, 1
  store i32 %698, ptr %93, align 4, !tbaa !9
  %699 = load ptr, ptr %16, align 8, !tbaa !5
  %700 = load ptr, ptr %17, align 8, !tbaa !5
  %701 = load ptr, ptr %18, align 8, !tbaa !5
  %702 = load ptr, ptr %21, align 8, !tbaa !5
  %703 = load i32, ptr %32, align 4, !tbaa !9
  %704 = sext i32 %703 to i64
  %705 = getelementptr inbounds %struct.doublecomplex, ptr %702, i64 %704
  %706 = load ptr, ptr %22, align 8, !tbaa !5
  %707 = load ptr, ptr %24, align 8, !tbaa !5
  %708 = load ptr, ptr %25, align 8, !tbaa !5
  %709 = load ptr, ptr %26, align 8, !tbaa !5
  %710 = load i32, ptr %34, align 4, !tbaa !9
  %711 = sext i32 %710 to i64
  %712 = getelementptr inbounds %struct.doublecomplex, ptr %709, i64 %711
  %713 = load ptr, ptr %27, align 8, !tbaa !5
  %714 = load ptr, ptr %23, align 8, !tbaa !5
  %715 = getelementptr inbounds %struct.doublecomplex, ptr %714, i64 1
  %716 = load ptr, ptr %21, align 8, !tbaa !5
  %717 = load i32, ptr %79, align 4, !tbaa !9
  %718 = load i32, ptr %31, align 4, !tbaa !9
  %719 = add nsw i32 %717, %718
  %720 = sext i32 %719 to i64
  %721 = getelementptr inbounds %struct.doublecomplex, ptr %716, i64 %720
  %722 = load ptr, ptr %22, align 8, !tbaa !5
  %723 = load ptr, ptr %21, align 8, !tbaa !5
  %724 = load i32, ptr %79, align 4, !tbaa !9
  %725 = load i32, ptr %77, align 4, !tbaa !9
  %726 = load i32, ptr %31, align 4, !tbaa !9
  %727 = mul nsw i32 %725, %726
  %728 = add nsw i32 %724, %727
  %729 = sext i32 %728 to i64
  %730 = getelementptr inbounds %struct.doublecomplex, ptr %723, i64 %729
  %731 = load ptr, ptr %22, align 8, !tbaa !5
  %732 = load ptr, ptr %21, align 8, !tbaa !5
  %733 = load i32, ptr %97, align 4, !tbaa !9
  %734 = load i32, ptr %31, align 4, !tbaa !9
  %735 = add nsw i32 %733, %734
  %736 = sext i32 %735 to i64
  %737 = getelementptr inbounds %struct.doublecomplex, ptr %732, i64 %736
  %738 = load ptr, ptr %22, align 8, !tbaa !5
  %739 = load ptr, ptr %28, align 8, !tbaa !5
  %740 = getelementptr inbounds %struct.doublecomplex, ptr %739, i64 1
  %741 = load ptr, ptr %29, align 8, !tbaa !5
  call void @zlaqr2_(ptr noundef %699, ptr noundef %700, ptr noundef %701, ptr noundef %58, ptr noundef %55, ptr noundef %82, ptr noundef %705, ptr noundef %706, ptr noundef %707, ptr noundef %708, ptr noundef %712, ptr noundef %713, ptr noundef %80, ptr noundef %72, ptr noundef %715, ptr noundef %721, ptr noundef %722, ptr noundef %92, ptr noundef %730, ptr noundef %731, ptr noundef %93, ptr noundef %737, ptr noundef %738, ptr noundef %740, ptr noundef %741)
  %742 = load i32, ptr %72, align 4, !tbaa !9
  %743 = load i32, ptr %55, align 4, !tbaa !9
  %744 = sub nsw i32 %743, %742
  store i32 %744, ptr %55, align 4, !tbaa !9
  %745 = load i32, ptr %55, align 4, !tbaa !9
  %746 = load i32, ptr %80, align 4, !tbaa !9
  %747 = sub nsw i32 %745, %746
  %748 = add nsw i32 %747, 1
  store i32 %748, ptr %76, align 4, !tbaa !9
  %749 = load i32, ptr %72, align 4, !tbaa !9
  %750 = icmp eq i32 %749, 0
  br i1 %750, label %773, label %751

751:                                              ; preds = %674
  %752 = load i32, ptr %72, align 4, !tbaa !9
  %753 = mul nsw i32 %752, 100
  %754 = load i32, ptr %82, align 4, !tbaa !9
  %755 = load i32, ptr %74, align 4, !tbaa !9
  %756 = mul nsw i32 %754, %755
  %757 = icmp sle i32 %753, %756
  br i1 %757, label %758, label %1951

758:                                              ; preds = %751
  %759 = load i32, ptr %55, align 4, !tbaa !9
  %760 = load i32, ptr %58, align 4, !tbaa !9
  %761 = sub nsw i32 %759, %760
  %762 = add nsw i32 %761, 1
  %763 = load i32, ptr %56, align 4, !tbaa !9
  %764 = load i32, ptr %66, align 4, !tbaa !9
  %765 = icmp sle i32 %763, %764
  br i1 %765, label %766, label %768

766:                                              ; preds = %758
  %767 = load i32, ptr %56, align 4, !tbaa !9
  br label %770

768:                                              ; preds = %758
  %769 = load i32, ptr %66, align 4, !tbaa !9
  br label %770

770:                                              ; preds = %768, %766
  %771 = phi i32 [ %767, %766 ], [ %769, %768 ]
  %772 = icmp sgt i32 %762, %771
  br i1 %772, label %773, label %1951

773:                                              ; preds = %770, %674
  store i32 2, ptr %38, align 4, !tbaa !9
  %774 = load i32, ptr %55, align 4, !tbaa !9
  %775 = load i32, ptr %58, align 4, !tbaa !9
  %776 = sub nsw i32 %774, %775
  store i32 %776, ptr %39, align 4, !tbaa !9
  %777 = load i32, ptr %65, align 4, !tbaa !9
  %778 = load i32, ptr %95, align 4, !tbaa !9
  %779 = icmp sle i32 %777, %778
  br i1 %779, label %780, label %782

780:                                              ; preds = %773
  %781 = load i32, ptr %65, align 4, !tbaa !9
  br label %784

782:                                              ; preds = %773
  %783 = load i32, ptr %95, align 4, !tbaa !9
  br label %784

784:                                              ; preds = %782, %780
  %785 = phi i32 [ %781, %780 ], [ %783, %782 ]
  store i32 %785, ptr %36, align 4, !tbaa !9
  %786 = load i32, ptr %38, align 4, !tbaa !9
  %787 = load i32, ptr %39, align 4, !tbaa !9
  %788 = icmp sge i32 %786, %787
  br i1 %788, label %789, label %791

789:                                              ; preds = %784
  %790 = load i32, ptr %38, align 4, !tbaa !9
  br label %793

791:                                              ; preds = %784
  %792 = load i32, ptr %39, align 4, !tbaa !9
  br label %793

793:                                              ; preds = %791, %789
  %794 = phi i32 [ %790, %789 ], [ %792, %791 ]
  store i32 %794, ptr %37, align 4, !tbaa !9
  %795 = load i32, ptr %36, align 4, !tbaa !9
  %796 = load i32, ptr %37, align 4, !tbaa !9
  %797 = icmp sle i32 %795, %796
  br i1 %797, label %798, label %800

798:                                              ; preds = %793
  %799 = load i32, ptr %36, align 4, !tbaa !9
  br label %802

800:                                              ; preds = %793
  %801 = load i32, ptr %37, align 4, !tbaa !9
  br label %802

802:                                              ; preds = %800, %798
  %803 = phi i32 [ %799, %798 ], [ %801, %800 ]
  store i32 %803, ptr %81, align 4, !tbaa !9
  %804 = load i32, ptr %81, align 4, !tbaa !9
  %805 = srem i32 %804, 2
  %806 = load i32, ptr %81, align 4, !tbaa !9
  %807 = sub nsw i32 %806, %805
  store i32 %807, ptr %81, align 4, !tbaa !9
  %808 = load i32, ptr %54, align 4, !tbaa !9
  %809 = srem i32 %808, 6
  %810 = icmp eq i32 %809, 0
  br i1 %810, label %811, label %933

811:                                              ; preds = %802
  %812 = load i32, ptr %55, align 4, !tbaa !9
  %813 = load i32, ptr %81, align 4, !tbaa !9
  %814 = sub nsw i32 %812, %813
  %815 = add nsw i32 %814, 1
  store i32 %815, ptr %76, align 4, !tbaa !9
  %816 = load i32, ptr %76, align 4, !tbaa !9
  %817 = add nsw i32 %816, 1
  store i32 %817, ptr %36, align 4, !tbaa !9
  %818 = load i32, ptr %55, align 4, !tbaa !9
  store i32 %818, ptr %61, align 4, !tbaa !9
  br label %819

819:                                              ; preds = %929, %811
  %820 = load i32, ptr %61, align 4, !tbaa !9
  %821 = load i32, ptr %36, align 4, !tbaa !9
  %822 = icmp sge i32 %820, %821
  br i1 %822, label %823, label %932

823:                                              ; preds = %819
  %824 = load i32, ptr %61, align 4, !tbaa !9
  store i32 %824, ptr %37, align 4, !tbaa !9
  %825 = load i32, ptr %61, align 4, !tbaa !9
  %826 = load i32, ptr %61, align 4, !tbaa !9
  %827 = load i32, ptr %31, align 4, !tbaa !9
  %828 = mul nsw i32 %826, %827
  %829 = add nsw i32 %825, %828
  store i32 %829, ptr %38, align 4, !tbaa !9
  %830 = load i32, ptr %61, align 4, !tbaa !9
  %831 = load i32, ptr %61, align 4, !tbaa !9
  %832 = sub nsw i32 %831, 1
  %833 = load i32, ptr %31, align 4, !tbaa !9
  %834 = mul nsw i32 %832, %833
  %835 = add nsw i32 %830, %834
  store i32 %835, ptr %39, align 4, !tbaa !9
  %836 = load ptr, ptr %21, align 8, !tbaa !5
  %837 = load i32, ptr %39, align 4, !tbaa !9
  %838 = sext i32 %837 to i64
  %839 = getelementptr inbounds %struct.doublecomplex, ptr %836, i64 %838
  %840 = getelementptr inbounds %struct.doublecomplex, ptr %839, i32 0, i32 0
  %841 = load double, ptr %840, align 8, !tbaa !11
  store double %841, ptr %40, align 8, !tbaa !16
  %842 = load double, ptr %40, align 8, !tbaa !16
  %843 = fcmp oge double %842, 0.000000e+00
  br i1 %843, label %844, label %846

844:                                              ; preds = %823
  %845 = load double, ptr %40, align 8, !tbaa !16
  br label %849

846:                                              ; preds = %823
  %847 = load double, ptr %40, align 8, !tbaa !16
  %848 = fneg double %847
  br label %849

849:                                              ; preds = %846, %844
  %850 = phi double [ %845, %844 ], [ %848, %846 ]
  %851 = load ptr, ptr %21, align 8, !tbaa !5
  %852 = load i32, ptr %61, align 4, !tbaa !9
  %853 = load i32, ptr %61, align 4, !tbaa !9
  %854 = sub nsw i32 %853, 1
  %855 = load i32, ptr %31, align 4, !tbaa !9
  %856 = mul nsw i32 %854, %855
  %857 = add nsw i32 %852, %856
  %858 = sext i32 %857 to i64
  %859 = getelementptr inbounds %struct.doublecomplex, ptr %851, i64 %858
  %860 = call { double, double } @Cd(ptr noundef %859)
  %861 = extractvalue { double, double } %860, 0
  %862 = extractvalue { double, double } %860, 1
  store double %862, ptr %41, align 8, !tbaa !16
  %863 = load double, ptr %41, align 8, !tbaa !16
  %864 = fcmp oge double %863, 0.000000e+00
  br i1 %864, label %865, label %867

865:                                              ; preds = %849
  %866 = load double, ptr %41, align 8, !tbaa !16
  br label %870

867:                                              ; preds = %849
  %868 = load double, ptr %41, align 8, !tbaa !16
  %869 = fneg double %868
  br label %870

870:                                              ; preds = %867, %865
  %871 = phi double [ %866, %865 ], [ %869, %867 ]
  %872 = fadd double %850, %871
  %873 = fmul double %872, 7.500000e-01
  store double %873, ptr %42, align 8, !tbaa !16
  %874 = load ptr, ptr %21, align 8, !tbaa !5
  %875 = load i32, ptr %38, align 4, !tbaa !9
  %876 = sext i32 %875 to i64
  %877 = getelementptr inbounds %struct.doublecomplex, ptr %874, i64 %876
  %878 = getelementptr inbounds %struct.doublecomplex, ptr %877, i32 0, i32 0
  %879 = load double, ptr %878, align 8, !tbaa !11
  %880 = load double, ptr %42, align 8, !tbaa !16
  %881 = fadd double %879, %880
  %882 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  store double %881, ptr %882, align 8, !tbaa !11
  %883 = load ptr, ptr %21, align 8, !tbaa !5
  %884 = load i32, ptr %38, align 4, !tbaa !9
  %885 = sext i32 %884 to i64
  %886 = getelementptr inbounds %struct.doublecomplex, ptr %883, i64 %885
  %887 = getelementptr inbounds %struct.doublecomplex, ptr %886, i32 0, i32 1
  %888 = load double, ptr %887, align 8, !tbaa !14
  %889 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  store double %888, ptr %889, align 8, !tbaa !14
  %890 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  %891 = load double, ptr %890, align 8, !tbaa !11
  %892 = load ptr, ptr %23, align 8, !tbaa !5
  %893 = load i32, ptr %37, align 4, !tbaa !9
  %894 = sext i32 %893 to i64
  %895 = getelementptr inbounds %struct.doublecomplex, ptr %892, i64 %894
  %896 = getelementptr inbounds %struct.doublecomplex, ptr %895, i32 0, i32 0
  store double %891, ptr %896, align 8, !tbaa !11
  %897 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  %898 = load double, ptr %897, align 8, !tbaa !14
  %899 = load ptr, ptr %23, align 8, !tbaa !5
  %900 = load i32, ptr %37, align 4, !tbaa !9
  %901 = sext i32 %900 to i64
  %902 = getelementptr inbounds %struct.doublecomplex, ptr %899, i64 %901
  %903 = getelementptr inbounds %struct.doublecomplex, ptr %902, i32 0, i32 1
  store double %898, ptr %903, align 8, !tbaa !14
  %904 = load i32, ptr %61, align 4, !tbaa !9
  %905 = sub nsw i32 %904, 1
  store i32 %905, ptr %37, align 4, !tbaa !9
  %906 = load i32, ptr %61, align 4, !tbaa !9
  store i32 %906, ptr %38, align 4, !tbaa !9
  %907 = load ptr, ptr %23, align 8, !tbaa !5
  %908 = load i32, ptr %38, align 4, !tbaa !9
  %909 = sext i32 %908 to i64
  %910 = getelementptr inbounds %struct.doublecomplex, ptr %907, i64 %909
  %911 = getelementptr inbounds %struct.doublecomplex, ptr %910, i32 0, i32 0
  %912 = load double, ptr %911, align 8, !tbaa !11
  %913 = load ptr, ptr %23, align 8, !tbaa !5
  %914 = load i32, ptr %37, align 4, !tbaa !9
  %915 = sext i32 %914 to i64
  %916 = getelementptr inbounds %struct.doublecomplex, ptr %913, i64 %915
  %917 = getelementptr inbounds %struct.doublecomplex, ptr %916, i32 0, i32 0
  store double %912, ptr %917, align 8, !tbaa !11
  %918 = load ptr, ptr %23, align 8, !tbaa !5
  %919 = load i32, ptr %38, align 4, !tbaa !9
  %920 = sext i32 %919 to i64
  %921 = getelementptr inbounds %struct.doublecomplex, ptr %918, i64 %920
  %922 = getelementptr inbounds %struct.doublecomplex, ptr %921, i32 0, i32 1
  %923 = load double, ptr %922, align 8, !tbaa !14
  %924 = load ptr, ptr %23, align 8, !tbaa !5
  %925 = load i32, ptr %37, align 4, !tbaa !9
  %926 = sext i32 %925 to i64
  %927 = getelementptr inbounds %struct.doublecomplex, ptr %924, i64 %926
  %928 = getelementptr inbounds %struct.doublecomplex, ptr %927, i32 0, i32 1
  store double %923, ptr %928, align 8, !tbaa !14
  br label %929

929:                                              ; preds = %870
  %930 = load i32, ptr %61, align 4, !tbaa !9
  %931 = add nsw i32 %930, -2
  store i32 %931, ptr %61, align 4, !tbaa !9
  br label %819, !llvm.loop !19

932:                                              ; preds = %819
  br label %1667

933:                                              ; preds = %802
  %934 = load i32, ptr %55, align 4, !tbaa !9
  %935 = load i32, ptr %76, align 4, !tbaa !9
  %936 = sub nsw i32 %934, %935
  %937 = add nsw i32 %936, 1
  %938 = load i32, ptr %81, align 4, !tbaa !9
  %939 = sdiv i32 %938, 2
  %940 = icmp sle i32 %937, %939
  br i1 %940, label %941, label %1502

941:                                              ; preds = %933
  %942 = load i32, ptr %55, align 4, !tbaa !9
  %943 = load i32, ptr %81, align 4, !tbaa !9
  %944 = sub nsw i32 %942, %943
  %945 = add nsw i32 %944, 1
  store i32 %945, ptr %76, align 4, !tbaa !9
  %946 = load ptr, ptr %18, align 8, !tbaa !5
  %947 = load i32, ptr %946, align 4, !tbaa !9
  %948 = load i32, ptr %81, align 4, !tbaa !9
  %949 = sub nsw i32 %947, %948
  %950 = add nsw i32 %949, 1
  store i32 %950, ptr %77, align 4, !tbaa !9
  %951 = load ptr, ptr %21, align 8, !tbaa !5
  %952 = load i32, ptr %76, align 4, !tbaa !9
  %953 = load i32, ptr %76, align 4, !tbaa !9
  %954 = load i32, ptr %31, align 4, !tbaa !9
  %955 = mul nsw i32 %953, %954
  %956 = add nsw i32 %952, %955
  %957 = sext i32 %956 to i64
  %958 = getelementptr inbounds %struct.doublecomplex, ptr %951, i64 %957
  %959 = load ptr, ptr %22, align 8, !tbaa !5
  %960 = load ptr, ptr %21, align 8, !tbaa !5
  %961 = load i32, ptr %77, align 4, !tbaa !9
  %962 = load i32, ptr %31, align 4, !tbaa !9
  %963 = add nsw i32 %961, %962
  %964 = sext i32 %963 to i64
  %965 = getelementptr inbounds %struct.doublecomplex, ptr %960, i64 %964
  %966 = load ptr, ptr %22, align 8, !tbaa !5
  call void @zlacpy_(ptr noundef @.str.1, ptr noundef %81, ptr noundef %81, ptr noundef %958, ptr noundef %959, ptr noundef %965, ptr noundef %966)
  %967 = load ptr, ptr %21, align 8, !tbaa !5
  %968 = load i32, ptr %77, align 4, !tbaa !9
  %969 = load i32, ptr %31, align 4, !tbaa !9
  %970 = add nsw i32 %968, %969
  %971 = sext i32 %970 to i64
  %972 = getelementptr inbounds %struct.doublecomplex, ptr %967, i64 %971
  %973 = load ptr, ptr %22, align 8, !tbaa !5
  %974 = load ptr, ptr %23, align 8, !tbaa !5
  %975 = load i32, ptr %76, align 4, !tbaa !9
  %976 = sext i32 %975 to i64
  %977 = getelementptr inbounds %struct.doublecomplex, ptr %974, i64 %976
  %978 = getelementptr inbounds [1 x %struct.doublecomplex], ptr %59, i64 0, i64 0
  call void @zlahqr_(ptr noundef @c_false, ptr noundef @c_false, ptr noundef %81, ptr noundef @c__1, ptr noundef %81, ptr noundef %972, ptr noundef %973, ptr noundef %977, ptr noundef @c__1, ptr noundef @c__1, ptr noundef %978, ptr noundef @c__1, ptr noundef %90)
  %979 = load i32, ptr %90, align 4, !tbaa !9
  %980 = load i32, ptr %76, align 4, !tbaa !9
  %981 = add nsw i32 %980, %979
  store i32 %981, ptr %76, align 4, !tbaa !9
  %982 = load i32, ptr %76, align 4, !tbaa !9
  %983 = load i32, ptr %55, align 4, !tbaa !9
  %984 = icmp sge i32 %982, %983
  br i1 %984, label %985, label %1501

985:                                              ; preds = %941
  %986 = load i32, ptr %55, align 4, !tbaa !9
  %987 = sub nsw i32 %986, 1
  %988 = load i32, ptr %55, align 4, !tbaa !9
  %989 = sub nsw i32 %988, 1
  %990 = load i32, ptr %31, align 4, !tbaa !9
  %991 = mul nsw i32 %989, %990
  %992 = add nsw i32 %987, %991
  store i32 %992, ptr %36, align 4, !tbaa !9
  %993 = load i32, ptr %55, align 4, !tbaa !9
  %994 = load i32, ptr %55, align 4, !tbaa !9
  %995 = sub nsw i32 %994, 1
  %996 = load i32, ptr %31, align 4, !tbaa !9
  %997 = mul nsw i32 %995, %996
  %998 = add nsw i32 %993, %997
  store i32 %998, ptr %37, align 4, !tbaa !9
  %999 = load i32, ptr %55, align 4, !tbaa !9
  %1000 = sub nsw i32 %999, 1
  %1001 = load i32, ptr %55, align 4, !tbaa !9
  %1002 = load i32, ptr %31, align 4, !tbaa !9
  %1003 = mul nsw i32 %1001, %1002
  %1004 = add nsw i32 %1000, %1003
  store i32 %1004, ptr %38, align 4, !tbaa !9
  %1005 = load i32, ptr %55, align 4, !tbaa !9
  %1006 = load i32, ptr %55, align 4, !tbaa !9
  %1007 = load i32, ptr %31, align 4, !tbaa !9
  %1008 = mul nsw i32 %1006, %1007
  %1009 = add nsw i32 %1005, %1008
  store i32 %1009, ptr %39, align 4, !tbaa !9
  %1010 = load ptr, ptr %21, align 8, !tbaa !5
  %1011 = load i32, ptr %36, align 4, !tbaa !9
  %1012 = sext i32 %1011 to i64
  %1013 = getelementptr inbounds %struct.doublecomplex, ptr %1010, i64 %1012
  %1014 = getelementptr inbounds %struct.doublecomplex, ptr %1013, i32 0, i32 0
  %1015 = load double, ptr %1014, align 8, !tbaa !11
  store double %1015, ptr %40, align 8, !tbaa !16
  %1016 = load double, ptr %40, align 8, !tbaa !16
  %1017 = fcmp oge double %1016, 0.000000e+00
  br i1 %1017, label %1018, label %1020

1018:                                             ; preds = %985
  %1019 = load double, ptr %40, align 8, !tbaa !16
  br label %1023

1020:                                             ; preds = %985
  %1021 = load double, ptr %40, align 8, !tbaa !16
  %1022 = fneg double %1021
  br label %1023

1023:                                             ; preds = %1020, %1018
  %1024 = phi double [ %1019, %1018 ], [ %1022, %1020 ]
  %1025 = load ptr, ptr %21, align 8, !tbaa !5
  %1026 = load i32, ptr %55, align 4, !tbaa !9
  %1027 = sub nsw i32 %1026, 1
  %1028 = load i32, ptr %55, align 4, !tbaa !9
  %1029 = sub nsw i32 %1028, 1
  %1030 = load i32, ptr %31, align 4, !tbaa !9
  %1031 = mul nsw i32 %1029, %1030
  %1032 = add nsw i32 %1027, %1031
  %1033 = sext i32 %1032 to i64
  %1034 = getelementptr inbounds %struct.doublecomplex, ptr %1025, i64 %1033
  %1035 = call { double, double } @Cd(ptr noundef %1034)
  %1036 = extractvalue { double, double } %1035, 0
  %1037 = extractvalue { double, double } %1035, 1
  store double %1037, ptr %41, align 8, !tbaa !16
  %1038 = load double, ptr %41, align 8, !tbaa !16
  %1039 = fcmp oge double %1038, 0.000000e+00
  br i1 %1039, label %1040, label %1042

1040:                                             ; preds = %1023
  %1041 = load double, ptr %41, align 8, !tbaa !16
  br label %1045

1042:                                             ; preds = %1023
  %1043 = load double, ptr %41, align 8, !tbaa !16
  %1044 = fneg double %1043
  br label %1045

1045:                                             ; preds = %1042, %1040
  %1046 = phi double [ %1041, %1040 ], [ %1044, %1042 ]
  %1047 = fadd double %1024, %1046
  %1048 = load ptr, ptr %21, align 8, !tbaa !5
  %1049 = load i32, ptr %37, align 4, !tbaa !9
  %1050 = sext i32 %1049 to i64
  %1051 = getelementptr inbounds %struct.doublecomplex, ptr %1048, i64 %1050
  %1052 = getelementptr inbounds %struct.doublecomplex, ptr %1051, i32 0, i32 0
  %1053 = load double, ptr %1052, align 8, !tbaa !11
  store double %1053, ptr %42, align 8, !tbaa !16
  %1054 = load double, ptr %42, align 8, !tbaa !16
  %1055 = fcmp oge double %1054, 0.000000e+00
  br i1 %1055, label %1056, label %1058

1056:                                             ; preds = %1045
  %1057 = load double, ptr %42, align 8, !tbaa !16
  br label %1061

1058:                                             ; preds = %1045
  %1059 = load double, ptr %42, align 8, !tbaa !16
  %1060 = fneg double %1059
  br label %1061

1061:                                             ; preds = %1058, %1056
  %1062 = phi double [ %1057, %1056 ], [ %1060, %1058 ]
  %1063 = load ptr, ptr %21, align 8, !tbaa !5
  %1064 = load i32, ptr %55, align 4, !tbaa !9
  %1065 = load i32, ptr %55, align 4, !tbaa !9
  %1066 = sub nsw i32 %1065, 1
  %1067 = load i32, ptr %31, align 4, !tbaa !9
  %1068 = mul nsw i32 %1066, %1067
  %1069 = add nsw i32 %1064, %1068
  %1070 = sext i32 %1069 to i64
  %1071 = getelementptr inbounds %struct.doublecomplex, ptr %1063, i64 %1070
  %1072 = call { double, double } @Cd(ptr noundef %1071)
  %1073 = extractvalue { double, double } %1072, 0
  %1074 = extractvalue { double, double } %1072, 1
  store double %1074, ptr %43, align 8, !tbaa !16
  %1075 = load double, ptr %43, align 8, !tbaa !16
  %1076 = fcmp oge double %1075, 0.000000e+00
  br i1 %1076, label %1077, label %1079

1077:                                             ; preds = %1061
  %1078 = load double, ptr %43, align 8, !tbaa !16
  br label %1082

1079:                                             ; preds = %1061
  %1080 = load double, ptr %43, align 8, !tbaa !16
  %1081 = fneg double %1080
  br label %1082

1082:                                             ; preds = %1079, %1077
  %1083 = phi double [ %1078, %1077 ], [ %1081, %1079 ]
  %1084 = fadd double %1062, %1083
  %1085 = fadd double %1047, %1084
  %1086 = load ptr, ptr %21, align 8, !tbaa !5
  %1087 = load i32, ptr %38, align 4, !tbaa !9
  %1088 = sext i32 %1087 to i64
  %1089 = getelementptr inbounds %struct.doublecomplex, ptr %1086, i64 %1088
  %1090 = getelementptr inbounds %struct.doublecomplex, ptr %1089, i32 0, i32 0
  %1091 = load double, ptr %1090, align 8, !tbaa !11
  store double %1091, ptr %44, align 8, !tbaa !16
  %1092 = load double, ptr %44, align 8, !tbaa !16
  %1093 = fcmp oge double %1092, 0.000000e+00
  br i1 %1093, label %1094, label %1096

1094:                                             ; preds = %1082
  %1095 = load double, ptr %44, align 8, !tbaa !16
  br label %1099

1096:                                             ; preds = %1082
  %1097 = load double, ptr %44, align 8, !tbaa !16
  %1098 = fneg double %1097
  br label %1099

1099:                                             ; preds = %1096, %1094
  %1100 = phi double [ %1095, %1094 ], [ %1098, %1096 ]
  %1101 = load ptr, ptr %21, align 8, !tbaa !5
  %1102 = load i32, ptr %55, align 4, !tbaa !9
  %1103 = sub nsw i32 %1102, 1
  %1104 = load i32, ptr %55, align 4, !tbaa !9
  %1105 = load i32, ptr %31, align 4, !tbaa !9
  %1106 = mul nsw i32 %1104, %1105
  %1107 = add nsw i32 %1103, %1106
  %1108 = sext i32 %1107 to i64
  %1109 = getelementptr inbounds %struct.doublecomplex, ptr %1101, i64 %1108
  %1110 = call { double, double } @Cd(ptr noundef %1109)
  %1111 = extractvalue { double, double } %1110, 0
  %1112 = extractvalue { double, double } %1110, 1
  store double %1112, ptr %45, align 8, !tbaa !16
  %1113 = load double, ptr %45, align 8, !tbaa !16
  %1114 = fcmp oge double %1113, 0.000000e+00
  br i1 %1114, label %1115, label %1117

1115:                                             ; preds = %1099
  %1116 = load double, ptr %45, align 8, !tbaa !16
  br label %1120

1117:                                             ; preds = %1099
  %1118 = load double, ptr %45, align 8, !tbaa !16
  %1119 = fneg double %1118
  br label %1120

1120:                                             ; preds = %1117, %1115
  %1121 = phi double [ %1116, %1115 ], [ %1119, %1117 ]
  %1122 = fadd double %1100, %1121
  %1123 = fadd double %1085, %1122
  %1124 = load ptr, ptr %21, align 8, !tbaa !5
  %1125 = load i32, ptr %39, align 4, !tbaa !9
  %1126 = sext i32 %1125 to i64
  %1127 = getelementptr inbounds %struct.doublecomplex, ptr %1124, i64 %1126
  %1128 = getelementptr inbounds %struct.doublecomplex, ptr %1127, i32 0, i32 0
  %1129 = load double, ptr %1128, align 8, !tbaa !11
  store double %1129, ptr %46, align 8, !tbaa !16
  %1130 = load double, ptr %46, align 8, !tbaa !16
  %1131 = fcmp oge double %1130, 0.000000e+00
  br i1 %1131, label %1132, label %1134

1132:                                             ; preds = %1120
  %1133 = load double, ptr %46, align 8, !tbaa !16
  br label %1137

1134:                                             ; preds = %1120
  %1135 = load double, ptr %46, align 8, !tbaa !16
  %1136 = fneg double %1135
  br label %1137

1137:                                             ; preds = %1134, %1132
  %1138 = phi double [ %1133, %1132 ], [ %1136, %1134 ]
  %1139 = load ptr, ptr %21, align 8, !tbaa !5
  %1140 = load i32, ptr %55, align 4, !tbaa !9
  %1141 = load i32, ptr %55, align 4, !tbaa !9
  %1142 = load i32, ptr %31, align 4, !tbaa !9
  %1143 = mul nsw i32 %1141, %1142
  %1144 = add nsw i32 %1140, %1143
  %1145 = sext i32 %1144 to i64
  %1146 = getelementptr inbounds %struct.doublecomplex, ptr %1139, i64 %1145
  %1147 = call { double, double } @Cd(ptr noundef %1146)
  %1148 = extractvalue { double, double } %1147, 0
  %1149 = extractvalue { double, double } %1147, 1
  store double %1149, ptr %47, align 8, !tbaa !16
  %1150 = load double, ptr %47, align 8, !tbaa !16
  %1151 = fcmp oge double %1150, 0.000000e+00
  br i1 %1151, label %1152, label %1154

1152:                                             ; preds = %1137
  %1153 = load double, ptr %47, align 8, !tbaa !16
  br label %1157

1154:                                             ; preds = %1137
  %1155 = load double, ptr %47, align 8, !tbaa !16
  %1156 = fneg double %1155
  br label %1157

1157:                                             ; preds = %1154, %1152
  %1158 = phi double [ %1153, %1152 ], [ %1156, %1154 ]
  %1159 = fadd double %1138, %1158
  %1160 = fadd double %1123, %1159
  store double %1160, ptr %63, align 8, !tbaa !16
  %1161 = load i32, ptr %55, align 4, !tbaa !9
  %1162 = sub nsw i32 %1161, 1
  %1163 = load i32, ptr %55, align 4, !tbaa !9
  %1164 = sub nsw i32 %1163, 1
  %1165 = load i32, ptr %31, align 4, !tbaa !9
  %1166 = mul nsw i32 %1164, %1165
  %1167 = add nsw i32 %1162, %1166
  store i32 %1167, ptr %36, align 4, !tbaa !9
  %1168 = load ptr, ptr %21, align 8, !tbaa !5
  %1169 = load i32, ptr %36, align 4, !tbaa !9
  %1170 = sext i32 %1169 to i64
  %1171 = getelementptr inbounds %struct.doublecomplex, ptr %1168, i64 %1170
  %1172 = getelementptr inbounds %struct.doublecomplex, ptr %1171, i32 0, i32 0
  %1173 = load double, ptr %1172, align 8, !tbaa !11
  %1174 = load double, ptr %63, align 8, !tbaa !16
  %1175 = fdiv double %1173, %1174
  %1176 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  store double %1175, ptr %1176, align 8, !tbaa !11
  %1177 = load ptr, ptr %21, align 8, !tbaa !5
  %1178 = load i32, ptr %36, align 4, !tbaa !9
  %1179 = sext i32 %1178 to i64
  %1180 = getelementptr inbounds %struct.doublecomplex, ptr %1177, i64 %1179
  %1181 = getelementptr inbounds %struct.doublecomplex, ptr %1180, i32 0, i32 1
  %1182 = load double, ptr %1181, align 8, !tbaa !14
  %1183 = load double, ptr %63, align 8, !tbaa !16
  %1184 = fdiv double %1182, %1183
  %1185 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  store double %1184, ptr %1185, align 8, !tbaa !14
  %1186 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  %1187 = load double, ptr %1186, align 8, !tbaa !11
  %1188 = getelementptr inbounds %struct.doublecomplex, ptr %68, i32 0, i32 0
  store double %1187, ptr %1188, align 8, !tbaa !11
  %1189 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  %1190 = load double, ptr %1189, align 8, !tbaa !14
  %1191 = getelementptr inbounds %struct.doublecomplex, ptr %68, i32 0, i32 1
  store double %1190, ptr %1191, align 8, !tbaa !14
  %1192 = load i32, ptr %55, align 4, !tbaa !9
  %1193 = load i32, ptr %55, align 4, !tbaa !9
  %1194 = sub nsw i32 %1193, 1
  %1195 = load i32, ptr %31, align 4, !tbaa !9
  %1196 = mul nsw i32 %1194, %1195
  %1197 = add nsw i32 %1192, %1196
  store i32 %1197, ptr %36, align 4, !tbaa !9
  %1198 = load ptr, ptr %21, align 8, !tbaa !5
  %1199 = load i32, ptr %36, align 4, !tbaa !9
  %1200 = sext i32 %1199 to i64
  %1201 = getelementptr inbounds %struct.doublecomplex, ptr %1198, i64 %1200
  %1202 = getelementptr inbounds %struct.doublecomplex, ptr %1201, i32 0, i32 0
  %1203 = load double, ptr %1202, align 8, !tbaa !11
  %1204 = load double, ptr %63, align 8, !tbaa !16
  %1205 = fdiv double %1203, %1204
  %1206 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  store double %1205, ptr %1206, align 8, !tbaa !11
  %1207 = load ptr, ptr %21, align 8, !tbaa !5
  %1208 = load i32, ptr %36, align 4, !tbaa !9
  %1209 = sext i32 %1208 to i64
  %1210 = getelementptr inbounds %struct.doublecomplex, ptr %1207, i64 %1209
  %1211 = getelementptr inbounds %struct.doublecomplex, ptr %1210, i32 0, i32 1
  %1212 = load double, ptr %1211, align 8, !tbaa !14
  %1213 = load double, ptr %63, align 8, !tbaa !16
  %1214 = fdiv double %1212, %1213
  %1215 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  store double %1214, ptr %1215, align 8, !tbaa !14
  %1216 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  %1217 = load double, ptr %1216, align 8, !tbaa !11
  %1218 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  store double %1217, ptr %1218, align 8, !tbaa !11
  %1219 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  %1220 = load double, ptr %1219, align 8, !tbaa !14
  %1221 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  store double %1220, ptr %1221, align 8, !tbaa !14
  %1222 = load i32, ptr %55, align 4, !tbaa !9
  %1223 = sub nsw i32 %1222, 1
  %1224 = load i32, ptr %55, align 4, !tbaa !9
  %1225 = load i32, ptr %31, align 4, !tbaa !9
  %1226 = mul nsw i32 %1224, %1225
  %1227 = add nsw i32 %1223, %1226
  store i32 %1227, ptr %36, align 4, !tbaa !9
  %1228 = load ptr, ptr %21, align 8, !tbaa !5
  %1229 = load i32, ptr %36, align 4, !tbaa !9
  %1230 = sext i32 %1229 to i64
  %1231 = getelementptr inbounds %struct.doublecomplex, ptr %1228, i64 %1230
  %1232 = getelementptr inbounds %struct.doublecomplex, ptr %1231, i32 0, i32 0
  %1233 = load double, ptr %1232, align 8, !tbaa !11
  %1234 = load double, ptr %63, align 8, !tbaa !16
  %1235 = fdiv double %1233, %1234
  %1236 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  store double %1235, ptr %1236, align 8, !tbaa !11
  %1237 = load ptr, ptr %21, align 8, !tbaa !5
  %1238 = load i32, ptr %36, align 4, !tbaa !9
  %1239 = sext i32 %1238 to i64
  %1240 = getelementptr inbounds %struct.doublecomplex, ptr %1237, i64 %1239
  %1241 = getelementptr inbounds %struct.doublecomplex, ptr %1240, i32 0, i32 1
  %1242 = load double, ptr %1241, align 8, !tbaa !14
  %1243 = load double, ptr %63, align 8, !tbaa !16
  %1244 = fdiv double %1242, %1243
  %1245 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  store double %1244, ptr %1245, align 8, !tbaa !14
  %1246 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  %1247 = load double, ptr %1246, align 8, !tbaa !11
  %1248 = getelementptr inbounds %struct.doublecomplex, ptr %69, i32 0, i32 0
  store double %1247, ptr %1248, align 8, !tbaa !11
  %1249 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  %1250 = load double, ptr %1249, align 8, !tbaa !14
  %1251 = getelementptr inbounds %struct.doublecomplex, ptr %69, i32 0, i32 1
  store double %1250, ptr %1251, align 8, !tbaa !14
  %1252 = load i32, ptr %55, align 4, !tbaa !9
  %1253 = load i32, ptr %55, align 4, !tbaa !9
  %1254 = load i32, ptr %31, align 4, !tbaa !9
  %1255 = mul nsw i32 %1253, %1254
  %1256 = add nsw i32 %1252, %1255
  store i32 %1256, ptr %36, align 4, !tbaa !9
  %1257 = load ptr, ptr %21, align 8, !tbaa !5
  %1258 = load i32, ptr %36, align 4, !tbaa !9
  %1259 = sext i32 %1258 to i64
  %1260 = getelementptr inbounds %struct.doublecomplex, ptr %1257, i64 %1259
  %1261 = getelementptr inbounds %struct.doublecomplex, ptr %1260, i32 0, i32 0
  %1262 = load double, ptr %1261, align 8, !tbaa !11
  %1263 = load double, ptr %63, align 8, !tbaa !16
  %1264 = fdiv double %1262, %1263
  %1265 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  store double %1264, ptr %1265, align 8, !tbaa !11
  %1266 = load ptr, ptr %21, align 8, !tbaa !5
  %1267 = load i32, ptr %36, align 4, !tbaa !9
  %1268 = sext i32 %1267 to i64
  %1269 = getelementptr inbounds %struct.doublecomplex, ptr %1266, i64 %1268
  %1270 = getelementptr inbounds %struct.doublecomplex, ptr %1269, i32 0, i32 1
  %1271 = load double, ptr %1270, align 8, !tbaa !14
  %1272 = load double, ptr %63, align 8, !tbaa !16
  %1273 = fdiv double %1271, %1272
  %1274 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  store double %1273, ptr %1274, align 8, !tbaa !14
  %1275 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  %1276 = load double, ptr %1275, align 8, !tbaa !11
  %1277 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 0
  store double %1276, ptr %1277, align 8, !tbaa !11
  %1278 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  %1279 = load double, ptr %1278, align 8, !tbaa !14
  %1280 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 1
  store double %1279, ptr %1280, align 8, !tbaa !14
  %1281 = getelementptr inbounds %struct.doublecomplex, ptr %68, i32 0, i32 0
  %1282 = load double, ptr %1281, align 8, !tbaa !11
  %1283 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 0
  %1284 = load double, ptr %1283, align 8, !tbaa !11
  %1285 = fadd double %1282, %1284
  %1286 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  store double %1285, ptr %1286, align 8, !tbaa !11
  %1287 = getelementptr inbounds %struct.doublecomplex, ptr %68, i32 0, i32 1
  %1288 = load double, ptr %1287, align 8, !tbaa !14
  %1289 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 1
  %1290 = load double, ptr %1289, align 8, !tbaa !14
  %1291 = fadd double %1288, %1290
  %1292 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  store double %1291, ptr %1292, align 8, !tbaa !14
  %1293 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  %1294 = load double, ptr %1293, align 8, !tbaa !11
  %1295 = fdiv double %1294, 2.000000e+00
  %1296 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  store double %1295, ptr %1296, align 8, !tbaa !11
  %1297 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  %1298 = load double, ptr %1297, align 8, !tbaa !14
  %1299 = fdiv double %1298, 2.000000e+00
  %1300 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  store double %1299, ptr %1300, align 8, !tbaa !14
  %1301 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  %1302 = load double, ptr %1301, align 8, !tbaa !11
  %1303 = getelementptr inbounds %struct.doublecomplex, ptr %88, i32 0, i32 0
  store double %1302, ptr %1303, align 8, !tbaa !11
  %1304 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  %1305 = load double, ptr %1304, align 8, !tbaa !14
  %1306 = getelementptr inbounds %struct.doublecomplex, ptr %88, i32 0, i32 1
  store double %1305, ptr %1306, align 8, !tbaa !14
  %1307 = getelementptr inbounds %struct.doublecomplex, ptr %68, i32 0, i32 0
  %1308 = load double, ptr %1307, align 8, !tbaa !11
  %1309 = getelementptr inbounds %struct.doublecomplex, ptr %88, i32 0, i32 0
  %1310 = load double, ptr %1309, align 8, !tbaa !11
  %1311 = fsub double %1308, %1310
  %1312 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  store double %1311, ptr %1312, align 8, !tbaa !11
  %1313 = getelementptr inbounds %struct.doublecomplex, ptr %68, i32 0, i32 1
  %1314 = load double, ptr %1313, align 8, !tbaa !14
  %1315 = getelementptr inbounds %struct.doublecomplex, ptr %88, i32 0, i32 1
  %1316 = load double, ptr %1315, align 8, !tbaa !14
  %1317 = fsub double %1314, %1316
  %1318 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  store double %1317, ptr %1318, align 8, !tbaa !14
  %1319 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 0
  %1320 = load double, ptr %1319, align 8, !tbaa !11
  %1321 = getelementptr inbounds %struct.doublecomplex, ptr %88, i32 0, i32 0
  %1322 = load double, ptr %1321, align 8, !tbaa !11
  %1323 = fsub double %1320, %1322
  %1324 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  store double %1323, ptr %1324, align 8, !tbaa !11
  %1325 = getelementptr inbounds %struct.doublecomplex, ptr %71, i32 0, i32 1
  %1326 = load double, ptr %1325, align 8, !tbaa !14
  %1327 = getelementptr inbounds %struct.doublecomplex, ptr %88, i32 0, i32 1
  %1328 = load double, ptr %1327, align 8, !tbaa !14
  %1329 = fsub double %1326, %1328
  %1330 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  store double %1329, ptr %1330, align 8, !tbaa !14
  %1331 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %1332 = load double, ptr %1331, align 8, !tbaa !11
  %1333 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %1334 = load double, ptr %1333, align 8, !tbaa !11
  %1335 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %1336 = load double, ptr %1335, align 8, !tbaa !14
  %1337 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  %1338 = load double, ptr %1337, align 8, !tbaa !14
  %1339 = fmul double %1336, %1338
  %1340 = fneg double %1339
  %1341 = call double @llvm.fmuladd.f64(double %1332, double %1334, double %1340)
  %1342 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  store double %1341, ptr %1342, align 8, !tbaa !11
  %1343 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %1344 = load double, ptr %1343, align 8, !tbaa !11
  %1345 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  %1346 = load double, ptr %1345, align 8, !tbaa !14
  %1347 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  %1348 = load double, ptr %1347, align 8, !tbaa !14
  %1349 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %1350 = load double, ptr %1349, align 8, !tbaa !11
  %1351 = fmul double %1348, %1350
  %1352 = call double @llvm.fmuladd.f64(double %1344, double %1346, double %1351)
  %1353 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  store double %1352, ptr %1353, align 8, !tbaa !14
  %1354 = getelementptr inbounds %struct.doublecomplex, ptr %69, i32 0, i32 0
  %1355 = load double, ptr %1354, align 8, !tbaa !11
  %1356 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %1357 = load double, ptr %1356, align 8, !tbaa !11
  %1358 = getelementptr inbounds %struct.doublecomplex, ptr %69, i32 0, i32 1
  %1359 = load double, ptr %1358, align 8, !tbaa !14
  %1360 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %1361 = load double, ptr %1360, align 8, !tbaa !14
  %1362 = fmul double %1359, %1361
  %1363 = fneg double %1362
  %1364 = call double @llvm.fmuladd.f64(double %1355, double %1357, double %1363)
  %1365 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  store double %1364, ptr %1365, align 8, !tbaa !11
  %1366 = getelementptr inbounds %struct.doublecomplex, ptr %69, i32 0, i32 0
  %1367 = load double, ptr %1366, align 8, !tbaa !11
  %1368 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 1
  %1369 = load double, ptr %1368, align 8, !tbaa !14
  %1370 = getelementptr inbounds %struct.doublecomplex, ptr %69, i32 0, i32 1
  %1371 = load double, ptr %1370, align 8, !tbaa !14
  %1372 = getelementptr inbounds %struct.doublecomplex, ptr %70, i32 0, i32 0
  %1373 = load double, ptr %1372, align 8, !tbaa !11
  %1374 = fmul double %1371, %1373
  %1375 = call double @llvm.fmuladd.f64(double %1367, double %1369, double %1374)
  %1376 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  store double %1375, ptr %1376, align 8, !tbaa !14
  %1377 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  %1378 = load double, ptr %1377, align 8, !tbaa !11
  %1379 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %1380 = load double, ptr %1379, align 8, !tbaa !11
  %1381 = fsub double %1378, %1380
  %1382 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  store double %1381, ptr %1382, align 8, !tbaa !11
  %1383 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  %1384 = load double, ptr %1383, align 8, !tbaa !14
  %1385 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %1386 = load double, ptr %1385, align 8, !tbaa !14
  %1387 = fsub double %1384, %1386
  %1388 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  store double %1387, ptr %1388, align 8, !tbaa !14
  %1389 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  %1390 = load double, ptr %1389, align 8, !tbaa !11
  %1391 = getelementptr inbounds %struct.doublecomplex, ptr %89, i32 0, i32 0
  store double %1390, ptr %1391, align 8, !tbaa !11
  %1392 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  %1393 = load double, ptr %1392, align 8, !tbaa !14
  %1394 = getelementptr inbounds %struct.doublecomplex, ptr %89, i32 0, i32 1
  store double %1393, ptr %1394, align 8, !tbaa !14
  %1395 = getelementptr inbounds %struct.doublecomplex, ptr %89, i32 0, i32 0
  %1396 = load double, ptr %1395, align 8, !tbaa !11
  %1397 = fneg double %1396
  %1398 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  store double %1397, ptr %1398, align 8, !tbaa !11
  %1399 = getelementptr inbounds %struct.doublecomplex, ptr %89, i32 0, i32 1
  %1400 = load double, ptr %1399, align 8, !tbaa !14
  %1401 = fneg double %1400
  %1402 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  store double %1401, ptr %1402, align 8, !tbaa !14
  %1403 = call { double, double } @Cd(ptr noundef %49)
  %1404 = extractvalue { double, double } %1403, 0
  %1405 = extractvalue { double, double } %1403, 1
  %1406 = getelementptr inbounds { double, double }, ptr %99, i32 0, i32 0
  %1407 = getelementptr inbounds { double, double }, ptr %99, i32 0, i32 1
  store double %1404, ptr %1406, align 8
  store double %1405, ptr %1407, align 8
  %1408 = getelementptr inbounds { double, double }, ptr %99, i32 0, i32 0
  %1409 = load double, ptr %1408, align 8
  %1410 = getelementptr inbounds { double, double }, ptr %99, i32 0, i32 1
  %1411 = load double, ptr %1410, align 8
  %1412 = call { double, double } @csqrt(double noundef %1409, double noundef %1411) #6
  %1413 = extractvalue { double, double } %1412, 0
  %1414 = extractvalue { double, double } %1412, 1
  %1415 = call ptr @_pCd(ptr noundef %48)
  %1416 = getelementptr inbounds { double, double }, ptr %1415, i32 0, i32 0
  %1417 = getelementptr inbounds { double, double }, ptr %1415, i32 0, i32 1
  store double %1413, ptr %1416, align 8
  store double %1414, ptr %1417, align 8
  %1418 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  %1419 = load double, ptr %1418, align 8, !tbaa !11
  %1420 = getelementptr inbounds %struct.doublecomplex, ptr %84, i32 0, i32 0
  store double %1419, ptr %1420, align 8, !tbaa !11
  %1421 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  %1422 = load double, ptr %1421, align 8, !tbaa !14
  %1423 = getelementptr inbounds %struct.doublecomplex, ptr %84, i32 0, i32 1
  store double %1422, ptr %1423, align 8, !tbaa !14
  %1424 = load i32, ptr %55, align 4, !tbaa !9
  %1425 = sub nsw i32 %1424, 1
  store i32 %1425, ptr %36, align 4, !tbaa !9
  %1426 = getelementptr inbounds %struct.doublecomplex, ptr %88, i32 0, i32 0
  %1427 = load double, ptr %1426, align 8, !tbaa !11
  %1428 = getelementptr inbounds %struct.doublecomplex, ptr %84, i32 0, i32 0
  %1429 = load double, ptr %1428, align 8, !tbaa !11
  %1430 = fadd double %1427, %1429
  %1431 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  store double %1430, ptr %1431, align 8, !tbaa !11
  %1432 = getelementptr inbounds %struct.doublecomplex, ptr %88, i32 0, i32 1
  %1433 = load double, ptr %1432, align 8, !tbaa !14
  %1434 = getelementptr inbounds %struct.doublecomplex, ptr %84, i32 0, i32 1
  %1435 = load double, ptr %1434, align 8, !tbaa !14
  %1436 = fadd double %1433, %1435
  %1437 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  store double %1436, ptr %1437, align 8, !tbaa !14
  %1438 = load double, ptr %63, align 8, !tbaa !16
  %1439 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  %1440 = load double, ptr %1439, align 8, !tbaa !11
  %1441 = fmul double %1438, %1440
  %1442 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  store double %1441, ptr %1442, align 8, !tbaa !11
  %1443 = load double, ptr %63, align 8, !tbaa !16
  %1444 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  %1445 = load double, ptr %1444, align 8, !tbaa !14
  %1446 = fmul double %1443, %1445
  %1447 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  store double %1446, ptr %1447, align 8, !tbaa !14
  %1448 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  %1449 = load double, ptr %1448, align 8, !tbaa !11
  %1450 = load ptr, ptr %23, align 8, !tbaa !5
  %1451 = load i32, ptr %36, align 4, !tbaa !9
  %1452 = sext i32 %1451 to i64
  %1453 = getelementptr inbounds %struct.doublecomplex, ptr %1450, i64 %1452
  %1454 = getelementptr inbounds %struct.doublecomplex, ptr %1453, i32 0, i32 0
  store double %1449, ptr %1454, align 8, !tbaa !11
  %1455 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  %1456 = load double, ptr %1455, align 8, !tbaa !14
  %1457 = load ptr, ptr %23, align 8, !tbaa !5
  %1458 = load i32, ptr %36, align 4, !tbaa !9
  %1459 = sext i32 %1458 to i64
  %1460 = getelementptr inbounds %struct.doublecomplex, ptr %1457, i64 %1459
  %1461 = getelementptr inbounds %struct.doublecomplex, ptr %1460, i32 0, i32 1
  store double %1456, ptr %1461, align 8, !tbaa !14
  %1462 = load i32, ptr %55, align 4, !tbaa !9
  store i32 %1462, ptr %36, align 4, !tbaa !9
  %1463 = getelementptr inbounds %struct.doublecomplex, ptr %88, i32 0, i32 0
  %1464 = load double, ptr %1463, align 8, !tbaa !11
  %1465 = getelementptr inbounds %struct.doublecomplex, ptr %84, i32 0, i32 0
  %1466 = load double, ptr %1465, align 8, !tbaa !11
  %1467 = fsub double %1464, %1466
  %1468 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  store double %1467, ptr %1468, align 8, !tbaa !11
  %1469 = getelementptr inbounds %struct.doublecomplex, ptr %88, i32 0, i32 1
  %1470 = load double, ptr %1469, align 8, !tbaa !14
  %1471 = getelementptr inbounds %struct.doublecomplex, ptr %84, i32 0, i32 1
  %1472 = load double, ptr %1471, align 8, !tbaa !14
  %1473 = fsub double %1470, %1472
  %1474 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  store double %1473, ptr %1474, align 8, !tbaa !14
  %1475 = load double, ptr %63, align 8, !tbaa !16
  %1476 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  %1477 = load double, ptr %1476, align 8, !tbaa !11
  %1478 = fmul double %1475, %1477
  %1479 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  store double %1478, ptr %1479, align 8, !tbaa !11
  %1480 = load double, ptr %63, align 8, !tbaa !16
  %1481 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  %1482 = load double, ptr %1481, align 8, !tbaa !14
  %1483 = fmul double %1480, %1482
  %1484 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  store double %1483, ptr %1484, align 8, !tbaa !14
  %1485 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  %1486 = load double, ptr %1485, align 8, !tbaa !11
  %1487 = load ptr, ptr %23, align 8, !tbaa !5
  %1488 = load i32, ptr %36, align 4, !tbaa !9
  %1489 = sext i32 %1488 to i64
  %1490 = getelementptr inbounds %struct.doublecomplex, ptr %1487, i64 %1489
  %1491 = getelementptr inbounds %struct.doublecomplex, ptr %1490, i32 0, i32 0
  store double %1486, ptr %1491, align 8, !tbaa !11
  %1492 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  %1493 = load double, ptr %1492, align 8, !tbaa !14
  %1494 = load ptr, ptr %23, align 8, !tbaa !5
  %1495 = load i32, ptr %36, align 4, !tbaa !9
  %1496 = sext i32 %1495 to i64
  %1497 = getelementptr inbounds %struct.doublecomplex, ptr %1494, i64 %1496
  %1498 = getelementptr inbounds %struct.doublecomplex, ptr %1497, i32 0, i32 1
  store double %1493, ptr %1498, align 8, !tbaa !14
  %1499 = load i32, ptr %55, align 4, !tbaa !9
  %1500 = sub nsw i32 %1499, 1
  store i32 %1500, ptr %76, align 4, !tbaa !9
  br label %1501

1501:                                             ; preds = %1157, %941
  br label %1502

1502:                                             ; preds = %1501, %933
  %1503 = load i32, ptr %55, align 4, !tbaa !9
  %1504 = load i32, ptr %76, align 4, !tbaa !9
  %1505 = sub nsw i32 %1503, %1504
  %1506 = add nsw i32 %1505, 1
  %1507 = load i32, ptr %81, align 4, !tbaa !9
  %1508 = icmp sgt i32 %1506, %1507
  br i1 %1508, label %1509, label %1666

1509:                                             ; preds = %1502
  store i32 0, ptr %86, align 4, !tbaa !9
  %1510 = load i32, ptr %76, align 4, !tbaa !9
  %1511 = add nsw i32 %1510, 1
  store i32 %1511, ptr %36, align 4, !tbaa !9
  %1512 = load i32, ptr %55, align 4, !tbaa !9
  store i32 %1512, ptr %62, align 4, !tbaa !9
  br label %1513

1513:                                             ; preds = %1661, %1509
  %1514 = load i32, ptr %62, align 4, !tbaa !9
  %1515 = load i32, ptr %36, align 4, !tbaa !9
  %1516 = icmp sge i32 %1514, %1515
  br i1 %1516, label %1517, label %1664

1517:                                             ; preds = %1513
  %1518 = load i32, ptr %86, align 4, !tbaa !9
  %1519 = icmp ne i32 %1518, 0
  br i1 %1519, label %1520, label %1521

1520:                                             ; preds = %1517
  br label %1665

1521:                                             ; preds = %1517
  store i32 1, ptr %86, align 4, !tbaa !9
  %1522 = load i32, ptr %62, align 4, !tbaa !9
  %1523 = sub nsw i32 %1522, 1
  store i32 %1523, ptr %37, align 4, !tbaa !9
  %1524 = load i32, ptr %76, align 4, !tbaa !9
  store i32 %1524, ptr %61, align 4, !tbaa !9
  br label %1525

1525:                                             ; preds = %1657, %1521
  %1526 = load i32, ptr %61, align 4, !tbaa !9
  %1527 = load i32, ptr %37, align 4, !tbaa !9
  %1528 = icmp sle i32 %1526, %1527
  br i1 %1528, label %1529, label %1660

1529:                                             ; preds = %1525
  %1530 = load i32, ptr %61, align 4, !tbaa !9
  store i32 %1530, ptr %38, align 4, !tbaa !9
  %1531 = load i32, ptr %61, align 4, !tbaa !9
  %1532 = add nsw i32 %1531, 1
  store i32 %1532, ptr %39, align 4, !tbaa !9
  %1533 = load ptr, ptr %23, align 8, !tbaa !5
  %1534 = load i32, ptr %38, align 4, !tbaa !9
  %1535 = sext i32 %1534 to i64
  %1536 = getelementptr inbounds %struct.doublecomplex, ptr %1533, i64 %1535
  %1537 = getelementptr inbounds %struct.doublecomplex, ptr %1536, i32 0, i32 0
  %1538 = load double, ptr %1537, align 8, !tbaa !11
  store double %1538, ptr %40, align 8, !tbaa !16
  %1539 = load double, ptr %40, align 8, !tbaa !16
  %1540 = fcmp oge double %1539, 0.000000e+00
  br i1 %1540, label %1541, label %1543

1541:                                             ; preds = %1529
  %1542 = load double, ptr %40, align 8, !tbaa !16
  br label %1546

1543:                                             ; preds = %1529
  %1544 = load double, ptr %40, align 8, !tbaa !16
  %1545 = fneg double %1544
  br label %1546

1546:                                             ; preds = %1543, %1541
  %1547 = phi double [ %1542, %1541 ], [ %1545, %1543 ]
  %1548 = load ptr, ptr %23, align 8, !tbaa !5
  %1549 = load i32, ptr %61, align 4, !tbaa !9
  %1550 = sext i32 %1549 to i64
  %1551 = getelementptr inbounds %struct.doublecomplex, ptr %1548, i64 %1550
  %1552 = call { double, double } @Cd(ptr noundef %1551)
  %1553 = extractvalue { double, double } %1552, 0
  %1554 = extractvalue { double, double } %1552, 1
  store double %1554, ptr %41, align 8, !tbaa !16
  %1555 = load double, ptr %41, align 8, !tbaa !16
  %1556 = fcmp oge double %1555, 0.000000e+00
  br i1 %1556, label %1557, label %1559

1557:                                             ; preds = %1546
  %1558 = load double, ptr %41, align 8, !tbaa !16
  br label %1562

1559:                                             ; preds = %1546
  %1560 = load double, ptr %41, align 8, !tbaa !16
  %1561 = fneg double %1560
  br label %1562

1562:                                             ; preds = %1559, %1557
  %1563 = phi double [ %1558, %1557 ], [ %1561, %1559 ]
  %1564 = fadd double %1547, %1563
  %1565 = load ptr, ptr %23, align 8, !tbaa !5
  %1566 = load i32, ptr %39, align 4, !tbaa !9
  %1567 = sext i32 %1566 to i64
  %1568 = getelementptr inbounds %struct.doublecomplex, ptr %1565, i64 %1567
  %1569 = getelementptr inbounds %struct.doublecomplex, ptr %1568, i32 0, i32 0
  %1570 = load double, ptr %1569, align 8, !tbaa !11
  store double %1570, ptr %42, align 8, !tbaa !16
  %1571 = load double, ptr %42, align 8, !tbaa !16
  %1572 = fcmp oge double %1571, 0.000000e+00
  br i1 %1572, label %1573, label %1575

1573:                                             ; preds = %1562
  %1574 = load double, ptr %42, align 8, !tbaa !16
  br label %1578

1575:                                             ; preds = %1562
  %1576 = load double, ptr %42, align 8, !tbaa !16
  %1577 = fneg double %1576
  br label %1578

1578:                                             ; preds = %1575, %1573
  %1579 = phi double [ %1574, %1573 ], [ %1577, %1575 ]
  %1580 = load ptr, ptr %23, align 8, !tbaa !5
  %1581 = load i32, ptr %61, align 4, !tbaa !9
  %1582 = add nsw i32 %1581, 1
  %1583 = sext i32 %1582 to i64
  %1584 = getelementptr inbounds %struct.doublecomplex, ptr %1580, i64 %1583
  %1585 = call { double, double } @Cd(ptr noundef %1584)
  %1586 = extractvalue { double, double } %1585, 0
  %1587 = extractvalue { double, double } %1585, 1
  store double %1587, ptr %43, align 8, !tbaa !16
  %1588 = load double, ptr %43, align 8, !tbaa !16
  %1589 = fcmp oge double %1588, 0.000000e+00
  br i1 %1589, label %1590, label %1592

1590:                                             ; preds = %1578
  %1591 = load double, ptr %43, align 8, !tbaa !16
  br label %1595

1592:                                             ; preds = %1578
  %1593 = load double, ptr %43, align 8, !tbaa !16
  %1594 = fneg double %1593
  br label %1595

1595:                                             ; preds = %1592, %1590
  %1596 = phi double [ %1591, %1590 ], [ %1594, %1592 ]
  %1597 = fadd double %1579, %1596
  %1598 = fcmp olt double %1564, %1597
  br i1 %1598, label %1599, label %1656

1599:                                             ; preds = %1595
  store i32 0, ptr %86, align 4, !tbaa !9
  %1600 = load i32, ptr %61, align 4, !tbaa !9
  store i32 %1600, ptr %38, align 4, !tbaa !9
  %1601 = load ptr, ptr %23, align 8, !tbaa !5
  %1602 = load i32, ptr %38, align 4, !tbaa !9
  %1603 = sext i32 %1602 to i64
  %1604 = getelementptr inbounds %struct.doublecomplex, ptr %1601, i64 %1603
  %1605 = getelementptr inbounds %struct.doublecomplex, ptr %1604, i32 0, i32 0
  %1606 = load double, ptr %1605, align 8, !tbaa !11
  %1607 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  store double %1606, ptr %1607, align 8, !tbaa !11
  %1608 = load ptr, ptr %23, align 8, !tbaa !5
  %1609 = load i32, ptr %38, align 4, !tbaa !9
  %1610 = sext i32 %1609 to i64
  %1611 = getelementptr inbounds %struct.doublecomplex, ptr %1608, i64 %1610
  %1612 = getelementptr inbounds %struct.doublecomplex, ptr %1611, i32 0, i32 1
  %1613 = load double, ptr %1612, align 8, !tbaa !14
  %1614 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  store double %1613, ptr %1614, align 8, !tbaa !14
  %1615 = load i32, ptr %61, align 4, !tbaa !9
  store i32 %1615, ptr %38, align 4, !tbaa !9
  %1616 = load i32, ptr %61, align 4, !tbaa !9
  %1617 = add nsw i32 %1616, 1
  store i32 %1617, ptr %39, align 4, !tbaa !9
  %1618 = load ptr, ptr %23, align 8, !tbaa !5
  %1619 = load i32, ptr %39, align 4, !tbaa !9
  %1620 = sext i32 %1619 to i64
  %1621 = getelementptr inbounds %struct.doublecomplex, ptr %1618, i64 %1620
  %1622 = getelementptr inbounds %struct.doublecomplex, ptr %1621, i32 0, i32 0
  %1623 = load double, ptr %1622, align 8, !tbaa !11
  %1624 = load ptr, ptr %23, align 8, !tbaa !5
  %1625 = load i32, ptr %38, align 4, !tbaa !9
  %1626 = sext i32 %1625 to i64
  %1627 = getelementptr inbounds %struct.doublecomplex, ptr %1624, i64 %1626
  %1628 = getelementptr inbounds %struct.doublecomplex, ptr %1627, i32 0, i32 0
  store double %1623, ptr %1628, align 8, !tbaa !11
  %1629 = load ptr, ptr %23, align 8, !tbaa !5
  %1630 = load i32, ptr %39, align 4, !tbaa !9
  %1631 = sext i32 %1630 to i64
  %1632 = getelementptr inbounds %struct.doublecomplex, ptr %1629, i64 %1631
  %1633 = getelementptr inbounds %struct.doublecomplex, ptr %1632, i32 0, i32 1
  %1634 = load double, ptr %1633, align 8, !tbaa !14
  %1635 = load ptr, ptr %23, align 8, !tbaa !5
  %1636 = load i32, ptr %38, align 4, !tbaa !9
  %1637 = sext i32 %1636 to i64
  %1638 = getelementptr inbounds %struct.doublecomplex, ptr %1635, i64 %1637
  %1639 = getelementptr inbounds %struct.doublecomplex, ptr %1638, i32 0, i32 1
  store double %1634, ptr %1639, align 8, !tbaa !14
  %1640 = load i32, ptr %61, align 4, !tbaa !9
  %1641 = add nsw i32 %1640, 1
  store i32 %1641, ptr %38, align 4, !tbaa !9
  %1642 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  %1643 = load double, ptr %1642, align 8, !tbaa !11
  %1644 = load ptr, ptr %23, align 8, !tbaa !5
  %1645 = load i32, ptr %38, align 4, !tbaa !9
  %1646 = sext i32 %1645 to i64
  %1647 = getelementptr inbounds %struct.doublecomplex, ptr %1644, i64 %1646
  %1648 = getelementptr inbounds %struct.doublecomplex, ptr %1647, i32 0, i32 0
  store double %1643, ptr %1648, align 8, !tbaa !11
  %1649 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  %1650 = load double, ptr %1649, align 8, !tbaa !14
  %1651 = load ptr, ptr %23, align 8, !tbaa !5
  %1652 = load i32, ptr %38, align 4, !tbaa !9
  %1653 = sext i32 %1652 to i64
  %1654 = getelementptr inbounds %struct.doublecomplex, ptr %1651, i64 %1653
  %1655 = getelementptr inbounds %struct.doublecomplex, ptr %1654, i32 0, i32 1
  store double %1650, ptr %1655, align 8, !tbaa !14
  br label %1656

1656:                                             ; preds = %1599, %1595
  br label %1657

1657:                                             ; preds = %1656
  %1658 = load i32, ptr %61, align 4, !tbaa !9
  %1659 = add nsw i32 %1658, 1
  store i32 %1659, ptr %61, align 4, !tbaa !9
  br label %1525, !llvm.loop !20

1660:                                             ; preds = %1525
  br label %1661

1661:                                             ; preds = %1660
  %1662 = load i32, ptr %62, align 4, !tbaa !9
  %1663 = add nsw i32 %1662, -1
  store i32 %1663, ptr %62, align 4, !tbaa !9
  br label %1513, !llvm.loop !21

1664:                                             ; preds = %1513
  br label %1665

1665:                                             ; preds = %1664, %1520
  br label %1666

1666:                                             ; preds = %1665, %1502
  br label %1667

1667:                                             ; preds = %1666, %932
  %1668 = load i32, ptr %55, align 4, !tbaa !9
  %1669 = load i32, ptr %76, align 4, !tbaa !9
  %1670 = sub nsw i32 %1668, %1669
  %1671 = add nsw i32 %1670, 1
  %1672 = icmp eq i32 %1671, 2
  br i1 %1672, label %1673, label %1857

1673:                                             ; preds = %1667
  %1674 = load i32, ptr %55, align 4, !tbaa !9
  store i32 %1674, ptr %36, align 4, !tbaa !9
  %1675 = load i32, ptr %55, align 4, !tbaa !9
  %1676 = load i32, ptr %55, align 4, !tbaa !9
  %1677 = load i32, ptr %31, align 4, !tbaa !9
  %1678 = mul nsw i32 %1676, %1677
  %1679 = add nsw i32 %1675, %1678
  store i32 %1679, ptr %37, align 4, !tbaa !9
  %1680 = load ptr, ptr %23, align 8, !tbaa !5
  %1681 = load i32, ptr %36, align 4, !tbaa !9
  %1682 = sext i32 %1681 to i64
  %1683 = getelementptr inbounds %struct.doublecomplex, ptr %1680, i64 %1682
  %1684 = getelementptr inbounds %struct.doublecomplex, ptr %1683, i32 0, i32 0
  %1685 = load double, ptr %1684, align 8, !tbaa !11
  %1686 = load ptr, ptr %21, align 8, !tbaa !5
  %1687 = load i32, ptr %37, align 4, !tbaa !9
  %1688 = sext i32 %1687 to i64
  %1689 = getelementptr inbounds %struct.doublecomplex, ptr %1686, i64 %1688
  %1690 = getelementptr inbounds %struct.doublecomplex, ptr %1689, i32 0, i32 0
  %1691 = load double, ptr %1690, align 8, !tbaa !11
  %1692 = fsub double %1685, %1691
  %1693 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  store double %1692, ptr %1693, align 8, !tbaa !11
  %1694 = load ptr, ptr %23, align 8, !tbaa !5
  %1695 = load i32, ptr %36, align 4, !tbaa !9
  %1696 = sext i32 %1695 to i64
  %1697 = getelementptr inbounds %struct.doublecomplex, ptr %1694, i64 %1696
  %1698 = getelementptr inbounds %struct.doublecomplex, ptr %1697, i32 0, i32 1
  %1699 = load double, ptr %1698, align 8, !tbaa !14
  %1700 = load ptr, ptr %21, align 8, !tbaa !5
  %1701 = load i32, ptr %37, align 4, !tbaa !9
  %1702 = sext i32 %1701 to i64
  %1703 = getelementptr inbounds %struct.doublecomplex, ptr %1700, i64 %1702
  %1704 = getelementptr inbounds %struct.doublecomplex, ptr %1703, i32 0, i32 1
  %1705 = load double, ptr %1704, align 8, !tbaa !14
  %1706 = fsub double %1699, %1705
  %1707 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  store double %1706, ptr %1707, align 8, !tbaa !14
  %1708 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  %1709 = load double, ptr %1708, align 8, !tbaa !11
  %1710 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  store double %1709, ptr %1710, align 8, !tbaa !11
  %1711 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  %1712 = load double, ptr %1711, align 8, !tbaa !14
  %1713 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  store double %1712, ptr %1713, align 8, !tbaa !14
  %1714 = load i32, ptr %55, align 4, !tbaa !9
  %1715 = sub nsw i32 %1714, 1
  store i32 %1715, ptr %38, align 4, !tbaa !9
  %1716 = load i32, ptr %55, align 4, !tbaa !9
  %1717 = load i32, ptr %55, align 4, !tbaa !9
  %1718 = load i32, ptr %31, align 4, !tbaa !9
  %1719 = mul nsw i32 %1717, %1718
  %1720 = add nsw i32 %1716, %1719
  store i32 %1720, ptr %39, align 4, !tbaa !9
  %1721 = load ptr, ptr %23, align 8, !tbaa !5
  %1722 = load i32, ptr %38, align 4, !tbaa !9
  %1723 = sext i32 %1722 to i64
  %1724 = getelementptr inbounds %struct.doublecomplex, ptr %1721, 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 %21, align 8, !tbaa !5
  %1728 = load i32, ptr %39, align 4, !tbaa !9
  %1729 = sext i32 %1728 to i64
  %1730 = getelementptr inbounds %struct.doublecomplex, ptr %1727, i64 %1729
  %1731 = getelementptr inbounds %struct.doublecomplex, ptr %1730, i32 0, i32 0
  %1732 = load double, ptr %1731, align 8, !tbaa !11
  %1733 = fsub double %1726, %1732
  %1734 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  store double %1733, ptr %1734, align 8, !tbaa !11
  %1735 = load ptr, ptr %23, align 8, !tbaa !5
  %1736 = load i32, ptr %38, align 4, !tbaa !9
  %1737 = sext i32 %1736 to i64
  %1738 = getelementptr inbounds %struct.doublecomplex, ptr %1735, i64 %1737
  %1739 = getelementptr inbounds %struct.doublecomplex, ptr %1738, i32 0, i32 1
  %1740 = load double, ptr %1739, align 8, !tbaa !14
  %1741 = load ptr, ptr %21, align 8, !tbaa !5
  %1742 = load i32, ptr %39, align 4, !tbaa !9
  %1743 = sext i32 %1742 to i64
  %1744 = getelementptr inbounds %struct.doublecomplex, ptr %1741, i64 %1743
  %1745 = getelementptr inbounds %struct.doublecomplex, ptr %1744, i32 0, i32 1
  %1746 = load double, ptr %1745, align 8, !tbaa !14
  %1747 = fsub double %1740, %1746
  %1748 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  store double %1747, ptr %1748, align 8, !tbaa !14
  %1749 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %1750 = load double, ptr %1749, align 8, !tbaa !11
  %1751 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  store double %1750, ptr %1751, align 8, !tbaa !11
  %1752 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  %1753 = load double, ptr %1752, align 8, !tbaa !14
  %1754 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  store double %1753, ptr %1754, align 8, !tbaa !14
  %1755 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  %1756 = load double, ptr %1755, align 8, !tbaa !11
  store double %1756, ptr %40, align 8, !tbaa !16
  %1757 = load double, ptr %40, align 8, !tbaa !16
  %1758 = fcmp oge double %1757, 0.000000e+00
  br i1 %1758, label %1759, label %1761

1759:                                             ; preds = %1673
  %1760 = load double, ptr %40, align 8, !tbaa !16
  br label %1764

1761:                                             ; preds = %1673
  %1762 = load double, ptr %40, align 8, !tbaa !16
  %1763 = fneg double %1762
  br label %1764

1764:                                             ; preds = %1761, %1759
  %1765 = phi double [ %1760, %1759 ], [ %1763, %1761 ]
  %1766 = call { double, double } @Cd(ptr noundef %48)
  %1767 = extractvalue { double, double } %1766, 0
  %1768 = extractvalue { double, double } %1766, 1
  store double %1768, ptr %41, align 8, !tbaa !16
  %1769 = load double, ptr %41, align 8, !tbaa !16
  %1770 = fcmp oge double %1769, 0.000000e+00
  br i1 %1770, label %1771, label %1773

1771:                                             ; preds = %1764
  %1772 = load double, ptr %41, align 8, !tbaa !16
  br label %1776

1773:                                             ; preds = %1764
  %1774 = load double, ptr %41, align 8, !tbaa !16
  %1775 = fneg double %1774
  br label %1776

1776:                                             ; preds = %1773, %1771
  %1777 = phi double [ %1772, %1771 ], [ %1775, %1773 ]
  %1778 = fadd double %1765, %1777
  %1779 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %1780 = load double, ptr %1779, align 8, !tbaa !11
  store double %1780, ptr %42, align 8, !tbaa !16
  %1781 = load double, ptr %42, align 8, !tbaa !16
  %1782 = fcmp oge double %1781, 0.000000e+00
  br i1 %1782, label %1783, label %1785

1783:                                             ; preds = %1776
  %1784 = load double, ptr %42, align 8, !tbaa !16
  br label %1788

1785:                                             ; preds = %1776
  %1786 = load double, ptr %42, align 8, !tbaa !16
  %1787 = fneg double %1786
  br label %1788

1788:                                             ; preds = %1785, %1783
  %1789 = phi double [ %1784, %1783 ], [ %1787, %1785 ]
  %1790 = call { double, double } @Cd(ptr noundef %50)
  %1791 = extractvalue { double, double } %1790, 0
  %1792 = extractvalue { double, double } %1790, 1
  store double %1792, ptr %43, align 8, !tbaa !16
  %1793 = load double, ptr %43, align 8, !tbaa !16
  %1794 = fcmp oge double %1793, 0.000000e+00
  br i1 %1794, label %1795, label %1797

1795:                                             ; preds = %1788
  %1796 = load double, ptr %43, align 8, !tbaa !16
  br label %1800

1797:                                             ; preds = %1788
  %1798 = load double, ptr %43, align 8, !tbaa !16
  %1799 = fneg double %1798
  br label %1800

1800:                                             ; preds = %1797, %1795
  %1801 = phi double [ %1796, %1795 ], [ %1799, %1797 ]
  %1802 = fadd double %1789, %1801
  %1803 = fcmp olt double %1778, %1802
  br i1 %1803, label %1804, label %1830

1804:                                             ; preds = %1800
  %1805 = load i32, ptr %55, align 4, !tbaa !9
  %1806 = sub nsw i32 %1805, 1
  store i32 %1806, ptr %36, align 4, !tbaa !9
  %1807 = load i32, ptr %55, align 4, !tbaa !9
  store i32 %1807, ptr %37, align 4, !tbaa !9
  %1808 = load ptr, ptr %23, align 8, !tbaa !5
  %1809 = load i32, ptr %37, align 4, !tbaa !9
  %1810 = sext i32 %1809 to i64
  %1811 = getelementptr inbounds %struct.doublecomplex, ptr %1808, i64 %1810
  %1812 = getelementptr inbounds %struct.doublecomplex, ptr %1811, i32 0, i32 0
  %1813 = load double, ptr %1812, align 8, !tbaa !11
  %1814 = load ptr, ptr %23, align 8, !tbaa !5
  %1815 = load i32, ptr %36, align 4, !tbaa !9
  %1816 = sext i32 %1815 to i64
  %1817 = getelementptr inbounds %struct.doublecomplex, ptr %1814, i64 %1816
  %1818 = getelementptr inbounds %struct.doublecomplex, ptr %1817, i32 0, i32 0
  store double %1813, ptr %1818, align 8, !tbaa !11
  %1819 = load ptr, ptr %23, align 8, !tbaa !5
  %1820 = load i32, ptr %37, align 4, !tbaa !9
  %1821 = sext i32 %1820 to i64
  %1822 = getelementptr inbounds %struct.doublecomplex, ptr %1819, i64 %1821
  %1823 = getelementptr inbounds %struct.doublecomplex, ptr %1822, i32 0, i32 1
  %1824 = load double, ptr %1823, align 8, !tbaa !14
  %1825 = load ptr, ptr %23, align 8, !tbaa !5
  %1826 = load i32, ptr %36, align 4, !tbaa !9
  %1827 = sext i32 %1826 to i64
  %1828 = getelementptr inbounds %struct.doublecomplex, ptr %1825, i64 %1827
  %1829 = getelementptr inbounds %struct.doublecomplex, ptr %1828, i32 0, i32 1
  store double %1824, ptr %1829, align 8, !tbaa !14
  br label %1856

1830:                                             ; preds = %1800
  %1831 = load i32, ptr %55, align 4, !tbaa !9
  store i32 %1831, ptr %36, align 4, !tbaa !9
  %1832 = load i32, ptr %55, align 4, !tbaa !9
  %1833 = sub nsw i32 %1832, 1
  store i32 %1833, ptr %37, align 4, !tbaa !9
  %1834 = load ptr, ptr %23, align 8, !tbaa !5
  %1835 = load i32, ptr %37, align 4, !tbaa !9
  %1836 = sext i32 %1835 to i64
  %1837 = getelementptr inbounds %struct.doublecomplex, ptr %1834, i64 %1836
  %1838 = getelementptr inbounds %struct.doublecomplex, ptr %1837, i32 0, i32 0
  %1839 = load double, ptr %1838, align 8, !tbaa !11
  %1840 = load ptr, ptr %23, align 8, !tbaa !5
  %1841 = load i32, ptr %36, align 4, !tbaa !9
  %1842 = sext i32 %1841 to i64
  %1843 = getelementptr inbounds %struct.doublecomplex, ptr %1840, i64 %1842
  %1844 = getelementptr inbounds %struct.doublecomplex, ptr %1843, i32 0, i32 0
  store double %1839, ptr %1844, align 8, !tbaa !11
  %1845 = load ptr, ptr %23, align 8, !tbaa !5
  %1846 = load i32, ptr %37, align 4, !tbaa !9
  %1847 = sext i32 %1846 to i64
  %1848 = getelementptr inbounds %struct.doublecomplex, ptr %1845, i64 %1847
  %1849 = getelementptr inbounds %struct.doublecomplex, ptr %1848, i32 0, i32 1
  %1850 = load double, ptr %1849, align 8, !tbaa !14
  %1851 = load ptr, ptr %23, align 8, !tbaa !5
  %1852 = load i32, ptr %36, align 4, !tbaa !9
  %1853 = sext i32 %1852 to i64
  %1854 = getelementptr inbounds %struct.doublecomplex, ptr %1851, i64 %1853
  %1855 = getelementptr inbounds %struct.doublecomplex, ptr %1854, i32 0, i32 1
  store double %1850, ptr %1855, align 8, !tbaa !14
  br label %1856

1856:                                             ; preds = %1830, %1804
  br label %1857

1857:                                             ; preds = %1856, %1667
  %1858 = load i32, ptr %81, align 4, !tbaa !9
  store i32 %1858, ptr %36, align 4, !tbaa !9
  %1859 = load i32, ptr %55, align 4, !tbaa !9
  %1860 = load i32, ptr %76, align 4, !tbaa !9
  %1861 = sub nsw i32 %1859, %1860
  %1862 = add nsw i32 %1861, 1
  store i32 %1862, ptr %37, align 4, !tbaa !9
  %1863 = load i32, ptr %36, align 4, !tbaa !9
  %1864 = load i32, ptr %37, align 4, !tbaa !9
  %1865 = icmp sle i32 %1863, %1864
  br i1 %1865, label %1866, label %1868

1866:                                             ; preds = %1857
  %1867 = load i32, ptr %36, align 4, !tbaa !9
  br label %1870

1868:                                             ; preds = %1857
  %1869 = load i32, ptr %37, align 4, !tbaa !9
  br label %1870

1870:                                             ; preds = %1868, %1866
  %1871 = phi i32 [ %1867, %1866 ], [ %1869, %1868 ]
  store i32 %1871, ptr %81, align 4, !tbaa !9
  %1872 = load i32, ptr %81, align 4, !tbaa !9
  %1873 = srem i32 %1872, 2
  %1874 = load i32, ptr %81, align 4, !tbaa !9
  %1875 = sub nsw i32 %1874, %1873
  store i32 %1875, ptr %81, align 4, !tbaa !9
  %1876 = load i32, ptr %55, align 4, !tbaa !9
  %1877 = load i32, ptr %81, align 4, !tbaa !9
  %1878 = sub nsw i32 %1876, %1877
  %1879 = add nsw i32 %1878, 1
  store i32 %1879, ptr %76, align 4, !tbaa !9
  %1880 = load i32, ptr %81, align 4, !tbaa !9
  %1881 = shl i32 %1880, 1
  store i32 %1881, ptr %91, align 4, !tbaa !9
  %1882 = load ptr, ptr %18, align 8, !tbaa !5
  %1883 = load i32, ptr %1882, align 4, !tbaa !9
  %1884 = load i32, ptr %91, align 4, !tbaa !9
  %1885 = sub nsw i32 %1883, %1884
  %1886 = add nsw i32 %1885, 1
  store i32 %1886, ptr %78, align 4, !tbaa !9
  %1887 = load i32, ptr %91, align 4, !tbaa !9
  %1888 = add nsw i32 %1887, 1
  store i32 %1888, ptr %94, align 4, !tbaa !9
  %1889 = load ptr, ptr %18, align 8, !tbaa !5
  %1890 = load i32, ptr %1889, align 4, !tbaa !9
  %1891 = load i32, ptr %91, align 4, !tbaa !9
  %1892 = sub nsw i32 %1890, %1891
  %1893 = sub nsw i32 %1892, 3
  %1894 = load i32, ptr %91, align 4, !tbaa !9
  %1895 = add nsw i32 %1894, 1
  %1896 = sub nsw i32 %1893, %1895
  %1897 = add nsw i32 %1896, 1
  store i32 %1897, ptr %92, align 4, !tbaa !9
  %1898 = load i32, ptr %91, align 4, !tbaa !9
  %1899 = add nsw i32 %1898, 4
  store i32 %1899, ptr %97, align 4, !tbaa !9
  %1900 = load ptr, ptr %18, align 8, !tbaa !5
  %1901 = load i32, ptr %1900, align 4, !tbaa !9
  %1902 = load i32, ptr %91, align 4, !tbaa !9
  %1903 = sub nsw i32 %1901, %1902
  %1904 = load i32, ptr %97, align 4, !tbaa !9
  %1905 = sub nsw i32 %1903, %1904
  %1906 = add nsw i32 %1905, 1
  store i32 %1906, ptr %93, align 4, !tbaa !9
  %1907 = load ptr, ptr %16, align 8, !tbaa !5
  %1908 = load ptr, ptr %17, align 8, !tbaa !5
  %1909 = load ptr, ptr %18, align 8, !tbaa !5
  %1910 = load ptr, ptr %23, align 8, !tbaa !5
  %1911 = load i32, ptr %76, align 4, !tbaa !9
  %1912 = sext i32 %1911 to i64
  %1913 = getelementptr inbounds %struct.doublecomplex, ptr %1910, i64 %1912
  %1914 = load ptr, ptr %21, align 8, !tbaa !5
  %1915 = load i32, ptr %32, align 4, !tbaa !9
  %1916 = sext i32 %1915 to i64
  %1917 = getelementptr inbounds %struct.doublecomplex, ptr %1914, i64 %1916
  %1918 = load ptr, ptr %22, align 8, !tbaa !5
  %1919 = load ptr, ptr %24, align 8, !tbaa !5
  %1920 = load ptr, ptr %25, align 8, !tbaa !5
  %1921 = load ptr, ptr %26, align 8, !tbaa !5
  %1922 = load i32, ptr %34, align 4, !tbaa !9
  %1923 = sext i32 %1922 to i64
  %1924 = getelementptr inbounds %struct.doublecomplex, ptr %1921, i64 %1923
  %1925 = load ptr, ptr %27, align 8, !tbaa !5
  %1926 = load ptr, ptr %28, align 8, !tbaa !5
  %1927 = getelementptr inbounds %struct.doublecomplex, ptr %1926, i64 1
  %1928 = load ptr, ptr %21, align 8, !tbaa !5
  %1929 = load i32, ptr %78, align 4, !tbaa !9
  %1930 = load i32, ptr %31, align 4, !tbaa !9
  %1931 = add nsw i32 %1929, %1930
  %1932 = sext i32 %1931 to i64
  %1933 = getelementptr inbounds %struct.doublecomplex, ptr %1928, i64 %1932
  %1934 = load ptr, ptr %22, align 8, !tbaa !5
  %1935 = load ptr, ptr %21, align 8, !tbaa !5
  %1936 = load i32, ptr %97, align 4, !tbaa !9
  %1937 = load i32, ptr %31, align 4, !tbaa !9
  %1938 = add nsw i32 %1936, %1937
  %1939 = sext i32 %1938 to i64
  %1940 = getelementptr inbounds %struct.doublecomplex, ptr %1935, i64 %1939
  %1941 = load ptr, ptr %22, align 8, !tbaa !5
  %1942 = load ptr, ptr %21, align 8, !tbaa !5
  %1943 = load i32, ptr %78, align 4, !tbaa !9
  %1944 = load i32, ptr %94, align 4, !tbaa !9
  %1945 = load i32, ptr %31, align 4, !tbaa !9
  %1946 = mul nsw i32 %1944, %1945
  %1947 = add nsw i32 %1943, %1946
  %1948 = sext i32 %1947 to i64
  %1949 = getelementptr inbounds %struct.doublecomplex, ptr %1942, i64 %1948
  %1950 = load ptr, ptr %22, align 8, !tbaa !5
  call void @zlaqr5_(ptr noundef %1907, ptr noundef %1908, ptr noundef %60, ptr noundef %1909, ptr noundef %58, ptr noundef %55, ptr noundef %81, ptr noundef %1913, ptr noundef %1917, ptr noundef %1918, ptr noundef %1919, ptr noundef %1920, ptr noundef %1924, ptr noundef %1925, ptr noundef %1927, ptr noundef @c__3, ptr noundef %1933, ptr noundef %1934, ptr noundef %93, ptr noundef %1940, ptr noundef %1941, ptr noundef %92, ptr noundef %1949, ptr noundef %1950)
  br label %1951

1951:                                             ; preds = %1870, %770, %751
  %1952 = load i32, ptr %72, align 4, !tbaa !9
  %1953 = icmp sgt i32 %1952, 0
  br i1 %1953, label %1954, label %1955

1954:                                             ; preds = %1951
  store i32 1, ptr %54, align 4, !tbaa !9
  br label %1958

1955:                                             ; preds = %1951
  %1956 = load i32, ptr %54, align 4, !tbaa !9
  %1957 = add nsw i32 %1956, 1
  store i32 %1957, ptr %54, align 4, !tbaa !9
  br label %1958

1958:                                             ; preds = %1955, %1954
  br label %1959

1959:                                             ; preds = %1958
  %1960 = load i32, ptr %75, align 4, !tbaa !9
  %1961 = add nsw i32 %1960, 1
  store i32 %1961, ptr %75, align 4, !tbaa !9
  br label %451, !llvm.loop !22

1962:                                             ; preds = %451
  %1963 = load i32, ptr %55, align 4, !tbaa !9
  %1964 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 %1963, ptr %1964, align 4, !tbaa !9
  br label %1965

1965:                                             ; preds = %1962, %460
  br label %1966

1966:                                             ; preds = %1965, %164
  %1967 = load i32, ptr %87, align 4, !tbaa !9
  %1968 = sitofp i32 %1967 to double
  store double %1968, ptr %40, align 8, !tbaa !16
  %1969 = load double, ptr %40, align 8, !tbaa !16
  %1970 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  store double %1969, ptr %1970, align 8, !tbaa !11
  %1971 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  store double 0.000000e+00, ptr %1971, align 8, !tbaa !14
  %1972 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  %1973 = load double, ptr %1972, align 8, !tbaa !11
  %1974 = load ptr, ptr %28, align 8, !tbaa !5
  %1975 = getelementptr inbounds %struct.doublecomplex, ptr %1974, i64 1
  %1976 = getelementptr inbounds %struct.doublecomplex, ptr %1975, i32 0, i32 0
  store double %1973, ptr %1976, align 8, !tbaa !11
  %1977 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  %1978 = load double, ptr %1977, align 8, !tbaa !14
  %1979 = load ptr, ptr %28, align 8, !tbaa !5
  %1980 = getelementptr inbounds %struct.doublecomplex, ptr %1979, i64 1
  %1981 = getelementptr inbounds %struct.doublecomplex, ptr %1980, i32 0, i32 1
  store double %1978, ptr %1981, align 8, !tbaa !14
  store i32 1, ptr %98, align 4
  br label %1982

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

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

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

declare void @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

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

declare void @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) #4

; Function Attrs: nounwind
declare { double, double } @csqrt(double noundef, double noundef) #5

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

declare void @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 = { inlinehint nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !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 i32, align 4
@.str = external hidden unnamed_addr constant [7 x i8], align 1
@c__15 = external hidden global i32, align 4
@c_n1 = external hidden global i32, align 4
@c__12 = external hidden global i32, align 4
@c__14 = external hidden global i32, align 4
@c__16 = external hidden global i32, align 4
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c_false = external hidden global i32, align 4
@c__1 = external hidden global i32, align 4
@c__3 = external hidden global i32, align 4

; Function Attrs: nounwind uwtable
define dso_local void @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 i32, align 4
  %17 = alloca %struct.doublecomplex, align 16
  %18 = alloca %struct.doublecomplex, align 16
  %19 = alloca %struct.doublecomplex, align 16
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca [1 x %struct.doublecomplex], align 16
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca [2 x i8], align 1
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %18) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %19) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %22) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %25) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %27) #6
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %28) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %29) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %30) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %31) #6
  %32 = load i32, ptr %6, align 4, !tbaa !5
  %narrow = xor i32 %32, -1
  %33 = sext i32 %narrow to i64
  %34 = getelementptr inbounds %struct.doublecomplex, ptr %5, i64 %33
  %35 = getelementptr inbounds i8, ptr %7, i64 -16
  store i32 0, ptr %14, align 4, !tbaa !5
  %36 = load i32, ptr %2, align 4, !tbaa !5
  %37 = icmp eq i32 %36, 0
  br i1 %37, label %538, label %38

38:                                               ; preds = %15
  %39 = icmp slt i32 %36, 16
  br i1 %39, label %40, label %43

40:                                               ; preds = %38
  %41 = load i32, ptr %13, align 4, !tbaa !5
  %.not628 = icmp eq i32 %41, -1
  br i1 %.not628, label %.loopexit640, label %42

42:                                               ; preds = %40
  tail call void @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) #6
  br label %.loopexit640

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

78:                                               ; preds = %43
  %79 = uitofp nneg i32 %75 to double
  br label %538

80:                                               ; preds = %43
  %81 = call i32 @ilaenv_(ptr noundef nonnull @c__12, ptr noundef nonnull @.str, ptr noundef nonnull %28, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %13, i32 noundef 6, i32 noundef 2) #6
  %82 = call i32 @ilaenv_(ptr noundef nonnull @c__14, ptr noundef nonnull @.str, ptr noundef nonnull %28, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %13, i32 noundef 6, i32 noundef 2) #6
  %83 = call i32 @llvm.smax.i32(i32 %82, i32 0)
  %84 = call i32 @ilaenv_(ptr noundef nonnull @c__16, ptr noundef nonnull @.str, ptr noundef nonnull %28, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %13, i32 noundef 6, i32 noundef 2) #6
  %85 = call i32 @llvm.smax.i32(i32 %84, i32 0)
  %86 = call i32 @llvm.umin.i32(i32 %85, i32 2)
  store i32 %86, ptr %23, align 4, !tbaa !5
  %87 = load i32, ptr %2, align 4, !tbaa !5
  %88 = add nsw i32 %87, -1
  %89 = sdiv i32 %88, 3
  %90 = load i32, ptr %13, align 4, !tbaa !5
  %91 = sdiv i32 %90, 2
  %92 = call i32 @llvm.smin.i32(i32 %89, i32 %91)
  store i32 %92, ptr %27, align 4, !tbaa !5
  %93 = load i32, ptr %4, align 4, !tbaa !5
  %94 = load i32, ptr %3, align 4, !tbaa !5
  %95 = sub nsw i32 %93, %94
  %96 = icmp slt i32 %95, 10
  %97 = mul i32 %95, 30
  %98 = add i32 %97, 30
  %99 = select i1 %96, i32 300, i32 %98
  store i32 %93, ptr %20, align 4, !tbaa !5
  store i32 %99, ptr %16, align 4, !tbaa !5
  %.not609652 = icmp slt i32 %99, 1
  br i1 %.not609652, label %._crit_edge658, label %.lr.ph657

.lr.ph657:                                        ; preds = %80
  %100 = add nsw i32 %87, -3
  %101 = sdiv i32 %100, 6
  %102 = shl i32 %90, 1
  %103 = sdiv i32 %102, 3
  %104 = call i32 @llvm.smin.i32(i32 %101, i32 %103)
  %105 = srem i32 %104, 2
  %106 = sub nsw i32 %104, %105
  %107 = call i32 @llvm.smax.i32(i32 %81, i32 15)
  %108 = call i32 @llvm.smin.i32(i32 %107, i32 %92)
  %109 = call i32 @llvm.smin.i32(i32 %106, i32 %69)
  %110 = add i32 %32, 1
  %111 = getelementptr inbounds i8, ptr %17, i64 8
  br label %112

112:                                              ; preds = %.lr.ph657, %531
  %.0584655 = phi i32 [ 1, %.lr.ph657 ], [ %534, %531 ]
  %.0585654 = phi i32 [ undef, %.lr.ph657 ], [ %.1586, %531 ]
  %.0587653 = phi i32 [ 1, %.lr.ph657 ], [ %.1588, %531 ]
  %113 = load i32, ptr %20, align 4, !tbaa !5
  %114 = load i32, ptr %3, align 4, !tbaa !5
  %115 = icmp slt i32 %113, %114
  br i1 %115, label %.loopexit640, label %.preheader639

.preheader639:                                    ; preds = %112
  %.not610.not641 = icmp sgt i32 %113, %114
  br i1 %.not610.not641, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %.preheader639
  %116 = sext i32 %113 to i64
  %117 = sext i32 %114 to i64
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %128
  %indvars.iv = phi i64 [ %116, %.lr.ph.preheader ], [ %indvars.iv.next, %128 ]
  %indvars.iv.next = add nsw i64 %indvars.iv, -1
  %indvars = trunc i64 %indvars.iv.next to i32
  %118 = mul nsw i32 %32, %indvars
  %119 = sext i32 %118 to i64
  %120 = getelementptr %struct.doublecomplex, ptr %34, i64 %indvars.iv
  %121 = getelementptr %struct.doublecomplex, ptr %120, i64 %119
  %122 = load double, ptr %121, align 8, !tbaa !10
  %123 = fcmp oeq double %122, 0.000000e+00
  br i1 %123, label %124, label %128

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

128:                                              ; preds = %.lr.ph, %124
  %.not610.not = icmp sgt i64 %indvars.iv.next, %117
  br i1 %.not610.not, label %.lr.ph, label %._crit_edge, !llvm.loop !14

._crit_edge.loopexit.split.loop.exit683:          ; preds = %124
  %129 = trunc nsw i64 %indvars.iv to i32
  br label %._crit_edge

._crit_edge:                                      ; preds = %128, %._crit_edge.loopexit.split.loop.exit683, %.preheader639
  %.1592 = phi i32 [ %114, %.preheader639 ], [ %129, %._crit_edge.loopexit.split.loop.exit683 ], [ %114, %128 ]
  store i32 %.1592, ptr %21, align 4, !tbaa !5
  %130 = sub nsw i32 %113, %.1592
  %131 = add nsw i32 %130, 1
  %132 = call i32 @llvm.smin.i32(i32 %131, i32 %92)
  %133 = icmp slt i32 %.0587653, 5
  %134 = load i32, ptr %27, align 4
  %135 = shl i32 %134, 1
  %.sink = select i1 %133, i32 %57, i32 %135
  %136 = call i32 @llvm.smin.i32(i32 %132, i32 %.sink)
  store i32 %136, ptr %27, align 4, !tbaa !5
  %137 = icmp slt i32 %136, %92
  br i1 %137, label %138, label %176

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

139:                                              ; preds = %138
  store i32 %131, ptr %27, align 4, !tbaa !5
  br label %176

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

174:                                              ; preds = %140
  %175 = add nsw i32 %.pre.pre, 1
  store i32 %175, ptr %27, align 4, !tbaa !5
  br label %176

176:                                              ; preds = %139, %174, %140, %._crit_edge
  %.pre = phi i32 [ %131, %139 ], [ %175, %174 ], [ %.pre.pre, %140 ], [ %136, %._crit_edge ]
  br i1 %133, label %184, label %177

177:                                              ; preds = %176
  %178 = icmp slt i32 %.0585654, 0
  %.not616 = icmp slt i32 %.pre, %132
  %or.cond629 = select i1 %178, i1 %.not616, i1 false
  br i1 %or.cond629, label %184, label %179

179:                                              ; preds = %177
  %180 = add nsw i32 %.0585654, 1
  %181 = sub nsw i32 %.pre, %180
  %182 = icmp slt i32 %181, 2
  %spec.store.select = select i1 %182, i32 0, i32 %180
  %183 = sub nsw i32 %.pre, %spec.store.select
  store i32 %183, ptr %27, align 4, !tbaa !5
  br label %184

184:                                              ; preds = %177, %176, %179
  %185 = phi i32 [ %183, %179 ], [ %.pre, %176 ], [ %.pre, %177 ]
  %.1586 = phi i32 [ %spec.store.select, %179 ], [ -1, %176 ], [ %.0585654, %177 ]
  %186 = load i32, ptr %2, align 4, !tbaa !5
  %187 = sub nsw i32 %186, %185
  %188 = add nsw i32 %187, 1
  %189 = add nsw i32 %185, 1
  %190 = xor i32 %185, -1
  %191 = add i32 %187, %190
  store i32 %191, ptr %30, align 4, !tbaa !5
  %192 = add nsw i32 %185, 2
  %.neg631 = add i32 %186, 1
  %193 = shl i32 %185, 1
  %reass.sub = sub i32 %.neg631, %193
  %194 = add i32 %reass.sub, -2
  store i32 %194, ptr %31, align 4, !tbaa !5
  %195 = add nsw i32 %188, %32
  %196 = sext i32 %195 to i64
  %197 = getelementptr inbounds %struct.doublecomplex, ptr %34, i64 %196
  %198 = mul nsw i32 %189, %32
  %199 = add nsw i32 %188, %198
  %200 = sext i32 %199 to i64
  %201 = getelementptr inbounds %struct.doublecomplex, ptr %34, i64 %200
  %202 = add nsw i32 %192, %32
  %203 = sext i32 %202 to i64
  %204 = getelementptr inbounds %struct.doublecomplex, ptr %34, i64 %203
  call void @zlaqr2_(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef nonnull %21, ptr noundef nonnull %20, ptr noundef nonnull %27, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef nonnull %11, ptr noundef nonnull %25, ptr noundef nonnull %24, ptr noundef %7, ptr noundef %197, ptr noundef nonnull %6, ptr noundef nonnull %30, ptr noundef %201, ptr noundef nonnull %6, ptr noundef nonnull %31, ptr noundef %204, ptr noundef nonnull %6, ptr noundef nonnull %12, ptr noundef nonnull %13) #6
  %205 = load i32, ptr %24, align 4, !tbaa !5
  %206 = load i32, ptr %20, align 4, !tbaa !5
  %207 = sub i32 %206, %205
  store i32 %207, ptr %20, align 4, !tbaa !5
  %208 = load i32, ptr %25, align 4, !tbaa !5
  %209 = sub nsw i32 %207, %208
  %210 = add nsw i32 %209, 1
  %211 = icmp eq i32 %205, 0
  br i1 %211, label %._crit_edge676, label %212

._crit_edge676:                                   ; preds = %184
  %.pre677 = load i32, ptr %21, align 4, !tbaa !5
  %.pre681 = sub nsw i32 %207, %.pre677
  br label %219

212:                                              ; preds = %184
  %213 = mul nsw i32 %205, 100
  %214 = load i32, ptr %27, align 4, !tbaa !5
  %215 = mul nsw i32 %214, %83
  %.not617 = icmp sgt i32 %213, %215
  br i1 %.not617, label %531, label %216

216:                                              ; preds = %212
  %217 = load i32, ptr %21, align 4, !tbaa !5
  %218 = sub nsw i32 %207, %217
  %.not619 = icmp slt i32 %218, %108
  br i1 %.not619, label %531, label %219

219:                                              ; preds = %._crit_edge676, %216
  %.pre-phi = phi i32 [ %.pre681, %._crit_edge676 ], [ %218, %216 ]
  %220 = call i32 @llvm.smax.i32(i32 %.pre-phi, i32 2)
  %221 = call i32 @llvm.smin.i32(i32 %109, i32 %220)
  %222 = srem i32 %221, 2
  %223 = sdiv i32 %221, 2
  %224 = sub nsw i32 %221, %222
  store i32 %224, ptr %26, align 4, !tbaa !5
  %225 = srem i32 %.0587653, 6
  %226 = icmp eq i32 %225, 0
  br i1 %226, label %227, label %261

227:                                              ; preds = %219
  %228 = sub nsw i32 %207, %224
  %229 = add nsw i32 %228, 1
  %230 = add nsw i32 %228, 2
  %.not626648 = icmp slt i32 %207, %230
  br i1 %.not626648, label %.loopexit, label %.lr.ph651.preheader

.lr.ph651.preheader:                              ; preds = %227
  %231 = sext i32 %207 to i64
  %232 = sext i32 %230 to i64
  br label %.lr.ph651

.lr.ph651:                                        ; preds = %.lr.ph651.preheader, %.lr.ph651
  %indvars.iv672 = phi i64 [ %231, %.lr.ph651.preheader ], [ %indvars.iv.next673, %.lr.ph651 ]
  %indvars675 = trunc i64 %indvars.iv672 to i32
  %233 = mul i32 %110, %indvars675
  %234 = add nsw i32 %indvars675, -1
  %235 = mul nsw i32 %234, %32
  %236 = sext i32 %235 to i64
  %237 = getelementptr %struct.doublecomplex, ptr %34, i64 %indvars.iv672
  %238 = getelementptr %struct.doublecomplex, ptr %237, i64 %236
  %239 = load double, ptr %238, align 8, !tbaa !10
  %240 = fcmp oge double %239, 0.000000e+00
  %241 = fneg double %239
  %242 = select i1 %240, double %239, double %241
  %243 = call { double, double } @Cd(ptr noundef nonnull %238)
  %244 = extractvalue { double, double } %243, 1
  %245 = fcmp oge double %244, 0.000000e+00
  %246 = fneg double %244
  %247 = select i1 %245, double %244, double %246
  %248 = fadd double %242, %247
  %249 = fmul double %248, 7.500000e-01
  %250 = sext i32 %233 to i64
  %251 = getelementptr inbounds %struct.doublecomplex, ptr %34, i64 %250
  %252 = load double, ptr %251, align 8, !tbaa !10
  %253 = fadd double %252, %249
  store double %253, ptr %17, align 16, !tbaa !10
  %254 = getelementptr inbounds i8, ptr %251, i64 8
  %255 = load double, ptr %254, align 8, !tbaa !13
  store double %255, ptr %111, align 8, !tbaa !13
  %256 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %indvars.iv672
  store double %253, ptr %256, align 8, !tbaa !10
  %257 = getelementptr inbounds i8, ptr %256, i64 8
  store double %255, ptr %257, align 8, !tbaa !13
  %258 = getelementptr %struct.doublecomplex, ptr %35, i64 %indvars.iv672
  %259 = getelementptr i8, ptr %258, i64 -16
  store double %253, ptr %259, align 8, !tbaa !10
  %260 = getelementptr i8, ptr %258, i64 -8
  store double %255, ptr %260, align 8, !tbaa !13
  %indvars.iv.next673 = add nsw i64 %indvars.iv672, -2
  %.not626 = icmp slt i64 %indvars.iv.next673, %232
  br i1 %.not626, label %.loopexit, label %.lr.ph651, !llvm.loop !16

261:                                              ; preds = %219
  %262 = sub nsw i32 %207, %210
  %.not622.not = icmp slt i32 %262, %223
  br i1 %.not622.not, label %263, label %416

263:                                              ; preds = %261
  %264 = sub nsw i32 %207, %224
  %265 = add nsw i32 %264, 1
  %266 = load i32, ptr %2, align 4, !tbaa !5
  %267 = mul i32 %265, %110
  %268 = sext i32 %267 to i64
  %269 = getelementptr inbounds %struct.doublecomplex, ptr %34, i64 %268
  %270 = sub i32 %110, %224
  %271 = add i32 %270, %266
  %272 = sext i32 %271 to i64
  %273 = getelementptr inbounds %struct.doublecomplex, ptr %34, i64 %272
  call void @zlacpy_(ptr noundef nonnull @.str.1, ptr noundef nonnull %26, ptr noundef nonnull %26, ptr noundef %269, ptr noundef nonnull %6, ptr noundef %273, ptr noundef nonnull %6) #6
  %274 = sext i32 %265 to i64
  %275 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %274
  call void @zlahqr_(ptr noundef nonnull @c_false, ptr noundef nonnull @c_false, ptr noundef nonnull %26, ptr noundef nonnull @c__1, ptr noundef nonnull %26, ptr noundef %273, ptr noundef nonnull %6, ptr noundef nonnull %275, ptr noundef nonnull @c__1, ptr noundef nonnull @c__1, ptr noundef nonnull %22, ptr noundef nonnull @c__1, ptr noundef nonnull %29) #6
  %276 = load i32, ptr %29, align 4, !tbaa !5
  %277 = add nsw i32 %276, %265
  %278 = load i32, ptr %20, align 4, !tbaa !5
  %.not623 = icmp slt i32 %277, %278
  br i1 %.not623, label %416, label %279

279:                                              ; preds = %263
  %280 = add nsw i32 %278, -1
  %281 = mul nsw i32 %280, %32
  %282 = add nsw i32 %281, %280
  %283 = add nsw i32 %281, %278
  %284 = mul nsw i32 %278, %32
  %285 = add nsw i32 %280, %284
  %286 = add nsw i32 %284, %278
  %287 = sext i32 %282 to i64
  %288 = getelementptr inbounds %struct.doublecomplex, ptr %34, i64 %287
  %289 = load double, ptr %288, align 8, !tbaa !10
  %290 = call { double, double } @Cd(ptr noundef nonnull %288)
  %291 = extractvalue { double, double } %290, 1
  %292 = sext i32 %283 to i64
  %293 = getelementptr inbounds %struct.doublecomplex, ptr %34, i64 %292
  %294 = load double, ptr %293, align 8, !tbaa !10
  %295 = load i32, ptr %20, align 4, !tbaa !5
  %296 = add nsw i32 %295, -1
  %297 = mul nsw i32 %296, %32
  %298 = add nsw i32 %297, %295
  %299 = sext i32 %298 to i64
  %300 = getelementptr inbounds %struct.doublecomplex, ptr %34, i64 %299
  %301 = call { double, double } @Cd(ptr noundef %300)
  %302 = extractvalue { double, double } %301, 1
  %303 = insertelement <2 x double> poison, double %289, i64 0
  %304 = insertelement <2 x double> %303, double %294, i64 1
  %305 = fcmp oge <2 x double> %304, zeroinitializer
  %306 = fneg <2 x double> %304
  %307 = select <2 x i1> %305, <2 x double> %304, <2 x double> %306
  %308 = insertelement <2 x double> poison, double %291, i64 0
  %309 = insertelement <2 x double> %308, double %302, i64 1
  %310 = fcmp oge <2 x double> %309, zeroinitializer
  %311 = fneg <2 x double> %309
  %312 = select <2 x i1> %310, <2 x double> %309, <2 x double> %311
  %313 = fadd <2 x double> %307, %312
  %shift = shufflevector <2 x double> %313, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %314 = fadd <2 x double> %313, %shift
  %315 = sext i32 %285 to i64
  %316 = getelementptr inbounds %struct.doublecomplex, ptr %34, i64 %315
  %317 = load double, ptr %316, align 8, !tbaa !10
  %318 = load i32, ptr %20, align 4, !tbaa !5
  %319 = add nsw i32 %318, -1
  %320 = mul nsw i32 %318, %32
  %321 = add nsw i32 %319, %320
  %322 = sext i32 %321 to i64
  %323 = getelementptr inbounds %struct.doublecomplex, ptr %34, i64 %322
  %324 = call { double, double } @Cd(ptr noundef %323)
  %325 = extractvalue { double, double } %324, 1
  %326 = sext i32 %286 to i64
  %327 = getelementptr inbounds %struct.doublecomplex, ptr %34, i64 %326
  %328 = load double, ptr %327, align 8, !tbaa !10
  %329 = load i32, ptr %20, align 4, !tbaa !5
  %330 = mul i32 %329, %110
  %331 = sext i32 %330 to i64
  %332 = getelementptr inbounds %struct.doublecomplex, ptr %34, i64 %331
  %333 = call { double, double } @Cd(ptr noundef %332)
  %334 = extractvalue { double, double } %333, 1
  %335 = insertelement <2 x double> poison, double %317, i64 0
  %336 = insertelement <2 x double> %335, double %328, i64 1
  %337 = fcmp oge <2 x double> %336, zeroinitializer
  %338 = fneg <2 x double> %336
  %339 = select <2 x i1> %337, <2 x double> %336, <2 x double> %338
  %340 = insertelement <2 x double> poison, double %325, i64 0
  %341 = insertelement <2 x double> %340, double %334, i64 1
  %342 = fcmp oge <2 x double> %341, zeroinitializer
  %343 = fneg <2 x double> %341
  %344 = select <2 x i1> %342, <2 x double> %341, <2 x double> %343
  %345 = fadd <2 x double> %339, %344
  %346 = fadd <2 x double> %314, %345
  %shift694 = shufflevector <2 x double> %345, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %347 = fadd <2 x double> %346, %shift694
  %348 = extractelement <2 x double> %347, i64 0
  %349 = load i32, ptr %20, align 4, !tbaa !5
  %350 = add nsw i32 %349, -1
  %351 = mul i32 %350, %110
  %352 = sext i32 %351 to i64
  %353 = getelementptr inbounds %struct.doublecomplex, ptr %34, i64 %352
  %354 = mul nsw i32 %350, %32
  %355 = add nsw i32 %354, %349
  %356 = sext i32 %355 to i64
  %357 = getelementptr inbounds %struct.doublecomplex, ptr %34, i64 %356
  %358 = mul nsw i32 %349, %32
  %359 = add nsw i32 %350, %358
  %360 = sext i32 %359 to i64
  %361 = getelementptr inbounds %struct.doublecomplex, ptr %34, i64 %360
  %362 = load double, ptr %361, align 8, !tbaa !10
  %363 = fdiv double %362, %348
  %364 = getelementptr inbounds i8, ptr %361, i64 8
  %365 = load double, ptr %364, align 8, !tbaa !13
  %366 = fdiv double %365, %348
  %367 = mul i32 %349, %110
  %368 = sext i32 %367 to i64
  %369 = getelementptr inbounds %struct.doublecomplex, ptr %34, i64 %368
  %370 = load <2 x double>, ptr %353, align 8, !tbaa !17
  %371 = shufflevector <2 x double> %347, <2 x double> poison, <2 x i32> zeroinitializer
  %372 = fdiv <2 x double> %370, %371
  %373 = load <2 x double>, ptr %369, align 8, !tbaa !17
  %374 = fdiv <2 x double> %373, %371
  %375 = fadd <2 x double> %372, %374
  %376 = fmul <2 x double> %375, <double 5.000000e-01, double 5.000000e-01>
  %377 = fsub <2 x double> %372, %376
  store <2 x double> %377, ptr %19, align 16, !tbaa !17
  %378 = fneg double %366
  %379 = load <2 x double>, ptr %357, align 8, !tbaa !17
  %380 = fdiv <2 x double> %379, %371
  %381 = fsub <2 x double> %374, %376
  %382 = shufflevector <2 x double> %377, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %383 = fneg <2 x double> %377
  %384 = shufflevector <2 x double> %382, <2 x double> %383, <2 x i32> <i32 0, i32 3>
  %385 = fmul <2 x double> %381, %384
  %386 = shufflevector <2 x double> %385, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %387 = shufflevector <2 x double> %377, <2 x double> poison, <2 x i32> zeroinitializer
  %388 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %387, <2 x double> %381, <2 x double> %386)
  %389 = insertelement <2 x double> poison, double %366, i64 0
  %390 = insertelement <2 x double> %389, double %378, i64 1
  %391 = fmul <2 x double> %380, %390
  %392 = shufflevector <2 x double> %391, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %393 = insertelement <2 x double> poison, double %363, i64 0
  %394 = shufflevector <2 x double> %393, <2 x double> poison, <2 x i32> zeroinitializer
  %395 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %394, <2 x double> %380, <2 x double> %392)
  %396 = fsub <2 x double> %388, %395
  store <2 x double> %396, ptr %17, align 16, !tbaa !17
  %397 = fneg <2 x double> %396
  store <2 x double> %397, ptr %18, align 16, !tbaa !17
  %398 = call { double, double } @Cd(ptr noundef nonnull %18)
  %399 = extractvalue { double, double } %398, 0
  %400 = extractvalue { double, double } %398, 1
  %401 = call { double, double } @csqrt(double noundef %399, double noundef %400) #6
  %402 = extractvalue { double, double } %401, 0
  %403 = extractvalue { double, double } %401, 1
  %404 = call ptr @_pCd(ptr noundef nonnull %17)
  %405 = getelementptr inbounds i8, ptr %404, i64 8
  store double %402, ptr %404, align 8
  store double %403, ptr %405, align 8
  %406 = load i32, ptr %20, align 4, !tbaa !5
  %407 = sext i32 %406 to i64
  %408 = getelementptr %struct.doublecomplex, ptr %35, i64 %407
  %409 = getelementptr i8, ptr %408, i64 -16
  %410 = load <2 x double>, ptr %17, align 16, !tbaa !17
  %411 = fadd <2 x double> %376, %410
  %412 = fmul <2 x double> %371, %411
  store <2 x double> %412, ptr %409, align 8, !tbaa !17
  %413 = fsub <2 x double> %376, %410
  store <2 x double> %413, ptr %18, align 16, !tbaa !17
  %414 = fmul <2 x double> %371, %413
  store <2 x double> %414, ptr %17, align 16, !tbaa !17
  store <2 x double> %414, ptr %408, align 8, !tbaa !17
  %415 = add nsw i32 %406, -1
  br label %416

416:                                              ; preds = %263, %279, %261
  %417 = phi i32 [ %406, %279 ], [ %278, %263 ], [ %207, %261 ]
  %.0582 = phi i32 [ %415, %279 ], [ %277, %263 ], [ %210, %261 ]
  %418 = sub nsw i32 %417, %.0582
  %419 = load i32, ptr %26, align 4, !tbaa !5
  %.not624 = icmp slt i32 %418, %419
  %420 = icmp sle i32 %417, %.0582
  %or.cond659 = or i1 %.not624, %420
  br i1 %or.cond659, label %.loopexit, label %.preheader.preheader

.preheader.preheader:                             ; preds = %416
  %421 = sext i32 %.0582 to i64
  %422 = sext i32 %417 to i64
  br label %.preheader

.preheader:                                       ; preds = %.preheader.preheader, %452
  %indvars.iv668 = phi i64 [ %422, %.preheader.preheader ], [ %indvars.iv.next669, %452 ]
  br label %423

423:                                              ; preds = %.preheader, %451
  %indvars.iv664 = phi i64 [ %421, %.preheader ], [ %indvars.iv.next665, %451 ]
  %.1646 = phi i32 [ 1, %.preheader ], [ %.2, %451 ]
  %indvars.iv.next665 = add nsw i64 %indvars.iv664, 1
  %424 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %indvars.iv664
  %425 = load double, ptr %424, align 8, !tbaa !10
  %426 = call { double, double } @Cd(ptr noundef nonnull %424)
  %427 = extractvalue { double, double } %426, 1
  %428 = insertelement <2 x double> poison, double %425, i64 0
  %429 = insertelement <2 x double> %428, double %427, 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
  %433 = getelementptr %struct.doublecomplex, ptr %7, i64 %indvars.iv664
  %434 = load double, ptr %433, align 8, !tbaa !10
  %435 = call { double, double } @Cd(ptr noundef nonnull %433)
  %436 = extractvalue { double, double } %435, 1
  %437 = insertelement <2 x double> poison, double %434, i64 0
  %438 = insertelement <2 x double> %437, double %436, i64 1
  %439 = fcmp oge <2 x double> %438, zeroinitializer
  %440 = fneg <2 x double> %438
  %441 = select <2 x i1> %439, <2 x double> %438, <2 x double> %440
  %442 = shufflevector <2 x double> %432, <2 x double> %441, <2 x i32> <i32 0, i32 2>
  %443 = shufflevector <2 x double> %432, <2 x double> %441, <2 x i32> <i32 1, i32 3>
  %444 = fadd <2 x double> %442, %443
  %445 = extractelement <2 x double> %444, i64 0
  %446 = extractelement <2 x double> %444, i64 1
  %447 = fcmp olt double %445, %446
  br i1 %447, label %448, label %451

448:                                              ; preds = %423
  %449 = load <2 x double>, ptr %433, align 8, !tbaa !17
  %450 = load <2 x double>, ptr %424, align 8, !tbaa !17
  store <2 x double> %449, ptr %424, align 8, !tbaa !17
  store <2 x double> %450, ptr %433, align 8, !tbaa !17
  br label %451

451:                                              ; preds = %423, %448
  %.2 = phi i32 [ 0, %448 ], [ %.1646, %423 ]
  %.not625.not = icmp slt i64 %indvars.iv.next665, %indvars.iv668
  br i1 %.not625.not, label %423, label %452, !llvm.loop !18

452:                                              ; preds = %451
  %indvars.iv.next669 = add nsw i64 %indvars.iv668, -1
  %453 = icmp sle i64 %indvars.iv.next669, %421
  %454 = icmp ne i32 %.2, 0
  %or.cond = select i1 %453, i1 true, i1 %454
  br i1 %or.cond, label %.loopexit, label %.preheader, !llvm.loop !19

.loopexit:                                        ; preds = %452, %.lr.ph651, %227, %416
  %.1583 = phi i32 [ %.0582, %416 ], [ %229, %227 ], [ %229, %.lr.ph651 ], [ %.0582, %452 ]
  %455 = load i32, ptr %20, align 4, !tbaa !5
  %456 = sub nsw i32 %455, %.1583
  %457 = icmp eq i32 %456, 1
  br i1 %457, label %458, label %502

458:                                              ; preds = %.loopexit
  %459 = mul i32 %455, %110
  %460 = sext i32 %455 to i64
  %461 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %460
  %462 = sext i32 %459 to i64
  %463 = getelementptr inbounds %struct.doublecomplex, ptr %34, i64 %462
  %464 = load <2 x double>, ptr %461, align 8, !tbaa !17
  %465 = load <2 x double>, ptr %463, align 8, !tbaa !17
  %466 = fsub <2 x double> %464, %465
  store <2 x double> %466, ptr %18, align 16, !tbaa !17
  store <2 x double> %466, ptr %17, align 16, !tbaa !17
  %467 = getelementptr i8, ptr %461, i64 -16
  %468 = load <2 x double>, ptr %467, align 8, !tbaa !17
  %469 = fsub <2 x double> %468, %465
  store <2 x double> %469, ptr %19, align 16, !tbaa !17
  %470 = extractelement <2 x double> %466, i64 0
  %471 = fcmp oge double %470, 0.000000e+00
  %472 = fneg double %470
  %473 = select i1 %471, double %470, double %472
  %474 = call { double, double } @Cd(ptr noundef nonnull %17)
  %475 = extractvalue { double, double } %474, 1
  %476 = fcmp oge double %475, 0.000000e+00
  %477 = fneg double %475
  %478 = select i1 %476, double %475, double %477
  %479 = fadd double %473, %478
  %480 = load <2 x double>, ptr %19, align 16
  %481 = call { double, double } @Cd(ptr noundef nonnull %19)
  %482 = extractvalue { double, double } %481, 1
  %483 = insertelement <2 x double> %480, double %482, i64 1
  %484 = fcmp oge <2 x double> %483, zeroinitializer
  %485 = fneg <2 x double> %483
  %486 = select <2 x i1> %484, <2 x double> %483, <2 x double> %485
  %shift695 = shufflevector <2 x double> %486, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %487 = fadd <2 x double> %486, %shift695
  %488 = extractelement <2 x double> %487, i64 0
  %489 = fcmp olt double %479, %488
  %490 = load i32, ptr %20, align 4, !tbaa !5
  %491 = sext i32 %490 to i64
  %492 = getelementptr %struct.doublecomplex, ptr %35, i64 %491
  br i1 %489, label %493, label %496

493:                                              ; preds = %458
  %494 = load double, ptr %492, align 8, !tbaa !10
  %495 = getelementptr i8, ptr %492, i64 -16
  store double %494, ptr %495, align 8, !tbaa !10
  br label %.sink.split

496:                                              ; preds = %458
  %497 = getelementptr i8, ptr %492, i64 -16
  %498 = load double, ptr %497, align 8, !tbaa !10
  store double %498, ptr %492, align 8, !tbaa !10
  br label %.sink.split

.sink.split:                                      ; preds = %496, %493
  %.sink689 = phi i64 [ 8, %493 ], [ -8, %496 ]
  %.sink687 = phi i64 [ -8, %493 ], [ 8, %496 ]
  %499 = getelementptr i8, ptr %492, i64 %.sink689
  %500 = load double, ptr %499, align 8, !tbaa !13
  %501 = getelementptr i8, ptr %492, i64 %.sink687
  store double %500, ptr %501, align 8, !tbaa !13
  br label %502

502:                                              ; preds = %.sink.split, %.loopexit
  %503 = phi i32 [ %455, %.loopexit ], [ %490, %.sink.split ]
  %504 = load i32, ptr %26, align 4, !tbaa !5
  %reass.sub660 = sub i32 %503, %.1583
  %505 = add i32 %reass.sub660, 1
  %506 = call i32 @llvm.smin.i32(i32 %504, i32 %505)
  %507 = srem i32 %506, 2
  %508 = sub nsw i32 %506, %507
  store i32 %508, ptr %26, align 4, !tbaa !5
  %509 = sub nsw i32 %503, %508
  %510 = shl i32 %508, 1
  %511 = load i32, ptr %2, align 4, !tbaa !5
  %512 = sub nsw i32 %511, %510
  %513 = add nsw i32 %512, 1
  %514 = or disjoint i32 %510, 1
  %515 = add i32 %512, -2
  %516 = sub i32 %515, %514
  store i32 %516, ptr %30, align 4, !tbaa !5
  %517 = add nsw i32 %510, 4
  %.neg636 = add i32 %511, 1
  %518 = shl i32 %508, 2
  %reass.sub661 = sub i32 %.neg636, %518
  %519 = add i32 %reass.sub661, -4
  store i32 %519, ptr %31, align 4, !tbaa !5
  %520 = sext i32 %509 to i64
  %gep = getelementptr %struct.doublecomplex, ptr %7, i64 %520
  %521 = add nsw i32 %513, %32
  %522 = sext i32 %521 to i64
  %523 = getelementptr inbounds %struct.doublecomplex, ptr %34, i64 %522
  %524 = add nsw i32 %517, %32
  %525 = sext i32 %524 to i64
  %526 = getelementptr inbounds %struct.doublecomplex, ptr %34, i64 %525
  %527 = mul nsw i32 %514, %32
  %528 = add nsw i32 %513, %527
  %529 = sext i32 %528 to i64
  %530 = getelementptr inbounds %struct.doublecomplex, ptr %34, i64 %529
  call void @zlaqr5_(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %23, ptr noundef nonnull %2, ptr noundef nonnull %21, ptr noundef nonnull %20, ptr noundef nonnull %26, ptr noundef %gep, 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 %523, ptr noundef nonnull %6, ptr noundef nonnull %31, ptr noundef %526, ptr noundef nonnull %6, ptr noundef nonnull %30, ptr noundef %530, ptr noundef nonnull %6) #6
  %.pre678 = load i32, ptr %24, align 4, !tbaa !5
  br label %531

531:                                              ; preds = %502, %216, %212
  %532 = phi i32 [ %.pre678, %502 ], [ %205, %216 ], [ %205, %212 ]
  %533 = add nsw i32 %.0587653, 1
  %.inv = icmp slt i32 %532, 1
  %.1588 = select i1 %.inv, i32 %533, i32 1
  %534 = add nuw nsw i32 %.0584655, 1
  %535 = load i32, ptr %16, align 4, !tbaa !5
  %.not609.not = icmp slt i32 %.0584655, %535
  br i1 %.not609.not, label %112, label %._crit_edge658.loopexit, !llvm.loop !20

._crit_edge658.loopexit:                          ; preds = %531
  %.pre679 = load i32, ptr %20, align 4, !tbaa !5
  br label %._crit_edge658

._crit_edge658:                                   ; preds = %._crit_edge658.loopexit, %80
  %536 = phi i32 [ %.pre679, %._crit_edge658.loopexit ], [ %93, %80 ]
  store i32 %536, ptr %14, align 4, !tbaa !5
  br label %.loopexit640

.loopexit640:                                     ; preds = %112, %._crit_edge658, %40, %42
  %.0 = phi i32 [ 1, %42 ], [ 1, %40 ], [ %75, %._crit_edge658 ], [ %75, %112 ]
  %537 = uitofp nneg i32 %.0 to double
  br label %538

538:                                              ; preds = %15, %.loopexit640, %78
  %.sink691 = phi double [ %537, %.loopexit640 ], [ %79, %78 ], [ 1.000000e+00, %15 ]
  store double %.sink691, ptr %12, align 8, !tbaa !10
  %539 = getelementptr inbounds i8, ptr %12, i64 8
  store double 0.000000e+00, ptr %539, align 8, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #6
  ret void
}

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

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

declare void @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

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

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

; Function Attrs: nounwind
declare { double, double } @csqrt(double noundef, double noundef) local_unnamed_addr #4

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

declare void @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 i32 @llvm.smax.i32(i32, i32) #5

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x double> @llvm.fmuladd.v2f64(<2 x double>, <2 x double>, <2 x double>) #5

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!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,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,MergedLoadStoreMotionPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass,VectorCombinePass