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

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

92:                                               ; preds = %11
  br label %96

93:                                               ; preds = %11
  %94 = load ptr, ptr %13, align 8, !tbaa !5
  %95 = load i32, ptr %94, align 4, !tbaa !9
  br label %96

96:                                               ; preds = %93, %92
  %97 = phi i32 [ 0, %92 ], [ %95, %93 ]
  %98 = icmp slt i32 %88, %97
  br i1 %98, label %99, label %101

99:                                               ; preds = %96
  %100 = load ptr, ptr %22, align 8, !tbaa !5
  store i32 -1, ptr %100, align 4, !tbaa !9
  br label %140

101:                                              ; preds = %96
  %102 = load ptr, ptr %13, align 8, !tbaa !5
  %103 = load i32, ptr %102, align 4, !tbaa !9
  %104 = icmp slt i32 %103, 0
  br i1 %104, label %105, label %107

105:                                              ; preds = %101
  %106 = load ptr, ptr %22, align 8, !tbaa !5
  store i32 -2, ptr %106, align 4, !tbaa !9
  br label %139

107:                                              ; preds = %101
  %108 = load ptr, ptr %17, align 8, !tbaa !5
  %109 = load i32, ptr %108, align 4, !tbaa !9
  %110 = load ptr, ptr %13, align 8, !tbaa !5
  %111 = load i32, ptr %110, align 4, !tbaa !9
  %112 = icmp sge i32 1, %111
  br i1 %112, label %113, label %114

113:                                              ; preds = %107
  br label %117

114:                                              ; preds = %107
  %115 = load ptr, ptr %13, align 8, !tbaa !5
  %116 = load i32, ptr %115, align 4, !tbaa !9
  br label %117

117:                                              ; preds = %114, %113
  %118 = phi i32 [ 1, %113 ], [ %116, %114 ]
  %119 = icmp slt i32 %109, %118
  br i1 %119, label %120, label %122

120:                                              ; preds = %117
  %121 = load ptr, ptr %22, align 8, !tbaa !5
  store i32 -6, ptr %121, align 4, !tbaa !9
  br label %138

122:                                              ; preds = %117
  %123 = load ptr, ptr %19, align 8, !tbaa !5
  %124 = load i32, ptr %123, align 4, !tbaa !9
  %125 = load ptr, ptr %13, align 8, !tbaa !5
  %126 = load i32, ptr %125, align 4, !tbaa !9
  %127 = icmp sge i32 1, %126
  br i1 %127, label %128, label %129

128:                                              ; preds = %122
  br label %132

129:                                              ; preds = %122
  %130 = load ptr, ptr %13, align 8, !tbaa !5
  %131 = load i32, ptr %130, align 4, !tbaa !9
  br label %132

132:                                              ; preds = %129, %128
  %133 = phi i32 [ 1, %128 ], [ %131, %129 ]
  %134 = icmp slt i32 %124, %133
  br i1 %134, label %135, label %137

135:                                              ; preds = %132
  %136 = load ptr, ptr %22, align 8, !tbaa !5
  store i32 -8, ptr %136, align 4, !tbaa !9
  br label %137

137:                                              ; preds = %135, %132
  br label %138

138:                                              ; preds = %137, %120
  br label %139

139:                                              ; preds = %138, %105
  br label %140

140:                                              ; preds = %139, %99
  %141 = load ptr, ptr %22, align 8, !tbaa !5
  %142 = load i32, ptr %141, align 4, !tbaa !9
  %143 = icmp ne i32 %142, 0
  br i1 %143, label %144, label %149

144:                                              ; preds = %140
  %145 = load ptr, ptr %22, align 8, !tbaa !5
  %146 = load i32, ptr %145, align 4, !tbaa !9
  %147 = sub nsw i32 0, %146
  store i32 %147, ptr %27, align 4, !tbaa !9
  %148 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %27, i32 noundef 6)
  store i32 1, ptr %57, align 4
  br label %738

149:                                              ; preds = %140
  %150 = load ptr, ptr %13, align 8, !tbaa !5
  %151 = load i32, ptr %150, align 4, !tbaa !9
  %152 = icmp eq i32 %151, 0
  br i1 %152, label %153, label %154

153:                                              ; preds = %149
  store i32 1, ptr %57, align 4
  br label %738

154:                                              ; preds = %149
  %155 = call i32 @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, i32 noundef 6, i32 noundef 1)
  store i32 %155, ptr %51, align 4, !tbaa !9
  %156 = load ptr, ptr %13, align 8, !tbaa !5
  %157 = load i32, ptr %156, align 4, !tbaa !9
  %158 = load ptr, ptr %21, align 8, !tbaa !5
  %159 = getelementptr inbounds i32, ptr %158, i64 1
  store i32 %157, ptr %159, align 4, !tbaa !9
  store i32 1, ptr %46, align 4, !tbaa !9
  store i32 0, ptr %39, align 4, !tbaa !9
  br label %160

160:                                              ; preds = %201, %154
  %161 = load ptr, ptr %21, align 8, !tbaa !5
  %162 = load i32, ptr %46, align 4, !tbaa !9
  %163 = sext i32 %162 to i64
  %164 = getelementptr inbounds i32, ptr %161, i64 %163
  %165 = load i32, ptr %164, align 4, !tbaa !9
  %166 = load i32, ptr %51, align 4, !tbaa !9
  %167 = icmp sgt i32 %165, %166
  br i1 %167, label %168, label %206

168:                                              ; preds = %160
  %169 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %169, ptr %33, align 4, !tbaa !9
  br label %170

170:                                              ; preds = %198, %168
  %171 = load i32, ptr %33, align 4, !tbaa !9
  %172 = icmp sge i32 %171, 1
  br i1 %172, label %173, label %201

173:                                              ; preds = %170
  %174 = load ptr, ptr %21, align 8, !tbaa !5
  %175 = load i32, ptr %33, align 4, !tbaa !9
  %176 = sext i32 %175 to i64
  %177 = getelementptr inbounds i32, ptr %174, i64 %176
  %178 = load i32, ptr %177, align 4, !tbaa !9
  %179 = add nsw i32 %178, 1
  %180 = sdiv i32 %179, 2
  %181 = load ptr, ptr %21, align 8, !tbaa !5
  %182 = load i32, ptr %33, align 4, !tbaa !9
  %183 = mul nsw i32 %182, 2
  %184 = sext i32 %183 to i64
  %185 = getelementptr inbounds i32, ptr %181, i64 %184
  store i32 %180, ptr %185, align 4, !tbaa !9
  %186 = load ptr, ptr %21, align 8, !tbaa !5
  %187 = load i32, ptr %33, align 4, !tbaa !9
  %188 = sext i32 %187 to i64
  %189 = getelementptr inbounds i32, ptr %186, i64 %188
  %190 = load i32, ptr %189, align 4, !tbaa !9
  %191 = sdiv i32 %190, 2
  %192 = load ptr, ptr %21, align 8, !tbaa !5
  %193 = load i32, ptr %33, align 4, !tbaa !9
  %194 = shl i32 %193, 1
  %195 = sub nsw i32 %194, 1
  %196 = sext i32 %195 to i64
  %197 = getelementptr inbounds i32, ptr %192, i64 %196
  store i32 %191, ptr %197, align 4, !tbaa !9
  br label %198

198:                                              ; preds = %173
  %199 = load i32, ptr %33, align 4, !tbaa !9
  %200 = add nsw i32 %199, -1
  store i32 %200, ptr %33, align 4, !tbaa !9
  br label %170, !llvm.loop !11

201:                                              ; preds = %170
  %202 = load i32, ptr %39, align 4, !tbaa !9
  %203 = add nsw i32 %202, 1
  store i32 %203, ptr %39, align 4, !tbaa !9
  %204 = load i32, ptr %46, align 4, !tbaa !9
  %205 = shl i32 %204, 1
  store i32 %205, ptr %46, align 4, !tbaa !9
  br label %160

206:                                              ; preds = %160
  %207 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %207, ptr %27, align 4, !tbaa !9
  store i32 2, ptr %33, align 4, !tbaa !9
  br label %208

208:                                              ; preds = %225, %206
  %209 = load i32, ptr %33, align 4, !tbaa !9
  %210 = load i32, ptr %27, align 4, !tbaa !9
  %211 = icmp sle i32 %209, %210
  br i1 %211, label %212, label %228

212:                                              ; preds = %208
  %213 = load ptr, ptr %21, align 8, !tbaa !5
  %214 = load i32, ptr %33, align 4, !tbaa !9
  %215 = sub nsw i32 %214, 1
  %216 = sext i32 %215 to i64
  %217 = getelementptr inbounds i32, ptr %213, i64 %216
  %218 = load i32, ptr %217, align 4, !tbaa !9
  %219 = load ptr, ptr %21, align 8, !tbaa !5
  %220 = load i32, ptr %33, align 4, !tbaa !9
  %221 = sext i32 %220 to i64
  %222 = getelementptr inbounds i32, ptr %219, i64 %221
  %223 = load i32, ptr %222, align 4, !tbaa !9
  %224 = add nsw i32 %223, %218
  store i32 %224, ptr %222, align 4, !tbaa !9
  br label %225

225:                                              ; preds = %212
  %226 = load i32, ptr %33, align 4, !tbaa !9
  %227 = add nsw i32 %226, 1
  store i32 %227, ptr %33, align 4, !tbaa !9
  br label %208, !llvm.loop !13

228:                                              ; preds = %208
  %229 = load i32, ptr %46, align 4, !tbaa !9
  %230 = sub nsw i32 %229, 1
  store i32 %230, ptr %55, align 4, !tbaa !9
  %231 = load i32, ptr %55, align 4, !tbaa !9
  store i32 %231, ptr %27, align 4, !tbaa !9
  store i32 1, ptr %32, align 4, !tbaa !9
  br label %232

232:                                              ; preds = %285, %228
  %233 = load i32, ptr %32, align 4, !tbaa !9
  %234 = load i32, ptr %27, align 4, !tbaa !9
  %235 = icmp sle i32 %233, %234
  br i1 %235, label %236, label %288

236:                                              ; preds = %232
  %237 = load ptr, ptr %21, align 8, !tbaa !5
  %238 = load i32, ptr %32, align 4, !tbaa !9
  %239 = sext i32 %238 to i64
  %240 = getelementptr inbounds i32, ptr %237, i64 %239
  %241 = load i32, ptr %240, align 4, !tbaa !9
  %242 = add nsw i32 %241, 1
  store i32 %242, ptr %44, align 4, !tbaa !9
  %243 = load i32, ptr %44, align 4, !tbaa !9
  %244 = sub nsw i32 %243, 1
  store i32 %244, ptr %54, align 4, !tbaa !9
  %245 = load ptr, ptr %15, align 8, !tbaa !5
  %246 = load i32, ptr %54, align 4, !tbaa !9
  %247 = sext i32 %246 to i64
  %248 = getelementptr inbounds double, ptr %245, i64 %247
  %249 = load double, ptr %248, align 8, !tbaa !14
  store double %249, ptr %29, align 8, !tbaa !14
  %250 = load double, ptr %29, align 8, !tbaa !14
  %251 = fcmp oge double %250, 0.000000e+00
  br i1 %251, label %252, label %254

252:                                              ; preds = %236
  %253 = load double, ptr %29, align 8, !tbaa !14
  br label %257

254:                                              ; preds = %236
  %255 = load double, ptr %29, align 8, !tbaa !14
  %256 = fneg double %255
  br label %257

257:                                              ; preds = %254, %252
  %258 = phi double [ %253, %252 ], [ %256, %254 ]
  %259 = load ptr, ptr %14, align 8, !tbaa !5
  %260 = load i32, ptr %54, align 4, !tbaa !9
  %261 = sext i32 %260 to i64
  %262 = getelementptr inbounds double, ptr %259, i64 %261
  %263 = load double, ptr %262, align 8, !tbaa !14
  %264 = fsub double %263, %258
  store double %264, ptr %262, align 8, !tbaa !14
  %265 = load ptr, ptr %15, align 8, !tbaa !5
  %266 = load i32, ptr %54, align 4, !tbaa !9
  %267 = sext i32 %266 to i64
  %268 = getelementptr inbounds double, ptr %265, i64 %267
  %269 = load double, ptr %268, align 8, !tbaa !14
  store double %269, ptr %29, align 8, !tbaa !14
  %270 = load double, ptr %29, align 8, !tbaa !14
  %271 = fcmp oge double %270, 0.000000e+00
  br i1 %271, label %272, label %274

272:                                              ; preds = %257
  %273 = load double, ptr %29, align 8, !tbaa !14
  br label %277

274:                                              ; preds = %257
  %275 = load double, ptr %29, align 8, !tbaa !14
  %276 = fneg double %275
  br label %277

277:                                              ; preds = %274, %272
  %278 = phi double [ %273, %272 ], [ %276, %274 ]
  %279 = load ptr, ptr %14, align 8, !tbaa !5
  %280 = load i32, ptr %44, align 4, !tbaa !9
  %281 = sext i32 %280 to i64
  %282 = getelementptr inbounds double, ptr %279, i64 %281
  %283 = load double, ptr %282, align 8, !tbaa !14
  %284 = fsub double %283, %278
  store double %284, ptr %282, align 8, !tbaa !14
  br label %285

285:                                              ; preds = %277
  %286 = load i32, ptr %32, align 4, !tbaa !9
  %287 = add nsw i32 %286, 1
  store i32 %287, ptr %32, align 4, !tbaa !9
  br label %232, !llvm.loop !16

288:                                              ; preds = %232
  %289 = load ptr, ptr %13, align 8, !tbaa !5
  %290 = load i32, ptr %289, align 4, !tbaa !9
  %291 = shl i32 %290, 2
  %292 = add nsw i32 %291, 3
  store i32 %292, ptr %36, align 4, !tbaa !9
  %293 = load ptr, ptr %13, align 8, !tbaa !5
  %294 = load i32, ptr %293, align 4, !tbaa !9
  %295 = sitofp i32 %294 to double
  %296 = call double @log(double noundef %295) #4
  %297 = call double @log(double noundef 2.000000e+00) #4
  %298 = fdiv double %296, %297
  store double %298, ptr %30, align 8, !tbaa !14
  %299 = load double, ptr %30, align 8, !tbaa !14
  %300 = fptosi double %299 to i32
  store i32 %300, ptr %52, align 4, !tbaa !9
  %301 = load i32, ptr @c__2, align 4, !tbaa !9
  %302 = load i32, ptr %52, align 4, !tbaa !9
  %303 = call i32 @pow_ii(i32 noundef %301, i32 noundef %302)
  %304 = load ptr, ptr %13, align 8, !tbaa !5
  %305 = load i32, ptr %304, align 4, !tbaa !9
  %306 = icmp slt i32 %303, %305
  br i1 %306, label %307, label %310

307:                                              ; preds = %288
  %308 = load i32, ptr %52, align 4, !tbaa !9
  %309 = add nsw i32 %308, 1
  store i32 %309, ptr %52, align 4, !tbaa !9
  br label %310

310:                                              ; preds = %307, %288
  %311 = load i32, ptr @c__2, align 4, !tbaa !9
  %312 = load i32, ptr %52, align 4, !tbaa !9
  %313 = call i32 @pow_ii(i32 noundef %311, i32 noundef %312)
  %314 = load ptr, ptr %13, align 8, !tbaa !5
  %315 = load i32, ptr %314, align 4, !tbaa !9
  %316 = icmp slt i32 %313, %315
  br i1 %316, label %317, label %320

317:                                              ; preds = %310
  %318 = load i32, ptr %52, align 4, !tbaa !9
  %319 = add nsw i32 %318, 1
  store i32 %319, ptr %52, align 4, !tbaa !9
  br label %320

320:                                              ; preds = %317, %310
  %321 = load i32, ptr %36, align 4, !tbaa !9
  %322 = load ptr, ptr %13, align 8, !tbaa !5
  %323 = load i32, ptr %322, align 4, !tbaa !9
  %324 = add nsw i32 %321, %323
  %325 = add nsw i32 %324, 1
  store i32 %325, ptr %50, align 4, !tbaa !9
  %326 = load i32, ptr %50, align 4, !tbaa !9
  %327 = load ptr, ptr %13, align 8, !tbaa !5
  %328 = load i32, ptr %327, align 4, !tbaa !9
  %329 = load i32, ptr %52, align 4, !tbaa !9
  %330 = mul nsw i32 %328, %329
  %331 = add nsw i32 %326, %330
  store i32 %331, ptr %35, align 4, !tbaa !9
  %332 = load i32, ptr %35, align 4, !tbaa !9
  %333 = load ptr, ptr %13, align 8, !tbaa !5
  %334 = load i32, ptr %333, align 4, !tbaa !9
  %335 = load i32, ptr %52, align 4, !tbaa !9
  %336 = mul nsw i32 %334, %335
  %337 = add nsw i32 %332, %336
  store i32 %337, ptr %38, align 4, !tbaa !9
  %338 = load i32, ptr %38, align 4, !tbaa !9
  %339 = load ptr, ptr %13, align 8, !tbaa !5
  %340 = load i32, ptr %339, align 4, !tbaa !9
  %341 = add nsw i32 %338, %340
  %342 = add nsw i32 %341, 2
  store i32 %342, ptr %47, align 4, !tbaa !9
  %343 = load i32, ptr %47, align 4, !tbaa !9
  %344 = load ptr, ptr %13, align 8, !tbaa !5
  %345 = load i32, ptr %344, align 4, !tbaa !9
  %346 = load i32, ptr %52, align 4, !tbaa !9
  %347 = mul nsw i32 %345, %346
  %348 = add nsw i32 %343, %347
  store i32 %348, ptr %42, align 4, !tbaa !9
  store i32 1, ptr %43, align 4, !tbaa !9
  %349 = load i32, ptr %43, align 4, !tbaa !9
  %350 = load ptr, ptr %13, align 8, !tbaa !5
  %351 = load i32, ptr %350, align 4, !tbaa !9
  %352 = shl i32 %351, 1
  %353 = load i32, ptr %52, align 4, !tbaa !9
  %354 = mul nsw i32 %352, %353
  %355 = add nsw i32 %349, %354
  store i32 %355, ptr %41, align 4, !tbaa !9
  %356 = load ptr, ptr %13, align 8, !tbaa !5
  %357 = load i32, ptr %356, align 4, !tbaa !9
  store i32 %357, ptr %27, align 4, !tbaa !9
  %358 = load i32, ptr %41, align 4, !tbaa !9
  %359 = load i32, ptr %27, align 4, !tbaa !9
  %360 = load i32, ptr %27, align 4, !tbaa !9
  %361 = mul nsw i32 %359, %360
  %362 = add nsw i32 %358, %361
  %363 = add nsw i32 %362, 1
  store i32 %363, ptr %37, align 4, !tbaa !9
  %364 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %364, ptr %27, align 4, !tbaa !9
  store i32 0, ptr %32, align 4, !tbaa !9
  br label %365

365:                                              ; preds = %382, %320
  %366 = load i32, ptr %32, align 4, !tbaa !9
  %367 = load i32, ptr %27, align 4, !tbaa !9
  %368 = icmp sle i32 %366, %367
  br i1 %368, label %369, label %385

369:                                              ; preds = %365
  %370 = load ptr, ptr %21, align 8, !tbaa !5
  %371 = load i32, ptr %50, align 4, !tbaa !9
  %372 = load i32, ptr %32, align 4, !tbaa !9
  %373 = add nsw i32 %371, %372
  %374 = sext i32 %373 to i64
  %375 = getelementptr inbounds i32, ptr %370, i64 %374
  store i32 1, ptr %375, align 4, !tbaa !9
  %376 = load ptr, ptr %21, align 8, !tbaa !5
  %377 = load i32, ptr %47, align 4, !tbaa !9
  %378 = load i32, ptr %32, align 4, !tbaa !9
  %379 = add nsw i32 %377, %378
  %380 = sext i32 %379 to i64
  %381 = getelementptr inbounds i32, ptr %376, i64 %380
  store i32 1, ptr %381, align 4, !tbaa !9
  br label %382

382:                                              ; preds = %369
  %383 = load i32, ptr %32, align 4, !tbaa !9
  %384 = add nsw i32 %383, 1
  store i32 %384, ptr %32, align 4, !tbaa !9
  br label %365, !llvm.loop !17

385:                                              ; preds = %365
  %386 = load ptr, ptr %21, align 8, !tbaa !5
  %387 = load i32, ptr %38, align 4, !tbaa !9
  %388 = sext i32 %387 to i64
  %389 = getelementptr inbounds i32, ptr %386, i64 %388
  store i32 1, ptr %389, align 4, !tbaa !9
  store i32 0, ptr %31, align 4, !tbaa !9
  %390 = load i32, ptr %55, align 4, !tbaa !9
  store i32 %390, ptr %27, align 4, !tbaa !9
  store i32 0, ptr %32, align 4, !tbaa !9
  br label %391

391:                                              ; preds = %534, %385
  %392 = load i32, ptr %32, align 4, !tbaa !9
  %393 = load i32, ptr %27, align 4, !tbaa !9
  %394 = icmp sle i32 %392, %393
  br i1 %394, label %395, label %537

395:                                              ; preds = %391
  %396 = load i32, ptr %32, align 4, !tbaa !9
  %397 = icmp eq i32 %396, 0
  br i1 %397, label %398, label %402

398:                                              ; preds = %395
  store i32 1, ptr %44, align 4, !tbaa !9
  %399 = load ptr, ptr %21, align 8, !tbaa !5
  %400 = getelementptr inbounds i32, ptr %399, i64 1
  %401 = load i32, ptr %400, align 4, !tbaa !9
  store i32 %401, ptr %49, align 4, !tbaa !9
  br label %421

402:                                              ; preds = %395
  %403 = load ptr, ptr %21, align 8, !tbaa !5
  %404 = load i32, ptr %32, align 4, !tbaa !9
  %405 = sext i32 %404 to i64
  %406 = getelementptr inbounds i32, ptr %403, i64 %405
  %407 = load i32, ptr %406, align 4, !tbaa !9
  %408 = add nsw i32 %407, 1
  store i32 %408, ptr %44, align 4, !tbaa !9
  %409 = load ptr, ptr %21, align 8, !tbaa !5
  %410 = load i32, ptr %32, align 4, !tbaa !9
  %411 = add nsw i32 %410, 1
  %412 = sext i32 %411 to i64
  %413 = getelementptr inbounds i32, ptr %409, i64 %412
  %414 = load i32, ptr %413, align 4, !tbaa !9
  %415 = load ptr, ptr %21, align 8, !tbaa !5
  %416 = load i32, ptr %32, align 4, !tbaa !9
  %417 = sext i32 %416 to i64
  %418 = getelementptr inbounds i32, ptr %415, i64 %417
  %419 = load i32, ptr %418, align 4, !tbaa !9
  %420 = sub nsw i32 %414, %419
  store i32 %420, ptr %49, align 4, !tbaa !9
  br label %421

421:                                              ; preds = %402, %398
  %422 = load i32, ptr %41, align 4, !tbaa !9
  %423 = sub nsw i32 %422, 1
  %424 = load ptr, ptr %21, align 8, !tbaa !5
  %425 = load i32, ptr %38, align 4, !tbaa !9
  %426 = load i32, ptr %31, align 4, !tbaa !9
  %427 = add nsw i32 %425, %426
  %428 = sext i32 %427 to i64
  %429 = getelementptr inbounds i32, ptr %424, i64 %428
  %430 = load i32, ptr %429, align 4, !tbaa !9
  %431 = add nsw i32 %423, %430
  store i32 %431, ptr %40, align 4, !tbaa !9
  %432 = load ptr, ptr %14, align 8, !tbaa !5
  %433 = load i32, ptr %44, align 4, !tbaa !9
  %434 = sext i32 %433 to i64
  %435 = getelementptr inbounds double, ptr %432, i64 %434
  %436 = load ptr, ptr %15, align 8, !tbaa !5
  %437 = load i32, ptr %44, align 4, !tbaa !9
  %438 = sext i32 %437 to i64
  %439 = getelementptr inbounds double, ptr %436, i64 %438
  %440 = load ptr, ptr %20, align 8, !tbaa !5
  %441 = load i32, ptr %40, align 4, !tbaa !9
  %442 = sext i32 %441 to i64
  %443 = getelementptr inbounds double, ptr %440, i64 %442
  %444 = load ptr, ptr %20, align 8, !tbaa !5
  %445 = getelementptr inbounds double, ptr %444, i64 1
  %446 = load ptr, ptr %22, align 8, !tbaa !5
  call void @dsteqr_(ptr noundef @.str.2, ptr noundef %49, ptr noundef %435, ptr noundef %439, ptr noundef %443, ptr noundef %49, ptr noundef %445, ptr noundef %446)
  %447 = load ptr, ptr %12, align 8, !tbaa !5
  %448 = load ptr, ptr %16, align 8, !tbaa !5
  %449 = load i32, ptr %44, align 4, !tbaa !9
  %450 = load i32, ptr %23, align 4, !tbaa !9
  %451 = mul nsw i32 %449, %450
  %452 = add nsw i32 %451, 1
  %453 = sext i32 %452 to i64
  %454 = getelementptr inbounds %struct.doublecomplex, ptr %448, i64 %453
  %455 = load ptr, ptr %17, align 8, !tbaa !5
  %456 = load ptr, ptr %20, align 8, !tbaa !5
  %457 = load i32, ptr %40, align 4, !tbaa !9
  %458 = sext i32 %457 to i64
  %459 = getelementptr inbounds double, ptr %456, i64 %458
  %460 = load ptr, ptr %18, align 8, !tbaa !5
  %461 = load i32, ptr %44, align 4, !tbaa !9
  %462 = load i32, ptr %25, align 4, !tbaa !9
  %463 = mul nsw i32 %461, %462
  %464 = add nsw i32 %463, 1
  %465 = sext i32 %464 to i64
  %466 = getelementptr inbounds %struct.doublecomplex, ptr %460, i64 %465
  %467 = load ptr, ptr %19, align 8, !tbaa !5
  %468 = load ptr, ptr %20, align 8, !tbaa !5
  %469 = load i32, ptr %37, align 4, !tbaa !9
  %470 = sext i32 %469 to i64
  %471 = getelementptr inbounds double, ptr %468, i64 %470
  call void @zlacrm_(ptr noundef %447, ptr noundef %49, ptr noundef %454, ptr noundef %455, ptr noundef %459, ptr noundef %49, ptr noundef %466, ptr noundef %467, ptr noundef %471)
  %472 = load i32, ptr %49, align 4, !tbaa !9
  store i32 %472, ptr %28, align 4, !tbaa !9
  %473 = load ptr, ptr %21, align 8, !tbaa !5
  %474 = load i32, ptr %38, align 4, !tbaa !9
  %475 = load i32, ptr %31, align 4, !tbaa !9
  %476 = add nsw i32 %474, %475
  %477 = sext i32 %476 to i64
  %478 = getelementptr inbounds i32, ptr %473, i64 %477
  %479 = load i32, ptr %478, align 4, !tbaa !9
  %480 = load i32, ptr %28, align 4, !tbaa !9
  %481 = load i32, ptr %28, align 4, !tbaa !9
  %482 = mul nsw i32 %480, %481
  %483 = add nsw i32 %479, %482
  %484 = load ptr, ptr %21, align 8, !tbaa !5
  %485 = load i32, ptr %38, align 4, !tbaa !9
  %486 = load i32, ptr %31, align 4, !tbaa !9
  %487 = add nsw i32 %485, %486
  %488 = add nsw i32 %487, 1
  %489 = sext i32 %488 to i64
  %490 = getelementptr inbounds i32, ptr %484, i64 %489
  store i32 %483, ptr %490, align 4, !tbaa !9
  %491 = load i32, ptr %31, align 4, !tbaa !9
  %492 = add nsw i32 %491, 1
  store i32 %492, ptr %31, align 4, !tbaa !9
  %493 = load ptr, ptr %22, align 8, !tbaa !5
  %494 = load i32, ptr %493, align 4, !tbaa !9
  %495 = icmp sgt i32 %494, 0
  br i1 %495, label %496, label %508

496:                                              ; preds = %421
  %497 = load i32, ptr %44, align 4, !tbaa !9
  %498 = load ptr, ptr %13, align 8, !tbaa !5
  %499 = load i32, ptr %498, align 4, !tbaa !9
  %500 = add nsw i32 %499, 1
  %501 = mul nsw i32 %497, %500
  %502 = load i32, ptr %44, align 4, !tbaa !9
  %503 = add nsw i32 %501, %502
  %504 = load i32, ptr %49, align 4, !tbaa !9
  %505 = add nsw i32 %503, %504
  %506 = sub nsw i32 %505, 1
  %507 = load ptr, ptr %22, align 8, !tbaa !5
  store i32 %506, ptr %507, align 4, !tbaa !9
  store i32 1, ptr %57, align 4
  br label %738

508:                                              ; preds = %421
  store i32 1, ptr %34, align 4, !tbaa !9
  %509 = load ptr, ptr %21, align 8, !tbaa !5
  %510 = load i32, ptr %32, align 4, !tbaa !9
  %511 = add nsw i32 %510, 1
  %512 = sext i32 %511 to i64
  %513 = getelementptr inbounds i32, ptr %509, i64 %512
  %514 = load i32, ptr %513, align 4, !tbaa !9
  store i32 %514, ptr %28, align 4, !tbaa !9
  %515 = load i32, ptr %44, align 4, !tbaa !9
  store i32 %515, ptr %33, align 4, !tbaa !9
  br label %516

516:                                              ; preds = %530, %508
  %517 = load i32, ptr %33, align 4, !tbaa !9
  %518 = load i32, ptr %28, align 4, !tbaa !9
  %519 = icmp sle i32 %517, %518
  br i1 %519, label %520, label %533

520:                                              ; preds = %516
  %521 = load i32, ptr %34, align 4, !tbaa !9
  %522 = load ptr, ptr %21, align 8, !tbaa !5
  %523 = load i32, ptr %36, align 4, !tbaa !9
  %524 = load i32, ptr %33, align 4, !tbaa !9
  %525 = add nsw i32 %523, %524
  %526 = sext i32 %525 to i64
  %527 = getelementptr inbounds i32, ptr %522, i64 %526
  store i32 %521, ptr %527, align 4, !tbaa !9
  %528 = load i32, ptr %34, align 4, !tbaa !9
  %529 = add nsw i32 %528, 1
  store i32 %529, ptr %34, align 4, !tbaa !9
  br label %530

530:                                              ; preds = %520
  %531 = load i32, ptr %33, align 4, !tbaa !9
  %532 = add nsw i32 %531, 1
  store i32 %532, ptr %33, align 4, !tbaa !9
  br label %516, !llvm.loop !18

533:                                              ; preds = %516
  br label %534

534:                                              ; preds = %533
  %535 = load i32, ptr %32, align 4, !tbaa !9
  %536 = add nsw i32 %535, 1
  store i32 %536, ptr %32, align 4, !tbaa !9
  br label %391, !llvm.loop !19

537:                                              ; preds = %391
  store i32 1, ptr %48, align 4, !tbaa !9
  br label %538

538:                                              ; preds = %685, %537
  %539 = load i32, ptr %46, align 4, !tbaa !9
  %540 = icmp sgt i32 %539, 1
  br i1 %540, label %541, label %690

541:                                              ; preds = %538
  %542 = load i32, ptr %46, align 4, !tbaa !9
  %543 = sub nsw i32 %542, 2
  store i32 %543, ptr %56, align 4, !tbaa !9
  %544 = load i32, ptr %56, align 4, !tbaa !9
  store i32 %544, ptr %27, align 4, !tbaa !9
  store i32 0, ptr %32, align 4, !tbaa !9
  br label %545

545:                                              ; preds = %682, %541
  %546 = load i32, ptr %32, align 4, !tbaa !9
  %547 = load i32, ptr %27, align 4, !tbaa !9
  %548 = icmp sle i32 %546, %547
  br i1 %548, label %549, label %685

549:                                              ; preds = %545
  %550 = load i32, ptr %32, align 4, !tbaa !9
  %551 = icmp eq i32 %550, 0
  br i1 %551, label %552, label %559

552:                                              ; preds = %549
  store i32 1, ptr %44, align 4, !tbaa !9
  %553 = load ptr, ptr %21, align 8, !tbaa !5
  %554 = getelementptr inbounds i32, ptr %553, i64 2
  %555 = load i32, ptr %554, align 4, !tbaa !9
  store i32 %555, ptr %49, align 4, !tbaa !9
  %556 = load ptr, ptr %21, align 8, !tbaa !5
  %557 = getelementptr inbounds i32, ptr %556, i64 1
  %558 = load i32, ptr %557, align 4, !tbaa !9
  store i32 %558, ptr %53, align 4, !tbaa !9
  store i32 0, ptr %45, align 4, !tbaa !9
  br label %582

559:                                              ; preds = %549
  %560 = load ptr, ptr %21, align 8, !tbaa !5
  %561 = load i32, ptr %32, align 4, !tbaa !9
  %562 = sext i32 %561 to i64
  %563 = getelementptr inbounds i32, ptr %560, i64 %562
  %564 = load i32, ptr %563, align 4, !tbaa !9
  %565 = add nsw i32 %564, 1
  store i32 %565, ptr %44, align 4, !tbaa !9
  %566 = load ptr, ptr %21, align 8, !tbaa !5
  %567 = load i32, ptr %32, align 4, !tbaa !9
  %568 = add nsw i32 %567, 2
  %569 = sext i32 %568 to i64
  %570 = getelementptr inbounds i32, ptr %566, i64 %569
  %571 = load i32, ptr %570, align 4, !tbaa !9
  %572 = load ptr, ptr %21, align 8, !tbaa !5
  %573 = load i32, ptr %32, align 4, !tbaa !9
  %574 = sext i32 %573 to i64
  %575 = getelementptr inbounds i32, ptr %572, i64 %574
  %576 = load i32, ptr %575, align 4, !tbaa !9
  %577 = sub nsw i32 %571, %576
  store i32 %577, ptr %49, align 4, !tbaa !9
  %578 = load i32, ptr %49, align 4, !tbaa !9
  %579 = sdiv i32 %578, 2
  store i32 %579, ptr %53, align 4, !tbaa !9
  %580 = load i32, ptr %45, align 4, !tbaa !9
  %581 = add nsw i32 %580, 1
  store i32 %581, ptr %45, align 4, !tbaa !9
  br label %582

582:                                              ; preds = %559, %552
  %583 = load ptr, ptr %12, align 8, !tbaa !5
  %584 = load ptr, ptr %14, align 8, !tbaa !5
  %585 = load i32, ptr %44, align 4, !tbaa !9
  %586 = sext i32 %585 to i64
  %587 = getelementptr inbounds double, ptr %584, i64 %586
  %588 = load ptr, ptr %18, align 8, !tbaa !5
  %589 = load i32, ptr %44, align 4, !tbaa !9
  %590 = load i32, ptr %25, align 4, !tbaa !9
  %591 = mul nsw i32 %589, %590
  %592 = add nsw i32 %591, 1
  %593 = sext i32 %592 to i64
  %594 = getelementptr inbounds %struct.doublecomplex, ptr %588, i64 %593
  %595 = load ptr, ptr %19, align 8, !tbaa !5
  %596 = load ptr, ptr %15, align 8, !tbaa !5
  %597 = load i32, ptr %44, align 4, !tbaa !9
  %598 = load i32, ptr %53, align 4, !tbaa !9
  %599 = add nsw i32 %597, %598
  %600 = sub nsw i32 %599, 1
  %601 = sext i32 %600 to i64
  %602 = getelementptr inbounds double, ptr %596, i64 %601
  %603 = load ptr, ptr %21, align 8, !tbaa !5
  %604 = load i32, ptr %36, align 4, !tbaa !9
  %605 = load i32, ptr %44, align 4, !tbaa !9
  %606 = add nsw i32 %604, %605
  %607 = sext i32 %606 to i64
  %608 = getelementptr inbounds i32, ptr %603, i64 %607
  %609 = load ptr, ptr %20, align 8, !tbaa !5
  %610 = load i32, ptr %41, align 4, !tbaa !9
  %611 = sext i32 %610 to i64
  %612 = getelementptr inbounds double, ptr %609, i64 %611
  %613 = load ptr, ptr %21, align 8, !tbaa !5
  %614 = load i32, ptr %38, align 4, !tbaa !9
  %615 = sext i32 %614 to i64
  %616 = getelementptr inbounds i32, ptr %613, i64 %615
  %617 = load ptr, ptr %21, align 8, !tbaa !5
  %618 = load i32, ptr %50, align 4, !tbaa !9
  %619 = sext i32 %618 to i64
  %620 = getelementptr inbounds i32, ptr %617, i64 %619
  %621 = load ptr, ptr %21, align 8, !tbaa !5
  %622 = load i32, ptr %35, align 4, !tbaa !9
  %623 = sext i32 %622 to i64
  %624 = getelementptr inbounds i32, ptr %621, i64 %623
  %625 = load ptr, ptr %21, align 8, !tbaa !5
  %626 = load i32, ptr %47, align 4, !tbaa !9
  %627 = sext i32 %626 to i64
  %628 = getelementptr inbounds i32, ptr %625, i64 %627
  %629 = load ptr, ptr %21, align 8, !tbaa !5
  %630 = load i32, ptr %42, align 4, !tbaa !9
  %631 = sext i32 %630 to i64
  %632 = getelementptr inbounds i32, ptr %629, i64 %631
  %633 = load ptr, ptr %20, align 8, !tbaa !5
  %634 = load i32, ptr %43, align 4, !tbaa !9
  %635 = sext i32 %634 to i64
  %636 = getelementptr inbounds double, ptr %633, i64 %635
  %637 = load ptr, ptr %16, align 8, !tbaa !5
  %638 = load i32, ptr %44, align 4, !tbaa !9
  %639 = load i32, ptr %23, align 4, !tbaa !9
  %640 = mul nsw i32 %638, %639
  %641 = add nsw i32 %640, 1
  %642 = sext i32 %641 to i64
  %643 = getelementptr inbounds %struct.doublecomplex, ptr %637, i64 %642
  %644 = load ptr, ptr %20, align 8, !tbaa !5
  %645 = load i32, ptr %37, align 4, !tbaa !9
  %646 = sext i32 %645 to i64
  %647 = getelementptr inbounds double, ptr %644, i64 %646
  %648 = load ptr, ptr %21, align 8, !tbaa !5
  %649 = load i32, ptr %46, align 4, !tbaa !9
  %650 = add nsw i32 %649, 1
  %651 = sext i32 %650 to i64
  %652 = getelementptr inbounds i32, ptr %648, i64 %651
  %653 = load ptr, ptr %22, align 8, !tbaa !5
  call void @zlaed7_(ptr noundef %49, ptr noundef %53, ptr noundef %583, ptr noundef %39, ptr noundef %48, ptr noundef %45, ptr noundef %587, ptr noundef %594, ptr noundef %595, ptr noundef %602, ptr noundef %608, ptr noundef %612, ptr noundef %616, ptr noundef %620, ptr noundef %624, ptr noundef %628, ptr noundef %632, ptr noundef %636, ptr noundef %643, ptr noundef %647, ptr noundef %652, ptr noundef %653)
  %654 = load ptr, ptr %22, align 8, !tbaa !5
  %655 = load i32, ptr %654, align 4, !tbaa !9
  %656 = icmp sgt i32 %655, 0
  br i1 %656, label %657, label %669

657:                                              ; preds = %582
  %658 = load i32, ptr %44, align 4, !tbaa !9
  %659 = load ptr, ptr %13, align 8, !tbaa !5
  %660 = load i32, ptr %659, align 4, !tbaa !9
  %661 = add nsw i32 %660, 1
  %662 = mul nsw i32 %658, %661
  %663 = load i32, ptr %44, align 4, !tbaa !9
  %664 = add nsw i32 %662, %663
  %665 = load i32, ptr %49, align 4, !tbaa !9
  %666 = add nsw i32 %664, %665
  %667 = sub nsw i32 %666, 1
  %668 = load ptr, ptr %22, align 8, !tbaa !5
  store i32 %667, ptr %668, align 4, !tbaa !9
  store i32 1, ptr %57, align 4
  br label %738

669:                                              ; preds = %582
  %670 = load ptr, ptr %21, align 8, !tbaa !5
  %671 = load i32, ptr %32, align 4, !tbaa !9
  %672 = add nsw i32 %671, 2
  %673 = sext i32 %672 to i64
  %674 = getelementptr inbounds i32, ptr %670, i64 %673
  %675 = load i32, ptr %674, align 4, !tbaa !9
  %676 = load ptr, ptr %21, align 8, !tbaa !5
  %677 = load i32, ptr %32, align 4, !tbaa !9
  %678 = sdiv i32 %677, 2
  %679 = add nsw i32 %678, 1
  %680 = sext i32 %679 to i64
  %681 = getelementptr inbounds i32, ptr %676, i64 %680
  store i32 %675, ptr %681, align 4, !tbaa !9
  br label %682

682:                                              ; preds = %669
  %683 = load i32, ptr %32, align 4, !tbaa !9
  %684 = add nsw i32 %683, 2
  store i32 %684, ptr %32, align 4, !tbaa !9
  br label %545, !llvm.loop !20

685:                                              ; preds = %545
  %686 = load i32, ptr %46, align 4, !tbaa !9
  %687 = sdiv i32 %686, 2
  store i32 %687, ptr %46, align 4, !tbaa !9
  %688 = load i32, ptr %48, align 4, !tbaa !9
  %689 = add nsw i32 %688, 1
  store i32 %689, ptr %48, align 4, !tbaa !9
  br label %538

690:                                              ; preds = %538
  %691 = load ptr, ptr %13, align 8, !tbaa !5
  %692 = load i32, ptr %691, align 4, !tbaa !9
  store i32 %692, ptr %27, align 4, !tbaa !9
  store i32 1, ptr %32, align 4, !tbaa !9
  br label %693

693:                                              ; preds = %729, %690
  %694 = load i32, ptr %32, align 4, !tbaa !9
  %695 = load i32, ptr %27, align 4, !tbaa !9
  %696 = icmp sle i32 %694, %695
  br i1 %696, label %697, label %732

697:                                              ; preds = %693
  %698 = load ptr, ptr %21, align 8, !tbaa !5
  %699 = load i32, ptr %36, align 4, !tbaa !9
  %700 = load i32, ptr %32, align 4, !tbaa !9
  %701 = add nsw i32 %699, %700
  %702 = sext i32 %701 to i64
  %703 = getelementptr inbounds i32, ptr %698, i64 %702
  %704 = load i32, ptr %703, align 4, !tbaa !9
  store i32 %704, ptr %33, align 4, !tbaa !9
  %705 = load ptr, ptr %14, align 8, !tbaa !5
  %706 = load i32, ptr %33, align 4, !tbaa !9
  %707 = sext i32 %706 to i64
  %708 = getelementptr inbounds double, ptr %705, i64 %707
  %709 = load double, ptr %708, align 8, !tbaa !14
  %710 = load ptr, ptr %20, align 8, !tbaa !5
  %711 = load i32, ptr %32, align 4, !tbaa !9
  %712 = sext i32 %711 to i64
  %713 = getelementptr inbounds double, ptr %710, i64 %712
  store double %709, ptr %713, align 8, !tbaa !14
  %714 = load ptr, ptr %12, align 8, !tbaa !5
  %715 = load ptr, ptr %18, align 8, !tbaa !5
  %716 = load i32, ptr %33, align 4, !tbaa !9
  %717 = load i32, ptr %25, align 4, !tbaa !9
  %718 = mul nsw i32 %716, %717
  %719 = add nsw i32 %718, 1
  %720 = sext i32 %719 to i64
  %721 = getelementptr inbounds %struct.doublecomplex, ptr %715, i64 %720
  %722 = load ptr, ptr %16, align 8, !tbaa !5
  %723 = load i32, ptr %32, align 4, !tbaa !9
  %724 = load i32, ptr %23, align 4, !tbaa !9
  %725 = mul nsw i32 %723, %724
  %726 = add nsw i32 %725, 1
  %727 = sext i32 %726 to i64
  %728 = getelementptr inbounds %struct.doublecomplex, ptr %722, i64 %727
  call void @zcopy_(ptr noundef %714, ptr noundef %721, ptr noundef @c__1, ptr noundef %728, ptr noundef @c__1)
  br label %729

729:                                              ; preds = %697
  %730 = load i32, ptr %32, align 4, !tbaa !9
  %731 = add nsw i32 %730, 1
  store i32 %731, ptr %32, align 4, !tbaa !9
  br label %693, !llvm.loop !21

732:                                              ; preds = %693
  %733 = load ptr, ptr %13, align 8, !tbaa !5
  %734 = load ptr, ptr %20, align 8, !tbaa !5
  %735 = getelementptr inbounds double, ptr %734, i64 1
  %736 = load ptr, ptr %14, align 8, !tbaa !5
  %737 = getelementptr inbounds double, ptr %736, i64 1
  call void @dcopy_(ptr noundef %733, ptr noundef %735, ptr noundef @c__1, ptr noundef %737, ptr noundef @c__1)
  store i32 1, ptr %57, align 4
  br label %738

738:                                              ; preds = %732, %657, %496, %153, %144
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #4
  ret void
}

; 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, i32 noundef) #2

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

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

; Function Attrs: nounwind uwtable
declare hidden i32 @pow_ii(i32 noundef, i32 noundef) #0

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

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

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

declare void @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 = !{!"int", !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 i32, align 4
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c__0 = external hidden global i32, align 4
@c__2 = external hidden local_unnamed_addr global i32, align 4
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i32, align 4

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

31:                                               ; preds = %11
  %32 = icmp slt i32 %29, 0
  br i1 %32, label %.thread, label %33

33:                                               ; preds = %31
  %34 = load i32, ptr %5, align 4, !tbaa !5
  %spec.select278 = tail call i32 @llvm.umax.i32(i32 %29, i32 1)
  %35 = icmp slt i32 %34, %spec.select278
  br i1 %35, label %.thread, label %36

36:                                               ; preds = %33
  %37 = load i32, ptr %7, align 4, !tbaa !5
  %38 = icmp slt i32 %37, %spec.select278
  br i1 %38, label %.thread, label %40

.thread:                                          ; preds = %36, %33, %31, %11
  %.sink = phi i32 [ -1, %11 ], [ -2, %31 ], [ -6, %33 ], [ -8, %36 ]
  %.neg = phi i32 [ 1, %11 ], [ 2, %31 ], [ 6, %33 ], [ 8, %36 ]
  store i32 %.sink, ptr %10, align 4, !tbaa !5
  store i32 %.neg, ptr %12, align 4, !tbaa !5
  %39 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %12, i32 noundef 6) #5
  br label %293

40:                                               ; preds = %36
  %41 = icmp eq i32 %29, 0
  br i1 %41, label %293, label %42

42:                                               ; preds = %40
  %43 = tail call i32 @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, i32 noundef 6, i32 noundef 1) #5
  %44 = load i32, ptr %1, align 4, !tbaa !5
  store i32 %44, ptr %9, align 4, !tbaa !5
  %45 = icmp sgt i32 %44, %43
  br i1 %45, label %.preheader282.lr.ph, label %._crit_edge286.thread

._crit_edge286.thread:                            ; preds = %42
  store i32 0, ptr %13, align 4, !tbaa !5
  store i32 1, ptr %12, align 4, !tbaa !5
  br label %._crit_edge297

.preheader282.lr.ph:                              ; preds = %42
  %invariant.gep = getelementptr i8, ptr %9, i64 -8
  br label %.preheader282

.preheader282:                                    ; preds = %.preheader282.lr.ph, %._crit_edge
  %.0251285 = phi i32 [ 1, %.preheader282.lr.ph ], [ %70, %._crit_edge ]
  %46 = phi i32 [ 0, %.preheader282.lr.ph ], [ %69, %._crit_edge ]
  %47 = icmp sgt i32 %.0251285, 0
  br i1 %47, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %.preheader282
  %48 = zext nneg i32 %.0251285 to i64
  %xtraiter = and i64 %48, 1
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph.prol.loopexit, label %.lr.ph.prol

.lr.ph.prol:                                      ; preds = %.lr.ph.preheader
  %49 = getelementptr inbounds i32, ptr %27, i64 %48
  %50 = load i32, ptr %49, align 4, !tbaa !5
  %51 = add nsw i32 %50, 1
  %gep.idx.prol = shl nuw nsw i64 %48, 3
  %gep.prol = getelementptr i8, ptr %invariant.gep, i64 %gep.idx.prol
  %52 = insertelement <2 x i32> poison, i32 %50, i64 0
  %53 = insertelement <2 x i32> %52, i32 %51, i64 1
  %54 = sdiv <2 x i32> %53, <i32 2, i32 2>
  store <2 x i32> %54, ptr %gep.prol, align 4, !tbaa !5
  %indvars.iv.next.prol = add nsw i64 %48, -1
  br label %.lr.ph.prol.loopexit

.lr.ph.prol.loopexit:                             ; preds = %.lr.ph.prol, %.lr.ph.preheader
  %indvars.iv.unr = phi i64 [ %48, %.lr.ph.preheader ], [ %indvars.iv.next.prol, %.lr.ph.prol ]
  %55 = icmp eq i32 %.0251285, 1
  br i1 %55, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.prol.loopexit, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next.1, %.lr.ph ], [ %indvars.iv.unr, %.lr.ph.prol.loopexit ]
  %56 = getelementptr inbounds i32, ptr %27, i64 %indvars.iv
  %57 = load i32, ptr %56, align 4, !tbaa !5
  %58 = add nsw i32 %57, 1
  %gep.idx = shl i64 %indvars.iv, 3
  %gep = getelementptr i8, ptr %invariant.gep, i64 %gep.idx
  %59 = insertelement <2 x i32> poison, i32 %57, i64 0
  %60 = insertelement <2 x i32> %59, i32 %58, i64 1
  %61 = sdiv <2 x i32> %60, <i32 2, i32 2>
  store <2 x i32> %61, ptr %gep, align 4, !tbaa !5
  %indvars.iv.next = add nsw i64 %indvars.iv, -1
  %62 = getelementptr inbounds i32, ptr %27, i64 %indvars.iv.next
  %63 = load i32, ptr %62, align 4, !tbaa !5
  %64 = add nsw i32 %63, 1
  %gep.idx.1 = shl i64 %indvars.iv.next, 3
  %gep.1 = getelementptr i8, ptr %invariant.gep, i64 %gep.idx.1
  %65 = insertelement <2 x i32> poison, i32 %63, i64 0
  %66 = insertelement <2 x i32> %65, i32 %64, i64 1
  %67 = sdiv <2 x i32> %66, <i32 2, i32 2>
  store <2 x i32> %67, ptr %gep.1, align 4, !tbaa !5
  %indvars.iv.next.1 = add nsw i64 %indvars.iv, -2
  %68 = icmp ugt i64 %indvars.iv.next, 1
  br i1 %68, label %.lr.ph, label %._crit_edge, !llvm.loop !9

._crit_edge:                                      ; preds = %.lr.ph.prol.loopexit, %.lr.ph, %.preheader282
  %69 = add nuw nsw i32 %46, 1
  %70 = shl i32 %.0251285, 1
  %71 = sext i32 %70 to i64
  %72 = getelementptr inbounds i32, ptr %27, i64 %71
  %73 = load i32, ptr %72, align 4, !tbaa !5
  %74 = icmp sgt i32 %73, %43
  br i1 %74, label %.preheader282, label %._crit_edge286

._crit_edge286:                                   ; preds = %._crit_edge
  store i32 %69, ptr %13, align 4, !tbaa !5
  store i32 %70, ptr %12, align 4, !tbaa !5
  %.not267288 = icmp slt i32 %70, 2
  br i1 %.not267288, label %._crit_edge297, label %.lr.ph291.preheader

.lr.ph291.preheader:                              ; preds = %._crit_edge286
  %load_initial = load i32, ptr %9, align 4
  %75 = zext nneg i32 %70 to i64
  %76 = add nsw i64 %75, -1
  %77 = add nsw i64 %75, -2
  %xtraiter449 = and i64 %76, 3
  %78 = icmp ult i64 %77, 3
  br i1 %78, label %.lr.ph291.epil.preheader, label %.lr.ph291.preheader.new

.lr.ph291.preheader.new:                          ; preds = %.lr.ph291.preheader
  %unroll_iter = and i64 %76, -4
  %invariant.gep460 = getelementptr i8, ptr %27, i64 8
  %invariant.gep462 = getelementptr i8, ptr %27, i64 12
  br label %.lr.ph291

.lr.ph291:                                        ; preds = %.lr.ph291, %.lr.ph291.preheader.new
  %store_forwarded = phi i32 [ %load_initial, %.lr.ph291.preheader.new ], [ %88, %.lr.ph291 ]
  %indvars.iv350 = phi i64 [ 2, %.lr.ph291.preheader.new ], [ %indvars.iv.next351.3, %.lr.ph291 ]
  %niter = phi i64 [ 0, %.lr.ph291.preheader.new ], [ %niter.next.3, %.lr.ph291 ]
  %79 = getelementptr i32, ptr %27, i64 %indvars.iv350
  %80 = load i32, ptr %79, align 4, !tbaa !5
  %81 = add nsw i32 %80, %store_forwarded
  store i32 %81, ptr %79, align 4, !tbaa !5
  %82 = getelementptr i32, ptr %9, i64 %indvars.iv350
  %83 = load i32, ptr %82, align 4, !tbaa !5
  %84 = add nsw i32 %83, %81
  store i32 %84, ptr %82, align 4, !tbaa !5
  %gep461 = getelementptr i32, ptr %invariant.gep460, i64 %indvars.iv350
  %85 = load i32, ptr %gep461, align 4, !tbaa !5
  %86 = add nsw i32 %85, %84
  store i32 %86, ptr %gep461, align 4, !tbaa !5
  %gep463 = getelementptr i32, ptr %invariant.gep462, i64 %indvars.iv350
  %87 = load i32, ptr %gep463, align 4, !tbaa !5
  %88 = add nsw i32 %87, %86
  store i32 %88, ptr %gep463, align 4, !tbaa !5
  %indvars.iv.next351.3 = add nuw nsw i64 %indvars.iv350, 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.ph291.epil.preheader, label %.lr.ph291, !llvm.loop !11

.lr.ph291.epil.preheader:                         ; preds = %.lr.ph291.preheader, %.lr.ph291
  %store_forwarded.unr = phi i32 [ %load_initial, %.lr.ph291.preheader ], [ %88, %.lr.ph291 ]
  %indvars.iv350.unr = phi i64 [ 2, %.lr.ph291.preheader ], [ %indvars.iv.next351.3, %.lr.ph291 ]
  br label %.lr.ph291.epil

.lr.ph291.epil:                                   ; preds = %.lr.ph291.epil, %.lr.ph291.epil.preheader
  %store_forwarded.epil = phi i32 [ %store_forwarded.unr, %.lr.ph291.epil.preheader ], [ %91, %.lr.ph291.epil ]
  %indvars.iv350.epil = phi i64 [ %indvars.iv350.unr, %.lr.ph291.epil.preheader ], [ %indvars.iv.next351.epil, %.lr.ph291.epil ]
  %epil.iter = phi i64 [ 0, %.lr.ph291.epil.preheader ], [ %epil.iter.next, %.lr.ph291.epil ]
  %89 = getelementptr i32, ptr %27, i64 %indvars.iv350.epil
  %90 = load i32, ptr %89, align 4, !tbaa !5
  %91 = add nsw i32 %90, %store_forwarded.epil
  store i32 %91, ptr %89, align 4, !tbaa !5
  %indvars.iv.next351.epil = add nuw nsw i64 %indvars.iv350.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter449
  br i1 %epil.iter.cmp.not, label %.lr.ph296.preheader, label %.lr.ph291.epil, !llvm.loop !12

.lr.ph296.preheader:                              ; preds = %.lr.ph291.epil
  %wide.trip.count356 = zext nneg i32 %70 to i64
  br label %.lr.ph296

.lr.ph296:                                        ; preds = %.lr.ph296.preheader, %.lr.ph296
  %indvars.iv353 = phi i64 [ 1, %.lr.ph296.preheader ], [ %indvars.iv.next354, %.lr.ph296 ]
  %92 = getelementptr inbounds i32, ptr %27, i64 %indvars.iv353
  %93 = load i32, ptr %92, align 4, !tbaa !5
  %94 = sext i32 %93 to i64
  %95 = getelementptr inbounds double, ptr %19, i64 %94
  %96 = load double, ptr %95, align 8, !tbaa !14
  %97 = fcmp oge double %96, 0.000000e+00
  %98 = fneg double %96
  %99 = select i1 %97, double %96, double %98
  %100 = getelementptr inbounds double, ptr %18, i64 %94
  %101 = load double, ptr %100, align 8, !tbaa !14
  %102 = fsub double %101, %99
  store double %102, ptr %100, align 8, !tbaa !14
  %103 = load double, ptr %95, align 8, !tbaa !14
  %104 = fcmp oge double %103, 0.000000e+00
  %105 = fneg double %103
  %106 = select i1 %104, double %103, double %105
  %107 = getelementptr i8, ptr %100, i64 8
  %108 = load double, ptr %107, align 8, !tbaa !14
  %109 = fsub double %108, %106
  store double %109, ptr %107, align 8, !tbaa !14
  %indvars.iv.next354 = add nuw nsw i64 %indvars.iv353, 1
  %exitcond357.not = icmp eq i64 %indvars.iv.next354, %wide.trip.count356
  br i1 %exitcond357.not, label %._crit_edge297, label %.lr.ph296, !llvm.loop !16

._crit_edge297:                                   ; preds = %.lr.ph296, %._crit_edge286, %._crit_edge286.thread
  %.not268.not293392 = phi i1 [ false, %._crit_edge286.thread ], [ false, %._crit_edge286 ], [ true, %.lr.ph296 ]
  %.0251.lcssa388391 = phi i32 [ 1, %._crit_edge286.thread ], [ %70, %._crit_edge286 ], [ %70, %.lr.ph296 ]
  %110 = add nsw i32 %.0251.lcssa388391, -1
  %111 = load i32, ptr %1, align 4, !tbaa !5
  %112 = shl i32 %111, 2
  %113 = or disjoint i32 %112, 3
  %114 = sitofp i32 %111 to double
  %115 = tail call double @log(double noundef %114) #5
  %116 = fdiv double %115, 0x3FE62E42FEFA39EF
  %117 = fptosi double %116 to i32
  %118 = load i32, ptr @c__2, align 4, !tbaa !5
  %119 = tail call i32 @pow_ii(i32 noundef %118, i32 noundef %117)
  %120 = load i32, ptr %1, align 4, !tbaa !5
  %121 = icmp slt i32 %119, %120
  %122 = zext i1 %121 to i32
  %spec.select280 = add nsw i32 %122, %117
  %123 = load i32, ptr @c__2, align 4, !tbaa !5
  %124 = tail call i32 @pow_ii(i32 noundef %123, i32 noundef %spec.select280)
  %125 = load i32, ptr %1, align 4, !tbaa !5
  %126 = icmp slt i32 %124, %125
  %127 = zext i1 %126 to i32
  %.1 = add nsw i32 %spec.select280, %127
  %128 = add i32 %112, 4
  %129 = add i32 %128, %125
  %130 = mul nsw i32 %.1, %125
  %131 = add nsw i32 %130, %129
  %132 = add nsw i32 %131, %130
  %133 = add i32 %125, 2
  %134 = add i32 %133, %132
  %135 = add nsw i32 %134, %130
  %136 = shl i32 %125, 1
  %137 = mul nsw i32 %.1, %136
  %138 = or disjoint i32 %137, 1
  %139 = mul nsw i32 %125, %125
  %140 = add nuw i32 %139, 1
  %141 = add i32 %140, %138
  %.not269298 = icmp slt i32 %.0251.lcssa388391, 0
  br i1 %.not269298, label %._crit_edge302.thread, label %.lr.ph301.preheader

._crit_edge302.thread:                            ; preds = %._crit_edge297
  %142 = sext i32 %132 to i64
  %143 = getelementptr inbounds i32, ptr %27, i64 %142
  store i32 1, ptr %143, align 4, !tbaa !5
  br label %.preheader

.lr.ph301.preheader:                              ; preds = %._crit_edge297
  %144 = sext i32 %129 to i64
  %145 = sext i32 %134 to i64
  %146 = add nuw nsw i32 %.0251.lcssa388391, 1
  %wide.trip.count361 = zext nneg i32 %146 to i64
  %invariant.gep405 = getelementptr i32, ptr %27, i64 %144
  %invariant.gep407 = getelementptr i32, ptr %27, i64 %145
  %min.iters.check = icmp ult i32 %.0251.lcssa388391, 11
  br i1 %min.iters.check, label %.lr.ph301.preheader446, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph301.preheader
  %147 = sub nsw i64 %145, %144
  %148 = and i64 %147, 4611686018427387896
  %diff.check = icmp eq i64 %148, 0
  br i1 %diff.check, label %.lr.ph301.preheader446, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %wide.trip.count361, 2147483640
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %149 = getelementptr i32, ptr %invariant.gep405, i64 %index
  %150 = getelementptr i8, ptr %149, i64 16
  store <4 x i32> <i32 1, i32 1, i32 1, i32 1>, ptr %149, align 4, !tbaa !5
  store <4 x i32> <i32 1, i32 1, i32 1, i32 1>, ptr %150, align 4, !tbaa !5
  %151 = getelementptr i32, ptr %invariant.gep407, i64 %index
  %152 = getelementptr i8, ptr %151, i64 16
  store <4 x i32> <i32 1, i32 1, i32 1, i32 1>, ptr %151, align 4, !tbaa !5
  store <4 x i32> <i32 1, i32 1, i32 1, i32 1>, ptr %152, align 4, !tbaa !5
  %index.next = add nuw i64 %index, 8
  %153 = icmp eq i64 %index.next, %n.vec
  br i1 %153, label %middle.block, label %vector.body, !llvm.loop !17

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %wide.trip.count361
  br i1 %cmp.n, label %._crit_edge302, label %.lr.ph301.preheader446

.lr.ph301.preheader446:                           ; preds = %middle.block, %vector.memcheck, %.lr.ph301.preheader
  %indvars.iv358.ph = phi i64 [ 0, %vector.memcheck ], [ 0, %.lr.ph301.preheader ], [ %n.vec, %middle.block ]
  %154 = zext nneg i32 %.0251.lcssa388391 to i64
  %155 = add nuw nsw i64 %154, 1
  %156 = sub nsw i64 %154, %indvars.iv358.ph
  %xtraiter451 = and i64 %155, 3
  %lcmp.mod452.not = icmp eq i64 %xtraiter451, 0
  br i1 %lcmp.mod452.not, label %.lr.ph301.prol.loopexit, label %.lr.ph301.prol

.lr.ph301.prol:                                   ; preds = %.lr.ph301.preheader446, %.lr.ph301.prol
  %indvars.iv358.prol = phi i64 [ %indvars.iv.next359.prol, %.lr.ph301.prol ], [ %indvars.iv358.ph, %.lr.ph301.preheader446 ]
  %prol.iter = phi i64 [ %prol.iter.next, %.lr.ph301.prol ], [ 0, %.lr.ph301.preheader446 ]
  %gep406.prol = getelementptr i32, ptr %invariant.gep405, i64 %indvars.iv358.prol
  store i32 1, ptr %gep406.prol, align 4, !tbaa !5
  %gep408.prol = getelementptr i32, ptr %invariant.gep407, i64 %indvars.iv358.prol
  store i32 1, ptr %gep408.prol, align 4, !tbaa !5
  %indvars.iv.next359.prol = add nuw nsw i64 %indvars.iv358.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter451
  br i1 %prol.iter.cmp.not, label %.lr.ph301.prol.loopexit, label %.lr.ph301.prol, !llvm.loop !20

.lr.ph301.prol.loopexit:                          ; preds = %.lr.ph301.prol, %.lr.ph301.preheader446
  %indvars.iv358.unr = phi i64 [ %indvars.iv358.ph, %.lr.ph301.preheader446 ], [ %indvars.iv.next359.prol, %.lr.ph301.prol ]
  %157 = icmp ult i64 %156, 3
  br i1 %157, label %._crit_edge302, label %.lr.ph301

.lr.ph301:                                        ; preds = %.lr.ph301.prol.loopexit, %.lr.ph301
  %indvars.iv358 = phi i64 [ %indvars.iv.next359.3, %.lr.ph301 ], [ %indvars.iv358.unr, %.lr.ph301.prol.loopexit ]
  %gep406 = getelementptr i32, ptr %invariant.gep405, i64 %indvars.iv358
  store i32 1, ptr %gep406, align 4, !tbaa !5
  %gep408 = getelementptr i32, ptr %invariant.gep407, i64 %indvars.iv358
  store i32 1, ptr %gep408, align 4, !tbaa !5
  %indvars.iv.next359 = add nuw nsw i64 %indvars.iv358, 1
  %gep406.1 = getelementptr i32, ptr %invariant.gep405, i64 %indvars.iv.next359
  store i32 1, ptr %gep406.1, align 4, !tbaa !5
  %gep408.1 = getelementptr i32, ptr %invariant.gep407, i64 %indvars.iv.next359
  store i32 1, ptr %gep408.1, align 4, !tbaa !5
  %indvars.iv.next359.1 = add nuw nsw i64 %indvars.iv358, 2
  %gep406.2 = getelementptr i32, ptr %invariant.gep405, i64 %indvars.iv.next359.1
  store i32 1, ptr %gep406.2, align 4, !tbaa !5
  %gep408.2 = getelementptr i32, ptr %invariant.gep407, i64 %indvars.iv.next359.1
  store i32 1, ptr %gep408.2, align 4, !tbaa !5
  %indvars.iv.next359.2 = add nuw nsw i64 %indvars.iv358, 3
  %gep406.3 = getelementptr i32, ptr %invariant.gep405, i64 %indvars.iv.next359.2
  store i32 1, ptr %gep406.3, align 4, !tbaa !5
  %gep408.3 = getelementptr i32, ptr %invariant.gep407, i64 %indvars.iv.next359.2
  store i32 1, ptr %gep408.3, align 4, !tbaa !5
  %indvars.iv.next359.3 = add nuw nsw i64 %indvars.iv358, 4
  %exitcond362.not.3 = icmp eq i64 %indvars.iv.next359.3, %wide.trip.count361
  br i1 %exitcond362.not.3, label %._crit_edge302, label %.lr.ph301, !llvm.loop !21

._crit_edge302:                                   ; preds = %.lr.ph301.prol.loopexit, %.lr.ph301, %middle.block
  %158 = sext i32 %132 to i64
  %159 = getelementptr inbounds i32, ptr %27, i64 %158
  store i32 1, ptr %159, align 4, !tbaa !5
  %invariant.gep308 = getelementptr i8, ptr %22, i64 16
  %invariant.gep310 = getelementptr i8, ptr %25, i64 16
  %.not270312 = icmp eq i32 %.0251.lcssa388391, 0
  br i1 %.not270312, label %.preheader, label %.lr.ph316

.lr.ph316:                                        ; preds = %._crit_edge302
  %160 = sext i32 %141 to i64
  %161 = getelementptr inbounds double, ptr %26, i64 %160
  %162 = sext i32 %113 to i64
  %invariant.gep411 = getelementptr i32, ptr %27, i64 %158
  %invariant.gep409 = getelementptr i32, ptr %27, i64 %162
  %163 = sext i32 %110 to i64
  br label %188

.loopexit:                                        ; preds = %.lr.ph307, %middle.block426, %223
  %.not270.not = icmp slt i64 %indvars.iv367, %163
  br i1 %.not270.not, label %188, label %.preheader, !llvm.loop !22

.preheader:                                       ; preds = %.loopexit, %._crit_edge302.thread, %._crit_edge302
  %164 = phi ptr [ %143, %._crit_edge302.thread ], [ %159, %._crit_edge302 ], [ %159, %.loopexit ]
  store i32 1, ptr %15, align 4, !tbaa !5
  br i1 %.not268.not293392, label %.lr.ph333, label %._crit_edge334

.lr.ph333:                                        ; preds = %.preheader
  %165 = getelementptr i8, ptr %22, i64 16
  %166 = getelementptr i8, ptr %25, i64 16
  %invariant.gep319 = getelementptr i8, ptr %3, i64 -16
  %167 = getelementptr inbounds i8, ptr %9, i64 4
  %168 = sext i32 %138 to i64
  %169 = getelementptr inbounds double, ptr %26, i64 %168
  %170 = sext i32 %129 to i64
  %171 = getelementptr inbounds i32, ptr %27, i64 %170
  %172 = sext i32 %131 to i64
  %173 = getelementptr inbounds i32, ptr %27, i64 %172
  %174 = sext i32 %134 to i64
  %175 = getelementptr inbounds i32, ptr %27, i64 %174
  %176 = sext i32 %135 to i64
  %177 = getelementptr inbounds i32, ptr %27, i64 %176
  %178 = sext i32 %141 to i64
  %179 = getelementptr inbounds double, ptr %26, i64 %178
  %180 = sext i32 %23 to i64
  %gep318.peel = getelementptr %struct.doublecomplex, ptr %166, i64 %180
  %invariant.gep415 = getelementptr i8, ptr %3, i64 -8
  %181 = sext i32 %112 to i64
  %182 = getelementptr i32, ptr %27, i64 %181
  %183 = getelementptr i8, ptr %182, i64 16
  %184 = sext i32 %20 to i64
  %gep322.peel = getelementptr %struct.doublecomplex, ptr %165, i64 %184
  %185 = getelementptr inbounds i8, ptr %9, i64 4
  %invariant.gep413 = getelementptr inbounds i8, ptr %9, i64 4
  %186 = getelementptr i8, ptr %22, i64 16
  %187 = getelementptr i8, ptr %25, i64 16
  br label %233

188:                                              ; preds = %.lr.ph316, %.loopexit
  %indvars.iv367 = phi i64 [ 0, %.lr.ph316 ], [ %indvars.iv.next368, %.loopexit ]
  %189 = icmp eq i64 %indvars.iv367, 0
  br i1 %189, label %190, label %192

190:                                              ; preds = %188
  %191 = load i32, ptr %9, align 4, !tbaa !5
  br label %199

192:                                              ; preds = %188
  %193 = getelementptr inbounds i32, ptr %27, i64 %indvars.iv367
  %194 = load i32, ptr %193, align 4, !tbaa !5
  %195 = add nsw i32 %194, 1
  %196 = getelementptr inbounds i8, ptr %193, i64 4
  %197 = load i32, ptr %196, align 4, !tbaa !5
  %198 = sub nsw i32 %197, %194
  br label %199

199:                                              ; preds = %192, %190
  %storemerge275 = phi i32 [ %198, %192 ], [ %191, %190 ]
  %.0253 = phi i32 [ %195, %192 ], [ 1, %190 ]
  store i32 %storemerge275, ptr %16, align 4, !tbaa !5
  %gep412 = getelementptr i32, ptr %invariant.gep411, i64 %indvars.iv367
  %200 = load i32, ptr %gep412, align 4, !tbaa !5
  %201 = add nsw i32 %200, %137
  %202 = sext i32 %.0253 to i64
  %203 = getelementptr inbounds double, ptr %18, i64 %202
  %204 = getelementptr inbounds double, ptr %19, i64 %202
  %205 = sext i32 %201 to i64
  %206 = getelementptr inbounds double, ptr %26, i64 %205
  call void @dsteqr_(ptr noundef nonnull @.str.2, ptr noundef nonnull %16, ptr noundef nonnull %203, ptr noundef nonnull %204, ptr noundef nonnull %206, ptr noundef nonnull %16, ptr noundef %8, ptr noundef nonnull %10) #5
  %207 = mul nsw i32 %.0253, %20
  %208 = sext i32 %207 to i64
  %gep309 = getelementptr %struct.doublecomplex, ptr %invariant.gep308, i64 %208
  %209 = mul nsw i32 %.0253, %23
  %210 = sext i32 %209 to i64
  %gep311 = getelementptr %struct.doublecomplex, ptr %invariant.gep310, i64 %210
  call void @zlacrm_(ptr noundef nonnull %0, ptr noundef nonnull %16, ptr noundef %gep309, ptr noundef nonnull %5, ptr noundef nonnull %206, ptr noundef nonnull %16, ptr noundef %gep311, ptr noundef nonnull %7, ptr noundef nonnull %161) #5
  %211 = load i32, ptr %16, align 4, !tbaa !5
  %212 = load i32, ptr %gep412, align 4, !tbaa !5
  %213 = mul nsw i32 %211, %211
  %214 = add nsw i32 %212, %213
  %215 = getelementptr i8, ptr %gep412, i64 4
  store i32 %214, ptr %215, align 4, !tbaa !5
  %indvars.iv.next368 = add nuw nsw i64 %indvars.iv367, 1
  %216 = load i32, ptr %10, align 4, !tbaa !5
  %217 = icmp sgt i32 %216, 0
  br i1 %217, label %218, label %223

218:                                              ; preds = %199
  %219 = load i32, ptr %1, align 4, !tbaa !5
  %.0253277 = add i32 %219, 2
  %220 = mul i32 %.0253277, %.0253
  %221 = add i32 %211, -1
  %222 = add i32 %221, %220
  store i32 %222, ptr %10, align 4, !tbaa !5
  br label %293

223:                                              ; preds = %199
  %224 = getelementptr i32, ptr %9, i64 %indvars.iv367
  %225 = load i32, ptr %224, align 4, !tbaa !5
  %.not276303 = icmp sgt i32 %.0253, %225
  br i1 %.not276303, label %.loopexit, label %.lr.ph307.preheader

.lr.ph307.preheader:                              ; preds = %223
  %226 = add i32 %225, 1
  %227 = sub i32 %225, %.0253
  %228 = zext i32 %227 to i64
  %229 = add nuw nsw i64 %228, 1
  %min.iters.check428 = icmp ult i32 %227, 7
  br i1 %min.iters.check428, label %.lr.ph307.preheader442, label %vector.ph429

vector.ph429:                                     ; preds = %.lr.ph307.preheader
  %n.vec431 = and i64 %229, 8589934584
  %ind.end = add nsw i64 %n.vec431, %202
  %.cast = trunc i64 %n.vec431 to i32
  %ind.end433 = or disjoint i32 %.cast, 1
  %invariant.gep464 = getelementptr i32, ptr %invariant.gep409, i64 %202
  br label %vector.body435

vector.body435:                                   ; preds = %vector.body435, %vector.ph429
  %index436 = phi i64 [ 0, %vector.ph429 ], [ %index.next438, %vector.body435 ]
  %vec.ind = phi <4 x i32> [ <i32 1, i32 2, i32 3, i32 4>, %vector.ph429 ], [ %vec.ind.next, %vector.body435 ]
  %step.add = add <4 x i32> %vec.ind, <i32 4, i32 4, i32 4, i32 4>
  %gep465 = getelementptr i32, ptr %invariant.gep464, i64 %index436
  %230 = getelementptr i8, ptr %gep465, i64 16
  store <4 x i32> %vec.ind, ptr %gep465, align 4, !tbaa !5
  store <4 x i32> %step.add, ptr %230, align 4, !tbaa !5
  %index.next438 = add nuw i64 %index436, 8
  %vec.ind.next = add <4 x i32> %vec.ind, <i32 8, i32 8, i32 8, i32 8>
  %231 = icmp eq i64 %index.next438, %n.vec431
  br i1 %231, label %middle.block426, label %vector.body435, !llvm.loop !23

middle.block426:                                  ; preds = %vector.body435
  %cmp.n439 = icmp eq i64 %229, %n.vec431
  br i1 %cmp.n439, label %.loopexit, label %.lr.ph307.preheader442

.lr.ph307.preheader442:                           ; preds = %middle.block426, %.lr.ph307.preheader
  %indvars.iv363.ph = phi i64 [ %202, %.lr.ph307.preheader ], [ %ind.end, %middle.block426 ]
  %.0261304.ph = phi i32 [ 1, %.lr.ph307.preheader ], [ %ind.end433, %middle.block426 ]
  br label %.lr.ph307

.lr.ph307:                                        ; preds = %.lr.ph307.preheader442, %.lr.ph307
  %indvars.iv363 = phi i64 [ %indvars.iv.next364, %.lr.ph307 ], [ %indvars.iv363.ph, %.lr.ph307.preheader442 ]
  %.0261304 = phi i32 [ %232, %.lr.ph307 ], [ %.0261304.ph, %.lr.ph307.preheader442 ]
  %gep410 = getelementptr i32, ptr %invariant.gep409, i64 %indvars.iv363
  store i32 %.0261304, ptr %gep410, align 4, !tbaa !5
  %232 = add nuw nsw i32 %.0261304, 1
  %indvars.iv.next364 = add nsw i64 %indvars.iv363, 1
  %lftr.wideiv = trunc i64 %indvars.iv.next364 to i32
  %exitcond366.not = icmp eq i32 %226, %lftr.wideiv
  br i1 %exitcond366.not, label %.loopexit, label %.lr.ph307, !llvm.loop !24

233:                                              ; preds = %.lr.ph333, %._crit_edge331
  %234 = phi i32 [ 1, %.lr.ph333 ], [ %277, %._crit_edge331 ]
  %.1252332 = phi i32 [ %.0251.lcssa388391, %.lr.ph333 ], [ %276, %._crit_edge331 ]
  %235 = add nsw i32 %.1252332, -2
  store i32 %235, ptr %12, align 4, !tbaa !5
  %.not272327 = icmp slt i32 %.1252332, 2
  br i1 %.not272327, label %._crit_edge331, label %236

236:                                              ; preds = %233
  %237 = zext nneg i32 %.1252332 to i64
  %gep324 = getelementptr inbounds i32, ptr %9, i64 %237
  %238 = load i32, ptr %9, align 4, !tbaa !5
  %239 = load i32, ptr %167, align 4, !tbaa !5
  store i32 %239, ptr %16, align 4
  store i32 %238, ptr %17, align 4
  store i32 0, ptr %14, align 4, !tbaa !5
  %240 = sext i32 %238 to i64
  %gep416 = getelementptr double, ptr %invariant.gep415, i64 %240
  call void @zlaed7_(ptr noundef nonnull %16, ptr noundef nonnull %17, ptr noundef nonnull %0, ptr noundef nonnull %13, ptr noundef nonnull %15, ptr noundef nonnull %14, ptr noundef nonnull %2, ptr noundef %gep318.peel, ptr noundef nonnull %7, ptr noundef %gep416, ptr noundef nonnull %183, ptr noundef nonnull %169, ptr noundef nonnull %164, ptr noundef nonnull %171, ptr noundef nonnull %173, ptr noundef nonnull %175, ptr noundef nonnull %177, ptr noundef %8, ptr noundef %gep322.peel, ptr noundef nonnull %179, ptr noundef nonnull %gep324, ptr noundef nonnull %10) #5
  %241 = load i32, ptr %10, align 4, !tbaa !5
  %242 = icmp sgt i32 %241, 0
  br i1 %242, label %.loopexit376, label %243

243:                                              ; preds = %236
  %244 = load i32, ptr %185, align 4, !tbaa !5
  store i32 %244, ptr %9, align 4, !tbaa !5
  %.not272.peel = icmp ult i32 %.1252332, 4
  br i1 %.not272.peel, label %._crit_edge331.loopexit, label %.peel.next

.peel.next:                                       ; preds = %243, %270
  %245 = phi i32 [ %272, %270 ], [ %244, %243 ]
  %indvars.iv372 = phi i64 [ %indvars.iv.next373, %270 ], [ 2, %243 ]
  %246 = add nsw i32 %245, 1
  %247 = load i32, ptr %14, align 4, !tbaa !5
  %248 = add nsw i32 %247, 1
  %gep414 = getelementptr inbounds i32, ptr %invariant.gep413, i64 %indvars.iv372
  %249 = load i32, ptr %gep414, align 4, !tbaa !5
  %250 = sub nsw i32 %249, %245
  %251 = sdiv i32 %250, 2
  store i32 %250, ptr %16, align 4
  store i32 %251, ptr %17, align 4
  store i32 %248, ptr %14, align 4, !tbaa !5
  %252 = sext i32 %246 to i64
  %253 = getelementptr inbounds double, ptr %18, i64 %252
  %254 = mul nsw i32 %246, %23
  %255 = sext i32 %254 to i64
  %gep318 = getelementptr %struct.doublecomplex, ptr %187, i64 %255
  %256 = add nsw i32 %251, %246
  %257 = sext i32 %256 to i64
  %gep320 = getelementptr double, ptr %invariant.gep319, i64 %257
  %258 = add nsw i32 %246, %113
  %259 = sext i32 %258 to i64
  %260 = getelementptr inbounds i32, ptr %27, i64 %259
  %261 = mul nsw i32 %246, %20
  %262 = sext i32 %261 to i64
  %gep322 = getelementptr %struct.doublecomplex, ptr %186, i64 %262
  call void @zlaed7_(ptr noundef nonnull %16, ptr noundef nonnull %17, ptr noundef nonnull %0, ptr noundef nonnull %13, ptr noundef nonnull %15, ptr noundef nonnull %14, ptr noundef nonnull %253, ptr noundef %gep318, ptr noundef nonnull %7, ptr noundef %gep320, ptr noundef nonnull %260, ptr noundef nonnull %169, ptr noundef nonnull %164, ptr noundef nonnull %171, ptr noundef nonnull %173, ptr noundef nonnull %175, ptr noundef nonnull %177, ptr noundef %8, ptr noundef %gep322, ptr noundef nonnull %179, ptr noundef nonnull %gep324, ptr noundef nonnull %10) #5
  %263 = load i32, ptr %10, align 4, !tbaa !5
  %264 = icmp sgt i32 %263, 0
  br i1 %264, label %.loopexit376, label %270

.loopexit376:                                     ; preds = %236, %.peel.next
  %.1254.lcssa = phi i32 [ %246, %.peel.next ], [ 1, %236 ]
  %265 = load i32, ptr %1, align 4, !tbaa !5
  %.1254274 = add i32 %265, 2
  %266 = mul i32 %.1254274, %.1254.lcssa
  %267 = load i32, ptr %16, align 4, !tbaa !5
  %268 = add i32 %267, -1
  %269 = add i32 %268, %266
  store i32 %269, ptr %10, align 4, !tbaa !5
  br label %293

270:                                              ; preds = %.peel.next
  %indvars.iv.next373 = add nuw nsw i64 %indvars.iv372, 2
  %271 = getelementptr inbounds i32, ptr %27, i64 %indvars.iv.next373
  %272 = load i32, ptr %271, align 4, !tbaa !5
  %273 = lshr exact i64 %indvars.iv372, 1
  %gep326 = getelementptr inbounds i32, ptr %9, i64 %273
  store i32 %272, ptr %gep326, align 4, !tbaa !5
  %274 = trunc nuw i64 %indvars.iv.next373 to i32
  %.not272 = icmp slt i32 %235, %274
  br i1 %.not272, label %._crit_edge331.loopexit, label %.peel.next, !llvm.loop !25

._crit_edge331.loopexit:                          ; preds = %270, %243
  %.pre = load i32, ptr %15, align 4, !tbaa !5
  br label %._crit_edge331

._crit_edge331:                                   ; preds = %._crit_edge331.loopexit, %233
  %275 = phi i32 [ %.pre, %._crit_edge331.loopexit ], [ %234, %233 ]
  %276 = lshr i32 %.1252332, 1
  %277 = add nsw i32 %275, 1
  store i32 %277, ptr %15, align 4, !tbaa !5
  %278 = icmp ugt i32 %.1252332, 3
  br i1 %278, label %233, label %._crit_edge334

._crit_edge334:                                   ; preds = %._crit_edge331, %.preheader
  %279 = load i32, ptr %1, align 4, !tbaa !5
  store i32 %279, ptr %12, align 4, !tbaa !5
  %.not271339 = icmp slt i32 %279, 1
  br i1 %.not271339, label %._crit_edge343, label %.lr.ph342.preheader

.lr.ph342.preheader:                              ; preds = %._crit_edge334
  %280 = sext i32 %113 to i64
  %281 = sext i32 %20 to i64
  %invariant.gep417 = getelementptr i32, ptr %27, i64 %280
  %282 = zext nneg i32 %279 to i64
  %283 = getelementptr i8, ptr %22, i64 16
  %284 = getelementptr i8, ptr %25, i64 16
  br label %.lr.ph342

.lr.ph342:                                        ; preds = %.lr.ph342.preheader, %.lr.ph342
  %indvars.iv379 = phi i64 [ 1, %.lr.ph342.preheader ], [ %indvars.iv.next380, %.lr.ph342 ]
  %gep418 = getelementptr i32, ptr %invariant.gep417, i64 %indvars.iv379
  %285 = load i32, ptr %gep418, align 4, !tbaa !5
  %286 = sext i32 %285 to i64
  %287 = getelementptr inbounds double, ptr %18, i64 %286
  %288 = load double, ptr %287, align 8, !tbaa !14
  %289 = getelementptr inbounds double, ptr %26, i64 %indvars.iv379
  store double %288, ptr %289, align 8, !tbaa !14
  %290 = mul nsw i32 %285, %23
  %291 = sext i32 %290 to i64
  %gep336 = getelementptr %struct.doublecomplex, ptr %284, i64 %291
  %292 = mul nsw i64 %indvars.iv379, %281
  %gep338 = getelementptr %struct.doublecomplex, ptr %283, i64 %292
  call void @zcopy_(ptr noundef nonnull %0, ptr noundef %gep336, ptr noundef nonnull @c__1, ptr noundef %gep338, ptr noundef nonnull @c__1) #5
  %indvars.iv.next380 = add nuw nsw i64 %indvars.iv379, 1
  %.not271.not = icmp ult i64 %indvars.iv379, %282
  br i1 %.not271.not, label %.lr.ph342, label %._crit_edge343, !llvm.loop !27

._crit_edge343:                                   ; preds = %.lr.ph342, %._crit_edge334
  call void @dcopy_(ptr noundef nonnull %1, ptr noundef %8, ptr noundef nonnull @c__1, ptr noundef %2, ptr noundef nonnull @c__1) #5
  br label %293

293:                                              ; preds = %40, %._crit_edge343, %.loopexit376, %218, %.thread
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #5
  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 i32 @xerbla_(ptr noundef, ptr noundef, i32 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

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

; Function Attrs: nounwind uwtable
declare hidden i32 @pow_ii(i32 noundef, i32 noundef) local_unnamed_addr #0

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

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.umax.i32(i32, i32) #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 = !{!"int", !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,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass