; LLVM IR from OpenMathLib/OpenBLAS :: lapack-netlib/SRC (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 i32, align 4
@c_b18 = external hidden global double, align 8

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

139:                                              ; preds = %21
  %140 = load ptr, ptr %41, align 8, !tbaa !5
  %141 = load i32, ptr %140, align 4, !tbaa !9
  %142 = icmp eq i32 %141, -1
  br label %143

143:                                              ; preds = %139, %21
  %144 = phi i1 [ true, %21 ], [ %142, %139 ]
  %145 = zext i1 %144 to i32
  store i32 %145, ptr %99, align 4, !tbaa !9
  %146 = load ptr, ptr %35, align 8, !tbaa !5
  %147 = load i32, ptr %146, align 4, !tbaa !9
  %148 = icmp eq i32 %147, -1
  %149 = zext i1 %148 to i32
  store i32 %149, ptr %100, align 4, !tbaa !9
  %150 = load i32, ptr %69, align 4, !tbaa !9
  %151 = icmp ne i32 %150, 0
  br i1 %151, label %152, label %159

152:                                              ; preds = %143
  %153 = load ptr, ptr %24, align 8, !tbaa !5
  %154 = load i32, ptr %153, align 4, !tbaa !9
  %155 = mul nsw i32 %154, 18
  store i32 %155, ptr %68, align 4, !tbaa !9
  %156 = load ptr, ptr %24, align 8, !tbaa !5
  %157 = load i32, ptr %156, align 4, !tbaa !9
  %158 = mul nsw i32 %157, 10
  store i32 %158, ptr %94, align 4, !tbaa !9
  br label %166

159:                                              ; preds = %143
  %160 = load ptr, ptr %24, align 8, !tbaa !5
  %161 = load i32, ptr %160, align 4, !tbaa !9
  %162 = mul nsw i32 %161, 12
  store i32 %162, ptr %68, align 4, !tbaa !9
  %163 = load ptr, ptr %24, align 8, !tbaa !5
  %164 = load i32, ptr %163, align 4, !tbaa !9
  %165 = shl i32 %164, 3
  store i32 %165, ptr %94, align 4, !tbaa !9
  br label %166

166:                                              ; preds = %159, %152
  store double 0.000000e+00, ptr %80, align 8, !tbaa !11
  store double 0.000000e+00, ptr %84, align 8, !tbaa !11
  store i32 0, ptr %101, align 4, !tbaa !9
  store i32 0, ptr %102, align 4, !tbaa !9
  store i32 0, ptr %97, align 4, !tbaa !9
  %167 = load i32, ptr %81, align 4, !tbaa !9
  %168 = icmp ne i32 %167, 0
  br i1 %168, label %169, label %174

169:                                              ; preds = %166
  %170 = load ptr, ptr %27, align 8, !tbaa !5
  %171 = load double, ptr %170, align 8, !tbaa !11
  store double %171, ptr %80, align 8, !tbaa !11
  %172 = load ptr, ptr %28, align 8, !tbaa !5
  %173 = load double, ptr %172, align 8, !tbaa !11
  store double %173, ptr %84, align 8, !tbaa !11
  br label %183

174:                                              ; preds = %166
  %175 = load i32, ptr %76, align 4, !tbaa !9
  %176 = icmp ne i32 %175, 0
  br i1 %176, label %177, label %182

177:                                              ; preds = %174
  %178 = load ptr, ptr %29, align 8, !tbaa !5
  %179 = load i32, ptr %178, align 4, !tbaa !9
  store i32 %179, ptr %101, align 4, !tbaa !9
  %180 = load ptr, ptr %30, align 8, !tbaa !5
  %181 = load i32, ptr %180, align 4, !tbaa !9
  store i32 %181, ptr %102, align 4, !tbaa !9
  br label %182

182:                                              ; preds = %177, %174
  br label %183

183:                                              ; preds = %182, %169
  %184 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 0, ptr %184, align 4, !tbaa !9
  %185 = load i32, ptr %69, align 4, !tbaa !9
  %186 = icmp ne i32 %185, 0
  br i1 %186, label %193, label %187

187:                                              ; preds = %183
  %188 = load ptr, ptr %22, align 8, !tbaa !5
  %189 = call i32 @lsame_(ptr noundef %188, ptr noundef @.str.3)
  %190 = icmp ne i32 %189, 0
  br i1 %190, label %193, label %191

191:                                              ; preds = %187
  %192 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -1, ptr %192, align 4, !tbaa !9
  br label %293

193:                                              ; preds = %187, %183
  %194 = load i32, ptr %75, align 4, !tbaa !9
  %195 = icmp ne i32 %194, 0
  br i1 %195, label %204, label %196

196:                                              ; preds = %193
  %197 = load i32, ptr %81, align 4, !tbaa !9
  %198 = icmp ne i32 %197, 0
  br i1 %198, label %204, label %199

199:                                              ; preds = %196
  %200 = load i32, ptr %76, align 4, !tbaa !9
  %201 = icmp ne i32 %200, 0
  br i1 %201, label %204, label %202

202:                                              ; preds = %199
  %203 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -2, ptr %203, align 4, !tbaa !9
  br label %292

204:                                              ; preds = %199, %196, %193
  %205 = load ptr, ptr %24, align 8, !tbaa !5
  %206 = load i32, ptr %205, align 4, !tbaa !9
  %207 = icmp slt i32 %206, 0
  br i1 %207, label %208, label %210

208:                                              ; preds = %204
  %209 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -3, ptr %209, align 4, !tbaa !9
  br label %291

210:                                              ; preds = %204
  %211 = load i32, ptr %81, align 4, !tbaa !9
  %212 = icmp ne i32 %211, 0
  br i1 %212, label %213, label %223

213:                                              ; preds = %210
  %214 = load ptr, ptr %24, align 8, !tbaa !5
  %215 = load i32, ptr %214, align 4, !tbaa !9
  %216 = icmp sgt i32 %215, 0
  br i1 %216, label %217, label %223

217:                                              ; preds = %213
  %218 = load double, ptr %84, align 8, !tbaa !11
  %219 = load double, ptr %80, align 8, !tbaa !11
  %220 = fcmp ole double %218, %219
  br i1 %220, label %221, label %223

221:                                              ; preds = %217
  %222 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -7, ptr %222, align 4, !tbaa !9
  br label %290

223:                                              ; preds = %217, %213, %210
  %224 = load i32, ptr %76, align 4, !tbaa !9
  %225 = icmp ne i32 %224, 0
  br i1 %225, label %226, label %236

226:                                              ; preds = %223
  %227 = load i32, ptr %101, align 4, !tbaa !9
  %228 = icmp slt i32 %227, 1
  br i1 %228, label %234, label %229

229:                                              ; preds = %226
  %230 = load i32, ptr %101, align 4, !tbaa !9
  %231 = load ptr, ptr %24, align 8, !tbaa !5
  %232 = load i32, ptr %231, align 4, !tbaa !9
  %233 = icmp sgt i32 %230, %232
  br i1 %233, label %234, label %236

234:                                              ; preds = %229, %226
  %235 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -8, ptr %235, align 4, !tbaa !9
  br label %289

236:                                              ; preds = %229, %223
  %237 = load i32, ptr %76, align 4, !tbaa !9
  %238 = icmp ne i32 %237, 0
  br i1 %238, label %239, label %250

239:                                              ; preds = %236
  %240 = load i32, ptr %102, align 4, !tbaa !9
  %241 = load i32, ptr %101, align 4, !tbaa !9
  %242 = icmp slt i32 %240, %241
  br i1 %242, label %248, label %243

243:                                              ; preds = %239
  %244 = load i32, ptr %102, align 4, !tbaa !9
  %245 = load ptr, ptr %24, align 8, !tbaa !5
  %246 = load i32, ptr %245, align 4, !tbaa !9
  %247 = icmp sgt i32 %244, %246
  br i1 %247, label %248, label %250

248:                                              ; preds = %243, %239
  %249 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -9, ptr %249, align 4, !tbaa !9
  br label %288

250:                                              ; preds = %243, %236
  %251 = load ptr, ptr %34, align 8, !tbaa !5
  %252 = load i32, ptr %251, align 4, !tbaa !9
  %253 = icmp slt i32 %252, 1
  br i1 %253, label %263, label %254

254:                                              ; preds = %250
  %255 = load i32, ptr %69, align 4, !tbaa !9
  %256 = icmp ne i32 %255, 0
  br i1 %256, label %257, label %265

257:                                              ; preds = %254
  %258 = load ptr, ptr %34, align 8, !tbaa !5
  %259 = load i32, ptr %258, align 4, !tbaa !9
  %260 = load ptr, ptr %24, align 8, !tbaa !5
  %261 = load i32, ptr %260, align 4, !tbaa !9
  %262 = icmp slt i32 %259, %261
  br i1 %262, label %263, label %265

263:                                              ; preds = %257, %250
  %264 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -13, ptr %264, align 4, !tbaa !9
  br label %287

265:                                              ; preds = %257, %254
  %266 = load ptr, ptr %39, align 8, !tbaa !5
  %267 = load i32, ptr %266, align 4, !tbaa !9
  %268 = load i32, ptr %68, align 4, !tbaa !9
  %269 = icmp slt i32 %267, %268
  br i1 %269, label %270, label %275

270:                                              ; preds = %265
  %271 = load i32, ptr %99, align 4, !tbaa !9
  %272 = icmp ne i32 %271, 0
  br i1 %272, label %275, label %273

273:                                              ; preds = %270
  %274 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -17, ptr %274, align 4, !tbaa !9
  br label %286

275:                                              ; preds = %270, %265
  %276 = load ptr, ptr %41, align 8, !tbaa !5
  %277 = load i32, ptr %276, align 4, !tbaa !9
  %278 = load i32, ptr %94, align 4, !tbaa !9
  %279 = icmp slt i32 %277, %278
  br i1 %279, label %280, label %285

280:                                              ; preds = %275
  %281 = load i32, ptr %99, align 4, !tbaa !9
  %282 = icmp ne i32 %281, 0
  br i1 %282, label %285, label %283

283:                                              ; preds = %280
  %284 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -19, ptr %284, align 4, !tbaa !9
  br label %285

285:                                              ; preds = %283, %280, %275
  br label %286

286:                                              ; preds = %285, %273
  br label %287

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

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

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

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

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

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

293:                                              ; preds = %292, %191
  %294 = call double @dlamch_(ptr noundef @.str.4)
  store double %294, ptr %83, align 8, !tbaa !11
  %295 = call double @dlamch_(ptr noundef @.str.5)
  store double %295, ptr %103, align 8, !tbaa !11
  %296 = load double, ptr %83, align 8, !tbaa !11
  %297 = load double, ptr %103, align 8, !tbaa !11
  %298 = fdiv double %296, %297
  store double %298, ptr %98, align 8, !tbaa !11
  %299 = load double, ptr %98, align 8, !tbaa !11
  %300 = fdiv double 1.000000e+00, %299
  store double %300, ptr %85, align 8, !tbaa !11
  %301 = load double, ptr %98, align 8, !tbaa !11
  %302 = call double @sqrt(double noundef %301) #4
  store double %302, ptr %53, align 8, !tbaa !11
  %303 = load double, ptr %85, align 8, !tbaa !11
  %304 = call double @sqrt(double noundef %303) #4
  store double %304, ptr %47, align 8, !tbaa !11
  %305 = load double, ptr %83, align 8, !tbaa !11
  %306 = call double @sqrt(double noundef %305) #4
  %307 = call double @sqrt(double noundef %306) #4
  %308 = fdiv double 1.000000e+00, %307
  store double %308, ptr %48, align 8, !tbaa !11
  %309 = load double, ptr %47, align 8, !tbaa !11
  %310 = load double, ptr %48, align 8, !tbaa !11
  %311 = fcmp ole double %309, %310
  br i1 %311, label %312, label %314

312:                                              ; preds = %293
  %313 = load double, ptr %47, align 8, !tbaa !11
  br label %316

314:                                              ; preds = %293
  %315 = load double, ptr %48, align 8, !tbaa !11
  br label %316

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

321:                                              ; preds = %316
  %322 = load i32, ptr %68, align 4, !tbaa !9
  %323 = sitofp i32 %322 to double
  %324 = load ptr, ptr %38, align 8, !tbaa !5
  %325 = getelementptr inbounds double, ptr %324, i64 1
  store double %323, ptr %325, align 8, !tbaa !11
  %326 = load i32, ptr %94, align 4, !tbaa !9
  %327 = load ptr, ptr %40, align 8, !tbaa !5
  %328 = getelementptr inbounds i32, ptr %327, i64 1
  store i32 %326, ptr %328, align 4, !tbaa !9
  %329 = load i32, ptr %69, align 4, !tbaa !9
  %330 = icmp ne i32 %329, 0
  br i1 %330, label %331, label %337

331:                                              ; preds = %321
  %332 = load i32, ptr %75, align 4, !tbaa !9
  %333 = icmp ne i32 %332, 0
  br i1 %333, label %334, label %337

334:                                              ; preds = %331
  %335 = load ptr, ptr %24, align 8, !tbaa !5
  %336 = load i32, ptr %335, align 4, !tbaa !9
  store i32 %336, ptr %95, align 4, !tbaa !9
  br label %366

337:                                              ; preds = %331, %321
  %338 = load i32, ptr %69, align 4, !tbaa !9
  %339 = icmp ne i32 %338, 0
  br i1 %339, label %340, label %352

340:                                              ; preds = %337
  %341 = load i32, ptr %81, align 4, !tbaa !9
  %342 = icmp ne i32 %341, 0
  br i1 %342, label %343, label %352

343:                                              ; preds = %340
  %344 = load ptr, ptr %24, align 8, !tbaa !5
  %345 = load ptr, ptr %27, align 8, !tbaa !5
  %346 = load ptr, ptr %28, align 8, !tbaa !5
  %347 = load ptr, ptr %25, align 8, !tbaa !5
  %348 = getelementptr inbounds double, ptr %347, i64 1
  %349 = load ptr, ptr %26, align 8, !tbaa !5
  %350 = getelementptr inbounds double, ptr %349, i64 1
  %351 = load ptr, ptr %42, align 8, !tbaa !5
  call void @dlarrc_(ptr noundef @.str.6, ptr noundef %344, ptr noundef %345, ptr noundef %346, ptr noundef %348, ptr noundef %350, ptr noundef %83, ptr noundef %95, ptr noundef %55, ptr noundef %58, ptr noundef %351)
  br label %365

352:                                              ; preds = %340, %337
  %353 = load i32, ptr %69, align 4, !tbaa !9
  %354 = icmp ne i32 %353, 0
  br i1 %354, label %355, label %363

355:                                              ; preds = %352
  %356 = load i32, ptr %76, align 4, !tbaa !9
  %357 = icmp ne i32 %356, 0
  br i1 %357, label %358, label %363

358:                                              ; preds = %355
  %359 = load i32, ptr %102, align 4, !tbaa !9
  %360 = load i32, ptr %101, align 4, !tbaa !9
  %361 = sub nsw i32 %359, %360
  %362 = add nsw i32 %361, 1
  store i32 %362, ptr %95, align 4, !tbaa !9
  br label %364

363:                                              ; preds = %355, %352
  store i32 0, ptr %95, align 4, !tbaa !9
  br label %364

364:                                              ; preds = %363, %358
  br label %365

365:                                              ; preds = %364, %343
  br label %366

366:                                              ; preds = %365, %334
  %367 = load i32, ptr %100, align 4, !tbaa !9
  %368 = icmp ne i32 %367, 0
  br i1 %368, label %369, label %388

369:                                              ; preds = %366
  %370 = load ptr, ptr %42, align 8, !tbaa !5
  %371 = load i32, ptr %370, align 4, !tbaa !9
  %372 = icmp eq i32 %371, 0
  br i1 %372, label %373, label %388

373:                                              ; preds = %369
  %374 = load i32, ptr %43, align 4, !tbaa !9
  %375 = add nsw i32 %374, 1
  store i32 %375, ptr %45, align 4, !tbaa !9
  %376 = load i32, ptr %95, align 4, !tbaa !9
  %377 = sitofp i32 %376 to double
  %378 = load ptr, ptr %33, align 8, !tbaa !5
  %379 = load i32, ptr %45, align 4, !tbaa !9
  %380 = sext i32 %379 to i64
  %381 = getelementptr inbounds %struct.doublecomplex, ptr %378, i64 %380
  %382 = getelementptr inbounds %struct.doublecomplex, ptr %381, i32 0, i32 0
  store double %377, ptr %382, align 8, !tbaa !13
  %383 = load ptr, ptr %33, align 8, !tbaa !5
  %384 = load i32, ptr %45, align 4, !tbaa !9
  %385 = sext i32 %384 to i64
  %386 = getelementptr inbounds %struct.doublecomplex, ptr %383, 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 = %369, %366
  %389 = load ptr, ptr %35, align 8, !tbaa !5
  %390 = load i32, ptr %389, align 4, !tbaa !9
  %391 = load i32, ptr %95, align 4, !tbaa !9
  %392 = icmp slt i32 %390, %391
  br i1 %392, label %393, label %398

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

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

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

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

400:                                              ; preds = %399, %316
  %401 = load ptr, ptr %42, align 8, !tbaa !5
  %402 = load i32, ptr %401, align 4, !tbaa !9
  %403 = icmp ne i32 %402, 0
  br i1 %403, label %404, label %409

404:                                              ; preds = %400
  %405 = load ptr, ptr %42, align 8, !tbaa !5
  %406 = load i32, ptr %405, align 4, !tbaa !9
  %407 = sub nsw i32 0, %406
  store i32 %407, ptr %45, align 4, !tbaa !9
  %408 = call i32 @xerbla_(ptr noundef @.str.7, ptr noundef %45, i32 noundef 6)
  store i32 1, ptr %105, align 4
  br label %1382

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

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

415:                                              ; preds = %412, %409
  store i32 1, ptr %105, align 4
  br label %1382

416:                                              ; preds = %412
  br label %417

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

422:                                              ; preds = %417
  store i32 1, ptr %105, align 4
  br label %1382

423:                                              ; preds = %417
  %424 = load ptr, ptr %24, align 8, !tbaa !5
  %425 = load i32, ptr %424, align 4, !tbaa !9
  %426 = icmp eq i32 %425, 1
  br i1 %426, label %427, label %484

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

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

433:                                              ; preds = %430, %427
  %434 = load ptr, ptr %31, align 8, !tbaa !5
  store i32 1, ptr %434, align 4, !tbaa !9
  %435 = load ptr, ptr %25, 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 %32, 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 %80, align 8, !tbaa !11
  %442 = load ptr, ptr %25, 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 %84, align 8, !tbaa !11
  %448 = load ptr, ptr %25, 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 %31, align 8, !tbaa !5
  store i32 1, ptr %453, align 4, !tbaa !9
  %454 = load ptr, ptr %25, 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 %32, 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 i32, ptr %69, align 4, !tbaa !9
  %462 = icmp ne i32 %461, 0
  br i1 %462, label %463, label %483

463:                                              ; preds = %460
  %464 = load i32, ptr %100, align 4, !tbaa !9
  %465 = icmp ne i32 %464, 0
  br i1 %465, label %483, label %466

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

483:                                              ; preds = %466, %463, %460
  store i32 1, ptr %105, align 4
  br label %1382

484:                                              ; preds = %423
  %485 = load ptr, ptr %24, align 8, !tbaa !5
  %486 = load i32, ptr %485, align 4, !tbaa !9
  %487 = icmp eq i32 %486, 2
  br i1 %487, label %488, label %751

488:                                              ; preds = %484
  %489 = load i32, ptr %69, align 4, !tbaa !9
  %490 = icmp ne i32 %489, 0
  br i1 %490, label %498, label %491

491:                                              ; preds = %488
  %492 = load ptr, ptr %25, 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 1
  %496 = load ptr, ptr %25, align 8, !tbaa !5
  %497 = getelementptr inbounds double, ptr %496, i64 2
  call void @dlae2_(ptr noundef %493, ptr noundef %495, ptr noundef %497, ptr noundef %70, ptr noundef %71)
  br label %512

498:                                              ; preds = %488
  %499 = load i32, ptr %69, align 4, !tbaa !9
  %500 = icmp ne i32 %499, 0
  br i1 %500, label %501, label %511

501:                                              ; preds = %498
  %502 = load i32, ptr %100, align 4, !tbaa !9
  %503 = icmp ne i32 %502, 0
  br i1 %503, label %511, label %504

504:                                              ; preds = %501
  %505 = load ptr, ptr %25, align 8, !tbaa !5
  %506 = getelementptr inbounds double, ptr %505, i64 1
  %507 = load ptr, ptr %26, align 8, !tbaa !5
  %508 = getelementptr inbounds double, ptr %507, i64 1
  %509 = load ptr, ptr %25, align 8, !tbaa !5
  %510 = getelementptr inbounds double, ptr %509, i64 2
  call void @dlaev2_(ptr noundef %506, ptr noundef %508, ptr noundef %510, ptr noundef %70, ptr noundef %71, ptr noundef %73, ptr noundef %79)
  br label %511

511:                                              ; preds = %504, %501, %498
  br label %512

512:                                              ; preds = %511, %491
  %513 = load i32, ptr %75, align 4, !tbaa !9
  %514 = icmp ne i32 %513, 0
  br i1 %514, label %532, label %515

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

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

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

526:                                              ; preds = %522, %518, %515
  %527 = load i32, ptr %76, align 4, !tbaa !9
  %528 = icmp ne i32 %527, 0
  br i1 %528, label %529, label %632

529:                                              ; preds = %526
  %530 = load i32, ptr %101, align 4, !tbaa !9
  %531 = icmp eq i32 %530, 1
  br i1 %531, label %532, label %632

532:                                              ; preds = %529, %522, %512
  %533 = load ptr, ptr %31, align 8, !tbaa !5
  %534 = load i32, ptr %533, align 4, !tbaa !9
  %535 = add nsw i32 %534, 1
  store i32 %535, ptr %533, align 4, !tbaa !9
  %536 = load double, ptr %71, align 8, !tbaa !11
  %537 = load ptr, ptr %32, align 8, !tbaa !5
  %538 = load ptr, ptr %31, align 8, !tbaa !5
  %539 = load i32, ptr %538, align 4, !tbaa !9
  %540 = sext i32 %539 to i64
  %541 = getelementptr inbounds double, ptr %537, i64 %540
  store double %536, ptr %541, align 8, !tbaa !11
  %542 = load i32, ptr %69, align 4, !tbaa !9
  %543 = icmp ne i32 %542, 0
  br i1 %543, label %544, label %631

544:                                              ; preds = %532
  %545 = load i32, ptr %100, align 4, !tbaa !9
  %546 = icmp ne i32 %545, 0
  br i1 %546, label %631, label %547

547:                                              ; preds = %544
  %548 = load ptr, ptr %31, align 8, !tbaa !5
  %549 = load i32, ptr %548, align 4, !tbaa !9
  %550 = load i32, ptr %43, align 4, !tbaa !9
  %551 = mul nsw i32 %549, %550
  %552 = add nsw i32 %551, 1
  store i32 %552, ptr %45, align 4, !tbaa !9
  %553 = load double, ptr %79, align 8, !tbaa !11
  %554 = fneg double %553
  store double %554, ptr %47, align 8, !tbaa !11
  %555 = load double, ptr %47, align 8, !tbaa !11
  %556 = load ptr, ptr %33, align 8, !tbaa !5
  %557 = load i32, ptr %45, align 4, !tbaa !9
  %558 = sext i32 %557 to i64
  %559 = getelementptr inbounds %struct.doublecomplex, ptr %556, i64 %558
  %560 = getelementptr inbounds %struct.doublecomplex, ptr %559, i32 0, i32 0
  store double %555, ptr %560, align 8, !tbaa !13
  %561 = load ptr, ptr %33, align 8, !tbaa !5
  %562 = load i32, ptr %45, align 4, !tbaa !9
  %563 = sext i32 %562 to i64
  %564 = getelementptr inbounds %struct.doublecomplex, ptr %561, i64 %563
  %565 = getelementptr inbounds %struct.doublecomplex, ptr %564, i32 0, i32 1
  store double 0.000000e+00, ptr %565, align 8, !tbaa !15
  %566 = load ptr, ptr %31, align 8, !tbaa !5
  %567 = load i32, ptr %566, align 4, !tbaa !9
  %568 = load i32, ptr %43, align 4, !tbaa !9
  %569 = mul nsw i32 %567, %568
  %570 = add nsw i32 %569, 2
  store i32 %570, ptr %45, align 4, !tbaa !9
  %571 = load double, ptr %73, align 8, !tbaa !11
  %572 = load ptr, ptr %33, align 8, !tbaa !5
  %573 = load i32, ptr %45, align 4, !tbaa !9
  %574 = sext i32 %573 to i64
  %575 = getelementptr inbounds %struct.doublecomplex, ptr %572, i64 %574
  %576 = getelementptr inbounds %struct.doublecomplex, ptr %575, i32 0, i32 0
  store double %571, ptr %576, align 8, !tbaa !13
  %577 = load ptr, ptr %33, align 8, !tbaa !5
  %578 = load i32, ptr %45, align 4, !tbaa !9
  %579 = sext i32 %578 to i64
  %580 = getelementptr inbounds %struct.doublecomplex, ptr %577, i64 %579
  %581 = getelementptr inbounds %struct.doublecomplex, ptr %580, i32 0, i32 1
  store double 0.000000e+00, ptr %581, align 8, !tbaa !15
  %582 = load double, ptr %79, align 8, !tbaa !11
  %583 = fcmp une double %582, 0.000000e+00
  br i1 %583, label %584, label %616

584:                                              ; preds = %547
  %585 = load double, ptr %73, align 8, !tbaa !11
  %586 = fcmp une double %585, 0.000000e+00
  br i1 %586, label %587, label %601

587:                                              ; preds = %584
  %588 = load ptr, ptr %36, align 8, !tbaa !5
  %589 = load ptr, ptr %31, align 8, !tbaa !5
  %590 = load i32, ptr %589, align 4, !tbaa !9
  %591 = shl i32 %590, 1
  %592 = sub nsw i32 %591, 1
  %593 = sext i32 %592 to i64
  %594 = getelementptr inbounds i32, ptr %588, i64 %593
  store i32 1, ptr %594, align 4, !tbaa !9
  %595 = load ptr, ptr %36, align 8, !tbaa !5
  %596 = load ptr, ptr %31, align 8, !tbaa !5
  %597 = load i32, ptr %596, align 4, !tbaa !9
  %598 = mul nsw i32 %597, 2
  %599 = sext i32 %598 to i64
  %600 = getelementptr inbounds i32, ptr %595, i64 %599
  store i32 2, ptr %600, align 4, !tbaa !9
  br label %615

601:                                              ; preds = %584
  %602 = load ptr, ptr %36, align 8, !tbaa !5
  %603 = load ptr, ptr %31, align 8, !tbaa !5
  %604 = load i32, ptr %603, align 4, !tbaa !9
  %605 = shl i32 %604, 1
  %606 = sub nsw i32 %605, 1
  %607 = sext i32 %606 to i64
  %608 = getelementptr inbounds i32, ptr %602, i64 %607
  store i32 1, ptr %608, align 4, !tbaa !9
  %609 = load ptr, ptr %36, align 8, !tbaa !5
  %610 = load ptr, ptr %31, align 8, !tbaa !5
  %611 = load i32, ptr %610, align 4, !tbaa !9
  %612 = mul nsw i32 %611, 2
  %613 = sext i32 %612 to i64
  %614 = getelementptr inbounds i32, ptr %609, i64 %613
  store i32 1, ptr %614, align 4, !tbaa !9
  br label %615

615:                                              ; preds = %601, %587
  br label %630

616:                                              ; preds = %547
  %617 = load ptr, ptr %36, align 8, !tbaa !5
  %618 = load ptr, ptr %31, align 8, !tbaa !5
  %619 = load i32, ptr %618, align 4, !tbaa !9
  %620 = shl i32 %619, 1
  %621 = sub nsw i32 %620, 1
  %622 = sext i32 %621 to i64
  %623 = getelementptr inbounds i32, ptr %617, i64 %622
  store i32 2, ptr %623, align 4, !tbaa !9
  %624 = load ptr, ptr %36, align 8, !tbaa !5
  %625 = load ptr, ptr %31, align 8, !tbaa !5
  %626 = load i32, ptr %625, align 4, !tbaa !9
  %627 = mul nsw i32 %626, 2
  %628 = sext i32 %627 to i64
  %629 = getelementptr inbounds i32, ptr %624, i64 %628
  store i32 2, ptr %629, align 4, !tbaa !9
  br label %630

630:                                              ; preds = %616, %615
  br label %631

631:                                              ; preds = %630, %544, %532
  br label %632

632:                                              ; preds = %631, %529, %526
  %633 = load i32, ptr %75, align 4, !tbaa !9
  %634 = icmp ne i32 %633, 0
  br i1 %634, label %652, label %635

635:                                              ; preds = %632
  %636 = load i32, ptr %81, align 4, !tbaa !9
  %637 = icmp ne i32 %636, 0
  br i1 %637, label %638, label %646

638:                                              ; preds = %635
  %639 = load double, ptr %70, align 8, !tbaa !11
  %640 = load double, ptr %80, align 8, !tbaa !11
  %641 = fcmp ogt double %639, %640
  br i1 %641, label %642, label %646

642:                                              ; preds = %638
  %643 = load double, ptr %70, align 8, !tbaa !11
  %644 = load double, ptr %84, align 8, !tbaa !11
  %645 = fcmp ole double %643, %644
  br i1 %645, label %652, label %646

646:                                              ; preds = %642, %638, %635
  %647 = load i32, ptr %76, align 4, !tbaa !9
  %648 = icmp ne i32 %647, 0
  br i1 %648, label %649, label %750

649:                                              ; preds = %646
  %650 = load i32, ptr %102, align 4, !tbaa !9
  %651 = icmp eq i32 %650, 2
  br i1 %651, label %652, label %750

652:                                              ; preds = %649, %642, %632
  %653 = load ptr, ptr %31, align 8, !tbaa !5
  %654 = load i32, ptr %653, align 4, !tbaa !9
  %655 = add nsw i32 %654, 1
  store i32 %655, ptr %653, align 4, !tbaa !9
  %656 = load double, ptr %70, align 8, !tbaa !11
  %657 = load ptr, ptr %32, align 8, !tbaa !5
  %658 = load ptr, ptr %31, align 8, !tbaa !5
  %659 = load i32, ptr %658, align 4, !tbaa !9
  %660 = sext i32 %659 to i64
  %661 = getelementptr inbounds double, ptr %657, i64 %660
  store double %656, ptr %661, align 8, !tbaa !11
  %662 = load i32, ptr %69, align 4, !tbaa !9
  %663 = icmp ne i32 %662, 0
  br i1 %663, label %664, label %749

664:                                              ; preds = %652
  %665 = load i32, ptr %100, align 4, !tbaa !9
  %666 = icmp ne i32 %665, 0
  br i1 %666, label %749, label %667

667:                                              ; preds = %664
  %668 = load ptr, ptr %31, align 8, !tbaa !5
  %669 = load i32, ptr %668, align 4, !tbaa !9
  %670 = load i32, ptr %43, align 4, !tbaa !9
  %671 = mul nsw i32 %669, %670
  %672 = add nsw i32 %671, 1
  store i32 %672, ptr %45, align 4, !tbaa !9
  %673 = load double, ptr %73, align 8, !tbaa !11
  %674 = load ptr, ptr %33, align 8, !tbaa !5
  %675 = load i32, ptr %45, align 4, !tbaa !9
  %676 = sext i32 %675 to i64
  %677 = getelementptr inbounds %struct.doublecomplex, ptr %674, i64 %676
  %678 = getelementptr inbounds %struct.doublecomplex, ptr %677, i32 0, i32 0
  store double %673, ptr %678, align 8, !tbaa !13
  %679 = load ptr, ptr %33, align 8, !tbaa !5
  %680 = load i32, ptr %45, align 4, !tbaa !9
  %681 = sext i32 %680 to i64
  %682 = getelementptr inbounds %struct.doublecomplex, ptr %679, i64 %681
  %683 = getelementptr inbounds %struct.doublecomplex, ptr %682, i32 0, i32 1
  store double 0.000000e+00, ptr %683, align 8, !tbaa !15
  %684 = load ptr, ptr %31, align 8, !tbaa !5
  %685 = load i32, ptr %684, align 4, !tbaa !9
  %686 = load i32, ptr %43, align 4, !tbaa !9
  %687 = mul nsw i32 %685, %686
  %688 = add nsw i32 %687, 2
  store i32 %688, ptr %45, align 4, !tbaa !9
  %689 = load double, ptr %79, align 8, !tbaa !11
  %690 = load ptr, ptr %33, align 8, !tbaa !5
  %691 = load i32, ptr %45, align 4, !tbaa !9
  %692 = sext i32 %691 to i64
  %693 = getelementptr inbounds %struct.doublecomplex, ptr %690, i64 %692
  %694 = getelementptr inbounds %struct.doublecomplex, ptr %693, i32 0, i32 0
  store double %689, ptr %694, align 8, !tbaa !13
  %695 = load ptr, ptr %33, align 8, !tbaa !5
  %696 = load i32, ptr %45, align 4, !tbaa !9
  %697 = sext i32 %696 to i64
  %698 = getelementptr inbounds %struct.doublecomplex, ptr %695, i64 %697
  %699 = getelementptr inbounds %struct.doublecomplex, ptr %698, i32 0, i32 1
  store double 0.000000e+00, ptr %699, align 8, !tbaa !15
  %700 = load double, ptr %79, align 8, !tbaa !11
  %701 = fcmp une double %700, 0.000000e+00
  br i1 %701, label %702, label %734

702:                                              ; preds = %667
  %703 = load double, ptr %73, align 8, !tbaa !11
  %704 = fcmp une double %703, 0.000000e+00
  br i1 %704, label %705, label %719

705:                                              ; preds = %702
  %706 = load ptr, ptr %36, align 8, !tbaa !5
  %707 = load ptr, ptr %31, align 8, !tbaa !5
  %708 = load i32, ptr %707, align 4, !tbaa !9
  %709 = shl i32 %708, 1
  %710 = sub nsw i32 %709, 1
  %711 = sext i32 %710 to i64
  %712 = getelementptr inbounds i32, ptr %706, i64 %711
  store i32 1, ptr %712, align 4, !tbaa !9
  %713 = load ptr, ptr %36, align 8, !tbaa !5
  %714 = load ptr, ptr %31, align 8, !tbaa !5
  %715 = load i32, ptr %714, align 4, !tbaa !9
  %716 = mul nsw i32 %715, 2
  %717 = sext i32 %716 to i64
  %718 = getelementptr inbounds i32, ptr %713, i64 %717
  store i32 2, ptr %718, align 4, !tbaa !9
  br label %733

719:                                              ; preds = %702
  %720 = load ptr, ptr %36, align 8, !tbaa !5
  %721 = load ptr, ptr %31, align 8, !tbaa !5
  %722 = load i32, ptr %721, align 4, !tbaa !9
  %723 = shl i32 %722, 1
  %724 = sub nsw i32 %723, 1
  %725 = sext i32 %724 to i64
  %726 = getelementptr inbounds i32, ptr %720, i64 %725
  store i32 1, ptr %726, align 4, !tbaa !9
  %727 = load ptr, ptr %36, align 8, !tbaa !5
  %728 = load ptr, ptr %31, align 8, !tbaa !5
  %729 = load i32, ptr %728, align 4, !tbaa !9
  %730 = mul nsw i32 %729, 2
  %731 = sext i32 %730 to i64
  %732 = getelementptr inbounds i32, ptr %727, i64 %731
  store i32 1, ptr %732, align 4, !tbaa !9
  br label %733

733:                                              ; preds = %719, %705
  br label %748

734:                                              ; preds = %667
  %735 = load ptr, ptr %36, align 8, !tbaa !5
  %736 = load ptr, ptr %31, align 8, !tbaa !5
  %737 = load i32, ptr %736, align 4, !tbaa !9
  %738 = shl i32 %737, 1
  %739 = sub nsw i32 %738, 1
  %740 = sext i32 %739 to i64
  %741 = getelementptr inbounds i32, ptr %735, i64 %740
  store i32 2, ptr %741, align 4, !tbaa !9
  %742 = load ptr, ptr %36, align 8, !tbaa !5
  %743 = load ptr, ptr %31, align 8, !tbaa !5
  %744 = load i32, ptr %743, align 4, !tbaa !9
  %745 = mul nsw i32 %744, 2
  %746 = sext i32 %745 to i64
  %747 = getelementptr inbounds i32, ptr %742, i64 %746
  store i32 2, ptr %747, align 4, !tbaa !9
  br label %748

748:                                              ; preds = %734, %733
  br label %749

749:                                              ; preds = %748, %664, %652
  br label %750

750:                                              ; preds = %749, %649, %646
  br label %1221

751:                                              ; preds = %484
  store i32 1, ptr %88, align 4, !tbaa !9
  %752 = load ptr, ptr %24, align 8, !tbaa !5
  %753 = load i32, ptr %752, align 4, !tbaa !9
  %754 = shl i32 %753, 1
  %755 = add nsw i32 %754, 1
  store i32 %755, ptr %86, align 4, !tbaa !9
  %756 = load ptr, ptr %24, align 8, !tbaa !5
  %757 = load i32, ptr %756, align 4, !tbaa !9
  %758 = mul nsw i32 %757, 3
  %759 = add nsw i32 %758, 1
  store i32 %759, ptr %64, align 4, !tbaa !9
  %760 = load ptr, ptr %24, align 8, !tbaa !5
  %761 = load i32, ptr %760, align 4, !tbaa !9
  %762 = shl i32 %761, 2
  %763 = add nsw i32 %762, 1
  store i32 %763, ptr %49, align 4, !tbaa !9
  %764 = load ptr, ptr %24, align 8, !tbaa !5
  %765 = load i32, ptr %764, align 4, !tbaa !9
  %766 = mul nsw i32 %765, 5
  %767 = add nsw i32 %766, 1
  store i32 %767, ptr %57, align 4, !tbaa !9
  %768 = load ptr, ptr %24, align 8, !tbaa !5
  %769 = load i32, ptr %768, align 4, !tbaa !9
  %770 = mul nsw i32 %769, 6
  %771 = add nsw i32 %770, 1
  store i32 %771, ptr %92, align 4, !tbaa !9
  store i32 1, ptr %91, align 4, !tbaa !9
  %772 = load ptr, ptr %24, align 8, !tbaa !5
  %773 = load i32, ptr %772, align 4, !tbaa !9
  %774 = add nsw i32 %773, 1
  store i32 %774, ptr %78, align 4, !tbaa !9
  %775 = load ptr, ptr %24, align 8, !tbaa !5
  %776 = load i32, ptr %775, align 4, !tbaa !9
  %777 = shl i32 %776, 1
  %778 = add nsw i32 %777, 1
  store i32 %778, ptr %66, align 4, !tbaa !9
  %779 = load ptr, ptr %24, align 8, !tbaa !5
  %780 = load i32, ptr %779, align 4, !tbaa !9
  %781 = mul nsw i32 %780, 3
  %782 = add nsw i32 %781, 1
  store i32 %782, ptr %87, align 4, !tbaa !9
  store double 1.000000e+00, ptr %63, align 8, !tbaa !11
  %783 = load ptr, ptr %24, align 8, !tbaa !5
  %784 = load ptr, ptr %25, align 8, !tbaa !5
  %785 = getelementptr inbounds double, ptr %784, i64 1
  %786 = load ptr, ptr %26, align 8, !tbaa !5
  %787 = getelementptr inbounds double, ptr %786, i64 1
  %788 = call double @dlanst_(ptr noundef @.str.8, ptr noundef %783, ptr noundef %785, ptr noundef %787)
  store double %788, ptr %56, align 8, !tbaa !11
  %789 = load double, ptr %56, align 8, !tbaa !11
  %790 = fcmp ogt double %789, 0.000000e+00
  br i1 %790, label %791, label %799

791:                                              ; preds = %751
  %792 = load double, ptr %56, align 8, !tbaa !11
  %793 = load double, ptr %53, align 8, !tbaa !11
  %794 = fcmp olt double %792, %793
  br i1 %794, label %795, label %799

795:                                              ; preds = %791
  %796 = load double, ptr %53, align 8, !tbaa !11
  %797 = load double, ptr %56, align 8, !tbaa !11
  %798 = fdiv double %796, %797
  store double %798, ptr %63, align 8, !tbaa !11
  br label %808

799:                                              ; preds = %791, %751
  %800 = load double, ptr %56, align 8, !tbaa !11
  %801 = load double, ptr %54, align 8, !tbaa !11
  %802 = fcmp ogt double %800, %801
  br i1 %802, label %803, label %807

803:                                              ; preds = %799
  %804 = load double, ptr %54, align 8, !tbaa !11
  %805 = load double, ptr %56, align 8, !tbaa !11
  %806 = fdiv double %804, %805
  store double %806, ptr %63, align 8, !tbaa !11
  br label %807

807:                                              ; preds = %803, %799
  br label %808

808:                                              ; preds = %807, %795
  %809 = load double, ptr %63, align 8, !tbaa !11
  %810 = fcmp une double %809, 1.000000e+00
  br i1 %810, label %811, label %833

811:                                              ; preds = %808
  %812 = load ptr, ptr %24, align 8, !tbaa !5
  %813 = load ptr, ptr %25, align 8, !tbaa !5
  %814 = getelementptr inbounds double, ptr %813, i64 1
  call void @dscal_(ptr noundef %812, ptr noundef %63, ptr noundef %814, ptr noundef @c__1)
  %815 = load ptr, ptr %24, align 8, !tbaa !5
  %816 = load i32, ptr %815, align 4, !tbaa !9
  %817 = sub nsw i32 %816, 1
  store i32 %817, ptr %45, align 4, !tbaa !9
  %818 = load ptr, ptr %26, align 8, !tbaa !5
  %819 = getelementptr inbounds double, ptr %818, i64 1
  call void @dscal_(ptr noundef %45, ptr noundef %63, ptr noundef %819, ptr noundef @c__1)
  %820 = load double, ptr %63, align 8, !tbaa !11
  %821 = load double, ptr %56, align 8, !tbaa !11
  %822 = fmul double %821, %820
  store double %822, ptr %56, align 8, !tbaa !11
  %823 = load i32, ptr %81, align 4, !tbaa !9
  %824 = icmp ne i32 %823, 0
  br i1 %824, label %825, label %832

825:                                              ; preds = %811
  %826 = load double, ptr %63, align 8, !tbaa !11
  %827 = load double, ptr %80, align 8, !tbaa !11
  %828 = fmul double %827, %826
  store double %828, ptr %80, align 8, !tbaa !11
  %829 = load double, ptr %63, align 8, !tbaa !11
  %830 = load double, ptr %84, align 8, !tbaa !11
  %831 = fmul double %830, %829
  store double %831, ptr %84, align 8, !tbaa !11
  br label %832

832:                                              ; preds = %825, %811
  br label %833

833:                                              ; preds = %832, %808
  %834 = load ptr, ptr %37, align 8, !tbaa !5
  %835 = load i32, ptr %834, align 4, !tbaa !9
  %836 = icmp ne i32 %835, 0
  br i1 %836, label %837, label %843

837:                                              ; preds = %833
  %838 = load ptr, ptr %24, align 8, !tbaa !5
  %839 = load ptr, ptr %25, align 8, !tbaa !5
  %840 = getelementptr inbounds double, ptr %839, i64 1
  %841 = load ptr, ptr %26, align 8, !tbaa !5
  %842 = getelementptr inbounds double, ptr %841, i64 1
  call void @dlarrr_(ptr noundef %838, ptr noundef %840, ptr noundef %842, ptr noundef %65)
  br label %844

843:                                              ; preds = %833
  store i32 -1, ptr %65, align 4, !tbaa !9
  br label %844

844:                                              ; preds = %843, %837
  %845 = load i32, ptr %65, align 4, !tbaa !9
  %846 = icmp eq i32 %845, 0
  br i1 %846, label %847, label %849

847:                                              ; preds = %844
  %848 = load double, ptr %103, align 8, !tbaa !11
  store double %848, ptr %90, align 8, !tbaa !11
  br label %853

849:                                              ; preds = %844
  %850 = load double, ptr %103, align 8, !tbaa !11
  %851 = fneg double %850
  store double %851, ptr %90, align 8, !tbaa !11
  %852 = load ptr, ptr %37, align 8, !tbaa !5
  store i32 0, ptr %852, align 4, !tbaa !9
  br label %853

853:                                              ; preds = %849, %847
  %854 = load ptr, ptr %37, align 8, !tbaa !5
  %855 = load i32, ptr %854, align 4, !tbaa !9
  %856 = icmp ne i32 %855, 0
  br i1 %856, label %857, label %865

857:                                              ; preds = %853
  %858 = load ptr, ptr %24, align 8, !tbaa !5
  %859 = load ptr, ptr %25, align 8, !tbaa !5
  %860 = getelementptr inbounds double, ptr %859, i64 1
  %861 = load ptr, ptr %38, align 8, !tbaa !5
  %862 = load i32, ptr %49, align 4, !tbaa !9
  %863 = sext i32 %862 to i64
  %864 = getelementptr inbounds double, ptr %861, i64 %863
  call void @dcopy_(ptr noundef %858, ptr noundef %860, ptr noundef @c__1, ptr noundef %864, ptr noundef @c__1)
  br label %865

865:                                              ; preds = %857, %853
  %866 = load ptr, ptr %24, align 8, !tbaa !5
  %867 = load i32, ptr %866, align 4, !tbaa !9
  %868 = sub nsw i32 %867, 1
  store i32 %868, ptr %45, align 4, !tbaa !9
  store i32 1, ptr %62, align 4, !tbaa !9
  br label %869

869:                                              ; preds = %889, %865
  %870 = load i32, ptr %62, align 4, !tbaa !9
  %871 = load i32, ptr %45, align 4, !tbaa !9
  %872 = icmp sle i32 %870, %871
  br i1 %872, label %873, label %892

873:                                              ; preds = %869
  %874 = load ptr, ptr %26, align 8, !tbaa !5
  %875 = load i32, ptr %62, align 4, !tbaa !9
  %876 = sext i32 %875 to i64
  %877 = getelementptr inbounds double, ptr %874, i64 %876
  %878 = load double, ptr %877, align 8, !tbaa !11
  store double %878, ptr %47, align 8, !tbaa !11
  %879 = load double, ptr %47, align 8, !tbaa !11
  %880 = load double, ptr %47, align 8, !tbaa !11
  %881 = fmul double %879, %880
  %882 = load ptr, ptr %38, align 8, !tbaa !5
  %883 = load i32, ptr %57, align 4, !tbaa !9
  %884 = load i32, ptr %62, align 4, !tbaa !9
  %885 = add nsw i32 %883, %884
  %886 = sub nsw i32 %885, 1
  %887 = sext i32 %886 to i64
  %888 = getelementptr inbounds double, ptr %882, i64 %887
  store double %881, ptr %888, align 8, !tbaa !11
  br label %889

889:                                              ; preds = %873
  %890 = load i32, ptr %62, align 4, !tbaa !9
  %891 = add nsw i32 %890, 1
  store i32 %891, ptr %62, align 4, !tbaa !9
  br label %869, !llvm.loop !16

892:                                              ; preds = %869
  %893 = load i32, ptr %69, align 4, !tbaa !9
  %894 = icmp ne i32 %893, 0
  br i1 %894, label %900, label %895

895:                                              ; preds = %892
  %896 = load double, ptr %103, align 8, !tbaa !11
  %897 = fmul double %896, 4.000000e+00
  store double %897, ptr %59, align 8, !tbaa !11
  %898 = load double, ptr %103, align 8, !tbaa !11
  %899 = fmul double %898, 4.000000e+00
  store double %899, ptr %60, align 8, !tbaa !11
  br label %917

900:                                              ; preds = %892
  %901 = load double, ptr %103, align 8, !tbaa !11
  %902 = call double @sqrt(double noundef %901) #4
  store double %902, ptr %59, align 8, !tbaa !11
  %903 = load double, ptr %103, align 8, !tbaa !11
  %904 = call double @sqrt(double noundef %903) #4
  %905 = fmul double %904, 5.000000e-03
  store double %905, ptr %47, align 8, !tbaa !11
  %906 = load double, ptr %103, align 8, !tbaa !11
  %907 = fmul double %906, 4.000000e+00
  store double %907, ptr %48, align 8, !tbaa !11
  %908 = load double, ptr %47, align 8, !tbaa !11
  %909 = load double, ptr %48, align 8, !tbaa !11
  %910 = fcmp oge double %908, %909
  br i1 %910, label %911, label %913

911:                                              ; preds = %900
  %912 = load double, ptr %47, align 8, !tbaa !11
  br label %915

913:                                              ; preds = %900
  %914 = load double, ptr %48, align 8, !tbaa !11
  br label %915

915:                                              ; preds = %913, %911
  %916 = phi double [ %912, %911 ], [ %914, %913 ]
  store double %916, ptr %60, align 8, !tbaa !11
  br label %917

917:                                              ; preds = %915, %895
  %918 = load ptr, ptr %23, align 8, !tbaa !5
  %919 = load ptr, ptr %24, align 8, !tbaa !5
  %920 = load ptr, ptr %25, align 8, !tbaa !5
  %921 = getelementptr inbounds double, ptr %920, i64 1
  %922 = load ptr, ptr %26, align 8, !tbaa !5
  %923 = getelementptr inbounds double, ptr %922, i64 1
  %924 = load ptr, ptr %38, align 8, !tbaa !5
  %925 = load i32, ptr %57, align 4, !tbaa !9
  %926 = sext i32 %925 to i64
  %927 = getelementptr inbounds double, ptr %924, i64 %926
  %928 = load ptr, ptr %40, align 8, !tbaa !5
  %929 = load i32, ptr %91, align 4, !tbaa !9
  %930 = sext i32 %929 to i64
  %931 = getelementptr inbounds i32, ptr %928, i64 %930
  %932 = load ptr, ptr %31, align 8, !tbaa !5
  %933 = load ptr, ptr %32, align 8, !tbaa !5
  %934 = getelementptr inbounds double, ptr %933, i64 1
  %935 = load ptr, ptr %38, align 8, !tbaa !5
  %936 = load i32, ptr %86, align 4, !tbaa !9
  %937 = sext i32 %936 to i64
  %938 = getelementptr inbounds double, ptr %935, i64 %937
  %939 = load ptr, ptr %38, align 8, !tbaa !5
  %940 = load i32, ptr %64, align 4, !tbaa !9
  %941 = sext i32 %940 to i64
  %942 = getelementptr inbounds double, ptr %939, i64 %941
  %943 = load ptr, ptr %40, align 8, !tbaa !5
  %944 = load i32, ptr %78, align 4, !tbaa !9
  %945 = sext i32 %944 to i64
  %946 = getelementptr inbounds i32, ptr %943, i64 %945
  %947 = load ptr, ptr %40, align 8, !tbaa !5
  %948 = load i32, ptr %66, align 4, !tbaa !9
  %949 = sext i32 %948 to i64
  %950 = getelementptr inbounds i32, ptr %947, i64 %949
  %951 = load ptr, ptr %38, align 8, !tbaa !5
  %952 = load i32, ptr %88, align 4, !tbaa !9
  %953 = sext i32 %952 to i64
  %954 = getelementptr inbounds double, ptr %951, i64 %953
  %955 = load ptr, ptr %38, align 8, !tbaa !5
  %956 = load i32, ptr %92, align 4, !tbaa !9
  %957 = sext i32 %956 to i64
  %958 = getelementptr inbounds double, ptr %955, i64 %957
  %959 = load ptr, ptr %40, align 8, !tbaa !5
  %960 = load i32, ptr %87, align 4, !tbaa !9
  %961 = sext i32 %960 to i64
  %962 = getelementptr inbounds i32, ptr %959, i64 %961
  call void @dlarre_(ptr noundef %918, ptr noundef %919, ptr noundef %80, ptr noundef %84, ptr noundef %101, ptr noundef %102, ptr noundef %921, ptr noundef %923, ptr noundef %927, ptr noundef %59, ptr noundef %60, ptr noundef %90, ptr noundef %97, ptr noundef %931, ptr noundef %932, ptr noundef %934, ptr noundef %938, ptr noundef %942, ptr noundef %946, ptr noundef %950, ptr noundef %954, ptr noundef %96, ptr noundef %958, ptr noundef %962, ptr noundef %65)
  %963 = load i32, ptr %65, align 4, !tbaa !9
  %964 = icmp ne i32 %963, 0
  br i1 %964, label %965, label %977

965:                                              ; preds = %917
  %966 = load i32, ptr %65, align 4, !tbaa !9
  %967 = icmp sge i32 %966, 0
  br i1 %967, label %968, label %970

968:                                              ; preds = %965
  %969 = load i32, ptr %65, align 4, !tbaa !9
  br label %973

970:                                              ; preds = %965
  %971 = load i32, ptr %65, align 4, !tbaa !9
  %972 = sub nsw i32 0, %971
  br label %973

973:                                              ; preds = %970, %968
  %974 = phi i32 [ %969, %968 ], [ %972, %970 ]
  %975 = add nsw i32 %974, 10
  %976 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 %975, ptr %976, align 4, !tbaa !9
  store i32 1, ptr %105, align 4
  br label %1382

977:                                              ; preds = %917
  %978 = load i32, ptr %69, align 4, !tbaa !9
  %979 = icmp ne i32 %978, 0
  br i1 %979, label %980, label %1044

980:                                              ; preds = %977
  %981 = load ptr, ptr %24, align 8, !tbaa !5
  %982 = load ptr, ptr %25, align 8, !tbaa !5
  %983 = getelementptr inbounds double, ptr %982, i64 1
  %984 = load ptr, ptr %26, align 8, !tbaa !5
  %985 = getelementptr inbounds double, ptr %984, i64 1
  %986 = load ptr, ptr %40, align 8, !tbaa !5
  %987 = load i32, ptr %91, align 4, !tbaa !9
  %988 = sext i32 %987 to i64
  %989 = getelementptr inbounds i32, ptr %986, i64 %988
  %990 = load ptr, ptr %31, align 8, !tbaa !5
  %991 = load ptr, ptr %31, align 8, !tbaa !5
  %992 = load ptr, ptr %32, align 8, !tbaa !5
  %993 = getelementptr inbounds double, ptr %992, i64 1
  %994 = load ptr, ptr %38, align 8, !tbaa !5
  %995 = load i32, ptr %86, align 4, !tbaa !9
  %996 = sext i32 %995 to i64
  %997 = getelementptr inbounds double, ptr %994, i64 %996
  %998 = load ptr, ptr %38, align 8, !tbaa !5
  %999 = load i32, ptr %64, align 4, !tbaa !9
  %1000 = sext i32 %999 to i64
  %1001 = getelementptr inbounds double, ptr %998, i64 %1000
  %1002 = load ptr, ptr %40, align 8, !tbaa !5
  %1003 = load i32, ptr %78, align 4, !tbaa !9
  %1004 = sext i32 %1003 to i64
  %1005 = getelementptr inbounds i32, ptr %1002, i64 %1004
  %1006 = load ptr, ptr %40, align 8, !tbaa !5
  %1007 = load i32, ptr %66, align 4, !tbaa !9
  %1008 = sext i32 %1007 to i64
  %1009 = getelementptr inbounds i32, ptr %1006, i64 %1008
  %1010 = load ptr, ptr %38, align 8, !tbaa !5
  %1011 = load i32, ptr %88, align 4, !tbaa !9
  %1012 = sext i32 %1011 to i64
  %1013 = getelementptr inbounds double, ptr %1010, i64 %1012
  %1014 = load ptr, ptr %33, align 8, !tbaa !5
  %1015 = load i32, ptr %44, align 4, !tbaa !9
  %1016 = sext i32 %1015 to i64
  %1017 = getelementptr inbounds %struct.doublecomplex, ptr %1014, i64 %1016
  %1018 = load ptr, ptr %34, align 8, !tbaa !5
  %1019 = load ptr, ptr %36, align 8, !tbaa !5
  %1020 = getelementptr inbounds i32, ptr %1019, i64 1
  %1021 = load ptr, ptr %38, align 8, !tbaa !5
  %1022 = load i32, ptr %92, align 4, !tbaa !9
  %1023 = sext i32 %1022 to i64
  %1024 = getelementptr inbounds double, ptr %1021, i64 %1023
  %1025 = load ptr, ptr %40, align 8, !tbaa !5
  %1026 = load i32, ptr %87, align 4, !tbaa !9
  %1027 = sext i32 %1026 to i64
  %1028 = getelementptr inbounds i32, ptr %1025, i64 %1027
  call void @zlarrv_(ptr noundef %981, ptr noundef %80, ptr noundef %84, ptr noundef %983, ptr noundef %985, ptr noundef %96, ptr noundef %989, ptr noundef %990, ptr noundef @c__1, ptr noundef %991, ptr noundef @c_b18, ptr noundef %59, ptr noundef %60, ptr noundef %993, ptr noundef %997, ptr noundef %1001, ptr noundef %1005, ptr noundef %1009, ptr noundef %1013, ptr noundef %1017, ptr noundef %1018, ptr noundef %1020, ptr noundef %1024, ptr noundef %1028, ptr noundef %65)
  %1029 = load i32, ptr %65, align 4, !tbaa !9
  %1030 = icmp ne i32 %1029, 0
  br i1 %1030, label %1031, label %1043

1031:                                             ; preds = %980
  %1032 = load i32, ptr %65, align 4, !tbaa !9
  %1033 = icmp sge i32 %1032, 0
  br i1 %1033, label %1034, label %1036

1034:                                             ; preds = %1031
  %1035 = load i32, ptr %65, align 4, !tbaa !9
  br label %1039

1036:                                             ; preds = %1031
  %1037 = load i32, ptr %65, align 4, !tbaa !9
  %1038 = sub nsw i32 0, %1037
  br label %1039

1039:                                             ; preds = %1036, %1034
  %1040 = phi i32 [ %1035, %1034 ], [ %1038, %1036 ]
  %1041 = add nsw i32 %1040, 20
  %1042 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 %1041, ptr %1042, align 4, !tbaa !9
  store i32 1, ptr %105, align 4
  br label %1382

1043:                                             ; preds = %980
  br label %1082

1044:                                             ; preds = %977
  %1045 = load ptr, ptr %31, align 8, !tbaa !5
  %1046 = load i32, ptr %1045, align 4, !tbaa !9
  store i32 %1046, ptr %45, align 4, !tbaa !9
  store i32 1, ptr %62, align 4, !tbaa !9
  br label %1047

1047:                                             ; preds = %1078, %1044
  %1048 = load i32, ptr %62, align 4, !tbaa !9
  %1049 = load i32, ptr %45, align 4, !tbaa !9
  %1050 = icmp sle i32 %1048, %1049
  br i1 %1050, label %1051, label %1081

1051:                                             ; preds = %1047
  %1052 = load ptr, ptr %40, align 8, !tbaa !5
  %1053 = load i32, ptr %78, align 4, !tbaa !9
  %1054 = load i32, ptr %62, align 4, !tbaa !9
  %1055 = add nsw i32 %1053, %1054
  %1056 = sub nsw i32 %1055, 1
  %1057 = sext i32 %1056 to i64
  %1058 = getelementptr inbounds i32, ptr %1052, i64 %1057
  %1059 = load i32, ptr %1058, align 4, !tbaa !9
  store i32 %1059, ptr %55, align 4, !tbaa !9
  %1060 = load ptr, ptr %26, align 8, !tbaa !5
  %1061 = load ptr, ptr %40, align 8, !tbaa !5
  %1062 = load i32, ptr %91, align 4, !tbaa !9
  %1063 = load i32, ptr %55, align 4, !tbaa !9
  %1064 = add nsw i32 %1062, %1063
  %1065 = sub nsw i32 %1064, 1
  %1066 = sext i32 %1065 to i64
  %1067 = getelementptr inbounds i32, ptr %1061, i64 %1066
  %1068 = load i32, ptr %1067, align 4, !tbaa !9
  %1069 = sext i32 %1068 to i64
  %1070 = getelementptr inbounds double, ptr %1060, i64 %1069
  %1071 = load double, ptr %1070, align 8, !tbaa !11
  %1072 = load ptr, ptr %32, align 8, !tbaa !5
  %1073 = load i32, ptr %62, align 4, !tbaa !9
  %1074 = sext i32 %1073 to i64
  %1075 = getelementptr inbounds double, ptr %1072, i64 %1074
  %1076 = load double, ptr %1075, align 8, !tbaa !11
  %1077 = fadd double %1076, %1071
  store double %1077, ptr %1075, align 8, !tbaa !11
  br label %1078

1078:                                             ; preds = %1051
  %1079 = load i32, ptr %62, align 4, !tbaa !9
  %1080 = add nsw i32 %1079, 1
  store i32 %1080, ptr %62, align 4, !tbaa !9
  br label %1047, !llvm.loop !18

1081:                                             ; preds = %1047
  br label %1082

1082:                                             ; preds = %1081, %1043
  %1083 = load ptr, ptr %37, align 8, !tbaa !5
  %1084 = load i32, ptr %1083, align 4, !tbaa !9
  %1085 = icmp ne i32 %1084, 0
  br i1 %1085, label %1086, label %1211

1086:                                             ; preds = %1082
  store i32 1, ptr %77, align 4, !tbaa !9
  store i32 1, ptr %82, align 4, !tbaa !9
  %1087 = load ptr, ptr %40, align 8, !tbaa !5
  %1088 = load i32, ptr %78, align 4, !tbaa !9
  %1089 = load ptr, ptr %31, align 8, !tbaa !5
  %1090 = load i32, ptr %1089, align 4, !tbaa !9
  %1091 = add nsw i32 %1088, %1090
  %1092 = sub nsw i32 %1091, 1
  %1093 = sext i32 %1092 to i64
  %1094 = getelementptr inbounds i32, ptr %1087, i64 %1093
  %1095 = load i32, ptr %1094, align 4, !tbaa !9
  store i32 %1095, ptr %45, align 4, !tbaa !9
  store i32 1, ptr %51, align 4, !tbaa !9
  br label %1096

1096:                                             ; preds = %1207, %1086
  %1097 = load i32, ptr %51, align 4, !tbaa !9
  %1098 = load i32, ptr %45, align 4, !tbaa !9
  %1099 = icmp sle i32 %1097, %1098
  br i1 %1099, label %1100, label %1210

1100:                                             ; preds = %1096
  %1101 = load ptr, ptr %40, align 8, !tbaa !5
  %1102 = load i32, ptr %91, align 4, !tbaa !9
  %1103 = load i32, ptr %51, align 4, !tbaa !9
  %1104 = add nsw i32 %1102, %1103
  %1105 = sub nsw i32 %1104, 1
  %1106 = sext i32 %1105 to i64
  %1107 = getelementptr inbounds i32, ptr %1101, i64 %1106
  %1108 = load i32, ptr %1107, align 4, !tbaa !9
  store i32 %1108, ptr %50, align 4, !tbaa !9
  %1109 = load i32, ptr %50, align 4, !tbaa !9
  %1110 = load i32, ptr %77, align 4, !tbaa !9
  %1111 = sub nsw i32 %1109, %1110
  %1112 = add nsw i32 %1111, 1
  store i32 %1112, ptr %74, align 4, !tbaa !9
  %1113 = load i32, ptr %82, align 4, !tbaa !9
  %1114 = sub nsw i32 %1113, 1
  store i32 %1114, ptr %52, align 4, !tbaa !9
  br label %1115

1115:                                             ; preds = %1130, %1100
  %1116 = load i32, ptr %52, align 4, !tbaa !9
  %1117 = load ptr, ptr %31, align 8, !tbaa !5
  %1118 = load i32, ptr %1117, align 4, !tbaa !9
  %1119 = icmp slt i32 %1116, %1118
  br i1 %1119, label %1120, label %1134

1120:                                             ; preds = %1115
  %1121 = load ptr, ptr %40, align 8, !tbaa !5
  %1122 = load i32, ptr %78, align 4, !tbaa !9
  %1123 = load i32, ptr %52, align 4, !tbaa !9
  %1124 = add nsw i32 %1122, %1123
  %1125 = sext i32 %1124 to i64
  %1126 = getelementptr inbounds i32, ptr %1121, i64 %1125
  %1127 = load i32, ptr %1126, align 4, !tbaa !9
  %1128 = load i32, ptr %51, align 4, !tbaa !9
  %1129 = icmp eq i32 %1127, %1128
  br i1 %1129, label %1130, label %1133

1130:                                             ; preds = %1120
  %1131 = load i32, ptr %52, align 4, !tbaa !9
  %1132 = add nsw i32 %1131, 1
  store i32 %1132, ptr %52, align 4, !tbaa !9
  br label %1115

1133:                                             ; preds = %1120
  br label %1134

1134:                                             ; preds = %1133, %1115
  %1135 = load i32, ptr %52, align 4, !tbaa !9
  %1136 = load i32, ptr %82, align 4, !tbaa !9
  %1137 = icmp slt i32 %1135, %1136
  br i1 %1137, label %1138, label %1141

1138:                                             ; preds = %1134
  %1139 = load i32, ptr %50, align 4, !tbaa !9
  %1140 = add nsw i32 %1139, 1
  store i32 %1140, ptr %77, align 4, !tbaa !9
  br label %1206

1141:                                             ; preds = %1134
  %1142 = load ptr, ptr %40, align 8, !tbaa !5
  %1143 = load i32, ptr %66, align 4, !tbaa !9
  %1144 = load i32, ptr %82, align 4, !tbaa !9
  %1145 = add nsw i32 %1143, %1144
  %1146 = sub nsw i32 %1145, 1
  %1147 = sext i32 %1146 to i64
  %1148 = getelementptr inbounds i32, ptr %1142, i64 %1147
  %1149 = load i32, ptr %1148, align 4, !tbaa !9
  %1150 = sub nsw i32 %1149, 1
  store i32 %1150, ptr %89, align 4, !tbaa !9
  %1151 = load ptr, ptr %40, align 8, !tbaa !5
  %1152 = load i32, ptr %66, align 4, !tbaa !9
  %1153 = load i32, ptr %82, align 4, !tbaa !9
  %1154 = add nsw i32 %1152, %1153
  %1155 = sub nsw i32 %1154, 1
  %1156 = sext i32 %1155 to i64
  %1157 = getelementptr inbounds i32, ptr %1151, i64 %1156
  %1158 = load i32, ptr %1157, align 4, !tbaa !9
  store i32 %1158, ptr %93, align 4, !tbaa !9
  %1159 = load ptr, ptr %40, align 8, !tbaa !5
  %1160 = load i32, ptr %66, align 4, !tbaa !9
  %1161 = load i32, ptr %52, align 4, !tbaa !9
  %1162 = add nsw i32 %1160, %1161
  %1163 = sub nsw i32 %1162, 1
  %1164 = sext i32 %1163 to i64
  %1165 = getelementptr inbounds i32, ptr %1159, i64 %1164
  %1166 = load i32, ptr %1165, align 4, !tbaa !9
  store i32 %1166, ptr %67, align 4, !tbaa !9
  %1167 = load double, ptr %103, align 8, !tbaa !11
  %1168 = fmul double %1167, 4.000000e+00
  store double %1168, ptr %60, align 8, !tbaa !11
  %1169 = load ptr, ptr %38, align 8, !tbaa !5
  %1170 = load i32, ptr %49, align 4, !tbaa !9
  %1171 = load i32, ptr %77, align 4, !tbaa !9
  %1172 = add nsw i32 %1170, %1171
  %1173 = sub nsw i32 %1172, 1
  %1174 = sext i32 %1173 to i64
  %1175 = getelementptr inbounds double, ptr %1169, i64 %1174
  %1176 = load ptr, ptr %38, align 8, !tbaa !5
  %1177 = load i32, ptr %57, align 4, !tbaa !9
  %1178 = load i32, ptr %77, align 4, !tbaa !9
  %1179 = add nsw i32 %1177, %1178
  %1180 = sub nsw i32 %1179, 1
  %1181 = sext i32 %1180 to i64
  %1182 = getelementptr inbounds double, ptr %1176, i64 %1181
  %1183 = load ptr, ptr %32, align 8, !tbaa !5
  %1184 = load i32, ptr %82, align 4, !tbaa !9
  %1185 = sext i32 %1184 to i64
  %1186 = getelementptr inbounds double, ptr %1183, i64 %1185
  %1187 = load ptr, ptr %38, align 8, !tbaa !5
  %1188 = load i32, ptr %86, align 4, !tbaa !9
  %1189 = load i32, ptr %82, align 4, !tbaa !9
  %1190 = add nsw i32 %1188, %1189
  %1191 = sub nsw i32 %1190, 1
  %1192 = sext i32 %1191 to i64
  %1193 = getelementptr inbounds double, ptr %1187, i64 %1192
  %1194 = load ptr, ptr %38, align 8, !tbaa !5
  %1195 = load i32, ptr %92, align 4, !tbaa !9
  %1196 = sext i32 %1195 to i64
  %1197 = getelementptr inbounds double, ptr %1194, i64 %1196
  %1198 = load ptr, ptr %40, align 8, !tbaa !5
  %1199 = load i32, ptr %87, align 4, !tbaa !9
  %1200 = sext i32 %1199 to i64
  %1201 = getelementptr inbounds i32, ptr %1198, i64 %1200
  call void @dlarrj_(ptr noundef %74, ptr noundef %1175, ptr noundef %1182, ptr noundef %93, ptr noundef %67, ptr noundef %60, ptr noundef %89, ptr noundef %1186, ptr noundef %1193, ptr noundef %1197, ptr noundef %1201, ptr noundef %96, ptr noundef %56, ptr noundef %65)
  %1202 = load i32, ptr %50, align 4, !tbaa !9
  %1203 = add nsw i32 %1202, 1
  store i32 %1203, ptr %77, align 4, !tbaa !9
  %1204 = load i32, ptr %52, align 4, !tbaa !9
  %1205 = add nsw i32 %1204, 1
  store i32 %1205, ptr %82, align 4, !tbaa !9
  br label %1206

1206:                                             ; preds = %1141, %1138
  br label %1207

1207:                                             ; preds = %1206
  %1208 = load i32, ptr %51, align 4, !tbaa !9
  %1209 = add nsw i32 %1208, 1
  store i32 %1209, ptr %51, align 4, !tbaa !9
  br label %1096, !llvm.loop !19

1210:                                             ; preds = %1096
  br label %1211

1211:                                             ; preds = %1210, %1082
  %1212 = load double, ptr %63, align 8, !tbaa !11
  %1213 = fcmp une double %1212, 1.000000e+00
  br i1 %1213, label %1214, label %1220

1214:                                             ; preds = %1211
  %1215 = load double, ptr %63, align 8, !tbaa !11
  %1216 = fdiv double 1.000000e+00, %1215
  store double %1216, ptr %47, align 8, !tbaa !11
  %1217 = load ptr, ptr %31, align 8, !tbaa !5
  %1218 = load ptr, ptr %32, align 8, !tbaa !5
  %1219 = getelementptr inbounds double, ptr %1218, i64 1
  call void @dscal_(ptr noundef %1217, ptr noundef %47, ptr noundef %1219, ptr noundef @c__1)
  br label %1220

1220:                                             ; preds = %1214, %1211
  br label %1221

1221:                                             ; preds = %1220, %750
  %1222 = load i32, ptr %97, align 4, !tbaa !9
  %1223 = icmp sgt i32 %1222, 1
  br i1 %1223, label %1228, label %1224

1224:                                             ; preds = %1221
  %1225 = load ptr, ptr %24, align 8, !tbaa !5
  %1226 = load i32, ptr %1225, align 4, !tbaa !9
  %1227 = icmp eq i32 %1226, 2
  br i1 %1227, label %1228, label %1374

1228:                                             ; preds = %1224, %1221
  %1229 = load i32, ptr %69, align 4, !tbaa !9
  %1230 = icmp ne i32 %1229, 0
  br i1 %1230, label %1240, label %1231

1231:                                             ; preds = %1228
  %1232 = load ptr, ptr %31, align 8, !tbaa !5
  %1233 = load ptr, ptr %32, align 8, !tbaa !5
  %1234 = getelementptr inbounds double, ptr %1233, i64 1
  call void @dlasrt_(ptr noundef @.str.2, ptr noundef %1232, ptr noundef %1234, ptr noundef %65)
  %1235 = load i32, ptr %65, align 4, !tbaa !9
  %1236 = icmp ne i32 %1235, 0
  br i1 %1236, label %1237, label %1239

1237:                                             ; preds = %1231
  %1238 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 3, ptr %1238, align 4, !tbaa !9
  store i32 1, ptr %105, align 4
  br label %1382

1239:                                             ; preds = %1231
  br label %1373

1240:                                             ; preds = %1228
  %1241 = load ptr, ptr %31, align 8, !tbaa !5
  %1242 = load i32, ptr %1241, align 4, !tbaa !9
  %1243 = sub nsw i32 %1242, 1
  store i32 %1243, ptr %45, align 4, !tbaa !9
  store i32 1, ptr %62, align 4, !tbaa !9
  br label %1244

1244:                                             ; preds = %1369, %1240
  %1245 = load i32, ptr %62, align 4, !tbaa !9
  %1246 = load i32, ptr %45, align 4, !tbaa !9
  %1247 = icmp sle i32 %1245, %1246
  br i1 %1247, label %1248, label %1372

1248:                                             ; preds = %1244
  store i32 0, ptr %61, align 4, !tbaa !9
  %1249 = load ptr, ptr %32, align 8, !tbaa !5
  %1250 = load i32, ptr %62, align 4, !tbaa !9
  %1251 = sext i32 %1250 to i64
  %1252 = getelementptr inbounds double, ptr %1249, i64 %1251
  %1253 = load double, ptr %1252, align 8, !tbaa !11
  store double %1253, ptr %104, align 8, !tbaa !11
  %1254 = load ptr, ptr %31, align 8, !tbaa !5
  %1255 = load i32, ptr %1254, align 4, !tbaa !9
  store i32 %1255, ptr %46, align 4, !tbaa !9
  %1256 = load i32, ptr %62, align 4, !tbaa !9
  %1257 = add nsw i32 %1256, 1
  store i32 %1257, ptr %72, align 4, !tbaa !9
  br label %1258

1258:                                             ; preds = %1278, %1248
  %1259 = load i32, ptr %72, align 4, !tbaa !9
  %1260 = load i32, ptr %46, align 4, !tbaa !9
  %1261 = icmp sle i32 %1259, %1260
  br i1 %1261, label %1262, label %1281

1262:                                             ; preds = %1258
  %1263 = load ptr, ptr %32, align 8, !tbaa !5
  %1264 = load i32, ptr %72, align 4, !tbaa !9
  %1265 = sext i32 %1264 to i64
  %1266 = getelementptr inbounds double, ptr %1263, i64 %1265
  %1267 = load double, ptr %1266, align 8, !tbaa !11
  %1268 = load double, ptr %104, align 8, !tbaa !11
  %1269 = fcmp olt double %1267, %1268
  br i1 %1269, label %1270, label %1277

1270:                                             ; preds = %1262
  %1271 = load i32, ptr %72, align 4, !tbaa !9
  store i32 %1271, ptr %61, align 4, !tbaa !9
  %1272 = load ptr, ptr %32, align 8, !tbaa !5
  %1273 = load i32, ptr %72, align 4, !tbaa !9
  %1274 = sext i32 %1273 to i64
  %1275 = getelementptr inbounds double, ptr %1272, i64 %1274
  %1276 = load double, ptr %1275, align 8, !tbaa !11
  store double %1276, ptr %104, align 8, !tbaa !11
  br label %1277

1277:                                             ; preds = %1270, %1262
  br label %1278

1278:                                             ; preds = %1277
  %1279 = load i32, ptr %72, align 4, !tbaa !9
  %1280 = add nsw i32 %1279, 1
  store i32 %1280, ptr %72, align 4, !tbaa !9
  br label %1258, !llvm.loop !20

1281:                                             ; preds = %1258
  %1282 = load i32, ptr %61, align 4, !tbaa !9
  %1283 = icmp ne i32 %1282, 0
  br i1 %1283, label %1284, label %1368

1284:                                             ; preds = %1281
  %1285 = load ptr, ptr %32, align 8, !tbaa !5
  %1286 = load i32, ptr %62, align 4, !tbaa !9
  %1287 = sext i32 %1286 to i64
  %1288 = getelementptr inbounds double, ptr %1285, i64 %1287
  %1289 = load double, ptr %1288, align 8, !tbaa !11
  %1290 = load ptr, ptr %32, align 8, !tbaa !5
  %1291 = load i32, ptr %61, align 4, !tbaa !9
  %1292 = sext i32 %1291 to i64
  %1293 = getelementptr inbounds double, ptr %1290, i64 %1292
  store double %1289, ptr %1293, align 8, !tbaa !11
  %1294 = load double, ptr %104, align 8, !tbaa !11
  %1295 = load ptr, ptr %32, align 8, !tbaa !5
  %1296 = load i32, ptr %62, align 4, !tbaa !9
  %1297 = sext i32 %1296 to i64
  %1298 = getelementptr inbounds double, ptr %1295, i64 %1297
  store double %1294, ptr %1298, align 8, !tbaa !11
  %1299 = load i32, ptr %69, align 4, !tbaa !9
  %1300 = icmp ne i32 %1299, 0
  br i1 %1300, label %1301, label %1367

1301:                                             ; preds = %1284
  %1302 = load ptr, ptr %24, align 8, !tbaa !5
  %1303 = load ptr, ptr %33, align 8, !tbaa !5
  %1304 = load i32, ptr %61, align 4, !tbaa !9
  %1305 = load i32, ptr %43, align 4, !tbaa !9
  %1306 = mul nsw i32 %1304, %1305
  %1307 = add nsw i32 %1306, 1
  %1308 = sext i32 %1307 to i64
  %1309 = getelementptr inbounds %struct.doublecomplex, ptr %1303, i64 %1308
  %1310 = load ptr, ptr %33, align 8, !tbaa !5
  %1311 = load i32, ptr %62, align 4, !tbaa !9
  %1312 = load i32, ptr %43, align 4, !tbaa !9
  %1313 = mul nsw i32 %1311, %1312
  %1314 = add nsw i32 %1313, 1
  %1315 = sext i32 %1314 to i64
  %1316 = getelementptr inbounds %struct.doublecomplex, ptr %1310, i64 %1315
  call void @zswap_(ptr noundef %1302, ptr noundef %1309, ptr noundef @c__1, ptr noundef %1316, ptr noundef @c__1)
  %1317 = load ptr, ptr %36, align 8, !tbaa !5
  %1318 = load i32, ptr %61, align 4, !tbaa !9
  %1319 = shl i32 %1318, 1
  %1320 = sub nsw i32 %1319, 1
  %1321 = sext i32 %1320 to i64
  %1322 = getelementptr inbounds i32, ptr %1317, i64 %1321
  %1323 = load i32, ptr %1322, align 4, !tbaa !9
  store i32 %1323, ptr %55, align 4, !tbaa !9
  %1324 = load ptr, ptr %36, align 8, !tbaa !5
  %1325 = load i32, ptr %62, align 4, !tbaa !9
  %1326 = shl i32 %1325, 1
  %1327 = sub nsw i32 %1326, 1
  %1328 = sext i32 %1327 to i64
  %1329 = getelementptr inbounds i32, ptr %1324, i64 %1328
  %1330 = load i32, ptr %1329, align 4, !tbaa !9
  %1331 = load ptr, ptr %36, align 8, !tbaa !5
  %1332 = load i32, ptr %61, align 4, !tbaa !9
  %1333 = shl i32 %1332, 1
  %1334 = sub nsw i32 %1333, 1
  %1335 = sext i32 %1334 to i64
  %1336 = getelementptr inbounds i32, ptr %1331, i64 %1335
  store i32 %1330, ptr %1336, align 4, !tbaa !9
  %1337 = load i32, ptr %55, align 4, !tbaa !9
  %1338 = load ptr, ptr %36, align 8, !tbaa !5
  %1339 = load i32, ptr %62, align 4, !tbaa !9
  %1340 = shl i32 %1339, 1
  %1341 = sub nsw i32 %1340, 1
  %1342 = sext i32 %1341 to i64
  %1343 = getelementptr inbounds i32, ptr %1338, i64 %1342
  store i32 %1337, ptr %1343, align 4, !tbaa !9
  %1344 = load ptr, ptr %36, align 8, !tbaa !5
  %1345 = load i32, ptr %61, align 4, !tbaa !9
  %1346 = mul nsw i32 %1345, 2
  %1347 = sext i32 %1346 to i64
  %1348 = getelementptr inbounds i32, ptr %1344, i64 %1347
  %1349 = load i32, ptr %1348, align 4, !tbaa !9
  store i32 %1349, ptr %55, align 4, !tbaa !9
  %1350 = load ptr, ptr %36, align 8, !tbaa !5
  %1351 = load i32, ptr %62, align 4, !tbaa !9
  %1352 = mul nsw i32 %1351, 2
  %1353 = sext i32 %1352 to i64
  %1354 = getelementptr inbounds i32, ptr %1350, i64 %1353
  %1355 = load i32, ptr %1354, align 4, !tbaa !9
  %1356 = load ptr, ptr %36, align 8, !tbaa !5
  %1357 = load i32, ptr %61, align 4, !tbaa !9
  %1358 = mul nsw i32 %1357, 2
  %1359 = sext i32 %1358 to i64
  %1360 = getelementptr inbounds i32, ptr %1356, i64 %1359
  store i32 %1355, ptr %1360, align 4, !tbaa !9
  %1361 = load i32, ptr %55, align 4, !tbaa !9
  %1362 = load ptr, ptr %36, align 8, !tbaa !5
  %1363 = load i32, ptr %62, align 4, !tbaa !9
  %1364 = mul nsw i32 %1363, 2
  %1365 = sext i32 %1364 to i64
  %1366 = getelementptr inbounds i32, ptr %1362, i64 %1365
  store i32 %1361, ptr %1366, align 4, !tbaa !9
  br label %1367

1367:                                             ; preds = %1301, %1284
  br label %1368

1368:                                             ; preds = %1367, %1281
  br label %1369

1369:                                             ; preds = %1368
  %1370 = load i32, ptr %62, align 4, !tbaa !9
  %1371 = add nsw i32 %1370, 1
  store i32 %1371, ptr %62, align 4, !tbaa !9
  br label %1244, !llvm.loop !21

1372:                                             ; preds = %1244
  br label %1373

1373:                                             ; preds = %1372, %1239
  br label %1374

1374:                                             ; preds = %1373, %1224
  %1375 = load i32, ptr %68, align 4, !tbaa !9
  %1376 = sitofp i32 %1375 to double
  %1377 = load ptr, ptr %38, align 8, !tbaa !5
  %1378 = getelementptr inbounds double, ptr %1377, i64 1
  store double %1376, ptr %1378, align 8, !tbaa !11
  %1379 = load i32, ptr %94, align 4, !tbaa !9
  %1380 = load ptr, ptr %40, align 8, !tbaa !5
  %1381 = getelementptr inbounds i32, ptr %1380, i64 1
  store i32 %1379, ptr %1381, align 4, !tbaa !9
  store i32 1, ptr %105, align 4
  br label %1382

1382:                                             ; preds = %1374, %1237, %1039, %973, %483, %422, %415, %404
  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 4, ptr %102) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %101) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %99) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #4
  ret void
}

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

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

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

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

declare void @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 = !{!"int", !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 i32, align 4
@c_b18 = external hidden global double, align 8

; Function Attrs: nounwind uwtable
define dso_local void @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 i32, align 4
  %25 = alloca double, align 8
  %26 = alloca i32, align 4
  %27 = alloca double, align 8
  %28 = alloca i32, align 4
  %29 = alloca double, align 8
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca double, align 8
  %35 = alloca double, align 8
  %36 = alloca double, align 8
  %37 = alloca i32, align 4
  %38 = alloca double, align 8
  %39 = alloca double, align 8
  %40 = alloca double, align 8
  %41 = alloca double, align 8
  %42 = alloca i32, align 4
  %43 = alloca double, align 8
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca double, align 8
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #5
  call void @llvm.lifetime.start.p0(i64 4, 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 4, ptr nonnull %32) #5
  call void @llvm.lifetime.start.p0(i64 4, 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 4, 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 4, ptr nonnull %42) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %44) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %45) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %46) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %47) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %48) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %49) #5
  %50 = getelementptr inbounds i8, ptr %4, i64 -8
  %51 = getelementptr inbounds i8, ptr %10, i64 -8
  %52 = load i32, ptr %12, align 4, !tbaa !5
  %53 = add nsw i32 %52, 1
  %narrow = xor i32 %52, -1
  %54 = sext i32 %narrow to i64
  %55 = getelementptr inbounds %struct.doublecomplex, ptr %11, i64 %54
  %56 = getelementptr inbounds i8, ptr %14, i64 -4
  %57 = getelementptr inbounds i8, ptr %16, i64 -8
  %58 = getelementptr inbounds i8, ptr %18, i64 -4
  %59 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #5
  %60 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #5
  %61 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #5
  %62 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.2) #5
  %63 = load i32, ptr %17, align 4, !tbaa !5
  %64 = icmp eq i32 %63, -1
  br i1 %64, label %68, label %65

65:                                               ; preds = %21
  %66 = load i32, ptr %19, align 4, !tbaa !5
  %67 = icmp eq i32 %66, -1
  br label %68

68:                                               ; preds = %65, %21
  %69 = phi i1 [ true, %21 ], [ %67, %65 ]
  %70 = load i32, ptr %13, align 4, !tbaa !5
  %71 = icmp eq i32 %70, -1
  %72 = icmp ne i32 %59, 0
  %73 = load i32, ptr %2, align 4, !tbaa !5
  %74 = mul nsw i32 %73, 10
  %75 = shl i32 %73, 3
  %.0443.v = select i1 %72, i32 18, i32 12
  %.0443 = mul nsw i32 %73, %.0443.v
  %.0432 = select i1 %72, i32 %74, i32 %75
  store double 0.000000e+00, ptr %39, align 8, !tbaa !9
  store double 0.000000e+00, ptr %41, align 8, !tbaa !9
  store i32 0, ptr %48, align 4, !tbaa !5
  store i32 0, ptr %49, align 4, !tbaa !5
  store i32 0, ptr %47, align 4, !tbaa !5
  %76 = icmp ne i32 %61, 0
  br i1 %76, label %77, label %80

77:                                               ; preds = %68
  %78 = load double, ptr %5, align 8, !tbaa !9
  store double %78, ptr %39, align 8, !tbaa !9
  %79 = load double, ptr %6, align 8, !tbaa !9
  store double %79, ptr %41, align 8, !tbaa !9
  br label %84

80:                                               ; preds = %68
  %.not = icmp eq i32 %62, 0
  br i1 %.not, label %84, label %81

81:                                               ; preds = %80
  %82 = load i32, ptr %7, align 4, !tbaa !5
  store i32 %82, ptr %48, align 4, !tbaa !5
  %83 = load i32, ptr %8, align 4, !tbaa !5
  store i32 %83, ptr %49, align 4, !tbaa !5
  br label %84

84:                                               ; preds = %80, %81, %77
  %85 = phi i32 [ 0, %80 ], [ %83, %81 ], [ 0, %77 ]
  %86 = phi i32 [ 0, %80 ], [ %82, %81 ], [ 0, %77 ]
  %87 = phi double [ 0.000000e+00, %80 ], [ 0.000000e+00, %81 ], [ %78, %77 ]
  %88 = phi double [ 0.000000e+00, %80 ], [ 0.000000e+00, %81 ], [ %79, %77 ]
  store i32 0, ptr %20, align 4, !tbaa !5
  br i1 %72, label %91, label %89

89:                                               ; preds = %84
  %90 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.3) #5
  %.not463 = icmp eq i32 %90, 0
  br i1 %.not463, label %.sink.split, label %91

91:                                               ; preds = %89, %84
  %92 = or i32 %61, %60
  %or.cond = icmp ne i32 %92, 0
  %93 = icmp ne i32 %62, 0
  %or.cond3 = select i1 %or.cond, i1 true, i1 %93
  br i1 %or.cond3, label %94, label %.sink.split

94:                                               ; preds = %91
  %95 = load i32, ptr %2, align 4, !tbaa !5
  %96 = icmp slt i32 %95, 0
  br i1 %96, label %.sink.split, label %97

97:                                               ; preds = %94
  %.not464 = icmp ne i32 %95, 0
  %or.cond480.not = and i1 %76, %.not464
  %98 = fcmp ole double %88, %87
  %or.cond587.not = select i1 %or.cond480.not, i1 %98, i1 false
  br i1 %or.cond587.not, label %.sink.split, label %99

99:                                               ; preds = %97
  br i1 %93, label %100, label %.critedge

100:                                              ; preds = %99
  %101 = icmp slt i32 %86, 1
  %102 = icmp ugt i32 %86, %95
  %or.cond499 = or i1 %101, %102
  br i1 %or.cond499, label %.sink.split, label %103

103:                                              ; preds = %100
  %104 = icmp slt i32 %85, %86
  %105 = icmp ugt i32 %85, %95
  %or.cond500 = or i1 %104, %105
  br i1 %or.cond500, label %.sink.split, label %.critedge

.critedge:                                        ; preds = %103, %99
  %106 = load i32, ptr %12, align 4, !tbaa !5
  %107 = icmp slt i32 %106, 1
  %108 = icmp ult i32 %106, %95
  %or.cond501 = and i1 %72, %108
  %or.cond502 = or i1 %107, %or.cond501
  br i1 %or.cond502, label %.sink.split, label %109

109:                                              ; preds = %.critedge
  %110 = load i32, ptr %17, align 4, !tbaa !5
  %111 = icmp sge i32 %110, %.0443
  %or.cond5 = select i1 %111, i1 true, i1 %69
  br i1 %or.cond5, label %112, label %.sink.split

112:                                              ; preds = %109
  %113 = load i32, ptr %19, align 4, !tbaa !5
  %114 = icmp sge i32 %113, %.0432
  %or.cond7 = select i1 %114, i1 true, i1 %69
  br i1 %or.cond7, label %115, label %.sink.split

.sink.split:                                      ; preds = %112, %109, %.critedge, %103, %100, %97, %94, %91, %89
  %.sink = phi i32 [ -1, %89 ], [ -2, %91 ], [ -3, %94 ], [ -7, %97 ], [ -8, %100 ], [ -9, %103 ], [ -13, %.critedge ], [ -17, %109 ], [ -19, %112 ]
  store i32 %.sink, ptr %20, align 4, !tbaa !5
  br label %115

115:                                              ; preds = %.sink.split, %112
  %116 = tail call double @dlamch_(ptr noundef nonnull @.str.4) #5
  store double %116, ptr %40, align 8, !tbaa !9
  %117 = tail call double @dlamch_(ptr noundef nonnull @.str.5) #5
  %118 = fdiv double %116, %117
  %119 = fdiv double 1.000000e+00, %118
  %120 = tail call double @sqrt(double noundef %118) #5
  %121 = tail call double @sqrt(double noundef %119) #5
  store double %121, ptr %25, align 8, !tbaa !9
  %122 = tail call double @sqrt(double noundef %116) #5
  %123 = tail call double @sqrt(double noundef %122) #5
  %124 = fdiv double 1.000000e+00, %123
  %125 = fcmp ole double %121, %124
  %126 = select i1 %125, double %121, double %124
  %127 = load i32, ptr %20, align 4, !tbaa !5
  %128 = icmp eq i32 %127, 0
  br i1 %128, label %129, label %.thread489

129:                                              ; preds = %115
  %130 = sitofp i32 %.0443 to double
  store double %130, ptr %16, align 8, !tbaa !9
  store i32 %.0432, ptr %18, align 4, !tbaa !5
  %131 = icmp ne i32 %60, 0
  %or.cond9 = select i1 %72, i1 %131, i1 false
  br i1 %or.cond9, label %132, label %134

132:                                              ; preds = %129
  %133 = load i32, ptr %2, align 4, !tbaa !5
  store i32 %133, ptr %45, align 4, !tbaa !5
  br label %142

134:                                              ; preds = %129
  %or.cond11 = and i1 %72, %76
  br i1 %or.cond11, label %135, label %136

135:                                              ; preds = %134
  call void @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 %40, ptr noundef nonnull %45, ptr noundef nonnull %26, ptr noundef nonnull %28, ptr noundef nonnull %20) #5
  br label %142

136:                                              ; preds = %134
  %137 = icmp ne i32 %62, 0
  %or.cond13 = select i1 %72, i1 %137, i1 false
  br i1 %or.cond13, label %138, label %141

138:                                              ; preds = %136
  %139 = add i32 %85, 1
  %140 = sub i32 %139, %86
  store i32 %140, ptr %45, align 4, !tbaa !5
  br label %142

141:                                              ; preds = %136
  store i32 0, ptr %45, align 4, !tbaa !5
  br label %142

142:                                              ; preds = %135, %141, %138, %132
  br i1 %71, label %143, label %150

143:                                              ; preds = %142
  %144 = load i32, ptr %20, align 4, !tbaa !5
  %145 = icmp eq i32 %144, 0
  br i1 %145, label %.thread576, label %.thread489

.thread576:                                       ; preds = %143
  %146 = load i32, ptr %45, align 4, !tbaa !5
  %147 = sitofp i32 %146 to double
  store double %147, ptr %11, align 8, !tbaa !11
  %148 = sext i32 %53 to i64
  %149 = getelementptr inbounds %struct.doublecomplex, ptr %55, i64 %148, i32 1
  store double 0.000000e+00, ptr %149, align 8, !tbaa !13
  br label %566

150:                                              ; preds = %142
  %151 = load i32, ptr %13, align 4, !tbaa !5
  %152 = load i32, ptr %45, align 4, !tbaa !5
  %.not573 = icmp slt i32 %151, %152
  br i1 %.not573, label %153, label %154

153:                                              ; preds = %150
  store i32 -14, ptr %20, align 4, !tbaa !5
  br label %.thread489

154:                                              ; preds = %150
  %.pr.pre = load i32, ptr %20, align 4, !tbaa !5
  %.not465 = icmp eq i32 %.pr.pre, 0
  br i1 %.not465, label %158, label %.thread489

.thread489:                                       ; preds = %143, %115, %153, %154
  %155 = phi i32 [ %.pr.pre, %154 ], [ %127, %115 ], [ -14, %153 ], [ %144, %143 ]
  %156 = sub nsw i32 0, %155
  store i32 %156, ptr %24, align 4, !tbaa !5
  %157 = call i32 @xerbla_(ptr noundef nonnull @.str.7, ptr noundef nonnull %24, i32 noundef 6) #5
  br label %566

158:                                              ; preds = %154
  %or.cond17 = select i1 %69, i1 true, i1 %71
  br i1 %or.cond17, label %566, label %159

159:                                              ; preds = %158
  store i32 0, ptr %9, align 4, !tbaa !5
  %160 = load i32, ptr %2, align 4, !tbaa !5
  switch i32 %160, label %288 [
    i32 0, label %566
    i32 1, label %161
    i32 2, label %178
  ]

161:                                              ; preds = %159
  %162 = icmp ne i32 %62, 0
  %or.cond19 = select i1 %131, i1 true, i1 %162
  br i1 %or.cond19, label %163, label %165

163:                                              ; preds = %161
  store i32 1, ptr %9, align 4, !tbaa !5
  %164 = load double, ptr %3, align 8, !tbaa !9
  br label %.sink.split588

165:                                              ; preds = %161
  %166 = load double, ptr %39, align 8, !tbaa !9
  %167 = load double, ptr %3, align 8, !tbaa !9
  %168 = fcmp uge double %166, %167
  %169 = load double, ptr %41, align 8
  %170 = fcmp ult double %169, %167
  %or.cond482 = select i1 %168, i1 true, i1 %170
  br i1 %or.cond482, label %172, label %171

171:                                              ; preds = %165
  store i32 1, ptr %9, align 4, !tbaa !5
  br label %.sink.split588

.sink.split588:                                   ; preds = %163, %171
  %.sink589 = phi double [ %167, %171 ], [ %164, %163 ]
  store double %.sink589, ptr %10, align 8, !tbaa !9
  br label %172

172:                                              ; preds = %.sink.split588, %165
  %173 = icmp eq i32 %59, 0
  br i1 %173, label %566, label %174

174:                                              ; preds = %172
  store double 1.000000e+00, ptr %11, align 8, !tbaa !11
  %175 = sext i32 %53 to i64
  %176 = getelementptr inbounds %struct.doublecomplex, ptr %55, i64 %175, i32 1
  store double 0.000000e+00, ptr %176, align 8, !tbaa !13
  store i32 1, ptr %14, align 4, !tbaa !5
  %177 = getelementptr inbounds i8, ptr %14, i64 4
  store i32 1, ptr %177, align 4, !tbaa !5
  br label %566

178:                                              ; preds = %159
  %179 = getelementptr inbounds i8, ptr %3, i64 8
  br i1 %72, label %181, label %180

180:                                              ; preds = %178
  call void @dlae2_(ptr noundef %3, ptr noundef %4, ptr noundef nonnull %179, ptr noundef nonnull %34, ptr noundef nonnull %35) #5
  br label %182

181:                                              ; preds = %178
  call void @dlaev2_(ptr noundef %3, ptr noundef %4, ptr noundef nonnull %179, ptr noundef nonnull %34, ptr noundef nonnull %35, ptr noundef nonnull %36, ptr noundef nonnull %38) #5
  br label %182

182:                                              ; preds = %181, %180
  %.not474 = icmp eq i32 %60, 0
  br i1 %.not474, label %183, label %194

183:                                              ; preds = %182
  br i1 %76, label %184, label %190

184:                                              ; preds = %183
  %185 = load double, ptr %35, align 8, !tbaa !9
  %186 = load double, ptr %39, align 8, !tbaa !9
  %187 = fcmp ule double %185, %186
  %188 = load double, ptr %41, align 8
  %189 = fcmp ugt double %185, %188
  %or.cond484 = select i1 %187, i1 true, i1 %189
  br i1 %or.cond484, label %190, label %194

190:                                              ; preds = %184, %183
  %191 = icmp ne i32 %62, 0
  %192 = load i32, ptr %48, align 4
  %193 = icmp eq i32 %192, 1
  %or.cond25 = select i1 %191, i1 %193, i1 false
  br i1 %or.cond25, label %194, label %.thread491

194:                                              ; preds = %184, %190, %182
  %195 = load i32, ptr %9, align 4, !tbaa !5
  %196 = add nsw i32 %195, 1
  store i32 %196, ptr %9, align 4, !tbaa !5
  %197 = load double, ptr %35, align 8, !tbaa !9
  %198 = sext i32 %196 to i64
  %199 = getelementptr inbounds double, ptr %51, i64 %198
  store double %197, ptr %199, align 8, !tbaa !9
  %200 = icmp eq i32 %59, 0
  br i1 %200, label %236, label %201

201:                                              ; preds = %194
  %202 = mul nsw i32 %196, %52
  %203 = add nsw i32 %202, 1
  %204 = load double, ptr %38, align 8, !tbaa !9
  %205 = fneg double %204
  store double %205, ptr %25, align 8, !tbaa !9
  %206 = sext i32 %203 to i64
  %207 = getelementptr inbounds %struct.doublecomplex, ptr %55, i64 %206
  store double %205, ptr %207, align 8, !tbaa !11
  %208 = getelementptr inbounds %struct.doublecomplex, ptr %55, i64 %206, i32 1
  store double 0.000000e+00, ptr %208, align 8, !tbaa !13
  %209 = add nsw i32 %202, 2
  store i32 %209, ptr %24, align 4, !tbaa !5
  %210 = load double, ptr %36, align 8, !tbaa !9
  %211 = sext i32 %209 to i64
  %212 = getelementptr inbounds %struct.doublecomplex, ptr %55, i64 %211
  store double %210, ptr %212, align 8, !tbaa !11
  %213 = getelementptr inbounds %struct.doublecomplex, ptr %55, i64 %211, i32 1
  store double 0.000000e+00, ptr %213, align 8, !tbaa !13
  %214 = fcmp une double %204, 0.000000e+00
  br i1 %214, label %215, label %227

215:                                              ; preds = %201
  %216 = fcmp une double %210, 0.000000e+00
  %217 = shl i32 %196, 1
  %218 = sext i32 %217 to i64
  %219 = getelementptr i32, ptr %56, i64 %218
  %220 = getelementptr i8, ptr %219, i64 -4
  store i32 1, ptr %220, align 4, !tbaa !5
  %221 = load i32, ptr %9, align 4, !tbaa !5
  %222 = shl nsw i32 %221, 1
  %223 = sext i32 %222 to i64
  %224 = getelementptr inbounds i32, ptr %56, i64 %223
  br i1 %216, label %225, label %226

225:                                              ; preds = %215
  store i32 2, ptr %224, align 4, !tbaa !5
  br label %236

226:                                              ; preds = %215
  store i32 1, ptr %224, align 4, !tbaa !5
  br label %236

227:                                              ; preds = %201
  %228 = shl i32 %196, 1
  %229 = sext i32 %228 to i64
  %230 = getelementptr i32, ptr %56, i64 %229
  %231 = getelementptr i8, ptr %230, i64 -4
  store i32 2, ptr %231, align 4, !tbaa !5
  %232 = load i32, ptr %9, align 4, !tbaa !5
  %233 = shl nsw i32 %232, 1
  %234 = sext i32 %233 to i64
  %235 = getelementptr inbounds i32, ptr %56, i64 %234
  store i32 2, ptr %235, align 4, !tbaa !5
  br label %236

236:                                              ; preds = %194, %225, %226, %227
  br i1 %.not474, label %.thread491, label %247

.thread491:                                       ; preds = %190, %236
  br i1 %76, label %237, label %243

237:                                              ; preds = %.thread491
  %238 = load double, ptr %34, align 8, !tbaa !9
  %239 = load double, ptr %39, align 8, !tbaa !9
  %240 = fcmp ule double %238, %239
  %241 = load double, ptr %41, align 8
  %242 = fcmp ugt double %238, %241
  %or.cond486 = select i1 %240, i1 true, i1 %242
  br i1 %or.cond486, label %243, label %247

243:                                              ; preds = %237, %.thread491
  %244 = icmp ne i32 %62, 0
  %245 = load i32, ptr %49, align 4
  %246 = icmp eq i32 %245, 2
  %or.cond29 = select i1 %244, i1 %246, i1 false
  br i1 %or.cond29, label %247, label %513

247:                                              ; preds = %237, %243, %236
  %248 = load i32, ptr %9, align 4, !tbaa !5
  %249 = add nsw i32 %248, 1
  store i32 %249, ptr %9, align 4, !tbaa !5
  %250 = load double, ptr %34, align 8, !tbaa !9
  %251 = sext i32 %249 to i64
  %252 = getelementptr inbounds double, ptr %51, i64 %251
  store double %250, ptr %252, align 8, !tbaa !9
  %253 = icmp eq i32 %59, 0
  br i1 %253, label %513, label %254

254:                                              ; preds = %247
  %255 = mul nsw i32 %249, %52
  %256 = add nsw i32 %255, 1
  %257 = load double, ptr %36, align 8, !tbaa !9
  %258 = sext i32 %256 to i64
  %259 = getelementptr inbounds %struct.doublecomplex, ptr %55, i64 %258
  store double %257, ptr %259, align 8, !tbaa !11
  %260 = getelementptr inbounds %struct.doublecomplex, ptr %55, i64 %258, i32 1
  store double 0.000000e+00, ptr %260, align 8, !tbaa !13
  %261 = add nsw i32 %255, 2
  store i32 %261, ptr %24, align 4, !tbaa !5
  %262 = load double, ptr %38, align 8, !tbaa !9
  %263 = sext i32 %261 to i64
  %264 = getelementptr inbounds %struct.doublecomplex, ptr %55, i64 %263
  store double %262, ptr %264, align 8, !tbaa !11
  %265 = getelementptr inbounds %struct.doublecomplex, ptr %55, i64 %263, i32 1
  store double 0.000000e+00, ptr %265, align 8, !tbaa !13
  %266 = fcmp une double %262, 0.000000e+00
  br i1 %266, label %267, label %279

267:                                              ; preds = %254
  %268 = fcmp une double %257, 0.000000e+00
  %269 = shl i32 %249, 1
  %270 = sext i32 %269 to i64
  %271 = getelementptr i32, ptr %56, i64 %270
  %272 = getelementptr i8, ptr %271, i64 -4
  store i32 1, ptr %272, align 4, !tbaa !5
  %273 = load i32, ptr %9, align 4, !tbaa !5
  %274 = shl nsw i32 %273, 1
  %275 = sext i32 %274 to i64
  %276 = getelementptr inbounds i32, ptr %56, i64 %275
  br i1 %268, label %277, label %278

277:                                              ; preds = %267
  store i32 2, ptr %276, align 4, !tbaa !5
  br label %513

278:                                              ; preds = %267
  store i32 1, ptr %276, align 4, !tbaa !5
  br label %513

279:                                              ; preds = %254
  %280 = shl i32 %249, 1
  %281 = sext i32 %280 to i64
  %282 = getelementptr i32, ptr %56, i64 %281
  %283 = getelementptr i8, ptr %282, i64 -4
  store i32 2, ptr %283, align 4, !tbaa !5
  %284 = load i32, ptr %9, align 4, !tbaa !5
  %285 = shl nsw i32 %284, 1
  %286 = sext i32 %285 to i64
  %287 = getelementptr inbounds i32, ptr %56, i64 %286
  store i32 2, ptr %287, align 4, !tbaa !5
  br label %513

288:                                              ; preds = %159
  %289 = shl i32 %160, 1
  %290 = or disjoint i32 %289, 1
  %291 = mul nsw i32 %160, 3
  %292 = add nsw i32 %291, 1
  %293 = shl i32 %160, 2
  %294 = or disjoint i32 %293, 1
  %295 = mul i32 %160, 5
  %296 = mul nsw i32 %160, 6
  %297 = or disjoint i32 %296, 1
  %298 = add nsw i32 %160, 1
  store double 1.000000e+00, ptr %31, align 8, !tbaa !9
  %299 = call double @dlanst_(ptr noundef nonnull @.str.8, ptr noundef nonnull %2, ptr noundef %3, ptr noundef %4) #5
  store double %299, ptr %27, align 8, !tbaa !9
  %300 = fcmp ogt double %299, 0.000000e+00
  %301 = fcmp olt double %299, %120
  %or.cond487 = select i1 %300, i1 %301, i1 false
  br i1 %or.cond487, label %302, label %304

302:                                              ; preds = %288
  %303 = fdiv double %120, %299
  store double %303, ptr %31, align 8, !tbaa !9
  br label %308

304:                                              ; preds = %288
  %305 = fcmp ogt double %299, %126
  br i1 %305, label %306, label %thread-pre-split492

306:                                              ; preds = %304
  %307 = fdiv double %126, %299
  store double %307, ptr %31, align 8, !tbaa !9
  br label %308

thread-pre-split492:                              ; preds = %304
  %.pr493 = load double, ptr %31, align 8, !tbaa !9
  br label %308

308:                                              ; preds = %thread-pre-split492, %306, %302
  %309 = phi double [ %.pr493, %thread-pre-split492 ], [ %307, %306 ], [ %303, %302 ]
  %310 = fcmp une double %309, 1.000000e+00
  br i1 %310, label %311, label %321

311:                                              ; preds = %308
  call void @dscal_(ptr noundef nonnull %2, ptr noundef nonnull %31, ptr noundef %3, ptr noundef nonnull @c__1) #5
  %312 = load i32, ptr %2, align 4, !tbaa !5
  %313 = add nsw i32 %312, -1
  store i32 %313, ptr %24, align 4, !tbaa !5
  call void @dscal_(ptr noundef nonnull %24, ptr noundef nonnull %31, ptr noundef %4, ptr noundef nonnull @c__1) #5
  %314 = load double, ptr %31, align 8, !tbaa !9
  %315 = fmul double %314, %299
  store double %315, ptr %27, align 8, !tbaa !9
  br i1 %76, label %316, label %321

316:                                              ; preds = %311
  %317 = load double, ptr %39, align 8, !tbaa !9
  %318 = fmul double %314, %317
  store double %318, ptr %39, align 8, !tbaa !9
  %319 = load double, ptr %41, align 8, !tbaa !9
  %320 = fmul double %314, %319
  store double %320, ptr %41, align 8, !tbaa !9
  br label %321

321:                                              ; preds = %311, %316, %308
  %322 = load i32, ptr %15, align 4, !tbaa !5
  %.not466 = icmp eq i32 %322, 0
  br i1 %.not466, label %.thread495, label %323

.thread495:                                       ; preds = %321
  store i32 -1, ptr %32, align 4, !tbaa !5
  br label %.thread497

323:                                              ; preds = %321
  call void @dlarrr_(ptr noundef nonnull %2, ptr noundef %3, ptr noundef %4, ptr noundef nonnull %32) #5
  %.pr494 = load i32, ptr %32, align 4, !tbaa !5
  %324 = icmp eq i32 %.pr494, 0
  br i1 %324, label %326, label %.thread497

.thread497:                                       ; preds = %323, %.thread495
  %325 = fneg double %117
  store double %325, ptr %43, align 8, !tbaa !9
  store i32 0, ptr %15, align 4, !tbaa !5
  br label %330

326:                                              ; preds = %323
  store double %117, ptr %43, align 8, !tbaa !9
  %.pr496 = load i32, ptr %15, align 4, !tbaa !5
  %.not467 = icmp eq i32 %.pr496, 0
  br i1 %.not467, label %330, label %327

327:                                              ; preds = %326
  %328 = sext i32 %294 to i64
  %329 = getelementptr inbounds double, ptr %57, i64 %328
  call void @dcopy_(ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull @c__1, ptr noundef nonnull %329, ptr noundef nonnull @c__1) #5
  br label %330

330:                                              ; preds = %.thread497, %327, %326
  %331 = load i32, ptr %2, align 4, !tbaa !5
  %332 = add nsw i32 %331, -1
  store i32 %332, ptr %24, align 4, !tbaa !5
  %.not468.not505 = icmp sgt i32 %331, 1
  br i1 %.not468.not505, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %330
  %wide.trip.count = zext nneg i32 %331 to i64
  %333 = add nsw i64 %wide.trip.count, -1
  %min.iters.check = icmp ult i32 %331, 19
  br i1 %min.iters.check, label %.lr.ph.preheader598, label %vector.scevcheck

vector.scevcheck:                                 ; preds = %.lr.ph.preheader
  %334 = add nsw i64 %wide.trip.count, -2
  %335 = add i32 %295, 1
  %336 = trunc i64 %334 to i32
  %337 = add i32 %335, %336
  %338 = icmp slt i32 %337, %335
  %339 = icmp ugt i64 %334, 4294967295
  %340 = or i1 %338, %339
  br i1 %340, label %.lr.ph.preheader598, label %vector.memcheck

vector.memcheck:                                  ; preds = %vector.scevcheck
  %341 = add i32 %295, 1
  %342 = sext i32 %341 to i64
  %343 = shl nsw i64 %342, 3
  %344 = add i64 %343, %23
  %345 = add i64 %344, -8
  %346 = sub i64 %345, %22
  %diff.check = icmp ult i64 %346, 32
  br i1 %diff.check, label %.lr.ph.preheader598, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %333, -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 ]
  %347 = trunc i64 %index to i32
  %348 = or disjoint i32 %347, 1
  %349 = getelementptr double, ptr %4, i64 %index
  %350 = getelementptr inbounds i8, ptr %349, i64 16
  %wide.load = load <2 x double>, ptr %349, align 8, !tbaa !9
  %wide.load595 = load <2 x double>, ptr %350, align 8, !tbaa !9
  %351 = fmul <2 x double> %wide.load, %wide.load
  %352 = fmul <2 x double> %wide.load595, %wide.load595
  %353 = add i32 %295, %348
  %354 = sext i32 %353 to i64
  %355 = getelementptr inbounds double, ptr %57, i64 %354
  %356 = getelementptr inbounds i8, ptr %355, i64 16
  store <2 x double> %351, ptr %355, align 8, !tbaa !9
  store <2 x double> %352, ptr %356, align 8, !tbaa !9
  %index.next = add nuw i64 %index, 4
  %357 = icmp eq i64 %index.next, %n.vec
  br i1 %357, label %middle.block, label %vector.body, !llvm.loop !14

middle.block:                                     ; preds = %vector.body
  %358 = extractelement <2 x double> %wide.load595, i64 1
  %cmp.n = icmp eq i64 %333, %n.vec
  br i1 %cmp.n, label %._crit_edge, label %.lr.ph.preheader598

.lr.ph.preheader598:                              ; preds = %middle.block, %vector.memcheck, %vector.scevcheck, %.lr.ph.preheader
  %indvars.iv.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %vector.scevcheck ], [ 1, %.lr.ph.preheader ], [ %ind.end, %middle.block ]
  %359 = and i64 %wide.trip.count, 1
  %lcmp.mod.not.not = icmp eq i64 %359, 0
  br i1 %lcmp.mod.not.not, label %.lr.ph.prol, label %.lr.ph.prol.loopexit

.lr.ph.prol:                                      ; preds = %.lr.ph.preheader598
  %360 = getelementptr inbounds double, ptr %50, i64 %indvars.iv.ph
  %361 = load double, ptr %360, align 8, !tbaa !9
  %362 = fmul double %361, %361
  %363 = trunc nuw nsw i64 %indvars.iv.ph to i32
  %364 = add i32 %295, %363
  %365 = sext i32 %364 to i64
  %366 = getelementptr inbounds double, ptr %57, i64 %365
  store double %362, ptr %366, align 8, !tbaa !9
  %indvars.iv.next.prol = add nuw nsw i64 %indvars.iv.ph, 1
  br label %.lr.ph.prol.loopexit

.lr.ph.prol.loopexit:                             ; preds = %.lr.ph.prol, %.lr.ph.preheader598
  %.lcssa599.unr = phi double [ poison, %.lr.ph.preheader598 ], [ %361, %.lr.ph.prol ]
  %indvars.iv.unr = phi i64 [ %indvars.iv.ph, %.lr.ph.preheader598 ], [ %indvars.iv.next.prol, %.lr.ph.prol ]
  %367 = add nsw i64 %wide.trip.count, -1
  %368 = icmp eq i64 %indvars.iv.ph, %367
  br i1 %368, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.prol.loopexit, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next.1, %.lr.ph ], [ %indvars.iv.unr, %.lr.ph.prol.loopexit ]
  %369 = getelementptr inbounds double, ptr %50, i64 %indvars.iv
  %370 = load double, ptr %369, align 8, !tbaa !9
  %371 = fmul double %370, %370
  %372 = trunc nuw nsw i64 %indvars.iv to i32
  %373 = add i32 %295, %372
  %374 = sext i32 %373 to i64
  %375 = getelementptr inbounds double, ptr %57, i64 %374
  store double %371, ptr %375, align 8, !tbaa !9
  %376 = getelementptr double, ptr %4, i64 %indvars.iv
  %377 = load double, ptr %376, align 8, !tbaa !9
  %378 = fmul double %377, %377
  %379 = trunc i64 %indvars.iv to i32
  %380 = add i32 %379, 1
  %381 = add i32 %295, %380
  %382 = sext i32 %381 to i64
  %383 = getelementptr inbounds double, ptr %57, i64 %382
  store double %378, ptr %383, align 8, !tbaa !9
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %exitcond.not.1 = icmp eq i64 %indvars.iv.next.1, %wide.trip.count
  br i1 %exitcond.not.1, label %._crit_edge, label %.lr.ph, !llvm.loop !18

._crit_edge:                                      ; preds = %.lr.ph.prol.loopexit, %.lr.ph, %middle.block, %330
  %.lcssa = phi double [ %121, %330 ], [ %358, %middle.block ], [ %.lcssa599.unr, %.lr.ph.prol.loopexit ], [ %377, %.lr.ph ]
  store double %.lcssa, ptr %25, align 8, !tbaa !9
  br i1 %72, label %386, label %384

384:                                              ; preds = %._crit_edge
  %385 = fmul double %117, 4.000000e+00
  store double %385, ptr %29, align 8, !tbaa !9
  br label %393

386:                                              ; preds = %._crit_edge
  %387 = call double @sqrt(double noundef %117) #5
  store double %387, ptr %29, align 8, !tbaa !9
  %388 = call double @sqrt(double noundef %117) #5
  %389 = fmul double %388, 5.000000e-03
  store double %389, ptr %25, align 8, !tbaa !9
  %390 = fmul double %117, 4.000000e+00
  %391 = fcmp oge double %389, %390
  %392 = select i1 %391, double %389, double %390
  br label %393

393:                                              ; preds = %386, %384
  %storemerge = phi double [ %385, %384 ], [ %392, %386 ]
  store double %storemerge, ptr %30, align 8, !tbaa !9
  %394 = sext i32 %295 to i64
  %395 = getelementptr double, ptr %57, i64 %394
  %396 = getelementptr i8, ptr %395, i64 8
  %397 = sext i32 %290 to i64
  %398 = getelementptr inbounds double, ptr %57, i64 %397
  %399 = sext i32 %292 to i64
  %400 = getelementptr inbounds double, ptr %57, i64 %399
  %401 = sext i32 %298 to i64
  %402 = getelementptr inbounds i32, ptr %58, i64 %401
  %403 = getelementptr inbounds i32, ptr %58, i64 %397
  %404 = sext i32 %297 to i64
  %405 = getelementptr inbounds double, ptr %57, i64 %404
  %406 = getelementptr inbounds i32, ptr %58, i64 %399
  call void @dlarre_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %39, ptr noundef nonnull %41, ptr noundef nonnull %48, ptr noundef nonnull %49, ptr noundef %3, ptr noundef %4, ptr noundef nonnull %396, ptr noundef nonnull %29, ptr noundef nonnull %30, ptr noundef nonnull %43, ptr noundef nonnull %47, ptr noundef nonnull %18, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull %398, ptr noundef nonnull %400, ptr noundef nonnull %402, ptr noundef nonnull %403, ptr noundef nonnull %16, ptr noundef nonnull %46, ptr noundef nonnull %405, ptr noundef nonnull %406, ptr noundef nonnull %32) #5
  %407 = load i32, ptr %32, align 4
  %.not469 = icmp eq i32 %407, 0
  br i1 %.not469, label %411, label %408

408:                                              ; preds = %393
  %409 = call i32 @llvm.abs.i32(i32 %407, i1 true)
  %410 = add nuw nsw i32 %409, 10
  store i32 %410, ptr %20, align 4, !tbaa !5
  br label %566

411:                                              ; preds = %393
  br i1 %72, label %412, label %417

412:                                              ; preds = %411
  call void @zlarrv_(ptr noundef nonnull %2, ptr noundef nonnull %39, ptr noundef nonnull %41, ptr noundef %3, ptr noundef %4, ptr noundef nonnull %46, 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 %29, ptr noundef nonnull %30, ptr noundef %10, ptr noundef nonnull %398, ptr noundef nonnull %400, ptr noundef nonnull %402, ptr noundef nonnull %403, ptr noundef nonnull %16, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %14, ptr noundef nonnull %405, ptr noundef nonnull %406, ptr noundef nonnull %32) #5
  %413 = load i32, ptr %32, align 4
  %.not471 = icmp eq i32 %413, 0
  br i1 %.not471, label %.loopexit504, label %414

414:                                              ; preds = %412
  %415 = call i32 @llvm.abs.i32(i32 %413, i1 true)
  %416 = add nuw nsw i32 %415, 20
  store i32 %416, ptr %20, align 4, !tbaa !5
  br label %566

417:                                              ; preds = %411
  %418 = load i32, ptr %9, align 4, !tbaa !5
  store i32 %418, ptr %24, align 4, !tbaa !5
  %.not470507 = icmp slt i32 %418, 1
  br i1 %.not470507, label %.loopexit504, label %.lr.ph510.preheader

.lr.ph510.preheader:                              ; preds = %417
  %419 = zext nneg i32 %418 to i64
  %xtraiter600 = and i64 %419, 1
  %420 = icmp eq i32 %418, 1
  br i1 %420, label %..loopexit504_crit_edge.unr-lcssa, label %.lr.ph510.preheader.new

.lr.ph510.preheader.new:                          ; preds = %.lr.ph510.preheader
  %unroll_iter = and i64 %419, 2147483646
  br label %.lr.ph510

.lr.ph510:                                        ; preds = %.lr.ph510, %.lr.ph510.preheader.new
  %indvars.iv550 = phi i64 [ 1, %.lr.ph510.preheader.new ], [ %indvars.iv.next551.1, %.lr.ph510 ]
  %niter = phi i64 [ 0, %.lr.ph510.preheader.new ], [ %niter.next.1, %.lr.ph510 ]
  %421 = trunc nuw nsw i64 %indvars.iv550 to i32
  %422 = add i32 %160, %421
  %423 = sext i32 %422 to i64
  %424 = getelementptr inbounds i32, ptr %58, i64 %423
  %425 = load i32, ptr %424, align 4, !tbaa !5
  %426 = sext i32 %425 to i64
  %427 = getelementptr inbounds i32, ptr %58, i64 %426
  %428 = load i32, ptr %427, align 4, !tbaa !5
  %429 = sext i32 %428 to i64
  %430 = getelementptr inbounds double, ptr %50, i64 %429
  %431 = load double, ptr %430, align 8, !tbaa !9
  %432 = getelementptr inbounds double, ptr %51, i64 %indvars.iv550
  %433 = load double, ptr %432, align 8, !tbaa !9
  %434 = fadd double %431, %433
  store double %434, ptr %432, align 8, !tbaa !9
  %435 = trunc i64 %indvars.iv550 to i32
  %436 = add i32 %435, 1
  %437 = add i32 %160, %436
  %438 = sext i32 %437 to i64
  %439 = getelementptr inbounds i32, ptr %58, i64 %438
  %440 = load i32, ptr %439, align 4, !tbaa !5
  %441 = sext i32 %440 to i64
  %442 = getelementptr inbounds i32, ptr %58, i64 %441
  %443 = load i32, ptr %442, align 4, !tbaa !5
  %444 = sext i32 %443 to i64
  %445 = getelementptr inbounds double, ptr %50, i64 %444
  %446 = load double, ptr %445, align 8, !tbaa !9
  %447 = getelementptr double, ptr %10, i64 %indvars.iv550
  %448 = load double, ptr %447, align 8, !tbaa !9
  %449 = fadd double %446, %448
  store double %449, ptr %447, align 8, !tbaa !9
  %indvars.iv.next551.1 = add nuw nsw i64 %indvars.iv550, 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 %..loopexit504_crit_edge.unr-lcssa, label %.lr.ph510, !llvm.loop !19

..loopexit504_crit_edge.unr-lcssa:                ; preds = %.lr.ph510, %.lr.ph510.preheader
  %.lcssa597.ph = phi i32 [ poison, %.lr.ph510.preheader ], [ %440, %.lr.ph510 ]
  %indvars.iv550.unr = phi i64 [ 1, %.lr.ph510.preheader ], [ %indvars.iv.next551.1, %.lr.ph510 ]
  %lcmp.mod601.not = icmp eq i64 %xtraiter600, 0
  br i1 %lcmp.mod601.not, label %..loopexit504_crit_edge, label %.lr.ph510.epil

.lr.ph510.epil:                                   ; preds = %..loopexit504_crit_edge.unr-lcssa
  %450 = trunc nuw nsw i64 %indvars.iv550.unr to i32
  %451 = add i32 %160, %450
  %452 = sext i32 %451 to i64
  %453 = getelementptr inbounds i32, ptr %58, i64 %452
  %454 = load i32, ptr %453, align 4, !tbaa !5
  %455 = sext i32 %454 to i64
  %456 = getelementptr inbounds i32, ptr %58, i64 %455
  %457 = load i32, ptr %456, align 4, !tbaa !5
  %458 = sext i32 %457 to i64
  %459 = getelementptr inbounds double, ptr %50, i64 %458
  %460 = load double, ptr %459, align 8, !tbaa !9
  %461 = getelementptr inbounds double, ptr %51, i64 %indvars.iv550.unr
  %462 = load double, ptr %461, align 8, !tbaa !9
  %463 = fadd double %460, %462
  store double %463, ptr %461, align 8, !tbaa !9
  br label %..loopexit504_crit_edge

..loopexit504_crit_edge:                          ; preds = %..loopexit504_crit_edge.unr-lcssa, %.lr.ph510.epil
  %.lcssa597 = phi i32 [ %.lcssa597.ph, %..loopexit504_crit_edge.unr-lcssa ], [ %454, %.lr.ph510.epil ]
  store i32 %.lcssa597, ptr %26, align 4, !tbaa !5
  br label %.loopexit504

.loopexit504:                                     ; preds = %417, %..loopexit504_crit_edge, %412
  %464 = load i32, ptr %15, align 4, !tbaa !5
  %.not472 = icmp eq i32 %464, 0
  br i1 %.not472, label %.loopexit503, label %465

465:                                              ; preds = %.loopexit504
  %466 = load i32, ptr %9, align 4, !tbaa !5
  %467 = add i32 %466, %160
  %468 = sext i32 %467 to i64
  %469 = getelementptr inbounds i32, ptr %58, i64 %468
  %470 = load i32, ptr %469, align 4, !tbaa !5
  store i32 %470, ptr %24, align 4, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %18, i64 -8
  %invariant.gep519 = getelementptr i8, ptr %16, i64 -16
  %.not473521 = icmp slt i32 %470, 1
  br i1 %.not473521, label %.loopexit503, label %.lr.ph526

.lr.ph526:                                        ; preds = %465
  %471 = fmul double %117, 4.000000e+00
  %invariant.gep585 = getelementptr i32, ptr %58, i64 %401
  br label %472

472:                                              ; preds = %.lr.ph526, %506
  %473 = phi i32 [ %470, %.lr.ph526 ], [ %507, %506 ]
  %indvars.iv558 = phi i64 [ 1, %.lr.ph526 ], [ %indvars.iv.next559, %506 ]
  %.0435523 = phi i32 [ 1, %.lr.ph526 ], [ %.1436, %506 ]
  %.0441522 = phi i32 [ 1, %.lr.ph526 ], [ %.1442, %506 ]
  %indvars.iv.next559 = add nuw nsw i64 %indvars.iv558, 1
  %474 = getelementptr inbounds i32, ptr %58, i64 %indvars.iv558
  %475 = load i32, ptr %474, align 4, !tbaa !5
  %reass.sub = sub i32 %475, %.0441522
  %476 = add i32 %reass.sub, 1
  store i32 %476, ptr %37, align 4, !tbaa !5
  %477 = add i32 %.0435523, -1
  %478 = load i32, ptr %9, align 4, !tbaa !5
  %.not546 = icmp sgt i32 %.0435523, %478
  br i1 %.not546, label %._crit_edge515, label %.lr.ph514.preheader

.lr.ph514.preheader:                              ; preds = %472
  %479 = sext i32 %477 to i64
  %480 = sext i32 %478 to i64
  br label %.lr.ph514

.lr.ph514:                                        ; preds = %.lr.ph514.preheader, %484
  %indvars.iv555 = phi i64 [ %479, %.lr.ph514.preheader ], [ %indvars.iv.next556, %484 ]
  %gep586 = getelementptr i32, ptr %invariant.gep585, i64 %indvars.iv555
  %481 = load i32, ptr %gep586, align 4, !tbaa !5
  %482 = zext i32 %481 to i64
  %483 = icmp eq i64 %indvars.iv558, %482
  br i1 %483, label %484, label %._crit_edge515.loopexit.split.loop.exit

484:                                              ; preds = %.lr.ph514
  %indvars.iv.next556 = add nsw i64 %indvars.iv555, 1
  %485 = icmp slt i64 %indvars.iv.next556, %480
  br i1 %485, label %.lr.ph514, label %._crit_edge515

._crit_edge515.loopexit.split.loop.exit:          ; preds = %.lr.ph514
  %486 = trunc nsw i64 %indvars.iv555 to i32
  br label %._crit_edge515

._crit_edge515:                                   ; preds = %484, %._crit_edge515.loopexit.split.loop.exit, %472
  %.0434.lcssa = phi i32 [ %477, %472 ], [ %486, %._crit_edge515.loopexit.split.loop.exit ], [ %478, %484 ]
  %487 = icmp slt i32 %.0434.lcssa, %.0435523
  br i1 %487, label %506, label %488

488:                                              ; preds = %._crit_edge515
  %489 = add i32 %289, %.0435523
  %490 = sext i32 %489 to i64
  %491 = getelementptr inbounds i32, ptr %58, i64 %490
  %492 = load i32, ptr %491, align 4, !tbaa !5
  %493 = add nsw i32 %492, -1
  store i32 %493, ptr %42, align 4, !tbaa !5
  store i32 %492, ptr %44, align 4, !tbaa !5
  %494 = add nsw i32 %.0434.lcssa, %290
  %495 = sext i32 %494 to i64
  %gep = getelementptr i32, ptr %invariant.gep, i64 %495
  %496 = load i32, ptr %gep, align 4, !tbaa !5
  store i32 %496, ptr %33, align 4, !tbaa !5
  store double %471, ptr %30, align 8, !tbaa !9
  %497 = add nsw i32 %.0441522, %294
  %498 = sext i32 %497 to i64
  %gep520 = getelementptr double, ptr %invariant.gep519, i64 %498
  %499 = add i32 %.0441522, %295
  %500 = sext i32 %499 to i64
  %501 = getelementptr inbounds double, ptr %57, i64 %500
  %502 = zext nneg i32 %.0435523 to i64
  %503 = getelementptr inbounds double, ptr %51, i64 %502
  %504 = getelementptr inbounds double, ptr %57, i64 %490
  call void @dlarrj_(ptr noundef nonnull %37, ptr noundef %gep520, ptr noundef nonnull %501, ptr noundef nonnull %44, ptr noundef nonnull %33, ptr noundef nonnull %30, ptr noundef nonnull %42, ptr noundef nonnull %503, ptr noundef nonnull %504, ptr noundef nonnull %405, ptr noundef nonnull %406, ptr noundef nonnull %46, ptr noundef nonnull %27, ptr noundef nonnull %32) #5
  %505 = add nuw nsw i32 %.0434.lcssa, 1
  %.pre = load i32, ptr %24, align 4, !tbaa !5
  br label %506

506:                                              ; preds = %._crit_edge515, %488
  %507 = phi i32 [ %.pre, %488 ], [ %473, %._crit_edge515 ]
  %.1436 = phi i32 [ %505, %488 ], [ %.0435523, %._crit_edge515 ]
  %.1442 = add nsw i32 %475, 1
  %508 = sext i32 %507 to i64
  %.not473.not = icmp slt i64 %indvars.iv558, %508
  br i1 %.not473.not, label %472, label %.loopexit503, !llvm.loop !20

.loopexit503:                                     ; preds = %506, %465, %.loopexit504
  %509 = load double, ptr %31, align 8, !tbaa !9
  %510 = fcmp une double %509, 1.000000e+00
  br i1 %510, label %511, label %513

511:                                              ; preds = %.loopexit503
  %512 = fdiv double 1.000000e+00, %509
  store double %512, ptr %25, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %9, ptr noundef nonnull %25, ptr noundef %10, ptr noundef nonnull @c__1) #5
  br label %513

513:                                              ; preds = %.loopexit503, %511, %243, %279, %278, %277, %247
  %514 = load i32, ptr %47, align 4, !tbaa !5
  %515 = icmp sgt i32 %514, 1
  br i1 %515, label %519, label %516

516:                                              ; preds = %513
  %517 = load i32, ptr %2, align 4, !tbaa !5
  %518 = icmp eq i32 %517, 2
  br i1 %518, label %519, label %.loopexit

519:                                              ; preds = %516, %513
  br i1 %72, label %523, label %520

520:                                              ; preds = %519
  call void @dlasrt_(ptr noundef nonnull @.str.2, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull %32) #5
  %521 = load i32, ptr %32, align 4, !tbaa !5
  %.not475 = icmp eq i32 %521, 0
  br i1 %.not475, label %.loopexit, label %522

522:                                              ; preds = %520
  store i32 3, ptr %20, align 4, !tbaa !5
  br label %566

523:                                              ; preds = %519
  %524 = load i32, ptr %9, align 4, !tbaa !5
  %525 = add nsw i32 %524, -1
  store i32 %525, ptr %24, align 4, !tbaa !5
  %invariant.gep536 = getelementptr i8, ptr %55, i64 16
  %invariant.gep540 = getelementptr i8, ptr %14, i64 -8
  %.not476542 = icmp slt i32 %524, 2
  br i1 %.not476542, label %.loopexit, label %.lr.ph545.preheader

.lr.ph545.preheader:                              ; preds = %523
  %526 = sext i32 %52 to i64
  br label %.lr.ph545

.lr.ph545:                                        ; preds = %.lr.ph545.preheader, %._crit_edge533.thread
  %indvar = phi i32 [ 0, %.lr.ph545.preheader ], [ %indvar.next, %._crit_edge533.thread ]
  %527 = phi i32 [ %525, %.lr.ph545.preheader ], [ %564, %._crit_edge533.thread ]
  %indvars.iv567 = phi i64 [ 1, %.lr.ph545.preheader ], [ %indvars.iv.next568, %._crit_edge533.thread ]
  %indvars.iv561 = phi i64 [ 2, %.lr.ph545.preheader ], [ %indvars.iv.next562, %._crit_edge533.thread ]
  %528 = getelementptr inbounds double, ptr %51, i64 %indvars.iv567
  %529 = load double, ptr %528, align 8, !tbaa !9
  %530 = load i32, ptr %9, align 4, !tbaa !5
  %indvars.iv.next568 = add nuw nsw i64 %indvars.iv567, 1
  %531 = sext i32 %530 to i64
  %.not477527.not = icmp slt i64 %indvars.iv567, %531
  br i1 %.not477527.not, label %.lr.ph532.preheader, label %._crit_edge533.thread

.lr.ph532.preheader:                              ; preds = %.lr.ph545
  %532 = xor i32 %indvar, -1
  %533 = add i32 %530, %532
  %reass.sub609 = sub i32 %530, %indvar
  %xtraiter603 = and i32 %533, 1
  %534 = icmp eq i32 %reass.sub609, 2
  br i1 %534, label %._crit_edge533.unr-lcssa, label %.lr.ph532.preheader.new

.lr.ph532.preheader.new:                          ; preds = %.lr.ph532.preheader
  %unroll_iter607 = and i32 %533, -2
  br label %.lr.ph532

.lr.ph532:                                        ; preds = %.lr.ph532, %.lr.ph532.preheader.new
  %indvars.iv563 = phi i64 [ %indvars.iv561, %.lr.ph532.preheader.new ], [ %indvars.iv.next564.1, %.lr.ph532 ]
  %.0530 = phi double [ %529, %.lr.ph532.preheader.new ], [ %.1.1, %.lr.ph532 ]
  %.0437529 = phi i32 [ 0, %.lr.ph532.preheader.new ], [ %.1438.1, %.lr.ph532 ]
  %niter608 = phi i32 [ 0, %.lr.ph532.preheader.new ], [ %niter608.next.1, %.lr.ph532 ]
  %535 = getelementptr inbounds double, ptr %51, i64 %indvars.iv563
  %536 = load double, ptr %535, align 8, !tbaa !9
  %537 = fcmp olt double %536, %.0530
  %538 = trunc nuw i64 %indvars.iv563 to i32
  %.1438 = select i1 %537, i32 %538, i32 %.0437529
  %.1 = select i1 %537, double %536, double %.0530
  %539 = getelementptr double, ptr %10, i64 %indvars.iv563
  %540 = load double, ptr %539, align 8, !tbaa !9
  %541 = fcmp olt double %540, %.1
  %542 = trunc i64 %indvars.iv563 to i32
  %543 = add i32 %542, 1
  %.1438.1 = select i1 %541, i32 %543, i32 %.1438
  %.1.1 = select i1 %541, double %540, double %.1
  %indvars.iv.next564.1 = add nuw nsw i64 %indvars.iv563, 2
  %niter608.next.1 = add i32 %niter608, 2
  %niter608.ncmp.1 = icmp eq i32 %niter608.next.1, %unroll_iter607
  br i1 %niter608.ncmp.1, label %._crit_edge533.unr-lcssa, label %.lr.ph532, !llvm.loop !21

._crit_edge533.unr-lcssa:                         ; preds = %.lr.ph532, %.lr.ph532.preheader
  %.1438.lcssa.ph = phi i32 [ poison, %.lr.ph532.preheader ], [ %.1438.1, %.lr.ph532 ]
  %.1.lcssa.ph = phi double [ poison, %.lr.ph532.preheader ], [ %.1.1, %.lr.ph532 ]
  %indvars.iv563.unr = phi i64 [ %indvars.iv561, %.lr.ph532.preheader ], [ %indvars.iv.next564.1, %.lr.ph532 ]
  %.0530.unr = phi double [ %529, %.lr.ph532.preheader ], [ %.1.1, %.lr.ph532 ]
  %.0437529.unr = phi i32 [ 0, %.lr.ph532.preheader ], [ %.1438.1, %.lr.ph532 ]
  %lcmp.mod604.not = icmp eq i32 %xtraiter603, 0
  br i1 %lcmp.mod604.not, label %._crit_edge533, label %.lr.ph532.epil

.lr.ph532.epil:                                   ; preds = %._crit_edge533.unr-lcssa
  %544 = getelementptr inbounds double, ptr %51, i64 %indvars.iv563.unr
  %545 = load double, ptr %544, align 8, !tbaa !9
  %546 = fcmp olt double %545, %.0530.unr
  %547 = trunc nuw i64 %indvars.iv563.unr to i32
  %.1438.epil = select i1 %546, i32 %547, i32 %.0437529.unr
  %.1.epil = select i1 %546, double %545, double %.0530.unr
  br label %._crit_edge533

._crit_edge533:                                   ; preds = %._crit_edge533.unr-lcssa, %.lr.ph532.epil
  %.1438.lcssa = phi i32 [ %.1438.lcssa.ph, %._crit_edge533.unr-lcssa ], [ %.1438.epil, %.lr.ph532.epil ]
  %.1.lcssa = phi double [ %.1.lcssa.ph, %._crit_edge533.unr-lcssa ], [ %.1.epil, %.lr.ph532.epil ]
  %.not478 = icmp eq i32 %.1438.lcssa, 0
  br i1 %.not478, label %._crit_edge533.thread, label %548

548:                                              ; preds = %._crit_edge533
  %549 = sext i32 %.1438.lcssa to i64
  %550 = getelementptr inbounds double, ptr %51, i64 %549
  store double %529, ptr %550, align 8, !tbaa !9
  store double %.1.lcssa, ptr %528, align 8, !tbaa !9
  %551 = mul nsw i32 %.1438.lcssa, %52
  %552 = sext i32 %551 to i64
  %gep537 = getelementptr %struct.doublecomplex, ptr %invariant.gep536, i64 %552
  %553 = mul nsw i64 %indvars.iv567, %526
  %gep539 = getelementptr %struct.doublecomplex, ptr %invariant.gep536, i64 %553
  call void @zswap_(ptr noundef nonnull %2, ptr noundef %gep537, ptr noundef nonnull @c__1, ptr noundef %gep539, ptr noundef nonnull @c__1) #5
  %554 = shl i32 %.1438.lcssa, 1
  %555 = sext i32 %554 to i64
  %556 = getelementptr i32, ptr %56, i64 %555
  %557 = getelementptr i8, ptr %556, i64 -4
  %558 = load i32, ptr %557, align 4, !tbaa !5
  %sext = shl i64 %indvars.iv567, 33
  %559 = ashr exact i64 %sext, 30
  %gep541 = getelementptr i8, ptr %invariant.gep540, i64 %559
  %560 = load i32, ptr %gep541, align 4, !tbaa !5
  store i32 %560, ptr %557, align 4, !tbaa !5
  store i32 %558, ptr %gep541, align 4, !tbaa !5
  %561 = load i32, ptr %556, align 4, !tbaa !5
  store i32 %561, ptr %26, align 4, !tbaa !5
  %.idx = shl i64 %indvars.iv567, 3
  %562 = getelementptr inbounds i8, ptr %56, i64 %.idx
  %563 = load i32, ptr %562, align 4, !tbaa !5
  store i32 %563, ptr %556, align 4, !tbaa !5
  store i32 %561, ptr %562, align 4, !tbaa !5
  %.pre572 = load i32, ptr %24, align 4, !tbaa !5
  br label %._crit_edge533.thread

._crit_edge533.thread:                            ; preds = %.lr.ph545, %._crit_edge533, %548
  %564 = phi i32 [ %527, %._crit_edge533 ], [ %.pre572, %548 ], [ %527, %.lr.ph545 ]
  %565 = sext i32 %564 to i64
  %.not476.not = icmp slt i64 %indvars.iv567, %565
  %indvars.iv.next562 = add nuw nsw i64 %indvars.iv561, 1
  %indvar.next = add i32 %indvar, 1
  br i1 %.not476.not, label %.lr.ph545, label %.loopexit, !llvm.loop !22

.loopexit:                                        ; preds = %._crit_edge533.thread, %523, %520, %516
  store double %130, ptr %16, align 8, !tbaa !9
  store i32 %.0432, ptr %18, align 4, !tbaa !5
  br label %566

566:                                              ; preds = %.thread576, %159, %172, %174, %158, %.loopexit, %522, %414, %408, %.thread489
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %49) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %48) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %47) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %45) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %44) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #5
  call void @llvm.lifetime.end.p0(i64 4, 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 4, 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 4, ptr nonnull %33) #5
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr nonnull %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #5
  ret void
}

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

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

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

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

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

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

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

declare void @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 i32 @llvm.abs.i32(i32, 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 = !{!"int", !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, !15, !16}
!19 = distinct !{!19, !15}
!20 = distinct !{!20, !15}
!21 = distinct !{!21, !15}
!22 = distinct !{!22, !15}


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