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

; 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 [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [9 x i8], align 1
@c_b1 = external hidden global %struct.doublecomplex, align 8
@c_b2 = external hidden global %struct.doublecomplex, align 8
@c__1 = external hidden global i32, align 4
@c__0 = external hidden global i32, align 4
@c_b42 = external hidden global double, align 8
@c__2 = external hidden global i32, align 4

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

144:                                              ; preds = %16
  %145 = load ptr, ptr %18, align 8, !tbaa !5
  %146 = call i32 @lsame_(ptr noundef %145, ptr noundef @.str.1)
  %147 = icmp ne i32 %146, 0
  br label %148

148:                                              ; preds = %144, %16
  %149 = phi i1 [ true, %16 ], [ %147, %144 ]
  %150 = zext i1 %149 to i32
  store i32 %150, ptr %68, align 4, !tbaa !9
  %151 = load ptr, ptr %18, align 8, !tbaa !5
  %152 = call i32 @lsame_(ptr noundef %151, ptr noundef @.str.2)
  store i32 %152, ptr %72, align 4, !tbaa !9
  %153 = load ptr, ptr %19, align 8, !tbaa !5
  %154 = call i32 @lsame_(ptr noundef %153, ptr noundef @.str.3)
  %155 = icmp ne i32 %154, 0
  br i1 %155, label %160, label %156

156:                                              ; preds = %148
  %157 = load ptr, ptr %19, align 8, !tbaa !5
  %158 = call i32 @lsame_(ptr noundef %157, ptr noundef @.str.4)
  %159 = icmp ne i32 %158, 0
  br label %160

160:                                              ; preds = %156, %148
  %161 = phi i1 [ true, %148 ], [ %159, %156 ]
  %162 = zext i1 %161 to i32
  store i32 %162, ptr %71, align 4, !tbaa !9
  %163 = load ptr, ptr %19, align 8, !tbaa !5
  %164 = call i32 @lsame_(ptr noundef %163, ptr noundef @.str.5)
  store i32 %164, ptr %70, align 4, !tbaa !9
  %165 = load ptr, ptr %17, align 8, !tbaa !5
  %166 = call i32 @lsame_(ptr noundef %165, ptr noundef @.str)
  store i32 %166, ptr %74, align 4, !tbaa !9
  %167 = load ptr, ptr %17, align 8, !tbaa !5
  %168 = call i32 @lsame_(ptr noundef %167, ptr noundef @.str.6)
  store i32 %168, ptr %73, align 4, !tbaa !9
  %169 = load ptr, ptr %29, align 8, !tbaa !5
  %170 = load i32, ptr %169, align 4, !tbaa !9
  %171 = icmp eq i32 %170, -1
  br i1 %171, label %176, label %172

172:                                              ; preds = %160
  %173 = load ptr, ptr %31, align 8, !tbaa !5
  %174 = load i32, ptr %173, align 4, !tbaa !9
  %175 = icmp eq i32 %174, -1
  br label %176

176:                                              ; preds = %172, %160
  %177 = phi i1 [ true, %160 ], [ %175, %172 ]
  %178 = zext i1 %177 to i32
  store i32 %178, ptr %90, align 4, !tbaa !9
  %179 = load i32, ptr %74, align 4, !tbaa !9
  %180 = icmp ne i32 %179, 0
  br i1 %180, label %190, label %181

181:                                              ; preds = %176
  %182 = load i32, ptr %73, align 4, !tbaa !9
  %183 = icmp ne i32 %182, 0
  br i1 %183, label %190, label %184

184:                                              ; preds = %181
  %185 = load ptr, ptr %17, align 8, !tbaa !5
  %186 = call i32 @lsame_(ptr noundef %185, ptr noundef @.str.7)
  %187 = icmp ne i32 %186, 0
  br i1 %187, label %190, label %188

188:                                              ; preds = %184
  %189 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -1, ptr %189, align 4, !tbaa !9
  br label %320

190:                                              ; preds = %184, %181, %176
  %191 = load i32, ptr %68, align 4, !tbaa !9
  %192 = icmp ne i32 %191, 0
  br i1 %192, label %202, label %193

193:                                              ; preds = %190
  %194 = load i32, ptr %72, align 4, !tbaa !9
  %195 = icmp ne i32 %194, 0
  br i1 %195, label %202, label %196

196:                                              ; preds = %193
  %197 = load ptr, ptr %18, align 8, !tbaa !5
  %198 = call i32 @lsame_(ptr noundef %197, ptr noundef @.str.8)
  %199 = icmp ne i32 %198, 0
  br i1 %199, label %202, label %200

200:                                              ; preds = %196
  %201 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -2, ptr %201, align 4, !tbaa !9
  br label %319

202:                                              ; preds = %196, %193, %190
  %203 = load i32, ptr %71, align 4, !tbaa !9
  %204 = icmp ne i32 %203, 0
  br i1 %204, label %214, label %205

205:                                              ; preds = %202
  %206 = load i32, ptr %70, align 4, !tbaa !9
  %207 = icmp ne i32 %206, 0
  br i1 %207, label %214, label %208

208:                                              ; preds = %205
  %209 = load ptr, ptr %19, align 8, !tbaa !5
  %210 = call i32 @lsame_(ptr noundef %209, ptr noundef @.str.8)
  %211 = icmp ne i32 %210, 0
  br i1 %211, label %214, label %212

212:                                              ; preds = %208
  %213 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -3, ptr %213, align 4, !tbaa !9
  br label %318

214:                                              ; preds = %208, %205, %202
  %215 = load ptr, ptr %20, align 8, !tbaa !5
  %216 = load i32, ptr %215, align 4, !tbaa !9
  %217 = icmp slt i32 %216, 0
  br i1 %217, label %218, label %220

218:                                              ; preds = %214
  %219 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -4, ptr %219, align 4, !tbaa !9
  br label %317

220:                                              ; preds = %214
  %221 = load ptr, ptr %21, align 8, !tbaa !5
  %222 = load i32, ptr %221, align 4, !tbaa !9
  %223 = icmp slt i32 %222, 0
  br i1 %223, label %230, label %224

224:                                              ; preds = %220
  %225 = load ptr, ptr %21, align 8, !tbaa !5
  %226 = load i32, ptr %225, align 4, !tbaa !9
  %227 = load ptr, ptr %20, align 8, !tbaa !5
  %228 = load i32, ptr %227, align 4, !tbaa !9
  %229 = icmp sgt i32 %226, %228
  br i1 %229, label %230, label %232

230:                                              ; preds = %224, %220
  %231 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -5, ptr %231, align 4, !tbaa !9
  br label %316

232:                                              ; preds = %224
  %233 = load ptr, ptr %23, align 8, !tbaa !5
  %234 = load i32, ptr %233, align 4, !tbaa !9
  %235 = load ptr, ptr %20, align 8, !tbaa !5
  %236 = load i32, ptr %235, align 4, !tbaa !9
  %237 = icmp slt i32 %234, %236
  br i1 %237, label %238, label %240

238:                                              ; preds = %232
  %239 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -7, ptr %239, align 4, !tbaa !9
  br label %315

240:                                              ; preds = %232
  %241 = load ptr, ptr %25, align 8, !tbaa !5
  %242 = load i32, ptr %241, align 4, !tbaa !9
  %243 = icmp slt i32 %242, 0
  br i1 %243, label %244, label %246

244:                                              ; preds = %240
  %245 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -9, ptr %245, align 4, !tbaa !9
  br label %314

246:                                              ; preds = %240
  %247 = load i32, ptr %71, align 4, !tbaa !9
  %248 = icmp ne i32 %247, 0
  br i1 %248, label %249, label %255

249:                                              ; preds = %246
  %250 = load ptr, ptr %27, align 8, !tbaa !5
  %251 = load i32, ptr %250, align 4, !tbaa !9
  %252 = load ptr, ptr %21, align 8, !tbaa !5
  %253 = load i32, ptr %252, align 4, !tbaa !9
  %254 = icmp slt i32 %251, %253
  br i1 %254, label %264, label %255

255:                                              ; preds = %249, %246
  %256 = load i32, ptr %70, align 4, !tbaa !9
  %257 = icmp ne i32 %256, 0
  br i1 %257, label %258, label %266

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

264:                                              ; preds = %258, %249
  %265 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -11, ptr %265, align 4, !tbaa !9
  br label %313

266:                                              ; preds = %258, %255
  %267 = load i32, ptr %72, align 4, !tbaa !9
  %268 = icmp ne i32 %267, 0
  br i1 %268, label %269, label %276

269:                                              ; preds = %266
  %270 = load ptr, ptr %30, align 8, !tbaa !5
  %271 = getelementptr inbounds double, ptr %270, i64 1
  %272 = load double, ptr %271, align 8, !tbaa !11
  %273 = fcmp ole double %272, 1.000000e+00
  br i1 %273, label %274, label %276

274:                                              ; preds = %269
  %275 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -12, ptr %275, align 4, !tbaa !9
  br label %312

276:                                              ; preds = %269, %266
  %277 = load ptr, ptr %29, align 8, !tbaa !5
  %278 = load i32, ptr %277, align 4, !tbaa !9
  %279 = load ptr, ptr %20, align 8, !tbaa !5
  %280 = load i32, ptr %279, align 4, !tbaa !9
  %281 = load ptr, ptr %21, align 8, !tbaa !5
  %282 = load i32, ptr %281, align 4, !tbaa !9
  %283 = add nsw i32 %280, %282
  %284 = icmp slt i32 %278, %283
  br i1 %284, label %285, label %290

285:                                              ; preds = %276
  %286 = load i32, ptr %90, align 4, !tbaa !9
  %287 = icmp ne i32 %286, 0
  br i1 %287, label %290, label %288

288:                                              ; preds = %285
  %289 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -13, ptr %289, align 4, !tbaa !9
  br label %311

290:                                              ; preds = %285, %276
  %291 = load ptr, ptr %31, align 8, !tbaa !5
  %292 = load i32, ptr %291, align 4, !tbaa !9
  %293 = load ptr, ptr %21, align 8, !tbaa !5
  %294 = load i32, ptr %293, align 4, !tbaa !9
  %295 = icmp sge i32 %294, 6
  br i1 %295, label %296, label %299

296:                                              ; preds = %290
  %297 = load ptr, ptr %21, align 8, !tbaa !5
  %298 = load i32, ptr %297, align 4, !tbaa !9
  br label %300

299:                                              ; preds = %290
  br label %300

300:                                              ; preds = %299, %296
  %301 = phi i32 [ %298, %296 ], [ 6, %299 ]
  %302 = icmp slt i32 %292, %301
  br i1 %302, label %303, label %308

303:                                              ; preds = %300
  %304 = load i32, ptr %90, align 4, !tbaa !9
  %305 = icmp ne i32 %304, 0
  br i1 %305, label %308, label %306

306:                                              ; preds = %303
  %307 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -15, ptr %307, align 4, !tbaa !9
  br label %310

308:                                              ; preds = %303, %300
  %309 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 0, ptr %309, align 4, !tbaa !9
  br label %310

310:                                              ; preds = %308, %306
  br label %311

311:                                              ; preds = %310, %288
  br label %312

312:                                              ; preds = %311, %274
  br label %313

313:                                              ; preds = %312, %264
  br label %314

314:                                              ; preds = %313, %244
  br label %315

315:                                              ; preds = %314, %238
  br label %316

316:                                              ; preds = %315, %230
  br label %317

317:                                              ; preds = %316, %218
  br label %318

318:                                              ; preds = %317, %212
  br label %319

319:                                              ; preds = %318, %200
  br label %320

320:                                              ; preds = %319, %188
  %321 = load ptr, ptr %32, align 8, !tbaa !5
  %322 = load i32, ptr %321, align 4, !tbaa !9
  %323 = icmp ne i32 %322, 0
  br i1 %323, label %324, label %329

324:                                              ; preds = %320
  %325 = load ptr, ptr %32, align 8, !tbaa !5
  %326 = load i32, ptr %325, align 4, !tbaa !9
  %327 = sub nsw i32 0, %326
  store i32 %327, ptr %37, align 4, !tbaa !9
  %328 = call i32 @xerbla_(ptr noundef @.str.9, ptr noundef %37, i32 noundef 6)
  store i32 1, ptr %110, align 4
  br label %4343

329:                                              ; preds = %320
  %330 = load i32, ptr %90, align 4, !tbaa !9
  %331 = icmp ne i32 %330, 0
  br i1 %331, label %332, label %358

332:                                              ; preds = %329
  %333 = load ptr, ptr %20, align 8, !tbaa !5
  %334 = load i32, ptr %333, align 4, !tbaa !9
  %335 = load ptr, ptr %21, align 8, !tbaa !5
  %336 = load i32, ptr %335, align 4, !tbaa !9
  %337 = add nsw i32 %334, %336
  store i32 %337, ptr %37, align 4, !tbaa !9
  %338 = load i32, ptr %37, align 4, !tbaa !9
  %339 = sitofp i32 %338 to double
  %340 = load ptr, ptr %28, align 8, !tbaa !5
  %341 = getelementptr inbounds %struct.doublecomplex, ptr %340, i64 1
  %342 = getelementptr inbounds %struct.doublecomplex, ptr %341, i32 0, i32 0
  store double %339, ptr %342, align 8, !tbaa !13
  %343 = load ptr, ptr %28, align 8, !tbaa !5
  %344 = getelementptr inbounds %struct.doublecomplex, ptr %343, i64 1
  %345 = getelementptr inbounds %struct.doublecomplex, ptr %344, i32 0, i32 1
  store double 0.000000e+00, ptr %345, align 8, !tbaa !15
  %346 = load ptr, ptr %21, align 8, !tbaa !5
  %347 = load i32, ptr %346, align 4, !tbaa !9
  %348 = icmp sge i32 %347, 6
  br i1 %348, label %349, label %352

349:                                              ; preds = %332
  %350 = load ptr, ptr %21, align 8, !tbaa !5
  %351 = load i32, ptr %350, align 4, !tbaa !9
  br label %353

352:                                              ; preds = %332
  br label %353

353:                                              ; preds = %352, %349
  %354 = phi i32 [ %351, %349 ], [ 6, %352 ]
  %355 = sitofp i32 %354 to double
  %356 = load ptr, ptr %30, align 8, !tbaa !5
  %357 = getelementptr inbounds double, ptr %356, i64 1
  store double %355, ptr %357, align 8, !tbaa !11
  store i32 1, ptr %110, align 4
  br label %4343

358:                                              ; preds = %329
  br label %359

359:                                              ; preds = %358
  %360 = load ptr, ptr %20, align 8, !tbaa !5
  %361 = load i32, ptr %360, align 4, !tbaa !9
  %362 = icmp eq i32 %361, 0
  br i1 %362, label %367, label %363

363:                                              ; preds = %359
  %364 = load ptr, ptr %21, align 8, !tbaa !5
  %365 = load i32, ptr %364, align 4, !tbaa !9
  %366 = icmp eq i32 %365, 0
  br i1 %366, label %367, label %368

367:                                              ; preds = %363, %359
  store i32 1, ptr %110, align 4
  br label %4343

368:                                              ; preds = %363
  %369 = load i32, ptr %72, align 4, !tbaa !9
  %370 = icmp ne i32 %369, 0
  br i1 %370, label %371, label %375

371:                                              ; preds = %368
  %372 = load ptr, ptr %30, align 8, !tbaa !5
  %373 = getelementptr inbounds double, ptr %372, i64 1
  %374 = load double, ptr %373, align 8, !tbaa !11
  store double %374, ptr %51, align 8, !tbaa !11
  br label %394

375:                                              ; preds = %368
  %376 = load i32, ptr %68, align 4, !tbaa !9
  %377 = icmp ne i32 %376, 0
  br i1 %377, label %384, label %378

378:                                              ; preds = %375
  %379 = load i32, ptr %71, align 4, !tbaa !9
  %380 = icmp ne i32 %379, 0
  br i1 %380, label %384, label %381

381:                                              ; preds = %378
  %382 = load i32, ptr %70, align 4, !tbaa !9
  %383 = icmp ne i32 %382, 0
  br i1 %383, label %384, label %389

384:                                              ; preds = %381, %378, %375
  %385 = load ptr, ptr %20, align 8, !tbaa !5
  %386 = load i32, ptr %385, align 4, !tbaa !9
  %387 = sitofp i32 %386 to double
  %388 = call double @sqrt(double noundef %387) #6
  store double %388, ptr %51, align 8, !tbaa !11
  br label %393

389:                                              ; preds = %381
  %390 = load ptr, ptr %20, align 8, !tbaa !5
  %391 = load i32, ptr %390, align 4, !tbaa !9
  %392 = sitofp i32 %391 to double
  store double %392, ptr %51, align 8, !tbaa !11
  br label %393

393:                                              ; preds = %389, %384
  br label %394

394:                                              ; preds = %393, %371
  %395 = call double @dlamch_(ptr noundef @.str.10)
  store double %395, ptr %69, align 8, !tbaa !11
  %396 = load double, ptr %69, align 8, !tbaa !11
  %397 = call double @sqrt(double noundef %396) #6
  store double %397, ptr %107, align 8, !tbaa !11
  %398 = call double @dlamch_(ptr noundef @.str.11)
  store double %398, ptr %67, align 8, !tbaa !11
  %399 = load double, ptr %67, align 8, !tbaa !11
  %400 = call double @sqrt(double noundef %399) #6
  store double %400, ptr %78, align 8, !tbaa !11
  %401 = load double, ptr %67, align 8, !tbaa !11
  %402 = load double, ptr %69, align 8, !tbaa !11
  %403 = fdiv double %401, %402
  store double %403, ptr %66, align 8, !tbaa !11
  %404 = call double @dlamch_(ptr noundef @.str.12)
  store double %404, ptr %94, align 8, !tbaa !11
  %405 = load double, ptr %78, align 8, !tbaa !11
  %406 = fdiv double 1.000000e+00, %405
  store double %406, ptr %106, align 8, !tbaa !11
  %407 = load double, ptr %107, align 8, !tbaa !11
  %408 = fdiv double 1.000000e+00, %407
  store double %408, ptr %53, align 8, !tbaa !11
  %409 = load double, ptr %51, align 8, !tbaa !11
  %410 = load double, ptr %69, align 8, !tbaa !11
  %411 = fmul double %409, %410
  store double %411, ptr %103, align 8, !tbaa !11
  %412 = load double, ptr %103, align 8, !tbaa !11
  %413 = call double @sqrt(double noundef %412) #6
  store double %413, ptr %109, align 8, !tbaa !11
  %414 = load ptr, ptr %20, align 8, !tbaa !5
  %415 = load i32, ptr %414, align 4, !tbaa !9
  %416 = sitofp i32 %415 to double
  %417 = load double, ptr %69, align 8, !tbaa !11
  %418 = fmul double %416, %417
  %419 = fcmp oge double %418, 1.000000e+00
  br i1 %419, label %420, label %426

420:                                              ; preds = %394
  %421 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -4, ptr %421, align 4, !tbaa !9
  %422 = load ptr, ptr %32, align 8, !tbaa !5
  %423 = load i32, ptr %422, align 4, !tbaa !9
  %424 = sub nsw i32 0, %423
  store i32 %424, ptr %37, align 4, !tbaa !9
  %425 = call i32 @xerbla_(ptr noundef @.str.9, ptr noundef %37, i32 noundef 6)
  store i32 1, ptr %110, align 4
  br label %4343

426:                                              ; preds = %394
  %427 = load i32, ptr %71, align 4, !tbaa !9
  %428 = icmp ne i32 %427, 0
  br i1 %428, label %429, label %438

429:                                              ; preds = %426
  %430 = load ptr, ptr %21, align 8, !tbaa !5
  %431 = load i32, ptr %430, align 4, !tbaa !9
  store i32 %431, ptr %104, align 4, !tbaa !9
  %432 = load ptr, ptr %21, align 8, !tbaa !5
  %433 = load ptr, ptr %26, align 8, !tbaa !5
  %434 = load i32, ptr %36, align 4, !tbaa !9
  %435 = sext i32 %434 to i64
  %436 = getelementptr inbounds %struct.doublecomplex, ptr %433, i64 %435
  %437 = load ptr, ptr %27, align 8, !tbaa !5
  call void @zlaset_(ptr noundef @.str.5, ptr noundef %104, ptr noundef %432, ptr noundef @c_b1, ptr noundef @c_b2, ptr noundef %436, ptr noundef %437)
  br label %445

438:                                              ; preds = %426
  %439 = load i32, ptr %70, align 4, !tbaa !9
  %440 = icmp ne i32 %439, 0
  br i1 %440, label %441, label %444

441:                                              ; preds = %438
  %442 = load ptr, ptr %25, align 8, !tbaa !5
  %443 = load i32, ptr %442, align 4, !tbaa !9
  store i32 %443, ptr %104, align 4, !tbaa !9
  br label %444

444:                                              ; preds = %441, %438
  br label %445

445:                                              ; preds = %444, %429
  %446 = load i32, ptr %71, align 4, !tbaa !9
  %447 = icmp ne i32 %446, 0
  br i1 %447, label %451, label %448

448:                                              ; preds = %445
  %449 = load i32, ptr %70, align 4, !tbaa !9
  %450 = icmp ne i32 %449, 0
  br label %451

451:                                              ; preds = %448, %445
  %452 = phi i1 [ true, %445 ], [ %450, %448 ]
  %453 = zext i1 %452 to i32
  store i32 %453, ptr %71, align 4, !tbaa !9
  %454 = load ptr, ptr %20, align 8, !tbaa !5
  %455 = load i32, ptr %454, align 4, !tbaa !9
  %456 = sitofp i32 %455 to double
  %457 = load ptr, ptr %21, align 8, !tbaa !5
  %458 = load i32, ptr %457, align 4, !tbaa !9
  %459 = sitofp i32 %458 to double
  %460 = fmul double %456, %459
  %461 = call double @sqrt(double noundef %460) #6
  %462 = fdiv double 1.000000e+00, %461
  store double %462, ptr %101, align 8, !tbaa !11
  store i32 1, ptr %105, align 4, !tbaa !9
  store i32 1, ptr %102, align 4, !tbaa !9
  %463 = load i32, ptr %73, align 4, !tbaa !9
  %464 = icmp ne i32 %463, 0
  br i1 %464, label %465, label %551

465:                                              ; preds = %451
  %466 = load ptr, ptr %21, align 8, !tbaa !5
  %467 = load i32, ptr %466, align 4, !tbaa !9
  store i32 %467, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %60, align 4, !tbaa !9
  br label %468

468:                                              ; preds = %547, %465
  %469 = load i32, ptr %60, align 4, !tbaa !9
  %470 = load i32, ptr %37, align 4, !tbaa !9
  %471 = icmp sle i32 %469, %470
  br i1 %471, label %472, label %550

472:                                              ; preds = %468
  store double 0.000000e+00, ptr %48, align 8, !tbaa !11
  store double 1.000000e+00, ptr %50, align 8, !tbaa !11
  %473 = load ptr, ptr %20, align 8, !tbaa !5
  %474 = load i32, ptr %473, align 4, !tbaa !9
  %475 = load i32, ptr %60, align 4, !tbaa !9
  %476 = sub nsw i32 %474, %475
  %477 = add nsw i32 %476, 1
  store i32 %477, ptr %38, align 4, !tbaa !9
  %478 = load ptr, ptr %22, align 8, !tbaa !5
  %479 = load i32, ptr %60, align 4, !tbaa !9
  %480 = load i32, ptr %60, align 4, !tbaa !9
  %481 = load i32, ptr %33, align 4, !tbaa !9
  %482 = mul nsw i32 %480, %481
  %483 = add nsw i32 %479, %482
  %484 = sext i32 %483 to i64
  %485 = getelementptr inbounds %struct.doublecomplex, ptr %478, i64 %484
  call void @zlassq_(ptr noundef %38, ptr noundef %485, ptr noundef @c__1, ptr noundef %48, ptr noundef %50)
  %486 = load double, ptr %48, align 8, !tbaa !11
  %487 = load double, ptr %94, align 8, !tbaa !11
  %488 = fcmp ogt double %486, %487
  br i1 %488, label %489, label %495

489:                                              ; preds = %472
  %490 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -6, ptr %490, align 4, !tbaa !9
  %491 = load ptr, ptr %32, align 8, !tbaa !5
  %492 = load i32, ptr %491, align 4, !tbaa !9
  %493 = sub nsw i32 0, %492
  store i32 %493, ptr %38, align 4, !tbaa !9
  %494 = call i32 @xerbla_(ptr noundef @.str.9, ptr noundef %38, i32 noundef 6)
  store i32 1, ptr %110, align 4
  br label %4343

495:                                              ; preds = %472
  %496 = load double, ptr %50, align 8, !tbaa !11
  %497 = call double @sqrt(double noundef %496) #6
  store double %497, ptr %50, align 8, !tbaa !11
  %498 = load double, ptr %48, align 8, !tbaa !11
  %499 = load double, ptr %94, align 8, !tbaa !11
  %500 = load double, ptr %50, align 8, !tbaa !11
  %501 = fdiv double %499, %500
  %502 = fcmp olt double %498, %501
  br i1 %502, label %503, label %514

503:                                              ; preds = %495
  %504 = load i32, ptr %105, align 4, !tbaa !9
  %505 = icmp ne i32 %504, 0
  br i1 %505, label %506, label %514

506:                                              ; preds = %503
  %507 = load double, ptr %48, align 8, !tbaa !11
  %508 = load double, ptr %50, align 8, !tbaa !11
  %509 = fmul double %507, %508
  %510 = load ptr, ptr %24, align 8, !tbaa !5
  %511 = load i32, ptr %60, align 4, !tbaa !9
  %512 = sext i32 %511 to i64
  %513 = getelementptr inbounds double, ptr %510, i64 %512
  store double %509, ptr %513, align 8, !tbaa !11
  br label %546

514:                                              ; preds = %503, %495
  store i32 0, ptr %105, align 4, !tbaa !9
  %515 = load double, ptr %48, align 8, !tbaa !11
  %516 = load double, ptr %50, align 8, !tbaa !11
  %517 = load double, ptr %101, align 8, !tbaa !11
  %518 = fmul double %516, %517
  %519 = fmul double %515, %518
  %520 = load ptr, ptr %24, align 8, !tbaa !5
  %521 = load i32, ptr %60, align 4, !tbaa !9
  %522 = sext i32 %521 to i64
  %523 = getelementptr inbounds double, ptr %520, i64 %522
  store double %519, ptr %523, align 8, !tbaa !11
  %524 = load i32, ptr %102, align 4, !tbaa !9
  %525 = icmp ne i32 %524, 0
  br i1 %525, label %526, label %545

526:                                              ; preds = %514
  store i32 0, ptr %102, align 4, !tbaa !9
  %527 = load i32, ptr %60, align 4, !tbaa !9
  %528 = sub nsw i32 %527, 1
  store i32 %528, ptr %38, align 4, !tbaa !9
  store i32 1, ptr %61, align 4, !tbaa !9
  br label %529

529:                                              ; preds = %541, %526
  %530 = load i32, ptr %61, align 4, !tbaa !9
  %531 = load i32, ptr %38, align 4, !tbaa !9
  %532 = icmp sle i32 %530, %531
  br i1 %532, label %533, label %544

533:                                              ; preds = %529
  %534 = load double, ptr %101, align 8, !tbaa !11
  %535 = load ptr, ptr %24, align 8, !tbaa !5
  %536 = load i32, ptr %61, align 4, !tbaa !9
  %537 = sext i32 %536 to i64
  %538 = getelementptr inbounds double, ptr %535, i64 %537
  %539 = load double, ptr %538, align 8, !tbaa !11
  %540 = fmul double %539, %534
  store double %540, ptr %538, align 8, !tbaa !11
  br label %541

541:                                              ; preds = %533
  %542 = load i32, ptr %61, align 4, !tbaa !9
  %543 = add nsw i32 %542, 1
  store i32 %543, ptr %61, align 4, !tbaa !9
  br label %529, !llvm.loop !16

544:                                              ; preds = %529
  br label %545

545:                                              ; preds = %544, %514
  br label %546

546:                                              ; preds = %545, %506
  br label %547

547:                                              ; preds = %546
  %548 = load i32, ptr %60, align 4, !tbaa !9
  %549 = add nsw i32 %548, 1
  store i32 %549, ptr %60, align 4, !tbaa !9
  br label %468, !llvm.loop !18

550:                                              ; preds = %468
  br label %716

551:                                              ; preds = %451
  %552 = load i32, ptr %74, align 4, !tbaa !9
  %553 = icmp ne i32 %552, 0
  br i1 %553, label %554, label %634

554:                                              ; preds = %551
  %555 = load ptr, ptr %21, align 8, !tbaa !5
  %556 = load i32, ptr %555, align 4, !tbaa !9
  store i32 %556, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %60, align 4, !tbaa !9
  br label %557

557:                                              ; preds = %630, %554
  %558 = load i32, ptr %60, align 4, !tbaa !9
  %559 = load i32, ptr %37, align 4, !tbaa !9
  %560 = icmp sle i32 %558, %559
  br i1 %560, label %561, label %633

561:                                              ; preds = %557
  store double 0.000000e+00, ptr %48, align 8, !tbaa !11
  store double 1.000000e+00, ptr %50, align 8, !tbaa !11
  %562 = load ptr, ptr %22, align 8, !tbaa !5
  %563 = load i32, ptr %60, align 4, !tbaa !9
  %564 = load i32, ptr %33, align 4, !tbaa !9
  %565 = mul nsw i32 %563, %564
  %566 = add nsw i32 %565, 1
  %567 = sext i32 %566 to i64
  %568 = getelementptr inbounds %struct.doublecomplex, ptr %562, i64 %567
  call void @zlassq_(ptr noundef %60, ptr noundef %568, ptr noundef @c__1, ptr noundef %48, ptr noundef %50)
  %569 = load double, ptr %48, align 8, !tbaa !11
  %570 = load double, ptr %94, align 8, !tbaa !11
  %571 = fcmp ogt double %569, %570
  br i1 %571, label %572, label %578

572:                                              ; preds = %561
  %573 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -6, ptr %573, align 4, !tbaa !9
  %574 = load ptr, ptr %32, align 8, !tbaa !5
  %575 = load i32, ptr %574, align 4, !tbaa !9
  %576 = sub nsw i32 0, %575
  store i32 %576, ptr %38, align 4, !tbaa !9
  %577 = call i32 @xerbla_(ptr noundef @.str.9, ptr noundef %38, i32 noundef 6)
  store i32 1, ptr %110, align 4
  br label %4343

578:                                              ; preds = %561
  %579 = load double, ptr %50, align 8, !tbaa !11
  %580 = call double @sqrt(double noundef %579) #6
  store double %580, ptr %50, align 8, !tbaa !11
  %581 = load double, ptr %48, align 8, !tbaa !11
  %582 = load double, ptr %94, align 8, !tbaa !11
  %583 = load double, ptr %50, align 8, !tbaa !11
  %584 = fdiv double %582, %583
  %585 = fcmp olt double %581, %584
  br i1 %585, label %586, label %597

586:                                              ; preds = %578
  %587 = load i32, ptr %105, align 4, !tbaa !9
  %588 = icmp ne i32 %587, 0
  br i1 %588, label %589, label %597

589:                                              ; preds = %586
  %590 = load double, ptr %48, align 8, !tbaa !11
  %591 = load double, ptr %50, align 8, !tbaa !11
  %592 = fmul double %590, %591
  %593 = load ptr, ptr %24, align 8, !tbaa !5
  %594 = load i32, ptr %60, align 4, !tbaa !9
  %595 = sext i32 %594 to i64
  %596 = getelementptr inbounds double, ptr %593, i64 %595
  store double %592, ptr %596, align 8, !tbaa !11
  br label %629

597:                                              ; preds = %586, %578
  store i32 0, ptr %105, align 4, !tbaa !9
  %598 = load double, ptr %48, align 8, !tbaa !11
  %599 = load double, ptr %50, align 8, !tbaa !11
  %600 = load double, ptr %101, align 8, !tbaa !11
  %601 = fmul double %599, %600
  %602 = fmul double %598, %601
  %603 = load ptr, ptr %24, align 8, !tbaa !5
  %604 = load i32, ptr %60, align 4, !tbaa !9
  %605 = sext i32 %604 to i64
  %606 = getelementptr inbounds double, ptr %603, i64 %605
  store double %602, ptr %606, align 8, !tbaa !11
  %607 = load i32, ptr %102, align 4, !tbaa !9
  %608 = icmp ne i32 %607, 0
  br i1 %608, label %609, label %628

609:                                              ; preds = %597
  store i32 0, ptr %102, align 4, !tbaa !9
  %610 = load i32, ptr %60, align 4, !tbaa !9
  %611 = sub nsw i32 %610, 1
  store i32 %611, ptr %38, align 4, !tbaa !9
  store i32 1, ptr %61, align 4, !tbaa !9
  br label %612

612:                                              ; preds = %624, %609
  %613 = load i32, ptr %61, align 4, !tbaa !9
  %614 = load i32, ptr %38, align 4, !tbaa !9
  %615 = icmp sle i32 %613, %614
  br i1 %615, label %616, label %627

616:                                              ; preds = %612
  %617 = load double, ptr %101, align 8, !tbaa !11
  %618 = load ptr, ptr %24, align 8, !tbaa !5
  %619 = load i32, ptr %61, align 4, !tbaa !9
  %620 = sext i32 %619 to i64
  %621 = getelementptr inbounds double, ptr %618, i64 %620
  %622 = load double, ptr %621, align 8, !tbaa !11
  %623 = fmul double %622, %617
  store double %623, ptr %621, align 8, !tbaa !11
  br label %624

624:                                              ; preds = %616
  %625 = load i32, ptr %61, align 4, !tbaa !9
  %626 = add nsw i32 %625, 1
  store i32 %626, ptr %61, align 4, !tbaa !9
  br label %612, !llvm.loop !19

627:                                              ; preds = %612
  br label %628

628:                                              ; preds = %627, %597
  br label %629

629:                                              ; preds = %628, %589
  br label %630

630:                                              ; preds = %629
  %631 = load i32, ptr %60, align 4, !tbaa !9
  %632 = add nsw i32 %631, 1
  store i32 %632, ptr %60, align 4, !tbaa !9
  br label %557, !llvm.loop !20

633:                                              ; preds = %557
  br label %715

634:                                              ; preds = %551
  %635 = load ptr, ptr %21, align 8, !tbaa !5
  %636 = load i32, ptr %635, align 4, !tbaa !9
  store i32 %636, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %60, align 4, !tbaa !9
  br label %637

637:                                              ; preds = %711, %634
  %638 = load i32, ptr %60, align 4, !tbaa !9
  %639 = load i32, ptr %37, align 4, !tbaa !9
  %640 = icmp sle i32 %638, %639
  br i1 %640, label %641, label %714

641:                                              ; preds = %637
  store double 0.000000e+00, ptr %48, align 8, !tbaa !11
  store double 1.000000e+00, ptr %50, align 8, !tbaa !11
  %642 = load ptr, ptr %20, align 8, !tbaa !5
  %643 = load ptr, ptr %22, align 8, !tbaa !5
  %644 = load i32, ptr %60, align 4, !tbaa !9
  %645 = load i32, ptr %33, align 4, !tbaa !9
  %646 = mul nsw i32 %644, %645
  %647 = add nsw i32 %646, 1
  %648 = sext i32 %647 to i64
  %649 = getelementptr inbounds %struct.doublecomplex, ptr %643, i64 %648
  call void @zlassq_(ptr noundef %642, ptr noundef %649, ptr noundef @c__1, ptr noundef %48, ptr noundef %50)
  %650 = load double, ptr %48, align 8, !tbaa !11
  %651 = load double, ptr %94, align 8, !tbaa !11
  %652 = fcmp ogt double %650, %651
  br i1 %652, label %653, label %659

653:                                              ; preds = %641
  %654 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -6, ptr %654, align 4, !tbaa !9
  %655 = load ptr, ptr %32, align 8, !tbaa !5
  %656 = load i32, ptr %655, align 4, !tbaa !9
  %657 = sub nsw i32 0, %656
  store i32 %657, ptr %38, align 4, !tbaa !9
  %658 = call i32 @xerbla_(ptr noundef @.str.9, ptr noundef %38, i32 noundef 6)
  store i32 1, ptr %110, align 4
  br label %4343

659:                                              ; preds = %641
  %660 = load double, ptr %50, align 8, !tbaa !11
  %661 = call double @sqrt(double noundef %660) #6
  store double %661, ptr %50, align 8, !tbaa !11
  %662 = load double, ptr %48, align 8, !tbaa !11
  %663 = load double, ptr %94, align 8, !tbaa !11
  %664 = load double, ptr %50, align 8, !tbaa !11
  %665 = fdiv double %663, %664
  %666 = fcmp olt double %662, %665
  br i1 %666, label %667, label %678

667:                                              ; preds = %659
  %668 = load i32, ptr %105, align 4, !tbaa !9
  %669 = icmp ne i32 %668, 0
  br i1 %669, label %670, label %678

670:                                              ; preds = %667
  %671 = load double, ptr %48, align 8, !tbaa !11
  %672 = load double, ptr %50, align 8, !tbaa !11
  %673 = fmul double %671, %672
  %674 = load ptr, ptr %24, align 8, !tbaa !5
  %675 = load i32, ptr %60, align 4, !tbaa !9
  %676 = sext i32 %675 to i64
  %677 = getelementptr inbounds double, ptr %674, i64 %676
  store double %673, ptr %677, align 8, !tbaa !11
  br label %710

678:                                              ; preds = %667, %659
  store i32 0, ptr %105, align 4, !tbaa !9
  %679 = load double, ptr %48, align 8, !tbaa !11
  %680 = load double, ptr %50, align 8, !tbaa !11
  %681 = load double, ptr %101, align 8, !tbaa !11
  %682 = fmul double %680, %681
  %683 = fmul double %679, %682
  %684 = load ptr, ptr %24, align 8, !tbaa !5
  %685 = load i32, ptr %60, align 4, !tbaa !9
  %686 = sext i32 %685 to i64
  %687 = getelementptr inbounds double, ptr %684, i64 %686
  store double %683, ptr %687, align 8, !tbaa !11
  %688 = load i32, ptr %102, align 4, !tbaa !9
  %689 = icmp ne i32 %688, 0
  br i1 %689, label %690, label %709

690:                                              ; preds = %678
  store i32 0, ptr %102, align 4, !tbaa !9
  %691 = load i32, ptr %60, align 4, !tbaa !9
  %692 = sub nsw i32 %691, 1
  store i32 %692, ptr %38, align 4, !tbaa !9
  store i32 1, ptr %61, align 4, !tbaa !9
  br label %693

693:                                              ; preds = %705, %690
  %694 = load i32, ptr %61, align 4, !tbaa !9
  %695 = load i32, ptr %38, align 4, !tbaa !9
  %696 = icmp sle i32 %694, %695
  br i1 %696, label %697, label %708

697:                                              ; preds = %693
  %698 = load double, ptr %101, align 8, !tbaa !11
  %699 = load ptr, ptr %24, align 8, !tbaa !5
  %700 = load i32, ptr %61, align 4, !tbaa !9
  %701 = sext i32 %700 to i64
  %702 = getelementptr inbounds double, ptr %699, i64 %701
  %703 = load double, ptr %702, align 8, !tbaa !11
  %704 = fmul double %703, %698
  store double %704, ptr %702, align 8, !tbaa !11
  br label %705

705:                                              ; preds = %697
  %706 = load i32, ptr %61, align 4, !tbaa !9
  %707 = add nsw i32 %706, 1
  store i32 %707, ptr %61, align 4, !tbaa !9
  br label %693, !llvm.loop !21

708:                                              ; preds = %693
  br label %709

709:                                              ; preds = %708, %678
  br label %710

710:                                              ; preds = %709, %670
  br label %711

711:                                              ; preds = %710
  %712 = load i32, ptr %60, align 4, !tbaa !9
  %713 = add nsw i32 %712, 1
  store i32 %713, ptr %60, align 4, !tbaa !9
  br label %637, !llvm.loop !22

714:                                              ; preds = %637
  br label %715

715:                                              ; preds = %714, %633
  br label %716

716:                                              ; preds = %715, %550
  %717 = load i32, ptr %105, align 4, !tbaa !9
  %718 = icmp ne i32 %717, 0
  br i1 %718, label %719, label %720

719:                                              ; preds = %716
  store double 1.000000e+00, ptr %101, align 8, !tbaa !11
  br label %720

720:                                              ; preds = %719, %716
  store double 0.000000e+00, ptr %48, align 8, !tbaa !11
  %721 = load double, ptr %94, align 8, !tbaa !11
  store double %721, ptr %50, align 8, !tbaa !11
  %722 = load ptr, ptr %21, align 8, !tbaa !5
  %723 = load i32, ptr %722, align 4, !tbaa !9
  store i32 %723, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %60, align 4, !tbaa !9
  br label %724

724:                                              ; preds = %767, %720
  %725 = load i32, ptr %60, align 4, !tbaa !9
  %726 = load i32, ptr %37, align 4, !tbaa !9
  %727 = icmp sle i32 %725, %726
  br i1 %727, label %728, label %770

728:                                              ; preds = %724
  %729 = load ptr, ptr %24, align 8, !tbaa !5
  %730 = load i32, ptr %60, align 4, !tbaa !9
  %731 = sext i32 %730 to i64
  %732 = getelementptr inbounds double, ptr %729, i64 %731
  %733 = load double, ptr %732, align 8, !tbaa !11
  %734 = fcmp une double %733, 0.000000e+00
  br i1 %734, label %735, label %751

735:                                              ; preds = %728
  %736 = load double, ptr %50, align 8, !tbaa !11
  store double %736, ptr %43, align 8, !tbaa !11
  %737 = load ptr, ptr %24, align 8, !tbaa !5
  %738 = load i32, ptr %60, align 4, !tbaa !9
  %739 = sext i32 %738 to i64
  %740 = getelementptr inbounds double, ptr %737, i64 %739
  %741 = load double, ptr %740, align 8, !tbaa !11
  store double %741, ptr %44, align 8, !tbaa !11
  %742 = load double, ptr %43, align 8, !tbaa !11
  %743 = load double, ptr %44, align 8, !tbaa !11
  %744 = fcmp ole double %742, %743
  br i1 %744, label %745, label %747

745:                                              ; preds = %735
  %746 = load double, ptr %43, align 8, !tbaa !11
  br label %749

747:                                              ; preds = %735
  %748 = load double, ptr %44, align 8, !tbaa !11
  br label %749

749:                                              ; preds = %747, %745
  %750 = phi double [ %746, %745 ], [ %748, %747 ]
  store double %750, ptr %50, align 8, !tbaa !11
  br label %751

751:                                              ; preds = %749, %728
  %752 = load double, ptr %48, align 8, !tbaa !11
  store double %752, ptr %43, align 8, !tbaa !11
  %753 = load ptr, ptr %24, align 8, !tbaa !5
  %754 = load i32, ptr %60, align 4, !tbaa !9
  %755 = sext i32 %754 to i64
  %756 = getelementptr inbounds double, ptr %753, i64 %755
  %757 = load double, ptr %756, align 8, !tbaa !11
  store double %757, ptr %44, align 8, !tbaa !11
  %758 = load double, ptr %43, align 8, !tbaa !11
  %759 = load double, ptr %44, align 8, !tbaa !11
  %760 = fcmp oge double %758, %759
  br i1 %760, label %761, label %763

761:                                              ; preds = %751
  %762 = load double, ptr %43, align 8, !tbaa !11
  br label %765

763:                                              ; preds = %751
  %764 = load double, ptr %44, align 8, !tbaa !11
  br label %765

765:                                              ; preds = %763, %761
  %766 = phi double [ %762, %761 ], [ %764, %763 ]
  store double %766, ptr %48, align 8, !tbaa !11
  br label %767

767:                                              ; preds = %765
  %768 = load i32, ptr %60, align 4, !tbaa !9
  %769 = add nsw i32 %768, 1
  store i32 %769, ptr %60, align 4, !tbaa !9
  br label %724, !llvm.loop !23

770:                                              ; preds = %724
  %771 = load double, ptr %48, align 8, !tbaa !11
  %772 = fcmp oeq double %771, 0.000000e+00
  br i1 %772, label %773, label %797

773:                                              ; preds = %770
  %774 = load i32, ptr %68, align 4, !tbaa !9
  %775 = icmp ne i32 %774, 0
  br i1 %775, label %776, label %784

776:                                              ; preds = %773
  %777 = load ptr, ptr %20, align 8, !tbaa !5
  %778 = load ptr, ptr %21, align 8, !tbaa !5
  %779 = load ptr, ptr %22, align 8, !tbaa !5
  %780 = load i32, ptr %34, align 4, !tbaa !9
  %781 = sext i32 %780 to i64
  %782 = getelementptr inbounds %struct.doublecomplex, ptr %779, i64 %781
  %783 = load ptr, ptr %23, align 8, !tbaa !5
  call void @zlaset_(ptr noundef @.str.7, ptr noundef %777, ptr noundef %778, ptr noundef @c_b1, ptr noundef @c_b2, ptr noundef %782, ptr noundef %783)
  br label %784

784:                                              ; preds = %776, %773
  %785 = load ptr, ptr %30, align 8, !tbaa !5
  %786 = getelementptr inbounds double, ptr %785, i64 1
  store double 1.000000e+00, ptr %786, align 8, !tbaa !11
  %787 = load ptr, ptr %30, align 8, !tbaa !5
  %788 = getelementptr inbounds double, ptr %787, i64 2
  store double 0.000000e+00, ptr %788, align 8, !tbaa !11
  %789 = load ptr, ptr %30, align 8, !tbaa !5
  %790 = getelementptr inbounds double, ptr %789, i64 3
  store double 0.000000e+00, ptr %790, align 8, !tbaa !11
  %791 = load ptr, ptr %30, align 8, !tbaa !5
  %792 = getelementptr inbounds double, ptr %791, i64 4
  store double 0.000000e+00, ptr %792, align 8, !tbaa !11
  %793 = load ptr, ptr %30, align 8, !tbaa !5
  %794 = getelementptr inbounds double, ptr %793, i64 5
  store double 0.000000e+00, ptr %794, align 8, !tbaa !11
  %795 = load ptr, ptr %30, align 8, !tbaa !5
  %796 = getelementptr inbounds double, ptr %795, i64 6
  store double 0.000000e+00, ptr %796, align 8, !tbaa !11
  store i32 1, ptr %110, align 4
  br label %4343

797:                                              ; preds = %770
  %798 = load ptr, ptr %21, align 8, !tbaa !5
  %799 = load i32, ptr %798, align 4, !tbaa !9
  %800 = icmp eq i32 %799, 1
  br i1 %800, label %801, label %839

801:                                              ; preds = %797
  %802 = load i32, ptr %68, align 4, !tbaa !9
  %803 = icmp ne i32 %802, 0
  br i1 %803, label %804, label %814

804:                                              ; preds = %801
  %805 = load ptr, ptr %24, align 8, !tbaa !5
  %806 = getelementptr inbounds double, ptr %805, i64 1
  %807 = load ptr, ptr %20, align 8, !tbaa !5
  %808 = load ptr, ptr %22, align 8, !tbaa !5
  %809 = load i32, ptr %33, align 4, !tbaa !9
  %810 = add nsw i32 %809, 1
  %811 = sext i32 %810 to i64
  %812 = getelementptr inbounds %struct.doublecomplex, ptr %808, i64 %811
  %813 = load ptr, ptr %23, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.7, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %806, ptr noundef %101, ptr noundef %807, ptr noundef @c__1, ptr noundef %812, ptr noundef %813, ptr noundef %52)
  br label %814

814:                                              ; preds = %804, %801
  %815 = load double, ptr %101, align 8, !tbaa !11
  %816 = fdiv double 1.000000e+00, %815
  %817 = load ptr, ptr %30, align 8, !tbaa !5
  %818 = getelementptr inbounds double, ptr %817, i64 1
  store double %816, ptr %818, align 8, !tbaa !11
  %819 = load ptr, ptr %24, align 8, !tbaa !5
  %820 = getelementptr inbounds double, ptr %819, i64 1
  %821 = load double, ptr %820, align 8, !tbaa !11
  %822 = load double, ptr %67, align 8, !tbaa !11
  %823 = fcmp oge double %821, %822
  br i1 %823, label %824, label %827

824:                                              ; preds = %814
  %825 = load ptr, ptr %30, align 8, !tbaa !5
  %826 = getelementptr inbounds double, ptr %825, i64 2
  store double 1.000000e+00, ptr %826, align 8, !tbaa !11
  br label %830

827:                                              ; preds = %814
  %828 = load ptr, ptr %30, align 8, !tbaa !5
  %829 = getelementptr inbounds double, ptr %828, i64 2
  store double 0.000000e+00, ptr %829, align 8, !tbaa !11
  br label %830

830:                                              ; preds = %827, %824
  %831 = load ptr, ptr %30, align 8, !tbaa !5
  %832 = getelementptr inbounds double, ptr %831, i64 3
  store double 0.000000e+00, ptr %832, align 8, !tbaa !11
  %833 = load ptr, ptr %30, align 8, !tbaa !5
  %834 = getelementptr inbounds double, ptr %833, i64 4
  store double 0.000000e+00, ptr %834, align 8, !tbaa !11
  %835 = load ptr, ptr %30, align 8, !tbaa !5
  %836 = getelementptr inbounds double, ptr %835, i64 5
  store double 0.000000e+00, ptr %836, align 8, !tbaa !11
  %837 = load ptr, ptr %30, align 8, !tbaa !5
  %838 = getelementptr inbounds double, ptr %837, i64 6
  store double 0.000000e+00, ptr %838, align 8, !tbaa !11
  store i32 1, ptr %110, align 4
  br label %4343

839:                                              ; preds = %797
  %840 = load double, ptr %67, align 8, !tbaa !11
  %841 = load double, ptr %69, align 8, !tbaa !11
  %842 = fdiv double %840, %841
  %843 = call double @sqrt(double noundef %842) #6
  store double %843, ptr %81, align 8, !tbaa !11
  %844 = load double, ptr %94, align 8, !tbaa !11
  %845 = load ptr, ptr %21, align 8, !tbaa !5
  %846 = load i32, ptr %845, align 4, !tbaa !9
  %847 = sitofp i32 %846 to double
  %848 = fdiv double %844, %847
  %849 = call double @sqrt(double noundef %848) #6
  store double %849, ptr %58, align 8, !tbaa !11
  %850 = load double, ptr %48, align 8, !tbaa !11
  %851 = load double, ptr %81, align 8, !tbaa !11
  %852 = fcmp ole double %850, %851
  br i1 %852, label %865, label %853

853:                                              ; preds = %839
  %854 = load double, ptr %50, align 8, !tbaa !11
  %855 = load double, ptr %58, align 8, !tbaa !11
  %856 = fcmp oge double %854, %855
  br i1 %856, label %865, label %857

857:                                              ; preds = %853
  %858 = load double, ptr %81, align 8, !tbaa !11
  %859 = load double, ptr %50, align 8, !tbaa !11
  %860 = fcmp ole double %858, %859
  br i1 %860, label %861, label %879

861:                                              ; preds = %857
  %862 = load double, ptr %48, align 8, !tbaa !11
  %863 = load double, ptr %58, align 8, !tbaa !11
  %864 = fcmp ole double %862, %863
  br i1 %864, label %865, label %879

865:                                              ; preds = %861, %853, %839
  %866 = load double, ptr %94, align 8, !tbaa !11
  store double %866, ptr %43, align 8, !tbaa !11
  %867 = load double, ptr %58, align 8, !tbaa !11
  %868 = load double, ptr %48, align 8, !tbaa !11
  %869 = fdiv double %867, %868
  store double %869, ptr %44, align 8, !tbaa !11
  %870 = load double, ptr %43, align 8, !tbaa !11
  %871 = load double, ptr %44, align 8, !tbaa !11
  %872 = fcmp ole double %870, %871
  br i1 %872, label %873, label %875

873:                                              ; preds = %865
  %874 = load double, ptr %43, align 8, !tbaa !11
  br label %877

875:                                              ; preds = %865
  %876 = load double, ptr %44, align 8, !tbaa !11
  br label %877

877:                                              ; preds = %875, %873
  %878 = phi double [ %874, %873 ], [ %876, %875 ]
  store double %878, ptr %58, align 8, !tbaa !11
  br label %965

879:                                              ; preds = %861, %857
  %880 = load double, ptr %50, align 8, !tbaa !11
  %881 = load double, ptr %81, align 8, !tbaa !11
  %882 = fcmp ole double %880, %881
  br i1 %882, label %883, label %908

883:                                              ; preds = %879
  %884 = load double, ptr %48, align 8, !tbaa !11
  %885 = load double, ptr %58, align 8, !tbaa !11
  %886 = fcmp ole double %884, %885
  br i1 %886, label %887, label %908

887:                                              ; preds = %883
  %888 = load double, ptr %81, align 8, !tbaa !11
  %889 = load double, ptr %50, align 8, !tbaa !11
  %890 = fdiv double %888, %889
  store double %890, ptr %43, align 8, !tbaa !11
  %891 = load double, ptr %94, align 8, !tbaa !11
  %892 = load double, ptr %48, align 8, !tbaa !11
  %893 = load ptr, ptr %21, align 8, !tbaa !5
  %894 = load i32, ptr %893, align 4, !tbaa !9
  %895 = sitofp i32 %894 to double
  %896 = call double @sqrt(double noundef %895) #6
  %897 = fmul double %892, %896
  %898 = fdiv double %891, %897
  store double %898, ptr %44, align 8, !tbaa !11
  %899 = load double, ptr %43, align 8, !tbaa !11
  %900 = load double, ptr %44, align 8, !tbaa !11
  %901 = fcmp ole double %899, %900
  br i1 %901, label %902, label %904

902:                                              ; preds = %887
  %903 = load double, ptr %43, align 8, !tbaa !11
  br label %906

904:                                              ; preds = %887
  %905 = load double, ptr %44, align 8, !tbaa !11
  br label %906

906:                                              ; preds = %904, %902
  %907 = phi double [ %903, %902 ], [ %905, %904 ]
  store double %907, ptr %58, align 8, !tbaa !11
  br label %964

908:                                              ; preds = %883, %879
  %909 = load double, ptr %50, align 8, !tbaa !11
  %910 = load double, ptr %81, align 8, !tbaa !11
  %911 = fcmp oge double %909, %910
  br i1 %911, label %912, label %932

912:                                              ; preds = %908
  %913 = load double, ptr %48, align 8, !tbaa !11
  %914 = load double, ptr %58, align 8, !tbaa !11
  %915 = fcmp oge double %913, %914
  br i1 %915, label %916, label %932

916:                                              ; preds = %912
  %917 = load double, ptr %81, align 8, !tbaa !11
  %918 = load double, ptr %50, align 8, !tbaa !11
  %919 = fdiv double %917, %918
  store double %919, ptr %43, align 8, !tbaa !11
  %920 = load double, ptr %58, align 8, !tbaa !11
  %921 = load double, ptr %48, align 8, !tbaa !11
  %922 = fdiv double %920, %921
  store double %922, ptr %44, align 8, !tbaa !11
  %923 = load double, ptr %43, align 8, !tbaa !11
  %924 = load double, ptr %44, align 8, !tbaa !11
  %925 = fcmp oge double %923, %924
  br i1 %925, label %926, label %928

926:                                              ; preds = %916
  %927 = load double, ptr %43, align 8, !tbaa !11
  br label %930

928:                                              ; preds = %916
  %929 = load double, ptr %44, align 8, !tbaa !11
  br label %930

930:                                              ; preds = %928, %926
  %931 = phi double [ %927, %926 ], [ %929, %928 ]
  store double %931, ptr %58, align 8, !tbaa !11
  br label %963

932:                                              ; preds = %912, %908
  %933 = load double, ptr %50, align 8, !tbaa !11
  %934 = load double, ptr %81, align 8, !tbaa !11
  %935 = fcmp ole double %933, %934
  br i1 %935, label %936, label %961

936:                                              ; preds = %932
  %937 = load double, ptr %48, align 8, !tbaa !11
  %938 = load double, ptr %58, align 8, !tbaa !11
  %939 = fcmp oge double %937, %938
  br i1 %939, label %940, label %961

940:                                              ; preds = %936
  %941 = load double, ptr %81, align 8, !tbaa !11
  %942 = load double, ptr %50, align 8, !tbaa !11
  %943 = fdiv double %941, %942
  store double %943, ptr %43, align 8, !tbaa !11
  %944 = load double, ptr %94, align 8, !tbaa !11
  %945 = load ptr, ptr %21, align 8, !tbaa !5
  %946 = load i32, ptr %945, align 4, !tbaa !9
  %947 = sitofp i32 %946 to double
  %948 = call double @sqrt(double noundef %947) #6
  %949 = load double, ptr %48, align 8, !tbaa !11
  %950 = fmul double %948, %949
  %951 = fdiv double %944, %950
  store double %951, ptr %44, align 8, !tbaa !11
  %952 = load double, ptr %43, align 8, !tbaa !11
  %953 = load double, ptr %44, align 8, !tbaa !11
  %954 = fcmp ole double %952, %953
  br i1 %954, label %955, label %957

955:                                              ; preds = %940
  %956 = load double, ptr %43, align 8, !tbaa !11
  br label %959

957:                                              ; preds = %940
  %958 = load double, ptr %44, align 8, !tbaa !11
  br label %959

959:                                              ; preds = %957, %955
  %960 = phi double [ %956, %955 ], [ %958, %957 ]
  store double %960, ptr %58, align 8, !tbaa !11
  br label %962

961:                                              ; preds = %936, %932
  store double 1.000000e+00, ptr %58, align 8, !tbaa !11
  br label %962

962:                                              ; preds = %961, %959
  br label %963

963:                                              ; preds = %962, %930
  br label %964

964:                                              ; preds = %963, %906
  br label %965

965:                                              ; preds = %964, %877
  %966 = load double, ptr %58, align 8, !tbaa !11
  %967 = fcmp une double %966, 1.000000e+00
  br i1 %967, label %968, label %973

968:                                              ; preds = %965
  %969 = load ptr, ptr %21, align 8, !tbaa !5
  %970 = load ptr, ptr %24, align 8, !tbaa !5
  %971 = getelementptr inbounds double, ptr %970, i64 1
  %972 = load ptr, ptr %21, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.7, ptr noundef @c__0, ptr noundef @c__0, ptr noundef @c_b42, ptr noundef %58, ptr noundef %969, ptr noundef @c__1, ptr noundef %971, ptr noundef %972, ptr noundef %52)
  br label %973

973:                                              ; preds = %968, %965
  %974 = load double, ptr %58, align 8, !tbaa !11
  %975 = load double, ptr %101, align 8, !tbaa !11
  %976 = fmul double %974, %975
  store double %976, ptr %101, align 8, !tbaa !11
  %977 = load double, ptr %101, align 8, !tbaa !11
  %978 = fcmp une double %977, 1.000000e+00
  br i1 %978, label %979, label %990

979:                                              ; preds = %973
  %980 = load ptr, ptr %17, align 8, !tbaa !5
  %981 = load ptr, ptr %20, align 8, !tbaa !5
  %982 = load ptr, ptr %21, align 8, !tbaa !5
  %983 = load ptr, ptr %22, align 8, !tbaa !5
  %984 = load i32, ptr %34, align 4, !tbaa !9
  %985 = sext i32 %984 to i64
  %986 = getelementptr inbounds %struct.doublecomplex, ptr %983, i64 %985
  %987 = load ptr, ptr %23, align 8, !tbaa !5
  call void @zlascl_(ptr noundef %980, ptr noundef @c__0, ptr noundef @c__0, ptr noundef @c_b42, ptr noundef %101, ptr noundef %981, ptr noundef %982, ptr noundef %986, ptr noundef %987, ptr noundef %52)
  %988 = load double, ptr %101, align 8, !tbaa !11
  %989 = fdiv double 1.000000e+00, %988
  store double %989, ptr %101, align 8, !tbaa !11
  br label %990

990:                                              ; preds = %979, %973
  %991 = load ptr, ptr %21, align 8, !tbaa !5
  %992 = load i32, ptr %991, align 4, !tbaa !9
  %993 = load ptr, ptr %21, align 8, !tbaa !5
  %994 = load i32, ptr %993, align 4, !tbaa !9
  %995 = sub nsw i32 %994, 1
  %996 = mul nsw i32 %992, %995
  %997 = sdiv i32 %996, 2
  store i32 %997, ptr %89, align 4, !tbaa !9
  store i32 0, ptr %91, align 4, !tbaa !9
  %998 = load ptr, ptr %21, align 8, !tbaa !5
  %999 = load i32, ptr %998, align 4, !tbaa !9
  store i32 %999, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %61, align 4, !tbaa !9
  br label %1000

1000:                                             ; preds = %1016, %990
  %1001 = load i32, ptr %61, align 4, !tbaa !9
  %1002 = load i32, ptr %37, align 4, !tbaa !9
  %1003 = icmp sle i32 %1001, %1002
  br i1 %1003, label %1004, label %1019

1004:                                             ; preds = %1000
  %1005 = load i32, ptr %61, align 4, !tbaa !9
  store i32 %1005, ptr %38, align 4, !tbaa !9
  %1006 = load ptr, ptr %28, align 8, !tbaa !5
  %1007 = load i32, ptr %38, align 4, !tbaa !9
  %1008 = sext i32 %1007 to i64
  %1009 = getelementptr inbounds %struct.doublecomplex, ptr %1006, i64 %1008
  %1010 = getelementptr inbounds %struct.doublecomplex, ptr %1009, i32 0, i32 0
  store double 1.000000e+00, ptr %1010, align 8, !tbaa !13
  %1011 = load ptr, ptr %28, align 8, !tbaa !5
  %1012 = load i32, ptr %38, align 4, !tbaa !9
  %1013 = sext i32 %1012 to i64
  %1014 = getelementptr inbounds %struct.doublecomplex, ptr %1011, i64 %1013
  %1015 = getelementptr inbounds %struct.doublecomplex, ptr %1014, i32 0, i32 1
  store double 0.000000e+00, ptr %1015, align 8, !tbaa !15
  br label %1016

1016:                                             ; preds = %1004
  %1017 = load i32, ptr %61, align 4, !tbaa !9
  %1018 = add nsw i32 %1017, 1
  store i32 %1018, ptr %61, align 4, !tbaa !9
  br label %1000, !llvm.loop !24

1019:                                             ; preds = %1000
  store i32 3, ptr %83, align 4, !tbaa !9
  %1020 = load ptr, ptr %21, align 8, !tbaa !5
  %1021 = load i32, ptr %1020, align 4, !tbaa !9
  %1022 = icmp sle i32 8, %1021
  br i1 %1022, label %1023, label %1024

1023:                                             ; preds = %1019
  br label %1027

1024:                                             ; preds = %1019
  %1025 = load ptr, ptr %21, align 8, !tbaa !5
  %1026 = load i32, ptr %1025, align 4, !tbaa !9
  br label %1027

1027:                                             ; preds = %1024, %1023
  %1028 = phi i32 [ 8, %1023 ], [ %1026, %1024 ]
  store i32 %1028, ptr %95, align 4, !tbaa !9
  %1029 = load ptr, ptr %21, align 8, !tbaa !5
  %1030 = load i32, ptr %1029, align 4, !tbaa !9
  %1031 = load i32, ptr %95, align 4, !tbaa !9
  %1032 = sdiv i32 %1030, %1031
  store i32 %1032, ptr %100, align 4, !tbaa !9
  %1033 = load i32, ptr %100, align 4, !tbaa !9
  %1034 = load i32, ptr %95, align 4, !tbaa !9
  %1035 = mul nsw i32 %1033, %1034
  %1036 = load ptr, ptr %21, align 8, !tbaa !5
  %1037 = load i32, ptr %1036, align 4, !tbaa !9
  %1038 = icmp ne i32 %1035, %1037
  br i1 %1038, label %1039, label %1042

1039:                                             ; preds = %1027
  %1040 = load i32, ptr %100, align 4, !tbaa !9
  %1041 = add nsw i32 %1040, 1
  store i32 %1041, ptr %100, align 4, !tbaa !9
  br label %1042

1042:                                             ; preds = %1039, %1027
  %1043 = load i32, ptr %95, align 4, !tbaa !9
  store i32 %1043, ptr %37, align 4, !tbaa !9
  %1044 = load i32, ptr %37, align 4, !tbaa !9
  %1045 = load i32, ptr %37, align 4, !tbaa !9
  %1046 = mul nsw i32 %1044, %1045
  store i32 %1046, ptr %84, align 4, !tbaa !9
  %1047 = load i32, ptr %95, align 4, !tbaa !9
  %1048 = icmp sle i32 5, %1047
  br i1 %1048, label %1049, label %1050

1049:                                             ; preds = %1042
  br label %1052

1050:                                             ; preds = %1042
  %1051 = load i32, ptr %95, align 4, !tbaa !9
  br label %1052

1052:                                             ; preds = %1050, %1049
  %1053 = phi i32 [ 5, %1049 ], [ %1051, %1050 ]
  store i32 %1053, ptr %108, align 4, !tbaa !9
  store i32 1, ptr %96, align 4, !tbaa !9
  store i32 64, ptr %37, align 4, !tbaa !9
  %1054 = load i32, ptr %95, align 4, !tbaa !9
  %1055 = shl i32 %1054, 2
  store i32 %1055, ptr %38, align 4, !tbaa !9
  %1056 = load i32, ptr %73, align 4, !tbaa !9
  %1057 = icmp ne i32 %1056, 0
  br i1 %1057, label %1061, label %1058

1058:                                             ; preds = %1052
  %1059 = load i32, ptr %74, align 4, !tbaa !9
  %1060 = icmp ne i32 %1059, 0
  br i1 %1060, label %1061, label %1508

1061:                                             ; preds = %1058, %1052
  %1062 = load ptr, ptr %21, align 8, !tbaa !5
  %1063 = load i32, ptr %1062, align 4, !tbaa !9
  %1064 = load i32, ptr %37, align 4, !tbaa !9
  %1065 = load i32, ptr %38, align 4, !tbaa !9
  %1066 = icmp sge i32 %1064, %1065
  br i1 %1066, label %1067, label %1069

1067:                                             ; preds = %1061
  %1068 = load i32, ptr %37, align 4, !tbaa !9
  br label %1071

1069:                                             ; preds = %1061
  %1070 = load i32, ptr %38, align 4, !tbaa !9
  br label %1071

1071:                                             ; preds = %1069, %1067
  %1072 = phi i32 [ %1068, %1067 ], [ %1070, %1069 ]
  %1073 = icmp sgt i32 %1063, %1072
  br i1 %1073, label %1074, label %1508

1074:                                             ; preds = %1071
  %1075 = load ptr, ptr %21, align 8, !tbaa !5
  %1076 = load i32, ptr %1075, align 4, !tbaa !9
  %1077 = sdiv i32 %1076, 4
  store i32 %1077, ptr %77, align 4, !tbaa !9
  %1078 = load ptr, ptr %21, align 8, !tbaa !5
  %1079 = load i32, ptr %1078, align 4, !tbaa !9
  %1080 = sdiv i32 %1079, 2
  store i32 %1080, ptr %76, align 4, !tbaa !9
  %1081 = load i32, ptr %77, align 4, !tbaa !9
  %1082 = mul nsw i32 %1081, 3
  store i32 %1082, ptr %79, align 4, !tbaa !9
  %1083 = load i32, ptr %70, align 4, !tbaa !9
  %1084 = icmp ne i32 %1083, 0
  br i1 %1084, label %1085, label %1086

1085:                                             ; preds = %1074
  store i32 0, ptr %61, align 4, !tbaa !9
  br label %1087

1086:                                             ; preds = %1074
  store i32 1, ptr %61, align 4, !tbaa !9
  br label %1087

1087:                                             ; preds = %1086, %1085
  %1088 = load i32, ptr %73, align 4, !tbaa !9
  %1089 = icmp ne i32 %1088, 0
  br i1 %1089, label %1090, label %1359

1090:                                             ; preds = %1087
  %1091 = load ptr, ptr %20, align 8, !tbaa !5
  %1092 = load i32, ptr %1091, align 4, !tbaa !9
  %1093 = load i32, ptr %79, align 4, !tbaa !9
  %1094 = sub nsw i32 %1092, %1093
  store i32 %1094, ptr %37, align 4, !tbaa !9
  %1095 = load ptr, ptr %21, align 8, !tbaa !5
  %1096 = load i32, ptr %1095, align 4, !tbaa !9
  %1097 = load i32, ptr %79, align 4, !tbaa !9
  %1098 = sub nsw i32 %1096, %1097
  store i32 %1098, ptr %38, align 4, !tbaa !9
  %1099 = load ptr, ptr %29, align 8, !tbaa !5
  %1100 = load i32, ptr %1099, align 4, !tbaa !9
  %1101 = load ptr, ptr %21, align 8, !tbaa !5
  %1102 = load i32, ptr %1101, align 4, !tbaa !9
  %1103 = sub nsw i32 %1100, %1102
  store i32 %1103, ptr %39, align 4, !tbaa !9
  %1104 = load ptr, ptr %19, align 8, !tbaa !5
  %1105 = load ptr, ptr %22, align 8, !tbaa !5
  %1106 = load i32, ptr %79, align 4, !tbaa !9
  %1107 = add nsw i32 %1106, 1
  %1108 = load i32, ptr %79, align 4, !tbaa !9
  %1109 = add nsw i32 %1108, 1
  %1110 = load i32, ptr %33, align 4, !tbaa !9
  %1111 = mul nsw i32 %1109, %1110
  %1112 = add nsw i32 %1107, %1111
  %1113 = sext i32 %1112 to i64
  %1114 = getelementptr inbounds %struct.doublecomplex, ptr %1105, i64 %1113
  %1115 = load ptr, ptr %23, align 8, !tbaa !5
  %1116 = load ptr, ptr %28, align 8, !tbaa !5
  %1117 = load i32, ptr %79, align 4, !tbaa !9
  %1118 = add nsw i32 %1117, 1
  %1119 = sext i32 %1118 to i64
  %1120 = getelementptr inbounds %struct.doublecomplex, ptr %1116, i64 %1119
  %1121 = load ptr, ptr %24, align 8, !tbaa !5
  %1122 = load i32, ptr %79, align 4, !tbaa !9
  %1123 = add nsw i32 %1122, 1
  %1124 = sext i32 %1123 to i64
  %1125 = getelementptr inbounds double, ptr %1121, i64 %1124
  %1126 = load ptr, ptr %26, align 8, !tbaa !5
  %1127 = load i32, ptr %79, align 4, !tbaa !9
  %1128 = load i32, ptr %61, align 4, !tbaa !9
  %1129 = mul nsw i32 %1127, %1128
  %1130 = add nsw i32 %1129, 1
  %1131 = load i32, ptr %79, align 4, !tbaa !9
  %1132 = add nsw i32 %1131, 1
  %1133 = load i32, ptr %35, align 4, !tbaa !9
  %1134 = mul nsw i32 %1132, %1133
  %1135 = add nsw i32 %1130, %1134
  %1136 = sext i32 %1135 to i64
  %1137 = getelementptr inbounds %struct.doublecomplex, ptr %1126, i64 %1136
  %1138 = load ptr, ptr %27, align 8, !tbaa !5
  %1139 = load ptr, ptr %28, align 8, !tbaa !5
  %1140 = load ptr, ptr %21, align 8, !tbaa !5
  %1141 = load i32, ptr %1140, align 4, !tbaa !9
  %1142 = add nsw i32 %1141, 1
  %1143 = sext i32 %1142 to i64
  %1144 = getelementptr inbounds %struct.doublecomplex, ptr %1139, i64 %1143
  call void @zgsvj0_(ptr noundef %1104, ptr noundef %37, ptr noundef %38, ptr noundef %1114, ptr noundef %1115, ptr noundef %1120, ptr noundef %1125, ptr noundef %104, ptr noundef %1137, ptr noundef %1138, ptr noundef %69, ptr noundef %67, ptr noundef %103, ptr noundef @c__2, ptr noundef %1144, ptr noundef %39, ptr noundef %52)
  %1145 = load ptr, ptr %20, align 8, !tbaa !5
  %1146 = load i32, ptr %1145, align 4, !tbaa !9
  %1147 = load i32, ptr %76, align 4, !tbaa !9
  %1148 = sub nsw i32 %1146, %1147
  store i32 %1148, ptr %37, align 4, !tbaa !9
  %1149 = load i32, ptr %79, align 4, !tbaa !9
  %1150 = load i32, ptr %76, align 4, !tbaa !9
  %1151 = sub nsw i32 %1149, %1150
  store i32 %1151, ptr %38, align 4, !tbaa !9
  %1152 = load ptr, ptr %29, align 8, !tbaa !5
  %1153 = load i32, ptr %1152, align 4, !tbaa !9
  %1154 = load ptr, ptr %21, align 8, !tbaa !5
  %1155 = load i32, ptr %1154, align 4, !tbaa !9
  %1156 = sub nsw i32 %1153, %1155
  store i32 %1156, ptr %39, align 4, !tbaa !9
  %1157 = load ptr, ptr %19, align 8, !tbaa !5
  %1158 = load ptr, ptr %22, align 8, !tbaa !5
  %1159 = load i32, ptr %76, align 4, !tbaa !9
  %1160 = add nsw i32 %1159, 1
  %1161 = load i32, ptr %76, align 4, !tbaa !9
  %1162 = add nsw i32 %1161, 1
  %1163 = load i32, ptr %33, align 4, !tbaa !9
  %1164 = mul nsw i32 %1162, %1163
  %1165 = add nsw i32 %1160, %1164
  %1166 = sext i32 %1165 to i64
  %1167 = getelementptr inbounds %struct.doublecomplex, ptr %1158, i64 %1166
  %1168 = load ptr, ptr %23, align 8, !tbaa !5
  %1169 = load ptr, ptr %28, align 8, !tbaa !5
  %1170 = load i32, ptr %76, align 4, !tbaa !9
  %1171 = add nsw i32 %1170, 1
  %1172 = sext i32 %1171 to i64
  %1173 = getelementptr inbounds %struct.doublecomplex, ptr %1169, i64 %1172
  %1174 = load ptr, ptr %24, align 8, !tbaa !5
  %1175 = load i32, ptr %76, align 4, !tbaa !9
  %1176 = add nsw i32 %1175, 1
  %1177 = sext i32 %1176 to i64
  %1178 = getelementptr inbounds double, ptr %1174, i64 %1177
  %1179 = load ptr, ptr %26, align 8, !tbaa !5
  %1180 = load i32, ptr %76, align 4, !tbaa !9
  %1181 = load i32, ptr %61, align 4, !tbaa !9
  %1182 = mul nsw i32 %1180, %1181
  %1183 = add nsw i32 %1182, 1
  %1184 = load i32, ptr %76, align 4, !tbaa !9
  %1185 = add nsw i32 %1184, 1
  %1186 = load i32, ptr %35, align 4, !tbaa !9
  %1187 = mul nsw i32 %1185, %1186
  %1188 = add nsw i32 %1183, %1187
  %1189 = sext i32 %1188 to i64
  %1190 = getelementptr inbounds %struct.doublecomplex, ptr %1179, i64 %1189
  %1191 = load ptr, ptr %27, align 8, !tbaa !5
  %1192 = load ptr, ptr %28, align 8, !tbaa !5
  %1193 = load ptr, ptr %21, align 8, !tbaa !5
  %1194 = load i32, ptr %1193, align 4, !tbaa !9
  %1195 = add nsw i32 %1194, 1
  %1196 = sext i32 %1195 to i64
  %1197 = getelementptr inbounds %struct.doublecomplex, ptr %1192, i64 %1196
  call void @zgsvj0_(ptr noundef %1157, ptr noundef %37, ptr noundef %38, ptr noundef %1167, ptr noundef %1168, ptr noundef %1173, ptr noundef %1178, ptr noundef %104, ptr noundef %1190, ptr noundef %1191, ptr noundef %69, ptr noundef %67, ptr noundef %103, ptr noundef @c__2, ptr noundef %1197, ptr noundef %39, ptr noundef %52)
  %1198 = load ptr, ptr %20, align 8, !tbaa !5
  %1199 = load i32, ptr %1198, align 4, !tbaa !9
  %1200 = load i32, ptr %76, align 4, !tbaa !9
  %1201 = sub nsw i32 %1199, %1200
  store i32 %1201, ptr %37, align 4, !tbaa !9
  %1202 = load ptr, ptr %21, align 8, !tbaa !5
  %1203 = load i32, ptr %1202, align 4, !tbaa !9
  %1204 = load i32, ptr %76, align 4, !tbaa !9
  %1205 = sub nsw i32 %1203, %1204
  store i32 %1205, ptr %38, align 4, !tbaa !9
  %1206 = load ptr, ptr %29, align 8, !tbaa !5
  %1207 = load i32, ptr %1206, align 4, !tbaa !9
  %1208 = load ptr, ptr %21, align 8, !tbaa !5
  %1209 = load i32, ptr %1208, align 4, !tbaa !9
  %1210 = sub nsw i32 %1207, %1209
  store i32 %1210, ptr %39, align 4, !tbaa !9
  %1211 = load ptr, ptr %19, align 8, !tbaa !5
  %1212 = load ptr, ptr %22, align 8, !tbaa !5
  %1213 = load i32, ptr %76, align 4, !tbaa !9
  %1214 = add nsw i32 %1213, 1
  %1215 = load i32, ptr %76, align 4, !tbaa !9
  %1216 = add nsw i32 %1215, 1
  %1217 = load i32, ptr %33, align 4, !tbaa !9
  %1218 = mul nsw i32 %1216, %1217
  %1219 = add nsw i32 %1214, %1218
  %1220 = sext i32 %1219 to i64
  %1221 = getelementptr inbounds %struct.doublecomplex, ptr %1212, i64 %1220
  %1222 = load ptr, ptr %23, align 8, !tbaa !5
  %1223 = load ptr, ptr %28, align 8, !tbaa !5
  %1224 = load i32, ptr %76, align 4, !tbaa !9
  %1225 = add nsw i32 %1224, 1
  %1226 = sext i32 %1225 to i64
  %1227 = getelementptr inbounds %struct.doublecomplex, ptr %1223, i64 %1226
  %1228 = load ptr, ptr %24, align 8, !tbaa !5
  %1229 = load i32, ptr %76, align 4, !tbaa !9
  %1230 = add nsw i32 %1229, 1
  %1231 = sext i32 %1230 to i64
  %1232 = getelementptr inbounds double, ptr %1228, i64 %1231
  %1233 = load ptr, ptr %26, align 8, !tbaa !5
  %1234 = load i32, ptr %76, align 4, !tbaa !9
  %1235 = load i32, ptr %61, align 4, !tbaa !9
  %1236 = mul nsw i32 %1234, %1235
  %1237 = add nsw i32 %1236, 1
  %1238 = load i32, ptr %76, align 4, !tbaa !9
  %1239 = add nsw i32 %1238, 1
  %1240 = load i32, ptr %35, align 4, !tbaa !9
  %1241 = mul nsw i32 %1239, %1240
  %1242 = add nsw i32 %1237, %1241
  %1243 = sext i32 %1242 to i64
  %1244 = getelementptr inbounds %struct.doublecomplex, ptr %1233, i64 %1243
  %1245 = load ptr, ptr %27, align 8, !tbaa !5
  %1246 = load ptr, ptr %28, align 8, !tbaa !5
  %1247 = load ptr, ptr %21, align 8, !tbaa !5
  %1248 = load i32, ptr %1247, align 4, !tbaa !9
  %1249 = add nsw i32 %1248, 1
  %1250 = sext i32 %1249 to i64
  %1251 = getelementptr inbounds %struct.doublecomplex, ptr %1246, i64 %1250
  call void @zgsvj1_(ptr noundef %1211, ptr noundef %37, ptr noundef %38, ptr noundef %77, ptr noundef %1221, ptr noundef %1222, ptr noundef %1227, ptr noundef %1232, ptr noundef %104, ptr noundef %1244, ptr noundef %1245, ptr noundef %69, ptr noundef %67, ptr noundef %103, ptr noundef @c__1, ptr noundef %1251, ptr noundef %39, ptr noundef %52)
  %1252 = load ptr, ptr %20, align 8, !tbaa !5
  %1253 = load i32, ptr %1252, align 4, !tbaa !9
  %1254 = load i32, ptr %77, align 4, !tbaa !9
  %1255 = sub nsw i32 %1253, %1254
  store i32 %1255, ptr %37, align 4, !tbaa !9
  %1256 = load i32, ptr %76, align 4, !tbaa !9
  %1257 = load i32, ptr %77, align 4, !tbaa !9
  %1258 = sub nsw i32 %1256, %1257
  store i32 %1258, ptr %38, align 4, !tbaa !9
  %1259 = load ptr, ptr %29, align 8, !tbaa !5
  %1260 = load i32, ptr %1259, align 4, !tbaa !9
  %1261 = load ptr, ptr %21, align 8, !tbaa !5
  %1262 = load i32, ptr %1261, align 4, !tbaa !9
  %1263 = sub nsw i32 %1260, %1262
  store i32 %1263, ptr %39, align 4, !tbaa !9
  %1264 = load ptr, ptr %19, align 8, !tbaa !5
  %1265 = load ptr, ptr %22, align 8, !tbaa !5
  %1266 = load i32, ptr %77, align 4, !tbaa !9
  %1267 = add nsw i32 %1266, 1
  %1268 = load i32, ptr %77, align 4, !tbaa !9
  %1269 = add nsw i32 %1268, 1
  %1270 = load i32, ptr %33, align 4, !tbaa !9
  %1271 = mul nsw i32 %1269, %1270
  %1272 = add nsw i32 %1267, %1271
  %1273 = sext i32 %1272 to i64
  %1274 = getelementptr inbounds %struct.doublecomplex, ptr %1265, i64 %1273
  %1275 = load ptr, ptr %23, align 8, !tbaa !5
  %1276 = load ptr, ptr %28, align 8, !tbaa !5
  %1277 = load i32, ptr %77, align 4, !tbaa !9
  %1278 = add nsw i32 %1277, 1
  %1279 = sext i32 %1278 to i64
  %1280 = getelementptr inbounds %struct.doublecomplex, ptr %1276, i64 %1279
  %1281 = load ptr, ptr %24, align 8, !tbaa !5
  %1282 = load i32, ptr %77, align 4, !tbaa !9
  %1283 = add nsw i32 %1282, 1
  %1284 = sext i32 %1283 to i64
  %1285 = getelementptr inbounds double, ptr %1281, i64 %1284
  %1286 = load ptr, ptr %26, align 8, !tbaa !5
  %1287 = load i32, ptr %77, align 4, !tbaa !9
  %1288 = load i32, ptr %61, align 4, !tbaa !9
  %1289 = mul nsw i32 %1287, %1288
  %1290 = add nsw i32 %1289, 1
  %1291 = load i32, ptr %77, align 4, !tbaa !9
  %1292 = add nsw i32 %1291, 1
  %1293 = load i32, ptr %35, align 4, !tbaa !9
  %1294 = mul nsw i32 %1292, %1293
  %1295 = add nsw i32 %1290, %1294
  %1296 = sext i32 %1295 to i64
  %1297 = getelementptr inbounds %struct.doublecomplex, ptr %1286, i64 %1296
  %1298 = load ptr, ptr %27, align 8, !tbaa !5
  %1299 = load ptr, ptr %28, align 8, !tbaa !5
  %1300 = load ptr, ptr %21, align 8, !tbaa !5
  %1301 = load i32, ptr %1300, align 4, !tbaa !9
  %1302 = add nsw i32 %1301, 1
  %1303 = sext i32 %1302 to i64
  %1304 = getelementptr inbounds %struct.doublecomplex, ptr %1299, i64 %1303
  call void @zgsvj0_(ptr noundef %1264, ptr noundef %37, ptr noundef %38, ptr noundef %1274, ptr noundef %1275, ptr noundef %1280, ptr noundef %1285, ptr noundef %104, ptr noundef %1297, ptr noundef %1298, ptr noundef %69, ptr noundef %67, ptr noundef %103, ptr noundef @c__1, ptr noundef %1304, ptr noundef %39, ptr noundef %52)
  %1305 = load ptr, ptr %29, align 8, !tbaa !5
  %1306 = load i32, ptr %1305, align 4, !tbaa !9
  %1307 = load ptr, ptr %21, align 8, !tbaa !5
  %1308 = load i32, ptr %1307, align 4, !tbaa !9
  %1309 = sub nsw i32 %1306, %1308
  store i32 %1309, ptr %37, align 4, !tbaa !9
  %1310 = load ptr, ptr %19, align 8, !tbaa !5
  %1311 = load ptr, ptr %20, align 8, !tbaa !5
  %1312 = load ptr, ptr %22, align 8, !tbaa !5
  %1313 = load i32, ptr %34, align 4, !tbaa !9
  %1314 = sext i32 %1313 to i64
  %1315 = getelementptr inbounds %struct.doublecomplex, ptr %1312, i64 %1314
  %1316 = load ptr, ptr %23, align 8, !tbaa !5
  %1317 = load ptr, ptr %28, align 8, !tbaa !5
  %1318 = getelementptr inbounds %struct.doublecomplex, ptr %1317, i64 1
  %1319 = load ptr, ptr %24, align 8, !tbaa !5
  %1320 = getelementptr inbounds double, ptr %1319, i64 1
  %1321 = load ptr, ptr %26, align 8, !tbaa !5
  %1322 = load i32, ptr %36, align 4, !tbaa !9
  %1323 = sext i32 %1322 to i64
  %1324 = getelementptr inbounds %struct.doublecomplex, ptr %1321, i64 %1323
  %1325 = load ptr, ptr %27, align 8, !tbaa !5
  %1326 = load ptr, ptr %28, align 8, !tbaa !5
  %1327 = load ptr, ptr %21, align 8, !tbaa !5
  %1328 = load i32, ptr %1327, align 4, !tbaa !9
  %1329 = add nsw i32 %1328, 1
  %1330 = sext i32 %1329 to i64
  %1331 = getelementptr inbounds %struct.doublecomplex, ptr %1326, i64 %1330
  call void @zgsvj0_(ptr noundef %1310, ptr noundef %1311, ptr noundef %77, ptr noundef %1315, ptr noundef %1316, ptr noundef %1318, ptr noundef %1320, ptr noundef %104, ptr noundef %1324, ptr noundef %1325, ptr noundef %69, ptr noundef %67, ptr noundef %103, ptr noundef @c__1, ptr noundef %1331, ptr noundef %37, ptr noundef %52)
  %1332 = load ptr, ptr %29, align 8, !tbaa !5
  %1333 = load i32, ptr %1332, align 4, !tbaa !9
  %1334 = load ptr, ptr %21, align 8, !tbaa !5
  %1335 = load i32, ptr %1334, align 4, !tbaa !9
  %1336 = sub nsw i32 %1333, %1335
  store i32 %1336, ptr %37, align 4, !tbaa !9
  %1337 = load ptr, ptr %19, align 8, !tbaa !5
  %1338 = load ptr, ptr %20, align 8, !tbaa !5
  %1339 = load ptr, ptr %22, align 8, !tbaa !5
  %1340 = load i32, ptr %34, align 4, !tbaa !9
  %1341 = sext i32 %1340 to i64
  %1342 = getelementptr inbounds %struct.doublecomplex, ptr %1339, i64 %1341
  %1343 = load ptr, ptr %23, align 8, !tbaa !5
  %1344 = load ptr, ptr %28, align 8, !tbaa !5
  %1345 = getelementptr inbounds %struct.doublecomplex, ptr %1344, i64 1
  %1346 = load ptr, ptr %24, align 8, !tbaa !5
  %1347 = getelementptr inbounds double, ptr %1346, i64 1
  %1348 = load ptr, ptr %26, align 8, !tbaa !5
  %1349 = load i32, ptr %36, align 4, !tbaa !9
  %1350 = sext i32 %1349 to i64
  %1351 = getelementptr inbounds %struct.doublecomplex, ptr %1348, i64 %1350
  %1352 = load ptr, ptr %27, align 8, !tbaa !5
  %1353 = load ptr, ptr %28, align 8, !tbaa !5
  %1354 = load ptr, ptr %21, align 8, !tbaa !5
  %1355 = load i32, ptr %1354, align 4, !tbaa !9
  %1356 = add nsw i32 %1355, 1
  %1357 = sext i32 %1356 to i64
  %1358 = getelementptr inbounds %struct.doublecomplex, ptr %1353, i64 %1357
  call void @zgsvj1_(ptr noundef %1337, ptr noundef %1338, ptr noundef %76, ptr noundef %77, ptr noundef %1342, ptr noundef %1343, ptr noundef %1345, ptr noundef %1347, ptr noundef %104, ptr noundef %1351, ptr noundef %1352, ptr noundef %69, ptr noundef %67, ptr noundef %103, ptr noundef @c__1, ptr noundef %1358, ptr noundef %37, ptr noundef %52)
  br label %1507

1359:                                             ; preds = %1087
  %1360 = load i32, ptr %74, align 4, !tbaa !9
  %1361 = icmp ne i32 %1360, 0
  br i1 %1361, label %1362, label %1506

1362:                                             ; preds = %1359
  %1363 = load ptr, ptr %29, align 8, !tbaa !5
  %1364 = load i32, ptr %1363, align 4, !tbaa !9
  %1365 = load ptr, ptr %21, align 8, !tbaa !5
  %1366 = load i32, ptr %1365, align 4, !tbaa !9
  %1367 = sub nsw i32 %1364, %1366
  store i32 %1367, ptr %37, align 4, !tbaa !9
  %1368 = load ptr, ptr %19, align 8, !tbaa !5
  %1369 = load ptr, ptr %22, align 8, !tbaa !5
  %1370 = load i32, ptr %34, align 4, !tbaa !9
  %1371 = sext i32 %1370 to i64
  %1372 = getelementptr inbounds %struct.doublecomplex, ptr %1369, i64 %1371
  %1373 = load ptr, ptr %23, align 8, !tbaa !5
  %1374 = load ptr, ptr %28, align 8, !tbaa !5
  %1375 = getelementptr inbounds %struct.doublecomplex, ptr %1374, i64 1
  %1376 = load ptr, ptr %24, align 8, !tbaa !5
  %1377 = getelementptr inbounds double, ptr %1376, i64 1
  %1378 = load ptr, ptr %26, align 8, !tbaa !5
  %1379 = load i32, ptr %36, align 4, !tbaa !9
  %1380 = sext i32 %1379 to i64
  %1381 = getelementptr inbounds %struct.doublecomplex, ptr %1378, i64 %1380
  %1382 = load ptr, ptr %27, align 8, !tbaa !5
  %1383 = load ptr, ptr %28, align 8, !tbaa !5
  %1384 = load ptr, ptr %21, align 8, !tbaa !5
  %1385 = load i32, ptr %1384, align 4, !tbaa !9
  %1386 = add nsw i32 %1385, 1
  %1387 = sext i32 %1386 to i64
  %1388 = getelementptr inbounds %struct.doublecomplex, ptr %1383, i64 %1387
  call void @zgsvj0_(ptr noundef %1368, ptr noundef %77, ptr noundef %77, ptr noundef %1372, ptr noundef %1373, ptr noundef %1375, ptr noundef %1377, ptr noundef %104, ptr noundef %1381, ptr noundef %1382, ptr noundef %69, ptr noundef %67, ptr noundef %103, ptr noundef @c__2, ptr noundef %1388, ptr noundef %37, ptr noundef %52)
  %1389 = load ptr, ptr %29, align 8, !tbaa !5
  %1390 = load i32, ptr %1389, align 4, !tbaa !9
  %1391 = load ptr, ptr %21, align 8, !tbaa !5
  %1392 = load i32, ptr %1391, align 4, !tbaa !9
  %1393 = sub nsw i32 %1390, %1392
  store i32 %1393, ptr %37, align 4, !tbaa !9
  %1394 = load ptr, ptr %19, align 8, !tbaa !5
  %1395 = load ptr, ptr %22, align 8, !tbaa !5
  %1396 = load i32, ptr %77, align 4, !tbaa !9
  %1397 = add nsw i32 %1396, 1
  %1398 = load i32, ptr %33, align 4, !tbaa !9
  %1399 = mul nsw i32 %1397, %1398
  %1400 = add nsw i32 %1399, 1
  %1401 = sext i32 %1400 to i64
  %1402 = getelementptr inbounds %struct.doublecomplex, ptr %1395, i64 %1401
  %1403 = load ptr, ptr %23, align 8, !tbaa !5
  %1404 = load ptr, ptr %28, align 8, !tbaa !5
  %1405 = load i32, ptr %77, align 4, !tbaa !9
  %1406 = add nsw i32 %1405, 1
  %1407 = sext i32 %1406 to i64
  %1408 = getelementptr inbounds %struct.doublecomplex, ptr %1404, i64 %1407
  %1409 = load ptr, ptr %24, align 8, !tbaa !5
  %1410 = load i32, ptr %77, align 4, !tbaa !9
  %1411 = add nsw i32 %1410, 1
  %1412 = sext i32 %1411 to i64
  %1413 = getelementptr inbounds double, ptr %1409, i64 %1412
  %1414 = load ptr, ptr %26, align 8, !tbaa !5
  %1415 = load i32, ptr %77, align 4, !tbaa !9
  %1416 = load i32, ptr %61, align 4, !tbaa !9
  %1417 = mul nsw i32 %1415, %1416
  %1418 = add nsw i32 %1417, 1
  %1419 = load i32, ptr %77, align 4, !tbaa !9
  %1420 = add nsw i32 %1419, 1
  %1421 = load i32, ptr %35, align 4, !tbaa !9
  %1422 = mul nsw i32 %1420, %1421
  %1423 = add nsw i32 %1418, %1422
  %1424 = sext i32 %1423 to i64
  %1425 = getelementptr inbounds %struct.doublecomplex, ptr %1414, i64 %1424
  %1426 = load ptr, ptr %27, align 8, !tbaa !5
  %1427 = load ptr, ptr %28, align 8, !tbaa !5
  %1428 = load ptr, ptr %21, align 8, !tbaa !5
  %1429 = load i32, ptr %1428, align 4, !tbaa !9
  %1430 = add nsw i32 %1429, 1
  %1431 = sext i32 %1430 to i64
  %1432 = getelementptr inbounds %struct.doublecomplex, ptr %1427, i64 %1431
  call void @zgsvj0_(ptr noundef %1394, ptr noundef %76, ptr noundef %77, ptr noundef %1402, ptr noundef %1403, ptr noundef %1408, ptr noundef %1413, ptr noundef %104, ptr noundef %1425, ptr noundef %1426, ptr noundef %69, ptr noundef %67, ptr noundef %103, ptr noundef @c__1, ptr noundef %1432, ptr noundef %37, ptr noundef %52)
  %1433 = load ptr, ptr %29, align 8, !tbaa !5
  %1434 = load i32, ptr %1433, align 4, !tbaa !9
  %1435 = load ptr, ptr %21, align 8, !tbaa !5
  %1436 = load i32, ptr %1435, align 4, !tbaa !9
  %1437 = sub nsw i32 %1434, %1436
  store i32 %1437, ptr %37, align 4, !tbaa !9
  %1438 = load ptr, ptr %19, align 8, !tbaa !5
  %1439 = load ptr, ptr %22, align 8, !tbaa !5
  %1440 = load i32, ptr %34, align 4, !tbaa !9
  %1441 = sext i32 %1440 to i64
  %1442 = getelementptr inbounds %struct.doublecomplex, ptr %1439, i64 %1441
  %1443 = load ptr, ptr %23, align 8, !tbaa !5
  %1444 = load ptr, ptr %28, align 8, !tbaa !5
  %1445 = getelementptr inbounds %struct.doublecomplex, ptr %1444, i64 1
  %1446 = load ptr, ptr %24, align 8, !tbaa !5
  %1447 = getelementptr inbounds double, ptr %1446, i64 1
  %1448 = load ptr, ptr %26, align 8, !tbaa !5
  %1449 = load i32, ptr %36, align 4, !tbaa !9
  %1450 = sext i32 %1449 to i64
  %1451 = getelementptr inbounds %struct.doublecomplex, ptr %1448, i64 %1450
  %1452 = load ptr, ptr %27, align 8, !tbaa !5
  %1453 = load ptr, ptr %28, align 8, !tbaa !5
  %1454 = load ptr, ptr %21, align 8, !tbaa !5
  %1455 = load i32, ptr %1454, align 4, !tbaa !9
  %1456 = add nsw i32 %1455, 1
  %1457 = sext i32 %1456 to i64
  %1458 = getelementptr inbounds %struct.doublecomplex, ptr %1453, i64 %1457
  call void @zgsvj1_(ptr noundef %1438, ptr noundef %76, ptr noundef %76, ptr noundef %77, ptr noundef %1442, ptr noundef %1443, ptr noundef %1445, ptr noundef %1447, ptr noundef %104, ptr noundef %1451, ptr noundef %1452, ptr noundef %69, ptr noundef %67, ptr noundef %103, ptr noundef @c__1, ptr noundef %1458, ptr noundef %37, ptr noundef %52)
  %1459 = load i32, ptr %76, align 4, !tbaa !9
  %1460 = load i32, ptr %77, align 4, !tbaa !9
  %1461 = add nsw i32 %1459, %1460
  store i32 %1461, ptr %37, align 4, !tbaa !9
  %1462 = load ptr, ptr %29, align 8, !tbaa !5
  %1463 = load i32, ptr %1462, align 4, !tbaa !9
  %1464 = load ptr, ptr %21, align 8, !tbaa !5
  %1465 = load i32, ptr %1464, align 4, !tbaa !9
  %1466 = sub nsw i32 %1463, %1465
  store i32 %1466, ptr %38, align 4, !tbaa !9
  %1467 = load ptr, ptr %19, align 8, !tbaa !5
  %1468 = load ptr, ptr %22, align 8, !tbaa !5
  %1469 = load i32, ptr %76, align 4, !tbaa !9
  %1470 = add nsw i32 %1469, 1
  %1471 = load i32, ptr %33, align 4, !tbaa !9
  %1472 = mul nsw i32 %1470, %1471
  %1473 = add nsw i32 %1472, 1
  %1474 = sext i32 %1473 to i64
  %1475 = getelementptr inbounds %struct.doublecomplex, ptr %1468, i64 %1474
  %1476 = load ptr, ptr %23, align 8, !tbaa !5
  %1477 = load ptr, ptr %28, align 8, !tbaa !5
  %1478 = load i32, ptr %76, align 4, !tbaa !9
  %1479 = add nsw i32 %1478, 1
  %1480 = sext i32 %1479 to i64
  %1481 = getelementptr inbounds %struct.doublecomplex, ptr %1477, i64 %1480
  %1482 = load ptr, ptr %24, align 8, !tbaa !5
  %1483 = load i32, ptr %76, align 4, !tbaa !9
  %1484 = add nsw i32 %1483, 1
  %1485 = sext i32 %1484 to i64
  %1486 = getelementptr inbounds double, ptr %1482, i64 %1485
  %1487 = load ptr, ptr %26, align 8, !tbaa !5
  %1488 = load i32, ptr %76, align 4, !tbaa !9
  %1489 = load i32, ptr %61, align 4, !tbaa !9
  %1490 = mul nsw i32 %1488, %1489
  %1491 = add nsw i32 %1490, 1
  %1492 = load i32, ptr %76, align 4, !tbaa !9
  %1493 = add nsw i32 %1492, 1
  %1494 = load i32, ptr %35, align 4, !tbaa !9
  %1495 = mul nsw i32 %1493, %1494
  %1496 = add nsw i32 %1491, %1495
  %1497 = sext i32 %1496 to i64
  %1498 = getelementptr inbounds %struct.doublecomplex, ptr %1487, i64 %1497
  %1499 = load ptr, ptr %27, align 8, !tbaa !5
  %1500 = load ptr, ptr %28, align 8, !tbaa !5
  %1501 = load ptr, ptr %21, align 8, !tbaa !5
  %1502 = load i32, ptr %1501, align 4, !tbaa !9
  %1503 = add nsw i32 %1502, 1
  %1504 = sext i32 %1503 to i64
  %1505 = getelementptr inbounds %struct.doublecomplex, ptr %1500, i64 %1504
  call void @zgsvj0_(ptr noundef %1467, ptr noundef %37, ptr noundef %77, ptr noundef %1475, ptr noundef %1476, ptr noundef %1481, ptr noundef %1486, ptr noundef %104, ptr noundef %1498, ptr noundef %1499, ptr noundef %69, ptr noundef %67, ptr noundef %103, ptr noundef @c__1, ptr noundef %1505, ptr noundef %38, ptr noundef %52)
  br label %1506

1506:                                             ; preds = %1362, %1359
  br label %1507

1507:                                             ; preds = %1506, %1090
  br label %1508

1508:                                             ; preds = %1507, %1071, %1058
  store i32 1, ptr %59, align 4, !tbaa !9
  br label %1509

1509:                                             ; preds = %4070, %1508
  %1510 = load i32, ptr %59, align 4, !tbaa !9
  %1511 = icmp sle i32 %1510, 30
  br i1 %1511, label %1512, label %4073

1512:                                             ; preds = %1509
  store double 0.000000e+00, ptr %85, align 8, !tbaa !11
  store double 0.000000e+00, ptr %87, align 8, !tbaa !11
  store i32 0, ptr %92, align 4, !tbaa !9
  store i32 0, ptr %91, align 4, !tbaa !9
  store i32 0, ptr %55, align 4, !tbaa !9
  %1513 = load i32, ptr %100, align 4, !tbaa !9
  store i32 %1513, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %98, align 4, !tbaa !9
  br label %1514

1514:                                             ; preds = %3968, %1512
  %1515 = load i32, ptr %98, align 4, !tbaa !9
  %1516 = load i32, ptr %37, align 4, !tbaa !9
  %1517 = icmp sle i32 %1515, %1516
  br i1 %1517, label %1518, label %3971

1518:                                             ; preds = %1514
  %1519 = load i32, ptr %98, align 4, !tbaa !9
  %1520 = sub nsw i32 %1519, 1
  %1521 = load i32, ptr %95, align 4, !tbaa !9
  %1522 = mul nsw i32 %1520, %1521
  %1523 = add nsw i32 %1522, 1
  store i32 %1523, ptr %97, align 4, !tbaa !9
  %1524 = load i32, ptr %96, align 4, !tbaa !9
  store i32 %1524, ptr %39, align 4, !tbaa !9
  %1525 = load i32, ptr %100, align 4, !tbaa !9
  %1526 = load i32, ptr %98, align 4, !tbaa !9
  %1527 = sub nsw i32 %1525, %1526
  store i32 %1527, ptr %40, align 4, !tbaa !9
  %1528 = load i32, ptr %39, align 4, !tbaa !9
  %1529 = load i32, ptr %40, align 4, !tbaa !9
  %1530 = icmp sle i32 %1528, %1529
  br i1 %1530, label %1531, label %1533

1531:                                             ; preds = %1518
  %1532 = load i32, ptr %39, align 4, !tbaa !9
  br label %1535

1533:                                             ; preds = %1518
  %1534 = load i32, ptr %40, align 4, !tbaa !9
  br label %1535

1535:                                             ; preds = %1533, %1531
  %1536 = phi i32 [ %1532, %1531 ], [ %1534, %1533 ]
  store i32 %1536, ptr %38, align 4, !tbaa !9
  store i32 0, ptr %88, align 4, !tbaa !9
  br label %1537

1537:                                             ; preds = %2733, %1535
  %1538 = load i32, ptr %88, align 4, !tbaa !9
  %1539 = load i32, ptr %38, align 4, !tbaa !9
  %1540 = icmp sle i32 %1538, %1539
  br i1 %1540, label %1541, label %2736

1541:                                             ; preds = %1537
  %1542 = load i32, ptr %88, align 4, !tbaa !9
  %1543 = load i32, ptr %95, align 4, !tbaa !9
  %1544 = mul nsw i32 %1542, %1543
  %1545 = load i32, ptr %97, align 4, !tbaa !9
  %1546 = add nsw i32 %1545, %1544
  store i32 %1546, ptr %97, align 4, !tbaa !9
  %1547 = load i32, ptr %97, align 4, !tbaa !9
  %1548 = load i32, ptr %95, align 4, !tbaa !9
  %1549 = add nsw i32 %1547, %1548
  %1550 = sub nsw i32 %1549, 1
  store i32 %1550, ptr %40, align 4, !tbaa !9
  %1551 = load ptr, ptr %21, align 8, !tbaa !5
  %1552 = load i32, ptr %1551, align 4, !tbaa !9
  %1553 = sub nsw i32 %1552, 1
  store i32 %1553, ptr %41, align 4, !tbaa !9
  %1554 = load i32, ptr %40, align 4, !tbaa !9
  %1555 = load i32, ptr %41, align 4, !tbaa !9
  %1556 = icmp sle i32 %1554, %1555
  br i1 %1556, label %1557, label %1559

1557:                                             ; preds = %1541
  %1558 = load i32, ptr %40, align 4, !tbaa !9
  br label %1561

1559:                                             ; preds = %1541
  %1560 = load i32, ptr %41, align 4, !tbaa !9
  br label %1561

1561:                                             ; preds = %1559, %1557
  %1562 = phi i32 [ %1558, %1557 ], [ %1560, %1559 ]
  store i32 %1562, ptr %39, align 4, !tbaa !9
  %1563 = load i32, ptr %97, align 4, !tbaa !9
  store i32 %1563, ptr %60, align 4, !tbaa !9
  br label %1564

1564:                                             ; preds = %2729, %1561
  %1565 = load i32, ptr %60, align 4, !tbaa !9
  %1566 = load i32, ptr %39, align 4, !tbaa !9
  %1567 = icmp sle i32 %1565, %1566
  br i1 %1567, label %1568, label %2732

1568:                                             ; preds = %1564
  %1569 = load ptr, ptr %21, align 8, !tbaa !5
  %1570 = load i32, ptr %1569, align 4, !tbaa !9
  %1571 = load i32, ptr %60, align 4, !tbaa !9
  %1572 = sub nsw i32 %1570, %1571
  %1573 = add nsw i32 %1572, 1
  store i32 %1573, ptr %40, align 4, !tbaa !9
  %1574 = load ptr, ptr %24, align 8, !tbaa !5
  %1575 = load i32, ptr %60, align 4, !tbaa !9
  %1576 = sext i32 %1575 to i64
  %1577 = getelementptr inbounds double, ptr %1574, i64 %1576
  %1578 = call i32 @idamax_(ptr noundef %40, ptr noundef %1577, ptr noundef @c__1)
  %1579 = load i32, ptr %60, align 4, !tbaa !9
  %1580 = add nsw i32 %1578, %1579
  %1581 = sub nsw i32 %1580, 1
  store i32 %1581, ptr %61, align 4, !tbaa !9
  %1582 = load i32, ptr %60, align 4, !tbaa !9
  %1583 = load i32, ptr %61, align 4, !tbaa !9
  %1584 = icmp ne i32 %1582, %1583
  br i1 %1584, label %1585, label %1692

1585:                                             ; preds = %1568
  %1586 = load ptr, ptr %20, align 8, !tbaa !5
  %1587 = load ptr, ptr %22, align 8, !tbaa !5
  %1588 = load i32, ptr %60, align 4, !tbaa !9
  %1589 = load i32, ptr %33, align 4, !tbaa !9
  %1590 = mul nsw i32 %1588, %1589
  %1591 = add nsw i32 %1590, 1
  %1592 = sext i32 %1591 to i64
  %1593 = getelementptr inbounds %struct.doublecomplex, ptr %1587, i64 %1592
  %1594 = load ptr, ptr %22, align 8, !tbaa !5
  %1595 = load i32, ptr %61, align 4, !tbaa !9
  %1596 = load i32, ptr %33, align 4, !tbaa !9
  %1597 = mul nsw i32 %1595, %1596
  %1598 = add nsw i32 %1597, 1
  %1599 = sext i32 %1598 to i64
  %1600 = getelementptr inbounds %struct.doublecomplex, ptr %1594, i64 %1599
  call void @zswap_(ptr noundef %1586, ptr noundef %1593, ptr noundef @c__1, ptr noundef %1600, ptr noundef @c__1)
  %1601 = load i32, ptr %71, align 4, !tbaa !9
  %1602 = icmp ne i32 %1601, 0
  br i1 %1602, label %1603, label %1618

1603:                                             ; preds = %1585
  %1604 = load ptr, ptr %26, align 8, !tbaa !5
  %1605 = load i32, ptr %60, align 4, !tbaa !9
  %1606 = load i32, ptr %35, align 4, !tbaa !9
  %1607 = mul nsw i32 %1605, %1606
  %1608 = add nsw i32 %1607, 1
  %1609 = sext i32 %1608 to i64
  %1610 = getelementptr inbounds %struct.doublecomplex, ptr %1604, i64 %1609
  %1611 = load ptr, ptr %26, align 8, !tbaa !5
  %1612 = load i32, ptr %61, align 4, !tbaa !9
  %1613 = load i32, ptr %35, align 4, !tbaa !9
  %1614 = mul nsw i32 %1612, %1613
  %1615 = add nsw i32 %1614, 1
  %1616 = sext i32 %1615 to i64
  %1617 = getelementptr inbounds %struct.doublecomplex, ptr %1611, i64 %1616
  call void @zswap_(ptr noundef %104, ptr noundef %1610, ptr noundef @c__1, ptr noundef %1617, ptr noundef @c__1)
  br label %1618

1618:                                             ; preds = %1603, %1585
  %1619 = load ptr, ptr %24, align 8, !tbaa !5
  %1620 = load i32, ptr %60, align 4, !tbaa !9
  %1621 = sext i32 %1620 to i64
  %1622 = getelementptr inbounds double, ptr %1619, i64 %1621
  %1623 = load double, ptr %1622, align 8, !tbaa !11
  store double %1623, ptr %58, align 8, !tbaa !11
  %1624 = load ptr, ptr %24, align 8, !tbaa !5
  %1625 = load i32, ptr %61, align 4, !tbaa !9
  %1626 = sext i32 %1625 to i64
  %1627 = getelementptr inbounds double, ptr %1624, i64 %1626
  %1628 = load double, ptr %1627, align 8, !tbaa !11
  %1629 = load ptr, ptr %24, align 8, !tbaa !5
  %1630 = load i32, ptr %60, align 4, !tbaa !9
  %1631 = sext i32 %1630 to i64
  %1632 = getelementptr inbounds double, ptr %1629, i64 %1631
  store double %1628, ptr %1632, align 8, !tbaa !11
  %1633 = load double, ptr %58, align 8, !tbaa !11
  %1634 = load ptr, ptr %24, align 8, !tbaa !5
  %1635 = load i32, ptr %61, align 4, !tbaa !9
  %1636 = sext i32 %1635 to i64
  %1637 = getelementptr inbounds double, ptr %1634, i64 %1636
  store double %1633, ptr %1637, align 8, !tbaa !11
  %1638 = load i32, ptr %60, align 4, !tbaa !9
  store i32 %1638, ptr %40, align 4, !tbaa !9
  %1639 = load ptr, ptr %28, align 8, !tbaa !5
  %1640 = load i32, ptr %40, align 4, !tbaa !9
  %1641 = sext i32 %1640 to i64
  %1642 = getelementptr inbounds %struct.doublecomplex, ptr %1639, i64 %1641
  %1643 = getelementptr inbounds %struct.doublecomplex, ptr %1642, i32 0, i32 0
  %1644 = load double, ptr %1643, align 8, !tbaa !13
  %1645 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  store double %1644, ptr %1645, align 8, !tbaa !13
  %1646 = load ptr, ptr %28, align 8, !tbaa !5
  %1647 = load i32, ptr %40, align 4, !tbaa !9
  %1648 = sext i32 %1647 to i64
  %1649 = getelementptr inbounds %struct.doublecomplex, ptr %1646, i64 %1648
  %1650 = getelementptr inbounds %struct.doublecomplex, ptr %1649, i32 0, i32 1
  %1651 = load double, ptr %1650, align 8, !tbaa !15
  %1652 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  store double %1651, ptr %1652, align 8, !tbaa !15
  %1653 = load i32, ptr %60, align 4, !tbaa !9
  store i32 %1653, ptr %40, align 4, !tbaa !9
  %1654 = load i32, ptr %61, align 4, !tbaa !9
  store i32 %1654, ptr %41, align 4, !tbaa !9
  %1655 = load ptr, ptr %28, align 8, !tbaa !5
  %1656 = load i32, ptr %41, align 4, !tbaa !9
  %1657 = sext i32 %1656 to i64
  %1658 = getelementptr inbounds %struct.doublecomplex, ptr %1655, i64 %1657
  %1659 = getelementptr inbounds %struct.doublecomplex, ptr %1658, i32 0, i32 0
  %1660 = load double, ptr %1659, align 8, !tbaa !13
  %1661 = load ptr, ptr %28, align 8, !tbaa !5
  %1662 = load i32, ptr %40, align 4, !tbaa !9
  %1663 = sext i32 %1662 to i64
  %1664 = getelementptr inbounds %struct.doublecomplex, ptr %1661, i64 %1663
  %1665 = getelementptr inbounds %struct.doublecomplex, ptr %1664, i32 0, i32 0
  store double %1660, ptr %1665, align 8, !tbaa !13
  %1666 = load ptr, ptr %28, align 8, !tbaa !5
  %1667 = load i32, ptr %41, align 4, !tbaa !9
  %1668 = sext i32 %1667 to i64
  %1669 = getelementptr inbounds %struct.doublecomplex, ptr %1666, i64 %1668
  %1670 = getelementptr inbounds %struct.doublecomplex, ptr %1669, i32 0, i32 1
  %1671 = load double, ptr %1670, align 8, !tbaa !15
  %1672 = load ptr, ptr %28, align 8, !tbaa !5
  %1673 = load i32, ptr %40, align 4, !tbaa !9
  %1674 = sext i32 %1673 to i64
  %1675 = getelementptr inbounds %struct.doublecomplex, ptr %1672, i64 %1674
  %1676 = getelementptr inbounds %struct.doublecomplex, ptr %1675, i32 0, i32 1
  store double %1671, ptr %1676, align 8, !tbaa !15
  %1677 = load i32, ptr %61, align 4, !tbaa !9
  store i32 %1677, ptr %40, align 4, !tbaa !9
  %1678 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  %1679 = load double, ptr %1678, align 8, !tbaa !13
  %1680 = load ptr, ptr %28, align 8, !tbaa !5
  %1681 = load i32, ptr %40, align 4, !tbaa !9
  %1682 = sext i32 %1681 to i64
  %1683 = getelementptr inbounds %struct.doublecomplex, ptr %1680, i64 %1682
  %1684 = getelementptr inbounds %struct.doublecomplex, ptr %1683, i32 0, i32 0
  store double %1679, ptr %1684, align 8, !tbaa !13
  %1685 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  %1686 = load double, ptr %1685, align 8, !tbaa !15
  %1687 = load ptr, ptr %28, align 8, !tbaa !5
  %1688 = load i32, ptr %40, align 4, !tbaa !9
  %1689 = sext i32 %1688 to i64
  %1690 = getelementptr inbounds %struct.doublecomplex, ptr %1687, i64 %1689
  %1691 = getelementptr inbounds %struct.doublecomplex, ptr %1690, i32 0, i32 1
  store double %1686, ptr %1691, align 8, !tbaa !15
  br label %1692

1692:                                             ; preds = %1618, %1568
  %1693 = load i32, ptr %88, align 4, !tbaa !9
  %1694 = icmp eq i32 %1693, 0
  br i1 %1694, label %1695, label %1748

1695:                                             ; preds = %1692
  %1696 = load ptr, ptr %24, align 8, !tbaa !5
  %1697 = load i32, ptr %60, align 4, !tbaa !9
  %1698 = sext i32 %1697 to i64
  %1699 = getelementptr inbounds double, ptr %1696, i64 %1698
  %1700 = load double, ptr %1699, align 8, !tbaa !11
  %1701 = load double, ptr %106, align 8, !tbaa !11
  %1702 = fcmp olt double %1700, %1701
  br i1 %1702, label %1703, label %1725

1703:                                             ; preds = %1695
  %1704 = load ptr, ptr %24, align 8, !tbaa !5
  %1705 = load i32, ptr %60, align 4, !tbaa !9
  %1706 = sext i32 %1705 to i64
  %1707 = getelementptr inbounds double, ptr %1704, i64 %1706
  %1708 = load double, ptr %1707, align 8, !tbaa !11
  %1709 = load double, ptr %78, align 8, !tbaa !11
  %1710 = fcmp ogt double %1708, %1709
  br i1 %1710, label %1711, label %1725

1711:                                             ; preds = %1703
  %1712 = load ptr, ptr %20, align 8, !tbaa !5
  %1713 = load ptr, ptr %22, align 8, !tbaa !5
  %1714 = load i32, ptr %60, align 4, !tbaa !9
  %1715 = load i32, ptr %33, align 4, !tbaa !9
  %1716 = mul nsw i32 %1714, %1715
  %1717 = add nsw i32 %1716, 1
  %1718 = sext i32 %1717 to i64
  %1719 = getelementptr inbounds %struct.doublecomplex, ptr %1713, i64 %1718
  %1720 = call double @dznrm2_(ptr noundef %1712, ptr noundef %1719, ptr noundef @c__1)
  %1721 = load ptr, ptr %24, align 8, !tbaa !5
  %1722 = load i32, ptr %60, align 4, !tbaa !9
  %1723 = sext i32 %1722 to i64
  %1724 = getelementptr inbounds double, ptr %1721, i64 %1723
  store double %1720, ptr %1724, align 8, !tbaa !11
  br label %1742

1725:                                             ; preds = %1703, %1695
  store double 0.000000e+00, ptr %58, align 8, !tbaa !11
  store double 1.000000e+00, ptr %48, align 8, !tbaa !11
  %1726 = load ptr, ptr %20, align 8, !tbaa !5
  %1727 = load ptr, ptr %22, align 8, !tbaa !5
  %1728 = load i32, ptr %60, align 4, !tbaa !9
  %1729 = load i32, ptr %33, align 4, !tbaa !9
  %1730 = mul nsw i32 %1728, %1729
  %1731 = add nsw i32 %1730, 1
  %1732 = sext i32 %1731 to i64
  %1733 = getelementptr inbounds %struct.doublecomplex, ptr %1727, i64 %1732
  call void @zlassq_(ptr noundef %1726, ptr noundef %1733, ptr noundef @c__1, ptr noundef %58, ptr noundef %48)
  %1734 = load double, ptr %58, align 8, !tbaa !11
  %1735 = load double, ptr %48, align 8, !tbaa !11
  %1736 = call double @sqrt(double noundef %1735) #6
  %1737 = fmul double %1734, %1736
  %1738 = load ptr, ptr %24, align 8, !tbaa !5
  %1739 = load i32, ptr %60, align 4, !tbaa !9
  %1740 = sext i32 %1739 to i64
  %1741 = getelementptr inbounds double, ptr %1738, i64 %1740
  store double %1737, ptr %1741, align 8, !tbaa !11
  br label %1742

1742:                                             ; preds = %1725, %1711
  %1743 = load ptr, ptr %24, align 8, !tbaa !5
  %1744 = load i32, ptr %60, align 4, !tbaa !9
  %1745 = sext i32 %1744 to i64
  %1746 = getelementptr inbounds double, ptr %1743, i64 %1745
  %1747 = load double, ptr %1746, align 8, !tbaa !11
  store double %1747, ptr %48, align 8, !tbaa !11
  br label %1754

1748:                                             ; preds = %1692
  %1749 = load ptr, ptr %24, align 8, !tbaa !5
  %1750 = load i32, ptr %60, align 4, !tbaa !9
  %1751 = sext i32 %1750 to i64
  %1752 = getelementptr inbounds double, ptr %1749, i64 %1751
  %1753 = load double, ptr %1752, align 8, !tbaa !11
  store double %1753, ptr %48, align 8, !tbaa !11
  br label %1754

1754:                                             ; preds = %1748, %1742
  %1755 = load double, ptr %48, align 8, !tbaa !11
  %1756 = fcmp ogt double %1755, 0.000000e+00
  br i1 %1756, label %1757, label %2696

1757:                                             ; preds = %1754
  store i32 0, ptr %55, align 4, !tbaa !9
  %1758 = load i32, ptr %97, align 4, !tbaa !9
  %1759 = load i32, ptr %95, align 4, !tbaa !9
  %1760 = add nsw i32 %1758, %1759
  %1761 = sub nsw i32 %1760, 1
  store i32 %1761, ptr %41, align 4, !tbaa !9
  %1762 = load i32, ptr %41, align 4, !tbaa !9
  %1763 = load ptr, ptr %21, align 8, !tbaa !5
  %1764 = load i32, ptr %1763, align 4, !tbaa !9
  %1765 = icmp sle i32 %1762, %1764
  br i1 %1765, label %1766, label %1768

1766:                                             ; preds = %1757
  %1767 = load i32, ptr %41, align 4, !tbaa !9
  br label %1771

1768:                                             ; preds = %1757
  %1769 = load ptr, ptr %21, align 8, !tbaa !5
  %1770 = load i32, ptr %1769, align 4, !tbaa !9
  br label %1771

1771:                                             ; preds = %1768, %1766
  %1772 = phi i32 [ %1767, %1766 ], [ %1770, %1768 ]
  store i32 %1772, ptr %40, align 4, !tbaa !9
  %1773 = load i32, ptr %60, align 4, !tbaa !9
  %1774 = add nsw i32 %1773, 1
  store i32 %1774, ptr %61, align 4, !tbaa !9
  br label %1775

1775:                                             ; preds = %2686, %1771
  %1776 = load i32, ptr %61, align 4, !tbaa !9
  %1777 = load i32, ptr %40, align 4, !tbaa !9
  %1778 = icmp sle i32 %1776, %1777
  br i1 %1778, label %1779, label %2689

1779:                                             ; preds = %1775
  %1780 = load ptr, ptr %24, align 8, !tbaa !5
  %1781 = load i32, ptr %61, align 4, !tbaa !9
  %1782 = sext i32 %1781 to i64
  %1783 = getelementptr inbounds double, ptr %1780, i64 %1782
  %1784 = load double, ptr %1783, align 8, !tbaa !11
  store double %1784, ptr %50, align 8, !tbaa !11
  %1785 = load double, ptr %50, align 8, !tbaa !11
  %1786 = fcmp ogt double %1785, 0.000000e+00
  br i1 %1786, label %1787, label %2661

1787:                                             ; preds = %1779
  %1788 = load double, ptr %48, align 8, !tbaa !11
  store double %1788, ptr %56, align 8, !tbaa !11
  %1789 = load double, ptr %50, align 8, !tbaa !11
  %1790 = fcmp oge double %1789, 1.000000e+00
  br i1 %1790, label %1791, label %1899

1791:                                             ; preds = %1787
  %1792 = load double, ptr %66, align 8, !tbaa !11
  %1793 = load double, ptr %48, align 8, !tbaa !11
  %1794 = fmul double %1792, %1793
  %1795 = load double, ptr %50, align 8, !tbaa !11
  %1796 = fcmp ole double %1794, %1795
  %1797 = zext i1 %1796 to i32
  store i32 %1797, ptr %75, align 4, !tbaa !9
  %1798 = load double, ptr %48, align 8, !tbaa !11
  %1799 = load double, ptr %94, align 8, !tbaa !11
  %1800 = load double, ptr %50, align 8, !tbaa !11
  %1801 = fdiv double %1799, %1800
  %1802 = fcmp olt double %1798, %1801
  br i1 %1802, label %1803, label %1845

1803:                                             ; preds = %1791
  %1804 = load ptr, ptr %20, align 8, !tbaa !5
  %1805 = load ptr, ptr %22, align 8, !tbaa !5
  %1806 = load i32, ptr %60, align 4, !tbaa !9
  %1807 = load i32, ptr %33, align 4, !tbaa !9
  %1808 = mul nsw i32 %1806, %1807
  %1809 = add nsw i32 %1808, 1
  %1810 = sext i32 %1809 to i64
  %1811 = getelementptr inbounds %struct.doublecomplex, ptr %1805, i64 %1810
  %1812 = load ptr, ptr %22, align 8, !tbaa !5
  %1813 = load i32, ptr %61, align 4, !tbaa !9
  %1814 = load i32, ptr %33, align 4, !tbaa !9
  %1815 = mul nsw i32 %1813, %1814
  %1816 = add nsw i32 %1815, 1
  %1817 = sext i32 %1816 to i64
  %1818 = getelementptr inbounds %struct.doublecomplex, ptr %1812, i64 %1817
  call void @zdotc_(ptr noundef %47, ptr noundef %1804, ptr noundef %1811, ptr noundef @c__1, ptr noundef %1818, ptr noundef @c__1)
  %1819 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  %1820 = load double, ptr %1819, align 8, !tbaa !13
  %1821 = load double, ptr %50, align 8, !tbaa !11
  %1822 = fdiv double %1820, %1821
  %1823 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  store double %1822, ptr %1823, align 8, !tbaa !13
  %1824 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  %1825 = load double, ptr %1824, align 8, !tbaa !15
  %1826 = load double, ptr %50, align 8, !tbaa !11
  %1827 = fdiv double %1825, %1826
  %1828 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  store double %1827, ptr %1828, align 8, !tbaa !15
  %1829 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %1830 = load double, ptr %1829, align 8, !tbaa !13
  %1831 = load double, ptr %48, align 8, !tbaa !11
  %1832 = fdiv double %1830, %1831
  %1833 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %1832, ptr %1833, align 8, !tbaa !13
  %1834 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %1835 = load double, ptr %1834, align 8, !tbaa !15
  %1836 = load double, ptr %48, align 8, !tbaa !11
  %1837 = fdiv double %1835, %1836
  %1838 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %1837, ptr %1838, align 8, !tbaa !15
  %1839 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %1840 = load double, ptr %1839, align 8, !tbaa !13
  %1841 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  store double %1840, ptr %1841, align 8, !tbaa !13
  %1842 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %1843 = load double, ptr %1842, align 8, !tbaa !15
  %1844 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  store double %1843, ptr %1844, align 8, !tbaa !15
  br label %1898

1845:                                             ; preds = %1791
  %1846 = load ptr, ptr %20, align 8, !tbaa !5
  %1847 = load ptr, ptr %22, align 8, !tbaa !5
  %1848 = load i32, ptr %60, align 4, !tbaa !9
  %1849 = load i32, ptr %33, align 4, !tbaa !9
  %1850 = mul nsw i32 %1848, %1849
  %1851 = add nsw i32 %1850, 1
  %1852 = sext i32 %1851 to i64
  %1853 = getelementptr inbounds %struct.doublecomplex, ptr %1847, i64 %1852
  %1854 = load ptr, ptr %28, align 8, !tbaa !5
  %1855 = load ptr, ptr %21, align 8, !tbaa !5
  %1856 = load i32, ptr %1855, align 4, !tbaa !9
  %1857 = add nsw i32 %1856, 1
  %1858 = sext i32 %1857 to i64
  %1859 = getelementptr inbounds %struct.doublecomplex, ptr %1854, i64 %1858
  call void @zcopy_(ptr noundef %1846, ptr noundef %1853, ptr noundef @c__1, ptr noundef %1859, ptr noundef @c__1)
  %1860 = load ptr, ptr %20, align 8, !tbaa !5
  %1861 = load ptr, ptr %28, align 8, !tbaa !5
  %1862 = load ptr, ptr %21, align 8, !tbaa !5
  %1863 = load i32, ptr %1862, align 4, !tbaa !9
  %1864 = add nsw i32 %1863, 1
  %1865 = sext i32 %1864 to i64
  %1866 = getelementptr inbounds %struct.doublecomplex, ptr %1861, i64 %1865
  %1867 = load ptr, ptr %23, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.7, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %48, ptr noundef @c_b42, ptr noundef %1860, ptr noundef @c__1, ptr noundef %1866, ptr noundef %1867, ptr noundef %52)
  %1868 = load ptr, ptr %20, align 8, !tbaa !5
  %1869 = load ptr, ptr %28, align 8, !tbaa !5
  %1870 = load ptr, ptr %21, align 8, !tbaa !5
  %1871 = load i32, ptr %1870, align 4, !tbaa !9
  %1872 = add nsw i32 %1871, 1
  %1873 = sext i32 %1872 to i64
  %1874 = getelementptr inbounds %struct.doublecomplex, ptr %1869, i64 %1873
  %1875 = load ptr, ptr %22, align 8, !tbaa !5
  %1876 = load i32, ptr %61, align 4, !tbaa !9
  %1877 = load i32, ptr %33, align 4, !tbaa !9
  %1878 = mul nsw i32 %1876, %1877
  %1879 = add nsw i32 %1878, 1
  %1880 = sext i32 %1879 to i64
  %1881 = getelementptr inbounds %struct.doublecomplex, ptr %1875, i64 %1880
  call void @zdotc_(ptr noundef %46, ptr noundef %1868, ptr noundef %1874, ptr noundef @c__1, ptr noundef %1881, ptr noundef @c__1)
  %1882 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %1883 = load double, ptr %1882, align 8, !tbaa !13
  %1884 = load double, ptr %50, align 8, !tbaa !11
  %1885 = fdiv double %1883, %1884
  %1886 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %1885, ptr %1886, align 8, !tbaa !13
  %1887 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %1888 = load double, ptr %1887, align 8, !tbaa !15
  %1889 = load double, ptr %50, align 8, !tbaa !11
  %1890 = fdiv double %1888, %1889
  %1891 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %1890, ptr %1891, align 8, !tbaa !15
  %1892 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %1893 = load double, ptr %1892, align 8, !tbaa !13
  %1894 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  store double %1893, ptr %1894, align 8, !tbaa !13
  %1895 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %1896 = load double, ptr %1895, align 8, !tbaa !15
  %1897 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  store double %1896, ptr %1897, align 8, !tbaa !15
  br label %1898

1898:                                             ; preds = %1845, %1803
  br label %2007

1899:                                             ; preds = %1787
  %1900 = load double, ptr %48, align 8, !tbaa !11
  %1901 = load double, ptr %50, align 8, !tbaa !11
  %1902 = load double, ptr %66, align 8, !tbaa !11
  %1903 = fdiv double %1901, %1902
  %1904 = fcmp ole double %1900, %1903
  %1905 = zext i1 %1904 to i32
  store i32 %1905, ptr %75, align 4, !tbaa !9
  %1906 = load double, ptr %48, align 8, !tbaa !11
  %1907 = load double, ptr %66, align 8, !tbaa !11
  %1908 = load double, ptr %50, align 8, !tbaa !11
  %1909 = fdiv double %1907, %1908
  %1910 = fcmp ogt double %1906, %1909
  br i1 %1910, label %1911, label %1953

1911:                                             ; preds = %1899
  %1912 = load ptr, ptr %20, align 8, !tbaa !5
  %1913 = load ptr, ptr %22, align 8, !tbaa !5
  %1914 = load i32, ptr %60, align 4, !tbaa !9
  %1915 = load i32, ptr %33, align 4, !tbaa !9
  %1916 = mul nsw i32 %1914, %1915
  %1917 = add nsw i32 %1916, 1
  %1918 = sext i32 %1917 to i64
  %1919 = getelementptr inbounds %struct.doublecomplex, ptr %1913, i64 %1918
  %1920 = load ptr, ptr %22, align 8, !tbaa !5
  %1921 = load i32, ptr %61, align 4, !tbaa !9
  %1922 = load i32, ptr %33, align 4, !tbaa !9
  %1923 = mul nsw i32 %1921, %1922
  %1924 = add nsw i32 %1923, 1
  %1925 = sext i32 %1924 to i64
  %1926 = getelementptr inbounds %struct.doublecomplex, ptr %1920, i64 %1925
  call void @zdotc_(ptr noundef %47, ptr noundef %1912, ptr noundef %1919, ptr noundef @c__1, ptr noundef %1926, ptr noundef @c__1)
  %1927 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  %1928 = load double, ptr %1927, align 8, !tbaa !13
  %1929 = load double, ptr %48, align 8, !tbaa !11
  %1930 = fdiv double %1928, %1929
  %1931 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  store double %1930, ptr %1931, align 8, !tbaa !13
  %1932 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  %1933 = load double, ptr %1932, align 8, !tbaa !15
  %1934 = load double, ptr %48, align 8, !tbaa !11
  %1935 = fdiv double %1933, %1934
  %1936 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  store double %1935, ptr %1936, align 8, !tbaa !15
  %1937 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %1938 = load double, ptr %1937, align 8, !tbaa !13
  %1939 = load double, ptr %50, align 8, !tbaa !11
  %1940 = fdiv double %1938, %1939
  %1941 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %1940, ptr %1941, align 8, !tbaa !13
  %1942 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %1943 = load double, ptr %1942, align 8, !tbaa !15
  %1944 = load double, ptr %50, align 8, !tbaa !11
  %1945 = fdiv double %1943, %1944
  %1946 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %1945, ptr %1946, align 8, !tbaa !15
  %1947 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %1948 = load double, ptr %1947, align 8, !tbaa !13
  %1949 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  store double %1948, ptr %1949, align 8, !tbaa !13
  %1950 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %1951 = load double, ptr %1950, align 8, !tbaa !15
  %1952 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  store double %1951, ptr %1952, align 8, !tbaa !15
  br label %2006

1953:                                             ; preds = %1899
  %1954 = load ptr, ptr %20, align 8, !tbaa !5
  %1955 = load ptr, ptr %22, align 8, !tbaa !5
  %1956 = load i32, ptr %61, align 4, !tbaa !9
  %1957 = load i32, ptr %33, align 4, !tbaa !9
  %1958 = mul nsw i32 %1956, %1957
  %1959 = add nsw i32 %1958, 1
  %1960 = sext i32 %1959 to i64
  %1961 = getelementptr inbounds %struct.doublecomplex, ptr %1955, i64 %1960
  %1962 = load ptr, ptr %28, align 8, !tbaa !5
  %1963 = load ptr, ptr %21, align 8, !tbaa !5
  %1964 = load i32, ptr %1963, align 4, !tbaa !9
  %1965 = add nsw i32 %1964, 1
  %1966 = sext i32 %1965 to i64
  %1967 = getelementptr inbounds %struct.doublecomplex, ptr %1962, i64 %1966
  call void @zcopy_(ptr noundef %1954, ptr noundef %1961, ptr noundef @c__1, ptr noundef %1967, ptr noundef @c__1)
  %1968 = load ptr, ptr %20, align 8, !tbaa !5
  %1969 = load ptr, ptr %28, align 8, !tbaa !5
  %1970 = load ptr, ptr %21, align 8, !tbaa !5
  %1971 = load i32, ptr %1970, align 4, !tbaa !9
  %1972 = add nsw i32 %1971, 1
  %1973 = sext i32 %1972 to i64
  %1974 = getelementptr inbounds %struct.doublecomplex, ptr %1969, i64 %1973
  %1975 = load ptr, ptr %23, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.7, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %50, ptr noundef @c_b42, ptr noundef %1968, ptr noundef @c__1, ptr noundef %1974, ptr noundef %1975, ptr noundef %52)
  %1976 = load ptr, ptr %20, align 8, !tbaa !5
  %1977 = load ptr, ptr %22, align 8, !tbaa !5
  %1978 = load i32, ptr %60, align 4, !tbaa !9
  %1979 = load i32, ptr %33, align 4, !tbaa !9
  %1980 = mul nsw i32 %1978, %1979
  %1981 = add nsw i32 %1980, 1
  %1982 = sext i32 %1981 to i64
  %1983 = getelementptr inbounds %struct.doublecomplex, ptr %1977, i64 %1982
  %1984 = load ptr, ptr %28, align 8, !tbaa !5
  %1985 = load ptr, ptr %21, align 8, !tbaa !5
  %1986 = load i32, ptr %1985, align 4, !tbaa !9
  %1987 = add nsw i32 %1986, 1
  %1988 = sext i32 %1987 to i64
  %1989 = getelementptr inbounds %struct.doublecomplex, ptr %1984, i64 %1988
  call void @zdotc_(ptr noundef %46, ptr noundef %1976, ptr noundef %1983, ptr noundef @c__1, ptr noundef %1989, ptr noundef @c__1)
  %1990 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %1991 = load double, ptr %1990, align 8, !tbaa !13
  %1992 = load double, ptr %48, align 8, !tbaa !11
  %1993 = fdiv double %1991, %1992
  %1994 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %1993, ptr %1994, align 8, !tbaa !13
  %1995 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %1996 = load double, ptr %1995, align 8, !tbaa !15
  %1997 = load double, ptr %48, align 8, !tbaa !11
  %1998 = fdiv double %1996, %1997
  %1999 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %1998, ptr %1999, align 8, !tbaa !15
  %2000 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %2001 = load double, ptr %2000, align 8, !tbaa !13
  %2002 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  store double %2001, ptr %2002, align 8, !tbaa !13
  %2003 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %2004 = load double, ptr %2003, align 8, !tbaa !15
  %2005 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  store double %2004, ptr %2005, align 8, !tbaa !15
  br label %2006

2006:                                             ; preds = %1953, %1911
  br label %2007

2007:                                             ; preds = %2006, %1898
  %2008 = call { double, double } @Cd(ptr noundef %49)
  %2009 = extractvalue { double, double } %2008, 0
  %2010 = extractvalue { double, double } %2008, 1
  %2011 = getelementptr inbounds { double, double }, ptr %111, i32 0, i32 0
  %2012 = getelementptr inbounds { double, double }, ptr %111, i32 0, i32 1
  store double %2009, ptr %2011, align 8
  store double %2010, ptr %2012, align 8
  %2013 = getelementptr inbounds { double, double }, ptr %111, i32 0, i32 0
  %2014 = load double, ptr %2013, align 8
  %2015 = getelementptr inbounds { double, double }, ptr %111, i32 0, i32 1
  %2016 = load double, ptr %2015, align 8
  %2017 = call double @cabs(double noundef %2014, double noundef %2016) #6
  %2018 = fneg double %2017
  store double %2018, ptr %57, align 8, !tbaa !11
  %2019 = load double, ptr %85, align 8, !tbaa !11
  store double %2019, ptr %43, align 8, !tbaa !11
  %2020 = load double, ptr %57, align 8, !tbaa !11
  %2021 = fneg double %2020
  store double %2021, ptr %44, align 8, !tbaa !11
  %2022 = load double, ptr %43, align 8, !tbaa !11
  %2023 = load double, ptr %44, align 8, !tbaa !11
  %2024 = fcmp oge double %2022, %2023
  br i1 %2024, label %2025, label %2027

2025:                                             ; preds = %2007
  %2026 = load double, ptr %43, align 8, !tbaa !11
  br label %2029

2027:                                             ; preds = %2007
  %2028 = load double, ptr %44, align 8, !tbaa !11
  br label %2029

2029:                                             ; preds = %2027, %2025
  %2030 = phi double [ %2026, %2025 ], [ %2028, %2027 ]
  store double %2030, ptr %85, align 8, !tbaa !11
  %2031 = load double, ptr %57, align 8, !tbaa !11
  %2032 = fcmp oge double %2031, 0.000000e+00
  br i1 %2032, label %2033, label %2035

2033:                                             ; preds = %2029
  %2034 = load double, ptr %57, align 8, !tbaa !11
  br label %2038

2035:                                             ; preds = %2029
  %2036 = load double, ptr %57, align 8, !tbaa !11
  %2037 = fneg double %2036
  br label %2038

2038:                                             ; preds = %2035, %2033
  %2039 = phi double [ %2034, %2033 ], [ %2037, %2035 ]
  %2040 = load double, ptr %103, align 8, !tbaa !11
  %2041 = fcmp ogt double %2039, %2040
  br i1 %2041, label %2042, label %2651

2042:                                             ; preds = %2038
  %2043 = call { double, double } @Cd(ptr noundef %49)
  %2044 = extractvalue { double, double } %2043, 0
  %2045 = extractvalue { double, double } %2043, 1
  %2046 = getelementptr inbounds { double, double }, ptr %112, i32 0, i32 0
  %2047 = getelementptr inbounds { double, double }, ptr %112, i32 0, i32 1
  store double %2044, ptr %2046, align 8
  store double %2045, ptr %2047, align 8
  %2048 = getelementptr inbounds { double, double }, ptr %112, i32 0, i32 0
  %2049 = load double, ptr %2048, align 8
  %2050 = getelementptr inbounds { double, double }, ptr %112, i32 0, i32 1
  %2051 = load double, ptr %2050, align 8
  %2052 = call double @cabs(double noundef %2049, double noundef %2051) #6
  store double %2052, ptr %43, align 8, !tbaa !11
  %2053 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  %2054 = load double, ptr %2053, align 8, !tbaa !13
  %2055 = load double, ptr %43, align 8, !tbaa !11
  %2056 = fdiv double %2054, %2055
  %2057 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %2056, ptr %2057, align 8, !tbaa !13
  %2058 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  %2059 = load double, ptr %2058, align 8, !tbaa !15
  %2060 = load double, ptr %43, align 8, !tbaa !11
  %2061 = fdiv double %2059, %2060
  %2062 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %2061, ptr %2062, align 8, !tbaa !15
  %2063 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %2064 = load double, ptr %2063, align 8, !tbaa !13
  %2065 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  store double %2064, ptr %2065, align 8, !tbaa !13
  %2066 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %2067 = load double, ptr %2066, align 8, !tbaa !15
  %2068 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  store double %2067, ptr %2068, align 8, !tbaa !15
  %2069 = load i32, ptr %88, align 4, !tbaa !9
  %2070 = icmp eq i32 %2069, 0
  br i1 %2070, label %2071, label %2074

2071:                                             ; preds = %2042
  store i32 0, ptr %91, align 4, !tbaa !9
  store i32 0, ptr %55, align 4, !tbaa !9
  %2072 = load i32, ptr %92, align 4, !tbaa !9
  %2073 = add nsw i32 %2072, 1
  store i32 %2073, ptr %92, align 4, !tbaa !9
  br label %2074

2074:                                             ; preds = %2071, %2042
  %2075 = load i32, ptr %75, align 4, !tbaa !9
  %2076 = icmp ne i32 %2075, 0
  br i1 %2076, label %2077, label %2462

2077:                                             ; preds = %2074
  %2078 = load double, ptr %50, align 8, !tbaa !11
  %2079 = load double, ptr %48, align 8, !tbaa !11
  %2080 = fdiv double %2078, %2079
  store double %2080, ptr %64, align 8, !tbaa !11
  %2081 = load double, ptr %48, align 8, !tbaa !11
  %2082 = load double, ptr %50, align 8, !tbaa !11
  %2083 = fdiv double %2081, %2082
  store double %2083, ptr %63, align 8, !tbaa !11
  %2084 = load double, ptr %64, align 8, !tbaa !11
  %2085 = load double, ptr %63, align 8, !tbaa !11
  %2086 = fsub double %2084, %2085
  store double %2086, ptr %43, align 8, !tbaa !11
  %2087 = load double, ptr %43, align 8, !tbaa !11
  %2088 = fcmp oge double %2087, 0.000000e+00
  br i1 %2088, label %2089, label %2091

2089:                                             ; preds = %2077
  %2090 = load double, ptr %43, align 8, !tbaa !11
  br label %2094

2091:                                             ; preds = %2077
  %2092 = load double, ptr %43, align 8, !tbaa !11
  %2093 = fneg double %2092
  br label %2094

2094:                                             ; preds = %2091, %2089
  %2095 = phi double [ %2090, %2089 ], [ %2093, %2091 ]
  %2096 = fmul double %2095, -5.000000e-01
  %2097 = load double, ptr %57, align 8, !tbaa !11
  %2098 = fdiv double %2096, %2097
  store double %2098, ptr %65, align 8, !tbaa !11
  %2099 = load double, ptr %65, align 8, !tbaa !11
  %2100 = fcmp oge double %2099, 0.000000e+00
  br i1 %2100, label %2101, label %2103

2101:                                             ; preds = %2094
  %2102 = load double, ptr %65, align 8, !tbaa !11
  br label %2106

2103:                                             ; preds = %2094
  %2104 = load double, ptr %65, align 8, !tbaa !11
  %2105 = fneg double %2104
  br label %2106

2106:                                             ; preds = %2103, %2101
  %2107 = phi double [ %2102, %2101 ], [ %2105, %2103 ]
  %2108 = load double, ptr %53, align 8, !tbaa !11
  %2109 = fcmp ogt double %2107, %2108
  br i1 %2109, label %2110, label %2238

2110:                                             ; preds = %2106
  %2111 = load double, ptr %65, align 8, !tbaa !11
  %2112 = fdiv double 5.000000e-01, %2111
  store double %2112, ptr %62, align 8, !tbaa !11
  store double 1.000000e+00, ptr %80, align 8, !tbaa !11
  %2113 = call { double, double } @Cd(ptr noundef %54)
  %2114 = extractvalue { double, double } %2113, 0
  %2115 = extractvalue { double, double } %2113, 1
  %2116 = fneg double %2115
  %2117 = call ptr @_pCd(ptr noundef %46)
  %2118 = getelementptr inbounds { double, double }, ptr %2117, i32 0, i32 0
  %2119 = getelementptr inbounds { double, double }, ptr %2117, i32 0, i32 1
  store double %2114, ptr %2118, align 8
  store double %2116, ptr %2119, align 8
  %2120 = load double, ptr %62, align 8, !tbaa !11
  %2121 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %2122 = load double, ptr %2121, align 8, !tbaa !13
  %2123 = fmul double %2120, %2122
  %2124 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %2123, ptr %2124, align 8, !tbaa !13
  %2125 = load double, ptr %62, align 8, !tbaa !11
  %2126 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %2127 = load double, ptr %2126, align 8, !tbaa !15
  %2128 = fmul double %2125, %2127
  %2129 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %2128, ptr %2129, align 8, !tbaa !15
  %2130 = load ptr, ptr %20, align 8, !tbaa !5
  %2131 = load ptr, ptr %22, align 8, !tbaa !5
  %2132 = load i32, ptr %60, align 4, !tbaa !9
  %2133 = load i32, ptr %33, align 4, !tbaa !9
  %2134 = mul nsw i32 %2132, %2133
  %2135 = add nsw i32 %2134, 1
  %2136 = sext i32 %2135 to i64
  %2137 = getelementptr inbounds %struct.doublecomplex, ptr %2131, i64 %2136
  %2138 = load ptr, ptr %22, align 8, !tbaa !5
  %2139 = load i32, ptr %61, align 4, !tbaa !9
  %2140 = load i32, ptr %33, align 4, !tbaa !9
  %2141 = mul nsw i32 %2139, %2140
  %2142 = add nsw i32 %2141, 1
  %2143 = sext i32 %2142 to i64
  %2144 = getelementptr inbounds %struct.doublecomplex, ptr %2138, i64 %2143
  call void @zrot_(ptr noundef %2130, ptr noundef %2137, ptr noundef @c__1, ptr noundef %2144, ptr noundef @c__1, ptr noundef %80, ptr noundef %45)
  %2145 = load i32, ptr %71, align 4, !tbaa !9
  %2146 = icmp ne i32 %2145, 0
  br i1 %2146, label %2147, label %2179

2147:                                             ; preds = %2110
  %2148 = call { double, double } @Cd(ptr noundef %54)
  %2149 = extractvalue { double, double } %2148, 0
  %2150 = extractvalue { double, double } %2148, 1
  %2151 = fneg double %2150
  %2152 = call ptr @_pCd(ptr noundef %46)
  %2153 = getelementptr inbounds { double, double }, ptr %2152, i32 0, i32 0
  %2154 = getelementptr inbounds { double, double }, ptr %2152, i32 0, i32 1
  store double %2149, ptr %2153, align 8
  store double %2151, ptr %2154, align 8
  %2155 = load double, ptr %62, align 8, !tbaa !11
  %2156 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %2157 = load double, ptr %2156, align 8, !tbaa !13
  %2158 = fmul double %2155, %2157
  %2159 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %2158, ptr %2159, align 8, !tbaa !13
  %2160 = load double, ptr %62, align 8, !tbaa !11
  %2161 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %2162 = load double, ptr %2161, align 8, !tbaa !15
  %2163 = fmul double %2160, %2162
  %2164 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %2163, ptr %2164, align 8, !tbaa !15
  %2165 = load ptr, ptr %26, align 8, !tbaa !5
  %2166 = load i32, ptr %60, align 4, !tbaa !9
  %2167 = load i32, ptr %35, align 4, !tbaa !9
  %2168 = mul nsw i32 %2166, %2167
  %2169 = add nsw i32 %2168, 1
  %2170 = sext i32 %2169 to i64
  %2171 = getelementptr inbounds %struct.doublecomplex, ptr %2165, i64 %2170
  %2172 = load ptr, ptr %26, align 8, !tbaa !5
  %2173 = load i32, ptr %61, align 4, !tbaa !9
  %2174 = load i32, ptr %35, align 4, !tbaa !9
  %2175 = mul nsw i32 %2173, %2174
  %2176 = add nsw i32 %2175, 1
  %2177 = sext i32 %2176 to i64
  %2178 = getelementptr inbounds %struct.doublecomplex, ptr %2172, i64 %2177
  call void @zrot_(ptr noundef %104, ptr noundef %2171, ptr noundef @c__1, ptr noundef %2178, ptr noundef @c__1, ptr noundef %80, ptr noundef %45)
  br label %2179

2179:                                             ; preds = %2147, %2110
  store double 0.000000e+00, ptr %43, align 8, !tbaa !11
  %2180 = load double, ptr %62, align 8, !tbaa !11
  %2181 = load double, ptr %63, align 8, !tbaa !11
  %2182 = fmul double %2180, %2181
  %2183 = load double, ptr %57, align 8, !tbaa !11
  %2184 = call double @llvm.fmuladd.f64(double %2182, double %2183, double 1.000000e+00)
  store double %2184, ptr %44, align 8, !tbaa !11
  %2185 = load double, ptr %50, align 8, !tbaa !11
  %2186 = load double, ptr %43, align 8, !tbaa !11
  %2187 = load double, ptr %44, align 8, !tbaa !11
  %2188 = fcmp oge double %2186, %2187
  br i1 %2188, label %2189, label %2191

2189:                                             ; preds = %2179
  %2190 = load double, ptr %43, align 8, !tbaa !11
  br label %2193

2191:                                             ; preds = %2179
  %2192 = load double, ptr %44, align 8, !tbaa !11
  br label %2193

2193:                                             ; preds = %2191, %2189
  %2194 = phi double [ %2190, %2189 ], [ %2192, %2191 ]
  %2195 = call double @sqrt(double noundef %2194) #6
  %2196 = fmul double %2185, %2195
  %2197 = load ptr, ptr %24, align 8, !tbaa !5
  %2198 = load i32, ptr %61, align 4, !tbaa !9
  %2199 = sext i32 %2198 to i64
  %2200 = getelementptr inbounds double, ptr %2197, i64 %2199
  store double %2196, ptr %2200, align 8, !tbaa !11
  store double 0.000000e+00, ptr %43, align 8, !tbaa !11
  %2201 = load double, ptr %62, align 8, !tbaa !11
  %2202 = load double, ptr %64, align 8, !tbaa !11
  %2203 = fmul double %2201, %2202
  %2204 = load double, ptr %57, align 8, !tbaa !11
  %2205 = fneg double %2203
  %2206 = call double @llvm.fmuladd.f64(double %2205, double %2204, double 1.000000e+00)
  store double %2206, ptr %44, align 8, !tbaa !11
  %2207 = load double, ptr %43, align 8, !tbaa !11
  %2208 = load double, ptr %44, align 8, !tbaa !11
  %2209 = fcmp oge double %2207, %2208
  br i1 %2209, label %2210, label %2212

2210:                                             ; preds = %2193
  %2211 = load double, ptr %43, align 8, !tbaa !11
  br label %2214

2212:                                             ; preds = %2193
  %2213 = load double, ptr %44, align 8, !tbaa !11
  br label %2214

2214:                                             ; preds = %2212, %2210
  %2215 = phi double [ %2211, %2210 ], [ %2213, %2212 ]
  %2216 = call double @sqrt(double noundef %2215) #6
  %2217 = load double, ptr %48, align 8, !tbaa !11
  %2218 = fmul double %2217, %2216
  store double %2218, ptr %48, align 8, !tbaa !11
  %2219 = load double, ptr %87, align 8, !tbaa !11
  store double %2219, ptr %43, align 8, !tbaa !11
  %2220 = load double, ptr %62, align 8, !tbaa !11
  %2221 = fcmp oge double %2220, 0.000000e+00
  br i1 %2221, label %2222, label %2224

2222:                                             ; preds = %2214
  %2223 = load double, ptr %62, align 8, !tbaa !11
  br label %2227

2224:                                             ; preds = %2214
  %2225 = load double, ptr %62, align 8, !tbaa !11
  %2226 = fneg double %2225
  br label %2227

2227:                                             ; preds = %2224, %2222
  %2228 = phi double [ %2223, %2222 ], [ %2226, %2224 ]
  store double %2228, ptr %44, align 8, !tbaa !11
  %2229 = load double, ptr %43, align 8, !tbaa !11
  %2230 = load double, ptr %44, align 8, !tbaa !11
  %2231 = fcmp oge double %2229, %2230
  br i1 %2231, label %2232, label %2234

2232:                                             ; preds = %2227
  %2233 = load double, ptr %43, align 8, !tbaa !11
  br label %2236

2234:                                             ; preds = %2227
  %2235 = load double, ptr %44, align 8, !tbaa !11
  br label %2236

2236:                                             ; preds = %2234, %2232
  %2237 = phi double [ %2233, %2232 ], [ %2235, %2234 ]
  store double %2237, ptr %87, align 8, !tbaa !11
  br label %2406

2238:                                             ; preds = %2106
  %2239 = load double, ptr %57, align 8, !tbaa !11
  %2240 = fcmp oge double %2239, 0.000000e+00
  br i1 %2240, label %2241, label %2251

2241:                                             ; preds = %2238
  %2242 = load double, ptr @c_b42, align 8, !tbaa !11
  %2243 = fcmp oge double %2242, 0.000000e+00
  br i1 %2243, label %2244, label %2246

2244:                                             ; preds = %2241
  %2245 = load double, ptr @c_b42, align 8, !tbaa !11
  br label %2249

2246:                                             ; preds = %2241
  %2247 = load double, ptr @c_b42, align 8, !tbaa !11
  %2248 = fneg double %2247
  br label %2249

2249:                                             ; preds = %2246, %2244
  %2250 = phi double [ %2245, %2244 ], [ %2248, %2246 ]
  br label %2262

2251:                                             ; preds = %2238
  %2252 = load double, ptr @c_b42, align 8, !tbaa !11
  %2253 = fcmp oge double %2252, 0.000000e+00
  br i1 %2253, label %2254, label %2256

2254:                                             ; preds = %2251
  %2255 = load double, ptr @c_b42, align 8, !tbaa !11
  br label %2259

2256:                                             ; preds = %2251
  %2257 = load double, ptr @c_b42, align 8, !tbaa !11
  %2258 = fneg double %2257
  br label %2259

2259:                                             ; preds = %2256, %2254
  %2260 = phi double [ %2255, %2254 ], [ %2258, %2256 ]
  %2261 = fneg double %2260
  br label %2262

2262:                                             ; preds = %2259, %2249
  %2263 = phi double [ %2250, %2249 ], [ %2261, %2259 ]
  %2264 = fneg double %2263
  store double %2264, ptr %86, align 8, !tbaa !11
  %2265 = load double, ptr %65, align 8, !tbaa !11
  %2266 = load double, ptr %86, align 8, !tbaa !11
  %2267 = load double, ptr %65, align 8, !tbaa !11
  %2268 = load double, ptr %65, align 8, !tbaa !11
  %2269 = call double @llvm.fmuladd.f64(double %2267, double %2268, double 1.000000e+00)
  %2270 = call double @sqrt(double noundef %2269) #6
  %2271 = call double @llvm.fmuladd.f64(double %2266, double %2270, double %2265)
  %2272 = fdiv double 1.000000e+00, %2271
  store double %2272, ptr %62, align 8, !tbaa !11
  %2273 = load double, ptr %62, align 8, !tbaa !11
  %2274 = load double, ptr %62, align 8, !tbaa !11
  %2275 = call double @llvm.fmuladd.f64(double %2273, double %2274, double 1.000000e+00)
  %2276 = fdiv double 1.000000e+00, %2275
  %2277 = call double @sqrt(double noundef %2276) #6
  store double %2277, ptr %80, align 8, !tbaa !11
  %2278 = load double, ptr %62, align 8, !tbaa !11
  %2279 = load double, ptr %80, align 8, !tbaa !11
  %2280 = fmul double %2278, %2279
  store double %2280, ptr %81, align 8, !tbaa !11
  %2281 = load double, ptr %87, align 8, !tbaa !11
  store double %2281, ptr %43, align 8, !tbaa !11
  %2282 = load double, ptr %81, align 8, !tbaa !11
  %2283 = fcmp oge double %2282, 0.000000e+00
  br i1 %2283, label %2284, label %2286

2284:                                             ; preds = %2262
  %2285 = load double, ptr %81, align 8, !tbaa !11
  br label %2289

2286:                                             ; preds = %2262
  %2287 = load double, ptr %81, align 8, !tbaa !11
  %2288 = fneg double %2287
  br label %2289

2289:                                             ; preds = %2286, %2284
  %2290 = phi double [ %2285, %2284 ], [ %2288, %2286 ]
  store double %2290, ptr %44, align 8, !tbaa !11
  %2291 = load double, ptr %43, align 8, !tbaa !11
  %2292 = load double, ptr %44, align 8, !tbaa !11
  %2293 = fcmp oge double %2291, %2292
  br i1 %2293, label %2294, label %2296

2294:                                             ; preds = %2289
  %2295 = load double, ptr %43, align 8, !tbaa !11
  br label %2298

2296:                                             ; preds = %2289
  %2297 = load double, ptr %44, align 8, !tbaa !11
  br label %2298

2298:                                             ; preds = %2296, %2294
  %2299 = phi double [ %2295, %2294 ], [ %2297, %2296 ]
  store double %2299, ptr %87, align 8, !tbaa !11
  store double 0.000000e+00, ptr %43, align 8, !tbaa !11
  %2300 = load double, ptr %62, align 8, !tbaa !11
  %2301 = load double, ptr %63, align 8, !tbaa !11
  %2302 = fmul double %2300, %2301
  %2303 = load double, ptr %57, align 8, !tbaa !11
  %2304 = call double @llvm.fmuladd.f64(double %2302, double %2303, double 1.000000e+00)
  store double %2304, ptr %44, align 8, !tbaa !11
  %2305 = load double, ptr %50, align 8, !tbaa !11
  %2306 = load double, ptr %43, align 8, !tbaa !11
  %2307 = load double, ptr %44, align 8, !tbaa !11
  %2308 = fcmp oge double %2306, %2307
  br i1 %2308, label %2309, label %2311

2309:                                             ; preds = %2298
  %2310 = load double, ptr %43, align 8, !tbaa !11
  br label %2313

2311:                                             ; preds = %2298
  %2312 = load double, ptr %44, align 8, !tbaa !11
  br label %2313

2313:                                             ; preds = %2311, %2309
  %2314 = phi double [ %2310, %2309 ], [ %2312, %2311 ]
  %2315 = call double @sqrt(double noundef %2314) #6
  %2316 = fmul double %2305, %2315
  %2317 = load ptr, ptr %24, align 8, !tbaa !5
  %2318 = load i32, ptr %61, align 4, !tbaa !9
  %2319 = sext i32 %2318 to i64
  %2320 = getelementptr inbounds double, ptr %2317, i64 %2319
  store double %2316, ptr %2320, align 8, !tbaa !11
  store double 0.000000e+00, ptr %43, align 8, !tbaa !11
  %2321 = load double, ptr %62, align 8, !tbaa !11
  %2322 = load double, ptr %64, align 8, !tbaa !11
  %2323 = fmul double %2321, %2322
  %2324 = load double, ptr %57, align 8, !tbaa !11
  %2325 = fneg double %2323
  %2326 = call double @llvm.fmuladd.f64(double %2325, double %2324, double 1.000000e+00)
  store double %2326, ptr %44, align 8, !tbaa !11
  %2327 = load double, ptr %43, align 8, !tbaa !11
  %2328 = load double, ptr %44, align 8, !tbaa !11
  %2329 = fcmp oge double %2327, %2328
  br i1 %2329, label %2330, label %2332

2330:                                             ; preds = %2313
  %2331 = load double, ptr %43, align 8, !tbaa !11
  br label %2334

2332:                                             ; preds = %2313
  %2333 = load double, ptr %44, align 8, !tbaa !11
  br label %2334

2334:                                             ; preds = %2332, %2330
  %2335 = phi double [ %2331, %2330 ], [ %2333, %2332 ]
  %2336 = call double @sqrt(double noundef %2335) #6
  %2337 = load double, ptr %48, align 8, !tbaa !11
  %2338 = fmul double %2337, %2336
  store double %2338, ptr %48, align 8, !tbaa !11
  %2339 = call { double, double } @Cd(ptr noundef %54)
  %2340 = extractvalue { double, double } %2339, 0
  %2341 = extractvalue { double, double } %2339, 1
  %2342 = fneg double %2341
  %2343 = call ptr @_pCd(ptr noundef %46)
  %2344 = getelementptr inbounds { double, double }, ptr %2343, i32 0, i32 0
  %2345 = getelementptr inbounds { double, double }, ptr %2343, i32 0, i32 1
  store double %2340, ptr %2344, align 8
  store double %2342, ptr %2345, align 8
  %2346 = load double, ptr %81, align 8, !tbaa !11
  %2347 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %2348 = load double, ptr %2347, align 8, !tbaa !13
  %2349 = fmul double %2346, %2348
  %2350 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %2349, ptr %2350, align 8, !tbaa !13
  %2351 = load double, ptr %81, align 8, !tbaa !11
  %2352 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %2353 = load double, ptr %2352, align 8, !tbaa !15
  %2354 = fmul double %2351, %2353
  %2355 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %2354, ptr %2355, align 8, !tbaa !15
  %2356 = load ptr, ptr %20, align 8, !tbaa !5
  %2357 = load ptr, ptr %22, align 8, !tbaa !5
  %2358 = load i32, ptr %60, align 4, !tbaa !9
  %2359 = load i32, ptr %33, align 4, !tbaa !9
  %2360 = mul nsw i32 %2358, %2359
  %2361 = add nsw i32 %2360, 1
  %2362 = sext i32 %2361 to i64
  %2363 = getelementptr inbounds %struct.doublecomplex, ptr %2357, i64 %2362
  %2364 = load ptr, ptr %22, align 8, !tbaa !5
  %2365 = load i32, ptr %61, align 4, !tbaa !9
  %2366 = load i32, ptr %33, align 4, !tbaa !9
  %2367 = mul nsw i32 %2365, %2366
  %2368 = add nsw i32 %2367, 1
  %2369 = sext i32 %2368 to i64
  %2370 = getelementptr inbounds %struct.doublecomplex, ptr %2364, i64 %2369
  call void @zrot_(ptr noundef %2356, ptr noundef %2363, ptr noundef @c__1, ptr noundef %2370, ptr noundef @c__1, ptr noundef %80, ptr noundef %45)
  %2371 = load i32, ptr %71, align 4, !tbaa !9
  %2372 = icmp ne i32 %2371, 0
  br i1 %2372, label %2373, label %2405

2373:                                             ; preds = %2334
  %2374 = call { double, double } @Cd(ptr noundef %54)
  %2375 = extractvalue { double, double } %2374, 0
  %2376 = extractvalue { double, double } %2374, 1
  %2377 = fneg double %2376
  %2378 = call ptr @_pCd(ptr noundef %46)
  %2379 = getelementptr inbounds { double, double }, ptr %2378, i32 0, i32 0
  %2380 = getelementptr inbounds { double, double }, ptr %2378, i32 0, i32 1
  store double %2375, ptr %2379, align 8
  store double %2377, ptr %2380, align 8
  %2381 = load double, ptr %81, align 8, !tbaa !11
  %2382 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %2383 = load double, ptr %2382, align 8, !tbaa !13
  %2384 = fmul double %2381, %2383
  %2385 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %2384, ptr %2385, align 8, !tbaa !13
  %2386 = load double, ptr %81, align 8, !tbaa !11
  %2387 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %2388 = load double, ptr %2387, align 8, !tbaa !15
  %2389 = fmul double %2386, %2388
  %2390 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %2389, ptr %2390, align 8, !tbaa !15
  %2391 = load ptr, ptr %26, align 8, !tbaa !5
  %2392 = load i32, ptr %60, align 4, !tbaa !9
  %2393 = load i32, ptr %35, align 4, !tbaa !9
  %2394 = mul nsw i32 %2392, %2393
  %2395 = add nsw i32 %2394, 1
  %2396 = sext i32 %2395 to i64
  %2397 = getelementptr inbounds %struct.doublecomplex, ptr %2391, i64 %2396
  %2398 = load ptr, ptr %26, align 8, !tbaa !5
  %2399 = load i32, ptr %61, align 4, !tbaa !9
  %2400 = load i32, ptr %35, align 4, !tbaa !9
  %2401 = mul nsw i32 %2399, %2400
  %2402 = add nsw i32 %2401, 1
  %2403 = sext i32 %2402 to i64
  %2404 = getelementptr inbounds %struct.doublecomplex, ptr %2398, i64 %2403
  call void @zrot_(ptr noundef %104, ptr noundef %2397, ptr noundef @c__1, ptr noundef %2404, ptr noundef @c__1, ptr noundef %80, ptr noundef %45)
  br label %2405

2405:                                             ; preds = %2373, %2334
  br label %2406

2406:                                             ; preds = %2405, %2236
  %2407 = load i32, ptr %60, align 4, !tbaa !9
  store i32 %2407, ptr %41, align 4, !tbaa !9
  %2408 = load i32, ptr %61, align 4, !tbaa !9
  store i32 %2408, ptr %42, align 4, !tbaa !9
  %2409 = load ptr, ptr %28, align 8, !tbaa !5
  %2410 = load i32, ptr %42, align 4, !tbaa !9
  %2411 = sext i32 %2410 to i64
  %2412 = getelementptr inbounds %struct.doublecomplex, ptr %2409, i64 %2411
  %2413 = getelementptr inbounds %struct.doublecomplex, ptr %2412, i32 0, i32 0
  %2414 = load double, ptr %2413, align 8, !tbaa !13
  %2415 = fneg double %2414
  %2416 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  store double %2415, ptr %2416, align 8, !tbaa !13
  %2417 = load ptr, ptr %28, align 8, !tbaa !5
  %2418 = load i32, ptr %42, align 4, !tbaa !9
  %2419 = sext i32 %2418 to i64
  %2420 = getelementptr inbounds %struct.doublecomplex, ptr %2417, i64 %2419
  %2421 = getelementptr inbounds %struct.doublecomplex, ptr %2420, i32 0, i32 1
  %2422 = load double, ptr %2421, align 8, !tbaa !15
  %2423 = fneg double %2422
  %2424 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  store double %2423, ptr %2424, align 8, !tbaa !15
  %2425 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %2426 = load double, ptr %2425, align 8, !tbaa !13
  %2427 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %2428 = load double, ptr %2427, align 8, !tbaa !13
  %2429 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %2430 = load double, ptr %2429, align 8, !tbaa !15
  %2431 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %2432 = load double, ptr %2431, align 8, !tbaa !15
  %2433 = fmul double %2430, %2432
  %2434 = fneg double %2433
  %2435 = call double @llvm.fmuladd.f64(double %2426, double %2428, double %2434)
  %2436 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %2435, ptr %2436, align 8, !tbaa !13
  %2437 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %2438 = load double, ptr %2437, align 8, !tbaa !13
  %2439 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %2440 = load double, ptr %2439, align 8, !tbaa !15
  %2441 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %2442 = load double, ptr %2441, align 8, !tbaa !15
  %2443 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %2444 = load double, ptr %2443, align 8, !tbaa !13
  %2445 = fmul double %2442, %2444
  %2446 = call double @llvm.fmuladd.f64(double %2438, double %2440, double %2445)
  %2447 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %2446, ptr %2447, align 8, !tbaa !15
  %2448 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %2449 = load double, ptr %2448, align 8, !tbaa !13
  %2450 = load ptr, ptr %28, align 8, !tbaa !5
  %2451 = load i32, ptr %41, align 4, !tbaa !9
  %2452 = sext i32 %2451 to i64
  %2453 = getelementptr inbounds %struct.doublecomplex, ptr %2450, i64 %2452
  %2454 = getelementptr inbounds %struct.doublecomplex, ptr %2453, i32 0, i32 0
  store double %2449, ptr %2454, align 8, !tbaa !13
  %2455 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %2456 = load double, ptr %2455, align 8, !tbaa !15
  %2457 = load ptr, ptr %28, align 8, !tbaa !5
  %2458 = load i32, ptr %41, align 4, !tbaa !9
  %2459 = sext i32 %2458 to i64
  %2460 = getelementptr inbounds %struct.doublecomplex, ptr %2457, i64 %2459
  %2461 = getelementptr inbounds %struct.doublecomplex, ptr %2460, i32 0, i32 1
  store double %2456, ptr %2461, align 8, !tbaa !15
  br label %2554

2462:                                             ; preds = %2074
  %2463 = load ptr, ptr %20, align 8, !tbaa !5
  %2464 = load ptr, ptr %22, align 8, !tbaa !5
  %2465 = load i32, ptr %60, align 4, !tbaa !9
  %2466 = load i32, ptr %33, align 4, !tbaa !9
  %2467 = mul nsw i32 %2465, %2466
  %2468 = add nsw i32 %2467, 1
  %2469 = sext i32 %2468 to i64
  %2470 = getelementptr inbounds %struct.doublecomplex, ptr %2464, i64 %2469
  %2471 = load ptr, ptr %28, align 8, !tbaa !5
  %2472 = load ptr, ptr %21, align 8, !tbaa !5
  %2473 = load i32, ptr %2472, align 4, !tbaa !9
  %2474 = add nsw i32 %2473, 1
  %2475 = sext i32 %2474 to i64
  %2476 = getelementptr inbounds %struct.doublecomplex, ptr %2471, i64 %2475
  call void @zcopy_(ptr noundef %2463, ptr noundef %2470, ptr noundef @c__1, ptr noundef %2476, ptr noundef @c__1)
  %2477 = load ptr, ptr %20, align 8, !tbaa !5
  %2478 = load ptr, ptr %28, align 8, !tbaa !5
  %2479 = load ptr, ptr %21, align 8, !tbaa !5
  %2480 = load i32, ptr %2479, align 4, !tbaa !9
  %2481 = add nsw i32 %2480, 1
  %2482 = sext i32 %2481 to i64
  %2483 = getelementptr inbounds %struct.doublecomplex, ptr %2478, i64 %2482
  %2484 = load ptr, ptr %23, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.7, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %48, ptr noundef @c_b42, ptr noundef %2477, ptr noundef @c__1, ptr noundef %2483, ptr noundef %2484, ptr noundef %52)
  %2485 = load ptr, ptr %20, align 8, !tbaa !5
  %2486 = load ptr, ptr %22, align 8, !tbaa !5
  %2487 = load i32, ptr %61, align 4, !tbaa !9
  %2488 = load i32, ptr %33, align 4, !tbaa !9
  %2489 = mul nsw i32 %2487, %2488
  %2490 = add nsw i32 %2489, 1
  %2491 = sext i32 %2490 to i64
  %2492 = getelementptr inbounds %struct.doublecomplex, ptr %2486, i64 %2491
  %2493 = load ptr, ptr %23, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.7, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %50, ptr noundef @c_b42, ptr noundef %2485, ptr noundef @c__1, ptr noundef %2492, ptr noundef %2493, ptr noundef %52)
  %2494 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  %2495 = load double, ptr %2494, align 8, !tbaa !13
  %2496 = fneg double %2495
  %2497 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %2496, ptr %2497, align 8, !tbaa !13
  %2498 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  %2499 = load double, ptr %2498, align 8, !tbaa !15
  %2500 = fneg double %2499
  %2501 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %2500, ptr %2501, align 8, !tbaa !15
  %2502 = load ptr, ptr %20, align 8, !tbaa !5
  %2503 = load ptr, ptr %28, align 8, !tbaa !5
  %2504 = load ptr, ptr %21, align 8, !tbaa !5
  %2505 = load i32, ptr %2504, align 4, !tbaa !9
  %2506 = add nsw i32 %2505, 1
  %2507 = sext i32 %2506 to i64
  %2508 = getelementptr inbounds %struct.doublecomplex, ptr %2503, i64 %2507
  %2509 = load ptr, ptr %22, align 8, !tbaa !5
  %2510 = load i32, ptr %61, align 4, !tbaa !9
  %2511 = load i32, ptr %33, align 4, !tbaa !9
  %2512 = mul nsw i32 %2510, %2511
  %2513 = add nsw i32 %2512, 1
  %2514 = sext i32 %2513 to i64
  %2515 = getelementptr inbounds %struct.doublecomplex, ptr %2509, i64 %2514
  call void @zaxpy_(ptr noundef %2502, ptr noundef %45, ptr noundef %2508, ptr noundef @c__1, ptr noundef %2515, ptr noundef @c__1)
  %2516 = load ptr, ptr %20, align 8, !tbaa !5
  %2517 = load ptr, ptr %22, align 8, !tbaa !5
  %2518 = load i32, ptr %61, align 4, !tbaa !9
  %2519 = load i32, ptr %33, align 4, !tbaa !9
  %2520 = mul nsw i32 %2518, %2519
  %2521 = add nsw i32 %2520, 1
  %2522 = sext i32 %2521 to i64
  %2523 = getelementptr inbounds %struct.doublecomplex, ptr %2517, i64 %2522
  %2524 = load ptr, ptr %23, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.7, ptr noundef @c__0, ptr noundef @c__0, ptr noundef @c_b42, ptr noundef %50, ptr noundef %2516, ptr noundef @c__1, ptr noundef %2523, ptr noundef %2524, ptr noundef %52)
  store double 0.000000e+00, ptr %43, align 8, !tbaa !11
  %2525 = load double, ptr %57, align 8, !tbaa !11
  %2526 = load double, ptr %57, align 8, !tbaa !11
  %2527 = fneg double %2525
  %2528 = call double @llvm.fmuladd.f64(double %2527, double %2526, double 1.000000e+00)
  store double %2528, ptr %44, align 8, !tbaa !11
  %2529 = load double, ptr %50, align 8, !tbaa !11
  %2530 = load double, ptr %43, align 8, !tbaa !11
  %2531 = load double, ptr %44, align 8, !tbaa !11
  %2532 = fcmp oge double %2530, %2531
  br i1 %2532, label %2533, label %2535

2533:                                             ; preds = %2462
  %2534 = load double, ptr %43, align 8, !tbaa !11
  br label %2537

2535:                                             ; preds = %2462
  %2536 = load double, ptr %44, align 8, !tbaa !11
  br label %2537

2537:                                             ; preds = %2535, %2533
  %2538 = phi double [ %2534, %2533 ], [ %2536, %2535 ]
  %2539 = call double @sqrt(double noundef %2538) #6
  %2540 = fmul double %2529, %2539
  %2541 = load ptr, ptr %24, align 8, !tbaa !5
  %2542 = load i32, ptr %61, align 4, !tbaa !9
  %2543 = sext i32 %2542 to i64
  %2544 = getelementptr inbounds double, ptr %2541, i64 %2543
  store double %2540, ptr %2544, align 8, !tbaa !11
  %2545 = load double, ptr %87, align 8, !tbaa !11
  %2546 = load double, ptr %67, align 8, !tbaa !11
  %2547 = fcmp oge double %2545, %2546
  br i1 %2547, label %2548, label %2550

2548:                                             ; preds = %2537
  %2549 = load double, ptr %87, align 8, !tbaa !11
  br label %2552

2550:                                             ; preds = %2537
  %2551 = load double, ptr %67, align 8, !tbaa !11
  br label %2552

2552:                                             ; preds = %2550, %2548
  %2553 = phi double [ %2549, %2548 ], [ %2551, %2550 ]
  store double %2553, ptr %87, align 8, !tbaa !11
  br label %2554

2554:                                             ; preds = %2552, %2406
  %2555 = load ptr, ptr %24, align 8, !tbaa !5
  %2556 = load i32, ptr %61, align 4, !tbaa !9
  %2557 = sext i32 %2556 to i64
  %2558 = getelementptr inbounds double, ptr %2555, i64 %2557
  %2559 = load double, ptr %2558, align 8, !tbaa !11
  %2560 = load double, ptr %50, align 8, !tbaa !11
  %2561 = fdiv double %2559, %2560
  store double %2561, ptr %43, align 8, !tbaa !11
  %2562 = load double, ptr %43, align 8, !tbaa !11
  %2563 = load double, ptr %43, align 8, !tbaa !11
  %2564 = fmul double %2562, %2563
  %2565 = load double, ptr %107, align 8, !tbaa !11
  %2566 = fcmp ole double %2564, %2565
  br i1 %2566, label %2567, label %2607

2567:                                             ; preds = %2554
  %2568 = load double, ptr %50, align 8, !tbaa !11
  %2569 = load double, ptr %106, align 8, !tbaa !11
  %2570 = fcmp olt double %2568, %2569
  br i1 %2570, label %2571, label %2589

2571:                                             ; preds = %2567
  %2572 = load double, ptr %50, align 8, !tbaa !11
  %2573 = load double, ptr %78, align 8, !tbaa !11
  %2574 = fcmp ogt double %2572, %2573
  br i1 %2574, label %2575, label %2589

2575:                                             ; preds = %2571
  %2576 = load ptr, ptr %20, align 8, !tbaa !5
  %2577 = load ptr, ptr %22, align 8, !tbaa !5
  %2578 = load i32, ptr %61, align 4, !tbaa !9
  %2579 = load i32, ptr %33, align 4, !tbaa !9
  %2580 = mul nsw i32 %2578, %2579
  %2581 = add nsw i32 %2580, 1
  %2582 = sext i32 %2581 to i64
  %2583 = getelementptr inbounds %struct.doublecomplex, ptr %2577, i64 %2582
  %2584 = call double @dznrm2_(ptr noundef %2576, ptr noundef %2583, ptr noundef @c__1)
  %2585 = load ptr, ptr %24, align 8, !tbaa !5
  %2586 = load i32, ptr %61, align 4, !tbaa !9
  %2587 = sext i32 %2586 to i64
  %2588 = getelementptr inbounds double, ptr %2585, i64 %2587
  store double %2584, ptr %2588, align 8, !tbaa !11
  br label %2606

2589:                                             ; preds = %2571, %2567
  store double 0.000000e+00, ptr %62, align 8, !tbaa !11
  store double 1.000000e+00, ptr %50, align 8, !tbaa !11
  %2590 = load ptr, ptr %20, align 8, !tbaa !5
  %2591 = load ptr, ptr %22, align 8, !tbaa !5
  %2592 = load i32, ptr %61, align 4, !tbaa !9
  %2593 = load i32, ptr %33, align 4, !tbaa !9
  %2594 = mul nsw i32 %2592, %2593
  %2595 = add nsw i32 %2594, 1
  %2596 = sext i32 %2595 to i64
  %2597 = getelementptr inbounds %struct.doublecomplex, ptr %2591, i64 %2596
  call void @zlassq_(ptr noundef %2590, ptr noundef %2597, ptr noundef @c__1, ptr noundef %62, ptr noundef %50)
  %2598 = load double, ptr %62, align 8, !tbaa !11
  %2599 = load double, ptr %50, align 8, !tbaa !11
  %2600 = call double @sqrt(double noundef %2599) #6
  %2601 = fmul double %2598, %2600
  %2602 = load ptr, ptr %24, align 8, !tbaa !5
  %2603 = load i32, ptr %61, align 4, !tbaa !9
  %2604 = sext i32 %2603 to i64
  %2605 = getelementptr inbounds double, ptr %2602, i64 %2604
  store double %2601, ptr %2605, align 8, !tbaa !11
  br label %2606

2606:                                             ; preds = %2589, %2575
  br label %2607

2607:                                             ; preds = %2606, %2554
  %2608 = load double, ptr %48, align 8, !tbaa !11
  %2609 = load double, ptr %56, align 8, !tbaa !11
  %2610 = fdiv double %2608, %2609
  %2611 = load double, ptr %107, align 8, !tbaa !11
  %2612 = fcmp ole double %2610, %2611
  br i1 %2612, label %2613, label %2650

2613:                                             ; preds = %2607
  %2614 = load double, ptr %48, align 8, !tbaa !11
  %2615 = load double, ptr %106, align 8, !tbaa !11
  %2616 = fcmp olt double %2614, %2615
  br i1 %2616, label %2617, label %2631

2617:                                             ; preds = %2613
  %2618 = load double, ptr %48, align 8, !tbaa !11
  %2619 = load double, ptr %78, align 8, !tbaa !11
  %2620 = fcmp ogt double %2618, %2619
  br i1 %2620, label %2621, label %2631

2621:                                             ; preds = %2617
  %2622 = load ptr, ptr %20, align 8, !tbaa !5
  %2623 = load ptr, ptr %22, align 8, !tbaa !5
  %2624 = load i32, ptr %60, align 4, !tbaa !9
  %2625 = load i32, ptr %33, align 4, !tbaa !9
  %2626 = mul nsw i32 %2624, %2625
  %2627 = add nsw i32 %2626, 1
  %2628 = sext i32 %2627 to i64
  %2629 = getelementptr inbounds %struct.doublecomplex, ptr %2623, i64 %2628
  %2630 = call double @dznrm2_(ptr noundef %2622, ptr noundef %2629, ptr noundef @c__1)
  store double %2630, ptr %48, align 8, !tbaa !11
  br label %2644

2631:                                             ; preds = %2617, %2613
  store double 0.000000e+00, ptr %62, align 8, !tbaa !11
  store double 1.000000e+00, ptr %48, align 8, !tbaa !11
  %2632 = load ptr, ptr %20, align 8, !tbaa !5
  %2633 = load ptr, ptr %22, align 8, !tbaa !5
  %2634 = load i32, ptr %60, align 4, !tbaa !9
  %2635 = load i32, ptr %33, align 4, !tbaa !9
  %2636 = mul nsw i32 %2634, %2635
  %2637 = add nsw i32 %2636, 1
  %2638 = sext i32 %2637 to i64
  %2639 = getelementptr inbounds %struct.doublecomplex, ptr %2633, i64 %2638
  call void @zlassq_(ptr noundef %2632, ptr noundef %2639, ptr noundef @c__1, ptr noundef %62, ptr noundef %48)
  %2640 = load double, ptr %62, align 8, !tbaa !11
  %2641 = load double, ptr %48, align 8, !tbaa !11
  %2642 = call double @sqrt(double noundef %2641) #6
  %2643 = fmul double %2640, %2642
  store double %2643, ptr %48, align 8, !tbaa !11
  br label %2644

2644:                                             ; preds = %2631, %2621
  %2645 = load double, ptr %48, align 8, !tbaa !11
  %2646 = load ptr, ptr %24, align 8, !tbaa !5
  %2647 = load i32, ptr %60, align 4, !tbaa !9
  %2648 = sext i32 %2647 to i64
  %2649 = getelementptr inbounds double, ptr %2646, i64 %2648
  store double %2645, ptr %2649, align 8, !tbaa !11
  br label %2650

2650:                                             ; preds = %2644, %2607
  br label %2660

2651:                                             ; preds = %2038
  %2652 = load i32, ptr %88, align 4, !tbaa !9
  %2653 = icmp eq i32 %2652, 0
  br i1 %2653, label %2654, label %2657

2654:                                             ; preds = %2651
  %2655 = load i32, ptr %91, align 4, !tbaa !9
  %2656 = add nsw i32 %2655, 1
  store i32 %2656, ptr %91, align 4, !tbaa !9
  br label %2657

2657:                                             ; preds = %2654, %2651
  %2658 = load i32, ptr %55, align 4, !tbaa !9
  %2659 = add nsw i32 %2658, 1
  store i32 %2659, ptr %55, align 4, !tbaa !9
  br label %2660

2660:                                             ; preds = %2657, %2650
  br label %2670

2661:                                             ; preds = %1779
  %2662 = load i32, ptr %88, align 4, !tbaa !9
  %2663 = icmp eq i32 %2662, 0
  br i1 %2663, label %2664, label %2667

2664:                                             ; preds = %2661
  %2665 = load i32, ptr %91, align 4, !tbaa !9
  %2666 = add nsw i32 %2665, 1
  store i32 %2666, ptr %91, align 4, !tbaa !9
  br label %2667

2667:                                             ; preds = %2664, %2661
  %2668 = load i32, ptr %55, align 4, !tbaa !9
  %2669 = add nsw i32 %2668, 1
  store i32 %2669, ptr %55, align 4, !tbaa !9
  br label %2670

2670:                                             ; preds = %2667, %2660
  %2671 = load i32, ptr %59, align 4, !tbaa !9
  %2672 = load i32, ptr %83, align 4, !tbaa !9
  %2673 = icmp sle i32 %2671, %2672
  br i1 %2673, label %2674, label %2685

2674:                                             ; preds = %2670
  %2675 = load i32, ptr %55, align 4, !tbaa !9
  %2676 = load i32, ptr %108, align 4, !tbaa !9
  %2677 = icmp sgt i32 %2675, %2676
  br i1 %2677, label %2678, label %2685

2678:                                             ; preds = %2674
  %2679 = load i32, ptr %88, align 4, !tbaa !9
  %2680 = icmp eq i32 %2679, 0
  br i1 %2680, label %2681, label %2684

2681:                                             ; preds = %2678
  %2682 = load double, ptr %48, align 8, !tbaa !11
  %2683 = fneg double %2682
  store double %2683, ptr %48, align 8, !tbaa !11
  br label %2684

2684:                                             ; preds = %2681, %2678
  store i32 0, ptr %91, align 4, !tbaa !9
  br label %2690

2685:                                             ; preds = %2674, %2670
  br label %2686

2686:                                             ; preds = %2685
  %2687 = load i32, ptr %61, align 4, !tbaa !9
  %2688 = add nsw i32 %2687, 1
  store i32 %2688, ptr %61, align 4, !tbaa !9
  br label %1775, !llvm.loop !25

2689:                                             ; preds = %1775
  br label %2690

2690:                                             ; preds = %2689, %2684
  %2691 = load double, ptr %48, align 8, !tbaa !11
  %2692 = load ptr, ptr %24, align 8, !tbaa !5
  %2693 = load i32, ptr %60, align 4, !tbaa !9
  %2694 = sext i32 %2693 to i64
  %2695 = getelementptr inbounds double, ptr %2692, i64 %2694
  store double %2691, ptr %2695, align 8, !tbaa !11
  br label %2728

2696:                                             ; preds = %1754
  %2697 = load double, ptr %48, align 8, !tbaa !11
  %2698 = load ptr, ptr %24, align 8, !tbaa !5
  %2699 = load i32, ptr %60, align 4, !tbaa !9
  %2700 = sext i32 %2699 to i64
  %2701 = getelementptr inbounds double, ptr %2698, i64 %2700
  store double %2697, ptr %2701, align 8, !tbaa !11
  %2702 = load i32, ptr %88, align 4, !tbaa !9
  %2703 = icmp eq i32 %2702, 0
  br i1 %2703, label %2704, label %2727

2704:                                             ; preds = %2696
  %2705 = load double, ptr %48, align 8, !tbaa !11
  %2706 = fcmp oeq double %2705, 0.000000e+00
  br i1 %2706, label %2707, label %2727

2707:                                             ; preds = %2704
  %2708 = load i32, ptr %97, align 4, !tbaa !9
  %2709 = load i32, ptr %95, align 4, !tbaa !9
  %2710 = add nsw i32 %2708, %2709
  %2711 = sub nsw i32 %2710, 1
  store i32 %2711, ptr %40, align 4, !tbaa !9
  %2712 = load i32, ptr %91, align 4, !tbaa !9
  %2713 = load i32, ptr %40, align 4, !tbaa !9
  %2714 = load ptr, ptr %21, align 8, !tbaa !5
  %2715 = load i32, ptr %2714, align 4, !tbaa !9
  %2716 = icmp sle i32 %2713, %2715
  br i1 %2716, label %2717, label %2719

2717:                                             ; preds = %2707
  %2718 = load i32, ptr %40, align 4, !tbaa !9
  br label %2722

2719:                                             ; preds = %2707
  %2720 = load ptr, ptr %21, align 8, !tbaa !5
  %2721 = load i32, ptr %2720, align 4, !tbaa !9
  br label %2722

2722:                                             ; preds = %2719, %2717
  %2723 = phi i32 [ %2718, %2717 ], [ %2721, %2719 ]
  %2724 = add nsw i32 %2712, %2723
  %2725 = load i32, ptr %60, align 4, !tbaa !9
  %2726 = sub nsw i32 %2724, %2725
  store i32 %2726, ptr %91, align 4, !tbaa !9
  br label %2727

2727:                                             ; preds = %2722, %2704, %2696
  br label %2728

2728:                                             ; preds = %2727, %2690
  br label %2729

2729:                                             ; preds = %2728
  %2730 = load i32, ptr %60, align 4, !tbaa !9
  %2731 = add nsw i32 %2730, 1
  store i32 %2731, ptr %60, align 4, !tbaa !9
  br label %1564, !llvm.loop !26

2732:                                             ; preds = %1564
  br label %2733

2733:                                             ; preds = %2732
  %2734 = load i32, ptr %88, align 4, !tbaa !9
  %2735 = add nsw i32 %2734, 1
  store i32 %2735, ptr %88, align 4, !tbaa !9
  br label %1537, !llvm.loop !27

2736:                                             ; preds = %1537
  %2737 = load i32, ptr %98, align 4, !tbaa !9
  %2738 = sub nsw i32 %2737, 1
  %2739 = load i32, ptr %95, align 4, !tbaa !9
  %2740 = mul nsw i32 %2738, %2739
  %2741 = add nsw i32 %2740, 1
  store i32 %2741, ptr %97, align 4, !tbaa !9
  %2742 = load i32, ptr %100, align 4, !tbaa !9
  store i32 %2742, ptr %38, align 4, !tbaa !9
  %2743 = load i32, ptr %98, align 4, !tbaa !9
  %2744 = add nsw i32 %2743, 1
  store i32 %2744, ptr %93, align 4, !tbaa !9
  br label %2745

2745:                                             ; preds = %3920, %2736
  %2746 = load i32, ptr %93, align 4, !tbaa !9
  %2747 = load i32, ptr %38, align 4, !tbaa !9
  %2748 = icmp sle i32 %2746, %2747
  br i1 %2748, label %2749, label %3923

2749:                                             ; preds = %2745
  %2750 = load i32, ptr %93, align 4, !tbaa !9
  %2751 = sub nsw i32 %2750, 1
  %2752 = load i32, ptr %95, align 4, !tbaa !9
  %2753 = mul nsw i32 %2751, %2752
  %2754 = add nsw i32 %2753, 1
  store i32 %2754, ptr %99, align 4, !tbaa !9
  store i32 0, ptr %82, align 4, !tbaa !9
  %2755 = load i32, ptr %97, align 4, !tbaa !9
  %2756 = load i32, ptr %95, align 4, !tbaa !9
  %2757 = add nsw i32 %2755, %2756
  %2758 = sub nsw i32 %2757, 1
  store i32 %2758, ptr %40, align 4, !tbaa !9
  %2759 = load i32, ptr %40, align 4, !tbaa !9
  %2760 = load ptr, ptr %21, align 8, !tbaa !5
  %2761 = load i32, ptr %2760, align 4, !tbaa !9
  %2762 = icmp sle i32 %2759, %2761
  br i1 %2762, label %2763, label %2765

2763:                                             ; preds = %2749
  %2764 = load i32, ptr %40, align 4, !tbaa !9
  br label %2768

2765:                                             ; preds = %2749
  %2766 = load ptr, ptr %21, align 8, !tbaa !5
  %2767 = load i32, ptr %2766, align 4, !tbaa !9
  br label %2768

2768:                                             ; preds = %2765, %2763
  %2769 = phi i32 [ %2764, %2763 ], [ %2767, %2765 ]
  store i32 %2769, ptr %39, align 4, !tbaa !9
  %2770 = load i32, ptr %97, align 4, !tbaa !9
  store i32 %2770, ptr %60, align 4, !tbaa !9
  br label %2771

2771:                                             ; preds = %3916, %2768
  %2772 = load i32, ptr %60, align 4, !tbaa !9
  %2773 = load i32, ptr %39, align 4, !tbaa !9
  %2774 = icmp sle i32 %2772, %2773
  br i1 %2774, label %2775, label %3919

2775:                                             ; preds = %2771
  %2776 = load ptr, ptr %24, align 8, !tbaa !5
  %2777 = load i32, ptr %60, align 4, !tbaa !9
  %2778 = sext i32 %2777 to i64
  %2779 = getelementptr inbounds double, ptr %2776, i64 %2778
  %2780 = load double, ptr %2779, align 8, !tbaa !11
  store double %2780, ptr %48, align 8, !tbaa !11
  %2781 = load double, ptr %48, align 8, !tbaa !11
  %2782 = fcmp ogt double %2781, 0.000000e+00
  br i1 %2782, label %2783, label %3886

2783:                                             ; preds = %2775
  store i32 0, ptr %55, align 4, !tbaa !9
  %2784 = load i32, ptr %99, align 4, !tbaa !9
  %2785 = load i32, ptr %95, align 4, !tbaa !9
  %2786 = add nsw i32 %2784, %2785
  %2787 = sub nsw i32 %2786, 1
  store i32 %2787, ptr %41, align 4, !tbaa !9
  %2788 = load i32, ptr %41, align 4, !tbaa !9
  %2789 = load ptr, ptr %21, align 8, !tbaa !5
  %2790 = load i32, ptr %2789, align 4, !tbaa !9
  %2791 = icmp sle i32 %2788, %2790
  br i1 %2791, label %2792, label %2794

2792:                                             ; preds = %2783
  %2793 = load i32, ptr %41, align 4, !tbaa !9
  br label %2797

2794:                                             ; preds = %2783
  %2795 = load ptr, ptr %21, align 8, !tbaa !5
  %2796 = load i32, ptr %2795, align 4, !tbaa !9
  br label %2797

2797:                                             ; preds = %2794, %2792
  %2798 = phi i32 [ %2793, %2792 ], [ %2796, %2794 ]
  store i32 %2798, ptr %40, align 4, !tbaa !9
  %2799 = load i32, ptr %99, align 4, !tbaa !9
  store i32 %2799, ptr %61, align 4, !tbaa !9
  br label %2800

2800:                                             ; preds = %3876, %2797
  %2801 = load i32, ptr %61, align 4, !tbaa !9
  %2802 = load i32, ptr %40, align 4, !tbaa !9
  %2803 = icmp sle i32 %2801, %2802
  br i1 %2803, label %2804, label %3879

2804:                                             ; preds = %2800
  %2805 = load ptr, ptr %24, align 8, !tbaa !5
  %2806 = load i32, ptr %61, align 4, !tbaa !9
  %2807 = sext i32 %2806 to i64
  %2808 = getelementptr inbounds double, ptr %2805, i64 %2807
  %2809 = load double, ptr %2808, align 8, !tbaa !11
  store double %2809, ptr %50, align 8, !tbaa !11
  %2810 = load double, ptr %50, align 8, !tbaa !11
  %2811 = fcmp ogt double %2810, 0.000000e+00
  br i1 %2811, label %2812, label %3843

2812:                                             ; preds = %2804
  %2813 = load double, ptr %48, align 8, !tbaa !11
  store double %2813, ptr %56, align 8, !tbaa !11
  %2814 = load double, ptr %50, align 8, !tbaa !11
  %2815 = fcmp oge double %2814, 1.000000e+00
  br i1 %2815, label %2816, label %2936

2816:                                             ; preds = %2812
  %2817 = load double, ptr %48, align 8, !tbaa !11
  %2818 = load double, ptr %50, align 8, !tbaa !11
  %2819 = fcmp oge double %2817, %2818
  br i1 %2819, label %2820, label %2827

2820:                                             ; preds = %2816
  %2821 = load double, ptr %66, align 8, !tbaa !11
  %2822 = load double, ptr %48, align 8, !tbaa !11
  %2823 = fmul double %2821, %2822
  %2824 = load double, ptr %50, align 8, !tbaa !11
  %2825 = fcmp ole double %2823, %2824
  %2826 = zext i1 %2825 to i32
  store i32 %2826, ptr %75, align 4, !tbaa !9
  br label %2834

2827:                                             ; preds = %2816
  %2828 = load double, ptr %66, align 8, !tbaa !11
  %2829 = load double, ptr %50, align 8, !tbaa !11
  %2830 = fmul double %2828, %2829
  %2831 = load double, ptr %48, align 8, !tbaa !11
  %2832 = fcmp ole double %2830, %2831
  %2833 = zext i1 %2832 to i32
  store i32 %2833, ptr %75, align 4, !tbaa !9
  br label %2834

2834:                                             ; preds = %2827, %2820
  %2835 = load double, ptr %48, align 8, !tbaa !11
  %2836 = load double, ptr %94, align 8, !tbaa !11
  %2837 = load double, ptr %50, align 8, !tbaa !11
  %2838 = fdiv double %2836, %2837
  %2839 = fcmp olt double %2835, %2838
  br i1 %2839, label %2840, label %2882

2840:                                             ; preds = %2834
  %2841 = load ptr, ptr %20, align 8, !tbaa !5
  %2842 = load ptr, ptr %22, align 8, !tbaa !5
  %2843 = load i32, ptr %60, align 4, !tbaa !9
  %2844 = load i32, ptr %33, align 4, !tbaa !9
  %2845 = mul nsw i32 %2843, %2844
  %2846 = add nsw i32 %2845, 1
  %2847 = sext i32 %2846 to i64
  %2848 = getelementptr inbounds %struct.doublecomplex, ptr %2842, i64 %2847
  %2849 = load ptr, ptr %22, align 8, !tbaa !5
  %2850 = load i32, ptr %61, align 4, !tbaa !9
  %2851 = load i32, ptr %33, align 4, !tbaa !9
  %2852 = mul nsw i32 %2850, %2851
  %2853 = add nsw i32 %2852, 1
  %2854 = sext i32 %2853 to i64
  %2855 = getelementptr inbounds %struct.doublecomplex, ptr %2849, i64 %2854
  call void @zdotc_(ptr noundef %47, ptr noundef %2841, ptr noundef %2848, ptr noundef @c__1, ptr noundef %2855, ptr noundef @c__1)
  %2856 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  %2857 = load double, ptr %2856, align 8, !tbaa !13
  %2858 = load double, ptr %50, align 8, !tbaa !11
  %2859 = fdiv double %2857, %2858
  %2860 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  store double %2859, ptr %2860, align 8, !tbaa !13
  %2861 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  %2862 = load double, ptr %2861, align 8, !tbaa !15
  %2863 = load double, ptr %50, align 8, !tbaa !11
  %2864 = fdiv double %2862, %2863
  %2865 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  store double %2864, ptr %2865, align 8, !tbaa !15
  %2866 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %2867 = load double, ptr %2866, align 8, !tbaa !13
  %2868 = load double, ptr %48, align 8, !tbaa !11
  %2869 = fdiv double %2867, %2868
  %2870 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %2869, ptr %2870, align 8, !tbaa !13
  %2871 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %2872 = load double, ptr %2871, align 8, !tbaa !15
  %2873 = load double, ptr %48, align 8, !tbaa !11
  %2874 = fdiv double %2872, %2873
  %2875 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %2874, ptr %2875, align 8, !tbaa !15
  %2876 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %2877 = load double, ptr %2876, align 8, !tbaa !13
  %2878 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  store double %2877, ptr %2878, align 8, !tbaa !13
  %2879 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %2880 = load double, ptr %2879, align 8, !tbaa !15
  %2881 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  store double %2880, ptr %2881, align 8, !tbaa !15
  br label %2935

2882:                                             ; preds = %2834
  %2883 = load ptr, ptr %20, align 8, !tbaa !5
  %2884 = load ptr, ptr %22, align 8, !tbaa !5
  %2885 = load i32, ptr %60, align 4, !tbaa !9
  %2886 = load i32, ptr %33, align 4, !tbaa !9
  %2887 = mul nsw i32 %2885, %2886
  %2888 = add nsw i32 %2887, 1
  %2889 = sext i32 %2888 to i64
  %2890 = getelementptr inbounds %struct.doublecomplex, ptr %2884, i64 %2889
  %2891 = load ptr, ptr %28, align 8, !tbaa !5
  %2892 = load ptr, ptr %21, align 8, !tbaa !5
  %2893 = load i32, ptr %2892, align 4, !tbaa !9
  %2894 = add nsw i32 %2893, 1
  %2895 = sext i32 %2894 to i64
  %2896 = getelementptr inbounds %struct.doublecomplex, ptr %2891, i64 %2895
  call void @zcopy_(ptr noundef %2883, ptr noundef %2890, ptr noundef @c__1, ptr noundef %2896, ptr noundef @c__1)
  %2897 = load ptr, ptr %20, align 8, !tbaa !5
  %2898 = load ptr, ptr %28, align 8, !tbaa !5
  %2899 = load ptr, ptr %21, align 8, !tbaa !5
  %2900 = load i32, ptr %2899, align 4, !tbaa !9
  %2901 = add nsw i32 %2900, 1
  %2902 = sext i32 %2901 to i64
  %2903 = getelementptr inbounds %struct.doublecomplex, ptr %2898, i64 %2902
  %2904 = load ptr, ptr %23, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.7, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %48, ptr noundef @c_b42, ptr noundef %2897, ptr noundef @c__1, ptr noundef %2903, ptr noundef %2904, ptr noundef %52)
  %2905 = load ptr, ptr %20, align 8, !tbaa !5
  %2906 = load ptr, ptr %28, align 8, !tbaa !5
  %2907 = load ptr, ptr %21, align 8, !tbaa !5
  %2908 = load i32, ptr %2907, align 4, !tbaa !9
  %2909 = add nsw i32 %2908, 1
  %2910 = sext i32 %2909 to i64
  %2911 = getelementptr inbounds %struct.doublecomplex, ptr %2906, i64 %2910
  %2912 = load ptr, ptr %22, align 8, !tbaa !5
  %2913 = load i32, ptr %61, align 4, !tbaa !9
  %2914 = load i32, ptr %33, align 4, !tbaa !9
  %2915 = mul nsw i32 %2913, %2914
  %2916 = add nsw i32 %2915, 1
  %2917 = sext i32 %2916 to i64
  %2918 = getelementptr inbounds %struct.doublecomplex, ptr %2912, i64 %2917
  call void @zdotc_(ptr noundef %46, ptr noundef %2905, ptr noundef %2911, ptr noundef @c__1, ptr noundef %2918, ptr noundef @c__1)
  %2919 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %2920 = load double, ptr %2919, align 8, !tbaa !13
  %2921 = load double, ptr %50, align 8, !tbaa !11
  %2922 = fdiv double %2920, %2921
  %2923 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %2922, ptr %2923, align 8, !tbaa !13
  %2924 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %2925 = load double, ptr %2924, align 8, !tbaa !15
  %2926 = load double, ptr %50, align 8, !tbaa !11
  %2927 = fdiv double %2925, %2926
  %2928 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %2927, ptr %2928, align 8, !tbaa !15
  %2929 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %2930 = load double, ptr %2929, align 8, !tbaa !13
  %2931 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  store double %2930, ptr %2931, align 8, !tbaa !13
  %2932 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %2933 = load double, ptr %2932, align 8, !tbaa !15
  %2934 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  store double %2933, ptr %2934, align 8, !tbaa !15
  br label %2935

2935:                                             ; preds = %2882, %2840
  br label %3074

2936:                                             ; preds = %2812
  %2937 = load double, ptr %48, align 8, !tbaa !11
  %2938 = load double, ptr %50, align 8, !tbaa !11
  %2939 = fcmp oge double %2937, %2938
  br i1 %2939, label %2940, label %2947

2940:                                             ; preds = %2936
  %2941 = load double, ptr %48, align 8, !tbaa !11
  %2942 = load double, ptr %50, align 8, !tbaa !11
  %2943 = load double, ptr %66, align 8, !tbaa !11
  %2944 = fdiv double %2942, %2943
  %2945 = fcmp ole double %2941, %2944
  %2946 = zext i1 %2945 to i32
  store i32 %2946, ptr %75, align 4, !tbaa !9
  br label %2954

2947:                                             ; preds = %2936
  %2948 = load double, ptr %50, align 8, !tbaa !11
  %2949 = load double, ptr %48, align 8, !tbaa !11
  %2950 = load double, ptr %66, align 8, !tbaa !11
  %2951 = fdiv double %2949, %2950
  %2952 = fcmp ole double %2948, %2951
  %2953 = zext i1 %2952 to i32
  store i32 %2953, ptr %75, align 4, !tbaa !9
  br label %2954

2954:                                             ; preds = %2947, %2940
  %2955 = load double, ptr %48, align 8, !tbaa !11
  %2956 = load double, ptr %66, align 8, !tbaa !11
  %2957 = load double, ptr %50, align 8, !tbaa !11
  %2958 = fdiv double %2956, %2957
  %2959 = fcmp ogt double %2955, %2958
  br i1 %2959, label %2960, label %3020

2960:                                             ; preds = %2954
  %2961 = load ptr, ptr %20, align 8, !tbaa !5
  %2962 = load ptr, ptr %22, align 8, !tbaa !5
  %2963 = load i32, ptr %60, align 4, !tbaa !9
  %2964 = load i32, ptr %33, align 4, !tbaa !9
  %2965 = mul nsw i32 %2963, %2964
  %2966 = add nsw i32 %2965, 1
  %2967 = sext i32 %2966 to i64
  %2968 = getelementptr inbounds %struct.doublecomplex, ptr %2962, i64 %2967
  %2969 = load ptr, ptr %22, align 8, !tbaa !5
  %2970 = load i32, ptr %61, align 4, !tbaa !9
  %2971 = load i32, ptr %33, align 4, !tbaa !9
  %2972 = mul nsw i32 %2970, %2971
  %2973 = add nsw i32 %2972, 1
  %2974 = sext i32 %2973 to i64
  %2975 = getelementptr inbounds %struct.doublecomplex, ptr %2969, i64 %2974
  call void @zdotc_(ptr noundef %47, ptr noundef %2961, ptr noundef %2968, ptr noundef @c__1, ptr noundef %2975, ptr noundef @c__1)
  %2976 = load double, ptr %50, align 8, !tbaa !11
  %2977 = load double, ptr %48, align 8, !tbaa !11
  %2978 = fcmp oge double %2976, %2977
  br i1 %2978, label %2979, label %2981

2979:                                             ; preds = %2960
  %2980 = load double, ptr %50, align 8, !tbaa !11
  br label %2983

2981:                                             ; preds = %2960
  %2982 = load double, ptr %48, align 8, !tbaa !11
  br label %2983

2983:                                             ; preds = %2981, %2979
  %2984 = phi double [ %2980, %2979 ], [ %2982, %2981 ]
  store double %2984, ptr %43, align 8, !tbaa !11
  %2985 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 0
  %2986 = load double, ptr %2985, align 8, !tbaa !13
  %2987 = load double, ptr %43, align 8, !tbaa !11
  %2988 = fdiv double %2986, %2987
  %2989 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  store double %2988, ptr %2989, align 8, !tbaa !13
  %2990 = getelementptr inbounds %struct.doublecomplex, ptr %47, i32 0, i32 1
  %2991 = load double, ptr %2990, align 8, !tbaa !15
  %2992 = load double, ptr %43, align 8, !tbaa !11
  %2993 = fdiv double %2991, %2992
  %2994 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  store double %2993, ptr %2994, align 8, !tbaa !15
  %2995 = load double, ptr %50, align 8, !tbaa !11
  %2996 = load double, ptr %48, align 8, !tbaa !11
  %2997 = fcmp ole double %2995, %2996
  br i1 %2997, label %2998, label %3000

2998:                                             ; preds = %2983
  %2999 = load double, ptr %50, align 8, !tbaa !11
  br label %3002

3000:                                             ; preds = %2983
  %3001 = load double, ptr %48, align 8, !tbaa !11
  br label %3002

3002:                                             ; preds = %3000, %2998
  %3003 = phi double [ %2999, %2998 ], [ %3001, %3000 ]
  store double %3003, ptr %44, align 8, !tbaa !11
  %3004 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %3005 = load double, ptr %3004, align 8, !tbaa !13
  %3006 = load double, ptr %44, align 8, !tbaa !11
  %3007 = fdiv double %3005, %3006
  %3008 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %3007, ptr %3008, align 8, !tbaa !13
  %3009 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %3010 = load double, ptr %3009, align 8, !tbaa !15
  %3011 = load double, ptr %44, align 8, !tbaa !11
  %3012 = fdiv double %3010, %3011
  %3013 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %3012, ptr %3013, align 8, !tbaa !15
  %3014 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %3015 = load double, ptr %3014, align 8, !tbaa !13
  %3016 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  store double %3015, ptr %3016, align 8, !tbaa !13
  %3017 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %3018 = load double, ptr %3017, align 8, !tbaa !15
  %3019 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  store double %3018, ptr %3019, align 8, !tbaa !15
  br label %3073

3020:                                             ; preds = %2954
  %3021 = load ptr, ptr %20, align 8, !tbaa !5
  %3022 = load ptr, ptr %22, align 8, !tbaa !5
  %3023 = load i32, ptr %61, align 4, !tbaa !9
  %3024 = load i32, ptr %33, align 4, !tbaa !9
  %3025 = mul nsw i32 %3023, %3024
  %3026 = add nsw i32 %3025, 1
  %3027 = sext i32 %3026 to i64
  %3028 = getelementptr inbounds %struct.doublecomplex, ptr %3022, i64 %3027
  %3029 = load ptr, ptr %28, align 8, !tbaa !5
  %3030 = load ptr, ptr %21, align 8, !tbaa !5
  %3031 = load i32, ptr %3030, align 4, !tbaa !9
  %3032 = add nsw i32 %3031, 1
  %3033 = sext i32 %3032 to i64
  %3034 = getelementptr inbounds %struct.doublecomplex, ptr %3029, i64 %3033
  call void @zcopy_(ptr noundef %3021, ptr noundef %3028, ptr noundef @c__1, ptr noundef %3034, ptr noundef @c__1)
  %3035 = load ptr, ptr %20, align 8, !tbaa !5
  %3036 = load ptr, ptr %28, align 8, !tbaa !5
  %3037 = load ptr, ptr %21, align 8, !tbaa !5
  %3038 = load i32, ptr %3037, align 4, !tbaa !9
  %3039 = add nsw i32 %3038, 1
  %3040 = sext i32 %3039 to i64
  %3041 = getelementptr inbounds %struct.doublecomplex, ptr %3036, i64 %3040
  %3042 = load ptr, ptr %23, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.7, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %50, ptr noundef @c_b42, ptr noundef %3035, ptr noundef @c__1, ptr noundef %3041, ptr noundef %3042, ptr noundef %52)
  %3043 = load ptr, ptr %20, align 8, !tbaa !5
  %3044 = load ptr, ptr %22, align 8, !tbaa !5
  %3045 = load i32, ptr %60, align 4, !tbaa !9
  %3046 = load i32, ptr %33, align 4, !tbaa !9
  %3047 = mul nsw i32 %3045, %3046
  %3048 = add nsw i32 %3047, 1
  %3049 = sext i32 %3048 to i64
  %3050 = getelementptr inbounds %struct.doublecomplex, ptr %3044, i64 %3049
  %3051 = load ptr, ptr %28, align 8, !tbaa !5
  %3052 = load ptr, ptr %21, align 8, !tbaa !5
  %3053 = load i32, ptr %3052, align 4, !tbaa !9
  %3054 = add nsw i32 %3053, 1
  %3055 = sext i32 %3054 to i64
  %3056 = getelementptr inbounds %struct.doublecomplex, ptr %3051, i64 %3055
  call void @zdotc_(ptr noundef %46, ptr noundef %3043, ptr noundef %3050, ptr noundef @c__1, ptr noundef %3056, ptr noundef @c__1)
  %3057 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %3058 = load double, ptr %3057, align 8, !tbaa !13
  %3059 = load double, ptr %48, align 8, !tbaa !11
  %3060 = fdiv double %3058, %3059
  %3061 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %3060, ptr %3061, align 8, !tbaa !13
  %3062 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %3063 = load double, ptr %3062, align 8, !tbaa !15
  %3064 = load double, ptr %48, align 8, !tbaa !11
  %3065 = fdiv double %3063, %3064
  %3066 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %3065, ptr %3066, align 8, !tbaa !15
  %3067 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %3068 = load double, ptr %3067, align 8, !tbaa !13
  %3069 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  store double %3068, ptr %3069, align 8, !tbaa !13
  %3070 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %3071 = load double, ptr %3070, align 8, !tbaa !15
  %3072 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  store double %3071, ptr %3072, align 8, !tbaa !15
  br label %3073

3073:                                             ; preds = %3020, %3002
  br label %3074

3074:                                             ; preds = %3073, %2935
  %3075 = call { double, double } @Cd(ptr noundef %49)
  %3076 = extractvalue { double, double } %3075, 0
  %3077 = extractvalue { double, double } %3075, 1
  %3078 = getelementptr inbounds { double, double }, ptr %113, i32 0, i32 0
  %3079 = getelementptr inbounds { double, double }, ptr %113, i32 0, i32 1
  store double %3076, ptr %3078, align 8
  store double %3077, ptr %3079, align 8
  %3080 = getelementptr inbounds { double, double }, ptr %113, i32 0, i32 0
  %3081 = load double, ptr %3080, align 8
  %3082 = getelementptr inbounds { double, double }, ptr %113, i32 0, i32 1
  %3083 = load double, ptr %3082, align 8
  %3084 = call double @cabs(double noundef %3081, double noundef %3083) #6
  %3085 = fneg double %3084
  store double %3085, ptr %57, align 8, !tbaa !11
  %3086 = load double, ptr %85, align 8, !tbaa !11
  store double %3086, ptr %43, align 8, !tbaa !11
  %3087 = load double, ptr %57, align 8, !tbaa !11
  %3088 = fneg double %3087
  store double %3088, ptr %44, align 8, !tbaa !11
  %3089 = load double, ptr %43, align 8, !tbaa !11
  %3090 = load double, ptr %44, align 8, !tbaa !11
  %3091 = fcmp oge double %3089, %3090
  br i1 %3091, label %3092, label %3094

3092:                                             ; preds = %3074
  %3093 = load double, ptr %43, align 8, !tbaa !11
  br label %3096

3094:                                             ; preds = %3074
  %3095 = load double, ptr %44, align 8, !tbaa !11
  br label %3096

3096:                                             ; preds = %3094, %3092
  %3097 = phi double [ %3093, %3092 ], [ %3095, %3094 ]
  store double %3097, ptr %85, align 8, !tbaa !11
  %3098 = load double, ptr %57, align 8, !tbaa !11
  %3099 = fcmp oge double %3098, 0.000000e+00
  br i1 %3099, label %3100, label %3102

3100:                                             ; preds = %3096
  %3101 = load double, ptr %57, align 8, !tbaa !11
  br label %3105

3102:                                             ; preds = %3096
  %3103 = load double, ptr %57, align 8, !tbaa !11
  %3104 = fneg double %3103
  br label %3105

3105:                                             ; preds = %3102, %3100
  %3106 = phi double [ %3101, %3100 ], [ %3104, %3102 ]
  %3107 = load double, ptr %103, align 8, !tbaa !11
  %3108 = fcmp ogt double %3106, %3107
  br i1 %3108, label %3109, label %3835

3109:                                             ; preds = %3105
  %3110 = call { double, double } @Cd(ptr noundef %49)
  %3111 = extractvalue { double, double } %3110, 0
  %3112 = extractvalue { double, double } %3110, 1
  %3113 = getelementptr inbounds { double, double }, ptr %114, i32 0, i32 0
  %3114 = getelementptr inbounds { double, double }, ptr %114, i32 0, i32 1
  store double %3111, ptr %3113, align 8
  store double %3112, ptr %3114, align 8
  %3115 = getelementptr inbounds { double, double }, ptr %114, i32 0, i32 0
  %3116 = load double, ptr %3115, align 8
  %3117 = getelementptr inbounds { double, double }, ptr %114, i32 0, i32 1
  %3118 = load double, ptr %3117, align 8
  %3119 = call double @cabs(double noundef %3116, double noundef %3118) #6
  store double %3119, ptr %43, align 8, !tbaa !11
  %3120 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  %3121 = load double, ptr %3120, align 8, !tbaa !13
  %3122 = load double, ptr %43, align 8, !tbaa !11
  %3123 = fdiv double %3121, %3122
  %3124 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %3123, ptr %3124, align 8, !tbaa !13
  %3125 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  %3126 = load double, ptr %3125, align 8, !tbaa !15
  %3127 = load double, ptr %43, align 8, !tbaa !11
  %3128 = fdiv double %3126, %3127
  %3129 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %3128, ptr %3129, align 8, !tbaa !15
  %3130 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %3131 = load double, ptr %3130, align 8, !tbaa !13
  %3132 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  store double %3131, ptr %3132, align 8, !tbaa !13
  %3133 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %3134 = load double, ptr %3133, align 8, !tbaa !15
  %3135 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  store double %3134, ptr %3135, align 8, !tbaa !15
  store i32 0, ptr %91, align 4, !tbaa !9
  store i32 0, ptr %55, align 4, !tbaa !9
  %3136 = load i32, ptr %92, align 4, !tbaa !9
  %3137 = add nsw i32 %3136, 1
  store i32 %3137, ptr %92, align 4, !tbaa !9
  %3138 = load i32, ptr %75, align 4, !tbaa !9
  %3139 = icmp ne i32 %3138, 0
  br i1 %3139, label %3140, label %3539

3140:                                             ; preds = %3109
  %3141 = load double, ptr %50, align 8, !tbaa !11
  %3142 = load double, ptr %48, align 8, !tbaa !11
  %3143 = fdiv double %3141, %3142
  store double %3143, ptr %64, align 8, !tbaa !11
  %3144 = load double, ptr %48, align 8, !tbaa !11
  %3145 = load double, ptr %50, align 8, !tbaa !11
  %3146 = fdiv double %3144, %3145
  store double %3146, ptr %63, align 8, !tbaa !11
  %3147 = load double, ptr %64, align 8, !tbaa !11
  %3148 = load double, ptr %63, align 8, !tbaa !11
  %3149 = fsub double %3147, %3148
  store double %3149, ptr %43, align 8, !tbaa !11
  %3150 = load double, ptr %43, align 8, !tbaa !11
  %3151 = fcmp oge double %3150, 0.000000e+00
  br i1 %3151, label %3152, label %3154

3152:                                             ; preds = %3140
  %3153 = load double, ptr %43, align 8, !tbaa !11
  br label %3157

3154:                                             ; preds = %3140
  %3155 = load double, ptr %43, align 8, !tbaa !11
  %3156 = fneg double %3155
  br label %3157

3157:                                             ; preds = %3154, %3152
  %3158 = phi double [ %3153, %3152 ], [ %3156, %3154 ]
  %3159 = fmul double %3158, -5.000000e-01
  %3160 = load double, ptr %57, align 8, !tbaa !11
  %3161 = fdiv double %3159, %3160
  store double %3161, ptr %65, align 8, !tbaa !11
  %3162 = load double, ptr %50, align 8, !tbaa !11
  %3163 = load double, ptr %56, align 8, !tbaa !11
  %3164 = fcmp ogt double %3162, %3163
  br i1 %3164, label %3165, label %3168

3165:                                             ; preds = %3157
  %3166 = load double, ptr %65, align 8, !tbaa !11
  %3167 = fneg double %3166
  store double %3167, ptr %65, align 8, !tbaa !11
  br label %3168

3168:                                             ; preds = %3165, %3157
  %3169 = load double, ptr %65, align 8, !tbaa !11
  %3170 = fcmp oge double %3169, 0.000000e+00
  br i1 %3170, label %3171, label %3173

3171:                                             ; preds = %3168
  %3172 = load double, ptr %65, align 8, !tbaa !11
  br label %3176

3173:                                             ; preds = %3168
  %3174 = load double, ptr %65, align 8, !tbaa !11
  %3175 = fneg double %3174
  br label %3176

3176:                                             ; preds = %3173, %3171
  %3177 = phi double [ %3172, %3171 ], [ %3175, %3173 ]
  %3178 = load double, ptr %53, align 8, !tbaa !11
  %3179 = fcmp ogt double %3177, %3178
  br i1 %3179, label %3180, label %3308

3180:                                             ; preds = %3176
  %3181 = load double, ptr %65, align 8, !tbaa !11
  %3182 = fdiv double 5.000000e-01, %3181
  store double %3182, ptr %62, align 8, !tbaa !11
  store double 1.000000e+00, ptr %80, align 8, !tbaa !11
  %3183 = call { double, double } @Cd(ptr noundef %54)
  %3184 = extractvalue { double, double } %3183, 0
  %3185 = extractvalue { double, double } %3183, 1
  %3186 = fneg double %3185
  %3187 = call ptr @_pCd(ptr noundef %46)
  %3188 = getelementptr inbounds { double, double }, ptr %3187, i32 0, i32 0
  %3189 = getelementptr inbounds { double, double }, ptr %3187, i32 0, i32 1
  store double %3184, ptr %3188, align 8
  store double %3186, ptr %3189, align 8
  %3190 = load double, ptr %62, align 8, !tbaa !11
  %3191 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %3192 = load double, ptr %3191, align 8, !tbaa !13
  %3193 = fmul double %3190, %3192
  %3194 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %3193, ptr %3194, align 8, !tbaa !13
  %3195 = load double, ptr %62, align 8, !tbaa !11
  %3196 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %3197 = load double, ptr %3196, align 8, !tbaa !15
  %3198 = fmul double %3195, %3197
  %3199 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %3198, ptr %3199, align 8, !tbaa !15
  %3200 = load ptr, ptr %20, align 8, !tbaa !5
  %3201 = load ptr, ptr %22, align 8, !tbaa !5
  %3202 = load i32, ptr %60, align 4, !tbaa !9
  %3203 = load i32, ptr %33, align 4, !tbaa !9
  %3204 = mul nsw i32 %3202, %3203
  %3205 = add nsw i32 %3204, 1
  %3206 = sext i32 %3205 to i64
  %3207 = getelementptr inbounds %struct.doublecomplex, ptr %3201, i64 %3206
  %3208 = load ptr, ptr %22, align 8, !tbaa !5
  %3209 = load i32, ptr %61, align 4, !tbaa !9
  %3210 = load i32, ptr %33, align 4, !tbaa !9
  %3211 = mul nsw i32 %3209, %3210
  %3212 = add nsw i32 %3211, 1
  %3213 = sext i32 %3212 to i64
  %3214 = getelementptr inbounds %struct.doublecomplex, ptr %3208, i64 %3213
  call void @zrot_(ptr noundef %3200, ptr noundef %3207, ptr noundef @c__1, ptr noundef %3214, ptr noundef @c__1, ptr noundef %80, ptr noundef %45)
  %3215 = load i32, ptr %71, align 4, !tbaa !9
  %3216 = icmp ne i32 %3215, 0
  br i1 %3216, label %3217, label %3249

3217:                                             ; preds = %3180
  %3218 = call { double, double } @Cd(ptr noundef %54)
  %3219 = extractvalue { double, double } %3218, 0
  %3220 = extractvalue { double, double } %3218, 1
  %3221 = fneg double %3220
  %3222 = call ptr @_pCd(ptr noundef %46)
  %3223 = getelementptr inbounds { double, double }, ptr %3222, i32 0, i32 0
  %3224 = getelementptr inbounds { double, double }, ptr %3222, i32 0, i32 1
  store double %3219, ptr %3223, align 8
  store double %3221, ptr %3224, align 8
  %3225 = load double, ptr %62, align 8, !tbaa !11
  %3226 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %3227 = load double, ptr %3226, align 8, !tbaa !13
  %3228 = fmul double %3225, %3227
  %3229 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %3228, ptr %3229, align 8, !tbaa !13
  %3230 = load double, ptr %62, align 8, !tbaa !11
  %3231 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %3232 = load double, ptr %3231, align 8, !tbaa !15
  %3233 = fmul double %3230, %3232
  %3234 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %3233, ptr %3234, align 8, !tbaa !15
  %3235 = load ptr, ptr %26, align 8, !tbaa !5
  %3236 = load i32, ptr %60, align 4, !tbaa !9
  %3237 = load i32, ptr %35, align 4, !tbaa !9
  %3238 = mul nsw i32 %3236, %3237
  %3239 = add nsw i32 %3238, 1
  %3240 = sext i32 %3239 to i64
  %3241 = getelementptr inbounds %struct.doublecomplex, ptr %3235, i64 %3240
  %3242 = load ptr, ptr %26, align 8, !tbaa !5
  %3243 = load i32, ptr %61, align 4, !tbaa !9
  %3244 = load i32, ptr %35, align 4, !tbaa !9
  %3245 = mul nsw i32 %3243, %3244
  %3246 = add nsw i32 %3245, 1
  %3247 = sext i32 %3246 to i64
  %3248 = getelementptr inbounds %struct.doublecomplex, ptr %3242, i64 %3247
  call void @zrot_(ptr noundef %104, ptr noundef %3241, ptr noundef @c__1, ptr noundef %3248, ptr noundef @c__1, ptr noundef %80, ptr noundef %45)
  br label %3249

3249:                                             ; preds = %3217, %3180
  store double 0.000000e+00, ptr %43, align 8, !tbaa !11
  %3250 = load double, ptr %62, align 8, !tbaa !11
  %3251 = load double, ptr %63, align 8, !tbaa !11
  %3252 = fmul double %3250, %3251
  %3253 = load double, ptr %57, align 8, !tbaa !11
  %3254 = call double @llvm.fmuladd.f64(double %3252, double %3253, double 1.000000e+00)
  store double %3254, ptr %44, align 8, !tbaa !11
  %3255 = load double, ptr %50, align 8, !tbaa !11
  %3256 = load double, ptr %43, align 8, !tbaa !11
  %3257 = load double, ptr %44, align 8, !tbaa !11
  %3258 = fcmp oge double %3256, %3257
  br i1 %3258, label %3259, label %3261

3259:                                             ; preds = %3249
  %3260 = load double, ptr %43, align 8, !tbaa !11
  br label %3263

3261:                                             ; preds = %3249
  %3262 = load double, ptr %44, align 8, !tbaa !11
  br label %3263

3263:                                             ; preds = %3261, %3259
  %3264 = phi double [ %3260, %3259 ], [ %3262, %3261 ]
  %3265 = call double @sqrt(double noundef %3264) #6
  %3266 = fmul double %3255, %3265
  %3267 = load ptr, ptr %24, align 8, !tbaa !5
  %3268 = load i32, ptr %61, align 4, !tbaa !9
  %3269 = sext i32 %3268 to i64
  %3270 = getelementptr inbounds double, ptr %3267, i64 %3269
  store double %3266, ptr %3270, align 8, !tbaa !11
  store double 0.000000e+00, ptr %43, align 8, !tbaa !11
  %3271 = load double, ptr %62, align 8, !tbaa !11
  %3272 = load double, ptr %64, align 8, !tbaa !11
  %3273 = fmul double %3271, %3272
  %3274 = load double, ptr %57, align 8, !tbaa !11
  %3275 = fneg double %3273
  %3276 = call double @llvm.fmuladd.f64(double %3275, double %3274, double 1.000000e+00)
  store double %3276, ptr %44, align 8, !tbaa !11
  %3277 = load double, ptr %43, align 8, !tbaa !11
  %3278 = load double, ptr %44, align 8, !tbaa !11
  %3279 = fcmp oge double %3277, %3278
  br i1 %3279, label %3280, label %3282

3280:                                             ; preds = %3263
  %3281 = load double, ptr %43, align 8, !tbaa !11
  br label %3284

3282:                                             ; preds = %3263
  %3283 = load double, ptr %44, align 8, !tbaa !11
  br label %3284

3284:                                             ; preds = %3282, %3280
  %3285 = phi double [ %3281, %3280 ], [ %3283, %3282 ]
  %3286 = call double @sqrt(double noundef %3285) #6
  %3287 = load double, ptr %48, align 8, !tbaa !11
  %3288 = fmul double %3287, %3286
  store double %3288, ptr %48, align 8, !tbaa !11
  %3289 = load double, ptr %87, align 8, !tbaa !11
  store double %3289, ptr %43, align 8, !tbaa !11
  %3290 = load double, ptr %62, align 8, !tbaa !11
  %3291 = fcmp oge double %3290, 0.000000e+00
  br i1 %3291, label %3292, label %3294

3292:                                             ; preds = %3284
  %3293 = load double, ptr %62, align 8, !tbaa !11
  br label %3297

3294:                                             ; preds = %3284
  %3295 = load double, ptr %62, align 8, !tbaa !11
  %3296 = fneg double %3295
  br label %3297

3297:                                             ; preds = %3294, %3292
  %3298 = phi double [ %3293, %3292 ], [ %3296, %3294 ]
  store double %3298, ptr %44, align 8, !tbaa !11
  %3299 = load double, ptr %43, align 8, !tbaa !11
  %3300 = load double, ptr %44, align 8, !tbaa !11
  %3301 = fcmp oge double %3299, %3300
  br i1 %3301, label %3302, label %3304

3302:                                             ; preds = %3297
  %3303 = load double, ptr %43, align 8, !tbaa !11
  br label %3306

3304:                                             ; preds = %3297
  %3305 = load double, ptr %44, align 8, !tbaa !11
  br label %3306

3306:                                             ; preds = %3304, %3302
  %3307 = phi double [ %3303, %3302 ], [ %3305, %3304 ]
  store double %3307, ptr %87, align 8, !tbaa !11
  br label %3483

3308:                                             ; preds = %3176
  %3309 = load double, ptr %57, align 8, !tbaa !11
  %3310 = fcmp oge double %3309, 0.000000e+00
  br i1 %3310, label %3311, label %3321

3311:                                             ; preds = %3308
  %3312 = load double, ptr @c_b42, align 8, !tbaa !11
  %3313 = fcmp oge double %3312, 0.000000e+00
  br i1 %3313, label %3314, label %3316

3314:                                             ; preds = %3311
  %3315 = load double, ptr @c_b42, align 8, !tbaa !11
  br label %3319

3316:                                             ; preds = %3311
  %3317 = load double, ptr @c_b42, align 8, !tbaa !11
  %3318 = fneg double %3317
  br label %3319

3319:                                             ; preds = %3316, %3314
  %3320 = phi double [ %3315, %3314 ], [ %3318, %3316 ]
  br label %3332

3321:                                             ; preds = %3308
  %3322 = load double, ptr @c_b42, align 8, !tbaa !11
  %3323 = fcmp oge double %3322, 0.000000e+00
  br i1 %3323, label %3324, label %3326

3324:                                             ; preds = %3321
  %3325 = load double, ptr @c_b42, align 8, !tbaa !11
  br label %3329

3326:                                             ; preds = %3321
  %3327 = load double, ptr @c_b42, align 8, !tbaa !11
  %3328 = fneg double %3327
  br label %3329

3329:                                             ; preds = %3326, %3324
  %3330 = phi double [ %3325, %3324 ], [ %3328, %3326 ]
  %3331 = fneg double %3330
  br label %3332

3332:                                             ; preds = %3329, %3319
  %3333 = phi double [ %3320, %3319 ], [ %3331, %3329 ]
  %3334 = fneg double %3333
  store double %3334, ptr %86, align 8, !tbaa !11
  %3335 = load double, ptr %50, align 8, !tbaa !11
  %3336 = load double, ptr %56, align 8, !tbaa !11
  %3337 = fcmp ogt double %3335, %3336
  br i1 %3337, label %3338, label %3341

3338:                                             ; preds = %3332
  %3339 = load double, ptr %86, align 8, !tbaa !11
  %3340 = fneg double %3339
  store double %3340, ptr %86, align 8, !tbaa !11
  br label %3341

3341:                                             ; preds = %3338, %3332
  %3342 = load double, ptr %65, align 8, !tbaa !11
  %3343 = load double, ptr %86, align 8, !tbaa !11
  %3344 = load double, ptr %65, align 8, !tbaa !11
  %3345 = load double, ptr %65, align 8, !tbaa !11
  %3346 = call double @llvm.fmuladd.f64(double %3344, double %3345, double 1.000000e+00)
  %3347 = call double @sqrt(double noundef %3346) #6
  %3348 = call double @llvm.fmuladd.f64(double %3343, double %3347, double %3342)
  %3349 = fdiv double 1.000000e+00, %3348
  store double %3349, ptr %62, align 8, !tbaa !11
  %3350 = load double, ptr %62, align 8, !tbaa !11
  %3351 = load double, ptr %62, align 8, !tbaa !11
  %3352 = call double @llvm.fmuladd.f64(double %3350, double %3351, double 1.000000e+00)
  %3353 = fdiv double 1.000000e+00, %3352
  %3354 = call double @sqrt(double noundef %3353) #6
  store double %3354, ptr %80, align 8, !tbaa !11
  %3355 = load double, ptr %62, align 8, !tbaa !11
  %3356 = load double, ptr %80, align 8, !tbaa !11
  %3357 = fmul double %3355, %3356
  store double %3357, ptr %81, align 8, !tbaa !11
  %3358 = load double, ptr %87, align 8, !tbaa !11
  store double %3358, ptr %43, align 8, !tbaa !11
  %3359 = load double, ptr %81, align 8, !tbaa !11
  %3360 = fcmp oge double %3359, 0.000000e+00
  br i1 %3360, label %3361, label %3363

3361:                                             ; preds = %3341
  %3362 = load double, ptr %81, align 8, !tbaa !11
  br label %3366

3363:                                             ; preds = %3341
  %3364 = load double, ptr %81, align 8, !tbaa !11
  %3365 = fneg double %3364
  br label %3366

3366:                                             ; preds = %3363, %3361
  %3367 = phi double [ %3362, %3361 ], [ %3365, %3363 ]
  store double %3367, ptr %44, align 8, !tbaa !11
  %3368 = load double, ptr %43, align 8, !tbaa !11
  %3369 = load double, ptr %44, align 8, !tbaa !11
  %3370 = fcmp oge double %3368, %3369
  br i1 %3370, label %3371, label %3373

3371:                                             ; preds = %3366
  %3372 = load double, ptr %43, align 8, !tbaa !11
  br label %3375

3373:                                             ; preds = %3366
  %3374 = load double, ptr %44, align 8, !tbaa !11
  br label %3375

3375:                                             ; preds = %3373, %3371
  %3376 = phi double [ %3372, %3371 ], [ %3374, %3373 ]
  store double %3376, ptr %87, align 8, !tbaa !11
  store double 0.000000e+00, ptr %43, align 8, !tbaa !11
  %3377 = load double, ptr %62, align 8, !tbaa !11
  %3378 = load double, ptr %63, align 8, !tbaa !11
  %3379 = fmul double %3377, %3378
  %3380 = load double, ptr %57, align 8, !tbaa !11
  %3381 = call double @llvm.fmuladd.f64(double %3379, double %3380, double 1.000000e+00)
  store double %3381, ptr %44, align 8, !tbaa !11
  %3382 = load double, ptr %50, align 8, !tbaa !11
  %3383 = load double, ptr %43, align 8, !tbaa !11
  %3384 = load double, ptr %44, align 8, !tbaa !11
  %3385 = fcmp oge double %3383, %3384
  br i1 %3385, label %3386, label %3388

3386:                                             ; preds = %3375
  %3387 = load double, ptr %43, align 8, !tbaa !11
  br label %3390

3388:                                             ; preds = %3375
  %3389 = load double, ptr %44, align 8, !tbaa !11
  br label %3390

3390:                                             ; preds = %3388, %3386
  %3391 = phi double [ %3387, %3386 ], [ %3389, %3388 ]
  %3392 = call double @sqrt(double noundef %3391) #6
  %3393 = fmul double %3382, %3392
  %3394 = load ptr, ptr %24, align 8, !tbaa !5
  %3395 = load i32, ptr %61, align 4, !tbaa !9
  %3396 = sext i32 %3395 to i64
  %3397 = getelementptr inbounds double, ptr %3394, i64 %3396
  store double %3393, ptr %3397, align 8, !tbaa !11
  store double 0.000000e+00, ptr %43, align 8, !tbaa !11
  %3398 = load double, ptr %62, align 8, !tbaa !11
  %3399 = load double, ptr %64, align 8, !tbaa !11
  %3400 = fmul double %3398, %3399
  %3401 = load double, ptr %57, align 8, !tbaa !11
  %3402 = fneg double %3400
  %3403 = call double @llvm.fmuladd.f64(double %3402, double %3401, double 1.000000e+00)
  store double %3403, ptr %44, align 8, !tbaa !11
  %3404 = load double, ptr %43, align 8, !tbaa !11
  %3405 = load double, ptr %44, align 8, !tbaa !11
  %3406 = fcmp oge double %3404, %3405
  br i1 %3406, label %3407, label %3409

3407:                                             ; preds = %3390
  %3408 = load double, ptr %43, align 8, !tbaa !11
  br label %3411

3409:                                             ; preds = %3390
  %3410 = load double, ptr %44, align 8, !tbaa !11
  br label %3411

3411:                                             ; preds = %3409, %3407
  %3412 = phi double [ %3408, %3407 ], [ %3410, %3409 ]
  %3413 = call double @sqrt(double noundef %3412) #6
  %3414 = load double, ptr %48, align 8, !tbaa !11
  %3415 = fmul double %3414, %3413
  store double %3415, ptr %48, align 8, !tbaa !11
  %3416 = call { double, double } @Cd(ptr noundef %54)
  %3417 = extractvalue { double, double } %3416, 0
  %3418 = extractvalue { double, double } %3416, 1
  %3419 = fneg double %3418
  %3420 = call ptr @_pCd(ptr noundef %46)
  %3421 = getelementptr inbounds { double, double }, ptr %3420, i32 0, i32 0
  %3422 = getelementptr inbounds { double, double }, ptr %3420, i32 0, i32 1
  store double %3417, ptr %3421, align 8
  store double %3419, ptr %3422, align 8
  %3423 = load double, ptr %81, align 8, !tbaa !11
  %3424 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %3425 = load double, ptr %3424, align 8, !tbaa !13
  %3426 = fmul double %3423, %3425
  %3427 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %3426, ptr %3427, align 8, !tbaa !13
  %3428 = load double, ptr %81, align 8, !tbaa !11
  %3429 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %3430 = load double, ptr %3429, align 8, !tbaa !15
  %3431 = fmul double %3428, %3430
  %3432 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %3431, ptr %3432, align 8, !tbaa !15
  %3433 = load ptr, ptr %20, align 8, !tbaa !5
  %3434 = load ptr, ptr %22, align 8, !tbaa !5
  %3435 = load i32, ptr %60, align 4, !tbaa !9
  %3436 = load i32, ptr %33, align 4, !tbaa !9
  %3437 = mul nsw i32 %3435, %3436
  %3438 = add nsw i32 %3437, 1
  %3439 = sext i32 %3438 to i64
  %3440 = getelementptr inbounds %struct.doublecomplex, ptr %3434, i64 %3439
  %3441 = load ptr, ptr %22, align 8, !tbaa !5
  %3442 = load i32, ptr %61, align 4, !tbaa !9
  %3443 = load i32, ptr %33, align 4, !tbaa !9
  %3444 = mul nsw i32 %3442, %3443
  %3445 = add nsw i32 %3444, 1
  %3446 = sext i32 %3445 to i64
  %3447 = getelementptr inbounds %struct.doublecomplex, ptr %3441, i64 %3446
  call void @zrot_(ptr noundef %3433, ptr noundef %3440, ptr noundef @c__1, ptr noundef %3447, ptr noundef @c__1, ptr noundef %80, ptr noundef %45)
  %3448 = load i32, ptr %71, align 4, !tbaa !9
  %3449 = icmp ne i32 %3448, 0
  br i1 %3449, label %3450, label %3482

3450:                                             ; preds = %3411
  %3451 = call { double, double } @Cd(ptr noundef %54)
  %3452 = extractvalue { double, double } %3451, 0
  %3453 = extractvalue { double, double } %3451, 1
  %3454 = fneg double %3453
  %3455 = call ptr @_pCd(ptr noundef %46)
  %3456 = getelementptr inbounds { double, double }, ptr %3455, i32 0, i32 0
  %3457 = getelementptr inbounds { double, double }, ptr %3455, i32 0, i32 1
  store double %3452, ptr %3456, align 8
  store double %3454, ptr %3457, align 8
  %3458 = load double, ptr %81, align 8, !tbaa !11
  %3459 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %3460 = load double, ptr %3459, align 8, !tbaa !13
  %3461 = fmul double %3458, %3460
  %3462 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %3461, ptr %3462, align 8, !tbaa !13
  %3463 = load double, ptr %81, align 8, !tbaa !11
  %3464 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %3465 = load double, ptr %3464, align 8, !tbaa !15
  %3466 = fmul double %3463, %3465
  %3467 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %3466, ptr %3467, align 8, !tbaa !15
  %3468 = load ptr, ptr %26, align 8, !tbaa !5
  %3469 = load i32, ptr %60, align 4, !tbaa !9
  %3470 = load i32, ptr %35, align 4, !tbaa !9
  %3471 = mul nsw i32 %3469, %3470
  %3472 = add nsw i32 %3471, 1
  %3473 = sext i32 %3472 to i64
  %3474 = getelementptr inbounds %struct.doublecomplex, ptr %3468, i64 %3473
  %3475 = load ptr, ptr %26, align 8, !tbaa !5
  %3476 = load i32, ptr %61, align 4, !tbaa !9
  %3477 = load i32, ptr %35, align 4, !tbaa !9
  %3478 = mul nsw i32 %3476, %3477
  %3479 = add nsw i32 %3478, 1
  %3480 = sext i32 %3479 to i64
  %3481 = getelementptr inbounds %struct.doublecomplex, ptr %3475, i64 %3480
  call void @zrot_(ptr noundef %104, ptr noundef %3474, ptr noundef @c__1, ptr noundef %3481, ptr noundef @c__1, ptr noundef %80, ptr noundef %45)
  br label %3482

3482:                                             ; preds = %3450, %3411
  br label %3483

3483:                                             ; preds = %3482, %3306
  %3484 = load i32, ptr %60, align 4, !tbaa !9
  store i32 %3484, ptr %41, align 4, !tbaa !9
  %3485 = load i32, ptr %61, align 4, !tbaa !9
  store i32 %3485, ptr %42, align 4, !tbaa !9
  %3486 = load ptr, ptr %28, align 8, !tbaa !5
  %3487 = load i32, ptr %42, align 4, !tbaa !9
  %3488 = sext i32 %3487 to i64
  %3489 = getelementptr inbounds %struct.doublecomplex, ptr %3486, i64 %3488
  %3490 = getelementptr inbounds %struct.doublecomplex, ptr %3489, i32 0, i32 0
  %3491 = load double, ptr %3490, align 8, !tbaa !13
  %3492 = fneg double %3491
  %3493 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  store double %3492, ptr %3493, align 8, !tbaa !13
  %3494 = load ptr, ptr %28, align 8, !tbaa !5
  %3495 = load i32, ptr %42, align 4, !tbaa !9
  %3496 = sext i32 %3495 to i64
  %3497 = getelementptr inbounds %struct.doublecomplex, ptr %3494, i64 %3496
  %3498 = getelementptr inbounds %struct.doublecomplex, ptr %3497, i32 0, i32 1
  %3499 = load double, ptr %3498, align 8, !tbaa !15
  %3500 = fneg double %3499
  %3501 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  store double %3500, ptr %3501, align 8, !tbaa !15
  %3502 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %3503 = load double, ptr %3502, align 8, !tbaa !13
  %3504 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %3505 = load double, ptr %3504, align 8, !tbaa !13
  %3506 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %3507 = load double, ptr %3506, align 8, !tbaa !15
  %3508 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %3509 = load double, ptr %3508, align 8, !tbaa !15
  %3510 = fmul double %3507, %3509
  %3511 = fneg double %3510
  %3512 = call double @llvm.fmuladd.f64(double %3503, double %3505, double %3511)
  %3513 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %3512, ptr %3513, align 8, !tbaa !13
  %3514 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %3515 = load double, ptr %3514, align 8, !tbaa !13
  %3516 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %3517 = load double, ptr %3516, align 8, !tbaa !15
  %3518 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %3519 = load double, ptr %3518, align 8, !tbaa !15
  %3520 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %3521 = load double, ptr %3520, align 8, !tbaa !13
  %3522 = fmul double %3519, %3521
  %3523 = call double @llvm.fmuladd.f64(double %3515, double %3517, double %3522)
  %3524 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %3523, ptr %3524, align 8, !tbaa !15
  %3525 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  %3526 = load double, ptr %3525, align 8, !tbaa !13
  %3527 = load ptr, ptr %28, align 8, !tbaa !5
  %3528 = load i32, ptr %41, align 4, !tbaa !9
  %3529 = sext i32 %3528 to i64
  %3530 = getelementptr inbounds %struct.doublecomplex, ptr %3527, i64 %3529
  %3531 = getelementptr inbounds %struct.doublecomplex, ptr %3530, i32 0, i32 0
  store double %3526, ptr %3531, align 8, !tbaa !13
  %3532 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  %3533 = load double, ptr %3532, align 8, !tbaa !15
  %3534 = load ptr, ptr %28, align 8, !tbaa !5
  %3535 = load i32, ptr %41, align 4, !tbaa !9
  %3536 = sext i32 %3535 to i64
  %3537 = getelementptr inbounds %struct.doublecomplex, ptr %3534, i64 %3536
  %3538 = getelementptr inbounds %struct.doublecomplex, ptr %3537, i32 0, i32 1
  store double %3533, ptr %3538, align 8, !tbaa !15
  br label %3735

3539:                                             ; preds = %3109
  %3540 = load double, ptr %48, align 8, !tbaa !11
  %3541 = load double, ptr %50, align 8, !tbaa !11
  %3542 = fcmp ogt double %3540, %3541
  br i1 %3542, label %3543, label %3635

3543:                                             ; preds = %3539
  %3544 = load ptr, ptr %20, align 8, !tbaa !5
  %3545 = load ptr, ptr %22, align 8, !tbaa !5
  %3546 = load i32, ptr %60, align 4, !tbaa !9
  %3547 = load i32, ptr %33, align 4, !tbaa !9
  %3548 = mul nsw i32 %3546, %3547
  %3549 = add nsw i32 %3548, 1
  %3550 = sext i32 %3549 to i64
  %3551 = getelementptr inbounds %struct.doublecomplex, ptr %3545, i64 %3550
  %3552 = load ptr, ptr %28, align 8, !tbaa !5
  %3553 = load ptr, ptr %21, align 8, !tbaa !5
  %3554 = load i32, ptr %3553, align 4, !tbaa !9
  %3555 = add nsw i32 %3554, 1
  %3556 = sext i32 %3555 to i64
  %3557 = getelementptr inbounds %struct.doublecomplex, ptr %3552, i64 %3556
  call void @zcopy_(ptr noundef %3544, ptr noundef %3551, ptr noundef @c__1, ptr noundef %3557, ptr noundef @c__1)
  %3558 = load ptr, ptr %20, align 8, !tbaa !5
  %3559 = load ptr, ptr %28, align 8, !tbaa !5
  %3560 = load ptr, ptr %21, align 8, !tbaa !5
  %3561 = load i32, ptr %3560, align 4, !tbaa !9
  %3562 = add nsw i32 %3561, 1
  %3563 = sext i32 %3562 to i64
  %3564 = getelementptr inbounds %struct.doublecomplex, ptr %3559, i64 %3563
  %3565 = load ptr, ptr %23, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.7, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %48, ptr noundef @c_b42, ptr noundef %3558, ptr noundef @c__1, ptr noundef %3564, ptr noundef %3565, ptr noundef %52)
  %3566 = load ptr, ptr %20, align 8, !tbaa !5
  %3567 = load ptr, ptr %22, align 8, !tbaa !5
  %3568 = load i32, ptr %61, align 4, !tbaa !9
  %3569 = load i32, ptr %33, align 4, !tbaa !9
  %3570 = mul nsw i32 %3568, %3569
  %3571 = add nsw i32 %3570, 1
  %3572 = sext i32 %3571 to i64
  %3573 = getelementptr inbounds %struct.doublecomplex, ptr %3567, i64 %3572
  %3574 = load ptr, ptr %23, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.7, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %50, ptr noundef @c_b42, ptr noundef %3566, ptr noundef @c__1, ptr noundef %3573, ptr noundef %3574, ptr noundef %52)
  %3575 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 0
  %3576 = load double, ptr %3575, align 8, !tbaa !13
  %3577 = fneg double %3576
  %3578 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %3577, ptr %3578, align 8, !tbaa !13
  %3579 = getelementptr inbounds %struct.doublecomplex, ptr %49, i32 0, i32 1
  %3580 = load double, ptr %3579, align 8, !tbaa !15
  %3581 = fneg double %3580
  %3582 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %3581, ptr %3582, align 8, !tbaa !15
  %3583 = load ptr, ptr %20, align 8, !tbaa !5
  %3584 = load ptr, ptr %28, align 8, !tbaa !5
  %3585 = load ptr, ptr %21, align 8, !tbaa !5
  %3586 = load i32, ptr %3585, align 4, !tbaa !9
  %3587 = add nsw i32 %3586, 1
  %3588 = sext i32 %3587 to i64
  %3589 = getelementptr inbounds %struct.doublecomplex, ptr %3584, i64 %3588
  %3590 = load ptr, ptr %22, align 8, !tbaa !5
  %3591 = load i32, ptr %61, align 4, !tbaa !9
  %3592 = load i32, ptr %33, align 4, !tbaa !9
  %3593 = mul nsw i32 %3591, %3592
  %3594 = add nsw i32 %3593, 1
  %3595 = sext i32 %3594 to i64
  %3596 = getelementptr inbounds %struct.doublecomplex, ptr %3590, i64 %3595
  call void @zaxpy_(ptr noundef %3583, ptr noundef %45, ptr noundef %3589, ptr noundef @c__1, ptr noundef %3596, ptr noundef @c__1)
  %3597 = load ptr, ptr %20, align 8, !tbaa !5
  %3598 = load ptr, ptr %22, align 8, !tbaa !5
  %3599 = load i32, ptr %61, align 4, !tbaa !9
  %3600 = load i32, ptr %33, align 4, !tbaa !9
  %3601 = mul nsw i32 %3599, %3600
  %3602 = add nsw i32 %3601, 1
  %3603 = sext i32 %3602 to i64
  %3604 = getelementptr inbounds %struct.doublecomplex, ptr %3598, i64 %3603
  %3605 = load ptr, ptr %23, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.7, ptr noundef @c__0, ptr noundef @c__0, ptr noundef @c_b42, ptr noundef %50, ptr noundef %3597, ptr noundef @c__1, ptr noundef %3604, ptr noundef %3605, ptr noundef %52)
  store double 0.000000e+00, ptr %43, align 8, !tbaa !11
  %3606 = load double, ptr %57, align 8, !tbaa !11
  %3607 = load double, ptr %57, align 8, !tbaa !11
  %3608 = fneg double %3606
  %3609 = call double @llvm.fmuladd.f64(double %3608, double %3607, double 1.000000e+00)
  store double %3609, ptr %44, align 8, !tbaa !11
  %3610 = load double, ptr %50, align 8, !tbaa !11
  %3611 = load double, ptr %43, align 8, !tbaa !11
  %3612 = load double, ptr %44, align 8, !tbaa !11
  %3613 = fcmp oge double %3611, %3612
  br i1 %3613, label %3614, label %3616

3614:                                             ; preds = %3543
  %3615 = load double, ptr %43, align 8, !tbaa !11
  br label %3618

3616:                                             ; preds = %3543
  %3617 = load double, ptr %44, align 8, !tbaa !11
  br label %3618

3618:                                             ; preds = %3616, %3614
  %3619 = phi double [ %3615, %3614 ], [ %3617, %3616 ]
  %3620 = call double @sqrt(double noundef %3619) #6
  %3621 = fmul double %3610, %3620
  %3622 = load ptr, ptr %24, align 8, !tbaa !5
  %3623 = load i32, ptr %61, align 4, !tbaa !9
  %3624 = sext i32 %3623 to i64
  %3625 = getelementptr inbounds double, ptr %3622, i64 %3624
  store double %3621, ptr %3625, align 8, !tbaa !11
  %3626 = load double, ptr %87, align 8, !tbaa !11
  %3627 = load double, ptr %67, align 8, !tbaa !11
  %3628 = fcmp oge double %3626, %3627
  br i1 %3628, label %3629, label %3631

3629:                                             ; preds = %3618
  %3630 = load double, ptr %87, align 8, !tbaa !11
  br label %3633

3631:                                             ; preds = %3618
  %3632 = load double, ptr %67, align 8, !tbaa !11
  br label %3633

3633:                                             ; preds = %3631, %3629
  %3634 = phi double [ %3630, %3629 ], [ %3632, %3631 ]
  store double %3634, ptr %87, align 8, !tbaa !11
  br label %3734

3635:                                             ; preds = %3539
  %3636 = load ptr, ptr %20, align 8, !tbaa !5
  %3637 = load ptr, ptr %22, align 8, !tbaa !5
  %3638 = load i32, ptr %61, align 4, !tbaa !9
  %3639 = load i32, ptr %33, align 4, !tbaa !9
  %3640 = mul nsw i32 %3638, %3639
  %3641 = add nsw i32 %3640, 1
  %3642 = sext i32 %3641 to i64
  %3643 = getelementptr inbounds %struct.doublecomplex, ptr %3637, i64 %3642
  %3644 = load ptr, ptr %28, align 8, !tbaa !5
  %3645 = load ptr, ptr %21, align 8, !tbaa !5
  %3646 = load i32, ptr %3645, align 4, !tbaa !9
  %3647 = add nsw i32 %3646, 1
  %3648 = sext i32 %3647 to i64
  %3649 = getelementptr inbounds %struct.doublecomplex, ptr %3644, i64 %3648
  call void @zcopy_(ptr noundef %3636, ptr noundef %3643, ptr noundef @c__1, ptr noundef %3649, ptr noundef @c__1)
  %3650 = load ptr, ptr %20, align 8, !tbaa !5
  %3651 = load ptr, ptr %28, align 8, !tbaa !5
  %3652 = load ptr, ptr %21, align 8, !tbaa !5
  %3653 = load i32, ptr %3652, align 4, !tbaa !9
  %3654 = add nsw i32 %3653, 1
  %3655 = sext i32 %3654 to i64
  %3656 = getelementptr inbounds %struct.doublecomplex, ptr %3651, i64 %3655
  %3657 = load ptr, ptr %23, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.7, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %50, ptr noundef @c_b42, ptr noundef %3650, ptr noundef @c__1, ptr noundef %3656, ptr noundef %3657, ptr noundef %52)
  %3658 = load ptr, ptr %20, align 8, !tbaa !5
  %3659 = load ptr, ptr %22, align 8, !tbaa !5
  %3660 = load i32, ptr %60, align 4, !tbaa !9
  %3661 = load i32, ptr %33, align 4, !tbaa !9
  %3662 = mul nsw i32 %3660, %3661
  %3663 = add nsw i32 %3662, 1
  %3664 = sext i32 %3663 to i64
  %3665 = getelementptr inbounds %struct.doublecomplex, ptr %3659, i64 %3664
  %3666 = load ptr, ptr %23, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.7, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %48, ptr noundef @c_b42, ptr noundef %3658, ptr noundef @c__1, ptr noundef %3665, ptr noundef %3666, ptr noundef %52)
  %3667 = call { double, double } @Cd(ptr noundef %49)
  %3668 = extractvalue { double, double } %3667, 0
  %3669 = extractvalue { double, double } %3667, 1
  %3670 = fneg double %3669
  %3671 = call ptr @_pCd(ptr noundef %46)
  %3672 = getelementptr inbounds { double, double }, ptr %3671, i32 0, i32 0
  %3673 = getelementptr inbounds { double, double }, ptr %3671, i32 0, i32 1
  store double %3668, ptr %3672, align 8
  store double %3670, ptr %3673, align 8
  %3674 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 0
  %3675 = load double, ptr %3674, align 8, !tbaa !13
  %3676 = fneg double %3675
  %3677 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 0
  store double %3676, ptr %3677, align 8, !tbaa !13
  %3678 = getelementptr inbounds %struct.doublecomplex, ptr %46, i32 0, i32 1
  %3679 = load double, ptr %3678, align 8, !tbaa !15
  %3680 = fneg double %3679
  %3681 = getelementptr inbounds %struct.doublecomplex, ptr %45, i32 0, i32 1
  store double %3680, ptr %3681, align 8, !tbaa !15
  %3682 = load ptr, ptr %20, align 8, !tbaa !5
  %3683 = load ptr, ptr %28, align 8, !tbaa !5
  %3684 = load ptr, ptr %21, align 8, !tbaa !5
  %3685 = load i32, ptr %3684, align 4, !tbaa !9
  %3686 = add nsw i32 %3685, 1
  %3687 = sext i32 %3686 to i64
  %3688 = getelementptr inbounds %struct.doublecomplex, ptr %3683, i64 %3687
  %3689 = load ptr, ptr %22, align 8, !tbaa !5
  %3690 = load i32, ptr %60, align 4, !tbaa !9
  %3691 = load i32, ptr %33, align 4, !tbaa !9
  %3692 = mul nsw i32 %3690, %3691
  %3693 = add nsw i32 %3692, 1
  %3694 = sext i32 %3693 to i64
  %3695 = getelementptr inbounds %struct.doublecomplex, ptr %3689, i64 %3694
  call void @zaxpy_(ptr noundef %3682, ptr noundef %45, ptr noundef %3688, ptr noundef @c__1, ptr noundef %3695, ptr noundef @c__1)
  %3696 = load ptr, ptr %20, align 8, !tbaa !5
  %3697 = load ptr, ptr %22, align 8, !tbaa !5
  %3698 = load i32, ptr %60, align 4, !tbaa !9
  %3699 = load i32, ptr %33, align 4, !tbaa !9
  %3700 = mul nsw i32 %3698, %3699
  %3701 = add nsw i32 %3700, 1
  %3702 = sext i32 %3701 to i64
  %3703 = getelementptr inbounds %struct.doublecomplex, ptr %3697, i64 %3702
  %3704 = load ptr, ptr %23, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.7, ptr noundef @c__0, ptr noundef @c__0, ptr noundef @c_b42, ptr noundef %48, ptr noundef %3696, ptr noundef @c__1, ptr noundef %3703, ptr noundef %3704, ptr noundef %52)
  store double 0.000000e+00, ptr %43, align 8, !tbaa !11
  %3705 = load double, ptr %57, align 8, !tbaa !11
  %3706 = load double, ptr %57, align 8, !tbaa !11
  %3707 = fneg double %3705
  %3708 = call double @llvm.fmuladd.f64(double %3707, double %3706, double 1.000000e+00)
  store double %3708, ptr %44, align 8, !tbaa !11
  %3709 = load double, ptr %48, align 8, !tbaa !11
  %3710 = load double, ptr %43, align 8, !tbaa !11
  %3711 = load double, ptr %44, align 8, !tbaa !11
  %3712 = fcmp oge double %3710, %3711
  br i1 %3712, label %3713, label %3715

3713:                                             ; preds = %3635
  %3714 = load double, ptr %43, align 8, !tbaa !11
  br label %3717

3715:                                             ; preds = %3635
  %3716 = load double, ptr %44, align 8, !tbaa !11
  br label %3717

3717:                                             ; preds = %3715, %3713
  %3718 = phi double [ %3714, %3713 ], [ %3716, %3715 ]
  %3719 = call double @sqrt(double noundef %3718) #6
  %3720 = fmul double %3709, %3719
  %3721 = load ptr, ptr %24, align 8, !tbaa !5
  %3722 = load i32, ptr %60, align 4, !tbaa !9
  %3723 = sext i32 %3722 to i64
  %3724 = getelementptr inbounds double, ptr %3721, i64 %3723
  store double %3720, ptr %3724, align 8, !tbaa !11
  %3725 = load double, ptr %87, align 8, !tbaa !11
  %3726 = load double, ptr %67, align 8, !tbaa !11
  %3727 = fcmp oge double %3725, %3726
  br i1 %3727, label %3728, label %3730

3728:                                             ; preds = %3717
  %3729 = load double, ptr %87, align 8, !tbaa !11
  br label %3732

3730:                                             ; preds = %3717
  %3731 = load double, ptr %67, align 8, !tbaa !11
  br label %3732

3732:                                             ; preds = %3730, %3728
  %3733 = phi double [ %3729, %3728 ], [ %3731, %3730 ]
  store double %3733, ptr %87, align 8, !tbaa !11
  br label %3734

3734:                                             ; preds = %3732, %3633
  br label %3735

3735:                                             ; preds = %3734, %3483
  %3736 = load ptr, ptr %24, align 8, !tbaa !5
  %3737 = load i32, ptr %61, align 4, !tbaa !9
  %3738 = sext i32 %3737 to i64
  %3739 = getelementptr inbounds double, ptr %3736, i64 %3738
  %3740 = load double, ptr %3739, align 8, !tbaa !11
  %3741 = load double, ptr %50, align 8, !tbaa !11
  %3742 = fdiv double %3740, %3741
  store double %3742, ptr %43, align 8, !tbaa !11
  %3743 = load double, ptr %43, align 8, !tbaa !11
  %3744 = load double, ptr %43, align 8, !tbaa !11
  %3745 = fmul double %3743, %3744
  %3746 = load double, ptr %107, align 8, !tbaa !11
  %3747 = fcmp ole double %3745, %3746
  br i1 %3747, label %3748, label %3788

3748:                                             ; preds = %3735
  %3749 = load double, ptr %50, align 8, !tbaa !11
  %3750 = load double, ptr %106, align 8, !tbaa !11
  %3751 = fcmp olt double %3749, %3750
  br i1 %3751, label %3752, label %3770

3752:                                             ; preds = %3748
  %3753 = load double, ptr %50, align 8, !tbaa !11
  %3754 = load double, ptr %78, align 8, !tbaa !11
  %3755 = fcmp ogt double %3753, %3754
  br i1 %3755, label %3756, label %3770

3756:                                             ; preds = %3752
  %3757 = load ptr, ptr %20, align 8, !tbaa !5
  %3758 = load ptr, ptr %22, align 8, !tbaa !5
  %3759 = load i32, ptr %61, align 4, !tbaa !9
  %3760 = load i32, ptr %33, align 4, !tbaa !9
  %3761 = mul nsw i32 %3759, %3760
  %3762 = add nsw i32 %3761, 1
  %3763 = sext i32 %3762 to i64
  %3764 = getelementptr inbounds %struct.doublecomplex, ptr %3758, i64 %3763
  %3765 = call double @dznrm2_(ptr noundef %3757, ptr noundef %3764, ptr noundef @c__1)
  %3766 = load ptr, ptr %24, align 8, !tbaa !5
  %3767 = load i32, ptr %61, align 4, !tbaa !9
  %3768 = sext i32 %3767 to i64
  %3769 = getelementptr inbounds double, ptr %3766, i64 %3768
  store double %3765, ptr %3769, align 8, !tbaa !11
  br label %3787

3770:                                             ; preds = %3752, %3748
  store double 0.000000e+00, ptr %62, align 8, !tbaa !11
  store double 1.000000e+00, ptr %50, align 8, !tbaa !11
  %3771 = load ptr, ptr %20, align 8, !tbaa !5
  %3772 = load ptr, ptr %22, align 8, !tbaa !5
  %3773 = load i32, ptr %61, align 4, !tbaa !9
  %3774 = load i32, ptr %33, align 4, !tbaa !9
  %3775 = mul nsw i32 %3773, %3774
  %3776 = add nsw i32 %3775, 1
  %3777 = sext i32 %3776 to i64
  %3778 = getelementptr inbounds %struct.doublecomplex, ptr %3772, i64 %3777
  call void @zlassq_(ptr noundef %3771, ptr noundef %3778, ptr noundef @c__1, ptr noundef %62, ptr noundef %50)
  %3779 = load double, ptr %62, align 8, !tbaa !11
  %3780 = load double, ptr %50, align 8, !tbaa !11
  %3781 = call double @sqrt(double noundef %3780) #6
  %3782 = fmul double %3779, %3781
  %3783 = load ptr, ptr %24, align 8, !tbaa !5
  %3784 = load i32, ptr %61, align 4, !tbaa !9
  %3785 = sext i32 %3784 to i64
  %3786 = getelementptr inbounds double, ptr %3783, i64 %3785
  store double %3782, ptr %3786, align 8, !tbaa !11
  br label %3787

3787:                                             ; preds = %3770, %3756
  br label %3788

3788:                                             ; preds = %3787, %3735
  %3789 = load double, ptr %48, align 8, !tbaa !11
  %3790 = load double, ptr %56, align 8, !tbaa !11
  %3791 = fdiv double %3789, %3790
  store double %3791, ptr %43, align 8, !tbaa !11
  %3792 = load double, ptr %43, align 8, !tbaa !11
  %3793 = load double, ptr %43, align 8, !tbaa !11
  %3794 = fmul double %3792, %3793
  %3795 = load double, ptr %107, align 8, !tbaa !11
  %3796 = fcmp ole double %3794, %3795
  br i1 %3796, label %3797, label %3834

3797:                                             ; preds = %3788
  %3798 = load double, ptr %48, align 8, !tbaa !11
  %3799 = load double, ptr %106, align 8, !tbaa !11
  %3800 = fcmp olt double %3798, %3799
  br i1 %3800, label %3801, label %3815

3801:                                             ; preds = %3797
  %3802 = load double, ptr %48, align 8, !tbaa !11
  %3803 = load double, ptr %78, align 8, !tbaa !11
  %3804 = fcmp ogt double %3802, %3803
  br i1 %3804, label %3805, label %3815

3805:                                             ; preds = %3801
  %3806 = load ptr, ptr %20, align 8, !tbaa !5
  %3807 = load ptr, ptr %22, align 8, !tbaa !5
  %3808 = load i32, ptr %60, align 4, !tbaa !9
  %3809 = load i32, ptr %33, align 4, !tbaa !9
  %3810 = mul nsw i32 %3808, %3809
  %3811 = add nsw i32 %3810, 1
  %3812 = sext i32 %3811 to i64
  %3813 = getelementptr inbounds %struct.doublecomplex, ptr %3807, i64 %3812
  %3814 = call double @dznrm2_(ptr noundef %3806, ptr noundef %3813, ptr noundef @c__1)
  store double %3814, ptr %48, align 8, !tbaa !11
  br label %3828

3815:                                             ; preds = %3801, %3797
  store double 0.000000e+00, ptr %62, align 8, !tbaa !11
  store double 1.000000e+00, ptr %48, align 8, !tbaa !11
  %3816 = load ptr, ptr %20, align 8, !tbaa !5
  %3817 = load ptr, ptr %22, align 8, !tbaa !5
  %3818 = load i32, ptr %60, align 4, !tbaa !9
  %3819 = load i32, ptr %33, align 4, !tbaa !9
  %3820 = mul nsw i32 %3818, %3819
  %3821 = add nsw i32 %3820, 1
  %3822 = sext i32 %3821 to i64
  %3823 = getelementptr inbounds %struct.doublecomplex, ptr %3817, i64 %3822
  call void @zlassq_(ptr noundef %3816, ptr noundef %3823, ptr noundef @c__1, ptr noundef %62, ptr noundef %48)
  %3824 = load double, ptr %62, align 8, !tbaa !11
  %3825 = load double, ptr %48, align 8, !tbaa !11
  %3826 = call double @sqrt(double noundef %3825) #6
  %3827 = fmul double %3824, %3826
  store double %3827, ptr %48, align 8, !tbaa !11
  br label %3828

3828:                                             ; preds = %3815, %3805
  %3829 = load double, ptr %48, align 8, !tbaa !11
  %3830 = load ptr, ptr %24, align 8, !tbaa !5
  %3831 = load i32, ptr %60, align 4, !tbaa !9
  %3832 = sext i32 %3831 to i64
  %3833 = getelementptr inbounds double, ptr %3830, i64 %3832
  store double %3829, ptr %3833, align 8, !tbaa !11
  br label %3834

3834:                                             ; preds = %3828, %3788
  br label %3842

3835:                                             ; preds = %3105
  %3836 = load i32, ptr %91, align 4, !tbaa !9
  %3837 = add nsw i32 %3836, 1
  store i32 %3837, ptr %91, align 4, !tbaa !9
  %3838 = load i32, ptr %55, align 4, !tbaa !9
  %3839 = add nsw i32 %3838, 1
  store i32 %3839, ptr %55, align 4, !tbaa !9
  %3840 = load i32, ptr %82, align 4, !tbaa !9
  %3841 = add nsw i32 %3840, 1
  store i32 %3841, ptr %82, align 4, !tbaa !9
  br label %3842

3842:                                             ; preds = %3835, %3834
  br label %3850

3843:                                             ; preds = %2804
  %3844 = load i32, ptr %91, align 4, !tbaa !9
  %3845 = add nsw i32 %3844, 1
  store i32 %3845, ptr %91, align 4, !tbaa !9
  %3846 = load i32, ptr %55, align 4, !tbaa !9
  %3847 = add nsw i32 %3846, 1
  store i32 %3847, ptr %55, align 4, !tbaa !9
  %3848 = load i32, ptr %82, align 4, !tbaa !9
  %3849 = add nsw i32 %3848, 1
  store i32 %3849, ptr %82, align 4, !tbaa !9
  br label %3850

3850:                                             ; preds = %3843, %3842
  %3851 = load i32, ptr %59, align 4, !tbaa !9
  %3852 = load i32, ptr %83, align 4, !tbaa !9
  %3853 = icmp sle i32 %3851, %3852
  br i1 %3853, label %3854, label %3864

3854:                                             ; preds = %3850
  %3855 = load i32, ptr %82, align 4, !tbaa !9
  %3856 = load i32, ptr %84, align 4, !tbaa !9
  %3857 = icmp sge i32 %3855, %3856
  br i1 %3857, label %3858, label %3864

3858:                                             ; preds = %3854
  %3859 = load double, ptr %48, align 8, !tbaa !11
  %3860 = load ptr, ptr %24, align 8, !tbaa !5
  %3861 = load i32, ptr %60, align 4, !tbaa !9
  %3862 = sext i32 %3861 to i64
  %3863 = getelementptr inbounds double, ptr %3860, i64 %3862
  store double %3859, ptr %3863, align 8, !tbaa !11
  store i32 0, ptr %91, align 4, !tbaa !9
  br label %3924

3864:                                             ; preds = %3854, %3850
  %3865 = load i32, ptr %59, align 4, !tbaa !9
  %3866 = load i32, ptr %83, align 4, !tbaa !9
  %3867 = icmp sle i32 %3865, %3866
  br i1 %3867, label %3868, label %3875

3868:                                             ; preds = %3864
  %3869 = load i32, ptr %55, align 4, !tbaa !9
  %3870 = load i32, ptr %108, align 4, !tbaa !9
  %3871 = icmp sgt i32 %3869, %3870
  br i1 %3871, label %3872, label %3875

3872:                                             ; preds = %3868
  %3873 = load double, ptr %48, align 8, !tbaa !11
  %3874 = fneg double %3873
  store double %3874, ptr %48, align 8, !tbaa !11
  store i32 0, ptr %91, align 4, !tbaa !9
  br label %3880

3875:                                             ; preds = %3868, %3864
  br label %3876

3876:                                             ; preds = %3875
  %3877 = load i32, ptr %61, align 4, !tbaa !9
  %3878 = add nsw i32 %3877, 1
  store i32 %3878, ptr %61, align 4, !tbaa !9
  br label %2800, !llvm.loop !28

3879:                                             ; preds = %2800
  br label %3880

3880:                                             ; preds = %3879, %3872
  %3881 = load double, ptr %48, align 8, !tbaa !11
  %3882 = load ptr, ptr %24, align 8, !tbaa !5
  %3883 = load i32, ptr %60, align 4, !tbaa !9
  %3884 = sext i32 %3883 to i64
  %3885 = getelementptr inbounds double, ptr %3882, i64 %3884
  store double %3881, ptr %3885, align 8, !tbaa !11
  br label %3915

3886:                                             ; preds = %2775
  %3887 = load double, ptr %48, align 8, !tbaa !11
  %3888 = fcmp oeq double %3887, 0.000000e+00
  br i1 %3888, label %3889, label %3910

3889:                                             ; preds = %3886
  %3890 = load i32, ptr %99, align 4, !tbaa !9
  %3891 = load i32, ptr %95, align 4, !tbaa !9
  %3892 = add nsw i32 %3890, %3891
  %3893 = sub nsw i32 %3892, 1
  store i32 %3893, ptr %40, align 4, !tbaa !9
  %3894 = load i32, ptr %91, align 4, !tbaa !9
  %3895 = load i32, ptr %40, align 4, !tbaa !9
  %3896 = load ptr, ptr %21, align 8, !tbaa !5
  %3897 = load i32, ptr %3896, align 4, !tbaa !9
  %3898 = icmp sle i32 %3895, %3897
  br i1 %3898, label %3899, label %3901

3899:                                             ; preds = %3889
  %3900 = load i32, ptr %40, align 4, !tbaa !9
  br label %3904

3901:                                             ; preds = %3889
  %3902 = load ptr, ptr %21, align 8, !tbaa !5
  %3903 = load i32, ptr %3902, align 4, !tbaa !9
  br label %3904

3904:                                             ; preds = %3901, %3899
  %3905 = phi i32 [ %3900, %3899 ], [ %3903, %3901 ]
  %3906 = add nsw i32 %3894, %3905
  %3907 = load i32, ptr %99, align 4, !tbaa !9
  %3908 = sub nsw i32 %3906, %3907
  %3909 = add nsw i32 %3908, 1
  store i32 %3909, ptr %91, align 4, !tbaa !9
  br label %3910

3910:                                             ; preds = %3904, %3886
  %3911 = load double, ptr %48, align 8, !tbaa !11
  %3912 = fcmp olt double %3911, 0.000000e+00
  br i1 %3912, label %3913, label %3914

3913:                                             ; preds = %3910
  store i32 0, ptr %91, align 4, !tbaa !9
  br label %3914

3914:                                             ; preds = %3913, %3910
  br label %3915

3915:                                             ; preds = %3914, %3880
  br label %3916

3916:                                             ; preds = %3915
  %3917 = load i32, ptr %60, align 4, !tbaa !9
  %3918 = add nsw i32 %3917, 1
  store i32 %3918, ptr %60, align 4, !tbaa !9
  br label %2771, !llvm.loop !29

3919:                                             ; preds = %2771
  br label %3920

3920:                                             ; preds = %3919
  %3921 = load i32, ptr %93, align 4, !tbaa !9
  %3922 = add nsw i32 %3921, 1
  store i32 %3922, ptr %93, align 4, !tbaa !9
  br label %2745, !llvm.loop !30

3923:                                             ; preds = %2745
  br label %3924

3924:                                             ; preds = %3923, %3858
  %3925 = load i32, ptr %97, align 4, !tbaa !9
  %3926 = load i32, ptr %95, align 4, !tbaa !9
  %3927 = add nsw i32 %3925, %3926
  %3928 = sub nsw i32 %3927, 1
  store i32 %3928, ptr %39, align 4, !tbaa !9
  %3929 = load i32, ptr %39, align 4, !tbaa !9
  %3930 = load ptr, ptr %21, align 8, !tbaa !5
  %3931 = load i32, ptr %3930, align 4, !tbaa !9
  %3932 = icmp sle i32 %3929, %3931
  br i1 %3932, label %3933, label %3935

3933:                                             ; preds = %3924
  %3934 = load i32, ptr %39, align 4, !tbaa !9
  br label %3938

3935:                                             ; preds = %3924
  %3936 = load ptr, ptr %21, align 8, !tbaa !5
  %3937 = load i32, ptr %3936, align 4, !tbaa !9
  br label %3938

3938:                                             ; preds = %3935, %3933
  %3939 = phi i32 [ %3934, %3933 ], [ %3937, %3935 ]
  store i32 %3939, ptr %38, align 4, !tbaa !9
  %3940 = load i32, ptr %97, align 4, !tbaa !9
  store i32 %3940, ptr %60, align 4, !tbaa !9
  br label %3941

3941:                                             ; preds = %3964, %3938
  %3942 = load i32, ptr %60, align 4, !tbaa !9
  %3943 = load i32, ptr %38, align 4, !tbaa !9
  %3944 = icmp sle i32 %3942, %3943
  br i1 %3944, label %3945, label %3967

3945:                                             ; preds = %3941
  %3946 = load ptr, ptr %24, align 8, !tbaa !5
  %3947 = load i32, ptr %60, align 4, !tbaa !9
  %3948 = sext i32 %3947 to i64
  %3949 = getelementptr inbounds double, ptr %3946, i64 %3948
  %3950 = load double, ptr %3949, align 8, !tbaa !11
  store double %3950, ptr %43, align 8, !tbaa !11
  %3951 = load double, ptr %43, align 8, !tbaa !11
  %3952 = fcmp oge double %3951, 0.000000e+00
  br i1 %3952, label %3953, label %3955

3953:                                             ; preds = %3945
  %3954 = load double, ptr %43, align 8, !tbaa !11
  br label %3958

3955:                                             ; preds = %3945
  %3956 = load double, ptr %43, align 8, !tbaa !11
  %3957 = fneg double %3956
  br label %3958

3958:                                             ; preds = %3955, %3953
  %3959 = phi double [ %3954, %3953 ], [ %3957, %3955 ]
  %3960 = load ptr, ptr %24, align 8, !tbaa !5
  %3961 = load i32, ptr %60, align 4, !tbaa !9
  %3962 = sext i32 %3961 to i64
  %3963 = getelementptr inbounds double, ptr %3960, i64 %3962
  store double %3959, ptr %3963, align 8, !tbaa !11
  br label %3964

3964:                                             ; preds = %3958
  %3965 = load i32, ptr %60, align 4, !tbaa !9
  %3966 = add nsw i32 %3965, 1
  store i32 %3966, ptr %60, align 4, !tbaa !9
  br label %3941, !llvm.loop !31

3967:                                             ; preds = %3941
  br label %3968

3968:                                             ; preds = %3967
  %3969 = load i32, ptr %98, align 4, !tbaa !9
  %3970 = add nsw i32 %3969, 1
  store i32 %3970, ptr %98, align 4, !tbaa !9
  br label %1514, !llvm.loop !32

3971:                                             ; preds = %1514
  %3972 = load ptr, ptr %24, align 8, !tbaa !5
  %3973 = load ptr, ptr %21, align 8, !tbaa !5
  %3974 = load i32, ptr %3973, align 4, !tbaa !9
  %3975 = sext i32 %3974 to i64
  %3976 = getelementptr inbounds double, ptr %3972, i64 %3975
  %3977 = load double, ptr %3976, align 8, !tbaa !11
  %3978 = load double, ptr %106, align 8, !tbaa !11
  %3979 = fcmp olt double %3977, %3978
  br i1 %3979, label %3980, label %4005

3980:                                             ; preds = %3971
  %3981 = load ptr, ptr %24, align 8, !tbaa !5
  %3982 = load ptr, ptr %21, align 8, !tbaa !5
  %3983 = load i32, ptr %3982, align 4, !tbaa !9
  %3984 = sext i32 %3983 to i64
  %3985 = getelementptr inbounds double, ptr %3981, i64 %3984
  %3986 = load double, ptr %3985, align 8, !tbaa !11
  %3987 = load double, ptr %78, align 8, !tbaa !11
  %3988 = fcmp ogt double %3986, %3987
  br i1 %3988, label %3989, label %4005

3989:                                             ; preds = %3980
  %3990 = load ptr, ptr %20, align 8, !tbaa !5
  %3991 = load ptr, ptr %22, align 8, !tbaa !5
  %3992 = load ptr, ptr %21, align 8, !tbaa !5
  %3993 = load i32, ptr %3992, align 4, !tbaa !9
  %3994 = load i32, ptr %33, align 4, !tbaa !9
  %3995 = mul nsw i32 %3993, %3994
  %3996 = add nsw i32 %3995, 1
  %3997 = sext i32 %3996 to i64
  %3998 = getelementptr inbounds %struct.doublecomplex, ptr %3991, i64 %3997
  %3999 = call double @dznrm2_(ptr noundef %3990, ptr noundef %3998, ptr noundef @c__1)
  %4000 = load ptr, ptr %24, align 8, !tbaa !5
  %4001 = load ptr, ptr %21, align 8, !tbaa !5
  %4002 = load i32, ptr %4001, align 4, !tbaa !9
  %4003 = sext i32 %4002 to i64
  %4004 = getelementptr inbounds double, ptr %4000, i64 %4003
  store double %3999, ptr %4004, align 8, !tbaa !11
  br label %4024

4005:                                             ; preds = %3980, %3971
  store double 0.000000e+00, ptr %62, align 8, !tbaa !11
  store double 1.000000e+00, ptr %48, align 8, !tbaa !11
  %4006 = load ptr, ptr %20, align 8, !tbaa !5
  %4007 = load ptr, ptr %22, align 8, !tbaa !5
  %4008 = load ptr, ptr %21, align 8, !tbaa !5
  %4009 = load i32, ptr %4008, align 4, !tbaa !9
  %4010 = load i32, ptr %33, align 4, !tbaa !9
  %4011 = mul nsw i32 %4009, %4010
  %4012 = add nsw i32 %4011, 1
  %4013 = sext i32 %4012 to i64
  %4014 = getelementptr inbounds %struct.doublecomplex, ptr %4007, i64 %4013
  call void @zlassq_(ptr noundef %4006, ptr noundef %4014, ptr noundef @c__1, ptr noundef %62, ptr noundef %48)
  %4015 = load double, ptr %62, align 8, !tbaa !11
  %4016 = load double, ptr %48, align 8, !tbaa !11
  %4017 = call double @sqrt(double noundef %4016) #6
  %4018 = fmul double %4015, %4017
  %4019 = load ptr, ptr %24, align 8, !tbaa !5
  %4020 = load ptr, ptr %21, align 8, !tbaa !5
  %4021 = load i32, ptr %4020, align 4, !tbaa !9
  %4022 = sext i32 %4021 to i64
  %4023 = getelementptr inbounds double, ptr %4019, i64 %4022
  store double %4018, ptr %4023, align 8, !tbaa !11
  br label %4024

4024:                                             ; preds = %4005, %3989
  %4025 = load i32, ptr %59, align 4, !tbaa !9
  %4026 = load i32, ptr %83, align 4, !tbaa !9
  %4027 = icmp slt i32 %4025, %4026
  br i1 %4027, label %4028, label %4039

4028:                                             ; preds = %4024
  %4029 = load double, ptr %85, align 8, !tbaa !11
  %4030 = load double, ptr %109, align 8, !tbaa !11
  %4031 = fcmp ole double %4029, %4030
  br i1 %4031, label %4037, label %4032

4032:                                             ; preds = %4028
  %4033 = load i32, ptr %92, align 4, !tbaa !9
  %4034 = load ptr, ptr %21, align 8, !tbaa !5
  %4035 = load i32, ptr %4034, align 4, !tbaa !9
  %4036 = icmp sle i32 %4033, %4035
  br i1 %4036, label %4037, label %4039

4037:                                             ; preds = %4032, %4028
  %4038 = load i32, ptr %59, align 4, !tbaa !9
  store i32 %4038, ptr %83, align 4, !tbaa !9
  br label %4039

4039:                                             ; preds = %4037, %4032, %4024
  %4040 = load i32, ptr %59, align 4, !tbaa !9
  %4041 = load i32, ptr %83, align 4, !tbaa !9
  %4042 = add nsw i32 %4041, 1
  %4043 = icmp sgt i32 %4040, %4042
  br i1 %4043, label %4044, label %4064

4044:                                             ; preds = %4039
  %4045 = load double, ptr %85, align 8, !tbaa !11
  %4046 = load ptr, ptr %21, align 8, !tbaa !5
  %4047 = load i32, ptr %4046, align 4, !tbaa !9
  %4048 = sitofp i32 %4047 to double
  %4049 = call double @sqrt(double noundef %4048) #6
  %4050 = load double, ptr %103, align 8, !tbaa !11
  %4051 = fmul double %4049, %4050
  %4052 = fcmp olt double %4045, %4051
  br i1 %4052, label %4053, label %4064

4053:                                             ; preds = %4044
  %4054 = load ptr, ptr %21, align 8, !tbaa !5
  %4055 = load i32, ptr %4054, align 4, !tbaa !9
  %4056 = sitofp i32 %4055 to double
  %4057 = load double, ptr %85, align 8, !tbaa !11
  %4058 = fmul double %4056, %4057
  %4059 = load double, ptr %87, align 8, !tbaa !11
  %4060 = fmul double %4058, %4059
  %4061 = load double, ptr %103, align 8, !tbaa !11
  %4062 = fcmp olt double %4060, %4061
  br i1 %4062, label %4063, label %4064

4063:                                             ; preds = %4053
  br label %4075

4064:                                             ; preds = %4053, %4044, %4039
  %4065 = load i32, ptr %91, align 4, !tbaa !9
  %4066 = load i32, ptr %89, align 4, !tbaa !9
  %4067 = icmp sge i32 %4065, %4066
  br i1 %4067, label %4068, label %4069

4068:                                             ; preds = %4064
  br label %4075

4069:                                             ; preds = %4064
  br label %4070

4070:                                             ; preds = %4069
  %4071 = load i32, ptr %59, align 4, !tbaa !9
  %4072 = add nsw i32 %4071, 1
  store i32 %4072, ptr %59, align 4, !tbaa !9
  br label %1509, !llvm.loop !33

4073:                                             ; preds = %1509
  %4074 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 29, ptr %4074, align 4, !tbaa !9
  br label %4077

4075:                                             ; preds = %4068, %4063
  %4076 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 0, ptr %4076, align 4, !tbaa !9
  br label %4077

4077:                                             ; preds = %4075, %4073
  store i32 0, ptr %76, align 4, !tbaa !9
  store i32 0, ptr %77, align 4, !tbaa !9
  %4078 = load ptr, ptr %21, align 8, !tbaa !5
  %4079 = load i32, ptr %4078, align 4, !tbaa !9
  %4080 = sub nsw i32 %4079, 1
  store i32 %4080, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %60, align 4, !tbaa !9
  br label %4081

4081:                                             ; preds = %4179, %4077
  %4082 = load i32, ptr %60, align 4, !tbaa !9
  %4083 = load i32, ptr %37, align 4, !tbaa !9
  %4084 = icmp sle i32 %4082, %4083
  br i1 %4084, label %4085, label %4182

4085:                                             ; preds = %4081
  %4086 = load ptr, ptr %21, align 8, !tbaa !5
  %4087 = load i32, ptr %4086, align 4, !tbaa !9
  %4088 = load i32, ptr %60, align 4, !tbaa !9
  %4089 = sub nsw i32 %4087, %4088
  %4090 = add nsw i32 %4089, 1
  store i32 %4090, ptr %38, align 4, !tbaa !9
  %4091 = load ptr, ptr %24, align 8, !tbaa !5
  %4092 = load i32, ptr %60, align 4, !tbaa !9
  %4093 = sext i32 %4092 to i64
  %4094 = getelementptr inbounds double, ptr %4091, i64 %4093
  %4095 = call i32 @idamax_(ptr noundef %38, ptr noundef %4094, ptr noundef @c__1)
  %4096 = load i32, ptr %60, align 4, !tbaa !9
  %4097 = add nsw i32 %4095, %4096
  %4098 = sub nsw i32 %4097, 1
  store i32 %4098, ptr %61, align 4, !tbaa !9
  %4099 = load i32, ptr %60, align 4, !tbaa !9
  %4100 = load i32, ptr %61, align 4, !tbaa !9
  %4101 = icmp ne i32 %4099, %4100
  br i1 %4101, label %4102, label %4155

4102:                                             ; preds = %4085
  %4103 = load ptr, ptr %24, align 8, !tbaa !5
  %4104 = load i32, ptr %60, align 4, !tbaa !9
  %4105 = sext i32 %4104 to i64
  %4106 = getelementptr inbounds double, ptr %4103, i64 %4105
  %4107 = load double, ptr %4106, align 8, !tbaa !11
  store double %4107, ptr %58, align 8, !tbaa !11
  %4108 = load ptr, ptr %24, align 8, !tbaa !5
  %4109 = load i32, ptr %61, align 4, !tbaa !9
  %4110 = sext i32 %4109 to i64
  %4111 = getelementptr inbounds double, ptr %4108, i64 %4110
  %4112 = load double, ptr %4111, align 8, !tbaa !11
  %4113 = load ptr, ptr %24, align 8, !tbaa !5
  %4114 = load i32, ptr %60, align 4, !tbaa !9
  %4115 = sext i32 %4114 to i64
  %4116 = getelementptr inbounds double, ptr %4113, i64 %4115
  store double %4112, ptr %4116, align 8, !tbaa !11
  %4117 = load double, ptr %58, align 8, !tbaa !11
  %4118 = load ptr, ptr %24, align 8, !tbaa !5
  %4119 = load i32, ptr %61, align 4, !tbaa !9
  %4120 = sext i32 %4119 to i64
  %4121 = getelementptr inbounds double, ptr %4118, i64 %4120
  store double %4117, ptr %4121, align 8, !tbaa !11
  %4122 = load ptr, ptr %20, align 8, !tbaa !5
  %4123 = load ptr, ptr %22, align 8, !tbaa !5
  %4124 = load i32, ptr %60, align 4, !tbaa !9
  %4125 = load i32, ptr %33, align 4, !tbaa !9
  %4126 = mul nsw i32 %4124, %4125
  %4127 = add nsw i32 %4126, 1
  %4128 = sext i32 %4127 to i64
  %4129 = getelementptr inbounds %struct.doublecomplex, ptr %4123, i64 %4128
  %4130 = load ptr, ptr %22, align 8, !tbaa !5
  %4131 = load i32, ptr %61, align 4, !tbaa !9
  %4132 = load i32, ptr %33, align 4, !tbaa !9
  %4133 = mul nsw i32 %4131, %4132
  %4134 = add nsw i32 %4133, 1
  %4135 = sext i32 %4134 to i64
  %4136 = getelementptr inbounds %struct.doublecomplex, ptr %4130, i64 %4135
  call void @zswap_(ptr noundef %4122, ptr noundef %4129, ptr noundef @c__1, ptr noundef %4136, ptr noundef @c__1)
  %4137 = load i32, ptr %71, align 4, !tbaa !9
  %4138 = icmp ne i32 %4137, 0
  br i1 %4138, label %4139, label %4154

4139:                                             ; preds = %4102
  %4140 = load ptr, ptr %26, align 8, !tbaa !5
  %4141 = load i32, ptr %60, align 4, !tbaa !9
  %4142 = load i32, ptr %35, align 4, !tbaa !9
  %4143 = mul nsw i32 %4141, %4142
  %4144 = add nsw i32 %4143, 1
  %4145 = sext i32 %4144 to i64
  %4146 = getelementptr inbounds %struct.doublecomplex, ptr %4140, i64 %4145
  %4147 = load ptr, ptr %26, align 8, !tbaa !5
  %4148 = load i32, ptr %61, align 4, !tbaa !9
  %4149 = load i32, ptr %35, align 4, !tbaa !9
  %4150 = mul nsw i32 %4148, %4149
  %4151 = add nsw i32 %4150, 1
  %4152 = sext i32 %4151 to i64
  %4153 = getelementptr inbounds %struct.doublecomplex, ptr %4147, i64 %4152
  call void @zswap_(ptr noundef %104, ptr noundef %4146, ptr noundef @c__1, ptr noundef %4153, ptr noundef @c__1)
  br label %4154

4154:                                             ; preds = %4139, %4102
  br label %4155

4155:                                             ; preds = %4154, %4085
  %4156 = load ptr, ptr %24, align 8, !tbaa !5
  %4157 = load i32, ptr %60, align 4, !tbaa !9
  %4158 = sext i32 %4157 to i64
  %4159 = getelementptr inbounds double, ptr %4156, i64 %4158
  %4160 = load double, ptr %4159, align 8, !tbaa !11
  %4161 = fcmp une double %4160, 0.000000e+00
  br i1 %4161, label %4162, label %4178

4162:                                             ; preds = %4155
  %4163 = load i32, ptr %77, align 4, !tbaa !9
  %4164 = add nsw i32 %4163, 1
  store i32 %4164, ptr %77, align 4, !tbaa !9
  %4165 = load ptr, ptr %24, align 8, !tbaa !5
  %4166 = load i32, ptr %60, align 4, !tbaa !9
  %4167 = sext i32 %4166 to i64
  %4168 = getelementptr inbounds double, ptr %4165, i64 %4167
  %4169 = load double, ptr %4168, align 8, !tbaa !11
  %4170 = load double, ptr %101, align 8, !tbaa !11
  %4171 = fmul double %4169, %4170
  %4172 = load double, ptr %67, align 8, !tbaa !11
  %4173 = fcmp ogt double %4171, %4172
  br i1 %4173, label %4174, label %4177

4174:                                             ; preds = %4162
  %4175 = load i32, ptr %76, align 4, !tbaa !9
  %4176 = add nsw i32 %4175, 1
  store i32 %4176, ptr %76, align 4, !tbaa !9
  br label %4177

4177:                                             ; preds = %4174, %4162
  br label %4178

4178:                                             ; preds = %4177, %4155
  br label %4179

4179:                                             ; preds = %4178
  %4180 = load i32, ptr %60, align 4, !tbaa !9
  %4181 = add nsw i32 %4180, 1
  store i32 %4181, ptr %60, align 4, !tbaa !9
  br label %4081, !llvm.loop !34

4182:                                             ; preds = %4081
  %4183 = load ptr, ptr %24, align 8, !tbaa !5
  %4184 = load ptr, ptr %21, align 8, !tbaa !5
  %4185 = load i32, ptr %4184, align 4, !tbaa !9
  %4186 = sext i32 %4185 to i64
  %4187 = getelementptr inbounds double, ptr %4183, i64 %4186
  %4188 = load double, ptr %4187, align 8, !tbaa !11
  %4189 = fcmp une double %4188, 0.000000e+00
  br i1 %4189, label %4190, label %4207

4190:                                             ; preds = %4182
  %4191 = load i32, ptr %77, align 4, !tbaa !9
  %4192 = add nsw i32 %4191, 1
  store i32 %4192, ptr %77, align 4, !tbaa !9
  %4193 = load ptr, ptr %24, align 8, !tbaa !5
  %4194 = load ptr, ptr %21, align 8, !tbaa !5
  %4195 = load i32, ptr %4194, align 4, !tbaa !9
  %4196 = sext i32 %4195 to i64
  %4197 = getelementptr inbounds double, ptr %4193, i64 %4196
  %4198 = load double, ptr %4197, align 8, !tbaa !11
  %4199 = load double, ptr %101, align 8, !tbaa !11
  %4200 = fmul double %4198, %4199
  %4201 = load double, ptr %67, align 8, !tbaa !11
  %4202 = fcmp ogt double %4200, %4201
  br i1 %4202, label %4203, label %4206

4203:                                             ; preds = %4190
  %4204 = load i32, ptr %76, align 4, !tbaa !9
  %4205 = add nsw i32 %4204, 1
  store i32 %4205, ptr %76, align 4, !tbaa !9
  br label %4206

4206:                                             ; preds = %4203, %4190
  br label %4207

4207:                                             ; preds = %4206, %4182
  %4208 = load i32, ptr %68, align 4, !tbaa !9
  %4209 = icmp ne i32 %4208, 0
  br i1 %4209, label %4213, label %4210

4210:                                             ; preds = %4207
  %4211 = load i32, ptr %72, align 4, !tbaa !9
  %4212 = icmp ne i32 %4211, 0
  br i1 %4212, label %4213, label %4237

4213:                                             ; preds = %4210, %4207
  %4214 = load i32, ptr %77, align 4, !tbaa !9
  store i32 %4214, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %60, align 4, !tbaa !9
  br label %4215

4215:                                             ; preds = %4233, %4213
  %4216 = load i32, ptr %60, align 4, !tbaa !9
  %4217 = load i32, ptr %37, align 4, !tbaa !9
  %4218 = icmp sle i32 %4216, %4217
  br i1 %4218, label %4219, label %4236

4219:                                             ; preds = %4215
  %4220 = load ptr, ptr %24, align 8, !tbaa !5
  %4221 = load i32, ptr %60, align 4, !tbaa !9
  %4222 = sext i32 %4221 to i64
  %4223 = getelementptr inbounds double, ptr %4220, i64 %4222
  %4224 = load ptr, ptr %20, align 8, !tbaa !5
  %4225 = load ptr, ptr %22, align 8, !tbaa !5
  %4226 = load i32, ptr %60, align 4, !tbaa !9
  %4227 = load i32, ptr %33, align 4, !tbaa !9
  %4228 = mul nsw i32 %4226, %4227
  %4229 = add nsw i32 %4228, 1
  %4230 = sext i32 %4229 to i64
  %4231 = getelementptr inbounds %struct.doublecomplex, ptr %4225, i64 %4230
  %4232 = load ptr, ptr %20, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.7, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %4223, ptr noundef @c_b42, ptr noundef %4224, ptr noundef @c__1, ptr noundef %4231, ptr noundef %4232, ptr noundef %52)
  br label %4233

4233:                                             ; preds = %4219
  %4234 = load i32, ptr %60, align 4, !tbaa !9
  %4235 = add nsw i32 %4234, 1
  store i32 %4235, ptr %60, align 4, !tbaa !9
  br label %4215, !llvm.loop !35

4236:                                             ; preds = %4215
  br label %4237

4237:                                             ; preds = %4236, %4210
  %4238 = load i32, ptr %71, align 4, !tbaa !9
  %4239 = icmp ne i32 %4238, 0
  br i1 %4239, label %4240, label %4268

4240:                                             ; preds = %4237
  %4241 = load ptr, ptr %21, align 8, !tbaa !5
  %4242 = load i32, ptr %4241, align 4, !tbaa !9
  store i32 %4242, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %60, align 4, !tbaa !9
  br label %4243

4243:                                             ; preds = %4264, %4240
  %4244 = load i32, ptr %60, align 4, !tbaa !9
  %4245 = load i32, ptr %37, align 4, !tbaa !9
  %4246 = icmp sle i32 %4244, %4245
  br i1 %4246, label %4247, label %4267

4247:                                             ; preds = %4243
  %4248 = load ptr, ptr %26, align 8, !tbaa !5
  %4249 = load i32, ptr %60, align 4, !tbaa !9
  %4250 = load i32, ptr %35, align 4, !tbaa !9
  %4251 = mul nsw i32 %4249, %4250
  %4252 = add nsw i32 %4251, 1
  %4253 = sext i32 %4252 to i64
  %4254 = getelementptr inbounds %struct.doublecomplex, ptr %4248, i64 %4253
  %4255 = call double @dznrm2_(ptr noundef %104, ptr noundef %4254, ptr noundef @c__1)
  %4256 = fdiv double 1.000000e+00, %4255
  store double %4256, ptr %58, align 8, !tbaa !11
  %4257 = load ptr, ptr %26, align 8, !tbaa !5
  %4258 = load i32, ptr %60, align 4, !tbaa !9
  %4259 = load i32, ptr %35, align 4, !tbaa !9
  %4260 = mul nsw i32 %4258, %4259
  %4261 = add nsw i32 %4260, 1
  %4262 = sext i32 %4261 to i64
  %4263 = getelementptr inbounds %struct.doublecomplex, ptr %4257, i64 %4262
  call void @zdscal_(ptr noundef %104, ptr noundef %58, ptr noundef %4263, ptr noundef @c__1)
  br label %4264

4264:                                             ; preds = %4247
  %4265 = load i32, ptr %60, align 4, !tbaa !9
  %4266 = add nsw i32 %4265, 1
  store i32 %4266, ptr %60, align 4, !tbaa !9
  br label %4243, !llvm.loop !36

4267:                                             ; preds = %4243
  br label %4268

4268:                                             ; preds = %4267, %4237
  %4269 = load double, ptr %101, align 8, !tbaa !11
  %4270 = fcmp ogt double %4269, 1.000000e+00
  br i1 %4270, label %4271, label %4279

4271:                                             ; preds = %4268
  %4272 = load ptr, ptr %24, align 8, !tbaa !5
  %4273 = getelementptr inbounds double, ptr %4272, i64 1
  %4274 = load double, ptr %4273, align 8, !tbaa !11
  %4275 = load double, ptr %94, align 8, !tbaa !11
  %4276 = load double, ptr %101, align 8, !tbaa !11
  %4277 = fdiv double %4275, %4276
  %4278 = fcmp olt double %4274, %4277
  br i1 %4278, label %4298, label %4279

4279:                                             ; preds = %4271, %4268
  %4280 = load double, ptr %101, align 8, !tbaa !11
  %4281 = fcmp olt double %4280, 1.000000e+00
  br i1 %4281, label %4282, label %4321

4282:                                             ; preds = %4279
  %4283 = load ptr, ptr %24, align 8, !tbaa !5
  %4284 = load i32, ptr %76, align 4, !tbaa !9
  %4285 = icmp sge i32 %4284, 1
  br i1 %4285, label %4286, label %4288

4286:                                             ; preds = %4282
  %4287 = load i32, ptr %76, align 4, !tbaa !9
  br label %4289

4288:                                             ; preds = %4282
  br label %4289

4289:                                             ; preds = %4288, %4286
  %4290 = phi i32 [ %4287, %4286 ], [ 1, %4288 ]
  %4291 = sext i32 %4290 to i64
  %4292 = getelementptr inbounds double, ptr %4283, i64 %4291
  %4293 = load double, ptr %4292, align 8, !tbaa !11
  %4294 = load double, ptr %67, align 8, !tbaa !11
  %4295 = load double, ptr %101, align 8, !tbaa !11
  %4296 = fdiv double %4294, %4295
  %4297 = fcmp ogt double %4293, %4296
  br i1 %4297, label %4298, label %4321

4298:                                             ; preds = %4289, %4271
  %4299 = load ptr, ptr %21, align 8, !tbaa !5
  %4300 = load i32, ptr %4299, align 4, !tbaa !9
  store i32 %4300, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %60, align 4, !tbaa !9
  br label %4301

4301:                                             ; preds = %4317, %4298
  %4302 = load i32, ptr %60, align 4, !tbaa !9
  %4303 = load i32, ptr %37, align 4, !tbaa !9
  %4304 = icmp sle i32 %4302, %4303
  br i1 %4304, label %4305, label %4320

4305:                                             ; preds = %4301
  %4306 = load double, ptr %101, align 8, !tbaa !11
  %4307 = load ptr, ptr %24, align 8, !tbaa !5
  %4308 = load i32, ptr %60, align 4, !tbaa !9
  %4309 = sext i32 %4308 to i64
  %4310 = getelementptr inbounds double, ptr %4307, i64 %4309
  %4311 = load double, ptr %4310, align 8, !tbaa !11
  %4312 = fmul double %4306, %4311
  %4313 = load ptr, ptr %24, align 8, !tbaa !5
  %4314 = load i32, ptr %60, align 4, !tbaa !9
  %4315 = sext i32 %4314 to i64
  %4316 = getelementptr inbounds double, ptr %4313, i64 %4315
  store double %4312, ptr %4316, align 8, !tbaa !11
  br label %4317

4317:                                             ; preds = %4305
  %4318 = load i32, ptr %60, align 4, !tbaa !9
  %4319 = add nsw i32 %4318, 1
  store i32 %4319, ptr %60, align 4, !tbaa !9
  br label %4301, !llvm.loop !37

4320:                                             ; preds = %4301
  store double 1.000000e+00, ptr %101, align 8, !tbaa !11
  br label %4321

4321:                                             ; preds = %4320, %4289, %4279
  %4322 = load double, ptr %101, align 8, !tbaa !11
  %4323 = load ptr, ptr %30, align 8, !tbaa !5
  %4324 = getelementptr inbounds double, ptr %4323, i64 1
  store double %4322, ptr %4324, align 8, !tbaa !11
  %4325 = load i32, ptr %77, align 4, !tbaa !9
  %4326 = sitofp i32 %4325 to double
  %4327 = load ptr, ptr %30, align 8, !tbaa !5
  %4328 = getelementptr inbounds double, ptr %4327, i64 2
  store double %4326, ptr %4328, align 8, !tbaa !11
  %4329 = load i32, ptr %76, align 4, !tbaa !9
  %4330 = sitofp i32 %4329 to double
  %4331 = load ptr, ptr %30, align 8, !tbaa !5
  %4332 = getelementptr inbounds double, ptr %4331, i64 3
  store double %4330, ptr %4332, align 8, !tbaa !11
  %4333 = load i32, ptr %59, align 4, !tbaa !9
  %4334 = sitofp i32 %4333 to double
  %4335 = load ptr, ptr %30, align 8, !tbaa !5
  %4336 = getelementptr inbounds double, ptr %4335, i64 4
  store double %4334, ptr %4336, align 8, !tbaa !11
  %4337 = load double, ptr %85, align 8, !tbaa !11
  %4338 = load ptr, ptr %30, align 8, !tbaa !5
  %4339 = getelementptr inbounds double, ptr %4338, i64 5
  store double %4337, ptr %4339, align 8, !tbaa !11
  %4340 = load double, ptr %87, align 8, !tbaa !11
  %4341 = load ptr, ptr %30, align 8, !tbaa !5
  %4342 = getelementptr inbounds double, ptr %4341, i64 6
  store double %4340, ptr %4342, align 8, !tbaa !11
  store i32 1, ptr %110, align 4
  br label %4343

4343:                                             ; preds = %4321, %830, %784, %653, %572, %489, %420, %367, %353, %324
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %108) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %105) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %104) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %102) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %99) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %54) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %49) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %47) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %46) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %45) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #6
  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 i32 @xerbla_(ptr noundef, ptr noundef, i32 noundef) #2

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @zdotc_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #4

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

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden { double, double } @Cd(ptr noundef) #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden ptr @_pCd(ptr noundef) #4

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #5

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

declare void @zdscal_(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 = { inlinehint nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"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}
!22 = distinct !{!22, !17}
!23 = distinct !{!23, !17}
!24 = distinct !{!24, !17}
!25 = distinct !{!25, !17}
!26 = distinct !{!26, !17}
!27 = distinct !{!27, !17}
!28 = distinct !{!28, !17}
!29 = distinct !{!29, !17}
!30 = distinct !{!30, !17}
!31 = distinct !{!31, !17}
!32 = distinct !{!32, !17}
!33 = distinct !{!33, !17}
!34 = distinct !{!34, !17}
!35 = distinct !{!35, !17}
!36 = distinct !{!36, !17}
!37 = distinct !{!37, !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 [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [9 x i8], align 1
@c_b1 = external hidden global %struct.doublecomplex, align 8
@c_b2 = external hidden global %struct.doublecomplex, align 8
@c__1 = external hidden global i32, align 4
@c__0 = external hidden global i32, align 4
@c_b42 = external hidden global double, align 8
@c__2 = external hidden global i32, align 4

; Function Attrs: nounwind uwtable
define dso_local void @zgesvj_(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 nocapture noundef readonly %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr nocapture noundef readonly %12, ptr nocapture noundef %13, ptr nocapture noundef readonly %14, ptr nocapture noundef writeonly %15) local_unnamed_addr #0 {
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca %struct.doublecomplex, align 16
  %22 = alloca %struct.doublecomplex, align 16
  %23 = alloca %struct.doublecomplex, align 16
  %24 = alloca double, align 8
  %25 = alloca %struct.doublecomplex, align 16
  %26 = alloca double, align 8
  %27 = alloca i32, align 4
  %28 = alloca %struct.doublecomplex, align 16
  %29 = alloca double, align 8
  %30 = alloca i32, align 4
  %31 = alloca double, align 8
  %32 = alloca double, align 8
  %33 = alloca double, align 8
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca double, align 8
  %37 = alloca double, align 8
  %38 = alloca double, align 8
  %39 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %22) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %23) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %25) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %27) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %28) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %30) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %34) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %35) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %39) #9
  %40 = getelementptr inbounds i8, ptr %7, i64 -8
  %41 = load i32, ptr %6, align 4, !tbaa !5
  %narrow1389 = xor i32 %41, -1
  %42 = sext i32 %narrow1389 to i64
  %43 = getelementptr inbounds %struct.doublecomplex, ptr %5, i64 %42
  %44 = load i32, ptr %10, align 4, !tbaa !5
  %narrow = xor i32 %44, -1
  %45 = sext i32 %narrow to i64
  %46 = getelementptr inbounds %struct.doublecomplex, ptr %9, i64 %45
  %47 = getelementptr inbounds i8, ptr %11, i64 -16
  %48 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #9
  %.not = icmp eq i32 %48, 0
  br i1 %.not, label %49, label %52

49:                                               ; preds = %16
  %50 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #9
  %51 = icmp ne i32 %50, 0
  br label %52

52:                                               ; preds = %49, %16
  %53 = phi i1 [ true, %16 ], [ %51, %49 ]
  %54 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.2) #9
  %55 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.3) #9
  %.not1330 = icmp eq i32 %55, 0
  br i1 %.not1330, label %56, label %59

56:                                               ; preds = %52
  %57 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.4) #9
  %58 = icmp ne i32 %57, 0
  br label %59

59:                                               ; preds = %56, %52
  %60 = phi i1 [ true, %52 ], [ %58, %56 ]
  %61 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.5) #9
  %62 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #9
  %63 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.6) #9
  %64 = load i32, ptr %12, align 4, !tbaa !5
  %65 = icmp eq i32 %64, -1
  br i1 %65, label %69, label %66

66:                                               ; preds = %59
  %67 = load i32, ptr %14, align 4, !tbaa !5
  %68 = icmp eq i32 %67, -1
  br label %69

69:                                               ; preds = %66, %59
  %70 = phi i1 [ true, %59 ], [ %68, %66 ]
  %71 = icmp ne i32 %62, 0
  %72 = icmp ne i32 %63, 0
  %or.cond = select i1 %71, i1 true, i1 %72
  br i1 %or.cond, label %75, label %73

73:                                               ; preds = %69
  %74 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.7) #9
  %.not1331 = icmp eq i32 %74, 0
  br i1 %.not1331, label %113, label %75

75:                                               ; preds = %73, %69
  %76 = icmp ne i32 %54, 0
  %or.cond3 = select i1 %53, i1 true, i1 %76
  br i1 %or.cond3, label %79, label %77

77:                                               ; preds = %75
  %78 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.8) #9
  %.not1332 = icmp eq i32 %78, 0
  br i1 %.not1332, label %113, label %79

79:                                               ; preds = %77, %75
  %80 = icmp ne i32 %61, 0
  %or.cond5 = select i1 %60, i1 true, i1 %80
  br i1 %or.cond5, label %83, label %81

81:                                               ; preds = %79
  %82 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.8) #9
  %.not1333 = icmp eq i32 %82, 0
  br i1 %.not1333, label %113, label %83

83:                                               ; preds = %81, %79
  %84 = load i32, ptr %3, align 4, !tbaa !5
  %85 = icmp slt i32 %84, 0
  br i1 %85, label %113, label %86

86:                                               ; preds = %83
  %87 = load i32, ptr %4, align 4, !tbaa !5
  %or.cond1392 = icmp ugt i32 %87, %84
  br i1 %or.cond1392, label %113, label %88

88:                                               ; preds = %86
  %89 = load i32, ptr %6, align 4, !tbaa !5
  %90 = icmp slt i32 %89, %84
  br i1 %90, label %113, label %91

91:                                               ; preds = %88
  %92 = load i32, ptr %8, align 4, !tbaa !5
  %93 = icmp slt i32 %92, 0
  br i1 %93, label %113, label %94

94:                                               ; preds = %91
  br i1 %60, label %95, label %98

95:                                               ; preds = %94
  %96 = load i32, ptr %10, align 4, !tbaa !5
  %97 = icmp slt i32 %96, %87
  br i1 %97, label %113, label %98

98:                                               ; preds = %95, %94
  br i1 %80, label %99, label %102

99:                                               ; preds = %98
  %100 = load i32, ptr %10, align 4, !tbaa !5
  %101 = icmp slt i32 %100, %92
  br i1 %101, label %113, label %102

102:                                              ; preds = %99, %98
  br i1 %76, label %103, label %106

103:                                              ; preds = %102
  %104 = load double, ptr %13, align 8, !tbaa !9
  %105 = fcmp ugt double %104, 1.000000e+00
  br i1 %105, label %106, label %113

106:                                              ; preds = %103, %102
  %107 = load i32, ptr %12, align 4, !tbaa !5
  %108 = add nuw nsw i32 %87, %84
  %109 = icmp sge i32 %107, %108
  %or.cond7 = select i1 %109, i1 true, i1 %70
  br i1 %or.cond7, label %110, label %113

110:                                              ; preds = %106
  %111 = load i32, ptr %14, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %87, i32 6)
  %112 = icmp sge i32 %111, %spec.select
  %or.cond9 = select i1 %112, i1 true, i1 %70
  br i1 %or.cond9, label %115, label %113

113:                                              ; preds = %110, %106, %103, %95, %99, %91, %88, %86, %83, %81, %77, %73
  %.sink1894 = phi i32 [ -1, %73 ], [ -2, %77 ], [ -3, %81 ], [ -4, %83 ], [ -5, %86 ], [ -7, %88 ], [ -9, %91 ], [ -11, %99 ], [ -11, %95 ], [ -12, %103 ], [ -13, %106 ], [ -15, %110 ]
  %.ph.neg = phi i32 [ 1, %73 ], [ 2, %77 ], [ 3, %81 ], [ 4, %83 ], [ 5, %86 ], [ 7, %88 ], [ 9, %91 ], [ 11, %99 ], [ 11, %95 ], [ 12, %103 ], [ 13, %106 ], [ 15, %110 ]
  store i32 %.sink1894, ptr %15, align 4, !tbaa !5
  store i32 %.ph.neg, ptr %17, align 4, !tbaa !5
  %114 = call i32 @xerbla_(ptr noundef nonnull @.str.9, ptr noundef nonnull %17, i32 noundef 6) #9
  br label %1628

115:                                              ; preds = %110
  store i32 0, ptr %15, align 4, !tbaa !5
  %116 = load i32, ptr %3, align 4, !tbaa !5
  br i1 %70, label %117, label %125

117:                                              ; preds = %115
  %118 = load i32, ptr %4, align 4, !tbaa !5
  %119 = add nsw i32 %118, %116
  %120 = sitofp i32 %119 to double
  store double %120, ptr %11, align 8, !tbaa !11
  %121 = getelementptr inbounds i8, ptr %11, i64 8
  store double 0.000000e+00, ptr %121, align 8, !tbaa !13
  %122 = icmp sgt i32 %118, 5
  %123 = uitofp nneg i32 %118 to double
  %124 = select i1 %122, double %123, double 6.000000e+00
  store double %124, ptr %13, align 8, !tbaa !9
  br label %1628

125:                                              ; preds = %115
  %126 = icmp eq i32 %116, 0
  br i1 %126, label %1628, label %127

127:                                              ; preds = %125
  %128 = load i32, ptr %4, align 4, !tbaa !5
  %129 = icmp eq i32 %128, 0
  br i1 %129, label %1628, label %130

130:                                              ; preds = %127
  br i1 %76, label %131, label %133

131:                                              ; preds = %130
  %132 = load double, ptr %13, align 8, !tbaa !9
  br label %137

133:                                              ; preds = %130
  %or.cond11 = select i1 %53, i1 true, i1 %60
  %or.cond13 = select i1 %or.cond11, i1 true, i1 %80
  %134 = sitofp i32 %116 to double
  br i1 %or.cond13, label %135, label %137

135:                                              ; preds = %133
  %136 = tail call double @sqrt(double noundef %134) #9
  br label %137

137:                                              ; preds = %133, %135, %131
  %.0 = phi double [ %132, %131 ], [ %136, %135 ], [ %134, %133 ]
  %138 = tail call double @dlamch_(ptr noundef nonnull @.str.10) #9
  store double %138, ptr %33, align 8, !tbaa !9
  %139 = tail call double @sqrt(double noundef %138) #9
  %140 = tail call double @dlamch_(ptr noundef nonnull @.str.11) #9
  store double %140, ptr %32, align 8, !tbaa !9
  %141 = tail call double @sqrt(double noundef %140) #9
  %142 = fdiv double %140, %138
  %143 = tail call double @dlamch_(ptr noundef nonnull @.str.12) #9
  %144 = fdiv double 1.000000e+00, %141
  %145 = fdiv double 1.000000e+00, %139
  %146 = fmul double %.0, %138
  store double %146, ptr %38, align 8, !tbaa !9
  %147 = tail call double @sqrt(double noundef %146) #9
  %148 = load i32, ptr %3, align 4, !tbaa !5
  %149 = sitofp i32 %148 to double
  %150 = fmul double %138, %149
  %151 = fcmp ult double %150, 1.000000e+00
  br i1 %151, label %154, label %152

152:                                              ; preds = %137
  store i32 -4, ptr %15, align 4, !tbaa !5
  store i32 4, ptr %17, align 4, !tbaa !5
  %153 = call i32 @xerbla_(ptr noundef nonnull @.str.9, ptr noundef nonnull %17, i32 noundef 6) #9
  br label %1628

154:                                              ; preds = %137
  br i1 %60, label %155, label %157

155:                                              ; preds = %154
  %156 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %156, ptr %39, align 4, !tbaa !5
  call void @zlaset_(ptr noundef nonnull @.str.5, ptr noundef nonnull %39, ptr noundef nonnull %4, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b2, ptr noundef %9, ptr noundef nonnull %10) #9
  %.pre = load i32, ptr %3, align 4, !tbaa !5
  %.pre1871 = sitofp i32 %.pre to double
  br label %160

157:                                              ; preds = %154
  %.not1335 = icmp eq i32 %61, 0
  br i1 %.not1335, label %160, label %158

158:                                              ; preds = %157
  %159 = load i32, ptr %8, align 4, !tbaa !5
  store i32 %159, ptr %39, align 4, !tbaa !5
  br label %160

160:                                              ; preds = %157, %158, %155
  %.pre-phi = phi double [ %149, %157 ], [ %149, %158 ], [ %.pre1871, %155 ]
  %161 = load i32, ptr %4, align 4, !tbaa !5
  %162 = sitofp i32 %161 to double
  %163 = fmul double %.pre-phi, %162
  %164 = call double @sqrt(double noundef %163) #9
  %165 = fdiv double 1.000000e+00, %164
  store double %165, ptr %37, align 8, !tbaa !9
  %166 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %166, ptr %17, align 4, !tbaa !5
  br i1 %72, label %167, label %212

167:                                              ; preds = %160
  store i32 1, ptr %30, align 4, !tbaa !5
  %.not13441496 = icmp slt i32 %166, 1
  br i1 %.not13441496, label %.loopexit1441.thread, label %.lr.ph1500

.lr.ph1500:                                       ; preds = %167
  %168 = add i32 %41, 1
  br label %169

169:                                              ; preds = %.lr.ph1500, %.loopexit1440
  %.011721499 = phi i32 [ 1, %.lr.ph1500 ], [ %.11173, %.loopexit1440 ]
  %.011771498 = phi i32 [ 1, %.lr.ph1500 ], [ %.11178, %.loopexit1440 ]
  %storemerge13431497 = phi i32 [ 1, %.lr.ph1500 ], [ %210, %.loopexit1440 ]
  store double 0.000000e+00, ptr %24, align 8, !tbaa !9
  store double 1.000000e+00, ptr %26, align 8, !tbaa !9
  %170 = load i32, ptr %3, align 4, !tbaa !5
  %reass.sub = sub i32 %170, %storemerge13431497
  %171 = add i32 %reass.sub, 1
  store i32 %171, ptr %18, align 4, !tbaa !5
  %172 = mul i32 %storemerge13431497, %168
  %173 = sext i32 %172 to i64
  %174 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %173
  call void @zlassq_(ptr noundef nonnull %18, ptr noundef %174, ptr noundef nonnull @c__1, ptr noundef nonnull %24, ptr noundef nonnull %26) #9
  %175 = load double, ptr %24, align 8, !tbaa !9
  %176 = fcmp ogt double %175, %143
  br i1 %176, label %177, label %179

177:                                              ; preds = %169
  store i32 -6, ptr %15, align 4, !tbaa !5
  store i32 6, ptr %18, align 4, !tbaa !5
  %178 = call i32 @xerbla_(ptr noundef nonnull @.str.9, ptr noundef nonnull %18, i32 noundef 6) #9
  br label %1628

179:                                              ; preds = %169
  %180 = load double, ptr %26, align 8, !tbaa !9
  %181 = call double @sqrt(double noundef %180) #9
  store double %181, ptr %26, align 8, !tbaa !9
  %182 = load double, ptr %24, align 8, !tbaa !9
  %183 = fdiv double %143, %181
  %184 = fcmp olt double %182, %183
  %185 = icmp ne i32 %.011721499, 0
  %or.cond15 = and i1 %185, %184
  br i1 %or.cond15, label %186, label %191

186:                                              ; preds = %179
  %187 = fmul double %181, %182
  %188 = load i32, ptr %30, align 4, !tbaa !5
  %189 = sext i32 %188 to i64
  %190 = getelementptr inbounds double, ptr %40, i64 %189
  store double %187, ptr %190, align 8, !tbaa !9
  br label %.loopexit1440

191:                                              ; preds = %179
  %192 = load double, ptr %37, align 8, !tbaa !9
  %193 = fmul double %181, %192
  %194 = fmul double %182, %193
  %195 = load i32, ptr %30, align 4, !tbaa !5
  %196 = sext i32 %195 to i64
  %197 = getelementptr inbounds double, ptr %40, i64 %196
  store double %194, ptr %197, align 8, !tbaa !9
  %.not1390 = icmp eq i32 %.011771498, 0
  br i1 %.not1390, label %.loopexit1440, label %198

198:                                              ; preds = %191
  %199 = add nsw i32 %195, -1
  store i32 %199, ptr %18, align 4, !tbaa !5
  %.not1391.not1493 = icmp sgt i32 %195, 1
  br i1 %.not1391.not1493, label %.lr.ph1495.preheader, label %.loopexit1440

.lr.ph1495.preheader:                             ; preds = %198
  %wide.trip.count1820 = zext nneg i32 %195 to i64
  %200 = add nsw i64 %wide.trip.count1820, -1
  %min.iters.check1947 = icmp ult i32 %195, 5
  br i1 %min.iters.check1947, label %.lr.ph1495.preheader2027, label %vector.ph1948

vector.ph1948:                                    ; preds = %.lr.ph1495.preheader
  %n.vec1950 = and i64 %200, -4
  %ind.end1951 = or disjoint i64 %n.vec1950, 1
  %broadcast.splatinsert1958 = insertelement <2 x double> poison, double %192, i64 0
  %broadcast.splat1959 = shufflevector <2 x double> %broadcast.splatinsert1958, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1953

vector.body1953:                                  ; preds = %vector.body1953, %vector.ph1948
  %index1954 = phi i64 [ 0, %vector.ph1948 ], [ %index.next1960, %vector.body1953 ]
  %201 = getelementptr double, ptr %7, i64 %index1954
  %202 = getelementptr inbounds i8, ptr %201, i64 16
  %wide.load1956 = load <2 x double>, ptr %201, align 8, !tbaa !9
  %wide.load1957 = load <2 x double>, ptr %202, align 8, !tbaa !9
  %203 = fmul <2 x double> %broadcast.splat1959, %wide.load1956
  %204 = fmul <2 x double> %broadcast.splat1959, %wide.load1957
  store <2 x double> %203, ptr %201, align 8, !tbaa !9
  store <2 x double> %204, ptr %202, align 8, !tbaa !9
  %index.next1960 = add nuw i64 %index1954, 4
  %205 = icmp eq i64 %index.next1960, %n.vec1950
  br i1 %205, label %middle.block1945, label %vector.body1953, !llvm.loop !14

middle.block1945:                                 ; preds = %vector.body1953
  %cmp.n1961 = icmp eq i64 %200, %n.vec1950
  br i1 %cmp.n1961, label %.loopexit1440, label %.lr.ph1495.preheader2027

.lr.ph1495.preheader2027:                         ; preds = %middle.block1945, %.lr.ph1495.preheader
  %indvars.iv1817.ph = phi i64 [ 1, %.lr.ph1495.preheader ], [ %ind.end1951, %middle.block1945 ]
  br label %.lr.ph1495

.lr.ph1495:                                       ; preds = %.lr.ph1495.preheader2027, %.lr.ph1495
  %indvars.iv1817 = phi i64 [ %indvars.iv.next1818, %.lr.ph1495 ], [ %indvars.iv1817.ph, %.lr.ph1495.preheader2027 ]
  %206 = getelementptr inbounds double, ptr %40, i64 %indvars.iv1817
  %207 = load double, ptr %206, align 8, !tbaa !9
  %208 = fmul double %192, %207
  store double %208, ptr %206, align 8, !tbaa !9
  %indvars.iv.next1818 = add nuw nsw i64 %indvars.iv1817, 1
  %exitcond1821.not = icmp eq i64 %indvars.iv.next1818, %wide.trip.count1820
  br i1 %exitcond1821.not, label %.loopexit1440, label %.lr.ph1495, !llvm.loop !18

.loopexit1440:                                    ; preds = %.lr.ph1495, %middle.block1945, %198, %186, %191
  %209 = phi i32 [ %188, %186 ], [ %195, %191 ], [ %195, %198 ], [ %195, %middle.block1945 ], [ %195, %.lr.ph1495 ]
  %.11178 = phi i32 [ %.011771498, %186 ], [ 0, %191 ], [ 0, %198 ], [ 0, %middle.block1945 ], [ 0, %.lr.ph1495 ]
  %.11173 = phi i32 [ 1, %186 ], [ 0, %191 ], [ 0, %198 ], [ 0, %middle.block1945 ], [ 0, %.lr.ph1495 ]
  %210 = add nsw i32 %209, 1
  store i32 %210, ptr %30, align 4, !tbaa !5
  %211 = load i32, ptr %17, align 4, !tbaa !5
  %.not1344.not = icmp slt i32 %209, %211
  br i1 %.not1344.not, label %169, label %.loopexit1441, !llvm.loop !19

212:                                              ; preds = %160
  %invariant.gep1485 = getelementptr i8, ptr %43, i64 16
  store i32 1, ptr %30, align 4, !tbaa !5
  %.not13401487 = icmp slt i32 %166, 1
  br i1 %71, label %213, label %253

213:                                              ; preds = %212
  br i1 %.not13401487, label %.loopexit1441.thread, label %.lr.ph1491

.lr.ph1491:                                       ; preds = %213, %.loopexit1442
  %.211741490 = phi i32 [ %.31175, %.loopexit1442 ], [ 1, %213 ]
  %.211791489 = phi i32 [ %.31180, %.loopexit1442 ], [ 1, %213 ]
  %storemerge13391488 = phi i32 [ %251, %.loopexit1442 ], [ 1, %213 ]
  store double 0.000000e+00, ptr %24, align 8, !tbaa !9
  store double 1.000000e+00, ptr %26, align 8, !tbaa !9
  %214 = mul nsw i32 %storemerge13391488, %41
  %215 = sext i32 %214 to i64
  %gep1486 = getelementptr %struct.doublecomplex, ptr %invariant.gep1485, i64 %215
  call void @zlassq_(ptr noundef nonnull %30, ptr noundef %gep1486, ptr noundef nonnull @c__1, ptr noundef nonnull %24, ptr noundef nonnull %26) #9
  %216 = load double, ptr %24, align 8, !tbaa !9
  %217 = fcmp ogt double %216, %143
  br i1 %217, label %218, label %220

218:                                              ; preds = %.lr.ph1491
  store i32 -6, ptr %15, align 4, !tbaa !5
  store i32 6, ptr %18, align 4, !tbaa !5
  %219 = call i32 @xerbla_(ptr noundef nonnull @.str.9, ptr noundef nonnull %18, i32 noundef 6) #9
  br label %1628

220:                                              ; preds = %.lr.ph1491
  %221 = load double, ptr %26, align 8, !tbaa !9
  %222 = call double @sqrt(double noundef %221) #9
  store double %222, ptr %26, align 8, !tbaa !9
  %223 = load double, ptr %24, align 8, !tbaa !9
  %224 = fdiv double %143, %222
  %225 = fcmp olt double %223, %224
  %226 = icmp ne i32 %.211741490, 0
  %or.cond17 = and i1 %226, %225
  br i1 %or.cond17, label %227, label %232

227:                                              ; preds = %220
  %228 = fmul double %222, %223
  %229 = load i32, ptr %30, align 4, !tbaa !5
  %230 = sext i32 %229 to i64
  %231 = getelementptr inbounds double, ptr %40, i64 %230
  store double %228, ptr %231, align 8, !tbaa !9
  br label %.loopexit1442

232:                                              ; preds = %220
  %233 = load double, ptr %37, align 8, !tbaa !9
  %234 = fmul double %222, %233
  %235 = fmul double %223, %234
  %236 = load i32, ptr %30, align 4, !tbaa !5
  %237 = sext i32 %236 to i64
  %238 = getelementptr inbounds double, ptr %40, i64 %237
  store double %235, ptr %238, align 8, !tbaa !9
  %.not1341 = icmp eq i32 %.211791489, 0
  br i1 %.not1341, label %.loopexit1442, label %239

239:                                              ; preds = %232
  %240 = add nsw i32 %236, -1
  store i32 %240, ptr %18, align 4, !tbaa !5
  %.not1342.not1482 = icmp sgt i32 %236, 1
  br i1 %.not1342.not1482, label %.lr.ph1484.preheader, label %.loopexit1442

.lr.ph1484.preheader:                             ; preds = %239
  %wide.trip.count1815 = zext nneg i32 %236 to i64
  %241 = add nsw i64 %wide.trip.count1815, -1
  %min.iters.check1930 = icmp ult i32 %236, 5
  br i1 %min.iters.check1930, label %.lr.ph1484.preheader2028, label %vector.ph1931

vector.ph1931:                                    ; preds = %.lr.ph1484.preheader
  %n.vec1933 = and i64 %241, -4
  %ind.end1934 = or disjoint i64 %n.vec1933, 1
  %broadcast.splatinsert1941 = insertelement <2 x double> poison, double %233, i64 0
  %broadcast.splat1942 = shufflevector <2 x double> %broadcast.splatinsert1941, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1936

vector.body1936:                                  ; preds = %vector.body1936, %vector.ph1931
  %index1937 = phi i64 [ 0, %vector.ph1931 ], [ %index.next1943, %vector.body1936 ]
  %242 = getelementptr double, ptr %7, i64 %index1937
  %243 = getelementptr inbounds i8, ptr %242, i64 16
  %wide.load1939 = load <2 x double>, ptr %242, align 8, !tbaa !9
  %wide.load1940 = load <2 x double>, ptr %243, align 8, !tbaa !9
  %244 = fmul <2 x double> %broadcast.splat1942, %wide.load1939
  %245 = fmul <2 x double> %broadcast.splat1942, %wide.load1940
  store <2 x double> %244, ptr %242, align 8, !tbaa !9
  store <2 x double> %245, ptr %243, align 8, !tbaa !9
  %index.next1943 = add nuw i64 %index1937, 4
  %246 = icmp eq i64 %index.next1943, %n.vec1933
  br i1 %246, label %middle.block1928, label %vector.body1936, !llvm.loop !20

middle.block1928:                                 ; preds = %vector.body1936
  %cmp.n1944 = icmp eq i64 %241, %n.vec1933
  br i1 %cmp.n1944, label %.loopexit1442, label %.lr.ph1484.preheader2028

.lr.ph1484.preheader2028:                         ; preds = %middle.block1928, %.lr.ph1484.preheader
  %indvars.iv1812.ph = phi i64 [ 1, %.lr.ph1484.preheader ], [ %ind.end1934, %middle.block1928 ]
  br label %.lr.ph1484

.lr.ph1484:                                       ; preds = %.lr.ph1484.preheader2028, %.lr.ph1484
  %indvars.iv1812 = phi i64 [ %indvars.iv.next1813, %.lr.ph1484 ], [ %indvars.iv1812.ph, %.lr.ph1484.preheader2028 ]
  %247 = getelementptr inbounds double, ptr %40, i64 %indvars.iv1812
  %248 = load double, ptr %247, align 8, !tbaa !9
  %249 = fmul double %233, %248
  store double %249, ptr %247, align 8, !tbaa !9
  %indvars.iv.next1813 = add nuw nsw i64 %indvars.iv1812, 1
  %exitcond1816.not = icmp eq i64 %indvars.iv.next1813, %wide.trip.count1815
  br i1 %exitcond1816.not, label %.loopexit1442, label %.lr.ph1484, !llvm.loop !21

.loopexit1442:                                    ; preds = %.lr.ph1484, %middle.block1928, %239, %227, %232
  %250 = phi i32 [ %229, %227 ], [ %236, %232 ], [ %236, %239 ], [ %236, %middle.block1928 ], [ %236, %.lr.ph1484 ]
  %.31180 = phi i32 [ %.211791489, %227 ], [ 0, %232 ], [ 0, %239 ], [ 0, %middle.block1928 ], [ 0, %.lr.ph1484 ]
  %.31175 = phi i32 [ 1, %227 ], [ 0, %232 ], [ 0, %239 ], [ 0, %middle.block1928 ], [ 0, %.lr.ph1484 ]
  %251 = add nsw i32 %250, 1
  store i32 %251, ptr %30, align 4, !tbaa !5
  %252 = load i32, ptr %17, align 4, !tbaa !5
  %.not1340.not = icmp slt i32 %250, %252
  br i1 %.not1340.not, label %.lr.ph1491, label %.loopexit1441, !llvm.loop !22

253:                                              ; preds = %212
  br i1 %.not13401487, label %.loopexit1441.thread, label %.lr.ph1481

.lr.ph1481:                                       ; preds = %253, %.loopexit1444
  %.411761480 = phi i32 [ %.5, %.loopexit1444 ], [ 1, %253 ]
  %.411811479 = phi i32 [ %.51182, %.loopexit1444 ], [ 1, %253 ]
  %storemerge1478 = phi i32 [ %291, %.loopexit1444 ], [ 1, %253 ]
  store double 0.000000e+00, ptr %24, align 8, !tbaa !9
  store double 1.000000e+00, ptr %26, align 8, !tbaa !9
  %254 = mul nsw i32 %storemerge1478, %41
  %255 = sext i32 %254 to i64
  %gep = getelementptr %struct.doublecomplex, ptr %invariant.gep1485, i64 %255
  call void @zlassq_(ptr noundef nonnull %3, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef nonnull %24, ptr noundef nonnull %26) #9
  %256 = load double, ptr %24, align 8, !tbaa !9
  %257 = fcmp ogt double %256, %143
  br i1 %257, label %258, label %260

258:                                              ; preds = %.lr.ph1481
  store i32 -6, ptr %15, align 4, !tbaa !5
  store i32 6, ptr %18, align 4, !tbaa !5
  %259 = call i32 @xerbla_(ptr noundef nonnull @.str.9, ptr noundef nonnull %18, i32 noundef 6) #9
  br label %1628

260:                                              ; preds = %.lr.ph1481
  %261 = load double, ptr %26, align 8, !tbaa !9
  %262 = call double @sqrt(double noundef %261) #9
  store double %262, ptr %26, align 8, !tbaa !9
  %263 = load double, ptr %24, align 8, !tbaa !9
  %264 = fdiv double %143, %262
  %265 = fcmp olt double %263, %264
  %266 = icmp ne i32 %.411761480, 0
  %or.cond19 = and i1 %266, %265
  br i1 %or.cond19, label %267, label %272

267:                                              ; preds = %260
  %268 = fmul double %262, %263
  %269 = load i32, ptr %30, align 4, !tbaa !5
  %270 = sext i32 %269 to i64
  %271 = getelementptr inbounds double, ptr %40, i64 %270
  store double %268, ptr %271, align 8, !tbaa !9
  br label %.loopexit1444

272:                                              ; preds = %260
  %273 = load double, ptr %37, align 8, !tbaa !9
  %274 = fmul double %262, %273
  %275 = fmul double %263, %274
  %276 = load i32, ptr %30, align 4, !tbaa !5
  %277 = sext i32 %276 to i64
  %278 = getelementptr inbounds double, ptr %40, i64 %277
  store double %275, ptr %278, align 8, !tbaa !9
  %.not1337 = icmp eq i32 %.411811479, 0
  br i1 %.not1337, label %.loopexit1444, label %279

279:                                              ; preds = %272
  %280 = add nsw i32 %276, -1
  store i32 %280, ptr %18, align 4, !tbaa !5
  %.not1338.not1475 = icmp sgt i32 %276, 1
  br i1 %.not1338.not1475, label %.lr.ph.preheader, label %.loopexit1444

.lr.ph.preheader:                                 ; preds = %279
  %wide.trip.count = zext nneg i32 %276 to i64
  %281 = add nsw i64 %wide.trip.count, -1
  %min.iters.check = icmp ult i32 %276, 5
  br i1 %min.iters.check, label %.lr.ph.preheader2030, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph.preheader
  %n.vec = and i64 %281, -4
  %ind.end = or disjoint i64 %n.vec, 1
  %broadcast.splatinsert = insertelement <2 x double> poison, double %273, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %282 = getelementptr double, ptr %7, i64 %index
  %283 = getelementptr inbounds i8, ptr %282, i64 16
  %wide.load = load <2 x double>, ptr %282, align 8, !tbaa !9
  %wide.load1927 = load <2 x double>, ptr %283, align 8, !tbaa !9
  %284 = fmul <2 x double> %broadcast.splat, %wide.load
  %285 = fmul <2 x double> %broadcast.splat, %wide.load1927
  store <2 x double> %284, ptr %282, align 8, !tbaa !9
  store <2 x double> %285, ptr %283, align 8, !tbaa !9
  %index.next = add nuw i64 %index, 4
  %286 = icmp eq i64 %index.next, %n.vec
  br i1 %286, label %middle.block, label %vector.body, !llvm.loop !23

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %281, %n.vec
  br i1 %cmp.n, label %.loopexit1444, label %.lr.ph.preheader2030

.lr.ph.preheader2030:                             ; preds = %middle.block, %.lr.ph.preheader
  %indvars.iv.ph = phi i64 [ 1, %.lr.ph.preheader ], [ %ind.end, %middle.block ]
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader2030, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ %indvars.iv.ph, %.lr.ph.preheader2030 ]
  %287 = getelementptr inbounds double, ptr %40, i64 %indvars.iv
  %288 = load double, ptr %287, align 8, !tbaa !9
  %289 = fmul double %273, %288
  store double %289, ptr %287, align 8, !tbaa !9
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %.loopexit1444, label %.lr.ph, !llvm.loop !24

.loopexit1444:                                    ; preds = %.lr.ph, %middle.block, %279, %267, %272
  %290 = phi i32 [ %269, %267 ], [ %276, %272 ], [ %276, %279 ], [ %276, %middle.block ], [ %276, %.lr.ph ]
  %.51182 = phi i32 [ %.411811479, %267 ], [ 0, %272 ], [ 0, %279 ], [ 0, %middle.block ], [ 0, %.lr.ph ]
  %.5 = phi i32 [ 1, %267 ], [ 0, %272 ], [ 0, %279 ], [ 0, %middle.block ], [ 0, %.lr.ph ]
  %291 = add nsw i32 %290, 1
  store i32 %291, ptr %30, align 4, !tbaa !5
  %292 = load i32, ptr %17, align 4, !tbaa !5
  %.not1336.not = icmp slt i32 %290, %292
  br i1 %.not1336.not, label %.lr.ph1481, label %.loopexit1441, !llvm.loop !25

.loopexit1441:                                    ; preds = %.loopexit1444, %.loopexit1442, %.loopexit1440
  %.6 = phi i32 [ %.11173, %.loopexit1440 ], [ %.31175, %.loopexit1442 ], [ %.5, %.loopexit1444 ]
  %.not1345 = icmp eq i32 %.6, 0
  br i1 %.not1345, label %293, label %.loopexit1441.thread

.loopexit1441.thread:                             ; preds = %253, %213, %167, %.loopexit1441
  store double 1.000000e+00, ptr %37, align 8, !tbaa !9
  br label %293

293:                                              ; preds = %.loopexit1441.thread, %.loopexit1441
  store double 0.000000e+00, ptr %24, align 8, !tbaa !9
  store double %143, ptr %26, align 8, !tbaa !9
  %294 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %294, ptr %17, align 4, !tbaa !5
  %.not13471503 = icmp slt i32 %294, 1
  br i1 %.not13471503, label %.thread, label %.lr.ph1505.preheader

.thread:                                          ; preds = %293
  store i32 1, ptr %30, align 4, !tbaa !5
  br label %310

.lr.ph1505.preheader:                             ; preds = %293
  %295 = add nuw i32 %294, 1
  %wide.trip.count1825 = zext i32 %295 to i64
  br label %.lr.ph1505

.lr.ph1505:                                       ; preds = %.lr.ph1505.preheader, %304
  %indvars.iv1822 = phi i64 [ 1, %.lr.ph1505.preheader ], [ %indvars.iv.next1823, %304 ]
  %296 = phi double [ %143, %.lr.ph1505.preheader ], [ %305, %304 ]
  %297 = phi double [ 0.000000e+00, %.lr.ph1505.preheader ], [ %307, %304 ]
  %298 = getelementptr inbounds double, ptr %40, i64 %indvars.iv1822
  %299 = load double, ptr %298, align 8, !tbaa !9
  %300 = fcmp une double %299, 0.000000e+00
  br i1 %300, label %301, label %304

301:                                              ; preds = %.lr.ph1505
  %302 = fcmp ole double %296, %299
  %303 = select i1 %302, double %296, double %299
  store double %303, ptr %26, align 8, !tbaa !9
  br label %304

304:                                              ; preds = %301, %.lr.ph1505
  %305 = phi double [ %303, %301 ], [ %296, %.lr.ph1505 ]
  %306 = fcmp oge double %297, %299
  %307 = select i1 %306, double %297, double %299
  %indvars.iv.next1823 = add nuw nsw i64 %indvars.iv1822, 1
  %exitcond1826.not = icmp eq i64 %indvars.iv.next1823, %wide.trip.count1825
  br i1 %exitcond1826.not, label %308, label %.lr.ph1505, !llvm.loop !26

308:                                              ; preds = %304
  store double %307, ptr %24, align 8, !tbaa !9
  store i32 %295, ptr %30, align 4, !tbaa !5
  %309 = fcmp oeq double %307, 0.000000e+00
  br i1 %309, label %310, label %314

310:                                              ; preds = %.thread, %308
  br i1 %53, label %311, label %312

311:                                              ; preds = %310
  call void @zlaset_(ptr noundef nonnull @.str.7, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b2, ptr noundef %5, ptr noundef nonnull %6) #9
  br label %312

312:                                              ; preds = %311, %310
  store double 1.000000e+00, ptr %13, align 8, !tbaa !9
  %313 = getelementptr inbounds i8, ptr %13, i64 8
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %313, i8 0, i64 40, i1 false)
  br label %1628

314:                                              ; preds = %308
  %315 = icmp eq i32 %294, 1
  br i1 %315, label %316, label %326

316:                                              ; preds = %314
  br i1 %53, label %317, label %318

317:                                              ; preds = %316
  call void @zlascl_(ptr noundef nonnull @.str.7, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %7, ptr noundef nonnull %37, ptr noundef nonnull %3, ptr noundef nonnull @c__1, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %27) #9
  br label %318

318:                                              ; preds = %317, %316
  %319 = load double, ptr %37, align 8, !tbaa !9
  %320 = fdiv double 1.000000e+00, %319
  store double %320, ptr %13, align 8, !tbaa !9
  %321 = load double, ptr %7, align 8, !tbaa !9
  %322 = load double, ptr %32, align 8, !tbaa !9
  %323 = fcmp ult double %321, %322
  %.sink = select i1 %323, double 0.000000e+00, double 1.000000e+00
  %324 = getelementptr inbounds i8, ptr %13, i64 8
  store double %.sink, ptr %324, align 8
  %325 = getelementptr inbounds i8, ptr %13, i64 16
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %325, i8 0, i64 32, i1 false)
  br label %1628

326:                                              ; preds = %314
  %327 = load double, ptr %32, align 8, !tbaa !9
  %328 = load double, ptr %33, align 8, !tbaa !9
  %329 = fdiv double %327, %328
  %330 = call double @sqrt(double noundef %329) #9
  %331 = load i32, ptr %4, align 4, !tbaa !5
  %332 = sitofp i32 %331 to double
  %333 = fdiv double %143, %332
  %334 = call double @sqrt(double noundef %333) #9
  %335 = load double, ptr %24, align 8, !tbaa !9
  %336 = fcmp ugt double %335, %330
  br i1 %336, label %337, label %343

337:                                              ; preds = %326
  %338 = load double, ptr %26, align 8, !tbaa !9
  %339 = fcmp ult double %338, %334
  br i1 %339, label %340, label %343

340:                                              ; preds = %337
  %341 = fcmp ugt double %330, %338
  %342 = fcmp ugt double %335, %334
  %or.cond1393 = select i1 %341, i1 true, i1 %342
  br i1 %or.cond1393, label %347, label %343

343:                                              ; preds = %340, %337, %326
  %344 = fdiv double %334, %335
  %345 = fcmp ole double %143, %344
  %346 = select i1 %345, double %143, double %344
  store double %346, ptr %29, align 8, !tbaa !9
  br label %391

347:                                              ; preds = %340
  %348 = fcmp ugt double %338, %330
  %brmerge = select i1 %348, i1 true, i1 %342
  br i1 %brmerge, label %363, label %349

349:                                              ; preds = %347
  %350 = load i32, ptr %4, align 4, !tbaa !5
  %351 = sitofp i32 %350 to double
  %352 = call double @sqrt(double noundef %351) #9
  %353 = fmul double %335, %352
  %354 = insertelement <2 x double> poison, double %330, i64 0
  %355 = insertelement <2 x double> %354, double %143, i64 1
  %356 = insertelement <2 x double> poison, double %338, i64 0
  %357 = insertelement <2 x double> %356, double %353, i64 1
  %358 = fdiv <2 x double> %355, %357
  %359 = extractelement <2 x double> %358, i64 0
  %360 = extractelement <2 x double> %358, i64 1
  %361 = fcmp ole double %359, %360
  %362 = select i1 %361, double %359, double %360
  store double %362, ptr %29, align 8, !tbaa !9
  br label %391

363:                                              ; preds = %347
  %364 = fcmp ult double %335, %334
  %or.cond1415 = select i1 %341, i1 true, i1 %364
  br i1 %or.cond1415, label %375, label %365

365:                                              ; preds = %363
  %366 = insertelement <2 x double> poison, double %330, i64 0
  %367 = insertelement <2 x double> %366, double %334, i64 1
  %368 = insertelement <2 x double> poison, double %338, i64 0
  %369 = insertelement <2 x double> %368, double %335, i64 1
  %370 = fdiv <2 x double> %367, %369
  %371 = extractelement <2 x double> %370, i64 0
  %372 = extractelement <2 x double> %370, i64 1
  %373 = fcmp oge double %371, %372
  %374 = select i1 %373, double %371, double %372
  store double %374, ptr %29, align 8, !tbaa !9
  br label %391

375:                                              ; preds = %363
  %or.cond1416 = select i1 %348, i1 true, i1 %364
  br i1 %or.cond1416, label %.thread1414, label %376

376:                                              ; preds = %375
  %377 = load i32, ptr %4, align 4, !tbaa !5
  %378 = sitofp i32 %377 to double
  %379 = call double @sqrt(double noundef %378) #9
  %380 = load double, ptr %24, align 8, !tbaa !9
  %381 = fmul double %379, %380
  %382 = insertelement <2 x double> poison, double %330, i64 0
  %383 = insertelement <2 x double> %382, double %143, i64 1
  %384 = insertelement <2 x double> poison, double %338, i64 0
  %385 = insertelement <2 x double> %384, double %381, i64 1
  %386 = fdiv <2 x double> %383, %385
  %387 = extractelement <2 x double> %386, i64 0
  %388 = extractelement <2 x double> %386, i64 1
  %389 = fcmp ole double %387, %388
  %390 = select i1 %389, double %387, double %388
  store double %390, ptr %29, align 8, !tbaa !9
  br label %391

.thread1414:                                      ; preds = %375
  store double 1.000000e+00, ptr %29, align 8, !tbaa !9
  br label %395

391:                                              ; preds = %349, %376, %365, %343
  %392 = phi double [ %362, %349 ], [ %390, %376 ], [ %374, %365 ], [ %346, %343 ]
  %393 = fcmp une double %392, 1.000000e+00
  br i1 %393, label %394, label %395

394:                                              ; preds = %391
  call void @dlascl_(ptr noundef nonnull @.str.7, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull @c_b42, ptr noundef nonnull %29, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef nonnull %7, ptr noundef nonnull %4, ptr noundef nonnull %27) #9
  %.pre1853 = load double, ptr %29, align 8, !tbaa !9
  br label %395

395:                                              ; preds = %.thread1414, %394, %391
  %396 = phi double [ 1.000000e+00, %.thread1414 ], [ %.pre1853, %394 ], [ 1.000000e+00, %391 ]
  %397 = load double, ptr %37, align 8, !tbaa !9
  %398 = fmul double %396, %397
  store double %398, ptr %37, align 8, !tbaa !9
  %399 = fcmp une double %398, 1.000000e+00
  br i1 %399, label %400, label %403

400:                                              ; preds = %395
  call void @zlascl_(ptr noundef %0, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull @c_b42, ptr noundef nonnull %37, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %27) #9
  %401 = load double, ptr %37, align 8, !tbaa !9
  %402 = fdiv double 1.000000e+00, %401
  store double %402, ptr %37, align 8, !tbaa !9
  br label %403

403:                                              ; preds = %400, %395
  %404 = load i32, ptr %4, align 4, !tbaa !5
  %405 = add nsw i32 %404, -1
  %406 = mul nsw i32 %405, %404
  %407 = sdiv i32 %406, 2
  %.not13481507 = icmp slt i32 %404, 1
  br i1 %.not13481507, label %._crit_edge1511, label %.lr.ph1510.preheader

.lr.ph1510.preheader:                             ; preds = %403
  %408 = add nuw i32 %404, 1
  %wide.trip.count1830 = zext i32 %408 to i64
  %409 = zext nneg i32 %404 to i64
  %min.iters.check1964 = icmp ult i32 %404, 4
  br i1 %min.iters.check1964, label %.lr.ph1510.preheader2025, label %vector.ph1965

vector.ph1965:                                    ; preds = %.lr.ph1510.preheader
  %n.vec1967 = and i64 %409, 2147483644
  %ind.end1968 = or disjoint i64 %n.vec1967, 1
  br label %vector.body1970

vector.body1970:                                  ; preds = %vector.body1970, %vector.ph1965
  %index1971 = phi i64 [ 0, %vector.ph1965 ], [ %index.next1973, %vector.body1970 ]
  %410 = or disjoint i64 %index1971, 3
  %411 = getelementptr %struct.doublecomplex, ptr %11, i64 %index1971
  %412 = getelementptr inbounds %struct.doublecomplex, ptr %47, i64 %410
  store <4 x double> <double 1.000000e+00, double 0.000000e+00, double 1.000000e+00, double 0.000000e+00>, ptr %411, align 8, !tbaa !9
  store <4 x double> <double 1.000000e+00, double 0.000000e+00, double 1.000000e+00, double 0.000000e+00>, ptr %412, align 8, !tbaa !9
  %index.next1973 = add nuw i64 %index1971, 4
  %413 = icmp eq i64 %index.next1973, %n.vec1967
  br i1 %413, label %middle.block1962, label %vector.body1970, !llvm.loop !27

middle.block1962:                                 ; preds = %vector.body1970
  %cmp.n1974 = icmp eq i64 %n.vec1967, %409
  br i1 %cmp.n1974, label %._crit_edge1511, label %.lr.ph1510.preheader2025

.lr.ph1510.preheader2025:                         ; preds = %middle.block1962, %.lr.ph1510.preheader
  %indvars.iv1827.ph = phi i64 [ 1, %.lr.ph1510.preheader ], [ %ind.end1968, %middle.block1962 ]
  br label %.lr.ph1510

.lr.ph1510:                                       ; preds = %.lr.ph1510.preheader2025, %.lr.ph1510
  %indvars.iv1827 = phi i64 [ %indvars.iv.next1828, %.lr.ph1510 ], [ %indvars.iv1827.ph, %.lr.ph1510.preheader2025 ]
  %414 = getelementptr inbounds %struct.doublecomplex, ptr %47, i64 %indvars.iv1827
  store <2 x double> <double 1.000000e+00, double 0.000000e+00>, ptr %414, align 8, !tbaa !9
  %indvars.iv.next1828 = add nuw nsw i64 %indvars.iv1827, 1
  %exitcond1831.not = icmp eq i64 %indvars.iv.next1828, %wide.trip.count1830
  br i1 %exitcond1831.not, label %._crit_edge1511, label %.lr.ph1510, !llvm.loop !28

._crit_edge1511:                                  ; preds = %.lr.ph1510, %middle.block1962, %403
  %spec.select1394 = call i32 @llvm.smin.i32(i32 %404, i32 8)
  %415 = sdiv i32 %404, %spec.select1394
  %416 = mul nsw i32 %415, %spec.select1394
  %.not1349 = icmp ne i32 %416, %404
  %417 = zext i1 %.not1349 to i32
  %.01183 = add nsw i32 %415, %417
  %418 = mul nsw i32 %spec.select1394, %spec.select1394
  %419 = call i32 @llvm.smin.i32(i32 %404, i32 5)
  %420 = shl i32 %spec.select1394, 2
  store i32 %420, ptr %18, align 4, !tbaa !5
  %421 = or i32 %63, %62
  %or.cond21.not = icmp ne i32 %421, 0
  %422 = call i32 @llvm.smax.i32(i32 %420, i32 64)
  %423 = icmp sgt i32 %404, %422
  %or.cond1418 = and i1 %or.cond21.not, %423
  br i1 %or.cond1418, label %424, label %584

424:                                              ; preds = %._crit_edge1511
  %425 = lshr i32 %404, 2
  store i32 %425, ptr %35, align 4, !tbaa !5
  %426 = lshr i32 %404, 1
  store i32 %426, ptr %34, align 4, !tbaa !5
  br i1 %72, label %427, label %529

427:                                              ; preds = %424
  %428 = mul nuw nsw i32 %425, 3
  %429 = load i32, ptr %3, align 4, !tbaa !5
  %430 = sub nsw i32 %429, %428
  store i32 %430, ptr %17, align 4, !tbaa !5
  %431 = sub nsw i32 %404, %428
  store i32 %431, ptr %18, align 4, !tbaa !5
  %432 = load i32, ptr %12, align 4, !tbaa !5
  %433 = sub nsw i32 %432, %404
  store i32 %433, ptr %19, align 4, !tbaa !5
  %434 = add nuw nsw i32 %428, 1
  %435 = add i32 %41, 1
  %436 = mul i32 %434, %435
  %437 = sext i32 %436 to i64
  %438 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %437
  %439 = zext nneg i32 %434 to i64
  %440 = getelementptr inbounds %struct.doublecomplex, ptr %47, i64 %439
  %441 = getelementptr inbounds double, ptr %40, i64 %439
  %442 = select i1 %80, i32 1, i32 %434
  %443 = mul nsw i32 %434, %44
  %444 = add nsw i32 %442, %443
  %445 = sext i32 %444 to i64
  %446 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %445
  %447 = zext nneg i32 %404 to i64
  %448 = getelementptr %struct.doublecomplex, ptr %47, i64 %447
  %449 = getelementptr i8, ptr %448, i64 16
  call void @zgsvj0_(ptr noundef %2, ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef %438, ptr noundef nonnull %6, ptr noundef nonnull %440, ptr noundef nonnull %441, ptr noundef nonnull %39, ptr noundef %446, ptr noundef nonnull %10, ptr noundef nonnull %33, ptr noundef nonnull %32, ptr noundef nonnull %38, ptr noundef nonnull @c__2, ptr noundef %449, ptr noundef nonnull %19, ptr noundef nonnull %27) #9
  %450 = load i32, ptr %3, align 4, !tbaa !5
  %451 = load i32, ptr %34, align 4, !tbaa !5
  %452 = sub nsw i32 %450, %451
  store i32 %452, ptr %17, align 4, !tbaa !5
  %453 = sub nsw i32 %428, %451
  store i32 %453, ptr %18, align 4, !tbaa !5
  %454 = load i32, ptr %12, align 4, !tbaa !5
  %455 = load i32, ptr %4, align 4, !tbaa !5
  %456 = sub nsw i32 %454, %455
  store i32 %456, ptr %19, align 4, !tbaa !5
  %457 = add nsw i32 %451, 1
  %458 = mul i32 %457, %435
  %459 = sext i32 %458 to i64
  %460 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %459
  %461 = sext i32 %457 to i64
  %462 = getelementptr inbounds %struct.doublecomplex, ptr %47, i64 %461
  %463 = getelementptr inbounds double, ptr %40, i64 %461
  %464 = select i1 %80, i32 1, i32 %457
  %465 = mul nsw i32 %457, %44
  %466 = add nsw i32 %464, %465
  %467 = sext i32 %466 to i64
  %468 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %467
  %469 = sext i32 %455 to i64
  %470 = getelementptr %struct.doublecomplex, ptr %47, i64 %469
  %471 = getelementptr i8, ptr %470, i64 16
  call void @zgsvj0_(ptr noundef %2, ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef %460, ptr noundef nonnull %6, ptr noundef nonnull %462, ptr noundef nonnull %463, ptr noundef nonnull %39, ptr noundef %468, ptr noundef nonnull %10, ptr noundef nonnull %33, ptr noundef nonnull %32, ptr noundef nonnull %38, ptr noundef nonnull @c__2, ptr noundef %471, ptr noundef nonnull %19, ptr noundef nonnull %27) #9
  %472 = load i32, ptr %3, align 4, !tbaa !5
  %473 = load i32, ptr %34, align 4, !tbaa !5
  %474 = sub nsw i32 %472, %473
  store i32 %474, ptr %17, align 4, !tbaa !5
  %475 = load i32, ptr %4, align 4, !tbaa !5
  %476 = sub nsw i32 %475, %473
  store i32 %476, ptr %18, align 4, !tbaa !5
  %477 = load i32, ptr %12, align 4, !tbaa !5
  %478 = sub nsw i32 %477, %475
  store i32 %478, ptr %19, align 4, !tbaa !5
  %479 = add nsw i32 %473, 1
  %480 = mul i32 %479, %435
  %481 = sext i32 %480 to i64
  %482 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %481
  %483 = sext i32 %479 to i64
  %484 = getelementptr inbounds %struct.doublecomplex, ptr %47, i64 %483
  %485 = getelementptr inbounds double, ptr %40, i64 %483
  %486 = select i1 %80, i32 1, i32 %479
  %487 = mul nsw i32 %479, %44
  %488 = add nsw i32 %486, %487
  %489 = sext i32 %488 to i64
  %490 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %489
  %491 = sext i32 %475 to i64
  %492 = getelementptr %struct.doublecomplex, ptr %47, i64 %491
  %493 = getelementptr i8, ptr %492, i64 16
  call void @zgsvj1_(ptr noundef %2, ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef nonnull %35, ptr noundef %482, ptr noundef nonnull %6, ptr noundef nonnull %484, ptr noundef nonnull %485, ptr noundef nonnull %39, ptr noundef %490, ptr noundef nonnull %10, ptr noundef nonnull %33, ptr noundef nonnull %32, ptr noundef nonnull %38, ptr noundef nonnull @c__1, ptr noundef %493, ptr noundef nonnull %19, ptr noundef nonnull %27) #9
  %494 = load i32, ptr %3, align 4, !tbaa !5
  %495 = load i32, ptr %35, align 4, !tbaa !5
  %496 = sub nsw i32 %494, %495
  store i32 %496, ptr %17, align 4, !tbaa !5
  %497 = load i32, ptr %34, align 4, !tbaa !5
  %498 = sub nsw i32 %497, %495
  store i32 %498, ptr %18, align 4, !tbaa !5
  %499 = load i32, ptr %12, align 4, !tbaa !5
  %500 = load i32, ptr %4, align 4, !tbaa !5
  %501 = sub nsw i32 %499, %500
  store i32 %501, ptr %19, align 4, !tbaa !5
  %502 = add nsw i32 %495, 1
  %503 = mul i32 %502, %435
  %504 = sext i32 %503 to i64
  %505 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %504
  %506 = sext i32 %502 to i64
  %507 = getelementptr inbounds %struct.doublecomplex, ptr %47, i64 %506
  %508 = getelementptr inbounds double, ptr %40, i64 %506
  %509 = select i1 %80, i32 1, i32 %502
  %510 = mul nsw i32 %502, %44
  %511 = add nsw i32 %509, %510
  %512 = sext i32 %511 to i64
  %513 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %512
  %514 = sext i32 %500 to i64
  %515 = getelementptr %struct.doublecomplex, ptr %47, i64 %514
  %516 = getelementptr i8, ptr %515, i64 16
  call void @zgsvj0_(ptr noundef %2, ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef %505, ptr noundef nonnull %6, ptr noundef nonnull %507, ptr noundef nonnull %508, ptr noundef nonnull %39, ptr noundef %513, ptr noundef nonnull %10, ptr noundef nonnull %33, ptr noundef nonnull %32, ptr noundef nonnull %38, ptr noundef nonnull @c__1, ptr noundef %516, ptr noundef nonnull %19, ptr noundef nonnull %27) #9
  %517 = load i32, ptr %12, align 4, !tbaa !5
  %518 = load i32, ptr %4, align 4, !tbaa !5
  %519 = sub nsw i32 %517, %518
  store i32 %519, ptr %17, align 4, !tbaa !5
  %520 = sext i32 %518 to i64
  %521 = getelementptr %struct.doublecomplex, ptr %47, i64 %520
  %522 = getelementptr i8, ptr %521, i64 16
  call void @zgsvj0_(ptr noundef %2, ptr noundef nonnull %3, ptr noundef nonnull %35, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %11, ptr noundef %7, ptr noundef nonnull %39, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %33, ptr noundef nonnull %32, ptr noundef nonnull %38, ptr noundef nonnull @c__1, ptr noundef %522, ptr noundef nonnull %17, ptr noundef nonnull %27) #9
  %523 = load i32, ptr %12, align 4, !tbaa !5
  %524 = load i32, ptr %4, align 4, !tbaa !5
  %525 = sub nsw i32 %523, %524
  store i32 %525, ptr %17, align 4, !tbaa !5
  %526 = sext i32 %524 to i64
  %527 = getelementptr %struct.doublecomplex, ptr %47, i64 %526
  %528 = getelementptr i8, ptr %527, i64 16
  call void @zgsvj1_(ptr noundef %2, ptr noundef nonnull %3, ptr noundef nonnull %34, ptr noundef nonnull %35, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %11, ptr noundef %7, ptr noundef nonnull %39, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %33, ptr noundef nonnull %32, ptr noundef nonnull %38, ptr noundef nonnull @c__1, ptr noundef %528, ptr noundef nonnull %17, ptr noundef nonnull %27) #9
  br label %584

529:                                              ; preds = %424
  br i1 %71, label %530, label %584

530:                                              ; preds = %529
  %531 = load i32, ptr %12, align 4, !tbaa !5
  %532 = sub nsw i32 %531, %404
  store i32 %532, ptr %17, align 4, !tbaa !5
  %533 = zext nneg i32 %404 to i64
  %534 = getelementptr %struct.doublecomplex, ptr %47, i64 %533
  %535 = getelementptr i8, ptr %534, i64 16
  call void @zgsvj0_(ptr noundef %2, ptr noundef nonnull %35, ptr noundef nonnull %35, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %11, ptr noundef %7, ptr noundef nonnull %39, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %33, ptr noundef nonnull %32, ptr noundef nonnull %38, ptr noundef nonnull @c__2, ptr noundef %535, ptr noundef nonnull %17, ptr noundef nonnull %27) #9
  %536 = load i32, ptr %12, align 4, !tbaa !5
  %537 = load i32, ptr %4, align 4, !tbaa !5
  %538 = sub nsw i32 %536, %537
  store i32 %538, ptr %17, align 4, !tbaa !5
  %539 = load i32, ptr %35, align 4, !tbaa !5
  %540 = add nsw i32 %539, 1
  %541 = mul nsw i32 %540, %41
  %542 = sext i32 %541 to i64
  %543 = getelementptr %struct.doublecomplex, ptr %43, i64 %542
  %544 = getelementptr i8, ptr %543, i64 16
  %545 = sext i32 %540 to i64
  %546 = getelementptr inbounds %struct.doublecomplex, ptr %47, i64 %545
  %547 = getelementptr inbounds double, ptr %40, i64 %545
  %548 = select i1 %80, i32 1, i32 %540
  %549 = mul nsw i32 %540, %44
  %550 = add nsw i32 %548, %549
  %551 = sext i32 %550 to i64
  %552 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %551
  %553 = sext i32 %537 to i64
  %554 = getelementptr %struct.doublecomplex, ptr %47, i64 %553
  %555 = getelementptr i8, ptr %554, i64 16
  call void @zgsvj0_(ptr noundef %2, ptr noundef nonnull %34, ptr noundef nonnull %35, ptr noundef %544, ptr noundef nonnull %6, ptr noundef nonnull %546, ptr noundef nonnull %547, ptr noundef nonnull %39, ptr noundef %552, ptr noundef nonnull %10, ptr noundef nonnull %33, ptr noundef nonnull %32, ptr noundef nonnull %38, ptr noundef nonnull @c__1, ptr noundef %555, ptr noundef nonnull %17, ptr noundef nonnull %27) #9
  %556 = load i32, ptr %12, align 4, !tbaa !5
  %557 = load i32, ptr %4, align 4, !tbaa !5
  %558 = sub nsw i32 %556, %557
  store i32 %558, ptr %17, align 4, !tbaa !5
  %559 = sext i32 %557 to i64
  %560 = getelementptr %struct.doublecomplex, ptr %47, i64 %559
  %561 = getelementptr i8, ptr %560, i64 16
  call void @zgsvj1_(ptr noundef %2, ptr noundef nonnull %34, ptr noundef nonnull %34, ptr noundef nonnull %35, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %11, ptr noundef %7, ptr noundef nonnull %39, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %33, ptr noundef nonnull %32, ptr noundef nonnull %38, ptr noundef nonnull @c__1, ptr noundef %561, ptr noundef nonnull %17, ptr noundef nonnull %27) #9
  %562 = load i32, ptr %34, align 4, !tbaa !5
  %563 = load i32, ptr %35, align 4, !tbaa !5
  %564 = add nsw i32 %563, %562
  store i32 %564, ptr %17, align 4, !tbaa !5
  %565 = load i32, ptr %12, align 4, !tbaa !5
  %566 = load i32, ptr %4, align 4, !tbaa !5
  %567 = sub nsw i32 %565, %566
  store i32 %567, ptr %18, align 4, !tbaa !5
  %568 = add nsw i32 %562, 1
  %569 = mul nsw i32 %568, %41
  %570 = sext i32 %569 to i64
  %571 = getelementptr %struct.doublecomplex, ptr %43, i64 %570
  %572 = getelementptr i8, ptr %571, i64 16
  %573 = sext i32 %568 to i64
  %574 = getelementptr inbounds %struct.doublecomplex, ptr %47, i64 %573
  %575 = getelementptr inbounds double, ptr %40, i64 %573
  %576 = select i1 %80, i32 1, i32 %568
  %577 = mul nsw i32 %568, %44
  %578 = add nsw i32 %576, %577
  %579 = sext i32 %578 to i64
  %580 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %579
  %581 = sext i32 %566 to i64
  %582 = getelementptr %struct.doublecomplex, ptr %47, i64 %581
  %583 = getelementptr i8, ptr %582, i64 16
  call void @zgsvj0_(ptr noundef %2, ptr noundef nonnull %17, ptr noundef nonnull %35, ptr noundef %572, ptr noundef nonnull %6, ptr noundef nonnull %574, ptr noundef nonnull %575, ptr noundef nonnull %39, ptr noundef %580, ptr noundef nonnull %10, ptr noundef nonnull %33, ptr noundef nonnull %32, ptr noundef nonnull %38, ptr noundef nonnull @c__1, ptr noundef %583, ptr noundef nonnull %18, ptr noundef nonnull %27) #9
  br label %584

584:                                              ; preds = %427, %530, %529, %._crit_edge1511
  %invariant.gep1751 = getelementptr i8, ptr %43, i64 16
  %585 = add i32 %spec.select1394, -1
  %invariant.gep1578 = getelementptr i8, ptr %46, i64 16
  %586 = getelementptr inbounds i8, ptr %25, i64 8
  %587 = sext i32 %41 to i64
  %588 = sext i32 %44 to i64
  %.not13521738 = icmp slt i32 %.01183, 1
  %589 = insertelement <2 x double> poison, double %142, i64 0
  %590 = shufflevector <2 x double> %589, <2 x double> poison, <2 x i32> zeroinitializer
  br label %591

591:                                              ; preds = %584, %1503
  %.011861756 = phi i32 [ 1, %584 ], [ %1504, %1503 ]
  %.012541755 = phi i32 [ 3, %584 ], [ %.11255, %1503 ]
  store i32 %.01183, ptr %17, align 4, !tbaa !5
  br i1 %.not13521738, label %.._crit_edge1746_crit_edge, label %.lr.ph1745

.._crit_edge1746_crit_edge:                       ; preds = %591
  %.pre1865 = load i32, ptr %4, align 4, !tbaa !5
  br label %._crit_edge1746

.lr.ph1745:                                       ; preds = %591
  %.not1388 = icmp sle i32 %.011861756, %.012541755
  %.not1373 = icmp sgt i32 %.011861756, %.012541755
  br label %594

.loopexit1438.loopexit:                           ; preds = %.lr.ph1736, %middle.block1975
  %indvars.iv.next1845.lcssa = phi i64 [ %ind.end1981, %middle.block1975 ], [ %indvars.iv.next1845, %.lr.ph1736 ]
  %592 = trunc nsw i64 %indvars.iv.next1845.lcssa to i32
  br label %.loopexit1438

.loopexit1438:                                    ; preds = %.loopexit1438.loopexit, %.loopexit1439
  %storemerge1376.lcssa = phi i32 [ %599, %.loopexit1439 ], [ %592, %.loopexit1438.loopexit ]
  store i32 %storemerge1376.lcssa, ptr %30, align 4, !tbaa !5
  %593 = load i32, ptr %17, align 4, !tbaa !5
  %.not1352.not = icmp slt i32 %.011841743, %593
  %indvars.iv.next1836 = add i32 %indvars.iv1835, %spec.select1394
  %indvars.iv.next1843 = add i32 %indvars.iv1842, %spec.select1394
  br i1 %.not1352.not, label %594, label %._crit_edge1746, !llvm.loop !29

594:                                              ; preds = %.lr.ph1745, %.loopexit1438
  %indvars.iv1842 = phi i32 [ 1, %.lr.ph1745 ], [ %indvars.iv.next1843, %.loopexit1438 ]
  %indvars.iv1835 = phi i32 [ %spec.select1394, %.lr.ph1745 ], [ %indvars.iv.next1836, %.loopexit1438 ]
  %.011841743 = phi i32 [ 1, %.lr.ph1745 ], [ %1015, %.loopexit1438 ]
  %.011951742 = phi i32 [ 0, %.lr.ph1745 ], [ %.14, %.loopexit1438 ]
  %.012021741 = phi i32 [ 0, %.lr.ph1745 ], [ %.17, %.loopexit1438 ]
  %.112201740 = phi double [ 0.000000e+00, %.lr.ph1745 ], [ %.18, %.loopexit1438 ]
  %.112391739 = phi double [ 0.000000e+00, %.lr.ph1745 ], [ %.141252, %.loopexit1438 ]
  %595 = sext i32 %indvars.iv1842 to i64
  %596 = sext i32 %indvars.iv1842 to i64
  %597 = add nsw i32 %.011841743, -1
  %598 = mul nsw i32 %597, %spec.select1394
  %599 = add nsw i32 %598, 1
  %600 = sub nsw i32 %.01183, %.011841743
  store i32 %600, ptr %20, align 4, !tbaa !5
  %601 = call i32 @llvm.smin.i32(i32 %600, i32 1)
  store i32 %601, ptr %18, align 4, !tbaa !5
  %.not13641599 = icmp slt i32 %600, 0
  br i1 %.not13641599, label %._crit_edge1608, label %.lr.ph1607

.lr.ph1607:                                       ; preds = %594, %._crit_edge1594
  %602 = phi i32 [ %1013, %._crit_edge1594 ], [ %601, %594 ]
  %.011851605 = phi i32 [ %604, %._crit_edge1594 ], [ %599, %594 ]
  %.111961604 = phi i32 [ %.21197.lcssa, %._crit_edge1594 ], [ %.011951742, %594 ]
  %.112031603 = phi i32 [ %.21204.lcssa, %._crit_edge1594 ], [ %.012021741, %594 ]
  %.012181602 = phi i32 [ %1014, %._crit_edge1594 ], [ 0, %594 ]
  %.212211601 = phi double [ %.31222.lcssa, %._crit_edge1594 ], [ %.112201740, %594 ]
  %.212401600 = phi double [ %.31241.lcssa, %._crit_edge1594 ], [ %.112391739, %594 ]
  %603 = mul nsw i32 %.012181602, %spec.select1394
  %604 = add nsw i32 %.011851605, %603
  %605 = add i32 %585, %604
  store i32 %605, ptr %20, align 4, !tbaa !5
  %606 = load i32, ptr %4, align 4, !tbaa !5
  %607 = add nsw i32 %606, -1
  %608 = call i32 @llvm.smin.i32(i32 %605, i32 %607)
  store i32 %608, ptr %19, align 4, !tbaa !5
  store i32 %604, ptr %30, align 4, !tbaa !5
  %.not13801586 = icmp sgt i32 %604, %608
  br i1 %.not13801586, label %._crit_edge1594, label %.lr.ph1593

.lr.ph1593:                                       ; preds = %.lr.ph1607
  %609 = icmp eq i32 %.012181602, 0
  %610 = zext i1 %609 to i32
  br label %611

611:                                              ; preds = %.lr.ph1593, %1009
  %.211971591 = phi i32 [ %.111961604, %.lr.ph1593 ], [ %.7, %1009 ]
  %.212041590 = phi i32 [ %.112031603, %.lr.ph1593 ], [ %.91211, %1009 ]
  %.312221589 = phi double [ %.212211601, %.lr.ph1593 ], [ %.91228, %1009 ]
  %.312411588 = phi double [ %.212401600, %.lr.ph1593 ], [ %.71245, %1009 ]
  %storemerge13791587 = phi i32 [ %604, %.lr.ph1593 ], [ %1011, %1009 ]
  %612 = load i32, ptr %4, align 4, !tbaa !5
  %reass.sub1790 = sub i32 %612, %storemerge13791587
  %613 = add i32 %reass.sub1790, 1
  store i32 %613, ptr %20, align 4, !tbaa !5
  %614 = sext i32 %storemerge13791587 to i64
  %615 = getelementptr inbounds double, ptr %40, i64 %614
  %616 = call i32 @idamax_(ptr noundef nonnull %20, ptr noundef nonnull %615, ptr noundef nonnull @c__1) #9
  %617 = load i32, ptr %30, align 4, !tbaa !5
  %618 = add i32 %616, -1
  %619 = add i32 %618, %617
  %.not1381 = icmp eq i32 %618, 0
  br i1 %.not1381, label %643, label %620

620:                                              ; preds = %611
  %621 = mul nsw i32 %617, %41
  %622 = sext i32 %621 to i64
  %gep1575 = getelementptr %struct.doublecomplex, ptr %invariant.gep1751, i64 %622
  %623 = mul nsw i32 %619, %41
  %624 = sext i32 %623 to i64
  %gep1577 = getelementptr %struct.doublecomplex, ptr %invariant.gep1751, i64 %624
  call void @zswap_(ptr noundef nonnull %3, ptr noundef %gep1575, ptr noundef nonnull @c__1, ptr noundef %gep1577, ptr noundef nonnull @c__1) #9
  br i1 %or.cond5, label %625, label %631

625:                                              ; preds = %620
  %626 = load i32, ptr %30, align 4, !tbaa !5
  %627 = mul nsw i32 %626, %44
  %628 = sext i32 %627 to i64
  %gep1579 = getelementptr %struct.doublecomplex, ptr %invariant.gep1578, i64 %628
  %629 = mul nsw i32 %619, %44
  %630 = sext i32 %629 to i64
  %gep1581 = getelementptr %struct.doublecomplex, ptr %invariant.gep1578, i64 %630
  call void @zswap_(ptr noundef nonnull %39, ptr noundef %gep1579, ptr noundef nonnull @c__1, ptr noundef %gep1581, ptr noundef nonnull @c__1) #9
  br label %631

631:                                              ; preds = %625, %620
  %632 = load i32, ptr %30, align 4, !tbaa !5
  %633 = sext i32 %632 to i64
  %634 = getelementptr inbounds double, ptr %40, i64 %633
  %635 = load double, ptr %634, align 8, !tbaa !9
  store double %635, ptr %29, align 8, !tbaa !9
  %636 = sext i32 %619 to i64
  %637 = getelementptr inbounds double, ptr %40, i64 %636
  %638 = load double, ptr %637, align 8, !tbaa !9
  store double %638, ptr %634, align 8, !tbaa !9
  store double %635, ptr %637, align 8, !tbaa !9
  %639 = getelementptr inbounds %struct.doublecomplex, ptr %47, i64 %633
  %640 = load <2 x double>, ptr %639, align 8, !tbaa !9
  store <2 x double> %640, ptr %25, align 16, !tbaa !9
  %641 = getelementptr inbounds %struct.doublecomplex, ptr %47, i64 %636
  %642 = load <2 x double>, ptr %641, align 8, !tbaa !9
  store <2 x double> %642, ptr %639, align 8, !tbaa !9
  store i32 %619, ptr %20, align 4, !tbaa !5
  store <2 x double> %640, ptr %641, align 8, !tbaa !9
  br label %643

643:                                              ; preds = %631, %611
  %644 = phi i32 [ %632, %631 ], [ %617, %611 ]
  %645 = sext i32 %644 to i64
  %646 = getelementptr inbounds double, ptr %40, i64 %645
  %647 = load double, ptr %646, align 8, !tbaa !9
  br i1 %609, label %648, label %._crit_edge1855

648:                                              ; preds = %643
  %649 = fcmp olt double %647, %144
  %650 = fcmp ogt double %647, %141
  %or.cond1395 = and i1 %649, %650
  br i1 %or.cond1395, label %651, label %655

651:                                              ; preds = %648
  %652 = mul nsw i32 %644, %41
  %653 = sext i32 %652 to i64
  %gep1585 = getelementptr %struct.doublecomplex, ptr %invariant.gep1751, i64 %653
  %654 = call double @dznrm2_(ptr noundef nonnull %3, ptr noundef %gep1585, ptr noundef nonnull @c__1) #9
  br label %._crit_edge1855.sink.split

655:                                              ; preds = %648
  store double 0.000000e+00, ptr %29, align 8, !tbaa !9
  store double 1.000000e+00, ptr %24, align 8, !tbaa !9
  %656 = mul nsw i32 %644, %41
  %657 = sext i32 %656 to i64
  %gep1583 = getelementptr %struct.doublecomplex, ptr %invariant.gep1751, i64 %657
  call void @zlassq_(ptr noundef nonnull %3, ptr noundef %gep1583, ptr noundef nonnull @c__1, ptr noundef nonnull %29, ptr noundef nonnull %24) #9
  %658 = load double, ptr %29, align 8, !tbaa !9
  %659 = load double, ptr %24, align 8, !tbaa !9
  %660 = call double @sqrt(double noundef %659) #9
  %661 = fmul double %658, %660
  br label %._crit_edge1855.sink.split

._crit_edge1855.sink.split:                       ; preds = %655, %651
  %.sink1895 = phi double [ %654, %651 ], [ %661, %655 ]
  %.sink1898 = load i32, ptr %30, align 4, !tbaa !5
  %662 = sext i32 %.sink1898 to i64
  %663 = getelementptr inbounds double, ptr %40, i64 %662
  store double %.sink1895, ptr %663, align 8, !tbaa !9
  br label %._crit_edge1855

._crit_edge1855:                                  ; preds = %._crit_edge1855.sink.split, %643
  %.pn.pre-phi = phi i64 [ %645, %643 ], [ %662, %._crit_edge1855.sink.split ]
  %storemerge1382 = phi double [ %647, %643 ], [ %.sink1895, %._crit_edge1855.sink.split ]
  %.pn.in = phi i32 [ %644, %643 ], [ %.sink1898, %._crit_edge1855.sink.split ]
  store double %storemerge1382, ptr %24, align 8, !tbaa !9
  %664 = fcmp ogt double %storemerge1382, 0.000000e+00
  br i1 %664, label %665, label %1003

665:                                              ; preds = %._crit_edge1855
  %666 = load i32, ptr %4, align 4, !tbaa !5
  %.1396 = call i32 @llvm.smin.i32(i32 %605, i32 %666)
  store i32 %.1396, ptr %20, align 4, !tbaa !5
  br label %667

667:                                              ; preds = %994, %665
  %indvars.iv1832 = phi i64 [ %indvars.iv.next1833, %994 ], [ %.pn.pre-phi, %665 ]
  %.41242 = phi double [ %.51243, %994 ], [ %.312411588, %665 ]
  %.41223 = phi double [ %.71226, %994 ], [ %.312221589, %665 ]
  %.31205 = phi i32 [ %.71209, %994 ], [ %.212041590, %665 ]
  %.31198 = phi i32 [ %.51200, %994 ], [ %.211971591, %665 ]
  %.01171 = phi i32 [ %.2, %994 ], [ 0, %665 ]
  %indvars.iv.next1833 = add nsw i64 %indvars.iv1832, 1
  %668 = load i32, ptr %20, align 4, !tbaa !5
  %669 = sext i32 %668 to i64
  %.not1385.not = icmp slt i64 %indvars.iv1832, %669
  br i1 %.not1385.not, label %670, label %.loopexit1437.loopexit

670:                                              ; preds = %667
  %671 = getelementptr double, ptr %7, i64 %indvars.iv1832
  %672 = load double, ptr %671, align 8, !tbaa !9
  store double %672, ptr %26, align 8, !tbaa !9
  %673 = fcmp ogt double %672, 0.000000e+00
  br i1 %673, label %674, label %992

674:                                              ; preds = %670
  %675 = load double, ptr %24, align 8, !tbaa !9
  %676 = fcmp ult double %672, 1.000000e+00
  br i1 %676, label %713, label %677

677:                                              ; preds = %674
  %678 = fmul double %142, %675
  %679 = fcmp ole double %678, %672
  %680 = fdiv double %143, %672
  %681 = fcmp olt double %675, %680
  %682 = load i32, ptr %30, align 4, !tbaa !5
  %683 = mul nsw i32 %682, %41
  %684 = sext i32 %683 to i64
  %gep1523 = getelementptr %struct.doublecomplex, ptr %invariant.gep1751, i64 %684
  br i1 %681, label %685, label %698

685:                                              ; preds = %677
  %686 = mul nsw i64 %indvars.iv.next1833, %587
  %gep1525 = getelementptr %struct.doublecomplex, ptr %invariant.gep1751, i64 %686
  call void @zdotc_(ptr noundef nonnull %23, ptr noundef nonnull %3, ptr noundef %gep1523, ptr noundef nonnull @c__1, ptr noundef %gep1525, ptr noundef nonnull @c__1)
  %687 = load double, ptr %26, align 8, !tbaa !9
  %688 = load <2 x double>, ptr %23, align 16, !tbaa !9
  %689 = insertelement <2 x double> poison, double %687, i64 0
  %690 = shufflevector <2 x double> %689, <2 x double> poison, <2 x i32> zeroinitializer
  %691 = fdiv <2 x double> %688, %690
  store <2 x double> %691, ptr %22, align 16, !tbaa !9
  %692 = load double, ptr %24, align 8, !tbaa !9
  %693 = insertelement <2 x double> poison, double %692, i64 0
  %694 = shufflevector <2 x double> %693, <2 x double> poison, <2 x i32> zeroinitializer
  %695 = fdiv <2 x double> %691, %694
  store <2 x double> %695, ptr %21, align 16, !tbaa !9
  %696 = extractelement <2 x double> %695, i64 0
  store double %696, ptr %25, align 16, !tbaa !11
  %697 = extractelement <2 x double> %695, i64 1
  br label %752

698:                                              ; preds = %677
  %699 = load i32, ptr %4, align 4, !tbaa !5
  %700 = sext i32 %699 to i64
  %gep1515 = getelementptr %struct.doublecomplex, ptr %11, i64 %700
  call void @zcopy_(ptr noundef nonnull %3, ptr noundef %gep1523, ptr noundef nonnull @c__1, ptr noundef %gep1515, ptr noundef nonnull @c__1) #9
  %701 = load i32, ptr %4, align 4, !tbaa !5
  %702 = sext i32 %701 to i64
  %gep1517 = getelementptr %struct.doublecomplex, ptr %11, i64 %702
  call void @zlascl_(ptr noundef nonnull @.str.7, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %24, ptr noundef nonnull @c_b42, ptr noundef nonnull %3, ptr noundef nonnull @c__1, ptr noundef %gep1517, ptr noundef nonnull %6, ptr noundef nonnull %27) #9
  %703 = load i32, ptr %4, align 4, !tbaa !5
  %704 = sext i32 %703 to i64
  %gep1519 = getelementptr %struct.doublecomplex, ptr %11, i64 %704
  %705 = mul nsw i64 %indvars.iv.next1833, %587
  %gep1521 = getelementptr %struct.doublecomplex, ptr %invariant.gep1751, i64 %705
  call void @zdotc_(ptr noundef nonnull %22, ptr noundef nonnull %3, ptr noundef %gep1519, ptr noundef nonnull @c__1, ptr noundef %gep1521, ptr noundef nonnull @c__1)
  %706 = load double, ptr %26, align 8, !tbaa !9
  %707 = load <2 x double>, ptr %22, align 16, !tbaa !9
  %708 = insertelement <2 x double> poison, double %706, i64 0
  %709 = shufflevector <2 x double> %708, <2 x double> poison, <2 x i32> zeroinitializer
  %710 = fdiv <2 x double> %707, %709
  store <2 x double> %710, ptr %21, align 16, !tbaa !9
  %711 = extractelement <2 x double> %710, i64 0
  store double %711, ptr %25, align 16, !tbaa !11
  %712 = extractelement <2 x double> %710, i64 1
  br label %752

713:                                              ; preds = %674
  %714 = fdiv double %672, %142
  %715 = fcmp ole double %675, %714
  %716 = fdiv double %142, %672
  %717 = fcmp ogt double %675, %716
  br i1 %717, label %718, label %734

718:                                              ; preds = %713
  %719 = load i32, ptr %30, align 4, !tbaa !5
  %720 = mul nsw i32 %719, %41
  %721 = sext i32 %720 to i64
  %gep1537 = getelementptr %struct.doublecomplex, ptr %invariant.gep1751, i64 %721
  %722 = mul nsw i64 %indvars.iv.next1833, %587
  %gep1539 = getelementptr %struct.doublecomplex, ptr %invariant.gep1751, i64 %722
  call void @zdotc_(ptr noundef nonnull %23, ptr noundef nonnull %3, ptr noundef %gep1537, ptr noundef nonnull @c__1, ptr noundef %gep1539, ptr noundef nonnull @c__1)
  %723 = load double, ptr %24, align 8, !tbaa !9
  %724 = load <2 x double>, ptr %23, align 16, !tbaa !9
  %725 = insertelement <2 x double> poison, double %723, i64 0
  %726 = shufflevector <2 x double> %725, <2 x double> poison, <2 x i32> zeroinitializer
  %727 = fdiv <2 x double> %724, %726
  store <2 x double> %727, ptr %22, align 16, !tbaa !9
  %728 = load double, ptr %26, align 8, !tbaa !9
  %729 = insertelement <2 x double> poison, double %728, i64 0
  %730 = shufflevector <2 x double> %729, <2 x double> poison, <2 x i32> zeroinitializer
  %731 = fdiv <2 x double> %727, %730
  store <2 x double> %731, ptr %21, align 16, !tbaa !9
  %732 = extractelement <2 x double> %731, i64 0
  store double %732, ptr %25, align 16, !tbaa !11
  %733 = extractelement <2 x double> %731, i64 1
  br label %752

734:                                              ; preds = %713
  %735 = mul nsw i64 %indvars.iv.next1833, %587
  %gep1527 = getelementptr %struct.doublecomplex, ptr %invariant.gep1751, i64 %735
  %736 = load i32, ptr %4, align 4, !tbaa !5
  %737 = sext i32 %736 to i64
  %gep1529 = getelementptr %struct.doublecomplex, ptr %11, i64 %737
  call void @zcopy_(ptr noundef nonnull %3, ptr noundef %gep1527, ptr noundef nonnull @c__1, ptr noundef %gep1529, ptr noundef nonnull @c__1) #9
  %738 = load i32, ptr %4, align 4, !tbaa !5
  %739 = sext i32 %738 to i64
  %gep1531 = getelementptr %struct.doublecomplex, ptr %11, i64 %739
  call void @zlascl_(ptr noundef nonnull @.str.7, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %26, ptr noundef nonnull @c_b42, ptr noundef nonnull %3, ptr noundef nonnull @c__1, ptr noundef %gep1531, ptr noundef nonnull %6, ptr noundef nonnull %27) #9
  %740 = load i32, ptr %30, align 4, !tbaa !5
  %741 = mul nsw i32 %740, %41
  %742 = sext i32 %741 to i64
  %gep1533 = getelementptr %struct.doublecomplex, ptr %invariant.gep1751, i64 %742
  %743 = load i32, ptr %4, align 4, !tbaa !5
  %744 = sext i32 %743 to i64
  %gep1535 = getelementptr %struct.doublecomplex, ptr %11, i64 %744
  call void @zdotc_(ptr noundef nonnull %22, ptr noundef nonnull %3, ptr noundef %gep1533, ptr noundef nonnull @c__1, ptr noundef %gep1535, ptr noundef nonnull @c__1)
  %745 = load double, ptr %24, align 8, !tbaa !9
  %746 = load <2 x double>, ptr %22, align 16, !tbaa !9
  %747 = insertelement <2 x double> poison, double %745, i64 0
  %748 = shufflevector <2 x double> %747, <2 x double> poison, <2 x i32> zeroinitializer
  %749 = fdiv <2 x double> %746, %748
  store <2 x double> %749, ptr %21, align 16, !tbaa !9
  %750 = extractelement <2 x double> %749, i64 0
  store double %750, ptr %25, align 16, !tbaa !11
  %751 = extractelement <2 x double> %749, i64 1
  br label %752

752:                                              ; preds = %718, %734, %685, %698
  %.sink1899 = phi double [ %733, %718 ], [ %751, %734 ], [ %697, %685 ], [ %712, %698 ]
  %.01261.in = phi i1 [ %715, %718 ], [ %715, %734 ], [ %679, %685 ], [ %679, %698 ]
  store double %.sink1899, ptr %586, align 8, !tbaa !13
  %753 = call { double, double } @Cd(ptr noundef nonnull %25)
  %754 = extractvalue { double, double } %753, 0
  %755 = extractvalue { double, double } %753, 1
  %756 = call double @cabs(double noundef %754, double noundef %755) #9
  %757 = fneg double %756
  %758 = fcmp oge double %.41242, %756
  %759 = select i1 %758, double %.41242, double %756
  %760 = fcmp ole double %756, 0.000000e+00
  %761 = select i1 %760, double %757, double %756
  %762 = load double, ptr %38, align 8, !tbaa !9
  %763 = fcmp ogt double %761, %762
  br i1 %763, label %764, label %990

764:                                              ; preds = %752
  %765 = call { double, double } @Cd(ptr noundef nonnull %25)
  %766 = extractvalue { double, double } %765, 0
  %767 = extractvalue { double, double } %765, 1
  %768 = call double @cabs(double noundef %766, double noundef %767) #9
  %769 = load <2 x double>, ptr %25, align 16, !tbaa !9
  %770 = insertelement <2 x double> poison, double %768, i64 0
  %771 = shufflevector <2 x double> %770, <2 x double> poison, <2 x i32> zeroinitializer
  %772 = fdiv <2 x double> %769, %771
  store <2 x double> %772, ptr %21, align 16, !tbaa !9
  store <2 x double> %772, ptr %28, align 16, !tbaa !9
  %.41206 = select i1 %609, i32 0, i32 %.31205
  %.41199 = add nsw i32 %.31198, %610
  %.1 = select i1 %609, i32 0, i32 %.01171
  br i1 %.01261.in, label %773, label %927

773:                                              ; preds = %764
  %774 = load double, ptr %26, align 8, !tbaa !9
  %775 = load double, ptr %24, align 8, !tbaa !9
  %776 = insertelement <2 x double> poison, double %774, i64 0
  %777 = insertelement <2 x double> %776, double %775, i64 1
  %778 = insertelement <2 x double> poison, double %775, i64 0
  %779 = insertelement <2 x double> %778, double %774, i64 1
  %780 = fdiv <2 x double> %777, %779
  %shift = shufflevector <2 x double> %780, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %781 = fsub <2 x double> %780, %shift
  %782 = extractelement <2 x double> %781, i64 0
  %783 = fcmp oge double %782, 0.000000e+00
  %784 = fneg double %782
  %785 = select i1 %783, double %782, double %784
  %786 = fmul double %785, -5.000000e-01
  %787 = fdiv double %786, %757
  %788 = fcmp oge double %787, 0.000000e+00
  %789 = fneg double %787
  %790 = select i1 %788, double %787, double %789
  %791 = fcmp ogt double %790, %145
  br i1 %791, label %792, label %849

792:                                              ; preds = %773
  %793 = fdiv double 5.000000e-01, %787
  store double %793, ptr %31, align 8, !tbaa !9
  store double 1.000000e+00, ptr %36, align 8, !tbaa !9
  %794 = call { double, double } @Cd(ptr noundef nonnull %28)
  %795 = extractvalue { double, double } %794, 0
  %796 = extractvalue { double, double } %794, 1
  %797 = fneg double %796
  %798 = call ptr @_pCd(ptr noundef nonnull %22)
  %799 = getelementptr inbounds i8, ptr %798, i64 8
  store double %795, ptr %798, align 8
  store double %797, ptr %799, align 8
  %800 = load double, ptr %31, align 8, !tbaa !9
  %801 = load <2 x double>, ptr %22, align 16, !tbaa !9
  %802 = insertelement <2 x double> poison, double %800, i64 0
  %803 = shufflevector <2 x double> %802, <2 x double> poison, <2 x i32> zeroinitializer
  %804 = fmul <2 x double> %803, %801
  store <2 x double> %804, ptr %21, align 16, !tbaa !9
  %805 = load i32, ptr %30, align 4, !tbaa !5
  %806 = mul nsw i32 %805, %41
  %807 = sext i32 %806 to i64
  %gep1559 = getelementptr %struct.doublecomplex, ptr %invariant.gep1751, i64 %807
  %808 = mul nsw i64 %indvars.iv.next1833, %587
  %gep1561 = getelementptr %struct.doublecomplex, ptr %invariant.gep1751, i64 %808
  call void @zrot_(ptr noundef nonnull %3, ptr noundef %gep1559, ptr noundef nonnull @c__1, ptr noundef %gep1561, ptr noundef nonnull @c__1, ptr noundef nonnull %36, ptr noundef nonnull %21) #9
  br i1 %or.cond5, label %809, label %825

809:                                              ; preds = %792
  %810 = call { double, double } @Cd(ptr noundef nonnull %28)
  %811 = extractvalue { double, double } %810, 0
  %812 = extractvalue { double, double } %810, 1
  %813 = fneg double %812
  %814 = call ptr @_pCd(ptr noundef nonnull %22)
  %815 = getelementptr inbounds i8, ptr %814, i64 8
  store double %811, ptr %814, align 8
  store double %813, ptr %815, align 8
  %816 = load double, ptr %31, align 8, !tbaa !9
  %817 = load <2 x double>, ptr %22, align 16, !tbaa !9
  %818 = insertelement <2 x double> poison, double %816, i64 0
  %819 = shufflevector <2 x double> %818, <2 x double> poison, <2 x i32> zeroinitializer
  %820 = fmul <2 x double> %819, %817
  store <2 x double> %820, ptr %21, align 16, !tbaa !9
  %821 = load i32, ptr %30, align 4, !tbaa !5
  %822 = mul nsw i32 %821, %44
  %823 = sext i32 %822 to i64
  %gep1563 = getelementptr %struct.doublecomplex, ptr %invariant.gep1578, i64 %823
  %824 = mul nsw i64 %indvars.iv.next1833, %588
  %gep1565 = getelementptr %struct.doublecomplex, ptr %invariant.gep1578, i64 %824
  call void @zrot_(ptr noundef nonnull %39, ptr noundef %gep1563, ptr noundef nonnull @c__1, ptr noundef %gep1565, ptr noundef nonnull @c__1, ptr noundef nonnull %36, ptr noundef nonnull %21) #9
  br label %825

825:                                              ; preds = %809, %792
  %826 = load double, ptr %31, align 8
  %827 = load double, ptr %26, align 8, !tbaa !9
  %828 = fneg double %826
  %829 = insertelement <2 x double> poison, double %828, i64 0
  %830 = insertelement <2 x double> %829, double %826, i64 1
  %831 = fmul <2 x double> %780, %830
  %832 = insertelement <2 x double> poison, double %757, i64 0
  %833 = shufflevector <2 x double> %832, <2 x double> poison, <2 x i32> zeroinitializer
  %834 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %831, <2 x double> %833, <2 x double> <double 1.000000e+00, double 1.000000e+00>)
  %835 = fcmp ole <2 x double> %834, zeroinitializer
  %836 = extractelement <2 x i1> %835, i64 1
  %837 = extractelement <2 x double> %834, i64 1
  %838 = select i1 %836, double 0.000000e+00, double %837
  %sqrt1420 = call double @llvm.sqrt.f64(double %838)
  %839 = fmul double %827, %sqrt1420
  store double %839, ptr %671, align 8, !tbaa !9
  %840 = extractelement <2 x i1> %835, i64 0
  %841 = extractelement <2 x double> %834, i64 0
  %842 = select i1 %840, double 0.000000e+00, double %841
  %sqrt = call double @llvm.sqrt.f64(double %842)
  %843 = load double, ptr %24, align 8, !tbaa !9
  %844 = fmul double %843, %sqrt
  store double %844, ptr %24, align 8, !tbaa !9
  %845 = fcmp oge double %826, 0.000000e+00
  %846 = select i1 %845, double %826, double %828
  %847 = fcmp oge double %.41223, %846
  %848 = select i1 %847, double %.41223, double %846
  br label %914

849:                                              ; preds = %773
  %850 = load double, ptr @c_b42, align 8
  %851 = fcmp oge double %850, 0.000000e+00
  %852 = fneg double %850
  br i1 %760, label %853, label %855

853:                                              ; preds = %849
  %854 = select i1 %851, double %850, double %852
  br label %857

855:                                              ; preds = %849
  %856 = select i1 %851, double %852, double %850
  br label %857

857:                                              ; preds = %855, %853
  %858 = phi double [ %854, %853 ], [ %856, %855 ]
  %859 = fneg double %858
  %860 = call double @llvm.fmuladd.f64(double %787, double %787, double 1.000000e+00)
  %sqrt1424 = call double @llvm.sqrt.f64(double %860)
  %861 = call double @llvm.fmuladd.f64(double %859, double %sqrt1424, double %787)
  %862 = fdiv double 1.000000e+00, %861
  store double %862, ptr %31, align 8, !tbaa !9
  %863 = call double @llvm.fmuladd.f64(double %862, double %862, double 1.000000e+00)
  %864 = fdiv double 1.000000e+00, %863
  %sqrt1423 = call double @llvm.sqrt.f64(double %864)
  store double %sqrt1423, ptr %36, align 8, !tbaa !9
  %865 = fmul double %862, %sqrt1423
  %866 = fcmp oge double %865, 0.000000e+00
  %867 = fneg double %865
  %868 = select i1 %866, double %865, double %867
  %869 = fcmp oge double %.41223, %868
  %870 = select i1 %869, double %.41223, double %868
  %871 = fneg double %862
  %872 = insertelement <2 x double> poison, double %871, i64 0
  %873 = insertelement <2 x double> %872, double %862, i64 1
  %874 = fmul <2 x double> %780, %873
  %875 = insertelement <2 x double> poison, double %757, i64 0
  %876 = shufflevector <2 x double> %875, <2 x double> poison, <2 x i32> zeroinitializer
  %877 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %874, <2 x double> %876, <2 x double> <double 1.000000e+00, double 1.000000e+00>)
  %878 = fcmp ole <2 x double> %877, zeroinitializer
  %879 = extractelement <2 x i1> %878, i64 1
  %880 = extractelement <2 x double> %877, i64 1
  %881 = select i1 %879, double 0.000000e+00, double %880
  %sqrt1422 = call double @llvm.sqrt.f64(double %881)
  %882 = fmul double %774, %sqrt1422
  store double %882, ptr %671, align 8, !tbaa !9
  %883 = extractelement <2 x i1> %878, i64 0
  %884 = extractelement <2 x double> %877, i64 0
  %885 = select i1 %883, double 0.000000e+00, double %884
  %sqrt1421 = call double @llvm.sqrt.f64(double %885)
  %886 = fmul double %775, %sqrt1421
  store double %886, ptr %24, align 8, !tbaa !9
  %887 = call { double, double } @Cd(ptr noundef nonnull %28)
  %888 = extractvalue { double, double } %887, 0
  %889 = extractvalue { double, double } %887, 1
  %890 = fneg double %889
  %891 = call ptr @_pCd(ptr noundef nonnull %22)
  %892 = getelementptr inbounds i8, ptr %891, i64 8
  store double %888, ptr %891, align 8
  store double %890, ptr %892, align 8
  %893 = load <2 x double>, ptr %22, align 16, !tbaa !9
  %894 = insertelement <2 x double> poison, double %865, i64 0
  %895 = shufflevector <2 x double> %894, <2 x double> poison, <2 x i32> zeroinitializer
  %896 = fmul <2 x double> %895, %893
  store <2 x double> %896, ptr %21, align 16, !tbaa !9
  %897 = load i32, ptr %30, align 4, !tbaa !5
  %898 = mul nsw i32 %897, %41
  %899 = sext i32 %898 to i64
  %gep1551 = getelementptr %struct.doublecomplex, ptr %invariant.gep1751, i64 %899
  %900 = mul nsw i64 %indvars.iv.next1833, %587
  %gep1553 = getelementptr %struct.doublecomplex, ptr %invariant.gep1751, i64 %900
  call void @zrot_(ptr noundef nonnull %3, ptr noundef %gep1551, ptr noundef nonnull @c__1, ptr noundef %gep1553, ptr noundef nonnull @c__1, ptr noundef nonnull %36, ptr noundef nonnull %21) #9
  br i1 %or.cond5, label %901, label %914

901:                                              ; preds = %857
  %902 = call { double, double } @Cd(ptr noundef nonnull %28)
  %903 = extractvalue { double, double } %902, 0
  %904 = extractvalue { double, double } %902, 1
  %905 = fneg double %904
  %906 = call ptr @_pCd(ptr noundef nonnull %22)
  %907 = getelementptr inbounds i8, ptr %906, i64 8
  store double %903, ptr %906, align 8
  store double %905, ptr %907, align 8
  %908 = load <2 x double>, ptr %22, align 16, !tbaa !9
  %909 = fmul <2 x double> %895, %908
  store <2 x double> %909, ptr %21, align 16, !tbaa !9
  %910 = load i32, ptr %30, align 4, !tbaa !5
  %911 = mul nsw i32 %910, %44
  %912 = sext i32 %911 to i64
  %gep1555 = getelementptr %struct.doublecomplex, ptr %invariant.gep1578, i64 %912
  %913 = mul nsw i64 %indvars.iv.next1833, %588
  %gep1557 = getelementptr %struct.doublecomplex, ptr %invariant.gep1578, i64 %913
  call void @zrot_(ptr noundef nonnull %39, ptr noundef %gep1555, ptr noundef nonnull @c__1, ptr noundef %gep1557, ptr noundef nonnull @c__1, ptr noundef nonnull %36, ptr noundef nonnull %21) #9
  br label %914

914:                                              ; preds = %857, %901, %825
  %.51224 = phi double [ %848, %825 ], [ %870, %901 ], [ %870, %857 ]
  %915 = load i32, ptr %30, align 4, !tbaa !5
  %916 = getelementptr %struct.doublecomplex, ptr %11, i64 %indvars.iv1832
  %917 = load <2 x double>, ptr %916, align 8, !tbaa !9
  %918 = fneg <2 x double> %917
  store <2 x double> %918, ptr %22, align 16, !tbaa !9
  %919 = load <2 x double>, ptr %28, align 16, !tbaa !9
  %920 = shufflevector <2 x double> %918, <2 x double> %917, <2 x i32> <i32 1, i32 3>
  %921 = fmul <2 x double> %920, %919
  %922 = shufflevector <2 x double> %921, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %923 = shufflevector <2 x double> %918, <2 x double> poison, <2 x i32> zeroinitializer
  %924 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %923, <2 x double> %919, <2 x double> %922)
  store <2 x double> %924, ptr %21, align 16, !tbaa !9
  %925 = sext i32 %915 to i64
  %926 = getelementptr inbounds %struct.doublecomplex, ptr %47, i64 %925
  store <2 x double> %924, ptr %926, align 8, !tbaa !9
  %.pre1857 = load double, ptr %671, align 8, !tbaa !9
  %.pre1858 = load double, ptr %26, align 8, !tbaa !9
  br label %948

927:                                              ; preds = %764
  %928 = load i32, ptr %30, align 4, !tbaa !5
  %929 = mul nsw i32 %928, %41
  %930 = sext i32 %929 to i64
  %gep1541 = getelementptr %struct.doublecomplex, ptr %invariant.gep1751, i64 %930
  %931 = load i32, ptr %4, align 4, !tbaa !5
  %932 = sext i32 %931 to i64
  %gep1543 = getelementptr %struct.doublecomplex, ptr %11, i64 %932
  call void @zcopy_(ptr noundef nonnull %3, ptr noundef %gep1541, ptr noundef nonnull @c__1, ptr noundef %gep1543, ptr noundef nonnull @c__1) #9
  %933 = load i32, ptr %4, align 4, !tbaa !5
  %934 = sext i32 %933 to i64
  %gep1545 = getelementptr %struct.doublecomplex, ptr %11, i64 %934
  call void @zlascl_(ptr noundef nonnull @.str.7, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %24, ptr noundef nonnull @c_b42, ptr noundef nonnull %3, ptr noundef nonnull @c__1, ptr noundef %gep1545, ptr noundef nonnull %6, ptr noundef nonnull %27) #9
  %935 = mul nsw i64 %indvars.iv.next1833, %587
  %gep1547 = getelementptr %struct.doublecomplex, ptr %invariant.gep1751, i64 %935
  call void @zlascl_(ptr noundef nonnull @.str.7, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %26, ptr noundef nonnull @c_b42, ptr noundef nonnull %3, ptr noundef nonnull @c__1, ptr noundef %gep1547, ptr noundef nonnull %6, ptr noundef nonnull %27) #9
  %936 = load <2 x double>, ptr %25, align 16, !tbaa !9
  %937 = fneg <2 x double> %936
  store <2 x double> %937, ptr %21, align 16, !tbaa !9
  %938 = load i32, ptr %4, align 4, !tbaa !5
  %939 = sext i32 %938 to i64
  %gep1549 = getelementptr %struct.doublecomplex, ptr %11, i64 %939
  call void @zaxpy_(ptr noundef nonnull %3, ptr noundef nonnull %21, ptr noundef %gep1549, ptr noundef nonnull @c__1, ptr noundef %gep1547, ptr noundef nonnull @c__1) #9
  call void @zlascl_(ptr noundef nonnull @.str.7, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull @c_b42, ptr noundef nonnull %26, ptr noundef nonnull %3, ptr noundef nonnull @c__1, ptr noundef %gep1547, ptr noundef nonnull %6, ptr noundef nonnull %27) #9
  %940 = call double @llvm.fmuladd.f64(double %756, double %757, double 1.000000e+00)
  %941 = load double, ptr %26, align 8, !tbaa !9
  %942 = fcmp ole double %940, 0.000000e+00
  %943 = select i1 %942, double 0.000000e+00, double %940
  %sqrt1425 = call double @llvm.sqrt.f64(double %943)
  %944 = fmul double %sqrt1425, %941
  store double %944, ptr %671, align 8, !tbaa !9
  %945 = load double, ptr %32, align 8
  %946 = fcmp oge double %.41223, %945
  %947 = select i1 %946, double %.41223, double %945
  br label %948

948:                                              ; preds = %927, %914
  %949 = phi double [ %.pre1858, %914 ], [ %941, %927 ]
  %950 = phi double [ %.pre1857, %914 ], [ %944, %927 ]
  %.61225 = phi double [ %.51224, %914 ], [ %947, %927 ]
  %951 = fdiv double %950, %949
  %952 = fmul double %951, %951
  %953 = fcmp ugt double %952, %139
  br i1 %953, label %966, label %954

954:                                              ; preds = %948
  %955 = fcmp olt double %949, %144
  %956 = fcmp ogt double %949, %141
  %or.cond1397 = and i1 %955, %956
  br i1 %or.cond1397, label %957, label %960

957:                                              ; preds = %954
  %958 = mul nsw i64 %indvars.iv.next1833, %587
  %gep1569 = getelementptr %struct.doublecomplex, ptr %invariant.gep1751, i64 %958
  %959 = call double @dznrm2_(ptr noundef nonnull %3, ptr noundef %gep1569, ptr noundef nonnull @c__1) #9
  br label %.sink.split

960:                                              ; preds = %954
  store double 0.000000e+00, ptr %31, align 8, !tbaa !9
  store double 1.000000e+00, ptr %26, align 8, !tbaa !9
  %961 = mul nsw i64 %indvars.iv.next1833, %587
  %gep1567 = getelementptr %struct.doublecomplex, ptr %invariant.gep1751, i64 %961
  call void @zlassq_(ptr noundef nonnull %3, ptr noundef %gep1567, ptr noundef nonnull @c__1, ptr noundef nonnull %31, ptr noundef nonnull %26) #9
  %962 = load double, ptr %31, align 8, !tbaa !9
  %963 = load double, ptr %26, align 8, !tbaa !9
  %964 = call double @sqrt(double noundef %963) #9
  %965 = fmul double %962, %964
  br label %.sink.split

.sink.split:                                      ; preds = %960, %957
  %.sink1900 = phi double [ %959, %957 ], [ %965, %960 ]
  store double %.sink1900, ptr %671, align 8, !tbaa !9
  br label %966

966:                                              ; preds = %.sink.split, %948
  %967 = load double, ptr %24, align 8, !tbaa !9
  %968 = fdiv double %967, %675
  %969 = fcmp ugt double %968, %139
  br i1 %969, label %994, label %970

970:                                              ; preds = %966
  %971 = fcmp olt double %967, %144
  %972 = fcmp ogt double %967, %141
  %or.cond1398 = and i1 %971, %972
  br i1 %or.cond1398, label %973, label %978

973:                                              ; preds = %970
  %974 = load i32, ptr %30, align 4, !tbaa !5
  %975 = mul nsw i32 %974, %41
  %976 = sext i32 %975 to i64
  %gep1573 = getelementptr %struct.doublecomplex, ptr %invariant.gep1751, i64 %976
  %977 = call double @dznrm2_(ptr noundef nonnull %3, ptr noundef %gep1573, ptr noundef nonnull @c__1) #9
  br label %986

978:                                              ; preds = %970
  store double 0.000000e+00, ptr %31, align 8, !tbaa !9
  store double 1.000000e+00, ptr %24, align 8, !tbaa !9
  %979 = load i32, ptr %30, align 4, !tbaa !5
  %980 = mul nsw i32 %979, %41
  %981 = sext i32 %980 to i64
  %gep1571 = getelementptr %struct.doublecomplex, ptr %invariant.gep1751, i64 %981
  call void @zlassq_(ptr noundef nonnull %3, ptr noundef %gep1571, ptr noundef nonnull @c__1, ptr noundef nonnull %31, ptr noundef nonnull %24) #9
  %982 = load double, ptr %31, align 8, !tbaa !9
  %983 = load double, ptr %24, align 8, !tbaa !9
  %984 = call double @sqrt(double noundef %983) #9
  %985 = fmul double %982, %984
  br label %986

986:                                              ; preds = %978, %973
  %storemerge1387 = phi double [ %985, %978 ], [ %977, %973 ]
  store double %storemerge1387, ptr %24, align 8, !tbaa !9
  %987 = load i32, ptr %30, align 4, !tbaa !5
  %988 = sext i32 %987 to i64
  %989 = getelementptr inbounds double, ptr %40, i64 %988
  store double %storemerge1387, ptr %989, align 8, !tbaa !9
  br label %994

990:                                              ; preds = %752
  %spec.select1399 = add nsw i32 %.31205, %610
  %991 = add nsw i32 %.01171, 1
  br label %994

992:                                              ; preds = %670
  %spec.select1400 = add nsw i32 %.31205, %610
  %993 = add nsw i32 %.01171, 1
  br label %994

994:                                              ; preds = %990, %986, %966, %992
  %.51243 = phi double [ %759, %986 ], [ %759, %966 ], [ %759, %990 ], [ %.41242, %992 ]
  %.71226 = phi double [ %.61225, %986 ], [ %.61225, %966 ], [ %.41223, %990 ], [ %.41223, %992 ]
  %.71209 = phi i32 [ %.41206, %986 ], [ %.41206, %966 ], [ %spec.select1399, %990 ], [ %spec.select1400, %992 ]
  %.51200 = phi i32 [ %.41199, %986 ], [ %.41199, %966 ], [ %.31198, %990 ], [ %.31198, %992 ]
  %.2 = phi i32 [ %.1, %986 ], [ %.1, %966 ], [ %991, %990 ], [ %993, %992 ]
  %995 = icmp sgt i32 %.2, %419
  %or.cond1401 = select i1 %.not1388, i1 %995, i1 false
  br i1 %or.cond1401, label %996, label %667, !llvm.loop !30

996:                                              ; preds = %994
  %.pre1860 = load double, ptr %24, align 8, !tbaa !9
  br i1 %609, label %997, label %.loopexit1437

997:                                              ; preds = %996
  %998 = fneg double %.pre1860
  store double %998, ptr %24, align 8, !tbaa !9
  br label %.loopexit1437

.loopexit1437.loopexit:                           ; preds = %667
  %.pre1859 = load double, ptr %24, align 8, !tbaa !9
  br label %.loopexit1437

.loopexit1437:                                    ; preds = %.loopexit1437.loopexit, %996, %997
  %999 = phi double [ %998, %997 ], [ %.pre1860, %996 ], [ %.pre1859, %.loopexit1437.loopexit ]
  %.61244 = phi double [ %.51243, %997 ], [ %.51243, %996 ], [ %.41242, %.loopexit1437.loopexit ]
  %.81227 = phi double [ %.71226, %997 ], [ %.71226, %996 ], [ %.41223, %.loopexit1437.loopexit ]
  %.81210 = phi i32 [ 0, %997 ], [ 0, %996 ], [ %.31205, %.loopexit1437.loopexit ]
  %.61201 = phi i32 [ %.51200, %997 ], [ %.51200, %996 ], [ %.31198, %.loopexit1437.loopexit ]
  %1000 = load i32, ptr %30, align 4, !tbaa !5
  %1001 = sext i32 %1000 to i64
  %1002 = getelementptr inbounds double, ptr %40, i64 %1001
  store double %999, ptr %1002, align 8, !tbaa !9
  br label %1009

1003:                                             ; preds = %._crit_edge1855
  %1004 = fcmp oeq double %storemerge1382, 0.000000e+00
  %or.cond23 = and i1 %609, %1004
  br i1 %or.cond23, label %1005, label %1009

1005:                                             ; preds = %1003
  store i32 %605, ptr %20, align 4, !tbaa !5
  %1006 = load i32, ptr %4, align 4, !tbaa !5
  %.1402 = call i32 @llvm.smin.i32(i32 %605, i32 %1006)
  %1007 = sub i32 %.212041590, %.pn.in
  %1008 = add i32 %1007, %.1402
  br label %1009

1009:                                             ; preds = %.loopexit1437, %1005, %1003
  %1010 = phi i32 [ %1000, %.loopexit1437 ], [ %.pn.in, %1005 ], [ %.pn.in, %1003 ]
  %.71245 = phi double [ %.61244, %.loopexit1437 ], [ %.312411588, %1005 ], [ %.312411588, %1003 ]
  %.91228 = phi double [ %.81227, %.loopexit1437 ], [ %.312221589, %1005 ], [ %.312221589, %1003 ]
  %.91211 = phi i32 [ %.81210, %.loopexit1437 ], [ %1008, %1005 ], [ %.212041590, %1003 ]
  %.7 = phi i32 [ %.61201, %.loopexit1437 ], [ %.211971591, %1005 ], [ %.211971591, %1003 ]
  %1011 = add nsw i32 %1010, 1
  store i32 %1011, ptr %30, align 4, !tbaa !5
  %1012 = load i32, ptr %19, align 4, !tbaa !5
  %.not1380.not = icmp slt i32 %1010, %1012
  br i1 %.not1380.not, label %611, label %._crit_edge1594.loopexit, !llvm.loop !31

._crit_edge1594.loopexit:                         ; preds = %1009
  %.pre1861 = load i32, ptr %18, align 4, !tbaa !5
  br label %._crit_edge1594

._crit_edge1594:                                  ; preds = %._crit_edge1594.loopexit, %.lr.ph1607
  %1013 = phi i32 [ %602, %.lr.ph1607 ], [ %.pre1861, %._crit_edge1594.loopexit ]
  %.31241.lcssa = phi double [ %.212401600, %.lr.ph1607 ], [ %.71245, %._crit_edge1594.loopexit ]
  %.31222.lcssa = phi double [ %.212211601, %.lr.ph1607 ], [ %.91228, %._crit_edge1594.loopexit ]
  %.21204.lcssa = phi i32 [ %.112031603, %.lr.ph1607 ], [ %.91211, %._crit_edge1594.loopexit ]
  %.21197.lcssa = phi i32 [ %.111961604, %.lr.ph1607 ], [ %.7, %._crit_edge1594.loopexit ]
  %1014 = add nuw nsw i32 %.012181602, 1
  %.not1364.not = icmp slt i32 %.012181602, %1013
  br i1 %.not1364.not, label %.lr.ph1607, label %._crit_edge1608, !llvm.loop !32

._crit_edge1608:                                  ; preds = %._crit_edge1594, %594
  %.21240.lcssa = phi double [ %.112391739, %594 ], [ %.31241.lcssa, %._crit_edge1594 ]
  %.21221.lcssa = phi double [ %.112201740, %594 ], [ %.31222.lcssa, %._crit_edge1594 ]
  %.11203.lcssa = phi i32 [ %.012021741, %594 ], [ %.21204.lcssa, %._crit_edge1594 ]
  %.11196.lcssa = phi i32 [ %.011951742, %594 ], [ %.21197.lcssa, %._crit_edge1594 ]
  store i32 %.01183, ptr %18, align 4, !tbaa !5
  %1015 = add nuw nsw i32 %.011841743, 1
  %.not13651721.not = icmp slt i32 %.011841743, %.01183
  %1016 = mul i32 %.011841743, %spec.select1394
  br i1 %.not13651721.not, label %.lr.ph1728, label %.loopexit1439

.lr.ph1728:                                       ; preds = %._crit_edge1608, %._crit_edge1716
  %1017 = phi i32 [ %1446, %._crit_edge1716 ], [ %.01183, %._crit_edge1608 ]
  %indvars.iv1837 = phi i32 [ %indvars.iv.next1838, %._crit_edge1716 ], [ %indvars.iv1835, %._crit_edge1608 ]
  %.011941726 = phi i32 [ %1447, %._crit_edge1716 ], [ %1015, %._crit_edge1608 ]
  %.81725 = phi i32 [ %.9.lcssa, %._crit_edge1716 ], [ %.11196.lcssa, %._crit_edge1608 ]
  %.1012121724 = phi i32 [ %.111213.lcssa, %._crit_edge1716 ], [ %.11203.lcssa, %._crit_edge1608 ]
  %.1012291723 = phi double [ %.111230.lcssa, %._crit_edge1716 ], [ %.21221.lcssa, %._crit_edge1608 ]
  %.812461722 = phi double [ %.91247.lcssa, %._crit_edge1716 ], [ %.21240.lcssa, %._crit_edge1608 ]
  %1018 = sext i32 %indvars.iv1837 to i64
  %1019 = add nsw i32 %.011941726, -1
  %1020 = mul nsw i32 %1019, %spec.select1394
  store i32 %1016, ptr %20, align 4, !tbaa !5
  %1021 = load i32, ptr %4, align 4, !tbaa !5
  %.1403 = call i32 @llvm.smin.i32(i32 %1016, i32 %1021)
  store i32 %.1403, ptr %19, align 4, !tbaa !5
  store i32 %599, ptr %30, align 4, !tbaa !5
  %.not13681707.not = icmp slt i32 %598, %.1403
  br i1 %.not13681707.not, label %.lr.ph1715, label %._crit_edge1716

.lr.ph1715:                                       ; preds = %.lr.ph1728
  %1022 = mul i32 %.011941726, %spec.select1394
  br label %1023

1023:                                             ; preds = %.lr.ph1715, %1442
  %1024 = phi i32 [ %.1403, %.lr.ph1715 ], [ %1443, %1442 ]
  %.91713 = phi i32 [ %.81725, %.lr.ph1715 ], [ %.13, %1442 ]
  %.1112131712 = phi i32 [ %.1012121724, %.lr.ph1715 ], [ %.16, %1442 ]
  %.1112301711 = phi double [ %.1012291723, %.lr.ph1715 ], [ %.171236, %1442 ]
  %.912471710 = phi double [ %.812461722, %.lr.ph1715 ], [ %.131251, %1442 ]
  %.012561709 = phi i32 [ 0, %.lr.ph1715 ], [ %.41260, %1442 ]
  %storemerge13671708 = phi i32 [ %599, %.lr.ph1715 ], [ %1445, %1442 ]
  %1025 = sext i32 %storemerge13671708 to i64
  %1026 = getelementptr inbounds double, ptr %40, i64 %1025
  %1027 = load double, ptr %1026, align 8, !tbaa !9
  store double %1027, ptr %24, align 8, !tbaa !9
  %1028 = fcmp ogt double %1027, 0.000000e+00
  br i1 %1028, label %1029, label %1433

1029:                                             ; preds = %1023
  %1030 = load i32, ptr %4, align 4, !tbaa !5
  %.1404 = call i32 @llvm.smin.i32(i32 %1022, i32 %1030)
  store i32 %.1404, ptr %20, align 4, !tbaa !5
  %.not13711689.not = icmp slt i32 %1020, %.1404
  br i1 %.not13711689.not, label %.lr.ph1701, label %.loopexit1436

1031:                                             ; preds = %1424
  %1032 = load i32, ptr %20, align 4, !tbaa !5
  %1033 = sext i32 %1032 to i64
  %.not1371.not = icmp slt i64 %indvars.iv.next1840, %1033
  br i1 %.not1371.not, label %.lr.ph1701, label %.loopexit1436.loopexit, !llvm.loop !33

.lr.ph1701:                                       ; preds = %1029, %1031
  %indvars.iv1839 = phi i64 [ %indvars.iv.next1840, %1031 ], [ %1018, %1029 ]
  %.31699 = phi i32 [ %.4, %1031 ], [ 0, %1029 ]
  %.101694 = phi i32 [ %.11, %1031 ], [ %.91713, %1029 ]
  %.1212141693 = phi i32 [ %.131215, %1031 ], [ %.1112131712, %1029 ]
  %.1212311692 = phi double [ %.151234, %1031 ], [ %.1112301711, %1029 ]
  %.1012481691 = phi double [ %.111249, %1031 ], [ %.912471710, %1029 ]
  %.112571690 = phi i32 [ %.21258, %1031 ], [ %.012561709, %1029 ]
  %indvars.iv.next1840 = add nsw i64 %indvars.iv1839, 1
  %1034 = getelementptr double, ptr %7, i64 %indvars.iv1839
  %1035 = load double, ptr %1034, align 8, !tbaa !9
  store double %1035, ptr %26, align 8, !tbaa !9
  %1036 = fcmp ogt double %1035, 0.000000e+00
  br i1 %1036, label %1037, label %1414

1037:                                             ; preds = %.lr.ph1701
  %1038 = load double, ptr %24, align 8, !tbaa !9
  %1039 = fcmp ult double %1035, 1.000000e+00
  %1040 = fcmp ult double %1038, %1035
  br i1 %1039, label %1079, label %1041

1041:                                             ; preds = %1037
  %1042 = fmul double %142, %1038
  %1043 = fcmp ole double %1042, %1035
  %1044 = fmul double %142, %1035
  %1045 = fcmp ole double %1044, %1038
  %.11262.in = select i1 %1040, i1 %1045, i1 %1043
  %1046 = fdiv double %143, %1035
  %1047 = fcmp olt double %1038, %1046
  %1048 = load i32, ptr %30, align 4, !tbaa !5
  %1049 = mul nsw i32 %1048, %41
  %1050 = sext i32 %1049 to i64
  %gep1624 = getelementptr %struct.doublecomplex, ptr %invariant.gep1751, i64 %1050
  br i1 %1047, label %1051, label %1064

1051:                                             ; preds = %1041
  %1052 = mul nsw i64 %indvars.iv.next1840, %587
  %gep1626 = getelementptr %struct.doublecomplex, ptr %invariant.gep1751, i64 %1052
  call void @zdotc_(ptr noundef nonnull %23, ptr noundef nonnull %3, ptr noundef %gep1624, ptr noundef nonnull @c__1, ptr noundef %gep1626, ptr noundef nonnull @c__1)
  %1053 = load double, ptr %26, align 8, !tbaa !9
  %1054 = load <2 x double>, ptr %23, align 16, !tbaa !9
  %1055 = insertelement <2 x double> poison, double %1053, i64 0
  %1056 = shufflevector <2 x double> %1055, <2 x double> poison, <2 x i32> zeroinitializer
  %1057 = fdiv <2 x double> %1054, %1056
  store <2 x double> %1057, ptr %22, align 16, !tbaa !9
  %1058 = load double, ptr %24, align 8, !tbaa !9
  %1059 = insertelement <2 x double> poison, double %1058, i64 0
  %1060 = shufflevector <2 x double> %1059, <2 x double> poison, <2 x i32> zeroinitializer
  %1061 = fdiv <2 x double> %1057, %1060
  store <2 x double> %1061, ptr %21, align 16, !tbaa !9
  %1062 = extractelement <2 x double> %1061, i64 0
  store double %1062, ptr %25, align 16, !tbaa !11
  %1063 = extractelement <2 x double> %1061, i64 1
  br label %1128

1064:                                             ; preds = %1041
  %1065 = load i32, ptr %4, align 4, !tbaa !5
  %1066 = sext i32 %1065 to i64
  %gep1616 = getelementptr %struct.doublecomplex, ptr %11, i64 %1066
  call void @zcopy_(ptr noundef nonnull %3, ptr noundef %gep1624, ptr noundef nonnull @c__1, ptr noundef %gep1616, ptr noundef nonnull @c__1) #9
  %1067 = load i32, ptr %4, align 4, !tbaa !5
  %1068 = sext i32 %1067 to i64
  %gep1618 = getelementptr %struct.doublecomplex, ptr %11, i64 %1068
  call void @zlascl_(ptr noundef nonnull @.str.7, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %24, ptr noundef nonnull @c_b42, ptr noundef nonnull %3, ptr noundef nonnull @c__1, ptr noundef %gep1618, ptr noundef nonnull %6, ptr noundef nonnull %27) #9
  %1069 = load i32, ptr %4, align 4, !tbaa !5
  %1070 = sext i32 %1069 to i64
  %gep1620 = getelementptr %struct.doublecomplex, ptr %11, i64 %1070
  %1071 = mul nsw i64 %indvars.iv.next1840, %587
  %gep1622 = getelementptr %struct.doublecomplex, ptr %invariant.gep1751, i64 %1071
  call void @zdotc_(ptr noundef nonnull %22, ptr noundef nonnull %3, ptr noundef %gep1620, ptr noundef nonnull @c__1, ptr noundef %gep1622, ptr noundef nonnull @c__1)
  %1072 = load double, ptr %26, align 8, !tbaa !9
  %1073 = load <2 x double>, ptr %22, align 16, !tbaa !9
  %1074 = insertelement <2 x double> poison, double %1072, i64 0
  %1075 = shufflevector <2 x double> %1074, <2 x double> poison, <2 x i32> zeroinitializer
  %1076 = fdiv <2 x double> %1073, %1075
  store <2 x double> %1076, ptr %21, align 16, !tbaa !9
  %1077 = extractelement <2 x double> %1076, i64 0
  store double %1077, ptr %25, align 16, !tbaa !11
  %1078 = extractelement <2 x double> %1076, i64 1
  br label %1128

1079:                                             ; preds = %1037
  %1080 = insertelement <2 x double> poison, double %1035, i64 0
  %1081 = insertelement <2 x double> %1080, double %1038, i64 1
  %1082 = fdiv <2 x double> %1081, %590
  %1083 = insertelement <2 x double> poison, double %1038, i64 0
  %1084 = insertelement <2 x double> %1083, double %1035, i64 1
  %1085 = fcmp ole <2 x double> %1084, %1082
  %1086 = extractelement <2 x i1> %1085, i64 0
  %1087 = extractelement <2 x i1> %1085, i64 1
  %.21263.in = select i1 %1040, i1 %1087, i1 %1086
  %1088 = fdiv double %142, %1035
  %1089 = fcmp ogt double %1038, %1088
  br i1 %1089, label %1090, label %1110

1090:                                             ; preds = %1079
  %1091 = load i32, ptr %30, align 4, !tbaa !5
  %1092 = mul nsw i32 %1091, %41
  %1093 = sext i32 %1092 to i64
  %gep1638 = getelementptr %struct.doublecomplex, ptr %invariant.gep1751, i64 %1093
  %1094 = mul nsw i64 %indvars.iv.next1840, %587
  %gep1640 = getelementptr %struct.doublecomplex, ptr %invariant.gep1751, i64 %1094
  call void @zdotc_(ptr noundef nonnull %23, ptr noundef nonnull %3, ptr noundef %gep1638, ptr noundef nonnull @c__1, ptr noundef %gep1640, ptr noundef nonnull @c__1)
  %1095 = load double, ptr %26, align 8
  %1096 = load double, ptr %24, align 8
  %1097 = fcmp oge double %1095, %1096
  %1098 = select i1 %1097, double %1095, double %1096
  %1099 = load <2 x double>, ptr %23, align 16, !tbaa !9
  %1100 = insertelement <2 x double> poison, double %1098, i64 0
  %1101 = shufflevector <2 x double> %1100, <2 x double> poison, <2 x i32> zeroinitializer
  %1102 = fdiv <2 x double> %1099, %1101
  store <2 x double> %1102, ptr %22, align 16, !tbaa !9
  %1103 = fcmp ole double %1095, %1096
  %1104 = select i1 %1103, double %1095, double %1096
  %1105 = insertelement <2 x double> poison, double %1104, i64 0
  %1106 = shufflevector <2 x double> %1105, <2 x double> poison, <2 x i32> zeroinitializer
  %1107 = fdiv <2 x double> %1102, %1106
  store <2 x double> %1107, ptr %21, align 16, !tbaa !9
  %1108 = extractelement <2 x double> %1107, i64 0
  store double %1108, ptr %25, align 16, !tbaa !11
  %1109 = extractelement <2 x double> %1107, i64 1
  br label %1128

1110:                                             ; preds = %1079
  %1111 = mul nsw i64 %indvars.iv.next1840, %587
  %gep1628 = getelementptr %struct.doublecomplex, ptr %invariant.gep1751, i64 %1111
  %1112 = load i32, ptr %4, align 4, !tbaa !5
  %1113 = sext i32 %1112 to i64
  %gep1630 = getelementptr %struct.doublecomplex, ptr %11, i64 %1113
  call void @zcopy_(ptr noundef nonnull %3, ptr noundef %gep1628, ptr noundef nonnull @c__1, ptr noundef %gep1630, ptr noundef nonnull @c__1) #9
  %1114 = load i32, ptr %4, align 4, !tbaa !5
  %1115 = sext i32 %1114 to i64
  %gep1632 = getelementptr %struct.doublecomplex, ptr %11, i64 %1115
  call void @zlascl_(ptr noundef nonnull @.str.7, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %26, ptr noundef nonnull @c_b42, ptr noundef nonnull %3, ptr noundef nonnull @c__1, ptr noundef %gep1632, ptr noundef nonnull %6, ptr noundef nonnull %27) #9
  %1116 = load i32, ptr %30, align 4, !tbaa !5
  %1117 = mul nsw i32 %1116, %41
  %1118 = sext i32 %1117 to i64
  %gep1634 = getelementptr %struct.doublecomplex, ptr %invariant.gep1751, i64 %1118
  %1119 = load i32, ptr %4, align 4, !tbaa !5
  %1120 = sext i32 %1119 to i64
  %gep1636 = getelementptr %struct.doublecomplex, ptr %11, i64 %1120
  call void @zdotc_(ptr noundef nonnull %22, ptr noundef nonnull %3, ptr noundef %gep1634, ptr noundef nonnull @c__1, ptr noundef %gep1636, ptr noundef nonnull @c__1)
  %1121 = load double, ptr %24, align 8, !tbaa !9
  %1122 = load <2 x double>, ptr %22, align 16, !tbaa !9
  %1123 = insertelement <2 x double> poison, double %1121, i64 0
  %1124 = shufflevector <2 x double> %1123, <2 x double> poison, <2 x i32> zeroinitializer
  %1125 = fdiv <2 x double> %1122, %1124
  store <2 x double> %1125, ptr %21, align 16, !tbaa !9
  %1126 = extractelement <2 x double> %1125, i64 0
  store double %1126, ptr %25, align 16, !tbaa !11
  %1127 = extractelement <2 x double> %1125, i64 1
  br label %1128

1128:                                             ; preds = %1090, %1110, %1051, %1064
  %.sink1901 = phi double [ %1109, %1090 ], [ %1127, %1110 ], [ %1063, %1051 ], [ %1078, %1064 ]
  %.31264.in = phi i1 [ %.21263.in, %1090 ], [ %.21263.in, %1110 ], [ %.11262.in, %1051 ], [ %.11262.in, %1064 ]
  store double %.sink1901, ptr %586, align 8, !tbaa !13
  %1129 = call { double, double } @Cd(ptr noundef nonnull %25)
  %1130 = extractvalue { double, double } %1129, 0
  %1131 = extractvalue { double, double } %1129, 1
  %1132 = call double @cabs(double noundef %1130, double noundef %1131) #9
  %1133 = fneg double %1132
  %1134 = fcmp oge double %.1012481691, %1132
  %1135 = select i1 %1134, double %.1012481691, double %1132
  %1136 = fcmp ole double %1132, 0.000000e+00
  %1137 = select i1 %1136, double %1133, double %1132
  %1138 = load double, ptr %38, align 8, !tbaa !9
  %1139 = fcmp ogt double %1137, %1138
  br i1 %1139, label %1140, label %1410

1140:                                             ; preds = %1128
  %1141 = call { double, double } @Cd(ptr noundef nonnull %25)
  %1142 = extractvalue { double, double } %1141, 0
  %1143 = extractvalue { double, double } %1141, 1
  %1144 = call double @cabs(double noundef %1142, double noundef %1143) #9
  %1145 = load <2 x double>, ptr %25, align 16, !tbaa !9
  %1146 = insertelement <2 x double> poison, double %1144, i64 0
  %1147 = shufflevector <2 x double> %1146, <2 x double> poison, <2 x i32> zeroinitializer
  %1148 = fdiv <2 x double> %1145, %1147
  store <2 x double> %1148, ptr %21, align 16, !tbaa !9
  store <2 x double> %1148, ptr %28, align 16, !tbaa !9
  %1149 = add nsw i32 %.101694, 1
  br i1 %.31264.in, label %1150, label %1306

1150:                                             ; preds = %1140
  %1151 = load double, ptr %26, align 8, !tbaa !9
  %1152 = load double, ptr %24, align 8, !tbaa !9
  %1153 = insertelement <2 x double> poison, double %1151, i64 0
  %1154 = insertelement <2 x double> %1153, double %1152, i64 1
  %1155 = insertelement <2 x double> poison, double %1152, i64 0
  %1156 = insertelement <2 x double> %1155, double %1151, i64 1
  %1157 = fdiv <2 x double> %1154, %1156
  %shift2007 = shufflevector <2 x double> %1157, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %1158 = fsub <2 x double> %1157, %shift2007
  %1159 = extractelement <2 x double> %1158, i64 0
  %1160 = fcmp oge double %1159, 0.000000e+00
  %1161 = fneg double %1159
  %1162 = select i1 %1160, double %1159, double %1161
  %1163 = fmul double %1162, -5.000000e-01
  %1164 = fdiv double %1163, %1133
  %1165 = fcmp ogt double %1151, %1038
  %1166 = fneg double %1164
  %.01217 = select i1 %1165, double %1166, double %1164
  %1167 = fcmp oge double %.01217, 0.000000e+00
  %1168 = fneg double %.01217
  %1169 = select i1 %1167, double %.01217, double %1168
  %1170 = fcmp ogt double %1169, %145
  br i1 %1170, label %1171, label %1228

1171:                                             ; preds = %1150
  %1172 = fdiv double 5.000000e-01, %.01217
  store double %1172, ptr %31, align 8, !tbaa !9
  store double 1.000000e+00, ptr %36, align 8, !tbaa !9
  %1173 = call { double, double } @Cd(ptr noundef nonnull %28)
  %1174 = extractvalue { double, double } %1173, 0
  %1175 = extractvalue { double, double } %1173, 1
  %1176 = fneg double %1175
  %1177 = call ptr @_pCd(ptr noundef nonnull %22)
  %1178 = getelementptr inbounds i8, ptr %1177, i64 8
  store double %1174, ptr %1177, align 8
  store double %1176, ptr %1178, align 8
  %1179 = load double, ptr %31, align 8, !tbaa !9
  %1180 = load <2 x double>, ptr %22, align 16, !tbaa !9
  %1181 = insertelement <2 x double> poison, double %1179, i64 0
  %1182 = shufflevector <2 x double> %1181, <2 x double> poison, <2 x i32> zeroinitializer
  %1183 = fmul <2 x double> %1182, %1180
  store <2 x double> %1183, ptr %21, align 16, !tbaa !9
  %1184 = load i32, ptr %30, align 4, !tbaa !5
  %1185 = mul nsw i32 %1184, %41
  %1186 = sext i32 %1185 to i64
  %gep1674 = getelementptr %struct.doublecomplex, ptr %invariant.gep1751, i64 %1186
  %1187 = mul nsw i64 %indvars.iv.next1840, %587
  %gep1676 = getelementptr %struct.doublecomplex, ptr %invariant.gep1751, i64 %1187
  call void @zrot_(ptr noundef nonnull %3, ptr noundef %gep1674, ptr noundef nonnull @c__1, ptr noundef %gep1676, ptr noundef nonnull @c__1, ptr noundef nonnull %36, ptr noundef nonnull %21) #9
  br i1 %or.cond5, label %1188, label %1204

1188:                                             ; preds = %1171
  %1189 = call { double, double } @Cd(ptr noundef nonnull %28)
  %1190 = extractvalue { double, double } %1189, 0
  %1191 = extractvalue { double, double } %1189, 1
  %1192 = fneg double %1191
  %1193 = call ptr @_pCd(ptr noundef nonnull %22)
  %1194 = getelementptr inbounds i8, ptr %1193, i64 8
  store double %1190, ptr %1193, align 8
  store double %1192, ptr %1194, align 8
  %1195 = load double, ptr %31, align 8, !tbaa !9
  %1196 = load <2 x double>, ptr %22, align 16, !tbaa !9
  %1197 = insertelement <2 x double> poison, double %1195, i64 0
  %1198 = shufflevector <2 x double> %1197, <2 x double> poison, <2 x i32> zeroinitializer
  %1199 = fmul <2 x double> %1198, %1196
  store <2 x double> %1199, ptr %21, align 16, !tbaa !9
  %1200 = load i32, ptr %30, align 4, !tbaa !5
  %1201 = mul nsw i32 %1200, %44
  %1202 = sext i32 %1201 to i64
  %gep1678 = getelementptr %struct.doublecomplex, ptr %invariant.gep1578, i64 %1202
  %1203 = mul nsw i64 %indvars.iv.next1840, %588
  %gep1680 = getelementptr %struct.doublecomplex, ptr %invariant.gep1578, i64 %1203
  call void @zrot_(ptr noundef nonnull %39, ptr noundef %gep1678, ptr noundef nonnull @c__1, ptr noundef %gep1680, ptr noundef nonnull @c__1, ptr noundef nonnull %36, ptr noundef nonnull %21) #9
  br label %1204

1204:                                             ; preds = %1188, %1171
  %1205 = load double, ptr %31, align 8
  %1206 = load double, ptr %26, align 8, !tbaa !9
  %1207 = fneg double %1205
  %1208 = insertelement <2 x double> poison, double %1207, i64 0
  %1209 = insertelement <2 x double> %1208, double %1205, i64 1
  %1210 = fmul <2 x double> %1157, %1209
  %1211 = insertelement <2 x double> poison, double %1133, i64 0
  %1212 = shufflevector <2 x double> %1211, <2 x double> poison, <2 x i32> zeroinitializer
  %1213 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1210, <2 x double> %1212, <2 x double> <double 1.000000e+00, double 1.000000e+00>)
  %1214 = fcmp ole <2 x double> %1213, zeroinitializer
  %1215 = extractelement <2 x i1> %1214, i64 1
  %1216 = extractelement <2 x double> %1213, i64 1
  %1217 = select i1 %1215, double 0.000000e+00, double %1216
  %sqrt1427 = call double @llvm.sqrt.f64(double %1217)
  %1218 = fmul double %1206, %sqrt1427
  store double %1218, ptr %1034, align 8, !tbaa !9
  %1219 = extractelement <2 x i1> %1214, i64 0
  %1220 = extractelement <2 x double> %1213, i64 0
  %1221 = select i1 %1219, double 0.000000e+00, double %1220
  %sqrt1426 = call double @llvm.sqrt.f64(double %1221)
  %1222 = load double, ptr %24, align 8, !tbaa !9
  %1223 = fmul double %1222, %sqrt1426
  store double %1223, ptr %24, align 8, !tbaa !9
  %1224 = fcmp oge double %1205, 0.000000e+00
  %1225 = select i1 %1224, double %1205, double %1207
  %1226 = fcmp oge double %.1212311692, %1225
  %1227 = select i1 %1226, double %.1212311692, double %1225
  br label %1293

1228:                                             ; preds = %1150
  %1229 = load double, ptr @c_b42, align 8
  %1230 = fcmp oge double %1229, 0.000000e+00
  %1231 = fneg double %1229
  br i1 %1136, label %1232, label %1234

1232:                                             ; preds = %1228
  %1233 = select i1 %1230, double %1229, double %1231
  br label %1236

1234:                                             ; preds = %1228
  %1235 = select i1 %1230, double %1231, double %1229
  br label %1236

1236:                                             ; preds = %1234, %1232
  %1237 = phi double [ %1233, %1232 ], [ %1235, %1234 ]
  %1238 = fneg double %1237
  %.01237 = select i1 %1165, double %1237, double %1238
  %1239 = call double @llvm.fmuladd.f64(double %.01217, double %.01217, double 1.000000e+00)
  %sqrt1431 = call double @llvm.sqrt.f64(double %1239)
  %1240 = call double @llvm.fmuladd.f64(double %.01237, double %sqrt1431, double %.01217)
  %1241 = fdiv double 1.000000e+00, %1240
  store double %1241, ptr %31, align 8, !tbaa !9
  %1242 = call double @llvm.fmuladd.f64(double %1241, double %1241, double 1.000000e+00)
  %1243 = fdiv double 1.000000e+00, %1242
  %sqrt1430 = call double @llvm.sqrt.f64(double %1243)
  store double %sqrt1430, ptr %36, align 8, !tbaa !9
  %1244 = fmul double %1241, %sqrt1430
  %1245 = fcmp oge double %1244, 0.000000e+00
  %1246 = fneg double %1244
  %1247 = select i1 %1245, double %1244, double %1246
  %1248 = fcmp oge double %.1212311692, %1247
  %1249 = select i1 %1248, double %.1212311692, double %1247
  %1250 = fneg double %1241
  %1251 = insertelement <2 x double> poison, double %1250, i64 0
  %1252 = insertelement <2 x double> %1251, double %1241, i64 1
  %1253 = fmul <2 x double> %1157, %1252
  %1254 = insertelement <2 x double> poison, double %1133, i64 0
  %1255 = shufflevector <2 x double> %1254, <2 x double> poison, <2 x i32> zeroinitializer
  %1256 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1253, <2 x double> %1255, <2 x double> <double 1.000000e+00, double 1.000000e+00>)
  %1257 = fcmp ole <2 x double> %1256, zeroinitializer
  %1258 = extractelement <2 x i1> %1257, i64 1
  %1259 = extractelement <2 x double> %1256, i64 1
  %1260 = select i1 %1258, double 0.000000e+00, double %1259
  %sqrt1429 = call double @llvm.sqrt.f64(double %1260)
  %1261 = fmul double %1151, %sqrt1429
  store double %1261, ptr %1034, align 8, !tbaa !9
  %1262 = extractelement <2 x i1> %1257, i64 0
  %1263 = extractelement <2 x double> %1256, i64 0
  %1264 = select i1 %1262, double 0.000000e+00, double %1263
  %sqrt1428 = call double @llvm.sqrt.f64(double %1264)
  %1265 = fmul double %1152, %sqrt1428
  store double %1265, ptr %24, align 8, !tbaa !9
  %1266 = call { double, double } @Cd(ptr noundef nonnull %28)
  %1267 = extractvalue { double, double } %1266, 0
  %1268 = extractvalue { double, double } %1266, 1
  %1269 = fneg double %1268
  %1270 = call ptr @_pCd(ptr noundef nonnull %22)
  %1271 = getelementptr inbounds i8, ptr %1270, i64 8
  store double %1267, ptr %1270, align 8
  store double %1269, ptr %1271, align 8
  %1272 = load <2 x double>, ptr %22, align 16, !tbaa !9
  %1273 = insertelement <2 x double> poison, double %1244, i64 0
  %1274 = shufflevector <2 x double> %1273, <2 x double> poison, <2 x i32> zeroinitializer
  %1275 = fmul <2 x double> %1274, %1272
  store <2 x double> %1275, ptr %21, align 16, !tbaa !9
  %1276 = load i32, ptr %30, align 4, !tbaa !5
  %1277 = mul nsw i32 %1276, %41
  %1278 = sext i32 %1277 to i64
  %gep1666 = getelementptr %struct.doublecomplex, ptr %invariant.gep1751, i64 %1278
  %1279 = mul nsw i64 %indvars.iv.next1840, %587
  %gep1668 = getelementptr %struct.doublecomplex, ptr %invariant.gep1751, i64 %1279
  call void @zrot_(ptr noundef nonnull %3, ptr noundef %gep1666, ptr noundef nonnull @c__1, ptr noundef %gep1668, ptr noundef nonnull @c__1, ptr noundef nonnull %36, ptr noundef nonnull %21) #9
  br i1 %or.cond5, label %1280, label %1293

1280:                                             ; preds = %1236
  %1281 = call { double, double } @Cd(ptr noundef nonnull %28)
  %1282 = extractvalue { double, double } %1281, 0
  %1283 = extractvalue { double, double } %1281, 1
  %1284 = fneg double %1283
  %1285 = call ptr @_pCd(ptr noundef nonnull %22)
  %1286 = getelementptr inbounds i8, ptr %1285, i64 8
  store double %1282, ptr %1285, align 8
  store double %1284, ptr %1286, align 8
  %1287 = load <2 x double>, ptr %22, align 16, !tbaa !9
  %1288 = fmul <2 x double> %1274, %1287
  store <2 x double> %1288, ptr %21, align 16, !tbaa !9
  %1289 = load i32, ptr %30, align 4, !tbaa !5
  %1290 = mul nsw i32 %1289, %44
  %1291 = sext i32 %1290 to i64
  %gep1670 = getelementptr %struct.doublecomplex, ptr %invariant.gep1578, i64 %1291
  %1292 = mul nsw i64 %indvars.iv.next1840, %588
  %gep1672 = getelementptr %struct.doublecomplex, ptr %invariant.gep1578, i64 %1292
  call void @zrot_(ptr noundef nonnull %39, ptr noundef %gep1670, ptr noundef nonnull @c__1, ptr noundef %gep1672, ptr noundef nonnull @c__1, ptr noundef nonnull %36, ptr noundef nonnull %21) #9
  br label %1293

1293:                                             ; preds = %1236, %1280, %1204
  %.131232 = phi double [ %1227, %1204 ], [ %1249, %1280 ], [ %1249, %1236 ]
  %1294 = load i32, ptr %30, align 4, !tbaa !5
  %1295 = getelementptr %struct.doublecomplex, ptr %11, i64 %indvars.iv1839
  %1296 = load <2 x double>, ptr %1295, align 8, !tbaa !9
  %1297 = fneg <2 x double> %1296
  store <2 x double> %1297, ptr %22, align 16, !tbaa !9
  %1298 = load <2 x double>, ptr %28, align 16, !tbaa !9
  %1299 = shufflevector <2 x double> %1297, <2 x double> %1296, <2 x i32> <i32 1, i32 3>
  %1300 = fmul <2 x double> %1299, %1298
  %1301 = shufflevector <2 x double> %1300, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1302 = shufflevector <2 x double> %1297, <2 x double> poison, <2 x i32> zeroinitializer
  %1303 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1302, <2 x double> %1298, <2 x double> %1301)
  store <2 x double> %1303, ptr %21, align 16, !tbaa !9
  %1304 = sext i32 %1294 to i64
  %1305 = getelementptr inbounds %struct.doublecomplex, ptr %47, i64 %1304
  store <2 x double> %1303, ptr %1305, align 8, !tbaa !9
  br label %1367

1306:                                             ; preds = %1140
  %1307 = load double, ptr %24, align 8, !tbaa !9
  %1308 = load double, ptr %26, align 8, !tbaa !9
  %1309 = fcmp ogt double %1307, %1308
  br i1 %1309, label %1310, label %1331

1310:                                             ; preds = %1306
  %1311 = load i32, ptr %30, align 4, !tbaa !5
  %1312 = mul nsw i32 %1311, %41
  %1313 = sext i32 %1312 to i64
  %gep1656 = getelementptr %struct.doublecomplex, ptr %invariant.gep1751, i64 %1313
  %1314 = load i32, ptr %4, align 4, !tbaa !5
  %1315 = sext i32 %1314 to i64
  %gep1658 = getelementptr %struct.doublecomplex, ptr %11, i64 %1315
  call void @zcopy_(ptr noundef nonnull %3, ptr noundef %gep1656, ptr noundef nonnull @c__1, ptr noundef %gep1658, ptr noundef nonnull @c__1) #9
  %1316 = load i32, ptr %4, align 4, !tbaa !5
  %1317 = sext i32 %1316 to i64
  %gep1660 = getelementptr %struct.doublecomplex, ptr %11, i64 %1317
  call void @zlascl_(ptr noundef nonnull @.str.7, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %24, ptr noundef nonnull @c_b42, ptr noundef nonnull %3, ptr noundef nonnull @c__1, ptr noundef %gep1660, ptr noundef nonnull %6, ptr noundef nonnull %27) #9
  %1318 = mul nsw i64 %indvars.iv.next1840, %587
  %gep1662 = getelementptr %struct.doublecomplex, ptr %invariant.gep1751, i64 %1318
  call void @zlascl_(ptr noundef nonnull @.str.7, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %26, ptr noundef nonnull @c_b42, ptr noundef nonnull %3, ptr noundef nonnull @c__1, ptr noundef %gep1662, ptr noundef nonnull %6, ptr noundef nonnull %27) #9
  %1319 = load <2 x double>, ptr %25, align 16, !tbaa !9
  %1320 = fneg <2 x double> %1319
  store <2 x double> %1320, ptr %21, align 16, !tbaa !9
  %1321 = load i32, ptr %4, align 4, !tbaa !5
  %1322 = sext i32 %1321 to i64
  %gep1664 = getelementptr %struct.doublecomplex, ptr %11, i64 %1322
  call void @zaxpy_(ptr noundef nonnull %3, ptr noundef nonnull %21, ptr noundef %gep1664, ptr noundef nonnull @c__1, ptr noundef %gep1662, ptr noundef nonnull @c__1) #9
  call void @zlascl_(ptr noundef nonnull @.str.7, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull @c_b42, ptr noundef nonnull %26, ptr noundef nonnull %3, ptr noundef nonnull @c__1, ptr noundef %gep1662, ptr noundef nonnull %6, ptr noundef nonnull %27) #9
  %1323 = call double @llvm.fmuladd.f64(double %1132, double %1133, double 1.000000e+00)
  %1324 = load double, ptr %26, align 8, !tbaa !9
  %1325 = fcmp ole double %1323, 0.000000e+00
  %1326 = select i1 %1325, double 0.000000e+00, double %1323
  %sqrt1432 = call double @llvm.sqrt.f64(double %1326)
  %1327 = fmul double %sqrt1432, %1324
  store double %1327, ptr %1034, align 8, !tbaa !9
  %1328 = load double, ptr %32, align 8
  %1329 = fcmp oge double %.1212311692, %1328
  %1330 = select i1 %1329, double %.1212311692, double %1328
  br label %1367

1331:                                             ; preds = %1306
  %1332 = mul nsw i64 %indvars.iv.next1840, %587
  %gep1642 = getelementptr %struct.doublecomplex, ptr %invariant.gep1751, i64 %1332
  %1333 = load i32, ptr %4, align 4, !tbaa !5
  %1334 = sext i32 %1333 to i64
  %gep1644 = getelementptr %struct.doublecomplex, ptr %11, i64 %1334
  call void @zcopy_(ptr noundef nonnull %3, ptr noundef %gep1642, ptr noundef nonnull @c__1, ptr noundef %gep1644, ptr noundef nonnull @c__1) #9
  %1335 = load i32, ptr %4, align 4, !tbaa !5
  %1336 = sext i32 %1335 to i64
  %gep1646 = getelementptr %struct.doublecomplex, ptr %11, i64 %1336
  call void @zlascl_(ptr noundef nonnull @.str.7, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %26, ptr noundef nonnull @c_b42, ptr noundef nonnull %3, ptr noundef nonnull @c__1, ptr noundef %gep1646, ptr noundef nonnull %6, ptr noundef nonnull %27) #9
  %1337 = load i32, ptr %30, align 4, !tbaa !5
  %1338 = mul nsw i32 %1337, %41
  %1339 = sext i32 %1338 to i64
  %gep1648 = getelementptr %struct.doublecomplex, ptr %invariant.gep1751, i64 %1339
  call void @zlascl_(ptr noundef nonnull @.str.7, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %24, ptr noundef nonnull @c_b42, ptr noundef nonnull %3, ptr noundef nonnull @c__1, ptr noundef %gep1648, ptr noundef nonnull %6, ptr noundef nonnull %27) #9
  %1340 = call { double, double } @Cd(ptr noundef nonnull %25)
  %1341 = extractvalue { double, double } %1340, 0
  %1342 = extractvalue { double, double } %1340, 1
  %1343 = fneg double %1342
  %1344 = call ptr @_pCd(ptr noundef nonnull %22)
  %1345 = getelementptr inbounds i8, ptr %1344, i64 8
  store double %1341, ptr %1344, align 8
  store double %1343, ptr %1345, align 8
  %1346 = load <2 x double>, ptr %22, align 16, !tbaa !9
  %1347 = fneg <2 x double> %1346
  store <2 x double> %1347, ptr %21, align 16, !tbaa !9
  %1348 = load i32, ptr %4, align 4, !tbaa !5
  %1349 = sext i32 %1348 to i64
  %gep1650 = getelementptr %struct.doublecomplex, ptr %11, i64 %1349
  %1350 = load i32, ptr %30, align 4, !tbaa !5
  %1351 = mul nsw i32 %1350, %41
  %1352 = sext i32 %1351 to i64
  %gep1652 = getelementptr %struct.doublecomplex, ptr %invariant.gep1751, i64 %1352
  call void @zaxpy_(ptr noundef nonnull %3, ptr noundef nonnull %21, ptr noundef %gep1650, ptr noundef nonnull @c__1, ptr noundef %gep1652, ptr noundef nonnull @c__1) #9
  %1353 = load i32, ptr %30, align 4, !tbaa !5
  %1354 = mul nsw i32 %1353, %41
  %1355 = sext i32 %1354 to i64
  %gep1654 = getelementptr %struct.doublecomplex, ptr %invariant.gep1751, i64 %1355
  call void @zlascl_(ptr noundef nonnull @.str.7, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull @c_b42, ptr noundef nonnull %24, ptr noundef nonnull %3, ptr noundef nonnull @c__1, ptr noundef %gep1654, ptr noundef nonnull %6, ptr noundef nonnull %27) #9
  %1356 = call double @llvm.fmuladd.f64(double %1132, double %1133, double 1.000000e+00)
  %1357 = load double, ptr %24, align 8, !tbaa !9
  %1358 = fcmp ole double %1356, 0.000000e+00
  %1359 = select i1 %1358, double 0.000000e+00, double %1356
  %sqrt1433 = call double @llvm.sqrt.f64(double %1359)
  %1360 = fmul double %sqrt1433, %1357
  %1361 = load i32, ptr %30, align 4, !tbaa !5
  %1362 = sext i32 %1361 to i64
  %1363 = getelementptr inbounds double, ptr %40, i64 %1362
  store double %1360, ptr %1363, align 8, !tbaa !9
  %1364 = load double, ptr %32, align 8
  %1365 = fcmp oge double %.1212311692, %1364
  %1366 = select i1 %1365, double %.1212311692, double %1364
  br label %1367

1367:                                             ; preds = %1310, %1331, %1293
  %.141233 = phi double [ %.131232, %1293 ], [ %1330, %1310 ], [ %1366, %1331 ]
  %1368 = load double, ptr %1034, align 8, !tbaa !9
  %1369 = load double, ptr %26, align 8, !tbaa !9
  %1370 = fdiv double %1368, %1369
  %1371 = fmul double %1370, %1370
  %1372 = fcmp ugt double %1371, %139
  br i1 %1372, label %1385, label %1373

1373:                                             ; preds = %1367
  %1374 = fcmp olt double %1369, %144
  %1375 = fcmp ogt double %1369, %141
  %or.cond1405 = and i1 %1374, %1375
  br i1 %or.cond1405, label %1376, label %1379

1376:                                             ; preds = %1373
  %1377 = mul nsw i64 %indvars.iv.next1840, %587
  %gep1684 = getelementptr %struct.doublecomplex, ptr %invariant.gep1751, i64 %1377
  %1378 = call double @dznrm2_(ptr noundef nonnull %3, ptr noundef %gep1684, ptr noundef nonnull @c__1) #9
  br label %.sink.split1902

1379:                                             ; preds = %1373
  store double 0.000000e+00, ptr %31, align 8, !tbaa !9
  store double 1.000000e+00, ptr %26, align 8, !tbaa !9
  %1380 = mul nsw i64 %indvars.iv.next1840, %587
  %gep1682 = getelementptr %struct.doublecomplex, ptr %invariant.gep1751, i64 %1380
  call void @zlassq_(ptr noundef nonnull %3, ptr noundef %gep1682, ptr noundef nonnull @c__1, ptr noundef nonnull %31, ptr noundef nonnull %26) #9
  %1381 = load double, ptr %31, align 8, !tbaa !9
  %1382 = load double, ptr %26, align 8, !tbaa !9
  %1383 = call double @sqrt(double noundef %1382) #9
  %1384 = fmul double %1381, %1383
  br label %.sink.split1902

.sink.split1902:                                  ; preds = %1379, %1376
  %.sink1903 = phi double [ %1378, %1376 ], [ %1384, %1379 ]
  store double %.sink1903, ptr %1034, align 8, !tbaa !9
  br label %1385

1385:                                             ; preds = %.sink.split1902, %1367
  %1386 = load double, ptr %24, align 8, !tbaa !9
  %1387 = fdiv double %1386, %1038
  %1388 = fmul double %1387, %1387
  %1389 = fcmp ugt double %1388, %139
  br i1 %1389, label %1418, label %1390

1390:                                             ; preds = %1385
  %1391 = fcmp olt double %1386, %144
  %1392 = fcmp ogt double %1386, %141
  %or.cond1406 = and i1 %1391, %1392
  br i1 %or.cond1406, label %1393, label %1398

1393:                                             ; preds = %1390
  %1394 = load i32, ptr %30, align 4, !tbaa !5
  %1395 = mul nsw i32 %1394, %41
  %1396 = sext i32 %1395 to i64
  %gep1688 = getelementptr %struct.doublecomplex, ptr %invariant.gep1751, i64 %1396
  %1397 = call double @dznrm2_(ptr noundef nonnull %3, ptr noundef %gep1688, ptr noundef nonnull @c__1) #9
  br label %1406

1398:                                             ; preds = %1390
  store double 0.000000e+00, ptr %31, align 8, !tbaa !9
  store double 1.000000e+00, ptr %24, align 8, !tbaa !9
  %1399 = load i32, ptr %30, align 4, !tbaa !5
  %1400 = mul nsw i32 %1399, %41
  %1401 = sext i32 %1400 to i64
  %gep1686 = getelementptr %struct.doublecomplex, ptr %invariant.gep1751, i64 %1401
  call void @zlassq_(ptr noundef nonnull %3, ptr noundef %gep1686, ptr noundef nonnull @c__1, ptr noundef nonnull %31, ptr noundef nonnull %24) #9
  %1402 = load double, ptr %31, align 8, !tbaa !9
  %1403 = load double, ptr %24, align 8, !tbaa !9
  %1404 = call double @sqrt(double noundef %1403) #9
  %1405 = fmul double %1402, %1404
  br label %1406

1406:                                             ; preds = %1398, %1393
  %storemerge1372 = phi double [ %1405, %1398 ], [ %1397, %1393 ]
  store double %storemerge1372, ptr %24, align 8, !tbaa !9
  %1407 = load i32, ptr %30, align 4, !tbaa !5
  %1408 = sext i32 %1407 to i64
  %1409 = getelementptr inbounds double, ptr %40, i64 %1408
  store double %storemerge1372, ptr %1409, align 8, !tbaa !9
  br label %1418

1410:                                             ; preds = %1128
  %1411 = add nsw i32 %.1212141693, 1
  %1412 = add nsw i32 %.31699, 1
  %1413 = add nsw i32 %.112571690, 1
  br label %1418

1414:                                             ; preds = %.lr.ph1701
  %1415 = add nsw i32 %.1212141693, 1
  %1416 = add nsw i32 %.31699, 1
  %1417 = add nsw i32 %.112571690, 1
  br label %1418

1418:                                             ; preds = %1410, %1406, %1385, %1414
  %.21258 = phi i32 [ %.112571690, %1406 ], [ %.112571690, %1385 ], [ %1413, %1410 ], [ %1417, %1414 ]
  %.111249 = phi double [ %1135, %1406 ], [ %1135, %1385 ], [ %1135, %1410 ], [ %.1012481691, %1414 ]
  %.151234 = phi double [ %.141233, %1406 ], [ %.141233, %1385 ], [ %.1212311692, %1410 ], [ %.1212311692, %1414 ]
  %.131215 = phi i32 [ 0, %1406 ], [ 0, %1385 ], [ %1411, %1410 ], [ %1415, %1414 ]
  %.11 = phi i32 [ %1149, %1406 ], [ %1149, %1385 ], [ %.101694, %1410 ], [ %.101694, %1414 ]
  %.4 = phi i32 [ 0, %1406 ], [ 0, %1385 ], [ %1412, %1410 ], [ %1416, %1414 ]
  %.not1374 = icmp slt i32 %.21258, %418
  %or.cond1407 = select i1 %.not1373, i1 true, i1 %.not1374
  br i1 %or.cond1407, label %1424, label %1419

1419:                                             ; preds = %1418
  %1420 = load double, ptr %24, align 8, !tbaa !9
  %1421 = load i32, ptr %30, align 4, !tbaa !5
  %1422 = sext i32 %1421 to i64
  %1423 = getelementptr inbounds double, ptr %40, i64 %1422
  store double %1420, ptr %1423, align 8, !tbaa !9
  br label %.loopexit1439

1424:                                             ; preds = %1418
  %1425 = icmp sle i32 %.4, %419
  %or.cond1408.not = select i1 %.not1373, i1 true, i1 %1425
  br i1 %or.cond1408.not, label %1031, label %1426

1426:                                             ; preds = %1424
  %1427 = load double, ptr %24, align 8, !tbaa !9
  %1428 = fneg double %1427
  store double %1428, ptr %24, align 8, !tbaa !9
  br label %.loopexit1436

.loopexit1436.loopexit:                           ; preds = %1031
  %.pre1862 = load double, ptr %24, align 8, !tbaa !9
  br label %.loopexit1436

.loopexit1436:                                    ; preds = %.loopexit1436.loopexit, %1029, %1426
  %1429 = phi double [ %1428, %1426 ], [ %1027, %1029 ], [ %.pre1862, %.loopexit1436.loopexit ]
  %.31259 = phi i32 [ %.21258, %1426 ], [ %.012561709, %1029 ], [ %.21258, %.loopexit1436.loopexit ]
  %.121250 = phi double [ %.111249, %1426 ], [ %.912471710, %1029 ], [ %.111249, %.loopexit1436.loopexit ]
  %.161235 = phi double [ %.151234, %1426 ], [ %.1112301711, %1029 ], [ %.151234, %.loopexit1436.loopexit ]
  %.141216 = phi i32 [ 0, %1426 ], [ %.1112131712, %1029 ], [ %.131215, %.loopexit1436.loopexit ]
  %.12 = phi i32 [ %.11, %1426 ], [ %.91713, %1029 ], [ %.11, %.loopexit1436.loopexit ]
  %1430 = load i32, ptr %30, align 4, !tbaa !5
  %1431 = sext i32 %1430 to i64
  %1432 = getelementptr inbounds double, ptr %40, i64 %1431
  store double %1429, ptr %1432, align 8, !tbaa !9
  %.pre1863 = load i32, ptr %19, align 4, !tbaa !5
  br label %1442

1433:                                             ; preds = %1023
  %1434 = fcmp oeq double %1027, 0.000000e+00
  br i1 %1434, label %1435, label %1439

1435:                                             ; preds = %1433
  store i32 %1022, ptr %20, align 4, !tbaa !5
  %1436 = load i32, ptr %4, align 4, !tbaa !5
  %.1409 = call i32 @llvm.smin.i32(i32 %1022, i32 %1436)
  %1437 = sub i32 %.1112131712, %1020
  %1438 = add i32 %1437, %.1409
  br label %1439

1439:                                             ; preds = %1435, %1433
  %.15 = phi i32 [ %1438, %1435 ], [ %.1112131712, %1433 ]
  %1440 = fcmp olt double %1027, 0.000000e+00
  br i1 %1440, label %1441, label %1442

1441:                                             ; preds = %1439
  br label %1442

1442:                                             ; preds = %.loopexit1436, %1441, %1439
  %1443 = phi i32 [ %.pre1863, %.loopexit1436 ], [ %1024, %1441 ], [ %1024, %1439 ]
  %1444 = phi i32 [ %1430, %.loopexit1436 ], [ %storemerge13671708, %1441 ], [ %storemerge13671708, %1439 ]
  %.41260 = phi i32 [ %.31259, %.loopexit1436 ], [ %.012561709, %1441 ], [ %.012561709, %1439 ]
  %.131251 = phi double [ %.121250, %.loopexit1436 ], [ %.912471710, %1441 ], [ %.912471710, %1439 ]
  %.171236 = phi double [ %.161235, %.loopexit1436 ], [ %.1112301711, %1441 ], [ %.1112301711, %1439 ]
  %.16 = phi i32 [ %.141216, %.loopexit1436 ], [ 0, %1441 ], [ %.15, %1439 ]
  %.13 = phi i32 [ %.12, %.loopexit1436 ], [ %.91713, %1441 ], [ %.91713, %1439 ]
  %1445 = add nsw i32 %1444, 1
  store i32 %1445, ptr %30, align 4, !tbaa !5
  %.not1368.not = icmp slt i32 %1444, %1443
  br i1 %.not1368.not, label %1023, label %._crit_edge1716.loopexit, !llvm.loop !34

._crit_edge1716.loopexit:                         ; preds = %1442
  %.pre1864 = load i32, ptr %18, align 4, !tbaa !5
  br label %._crit_edge1716

._crit_edge1716:                                  ; preds = %._crit_edge1716.loopexit, %.lr.ph1728
  %1446 = phi i32 [ %1017, %.lr.ph1728 ], [ %.pre1864, %._crit_edge1716.loopexit ]
  %.91247.lcssa = phi double [ %.812461722, %.lr.ph1728 ], [ %.131251, %._crit_edge1716.loopexit ]
  %.111230.lcssa = phi double [ %.1012291723, %.lr.ph1728 ], [ %.171236, %._crit_edge1716.loopexit ]
  %.111213.lcssa = phi i32 [ %.1012121724, %.lr.ph1728 ], [ %.16, %._crit_edge1716.loopexit ]
  %.9.lcssa = phi i32 [ %.81725, %.lr.ph1728 ], [ %.13, %._crit_edge1716.loopexit ]
  %1447 = add nuw nsw i32 %.011941726, 1
  %.not1365.not = icmp slt i32 %.011941726, %1446
  %indvars.iv.next1838 = add i32 %indvars.iv1837, %spec.select1394
  br i1 %.not1365.not, label %.lr.ph1728, label %.loopexit1439, !llvm.loop !35

.loopexit1439:                                    ; preds = %._crit_edge1716, %._crit_edge1608, %1419
  %.141252 = phi double [ %.111249, %1419 ], [ %.21240.lcssa, %._crit_edge1608 ], [ %.91247.lcssa, %._crit_edge1716 ]
  %.18 = phi double [ %.151234, %1419 ], [ %.21221.lcssa, %._crit_edge1608 ], [ %.111230.lcssa, %._crit_edge1716 ]
  %.17 = phi i32 [ 0, %1419 ], [ %.11203.lcssa, %._crit_edge1608 ], [ %.111213.lcssa, %._crit_edge1716 ]
  %.14 = phi i32 [ %.11, %1419 ], [ %.11196.lcssa, %._crit_edge1608 ], [ %.9.lcssa, %._crit_edge1716 ]
  store i32 %1016, ptr %19, align 4, !tbaa !5
  %1448 = load i32, ptr %4, align 4, !tbaa !5
  %.1410 = call i32 @llvm.smin.i32(i32 %1016, i32 %1448)
  store i32 %.1410, ptr %18, align 4, !tbaa !5
  %.not13771733.not = icmp slt i32 %598, %.1410
  br i1 %.not13771733.not, label %.lr.ph1736.preheader, label %.loopexit1438

.lr.ph1736.preheader:                             ; preds = %.loopexit1439
  %1449 = sext i32 %.1410 to i64
  %smax = call i64 @llvm.smax.i64(i64 %1449, i64 %595)
  %1450 = add i64 %smax, 1
  %1451 = sub i64 %1450, %595
  %min.iters.check1977 = icmp ult i64 %1451, 4
  br i1 %min.iters.check1977, label %.lr.ph1736.preheader2009, label %vector.ph1978

vector.ph1978:                                    ; preds = %.lr.ph1736.preheader
  %n.vec1980 = and i64 %1451, -4
  %ind.end1981 = add i64 %n.vec1980, %596
  %invariant.gep = getelementptr double, ptr %40, i64 %596
  br label %vector.body1983

vector.body1983:                                  ; preds = %vector.body1983, %vector.ph1978
  %index1984 = phi i64 [ 0, %vector.ph1978 ], [ %index.next1988, %vector.body1983 ]
  %gep2048 = getelementptr double, ptr %invariant.gep, i64 %index1984
  %1452 = getelementptr inbounds i8, ptr %gep2048, i64 16
  %wide.load1986 = load <2 x double>, ptr %gep2048, align 8, !tbaa !9
  %wide.load1987 = load <2 x double>, ptr %1452, align 8, !tbaa !9
  %1453 = fcmp oge <2 x double> %wide.load1986, zeroinitializer
  %1454 = fcmp oge <2 x double> %wide.load1987, zeroinitializer
  %1455 = fneg <2 x double> %wide.load1986
  %1456 = fneg <2 x double> %wide.load1987
  %1457 = select <2 x i1> %1453, <2 x double> %wide.load1986, <2 x double> %1455
  %1458 = select <2 x i1> %1454, <2 x double> %wide.load1987, <2 x double> %1456
  store <2 x double> %1457, ptr %gep2048, align 8, !tbaa !9
  store <2 x double> %1458, ptr %1452, align 8, !tbaa !9
  %index.next1988 = add nuw i64 %index1984, 4
  %1459 = icmp eq i64 %index.next1988, %n.vec1980
  br i1 %1459, label %middle.block1975, label %vector.body1983, !llvm.loop !36

middle.block1975:                                 ; preds = %vector.body1983
  %cmp.n1989 = icmp eq i64 %1451, %n.vec1980
  br i1 %cmp.n1989, label %.loopexit1438.loopexit, label %.lr.ph1736.preheader2009

.lr.ph1736.preheader2009:                         ; preds = %middle.block1975, %.lr.ph1736.preheader
  %indvars.iv1844.ph = phi i64 [ %596, %.lr.ph1736.preheader ], [ %ind.end1981, %middle.block1975 ]
  br label %.lr.ph1736

.lr.ph1736:                                       ; preds = %.lr.ph1736.preheader2009, %.lr.ph1736
  %indvars.iv1844 = phi i64 [ %indvars.iv.next1845, %.lr.ph1736 ], [ %indvars.iv1844.ph, %.lr.ph1736.preheader2009 ]
  %1460 = getelementptr inbounds double, ptr %40, i64 %indvars.iv1844
  %1461 = load double, ptr %1460, align 8, !tbaa !9
  %1462 = fcmp oge double %1461, 0.000000e+00
  %1463 = fneg double %1461
  %1464 = select i1 %1462, double %1461, double %1463
  store double %1464, ptr %1460, align 8, !tbaa !9
  %indvars.iv.next1845 = add nsw i64 %indvars.iv1844, 1
  %.not1377.not = icmp slt i64 %indvars.iv1844, %1449
  br i1 %.not1377.not, label %.lr.ph1736, label %.loopexit1438.loopexit, !llvm.loop !37

._crit_edge1746:                                  ; preds = %.loopexit1438, %.._crit_edge1746_crit_edge
  %1465 = phi i32 [ %.pre1865, %.._crit_edge1746_crit_edge ], [ %1448, %.loopexit1438 ]
  %.11239.lcssa = phi double [ 0.000000e+00, %.._crit_edge1746_crit_edge ], [ %.141252, %.loopexit1438 ]
  %.11220.lcssa = phi double [ 0.000000e+00, %.._crit_edge1746_crit_edge ], [ %.18, %.loopexit1438 ]
  %.01202.lcssa = phi i32 [ 0, %.._crit_edge1746_crit_edge ], [ %.17, %.loopexit1438 ]
  %.01195.lcssa = phi i32 [ 0, %.._crit_edge1746_crit_edge ], [ %.14, %.loopexit1438 ]
  %1466 = sext i32 %1465 to i64
  %1467 = getelementptr inbounds double, ptr %40, i64 %1466
  %1468 = load double, ptr %1467, align 8, !tbaa !9
  %1469 = fcmp olt double %1468, %144
  %1470 = fcmp ogt double %1468, %141
  %or.cond1411 = and i1 %1469, %1470
  br i1 %or.cond1411, label %1471, label %1475

1471:                                             ; preds = %._crit_edge1746
  %1472 = mul nsw i32 %1465, %41
  %1473 = sext i32 %1472 to i64
  %gep1754 = getelementptr %struct.doublecomplex, ptr %invariant.gep1751, i64 %1473
  %1474 = call double @dznrm2_(ptr noundef nonnull %3, ptr noundef %gep1754, ptr noundef nonnull @c__1) #9
  br label %1482

1475:                                             ; preds = %._crit_edge1746
  store double 0.000000e+00, ptr %31, align 8, !tbaa !9
  store double 1.000000e+00, ptr %24, align 8, !tbaa !9
  %1476 = mul nsw i32 %1465, %41
  %1477 = sext i32 %1476 to i64
  %gep1752 = getelementptr %struct.doublecomplex, ptr %invariant.gep1751, i64 %1477
  call void @zlassq_(ptr noundef nonnull %3, ptr noundef %gep1752, ptr noundef nonnull @c__1, ptr noundef nonnull %31, ptr noundef nonnull %24) #9
  %1478 = load double, ptr %31, align 8, !tbaa !9
  %1479 = load double, ptr %24, align 8, !tbaa !9
  %1480 = call double @sqrt(double noundef %1479) #9
  %1481 = fmul double %1478, %1480
  br label %1482

1482:                                             ; preds = %1475, %1471
  %.sink1904 = phi double [ %1481, %1475 ], [ %1474, %1471 ]
  %1483 = load i32, ptr %4, align 4, !tbaa !5
  %1484 = sext i32 %1483 to i64
  %1485 = getelementptr inbounds double, ptr %40, i64 %1484
  store double %.sink1904, ptr %1485, align 8, !tbaa !9
  %1486 = icmp slt i32 %.011861756, %.012541755
  %1487 = fcmp ugt double %.11239.lcssa, %147
  %.not1353 = icmp sgt i32 %.01195.lcssa, %1483
  %or.cond1908 = select i1 %1487, i1 %.not1353, i1 false
  %spec.select1909 = select i1 %or.cond1908, i32 %.012541755, i32 %.011861756
  %.11255 = select i1 %1486, i32 %spec.select1909, i32 %.012541755
  %1488 = add nsw i32 %.11255, 1
  %1489 = icmp sgt i32 %.011861756, %1488
  br i1 %1489, label %1490, label %1502

1490:                                             ; preds = %1482
  %1491 = sitofp i32 %1483 to double
  %1492 = call double @sqrt(double noundef %1491) #9
  %1493 = load double, ptr %38, align 8, !tbaa !9
  %1494 = fmul double %1492, %1493
  %1495 = fcmp olt double %.11239.lcssa, %1494
  br i1 %1495, label %1496, label %1502

1496:                                             ; preds = %1490
  %1497 = load i32, ptr %4, align 4, !tbaa !5
  %1498 = sitofp i32 %1497 to double
  %1499 = fmul double %.11239.lcssa, %1498
  %1500 = fmul double %.11220.lcssa, %1499
  %1501 = fcmp uge double %1500, %1493
  %.not1354 = icmp slt i32 %.01202.lcssa, %407
  %or.cond1412 = select i1 %1501, i1 %.not1354, i1 false
  br i1 %or.cond1412, label %1503, label %1505

1502:                                             ; preds = %1490, %1482
  %.not1354.old = icmp slt i32 %.01202.lcssa, %407
  br i1 %.not1354.old, label %1503, label %1505

1503:                                             ; preds = %1496, %1502
  %1504 = add nuw nsw i32 %.011861756, 1
  %exitcond1847.not = icmp eq i32 %1504, 31
  br i1 %exitcond1847.not, label %1505, label %591, !llvm.loop !38

1505:                                             ; preds = %1496, %1502, %1503
  %.01186.lcssa = phi i32 [ %.011861756, %1496 ], [ %.011861756, %1502 ], [ 31, %1503 ]
  %storemerge1351 = phi i32 [ 0, %1496 ], [ 0, %1502 ], [ 29, %1503 ]
  store i32 %storemerge1351, ptr %15, align 4, !tbaa !5
  store i32 0, ptr %34, align 4, !tbaa !5
  store i32 0, ptr %35, align 4, !tbaa !5
  %1506 = load i32, ptr %4, align 4, !tbaa !5
  %1507 = add nsw i32 %1506, -1
  store i32 %1507, ptr %17, align 4, !tbaa !5
  store i32 1, ptr %30, align 4, !tbaa !5
  %.not13561765 = icmp slt i32 %1506, 2
  br i1 %.not13561765, label %._crit_edge1769, label %.lr.ph1768

.lr.ph1768:                                       ; preds = %1505, %1548
  %storemerge13551766 = phi i32 [ %1549, %1548 ], [ 1, %1505 ]
  %1508 = load i32, ptr %4, align 4, !tbaa !5
  %reass.sub1791 = sub i32 %1508, %storemerge13551766
  %1509 = add i32 %reass.sub1791, 1
  store i32 %1509, ptr %18, align 4, !tbaa !5
  %1510 = sext i32 %storemerge13551766 to i64
  %1511 = getelementptr inbounds double, ptr %40, i64 %1510
  %1512 = call i32 @idamax_(ptr noundef nonnull %18, ptr noundef nonnull %1511, ptr noundef nonnull @c__1) #9
  %1513 = load i32, ptr %30, align 4, !tbaa !5
  %1514 = add i32 %1512, -1
  %1515 = add i32 %1514, %1513
  %.not1363 = icmp eq i32 %1514, 0
  br i1 %.not1363, label %1532, label %1516

1516:                                             ; preds = %.lr.ph1768
  %1517 = sext i32 %1513 to i64
  %1518 = getelementptr inbounds double, ptr %40, i64 %1517
  %1519 = load double, ptr %1518, align 8, !tbaa !9
  store double %1519, ptr %29, align 8, !tbaa !9
  %1520 = sext i32 %1515 to i64
  %1521 = getelementptr inbounds double, ptr %40, i64 %1520
  %1522 = load double, ptr %1521, align 8, !tbaa !9
  store double %1522, ptr %1518, align 8, !tbaa !9
  store double %1519, ptr %1521, align 8, !tbaa !9
  %1523 = mul nsw i32 %1513, %41
  %1524 = sext i32 %1523 to i64
  %gep1758 = getelementptr %struct.doublecomplex, ptr %invariant.gep1751, i64 %1524
  %1525 = mul nsw i32 %1515, %41
  %1526 = sext i32 %1525 to i64
  %gep1760 = getelementptr %struct.doublecomplex, ptr %invariant.gep1751, i64 %1526
  call void @zswap_(ptr noundef nonnull %3, ptr noundef %gep1758, ptr noundef nonnull @c__1, ptr noundef %gep1760, ptr noundef nonnull @c__1) #9
  %.pre1867 = load i32, ptr %30, align 4, !tbaa !5
  br i1 %or.cond5, label %1527, label %1532

1527:                                             ; preds = %1516
  %1528 = mul nsw i32 %.pre1867, %44
  %1529 = sext i32 %1528 to i64
  %gep1762 = getelementptr %struct.doublecomplex, ptr %invariant.gep1578, i64 %1529
  %1530 = mul nsw i32 %1515, %44
  %1531 = sext i32 %1530 to i64
  %gep1764 = getelementptr %struct.doublecomplex, ptr %invariant.gep1578, i64 %1531
  call void @zswap_(ptr noundef nonnull %39, ptr noundef %gep1762, ptr noundef nonnull @c__1, ptr noundef %gep1764, ptr noundef nonnull @c__1) #9
  %.pre1866 = load i32, ptr %30, align 4, !tbaa !5
  br label %1532

1532:                                             ; preds = %1516, %1527, %.lr.ph1768
  %1533 = phi i32 [ %.pre1867, %1516 ], [ %.pre1866, %1527 ], [ %1513, %.lr.ph1768 ]
  %1534 = sext i32 %1533 to i64
  %1535 = getelementptr inbounds double, ptr %40, i64 %1534
  %1536 = load double, ptr %1535, align 8, !tbaa !9
  %1537 = fcmp une double %1536, 0.000000e+00
  br i1 %1537, label %1538, label %1548

1538:                                             ; preds = %1532
  %1539 = load i32, ptr %35, align 4, !tbaa !5
  %1540 = add nsw i32 %1539, 1
  store i32 %1540, ptr %35, align 4, !tbaa !5
  %1541 = load double, ptr %37, align 8, !tbaa !9
  %1542 = fmul double %1536, %1541
  %1543 = load double, ptr %32, align 8, !tbaa !9
  %1544 = fcmp ogt double %1542, %1543
  br i1 %1544, label %1545, label %1548

1545:                                             ; preds = %1538
  %1546 = load i32, ptr %34, align 4, !tbaa !5
  %1547 = add nsw i32 %1546, 1
  store i32 %1547, ptr %34, align 4, !tbaa !5
  br label %1548

1548:                                             ; preds = %1532, %1545, %1538
  %1549 = add nsw i32 %1533, 1
  store i32 %1549, ptr %30, align 4, !tbaa !5
  %1550 = load i32, ptr %17, align 4, !tbaa !5
  %.not1356.not = icmp slt i32 %1533, %1550
  br i1 %.not1356.not, label %.lr.ph1768, label %._crit_edge1769.loopexit, !llvm.loop !39

._crit_edge1769.loopexit:                         ; preds = %1548
  %.pre1868 = load i32, ptr %4, align 4, !tbaa !5
  br label %._crit_edge1769

._crit_edge1769:                                  ; preds = %._crit_edge1769.loopexit, %1505
  %1551 = phi i32 [ %.pre1868, %._crit_edge1769.loopexit ], [ %1506, %1505 ]
  %1552 = sext i32 %1551 to i64
  %1553 = getelementptr inbounds double, ptr %40, i64 %1552
  %1554 = load double, ptr %1553, align 8, !tbaa !9
  %1555 = fcmp une double %1554, 0.000000e+00
  br i1 %1555, label %1556, label %1566

1556:                                             ; preds = %._crit_edge1769
  %1557 = load i32, ptr %35, align 4, !tbaa !5
  %1558 = add nsw i32 %1557, 1
  store i32 %1558, ptr %35, align 4, !tbaa !5
  %1559 = load double, ptr %37, align 8, !tbaa !9
  %1560 = fmul double %1554, %1559
  %1561 = load double, ptr %32, align 8, !tbaa !9
  %1562 = fcmp ogt double %1560, %1561
  br i1 %1562, label %1563, label %1566

1563:                                             ; preds = %1556
  %1564 = load i32, ptr %34, align 4, !tbaa !5
  %1565 = add nsw i32 %1564, 1
  store i32 %1565, ptr %34, align 4, !tbaa !5
  br label %1566

1566:                                             ; preds = %1556, %1563, %._crit_edge1769
  %or.cond25 = or i1 %53, %76
  br i1 %or.cond25, label %1567, label %.loopexit1435

1567:                                             ; preds = %1566
  %1568 = load i32, ptr %35, align 4, !tbaa !5
  store i32 %1568, ptr %17, align 4, !tbaa !5
  store i32 1, ptr %30, align 4, !tbaa !5
  %.not13581772 = icmp slt i32 %1568, 1
  br i1 %.not13581772, label %.loopexit1435, label %.lr.ph1775

.lr.ph1775:                                       ; preds = %1567, %.lr.ph1775
  %storemerge13571773 = phi i32 [ %1574, %.lr.ph1775 ], [ 1, %1567 ]
  %1569 = sext i32 %storemerge13571773 to i64
  %1570 = getelementptr inbounds double, ptr %40, i64 %1569
  %1571 = mul nsw i32 %storemerge13571773, %41
  %1572 = sext i32 %1571 to i64
  %gep1771 = getelementptr %struct.doublecomplex, ptr %invariant.gep1751, i64 %1572
  call void @zlascl_(ptr noundef nonnull @.str.7, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %1570, ptr noundef nonnull @c_b42, ptr noundef nonnull %3, ptr noundef nonnull @c__1, ptr noundef %gep1771, ptr noundef nonnull %3, ptr noundef nonnull %27) #9
  %1573 = load i32, ptr %30, align 4, !tbaa !5
  %1574 = add nsw i32 %1573, 1
  store i32 %1574, ptr %30, align 4, !tbaa !5
  %1575 = load i32, ptr %17, align 4, !tbaa !5
  %.not1358.not = icmp slt i32 %1573, %1575
  br i1 %.not1358.not, label %.lr.ph1775, label %.loopexit1435, !llvm.loop !40

.loopexit1435:                                    ; preds = %.lr.ph1775, %1567, %1566
  br i1 %or.cond5, label %1576, label %.loopexit

1576:                                             ; preds = %.loopexit1435
  %1577 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %1577, ptr %17, align 4, !tbaa !5
  store i32 1, ptr %30, align 4, !tbaa !5
  %.not13601780 = icmp slt i32 %1577, 1
  br i1 %.not13601780, label %.loopexit, label %.lr.ph1783

.lr.ph1783:                                       ; preds = %1576, %.lr.ph1783
  %storemerge13591781 = phi i32 [ %1586, %.lr.ph1783 ], [ 1, %1576 ]
  %1578 = mul nsw i32 %storemerge13591781, %44
  %1579 = sext i32 %1578 to i64
  %gep1777 = getelementptr %struct.doublecomplex, ptr %invariant.gep1578, i64 %1579
  %1580 = call double @dznrm2_(ptr noundef nonnull %39, ptr noundef %gep1777, ptr noundef nonnull @c__1) #9
  %1581 = fdiv double 1.000000e+00, %1580
  store double %1581, ptr %29, align 8, !tbaa !9
  %1582 = load i32, ptr %30, align 4, !tbaa !5
  %1583 = mul nsw i32 %1582, %44
  %1584 = sext i32 %1583 to i64
  %gep1779 = getelementptr %struct.doublecomplex, ptr %invariant.gep1578, i64 %1584
  call void @zdscal_(ptr noundef nonnull %39, ptr noundef nonnull %29, ptr noundef %gep1779, ptr noundef nonnull @c__1) #9
  %1585 = load i32, ptr %30, align 4, !tbaa !5
  %1586 = add nsw i32 %1585, 1
  store i32 %1586, ptr %30, align 4, !tbaa !5
  %1587 = load i32, ptr %17, align 4, !tbaa !5
  %.not1360.not = icmp slt i32 %1585, %1587
  br i1 %.not1360.not, label %.lr.ph1783, label %.loopexit, !llvm.loop !41

.loopexit:                                        ; preds = %.lr.ph1783, %1576, %.loopexit1435
  %1588 = load double, ptr %37, align 8, !tbaa !9
  %1589 = fcmp ogt double %1588, 1.000000e+00
  br i1 %1589, label %1590, label %1594

1590:                                             ; preds = %.loopexit
  %1591 = load double, ptr %7, align 8, !tbaa !9
  %1592 = fdiv double %143, %1588
  %1593 = fcmp olt double %1591, %1592
  br i1 %1593, label %1604, label %1594

1594:                                             ; preds = %1590, %.loopexit
  %1595 = fcmp olt double %1588, 1.000000e+00
  %.pre1870 = load i32, ptr %34, align 4
  br i1 %1595, label %1596, label %1616

1596:                                             ; preds = %1594
  %1597 = call i32 @llvm.smax.i32(i32 %.pre1870, i32 1)
  %1598 = zext nneg i32 %1597 to i64
  %1599 = getelementptr inbounds double, ptr %40, i64 %1598
  %1600 = load double, ptr %1599, align 8, !tbaa !9
  %1601 = load double, ptr %32, align 8, !tbaa !9
  %1602 = fdiv double %1601, %1588
  %1603 = fcmp ogt double %1600, %1602
  br i1 %1603, label %1604, label %1616

1604:                                             ; preds = %1596, %1590
  %1605 = load i32, ptr %4, align 4, !tbaa !5
  %.not13621784 = icmp slt i32 %1605, 1
  br i1 %.not13621784, label %._crit_edge1788, label %.lr.ph1787.preheader

.lr.ph1787.preheader:                             ; preds = %1604
  %1606 = add nuw i32 %1605, 1
  %wide.trip.count1851 = zext i32 %1606 to i64
  %1607 = zext nneg i32 %1605 to i64
  %min.iters.check1992 = icmp ult i32 %1605, 4
  br i1 %min.iters.check1992, label %.lr.ph1787.preheader2008, label %vector.ph1993

vector.ph1993:                                    ; preds = %.lr.ph1787.preheader
  %n.vec1995 = and i64 %1607, 2147483644
  %ind.end1996 = or disjoint i64 %n.vec1995, 1
  %broadcast.splatinsert2003 = insertelement <2 x double> poison, double %1588, i64 0
  %broadcast.splat2004 = shufflevector <2 x double> %broadcast.splatinsert2003, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1998

vector.body1998:                                  ; preds = %vector.body1998, %vector.ph1993
  %index1999 = phi i64 [ 0, %vector.ph1993 ], [ %index.next2005, %vector.body1998 ]
  %1608 = getelementptr double, ptr %7, i64 %index1999
  %1609 = getelementptr inbounds i8, ptr %1608, i64 16
  %wide.load2001 = load <2 x double>, ptr %1608, align 8, !tbaa !9
  %wide.load2002 = load <2 x double>, ptr %1609, align 8, !tbaa !9
  %1610 = fmul <2 x double> %broadcast.splat2004, %wide.load2001
  %1611 = fmul <2 x double> %broadcast.splat2004, %wide.load2002
  store <2 x double> %1610, ptr %1608, align 8, !tbaa !9
  store <2 x double> %1611, ptr %1609, align 8, !tbaa !9
  %index.next2005 = add nuw i64 %index1999, 4
  %1612 = icmp eq i64 %index.next2005, %n.vec1995
  br i1 %1612, label %middle.block1990, label %vector.body1998, !llvm.loop !42

middle.block1990:                                 ; preds = %vector.body1998
  %cmp.n2006 = icmp eq i64 %n.vec1995, %1607
  br i1 %cmp.n2006, label %._crit_edge1788, label %.lr.ph1787.preheader2008

.lr.ph1787.preheader2008:                         ; preds = %middle.block1990, %.lr.ph1787.preheader
  %indvars.iv1848.ph = phi i64 [ 1, %.lr.ph1787.preheader ], [ %ind.end1996, %middle.block1990 ]
  br label %.lr.ph1787

.lr.ph1787:                                       ; preds = %.lr.ph1787.preheader2008, %.lr.ph1787
  %indvars.iv1848 = phi i64 [ %indvars.iv.next1849, %.lr.ph1787 ], [ %indvars.iv1848.ph, %.lr.ph1787.preheader2008 ]
  %1613 = getelementptr inbounds double, ptr %40, i64 %indvars.iv1848
  %1614 = load double, ptr %1613, align 8, !tbaa !9
  %1615 = fmul double %1588, %1614
  store double %1615, ptr %1613, align 8, !tbaa !9
  %indvars.iv.next1849 = add nuw nsw i64 %indvars.iv1848, 1
  %exitcond1852.not = icmp eq i64 %indvars.iv.next1849, %wide.trip.count1851
  br i1 %exitcond1852.not, label %._crit_edge1788, label %.lr.ph1787, !llvm.loop !43

._crit_edge1788:                                  ; preds = %.lr.ph1787, %middle.block1990, %1604
  %.pre1869 = load i32, ptr %34, align 4, !tbaa !5
  br label %1616

1616:                                             ; preds = %._crit_edge1788, %1596, %1594
  %1617 = phi i32 [ %.pre1869, %._crit_edge1788 ], [ %.pre1870, %1596 ], [ %.pre1870, %1594 ]
  %1618 = phi double [ 1.000000e+00, %._crit_edge1788 ], [ %1588, %1596 ], [ %1588, %1594 ]
  store double %1618, ptr %13, align 8, !tbaa !9
  %1619 = load i32, ptr %35, align 4, !tbaa !5
  %1620 = sitofp i32 %1619 to double
  %1621 = getelementptr inbounds i8, ptr %13, i64 8
  store double %1620, ptr %1621, align 8, !tbaa !9
  %1622 = sitofp i32 %1617 to double
  %1623 = getelementptr inbounds i8, ptr %13, i64 16
  store double %1622, ptr %1623, align 8, !tbaa !9
  %1624 = uitofp nneg i32 %.01186.lcssa to double
  %1625 = getelementptr inbounds i8, ptr %13, i64 24
  store double %1624, ptr %1625, align 8, !tbaa !9
  %1626 = getelementptr inbounds i8, ptr %13, i64 32
  store double %.11239.lcssa, ptr %1626, align 8, !tbaa !9
  %1627 = getelementptr inbounds i8, ptr %13, i64 40
  store double %.11220.lcssa, ptr %1627, align 8, !tbaa !9
  br label %1628

1628:                                             ; preds = %125, %127, %1616, %318, %312, %258, %218, %177, %152, %117, %113
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %39) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %35) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %34) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #9
  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 i32 @xerbla_(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

declare void @zlascl_(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 @dlascl_(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 @zgsvj0_(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 @zgsvj1_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @zdotc_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

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

; Function Attrs: nofree nounwind
declare double @cabs(double noundef, double noundef) local_unnamed_addr #5

; Function Attrs: inlinehint nounwind uwtable
declare hidden { double, double } @Cd(ptr noundef) local_unnamed_addr #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden ptr @_pCd(ptr noundef) local_unnamed_addr #4

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

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #6

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

declare void @zdscal_(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.smin.i32(i32, i32) #7

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.sqrt.f64(double) #7

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #8

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x double> @llvm.fmuladd.v2f64(<2 x double>, <2 x double>, <2 x double>) #7

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 = { inlinehint nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #8 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #9 = { 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, !17, !16}
!19 = distinct !{!19, !15}
!20 = distinct !{!20, !15, !16, !17}
!21 = distinct !{!21, !15, !17, !16}
!22 = distinct !{!22, !15}
!23 = distinct !{!23, !15, !16, !17}
!24 = distinct !{!24, !15, !17, !16}
!25 = distinct !{!25, !15}
!26 = distinct !{!26, !15}
!27 = distinct !{!27, !15, !16, !17}
!28 = distinct !{!28, !15, !17, !16}
!29 = distinct !{!29, !15}
!30 = distinct !{!30, !15}
!31 = distinct !{!31, !15}
!32 = distinct !{!32, !15}
!33 = distinct !{!33, !15}
!34 = distinct !{!34, !15}
!35 = distinct !{!35, !15}
!36 = distinct !{!36, !15, !16, !17}
!37 = distinct !{!37, !15, !17, !16}
!38 = distinct !{!38, !15}
!39 = distinct !{!39, !15}
!40 = distinct !{!40, !15}
!41 = distinct !{!41, !15}
!42 = distinct !{!42, !15, !16, !17}
!43 = distinct !{!43, !15, !17, !16}


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