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

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.doublecomplex = type { double, double }

@c__13 = external hidden global 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 @zlaqr0_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14) #0 {
  %16 = alloca 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 %2003

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

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 @zlaqr3_(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 %2003

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 = %1980, %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 %1983

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

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 @zlaqr3_(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 %1972

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

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

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

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 i32, ptr %81, align 4, !tbaa !9
  %968 = load i32, ptr %56, align 4, !tbaa !9
  %969 = icmp sgt i32 %967, %968
  br i1 %969, label %970, label %986

970:                                              ; preds = %941
  %971 = load ptr, ptr %21, align 8, !tbaa !5
  %972 = load i32, ptr %77, align 4, !tbaa !9
  %973 = load i32, ptr %31, align 4, !tbaa !9
  %974 = add nsw i32 %972, %973
  %975 = sext i32 %974 to i64
  %976 = getelementptr inbounds %struct.doublecomplex, ptr %971, i64 %975
  %977 = load ptr, ptr %22, align 8, !tbaa !5
  %978 = load ptr, ptr %23, align 8, !tbaa !5
  %979 = load i32, ptr %76, align 4, !tbaa !9
  %980 = sext i32 %979 to i64
  %981 = getelementptr inbounds %struct.doublecomplex, ptr %978, i64 %980
  %982 = getelementptr inbounds [1 x %struct.doublecomplex], ptr %59, i64 0, i64 0
  %983 = load ptr, ptr %28, align 8, !tbaa !5
  %984 = getelementptr inbounds %struct.doublecomplex, ptr %983, i64 1
  %985 = load ptr, ptr %29, align 8, !tbaa !5
  call void @zlaqr4_(ptr noundef @c_false, ptr noundef @c_false, ptr noundef %81, ptr noundef @c__1, ptr noundef %81, ptr noundef %976, ptr noundef %977, ptr noundef %981, ptr noundef @c__1, ptr noundef @c__1, ptr noundef %982, ptr noundef @c__1, ptr noundef %984, ptr noundef %985, ptr noundef %90)
  br label %999

986:                                              ; preds = %941
  %987 = load ptr, ptr %21, align 8, !tbaa !5
  %988 = load i32, ptr %77, align 4, !tbaa !9
  %989 = load i32, ptr %31, align 4, !tbaa !9
  %990 = add nsw i32 %988, %989
  %991 = sext i32 %990 to i64
  %992 = getelementptr inbounds %struct.doublecomplex, ptr %987, i64 %991
  %993 = load ptr, ptr %22, align 8, !tbaa !5
  %994 = load ptr, ptr %23, align 8, !tbaa !5
  %995 = load i32, ptr %76, align 4, !tbaa !9
  %996 = sext i32 %995 to i64
  %997 = getelementptr inbounds %struct.doublecomplex, ptr %994, i64 %996
  %998 = 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 %992, ptr noundef %993, ptr noundef %997, ptr noundef @c__1, ptr noundef @c__1, ptr noundef %998, ptr noundef @c__1, ptr noundef %90)
  br label %999

999:                                              ; preds = %986, %970
  %1000 = load i32, ptr %90, align 4, !tbaa !9
  %1001 = load i32, ptr %76, align 4, !tbaa !9
  %1002 = add nsw i32 %1001, %1000
  store i32 %1002, ptr %76, align 4, !tbaa !9
  %1003 = load i32, ptr %76, align 4, !tbaa !9
  %1004 = load i32, ptr %55, align 4, !tbaa !9
  %1005 = icmp sge i32 %1003, %1004
  br i1 %1005, label %1006, label %1522

1006:                                             ; preds = %999
  %1007 = load i32, ptr %55, align 4, !tbaa !9
  %1008 = sub nsw i32 %1007, 1
  %1009 = load i32, ptr %55, align 4, !tbaa !9
  %1010 = sub nsw i32 %1009, 1
  %1011 = load i32, ptr %31, align 4, !tbaa !9
  %1012 = mul nsw i32 %1010, %1011
  %1013 = add nsw i32 %1008, %1012
  store i32 %1013, ptr %36, align 4, !tbaa !9
  %1014 = load i32, ptr %55, align 4, !tbaa !9
  %1015 = load i32, ptr %55, align 4, !tbaa !9
  %1016 = sub nsw i32 %1015, 1
  %1017 = load i32, ptr %31, align 4, !tbaa !9
  %1018 = mul nsw i32 %1016, %1017
  %1019 = add nsw i32 %1014, %1018
  store i32 %1019, ptr %37, align 4, !tbaa !9
  %1020 = load i32, ptr %55, align 4, !tbaa !9
  %1021 = sub nsw i32 %1020, 1
  %1022 = load i32, ptr %55, align 4, !tbaa !9
  %1023 = load i32, ptr %31, align 4, !tbaa !9
  %1024 = mul nsw i32 %1022, %1023
  %1025 = add nsw i32 %1021, %1024
  store i32 %1025, ptr %38, align 4, !tbaa !9
  %1026 = load i32, ptr %55, align 4, !tbaa !9
  %1027 = load i32, ptr %55, align 4, !tbaa !9
  %1028 = load i32, ptr %31, align 4, !tbaa !9
  %1029 = mul nsw i32 %1027, %1028
  %1030 = add nsw i32 %1026, %1029
  store i32 %1030, ptr %39, align 4, !tbaa !9
  %1031 = load ptr, ptr %21, align 8, !tbaa !5
  %1032 = load i32, ptr %36, align 4, !tbaa !9
  %1033 = sext i32 %1032 to i64
  %1034 = getelementptr inbounds %struct.doublecomplex, ptr %1031, i64 %1033
  %1035 = getelementptr inbounds %struct.doublecomplex, ptr %1034, i32 0, i32 0
  %1036 = load double, ptr %1035, align 8, !tbaa !11
  store double %1036, ptr %40, align 8, !tbaa !16
  %1037 = load double, ptr %40, align 8, !tbaa !16
  %1038 = fcmp oge double %1037, 0.000000e+00
  br i1 %1038, label %1039, label %1041

1039:                                             ; preds = %1006
  %1040 = load double, ptr %40, align 8, !tbaa !16
  br label %1044

1041:                                             ; preds = %1006
  %1042 = load double, ptr %40, align 8, !tbaa !16
  %1043 = fneg double %1042
  br label %1044

1044:                                             ; preds = %1041, %1039
  %1045 = phi double [ %1040, %1039 ], [ %1043, %1041 ]
  %1046 = load ptr, ptr %21, align 8, !tbaa !5
  %1047 = load i32, ptr %55, align 4, !tbaa !9
  %1048 = sub nsw i32 %1047, 1
  %1049 = load i32, ptr %55, align 4, !tbaa !9
  %1050 = sub nsw i32 %1049, 1
  %1051 = load i32, ptr %31, align 4, !tbaa !9
  %1052 = mul nsw i32 %1050, %1051
  %1053 = add nsw i32 %1048, %1052
  %1054 = sext i32 %1053 to i64
  %1055 = getelementptr inbounds %struct.doublecomplex, ptr %1046, i64 %1054
  %1056 = call { double, double } @Cd(ptr noundef %1055)
  %1057 = extractvalue { double, double } %1056, 0
  %1058 = extractvalue { double, double } %1056, 1
  store double %1058, ptr %41, align 8, !tbaa !16
  %1059 = load double, ptr %41, align 8, !tbaa !16
  %1060 = fcmp oge double %1059, 0.000000e+00
  br i1 %1060, label %1061, label %1063

1061:                                             ; preds = %1044
  %1062 = load double, ptr %41, align 8, !tbaa !16
  br label %1066

1063:                                             ; preds = %1044
  %1064 = load double, ptr %41, align 8, !tbaa !16
  %1065 = fneg double %1064
  br label %1066

1066:                                             ; preds = %1063, %1061
  %1067 = phi double [ %1062, %1061 ], [ %1065, %1063 ]
  %1068 = fadd double %1045, %1067
  %1069 = load ptr, ptr %21, align 8, !tbaa !5
  %1070 = load i32, ptr %37, align 4, !tbaa !9
  %1071 = sext i32 %1070 to i64
  %1072 = getelementptr inbounds %struct.doublecomplex, ptr %1069, i64 %1071
  %1073 = getelementptr inbounds %struct.doublecomplex, ptr %1072, i32 0, i32 0
  %1074 = load double, ptr %1073, align 8, !tbaa !11
  store double %1074, ptr %42, align 8, !tbaa !16
  %1075 = load double, ptr %42, align 8, !tbaa !16
  %1076 = fcmp oge double %1075, 0.000000e+00
  br i1 %1076, label %1077, label %1079

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

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

1082:                                             ; preds = %1079, %1077
  %1083 = phi double [ %1078, %1077 ], [ %1081, %1079 ]
  %1084 = load ptr, ptr %21, align 8, !tbaa !5
  %1085 = load i32, ptr %55, align 4, !tbaa !9
  %1086 = load i32, ptr %55, align 4, !tbaa !9
  %1087 = sub nsw i32 %1086, 1
  %1088 = load i32, ptr %31, align 4, !tbaa !9
  %1089 = mul nsw i32 %1087, %1088
  %1090 = add nsw i32 %1085, %1089
  %1091 = sext i32 %1090 to i64
  %1092 = getelementptr inbounds %struct.doublecomplex, ptr %1084, i64 %1091
  %1093 = call { double, double } @Cd(ptr noundef %1092)
  %1094 = extractvalue { double, double } %1093, 0
  %1095 = extractvalue { double, double } %1093, 1
  store double %1095, ptr %43, align 8, !tbaa !16
  %1096 = load double, ptr %43, align 8, !tbaa !16
  %1097 = fcmp oge double %1096, 0.000000e+00
  br i1 %1097, label %1098, label %1100

1098:                                             ; preds = %1082
  %1099 = load double, ptr %43, align 8, !tbaa !16
  br label %1103

1100:                                             ; preds = %1082
  %1101 = load double, ptr %43, align 8, !tbaa !16
  %1102 = fneg double %1101
  br label %1103

1103:                                             ; preds = %1100, %1098
  %1104 = phi double [ %1099, %1098 ], [ %1102, %1100 ]
  %1105 = fadd double %1083, %1104
  %1106 = fadd double %1068, %1105
  %1107 = load ptr, ptr %21, align 8, !tbaa !5
  %1108 = load i32, ptr %38, align 4, !tbaa !9
  %1109 = sext i32 %1108 to i64
  %1110 = getelementptr inbounds %struct.doublecomplex, ptr %1107, i64 %1109
  %1111 = getelementptr inbounds %struct.doublecomplex, ptr %1110, i32 0, i32 0
  %1112 = load double, ptr %1111, align 8, !tbaa !11
  store double %1112, ptr %44, align 8, !tbaa !16
  %1113 = load double, ptr %44, align 8, !tbaa !16
  %1114 = fcmp oge double %1113, 0.000000e+00
  br i1 %1114, label %1115, label %1117

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

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

1120:                                             ; preds = %1117, %1115
  %1121 = phi double [ %1116, %1115 ], [ %1119, %1117 ]
  %1122 = load ptr, ptr %21, align 8, !tbaa !5
  %1123 = load i32, ptr %55, align 4, !tbaa !9
  %1124 = sub nsw i32 %1123, 1
  %1125 = load i32, ptr %55, align 4, !tbaa !9
  %1126 = load i32, ptr %31, align 4, !tbaa !9
  %1127 = mul nsw i32 %1125, %1126
  %1128 = add nsw i32 %1124, %1127
  %1129 = sext i32 %1128 to i64
  %1130 = getelementptr inbounds %struct.doublecomplex, ptr %1122, i64 %1129
  %1131 = call { double, double } @Cd(ptr noundef %1130)
  %1132 = extractvalue { double, double } %1131, 0
  %1133 = extractvalue { double, double } %1131, 1
  store double %1133, ptr %45, align 8, !tbaa !16
  %1134 = load double, ptr %45, align 8, !tbaa !16
  %1135 = fcmp oge double %1134, 0.000000e+00
  br i1 %1135, label %1136, label %1138

1136:                                             ; preds = %1120
  %1137 = load double, ptr %45, align 8, !tbaa !16
  br label %1141

1138:                                             ; preds = %1120
  %1139 = load double, ptr %45, align 8, !tbaa !16
  %1140 = fneg double %1139
  br label %1141

1141:                                             ; preds = %1138, %1136
  %1142 = phi double [ %1137, %1136 ], [ %1140, %1138 ]
  %1143 = fadd double %1121, %1142
  %1144 = fadd double %1106, %1143
  %1145 = load ptr, ptr %21, align 8, !tbaa !5
  %1146 = load i32, ptr %39, align 4, !tbaa !9
  %1147 = sext i32 %1146 to i64
  %1148 = getelementptr inbounds %struct.doublecomplex, ptr %1145, i64 %1147
  %1149 = getelementptr inbounds %struct.doublecomplex, ptr %1148, i32 0, i32 0
  %1150 = load double, ptr %1149, align 8, !tbaa !11
  store double %1150, ptr %46, align 8, !tbaa !16
  %1151 = load double, ptr %46, align 8, !tbaa !16
  %1152 = fcmp oge double %1151, 0.000000e+00
  br i1 %1152, label %1153, label %1155

1153:                                             ; preds = %1141
  %1154 = load double, ptr %46, align 8, !tbaa !16
  br label %1158

1155:                                             ; preds = %1141
  %1156 = load double, ptr %46, align 8, !tbaa !16
  %1157 = fneg double %1156
  br label %1158

1158:                                             ; preds = %1155, %1153
  %1159 = phi double [ %1154, %1153 ], [ %1157, %1155 ]
  %1160 = load ptr, ptr %21, align 8, !tbaa !5
  %1161 = load i32, ptr %55, align 4, !tbaa !9
  %1162 = load i32, ptr %55, align 4, !tbaa !9
  %1163 = load i32, ptr %31, align 4, !tbaa !9
  %1164 = mul nsw i32 %1162, %1163
  %1165 = add nsw i32 %1161, %1164
  %1166 = sext i32 %1165 to i64
  %1167 = getelementptr inbounds %struct.doublecomplex, ptr %1160, i64 %1166
  %1168 = call { double, double } @Cd(ptr noundef %1167)
  %1169 = extractvalue { double, double } %1168, 0
  %1170 = extractvalue { double, double } %1168, 1
  store double %1170, ptr %47, align 8, !tbaa !16
  %1171 = load double, ptr %47, align 8, !tbaa !16
  %1172 = fcmp oge double %1171, 0.000000e+00
  br i1 %1172, label %1173, label %1175

1173:                                             ; preds = %1158
  %1174 = load double, ptr %47, align 8, !tbaa !16
  br label %1178

1175:                                             ; preds = %1158
  %1176 = load double, ptr %47, align 8, !tbaa !16
  %1177 = fneg double %1176
  br label %1178

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

1522:                                             ; preds = %1178, %999
  br label %1523

1523:                                             ; preds = %1522, %933
  %1524 = load i32, ptr %55, align 4, !tbaa !9
  %1525 = load i32, ptr %76, align 4, !tbaa !9
  %1526 = sub nsw i32 %1524, %1525
  %1527 = add nsw i32 %1526, 1
  %1528 = load i32, ptr %81, align 4, !tbaa !9
  %1529 = icmp sgt i32 %1527, %1528
  br i1 %1529, label %1530, label %1687

1530:                                             ; preds = %1523
  store i32 0, ptr %86, align 4, !tbaa !9
  %1531 = load i32, ptr %76, align 4, !tbaa !9
  %1532 = add nsw i32 %1531, 1
  store i32 %1532, ptr %36, align 4, !tbaa !9
  %1533 = load i32, ptr %55, align 4, !tbaa !9
  store i32 %1533, ptr %62, align 4, !tbaa !9
  br label %1534

1534:                                             ; preds = %1682, %1530
  %1535 = load i32, ptr %62, align 4, !tbaa !9
  %1536 = load i32, ptr %36, align 4, !tbaa !9
  %1537 = icmp sge i32 %1535, %1536
  br i1 %1537, label %1538, label %1685

1538:                                             ; preds = %1534
  %1539 = load i32, ptr %86, align 4, !tbaa !9
  %1540 = icmp ne i32 %1539, 0
  br i1 %1540, label %1541, label %1542

1541:                                             ; preds = %1538
  br label %1686

1542:                                             ; preds = %1538
  store i32 1, ptr %86, align 4, !tbaa !9
  %1543 = load i32, ptr %62, align 4, !tbaa !9
  %1544 = sub nsw i32 %1543, 1
  store i32 %1544, ptr %37, align 4, !tbaa !9
  %1545 = load i32, ptr %76, align 4, !tbaa !9
  store i32 %1545, ptr %61, align 4, !tbaa !9
  br label %1546

1546:                                             ; preds = %1678, %1542
  %1547 = load i32, ptr %61, align 4, !tbaa !9
  %1548 = load i32, ptr %37, align 4, !tbaa !9
  %1549 = icmp sle i32 %1547, %1548
  br i1 %1549, label %1550, label %1681

1550:                                             ; preds = %1546
  %1551 = load i32, ptr %61, align 4, !tbaa !9
  store i32 %1551, ptr %38, align 4, !tbaa !9
  %1552 = load i32, ptr %61, align 4, !tbaa !9
  %1553 = add nsw i32 %1552, 1
  store i32 %1553, ptr %39, align 4, !tbaa !9
  %1554 = load ptr, ptr %23, align 8, !tbaa !5
  %1555 = load i32, ptr %38, align 4, !tbaa !9
  %1556 = sext i32 %1555 to i64
  %1557 = getelementptr inbounds %struct.doublecomplex, ptr %1554, i64 %1556
  %1558 = getelementptr inbounds %struct.doublecomplex, ptr %1557, i32 0, i32 0
  %1559 = load double, ptr %1558, align 8, !tbaa !11
  store double %1559, ptr %40, align 8, !tbaa !16
  %1560 = load double, ptr %40, align 8, !tbaa !16
  %1561 = fcmp oge double %1560, 0.000000e+00
  br i1 %1561, label %1562, label %1564

1562:                                             ; preds = %1550
  %1563 = load double, ptr %40, align 8, !tbaa !16
  br label %1567

1564:                                             ; preds = %1550
  %1565 = load double, ptr %40, align 8, !tbaa !16
  %1566 = fneg double %1565
  br label %1567

1567:                                             ; preds = %1564, %1562
  %1568 = phi double [ %1563, %1562 ], [ %1566, %1564 ]
  %1569 = load ptr, ptr %23, align 8, !tbaa !5
  %1570 = load i32, ptr %61, align 4, !tbaa !9
  %1571 = sext i32 %1570 to i64
  %1572 = getelementptr inbounds %struct.doublecomplex, ptr %1569, i64 %1571
  %1573 = call { double, double } @Cd(ptr noundef %1572)
  %1574 = extractvalue { double, double } %1573, 0
  %1575 = extractvalue { double, double } %1573, 1
  store double %1575, ptr %41, align 8, !tbaa !16
  %1576 = load double, ptr %41, align 8, !tbaa !16
  %1577 = fcmp oge double %1576, 0.000000e+00
  br i1 %1577, label %1578, label %1580

1578:                                             ; preds = %1567
  %1579 = load double, ptr %41, align 8, !tbaa !16
  br label %1583

1580:                                             ; preds = %1567
  %1581 = load double, ptr %41, align 8, !tbaa !16
  %1582 = fneg double %1581
  br label %1583

1583:                                             ; preds = %1580, %1578
  %1584 = phi double [ %1579, %1578 ], [ %1582, %1580 ]
  %1585 = fadd double %1568, %1584
  %1586 = load ptr, ptr %23, align 8, !tbaa !5
  %1587 = load i32, ptr %39, align 4, !tbaa !9
  %1588 = sext i32 %1587 to i64
  %1589 = getelementptr inbounds %struct.doublecomplex, ptr %1586, i64 %1588
  %1590 = getelementptr inbounds %struct.doublecomplex, ptr %1589, i32 0, i32 0
  %1591 = load double, ptr %1590, align 8, !tbaa !11
  store double %1591, ptr %42, align 8, !tbaa !16
  %1592 = load double, ptr %42, align 8, !tbaa !16
  %1593 = fcmp oge double %1592, 0.000000e+00
  br i1 %1593, label %1594, label %1596

1594:                                             ; preds = %1583
  %1595 = load double, ptr %42, align 8, !tbaa !16
  br label %1599

1596:                                             ; preds = %1583
  %1597 = load double, ptr %42, align 8, !tbaa !16
  %1598 = fneg double %1597
  br label %1599

1599:                                             ; preds = %1596, %1594
  %1600 = phi double [ %1595, %1594 ], [ %1598, %1596 ]
  %1601 = load ptr, ptr %23, align 8, !tbaa !5
  %1602 = load i32, ptr %61, align 4, !tbaa !9
  %1603 = add nsw i32 %1602, 1
  %1604 = sext i32 %1603 to i64
  %1605 = getelementptr inbounds %struct.doublecomplex, ptr %1601, i64 %1604
  %1606 = call { double, double } @Cd(ptr noundef %1605)
  %1607 = extractvalue { double, double } %1606, 0
  %1608 = extractvalue { double, double } %1606, 1
  store double %1608, ptr %43, align 8, !tbaa !16
  %1609 = load double, ptr %43, align 8, !tbaa !16
  %1610 = fcmp oge double %1609, 0.000000e+00
  br i1 %1610, label %1611, label %1613

1611:                                             ; preds = %1599
  %1612 = load double, ptr %43, align 8, !tbaa !16
  br label %1616

1613:                                             ; preds = %1599
  %1614 = load double, ptr %43, align 8, !tbaa !16
  %1615 = fneg double %1614
  br label %1616

1616:                                             ; preds = %1613, %1611
  %1617 = phi double [ %1612, %1611 ], [ %1615, %1613 ]
  %1618 = fadd double %1600, %1617
  %1619 = fcmp olt double %1585, %1618
  br i1 %1619, label %1620, label %1677

1620:                                             ; preds = %1616
  store i32 0, ptr %86, align 4, !tbaa !9
  %1621 = load i32, ptr %61, align 4, !tbaa !9
  store i32 %1621, ptr %38, align 4, !tbaa !9
  %1622 = load ptr, ptr %23, align 8, !tbaa !5
  %1623 = load i32, ptr %38, align 4, !tbaa !9
  %1624 = sext i32 %1623 to i64
  %1625 = getelementptr inbounds %struct.doublecomplex, ptr %1622, i64 %1624
  %1626 = getelementptr inbounds %struct.doublecomplex, ptr %1625, i32 0, i32 0
  %1627 = load double, ptr %1626, align 8, !tbaa !11
  %1628 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  store double %1627, ptr %1628, align 8, !tbaa !11
  %1629 = load ptr, ptr %23, align 8, !tbaa !5
  %1630 = load i32, ptr %38, 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 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  store double %1634, ptr %1635, align 8, !tbaa !14
  %1636 = load i32, ptr %61, align 4, !tbaa !9
  store i32 %1636, ptr %38, align 4, !tbaa !9
  %1637 = load i32, ptr %61, align 4, !tbaa !9
  %1638 = add nsw i32 %1637, 1
  store i32 %1638, ptr %39, align 4, !tbaa !9
  %1639 = load ptr, ptr %23, align 8, !tbaa !5
  %1640 = load i32, ptr %39, align 4, !tbaa !9
  %1641 = sext i32 %1640 to i64
  %1642 = getelementptr inbounds %struct.doublecomplex, ptr %1639, i64 %1641
  %1643 = getelementptr inbounds %struct.doublecomplex, ptr %1642, i32 0, i32 0
  %1644 = load double, ptr %1643, align 8, !tbaa !11
  %1645 = load ptr, ptr %23, align 8, !tbaa !5
  %1646 = load i32, ptr %38, align 4, !tbaa !9
  %1647 = sext i32 %1646 to i64
  %1648 = getelementptr inbounds %struct.doublecomplex, ptr %1645, i64 %1647
  %1649 = getelementptr inbounds %struct.doublecomplex, ptr %1648, i32 0, i32 0
  store double %1644, ptr %1649, align 8, !tbaa !11
  %1650 = load ptr, ptr %23, align 8, !tbaa !5
  %1651 = load i32, ptr %39, align 4, !tbaa !9
  %1652 = sext i32 %1651 to i64
  %1653 = getelementptr inbounds %struct.doublecomplex, ptr %1650, i64 %1652
  %1654 = getelementptr inbounds %struct.doublecomplex, ptr %1653, i32 0, i32 1
  %1655 = load double, ptr %1654, align 8, !tbaa !14
  %1656 = load ptr, ptr %23, align 8, !tbaa !5
  %1657 = load i32, ptr %38, align 4, !tbaa !9
  %1658 = sext i32 %1657 to i64
  %1659 = getelementptr inbounds %struct.doublecomplex, ptr %1656, i64 %1658
  %1660 = getelementptr inbounds %struct.doublecomplex, ptr %1659, i32 0, i32 1
  store double %1655, ptr %1660, align 8, !tbaa !14
  %1661 = load i32, ptr %61, align 4, !tbaa !9
  %1662 = add nsw i32 %1661, 1
  store i32 %1662, ptr %38, align 4, !tbaa !9
  %1663 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  %1664 = load double, ptr %1663, align 8, !tbaa !11
  %1665 = load ptr, ptr %23, align 8, !tbaa !5
  %1666 = load i32, ptr %38, align 4, !tbaa !9
  %1667 = sext i32 %1666 to i64
  %1668 = getelementptr inbounds %struct.doublecomplex, ptr %1665, i64 %1667
  %1669 = getelementptr inbounds %struct.doublecomplex, ptr %1668, i32 0, i32 0
  store double %1664, ptr %1669, align 8, !tbaa !11
  %1670 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  %1671 = load double, ptr %1670, align 8, !tbaa !14
  %1672 = load ptr, ptr %23, align 8, !tbaa !5
  %1673 = load i32, ptr %38, align 4, !tbaa !9
  %1674 = sext i32 %1673 to i64
  %1675 = getelementptr inbounds %struct.doublecomplex, ptr %1672, i64 %1674
  %1676 = getelementptr inbounds %struct.doublecomplex, ptr %1675, i32 0, i32 1
  store double %1671, ptr %1676, align 8, !tbaa !14
  br label %1677

1677:                                             ; preds = %1620, %1616
  br label %1678

1678:                                             ; preds = %1677
  %1679 = load i32, ptr %61, align 4, !tbaa !9
  %1680 = add nsw i32 %1679, 1
  store i32 %1680, ptr %61, align 4, !tbaa !9
  br label %1546, !llvm.loop !20

1681:                                             ; preds = %1546
  br label %1682

1682:                                             ; preds = %1681
  %1683 = load i32, ptr %62, align 4, !tbaa !9
  %1684 = add nsw i32 %1683, -1
  store i32 %1684, ptr %62, align 4, !tbaa !9
  br label %1534, !llvm.loop !21

1685:                                             ; preds = %1534
  br label %1686

1686:                                             ; preds = %1685, %1541
  br label %1687

1687:                                             ; preds = %1686, %1523
  br label %1688

1688:                                             ; preds = %1687, %932
  %1689 = load i32, ptr %55, align 4, !tbaa !9
  %1690 = load i32, ptr %76, align 4, !tbaa !9
  %1691 = sub nsw i32 %1689, %1690
  %1692 = add nsw i32 %1691, 1
  %1693 = icmp eq i32 %1692, 2
  br i1 %1693, label %1694, label %1878

1694:                                             ; preds = %1688
  %1695 = load i32, ptr %55, align 4, !tbaa !9
  store i32 %1695, ptr %36, align 4, !tbaa !9
  %1696 = load i32, ptr %55, align 4, !tbaa !9
  %1697 = load i32, ptr %55, align 4, !tbaa !9
  %1698 = load i32, ptr %31, align 4, !tbaa !9
  %1699 = mul nsw i32 %1697, %1698
  %1700 = add nsw i32 %1696, %1699
  store i32 %1700, ptr %37, align 4, !tbaa !9
  %1701 = load ptr, ptr %23, align 8, !tbaa !5
  %1702 = load i32, ptr %36, align 4, !tbaa !9
  %1703 = sext i32 %1702 to i64
  %1704 = getelementptr inbounds %struct.doublecomplex, ptr %1701, i64 %1703
  %1705 = getelementptr inbounds %struct.doublecomplex, ptr %1704, i32 0, i32 0
  %1706 = load double, ptr %1705, align 8, !tbaa !11
  %1707 = load ptr, ptr %21, align 8, !tbaa !5
  %1708 = load i32, ptr %37, align 4, !tbaa !9
  %1709 = sext i32 %1708 to i64
  %1710 = getelementptr inbounds %struct.doublecomplex, ptr %1707, i64 %1709
  %1711 = getelementptr inbounds %struct.doublecomplex, ptr %1710, i32 0, i32 0
  %1712 = load double, ptr %1711, align 8, !tbaa !11
  %1713 = fsub double %1706, %1712
  %1714 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  store double %1713, ptr %1714, align 8, !tbaa !11
  %1715 = load ptr, ptr %23, align 8, !tbaa !5
  %1716 = load i32, ptr %36, align 4, !tbaa !9
  %1717 = sext i32 %1716 to i64
  %1718 = getelementptr inbounds %struct.doublecomplex, ptr %1715, i64 %1717
  %1719 = getelementptr inbounds %struct.doublecomplex, ptr %1718, i32 0, i32 1
  %1720 = load double, ptr %1719, align 8, !tbaa !14
  %1721 = load ptr, ptr %21, align 8, !tbaa !5
  %1722 = load i32, ptr %37, 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 1
  %1726 = load double, ptr %1725, align 8, !tbaa !14
  %1727 = fsub double %1720, %1726
  %1728 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  store double %1727, ptr %1728, align 8, !tbaa !14
  %1729 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  %1730 = load double, ptr %1729, align 8, !tbaa !11
  %1731 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  store double %1730, ptr %1731, align 8, !tbaa !11
  %1732 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  %1733 = load double, ptr %1732, align 8, !tbaa !14
  %1734 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  store double %1733, ptr %1734, align 8, !tbaa !14
  %1735 = load i32, ptr %55, align 4, !tbaa !9
  %1736 = sub nsw i32 %1735, 1
  store i32 %1736, ptr %38, align 4, !tbaa !9
  %1737 = load i32, ptr %55, align 4, !tbaa !9
  %1738 = load i32, ptr %55, align 4, !tbaa !9
  %1739 = load i32, ptr %31, align 4, !tbaa !9
  %1740 = mul nsw i32 %1738, %1739
  %1741 = add nsw i32 %1737, %1740
  store i32 %1741, ptr %39, align 4, !tbaa !9
  %1742 = load ptr, ptr %23, align 8, !tbaa !5
  %1743 = load i32, ptr %38, align 4, !tbaa !9
  %1744 = sext i32 %1743 to i64
  %1745 = getelementptr inbounds %struct.doublecomplex, ptr %1742, i64 %1744
  %1746 = getelementptr inbounds %struct.doublecomplex, ptr %1745, i32 0, i32 0
  %1747 = load double, ptr %1746, align 8, !tbaa !11
  %1748 = load ptr, ptr %21, align 8, !tbaa !5
  %1749 = load i32, ptr %39, align 4, !tbaa !9
  %1750 = sext i32 %1749 to i64
  %1751 = getelementptr inbounds %struct.doublecomplex, ptr %1748, i64 %1750
  %1752 = getelementptr inbounds %struct.doublecomplex, ptr %1751, i32 0, i32 0
  %1753 = load double, ptr %1752, align 8, !tbaa !11
  %1754 = fsub double %1747, %1753
  %1755 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  store double %1754, ptr %1755, align 8, !tbaa !11
  %1756 = load ptr, ptr %23, align 8, !tbaa !5
  %1757 = load i32, ptr %38, align 4, !tbaa !9
  %1758 = sext i32 %1757 to i64
  %1759 = getelementptr inbounds %struct.doublecomplex, ptr %1756, i64 %1758
  %1760 = getelementptr inbounds %struct.doublecomplex, ptr %1759, i32 0, i32 1
  %1761 = load double, ptr %1760, align 8, !tbaa !14
  %1762 = load ptr, ptr %21, align 8, !tbaa !5
  %1763 = load i32, ptr %39, align 4, !tbaa !9
  %1764 = sext i32 %1763 to i64
  %1765 = getelementptr inbounds %struct.doublecomplex, ptr %1762, i64 %1764
  %1766 = getelementptr inbounds %struct.doublecomplex, ptr %1765, i32 0, i32 1
  %1767 = load double, ptr %1766, align 8, !tbaa !14
  %1768 = fsub double %1761, %1767
  %1769 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  store double %1768, ptr %1769, align 8, !tbaa !14
  %1770 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %1771 = load double, ptr %1770, align 8, !tbaa !11
  %1772 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  store double %1771, ptr %1772, align 8, !tbaa !11
  %1773 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  %1774 = load double, ptr %1773, align 8, !tbaa !14
  %1775 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 1
  store double %1774, ptr %1775, align 8, !tbaa !14
  %1776 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  %1777 = load double, ptr %1776, align 8, !tbaa !11
  store double %1777, ptr %40, align 8, !tbaa !16
  %1778 = load double, ptr %40, align 8, !tbaa !16
  %1779 = fcmp oge double %1778, 0.000000e+00
  br i1 %1779, label %1780, label %1782

1780:                                             ; preds = %1694
  %1781 = load double, ptr %40, align 8, !tbaa !16
  br label %1785

1782:                                             ; preds = %1694
  %1783 = load double, ptr %40, align 8, !tbaa !16
  %1784 = fneg double %1783
  br label %1785

1785:                                             ; preds = %1782, %1780
  %1786 = phi double [ %1781, %1780 ], [ %1784, %1782 ]
  %1787 = call { double, double } @Cd(ptr noundef %48)
  %1788 = extractvalue { double, double } %1787, 0
  %1789 = extractvalue { double, double } %1787, 1
  store double %1789, ptr %41, align 8, !tbaa !16
  %1790 = load double, ptr %41, align 8, !tbaa !16
  %1791 = fcmp oge double %1790, 0.000000e+00
  br i1 %1791, label %1792, label %1794

1792:                                             ; preds = %1785
  %1793 = load double, ptr %41, align 8, !tbaa !16
  br label %1797

1794:                                             ; preds = %1785
  %1795 = load double, ptr %41, align 8, !tbaa !16
  %1796 = fneg double %1795
  br label %1797

1797:                                             ; preds = %1794, %1792
  %1798 = phi double [ %1793, %1792 ], [ %1796, %1794 ]
  %1799 = fadd double %1786, %1798
  %1800 = getelementptr inbounds %struct.doublecomplex, ptr %50, i32 0, i32 0
  %1801 = load double, ptr %1800, align 8, !tbaa !11
  store double %1801, ptr %42, align 8, !tbaa !16
  %1802 = load double, ptr %42, align 8, !tbaa !16
  %1803 = fcmp oge double %1802, 0.000000e+00
  br i1 %1803, label %1804, label %1806

1804:                                             ; preds = %1797
  %1805 = load double, ptr %42, align 8, !tbaa !16
  br label %1809

1806:                                             ; preds = %1797
  %1807 = load double, ptr %42, align 8, !tbaa !16
  %1808 = fneg double %1807
  br label %1809

1809:                                             ; preds = %1806, %1804
  %1810 = phi double [ %1805, %1804 ], [ %1808, %1806 ]
  %1811 = call { double, double } @Cd(ptr noundef %50)
  %1812 = extractvalue { double, double } %1811, 0
  %1813 = extractvalue { double, double } %1811, 1
  store double %1813, ptr %43, align 8, !tbaa !16
  %1814 = load double, ptr %43, align 8, !tbaa !16
  %1815 = fcmp oge double %1814, 0.000000e+00
  br i1 %1815, label %1816, label %1818

1816:                                             ; preds = %1809
  %1817 = load double, ptr %43, align 8, !tbaa !16
  br label %1821

1818:                                             ; preds = %1809
  %1819 = load double, ptr %43, align 8, !tbaa !16
  %1820 = fneg double %1819
  br label %1821

1821:                                             ; preds = %1818, %1816
  %1822 = phi double [ %1817, %1816 ], [ %1820, %1818 ]
  %1823 = fadd double %1810, %1822
  %1824 = fcmp olt double %1799, %1823
  br i1 %1824, label %1825, label %1851

1825:                                             ; preds = %1821
  %1826 = load i32, ptr %55, align 4, !tbaa !9
  %1827 = sub nsw i32 %1826, 1
  store i32 %1827, ptr %36, align 4, !tbaa !9
  %1828 = load i32, ptr %55, align 4, !tbaa !9
  store i32 %1828, ptr %37, align 4, !tbaa !9
  %1829 = load ptr, ptr %23, align 8, !tbaa !5
  %1830 = load i32, ptr %37, align 4, !tbaa !9
  %1831 = sext i32 %1830 to i64
  %1832 = getelementptr inbounds %struct.doublecomplex, ptr %1829, i64 %1831
  %1833 = getelementptr inbounds %struct.doublecomplex, ptr %1832, i32 0, i32 0
  %1834 = load double, ptr %1833, align 8, !tbaa !11
  %1835 = load ptr, ptr %23, align 8, !tbaa !5
  %1836 = load i32, ptr %36, align 4, !tbaa !9
  %1837 = sext i32 %1836 to i64
  %1838 = getelementptr inbounds %struct.doublecomplex, ptr %1835, i64 %1837
  %1839 = getelementptr inbounds %struct.doublecomplex, ptr %1838, i32 0, i32 0
  store double %1834, ptr %1839, align 8, !tbaa !11
  %1840 = load ptr, ptr %23, align 8, !tbaa !5
  %1841 = load i32, ptr %37, 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 1
  %1845 = load double, ptr %1844, align 8, !tbaa !14
  %1846 = load ptr, ptr %23, align 8, !tbaa !5
  %1847 = load i32, ptr %36, align 4, !tbaa !9
  %1848 = sext i32 %1847 to i64
  %1849 = getelementptr inbounds %struct.doublecomplex, ptr %1846, i64 %1848
  %1850 = getelementptr inbounds %struct.doublecomplex, ptr %1849, i32 0, i32 1
  store double %1845, ptr %1850, align 8, !tbaa !14
  br label %1877

1851:                                             ; preds = %1821
  %1852 = load i32, ptr %55, align 4, !tbaa !9
  store i32 %1852, ptr %36, align 4, !tbaa !9
  %1853 = load i32, ptr %55, align 4, !tbaa !9
  %1854 = sub nsw i32 %1853, 1
  store i32 %1854, ptr %37, align 4, !tbaa !9
  %1855 = load ptr, ptr %23, align 8, !tbaa !5
  %1856 = load i32, ptr %37, align 4, !tbaa !9
  %1857 = sext i32 %1856 to i64
  %1858 = getelementptr inbounds %struct.doublecomplex, ptr %1855, i64 %1857
  %1859 = getelementptr inbounds %struct.doublecomplex, ptr %1858, i32 0, i32 0
  %1860 = load double, ptr %1859, align 8, !tbaa !11
  %1861 = load ptr, ptr %23, align 8, !tbaa !5
  %1862 = load i32, ptr %36, align 4, !tbaa !9
  %1863 = sext i32 %1862 to i64
  %1864 = getelementptr inbounds %struct.doublecomplex, ptr %1861, i64 %1863
  %1865 = getelementptr inbounds %struct.doublecomplex, ptr %1864, i32 0, i32 0
  store double %1860, ptr %1865, align 8, !tbaa !11
  %1866 = load ptr, ptr %23, align 8, !tbaa !5
  %1867 = load i32, ptr %37, align 4, !tbaa !9
  %1868 = sext i32 %1867 to i64
  %1869 = getelementptr inbounds %struct.doublecomplex, ptr %1866, i64 %1868
  %1870 = getelementptr inbounds %struct.doublecomplex, ptr %1869, i32 0, i32 1
  %1871 = load double, ptr %1870, align 8, !tbaa !14
  %1872 = load ptr, ptr %23, align 8, !tbaa !5
  %1873 = load i32, ptr %36, align 4, !tbaa !9
  %1874 = sext i32 %1873 to i64
  %1875 = getelementptr inbounds %struct.doublecomplex, ptr %1872, i64 %1874
  %1876 = getelementptr inbounds %struct.doublecomplex, ptr %1875, i32 0, i32 1
  store double %1871, ptr %1876, align 8, !tbaa !14
  br label %1877

1877:                                             ; preds = %1851, %1825
  br label %1878

1878:                                             ; preds = %1877, %1688
  %1879 = load i32, ptr %81, align 4, !tbaa !9
  store i32 %1879, ptr %36, align 4, !tbaa !9
  %1880 = load i32, ptr %55, align 4, !tbaa !9
  %1881 = load i32, ptr %76, align 4, !tbaa !9
  %1882 = sub nsw i32 %1880, %1881
  %1883 = add nsw i32 %1882, 1
  store i32 %1883, ptr %37, align 4, !tbaa !9
  %1884 = load i32, ptr %36, align 4, !tbaa !9
  %1885 = load i32, ptr %37, align 4, !tbaa !9
  %1886 = icmp sle i32 %1884, %1885
  br i1 %1886, label %1887, label %1889

1887:                                             ; preds = %1878
  %1888 = load i32, ptr %36, align 4, !tbaa !9
  br label %1891

1889:                                             ; preds = %1878
  %1890 = load i32, ptr %37, align 4, !tbaa !9
  br label %1891

1891:                                             ; preds = %1889, %1887
  %1892 = phi i32 [ %1888, %1887 ], [ %1890, %1889 ]
  store i32 %1892, ptr %81, align 4, !tbaa !9
  %1893 = load i32, ptr %81, align 4, !tbaa !9
  %1894 = srem i32 %1893, 2
  %1895 = load i32, ptr %81, align 4, !tbaa !9
  %1896 = sub nsw i32 %1895, %1894
  store i32 %1896, ptr %81, align 4, !tbaa !9
  %1897 = load i32, ptr %55, align 4, !tbaa !9
  %1898 = load i32, ptr %81, align 4, !tbaa !9
  %1899 = sub nsw i32 %1897, %1898
  %1900 = add nsw i32 %1899, 1
  store i32 %1900, ptr %76, align 4, !tbaa !9
  %1901 = load i32, ptr %81, align 4, !tbaa !9
  %1902 = shl i32 %1901, 1
  store i32 %1902, ptr %91, align 4, !tbaa !9
  %1903 = load ptr, ptr %18, align 8, !tbaa !5
  %1904 = load i32, ptr %1903, align 4, !tbaa !9
  %1905 = load i32, ptr %91, align 4, !tbaa !9
  %1906 = sub nsw i32 %1904, %1905
  %1907 = add nsw i32 %1906, 1
  store i32 %1907, ptr %78, align 4, !tbaa !9
  %1908 = load i32, ptr %91, align 4, !tbaa !9
  %1909 = add nsw i32 %1908, 1
  store i32 %1909, ptr %94, align 4, !tbaa !9
  %1910 = load ptr, ptr %18, align 8, !tbaa !5
  %1911 = load i32, ptr %1910, align 4, !tbaa !9
  %1912 = load i32, ptr %91, align 4, !tbaa !9
  %1913 = sub nsw i32 %1911, %1912
  %1914 = sub nsw i32 %1913, 3
  %1915 = load i32, ptr %91, align 4, !tbaa !9
  %1916 = add nsw i32 %1915, 1
  %1917 = sub nsw i32 %1914, %1916
  %1918 = add nsw i32 %1917, 1
  store i32 %1918, ptr %92, align 4, !tbaa !9
  %1919 = load i32, ptr %91, align 4, !tbaa !9
  %1920 = add nsw i32 %1919, 4
  store i32 %1920, ptr %97, align 4, !tbaa !9
  %1921 = load ptr, ptr %18, align 8, !tbaa !5
  %1922 = load i32, ptr %1921, align 4, !tbaa !9
  %1923 = load i32, ptr %91, align 4, !tbaa !9
  %1924 = sub nsw i32 %1922, %1923
  %1925 = load i32, ptr %97, align 4, !tbaa !9
  %1926 = sub nsw i32 %1924, %1925
  %1927 = add nsw i32 %1926, 1
  store i32 %1927, ptr %93, align 4, !tbaa !9
  %1928 = load ptr, ptr %16, align 8, !tbaa !5
  %1929 = load ptr, ptr %17, align 8, !tbaa !5
  %1930 = load ptr, ptr %18, align 8, !tbaa !5
  %1931 = load ptr, ptr %23, align 8, !tbaa !5
  %1932 = load i32, ptr %76, align 4, !tbaa !9
  %1933 = sext i32 %1932 to i64
  %1934 = getelementptr inbounds %struct.doublecomplex, ptr %1931, i64 %1933
  %1935 = load ptr, ptr %21, align 8, !tbaa !5
  %1936 = load i32, ptr %32, align 4, !tbaa !9
  %1937 = sext i32 %1936 to i64
  %1938 = getelementptr inbounds %struct.doublecomplex, ptr %1935, i64 %1937
  %1939 = load ptr, ptr %22, align 8, !tbaa !5
  %1940 = load ptr, ptr %24, align 8, !tbaa !5
  %1941 = load ptr, ptr %25, align 8, !tbaa !5
  %1942 = load ptr, ptr %26, align 8, !tbaa !5
  %1943 = load i32, ptr %34, align 4, !tbaa !9
  %1944 = sext i32 %1943 to i64
  %1945 = getelementptr inbounds %struct.doublecomplex, ptr %1942, i64 %1944
  %1946 = load ptr, ptr %27, align 8, !tbaa !5
  %1947 = load ptr, ptr %28, align 8, !tbaa !5
  %1948 = getelementptr inbounds %struct.doublecomplex, ptr %1947, i64 1
  %1949 = load ptr, ptr %21, align 8, !tbaa !5
  %1950 = load i32, ptr %78, align 4, !tbaa !9
  %1951 = load i32, ptr %31, align 4, !tbaa !9
  %1952 = add nsw i32 %1950, %1951
  %1953 = sext i32 %1952 to i64
  %1954 = getelementptr inbounds %struct.doublecomplex, ptr %1949, i64 %1953
  %1955 = load ptr, ptr %22, align 8, !tbaa !5
  %1956 = load ptr, ptr %21, align 8, !tbaa !5
  %1957 = load i32, ptr %97, align 4, !tbaa !9
  %1958 = load i32, ptr %31, align 4, !tbaa !9
  %1959 = add nsw i32 %1957, %1958
  %1960 = sext i32 %1959 to i64
  %1961 = getelementptr inbounds %struct.doublecomplex, ptr %1956, i64 %1960
  %1962 = load ptr, ptr %22, align 8, !tbaa !5
  %1963 = load ptr, ptr %21, align 8, !tbaa !5
  %1964 = load i32, ptr %78, align 4, !tbaa !9
  %1965 = load i32, ptr %94, align 4, !tbaa !9
  %1966 = load i32, ptr %31, align 4, !tbaa !9
  %1967 = mul nsw i32 %1965, %1966
  %1968 = add nsw i32 %1964, %1967
  %1969 = sext i32 %1968 to i64
  %1970 = getelementptr inbounds %struct.doublecomplex, ptr %1963, i64 %1969
  %1971 = load ptr, ptr %22, align 8, !tbaa !5
  call void @zlaqr5_(ptr noundef %1928, ptr noundef %1929, ptr noundef %60, ptr noundef %1930, ptr noundef %58, ptr noundef %55, ptr noundef %81, ptr noundef %1934, ptr noundef %1938, ptr noundef %1939, ptr noundef %1940, ptr noundef %1941, ptr noundef %1945, ptr noundef %1946, ptr noundef %1948, ptr noundef @c__3, ptr noundef %1954, ptr noundef %1955, ptr noundef %93, ptr noundef %1961, ptr noundef %1962, ptr noundef %92, ptr noundef %1970, ptr noundef %1971)
  br label %1972

1972:                                             ; preds = %1891, %770, %751
  %1973 = load i32, ptr %72, align 4, !tbaa !9
  %1974 = icmp sgt i32 %1973, 0
  br i1 %1974, label %1975, label %1976

1975:                                             ; preds = %1972
  store i32 1, ptr %54, align 4, !tbaa !9
  br label %1979

1976:                                             ; preds = %1972
  %1977 = load i32, ptr %54, align 4, !tbaa !9
  %1978 = add nsw i32 %1977, 1
  store i32 %1978, ptr %54, align 4, !tbaa !9
  br label %1979

1979:                                             ; preds = %1976, %1975
  br label %1980

1980:                                             ; preds = %1979
  %1981 = load i32, ptr %75, align 4, !tbaa !9
  %1982 = add nsw i32 %1981, 1
  store i32 %1982, ptr %75, align 4, !tbaa !9
  br label %451, !llvm.loop !22

1983:                                             ; preds = %451
  %1984 = load i32, ptr %55, align 4, !tbaa !9
  %1985 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 %1984, ptr %1985, align 4, !tbaa !9
  br label %1986

1986:                                             ; preds = %1983, %460
  br label %1987

1987:                                             ; preds = %1986, %164
  %1988 = load i32, ptr %87, align 4, !tbaa !9
  %1989 = sitofp i32 %1988 to double
  store double %1989, ptr %40, align 8, !tbaa !16
  %1990 = load double, ptr %40, align 8, !tbaa !16
  %1991 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  store double %1990, ptr %1991, align 8, !tbaa !11
  %1992 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  store double 0.000000e+00, ptr %1992, align 8, !tbaa !14
  %1993 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 0
  %1994 = load double, ptr %1993, align 8, !tbaa !11
  %1995 = load ptr, ptr %28, align 8, !tbaa !5
  %1996 = getelementptr inbounds %struct.doublecomplex, ptr %1995, i64 1
  %1997 = getelementptr inbounds %struct.doublecomplex, ptr %1996, i32 0, i32 0
  store double %1994, ptr %1997, align 8, !tbaa !11
  %1998 = getelementptr inbounds %struct.doublecomplex, ptr %48, i32 0, i32 1
  %1999 = load double, ptr %1998, align 8, !tbaa !14
  %2000 = load ptr, ptr %28, align 8, !tbaa !5
  %2001 = getelementptr inbounds %struct.doublecomplex, ptr %2000, i64 1
  %2002 = getelementptr inbounds %struct.doublecomplex, ptr %2001, i32 0, i32 1
  store double %1999, ptr %2002, align 8, !tbaa !14
  store i32 1, ptr %98, align 4
  br label %2003

2003:                                             ; preds = %1987, %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 @zlaqr3_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

; 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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #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 @zlaqr0_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14) local_unnamed_addr #0 {
  %16 = alloca 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 %543, 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
  %.not637 = icmp eq i32 %41, -1
  br i1 %.not637, label %.loopexit649, 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 %.loopexit649

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
  %.not610 = icmp eq i32 %45, 0
  %spec.select = select i1 %.not610, 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 @zlaqr3_(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %16, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef nonnull %11, ptr noundef nonnull %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 %543

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 @llvm.smax.i32(i32 %81, i32 15)
  %83 = 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
  %84 = call i32 @llvm.smax.i32(i32 %83, i32 0)
  %85 = 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
  %86 = call i32 @llvm.smax.i32(i32 %85, i32 0)
  %87 = call i32 @llvm.umin.i32(i32 %86, i32 2)
  store i32 %87, ptr %23, align 4, !tbaa !5
  %88 = load i32, ptr %2, align 4, !tbaa !5
  %89 = add nsw i32 %88, -1
  %90 = sdiv i32 %89, 3
  %91 = load i32, ptr %13, align 4, !tbaa !5
  %92 = sdiv i32 %91, 2
  %93 = call i32 @llvm.smin.i32(i32 %90, i32 %92)
  store i32 %93, ptr %27, align 4, !tbaa !5
  %94 = load i32, ptr %4, align 4, !tbaa !5
  %95 = load i32, ptr %3, align 4, !tbaa !5
  %96 = sub nsw i32 %94, %95
  %97 = icmp slt i32 %96, 10
  %98 = mul i32 %96, 30
  %99 = add i32 %98, 30
  %100 = select i1 %97, i32 300, i32 %99
  store i32 %94, ptr %20, align 4, !tbaa !5
  store i32 %100, ptr %16, align 4, !tbaa !5
  %.not618661 = icmp slt i32 %100, 1
  br i1 %.not618661, label %._crit_edge667, label %.lr.ph666

.lr.ph666:                                        ; preds = %80
  %101 = add nsw i32 %88, -3
  %102 = sdiv i32 %101, 6
  %103 = shl i32 %91, 1
  %104 = sdiv i32 %103, 3
  %105 = call i32 @llvm.smin.i32(i32 %102, i32 %104)
  %106 = srem i32 %105, 2
  %107 = sub nsw i32 %105, %106
  %108 = call i32 @llvm.smin.i32(i32 %82, i32 %93)
  %109 = call i32 @llvm.smin.i32(i32 %107, i32 %69)
  %110 = add i32 %32, 1
  %111 = getelementptr inbounds i8, ptr %17, i64 8
  br label %112

112:                                              ; preds = %.lr.ph666, %536
  %.0593664 = phi i32 [ 1, %.lr.ph666 ], [ %539, %536 ]
  %.0594663 = phi i32 [ undef, %.lr.ph666 ], [ %.1595, %536 ]
  %.0596662 = phi i32 [ 1, %.lr.ph666 ], [ %.1597, %536 ]
  %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 %.loopexit649, label %.preheader648

.preheader648:                                    ; preds = %112
  %.not619.not650 = icmp sgt i32 %113, %114
  br i1 %.not619.not650, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %.preheader648
  %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.exit692, label %128

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

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

._crit_edge:                                      ; preds = %128, %._crit_edge.loopexit.split.loop.exit692, %.preheader648
  %.1601 = phi i32 [ %114, %.preheader648 ], [ %129, %._crit_edge.loopexit.split.loop.exit692 ], [ %114, %128 ]
  store i32 %.1601, ptr %21, align 4, !tbaa !5
  %130 = sub nsw i32 %113, %.1601
  %131 = add nsw i32 %130, 1
  %132 = call i32 @llvm.smin.i32(i32 %131, i32 %93)
  %133 = icmp slt i32 %.0596662, 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, %93
  br i1 %137, label %138, label %176

138:                                              ; preds = %._crit_edge
  %.not624 = icmp slt i32 %136, %130
  br i1 %.not624, 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 %.0594663, 0
  %.not625 = icmp slt i32 %.pre, %132
  %or.cond638 = select i1 %178, i1 %.not625, i1 false
  br i1 %or.cond638, label %184, label %179

179:                                              ; preds = %177
  %180 = add nsw i32 %.0594663, 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 ]
  %.1595 = phi i32 [ %spec.store.select, %179 ], [ -1, %176 ], [ %.0594663, %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
  %.neg640 = add i32 %186, 1
  %193 = shl i32 %185, 1
  %reass.sub = sub i32 %.neg640, %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 @zlaqr3_(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_edge685, label %212

._crit_edge685:                                   ; preds = %184
  %.pre686 = load i32, ptr %21, align 4, !tbaa !5
  %.pre690 = sub nsw i32 %207, %.pre686
  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, %84
  %.not626 = icmp sgt i32 %213, %215
  br i1 %.not626, label %536, label %216

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

219:                                              ; preds = %._crit_edge685, %216
  %.pre-phi = phi i32 [ %.pre690, %._crit_edge685 ], [ %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 %.0596662, 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
  %.not635657 = icmp slt i32 %207, %230
  br i1 %.not635657, label %.loopexit, label %.lr.ph660.preheader

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

.lr.ph660:                                        ; preds = %.lr.ph660.preheader, %.lr.ph660
  %indvars.iv681 = phi i64 [ %231, %.lr.ph660.preheader ], [ %indvars.iv.next682, %.lr.ph660 ]
  %indvars684 = trunc i64 %indvars.iv681 to i32
  %233 = mul i32 %110, %indvars684
  %234 = add nsw i32 %indvars684, -1
  %235 = mul nsw i32 %234, %32
  %236 = sext i32 %235 to i64
  %237 = getelementptr %struct.doublecomplex, ptr %34, i64 %indvars.iv681
  %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.iv681
  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.iv681
  %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.next682 = add nsw i64 %indvars.iv681, -2
  %.not635 = icmp slt i64 %indvars.iv.next682, %232
  br i1 %.not635, label %.loopexit, label %.lr.ph660, !llvm.loop !16

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

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 = load i32, ptr %26, align 4, !tbaa !5
  %275 = icmp sgt i32 %274, %82
  %276 = sext i32 %265 to i64
  %277 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %276
  br i1 %275, label %278, label %279

278:                                              ; preds = %263
  call void @zlaqr4_(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 %277, ptr noundef nonnull @c__1, ptr noundef nonnull @c__1, ptr noundef nonnull %22, ptr noundef nonnull @c__1, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %29) #6
  br label %280

279:                                              ; preds = %263
  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 %277, ptr noundef nonnull @c__1, ptr noundef nonnull @c__1, ptr noundef nonnull %22, ptr noundef nonnull @c__1, ptr noundef nonnull %29) #6
  br label %280

280:                                              ; preds = %279, %278
  %281 = load i32, ptr %29, align 4, !tbaa !5
  %282 = add nsw i32 %281, %265
  %283 = load i32, ptr %20, align 4, !tbaa !5
  %.not632 = icmp slt i32 %282, %283
  br i1 %.not632, label %421, label %284

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

421:                                              ; preds = %280, %284, %261
  %422 = phi i32 [ %411, %284 ], [ %283, %280 ], [ %207, %261 ]
  %.0591 = phi i32 [ %420, %284 ], [ %282, %280 ], [ %210, %261 ]
  %423 = sub nsw i32 %422, %.0591
  %424 = load i32, ptr %26, align 4, !tbaa !5
  %.not633 = icmp slt i32 %423, %424
  %425 = icmp sle i32 %422, %.0591
  %or.cond668 = or i1 %.not633, %425
  br i1 %or.cond668, label %.loopexit, label %.preheader.preheader

.preheader.preheader:                             ; preds = %421
  %426 = sext i32 %.0591 to i64
  %427 = sext i32 %422 to i64
  br label %.preheader

.preheader:                                       ; preds = %.preheader.preheader, %457
  %indvars.iv677 = phi i64 [ %427, %.preheader.preheader ], [ %indvars.iv.next678, %457 ]
  br label %428

428:                                              ; preds = %.preheader, %456
  %indvars.iv673 = phi i64 [ %426, %.preheader ], [ %indvars.iv.next674, %456 ]
  %.1655 = phi i32 [ 1, %.preheader ], [ %.2, %456 ]
  %indvars.iv.next674 = add nsw i64 %indvars.iv673, 1
  %429 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %indvars.iv673
  %430 = load double, ptr %429, align 8, !tbaa !10
  %431 = call { double, double } @Cd(ptr noundef nonnull %429)
  %432 = extractvalue { double, double } %431, 1
  %433 = insertelement <2 x double> poison, double %430, i64 0
  %434 = insertelement <2 x double> %433, double %432, i64 1
  %435 = fcmp oge <2 x double> %434, zeroinitializer
  %436 = fneg <2 x double> %434
  %437 = select <2 x i1> %435, <2 x double> %434, <2 x double> %436
  %438 = getelementptr %struct.doublecomplex, ptr %7, i64 %indvars.iv673
  %439 = load double, ptr %438, align 8, !tbaa !10
  %440 = call { double, double } @Cd(ptr noundef nonnull %438)
  %441 = extractvalue { double, double } %440, 1
  %442 = insertelement <2 x double> poison, double %439, i64 0
  %443 = insertelement <2 x double> %442, double %441, i64 1
  %444 = fcmp oge <2 x double> %443, zeroinitializer
  %445 = fneg <2 x double> %443
  %446 = select <2 x i1> %444, <2 x double> %443, <2 x double> %445
  %447 = shufflevector <2 x double> %437, <2 x double> %446, <2 x i32> <i32 0, i32 2>
  %448 = shufflevector <2 x double> %437, <2 x double> %446, <2 x i32> <i32 1, i32 3>
  %449 = fadd <2 x double> %447, %448
  %450 = extractelement <2 x double> %449, i64 0
  %451 = extractelement <2 x double> %449, i64 1
  %452 = fcmp olt double %450, %451
  br i1 %452, label %453, label %456

453:                                              ; preds = %428
  %454 = load <2 x double>, ptr %438, align 8, !tbaa !17
  %455 = load <2 x double>, ptr %429, align 8, !tbaa !17
  store <2 x double> %454, ptr %429, align 8, !tbaa !17
  store <2 x double> %455, ptr %438, align 8, !tbaa !17
  br label %456

456:                                              ; preds = %428, %453
  %.2 = phi i32 [ 0, %453 ], [ %.1655, %428 ]
  %.not634.not = icmp slt i64 %indvars.iv.next674, %indvars.iv677
  br i1 %.not634.not, label %428, label %457, !llvm.loop !18

457:                                              ; preds = %456
  %indvars.iv.next678 = add nsw i64 %indvars.iv677, -1
  %458 = icmp sle i64 %indvars.iv.next678, %426
  %459 = icmp ne i32 %.2, 0
  %or.cond = select i1 %458, i1 true, i1 %459
  br i1 %or.cond, label %.loopexit, label %.preheader, !llvm.loop !19

.loopexit:                                        ; preds = %457, %.lr.ph660, %227, %421
  %.1592 = phi i32 [ %.0591, %421 ], [ %229, %227 ], [ %229, %.lr.ph660 ], [ %.0591, %457 ]
  %460 = load i32, ptr %20, align 4, !tbaa !5
  %461 = sub nsw i32 %460, %.1592
  %462 = icmp eq i32 %461, 1
  br i1 %462, label %463, label %507

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

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

501:                                              ; preds = %463
  %502 = getelementptr i8, ptr %497, i64 -16
  %503 = load double, ptr %502, align 8, !tbaa !10
  store double %503, ptr %497, align 8, !tbaa !10
  br label %.sink.split

.sink.split:                                      ; preds = %501, %498
  %.sink698 = phi i64 [ 8, %498 ], [ -8, %501 ]
  %.sink696 = phi i64 [ -8, %498 ], [ 8, %501 ]
  %504 = getelementptr i8, ptr %497, i64 %.sink698
  %505 = load double, ptr %504, align 8, !tbaa !13
  %506 = getelementptr i8, ptr %497, i64 %.sink696
  store double %505, ptr %506, align 8, !tbaa !13
  br label %507

507:                                              ; preds = %.sink.split, %.loopexit
  %508 = phi i32 [ %460, %.loopexit ], [ %495, %.sink.split ]
  %509 = load i32, ptr %26, align 4, !tbaa !5
  %reass.sub669 = sub i32 %508, %.1592
  %510 = add i32 %reass.sub669, 1
  %511 = call i32 @llvm.smin.i32(i32 %509, i32 %510)
  %512 = srem i32 %511, 2
  %513 = sub nsw i32 %511, %512
  store i32 %513, ptr %26, align 4, !tbaa !5
  %514 = sub nsw i32 %508, %513
  %515 = shl i32 %513, 1
  %516 = load i32, ptr %2, align 4, !tbaa !5
  %517 = sub nsw i32 %516, %515
  %518 = add nsw i32 %517, 1
  %519 = or disjoint i32 %515, 1
  %520 = add i32 %517, -2
  %521 = sub i32 %520, %519
  store i32 %521, ptr %30, align 4, !tbaa !5
  %522 = add nsw i32 %515, 4
  %.neg645 = add i32 %516, 1
  %523 = shl i32 %513, 2
  %reass.sub670 = sub i32 %.neg645, %523
  %524 = add i32 %reass.sub670, -4
  store i32 %524, ptr %31, align 4, !tbaa !5
  %525 = sext i32 %514 to i64
  %gep = getelementptr %struct.doublecomplex, ptr %7, i64 %525
  %526 = add nsw i32 %518, %32
  %527 = sext i32 %526 to i64
  %528 = getelementptr inbounds %struct.doublecomplex, ptr %34, i64 %527
  %529 = add nsw i32 %522, %32
  %530 = sext i32 %529 to i64
  %531 = getelementptr inbounds %struct.doublecomplex, ptr %34, i64 %530
  %532 = mul nsw i32 %519, %32
  %533 = add nsw i32 %518, %532
  %534 = sext i32 %533 to i64
  %535 = getelementptr inbounds %struct.doublecomplex, ptr %34, i64 %534
  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 %528, ptr noundef nonnull %6, ptr noundef nonnull %31, ptr noundef %531, ptr noundef nonnull %6, ptr noundef nonnull %30, ptr noundef %535, ptr noundef nonnull %6) #6
  %.pre687 = load i32, ptr %24, align 4, !tbaa !5
  br label %536

536:                                              ; preds = %507, %216, %212
  %537 = phi i32 [ %.pre687, %507 ], [ %205, %216 ], [ %205, %212 ]
  %538 = add nsw i32 %.0596662, 1
  %.inv = icmp slt i32 %537, 1
  %.1597 = select i1 %.inv, i32 %538, i32 1
  %539 = add nuw nsw i32 %.0593664, 1
  %540 = load i32, ptr %16, align 4, !tbaa !5
  %.not618.not = icmp slt i32 %.0593664, %540
  br i1 %.not618.not, label %112, label %._crit_edge667.loopexit, !llvm.loop !20

._crit_edge667.loopexit:                          ; preds = %536
  %.pre688 = load i32, ptr %20, align 4, !tbaa !5
  br label %._crit_edge667

._crit_edge667:                                   ; preds = %._crit_edge667.loopexit, %80
  %541 = phi i32 [ %.pre688, %._crit_edge667.loopexit ], [ %94, %80 ]
  store i32 %541, ptr %14, align 4, !tbaa !5
  br label %.loopexit649

.loopexit649:                                     ; preds = %112, %._crit_edge667, %40, %42
  %.0 = phi i32 [ 1, %42 ], [ 1, %40 ], [ %75, %._crit_edge667 ], [ %75, %112 ]
  %542 = uitofp nneg i32 %.0 to double
  br label %543

543:                                              ; preds = %15, %.loopexit649, %78
  %.sink700 = phi double [ %542, %.loopexit649 ], [ %79, %78 ], [ 1.000000e+00, %15 ]
  store double %.sink700, ptr %12, align 8, !tbaa !10
  %544 = getelementptr inbounds i8, ptr %12, i64 8
  store double 0.000000e+00, ptr %544, 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 @zlaqr3_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

; 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

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

; 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