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

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

%struct.doublecomplex = type { double, double }

@.str = external hidden unnamed_addr constant [7 x i8], align 1
@c__9 = external hidden global i64, align 8
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c__0 = external hidden global i64, align 8
@c__2 = external hidden global i64, align 8
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8

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

89:                                               ; preds = %11
  br label %93

90:                                               ; preds = %11
  %91 = load ptr, ptr %14, align 8, !tbaa !5
  %92 = load i64, ptr %91, align 8, !tbaa !9
  br label %93

93:                                               ; preds = %90, %89
  %94 = phi i64 [ 0, %89 ], [ %92, %90 ]
  %95 = icmp slt i64 %85, %94
  br i1 %95, label %96, label %98

96:                                               ; preds = %93
  %97 = load ptr, ptr %23, align 8, !tbaa !5
  store i64 -1, ptr %97, align 8, !tbaa !9
  br label %137

98:                                               ; preds = %93
  %99 = load ptr, ptr %14, align 8, !tbaa !5
  %100 = load i64, ptr %99, align 8, !tbaa !9
  %101 = icmp slt i64 %100, 0
  br i1 %101, label %102, label %104

102:                                              ; preds = %98
  %103 = load ptr, ptr %23, align 8, !tbaa !5
  store i64 -2, ptr %103, align 8, !tbaa !9
  br label %136

104:                                              ; preds = %98
  %105 = load ptr, ptr %18, align 8, !tbaa !5
  %106 = load i64, ptr %105, align 8, !tbaa !9
  %107 = load ptr, ptr %14, align 8, !tbaa !5
  %108 = load i64, ptr %107, align 8, !tbaa !9
  %109 = icmp sge i64 1, %108
  br i1 %109, label %110, label %111

110:                                              ; preds = %104
  br label %114

111:                                              ; preds = %104
  %112 = load ptr, ptr %14, align 8, !tbaa !5
  %113 = load i64, ptr %112, align 8, !tbaa !9
  br label %114

114:                                              ; preds = %111, %110
  %115 = phi i64 [ 1, %110 ], [ %113, %111 ]
  %116 = icmp slt i64 %106, %115
  br i1 %116, label %117, label %119

117:                                              ; preds = %114
  %118 = load ptr, ptr %23, align 8, !tbaa !5
  store i64 -6, ptr %118, align 8, !tbaa !9
  br label %135

119:                                              ; preds = %114
  %120 = load ptr, ptr %20, align 8, !tbaa !5
  %121 = load i64, ptr %120, align 8, !tbaa !9
  %122 = load ptr, ptr %14, align 8, !tbaa !5
  %123 = load i64, ptr %122, align 8, !tbaa !9
  %124 = icmp sge i64 1, %123
  br i1 %124, label %125, label %126

125:                                              ; preds = %119
  br label %129

126:                                              ; preds = %119
  %127 = load ptr, ptr %14, align 8, !tbaa !5
  %128 = load i64, ptr %127, align 8, !tbaa !9
  br label %129

129:                                              ; preds = %126, %125
  %130 = phi i64 [ 1, %125 ], [ %128, %126 ]
  %131 = icmp slt i64 %121, %130
  br i1 %131, label %132, label %134

132:                                              ; preds = %129
  %133 = load ptr, ptr %23, align 8, !tbaa !5
  store i64 -8, ptr %133, align 8, !tbaa !9
  br label %134

134:                                              ; preds = %132, %129
  br label %135

135:                                              ; preds = %134, %117
  br label %136

136:                                              ; preds = %135, %102
  br label %137

137:                                              ; preds = %136, %96
  %138 = load ptr, ptr %23, align 8, !tbaa !5
  %139 = load i64, ptr %138, align 8, !tbaa !9
  %140 = icmp ne i64 %139, 0
  br i1 %140, label %141, label %146

141:                                              ; preds = %137
  %142 = load ptr, ptr %23, align 8, !tbaa !5
  %143 = load i64, ptr %142, align 8, !tbaa !9
  %144 = sub nsw i64 0, %143
  store i64 %144, ptr %28, align 8, !tbaa !9
  %145 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %28)
  store i32 0, ptr %12, align 4
  store i32 1, ptr %58, align 4
  br label %682

146:                                              ; preds = %137
  %147 = load ptr, ptr %14, align 8, !tbaa !5
  %148 = load i64, ptr %147, align 8, !tbaa !9
  %149 = icmp eq i64 %148, 0
  br i1 %149, label %150, label %151

150:                                              ; preds = %146
  store i32 0, ptr %12, align 4
  store i32 1, ptr %58, align 4
  br label %682

151:                                              ; preds = %146
  %152 = call i64 @ilaenv_(ptr noundef @c__9, ptr noundef @.str, ptr noundef @.str.1, ptr noundef @c__0, ptr noundef @c__0, ptr noundef @c__0, ptr noundef @c__0)
  store i64 %152, ptr %57, align 8, !tbaa !9
  %153 = load ptr, ptr %14, align 8, !tbaa !5
  %154 = load i64, ptr %153, align 8, !tbaa !9
  %155 = load ptr, ptr %22, align 8, !tbaa !5
  %156 = getelementptr inbounds i64, ptr %155, i64 1
  store i64 %154, ptr %156, align 8, !tbaa !9
  store i64 1, ptr %52, align 8, !tbaa !9
  store i64 0, ptr %47, align 8, !tbaa !9
  br label %157

157:                                              ; preds = %193, %151
  %158 = load ptr, ptr %22, align 8, !tbaa !5
  %159 = load i64, ptr %52, align 8, !tbaa !9
  %160 = getelementptr inbounds i64, ptr %158, i64 %159
  %161 = load i64, ptr %160, align 8, !tbaa !9
  %162 = load i64, ptr %57, align 8, !tbaa !9
  %163 = icmp sgt i64 %161, %162
  br i1 %163, label %164, label %198

164:                                              ; preds = %157
  %165 = load i64, ptr %52, align 8, !tbaa !9
  store i64 %165, ptr %32, align 8, !tbaa !9
  br label %166

166:                                              ; preds = %190, %164
  %167 = load i64, ptr %32, align 8, !tbaa !9
  %168 = icmp sge i64 %167, 1
  br i1 %168, label %169, label %193

169:                                              ; preds = %166
  %170 = load ptr, ptr %22, align 8, !tbaa !5
  %171 = load i64, ptr %32, align 8, !tbaa !9
  %172 = getelementptr inbounds i64, ptr %170, i64 %171
  %173 = load i64, ptr %172, align 8, !tbaa !9
  %174 = add nsw i64 %173, 1
  %175 = sdiv i64 %174, 2
  %176 = load ptr, ptr %22, align 8, !tbaa !5
  %177 = load i64, ptr %32, align 8, !tbaa !9
  %178 = mul nsw i64 %177, 2
  %179 = getelementptr inbounds i64, ptr %176, i64 %178
  store i64 %175, ptr %179, align 8, !tbaa !9
  %180 = load ptr, ptr %22, align 8, !tbaa !5
  %181 = load i64, ptr %32, align 8, !tbaa !9
  %182 = getelementptr inbounds i64, ptr %180, i64 %181
  %183 = load i64, ptr %182, align 8, !tbaa !9
  %184 = sdiv i64 %183, 2
  %185 = load ptr, ptr %22, align 8, !tbaa !5
  %186 = load i64, ptr %32, align 8, !tbaa !9
  %187 = shl i64 %186, 1
  %188 = sub nsw i64 %187, 1
  %189 = getelementptr inbounds i64, ptr %185, i64 %188
  store i64 %184, ptr %189, align 8, !tbaa !9
  br label %190

190:                                              ; preds = %169
  %191 = load i64, ptr %32, align 8, !tbaa !9
  %192 = add nsw i64 %191, -1
  store i64 %192, ptr %32, align 8, !tbaa !9
  br label %166, !llvm.loop !11

193:                                              ; preds = %166
  %194 = load i64, ptr %47, align 8, !tbaa !9
  %195 = add nsw i64 %194, 1
  store i64 %195, ptr %47, align 8, !tbaa !9
  %196 = load i64, ptr %52, align 8, !tbaa !9
  %197 = shl i64 %196, 1
  store i64 %197, ptr %52, align 8, !tbaa !9
  br label %157

198:                                              ; preds = %157
  %199 = load i64, ptr %52, align 8, !tbaa !9
  store i64 %199, ptr %28, align 8, !tbaa !9
  store i64 2, ptr %32, align 8, !tbaa !9
  br label %200

200:                                              ; preds = %215, %198
  %201 = load i64, ptr %32, align 8, !tbaa !9
  %202 = load i64, ptr %28, align 8, !tbaa !9
  %203 = icmp sle i64 %201, %202
  br i1 %203, label %204, label %218

204:                                              ; preds = %200
  %205 = load ptr, ptr %22, align 8, !tbaa !5
  %206 = load i64, ptr %32, align 8, !tbaa !9
  %207 = sub nsw i64 %206, 1
  %208 = getelementptr inbounds i64, ptr %205, i64 %207
  %209 = load i64, ptr %208, align 8, !tbaa !9
  %210 = load ptr, ptr %22, align 8, !tbaa !5
  %211 = load i64, ptr %32, align 8, !tbaa !9
  %212 = getelementptr inbounds i64, ptr %210, i64 %211
  %213 = load i64, ptr %212, align 8, !tbaa !9
  %214 = add nsw i64 %213, %209
  store i64 %214, ptr %212, align 8, !tbaa !9
  br label %215

215:                                              ; preds = %204
  %216 = load i64, ptr %32, align 8, !tbaa !9
  %217 = add nsw i64 %216, 1
  store i64 %217, ptr %32, align 8, !tbaa !9
  br label %200, !llvm.loop !13

218:                                              ; preds = %200
  %219 = load i64, ptr %52, align 8, !tbaa !9
  %220 = sub nsw i64 %219, 1
  store i64 %220, ptr %39, align 8, !tbaa !9
  %221 = load i64, ptr %39, align 8, !tbaa !9
  store i64 %221, ptr %28, align 8, !tbaa !9
  store i64 1, ptr %31, align 8, !tbaa !9
  br label %222

222:                                              ; preds = %270, %218
  %223 = load i64, ptr %31, align 8, !tbaa !9
  %224 = load i64, ptr %28, align 8, !tbaa !9
  %225 = icmp sle i64 %223, %224
  br i1 %225, label %226, label %273

226:                                              ; preds = %222
  %227 = load ptr, ptr %22, align 8, !tbaa !5
  %228 = load i64, ptr %31, align 8, !tbaa !9
  %229 = getelementptr inbounds i64, ptr %227, i64 %228
  %230 = load i64, ptr %229, align 8, !tbaa !9
  %231 = add nsw i64 %230, 1
  store i64 %231, ptr %50, align 8, !tbaa !9
  %232 = load i64, ptr %50, align 8, !tbaa !9
  %233 = sub nsw i64 %232, 1
  store i64 %233, ptr %38, align 8, !tbaa !9
  %234 = load ptr, ptr %16, align 8, !tbaa !5
  %235 = load i64, ptr %38, align 8, !tbaa !9
  %236 = getelementptr inbounds double, ptr %234, i64 %235
  %237 = load double, ptr %236, align 8, !tbaa !14
  store double %237, ptr %30, align 8, !tbaa !14
  %238 = load double, ptr %30, align 8, !tbaa !14
  %239 = fcmp oge double %238, 0.000000e+00
  br i1 %239, label %240, label %242

240:                                              ; preds = %226
  %241 = load double, ptr %30, align 8, !tbaa !14
  br label %245

242:                                              ; preds = %226
  %243 = load double, ptr %30, align 8, !tbaa !14
  %244 = fneg double %243
  br label %245

245:                                              ; preds = %242, %240
  %246 = phi double [ %241, %240 ], [ %244, %242 ]
  %247 = load ptr, ptr %15, align 8, !tbaa !5
  %248 = load i64, ptr %38, align 8, !tbaa !9
  %249 = getelementptr inbounds double, ptr %247, i64 %248
  %250 = load double, ptr %249, align 8, !tbaa !14
  %251 = fsub double %250, %246
  store double %251, ptr %249, align 8, !tbaa !14
  %252 = load ptr, ptr %16, align 8, !tbaa !5
  %253 = load i64, ptr %38, align 8, !tbaa !9
  %254 = getelementptr inbounds double, ptr %252, i64 %253
  %255 = load double, ptr %254, align 8, !tbaa !14
  store double %255, ptr %30, align 8, !tbaa !14
  %256 = load double, ptr %30, align 8, !tbaa !14
  %257 = fcmp oge double %256, 0.000000e+00
  br i1 %257, label %258, label %260

258:                                              ; preds = %245
  %259 = load double, ptr %30, align 8, !tbaa !14
  br label %263

260:                                              ; preds = %245
  %261 = load double, ptr %30, align 8, !tbaa !14
  %262 = fneg double %261
  br label %263

263:                                              ; preds = %260, %258
  %264 = phi double [ %259, %258 ], [ %262, %260 ]
  %265 = load ptr, ptr %15, align 8, !tbaa !5
  %266 = load i64, ptr %50, align 8, !tbaa !9
  %267 = getelementptr inbounds double, ptr %265, i64 %266
  %268 = load double, ptr %267, align 8, !tbaa !14
  %269 = fsub double %268, %264
  store double %269, ptr %267, align 8, !tbaa !14
  br label %270

270:                                              ; preds = %263
  %271 = load i64, ptr %31, align 8, !tbaa !9
  %272 = add nsw i64 %271, 1
  store i64 %272, ptr %31, align 8, !tbaa !9
  br label %222, !llvm.loop !16

273:                                              ; preds = %222
  %274 = load ptr, ptr %14, align 8, !tbaa !5
  %275 = load i64, ptr %274, align 8, !tbaa !9
  %276 = shl i64 %275, 2
  %277 = add nsw i64 %276, 3
  store i64 %277, ptr %44, align 8, !tbaa !9
  %278 = load ptr, ptr %14, align 8, !tbaa !5
  %279 = load i64, ptr %278, align 8, !tbaa !9
  %280 = sitofp i64 %279 to double
  %281 = call double @log(double noundef %280) #4
  %282 = call double @log(double noundef 2.000000e+00) #4
  %283 = fdiv double %281, %282
  store double %283, ptr %41, align 8, !tbaa !14
  %284 = load double, ptr %41, align 8, !tbaa !14
  %285 = fptosi double %284 to i64
  store i64 %285, ptr %36, align 8, !tbaa !9
  %286 = call i64 @pow_ii(ptr noundef @c__2, ptr noundef %36)
  %287 = load ptr, ptr %14, align 8, !tbaa !5
  %288 = load i64, ptr %287, align 8, !tbaa !9
  %289 = icmp slt i64 %286, %288
  br i1 %289, label %290, label %293

290:                                              ; preds = %273
  %291 = load i64, ptr %36, align 8, !tbaa !9
  %292 = add nsw i64 %291, 1
  store i64 %292, ptr %36, align 8, !tbaa !9
  br label %293

293:                                              ; preds = %290, %273
  %294 = call i64 @pow_ii(ptr noundef @c__2, ptr noundef %36)
  %295 = load ptr, ptr %14, align 8, !tbaa !5
  %296 = load i64, ptr %295, align 8, !tbaa !9
  %297 = icmp slt i64 %294, %296
  br i1 %297, label %298, label %301

298:                                              ; preds = %293
  %299 = load i64, ptr %36, align 8, !tbaa !9
  %300 = add nsw i64 %299, 1
  store i64 %300, ptr %36, align 8, !tbaa !9
  br label %301

301:                                              ; preds = %298, %293
  %302 = load i64, ptr %44, align 8, !tbaa !9
  %303 = load ptr, ptr %14, align 8, !tbaa !5
  %304 = load i64, ptr %303, align 8, !tbaa !9
  %305 = add nsw i64 %302, %304
  %306 = add nsw i64 %305, 1
  store i64 %306, ptr %56, align 8, !tbaa !9
  %307 = load i64, ptr %56, align 8, !tbaa !9
  %308 = load ptr, ptr %14, align 8, !tbaa !5
  %309 = load i64, ptr %308, align 8, !tbaa !9
  %310 = load i64, ptr %36, align 8, !tbaa !9
  %311 = mul nsw i64 %309, %310
  %312 = add nsw i64 %307, %311
  store i64 %312, ptr %43, align 8, !tbaa !9
  %313 = load i64, ptr %43, align 8, !tbaa !9
  %314 = load ptr, ptr %14, align 8, !tbaa !5
  %315 = load i64, ptr %314, align 8, !tbaa !9
  %316 = load i64, ptr %36, align 8, !tbaa !9
  %317 = mul nsw i64 %315, %316
  %318 = add nsw i64 %313, %317
  store i64 %318, ptr %46, align 8, !tbaa !9
  %319 = load i64, ptr %46, align 8, !tbaa !9
  %320 = load ptr, ptr %14, align 8, !tbaa !5
  %321 = load i64, ptr %320, align 8, !tbaa !9
  %322 = add nsw i64 %319, %321
  %323 = add nsw i64 %322, 2
  store i64 %323, ptr %53, align 8, !tbaa !9
  %324 = load i64, ptr %53, align 8, !tbaa !9
  %325 = load ptr, ptr %14, align 8, !tbaa !5
  %326 = load i64, ptr %325, align 8, !tbaa !9
  %327 = load i64, ptr %36, align 8, !tbaa !9
  %328 = mul nsw i64 %326, %327
  %329 = add nsw i64 %324, %328
  store i64 %329, ptr %48, align 8, !tbaa !9
  store i64 1, ptr %49, align 8, !tbaa !9
  %330 = load i64, ptr %49, align 8, !tbaa !9
  %331 = load ptr, ptr %14, align 8, !tbaa !5
  %332 = load i64, ptr %331, align 8, !tbaa !9
  %333 = shl i64 %332, 1
  %334 = load i64, ptr %36, align 8, !tbaa !9
  %335 = mul nsw i64 %333, %334
  %336 = add nsw i64 %330, %335
  store i64 %336, ptr %35, align 8, !tbaa !9
  %337 = load ptr, ptr %14, align 8, !tbaa !5
  %338 = load i64, ptr %337, align 8, !tbaa !9
  store i64 %338, ptr %28, align 8, !tbaa !9
  %339 = load i64, ptr %35, align 8, !tbaa !9
  %340 = load i64, ptr %28, align 8, !tbaa !9
  %341 = load i64, ptr %28, align 8, !tbaa !9
  %342 = mul nsw i64 %340, %341
  %343 = add nsw i64 %339, %342
  %344 = add nsw i64 %343, 1
  store i64 %344, ptr %45, align 8, !tbaa !9
  %345 = load i64, ptr %52, align 8, !tbaa !9
  store i64 %345, ptr %28, align 8, !tbaa !9
  store i64 0, ptr %31, align 8, !tbaa !9
  br label %346

346:                                              ; preds = %361, %301
  %347 = load i64, ptr %31, align 8, !tbaa !9
  %348 = load i64, ptr %28, align 8, !tbaa !9
  %349 = icmp sle i64 %347, %348
  br i1 %349, label %350, label %364

350:                                              ; preds = %346
  %351 = load ptr, ptr %22, align 8, !tbaa !5
  %352 = load i64, ptr %56, align 8, !tbaa !9
  %353 = load i64, ptr %31, align 8, !tbaa !9
  %354 = add nsw i64 %352, %353
  %355 = getelementptr inbounds i64, ptr %351, i64 %354
  store i64 1, ptr %355, align 8, !tbaa !9
  %356 = load ptr, ptr %22, align 8, !tbaa !5
  %357 = load i64, ptr %53, align 8, !tbaa !9
  %358 = load i64, ptr %31, align 8, !tbaa !9
  %359 = add nsw i64 %357, %358
  %360 = getelementptr inbounds i64, ptr %356, i64 %359
  store i64 1, ptr %360, align 8, !tbaa !9
  br label %361

361:                                              ; preds = %350
  %362 = load i64, ptr %31, align 8, !tbaa !9
  %363 = add nsw i64 %362, 1
  store i64 %363, ptr %31, align 8, !tbaa !9
  br label %346, !llvm.loop !17

364:                                              ; preds = %346
  %365 = load ptr, ptr %22, align 8, !tbaa !5
  %366 = load i64, ptr %46, align 8, !tbaa !9
  %367 = getelementptr inbounds i64, ptr %365, i64 %366
  store i64 1, ptr %367, align 8, !tbaa !9
  store i64 0, ptr %42, align 8, !tbaa !9
  %368 = load i64, ptr %39, align 8, !tbaa !9
  store i64 %368, ptr %28, align 8, !tbaa !9
  store i64 0, ptr %31, align 8, !tbaa !9
  br label %369

369:                                              ; preds = %499, %364
  %370 = load i64, ptr %31, align 8, !tbaa !9
  %371 = load i64, ptr %28, align 8, !tbaa !9
  %372 = icmp sle i64 %370, %371
  br i1 %372, label %373, label %502

373:                                              ; preds = %369
  %374 = load i64, ptr %31, align 8, !tbaa !9
  %375 = icmp eq i64 %374, 0
  br i1 %375, label %376, label %380

376:                                              ; preds = %373
  store i64 1, ptr %50, align 8, !tbaa !9
  %377 = load ptr, ptr %22, align 8, !tbaa !5
  %378 = getelementptr inbounds i64, ptr %377, i64 1
  %379 = load i64, ptr %378, align 8, !tbaa !9
  store i64 %379, ptr %55, align 8, !tbaa !9
  br label %396

380:                                              ; preds = %373
  %381 = load ptr, ptr %22, align 8, !tbaa !5
  %382 = load i64, ptr %31, align 8, !tbaa !9
  %383 = getelementptr inbounds i64, ptr %381, i64 %382
  %384 = load i64, ptr %383, align 8, !tbaa !9
  %385 = add nsw i64 %384, 1
  store i64 %385, ptr %50, align 8, !tbaa !9
  %386 = load ptr, ptr %22, align 8, !tbaa !5
  %387 = load i64, ptr %31, align 8, !tbaa !9
  %388 = add nsw i64 %387, 1
  %389 = getelementptr inbounds i64, ptr %386, i64 %388
  %390 = load i64, ptr %389, align 8, !tbaa !9
  %391 = load ptr, ptr %22, align 8, !tbaa !5
  %392 = load i64, ptr %31, align 8, !tbaa !9
  %393 = getelementptr inbounds i64, ptr %391, i64 %392
  %394 = load i64, ptr %393, align 8, !tbaa !9
  %395 = sub nsw i64 %390, %394
  store i64 %395, ptr %55, align 8, !tbaa !9
  br label %396

396:                                              ; preds = %380, %376
  %397 = load i64, ptr %35, align 8, !tbaa !9
  %398 = sub nsw i64 %397, 1
  %399 = load ptr, ptr %22, align 8, !tbaa !5
  %400 = load i64, ptr %46, align 8, !tbaa !9
  %401 = load i64, ptr %42, align 8, !tbaa !9
  %402 = add nsw i64 %400, %401
  %403 = getelementptr inbounds i64, ptr %399, i64 %402
  %404 = load i64, ptr %403, align 8, !tbaa !9
  %405 = add nsw i64 %398, %404
  store i64 %405, ptr %34, align 8, !tbaa !9
  %406 = load ptr, ptr %15, align 8, !tbaa !5
  %407 = load i64, ptr %50, align 8, !tbaa !9
  %408 = getelementptr inbounds double, ptr %406, i64 %407
  %409 = load ptr, ptr %16, align 8, !tbaa !5
  %410 = load i64, ptr %50, align 8, !tbaa !9
  %411 = getelementptr inbounds double, ptr %409, i64 %410
  %412 = load ptr, ptr %21, align 8, !tbaa !5
  %413 = load i64, ptr %34, align 8, !tbaa !9
  %414 = getelementptr inbounds double, ptr %412, i64 %413
  %415 = load ptr, ptr %21, align 8, !tbaa !5
  %416 = getelementptr inbounds double, ptr %415, i64 1
  %417 = load ptr, ptr %23, align 8, !tbaa !5
  %418 = call i32 @dsteqr_(ptr noundef @.str.2, ptr noundef %55, ptr noundef %408, ptr noundef %411, ptr noundef %414, ptr noundef %55, ptr noundef %416, ptr noundef %417)
  %419 = load ptr, ptr %13, align 8, !tbaa !5
  %420 = load ptr, ptr %17, align 8, !tbaa !5
  %421 = load i64, ptr %50, align 8, !tbaa !9
  %422 = load i64, ptr %24, align 8, !tbaa !9
  %423 = mul nsw i64 %421, %422
  %424 = add nsw i64 %423, 1
  %425 = getelementptr inbounds %struct.doublecomplex, ptr %420, i64 %424
  %426 = load ptr, ptr %18, align 8, !tbaa !5
  %427 = load ptr, ptr %21, align 8, !tbaa !5
  %428 = load i64, ptr %34, align 8, !tbaa !9
  %429 = getelementptr inbounds double, ptr %427, i64 %428
  %430 = load ptr, ptr %19, align 8, !tbaa !5
  %431 = load i64, ptr %50, align 8, !tbaa !9
  %432 = load i64, ptr %26, align 8, !tbaa !9
  %433 = mul nsw i64 %431, %432
  %434 = add nsw i64 %433, 1
  %435 = getelementptr inbounds %struct.doublecomplex, ptr %430, i64 %434
  %436 = load ptr, ptr %20, align 8, !tbaa !5
  %437 = load ptr, ptr %21, align 8, !tbaa !5
  %438 = load i64, ptr %45, align 8, !tbaa !9
  %439 = getelementptr inbounds double, ptr %437, i64 %438
  %440 = call i32 @zlacrm_(ptr noundef %419, ptr noundef %55, ptr noundef %425, ptr noundef %426, ptr noundef %429, ptr noundef %55, ptr noundef %435, ptr noundef %436, ptr noundef %439)
  %441 = load i64, ptr %55, align 8, !tbaa !9
  store i64 %441, ptr %29, align 8, !tbaa !9
  %442 = load ptr, ptr %22, align 8, !tbaa !5
  %443 = load i64, ptr %46, align 8, !tbaa !9
  %444 = load i64, ptr %42, align 8, !tbaa !9
  %445 = add nsw i64 %443, %444
  %446 = getelementptr inbounds i64, ptr %442, i64 %445
  %447 = load i64, ptr %446, align 8, !tbaa !9
  %448 = load i64, ptr %29, align 8, !tbaa !9
  %449 = load i64, ptr %29, align 8, !tbaa !9
  %450 = mul nsw i64 %448, %449
  %451 = add nsw i64 %447, %450
  %452 = load ptr, ptr %22, align 8, !tbaa !5
  %453 = load i64, ptr %46, align 8, !tbaa !9
  %454 = load i64, ptr %42, align 8, !tbaa !9
  %455 = add nsw i64 %453, %454
  %456 = add nsw i64 %455, 1
  %457 = getelementptr inbounds i64, ptr %452, i64 %456
  store i64 %451, ptr %457, align 8, !tbaa !9
  %458 = load i64, ptr %42, align 8, !tbaa !9
  %459 = add nsw i64 %458, 1
  store i64 %459, ptr %42, align 8, !tbaa !9
  %460 = load ptr, ptr %23, align 8, !tbaa !5
  %461 = load i64, ptr %460, align 8, !tbaa !9
  %462 = icmp sgt i64 %461, 0
  br i1 %462, label %463, label %475

463:                                              ; preds = %396
  %464 = load i64, ptr %50, align 8, !tbaa !9
  %465 = load ptr, ptr %14, align 8, !tbaa !5
  %466 = load i64, ptr %465, align 8, !tbaa !9
  %467 = add nsw i64 %466, 1
  %468 = mul nsw i64 %464, %467
  %469 = load i64, ptr %50, align 8, !tbaa !9
  %470 = add nsw i64 %468, %469
  %471 = load i64, ptr %55, align 8, !tbaa !9
  %472 = add nsw i64 %470, %471
  %473 = sub nsw i64 %472, 1
  %474 = load ptr, ptr %23, align 8, !tbaa !5
  store i64 %473, ptr %474, align 8, !tbaa !9
  store i32 0, ptr %12, align 4
  store i32 1, ptr %58, align 4
  br label %682

475:                                              ; preds = %396
  store i64 1, ptr %33, align 8, !tbaa !9
  %476 = load ptr, ptr %22, align 8, !tbaa !5
  %477 = load i64, ptr %31, align 8, !tbaa !9
  %478 = add nsw i64 %477, 1
  %479 = getelementptr inbounds i64, ptr %476, i64 %478
  %480 = load i64, ptr %479, align 8, !tbaa !9
  store i64 %480, ptr %29, align 8, !tbaa !9
  %481 = load i64, ptr %50, align 8, !tbaa !9
  store i64 %481, ptr %32, align 8, !tbaa !9
  br label %482

482:                                              ; preds = %495, %475
  %483 = load i64, ptr %32, align 8, !tbaa !9
  %484 = load i64, ptr %29, align 8, !tbaa !9
  %485 = icmp sle i64 %483, %484
  br i1 %485, label %486, label %498

486:                                              ; preds = %482
  %487 = load i64, ptr %33, align 8, !tbaa !9
  %488 = load ptr, ptr %22, align 8, !tbaa !5
  %489 = load i64, ptr %44, align 8, !tbaa !9
  %490 = load i64, ptr %32, align 8, !tbaa !9
  %491 = add nsw i64 %489, %490
  %492 = getelementptr inbounds i64, ptr %488, i64 %491
  store i64 %487, ptr %492, align 8, !tbaa !9
  %493 = load i64, ptr %33, align 8, !tbaa !9
  %494 = add nsw i64 %493, 1
  store i64 %494, ptr %33, align 8, !tbaa !9
  br label %495

495:                                              ; preds = %486
  %496 = load i64, ptr %32, align 8, !tbaa !9
  %497 = add nsw i64 %496, 1
  store i64 %497, ptr %32, align 8, !tbaa !9
  br label %482, !llvm.loop !18

498:                                              ; preds = %482
  br label %499

499:                                              ; preds = %498
  %500 = load i64, ptr %31, align 8, !tbaa !9
  %501 = add nsw i64 %500, 1
  store i64 %501, ptr %31, align 8, !tbaa !9
  br label %369, !llvm.loop !19

502:                                              ; preds = %369
  store i64 1, ptr %54, align 8, !tbaa !9
  br label %503

503:                                              ; preds = %632, %502
  %504 = load i64, ptr %52, align 8, !tbaa !9
  %505 = icmp sgt i64 %504, 1
  br i1 %505, label %506, label %637

506:                                              ; preds = %503
  %507 = load i64, ptr %52, align 8, !tbaa !9
  %508 = sub nsw i64 %507, 2
  store i64 %508, ptr %40, align 8, !tbaa !9
  %509 = load i64, ptr %40, align 8, !tbaa !9
  store i64 %509, ptr %28, align 8, !tbaa !9
  store i64 0, ptr %31, align 8, !tbaa !9
  br label %510

510:                                              ; preds = %629, %506
  %511 = load i64, ptr %31, align 8, !tbaa !9
  %512 = load i64, ptr %28, align 8, !tbaa !9
  %513 = icmp sle i64 %511, %512
  br i1 %513, label %514, label %632

514:                                              ; preds = %510
  %515 = load i64, ptr %31, align 8, !tbaa !9
  %516 = icmp eq i64 %515, 0
  br i1 %516, label %517, label %524

517:                                              ; preds = %514
  store i64 1, ptr %50, align 8, !tbaa !9
  %518 = load ptr, ptr %22, align 8, !tbaa !5
  %519 = getelementptr inbounds i64, ptr %518, i64 2
  %520 = load i64, ptr %519, align 8, !tbaa !9
  store i64 %520, ptr %55, align 8, !tbaa !9
  %521 = load ptr, ptr %22, align 8, !tbaa !5
  %522 = getelementptr inbounds i64, ptr %521, i64 1
  %523 = load i64, ptr %522, align 8, !tbaa !9
  store i64 %523, ptr %37, align 8, !tbaa !9
  store i64 0, ptr %51, align 8, !tbaa !9
  br label %544

524:                                              ; preds = %514
  %525 = load ptr, ptr %22, align 8, !tbaa !5
  %526 = load i64, ptr %31, align 8, !tbaa !9
  %527 = getelementptr inbounds i64, ptr %525, i64 %526
  %528 = load i64, ptr %527, align 8, !tbaa !9
  %529 = add nsw i64 %528, 1
  store i64 %529, ptr %50, align 8, !tbaa !9
  %530 = load ptr, ptr %22, align 8, !tbaa !5
  %531 = load i64, ptr %31, align 8, !tbaa !9
  %532 = add nsw i64 %531, 2
  %533 = getelementptr inbounds i64, ptr %530, i64 %532
  %534 = load i64, ptr %533, align 8, !tbaa !9
  %535 = load ptr, ptr %22, align 8, !tbaa !5
  %536 = load i64, ptr %31, align 8, !tbaa !9
  %537 = getelementptr inbounds i64, ptr %535, i64 %536
  %538 = load i64, ptr %537, align 8, !tbaa !9
  %539 = sub nsw i64 %534, %538
  store i64 %539, ptr %55, align 8, !tbaa !9
  %540 = load i64, ptr %55, align 8, !tbaa !9
  %541 = sdiv i64 %540, 2
  store i64 %541, ptr %37, align 8, !tbaa !9
  %542 = load i64, ptr %51, align 8, !tbaa !9
  %543 = add nsw i64 %542, 1
  store i64 %543, ptr %51, align 8, !tbaa !9
  br label %544

544:                                              ; preds = %524, %517
  %545 = load ptr, ptr %13, align 8, !tbaa !5
  %546 = load ptr, ptr %15, align 8, !tbaa !5
  %547 = load i64, ptr %50, align 8, !tbaa !9
  %548 = getelementptr inbounds double, ptr %546, i64 %547
  %549 = load ptr, ptr %19, align 8, !tbaa !5
  %550 = load i64, ptr %50, align 8, !tbaa !9
  %551 = load i64, ptr %26, align 8, !tbaa !9
  %552 = mul nsw i64 %550, %551
  %553 = add nsw i64 %552, 1
  %554 = getelementptr inbounds %struct.doublecomplex, ptr %549, i64 %553
  %555 = load ptr, ptr %20, align 8, !tbaa !5
  %556 = load ptr, ptr %16, align 8, !tbaa !5
  %557 = load i64, ptr %50, align 8, !tbaa !9
  %558 = load i64, ptr %37, align 8, !tbaa !9
  %559 = add nsw i64 %557, %558
  %560 = sub nsw i64 %559, 1
  %561 = getelementptr inbounds double, ptr %556, i64 %560
  %562 = load ptr, ptr %22, align 8, !tbaa !5
  %563 = load i64, ptr %44, align 8, !tbaa !9
  %564 = load i64, ptr %50, align 8, !tbaa !9
  %565 = add nsw i64 %563, %564
  %566 = getelementptr inbounds i64, ptr %562, i64 %565
  %567 = load ptr, ptr %21, align 8, !tbaa !5
  %568 = load i64, ptr %35, align 8, !tbaa !9
  %569 = getelementptr inbounds double, ptr %567, i64 %568
  %570 = load ptr, ptr %22, align 8, !tbaa !5
  %571 = load i64, ptr %46, align 8, !tbaa !9
  %572 = getelementptr inbounds i64, ptr %570, i64 %571
  %573 = load ptr, ptr %22, align 8, !tbaa !5
  %574 = load i64, ptr %56, align 8, !tbaa !9
  %575 = getelementptr inbounds i64, ptr %573, i64 %574
  %576 = load ptr, ptr %22, align 8, !tbaa !5
  %577 = load i64, ptr %43, align 8, !tbaa !9
  %578 = getelementptr inbounds i64, ptr %576, i64 %577
  %579 = load ptr, ptr %22, align 8, !tbaa !5
  %580 = load i64, ptr %53, align 8, !tbaa !9
  %581 = getelementptr inbounds i64, ptr %579, i64 %580
  %582 = load ptr, ptr %22, align 8, !tbaa !5
  %583 = load i64, ptr %48, align 8, !tbaa !9
  %584 = getelementptr inbounds i64, ptr %582, i64 %583
  %585 = load ptr, ptr %21, align 8, !tbaa !5
  %586 = load i64, ptr %49, align 8, !tbaa !9
  %587 = getelementptr inbounds double, ptr %585, i64 %586
  %588 = load ptr, ptr %17, align 8, !tbaa !5
  %589 = load i64, ptr %50, align 8, !tbaa !9
  %590 = load i64, ptr %24, align 8, !tbaa !9
  %591 = mul nsw i64 %589, %590
  %592 = add nsw i64 %591, 1
  %593 = getelementptr inbounds %struct.doublecomplex, ptr %588, i64 %592
  %594 = load ptr, ptr %21, align 8, !tbaa !5
  %595 = load i64, ptr %45, align 8, !tbaa !9
  %596 = getelementptr inbounds double, ptr %594, i64 %595
  %597 = load ptr, ptr %22, align 8, !tbaa !5
  %598 = load i64, ptr %52, align 8, !tbaa !9
  %599 = add nsw i64 %598, 1
  %600 = getelementptr inbounds i64, ptr %597, i64 %599
  %601 = load ptr, ptr %23, align 8, !tbaa !5
  %602 = call i32 @zlaed7_(ptr noundef %55, ptr noundef %37, ptr noundef %545, ptr noundef %47, ptr noundef %54, ptr noundef %51, ptr noundef %548, ptr noundef %554, ptr noundef %555, ptr noundef %561, ptr noundef %566, ptr noundef %569, ptr noundef %572, ptr noundef %575, ptr noundef %578, ptr noundef %581, ptr noundef %584, ptr noundef %587, ptr noundef %593, ptr noundef %596, ptr noundef %600, ptr noundef %601)
  %603 = load ptr, ptr %23, align 8, !tbaa !5
  %604 = load i64, ptr %603, align 8, !tbaa !9
  %605 = icmp sgt i64 %604, 0
  br i1 %605, label %606, label %618

606:                                              ; preds = %544
  %607 = load i64, ptr %50, align 8, !tbaa !9
  %608 = load ptr, ptr %14, align 8, !tbaa !5
  %609 = load i64, ptr %608, align 8, !tbaa !9
  %610 = add nsw i64 %609, 1
  %611 = mul nsw i64 %607, %610
  %612 = load i64, ptr %50, align 8, !tbaa !9
  %613 = add nsw i64 %611, %612
  %614 = load i64, ptr %55, align 8, !tbaa !9
  %615 = add nsw i64 %613, %614
  %616 = sub nsw i64 %615, 1
  %617 = load ptr, ptr %23, align 8, !tbaa !5
  store i64 %616, ptr %617, align 8, !tbaa !9
  store i32 0, ptr %12, align 4
  store i32 1, ptr %58, align 4
  br label %682

618:                                              ; preds = %544
  %619 = load ptr, ptr %22, align 8, !tbaa !5
  %620 = load i64, ptr %31, align 8, !tbaa !9
  %621 = add nsw i64 %620, 2
  %622 = getelementptr inbounds i64, ptr %619, i64 %621
  %623 = load i64, ptr %622, align 8, !tbaa !9
  %624 = load ptr, ptr %22, align 8, !tbaa !5
  %625 = load i64, ptr %31, align 8, !tbaa !9
  %626 = sdiv i64 %625, 2
  %627 = add nsw i64 %626, 1
  %628 = getelementptr inbounds i64, ptr %624, i64 %627
  store i64 %623, ptr %628, align 8, !tbaa !9
  br label %629

629:                                              ; preds = %618
  %630 = load i64, ptr %31, align 8, !tbaa !9
  %631 = add nsw i64 %630, 2
  store i64 %631, ptr %31, align 8, !tbaa !9
  br label %510, !llvm.loop !20

632:                                              ; preds = %510
  %633 = load i64, ptr %52, align 8, !tbaa !9
  %634 = sdiv i64 %633, 2
  store i64 %634, ptr %52, align 8, !tbaa !9
  %635 = load i64, ptr %54, align 8, !tbaa !9
  %636 = add nsw i64 %635, 1
  store i64 %636, ptr %54, align 8, !tbaa !9
  br label %503

637:                                              ; preds = %503
  %638 = load ptr, ptr %14, align 8, !tbaa !5
  %639 = load i64, ptr %638, align 8, !tbaa !9
  store i64 %639, ptr %28, align 8, !tbaa !9
  store i64 1, ptr %31, align 8, !tbaa !9
  br label %640

640:                                              ; preds = %672, %637
  %641 = load i64, ptr %31, align 8, !tbaa !9
  %642 = load i64, ptr %28, align 8, !tbaa !9
  %643 = icmp sle i64 %641, %642
  br i1 %643, label %644, label %675

644:                                              ; preds = %640
  %645 = load ptr, ptr %22, align 8, !tbaa !5
  %646 = load i64, ptr %44, align 8, !tbaa !9
  %647 = load i64, ptr %31, align 8, !tbaa !9
  %648 = add nsw i64 %646, %647
  %649 = getelementptr inbounds i64, ptr %645, i64 %648
  %650 = load i64, ptr %649, align 8, !tbaa !9
  store i64 %650, ptr %32, align 8, !tbaa !9
  %651 = load ptr, ptr %15, align 8, !tbaa !5
  %652 = load i64, ptr %32, align 8, !tbaa !9
  %653 = getelementptr inbounds double, ptr %651, i64 %652
  %654 = load double, ptr %653, align 8, !tbaa !14
  %655 = load ptr, ptr %21, align 8, !tbaa !5
  %656 = load i64, ptr %31, align 8, !tbaa !9
  %657 = getelementptr inbounds double, ptr %655, i64 %656
  store double %654, ptr %657, align 8, !tbaa !14
  %658 = load ptr, ptr %13, align 8, !tbaa !5
  %659 = load ptr, ptr %19, align 8, !tbaa !5
  %660 = load i64, ptr %32, align 8, !tbaa !9
  %661 = load i64, ptr %26, align 8, !tbaa !9
  %662 = mul nsw i64 %660, %661
  %663 = add nsw i64 %662, 1
  %664 = getelementptr inbounds %struct.doublecomplex, ptr %659, i64 %663
  %665 = load ptr, ptr %17, align 8, !tbaa !5
  %666 = load i64, ptr %31, align 8, !tbaa !9
  %667 = load i64, ptr %24, align 8, !tbaa !9
  %668 = mul nsw i64 %666, %667
  %669 = add nsw i64 %668, 1
  %670 = getelementptr inbounds %struct.doublecomplex, ptr %665, i64 %669
  %671 = call i32 @f2c_zcopy(ptr noundef %658, ptr noundef %664, ptr noundef @c__1, ptr noundef %670, ptr noundef @c__1)
  br label %672

672:                                              ; preds = %644
  %673 = load i64, ptr %31, align 8, !tbaa !9
  %674 = add nsw i64 %673, 1
  store i64 %674, ptr %31, align 8, !tbaa !9
  br label %640, !llvm.loop !21

675:                                              ; preds = %640
  %676 = load ptr, ptr %14, align 8, !tbaa !5
  %677 = load ptr, ptr %21, align 8, !tbaa !5
  %678 = getelementptr inbounds double, ptr %677, i64 1
  %679 = load ptr, ptr %15, align 8, !tbaa !5
  %680 = getelementptr inbounds double, ptr %679, i64 1
  %681 = call i32 @f2c_dcopy(ptr noundef %676, ptr noundef %678, ptr noundef @c__1, ptr noundef %680, ptr noundef @c__1)
  store i32 0, ptr %12, align 4
  store i32 1, ptr %58, align 4
  br label %682

682:                                              ; preds = %675, %606, %463, %150, %141
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #4
  %683 = load i32, ptr %12, align 4
  ret i32 %683
}

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

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

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

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

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

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

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

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

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

declare i32 @f2c_dcopy(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 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind }

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

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


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

%struct.doublecomplex = type { double, double }

@.str = external hidden unnamed_addr constant [7 x i8], align 1
@c__9 = external hidden global i64, align 8
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c__0 = external hidden global i64, align 8
@c__2 = external hidden global i64, align 8
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @zlaed0_(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) local_unnamed_addr #0 {
  %12 = alloca i64, align 8
  %13 = alloca i64, align 8
  %14 = alloca i64, align 8
  %15 = alloca i64, align 8
  %16 = alloca i64, align 8
  %17 = alloca i64, align 8
  %18 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #5
  %19 = getelementptr inbounds i8, ptr %2, i64 -8
  %20 = getelementptr inbounds i8, ptr %3, i64 -8
  %21 = load i64, ptr %5, align 8, !tbaa !5
  %22 = xor i64 %21, -1
  %23 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %22
  %24 = load i64, ptr %7, align 8, !tbaa !5
  %25 = xor i64 %24, -1
  %26 = getelementptr inbounds %struct.doublecomplex, ptr %6, i64 %25
  %27 = getelementptr inbounds i8, ptr %8, i64 -8
  %28 = getelementptr inbounds i8, ptr %9, i64 -8
  store i64 0, ptr %10, align 8, !tbaa !5
  %29 = load i64, ptr %0, align 8, !tbaa !5
  %30 = load i64, ptr %1, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.smax.i64(i64 %30, i64 0)
  %31 = icmp slt i64 %29, %spec.select
  br i1 %31, label %.thread, label %32

32:                                               ; preds = %11
  %33 = icmp slt i64 %30, 0
  br i1 %33, label %.thread, label %34

34:                                               ; preds = %32
  %35 = load i64, ptr %5, align 8, !tbaa !5
  %spec.select269 = tail call i64 @llvm.umax.i64(i64 %30, i64 1)
  %36 = icmp slt i64 %35, %spec.select269
  br i1 %36, label %.thread, label %37

37:                                               ; preds = %34
  %38 = load i64, ptr %7, align 8, !tbaa !5
  %39 = icmp slt i64 %38, %spec.select269
  br i1 %39, label %.thread, label %41

.thread:                                          ; preds = %37, %34, %32, %11
  %.sink = phi i64 [ -1, %11 ], [ -2, %32 ], [ -6, %34 ], [ -8, %37 ]
  %.neg = phi i64 [ 1, %11 ], [ 2, %32 ], [ 6, %34 ], [ 8, %37 ]
  store i64 %.sink, ptr %10, align 8, !tbaa !5
  store i64 %.neg, ptr %12, align 8, !tbaa !5
  %40 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %12) #5
  br label %292

41:                                               ; preds = %37
  %42 = icmp eq i64 %30, 0
  br i1 %42, label %292, label %43

43:                                               ; preds = %41
  %44 = tail call i64 @ilaenv_(ptr noundef nonnull @c__9, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0) #5
  %45 = load i64, ptr %1, align 8, !tbaa !5
  store i64 %45, ptr %9, align 8, !tbaa !5
  %46 = icmp sgt i64 %45, %44
  br i1 %46, label %.preheader272, label %._crit_edge276.thread

._crit_edge276.thread:                            ; preds = %43
  store i64 0, ptr %15, align 8, !tbaa !5
  br label %._crit_edge282.thread

.preheader272:                                    ; preds = %43, %._crit_edge
  %.0244275 = phi i64 [ %60, %._crit_edge ], [ 1, %43 ]
  %47 = phi i64 [ %59, %._crit_edge ], [ 0, %43 ]
  %48 = icmp sgt i64 %.0244275, 0
  br i1 %48, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %.preheader272, %.lr.ph
  %.0250273 = phi i64 [ %57, %.lr.ph ], [ %.0244275, %.preheader272 ]
  %49 = getelementptr inbounds i64, ptr %28, i64 %.0250273
  %50 = load i64, ptr %49, align 8, !tbaa !5
  %51 = add nsw i64 %50, 1
  %52 = sdiv i64 %51, 2
  %.idx = shl nsw i64 %.0250273, 4
  %53 = getelementptr inbounds i8, ptr %28, i64 %.idx
  store i64 %52, ptr %53, align 8, !tbaa !5
  %54 = load i64, ptr %49, align 8, !tbaa !5
  %55 = sdiv i64 %54, 2
  %56 = getelementptr i8, ptr %53, i64 -8
  store i64 %55, ptr %56, align 8, !tbaa !5
  %57 = add nsw i64 %.0250273, -1
  %58 = icmp ugt i64 %.0250273, 1
  br i1 %58, label %.lr.ph, label %._crit_edge, !llvm.loop !9

._crit_edge:                                      ; preds = %.lr.ph, %.preheader272
  %59 = add nuw nsw i64 %47, 1
  %60 = shl i64 %.0244275, 1
  %61 = getelementptr inbounds i64, ptr %28, i64 %60
  %62 = load i64, ptr %61, align 8, !tbaa !5
  %63 = icmp sgt i64 %62, %44
  br i1 %63, label %.preheader272, label %._crit_edge276

._crit_edge276:                                   ; preds = %._crit_edge
  store i64 %59, ptr %15, align 8, !tbaa !5
  %.not257278 = icmp slt i64 %60, 2
  br i1 %.not257278, label %._crit_edge282.thread, label %.lr.ph281.preheader

.lr.ph281.preheader:                              ; preds = %._crit_edge276
  %load_initial = load i64, ptr %9, align 8
  %64 = add nsw i64 %60, -1
  %65 = add nsw i64 %60, -2
  %xtraiter = and i64 %64, 3
  %66 = icmp ult i64 %65, 3
  br i1 %66, label %.lr.ph281.epil.preheader, label %.lr.ph281.preheader.new

.lr.ph281.preheader.new:                          ; preds = %.lr.ph281.preheader
  %unroll_iter = and i64 %64, -4
  %invariant.gep406 = getelementptr i8, ptr %28, i64 16
  %invariant.gep408 = getelementptr i8, ptr %28, i64 24
  br label %.lr.ph281

.lr.ph281:                                        ; preds = %.lr.ph281, %.lr.ph281.preheader.new
  %store_forwarded = phi i64 [ %load_initial, %.lr.ph281.preheader.new ], [ %76, %.lr.ph281 ]
  %.1251279 = phi i64 [ 2, %.lr.ph281.preheader.new ], [ %77, %.lr.ph281 ]
  %niter = phi i64 [ 0, %.lr.ph281.preheader.new ], [ %niter.next.3, %.lr.ph281 ]
  %67 = getelementptr i64, ptr %28, i64 %.1251279
  %68 = load i64, ptr %67, align 8, !tbaa !5
  %69 = add nsw i64 %68, %store_forwarded
  store i64 %69, ptr %67, align 8, !tbaa !5
  %70 = getelementptr i64, ptr %9, i64 %.1251279
  %71 = load i64, ptr %70, align 8, !tbaa !5
  %72 = add nsw i64 %71, %69
  store i64 %72, ptr %70, align 8, !tbaa !5
  %gep407 = getelementptr i64, ptr %invariant.gep406, i64 %.1251279
  %73 = load i64, ptr %gep407, align 8, !tbaa !5
  %74 = add nsw i64 %73, %72
  store i64 %74, ptr %gep407, align 8, !tbaa !5
  %gep409 = getelementptr i64, ptr %invariant.gep408, i64 %.1251279
  %75 = load i64, ptr %gep409, align 8, !tbaa !5
  %76 = add nsw i64 %75, %74
  store i64 %76, ptr %gep409, align 8, !tbaa !5
  %77 = add nuw nsw i64 %.1251279, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %.lr.ph281.epil.preheader, label %.lr.ph281, !llvm.loop !11

._crit_edge282.thread:                            ; preds = %._crit_edge276.thread, %._crit_edge276
  %.0244.lcssa345.ph = phi i64 [ %60, %._crit_edge276 ], [ 1, %._crit_edge276.thread ]
  %78 = add nsw i64 %.0244.lcssa345.ph, -1
  store i64 %78, ptr %12, align 8, !tbaa !5
  br label %._crit_edge287

.lr.ph281.epil.preheader:                         ; preds = %.lr.ph281.preheader, %.lr.ph281
  %store_forwarded.unr = phi i64 [ %load_initial, %.lr.ph281.preheader ], [ %76, %.lr.ph281 ]
  %.1251279.unr = phi i64 [ 2, %.lr.ph281.preheader ], [ %77, %.lr.ph281 ]
  br label %.lr.ph281.epil

.lr.ph281.epil:                                   ; preds = %.lr.ph281.epil, %.lr.ph281.epil.preheader
  %store_forwarded.epil = phi i64 [ %store_forwarded.unr, %.lr.ph281.epil.preheader ], [ %81, %.lr.ph281.epil ]
  %.1251279.epil = phi i64 [ %.1251279.unr, %.lr.ph281.epil.preheader ], [ %82, %.lr.ph281.epil ]
  %epil.iter = phi i64 [ 0, %.lr.ph281.epil.preheader ], [ %epil.iter.next, %.lr.ph281.epil ]
  %79 = getelementptr i64, ptr %28, i64 %.1251279.epil
  %80 = load i64, ptr %79, align 8, !tbaa !5
  %81 = add nsw i64 %80, %store_forwarded.epil
  store i64 %81, ptr %79, align 8, !tbaa !5
  %82 = add nuw nsw i64 %.1251279.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %._crit_edge282, label %.lr.ph281.epil, !llvm.loop !12

._crit_edge282:                                   ; preds = %.lr.ph281.epil
  %83 = add nsw i64 %60, -1
  store i64 %83, ptr %12, align 8, !tbaa !5
  br label %.lr.ph286

.lr.ph286:                                        ; preds = %._crit_edge282, %.lr.ph286
  %.0247284 = phi i64 [ %101, %.lr.ph286 ], [ 1, %._crit_edge282 ]
  %84 = getelementptr inbounds i64, ptr %28, i64 %.0247284
  %85 = load i64, ptr %84, align 8, !tbaa !5
  %86 = getelementptr inbounds double, ptr %20, i64 %85
  %87 = load double, ptr %86, align 8, !tbaa !14
  %88 = fcmp oge double %87, 0.000000e+00
  %89 = fneg double %87
  %90 = select i1 %88, double %87, double %89
  %91 = getelementptr inbounds double, ptr %19, i64 %85
  %92 = load double, ptr %91, align 8, !tbaa !14
  %93 = fsub double %92, %90
  store double %93, ptr %91, align 8, !tbaa !14
  %94 = load double, ptr %86, align 8, !tbaa !14
  %95 = fcmp oge double %94, 0.000000e+00
  %96 = fneg double %94
  %97 = select i1 %95, double %94, double %96
  %98 = getelementptr double, ptr %2, i64 %85
  %99 = load double, ptr %98, align 8, !tbaa !14
  %100 = fsub double %99, %97
  store double %100, ptr %98, align 8, !tbaa !14
  %101 = add nuw nsw i64 %.0247284, 1
  %exitcond331.not = icmp eq i64 %101, %60
  br i1 %exitcond331.not, label %._crit_edge287, label %.lr.ph286, !llvm.loop !16

._crit_edge287:                                   ; preds = %.lr.ph286, %._crit_edge282.thread
  %.not258.not283349 = phi i1 [ false, %._crit_edge282.thread ], [ true, %.lr.ph286 ]
  %102 = phi i64 [ %78, %._crit_edge282.thread ], [ %83, %.lr.ph286 ]
  %.0244.lcssa345348 = phi i64 [ %.0244.lcssa345.ph, %._crit_edge282.thread ], [ %60, %.lr.ph286 ]
  %103 = load i64, ptr %1, align 8, !tbaa !5
  %104 = shl i64 %103, 2
  %105 = or disjoint i64 %104, 3
  %106 = sitofp i64 %103 to double
  %107 = tail call double @log(double noundef %106) #5
  %108 = fdiv double %107, 0x3FE62E42FEFA39EF
  %109 = fptosi double %108 to i64
  store i64 %109, ptr %13, align 8, !tbaa !5
  %110 = call i64 @pow_ii(ptr noundef nonnull @c__2, ptr noundef nonnull %13) #5
  %111 = load i64, ptr %1, align 8, !tbaa !5
  %112 = icmp slt i64 %110, %111
  br i1 %112, label %113, label %116

113:                                              ; preds = %._crit_edge287
  %114 = load i64, ptr %13, align 8, !tbaa !5
  %115 = add nsw i64 %114, 1
  store i64 %115, ptr %13, align 8, !tbaa !5
  br label %116

116:                                              ; preds = %113, %._crit_edge287
  %117 = call i64 @pow_ii(ptr noundef nonnull @c__2, ptr noundef nonnull %13) #5
  %118 = load i64, ptr %1, align 8, !tbaa !5
  %119 = icmp slt i64 %117, %118
  %.pre = load i64, ptr %13, align 8, !tbaa !5
  br i1 %119, label %120, label %122

120:                                              ; preds = %116
  %121 = add nsw i64 %.pre, 1
  store i64 %121, ptr %13, align 8, !tbaa !5
  br label %122

122:                                              ; preds = %120, %116
  %123 = phi i64 [ %121, %120 ], [ %.pre, %116 ]
  %124 = add nsw i64 %118, %105
  %125 = add nsw i64 %124, 1
  %126 = mul nsw i64 %123, %118
  %127 = add nsw i64 %125, %126
  %128 = add nsw i64 %127, %126
  %129 = add i64 %118, 2
  %130 = add i64 %129, %128
  %131 = shl i64 %118, 1
  %132 = mul nsw i64 %123, %131
  %133 = or disjoint i64 %132, 1
  %134 = mul nsw i64 %118, %118
  %135 = add nsw i64 %133, %134
  %.not259288 = icmp slt i64 %.0244.lcssa345348, 0
  br i1 %.not259288, label %._crit_edge292.thread, label %.lr.ph291

._crit_edge292.thread:                            ; preds = %122
  %136 = getelementptr inbounds i64, ptr %28, i64 %128
  store i64 1, ptr %136, align 8, !tbaa !5
  br label %.preheader

.lr.ph291:                                        ; preds = %122
  %137 = getelementptr i64, ptr %9, i64 %124
  %138 = getelementptr i64, ptr %28, i64 %130
  %139 = add nuw nsw i64 %.0244.lcssa345348, 1
  %min.iters.check = icmp ult i64 %.0244.lcssa345348, 15
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph291
  %140 = shl i64 %123, 4
  %141 = or disjoint i64 %140, 8
  %142 = mul i64 %118, %141
  %143 = add i64 %142, 16
  %diff.check = icmp ult i64 %143, 32
  br i1 %diff.check, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %139, 9223372036854775804
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %144 = getelementptr i64, ptr %137, i64 %index
  %145 = getelementptr i8, ptr %144, i64 16
  store <2 x i64> <i64 1, i64 1>, ptr %144, align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr %145, align 8, !tbaa !5
  %146 = getelementptr i64, ptr %138, i64 %index
  %147 = getelementptr i8, ptr %146, i64 16
  store <2 x i64> <i64 1, i64 1>, ptr %146, align 8, !tbaa !5
  store <2 x i64> <i64 1, i64 1>, ptr %147, align 8, !tbaa !5
  %index.next = add nuw i64 %index, 4
  %148 = icmp eq i64 %index.next, %n.vec
  br i1 %148, label %middle.block, label %vector.body, !llvm.loop !17

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %139, %n.vec
  br i1 %cmp.n, label %._crit_edge292, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph291
  %.1248289.ph = phi i64 [ 0, %vector.memcheck ], [ 0, %.lr.ph291 ], [ %n.vec, %middle.block ]
  %149 = add nuw i64 %.0244.lcssa345348, 1
  %150 = sub nsw i64 %.0244.lcssa345348, %.1248289.ph
  %xtraiter395 = and i64 %149, 3
  %lcmp.mod396.not = icmp eq i64 %xtraiter395, 0
  br i1 %lcmp.mod396.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader, %scalar.ph.prol
  %.1248289.prol = phi i64 [ %153, %scalar.ph.prol ], [ %.1248289.ph, %scalar.ph.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph.prol ], [ 0, %scalar.ph.preheader ]
  %151 = getelementptr i64, ptr %137, i64 %.1248289.prol
  store i64 1, ptr %151, align 8, !tbaa !5
  %152 = getelementptr i64, ptr %138, i64 %.1248289.prol
  store i64 1, ptr %152, align 8, !tbaa !5
  %153 = add nuw nsw i64 %.1248289.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter395
  br i1 %prol.iter.cmp.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol, !llvm.loop !20

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %.1248289.unr = phi i64 [ %.1248289.ph, %scalar.ph.preheader ], [ %153, %scalar.ph.prol ]
  %154 = icmp ult i64 %150, 3
  br i1 %154, label %._crit_edge292, label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.prol.loopexit, %scalar.ph
  %.1248289 = phi i64 [ %166, %scalar.ph ], [ %.1248289.unr, %scalar.ph.prol.loopexit ]
  %155 = getelementptr i64, ptr %137, i64 %.1248289
  store i64 1, ptr %155, align 8, !tbaa !5
  %156 = getelementptr i64, ptr %138, i64 %.1248289
  store i64 1, ptr %156, align 8, !tbaa !5
  %157 = add nuw nsw i64 %.1248289, 1
  %158 = getelementptr i64, ptr %137, i64 %157
  store i64 1, ptr %158, align 8, !tbaa !5
  %159 = getelementptr i64, ptr %138, i64 %157
  store i64 1, ptr %159, align 8, !tbaa !5
  %160 = add nuw nsw i64 %.1248289, 2
  %161 = getelementptr i64, ptr %137, i64 %160
  store i64 1, ptr %161, align 8, !tbaa !5
  %162 = getelementptr i64, ptr %138, i64 %160
  store i64 1, ptr %162, align 8, !tbaa !5
  %163 = add nuw nsw i64 %.1248289, 3
  %164 = getelementptr i64, ptr %137, i64 %163
  store i64 1, ptr %164, align 8, !tbaa !5
  %165 = getelementptr i64, ptr %138, i64 %163
  store i64 1, ptr %165, align 8, !tbaa !5
  %166 = add nuw nsw i64 %.1248289, 4
  %exitcond332.not.3 = icmp eq i64 %163, %.0244.lcssa345348
  br i1 %exitcond332.not.3, label %._crit_edge292, label %scalar.ph, !llvm.loop !21

._crit_edge292:                                   ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  %167 = getelementptr inbounds i64, ptr %28, i64 %128
  store i64 1, ptr %167, align 8, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %23, i64 16
  %invariant.gep298 = getelementptr i8, ptr %26, i64 16
  %.not260300 = icmp eq i64 %.0244.lcssa345348, 0
  br i1 %.not260300, label %.preheader, label %.lr.ph304

.lr.ph304:                                        ; preds = %._crit_edge292
  %168 = getelementptr double, ptr %27, i64 %132
  %169 = getelementptr double, ptr %8, i64 %135
  %170 = getelementptr i64, ptr %28, i64 %105
  br label %186

.loopexit:                                        ; preds = %.lr.ph297, %middle.block373, %221
  %.not260.not = icmp slt i64 %.2302, %102
  br i1 %.not260.not, label %186, label %.preheader, !llvm.loop !22

.preheader:                                       ; preds = %.loopexit, %._crit_edge292.thread, %._crit_edge292
  %171 = phi ptr [ %136, %._crit_edge292.thread ], [ %167, %._crit_edge292 ], [ %167, %.loopexit ]
  store i64 1, ptr %17, align 8, !tbaa !5
  br i1 %.not258.not283349, label %.lr.ph315, label %._crit_edge316

.lr.ph315:                                        ; preds = %.preheader
  %172 = getelementptr i8, ptr %23, i64 16
  %173 = getelementptr i8, ptr %26, i64 16
  %174 = getelementptr inbounds i8, ptr %9, i64 8
  %175 = getelementptr i64, ptr %28, i64 %105
  %176 = getelementptr double, ptr %8, i64 %132
  %177 = getelementptr i64, ptr %9, i64 %124
  %178 = getelementptr inbounds i64, ptr %28, i64 %127
  %179 = getelementptr inbounds i64, ptr %28, i64 %130
  %180 = getelementptr i64, ptr %179, i64 %126
  %181 = getelementptr double, ptr %8, i64 %135
  %gep306.peel = getelementptr %struct.doublecomplex, ptr %173, i64 %24
  %invariant.gep364 = getelementptr i8, ptr %3, i64 -8
  %182 = getelementptr i8, ptr %175, i64 8
  %gep308.peel = getelementptr %struct.doublecomplex, ptr %172, i64 %21
  %183 = getelementptr inbounds i8, ptr %9, i64 8
  %invariant.gep362 = getelementptr inbounds i8, ptr %9, i64 8
  %184 = getelementptr i8, ptr %23, i64 16
  %185 = getelementptr i8, ptr %26, i64 16
  br label %233

186:                                              ; preds = %.lr.ph304, %.loopexit
  %.2302 = phi i64 [ 0, %.lr.ph304 ], [ %213, %.loopexit ]
  %187 = icmp eq i64 %.2302, 0
  br i1 %187, label %188, label %190

188:                                              ; preds = %186
  %189 = load i64, ptr %9, align 8, !tbaa !5
  br label %197

190:                                              ; preds = %186
  %191 = getelementptr inbounds i64, ptr %28, i64 %.2302
  %192 = load i64, ptr %191, align 8, !tbaa !5
  %193 = add nsw i64 %192, 1
  %194 = getelementptr i64, ptr %9, i64 %.2302
  %195 = load i64, ptr %194, align 8, !tbaa !5
  %196 = sub nsw i64 %195, %192
  br label %197

197:                                              ; preds = %190, %188
  %storemerge265 = phi i64 [ %196, %190 ], [ %189, %188 ]
  %.0245 = phi i64 [ %193, %190 ], [ 1, %188 ]
  store i64 %storemerge265, ptr %18, align 8, !tbaa !5
  %198 = add nsw i64 %.2302, %128
  %199 = getelementptr inbounds i64, ptr %28, i64 %198
  %200 = load i64, ptr %199, align 8, !tbaa !5
  %201 = getelementptr inbounds double, ptr %19, i64 %.0245
  %202 = getelementptr inbounds double, ptr %20, i64 %.0245
  %203 = getelementptr double, ptr %168, i64 %200
  %204 = call i32 @dsteqr_(ptr noundef nonnull @.str.2, ptr noundef nonnull %18, ptr noundef nonnull %201, ptr noundef nonnull %202, ptr noundef %203, ptr noundef nonnull %18, ptr noundef %8, ptr noundef nonnull %10) #5
  %205 = mul nsw i64 %.0245, %21
  %gep = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %205
  %206 = mul nsw i64 %.0245, %24
  %gep299 = getelementptr %struct.doublecomplex, ptr %invariant.gep298, i64 %206
  %207 = call i32 @zlacrm_(ptr noundef nonnull %0, ptr noundef nonnull %18, ptr noundef %gep, ptr noundef nonnull %5, ptr noundef %203, ptr noundef nonnull %18, ptr noundef %gep299, ptr noundef nonnull %7, ptr noundef %169) #5
  %208 = load i64, ptr %18, align 8, !tbaa !5
  %209 = load i64, ptr %199, align 8, !tbaa !5
  %210 = mul nsw i64 %208, %208
  %211 = add nsw i64 %209, %210
  %212 = getelementptr i64, ptr %9, i64 %198
  store i64 %211, ptr %212, align 8, !tbaa !5
  %213 = add nuw nsw i64 %.2302, 1
  %214 = load i64, ptr %10, align 8, !tbaa !5
  %215 = icmp sgt i64 %214, 0
  br i1 %215, label %216, label %221

216:                                              ; preds = %197
  %217 = load i64, ptr %1, align 8, !tbaa !5
  %.0245267 = add i64 %217, 2
  %218 = mul i64 %.0245267, %.0245
  %219 = add i64 %208, -1
  %220 = add i64 %219, %218
  store i64 %220, ptr %10, align 8, !tbaa !5
  br label %292

221:                                              ; preds = %197
  %222 = getelementptr i64, ptr %9, i64 %.2302
  %223 = load i64, ptr %222, align 8, !tbaa !5
  %.not266293 = icmp sgt i64 %.0245, %223
  br i1 %.not266293, label %.loopexit, label %.lr.ph297.preheader

.lr.ph297.preheader:                              ; preds = %221
  %224 = add i64 %223, 1
  %225 = sub i64 %224, %.0245
  %min.iters.check375 = icmp ult i64 %225, 4
  br i1 %min.iters.check375, label %.lr.ph297.preheader389, label %vector.ph376

vector.ph376:                                     ; preds = %.lr.ph297.preheader
  %n.vec378 = and i64 %225, -4
  %ind.end = add i64 %.0245, %n.vec378
  %ind.end380 = or disjoint i64 %n.vec378, 1
  %226 = getelementptr i64, ptr %170, i64 %.0245
  br label %vector.body382

vector.body382:                                   ; preds = %vector.body382, %vector.ph376
  %index383 = phi i64 [ 0, %vector.ph376 ], [ %index.next385, %vector.body382 ]
  %vec.ind = phi <2 x i64> [ <i64 1, i64 2>, %vector.ph376 ], [ %vec.ind.next, %vector.body382 ]
  %step.add = add <2 x i64> %vec.ind, <i64 2, i64 2>
  %227 = getelementptr i64, ptr %226, i64 %index383
  %228 = getelementptr i8, ptr %227, i64 16
  store <2 x i64> %vec.ind, ptr %227, align 8, !tbaa !5
  store <2 x i64> %step.add, ptr %228, align 8, !tbaa !5
  %index.next385 = add nuw i64 %index383, 4
  %vec.ind.next = add <2 x i64> %vec.ind, <i64 4, i64 4>
  %229 = icmp eq i64 %index.next385, %n.vec378
  br i1 %229, label %middle.block373, label %vector.body382, !llvm.loop !23

middle.block373:                                  ; preds = %vector.body382
  %cmp.n386 = icmp eq i64 %225, %n.vec378
  br i1 %cmp.n386, label %.loopexit, label %.lr.ph297.preheader389

.lr.ph297.preheader389:                           ; preds = %middle.block373, %.lr.ph297.preheader
  %.2252295.ph = phi i64 [ %.0245, %.lr.ph297.preheader ], [ %ind.end, %middle.block373 ]
  %.0253294.ph = phi i64 [ 1, %.lr.ph297.preheader ], [ %ind.end380, %middle.block373 ]
  br label %.lr.ph297

.lr.ph297:                                        ; preds = %.lr.ph297.preheader389, %.lr.ph297
  %.2252295 = phi i64 [ %232, %.lr.ph297 ], [ %.2252295.ph, %.lr.ph297.preheader389 ]
  %.0253294 = phi i64 [ %231, %.lr.ph297 ], [ %.0253294.ph, %.lr.ph297.preheader389 ]
  %230 = getelementptr i64, ptr %170, i64 %.2252295
  store i64 %.0253294, ptr %230, align 8, !tbaa !5
  %231 = add nuw nsw i64 %.0253294, 1
  %232 = add i64 %.2252295, 1
  %exitcond333.not = icmp eq i64 %.2252295, %223
  br i1 %exitcond333.not, label %.loopexit, label %.lr.ph297, !llvm.loop !24

233:                                              ; preds = %.lr.ph315, %._crit_edge313
  %234 = phi i64 [ 1, %.lr.ph315 ], [ %275, %._crit_edge313 ]
  %.1314 = phi i64 [ %.0244.lcssa345348, %.lr.ph315 ], [ %274, %._crit_edge313 ]
  %235 = add nsw i64 %.1314, -2
  store i64 %235, ptr %12, align 8, !tbaa !5
  %.not262309 = icmp slt i64 %.1314, 2
  br i1 %.not262309, label %._crit_edge313, label %236

236:                                              ; preds = %233
  %237 = getelementptr i64, ptr %9, i64 %.1314
  %238 = load i64, ptr %9, align 8, !tbaa !5
  %239 = load i64, ptr %174, align 8, !tbaa !5
  store i64 %239, ptr %18, align 8
  store i64 %238, ptr %14, align 8
  store i64 0, ptr %16, align 8, !tbaa !5
  %gep365 = getelementptr double, ptr %invariant.gep364, i64 %238
  %240 = call i32 @zlaed7_(ptr noundef nonnull %18, ptr noundef nonnull %14, ptr noundef nonnull %0, ptr noundef nonnull %15, ptr noundef nonnull %17, ptr noundef nonnull %16, ptr noundef nonnull %2, ptr noundef %gep306.peel, ptr noundef nonnull %7, ptr noundef %gep365, ptr noundef %182, ptr noundef %176, ptr noundef nonnull %171, ptr noundef %177, ptr noundef nonnull %178, ptr noundef nonnull %179, ptr noundef %180, ptr noundef %8, ptr noundef %gep308.peel, ptr noundef %181, ptr noundef %237, ptr noundef nonnull %10) #5
  %241 = load i64, ptr %10, align 8, !tbaa !5
  %242 = icmp sgt i64 %241, 0
  br i1 %242, label %.loopexit335, label %243

243:                                              ; preds = %236
  %244 = load i64, ptr %183, align 8, !tbaa !5
  store i64 %244, ptr %9, align 8, !tbaa !5
  %.not262.peel = icmp ult i64 %.1314, 4
  br i1 %.not262.peel, label %._crit_edge313.loopexit, label %.peel.next

.peel.next:                                       ; preds = %243, %267
  %245 = phi i64 [ %270, %267 ], [ %244, %243 ]
  %.3310 = phi i64 [ %268, %267 ], [ 2, %243 ]
  %246 = add nsw i64 %245, 1
  %247 = load i64, ptr %16, align 8, !tbaa !5
  %248 = add nsw i64 %247, 1
  %gep363 = getelementptr inbounds i64, ptr %invariant.gep362, i64 %.3310
  %249 = load i64, ptr %gep363, align 8, !tbaa !5
  %250 = sub nsw i64 %249, %245
  %251 = sdiv i64 %250, 2
  store i64 %250, ptr %18, align 8
  store i64 %251, ptr %14, align 8
  store i64 %248, ptr %16, align 8, !tbaa !5
  %252 = getelementptr double, ptr %2, i64 %245
  %253 = mul nsw i64 %246, %24
  %gep306 = getelementptr %struct.doublecomplex, ptr %185, i64 %253
  %254 = getelementptr double, ptr %3, i64 %245
  %255 = getelementptr double, ptr %254, i64 %251
  %256 = getelementptr i8, ptr %255, i64 -8
  %257 = getelementptr i64, ptr %175, i64 %246
  %258 = mul nsw i64 %246, %21
  %gep308 = getelementptr %struct.doublecomplex, ptr %184, i64 %258
  %259 = call i32 @zlaed7_(ptr noundef nonnull %18, ptr noundef nonnull %14, ptr noundef nonnull %0, ptr noundef nonnull %15, ptr noundef nonnull %17, ptr noundef nonnull %16, ptr noundef nonnull %252, ptr noundef %gep306, ptr noundef nonnull %7, ptr noundef %256, ptr noundef %257, ptr noundef %176, ptr noundef nonnull %171, ptr noundef %177, ptr noundef nonnull %178, ptr noundef nonnull %179, ptr noundef %180, ptr noundef %8, ptr noundef %gep308, ptr noundef %181, ptr noundef %237, ptr noundef nonnull %10) #5
  %260 = load i64, ptr %10, align 8, !tbaa !5
  %261 = icmp sgt i64 %260, 0
  br i1 %261, label %.loopexit335, label %267

.loopexit335:                                     ; preds = %236, %.peel.next
  %.1246.lcssa = phi i64 [ %246, %.peel.next ], [ 1, %236 ]
  %262 = load i64, ptr %1, align 8, !tbaa !5
  %.1246264 = add i64 %262, 2
  %263 = mul i64 %.1246264, %.1246.lcssa
  %264 = load i64, ptr %18, align 8, !tbaa !5
  %265 = add i64 %264, -1
  %266 = add i64 %265, %263
  store i64 %266, ptr %10, align 8, !tbaa !5
  br label %292

267:                                              ; preds = %.peel.next
  %268 = add nuw nsw i64 %.3310, 2
  %269 = getelementptr inbounds i64, ptr %28, i64 %268
  %270 = load i64, ptr %269, align 8, !tbaa !5
  %271 = lshr exact i64 %.3310, 1
  %272 = getelementptr i64, ptr %9, i64 %271
  store i64 %270, ptr %272, align 8, !tbaa !5
  %.not262 = icmp sgt i64 %268, %235
  br i1 %.not262, label %._crit_edge313.loopexit, label %.peel.next, !llvm.loop !25

._crit_edge313.loopexit:                          ; preds = %267, %243
  %.pre341 = load i64, ptr %17, align 8, !tbaa !5
  br label %._crit_edge313

._crit_edge313:                                   ; preds = %._crit_edge313.loopexit, %233
  %273 = phi i64 [ %.pre341, %._crit_edge313.loopexit ], [ %234, %233 ]
  %274 = lshr i64 %.1314, 1
  %275 = add nsw i64 %273, 1
  store i64 %275, ptr %17, align 8, !tbaa !5
  %276 = icmp ugt i64 %.1314, 3
  br i1 %276, label %233, label %._crit_edge316

._crit_edge316:                                   ; preds = %._crit_edge313, %.preheader
  %277 = load i64, ptr %1, align 8, !tbaa !5
  store i64 %277, ptr %12, align 8, !tbaa !5
  %.not261321 = icmp slt i64 %277, 1
  br i1 %.not261321, label %._crit_edge325, label %.lr.ph324

.lr.ph324:                                        ; preds = %._crit_edge316
  %278 = getelementptr i64, ptr %28, i64 %105
  %279 = getelementptr i8, ptr %23, i64 16
  %280 = getelementptr i8, ptr %26, i64 16
  br label %281

281:                                              ; preds = %.lr.ph324, %281
  %.4322 = phi i64 [ 1, %.lr.ph324 ], [ %290, %281 ]
  %282 = getelementptr i64, ptr %278, i64 %.4322
  %283 = load i64, ptr %282, align 8, !tbaa !5
  %284 = getelementptr inbounds double, ptr %19, i64 %283
  %285 = load double, ptr %284, align 8, !tbaa !14
  %286 = getelementptr inbounds double, ptr %27, i64 %.4322
  store double %285, ptr %286, align 8, !tbaa !14
  %287 = mul nsw i64 %283, %24
  %gep318 = getelementptr %struct.doublecomplex, ptr %280, i64 %287
  %288 = mul nsw i64 %.4322, %21
  %gep320 = getelementptr %struct.doublecomplex, ptr %279, i64 %288
  %289 = call i32 @f2c_zcopy(ptr noundef nonnull %0, ptr noundef %gep318, ptr noundef nonnull @c__1, ptr noundef %gep320, ptr noundef nonnull @c__1) #5
  %290 = add nuw nsw i64 %.4322, 1
  %.not261.not = icmp slt i64 %.4322, %277
  br i1 %.not261.not, label %281, label %._crit_edge325, !llvm.loop !27

._crit_edge325:                                   ; preds = %281, %._crit_edge316
  %291 = call i32 @f2c_dcopy(ptr noundef nonnull %1, ptr noundef %8, ptr noundef nonnull @c__1, ptr noundef %2, ptr noundef nonnull @c__1) #5
  br label %292

292:                                              ; preds = %41, %._crit_edge325, %.loopexit335, %216, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #5
  ret i32 0
}

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

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

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @log(double noundef) local_unnamed_addr #3

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

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

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

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

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

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

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

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

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

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 = { mustprogress nofree nounwind willreturn memory(write) "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 }

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

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


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