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

; 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 [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8
@c_b18 = external hidden global double, align 8

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

138:                                              ; preds = %21
  %139 = load ptr, ptr %42, align 8, !tbaa !5
  %140 = load i64, ptr %139, align 8, !tbaa !9
  %141 = icmp eq i64 %140, -1
  br label %142

142:                                              ; preds = %138, %21
  %143 = phi i1 [ true, %21 ], [ %141, %138 ]
  %144 = zext i1 %143 to i32
  %145 = sext i32 %144 to i64
  store i64 %145, ptr %104, align 8, !tbaa !9
  %146 = load ptr, ptr %36, align 8, !tbaa !5
  %147 = load i64, ptr %146, align 8, !tbaa !9
  %148 = icmp eq i64 %147, -1
  %149 = zext i1 %148 to i32
  %150 = sext i32 %149 to i64
  store i64 %150, ptr %105, align 8, !tbaa !9
  %151 = load i64, ptr %82, align 8, !tbaa !9
  %152 = icmp ne i64 %151, 0
  br i1 %152, label %153, label %160

153:                                              ; preds = %142
  %154 = load ptr, ptr %25, align 8, !tbaa !5
  %155 = load i64, ptr %154, align 8, !tbaa !9
  %156 = mul nsw i64 %155, 18
  store i64 %156, ptr %81, align 8, !tbaa !9
  %157 = load ptr, ptr %25, align 8, !tbaa !5
  %158 = load i64, ptr %157, align 8, !tbaa !9
  %159 = mul nsw i64 %158, 10
  store i64 %159, ptr %99, align 8, !tbaa !9
  br label %167

160:                                              ; preds = %142
  %161 = load ptr, ptr %25, align 8, !tbaa !5
  %162 = load i64, ptr %161, align 8, !tbaa !9
  %163 = mul nsw i64 %162, 12
  store i64 %163, ptr %81, align 8, !tbaa !9
  %164 = load ptr, ptr %25, align 8, !tbaa !5
  %165 = load i64, ptr %164, align 8, !tbaa !9
  %166 = shl i64 %165, 3
  store i64 %166, ptr %99, align 8, !tbaa !9
  br label %167

167:                                              ; preds = %160, %153
  store double 0.000000e+00, ptr %58, align 8, !tbaa !11
  store double 0.000000e+00, ptr %59, align 8, !tbaa !11
  store i64 0, ptr %60, align 8, !tbaa !9
  store i64 0, ptr %61, align 8, !tbaa !9
  %168 = load i64, ptr %87, align 8, !tbaa !9
  %169 = icmp ne i64 %168, 0
  br i1 %169, label %170, label %175

170:                                              ; preds = %167
  %171 = load ptr, ptr %28, align 8, !tbaa !5
  %172 = load double, ptr %171, align 8, !tbaa !11
  store double %172, ptr %58, align 8, !tbaa !11
  %173 = load ptr, ptr %29, align 8, !tbaa !5
  %174 = load double, ptr %173, align 8, !tbaa !11
  store double %174, ptr %59, align 8, !tbaa !11
  br label %184

175:                                              ; preds = %167
  %176 = load i64, ptr %85, align 8, !tbaa !9
  %177 = icmp ne i64 %176, 0
  br i1 %177, label %178, label %183

178:                                              ; preds = %175
  %179 = load ptr, ptr %30, align 8, !tbaa !5
  %180 = load i64, ptr %179, align 8, !tbaa !9
  store i64 %180, ptr %60, align 8, !tbaa !9
  %181 = load ptr, ptr %31, align 8, !tbaa !5
  %182 = load i64, ptr %181, align 8, !tbaa !9
  store i64 %182, ptr %61, align 8, !tbaa !9
  br label %183

183:                                              ; preds = %178, %175
  br label %184

184:                                              ; preds = %183, %170
  %185 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 0, ptr %185, align 8, !tbaa !9
  %186 = load i64, ptr %82, align 8, !tbaa !9
  %187 = icmp ne i64 %186, 0
  br i1 %187, label %194, label %188

188:                                              ; preds = %184
  %189 = load ptr, ptr %23, align 8, !tbaa !5
  %190 = call i64 @lsame_(ptr noundef %189, ptr noundef @.str.3)
  %191 = icmp ne i64 %190, 0
  br i1 %191, label %194, label %192

192:                                              ; preds = %188
  %193 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -1, ptr %193, align 8, !tbaa !9
  br label %294

194:                                              ; preds = %188, %184
  %195 = load i64, ptr %83, align 8, !tbaa !9
  %196 = icmp ne i64 %195, 0
  br i1 %196, label %205, label %197

197:                                              ; preds = %194
  %198 = load i64, ptr %87, align 8, !tbaa !9
  %199 = icmp ne i64 %198, 0
  br i1 %199, label %205, label %200

200:                                              ; preds = %197
  %201 = load i64, ptr %85, align 8, !tbaa !9
  %202 = icmp ne i64 %201, 0
  br i1 %202, label %205, label %203

203:                                              ; preds = %200
  %204 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -2, ptr %204, align 8, !tbaa !9
  br label %293

205:                                              ; preds = %200, %197, %194
  %206 = load ptr, ptr %25, align 8, !tbaa !5
  %207 = load i64, ptr %206, align 8, !tbaa !9
  %208 = icmp slt i64 %207, 0
  br i1 %208, label %209, label %211

209:                                              ; preds = %205
  %210 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -3, ptr %210, align 8, !tbaa !9
  br label %292

211:                                              ; preds = %205
  %212 = load i64, ptr %87, align 8, !tbaa !9
  %213 = icmp ne i64 %212, 0
  br i1 %213, label %214, label %224

214:                                              ; preds = %211
  %215 = load ptr, ptr %25, align 8, !tbaa !5
  %216 = load i64, ptr %215, align 8, !tbaa !9
  %217 = icmp sgt i64 %216, 0
  br i1 %217, label %218, label %224

218:                                              ; preds = %214
  %219 = load double, ptr %59, align 8, !tbaa !11
  %220 = load double, ptr %58, align 8, !tbaa !11
  %221 = fcmp ole double %219, %220
  br i1 %221, label %222, label %224

222:                                              ; preds = %218
  %223 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -7, ptr %223, align 8, !tbaa !9
  br label %291

224:                                              ; preds = %218, %214, %211
  %225 = load i64, ptr %85, align 8, !tbaa !9
  %226 = icmp ne i64 %225, 0
  br i1 %226, label %227, label %237

227:                                              ; preds = %224
  %228 = load i64, ptr %60, align 8, !tbaa !9
  %229 = icmp slt i64 %228, 1
  br i1 %229, label %235, label %230

230:                                              ; preds = %227
  %231 = load i64, ptr %60, align 8, !tbaa !9
  %232 = load ptr, ptr %25, align 8, !tbaa !5
  %233 = load i64, ptr %232, align 8, !tbaa !9
  %234 = icmp sgt i64 %231, %233
  br i1 %234, label %235, label %237

235:                                              ; preds = %230, %227
  %236 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -8, ptr %236, align 8, !tbaa !9
  br label %290

237:                                              ; preds = %230, %224
  %238 = load i64, ptr %85, align 8, !tbaa !9
  %239 = icmp ne i64 %238, 0
  br i1 %239, label %240, label %251

240:                                              ; preds = %237
  %241 = load i64, ptr %61, align 8, !tbaa !9
  %242 = load i64, ptr %60, align 8, !tbaa !9
  %243 = icmp slt i64 %241, %242
  br i1 %243, label %249, label %244

244:                                              ; preds = %240
  %245 = load i64, ptr %61, align 8, !tbaa !9
  %246 = load ptr, ptr %25, align 8, !tbaa !5
  %247 = load i64, ptr %246, align 8, !tbaa !9
  %248 = icmp sgt i64 %245, %247
  br i1 %248, label %249, label %251

249:                                              ; preds = %244, %240
  %250 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -9, ptr %250, align 8, !tbaa !9
  br label %289

251:                                              ; preds = %244, %237
  %252 = load ptr, ptr %35, align 8, !tbaa !5
  %253 = load i64, ptr %252, align 8, !tbaa !9
  %254 = icmp slt i64 %253, 1
  br i1 %254, label %264, label %255

255:                                              ; preds = %251
  %256 = load i64, ptr %82, align 8, !tbaa !9
  %257 = icmp ne i64 %256, 0
  br i1 %257, label %258, label %266

258:                                              ; preds = %255
  %259 = load ptr, ptr %35, align 8, !tbaa !5
  %260 = load i64, ptr %259, align 8, !tbaa !9
  %261 = load ptr, ptr %25, align 8, !tbaa !5
  %262 = load i64, ptr %261, align 8, !tbaa !9
  %263 = icmp slt i64 %260, %262
  br i1 %263, label %264, label %266

264:                                              ; preds = %258, %251
  %265 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -13, ptr %265, align 8, !tbaa !9
  br label %288

266:                                              ; preds = %258, %255
  %267 = load ptr, ptr %40, align 8, !tbaa !5
  %268 = load i64, ptr %267, align 8, !tbaa !9
  %269 = load i64, ptr %81, align 8, !tbaa !9
  %270 = icmp slt i64 %268, %269
  br i1 %270, label %271, label %276

271:                                              ; preds = %266
  %272 = load i64, ptr %104, align 8, !tbaa !9
  %273 = icmp ne i64 %272, 0
  br i1 %273, label %276, label %274

274:                                              ; preds = %271
  %275 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -17, ptr %275, align 8, !tbaa !9
  br label %287

276:                                              ; preds = %271, %266
  %277 = load ptr, ptr %42, align 8, !tbaa !5
  %278 = load i64, ptr %277, align 8, !tbaa !9
  %279 = load i64, ptr %99, align 8, !tbaa !9
  %280 = icmp slt i64 %278, %279
  br i1 %280, label %281, label %286

281:                                              ; preds = %276
  %282 = load i64, ptr %104, align 8, !tbaa !9
  %283 = icmp ne i64 %282, 0
  br i1 %283, label %286, label %284

284:                                              ; preds = %281
  %285 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -19, ptr %285, align 8, !tbaa !9
  br label %286

286:                                              ; preds = %284, %281, %276
  br label %287

287:                                              ; preds = %286, %274
  br label %288

288:                                              ; preds = %287, %264
  br label %289

289:                                              ; preds = %288, %249
  br label %290

290:                                              ; preds = %289, %235
  br label %291

291:                                              ; preds = %290, %222
  br label %292

292:                                              ; preds = %291, %209
  br label %293

293:                                              ; preds = %292, %203
  br label %294

294:                                              ; preds = %293, %192
  %295 = call double @dlamch_(ptr noundef @.str.4)
  store double %295, ptr %89, align 8, !tbaa !11
  %296 = call double @dlamch_(ptr noundef @.str.5)
  store double %296, ptr %62, align 8, !tbaa !11
  %297 = load double, ptr %89, align 8, !tbaa !11
  %298 = load double, ptr %62, align 8, !tbaa !11
  %299 = fdiv double %297, %298
  store double %299, ptr %103, align 8, !tbaa !11
  %300 = load double, ptr %103, align 8, !tbaa !11
  %301 = fdiv double 1.000000e+00, %300
  store double %301, ptr %90, align 8, !tbaa !11
  %302 = load double, ptr %103, align 8, !tbaa !11
  %303 = call double @sqrt(double noundef %302) #4
  store double %303, ptr %68, align 8, !tbaa !11
  %304 = load double, ptr %90, align 8, !tbaa !11
  %305 = call double @sqrt(double noundef %304) #4
  store double %305, ptr %48, align 8, !tbaa !11
  %306 = load double, ptr %89, align 8, !tbaa !11
  %307 = call double @sqrt(double noundef %306) #4
  %308 = call double @sqrt(double noundef %307) #4
  %309 = fdiv double 1.000000e+00, %308
  store double %309, ptr %49, align 8, !tbaa !11
  %310 = load double, ptr %48, align 8, !tbaa !11
  %311 = load double, ptr %49, align 8, !tbaa !11
  %312 = fcmp ole double %310, %311
  br i1 %312, label %313, label %315

313:                                              ; preds = %294
  %314 = load double, ptr %48, align 8, !tbaa !11
  br label %317

315:                                              ; preds = %294
  %316 = load double, ptr %49, align 8, !tbaa !11
  br label %317

317:                                              ; preds = %315, %313
  %318 = phi double [ %314, %313 ], [ %316, %315 ]
  store double %318, ptr %69, align 8, !tbaa !11
  %319 = load ptr, ptr %43, align 8, !tbaa !5
  %320 = load i64, ptr %319, align 8, !tbaa !9
  %321 = icmp eq i64 %320, 0
  br i1 %321, label %322, label %400

322:                                              ; preds = %317
  %323 = load i64, ptr %81, align 8, !tbaa !9
  %324 = sitofp i64 %323 to double
  %325 = load ptr, ptr %39, align 8, !tbaa !5
  %326 = getelementptr inbounds double, ptr %325, i64 1
  store double %324, ptr %326, align 8, !tbaa !11
  %327 = load i64, ptr %99, align 8, !tbaa !9
  %328 = load ptr, ptr %41, align 8, !tbaa !5
  %329 = getelementptr inbounds i64, ptr %328, i64 1
  store i64 %327, ptr %329, align 8, !tbaa !9
  %330 = load i64, ptr %82, align 8, !tbaa !9
  %331 = icmp ne i64 %330, 0
  br i1 %331, label %332, label %338

332:                                              ; preds = %322
  %333 = load i64, ptr %83, align 8, !tbaa !9
  %334 = icmp ne i64 %333, 0
  br i1 %334, label %335, label %338

335:                                              ; preds = %332
  %336 = load ptr, ptr %25, align 8, !tbaa !5
  %337 = load i64, ptr %336, align 8, !tbaa !9
  store i64 %337, ptr %100, align 8, !tbaa !9
  br label %368

338:                                              ; preds = %332, %322
  %339 = load i64, ptr %82, align 8, !tbaa !9
  %340 = icmp ne i64 %339, 0
  br i1 %340, label %341, label %354

341:                                              ; preds = %338
  %342 = load i64, ptr %87, align 8, !tbaa !9
  %343 = icmp ne i64 %342, 0
  br i1 %343, label %344, label %354

344:                                              ; preds = %341
  %345 = load ptr, ptr %25, align 8, !tbaa !5
  %346 = load ptr, ptr %28, align 8, !tbaa !5
  %347 = load ptr, ptr %29, align 8, !tbaa !5
  %348 = load ptr, ptr %26, align 8, !tbaa !5
  %349 = getelementptr inbounds double, ptr %348, i64 1
  %350 = load ptr, ptr %27, align 8, !tbaa !5
  %351 = getelementptr inbounds double, ptr %350, i64 1
  %352 = load ptr, ptr %43, align 8, !tbaa !5
  %353 = call i32 @dlarrc_(ptr noundef @.str.6, ptr noundef %345, ptr noundef %346, ptr noundef %347, ptr noundef %349, ptr noundef %351, ptr noundef %89, ptr noundef %100, ptr noundef %70, ptr noundef %73, ptr noundef %352)
  br label %367

354:                                              ; preds = %341, %338
  %355 = load i64, ptr %82, align 8, !tbaa !9
  %356 = icmp ne i64 %355, 0
  br i1 %356, label %357, label %365

357:                                              ; preds = %354
  %358 = load i64, ptr %85, align 8, !tbaa !9
  %359 = icmp ne i64 %358, 0
  br i1 %359, label %360, label %365

360:                                              ; preds = %357
  %361 = load i64, ptr %61, align 8, !tbaa !9
  %362 = load i64, ptr %60, align 8, !tbaa !9
  %363 = sub nsw i64 %361, %362
  %364 = add nsw i64 %363, 1
  store i64 %364, ptr %100, align 8, !tbaa !9
  br label %366

365:                                              ; preds = %357, %354
  store i64 0, ptr %100, align 8, !tbaa !9
  br label %366

366:                                              ; preds = %365, %360
  br label %367

367:                                              ; preds = %366, %344
  br label %368

368:                                              ; preds = %367, %335
  %369 = load i64, ptr %105, align 8, !tbaa !9
  %370 = icmp ne i64 %369, 0
  br i1 %370, label %371, label %388

371:                                              ; preds = %368
  %372 = load ptr, ptr %43, align 8, !tbaa !5
  %373 = load i64, ptr %372, align 8, !tbaa !9
  %374 = icmp eq i64 %373, 0
  br i1 %374, label %375, label %388

375:                                              ; preds = %371
  %376 = load i64, ptr %44, align 8, !tbaa !9
  %377 = add nsw i64 %376, 1
  store i64 %377, ptr %46, align 8, !tbaa !9
  %378 = load i64, ptr %100, align 8, !tbaa !9
  %379 = sitofp i64 %378 to double
  %380 = load ptr, ptr %34, align 8, !tbaa !5
  %381 = load i64, ptr %46, align 8, !tbaa !9
  %382 = getelementptr inbounds %struct.doublecomplex, ptr %380, i64 %381
  %383 = getelementptr inbounds %struct.doublecomplex, ptr %382, i32 0, i32 0
  store double %379, ptr %383, align 8, !tbaa !13
  %384 = load ptr, ptr %34, align 8, !tbaa !5
  %385 = load i64, ptr %46, align 8, !tbaa !9
  %386 = getelementptr inbounds %struct.doublecomplex, ptr %384, i64 %385
  %387 = getelementptr inbounds %struct.doublecomplex, ptr %386, i32 0, i32 1
  store double 0.000000e+00, ptr %387, align 8, !tbaa !15
  br label %399

388:                                              ; preds = %371, %368
  %389 = load ptr, ptr %36, align 8, !tbaa !5
  %390 = load i64, ptr %389, align 8, !tbaa !9
  %391 = load i64, ptr %100, align 8, !tbaa !9
  %392 = icmp slt i64 %390, %391
  br i1 %392, label %393, label %398

393:                                              ; preds = %388
  %394 = load i64, ptr %105, align 8, !tbaa !9
  %395 = icmp ne i64 %394, 0
  br i1 %395, label %398, label %396

396:                                              ; preds = %393
  %397 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -14, ptr %397, align 8, !tbaa !9
  br label %398

398:                                              ; preds = %396, %393, %388
  br label %399

399:                                              ; preds = %398, %375
  br label %400

400:                                              ; preds = %399, %317
  %401 = load ptr, ptr %43, align 8, !tbaa !5
  %402 = load i64, ptr %401, align 8, !tbaa !9
  %403 = icmp ne i64 %402, 0
  br i1 %403, label %404, label %409

404:                                              ; preds = %400
  %405 = load ptr, ptr %43, align 8, !tbaa !5
  %406 = load i64, ptr %405, align 8, !tbaa !9
  %407 = sub nsw i64 0, %406
  store i64 %407, ptr %46, align 8, !tbaa !9
  %408 = call i32 @xerbla_(ptr noundef @.str.7, ptr noundef %46)
  store i32 0, ptr %22, align 4
  store i32 1, ptr %106, align 4
  br label %1316

409:                                              ; preds = %400
  %410 = load i64, ptr %104, align 8, !tbaa !9
  %411 = icmp ne i64 %410, 0
  br i1 %411, label %415, label %412

412:                                              ; preds = %409
  %413 = load i64, ptr %105, align 8, !tbaa !9
  %414 = icmp ne i64 %413, 0
  br i1 %414, label %415, label %416

415:                                              ; preds = %412, %409
  store i32 0, ptr %22, align 4
  store i32 1, ptr %106, align 4
  br label %1316

416:                                              ; preds = %412
  br label %417

417:                                              ; preds = %416
  %418 = load ptr, ptr %32, align 8, !tbaa !5
  store i64 0, ptr %418, align 8, !tbaa !9
  %419 = load ptr, ptr %25, align 8, !tbaa !5
  %420 = load i64, ptr %419, align 8, !tbaa !9
  %421 = icmp eq i64 %420, 0
  br i1 %421, label %422, label %423

422:                                              ; preds = %417
  store i32 0, ptr %22, align 4
  store i32 1, ptr %106, align 4
  br label %1316

423:                                              ; preds = %417
  %424 = load ptr, ptr %25, align 8, !tbaa !5
  %425 = load i64, ptr %424, align 8, !tbaa !9
  %426 = icmp eq i64 %425, 1
  br i1 %426, label %427, label %482

427:                                              ; preds = %423
  %428 = load i64, ptr %83, align 8, !tbaa !9
  %429 = icmp ne i64 %428, 0
  br i1 %429, label %433, label %430

430:                                              ; preds = %427
  %431 = load i64, ptr %85, align 8, !tbaa !9
  %432 = icmp ne i64 %431, 0
  br i1 %432, label %433, label %440

433:                                              ; preds = %430, %427
  %434 = load ptr, ptr %32, align 8, !tbaa !5
  store i64 1, ptr %434, align 8, !tbaa !9
  %435 = load ptr, ptr %26, align 8, !tbaa !5
  %436 = getelementptr inbounds double, ptr %435, i64 1
  %437 = load double, ptr %436, align 8, !tbaa !11
  %438 = load ptr, ptr %33, align 8, !tbaa !5
  %439 = getelementptr inbounds double, ptr %438, i64 1
  store double %437, ptr %439, align 8, !tbaa !11
  br label %460

440:                                              ; preds = %430
  %441 = load double, ptr %58, align 8, !tbaa !11
  %442 = load ptr, ptr %26, align 8, !tbaa !5
  %443 = getelementptr inbounds double, ptr %442, i64 1
  %444 = load double, ptr %443, align 8, !tbaa !11
  %445 = fcmp olt double %441, %444
  br i1 %445, label %446, label %459

446:                                              ; preds = %440
  %447 = load double, ptr %59, align 8, !tbaa !11
  %448 = load ptr, ptr %26, align 8, !tbaa !5
  %449 = getelementptr inbounds double, ptr %448, i64 1
  %450 = load double, ptr %449, align 8, !tbaa !11
  %451 = fcmp oge double %447, %450
  br i1 %451, label %452, label %459

452:                                              ; preds = %446
  %453 = load ptr, ptr %32, align 8, !tbaa !5
  store i64 1, ptr %453, align 8, !tbaa !9
  %454 = load ptr, ptr %26, align 8, !tbaa !5
  %455 = getelementptr inbounds double, ptr %454, i64 1
  %456 = load double, ptr %455, align 8, !tbaa !11
  %457 = load ptr, ptr %33, align 8, !tbaa !5
  %458 = getelementptr inbounds double, ptr %457, i64 1
  store double %456, ptr %458, align 8, !tbaa !11
  br label %459

459:                                              ; preds = %452, %446, %440
  br label %460

460:                                              ; preds = %459, %433
  %461 = load i64, ptr %82, align 8, !tbaa !9
  %462 = icmp ne i64 %461, 0
  br i1 %462, label %463, label %481

463:                                              ; preds = %460
  %464 = load i64, ptr %105, align 8, !tbaa !9
  %465 = icmp ne i64 %464, 0
  br i1 %465, label %481, label %466

466:                                              ; preds = %463
  %467 = load i64, ptr %44, align 8, !tbaa !9
  %468 = add nsw i64 %467, 1
  store i64 %468, ptr %46, align 8, !tbaa !9
  %469 = load ptr, ptr %34, align 8, !tbaa !5
  %470 = load i64, ptr %46, align 8, !tbaa !9
  %471 = getelementptr inbounds %struct.doublecomplex, ptr %469, i64 %470
  %472 = getelementptr inbounds %struct.doublecomplex, ptr %471, i32 0, i32 0
  store double 1.000000e+00, ptr %472, align 8, !tbaa !13
  %473 = load ptr, ptr %34, align 8, !tbaa !5
  %474 = load i64, ptr %46, align 8, !tbaa !9
  %475 = getelementptr inbounds %struct.doublecomplex, ptr %473, i64 %474
  %476 = getelementptr inbounds %struct.doublecomplex, ptr %475, i32 0, i32 1
  store double 0.000000e+00, ptr %476, align 8, !tbaa !15
  %477 = load ptr, ptr %37, align 8, !tbaa !5
  %478 = getelementptr inbounds i64, ptr %477, i64 1
  store i64 1, ptr %478, align 8, !tbaa !9
  %479 = load ptr, ptr %37, align 8, !tbaa !5
  %480 = getelementptr inbounds i64, ptr %479, i64 2
  store i64 1, ptr %480, align 8, !tbaa !9
  br label %481

481:                                              ; preds = %466, %463, %460
  store i32 0, ptr %22, align 4
  store i32 1, ptr %106, align 4
  br label %1316

482:                                              ; preds = %423
  %483 = load ptr, ptr %25, align 8, !tbaa !5
  %484 = load i64, ptr %483, align 8, !tbaa !9
  %485 = icmp eq i64 %484, 2
  br i1 %485, label %486, label %733

486:                                              ; preds = %482
  %487 = load i64, ptr %82, align 8, !tbaa !9
  %488 = icmp ne i64 %487, 0
  br i1 %488, label %497, label %489

489:                                              ; preds = %486
  %490 = load ptr, ptr %26, align 8, !tbaa !5
  %491 = getelementptr inbounds double, ptr %490, i64 1
  %492 = load ptr, ptr %27, align 8, !tbaa !5
  %493 = getelementptr inbounds double, ptr %492, i64 1
  %494 = load ptr, ptr %26, align 8, !tbaa !5
  %495 = getelementptr inbounds double, ptr %494, i64 2
  %496 = call i32 @dlae2_(ptr noundef %491, ptr noundef %493, ptr noundef %495, ptr noundef %52, ptr noundef %53)
  br label %512

497:                                              ; preds = %486
  %498 = load i64, ptr %82, align 8, !tbaa !9
  %499 = icmp ne i64 %498, 0
  br i1 %499, label %500, label %511

500:                                              ; preds = %497
  %501 = load i64, ptr %105, align 8, !tbaa !9
  %502 = icmp ne i64 %501, 0
  br i1 %502, label %511, label %503

503:                                              ; preds = %500
  %504 = load ptr, ptr %26, align 8, !tbaa !5
  %505 = getelementptr inbounds double, ptr %504, i64 1
  %506 = load ptr, ptr %27, align 8, !tbaa !5
  %507 = getelementptr inbounds double, ptr %506, i64 1
  %508 = load ptr, ptr %26, align 8, !tbaa !5
  %509 = getelementptr inbounds double, ptr %508, i64 2
  %510 = call i32 @dlaev2_(ptr noundef %505, ptr noundef %507, ptr noundef %509, ptr noundef %52, ptr noundef %53, ptr noundef %55, ptr noundef %57)
  br label %511

511:                                              ; preds = %503, %500, %497
  br label %512

512:                                              ; preds = %511, %489
  %513 = load i64, ptr %83, align 8, !tbaa !9
  %514 = icmp ne i64 %513, 0
  br i1 %514, label %532, label %515

515:                                              ; preds = %512
  %516 = load i64, ptr %87, align 8, !tbaa !9
  %517 = icmp ne i64 %516, 0
  br i1 %517, label %518, label %526

518:                                              ; preds = %515
  %519 = load double, ptr %53, align 8, !tbaa !11
  %520 = load double, ptr %58, align 8, !tbaa !11
  %521 = fcmp ogt double %519, %520
  br i1 %521, label %522, label %526

522:                                              ; preds = %518
  %523 = load double, ptr %53, align 8, !tbaa !11
  %524 = load double, ptr %59, align 8, !tbaa !11
  %525 = fcmp ole double %523, %524
  br i1 %525, label %532, label %526

526:                                              ; preds = %522, %518, %515
  %527 = load i64, ptr %85, align 8, !tbaa !9
  %528 = icmp ne i64 %527, 0
  br i1 %528, label %529, label %623

529:                                              ; preds = %526
  %530 = load i64, ptr %60, align 8, !tbaa !9
  %531 = icmp eq i64 %530, 1
  br i1 %531, label %532, label %623

532:                                              ; preds = %529, %522, %512
  %533 = load ptr, ptr %32, align 8, !tbaa !5
  %534 = load i64, ptr %533, align 8, !tbaa !9
  %535 = add nsw i64 %534, 1
  store i64 %535, ptr %533, align 8, !tbaa !9
  %536 = load double, ptr %53, align 8, !tbaa !11
  %537 = load ptr, ptr %33, align 8, !tbaa !5
  %538 = load ptr, ptr %32, align 8, !tbaa !5
  %539 = load i64, ptr %538, align 8, !tbaa !9
  %540 = getelementptr inbounds double, ptr %537, i64 %539
  store double %536, ptr %540, align 8, !tbaa !11
  %541 = load i64, ptr %82, align 8, !tbaa !9
  %542 = icmp ne i64 %541, 0
  br i1 %542, label %543, label %622

543:                                              ; preds = %532
  %544 = load i64, ptr %105, align 8, !tbaa !9
  %545 = icmp ne i64 %544, 0
  br i1 %545, label %622, label %546

546:                                              ; preds = %543
  %547 = load ptr, ptr %32, align 8, !tbaa !5
  %548 = load i64, ptr %547, align 8, !tbaa !9
  %549 = load i64, ptr %44, align 8, !tbaa !9
  %550 = mul nsw i64 %548, %549
  %551 = add nsw i64 %550, 1
  store i64 %551, ptr %46, align 8, !tbaa !9
  %552 = load double, ptr %57, align 8, !tbaa !11
  %553 = fneg double %552
  store double %553, ptr %48, align 8, !tbaa !11
  %554 = load double, ptr %48, align 8, !tbaa !11
  %555 = load ptr, ptr %34, align 8, !tbaa !5
  %556 = load i64, ptr %46, align 8, !tbaa !9
  %557 = getelementptr inbounds %struct.doublecomplex, ptr %555, i64 %556
  %558 = getelementptr inbounds %struct.doublecomplex, ptr %557, i32 0, i32 0
  store double %554, ptr %558, align 8, !tbaa !13
  %559 = load ptr, ptr %34, align 8, !tbaa !5
  %560 = load i64, ptr %46, align 8, !tbaa !9
  %561 = getelementptr inbounds %struct.doublecomplex, ptr %559, i64 %560
  %562 = getelementptr inbounds %struct.doublecomplex, ptr %561, i32 0, i32 1
  store double 0.000000e+00, ptr %562, align 8, !tbaa !15
  %563 = load ptr, ptr %32, align 8, !tbaa !5
  %564 = load i64, ptr %563, align 8, !tbaa !9
  %565 = load i64, ptr %44, align 8, !tbaa !9
  %566 = mul nsw i64 %564, %565
  %567 = add nsw i64 %566, 2
  store i64 %567, ptr %46, align 8, !tbaa !9
  %568 = load double, ptr %55, align 8, !tbaa !11
  %569 = load ptr, ptr %34, align 8, !tbaa !5
  %570 = load i64, ptr %46, align 8, !tbaa !9
  %571 = getelementptr inbounds %struct.doublecomplex, ptr %569, i64 %570
  %572 = getelementptr inbounds %struct.doublecomplex, ptr %571, i32 0, i32 0
  store double %568, ptr %572, align 8, !tbaa !13
  %573 = load ptr, ptr %34, align 8, !tbaa !5
  %574 = load i64, ptr %46, align 8, !tbaa !9
  %575 = getelementptr inbounds %struct.doublecomplex, ptr %573, i64 %574
  %576 = getelementptr inbounds %struct.doublecomplex, ptr %575, i32 0, i32 1
  store double 0.000000e+00, ptr %576, align 8, !tbaa !15
  %577 = load double, ptr %57, align 8, !tbaa !11
  %578 = fcmp une double %577, 0.000000e+00
  br i1 %578, label %579, label %609

579:                                              ; preds = %546
  %580 = load double, ptr %55, align 8, !tbaa !11
  %581 = fcmp une double %580, 0.000000e+00
  br i1 %581, label %582, label %595

582:                                              ; preds = %579
  %583 = load ptr, ptr %37, align 8, !tbaa !5
  %584 = load ptr, ptr %32, align 8, !tbaa !5
  %585 = load i64, ptr %584, align 8, !tbaa !9
  %586 = shl i64 %585, 1
  %587 = sub nsw i64 %586, 1
  %588 = getelementptr inbounds i64, ptr %583, i64 %587
  store i64 1, ptr %588, align 8, !tbaa !9
  %589 = load ptr, ptr %37, align 8, !tbaa !5
  %590 = load ptr, ptr %32, align 8, !tbaa !5
  %591 = load i64, ptr %590, align 8, !tbaa !9
  %592 = shl i64 %591, 1
  %593 = sub nsw i64 %592, 1
  %594 = getelementptr inbounds i64, ptr %589, i64 %593
  store i64 2, ptr %594, align 8, !tbaa !9
  br label %608

595:                                              ; preds = %579
  %596 = load ptr, ptr %37, align 8, !tbaa !5
  %597 = load ptr, ptr %32, align 8, !tbaa !5
  %598 = load i64, ptr %597, align 8, !tbaa !9
  %599 = shl i64 %598, 1
  %600 = sub nsw i64 %599, 1
  %601 = getelementptr inbounds i64, ptr %596, i64 %600
  store i64 1, ptr %601, align 8, !tbaa !9
  %602 = load ptr, ptr %37, align 8, !tbaa !5
  %603 = load ptr, ptr %32, align 8, !tbaa !5
  %604 = load i64, ptr %603, align 8, !tbaa !9
  %605 = shl i64 %604, 1
  %606 = sub nsw i64 %605, 1
  %607 = getelementptr inbounds i64, ptr %602, i64 %606
  store i64 1, ptr %607, align 8, !tbaa !9
  br label %608

608:                                              ; preds = %595, %582
  br label %621

609:                                              ; preds = %546
  %610 = load ptr, ptr %37, align 8, !tbaa !5
  %611 = load ptr, ptr %32, align 8, !tbaa !5
  %612 = load i64, ptr %611, align 8, !tbaa !9
  %613 = shl i64 %612, 1
  %614 = sub nsw i64 %613, 1
  %615 = getelementptr inbounds i64, ptr %610, i64 %614
  store i64 2, ptr %615, align 8, !tbaa !9
  %616 = load ptr, ptr %37, align 8, !tbaa !5
  %617 = load ptr, ptr %32, align 8, !tbaa !5
  %618 = load i64, ptr %617, align 8, !tbaa !9
  %619 = mul nsw i64 %618, 2
  %620 = getelementptr inbounds i64, ptr %616, i64 %619
  store i64 2, ptr %620, align 8, !tbaa !9
  br label %621

621:                                              ; preds = %609, %608
  br label %622

622:                                              ; preds = %621, %543, %532
  br label %623

623:                                              ; preds = %622, %529, %526
  %624 = load i64, ptr %83, align 8, !tbaa !9
  %625 = icmp ne i64 %624, 0
  br i1 %625, label %643, label %626

626:                                              ; preds = %623
  %627 = load i64, ptr %87, align 8, !tbaa !9
  %628 = icmp ne i64 %627, 0
  br i1 %628, label %629, label %637

629:                                              ; preds = %626
  %630 = load double, ptr %52, align 8, !tbaa !11
  %631 = load double, ptr %58, align 8, !tbaa !11
  %632 = fcmp ogt double %630, %631
  br i1 %632, label %633, label %637

633:                                              ; preds = %629
  %634 = load double, ptr %52, align 8, !tbaa !11
  %635 = load double, ptr %59, align 8, !tbaa !11
  %636 = fcmp ole double %634, %635
  br i1 %636, label %643, label %637

637:                                              ; preds = %633, %629, %626
  %638 = load i64, ptr %85, align 8, !tbaa !9
  %639 = icmp ne i64 %638, 0
  br i1 %639, label %640, label %732

640:                                              ; preds = %637
  %641 = load i64, ptr %61, align 8, !tbaa !9
  %642 = icmp eq i64 %641, 2
  br i1 %642, label %643, label %732

643:                                              ; preds = %640, %633, %623
  %644 = load ptr, ptr %32, align 8, !tbaa !5
  %645 = load i64, ptr %644, align 8, !tbaa !9
  %646 = add nsw i64 %645, 1
  store i64 %646, ptr %644, align 8, !tbaa !9
  %647 = load double, ptr %52, align 8, !tbaa !11
  %648 = load ptr, ptr %33, align 8, !tbaa !5
  %649 = load ptr, ptr %32, align 8, !tbaa !5
  %650 = load i64, ptr %649, align 8, !tbaa !9
  %651 = getelementptr inbounds double, ptr %648, i64 %650
  store double %647, ptr %651, align 8, !tbaa !11
  %652 = load i64, ptr %82, align 8, !tbaa !9
  %653 = icmp ne i64 %652, 0
  br i1 %653, label %654, label %731

654:                                              ; preds = %643
  %655 = load i64, ptr %105, align 8, !tbaa !9
  %656 = icmp ne i64 %655, 0
  br i1 %656, label %731, label %657

657:                                              ; preds = %654
  %658 = load ptr, ptr %32, align 8, !tbaa !5
  %659 = load i64, ptr %658, align 8, !tbaa !9
  %660 = load i64, ptr %44, align 8, !tbaa !9
  %661 = mul nsw i64 %659, %660
  %662 = add nsw i64 %661, 1
  store i64 %662, ptr %46, align 8, !tbaa !9
  %663 = load double, ptr %55, align 8, !tbaa !11
  %664 = load ptr, ptr %34, align 8, !tbaa !5
  %665 = load i64, ptr %46, align 8, !tbaa !9
  %666 = getelementptr inbounds %struct.doublecomplex, ptr %664, i64 %665
  %667 = getelementptr inbounds %struct.doublecomplex, ptr %666, i32 0, i32 0
  store double %663, ptr %667, align 8, !tbaa !13
  %668 = load ptr, ptr %34, align 8, !tbaa !5
  %669 = load i64, ptr %46, align 8, !tbaa !9
  %670 = getelementptr inbounds %struct.doublecomplex, ptr %668, i64 %669
  %671 = getelementptr inbounds %struct.doublecomplex, ptr %670, i32 0, i32 1
  store double 0.000000e+00, ptr %671, align 8, !tbaa !15
  %672 = load ptr, ptr %32, align 8, !tbaa !5
  %673 = load i64, ptr %672, align 8, !tbaa !9
  %674 = load i64, ptr %44, align 8, !tbaa !9
  %675 = mul nsw i64 %673, %674
  %676 = add nsw i64 %675, 2
  store i64 %676, ptr %46, align 8, !tbaa !9
  %677 = load double, ptr %57, align 8, !tbaa !11
  %678 = load ptr, ptr %34, align 8, !tbaa !5
  %679 = load i64, ptr %46, align 8, !tbaa !9
  %680 = getelementptr inbounds %struct.doublecomplex, ptr %678, i64 %679
  %681 = getelementptr inbounds %struct.doublecomplex, ptr %680, i32 0, i32 0
  store double %677, ptr %681, align 8, !tbaa !13
  %682 = load ptr, ptr %34, align 8, !tbaa !5
  %683 = load i64, ptr %46, align 8, !tbaa !9
  %684 = getelementptr inbounds %struct.doublecomplex, ptr %682, i64 %683
  %685 = getelementptr inbounds %struct.doublecomplex, ptr %684, i32 0, i32 1
  store double 0.000000e+00, ptr %685, align 8, !tbaa !15
  %686 = load double, ptr %57, align 8, !tbaa !11
  %687 = fcmp une double %686, 0.000000e+00
  br i1 %687, label %688, label %718

688:                                              ; preds = %657
  %689 = load double, ptr %55, align 8, !tbaa !11
  %690 = fcmp une double %689, 0.000000e+00
  br i1 %690, label %691, label %704

691:                                              ; preds = %688
  %692 = load ptr, ptr %37, align 8, !tbaa !5
  %693 = load ptr, ptr %32, align 8, !tbaa !5
  %694 = load i64, ptr %693, align 8, !tbaa !9
  %695 = shl i64 %694, 1
  %696 = sub nsw i64 %695, 1
  %697 = getelementptr inbounds i64, ptr %692, i64 %696
  store i64 1, ptr %697, align 8, !tbaa !9
  %698 = load ptr, ptr %37, align 8, !tbaa !5
  %699 = load ptr, ptr %32, align 8, !tbaa !5
  %700 = load i64, ptr %699, align 8, !tbaa !9
  %701 = shl i64 %700, 1
  %702 = sub nsw i64 %701, 1
  %703 = getelementptr inbounds i64, ptr %698, i64 %702
  store i64 2, ptr %703, align 8, !tbaa !9
  br label %717

704:                                              ; preds = %688
  %705 = load ptr, ptr %37, align 8, !tbaa !5
  %706 = load ptr, ptr %32, align 8, !tbaa !5
  %707 = load i64, ptr %706, align 8, !tbaa !9
  %708 = shl i64 %707, 1
  %709 = sub nsw i64 %708, 1
  %710 = getelementptr inbounds i64, ptr %705, i64 %709
  store i64 1, ptr %710, align 8, !tbaa !9
  %711 = load ptr, ptr %37, align 8, !tbaa !5
  %712 = load ptr, ptr %32, align 8, !tbaa !5
  %713 = load i64, ptr %712, align 8, !tbaa !9
  %714 = shl i64 %713, 1
  %715 = sub nsw i64 %714, 1
  %716 = getelementptr inbounds i64, ptr %711, i64 %715
  store i64 1, ptr %716, align 8, !tbaa !9
  br label %717

717:                                              ; preds = %704, %691
  br label %730

718:                                              ; preds = %657
  %719 = load ptr, ptr %37, align 8, !tbaa !5
  %720 = load ptr, ptr %32, align 8, !tbaa !5
  %721 = load i64, ptr %720, align 8, !tbaa !9
  %722 = shl i64 %721, 1
  %723 = sub nsw i64 %722, 1
  %724 = getelementptr inbounds i64, ptr %719, i64 %723
  store i64 2, ptr %724, align 8, !tbaa !9
  %725 = load ptr, ptr %37, align 8, !tbaa !5
  %726 = load ptr, ptr %32, align 8, !tbaa !5
  %727 = load i64, ptr %726, align 8, !tbaa !9
  %728 = mul nsw i64 %727, 2
  %729 = getelementptr inbounds i64, ptr %725, i64 %728
  store i64 2, ptr %729, align 8, !tbaa !9
  br label %730

730:                                              ; preds = %718, %717
  br label %731

731:                                              ; preds = %730, %654, %643
  br label %732

732:                                              ; preds = %731, %640, %637
  store i32 0, ptr %22, align 4
  store i32 1, ptr %106, align 4
  br label %1316

733:                                              ; preds = %482
  store i64 1, ptr %93, align 8, !tbaa !9
  %734 = load ptr, ptr %25, align 8, !tbaa !5
  %735 = load i64, ptr %734, align 8, !tbaa !9
  %736 = shl i64 %735, 1
  %737 = add nsw i64 %736, 1
  store i64 %737, ptr %91, align 8, !tbaa !9
  %738 = load ptr, ptr %25, align 8, !tbaa !5
  %739 = load i64, ptr %738, align 8, !tbaa !9
  %740 = mul nsw i64 %739, 3
  %741 = add nsw i64 %740, 1
  store i64 %741, ptr %77, align 8, !tbaa !9
  %742 = load ptr, ptr %25, align 8, !tbaa !5
  %743 = load i64, ptr %742, align 8, !tbaa !9
  %744 = shl i64 %743, 2
  %745 = add nsw i64 %744, 1
  store i64 %745, ptr %64, align 8, !tbaa !9
  %746 = load ptr, ptr %25, align 8, !tbaa !5
  %747 = load i64, ptr %746, align 8, !tbaa !9
  %748 = mul nsw i64 %747, 5
  %749 = add nsw i64 %748, 1
  store i64 %749, ptr %72, align 8, !tbaa !9
  %750 = load ptr, ptr %25, align 8, !tbaa !5
  %751 = load i64, ptr %750, align 8, !tbaa !9
  %752 = mul nsw i64 %751, 6
  %753 = add nsw i64 %752, 1
  store i64 %753, ptr %97, align 8, !tbaa !9
  store i64 1, ptr %96, align 8, !tbaa !9
  %754 = load ptr, ptr %25, align 8, !tbaa !5
  %755 = load i64, ptr %754, align 8, !tbaa !9
  %756 = add nsw i64 %755, 1
  store i64 %756, ptr %86, align 8, !tbaa !9
  %757 = load ptr, ptr %25, align 8, !tbaa !5
  %758 = load i64, ptr %757, align 8, !tbaa !9
  %759 = shl i64 %758, 1
  %760 = add nsw i64 %759, 1
  store i64 %760, ptr %79, align 8, !tbaa !9
  %761 = load ptr, ptr %25, align 8, !tbaa !5
  %762 = load i64, ptr %761, align 8, !tbaa !9
  %763 = mul nsw i64 %762, 3
  %764 = add nsw i64 %763, 1
  store i64 %764, ptr %92, align 8, !tbaa !9
  store double 1.000000e+00, ptr %76, align 8, !tbaa !11
  %765 = load ptr, ptr %25, align 8, !tbaa !5
  %766 = load ptr, ptr %26, align 8, !tbaa !5
  %767 = getelementptr inbounds double, ptr %766, i64 1
  %768 = load ptr, ptr %27, align 8, !tbaa !5
  %769 = getelementptr inbounds double, ptr %768, i64 1
  %770 = call double @dlanst_(ptr noundef @.str.8, ptr noundef %765, ptr noundef %767, ptr noundef %769)
  store double %770, ptr %71, align 8, !tbaa !11
  %771 = load double, ptr %71, align 8, !tbaa !11
  %772 = fcmp ogt double %771, 0.000000e+00
  br i1 %772, label %773, label %781

773:                                              ; preds = %733
  %774 = load double, ptr %71, align 8, !tbaa !11
  %775 = load double, ptr %68, align 8, !tbaa !11
  %776 = fcmp olt double %774, %775
  br i1 %776, label %777, label %781

777:                                              ; preds = %773
  %778 = load double, ptr %68, align 8, !tbaa !11
  %779 = load double, ptr %71, align 8, !tbaa !11
  %780 = fdiv double %778, %779
  store double %780, ptr %76, align 8, !tbaa !11
  br label %790

781:                                              ; preds = %773, %733
  %782 = load double, ptr %71, align 8, !tbaa !11
  %783 = load double, ptr %69, align 8, !tbaa !11
  %784 = fcmp ogt double %782, %783
  br i1 %784, label %785, label %789

785:                                              ; preds = %781
  %786 = load double, ptr %69, align 8, !tbaa !11
  %787 = load double, ptr %71, align 8, !tbaa !11
  %788 = fdiv double %786, %787
  store double %788, ptr %76, align 8, !tbaa !11
  br label %789

789:                                              ; preds = %785, %781
  br label %790

790:                                              ; preds = %789, %777
  %791 = load double, ptr %76, align 8, !tbaa !11
  %792 = fcmp une double %791, 1.000000e+00
  br i1 %792, label %793, label %817

793:                                              ; preds = %790
  %794 = load ptr, ptr %25, align 8, !tbaa !5
  %795 = load ptr, ptr %26, align 8, !tbaa !5
  %796 = getelementptr inbounds double, ptr %795, i64 1
  %797 = call i32 @f2c_dscal(ptr noundef %794, ptr noundef %76, ptr noundef %796, ptr noundef @c__1)
  %798 = load ptr, ptr %25, align 8, !tbaa !5
  %799 = load i64, ptr %798, align 8, !tbaa !9
  %800 = sub nsw i64 %799, 1
  store i64 %800, ptr %46, align 8, !tbaa !9
  %801 = load ptr, ptr %27, align 8, !tbaa !5
  %802 = getelementptr inbounds double, ptr %801, i64 1
  %803 = call i32 @f2c_dscal(ptr noundef %46, ptr noundef %76, ptr noundef %802, ptr noundef @c__1)
  %804 = load double, ptr %76, align 8, !tbaa !11
  %805 = load double, ptr %71, align 8, !tbaa !11
  %806 = fmul double %805, %804
  store double %806, ptr %71, align 8, !tbaa !11
  %807 = load i64, ptr %87, align 8, !tbaa !9
  %808 = icmp ne i64 %807, 0
  br i1 %808, label %809, label %816

809:                                              ; preds = %793
  %810 = load double, ptr %76, align 8, !tbaa !11
  %811 = load double, ptr %58, align 8, !tbaa !11
  %812 = fmul double %811, %810
  store double %812, ptr %58, align 8, !tbaa !11
  %813 = load double, ptr %76, align 8, !tbaa !11
  %814 = load double, ptr %59, align 8, !tbaa !11
  %815 = fmul double %814, %813
  store double %815, ptr %59, align 8, !tbaa !11
  br label %816

816:                                              ; preds = %809, %793
  br label %817

817:                                              ; preds = %816, %790
  %818 = load ptr, ptr %38, align 8, !tbaa !5
  %819 = load i64, ptr %818, align 8, !tbaa !9
  %820 = icmp ne i64 %819, 0
  br i1 %820, label %821, label %828

821:                                              ; preds = %817
  %822 = load ptr, ptr %25, align 8, !tbaa !5
  %823 = load ptr, ptr %26, align 8, !tbaa !5
  %824 = getelementptr inbounds double, ptr %823, i64 1
  %825 = load ptr, ptr %27, align 8, !tbaa !5
  %826 = getelementptr inbounds double, ptr %825, i64 1
  %827 = call i32 @dlarrr_(ptr noundef %822, ptr noundef %824, ptr noundef %826, ptr noundef %78)
  br label %829

828:                                              ; preds = %817
  store i64 -1, ptr %78, align 8, !tbaa !9
  br label %829

829:                                              ; preds = %828, %821
  %830 = load i64, ptr %78, align 8, !tbaa !9
  %831 = icmp eq i64 %830, 0
  br i1 %831, label %832, label %834

832:                                              ; preds = %829
  %833 = load double, ptr %62, align 8, !tbaa !11
  store double %833, ptr %95, align 8, !tbaa !11
  br label %838

834:                                              ; preds = %829
  %835 = load double, ptr %62, align 8, !tbaa !11
  %836 = fneg double %835
  store double %836, ptr %95, align 8, !tbaa !11
  %837 = load ptr, ptr %38, align 8, !tbaa !5
  store i64 0, ptr %837, align 8, !tbaa !9
  br label %838

838:                                              ; preds = %834, %832
  %839 = load ptr, ptr %38, align 8, !tbaa !5
  %840 = load i64, ptr %839, align 8, !tbaa !9
  %841 = icmp ne i64 %840, 0
  br i1 %841, label %842, label %850

842:                                              ; preds = %838
  %843 = load ptr, ptr %25, align 8, !tbaa !5
  %844 = load ptr, ptr %26, align 8, !tbaa !5
  %845 = getelementptr inbounds double, ptr %844, i64 1
  %846 = load ptr, ptr %39, align 8, !tbaa !5
  %847 = load i64, ptr %64, align 8, !tbaa !9
  %848 = getelementptr inbounds double, ptr %846, i64 %847
  %849 = call i32 @f2c_dcopy(ptr noundef %843, ptr noundef %845, ptr noundef @c__1, ptr noundef %848, ptr noundef @c__1)
  br label %850

850:                                              ; preds = %842, %838
  %851 = load ptr, ptr %25, align 8, !tbaa !5
  %852 = load i64, ptr %851, align 8, !tbaa !9
  %853 = sub nsw i64 %852, 1
  store i64 %853, ptr %46, align 8, !tbaa !9
  store i64 1, ptr %51, align 8, !tbaa !9
  br label %854

854:                                              ; preds = %872, %850
  %855 = load i64, ptr %51, align 8, !tbaa !9
  %856 = load i64, ptr %46, align 8, !tbaa !9
  %857 = icmp sle i64 %855, %856
  br i1 %857, label %858, label %875

858:                                              ; preds = %854
  %859 = load ptr, ptr %27, align 8, !tbaa !5
  %860 = load i64, ptr %51, align 8, !tbaa !9
  %861 = getelementptr inbounds double, ptr %859, i64 %860
  %862 = load double, ptr %861, align 8, !tbaa !11
  store double %862, ptr %48, align 8, !tbaa !11
  %863 = load double, ptr %48, align 8, !tbaa !11
  %864 = load double, ptr %48, align 8, !tbaa !11
  %865 = fmul double %863, %864
  %866 = load ptr, ptr %39, align 8, !tbaa !5
  %867 = load i64, ptr %72, align 8, !tbaa !9
  %868 = load i64, ptr %51, align 8, !tbaa !9
  %869 = add nsw i64 %867, %868
  %870 = sub nsw i64 %869, 1
  %871 = getelementptr inbounds double, ptr %866, i64 %870
  store double %865, ptr %871, align 8, !tbaa !11
  br label %872

872:                                              ; preds = %858
  %873 = load i64, ptr %51, align 8, !tbaa !9
  %874 = add nsw i64 %873, 1
  store i64 %874, ptr %51, align 8, !tbaa !9
  br label %854, !llvm.loop !16

875:                                              ; preds = %854
  %876 = load i64, ptr %82, align 8, !tbaa !9
  %877 = icmp ne i64 %876, 0
  br i1 %877, label %883, label %878

878:                                              ; preds = %875
  %879 = load double, ptr %62, align 8, !tbaa !11
  %880 = fmul double %879, 4.000000e+00
  store double %880, ptr %74, align 8, !tbaa !11
  %881 = load double, ptr %62, align 8, !tbaa !11
  %882 = fmul double %881, 4.000000e+00
  store double %882, ptr %75, align 8, !tbaa !11
  br label %900

883:                                              ; preds = %875
  %884 = load double, ptr %62, align 8, !tbaa !11
  %885 = call double @sqrt(double noundef %884) #4
  store double %885, ptr %74, align 8, !tbaa !11
  %886 = load double, ptr %62, align 8, !tbaa !11
  %887 = call double @sqrt(double noundef %886) #4
  %888 = fmul double %887, 5.000000e-03
  store double %888, ptr %48, align 8, !tbaa !11
  %889 = load double, ptr %62, align 8, !tbaa !11
  %890 = fmul double %889, 4.000000e+00
  store double %890, ptr %49, align 8, !tbaa !11
  %891 = load double, ptr %48, align 8, !tbaa !11
  %892 = load double, ptr %49, align 8, !tbaa !11
  %893 = fcmp oge double %891, %892
  br i1 %893, label %894, label %896

894:                                              ; preds = %883
  %895 = load double, ptr %48, align 8, !tbaa !11
  br label %898

896:                                              ; preds = %883
  %897 = load double, ptr %49, align 8, !tbaa !11
  br label %898

898:                                              ; preds = %896, %894
  %899 = phi double [ %895, %894 ], [ %897, %896 ]
  store double %899, ptr %75, align 8, !tbaa !11
  br label %900

900:                                              ; preds = %898, %878
  %901 = load ptr, ptr %24, align 8, !tbaa !5
  %902 = load ptr, ptr %25, align 8, !tbaa !5
  %903 = load ptr, ptr %26, align 8, !tbaa !5
  %904 = getelementptr inbounds double, ptr %903, i64 1
  %905 = load ptr, ptr %27, align 8, !tbaa !5
  %906 = getelementptr inbounds double, ptr %905, i64 1
  %907 = load ptr, ptr %39, align 8, !tbaa !5
  %908 = load i64, ptr %72, align 8, !tbaa !9
  %909 = getelementptr inbounds double, ptr %907, i64 %908
  %910 = load ptr, ptr %41, align 8, !tbaa !5
  %911 = load i64, ptr %96, align 8, !tbaa !9
  %912 = getelementptr inbounds i64, ptr %910, i64 %911
  %913 = load ptr, ptr %32, align 8, !tbaa !5
  %914 = load ptr, ptr %33, align 8, !tbaa !5
  %915 = getelementptr inbounds double, ptr %914, i64 1
  %916 = load ptr, ptr %39, align 8, !tbaa !5
  %917 = load i64, ptr %91, align 8, !tbaa !9
  %918 = getelementptr inbounds double, ptr %916, i64 %917
  %919 = load ptr, ptr %39, align 8, !tbaa !5
  %920 = load i64, ptr %77, align 8, !tbaa !9
  %921 = getelementptr inbounds double, ptr %919, i64 %920
  %922 = load ptr, ptr %41, align 8, !tbaa !5
  %923 = load i64, ptr %86, align 8, !tbaa !9
  %924 = getelementptr inbounds i64, ptr %922, i64 %923
  %925 = load ptr, ptr %41, align 8, !tbaa !5
  %926 = load i64, ptr %79, align 8, !tbaa !9
  %927 = getelementptr inbounds i64, ptr %925, i64 %926
  %928 = load ptr, ptr %39, align 8, !tbaa !5
  %929 = load i64, ptr %93, align 8, !tbaa !9
  %930 = getelementptr inbounds double, ptr %928, i64 %929
  %931 = load ptr, ptr %39, align 8, !tbaa !5
  %932 = load i64, ptr %97, align 8, !tbaa !9
  %933 = getelementptr inbounds double, ptr %931, i64 %932
  %934 = load ptr, ptr %41, align 8, !tbaa !5
  %935 = load i64, ptr %92, align 8, !tbaa !9
  %936 = getelementptr inbounds i64, ptr %934, i64 %935
  %937 = call i32 @dlarre_(ptr noundef %901, ptr noundef %902, ptr noundef %58, ptr noundef %59, ptr noundef %60, ptr noundef %61, ptr noundef %904, ptr noundef %906, ptr noundef %909, ptr noundef %74, ptr noundef %75, ptr noundef %95, ptr noundef %102, ptr noundef %912, ptr noundef %913, ptr noundef %915, ptr noundef %918, ptr noundef %921, ptr noundef %924, ptr noundef %927, ptr noundef %930, ptr noundef %101, ptr noundef %933, ptr noundef %936, ptr noundef %78)
  %938 = load i64, ptr %78, align 8, !tbaa !9
  %939 = icmp ne i64 %938, 0
  br i1 %939, label %940, label %952

940:                                              ; preds = %900
  %941 = load i64, ptr %78, align 8, !tbaa !9
  %942 = icmp sge i64 %941, 0
  br i1 %942, label %943, label %945

943:                                              ; preds = %940
  %944 = load i64, ptr %78, align 8, !tbaa !9
  br label %948

945:                                              ; preds = %940
  %946 = load i64, ptr %78, align 8, !tbaa !9
  %947 = sub nsw i64 0, %946
  br label %948

948:                                              ; preds = %945, %943
  %949 = phi i64 [ %944, %943 ], [ %947, %945 ]
  %950 = add nsw i64 %949, 10
  %951 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 %950, ptr %951, align 8, !tbaa !9
  store i32 0, ptr %22, align 4
  store i32 1, ptr %106, align 4
  br label %1316

952:                                              ; preds = %900
  %953 = load i64, ptr %82, align 8, !tbaa !9
  %954 = icmp ne i64 %953, 0
  br i1 %954, label %955, label %1011

955:                                              ; preds = %952
  %956 = load ptr, ptr %25, align 8, !tbaa !5
  %957 = load ptr, ptr %26, align 8, !tbaa !5
  %958 = getelementptr inbounds double, ptr %957, i64 1
  %959 = load ptr, ptr %27, align 8, !tbaa !5
  %960 = getelementptr inbounds double, ptr %959, i64 1
  %961 = load ptr, ptr %41, align 8, !tbaa !5
  %962 = load i64, ptr %96, align 8, !tbaa !9
  %963 = getelementptr inbounds i64, ptr %961, i64 %962
  %964 = load ptr, ptr %32, align 8, !tbaa !5
  %965 = load ptr, ptr %32, align 8, !tbaa !5
  %966 = load ptr, ptr %33, align 8, !tbaa !5
  %967 = getelementptr inbounds double, ptr %966, i64 1
  %968 = load ptr, ptr %39, align 8, !tbaa !5
  %969 = load i64, ptr %91, align 8, !tbaa !9
  %970 = getelementptr inbounds double, ptr %968, i64 %969
  %971 = load ptr, ptr %39, align 8, !tbaa !5
  %972 = load i64, ptr %77, align 8, !tbaa !9
  %973 = getelementptr inbounds double, ptr %971, i64 %972
  %974 = load ptr, ptr %41, align 8, !tbaa !5
  %975 = load i64, ptr %86, align 8, !tbaa !9
  %976 = getelementptr inbounds i64, ptr %974, i64 %975
  %977 = load ptr, ptr %41, align 8, !tbaa !5
  %978 = load i64, ptr %79, align 8, !tbaa !9
  %979 = getelementptr inbounds i64, ptr %977, i64 %978
  %980 = load ptr, ptr %39, align 8, !tbaa !5
  %981 = load i64, ptr %93, align 8, !tbaa !9
  %982 = getelementptr inbounds double, ptr %980, i64 %981
  %983 = load ptr, ptr %34, align 8, !tbaa !5
  %984 = load i64, ptr %45, align 8, !tbaa !9
  %985 = getelementptr inbounds %struct.doublecomplex, ptr %983, i64 %984
  %986 = load ptr, ptr %35, align 8, !tbaa !5
  %987 = load ptr, ptr %37, align 8, !tbaa !5
  %988 = getelementptr inbounds i64, ptr %987, i64 1
  %989 = load ptr, ptr %39, align 8, !tbaa !5
  %990 = load i64, ptr %97, align 8, !tbaa !9
  %991 = getelementptr inbounds double, ptr %989, i64 %990
  %992 = load ptr, ptr %41, align 8, !tbaa !5
  %993 = load i64, ptr %92, align 8, !tbaa !9
  %994 = getelementptr inbounds i64, ptr %992, i64 %993
  %995 = call i32 @zlarrv_(ptr noundef %956, ptr noundef %58, ptr noundef %59, ptr noundef %958, ptr noundef %960, ptr noundef %101, ptr noundef %963, ptr noundef %964, ptr noundef @c__1, ptr noundef %965, ptr noundef @c_b18, ptr noundef %74, ptr noundef %75, ptr noundef %967, ptr noundef %970, ptr noundef %973, ptr noundef %976, ptr noundef %979, ptr noundef %982, ptr noundef %985, ptr noundef %986, ptr noundef %988, ptr noundef %991, ptr noundef %994, ptr noundef %78)
  %996 = load i64, ptr %78, align 8, !tbaa !9
  %997 = icmp ne i64 %996, 0
  br i1 %997, label %998, label %1010

998:                                              ; preds = %955
  %999 = load i64, ptr %78, align 8, !tbaa !9
  %1000 = icmp sge i64 %999, 0
  br i1 %1000, label %1001, label %1003

1001:                                             ; preds = %998
  %1002 = load i64, ptr %78, align 8, !tbaa !9
  br label %1006

1003:                                             ; preds = %998
  %1004 = load i64, ptr %78, align 8, !tbaa !9
  %1005 = sub nsw i64 0, %1004
  br label %1006

1006:                                             ; preds = %1003, %1001
  %1007 = phi i64 [ %1002, %1001 ], [ %1005, %1003 ]
  %1008 = add nsw i64 %1007, 20
  %1009 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 %1008, ptr %1009, align 8, !tbaa !9
  store i32 0, ptr %22, align 4
  store i32 1, ptr %106, align 4
  br label %1316

1010:                                             ; preds = %955
  br label %1045

1011:                                             ; preds = %952
  %1012 = load ptr, ptr %32, align 8, !tbaa !5
  %1013 = load i64, ptr %1012, align 8, !tbaa !9
  store i64 %1013, ptr %46, align 8, !tbaa !9
  store i64 1, ptr %51, align 8, !tbaa !9
  br label %1014

1014:                                             ; preds = %1041, %1011
  %1015 = load i64, ptr %51, align 8, !tbaa !9
  %1016 = load i64, ptr %46, align 8, !tbaa !9
  %1017 = icmp sle i64 %1015, %1016
  br i1 %1017, label %1018, label %1044

1018:                                             ; preds = %1014
  %1019 = load ptr, ptr %41, align 8, !tbaa !5
  %1020 = load i64, ptr %86, align 8, !tbaa !9
  %1021 = load i64, ptr %51, align 8, !tbaa !9
  %1022 = add nsw i64 %1020, %1021
  %1023 = sub nsw i64 %1022, 1
  %1024 = getelementptr inbounds i64, ptr %1019, i64 %1023
  %1025 = load i64, ptr %1024, align 8, !tbaa !9
  store i64 %1025, ptr %70, align 8, !tbaa !9
  %1026 = load ptr, ptr %27, align 8, !tbaa !5
  %1027 = load ptr, ptr %41, align 8, !tbaa !5
  %1028 = load i64, ptr %96, align 8, !tbaa !9
  %1029 = load i64, ptr %70, align 8, !tbaa !9
  %1030 = add nsw i64 %1028, %1029
  %1031 = sub nsw i64 %1030, 1
  %1032 = getelementptr inbounds i64, ptr %1027, i64 %1031
  %1033 = load i64, ptr %1032, align 8, !tbaa !9
  %1034 = getelementptr inbounds double, ptr %1026, i64 %1033
  %1035 = load double, ptr %1034, align 8, !tbaa !11
  %1036 = load ptr, ptr %33, align 8, !tbaa !5
  %1037 = load i64, ptr %51, align 8, !tbaa !9
  %1038 = getelementptr inbounds double, ptr %1036, i64 %1037
  %1039 = load double, ptr %1038, align 8, !tbaa !11
  %1040 = fadd double %1039, %1035
  store double %1040, ptr %1038, align 8, !tbaa !11
  br label %1041

1041:                                             ; preds = %1018
  %1042 = load i64, ptr %51, align 8, !tbaa !9
  %1043 = add nsw i64 %1042, 1
  store i64 %1043, ptr %51, align 8, !tbaa !9
  br label %1014, !llvm.loop !18

1044:                                             ; preds = %1014
  br label %1045

1045:                                             ; preds = %1044, %1010
  %1046 = load ptr, ptr %38, align 8, !tbaa !5
  %1047 = load i64, ptr %1046, align 8, !tbaa !9
  %1048 = icmp ne i64 %1047, 0
  br i1 %1048, label %1049, label %1163

1049:                                             ; preds = %1045
  store i64 1, ptr %84, align 8, !tbaa !9
  store i64 1, ptr %88, align 8, !tbaa !9
  %1050 = load ptr, ptr %41, align 8, !tbaa !5
  %1051 = load i64, ptr %86, align 8, !tbaa !9
  %1052 = load ptr, ptr %32, align 8, !tbaa !5
  %1053 = load i64, ptr %1052, align 8, !tbaa !9
  %1054 = add nsw i64 %1051, %1053
  %1055 = sub nsw i64 %1054, 1
  %1056 = getelementptr inbounds i64, ptr %1050, i64 %1055
  %1057 = load i64, ptr %1056, align 8, !tbaa !9
  store i64 %1057, ptr %46, align 8, !tbaa !9
  store i64 1, ptr %66, align 8, !tbaa !9
  br label %1058

1058:                                             ; preds = %1159, %1049
  %1059 = load i64, ptr %66, align 8, !tbaa !9
  %1060 = load i64, ptr %46, align 8, !tbaa !9
  %1061 = icmp sle i64 %1059, %1060
  br i1 %1061, label %1062, label %1162

1062:                                             ; preds = %1058
  %1063 = load ptr, ptr %41, align 8, !tbaa !5
  %1064 = load i64, ptr %96, align 8, !tbaa !9
  %1065 = load i64, ptr %66, align 8, !tbaa !9
  %1066 = add nsw i64 %1064, %1065
  %1067 = sub nsw i64 %1066, 1
  %1068 = getelementptr inbounds i64, ptr %1063, i64 %1067
  %1069 = load i64, ptr %1068, align 8, !tbaa !9
  store i64 %1069, ptr %65, align 8, !tbaa !9
  %1070 = load i64, ptr %65, align 8, !tbaa !9
  %1071 = load i64, ptr %84, align 8, !tbaa !9
  %1072 = sub nsw i64 %1070, %1071
  %1073 = add nsw i64 %1072, 1
  store i64 %1073, ptr %56, align 8, !tbaa !9
  %1074 = load i64, ptr %88, align 8, !tbaa !9
  %1075 = sub nsw i64 %1074, 1
  store i64 %1075, ptr %67, align 8, !tbaa !9
  br label %1076

1076:                                             ; preds = %1090, %1062
  %1077 = load i64, ptr %67, align 8, !tbaa !9
  %1078 = load ptr, ptr %32, align 8, !tbaa !5
  %1079 = load i64, ptr %1078, align 8, !tbaa !9
  %1080 = icmp slt i64 %1077, %1079
  br i1 %1080, label %1081, label %1094

1081:                                             ; preds = %1076
  %1082 = load ptr, ptr %41, align 8, !tbaa !5
  %1083 = load i64, ptr %86, align 8, !tbaa !9
  %1084 = load i64, ptr %67, align 8, !tbaa !9
  %1085 = add nsw i64 %1083, %1084
  %1086 = getelementptr inbounds i64, ptr %1082, i64 %1085
  %1087 = load i64, ptr %1086, align 8, !tbaa !9
  %1088 = load i64, ptr %66, align 8, !tbaa !9
  %1089 = icmp eq i64 %1087, %1088
  br i1 %1089, label %1090, label %1093

1090:                                             ; preds = %1081
  %1091 = load i64, ptr %67, align 8, !tbaa !9
  %1092 = add nsw i64 %1091, 1
  store i64 %1092, ptr %67, align 8, !tbaa !9
  br label %1076

1093:                                             ; preds = %1081
  br label %1094

1094:                                             ; preds = %1093, %1076
  %1095 = load i64, ptr %67, align 8, !tbaa !9
  %1096 = load i64, ptr %88, align 8, !tbaa !9
  %1097 = icmp slt i64 %1095, %1096
  br i1 %1097, label %1098, label %1101

1098:                                             ; preds = %1094
  %1099 = load i64, ptr %65, align 8, !tbaa !9
  %1100 = add nsw i64 %1099, 1
  store i64 %1100, ptr %84, align 8, !tbaa !9
  br label %1158

1101:                                             ; preds = %1094
  %1102 = load ptr, ptr %41, align 8, !tbaa !5
  %1103 = load i64, ptr %79, align 8, !tbaa !9
  %1104 = load i64, ptr %88, align 8, !tbaa !9
  %1105 = add nsw i64 %1103, %1104
  %1106 = sub nsw i64 %1105, 1
  %1107 = getelementptr inbounds i64, ptr %1102, i64 %1106
  %1108 = load i64, ptr %1107, align 8, !tbaa !9
  %1109 = sub nsw i64 %1108, 1
  store i64 %1109, ptr %94, align 8, !tbaa !9
  %1110 = load ptr, ptr %41, align 8, !tbaa !5
  %1111 = load i64, ptr %79, align 8, !tbaa !9
  %1112 = load i64, ptr %88, align 8, !tbaa !9
  %1113 = add nsw i64 %1111, %1112
  %1114 = sub nsw i64 %1113, 1
  %1115 = getelementptr inbounds i64, ptr %1110, i64 %1114
  %1116 = load i64, ptr %1115, align 8, !tbaa !9
  store i64 %1116, ptr %98, align 8, !tbaa !9
  %1117 = load ptr, ptr %41, align 8, !tbaa !5
  %1118 = load i64, ptr %79, align 8, !tbaa !9
  %1119 = load i64, ptr %67, align 8, !tbaa !9
  %1120 = add nsw i64 %1118, %1119
  %1121 = sub nsw i64 %1120, 1
  %1122 = getelementptr inbounds i64, ptr %1117, i64 %1121
  %1123 = load i64, ptr %1122, align 8, !tbaa !9
  store i64 %1123, ptr %80, align 8, !tbaa !9
  %1124 = load double, ptr %62, align 8, !tbaa !11
  %1125 = fmul double %1124, 4.000000e+00
  store double %1125, ptr %75, align 8, !tbaa !11
  %1126 = load ptr, ptr %39, align 8, !tbaa !5
  %1127 = load i64, ptr %64, align 8, !tbaa !9
  %1128 = load i64, ptr %84, align 8, !tbaa !9
  %1129 = add nsw i64 %1127, %1128
  %1130 = sub nsw i64 %1129, 1
  %1131 = getelementptr inbounds double, ptr %1126, i64 %1130
  %1132 = load ptr, ptr %39, align 8, !tbaa !5
  %1133 = load i64, ptr %72, align 8, !tbaa !9
  %1134 = load i64, ptr %84, align 8, !tbaa !9
  %1135 = add nsw i64 %1133, %1134
  %1136 = sub nsw i64 %1135, 1
  %1137 = getelementptr inbounds double, ptr %1132, i64 %1136
  %1138 = load ptr, ptr %33, align 8, !tbaa !5
  %1139 = load i64, ptr %88, align 8, !tbaa !9
  %1140 = getelementptr inbounds double, ptr %1138, i64 %1139
  %1141 = load ptr, ptr %39, align 8, !tbaa !5
  %1142 = load i64, ptr %91, align 8, !tbaa !9
  %1143 = load i64, ptr %88, align 8, !tbaa !9
  %1144 = add nsw i64 %1142, %1143
  %1145 = sub nsw i64 %1144, 1
  %1146 = getelementptr inbounds double, ptr %1141, i64 %1145
  %1147 = load ptr, ptr %39, align 8, !tbaa !5
  %1148 = load i64, ptr %97, align 8, !tbaa !9
  %1149 = getelementptr inbounds double, ptr %1147, i64 %1148
  %1150 = load ptr, ptr %41, align 8, !tbaa !5
  %1151 = load i64, ptr %92, align 8, !tbaa !9
  %1152 = getelementptr inbounds i64, ptr %1150, i64 %1151
  %1153 = call i32 @dlarrj_(ptr noundef %56, ptr noundef %1131, ptr noundef %1137, ptr noundef %98, ptr noundef %80, ptr noundef %75, ptr noundef %94, ptr noundef %1140, ptr noundef %1146, ptr noundef %1149, ptr noundef %1152, ptr noundef %101, ptr noundef %71, ptr noundef %78)
  %1154 = load i64, ptr %65, align 8, !tbaa !9
  %1155 = add nsw i64 %1154, 1
  store i64 %1155, ptr %84, align 8, !tbaa !9
  %1156 = load i64, ptr %67, align 8, !tbaa !9
  %1157 = add nsw i64 %1156, 1
  store i64 %1157, ptr %88, align 8, !tbaa !9
  br label %1158

1158:                                             ; preds = %1101, %1098
  br label %1159

1159:                                             ; preds = %1158
  %1160 = load i64, ptr %66, align 8, !tbaa !9
  %1161 = add nsw i64 %1160, 1
  store i64 %1161, ptr %66, align 8, !tbaa !9
  br label %1058, !llvm.loop !19

1162:                                             ; preds = %1058
  br label %1163

1163:                                             ; preds = %1162, %1045
  %1164 = load double, ptr %76, align 8, !tbaa !11
  %1165 = fcmp une double %1164, 1.000000e+00
  br i1 %1165, label %1166, label %1173

1166:                                             ; preds = %1163
  %1167 = load double, ptr %76, align 8, !tbaa !11
  %1168 = fdiv double 1.000000e+00, %1167
  store double %1168, ptr %48, align 8, !tbaa !11
  %1169 = load ptr, ptr %32, align 8, !tbaa !5
  %1170 = load ptr, ptr %33, align 8, !tbaa !5
  %1171 = getelementptr inbounds double, ptr %1170, i64 1
  %1172 = call i32 @f2c_dscal(ptr noundef %1169, ptr noundef %48, ptr noundef %1171, ptr noundef @c__1)
  br label %1173

1173:                                             ; preds = %1166, %1163
  %1174 = load i64, ptr %102, align 8, !tbaa !9
  %1175 = icmp sgt i64 %1174, 1
  br i1 %1175, label %1176, label %1308

1176:                                             ; preds = %1173
  %1177 = load i64, ptr %82, align 8, !tbaa !9
  %1178 = icmp ne i64 %1177, 0
  br i1 %1178, label %1189, label %1179

1179:                                             ; preds = %1176
  %1180 = load ptr, ptr %32, align 8, !tbaa !5
  %1181 = load ptr, ptr %33, align 8, !tbaa !5
  %1182 = getelementptr inbounds double, ptr %1181, i64 1
  %1183 = call i32 @dlasrt_(ptr noundef @.str.2, ptr noundef %1180, ptr noundef %1182, ptr noundef %78)
  %1184 = load i64, ptr %78, align 8, !tbaa !9
  %1185 = icmp ne i64 %1184, 0
  br i1 %1185, label %1186, label %1188

1186:                                             ; preds = %1179
  %1187 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 3, ptr %1187, align 8, !tbaa !9
  store i32 0, ptr %22, align 4
  store i32 1, ptr %106, align 4
  br label %1316

1188:                                             ; preds = %1179
  br label %1307

1189:                                             ; preds = %1176
  %1190 = load ptr, ptr %32, align 8, !tbaa !5
  %1191 = load i64, ptr %1190, align 8, !tbaa !9
  %1192 = sub nsw i64 %1191, 1
  store i64 %1192, ptr %46, align 8, !tbaa !9
  store i64 1, ptr %51, align 8, !tbaa !9
  br label %1193

1193:                                             ; preds = %1303, %1189
  %1194 = load i64, ptr %51, align 8, !tbaa !9
  %1195 = load i64, ptr %46, align 8, !tbaa !9
  %1196 = icmp sle i64 %1194, %1195
  br i1 %1196, label %1197, label %1306

1197:                                             ; preds = %1193
  store i64 0, ptr %50, align 8, !tbaa !9
  %1198 = load ptr, ptr %33, align 8, !tbaa !5
  %1199 = load i64, ptr %51, align 8, !tbaa !9
  %1200 = getelementptr inbounds double, ptr %1198, i64 %1199
  %1201 = load double, ptr %1200, align 8, !tbaa !11
  store double %1201, ptr %63, align 8, !tbaa !11
  %1202 = load ptr, ptr %32, align 8, !tbaa !5
  %1203 = load i64, ptr %1202, align 8, !tbaa !9
  store i64 %1203, ptr %47, align 8, !tbaa !9
  %1204 = load i64, ptr %51, align 8, !tbaa !9
  %1205 = add nsw i64 %1204, 1
  store i64 %1205, ptr %54, align 8, !tbaa !9
  br label %1206

1206:                                             ; preds = %1224, %1197
  %1207 = load i64, ptr %54, align 8, !tbaa !9
  %1208 = load i64, ptr %47, align 8, !tbaa !9
  %1209 = icmp sle i64 %1207, %1208
  br i1 %1209, label %1210, label %1227

1210:                                             ; preds = %1206
  %1211 = load ptr, ptr %33, align 8, !tbaa !5
  %1212 = load i64, ptr %54, align 8, !tbaa !9
  %1213 = getelementptr inbounds double, ptr %1211, i64 %1212
  %1214 = load double, ptr %1213, align 8, !tbaa !11
  %1215 = load double, ptr %63, align 8, !tbaa !11
  %1216 = fcmp olt double %1214, %1215
  br i1 %1216, label %1217, label %1223

1217:                                             ; preds = %1210
  %1218 = load i64, ptr %54, align 8, !tbaa !9
  store i64 %1218, ptr %50, align 8, !tbaa !9
  %1219 = load ptr, ptr %33, align 8, !tbaa !5
  %1220 = load i64, ptr %54, align 8, !tbaa !9
  %1221 = getelementptr inbounds double, ptr %1219, i64 %1220
  %1222 = load double, ptr %1221, align 8, !tbaa !11
  store double %1222, ptr %63, align 8, !tbaa !11
  br label %1223

1223:                                             ; preds = %1217, %1210
  br label %1224

1224:                                             ; preds = %1223
  %1225 = load i64, ptr %54, align 8, !tbaa !9
  %1226 = add nsw i64 %1225, 1
  store i64 %1226, ptr %54, align 8, !tbaa !9
  br label %1206, !llvm.loop !20

1227:                                             ; preds = %1206
  %1228 = load i64, ptr %50, align 8, !tbaa !9
  %1229 = icmp ne i64 %1228, 0
  br i1 %1229, label %1230, label %1302

1230:                                             ; preds = %1227
  %1231 = load ptr, ptr %33, align 8, !tbaa !5
  %1232 = load i64, ptr %51, align 8, !tbaa !9
  %1233 = getelementptr inbounds double, ptr %1231, i64 %1232
  %1234 = load double, ptr %1233, align 8, !tbaa !11
  %1235 = load ptr, ptr %33, align 8, !tbaa !5
  %1236 = load i64, ptr %50, align 8, !tbaa !9
  %1237 = getelementptr inbounds double, ptr %1235, i64 %1236
  store double %1234, ptr %1237, align 8, !tbaa !11
  %1238 = load double, ptr %63, align 8, !tbaa !11
  %1239 = load ptr, ptr %33, align 8, !tbaa !5
  %1240 = load i64, ptr %51, align 8, !tbaa !9
  %1241 = getelementptr inbounds double, ptr %1239, i64 %1240
  store double %1238, ptr %1241, align 8, !tbaa !11
  %1242 = load i64, ptr %82, align 8, !tbaa !9
  %1243 = icmp ne i64 %1242, 0
  br i1 %1243, label %1244, label %1301

1244:                                             ; preds = %1230
  %1245 = load ptr, ptr %25, align 8, !tbaa !5
  %1246 = load ptr, ptr %34, align 8, !tbaa !5
  %1247 = load i64, ptr %50, align 8, !tbaa !9
  %1248 = load i64, ptr %44, align 8, !tbaa !9
  %1249 = mul nsw i64 %1247, %1248
  %1250 = add nsw i64 %1249, 1
  %1251 = getelementptr inbounds %struct.doublecomplex, ptr %1246, i64 %1250
  %1252 = load ptr, ptr %34, align 8, !tbaa !5
  %1253 = load i64, ptr %51, align 8, !tbaa !9
  %1254 = load i64, ptr %44, align 8, !tbaa !9
  %1255 = mul nsw i64 %1253, %1254
  %1256 = add nsw i64 %1255, 1
  %1257 = getelementptr inbounds %struct.doublecomplex, ptr %1252, i64 %1256
  %1258 = call i32 @f2c_zswap(ptr noundef %1245, ptr noundef %1251, ptr noundef @c__1, ptr noundef %1257, ptr noundef @c__1)
  %1259 = load ptr, ptr %37, align 8, !tbaa !5
  %1260 = load i64, ptr %50, align 8, !tbaa !9
  %1261 = shl i64 %1260, 1
  %1262 = sub nsw i64 %1261, 1
  %1263 = getelementptr inbounds i64, ptr %1259, i64 %1262
  %1264 = load i64, ptr %1263, align 8, !tbaa !9
  store i64 %1264, ptr %70, align 8, !tbaa !9
  %1265 = load ptr, ptr %37, align 8, !tbaa !5
  %1266 = load i64, ptr %51, align 8, !tbaa !9
  %1267 = shl i64 %1266, 1
  %1268 = sub nsw i64 %1267, 1
  %1269 = getelementptr inbounds i64, ptr %1265, i64 %1268
  %1270 = load i64, ptr %1269, align 8, !tbaa !9
  %1271 = load ptr, ptr %37, align 8, !tbaa !5
  %1272 = load i64, ptr %50, align 8, !tbaa !9
  %1273 = shl i64 %1272, 1
  %1274 = sub nsw i64 %1273, 1
  %1275 = getelementptr inbounds i64, ptr %1271, i64 %1274
  store i64 %1270, ptr %1275, align 8, !tbaa !9
  %1276 = load i64, ptr %70, align 8, !tbaa !9
  %1277 = load ptr, ptr %37, align 8, !tbaa !5
  %1278 = load i64, ptr %51, align 8, !tbaa !9
  %1279 = shl i64 %1278, 1
  %1280 = sub nsw i64 %1279, 1
  %1281 = getelementptr inbounds i64, ptr %1277, i64 %1280
  store i64 %1276, ptr %1281, align 8, !tbaa !9
  %1282 = load ptr, ptr %37, align 8, !tbaa !5
  %1283 = load i64, ptr %50, align 8, !tbaa !9
  %1284 = mul nsw i64 %1283, 2
  %1285 = getelementptr inbounds i64, ptr %1282, i64 %1284
  %1286 = load i64, ptr %1285, align 8, !tbaa !9
  store i64 %1286, ptr %70, align 8, !tbaa !9
  %1287 = load ptr, ptr %37, align 8, !tbaa !5
  %1288 = load i64, ptr %51, align 8, !tbaa !9
  %1289 = mul nsw i64 %1288, 2
  %1290 = getelementptr inbounds i64, ptr %1287, i64 %1289
  %1291 = load i64, ptr %1290, align 8, !tbaa !9
  %1292 = load ptr, ptr %37, align 8, !tbaa !5
  %1293 = load i64, ptr %50, align 8, !tbaa !9
  %1294 = mul nsw i64 %1293, 2
  %1295 = getelementptr inbounds i64, ptr %1292, i64 %1294
  store i64 %1291, ptr %1295, align 8, !tbaa !9
  %1296 = load i64, ptr %70, align 8, !tbaa !9
  %1297 = load ptr, ptr %37, align 8, !tbaa !5
  %1298 = load i64, ptr %51, align 8, !tbaa !9
  %1299 = mul nsw i64 %1298, 2
  %1300 = getelementptr inbounds i64, ptr %1297, i64 %1299
  store i64 %1296, ptr %1300, align 8, !tbaa !9
  br label %1301

1301:                                             ; preds = %1244, %1230
  br label %1302

1302:                                             ; preds = %1301, %1227
  br label %1303

1303:                                             ; preds = %1302
  %1304 = load i64, ptr %51, align 8, !tbaa !9
  %1305 = add nsw i64 %1304, 1
  store i64 %1305, ptr %51, align 8, !tbaa !9
  br label %1193, !llvm.loop !21

1306:                                             ; preds = %1193
  br label %1307

1307:                                             ; preds = %1306, %1188
  br label %1308

1308:                                             ; preds = %1307, %1173
  %1309 = load i64, ptr %81, align 8, !tbaa !9
  %1310 = sitofp i64 %1309 to double
  %1311 = load ptr, ptr %39, align 8, !tbaa !5
  %1312 = getelementptr inbounds double, ptr %1311, i64 1
  store double %1310, ptr %1312, align 8, !tbaa !11
  %1313 = load i64, ptr %99, align 8, !tbaa !9
  %1314 = load ptr, ptr %41, align 8, !tbaa !5
  %1315 = getelementptr inbounds i64, ptr %1314, i64 1
  store i64 %1313, ptr %1315, align 8, !tbaa !9
  store i32 0, ptr %22, align 4
  store i32 1, ptr %106, align 4
  br label %1316

1316:                                             ; preds = %1308, %1186, %1006, %948, %732, %481, %422, %415, %404
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  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
  %1317 = load i32, ptr %22, align 4
  ret i32 %1317
}

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

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

declare double @dlanst_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

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

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

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

declare i32 @f2c_zswap(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 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = !{!14, !12, i64 0}
!14 = !{!"", !12, i64 0, !12, i64 8}
!15 = !{!14, !12, i64 8}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}
!18 = distinct !{!18, !17}
!19 = distinct !{!19, !17}
!20 = distinct !{!20, !17}
!21 = distinct !{!21, !17}


; 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 [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8
@c_b18 = external hidden global double, align 8

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @zstemr_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr nocapture noundef readonly %7, ptr nocapture noundef readonly %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr nocapture noundef readonly %13, ptr noundef %14, ptr nocapture noundef %15, ptr noundef %16, ptr nocapture noundef readonly %17, ptr noundef %18, ptr nocapture noundef readonly %19, ptr noundef %20) local_unnamed_addr #0 {
  %22 = ptrtoint ptr %4 to i64
  %23 = ptrtoint ptr %16 to i64
  %24 = alloca i64, align 8
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  %28 = alloca double, align 8
  %29 = alloca i64, align 8
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca double, align 8
  %33 = alloca i64, align 8
  %34 = alloca i64, align 8
  %35 = alloca i64, align 8
  %36 = alloca double, align 8
  %37 = alloca i64, align 8
  %38 = alloca double, align 8
  %39 = alloca double, align 8
  %40 = alloca double, align 8
  %41 = alloca i64, align 8
  %42 = alloca i64, align 8
  %43 = alloca double, align 8
  %44 = alloca i64, align 8
  %45 = alloca double, align 8
  %46 = alloca i64, align 8
  %47 = alloca i64, align 8
  %48 = alloca double, align 8
  %49 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %44) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %46) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %47) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %48) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %49) #5
  %50 = getelementptr inbounds i8, ptr %4, i64 -8
  %51 = getelementptr inbounds i8, ptr %10, i64 -8
  %52 = load i64, ptr %12, align 8, !tbaa !5
  %53 = xor i64 %52, -1
  %54 = getelementptr inbounds %struct.doublecomplex, ptr %11, i64 %53
  %55 = getelementptr inbounds i8, ptr %14, i64 -8
  %56 = getelementptr inbounds i8, ptr %16, i64 -8
  %57 = getelementptr inbounds i8, ptr %18, i64 -8
  %58 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #5
  %59 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #5
  %60 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #5
  %61 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.2) #5
  %62 = load i64, ptr %17, align 8, !tbaa !5
  %63 = icmp eq i64 %62, -1
  br i1 %63, label %67, label %64

64:                                               ; preds = %21
  %65 = load i64, ptr %19, align 8, !tbaa !5
  %66 = icmp eq i64 %65, -1
  br label %67

67:                                               ; preds = %64, %21
  %68 = phi i1 [ true, %21 ], [ %66, %64 ]
  %69 = load i64, ptr %13, align 8, !tbaa !5
  %70 = icmp eq i64 %69, -1
  %71 = icmp ne i64 %58, 0
  %72 = load i64, ptr %2, align 8, !tbaa !5
  br i1 %71, label %73, label %76

73:                                               ; preds = %67
  %74 = mul nsw i64 %72, 18
  %75 = mul nsw i64 %72, 10
  br label %79

76:                                               ; preds = %67
  %77 = mul nsw i64 %72, 12
  %78 = shl i64 %72, 3
  br label %79

79:                                               ; preds = %76, %73
  %.0444 = phi i64 [ %74, %73 ], [ %77, %76 ]
  %.0432 = phi i64 [ %75, %73 ], [ %78, %76 ]
  store double 0.000000e+00, ptr %31, align 8, !tbaa !9
  store double 0.000000e+00, ptr %32, align 8, !tbaa !9
  store i64 0, ptr %33, align 8, !tbaa !5
  store i64 0, ptr %34, align 8, !tbaa !5
  %80 = icmp ne i64 %60, 0
  br i1 %80, label %81, label %84

81:                                               ; preds = %79
  %82 = load double, ptr %5, align 8, !tbaa !9
  store double %82, ptr %31, align 8, !tbaa !9
  %83 = load double, ptr %6, align 8, !tbaa !9
  store double %83, ptr %32, align 8, !tbaa !9
  br label %88

84:                                               ; preds = %79
  %.not = icmp eq i64 %61, 0
  br i1 %.not, label %88, label %85

85:                                               ; preds = %84
  %86 = load i64, ptr %7, align 8, !tbaa !5
  store i64 %86, ptr %33, align 8, !tbaa !5
  %87 = load i64, ptr %8, align 8, !tbaa !5
  store i64 %87, ptr %34, align 8, !tbaa !5
  br label %88

88:                                               ; preds = %84, %85, %81
  %89 = phi i64 [ 0, %84 ], [ %87, %85 ], [ 0, %81 ]
  %90 = phi i64 [ 0, %84 ], [ %86, %85 ], [ 0, %81 ]
  %91 = phi double [ 0.000000e+00, %84 ], [ 0.000000e+00, %85 ], [ %82, %81 ]
  %92 = phi double [ 0.000000e+00, %84 ], [ 0.000000e+00, %85 ], [ %83, %81 ]
  store i64 0, ptr %20, align 8, !tbaa !5
  br i1 %71, label %95, label %93

93:                                               ; preds = %88
  %94 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.3) #5
  %.not463 = icmp eq i64 %94, 0
  br i1 %.not463, label %.sink.split, label %95

95:                                               ; preds = %93, %88
  %96 = or i64 %60, %59
  %or.cond = icmp ne i64 %96, 0
  %97 = icmp ne i64 %61, 0
  %or.cond3 = select i1 %or.cond, i1 true, i1 %97
  br i1 %or.cond3, label %98, label %.sink.split

98:                                               ; preds = %95
  %99 = load i64, ptr %2, align 8, !tbaa !5
  %100 = icmp slt i64 %99, 0
  br i1 %100, label %.sink.split, label %101

101:                                              ; preds = %98
  %.not464 = icmp ne i64 %99, 0
  %or.cond496.not = and i1 %80, %.not464
  %102 = fcmp ole double %92, %91
  %or.cond579.not = select i1 %or.cond496.not, i1 %102, i1 false
  br i1 %or.cond579.not, label %.sink.split, label %103

103:                                              ; preds = %101
  br i1 %97, label %104, label %.critedge

104:                                              ; preds = %103
  %105 = icmp slt i64 %90, 1
  %106 = icmp ugt i64 %90, %99
  %or.cond515 = or i1 %105, %106
  br i1 %or.cond515, label %.sink.split, label %107

107:                                              ; preds = %104
  %108 = icmp slt i64 %89, %90
  %109 = icmp ugt i64 %89, %99
  %or.cond516 = or i1 %108, %109
  br i1 %or.cond516, label %.sink.split, label %.critedge

.critedge:                                        ; preds = %107, %103
  %110 = load i64, ptr %12, align 8, !tbaa !5
  %111 = icmp slt i64 %110, 1
  %112 = icmp ult i64 %110, %99
  %or.cond517 = and i1 %71, %112
  %or.cond518 = or i1 %111, %or.cond517
  br i1 %or.cond518, label %.sink.split, label %113

113:                                              ; preds = %.critedge
  %114 = load i64, ptr %17, align 8, !tbaa !5
  %115 = icmp sge i64 %114, %.0444
  %or.cond5 = select i1 %115, i1 true, i1 %68
  br i1 %or.cond5, label %116, label %.sink.split

116:                                              ; preds = %113
  %117 = load i64, ptr %19, align 8, !tbaa !5
  %118 = icmp sge i64 %117, %.0432
  %or.cond7 = select i1 %118, i1 true, i1 %68
  br i1 %or.cond7, label %119, label %.sink.split

.sink.split:                                      ; preds = %116, %113, %.critedge, %107, %104, %101, %98, %95, %93
  %.sink = phi i64 [ -1, %93 ], [ -2, %95 ], [ -3, %98 ], [ -7, %101 ], [ -8, %104 ], [ -9, %107 ], [ -13, %.critedge ], [ -17, %113 ], [ -19, %116 ]
  store i64 %.sink, ptr %20, align 8, !tbaa !5
  br label %119

119:                                              ; preds = %.sink.split, %116
  %120 = tail call double @dlamch_(ptr noundef nonnull @.str.4) #5
  store double %120, ptr %43, align 8, !tbaa !9
  %121 = tail call double @dlamch_(ptr noundef nonnull @.str.5) #5
  %122 = fdiv double %120, %121
  %123 = fdiv double 1.000000e+00, %122
  %124 = tail call double @sqrt(double noundef %122) #5
  %125 = tail call double @sqrt(double noundef %123) #5
  %126 = tail call double @sqrt(double noundef %120) #5
  %127 = tail call double @sqrt(double noundef %126) #5
  %128 = fdiv double 1.000000e+00, %127
  %129 = fcmp ole double %125, %128
  %130 = select i1 %129, double %125, double %128
  %131 = load i64, ptr %20, align 8, !tbaa !5
  %132 = icmp eq i64 %131, 0
  br i1 %132, label %133, label %.thread505

133:                                              ; preds = %119
  %134 = sitofp i64 %.0444 to double
  store double %134, ptr %16, align 8, !tbaa !9
  store i64 %.0432, ptr %18, align 8, !tbaa !5
  %135 = icmp ne i64 %59, 0
  %or.cond9 = select i1 %71, i1 %135, i1 false
  br i1 %or.cond9, label %136, label %138

136:                                              ; preds = %133
  %137 = load i64, ptr %2, align 8, !tbaa !5
  store i64 %137, ptr %47, align 8, !tbaa !5
  br label %147

138:                                              ; preds = %133
  %or.cond11 = and i1 %71, %80
  br i1 %or.cond11, label %139, label %141

139:                                              ; preds = %138
  %140 = call i32 @dlarrc_(ptr noundef nonnull @.str.6, ptr noundef nonnull %2, ptr noundef %5, ptr noundef %6, ptr noundef %3, ptr noundef %4, ptr noundef nonnull %43, ptr noundef nonnull %47, ptr noundef nonnull %35, ptr noundef nonnull %37, ptr noundef nonnull %20) #5
  br label %147

141:                                              ; preds = %138
  %142 = icmp ne i64 %61, 0
  %or.cond13 = select i1 %71, i1 %142, i1 false
  br i1 %or.cond13, label %143, label %146

143:                                              ; preds = %141
  %144 = add i64 %89, 1
  %145 = sub i64 %144, %90
  store i64 %145, ptr %47, align 8, !tbaa !5
  br label %147

146:                                              ; preds = %141
  store i64 0, ptr %47, align 8, !tbaa !5
  br label %147

147:                                              ; preds = %139, %146, %143, %136
  br i1 %70, label %148, label %154

148:                                              ; preds = %147
  %149 = load i64, ptr %20, align 8, !tbaa !5
  %150 = icmp eq i64 %149, 0
  br i1 %150, label %.thread571, label %.thread505

.thread571:                                       ; preds = %148
  %151 = load i64, ptr %47, align 8, !tbaa !5
  %152 = sitofp i64 %151 to double
  store double %152, ptr %11, align 8, !tbaa !11
  %153 = getelementptr inbounds i8, ptr %11, i64 8
  store double 0.000000e+00, ptr %153, align 8, !tbaa !13
  br label %487

154:                                              ; preds = %147
  %155 = load i64, ptr %13, align 8, !tbaa !5
  %156 = load i64, ptr %47, align 8, !tbaa !5
  %.not568 = icmp slt i64 %155, %156
  br i1 %.not568, label %157, label %158

157:                                              ; preds = %154
  store i64 -14, ptr %20, align 8, !tbaa !5
  br label %.thread505

158:                                              ; preds = %154
  %.pr.pre = load i64, ptr %20, align 8, !tbaa !5
  %.not465 = icmp eq i64 %.pr.pre, 0
  br i1 %.not465, label %162, label %.thread505

.thread505:                                       ; preds = %148, %119, %157, %158
  %159 = phi i64 [ %.pr.pre, %158 ], [ %131, %119 ], [ -14, %157 ], [ %149, %148 ]
  %160 = sub nsw i64 0, %159
  store i64 %160, ptr %24, align 8, !tbaa !5
  %161 = call i32 @xerbla_(ptr noundef nonnull @.str.7, ptr noundef nonnull %24) #5
  br label %487

162:                                              ; preds = %158
  %or.cond17 = select i1 %68, i1 true, i1 %70
  br i1 %or.cond17, label %487, label %163

163:                                              ; preds = %162
  store i64 0, ptr %9, align 8, !tbaa !5
  %164 = load i64, ptr %2, align 8, !tbaa !5
  switch i64 %164, label %272 [
    i64 0, label %487
    i64 1, label %165
    i64 2, label %180
  ]

165:                                              ; preds = %163
  %166 = icmp ne i64 %61, 0
  %or.cond19 = select i1 %135, i1 true, i1 %166
  br i1 %or.cond19, label %167, label %169

167:                                              ; preds = %165
  store i64 1, ptr %9, align 8, !tbaa !5
  %168 = load double, ptr %3, align 8, !tbaa !9
  br label %.sink.split580

169:                                              ; preds = %165
  %170 = load double, ptr %31, align 8, !tbaa !9
  %171 = load double, ptr %3, align 8, !tbaa !9
  %172 = fcmp uge double %170, %171
  %173 = load double, ptr %32, align 8
  %174 = fcmp ult double %173, %171
  %or.cond498 = select i1 %172, i1 true, i1 %174
  br i1 %or.cond498, label %176, label %175

175:                                              ; preds = %169
  store i64 1, ptr %9, align 8, !tbaa !5
  br label %.sink.split580

.sink.split580:                                   ; preds = %167, %175
  %.sink581 = phi double [ %171, %175 ], [ %168, %167 ]
  store double %.sink581, ptr %10, align 8, !tbaa !9
  br label %176

176:                                              ; preds = %.sink.split580, %169
  %177 = icmp eq i64 %58, 0
  br i1 %177, label %487, label %178

178:                                              ; preds = %176
  store <2 x double> <double 1.000000e+00, double 0.000000e+00>, ptr %11, align 8, !tbaa !9
  store i64 1, ptr %14, align 8, !tbaa !5
  %179 = getelementptr inbounds i8, ptr %14, i64 8
  store i64 1, ptr %179, align 8, !tbaa !5
  br label %487

180:                                              ; preds = %163
  %181 = getelementptr inbounds i8, ptr %3, i64 8
  br i1 %71, label %184, label %182

182:                                              ; preds = %180
  %183 = call i32 @dlae2_(ptr noundef %3, ptr noundef %4, ptr noundef nonnull %181, ptr noundef nonnull %26, ptr noundef nonnull %27) #5
  br label %186

184:                                              ; preds = %180
  %185 = call i32 @dlaev2_(ptr noundef %3, ptr noundef %4, ptr noundef nonnull %181, ptr noundef nonnull %26, ptr noundef nonnull %27, ptr noundef nonnull %28, ptr noundef nonnull %30) #5
  br label %186

186:                                              ; preds = %184, %182
  %.not482 = icmp eq i64 %59, 0
  br i1 %.not482, label %187, label %198

187:                                              ; preds = %186
  br i1 %80, label %188, label %194

188:                                              ; preds = %187
  %189 = load double, ptr %27, align 8, !tbaa !9
  %190 = load double, ptr %31, align 8, !tbaa !9
  %191 = fcmp ule double %189, %190
  %192 = load double, ptr %32, align 8
  %193 = fcmp ugt double %189, %192
  %or.cond500 = select i1 %191, i1 true, i1 %193
  br i1 %or.cond500, label %194, label %198

194:                                              ; preds = %188, %187
  %195 = icmp ne i64 %61, 0
  %196 = load i64, ptr %33, align 8
  %197 = icmp eq i64 %196, 1
  %or.cond25 = select i1 %195, i1 %197, i1 false
  br i1 %or.cond25, label %198, label %.thread507

198:                                              ; preds = %188, %194, %186
  %199 = load i64, ptr %9, align 8, !tbaa !5
  %200 = add nsw i64 %199, 1
  store i64 %200, ptr %9, align 8, !tbaa !5
  %201 = load double, ptr %27, align 8, !tbaa !9
  %202 = getelementptr double, ptr %10, i64 %199
  store double %201, ptr %202, align 8, !tbaa !9
  %203 = icmp eq i64 %58, 0
  br i1 %203, label %230, label %204

204:                                              ; preds = %198
  %205 = mul nsw i64 %200, %52
  %206 = add nsw i64 %205, 1
  %207 = load double, ptr %30, align 8, !tbaa !9
  %208 = fneg double %207
  %209 = getelementptr inbounds %struct.doublecomplex, ptr %54, i64 %206
  store double %208, ptr %209, align 8, !tbaa !11
  %210 = getelementptr inbounds %struct.doublecomplex, ptr %54, i64 %206, i32 1
  store double 0.000000e+00, ptr %210, align 8, !tbaa !13
  %211 = add nsw i64 %205, 2
  %212 = load double, ptr %28, align 8, !tbaa !9
  %213 = getelementptr inbounds %struct.doublecomplex, ptr %54, i64 %211
  store double %212, ptr %213, align 8, !tbaa !11
  %214 = getelementptr inbounds %struct.doublecomplex, ptr %54, i64 %211, i32 1
  store double 0.000000e+00, ptr %214, align 8, !tbaa !13
  %215 = fcmp une double %207, 0.000000e+00
  br i1 %215, label %216, label %225

216:                                              ; preds = %204
  %217 = fcmp une double %212, 0.000000e+00
  %.idx487 = shl i64 %200, 4
  %218 = getelementptr i8, ptr %55, i64 %.idx487
  %219 = getelementptr i8, ptr %218, i64 -8
  store i64 1, ptr %219, align 8, !tbaa !5
  %220 = load i64, ptr %9, align 8, !tbaa !5
  %.idx488 = shl i64 %220, 4
  %221 = getelementptr i8, ptr %55, i64 %.idx488
  %222 = getelementptr i8, ptr %221, i64 -8
  br i1 %217, label %223, label %224

223:                                              ; preds = %216
  store i64 2, ptr %222, align 8, !tbaa !5
  br label %230

224:                                              ; preds = %216
  store i64 1, ptr %222, align 8, !tbaa !5
  br label %230

225:                                              ; preds = %204
  %.idx483 = shl i64 %200, 4
  %226 = getelementptr i8, ptr %55, i64 %.idx483
  %227 = getelementptr i8, ptr %226, i64 -8
  store i64 2, ptr %227, align 8, !tbaa !5
  %228 = load i64, ptr %9, align 8, !tbaa !5
  %.idx484 = shl nsw i64 %228, 4
  %229 = getelementptr inbounds i8, ptr %55, i64 %.idx484
  store i64 2, ptr %229, align 8, !tbaa !5
  br label %230

230:                                              ; preds = %198, %223, %224, %225
  br i1 %.not482, label %.thread507, label %241

.thread507:                                       ; preds = %194, %230
  br i1 %80, label %231, label %237

231:                                              ; preds = %.thread507
  %232 = load double, ptr %26, align 8, !tbaa !9
  %233 = load double, ptr %31, align 8, !tbaa !9
  %234 = fcmp ule double %232, %233
  %235 = load double, ptr %32, align 8
  %236 = fcmp ugt double %232, %235
  %or.cond502 = select i1 %234, i1 true, i1 %236
  br i1 %or.cond502, label %237, label %241

237:                                              ; preds = %231, %.thread507
  %238 = icmp ne i64 %61, 0
  %239 = load i64, ptr %34, align 8
  %240 = icmp eq i64 %239, 2
  %or.cond29 = select i1 %238, i1 %240, i1 false
  br i1 %or.cond29, label %241, label %487

241:                                              ; preds = %231, %237, %230
  %242 = load i64, ptr %9, align 8, !tbaa !5
  %243 = add nsw i64 %242, 1
  store i64 %243, ptr %9, align 8, !tbaa !5
  %244 = load double, ptr %26, align 8, !tbaa !9
  %245 = getelementptr double, ptr %10, i64 %242
  store double %244, ptr %245, align 8, !tbaa !9
  %246 = icmp eq i64 %58, 0
  br i1 %246, label %487, label %247

247:                                              ; preds = %241
  %248 = mul nsw i64 %243, %52
  %249 = add nsw i64 %248, 1
  %250 = load double, ptr %28, align 8, !tbaa !9
  %251 = getelementptr inbounds %struct.doublecomplex, ptr %54, i64 %249
  store double %250, ptr %251, align 8, !tbaa !11
  %252 = getelementptr inbounds %struct.doublecomplex, ptr %54, i64 %249, i32 1
  store double 0.000000e+00, ptr %252, align 8, !tbaa !13
  %253 = add nsw i64 %248, 2
  %254 = load double, ptr %30, align 8, !tbaa !9
  %255 = getelementptr inbounds %struct.doublecomplex, ptr %54, i64 %253
  store double %254, ptr %255, align 8, !tbaa !11
  %256 = getelementptr inbounds %struct.doublecomplex, ptr %54, i64 %253, i32 1
  store double 0.000000e+00, ptr %256, align 8, !tbaa !13
  %257 = fcmp une double %254, 0.000000e+00
  br i1 %257, label %258, label %267

258:                                              ; preds = %247
  %259 = fcmp une double %250, 0.000000e+00
  %.idx493 = shl i64 %243, 4
  %260 = getelementptr i8, ptr %55, i64 %.idx493
  %261 = getelementptr i8, ptr %260, i64 -8
  store i64 1, ptr %261, align 8, !tbaa !5
  %262 = load i64, ptr %9, align 8, !tbaa !5
  %.idx494 = shl i64 %262, 4
  %263 = getelementptr i8, ptr %55, i64 %.idx494
  %264 = getelementptr i8, ptr %263, i64 -8
  br i1 %259, label %265, label %266

265:                                              ; preds = %258
  store i64 2, ptr %264, align 8, !tbaa !5
  br label %487

266:                                              ; preds = %258
  store i64 1, ptr %264, align 8, !tbaa !5
  br label %487

267:                                              ; preds = %247
  %.idx489 = shl i64 %243, 4
  %268 = getelementptr i8, ptr %55, i64 %.idx489
  %269 = getelementptr i8, ptr %268, i64 -8
  store i64 2, ptr %269, align 8, !tbaa !5
  %270 = load i64, ptr %9, align 8, !tbaa !5
  %.idx490 = shl nsw i64 %270, 4
  %271 = getelementptr inbounds i8, ptr %55, i64 %.idx490
  store i64 2, ptr %271, align 8, !tbaa !5
  br label %487

272:                                              ; preds = %163
  %273 = shl i64 %164, 1
  %274 = mul nsw i64 %164, 3
  %275 = shl i64 %164, 2
  %276 = mul nsw i64 %164, 5
  store double 1.000000e+00, ptr %40, align 8, !tbaa !9
  %277 = call double @dlanst_(ptr noundef nonnull @.str.8, ptr noundef nonnull %2, ptr noundef %3, ptr noundef %4) #5
  store double %277, ptr %36, align 8, !tbaa !9
  %278 = fcmp ogt double %277, 0.000000e+00
  %279 = fcmp olt double %277, %124
  %or.cond503 = select i1 %278, i1 %279, i1 false
  br i1 %or.cond503, label %280, label %282

280:                                              ; preds = %272
  %281 = fdiv double %124, %277
  store double %281, ptr %40, align 8, !tbaa !9
  br label %286

282:                                              ; preds = %272
  %283 = fcmp ogt double %277, %130
  br i1 %283, label %284, label %thread-pre-split508

284:                                              ; preds = %282
  %285 = fdiv double %130, %277
  store double %285, ptr %40, align 8, !tbaa !9
  br label %286

thread-pre-split508:                              ; preds = %282
  %.pr509 = load double, ptr %40, align 8, !tbaa !9
  br label %286

286:                                              ; preds = %thread-pre-split508, %284, %280
  %287 = phi double [ %.pr509, %thread-pre-split508 ], [ %285, %284 ], [ %281, %280 ]
  %288 = fcmp une double %287, 1.000000e+00
  br i1 %288, label %289, label %301

289:                                              ; preds = %286
  %290 = call i32 @f2c_dscal(ptr noundef nonnull %2, ptr noundef nonnull %40, ptr noundef %3, ptr noundef nonnull @c__1) #5
  %291 = load i64, ptr %2, align 8, !tbaa !5
  %292 = add nsw i64 %291, -1
  store i64 %292, ptr %24, align 8, !tbaa !5
  %293 = call i32 @f2c_dscal(ptr noundef nonnull %24, ptr noundef nonnull %40, ptr noundef %4, ptr noundef nonnull @c__1) #5
  %294 = load double, ptr %40, align 8, !tbaa !9
  %295 = fmul double %294, %277
  store double %295, ptr %36, align 8, !tbaa !9
  br i1 %80, label %296, label %301

296:                                              ; preds = %289
  %297 = load double, ptr %31, align 8, !tbaa !9
  %298 = fmul double %294, %297
  store double %298, ptr %31, align 8, !tbaa !9
  %299 = load double, ptr %32, align 8, !tbaa !9
  %300 = fmul double %294, %299
  store double %300, ptr %32, align 8, !tbaa !9
  br label %301

301:                                              ; preds = %289, %296, %286
  %302 = load i64, ptr %15, align 8, !tbaa !5
  %.not466 = icmp eq i64 %302, 0
  br i1 %.not466, label %.thread511, label %303

.thread511:                                       ; preds = %301
  store i64 -1, ptr %41, align 8, !tbaa !5
  br label %.thread513

303:                                              ; preds = %301
  %304 = call i32 @dlarrr_(ptr noundef nonnull %2, ptr noundef %3, ptr noundef %4, ptr noundef nonnull %41) #5
  %.pr510 = load i64, ptr %41, align 8, !tbaa !5
  %305 = icmp eq i64 %.pr510, 0
  br i1 %305, label %307, label %.thread513

.thread513:                                       ; preds = %303, %.thread511
  %306 = fneg double %121
  store double %306, ptr %45, align 8, !tbaa !9
  store i64 0, ptr %15, align 8, !tbaa !5
  br label %311

307:                                              ; preds = %303
  store double %121, ptr %45, align 8, !tbaa !9
  %.pr512 = load i64, ptr %15, align 8, !tbaa !5
  %.not467 = icmp eq i64 %.pr512, 0
  br i1 %.not467, label %311, label %308

308:                                              ; preds = %307
  %309 = getelementptr double, ptr %16, i64 %275
  %310 = call i32 @f2c_dcopy(ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull @c__1, ptr noundef %309, ptr noundef nonnull @c__1) #5
  br label %311

311:                                              ; preds = %.thread513, %308, %307
  %312 = load i64, ptr %2, align 8, !tbaa !5
  %313 = add nsw i64 %312, -1
  store i64 %313, ptr %24, align 8, !tbaa !5
  %.not468.not521 = icmp sgt i64 %312, 1
  br i1 %.not468.not521, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %311
  %314 = getelementptr double, ptr %56, i64 %276
  %315 = add nsw i64 %312, -1
  %min.iters.check = icmp ult i64 %312, 11
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph
  %316 = mul i64 %164, 40
  %317 = add i64 %316, %23
  %318 = sub i64 %317, %22
  %diff.check = icmp ult i64 %318, 32
  br i1 %diff.check, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %315, -4
  %ind.end = or disjoint i64 %n.vec, 1
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = or disjoint i64 %index, 1
  %319 = getelementptr double, ptr %4, i64 %index
  %320 = getelementptr inbounds i8, ptr %319, i64 16
  %wide.load = load <2 x double>, ptr %319, align 8, !tbaa !9
  %wide.load585 = load <2 x double>, ptr %320, align 8, !tbaa !9
  %321 = fmul <2 x double> %wide.load, %wide.load
  %322 = fmul <2 x double> %wide.load585, %wide.load585
  %323 = getelementptr double, ptr %314, i64 %offset.idx
  %324 = getelementptr i8, ptr %323, i64 16
  store <2 x double> %321, ptr %323, align 8, !tbaa !9
  store <2 x double> %322, ptr %324, align 8, !tbaa !9
  %index.next = add nuw i64 %index, 4
  %325 = icmp eq i64 %index.next, %n.vec
  br i1 %325, label %middle.block, label %vector.body, !llvm.loop !14

middle.block:                                     ; preds = %vector.body
  %326 = extractelement <2 x double> %wide.load585, i64 1
  %cmp.n = icmp eq i64 %315, %n.vec
  br i1 %cmp.n, label %._crit_edge, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph
  %.0436522.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph ], [ %ind.end, %middle.block ]
  %327 = sub i64 %312, %.0436522.ph
  %xtraiter = and i64 %327, 3
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader, %scalar.ph.prol
  %.0436522.prol = phi i64 [ %332, %scalar.ph.prol ], [ %.0436522.ph, %scalar.ph.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph.prol ], [ 0, %scalar.ph.preheader ]
  %328 = getelementptr inbounds double, ptr %50, i64 %.0436522.prol
  %329 = load double, ptr %328, align 8, !tbaa !9
  %330 = fmul double %329, %329
  %331 = getelementptr double, ptr %314, i64 %.0436522.prol
  store double %330, ptr %331, align 8, !tbaa !9
  %332 = add nuw nsw i64 %.0436522.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter
  br i1 %prol.iter.cmp.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol, !llvm.loop !18

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %.lcssa587.unr = phi double [ poison, %scalar.ph.preheader ], [ %329, %scalar.ph.prol ]
  %.0436522.unr = phi i64 [ %.0436522.ph, %scalar.ph.preheader ], [ %332, %scalar.ph.prol ]
  %333 = sub i64 %.0436522.ph, %312
  %334 = icmp ugt i64 %333, -4
  br i1 %334, label %._crit_edge, label %scalar.ph.preheader.new

scalar.ph.preheader.new:                          ; preds = %scalar.ph.prol.loopexit
  %invariant.gep596 = getelementptr i8, ptr %314, i64 8
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph, %scalar.ph.preheader.new
  %.0436522 = phi i64 [ %.0436522.unr, %scalar.ph.preheader.new ], [ %352, %scalar.ph ]
  %335 = getelementptr inbounds double, ptr %50, i64 %.0436522
  %336 = load double, ptr %335, align 8, !tbaa !9
  %337 = fmul double %336, %336
  %338 = getelementptr double, ptr %314, i64 %.0436522
  store double %337, ptr %338, align 8, !tbaa !9
  %339 = getelementptr double, ptr %4, i64 %.0436522
  %340 = load double, ptr %339, align 8, !tbaa !9
  %341 = fmul double %340, %340
  %gep597 = getelementptr double, ptr %invariant.gep596, i64 %.0436522
  store double %341, ptr %gep597, align 8, !tbaa !9
  %342 = add nuw nsw i64 %.0436522, 2
  %343 = getelementptr inbounds double, ptr %50, i64 %342
  %344 = load double, ptr %343, align 8, !tbaa !9
  %345 = fmul double %344, %344
  %346 = getelementptr double, ptr %314, i64 %342
  store double %345, ptr %346, align 8, !tbaa !9
  %347 = add nuw nsw i64 %.0436522, 3
  %348 = getelementptr inbounds double, ptr %50, i64 %347
  %349 = load double, ptr %348, align 8, !tbaa !9
  %350 = fmul double %349, %349
  %351 = getelementptr double, ptr %314, i64 %347
  store double %350, ptr %351, align 8, !tbaa !9
  %352 = add nuw nsw i64 %.0436522, 4
  %exitcond.not.3 = icmp eq i64 %352, %312
  br i1 %exitcond.not.3, label %._crit_edge, label %scalar.ph, !llvm.loop !20

._crit_edge:                                      ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block, %311
  %.lcssa = phi double [ %125, %311 ], [ %326, %middle.block ], [ %.lcssa587.unr, %scalar.ph.prol.loopexit ], [ %349, %scalar.ph ]
  store double %.lcssa, ptr %25, align 8, !tbaa !9
  br i1 %71, label %355, label %353

353:                                              ; preds = %._crit_edge
  %354 = fmul double %121, 4.000000e+00
  store double %354, ptr %38, align 8, !tbaa !9
  br label %362

355:                                              ; preds = %._crit_edge
  %356 = call double @sqrt(double noundef %121) #5
  store double %356, ptr %38, align 8, !tbaa !9
  %357 = call double @sqrt(double noundef %121) #5
  %358 = fmul double %357, 5.000000e-03
  store double %358, ptr %25, align 8, !tbaa !9
  %359 = fmul double %121, 4.000000e+00
  %360 = fcmp oge double %358, %359
  %361 = select i1 %360, double %358, double %359
  br label %362

362:                                              ; preds = %355, %353
  %storemerge = phi double [ %354, %353 ], [ %361, %355 ]
  store double %storemerge, ptr %39, align 8, !tbaa !9
  %363 = getelementptr double, ptr %16, i64 %276
  %364 = getelementptr double, ptr %16, i64 %273
  %365 = getelementptr double, ptr %16, i64 %274
  %366 = getelementptr i64, ptr %18, i64 %164
  %367 = getelementptr i64, ptr %18, i64 %273
  %.idx = mul i64 %164, 48
  %368 = getelementptr i8, ptr %16, i64 %.idx
  %369 = getelementptr i64, ptr %18, i64 %274
  %370 = call i32 @dlarre_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %31, ptr noundef nonnull %32, ptr noundef nonnull %33, ptr noundef nonnull %34, ptr noundef %3, ptr noundef %4, ptr noundef %363, ptr noundef nonnull %38, ptr noundef nonnull %39, ptr noundef nonnull %45, ptr noundef nonnull %49, ptr noundef nonnull %18, ptr noundef nonnull %9, ptr noundef %10, ptr noundef %364, ptr noundef %365, ptr noundef %366, ptr noundef %367, ptr noundef nonnull %16, ptr noundef nonnull %48, ptr noundef %368, ptr noundef %369, ptr noundef nonnull %41) #5
  %371 = load i64, ptr %41, align 8
  %.not469 = icmp eq i64 %371, 0
  br i1 %.not469, label %375, label %372

372:                                              ; preds = %362
  %373 = call i64 @llvm.abs.i64(i64 %371, i1 true)
  %374 = add nuw nsw i64 %373, 10
  store i64 %374, ptr %20, align 8, !tbaa !5
  br label %487

375:                                              ; preds = %362
  br i1 %71, label %376, label %382

376:                                              ; preds = %375
  %377 = call i32 @zlarrv_(ptr noundef nonnull %2, ptr noundef nonnull %31, ptr noundef nonnull %32, ptr noundef %3, ptr noundef %4, ptr noundef nonnull %48, ptr noundef nonnull %18, ptr noundef nonnull %9, ptr noundef nonnull @c__1, ptr noundef nonnull %9, ptr noundef nonnull @c_b18, ptr noundef nonnull %38, ptr noundef nonnull %39, ptr noundef %10, ptr noundef %364, ptr noundef %365, ptr noundef %366, ptr noundef %367, ptr noundef nonnull %16, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %14, ptr noundef %368, ptr noundef %369, ptr noundef nonnull %41) #5
  %378 = load i64, ptr %41, align 8
  %.not471 = icmp eq i64 %378, 0
  br i1 %.not471, label %.loopexit520, label %379

379:                                              ; preds = %376
  %380 = call i64 @llvm.abs.i64(i64 %378, i1 true)
  %381 = add nuw nsw i64 %380, 20
  store i64 %381, ptr %20, align 8, !tbaa !5
  br label %487

382:                                              ; preds = %375
  %383 = load i64, ptr %9, align 8, !tbaa !5
  store i64 %383, ptr %24, align 8, !tbaa !5
  %.not470523 = icmp slt i64 %383, 1
  br i1 %.not470523, label %.loopexit520, label %.lr.ph526

.lr.ph526:                                        ; preds = %382
  %384 = getelementptr i64, ptr %57, i64 %164
  %xtraiter588 = and i64 %383, 1
  %385 = icmp eq i64 %383, 1
  br i1 %385, label %..loopexit520_crit_edge.unr-lcssa, label %.lr.ph526.new

.lr.ph526.new:                                    ; preds = %.lr.ph526
  %unroll_iter = and i64 %383, 9223372036854775806
  %invariant.gep598 = getelementptr i8, ptr %384, i64 8
  br label %386

386:                                              ; preds = %386, %.lr.ph526.new
  %.1437524 = phi i64 [ 1, %.lr.ph526.new ], [ %404, %386 ]
  %niter = phi i64 [ 0, %.lr.ph526.new ], [ %niter.next.1, %386 ]
  %387 = getelementptr i64, ptr %384, i64 %.1437524
  %388 = load i64, ptr %387, align 8, !tbaa !5
  %389 = getelementptr inbounds i64, ptr %57, i64 %388
  %390 = load i64, ptr %389, align 8, !tbaa !5
  %391 = getelementptr inbounds double, ptr %50, i64 %390
  %392 = load double, ptr %391, align 8, !tbaa !9
  %393 = getelementptr inbounds double, ptr %51, i64 %.1437524
  %394 = load double, ptr %393, align 8, !tbaa !9
  %395 = fadd double %392, %394
  store double %395, ptr %393, align 8, !tbaa !9
  %gep599 = getelementptr i64, ptr %invariant.gep598, i64 %.1437524
  %396 = load i64, ptr %gep599, align 8, !tbaa !5
  %397 = getelementptr inbounds i64, ptr %57, i64 %396
  %398 = load i64, ptr %397, align 8, !tbaa !5
  %399 = getelementptr inbounds double, ptr %50, i64 %398
  %400 = load double, ptr %399, align 8, !tbaa !9
  %401 = getelementptr double, ptr %10, i64 %.1437524
  %402 = load double, ptr %401, align 8, !tbaa !9
  %403 = fadd double %400, %402
  store double %403, ptr %401, align 8, !tbaa !9
  %404 = add nuw i64 %.1437524, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %..loopexit520_crit_edge.unr-lcssa, label %386, !llvm.loop !21

..loopexit520_crit_edge.unr-lcssa:                ; preds = %386, %.lr.ph526
  %.lcssa586.ph = phi i64 [ poison, %.lr.ph526 ], [ %396, %386 ]
  %.1437524.unr = phi i64 [ 1, %.lr.ph526 ], [ %404, %386 ]
  %lcmp.mod589.not = icmp eq i64 %xtraiter588, 0
  br i1 %lcmp.mod589.not, label %..loopexit520_crit_edge, label %..loopexit520_crit_edge.epilog-lcssa

..loopexit520_crit_edge.epilog-lcssa:             ; preds = %..loopexit520_crit_edge.unr-lcssa
  %405 = getelementptr i64, ptr %384, i64 %.1437524.unr
  %406 = load i64, ptr %405, align 8, !tbaa !5
  %407 = getelementptr inbounds i64, ptr %57, i64 %406
  %408 = load i64, ptr %407, align 8, !tbaa !5
  %409 = getelementptr inbounds double, ptr %50, i64 %408
  %410 = load double, ptr %409, align 8, !tbaa !9
  %411 = getelementptr inbounds double, ptr %51, i64 %.1437524.unr
  %412 = load double, ptr %411, align 8, !tbaa !9
  %413 = fadd double %410, %412
  store double %413, ptr %411, align 8, !tbaa !9
  br label %..loopexit520_crit_edge

..loopexit520_crit_edge:                          ; preds = %..loopexit520_crit_edge.unr-lcssa, %..loopexit520_crit_edge.epilog-lcssa
  %.lcssa586 = phi i64 [ %.lcssa586.ph, %..loopexit520_crit_edge.unr-lcssa ], [ %406, %..loopexit520_crit_edge.epilog-lcssa ]
  store i64 %.lcssa586, ptr %35, align 8, !tbaa !5
  br label %.loopexit520

.loopexit520:                                     ; preds = %382, %..loopexit520_crit_edge, %376
  %414 = load i64, ptr %15, align 8, !tbaa !5
  %.not472 = icmp eq i64 %414, 0
  br i1 %.not472, label %.loopexit519, label %415

415:                                              ; preds = %.loopexit520
  %416 = load i64, ptr %9, align 8, !tbaa !5
  %417 = getelementptr i64, ptr %57, i64 %164
  %418 = getelementptr i64, ptr %417, i64 %416
  %419 = load i64, ptr %418, align 8, !tbaa !5
  store i64 %419, ptr %24, align 8, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %367, i64 -8
  %.not473535 = icmp slt i64 %419, 1
  br i1 %.not473535, label %.loopexit519, label %.lr.ph540

.lr.ph540:                                        ; preds = %415
  %420 = fmul double %121, 4.000000e+00
  %421 = getelementptr double, ptr %16, i64 %275
  %invariant.gep541 = getelementptr i8, ptr %421, i64 -8
  %422 = getelementptr double, ptr %56, i64 %276
  br label %423

423:                                              ; preds = %.lr.ph540, %._crit_edge531.thread
  %424 = phi i64 [ %419, %.lr.ph540 ], [ %448, %._crit_edge531.thread ]
  %.0433538 = phi i64 [ 1, %.lr.ph540 ], [ %.1, %._crit_edge531.thread ]
  %.0439537 = phi i64 [ 1, %.lr.ph540 ], [ %.1440, %._crit_edge531.thread ]
  %.0443536 = phi i64 [ 1, %.lr.ph540 ], [ %425, %._crit_edge531.thread ]
  %425 = add nuw nsw i64 %.0443536, 1
  %426 = getelementptr inbounds i64, ptr %57, i64 %.0443536
  %427 = load i64, ptr %426, align 8, !tbaa !5
  %reass.sub = sub i64 %427, %.0439537
  %428 = add i64 %reass.sub, 1
  store i64 %428, ptr %29, align 8, !tbaa !5
  %429 = load i64, ptr %9, align 8, !tbaa !5
  %.not560 = icmp sgt i64 %.0433538, %429
  br i1 %.not560, label %._crit_edge531.thread, label %.lr.ph530.preheader

.lr.ph530.preheader:                              ; preds = %423
  %430 = add nsw i64 %.0433538, -1
  br label %.lr.ph530

.lr.ph530:                                        ; preds = %.lr.ph530.preheader, %434
  %.0445528 = phi i64 [ %435, %434 ], [ %430, %.lr.ph530.preheader ]
  %431 = getelementptr i64, ptr %366, i64 %.0445528
  %432 = load i64, ptr %431, align 8, !tbaa !5
  %433 = icmp eq i64 %432, %.0443536
  br i1 %433, label %434, label %._crit_edge531

434:                                              ; preds = %.lr.ph530
  %435 = add i64 %.0445528, 1
  %exitcond564.not = icmp eq i64 %435, %429
  br i1 %exitcond564.not, label %._crit_edge531, label %.lr.ph530

._crit_edge531:                                   ; preds = %434, %.lr.ph530
  %.0445.lcssa = phi i64 [ %429, %434 ], [ %.0445528, %.lr.ph530 ]
  %436 = icmp slt i64 %.0445.lcssa, %.0433538
  br i1 %436, label %._crit_edge531.thread, label %437

437:                                              ; preds = %._crit_edge531
  %438 = add i64 %.0433538, %273
  %439 = getelementptr inbounds i64, ptr %57, i64 %438
  %440 = load i64, ptr %439, align 8, !tbaa !5
  %441 = add nsw i64 %440, -1
  store i64 %441, ptr %44, align 8, !tbaa !5
  store i64 %440, ptr %46, align 8, !tbaa !5
  %gep = getelementptr i64, ptr %invariant.gep, i64 %.0445.lcssa
  %442 = load i64, ptr %gep, align 8, !tbaa !5
  store i64 %442, ptr %42, align 8, !tbaa !5
  store double %420, ptr %39, align 8, !tbaa !9
  %gep542 = getelementptr double, ptr %invariant.gep541, i64 %.0439537
  %443 = getelementptr double, ptr %422, i64 %.0439537
  %444 = getelementptr inbounds double, ptr %51, i64 %.0433538
  %445 = getelementptr inbounds double, ptr %56, i64 %438
  %446 = call i32 @dlarrj_(ptr noundef nonnull %29, ptr noundef %gep542, ptr noundef %443, ptr noundef nonnull %46, ptr noundef nonnull %42, ptr noundef nonnull %39, ptr noundef nonnull %44, ptr noundef nonnull %444, ptr noundef nonnull %445, ptr noundef %368, ptr noundef %369, ptr noundef nonnull %48, ptr noundef nonnull %36, ptr noundef nonnull %41) #5
  %447 = add nuw nsw i64 %.0445.lcssa, 1
  %.pre = load i64, ptr %24, align 8, !tbaa !5
  br label %._crit_edge531.thread

._crit_edge531.thread:                            ; preds = %423, %._crit_edge531, %437
  %448 = phi i64 [ %.pre, %437 ], [ %424, %._crit_edge531 ], [ %424, %423 ]
  %.1 = phi i64 [ %447, %437 ], [ %.0433538, %._crit_edge531 ], [ %.0433538, %423 ]
  %.1440 = add nsw i64 %427, 1
  %.not473.not = icmp slt i64 %.0443536, %448
  br i1 %.not473.not, label %423, label %.loopexit519, !llvm.loop !22

.loopexit519:                                     ; preds = %._crit_edge531.thread, %415, %.loopexit520
  %449 = load double, ptr %40, align 8, !tbaa !9
  %450 = fcmp une double %449, 1.000000e+00
  br i1 %450, label %451, label %454

451:                                              ; preds = %.loopexit519
  %452 = fdiv double 1.000000e+00, %449
  store double %452, ptr %25, align 8, !tbaa !9
  %453 = call i32 @f2c_dscal(ptr noundef nonnull %9, ptr noundef nonnull %25, ptr noundef %10, ptr noundef nonnull @c__1) #5
  br label %454

454:                                              ; preds = %451, %.loopexit519
  %455 = load i64, ptr %49, align 8, !tbaa !5
  %456 = icmp sgt i64 %455, 1
  br i1 %456, label %457, label %.loopexit

457:                                              ; preds = %454
  br i1 %71, label %462, label %458

458:                                              ; preds = %457
  %459 = call i32 @dlasrt_(ptr noundef nonnull @.str.2, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull %41) #5
  %460 = load i64, ptr %41, align 8, !tbaa !5
  %.not474 = icmp eq i64 %460, 0
  br i1 %.not474, label %.loopexit, label %461

461:                                              ; preds = %458
  store i64 3, ptr %20, align 8, !tbaa !5
  br label %487

462:                                              ; preds = %457
  %463 = load i64, ptr %9, align 8, !tbaa !5
  %464 = add nsw i64 %463, -1
  store i64 %464, ptr %24, align 8, !tbaa !5
  %invariant.gep552 = getelementptr i8, ptr %54, i64 16
  %.not475556 = icmp slt i64 %463, 2
  br i1 %.not475556, label %.loopexit, label %.lr.ph559

.lr.ph559:                                        ; preds = %462, %._crit_edge549.thread
  %465 = phi i64 [ %486, %._crit_edge549.thread ], [ %464, %462 ]
  %.2557 = phi i64 [ %469, %._crit_edge549.thread ], [ 1, %462 ]
  %466 = getelementptr inbounds double, ptr %51, i64 %.2557
  %467 = load double, ptr %466, align 8, !tbaa !9
  %468 = load i64, ptr %9, align 8, !tbaa !5
  %469 = add nuw nsw i64 %.2557, 1
  %.not476543.not = icmp slt i64 %.2557, %468
  br i1 %.not476543.not, label %.lr.ph548, label %._crit_edge549.thread

.lr.ph548:                                        ; preds = %.lr.ph559, %.lr.ph548
  %.0434546 = phi i64 [ %.1435, %.lr.ph548 ], [ 0, %.lr.ph559 ]
  %.0438545 = phi i64 [ %473, %.lr.ph548 ], [ %469, %.lr.ph559 ]
  %.0441544 = phi double [ %.1442, %.lr.ph548 ], [ %467, %.lr.ph559 ]
  %470 = getelementptr inbounds double, ptr %51, i64 %.0438545
  %471 = load double, ptr %470, align 8, !tbaa !9
  %472 = fcmp olt double %471, %.0441544
  %.1442 = select i1 %472, double %471, double %.0441544
  %.1435 = select i1 %472, i64 %.0438545, i64 %.0434546
  %473 = add nuw nsw i64 %.0438545, 1
  %.not476.not = icmp slt i64 %.0438545, %468
  br i1 %.not476.not, label %.lr.ph548, label %._crit_edge549, !llvm.loop !23

._crit_edge549:                                   ; preds = %.lr.ph548
  %.not477 = icmp eq i64 %.1435, 0
  br i1 %.not477, label %._crit_edge549.thread, label %474

474:                                              ; preds = %._crit_edge549
  %475 = getelementptr inbounds double, ptr %51, i64 %.1435
  store double %467, ptr %475, align 8, !tbaa !9
  store double %.1442, ptr %466, align 8, !tbaa !9
  %476 = mul nsw i64 %.1435, %52
  %gep553 = getelementptr %struct.doublecomplex, ptr %invariant.gep552, i64 %476
  %477 = mul nsw i64 %.2557, %52
  %gep555 = getelementptr %struct.doublecomplex, ptr %invariant.gep552, i64 %477
  %478 = call i32 @f2c_zswap(ptr noundef nonnull %2, ptr noundef %gep553, ptr noundef nonnull @c__1, ptr noundef %gep555, ptr noundef nonnull @c__1) #5
  %.idx478 = shl i64 %.1435, 4
  %479 = getelementptr i8, ptr %55, i64 %.idx478
  %480 = getelementptr i8, ptr %479, i64 -8
  %481 = load i64, ptr %480, align 8, !tbaa !5
  %.idx479 = shl i64 %.2557, 4
  %482 = getelementptr i8, ptr %55, i64 %.idx479
  %483 = getelementptr i8, ptr %482, i64 -8
  %484 = load i64, ptr %479, align 8, !tbaa !5
  store i64 %484, ptr %35, align 8, !tbaa !5
  %485 = load <2 x i64>, ptr %483, align 8, !tbaa !5
  store <2 x i64> %485, ptr %480, align 8, !tbaa !5
  store i64 %481, ptr %483, align 8, !tbaa !5
  store i64 %484, ptr %482, align 8, !tbaa !5
  %.pre567 = load i64, ptr %24, align 8, !tbaa !5
  br label %._crit_edge549.thread

._crit_edge549.thread:                            ; preds = %.lr.ph559, %._crit_edge549, %474
  %486 = phi i64 [ %465, %._crit_edge549 ], [ %.pre567, %474 ], [ %465, %.lr.ph559 ]
  %.not475.not = icmp slt i64 %.2557, %486
  br i1 %.not475.not, label %.lr.ph559, label %.loopexit, !llvm.loop !24

.loopexit:                                        ; preds = %._crit_edge549.thread, %462, %458, %454
  store double %134, ptr %16, align 8, !tbaa !9
  store i64 %.0432, ptr %18, align 8, !tbaa !5
  br label %487

487:                                              ; preds = %.thread571, %237, %267, %266, %265, %241, %163, %176, %178, %162, %.loopexit, %461, %379, %372, %.thread505
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %49) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #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 i64 @lsame_(ptr noundef, ptr noundef) local_unnamed_addr #2

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

declare double @dlanst_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare i32 @dlarrr_(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

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

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

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

declare i32 @f2c_zswap(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.abs.i64(i64, i1 immarg) #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 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = !{!12, !10, i64 0}
!12 = !{!"", !10, i64 0, !10, i64 8}
!13 = !{!12, !10, i64 8}
!14 = distinct !{!14, !15, !16, !17}
!15 = !{!"llvm.loop.mustprogress"}
!16 = !{!"llvm.loop.isvectorized", i32 1}
!17 = !{!"llvm.loop.unroll.runtime.disable"}
!18 = distinct !{!18, !19}
!19 = !{!"llvm.loop.unroll.disable"}
!20 = distinct !{!20, !15, !16}
!21 = distinct !{!21, !15}
!22 = distinct !{!22, !15}
!23 = distinct !{!23, !15}
!24 = distinct !{!24, !15}


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