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

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

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

81:                                               ; preds = %8
  store i32 0, ptr %49, align 4, !tbaa !9
  br label %95

82:                                               ; preds = %8
  %83 = load ptr, ptr %9, align 8, !tbaa !5
  %84 = call i32 @lsame_(ptr noundef %83, ptr noundef @.str.1)
  %85 = icmp ne i32 %84, 0
  br i1 %85, label %86, label %87

86:                                               ; preds = %82
  store i32 1, ptr %49, align 4, !tbaa !9
  br label %94

87:                                               ; preds = %82
  %88 = load ptr, ptr %9, align 8, !tbaa !5
  %89 = call i32 @lsame_(ptr noundef %88, ptr noundef @.str.2)
  %90 = icmp ne i32 %89, 0
  br i1 %90, label %91, label %92

91:                                               ; preds = %87
  store i32 2, ptr %49, align 4, !tbaa !9
  br label %93

92:                                               ; preds = %87
  store i32 -1, ptr %49, align 4, !tbaa !9
  br label %93

93:                                               ; preds = %92, %91
  br label %94

94:                                               ; preds = %93, %86
  br label %95

95:                                               ; preds = %94, %81
  %96 = load i32, ptr %49, align 4, !tbaa !9
  %97 = icmp slt i32 %96, 0
  br i1 %97, label %98, label %100

98:                                               ; preds = %95
  %99 = load ptr, ptr %16, align 8, !tbaa !5
  store i32 -1, ptr %99, align 4, !tbaa !9
  br label %130

100:                                              ; preds = %95
  %101 = load ptr, ptr %10, align 8, !tbaa !5
  %102 = load i32, ptr %101, align 4, !tbaa !9
  %103 = icmp slt i32 %102, 0
  br i1 %103, label %104, label %106

104:                                              ; preds = %100
  %105 = load ptr, ptr %16, align 8, !tbaa !5
  store i32 -2, ptr %105, align 4, !tbaa !9
  br label %129

106:                                              ; preds = %100
  %107 = load ptr, ptr %14, align 8, !tbaa !5
  %108 = load i32, ptr %107, align 4, !tbaa !9
  %109 = icmp slt i32 %108, 1
  br i1 %109, label %126, label %110

110:                                              ; preds = %106
  %111 = load i32, ptr %49, align 4, !tbaa !9
  %112 = icmp sgt i32 %111, 0
  br i1 %112, label %113, label %128

113:                                              ; preds = %110
  %114 = load ptr, ptr %14, align 8, !tbaa !5
  %115 = load i32, ptr %114, align 4, !tbaa !9
  %116 = load ptr, ptr %10, align 8, !tbaa !5
  %117 = load i32, ptr %116, align 4, !tbaa !9
  %118 = icmp sge i32 1, %117
  br i1 %118, label %119, label %120

119:                                              ; preds = %113
  br label %123

120:                                              ; preds = %113
  %121 = load ptr, ptr %10, align 8, !tbaa !5
  %122 = load i32, ptr %121, align 4, !tbaa !9
  br label %123

123:                                              ; preds = %120, %119
  %124 = phi i32 [ 1, %119 ], [ %122, %120 ]
  %125 = icmp slt i32 %115, %124
  br i1 %125, label %126, label %128

126:                                              ; preds = %123, %106
  %127 = load ptr, ptr %16, align 8, !tbaa !5
  store i32 -6, ptr %127, align 4, !tbaa !9
  br label %128

128:                                              ; preds = %126, %123, %110
  br label %129

129:                                              ; preds = %128, %104
  br label %130

130:                                              ; preds = %129, %98
  %131 = load ptr, ptr %16, align 8, !tbaa !5
  %132 = load i32, ptr %131, align 4, !tbaa !9
  %133 = icmp ne i32 %132, 0
  br i1 %133, label %134, label %139

134:                                              ; preds = %130
  %135 = load ptr, ptr %16, align 8, !tbaa !5
  %136 = load i32, ptr %135, align 4, !tbaa !9
  %137 = sub nsw i32 0, %136
  store i32 %137, ptr %19, align 4, !tbaa !9
  %138 = call i32 @xerbla_(ptr noundef @.str.3, ptr noundef %19, i32 noundef 6)
  store i32 1, ptr %60, align 4
  br label %1381

139:                                              ; preds = %130
  %140 = load ptr, ptr %10, align 8, !tbaa !5
  %141 = load i32, ptr %140, align 4, !tbaa !9
  %142 = icmp eq i32 %141, 0
  br i1 %142, label %143, label %144

143:                                              ; preds = %139
  store i32 1, ptr %60, align 4
  br label %1381

144:                                              ; preds = %139
  %145 = load ptr, ptr %10, align 8, !tbaa !5
  %146 = load i32, ptr %145, align 4, !tbaa !9
  %147 = icmp eq i32 %146, 1
  br i1 %147, label %148, label %165

148:                                              ; preds = %144
  %149 = load i32, ptr %49, align 4, !tbaa !9
  %150 = icmp eq i32 %149, 2
  br i1 %150, label %151, label %164

151:                                              ; preds = %148
  %152 = load i32, ptr %17, align 4, !tbaa !9
  %153 = add nsw i32 %152, 1
  store i32 %153, ptr %19, align 4, !tbaa !9
  %154 = load ptr, ptr %13, align 8, !tbaa !5
  %155 = load i32, ptr %19, align 4, !tbaa !9
  %156 = sext i32 %155 to i64
  %157 = getelementptr inbounds %struct.doublecomplex, ptr %154, i64 %156
  %158 = getelementptr inbounds %struct.doublecomplex, ptr %157, i32 0, i32 0
  store double 1.000000e+00, ptr %158, align 8, !tbaa !11
  %159 = load ptr, ptr %13, align 8, !tbaa !5
  %160 = load i32, ptr %19, align 4, !tbaa !9
  %161 = sext i32 %160 to i64
  %162 = getelementptr inbounds %struct.doublecomplex, ptr %159, i64 %161
  %163 = getelementptr inbounds %struct.doublecomplex, ptr %162, i32 0, i32 1
  store double 0.000000e+00, ptr %163, align 8, !tbaa !14
  br label %164

164:                                              ; preds = %151, %148
  store i32 1, ptr %60, align 4
  br label %1381

165:                                              ; preds = %144
  %166 = call double @dlamch_(ptr noundef @.str.4)
  store double %166, ptr %56, align 8, !tbaa !15
  %167 = load double, ptr %56, align 8, !tbaa !15
  store double %167, ptr %21, align 8, !tbaa !15
  %168 = load double, ptr %21, align 8, !tbaa !15
  %169 = load double, ptr %21, align 8, !tbaa !15
  %170 = fmul double %168, %169
  store double %170, ptr %59, align 8, !tbaa !15
  %171 = call double @dlamch_(ptr noundef @.str.5)
  store double %171, ptr %44, align 8, !tbaa !15
  %172 = load double, ptr %44, align 8, !tbaa !15
  %173 = fdiv double 1.000000e+00, %172
  store double %173, ptr %45, align 8, !tbaa !15
  %174 = load double, ptr %45, align 8, !tbaa !15
  %175 = call double @sqrt(double noundef %174) #5
  %176 = fdiv double %175, 3.000000e+00
  store double %176, ptr %50, align 8, !tbaa !15
  %177 = load double, ptr %44, align 8, !tbaa !15
  %178 = call double @sqrt(double noundef %177) #5
  %179 = load double, ptr %59, align 8, !tbaa !15
  %180 = fdiv double %178, %179
  store double %180, ptr %47, align 8, !tbaa !15
  %181 = load i32, ptr %49, align 4, !tbaa !9
  %182 = icmp eq i32 %181, 2
  br i1 %182, label %183, label %191

183:                                              ; preds = %165
  %184 = load ptr, ptr %10, align 8, !tbaa !5
  %185 = load ptr, ptr %10, align 8, !tbaa !5
  %186 = load ptr, ptr %13, align 8, !tbaa !5
  %187 = load i32, ptr %18, align 4, !tbaa !9
  %188 = sext i32 %187 to i64
  %189 = getelementptr inbounds %struct.doublecomplex, ptr %186, i64 %188
  %190 = load ptr, ptr %14, align 8, !tbaa !5
  call void @zlaset_(ptr noundef @.str.6, ptr noundef %184, ptr noundef %185, ptr noundef @c_b1, ptr noundef @c_b2, ptr noundef %189, ptr noundef %190)
  br label %191

191:                                              ; preds = %183, %165
  %192 = load ptr, ptr %10, align 8, !tbaa !5
  %193 = load i32, ptr %192, align 4, !tbaa !9
  %194 = mul nsw i32 %193, 30
  store i32 %194, ptr %48, align 4, !tbaa !9
  store i32 0, ptr %24, align 4, !tbaa !9
  store i32 1, ptr %38, align 4, !tbaa !9
  %195 = load ptr, ptr %10, align 8, !tbaa !5
  %196 = load i32, ptr %195, align 4, !tbaa !9
  %197 = sub nsw i32 %196, 1
  store i32 %197, ptr %53, align 4, !tbaa !9
  br label %198

198:                                              ; preds = %1290, %319, %302, %191
  %199 = load i32, ptr %38, align 4, !tbaa !9
  %200 = load ptr, ptr %10, align 8, !tbaa !5
  %201 = load i32, ptr %200, align 4, !tbaa !9
  %202 = icmp sgt i32 %199, %201
  br i1 %202, label %203, label %204

203:                                              ; preds = %198
  br label %1291

204:                                              ; preds = %198
  %205 = load i32, ptr %38, align 4, !tbaa !9
  %206 = icmp sgt i32 %205, 1
  br i1 %206, label %207, label %213

207:                                              ; preds = %204
  %208 = load ptr, ptr %12, align 8, !tbaa !5
  %209 = load i32, ptr %38, align 4, !tbaa !9
  %210 = sub nsw i32 %209, 1
  %211 = sext i32 %210 to i64
  %212 = getelementptr inbounds double, ptr %208, i64 %211
  store double 0.000000e+00, ptr %212, align 8, !tbaa !15
  br label %213

213:                                              ; preds = %207, %204
  %214 = load i32, ptr %38, align 4, !tbaa !9
  %215 = load i32, ptr %53, align 4, !tbaa !9
  %216 = icmp sle i32 %214, %215
  br i1 %216, label %217, label %289

217:                                              ; preds = %213
  %218 = load i32, ptr %53, align 4, !tbaa !9
  store i32 %218, ptr %19, align 4, !tbaa !9
  %219 = load i32, ptr %38, align 4, !tbaa !9
  store i32 %219, ptr %33, align 4, !tbaa !9
  br label %220

220:                                              ; preds = %285, %217
  %221 = load i32, ptr %33, align 4, !tbaa !9
  %222 = load i32, ptr %19, align 4, !tbaa !9
  %223 = icmp sle i32 %221, %222
  br i1 %223, label %224, label %288

224:                                              ; preds = %220
  %225 = load ptr, ptr %12, align 8, !tbaa !5
  %226 = load i32, ptr %33, align 4, !tbaa !9
  %227 = sext i32 %226 to i64
  %228 = getelementptr inbounds double, ptr %225, i64 %227
  %229 = load double, ptr %228, align 8, !tbaa !15
  store double %229, ptr %21, align 8, !tbaa !15
  %230 = load double, ptr %21, align 8, !tbaa !15
  %231 = fcmp oge double %230, 0.000000e+00
  br i1 %231, label %232, label %234

232:                                              ; preds = %224
  %233 = load double, ptr %21, align 8, !tbaa !15
  br label %237

234:                                              ; preds = %224
  %235 = load double, ptr %21, align 8, !tbaa !15
  %236 = fneg double %235
  br label %237

237:                                              ; preds = %234, %232
  %238 = phi double [ %233, %232 ], [ %236, %234 ]
  store double %238, ptr %58, align 8, !tbaa !15
  %239 = load double, ptr %58, align 8, !tbaa !15
  %240 = fcmp oeq double %239, 0.000000e+00
  br i1 %240, label %241, label %242

241:                                              ; preds = %237
  br label %292

242:                                              ; preds = %237
  %243 = load double, ptr %58, align 8, !tbaa !15
  %244 = load ptr, ptr %11, align 8, !tbaa !5
  %245 = load i32, ptr %33, align 4, !tbaa !9
  %246 = sext i32 %245 to i64
  %247 = getelementptr inbounds double, ptr %244, i64 %246
  %248 = load double, ptr %247, align 8, !tbaa !15
  store double %248, ptr %21, align 8, !tbaa !15
  %249 = load double, ptr %21, align 8, !tbaa !15
  %250 = fcmp oge double %249, 0.000000e+00
  br i1 %250, label %251, label %253

251:                                              ; preds = %242
  %252 = load double, ptr %21, align 8, !tbaa !15
  br label %256

253:                                              ; preds = %242
  %254 = load double, ptr %21, align 8, !tbaa !15
  %255 = fneg double %254
  br label %256

256:                                              ; preds = %253, %251
  %257 = phi double [ %252, %251 ], [ %255, %253 ]
  %258 = call double @sqrt(double noundef %257) #5
  %259 = load ptr, ptr %11, align 8, !tbaa !5
  %260 = load i32, ptr %33, align 4, !tbaa !9
  %261 = add nsw i32 %260, 1
  %262 = sext i32 %261 to i64
  %263 = getelementptr inbounds double, ptr %259, i64 %262
  %264 = load double, ptr %263, align 8, !tbaa !15
  store double %264, ptr %22, align 8, !tbaa !15
  %265 = load double, ptr %22, align 8, !tbaa !15
  %266 = fcmp oge double %265, 0.000000e+00
  br i1 %266, label %267, label %269

267:                                              ; preds = %256
  %268 = load double, ptr %22, align 8, !tbaa !15
  br label %272

269:                                              ; preds = %256
  %270 = load double, ptr %22, align 8, !tbaa !15
  %271 = fneg double %270
  br label %272

272:                                              ; preds = %269, %267
  %273 = phi double [ %268, %267 ], [ %271, %269 ]
  %274 = call double @sqrt(double noundef %273) #5
  %275 = fmul double %258, %274
  %276 = load double, ptr %56, align 8, !tbaa !15
  %277 = fmul double %275, %276
  %278 = fcmp ole double %243, %277
  br i1 %278, label %279, label %284

279:                                              ; preds = %272
  %280 = load ptr, ptr %12, align 8, !tbaa !5
  %281 = load i32, ptr %33, align 4, !tbaa !9
  %282 = sext i32 %281 to i64
  %283 = getelementptr inbounds double, ptr %280, i64 %282
  store double 0.000000e+00, ptr %283, align 8, !tbaa !15
  br label %292

284:                                              ; preds = %272
  br label %285

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

288:                                              ; preds = %220
  br label %289

289:                                              ; preds = %288, %213
  %290 = load ptr, ptr %10, align 8, !tbaa !5
  %291 = load i32, ptr %290, align 4, !tbaa !9
  store i32 %291, ptr %33, align 4, !tbaa !9
  br label %292

292:                                              ; preds = %289, %279, %241
  %293 = load i32, ptr %38, align 4, !tbaa !9
  store i32 %293, ptr %32, align 4, !tbaa !9
  %294 = load i32, ptr %32, align 4, !tbaa !9
  store i32 %294, ptr %57, align 4, !tbaa !9
  %295 = load i32, ptr %33, align 4, !tbaa !9
  store i32 %295, ptr %23, align 4, !tbaa !9
  %296 = load i32, ptr %23, align 4, !tbaa !9
  store i32 %296, ptr %46, align 4, !tbaa !9
  %297 = load i32, ptr %33, align 4, !tbaa !9
  %298 = add nsw i32 %297, 1
  store i32 %298, ptr %38, align 4, !tbaa !9
  %299 = load i32, ptr %23, align 4, !tbaa !9
  %300 = load i32, ptr %32, align 4, !tbaa !9
  %301 = icmp eq i32 %299, %300
  br i1 %301, label %302, label %303

302:                                              ; preds = %292
  br label %198

303:                                              ; preds = %292
  %304 = load i32, ptr %23, align 4, !tbaa !9
  %305 = load i32, ptr %32, align 4, !tbaa !9
  %306 = sub nsw i32 %304, %305
  %307 = add nsw i32 %306, 1
  store i32 %307, ptr %19, align 4, !tbaa !9
  %308 = load ptr, ptr %11, align 8, !tbaa !5
  %309 = load i32, ptr %32, align 4, !tbaa !9
  %310 = sext i32 %309 to i64
  %311 = getelementptr inbounds double, ptr %308, i64 %310
  %312 = load ptr, ptr %12, align 8, !tbaa !5
  %313 = load i32, ptr %32, align 4, !tbaa !9
  %314 = sext i32 %313 to i64
  %315 = getelementptr inbounds double, ptr %312, i64 %314
  %316 = call double @dlanst_(ptr noundef @.str.2, ptr noundef %19, ptr noundef %311, ptr noundef %315)
  store double %316, ptr %37, align 8, !tbaa !15
  store i32 0, ptr %43, align 4, !tbaa !9
  %317 = load double, ptr %37, align 8, !tbaa !15
  %318 = fcmp oeq double %317, 0.000000e+00
  br i1 %318, label %319, label %320

319:                                              ; preds = %303
  br label %198

320:                                              ; preds = %303
  %321 = load double, ptr %37, align 8, !tbaa !15
  %322 = load double, ptr %50, align 8, !tbaa !15
  %323 = fcmp ogt double %321, %322
  br i1 %323, label %324, label %344

324:                                              ; preds = %320
  store i32 1, ptr %43, align 4, !tbaa !9
  %325 = load i32, ptr %23, align 4, !tbaa !9
  %326 = load i32, ptr %32, align 4, !tbaa !9
  %327 = sub nsw i32 %325, %326
  %328 = add nsw i32 %327, 1
  store i32 %328, ptr %19, align 4, !tbaa !9
  %329 = load ptr, ptr %11, align 8, !tbaa !5
  %330 = load i32, ptr %32, align 4, !tbaa !9
  %331 = sext i32 %330 to i64
  %332 = getelementptr inbounds double, ptr %329, i64 %331
  %333 = load ptr, ptr %10, align 8, !tbaa !5
  %334 = load ptr, ptr %16, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.7, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %37, ptr noundef %50, ptr noundef %19, ptr noundef @c__1, ptr noundef %332, ptr noundef %333, ptr noundef %334)
  %335 = load i32, ptr %23, align 4, !tbaa !9
  %336 = load i32, ptr %32, align 4, !tbaa !9
  %337 = sub nsw i32 %335, %336
  store i32 %337, ptr %19, align 4, !tbaa !9
  %338 = load ptr, ptr %12, align 8, !tbaa !5
  %339 = load i32, ptr %32, align 4, !tbaa !9
  %340 = sext i32 %339 to i64
  %341 = getelementptr inbounds double, ptr %338, i64 %340
  %342 = load ptr, ptr %10, align 8, !tbaa !5
  %343 = load ptr, ptr %16, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.7, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %37, ptr noundef %50, ptr noundef %19, ptr noundef @c__1, ptr noundef %341, ptr noundef %342, ptr noundef %343)
  br label %369

344:                                              ; preds = %320
  %345 = load double, ptr %37, align 8, !tbaa !15
  %346 = load double, ptr %47, align 8, !tbaa !15
  %347 = fcmp olt double %345, %346
  br i1 %347, label %348, label %368

348:                                              ; preds = %344
  store i32 2, ptr %43, align 4, !tbaa !9
  %349 = load i32, ptr %23, align 4, !tbaa !9
  %350 = load i32, ptr %32, align 4, !tbaa !9
  %351 = sub nsw i32 %349, %350
  %352 = add nsw i32 %351, 1
  store i32 %352, ptr %19, align 4, !tbaa !9
  %353 = load ptr, ptr %11, align 8, !tbaa !5
  %354 = load i32, ptr %32, align 4, !tbaa !9
  %355 = sext i32 %354 to i64
  %356 = getelementptr inbounds double, ptr %353, i64 %355
  %357 = load ptr, ptr %10, align 8, !tbaa !5
  %358 = load ptr, ptr %16, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.7, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %37, ptr noundef %47, ptr noundef %19, ptr noundef @c__1, ptr noundef %356, ptr noundef %357, ptr noundef %358)
  %359 = load i32, ptr %23, align 4, !tbaa !9
  %360 = load i32, ptr %32, align 4, !tbaa !9
  %361 = sub nsw i32 %359, %360
  store i32 %361, ptr %19, align 4, !tbaa !9
  %362 = load ptr, ptr %12, align 8, !tbaa !5
  %363 = load i32, ptr %32, align 4, !tbaa !9
  %364 = sext i32 %363 to i64
  %365 = getelementptr inbounds double, ptr %362, i64 %364
  %366 = load ptr, ptr %10, align 8, !tbaa !5
  %367 = load ptr, ptr %16, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.7, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %37, ptr noundef %47, ptr noundef %19, ptr noundef @c__1, ptr noundef %365, ptr noundef %366, ptr noundef %367)
  br label %368

368:                                              ; preds = %348, %344
  br label %369

369:                                              ; preds = %368, %324
  %370 = load ptr, ptr %11, align 8, !tbaa !5
  %371 = load i32, ptr %23, align 4, !tbaa !9
  %372 = sext i32 %371 to i64
  %373 = getelementptr inbounds double, ptr %370, i64 %372
  %374 = load double, ptr %373, align 8, !tbaa !15
  store double %374, ptr %21, align 8, !tbaa !15
  %375 = load double, ptr %21, align 8, !tbaa !15
  %376 = fcmp oge double %375, 0.000000e+00
  br i1 %376, label %377, label %379

377:                                              ; preds = %369
  %378 = load double, ptr %21, align 8, !tbaa !15
  br label %382

379:                                              ; preds = %369
  %380 = load double, ptr %21, align 8, !tbaa !15
  %381 = fneg double %380
  br label %382

382:                                              ; preds = %379, %377
  %383 = phi double [ %378, %377 ], [ %381, %379 ]
  %384 = load ptr, ptr %11, align 8, !tbaa !5
  %385 = load i32, ptr %32, align 4, !tbaa !9
  %386 = sext i32 %385 to i64
  %387 = getelementptr inbounds double, ptr %384, i64 %386
  %388 = load double, ptr %387, align 8, !tbaa !15
  store double %388, ptr %22, align 8, !tbaa !15
  %389 = load double, ptr %22, align 8, !tbaa !15
  %390 = fcmp oge double %389, 0.000000e+00
  br i1 %390, label %391, label %393

391:                                              ; preds = %382
  %392 = load double, ptr %22, align 8, !tbaa !15
  br label %396

393:                                              ; preds = %382
  %394 = load double, ptr %22, align 8, !tbaa !15
  %395 = fneg double %394
  br label %396

396:                                              ; preds = %393, %391
  %397 = phi double [ %392, %391 ], [ %395, %393 ]
  %398 = fcmp olt double %383, %397
  br i1 %398, label %399, label %402

399:                                              ; preds = %396
  %400 = load i32, ptr %57, align 4, !tbaa !9
  store i32 %400, ptr %23, align 4, !tbaa !9
  %401 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %401, ptr %32, align 4, !tbaa !9
  br label %402

402:                                              ; preds = %399, %396
  %403 = load i32, ptr %23, align 4, !tbaa !9
  %404 = load i32, ptr %32, align 4, !tbaa !9
  %405 = icmp sgt i32 %403, %404
  br i1 %405, label %406, label %808

406:                                              ; preds = %402
  br label %407

407:                                              ; preds = %806, %782, %592, %406
  %408 = load i32, ptr %32, align 4, !tbaa !9
  %409 = load i32, ptr %23, align 4, !tbaa !9
  %410 = icmp ne i32 %408, %409
  br i1 %410, label %411, label %479

411:                                              ; preds = %407
  %412 = load i32, ptr %23, align 4, !tbaa !9
  %413 = sub nsw i32 %412, 1
  store i32 %413, ptr %39, align 4, !tbaa !9
  %414 = load i32, ptr %39, align 4, !tbaa !9
  store i32 %414, ptr %19, align 4, !tbaa !9
  %415 = load i32, ptr %32, align 4, !tbaa !9
  store i32 %415, ptr %33, align 4, !tbaa !9
  br label %416

416:                                              ; preds = %475, %411
  %417 = load i32, ptr %33, align 4, !tbaa !9
  %418 = load i32, ptr %19, align 4, !tbaa !9
  %419 = icmp sle i32 %417, %418
  br i1 %419, label %420, label %478

420:                                              ; preds = %416
  %421 = load ptr, ptr %12, align 8, !tbaa !5
  %422 = load i32, ptr %33, align 4, !tbaa !9
  %423 = sext i32 %422 to i64
  %424 = getelementptr inbounds double, ptr %421, i64 %423
  %425 = load double, ptr %424, align 8, !tbaa !15
  store double %425, ptr %21, align 8, !tbaa !15
  %426 = load double, ptr %21, align 8, !tbaa !15
  %427 = fcmp oge double %426, 0.000000e+00
  br i1 %427, label %428, label %430

428:                                              ; preds = %420
  %429 = load double, ptr %21, align 8, !tbaa !15
  br label %433

430:                                              ; preds = %420
  %431 = load double, ptr %21, align 8, !tbaa !15
  %432 = fneg double %431
  br label %433

433:                                              ; preds = %430, %428
  %434 = phi double [ %429, %428 ], [ %432, %430 ]
  store double %434, ptr %22, align 8, !tbaa !15
  %435 = load double, ptr %22, align 8, !tbaa !15
  %436 = load double, ptr %22, align 8, !tbaa !15
  %437 = fmul double %435, %436
  store double %437, ptr %58, align 8, !tbaa !15
  %438 = load double, ptr %58, align 8, !tbaa !15
  %439 = load double, ptr %59, align 8, !tbaa !15
  %440 = load ptr, ptr %11, align 8, !tbaa !5
  %441 = load i32, ptr %33, align 4, !tbaa !9
  %442 = sext i32 %441 to i64
  %443 = getelementptr inbounds double, ptr %440, i64 %442
  %444 = load double, ptr %443, align 8, !tbaa !15
  store double %444, ptr %21, align 8, !tbaa !15
  %445 = load double, ptr %21, align 8, !tbaa !15
  %446 = fcmp oge double %445, 0.000000e+00
  br i1 %446, label %447, label %449

447:                                              ; preds = %433
  %448 = load double, ptr %21, align 8, !tbaa !15
  br label %452

449:                                              ; preds = %433
  %450 = load double, ptr %21, align 8, !tbaa !15
  %451 = fneg double %450
  br label %452

452:                                              ; preds = %449, %447
  %453 = phi double [ %448, %447 ], [ %451, %449 ]
  %454 = fmul double %439, %453
  %455 = load ptr, ptr %11, align 8, !tbaa !5
  %456 = load i32, ptr %33, align 4, !tbaa !9
  %457 = add nsw i32 %456, 1
  %458 = sext i32 %457 to i64
  %459 = getelementptr inbounds double, ptr %455, i64 %458
  %460 = load double, ptr %459, align 8, !tbaa !15
  store double %460, ptr %22, align 8, !tbaa !15
  %461 = load double, ptr %22, align 8, !tbaa !15
  %462 = fcmp oge double %461, 0.000000e+00
  br i1 %462, label %463, label %465

463:                                              ; preds = %452
  %464 = load double, ptr %22, align 8, !tbaa !15
  br label %468

465:                                              ; preds = %452
  %466 = load double, ptr %22, align 8, !tbaa !15
  %467 = fneg double %466
  br label %468

468:                                              ; preds = %465, %463
  %469 = phi double [ %464, %463 ], [ %467, %465 ]
  %470 = load double, ptr %44, align 8, !tbaa !15
  %471 = call double @llvm.fmuladd.f64(double %454, double %469, double %470)
  %472 = fcmp ole double %438, %471
  br i1 %472, label %473, label %474

473:                                              ; preds = %468
  br label %481

474:                                              ; preds = %468
  br label %475

475:                                              ; preds = %474
  %476 = load i32, ptr %33, align 4, !tbaa !9
  %477 = add nsw i32 %476, 1
  store i32 %477, ptr %33, align 4, !tbaa !9
  br label %416, !llvm.loop !18

478:                                              ; preds = %416
  br label %479

479:                                              ; preds = %478, %407
  %480 = load i32, ptr %23, align 4, !tbaa !9
  store i32 %480, ptr %33, align 4, !tbaa !9
  br label %481

481:                                              ; preds = %479, %473
  %482 = load i32, ptr %33, align 4, !tbaa !9
  %483 = load i32, ptr %23, align 4, !tbaa !9
  %484 = icmp slt i32 %482, %483
  br i1 %484, label %485, label %490

485:                                              ; preds = %481
  %486 = load ptr, ptr %12, align 8, !tbaa !5
  %487 = load i32, ptr %33, align 4, !tbaa !9
  %488 = sext i32 %487 to i64
  %489 = getelementptr inbounds double, ptr %486, i64 %488
  store double 0.000000e+00, ptr %489, align 8, !tbaa !15
  br label %490

490:                                              ; preds = %485, %481
  %491 = load ptr, ptr %11, align 8, !tbaa !5
  %492 = load i32, ptr %32, align 4, !tbaa !9
  %493 = sext i32 %492 to i64
  %494 = getelementptr inbounds double, ptr %491, i64 %493
  %495 = load double, ptr %494, align 8, !tbaa !15
  store double %495, ptr %34, align 8, !tbaa !15
  %496 = load i32, ptr %33, align 4, !tbaa !9
  %497 = load i32, ptr %32, align 4, !tbaa !9
  %498 = icmp eq i32 %496, %497
  br i1 %498, label %499, label %500

499:                                              ; preds = %490
  br label %795

500:                                              ; preds = %490
  %501 = load i32, ptr %33, align 4, !tbaa !9
  %502 = load i32, ptr %32, align 4, !tbaa !9
  %503 = add nsw i32 %502, 1
  %504 = icmp eq i32 %501, %503
  br i1 %504, label %505, label %594

505:                                              ; preds = %500
  %506 = load i32, ptr %49, align 4, !tbaa !9
  %507 = icmp sgt i32 %506, 0
  br i1 %507, label %508, label %557

508:                                              ; preds = %505
  %509 = load ptr, ptr %11, align 8, !tbaa !5
  %510 = load i32, ptr %32, align 4, !tbaa !9
  %511 = sext i32 %510 to i64
  %512 = getelementptr inbounds double, ptr %509, i64 %511
  %513 = load ptr, ptr %12, align 8, !tbaa !5
  %514 = load i32, ptr %32, align 4, !tbaa !9
  %515 = sext i32 %514 to i64
  %516 = getelementptr inbounds double, ptr %513, i64 %515
  %517 = load ptr, ptr %11, align 8, !tbaa !5
  %518 = load i32, ptr %32, align 4, !tbaa !9
  %519 = add nsw i32 %518, 1
  %520 = sext i32 %519 to i64
  %521 = getelementptr inbounds double, ptr %517, i64 %520
  call void @dlaev2_(ptr noundef %512, ptr noundef %516, ptr noundef %521, ptr noundef %54, ptr noundef %55, ptr noundef %26, ptr noundef %36)
  %522 = load double, ptr %26, align 8, !tbaa !15
  %523 = load ptr, ptr %15, align 8, !tbaa !5
  %524 = load i32, ptr %32, align 4, !tbaa !9
  %525 = sext i32 %524 to i64
  %526 = getelementptr inbounds double, ptr %523, i64 %525
  store double %522, ptr %526, align 8, !tbaa !15
  %527 = load double, ptr %36, align 8, !tbaa !15
  %528 = load ptr, ptr %15, align 8, !tbaa !5
  %529 = load ptr, ptr %10, align 8, !tbaa !5
  %530 = load i32, ptr %529, align 4, !tbaa !9
  %531 = sub nsw i32 %530, 1
  %532 = load i32, ptr %32, align 4, !tbaa !9
  %533 = add nsw i32 %531, %532
  %534 = sext i32 %533 to i64
  %535 = getelementptr inbounds double, ptr %528, i64 %534
  store double %527, ptr %535, align 8, !tbaa !15
  %536 = load ptr, ptr %10, align 8, !tbaa !5
  %537 = load ptr, ptr %15, align 8, !tbaa !5
  %538 = load i32, ptr %32, align 4, !tbaa !9
  %539 = sext i32 %538 to i64
  %540 = getelementptr inbounds double, ptr %537, i64 %539
  %541 = load ptr, ptr %15, align 8, !tbaa !5
  %542 = load ptr, ptr %10, align 8, !tbaa !5
  %543 = load i32, ptr %542, align 4, !tbaa !9
  %544 = sub nsw i32 %543, 1
  %545 = load i32, ptr %32, align 4, !tbaa !9
  %546 = add nsw i32 %544, %545
  %547 = sext i32 %546 to i64
  %548 = getelementptr inbounds double, ptr %541, i64 %547
  %549 = load ptr, ptr %13, align 8, !tbaa !5
  %550 = load i32, ptr %32, align 4, !tbaa !9
  %551 = load i32, ptr %17, align 4, !tbaa !9
  %552 = mul nsw i32 %550, %551
  %553 = add nsw i32 %552, 1
  %554 = sext i32 %553 to i64
  %555 = getelementptr inbounds %struct.doublecomplex, ptr %549, i64 %554
  %556 = load ptr, ptr %14, align 8, !tbaa !5
  call void @zlasr_(ptr noundef @.str.8, ptr noundef @.str.1, ptr noundef @.str.9, ptr noundef %536, ptr noundef @c__2, ptr noundef %540, ptr noundef %548, ptr noundef %555, ptr noundef %556)
  br label %571

557:                                              ; preds = %505
  %558 = load ptr, ptr %11, align 8, !tbaa !5
  %559 = load i32, ptr %32, align 4, !tbaa !9
  %560 = sext i32 %559 to i64
  %561 = getelementptr inbounds double, ptr %558, i64 %560
  %562 = load ptr, ptr %12, align 8, !tbaa !5
  %563 = load i32, ptr %32, align 4, !tbaa !9
  %564 = sext i32 %563 to i64
  %565 = getelementptr inbounds double, ptr %562, i64 %564
  %566 = load ptr, ptr %11, align 8, !tbaa !5
  %567 = load i32, ptr %32, align 4, !tbaa !9
  %568 = add nsw i32 %567, 1
  %569 = sext i32 %568 to i64
  %570 = getelementptr inbounds double, ptr %566, i64 %569
  call void @dlae2_(ptr noundef %561, ptr noundef %565, ptr noundef %570, ptr noundef %54, ptr noundef %55)
  br label %571

571:                                              ; preds = %557, %508
  %572 = load double, ptr %54, align 8, !tbaa !15
  %573 = load ptr, ptr %11, align 8, !tbaa !5
  %574 = load i32, ptr %32, align 4, !tbaa !9
  %575 = sext i32 %574 to i64
  %576 = getelementptr inbounds double, ptr %573, i64 %575
  store double %572, ptr %576, align 8, !tbaa !15
  %577 = load double, ptr %55, align 8, !tbaa !15
  %578 = load ptr, ptr %11, align 8, !tbaa !5
  %579 = load i32, ptr %32, align 4, !tbaa !9
  %580 = add nsw i32 %579, 1
  %581 = sext i32 %580 to i64
  %582 = getelementptr inbounds double, ptr %578, i64 %581
  store double %577, ptr %582, align 8, !tbaa !15
  %583 = load ptr, ptr %12, align 8, !tbaa !5
  %584 = load i32, ptr %32, align 4, !tbaa !9
  %585 = sext i32 %584 to i64
  %586 = getelementptr inbounds double, ptr %583, i64 %585
  store double 0.000000e+00, ptr %586, align 8, !tbaa !15
  %587 = load i32, ptr %32, align 4, !tbaa !9
  %588 = add nsw i32 %587, 2
  store i32 %588, ptr %32, align 4, !tbaa !9
  %589 = load i32, ptr %32, align 4, !tbaa !9
  %590 = load i32, ptr %23, align 4, !tbaa !9
  %591 = icmp sle i32 %589, %590
  br i1 %591, label %592, label %593

592:                                              ; preds = %571
  br label %407

593:                                              ; preds = %571
  br label %1215

594:                                              ; preds = %500
  %595 = load i32, ptr %24, align 4, !tbaa !9
  %596 = load i32, ptr %48, align 4, !tbaa !9
  %597 = icmp eq i32 %595, %596
  br i1 %597, label %598, label %599

598:                                              ; preds = %594
  br label %1215

599:                                              ; preds = %594
  %600 = load i32, ptr %24, align 4, !tbaa !9
  %601 = add nsw i32 %600, 1
  store i32 %601, ptr %24, align 4, !tbaa !9
  %602 = load ptr, ptr %11, align 8, !tbaa !5
  %603 = load i32, ptr %32, align 4, !tbaa !9
  %604 = add nsw i32 %603, 1
  %605 = sext i32 %604 to i64
  %606 = getelementptr inbounds double, ptr %602, i64 %605
  %607 = load double, ptr %606, align 8, !tbaa !15
  %608 = load double, ptr %34, align 8, !tbaa !15
  %609 = fsub double %607, %608
  %610 = load ptr, ptr %12, align 8, !tbaa !5
  %611 = load i32, ptr %32, align 4, !tbaa !9
  %612 = sext i32 %611 to i64
  %613 = getelementptr inbounds double, ptr %610, i64 %612
  %614 = load double, ptr %613, align 8, !tbaa !15
  %615 = fmul double %614, 2.000000e+00
  %616 = fdiv double %609, %615
  store double %616, ptr %28, align 8, !tbaa !15
  %617 = call double @dlapy2_(ptr noundef %28, ptr noundef @c_b41)
  store double %617, ptr %35, align 8, !tbaa !15
  %618 = load ptr, ptr %11, align 8, !tbaa !5
  %619 = load i32, ptr %33, 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 !15
  %623 = load double, ptr %34, align 8, !tbaa !15
  %624 = fsub double %622, %623
  %625 = load ptr, ptr %12, align 8, !tbaa !5
  %626 = load i32, ptr %32, align 4, !tbaa !9
  %627 = sext i32 %626 to i64
  %628 = getelementptr inbounds double, ptr %625, i64 %627
  %629 = load double, ptr %628, align 8, !tbaa !15
  %630 = load double, ptr %28, align 8, !tbaa !15
  %631 = load double, ptr %28, align 8, !tbaa !15
  %632 = fcmp oge double %631, 0.000000e+00
  br i1 %632, label %633, label %643

633:                                              ; preds = %599
  %634 = load double, ptr %35, align 8, !tbaa !15
  %635 = fcmp oge double %634, 0.000000e+00
  br i1 %635, label %636, label %638

636:                                              ; preds = %633
  %637 = load double, ptr %35, align 8, !tbaa !15
  br label %641

638:                                              ; preds = %633
  %639 = load double, ptr %35, align 8, !tbaa !15
  %640 = fneg double %639
  br label %641

641:                                              ; preds = %638, %636
  %642 = phi double [ %637, %636 ], [ %640, %638 ]
  br label %654

643:                                              ; preds = %599
  %644 = load double, ptr %35, align 8, !tbaa !15
  %645 = fcmp oge double %644, 0.000000e+00
  br i1 %645, label %646, label %648

646:                                              ; preds = %643
  %647 = load double, ptr %35, align 8, !tbaa !15
  br label %651

648:                                              ; preds = %643
  %649 = load double, ptr %35, align 8, !tbaa !15
  %650 = fneg double %649
  br label %651

651:                                              ; preds = %648, %646
  %652 = phi double [ %647, %646 ], [ %650, %648 ]
  %653 = fneg double %652
  br label %654

654:                                              ; preds = %651, %641
  %655 = phi double [ %642, %641 ], [ %653, %651 ]
  %656 = fadd double %630, %655
  %657 = fdiv double %629, %656
  %658 = fadd double %624, %657
  store double %658, ptr %28, align 8, !tbaa !15
  store double 1.000000e+00, ptr %36, align 8, !tbaa !15
  store double 1.000000e+00, ptr %26, align 8, !tbaa !15
  store double 0.000000e+00, ptr %34, align 8, !tbaa !15
  %659 = load i32, ptr %33, align 4, !tbaa !9
  %660 = sub nsw i32 %659, 1
  store i32 %660, ptr %52, align 4, !tbaa !9
  %661 = load i32, ptr %32, align 4, !tbaa !9
  store i32 %661, ptr %19, align 4, !tbaa !9
  %662 = load i32, ptr %52, align 4, !tbaa !9
  store i32 %662, ptr %29, align 4, !tbaa !9
  br label %663

663:                                              ; preds = %750, %654
  %664 = load i32, ptr %29, align 4, !tbaa !9
  %665 = load i32, ptr %19, align 4, !tbaa !9
  %666 = icmp sge i32 %664, %665
  br i1 %666, label %667, label %753

667:                                              ; preds = %663
  %668 = load double, ptr %36, align 8, !tbaa !15
  %669 = load ptr, ptr %12, align 8, !tbaa !5
  %670 = load i32, ptr %29, align 4, !tbaa !9
  %671 = sext i32 %670 to i64
  %672 = getelementptr inbounds double, ptr %669, i64 %671
  %673 = load double, ptr %672, align 8, !tbaa !15
  %674 = fmul double %668, %673
  store double %674, ptr %27, align 8, !tbaa !15
  %675 = load double, ptr %26, align 8, !tbaa !15
  %676 = load ptr, ptr %12, align 8, !tbaa !5
  %677 = load i32, ptr %29, align 4, !tbaa !9
  %678 = sext i32 %677 to i64
  %679 = getelementptr inbounds double, ptr %676, i64 %678
  %680 = load double, ptr %679, align 8, !tbaa !15
  %681 = fmul double %675, %680
  store double %681, ptr %25, align 8, !tbaa !15
  call void @dlartg_(ptr noundef %28, ptr noundef %27, ptr noundef %26, ptr noundef %36, ptr noundef %35)
  %682 = load i32, ptr %29, align 4, !tbaa !9
  %683 = load i32, ptr %33, align 4, !tbaa !9
  %684 = sub nsw i32 %683, 1
  %685 = icmp ne i32 %682, %684
  br i1 %685, label %686, label %693

686:                                              ; preds = %667
  %687 = load double, ptr %35, align 8, !tbaa !15
  %688 = load ptr, ptr %12, align 8, !tbaa !5
  %689 = load i32, ptr %29, align 4, !tbaa !9
  %690 = add nsw i32 %689, 1
  %691 = sext i32 %690 to i64
  %692 = getelementptr inbounds double, ptr %688, i64 %691
  store double %687, ptr %692, align 8, !tbaa !15
  br label %693

693:                                              ; preds = %686, %667
  %694 = load ptr, ptr %11, align 8, !tbaa !5
  %695 = load i32, ptr %29, align 4, !tbaa !9
  %696 = add nsw i32 %695, 1
  %697 = sext i32 %696 to i64
  %698 = getelementptr inbounds double, ptr %694, i64 %697
  %699 = load double, ptr %698, align 8, !tbaa !15
  %700 = load double, ptr %34, align 8, !tbaa !15
  %701 = fsub double %699, %700
  store double %701, ptr %28, align 8, !tbaa !15
  %702 = load ptr, ptr %11, align 8, !tbaa !5
  %703 = load i32, ptr %29, align 4, !tbaa !9
  %704 = sext i32 %703 to i64
  %705 = getelementptr inbounds double, ptr %702, i64 %704
  %706 = load double, ptr %705, align 8, !tbaa !15
  %707 = load double, ptr %28, align 8, !tbaa !15
  %708 = fsub double %706, %707
  %709 = load double, ptr %36, align 8, !tbaa !15
  %710 = load double, ptr %26, align 8, !tbaa !15
  %711 = fmul double %710, 2.000000e+00
  %712 = load double, ptr %25, align 8, !tbaa !15
  %713 = fmul double %711, %712
  %714 = call double @llvm.fmuladd.f64(double %708, double %709, double %713)
  store double %714, ptr %35, align 8, !tbaa !15
  %715 = load double, ptr %36, align 8, !tbaa !15
  %716 = load double, ptr %35, align 8, !tbaa !15
  %717 = fmul double %715, %716
  store double %717, ptr %34, align 8, !tbaa !15
  %718 = load double, ptr %28, align 8, !tbaa !15
  %719 = load double, ptr %34, align 8, !tbaa !15
  %720 = fadd double %718, %719
  %721 = load ptr, ptr %11, align 8, !tbaa !5
  %722 = load i32, ptr %29, align 4, !tbaa !9
  %723 = add nsw i32 %722, 1
  %724 = sext i32 %723 to i64
  %725 = getelementptr inbounds double, ptr %721, i64 %724
  store double %720, ptr %725, align 8, !tbaa !15
  %726 = load double, ptr %26, align 8, !tbaa !15
  %727 = load double, ptr %35, align 8, !tbaa !15
  %728 = load double, ptr %25, align 8, !tbaa !15
  %729 = fneg double %728
  %730 = call double @llvm.fmuladd.f64(double %726, double %727, double %729)
  store double %730, ptr %28, align 8, !tbaa !15
  %731 = load i32, ptr %49, align 4, !tbaa !9
  %732 = icmp sgt i32 %731, 0
  br i1 %732, label %733, label %749

733:                                              ; preds = %693
  %734 = load double, ptr %26, align 8, !tbaa !15
  %735 = load ptr, ptr %15, align 8, !tbaa !5
  %736 = load i32, ptr %29, align 4, !tbaa !9
  %737 = sext i32 %736 to i64
  %738 = getelementptr inbounds double, ptr %735, i64 %737
  store double %734, ptr %738, align 8, !tbaa !15
  %739 = load double, ptr %36, align 8, !tbaa !15
  %740 = fneg double %739
  %741 = load ptr, ptr %15, align 8, !tbaa !5
  %742 = load ptr, ptr %10, align 8, !tbaa !5
  %743 = load i32, ptr %742, align 4, !tbaa !9
  %744 = sub nsw i32 %743, 1
  %745 = load i32, ptr %29, align 4, !tbaa !9
  %746 = add nsw i32 %744, %745
  %747 = sext i32 %746 to i64
  %748 = getelementptr inbounds double, ptr %741, i64 %747
  store double %740, ptr %748, align 8, !tbaa !15
  br label %749

749:                                              ; preds = %733, %693
  br label %750

750:                                              ; preds = %749
  %751 = load i32, ptr %29, align 4, !tbaa !9
  %752 = add nsw i32 %751, -1
  store i32 %752, ptr %29, align 4, !tbaa !9
  br label %663, !llvm.loop !19

753:                                              ; preds = %663
  %754 = load i32, ptr %49, align 4, !tbaa !9
  %755 = icmp sgt i32 %754, 0
  br i1 %755, label %756, label %782

756:                                              ; preds = %753
  %757 = load i32, ptr %33, align 4, !tbaa !9
  %758 = load i32, ptr %32, align 4, !tbaa !9
  %759 = sub nsw i32 %757, %758
  %760 = add nsw i32 %759, 1
  store i32 %760, ptr %42, align 4, !tbaa !9
  %761 = load ptr, ptr %10, align 8, !tbaa !5
  %762 = load ptr, ptr %15, align 8, !tbaa !5
  %763 = load i32, ptr %32, align 4, !tbaa !9
  %764 = sext i32 %763 to i64
  %765 = getelementptr inbounds double, ptr %762, i64 %764
  %766 = load ptr, ptr %15, align 8, !tbaa !5
  %767 = load ptr, ptr %10, align 8, !tbaa !5
  %768 = load i32, ptr %767, align 4, !tbaa !9
  %769 = sub nsw i32 %768, 1
  %770 = load i32, ptr %32, align 4, !tbaa !9
  %771 = add nsw i32 %769, %770
  %772 = sext i32 %771 to i64
  %773 = getelementptr inbounds double, ptr %766, i64 %772
  %774 = load ptr, ptr %13, align 8, !tbaa !5
  %775 = load i32, ptr %32, align 4, !tbaa !9
  %776 = load i32, ptr %17, align 4, !tbaa !9
  %777 = mul nsw i32 %775, %776
  %778 = add nsw i32 %777, 1
  %779 = sext i32 %778 to i64
  %780 = getelementptr inbounds %struct.doublecomplex, ptr %774, i64 %779
  %781 = load ptr, ptr %14, align 8, !tbaa !5
  call void @zlasr_(ptr noundef @.str.8, ptr noundef @.str.1, ptr noundef @.str.9, ptr noundef %761, ptr noundef %42, ptr noundef %765, ptr noundef %773, ptr noundef %780, ptr noundef %781)
  br label %782

782:                                              ; preds = %756, %753
  %783 = load double, ptr %34, align 8, !tbaa !15
  %784 = load ptr, ptr %11, align 8, !tbaa !5
  %785 = load i32, ptr %32, align 4, !tbaa !9
  %786 = sext i32 %785 to i64
  %787 = getelementptr inbounds double, ptr %784, i64 %786
  %788 = load double, ptr %787, align 8, !tbaa !15
  %789 = fsub double %788, %783
  store double %789, ptr %787, align 8, !tbaa !15
  %790 = load double, ptr %28, align 8, !tbaa !15
  %791 = load ptr, ptr %12, align 8, !tbaa !5
  %792 = load i32, ptr %32, align 4, !tbaa !9
  %793 = sext i32 %792 to i64
  %794 = getelementptr inbounds double, ptr %791, i64 %793
  store double %790, ptr %794, align 8, !tbaa !15
  br label %407

795:                                              ; preds = %499
  %796 = load double, ptr %34, align 8, !tbaa !15
  %797 = load ptr, ptr %11, align 8, !tbaa !5
  %798 = load i32, ptr %32, align 4, !tbaa !9
  %799 = sext i32 %798 to i64
  %800 = getelementptr inbounds double, ptr %797, i64 %799
  store double %796, ptr %800, align 8, !tbaa !15
  %801 = load i32, ptr %32, align 4, !tbaa !9
  %802 = add nsw i32 %801, 1
  store i32 %802, ptr %32, align 4, !tbaa !9
  %803 = load i32, ptr %32, align 4, !tbaa !9
  %804 = load i32, ptr %23, align 4, !tbaa !9
  %805 = icmp sle i32 %803, %804
  br i1 %805, label %806, label %807

806:                                              ; preds = %795
  br label %407

807:                                              ; preds = %795
  br label %1215

808:                                              ; preds = %402
  br label %809

809:                                              ; preds = %1213, %1189, %1000, %808
  %810 = load i32, ptr %32, align 4, !tbaa !9
  %811 = load i32, ptr %23, align 4, !tbaa !9
  %812 = icmp ne i32 %810, %811
  br i1 %812, label %813, label %882

813:                                              ; preds = %809
  %814 = load i32, ptr %23, align 4, !tbaa !9
  %815 = add nsw i32 %814, 1
  store i32 %815, ptr %40, align 4, !tbaa !9
  %816 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %816, ptr %19, align 4, !tbaa !9
  %817 = load i32, ptr %32, align 4, !tbaa !9
  store i32 %817, ptr %33, align 4, !tbaa !9
  br label %818

818:                                              ; preds = %878, %813
  %819 = load i32, ptr %33, align 4, !tbaa !9
  %820 = load i32, ptr %19, align 4, !tbaa !9
  %821 = icmp sge i32 %819, %820
  br i1 %821, label %822, label %881

822:                                              ; preds = %818
  %823 = load ptr, ptr %12, align 8, !tbaa !5
  %824 = load i32, ptr %33, align 4, !tbaa !9
  %825 = sub nsw i32 %824, 1
  %826 = sext i32 %825 to i64
  %827 = getelementptr inbounds double, ptr %823, i64 %826
  %828 = load double, ptr %827, align 8, !tbaa !15
  store double %828, ptr %21, align 8, !tbaa !15
  %829 = load double, ptr %21, align 8, !tbaa !15
  %830 = fcmp oge double %829, 0.000000e+00
  br i1 %830, label %831, label %833

831:                                              ; preds = %822
  %832 = load double, ptr %21, align 8, !tbaa !15
  br label %836

833:                                              ; preds = %822
  %834 = load double, ptr %21, align 8, !tbaa !15
  %835 = fneg double %834
  br label %836

836:                                              ; preds = %833, %831
  %837 = phi double [ %832, %831 ], [ %835, %833 ]
  store double %837, ptr %22, align 8, !tbaa !15
  %838 = load double, ptr %22, align 8, !tbaa !15
  %839 = load double, ptr %22, align 8, !tbaa !15
  %840 = fmul double %838, %839
  store double %840, ptr %58, align 8, !tbaa !15
  %841 = load double, ptr %58, align 8, !tbaa !15
  %842 = load double, ptr %59, align 8, !tbaa !15
  %843 = load ptr, ptr %11, align 8, !tbaa !5
  %844 = load i32, ptr %33, align 4, !tbaa !9
  %845 = sext i32 %844 to i64
  %846 = getelementptr inbounds double, ptr %843, i64 %845
  %847 = load double, ptr %846, align 8, !tbaa !15
  store double %847, ptr %21, align 8, !tbaa !15
  %848 = load double, ptr %21, align 8, !tbaa !15
  %849 = fcmp oge double %848, 0.000000e+00
  br i1 %849, label %850, label %852

850:                                              ; preds = %836
  %851 = load double, ptr %21, align 8, !tbaa !15
  br label %855

852:                                              ; preds = %836
  %853 = load double, ptr %21, align 8, !tbaa !15
  %854 = fneg double %853
  br label %855

855:                                              ; preds = %852, %850
  %856 = phi double [ %851, %850 ], [ %854, %852 ]
  %857 = fmul double %842, %856
  %858 = load ptr, ptr %11, align 8, !tbaa !5
  %859 = load i32, ptr %33, align 4, !tbaa !9
  %860 = sub nsw i32 %859, 1
  %861 = sext i32 %860 to i64
  %862 = getelementptr inbounds double, ptr %858, i64 %861
  %863 = load double, ptr %862, align 8, !tbaa !15
  store double %863, ptr %22, align 8, !tbaa !15
  %864 = load double, ptr %22, align 8, !tbaa !15
  %865 = fcmp oge double %864, 0.000000e+00
  br i1 %865, label %866, label %868

866:                                              ; preds = %855
  %867 = load double, ptr %22, align 8, !tbaa !15
  br label %871

868:                                              ; preds = %855
  %869 = load double, ptr %22, align 8, !tbaa !15
  %870 = fneg double %869
  br label %871

871:                                              ; preds = %868, %866
  %872 = phi double [ %867, %866 ], [ %870, %868 ]
  %873 = load double, ptr %44, align 8, !tbaa !15
  %874 = call double @llvm.fmuladd.f64(double %857, double %872, double %873)
  %875 = fcmp ole double %841, %874
  br i1 %875, label %876, label %877

876:                                              ; preds = %871
  br label %884

877:                                              ; preds = %871
  br label %878

878:                                              ; preds = %877
  %879 = load i32, ptr %33, align 4, !tbaa !9
  %880 = add nsw i32 %879, -1
  store i32 %880, ptr %33, align 4, !tbaa !9
  br label %818, !llvm.loop !20

881:                                              ; preds = %818
  br label %882

882:                                              ; preds = %881, %809
  %883 = load i32, ptr %23, align 4, !tbaa !9
  store i32 %883, ptr %33, align 4, !tbaa !9
  br label %884

884:                                              ; preds = %882, %876
  %885 = load i32, ptr %33, align 4, !tbaa !9
  %886 = load i32, ptr %23, align 4, !tbaa !9
  %887 = icmp sgt i32 %885, %886
  br i1 %887, label %888, label %894

888:                                              ; preds = %884
  %889 = load ptr, ptr %12, align 8, !tbaa !5
  %890 = load i32, ptr %33, align 4, !tbaa !9
  %891 = sub nsw i32 %890, 1
  %892 = sext i32 %891 to i64
  %893 = getelementptr inbounds double, ptr %889, i64 %892
  store double 0.000000e+00, ptr %893, align 8, !tbaa !15
  br label %894

894:                                              ; preds = %888, %884
  %895 = load ptr, ptr %11, align 8, !tbaa !5
  %896 = load i32, ptr %32, align 4, !tbaa !9
  %897 = sext i32 %896 to i64
  %898 = getelementptr inbounds double, ptr %895, i64 %897
  %899 = load double, ptr %898, align 8, !tbaa !15
  store double %899, ptr %34, align 8, !tbaa !15
  %900 = load i32, ptr %33, align 4, !tbaa !9
  %901 = load i32, ptr %32, align 4, !tbaa !9
  %902 = icmp eq i32 %900, %901
  br i1 %902, label %903, label %904

903:                                              ; preds = %894
  br label %1202

904:                                              ; preds = %894
  %905 = load i32, ptr %33, align 4, !tbaa !9
  %906 = load i32, ptr %32, align 4, !tbaa !9
  %907 = sub nsw i32 %906, 1
  %908 = icmp eq i32 %905, %907
  br i1 %908, label %909, label %1002

909:                                              ; preds = %904
  %910 = load i32, ptr %49, align 4, !tbaa !9
  %911 = icmp sgt i32 %910, 0
  br i1 %911, label %912, label %963

912:                                              ; preds = %909
  %913 = load ptr, ptr %11, align 8, !tbaa !5
  %914 = load i32, ptr %32, align 4, !tbaa !9
  %915 = sub nsw i32 %914, 1
  %916 = sext i32 %915 to i64
  %917 = getelementptr inbounds double, ptr %913, i64 %916
  %918 = load ptr, ptr %12, align 8, !tbaa !5
  %919 = load i32, ptr %32, align 4, !tbaa !9
  %920 = sub nsw i32 %919, 1
  %921 = sext i32 %920 to i64
  %922 = getelementptr inbounds double, ptr %918, i64 %921
  %923 = load ptr, ptr %11, align 8, !tbaa !5
  %924 = load i32, ptr %32, align 4, !tbaa !9
  %925 = sext i32 %924 to i64
  %926 = getelementptr inbounds double, ptr %923, i64 %925
  call void @dlaev2_(ptr noundef %917, ptr noundef %922, ptr noundef %926, ptr noundef %54, ptr noundef %55, ptr noundef %26, ptr noundef %36)
  %927 = load double, ptr %26, align 8, !tbaa !15
  %928 = load ptr, ptr %15, align 8, !tbaa !5
  %929 = load i32, ptr %33, align 4, !tbaa !9
  %930 = sext i32 %929 to i64
  %931 = getelementptr inbounds double, ptr %928, i64 %930
  store double %927, ptr %931, align 8, !tbaa !15
  %932 = load double, ptr %36, align 8, !tbaa !15
  %933 = load ptr, ptr %15, align 8, !tbaa !5
  %934 = load ptr, ptr %10, align 8, !tbaa !5
  %935 = load i32, ptr %934, align 4, !tbaa !9
  %936 = sub nsw i32 %935, 1
  %937 = load i32, ptr %33, align 4, !tbaa !9
  %938 = add nsw i32 %936, %937
  %939 = sext i32 %938 to i64
  %940 = getelementptr inbounds double, ptr %933, i64 %939
  store double %932, ptr %940, align 8, !tbaa !15
  %941 = load ptr, ptr %10, align 8, !tbaa !5
  %942 = load ptr, ptr %15, align 8, !tbaa !5
  %943 = load i32, ptr %33, align 4, !tbaa !9
  %944 = sext i32 %943 to i64
  %945 = getelementptr inbounds double, ptr %942, i64 %944
  %946 = load ptr, ptr %15, align 8, !tbaa !5
  %947 = load ptr, ptr %10, align 8, !tbaa !5
  %948 = load i32, ptr %947, align 4, !tbaa !9
  %949 = sub nsw i32 %948, 1
  %950 = load i32, ptr %33, align 4, !tbaa !9
  %951 = add nsw i32 %949, %950
  %952 = sext i32 %951 to i64
  %953 = getelementptr inbounds double, ptr %946, i64 %952
  %954 = load ptr, ptr %13, align 8, !tbaa !5
  %955 = load i32, ptr %32, align 4, !tbaa !9
  %956 = sub nsw i32 %955, 1
  %957 = load i32, ptr %17, align 4, !tbaa !9
  %958 = mul nsw i32 %956, %957
  %959 = add nsw i32 %958, 1
  %960 = sext i32 %959 to i64
  %961 = getelementptr inbounds %struct.doublecomplex, ptr %954, i64 %960
  %962 = load ptr, ptr %14, align 8, !tbaa !5
  call void @zlasr_(ptr noundef @.str.8, ptr noundef @.str.1, ptr noundef @.str.10, ptr noundef %941, ptr noundef @c__2, ptr noundef %945, ptr noundef %953, ptr noundef %961, ptr noundef %962)
  br label %978

963:                                              ; preds = %909
  %964 = load ptr, ptr %11, align 8, !tbaa !5
  %965 = load i32, ptr %32, align 4, !tbaa !9
  %966 = sub nsw i32 %965, 1
  %967 = sext i32 %966 to i64
  %968 = getelementptr inbounds double, ptr %964, i64 %967
  %969 = load ptr, ptr %12, align 8, !tbaa !5
  %970 = load i32, ptr %32, align 4, !tbaa !9
  %971 = sub nsw i32 %970, 1
  %972 = sext i32 %971 to i64
  %973 = getelementptr inbounds double, ptr %969, i64 %972
  %974 = load ptr, ptr %11, align 8, !tbaa !5
  %975 = load i32, ptr %32, align 4, !tbaa !9
  %976 = sext i32 %975 to i64
  %977 = getelementptr inbounds double, ptr %974, i64 %976
  call void @dlae2_(ptr noundef %968, ptr noundef %973, ptr noundef %977, ptr noundef %54, ptr noundef %55)
  br label %978

978:                                              ; preds = %963, %912
  %979 = load double, ptr %54, align 8, !tbaa !15
  %980 = load ptr, ptr %11, align 8, !tbaa !5
  %981 = load i32, ptr %32, align 4, !tbaa !9
  %982 = sub nsw i32 %981, 1
  %983 = sext i32 %982 to i64
  %984 = getelementptr inbounds double, ptr %980, i64 %983
  store double %979, ptr %984, align 8, !tbaa !15
  %985 = load double, ptr %55, align 8, !tbaa !15
  %986 = load ptr, ptr %11, align 8, !tbaa !5
  %987 = load i32, ptr %32, align 4, !tbaa !9
  %988 = sext i32 %987 to i64
  %989 = getelementptr inbounds double, ptr %986, i64 %988
  store double %985, ptr %989, align 8, !tbaa !15
  %990 = load ptr, ptr %12, align 8, !tbaa !5
  %991 = load i32, ptr %32, align 4, !tbaa !9
  %992 = sub nsw i32 %991, 1
  %993 = sext i32 %992 to i64
  %994 = getelementptr inbounds double, ptr %990, i64 %993
  store double 0.000000e+00, ptr %994, align 8, !tbaa !15
  %995 = load i32, ptr %32, align 4, !tbaa !9
  %996 = add nsw i32 %995, -2
  store i32 %996, ptr %32, align 4, !tbaa !9
  %997 = load i32, ptr %32, align 4, !tbaa !9
  %998 = load i32, ptr %23, align 4, !tbaa !9
  %999 = icmp sge i32 %997, %998
  br i1 %999, label %1000, label %1001

1000:                                             ; preds = %978
  br label %809

1001:                                             ; preds = %978
  br label %1215

1002:                                             ; preds = %904
  %1003 = load i32, ptr %24, align 4, !tbaa !9
  %1004 = load i32, ptr %48, align 4, !tbaa !9
  %1005 = icmp eq i32 %1003, %1004
  br i1 %1005, label %1006, label %1007

1006:                                             ; preds = %1002
  br label %1215

1007:                                             ; preds = %1002
  %1008 = load i32, ptr %24, align 4, !tbaa !9
  %1009 = add nsw i32 %1008, 1
  store i32 %1009, ptr %24, align 4, !tbaa !9
  %1010 = load ptr, ptr %11, align 8, !tbaa !5
  %1011 = load i32, ptr %32, align 4, !tbaa !9
  %1012 = sub nsw i32 %1011, 1
  %1013 = sext i32 %1012 to i64
  %1014 = getelementptr inbounds double, ptr %1010, i64 %1013
  %1015 = load double, ptr %1014, align 8, !tbaa !15
  %1016 = load double, ptr %34, align 8, !tbaa !15
  %1017 = fsub double %1015, %1016
  %1018 = load ptr, ptr %12, align 8, !tbaa !5
  %1019 = load i32, ptr %32, align 4, !tbaa !9
  %1020 = sub nsw i32 %1019, 1
  %1021 = sext i32 %1020 to i64
  %1022 = getelementptr inbounds double, ptr %1018, i64 %1021
  %1023 = load double, ptr %1022, align 8, !tbaa !15
  %1024 = fmul double %1023, 2.000000e+00
  %1025 = fdiv double %1017, %1024
  store double %1025, ptr %28, align 8, !tbaa !15
  %1026 = call double @dlapy2_(ptr noundef %28, ptr noundef @c_b41)
  store double %1026, ptr %35, align 8, !tbaa !15
  %1027 = load ptr, ptr %11, align 8, !tbaa !5
  %1028 = load i32, ptr %33, align 4, !tbaa !9
  %1029 = sext i32 %1028 to i64
  %1030 = getelementptr inbounds double, ptr %1027, i64 %1029
  %1031 = load double, ptr %1030, align 8, !tbaa !15
  %1032 = load double, ptr %34, align 8, !tbaa !15
  %1033 = fsub double %1031, %1032
  %1034 = load ptr, ptr %12, align 8, !tbaa !5
  %1035 = load i32, ptr %32, align 4, !tbaa !9
  %1036 = sub nsw i32 %1035, 1
  %1037 = sext i32 %1036 to i64
  %1038 = getelementptr inbounds double, ptr %1034, i64 %1037
  %1039 = load double, ptr %1038, align 8, !tbaa !15
  %1040 = load double, ptr %28, align 8, !tbaa !15
  %1041 = load double, ptr %28, align 8, !tbaa !15
  %1042 = fcmp oge double %1041, 0.000000e+00
  br i1 %1042, label %1043, label %1053

1043:                                             ; preds = %1007
  %1044 = load double, ptr %35, align 8, !tbaa !15
  %1045 = fcmp oge double %1044, 0.000000e+00
  br i1 %1045, label %1046, label %1048

1046:                                             ; preds = %1043
  %1047 = load double, ptr %35, align 8, !tbaa !15
  br label %1051

1048:                                             ; preds = %1043
  %1049 = load double, ptr %35, align 8, !tbaa !15
  %1050 = fneg double %1049
  br label %1051

1051:                                             ; preds = %1048, %1046
  %1052 = phi double [ %1047, %1046 ], [ %1050, %1048 ]
  br label %1064

1053:                                             ; preds = %1007
  %1054 = load double, ptr %35, align 8, !tbaa !15
  %1055 = fcmp oge double %1054, 0.000000e+00
  br i1 %1055, label %1056, label %1058

1056:                                             ; preds = %1053
  %1057 = load double, ptr %35, align 8, !tbaa !15
  br label %1061

1058:                                             ; preds = %1053
  %1059 = load double, ptr %35, align 8, !tbaa !15
  %1060 = fneg double %1059
  br label %1061

1061:                                             ; preds = %1058, %1056
  %1062 = phi double [ %1057, %1056 ], [ %1060, %1058 ]
  %1063 = fneg double %1062
  br label %1064

1064:                                             ; preds = %1061, %1051
  %1065 = phi double [ %1052, %1051 ], [ %1063, %1061 ]
  %1066 = fadd double %1040, %1065
  %1067 = fdiv double %1039, %1066
  %1068 = fadd double %1033, %1067
  store double %1068, ptr %28, align 8, !tbaa !15
  store double 1.000000e+00, ptr %36, align 8, !tbaa !15
  store double 1.000000e+00, ptr %26, align 8, !tbaa !15
  store double 0.000000e+00, ptr %34, align 8, !tbaa !15
  %1069 = load i32, ptr %32, align 4, !tbaa !9
  %1070 = sub nsw i32 %1069, 1
  store i32 %1070, ptr %51, align 4, !tbaa !9
  %1071 = load i32, ptr %51, align 4, !tbaa !9
  store i32 %1071, ptr %19, align 4, !tbaa !9
  %1072 = load i32, ptr %33, align 4, !tbaa !9
  store i32 %1072, ptr %29, align 4, !tbaa !9
  br label %1073

1073:                                             ; preds = %1157, %1064
  %1074 = load i32, ptr %29, align 4, !tbaa !9
  %1075 = load i32, ptr %19, align 4, !tbaa !9
  %1076 = icmp sle i32 %1074, %1075
  br i1 %1076, label %1077, label %1160

1077:                                             ; preds = %1073
  %1078 = load double, ptr %36, align 8, !tbaa !15
  %1079 = load ptr, ptr %12, align 8, !tbaa !5
  %1080 = load i32, ptr %29, align 4, !tbaa !9
  %1081 = sext i32 %1080 to i64
  %1082 = getelementptr inbounds double, ptr %1079, i64 %1081
  %1083 = load double, ptr %1082, align 8, !tbaa !15
  %1084 = fmul double %1078, %1083
  store double %1084, ptr %27, align 8, !tbaa !15
  %1085 = load double, ptr %26, align 8, !tbaa !15
  %1086 = load ptr, ptr %12, align 8, !tbaa !5
  %1087 = load i32, ptr %29, align 4, !tbaa !9
  %1088 = sext i32 %1087 to i64
  %1089 = getelementptr inbounds double, ptr %1086, i64 %1088
  %1090 = load double, ptr %1089, align 8, !tbaa !15
  %1091 = fmul double %1085, %1090
  store double %1091, ptr %25, align 8, !tbaa !15
  call void @dlartg_(ptr noundef %28, ptr noundef %27, ptr noundef %26, ptr noundef %36, ptr noundef %35)
  %1092 = load i32, ptr %29, align 4, !tbaa !9
  %1093 = load i32, ptr %33, align 4, !tbaa !9
  %1094 = icmp ne i32 %1092, %1093
  br i1 %1094, label %1095, label %1102

1095:                                             ; preds = %1077
  %1096 = load double, ptr %35, align 8, !tbaa !15
  %1097 = load ptr, ptr %12, align 8, !tbaa !5
  %1098 = load i32, ptr %29, align 4, !tbaa !9
  %1099 = sub nsw i32 %1098, 1
  %1100 = sext i32 %1099 to i64
  %1101 = getelementptr inbounds double, ptr %1097, i64 %1100
  store double %1096, ptr %1101, align 8, !tbaa !15
  br label %1102

1102:                                             ; preds = %1095, %1077
  %1103 = load ptr, ptr %11, align 8, !tbaa !5
  %1104 = load i32, ptr %29, align 4, !tbaa !9
  %1105 = sext i32 %1104 to i64
  %1106 = getelementptr inbounds double, ptr %1103, i64 %1105
  %1107 = load double, ptr %1106, align 8, !tbaa !15
  %1108 = load double, ptr %34, align 8, !tbaa !15
  %1109 = fsub double %1107, %1108
  store double %1109, ptr %28, align 8, !tbaa !15
  %1110 = load ptr, ptr %11, align 8, !tbaa !5
  %1111 = load i32, ptr %29, align 4, !tbaa !9
  %1112 = add nsw i32 %1111, 1
  %1113 = sext i32 %1112 to i64
  %1114 = getelementptr inbounds double, ptr %1110, i64 %1113
  %1115 = load double, ptr %1114, align 8, !tbaa !15
  %1116 = load double, ptr %28, align 8, !tbaa !15
  %1117 = fsub double %1115, %1116
  %1118 = load double, ptr %36, align 8, !tbaa !15
  %1119 = load double, ptr %26, align 8, !tbaa !15
  %1120 = fmul double %1119, 2.000000e+00
  %1121 = load double, ptr %25, align 8, !tbaa !15
  %1122 = fmul double %1120, %1121
  %1123 = call double @llvm.fmuladd.f64(double %1117, double %1118, double %1122)
  store double %1123, ptr %35, align 8, !tbaa !15
  %1124 = load double, ptr %36, align 8, !tbaa !15
  %1125 = load double, ptr %35, align 8, !tbaa !15
  %1126 = fmul double %1124, %1125
  store double %1126, ptr %34, align 8, !tbaa !15
  %1127 = load double, ptr %28, align 8, !tbaa !15
  %1128 = load double, ptr %34, align 8, !tbaa !15
  %1129 = fadd double %1127, %1128
  %1130 = load ptr, ptr %11, align 8, !tbaa !5
  %1131 = load i32, ptr %29, align 4, !tbaa !9
  %1132 = sext i32 %1131 to i64
  %1133 = getelementptr inbounds double, ptr %1130, i64 %1132
  store double %1129, ptr %1133, align 8, !tbaa !15
  %1134 = load double, ptr %26, align 8, !tbaa !15
  %1135 = load double, ptr %35, align 8, !tbaa !15
  %1136 = load double, ptr %25, align 8, !tbaa !15
  %1137 = fneg double %1136
  %1138 = call double @llvm.fmuladd.f64(double %1134, double %1135, double %1137)
  store double %1138, ptr %28, align 8, !tbaa !15
  %1139 = load i32, ptr %49, align 4, !tbaa !9
  %1140 = icmp sgt i32 %1139, 0
  br i1 %1140, label %1141, label %1156

1141:                                             ; preds = %1102
  %1142 = load double, ptr %26, align 8, !tbaa !15
  %1143 = load ptr, ptr %15, align 8, !tbaa !5
  %1144 = load i32, ptr %29, align 4, !tbaa !9
  %1145 = sext i32 %1144 to i64
  %1146 = getelementptr inbounds double, ptr %1143, i64 %1145
  store double %1142, ptr %1146, align 8, !tbaa !15
  %1147 = load double, ptr %36, align 8, !tbaa !15
  %1148 = load ptr, ptr %15, align 8, !tbaa !5
  %1149 = load ptr, ptr %10, align 8, !tbaa !5
  %1150 = load i32, ptr %1149, align 4, !tbaa !9
  %1151 = sub nsw i32 %1150, 1
  %1152 = load i32, ptr %29, align 4, !tbaa !9
  %1153 = add nsw i32 %1151, %1152
  %1154 = sext i32 %1153 to i64
  %1155 = getelementptr inbounds double, ptr %1148, i64 %1154
  store double %1147, ptr %1155, align 8, !tbaa !15
  br label %1156

1156:                                             ; preds = %1141, %1102
  br label %1157

1157:                                             ; preds = %1156
  %1158 = load i32, ptr %29, align 4, !tbaa !9
  %1159 = add nsw i32 %1158, 1
  store i32 %1159, ptr %29, align 4, !tbaa !9
  br label %1073, !llvm.loop !21

1160:                                             ; preds = %1073
  %1161 = load i32, ptr %49, align 4, !tbaa !9
  %1162 = icmp sgt i32 %1161, 0
  br i1 %1162, label %1163, label %1189

1163:                                             ; preds = %1160
  %1164 = load i32, ptr %32, align 4, !tbaa !9
  %1165 = load i32, ptr %33, align 4, !tbaa !9
  %1166 = sub nsw i32 %1164, %1165
  %1167 = add nsw i32 %1166, 1
  store i32 %1167, ptr %42, align 4, !tbaa !9
  %1168 = load ptr, ptr %10, align 8, !tbaa !5
  %1169 = load ptr, ptr %15, align 8, !tbaa !5
  %1170 = load i32, ptr %33, align 4, !tbaa !9
  %1171 = sext i32 %1170 to i64
  %1172 = getelementptr inbounds double, ptr %1169, i64 %1171
  %1173 = load ptr, ptr %15, align 8, !tbaa !5
  %1174 = load ptr, ptr %10, align 8, !tbaa !5
  %1175 = load i32, ptr %1174, align 4, !tbaa !9
  %1176 = sub nsw i32 %1175, 1
  %1177 = load i32, ptr %33, align 4, !tbaa !9
  %1178 = add nsw i32 %1176, %1177
  %1179 = sext i32 %1178 to i64
  %1180 = getelementptr inbounds double, ptr %1173, i64 %1179
  %1181 = load ptr, ptr %13, align 8, !tbaa !5
  %1182 = load i32, ptr %33, align 4, !tbaa !9
  %1183 = load i32, ptr %17, align 4, !tbaa !9
  %1184 = mul nsw i32 %1182, %1183
  %1185 = add nsw i32 %1184, 1
  %1186 = sext i32 %1185 to i64
  %1187 = getelementptr inbounds %struct.doublecomplex, ptr %1181, i64 %1186
  %1188 = load ptr, ptr %14, align 8, !tbaa !5
  call void @zlasr_(ptr noundef @.str.8, ptr noundef @.str.1, ptr noundef @.str.10, ptr noundef %1168, ptr noundef %42, ptr noundef %1172, ptr noundef %1180, ptr noundef %1187, ptr noundef %1188)
  br label %1189

1189:                                             ; preds = %1163, %1160
  %1190 = load double, ptr %34, align 8, !tbaa !15
  %1191 = load ptr, ptr %11, align 8, !tbaa !5
  %1192 = load i32, ptr %32, align 4, !tbaa !9
  %1193 = sext i32 %1192 to i64
  %1194 = getelementptr inbounds double, ptr %1191, i64 %1193
  %1195 = load double, ptr %1194, align 8, !tbaa !15
  %1196 = fsub double %1195, %1190
  store double %1196, ptr %1194, align 8, !tbaa !15
  %1197 = load double, ptr %28, align 8, !tbaa !15
  %1198 = load ptr, ptr %12, align 8, !tbaa !5
  %1199 = load i32, ptr %51, align 4, !tbaa !9
  %1200 = sext i32 %1199 to i64
  %1201 = getelementptr inbounds double, ptr %1198, i64 %1200
  store double %1197, ptr %1201, align 8, !tbaa !15
  br label %809

1202:                                             ; preds = %903
  %1203 = load double, ptr %34, align 8, !tbaa !15
  %1204 = load ptr, ptr %11, align 8, !tbaa !5
  %1205 = load i32, ptr %32, align 4, !tbaa !9
  %1206 = sext i32 %1205 to i64
  %1207 = getelementptr inbounds double, ptr %1204, i64 %1206
  store double %1203, ptr %1207, align 8, !tbaa !15
  %1208 = load i32, ptr %32, align 4, !tbaa !9
  %1209 = add nsw i32 %1208, -1
  store i32 %1209, ptr %32, align 4, !tbaa !9
  %1210 = load i32, ptr %32, align 4, !tbaa !9
  %1211 = load i32, ptr %23, align 4, !tbaa !9
  %1212 = icmp sge i32 %1210, %1211
  br i1 %1212, label %1213, label %1214

1213:                                             ; preds = %1202
  br label %809

1214:                                             ; preds = %1202
  br label %1215

1215:                                             ; preds = %1214, %1006, %1001, %807, %598, %593
  %1216 = load i32, ptr %43, align 4, !tbaa !9
  %1217 = icmp eq i32 %1216, 1
  br i1 %1217, label %1218, label %1238

1218:                                             ; preds = %1215
  %1219 = load i32, ptr %46, align 4, !tbaa !9
  %1220 = load i32, ptr %57, align 4, !tbaa !9
  %1221 = sub nsw i32 %1219, %1220
  %1222 = add nsw i32 %1221, 1
  store i32 %1222, ptr %19, align 4, !tbaa !9
  %1223 = load ptr, ptr %11, align 8, !tbaa !5
  %1224 = load i32, ptr %57, align 4, !tbaa !9
  %1225 = sext i32 %1224 to i64
  %1226 = getelementptr inbounds double, ptr %1223, i64 %1225
  %1227 = load ptr, ptr %10, align 8, !tbaa !5
  %1228 = load ptr, ptr %16, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.7, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %50, ptr noundef %37, ptr noundef %19, ptr noundef @c__1, ptr noundef %1226, ptr noundef %1227, ptr noundef %1228)
  %1229 = load i32, ptr %46, align 4, !tbaa !9
  %1230 = load i32, ptr %57, align 4, !tbaa !9
  %1231 = sub nsw i32 %1229, %1230
  store i32 %1231, ptr %19, align 4, !tbaa !9
  %1232 = load ptr, ptr %12, align 8, !tbaa !5
  %1233 = load i32, ptr %57, align 4, !tbaa !9
  %1234 = sext i32 %1233 to i64
  %1235 = getelementptr inbounds double, ptr %1232, i64 %1234
  %1236 = load ptr, ptr %10, align 8, !tbaa !5
  %1237 = load ptr, ptr %16, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.7, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %50, ptr noundef %37, ptr noundef %19, ptr noundef @c__1, ptr noundef %1235, ptr noundef %1236, ptr noundef %1237)
  br label %1262

1238:                                             ; preds = %1215
  %1239 = load i32, ptr %43, align 4, !tbaa !9
  %1240 = icmp eq i32 %1239, 2
  br i1 %1240, label %1241, label %1261

1241:                                             ; preds = %1238
  %1242 = load i32, ptr %46, align 4, !tbaa !9
  %1243 = load i32, ptr %57, align 4, !tbaa !9
  %1244 = sub nsw i32 %1242, %1243
  %1245 = add nsw i32 %1244, 1
  store i32 %1245, ptr %19, align 4, !tbaa !9
  %1246 = load ptr, ptr %11, align 8, !tbaa !5
  %1247 = load i32, ptr %57, align 4, !tbaa !9
  %1248 = sext i32 %1247 to i64
  %1249 = getelementptr inbounds double, ptr %1246, i64 %1248
  %1250 = load ptr, ptr %10, align 8, !tbaa !5
  %1251 = load ptr, ptr %16, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.7, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %47, ptr noundef %37, ptr noundef %19, ptr noundef @c__1, ptr noundef %1249, ptr noundef %1250, ptr noundef %1251)
  %1252 = load i32, ptr %46, align 4, !tbaa !9
  %1253 = load i32, ptr %57, align 4, !tbaa !9
  %1254 = sub nsw i32 %1252, %1253
  store i32 %1254, ptr %19, align 4, !tbaa !9
  %1255 = load ptr, ptr %12, align 8, !tbaa !5
  %1256 = load i32, ptr %57, align 4, !tbaa !9
  %1257 = sext i32 %1256 to i64
  %1258 = getelementptr inbounds double, ptr %1255, i64 %1257
  %1259 = load ptr, ptr %10, align 8, !tbaa !5
  %1260 = load ptr, ptr %16, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.7, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %47, ptr noundef %37, ptr noundef %19, ptr noundef @c__1, ptr noundef %1258, ptr noundef %1259, ptr noundef %1260)
  br label %1261

1261:                                             ; preds = %1241, %1238
  br label %1262

1262:                                             ; preds = %1261, %1218
  %1263 = load i32, ptr %24, align 4, !tbaa !9
  %1264 = load i32, ptr %48, align 4, !tbaa !9
  %1265 = icmp eq i32 %1263, %1264
  br i1 %1265, label %1266, label %1290

1266:                                             ; preds = %1262
  %1267 = load ptr, ptr %10, align 8, !tbaa !5
  %1268 = load i32, ptr %1267, align 4, !tbaa !9
  %1269 = sub nsw i32 %1268, 1
  store i32 %1269, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %29, align 4, !tbaa !9
  br label %1270

1270:                                             ; preds = %1286, %1266
  %1271 = load i32, ptr %29, align 4, !tbaa !9
  %1272 = load i32, ptr %19, align 4, !tbaa !9
  %1273 = icmp sle i32 %1271, %1272
  br i1 %1273, label %1274, label %1289

1274:                                             ; preds = %1270
  %1275 = load ptr, ptr %12, align 8, !tbaa !5
  %1276 = load i32, ptr %29, align 4, !tbaa !9
  %1277 = sext i32 %1276 to i64
  %1278 = getelementptr inbounds double, ptr %1275, i64 %1277
  %1279 = load double, ptr %1278, align 8, !tbaa !15
  %1280 = fcmp une double %1279, 0.000000e+00
  br i1 %1280, label %1281, label %1285

1281:                                             ; preds = %1274
  %1282 = load ptr, ptr %16, align 8, !tbaa !5
  %1283 = load i32, ptr %1282, align 4, !tbaa !9
  %1284 = add nsw i32 %1283, 1
  store i32 %1284, ptr %1282, align 4, !tbaa !9
  br label %1285

1285:                                             ; preds = %1281, %1274
  br label %1286

1286:                                             ; preds = %1285
  %1287 = load i32, ptr %29, align 4, !tbaa !9
  %1288 = add nsw i32 %1287, 1
  store i32 %1288, ptr %29, align 4, !tbaa !9
  br label %1270, !llvm.loop !22

1289:                                             ; preds = %1270
  store i32 1, ptr %60, align 4
  br label %1381

1290:                                             ; preds = %1262
  br label %198

1291:                                             ; preds = %203
  %1292 = load i32, ptr %49, align 4, !tbaa !9
  %1293 = icmp eq i32 %1292, 0
  br i1 %1293, label %1294, label %1299

1294:                                             ; preds = %1291
  %1295 = load ptr, ptr %10, align 8, !tbaa !5
  %1296 = load ptr, ptr %11, align 8, !tbaa !5
  %1297 = getelementptr inbounds double, ptr %1296, i64 1
  %1298 = load ptr, ptr %16, align 8, !tbaa !5
  call void @dlasrt_(ptr noundef @.str.2, ptr noundef %1295, ptr noundef %1297, ptr noundef %1298)
  br label %1380

1299:                                             ; preds = %1291
  %1300 = load ptr, ptr %10, align 8, !tbaa !5
  %1301 = load i32, ptr %1300, align 4, !tbaa !9
  store i32 %1301, ptr %19, align 4, !tbaa !9
  store i32 2, ptr %41, align 4, !tbaa !9
  br label %1302

1302:                                             ; preds = %1376, %1299
  %1303 = load i32, ptr %41, align 4, !tbaa !9
  %1304 = load i32, ptr %19, align 4, !tbaa !9
  %1305 = icmp sle i32 %1303, %1304
  br i1 %1305, label %1306, label %1379

1306:                                             ; preds = %1302
  %1307 = load i32, ptr %41, align 4, !tbaa !9
  %1308 = sub nsw i32 %1307, 1
  store i32 %1308, ptr %29, align 4, !tbaa !9
  %1309 = load i32, ptr %29, align 4, !tbaa !9
  store i32 %1309, ptr %31, align 4, !tbaa !9
  %1310 = load ptr, ptr %11, align 8, !tbaa !5
  %1311 = load i32, ptr %29, align 4, !tbaa !9
  %1312 = sext i32 %1311 to i64
  %1313 = getelementptr inbounds double, ptr %1310, i64 %1312
  %1314 = load double, ptr %1313, align 8, !tbaa !15
  store double %1314, ptr %34, align 8, !tbaa !15
  %1315 = load ptr, ptr %10, align 8, !tbaa !5
  %1316 = load i32, ptr %1315, align 4, !tbaa !9
  store i32 %1316, ptr %20, align 4, !tbaa !9
  %1317 = load i32, ptr %41, align 4, !tbaa !9
  store i32 %1317, ptr %30, align 4, !tbaa !9
  br label %1318

1318:                                             ; preds = %1338, %1306
  %1319 = load i32, ptr %30, align 4, !tbaa !9
  %1320 = load i32, ptr %20, align 4, !tbaa !9
  %1321 = icmp sle i32 %1319, %1320
  br i1 %1321, label %1322, label %1341

1322:                                             ; preds = %1318
  %1323 = load ptr, ptr %11, align 8, !tbaa !5
  %1324 = load i32, ptr %30, align 4, !tbaa !9
  %1325 = sext i32 %1324 to i64
  %1326 = getelementptr inbounds double, ptr %1323, i64 %1325
  %1327 = load double, ptr %1326, align 8, !tbaa !15
  %1328 = load double, ptr %34, align 8, !tbaa !15
  %1329 = fcmp olt double %1327, %1328
  br i1 %1329, label %1330, label %1337

1330:                                             ; preds = %1322
  %1331 = load i32, ptr %30, align 4, !tbaa !9
  store i32 %1331, ptr %31, align 4, !tbaa !9
  %1332 = load ptr, ptr %11, align 8, !tbaa !5
  %1333 = load i32, ptr %30, align 4, !tbaa !9
  %1334 = sext i32 %1333 to i64
  %1335 = getelementptr inbounds double, ptr %1332, i64 %1334
  %1336 = load double, ptr %1335, align 8, !tbaa !15
  store double %1336, ptr %34, align 8, !tbaa !15
  br label %1337

1337:                                             ; preds = %1330, %1322
  br label %1338

1338:                                             ; preds = %1337
  %1339 = load i32, ptr %30, align 4, !tbaa !9
  %1340 = add nsw i32 %1339, 1
  store i32 %1340, ptr %30, align 4, !tbaa !9
  br label %1318, !llvm.loop !23

1341:                                             ; preds = %1318
  %1342 = load i32, ptr %31, align 4, !tbaa !9
  %1343 = load i32, ptr %29, align 4, !tbaa !9
  %1344 = icmp ne i32 %1342, %1343
  br i1 %1344, label %1345, label %1375

1345:                                             ; preds = %1341
  %1346 = load ptr, ptr %11, align 8, !tbaa !5
  %1347 = load i32, ptr %29, align 4, !tbaa !9
  %1348 = sext i32 %1347 to i64
  %1349 = getelementptr inbounds double, ptr %1346, i64 %1348
  %1350 = load double, ptr %1349, align 8, !tbaa !15
  %1351 = load ptr, ptr %11, align 8, !tbaa !5
  %1352 = load i32, ptr %31, align 4, !tbaa !9
  %1353 = sext i32 %1352 to i64
  %1354 = getelementptr inbounds double, ptr %1351, i64 %1353
  store double %1350, ptr %1354, align 8, !tbaa !15
  %1355 = load double, ptr %34, align 8, !tbaa !15
  %1356 = load ptr, ptr %11, align 8, !tbaa !5
  %1357 = load i32, ptr %29, align 4, !tbaa !9
  %1358 = sext i32 %1357 to i64
  %1359 = getelementptr inbounds double, ptr %1356, i64 %1358
  store double %1355, ptr %1359, align 8, !tbaa !15
  %1360 = load ptr, ptr %10, align 8, !tbaa !5
  %1361 = load ptr, ptr %13, align 8, !tbaa !5
  %1362 = load i32, ptr %29, align 4, !tbaa !9
  %1363 = load i32, ptr %17, align 4, !tbaa !9
  %1364 = mul nsw i32 %1362, %1363
  %1365 = add nsw i32 %1364, 1
  %1366 = sext i32 %1365 to i64
  %1367 = getelementptr inbounds %struct.doublecomplex, ptr %1361, i64 %1366
  %1368 = load ptr, ptr %13, align 8, !tbaa !5
  %1369 = load i32, ptr %31, align 4, !tbaa !9
  %1370 = load i32, ptr %17, align 4, !tbaa !9
  %1371 = mul nsw i32 %1369, %1370
  %1372 = add nsw i32 %1371, 1
  %1373 = sext i32 %1372 to i64
  %1374 = getelementptr inbounds %struct.doublecomplex, ptr %1368, i64 %1373
  call void @zswap_(ptr noundef %1360, ptr noundef %1367, ptr noundef @c__1, ptr noundef %1374, ptr noundef @c__1)
  br label %1375

1375:                                             ; preds = %1345, %1341
  br label %1376

1376:                                             ; preds = %1375
  %1377 = load i32, ptr %41, align 4, !tbaa !9
  %1378 = add nsw i32 %1377, 1
  store i32 %1378, ptr %41, align 4, !tbaa !9
  br label %1302, !llvm.loop !24

1379:                                             ; preds = %1302
  br label %1380

1380:                                             ; preds = %1379, %1294
  store i32 1, ptr %60, align 4
  br label %1381

1381:                                             ; preds = %1380, %1289, %164, %143, %134
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #5
  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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

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

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

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

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

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

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

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"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, !13, i64 0}
!12 = !{!"", !13, i64 0, !13, i64 8}
!13 = !{!"double", !7, i64 0}
!14 = !{!12, !13, i64 8}
!15 = !{!13, !13, i64 0}
!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}


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

; Function Attrs: nounwind uwtable
define dso_local void @zsteqr_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7) local_unnamed_addr #0 {
  %9 = alloca i32, align 4
  %10 = alloca double, align 8
  %11 = alloca double, align 8
  %12 = alloca double, align 8
  %13 = alloca double, align 8
  %14 = alloca double, align 8
  %15 = alloca double, align 8
  %16 = alloca i32, align 4
  %17 = alloca double, align 8
  %18 = alloca double, align 8
  %19 = alloca double, align 8
  %20 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #6
  %21 = getelementptr inbounds i8, ptr %2, i64 -8
  %22 = getelementptr inbounds i8, ptr %3, i64 -8
  %23 = load i32, ptr %5, align 4, !tbaa !5
  %24 = add nsw i32 %23, 1
  %narrow = xor i32 %23, -1
  %25 = sext i32 %narrow to i64
  %26 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %25
  %27 = getelementptr inbounds i8, ptr %6, i64 -8
  store i32 0, ptr %7, align 4, !tbaa !5
  %28 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #6
  %.not.not = icmp eq i32 %28, 0
  br i1 %.not.not, label %29, label %.thread

29:                                               ; preds = %8
  %30 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #6
  %.not520 = icmp eq i32 %30, 0
  br i1 %.not520, label %31, label %.thread

31:                                               ; preds = %29
  %32 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #6
  %.not521 = icmp eq i32 %32, 0
  br i1 %.not521, label %.thread546.sink.split, label %.thread

.thread:                                          ; preds = %29, %8, %31
  %33 = phi i1 [ true, %31 ], [ false, %8 ], [ false, %29 ]
  %34 = load i32, ptr %1, align 4, !tbaa !5
  %35 = icmp slt i32 %34, 0
  br i1 %35, label %.thread546.sink.split, label %36

36:                                               ; preds = %.thread
  %37 = load i32, ptr %5, align 4, !tbaa !5
  %38 = icmp slt i32 %37, 1
  %39 = icmp ugt i32 %34, %37
  %or.cond = and i1 %.not.not, %39
  %or.cond759 = or i1 %38, %or.cond
  br i1 %or.cond759, label %.thread546.sink.split, label %40

40:                                               ; preds = %36
  %.pr = load i32, ptr %7, align 4, !tbaa !5
  %.not522 = icmp eq i32 %.pr, 0
  br i1 %.not522, label %44, label %.thread546

.thread546.sink.split:                            ; preds = %36, %.thread, %31
  %.sink = phi i32 [ -1, %31 ], [ -2, %.thread ], [ -6, %36 ]
  store i32 %.sink, ptr %7, align 4, !tbaa !5
  br label %.thread546

.thread546:                                       ; preds = %.thread546.sink.split, %40
  %41 = phi i32 [ %.pr, %40 ], [ %.sink, %.thread546.sink.split ]
  %42 = sub nsw i32 0, %41
  store i32 %42, ptr %9, align 4, !tbaa !5
  %43 = call i32 @xerbla_(ptr noundef nonnull @.str.3, ptr noundef nonnull %9, i32 noundef 6) #6
  br label %.loopexit

44:                                               ; preds = %40
  switch i32 %34, label %49 [
    i32 0, label %.loopexit
    i32 1, label %45
  ]

45:                                               ; preds = %44
  br i1 %33, label %46, label %.loopexit

46:                                               ; preds = %45
  store double 1.000000e+00, ptr %4, align 8, !tbaa !9
  %47 = sext i32 %24 to i64
  %48 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %47, i32 1
  store double 0.000000e+00, ptr %48, align 8, !tbaa !12
  br label %.loopexit

49:                                               ; preds = %44
  %50 = tail call double @dlamch_(ptr noundef nonnull @.str.4) #6
  %51 = fmul double %50, %50
  %52 = tail call double @dlamch_(ptr noundef nonnull @.str.5) #6
  %53 = fdiv double 1.000000e+00, %52
  %54 = tail call double @sqrt(double noundef %53) #6
  %55 = fdiv double %54, 3.000000e+00
  store double %55, ptr %18, align 8, !tbaa !13
  %56 = tail call double @sqrt(double noundef %52) #6
  %57 = fdiv double %56, %51
  store double %57, ptr %17, align 8, !tbaa !13
  br i1 %33, label %58, label %59

58:                                               ; preds = %49
  tail call void @zlaset_(ptr noundef nonnull @.str.6, ptr noundef nonnull %1, ptr noundef nonnull %1, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b2, ptr noundef %4, ptr noundef nonnull %5) #6
  br label %59

59:                                               ; preds = %58, %49
  %60 = load i32, ptr %1, align 4, !tbaa !5
  %61 = mul i32 %60, 30
  %62 = add nsw i32 %60, -1
  %invariant.gep = getelementptr i8, ptr %3, i64 -16
  %invariant.gep616 = getelementptr i8, ptr %26, i64 16
  br label %.outer565

.outer565:                                        ; preds = %423, %59
  %.0490.ph = phi i32 [ %102, %423 ], [ 1, %59 ]
  %.0481.ph = phi i32 [ %.3, %423 ], [ 0, %59 ]
  %63 = load i32, ptr %1, align 4, !tbaa !5
  %64 = icmp sgt i32 %.0490.ph, %63
  br i1 %64, label %.outer565._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.outer565, %.backedge
  %65 = phi i32 [ %104, %.backedge ], [ %63, %.outer565 ]
  %.0490605 = phi i32 [ %102, %.backedge ], [ %.0490.ph, %.outer565 ]
  %66 = icmp sgt i32 %.0490605, 1
  br i1 %66, label %67, label %69

67:                                               ; preds = %.lr.ph
  %68 = zext nneg i32 %.0490605 to i64
  %gep = getelementptr double, ptr %invariant.gep, i64 %68
  store double 0.000000e+00, ptr %gep, align 8, !tbaa !13
  br label %69

69:                                               ; preds = %67, %.lr.ph
  %.not523.not = icmp slt i32 %.0490605, %60
  br i1 %.not523.not, label %70, label %.loopexit564

70:                                               ; preds = %69
  store i32 %62, ptr %9, align 4, !tbaa !5
  %71 = sext i32 %.0490605 to i64
  br label %72

72:                                               ; preds = %79, %70
  %indvars.iv = phi i64 [ %indvars.iv.next, %79 ], [ %71, %70 ]
  %73 = load i32, ptr %9, align 4, !tbaa !5
  %74 = sext i32 %73 to i64
  %.not524 = icmp sgt i64 %indvars.iv, %74
  br i1 %.not524, label %.loopexit563.loopexit, label %75

75:                                               ; preds = %72
  %76 = getelementptr inbounds double, ptr %22, i64 %indvars.iv
  %77 = load double, ptr %76, align 8, !tbaa !13
  %78 = fcmp oeq double %77, 0.000000e+00
  br i1 %78, label %.loopexit564.loopexit, label %79

79:                                               ; preds = %75
  %80 = fcmp oge double %77, 0.000000e+00
  %81 = fneg double %77
  %82 = select i1 %80, double %77, double %81
  %83 = getelementptr inbounds double, ptr %21, i64 %indvars.iv
  %84 = load double, ptr %83, align 8, !tbaa !13
  %85 = fcmp oge double %84, 0.000000e+00
  %86 = fneg double %84
  %87 = select i1 %85, double %84, double %86
  %88 = call double @sqrt(double noundef %87) #6
  %indvars.iv.next = add nsw i64 %indvars.iv, 1
  %89 = getelementptr double, ptr %2, i64 %indvars.iv
  %90 = load double, ptr %89, align 8, !tbaa !13
  %91 = fcmp oge double %90, 0.000000e+00
  %92 = fneg double %90
  %93 = select i1 %91, double %90, double %92
  %94 = call double @sqrt(double noundef %93) #6
  %95 = fmul double %88, %94
  %96 = fmul double %50, %95
  %97 = fcmp ugt double %82, %96
  br i1 %97, label %72, label %98, !llvm.loop !14

98:                                               ; preds = %79
  %99 = getelementptr inbounds double, ptr %22, i64 %indvars.iv
  %100 = trunc nsw i64 %indvars.iv to i32
  store double 0.000000e+00, ptr %99, align 8, !tbaa !13
  br label %.loopexit564

.loopexit563.loopexit:                            ; preds = %72
  %.pre = load i32, ptr %1, align 4, !tbaa !5
  br label %.loopexit564

.loopexit564.loopexit:                            ; preds = %75
  %101 = trunc nsw i64 %indvars.iv to i32
  br label %.loopexit564

.loopexit564:                                     ; preds = %69, %.loopexit563.loopexit, %.loopexit564.loopexit, %98
  %.1496 = phi i32 [ %100, %98 ], [ %101, %.loopexit564.loopexit ], [ %.pre, %.loopexit563.loopexit ], [ %65, %69 ]
  %102 = add nsw i32 %.1496, 1
  %103 = icmp eq i32 %.1496, %.0490605
  br i1 %103, label %.backedge, label %105

.backedge:                                        ; preds = %.loopexit564, %105
  %104 = load i32, ptr %1, align 4, !tbaa !5
  %.not652 = icmp slt i32 %.1496, %104
  br i1 %.not652, label %.lr.ph, label %.outer565._crit_edge

105:                                              ; preds = %.loopexit564
  %106 = sub nsw i32 %.1496, %.0490605
  %107 = add nsw i32 %106, 1
  store i32 %107, ptr %9, align 4, !tbaa !5
  %108 = sext i32 %.0490605 to i64
  %109 = getelementptr inbounds double, ptr %21, i64 %108
  %110 = getelementptr inbounds double, ptr %22, i64 %108
  %111 = call double @dlanst_(ptr noundef nonnull @.str.2, ptr noundef nonnull %9, ptr noundef nonnull %109, ptr noundef nonnull %110) #6
  store double %111, ptr %15, align 8, !tbaa !13
  %112 = fcmp oeq double %111, 0.000000e+00
  br i1 %112, label %.backedge, label %113

113:                                              ; preds = %105
  %114 = load double, ptr %18, align 8, !tbaa !13
  %115 = fcmp ule double %111, %114
  br i1 %115, label %116, label %.sink.split

116:                                              ; preds = %113
  %117 = load double, ptr %17, align 8, !tbaa !13
  %118 = fcmp olt double %111, %117
  br i1 %118, label %.sink.split, label %119

.sink.split:                                      ; preds = %116, %113
  %.sink798 = phi ptr [ %18, %113 ], [ %17, %116 ]
  store i32 %107, ptr %9, align 4, !tbaa !5
  call void @dlascl_(ptr noundef nonnull @.str.7, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %15, ptr noundef nonnull %.sink798, ptr noundef nonnull %9, ptr noundef nonnull @c__1, ptr noundef nonnull %109, ptr noundef nonnull %1, ptr noundef nonnull %7) #6
  store i32 %106, ptr %9, align 4, !tbaa !5
  call void @dlascl_(ptr noundef nonnull @.str.7, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %15, ptr noundef nonnull %.sink798, ptr noundef nonnull %9, ptr noundef nonnull @c__1, ptr noundef nonnull %110, ptr noundef nonnull %1, ptr noundef nonnull %7) #6
  br label %119

119:                                              ; preds = %.sink.split, %116
  %120 = phi i1 [ false, %116 ], [ %115, %.sink.split ]
  %121 = sext i32 %.1496 to i64
  %122 = getelementptr inbounds double, ptr %21, i64 %121
  %123 = load double, ptr %122, align 8, !tbaa !13
  %124 = fcmp oge double %123, 0.000000e+00
  %125 = fneg double %123
  %126 = select i1 %124, double %123, double %125
  %127 = load double, ptr %109, align 8, !tbaa !13
  %128 = fcmp oge double %127, 0.000000e+00
  %129 = fneg double %127
  %130 = select i1 %128, double %127, double %129
  %131 = fcmp olt double %126, %130
  %.0499 = select i1 %131, i32 %.1496, i32 %.0490605
  %.0480 = select i1 %131, i32 %.0490605, i32 %.1496
  %132 = icmp sgt i32 %.0480, %.0499
  br i1 %132, label %.preheader, label %.preheader559

.preheader559:                                    ; preds = %119
  %133 = add nsw i32 %.0480, 1
  %134 = sext i32 %.0480 to i64
  br label %.outer561

.preheader:                                       ; preds = %119
  %135 = add nsw i32 %.0480, -1
  br label %.outer

.outer:                                           ; preds = %.outer.backedge, %.preheader
  %.1500.ph = phi i32 [ %.0499, %.preheader ], [ %.1500.ph.be, %.outer.backedge ]
  %.1.ph = phi i32 [ %.0481.ph, %.preheader ], [ %.1, %.outer.backedge ]
  %.not531 = icmp eq i32 %.1500.ph, %.0480
  %136 = sext i32 %.1500.ph to i64
  %137 = getelementptr inbounds double, ptr %21, i64 %136
  %138 = add nsw i32 %.1500.ph, 1
  %139 = sext i32 %138 to i64
  %140 = getelementptr inbounds double, ptr %21, i64 %139
  %141 = getelementptr inbounds double, ptr %22, i64 %136
  %142 = getelementptr inbounds double, ptr %27, i64 %136
  %143 = add i32 %.1500.ph, -1
  %144 = mul nsw i32 %.1500.ph, %23
  %145 = sext i32 %144 to i64
  %gep628 = getelementptr %struct.doublecomplex, ptr %invariant.gep616, i64 %145
  %smax = call i32 @llvm.smax.i32(i32 %.0480, i32 %.1500.ph)
  %wide.trip.count = sext i32 %smax to i64
  br label %146

146:                                              ; preds = %.outer, %263
  %.1 = phi i32 [ %193, %263 ], [ %.1.ph, %.outer ]
  br i1 %.not531, label %.thread549, label %147

147:                                              ; preds = %146
  store i32 %135, ptr %9, align 4, !tbaa !5
  br label %148

148:                                              ; preds = %149, %147
  %indvars.iv698 = phi i64 [ %indvars.iv.next699, %149 ], [ %136, %147 ]
  %exitcond.not = icmp eq i64 %indvars.iv698, %wide.trip.count
  br i1 %exitcond.not, label %.thread549, label %149

149:                                              ; preds = %148
  %150 = getelementptr inbounds double, ptr %22, i64 %indvars.iv698
  %151 = load double, ptr %150, align 8, !tbaa !13
  %152 = fcmp oge double %151, 0.000000e+00
  %153 = fneg double %151
  %154 = select i1 %152, double %151, double %153
  %155 = fmul double %154, %154
  %156 = getelementptr inbounds double, ptr %21, i64 %indvars.iv698
  %157 = load double, ptr %156, align 8, !tbaa !13
  %158 = fcmp oge double %157, 0.000000e+00
  %159 = fneg double %157
  %160 = select i1 %158, double %157, double %159
  %161 = fmul double %51, %160
  %indvars.iv.next699 = add nsw i64 %indvars.iv698, 1
  %162 = getelementptr double, ptr %2, i64 %indvars.iv698
  %163 = load double, ptr %162, align 8, !tbaa !13
  %164 = fcmp oge double %163, 0.000000e+00
  %165 = fneg double %163
  %166 = select i1 %164, double %163, double %165
  %167 = call double @llvm.fmuladd.f64(double %161, double %166, double %52)
  %168 = fcmp ugt double %155, %167
  br i1 %168, label %148, label %169, !llvm.loop !16

169:                                              ; preds = %149
  %170 = trunc nsw i64 %indvars.iv698 to i32
  %sext722 = shl i64 %indvars.iv698, 32
  %171 = ashr exact i64 %sext722, 29
  %172 = getelementptr inbounds i8, ptr %22, i64 %171
  store double 0.000000e+00, ptr %172, align 8, !tbaa !13
  br label %.thread549

.thread549:                                       ; preds = %148, %146, %169
  %.3498551 = phi i32 [ %170, %169 ], [ %.0480, %146 ], [ %.0480, %148 ]
  %173 = load double, ptr %137, align 8, !tbaa !13
  %174 = icmp eq i32 %.3498551, %.1500.ph
  br i1 %174, label %267, label %175

175:                                              ; preds = %.thread549
  %176 = icmp eq i32 %.3498551, %138
  br i1 %176, label %177, label %190

177:                                              ; preds = %175
  br i1 %.not.not, label %178, label %185

178:                                              ; preds = %177
  call void @dlaev2_(ptr noundef nonnull %137, ptr noundef nonnull %141, ptr noundef nonnull %140, ptr noundef nonnull %19, ptr noundef nonnull %20, ptr noundef nonnull %10, ptr noundef nonnull %14) #6
  %179 = load double, ptr %10, align 8, !tbaa !13
  store double %179, ptr %142, align 8, !tbaa !13
  %180 = load double, ptr %14, align 8, !tbaa !13
  %181 = load i32, ptr %1, align 4, !tbaa !5
  %182 = add i32 %143, %181
  %183 = sext i32 %182 to i64
  %184 = getelementptr inbounds double, ptr %27, i64 %183
  store double %180, ptr %184, align 8, !tbaa !13
  call void @zlasr_(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.9, ptr noundef nonnull %1, ptr noundef nonnull @c__2, ptr noundef nonnull %142, ptr noundef nonnull %184, ptr noundef %gep628, ptr noundef nonnull %5) #6
  br label %186

185:                                              ; preds = %177
  call void @dlae2_(ptr noundef nonnull %137, ptr noundef nonnull %141, ptr noundef nonnull %140, ptr noundef nonnull %19, ptr noundef nonnull %20) #6
  br label %186

186:                                              ; preds = %185, %178
  %187 = load double, ptr %19, align 8, !tbaa !13
  store double %187, ptr %137, align 8, !tbaa !13
  %188 = load double, ptr %20, align 8, !tbaa !13
  store double %188, ptr %140, align 8, !tbaa !13
  store double 0.000000e+00, ptr %141, align 8, !tbaa !13
  %189 = add nsw i32 %.1500.ph, 2
  %.not536 = icmp sgt i32 %189, %.0480
  br i1 %.not536, label %.loopexit557, label %.outer.backedge

190:                                              ; preds = %175
  %191 = icmp eq i32 %.1, %61
  br i1 %191, label %.loopexit557, label %192

192:                                              ; preds = %190
  %193 = add nsw i32 %.1, 1
  %194 = load double, ptr %140, align 8, !tbaa !13
  %195 = fsub double %194, %173
  %196 = load double, ptr %141, align 8, !tbaa !13
  %197 = fmul double %196, 2.000000e+00
  %198 = fdiv double %195, %197
  store double %198, ptr %12, align 8, !tbaa !13
  %199 = call double @dlapy2_(ptr noundef nonnull %12, ptr noundef nonnull @c_b41) #6
  store double %199, ptr %13, align 8, !tbaa !13
  %200 = sext i32 %.3498551 to i64
  %201 = getelementptr inbounds double, ptr %21, i64 %200
  %202 = load double, ptr %201, align 8, !tbaa !13
  %203 = fsub double %202, %173
  %204 = load double, ptr %141, align 8, !tbaa !13
  %205 = load double, ptr %12, align 8, !tbaa !13
  %206 = fcmp ult double %205, 0.000000e+00
  %207 = fcmp oge double %199, 0.000000e+00
  %.neg533 = fneg double %199
  br i1 %206, label %210, label %208

208:                                              ; preds = %192
  %209 = select i1 %207, double %199, double %.neg533
  br label %212

210:                                              ; preds = %192
  %211 = select i1 %207, double %.neg533, double %199
  br label %212

212:                                              ; preds = %210, %208
  %213 = phi double [ %209, %208 ], [ %211, %210 ]
  %214 = fadd double %205, %213
  %215 = fdiv double %204, %214
  %216 = fadd double %203, %215
  store double %216, ptr %12, align 8, !tbaa !13
  store double 1.000000e+00, ptr %14, align 8, !tbaa !13
  store double 1.000000e+00, ptr %10, align 8, !tbaa !13
  store i32 %.1500.ph, ptr %9, align 4, !tbaa !5
  %.not534620.not = icmp sgt i32 %.3498551, %.1500.ph
  br i1 %.not534620.not, label %.lr.ph624.preheader, label %._crit_edge625

.lr.ph624.preheader:                              ; preds = %212
  %217 = add nsw i32 %.3498551, -1
  %sext703 = sext i32 %217 to i64
  br label %.lr.ph624

.lr.ph624:                                        ; preds = %.lr.ph624.preheader, %253
  %218 = phi double [ 1.000000e+00, %.lr.ph624.preheader ], [ %236, %253 ]
  %219 = phi double [ 1.000000e+00, %.lr.ph624.preheader ], [ %235, %253 ]
  %indvars.iv701.in = phi i64 [ %200, %.lr.ph624.preheader ], [ %indvars.iv701, %253 ]
  %.0491621 = phi double [ 0.000000e+00, %.lr.ph624.preheader ], [ %240, %253 ]
  %indvars.iv701 = add nsw i64 %indvars.iv701.in, -1
  %220 = getelementptr inbounds double, ptr %22, i64 %indvars.iv701
  %221 = load double, ptr %220, align 8, !tbaa !13
  %222 = fmul double %219, %221
  store double %222, ptr %11, align 8, !tbaa !13
  %223 = fmul double %221, %218
  call void @dlartg_(ptr noundef nonnull %12, ptr noundef nonnull %11, ptr noundef nonnull %10, ptr noundef nonnull %14, ptr noundef nonnull %13) #6
  %224 = icmp eq i64 %indvars.iv701, %sext703
  br i1 %224, label %228, label %225

225:                                              ; preds = %.lr.ph624
  %226 = load double, ptr %13, align 8, !tbaa !13
  %227 = getelementptr i8, ptr %220, i64 8
  store double %226, ptr %227, align 8, !tbaa !13
  br label %228

228:                                              ; preds = %225, %.lr.ph624
  %229 = getelementptr double, ptr %21, i64 %indvars.iv701
  %230 = getelementptr i8, ptr %229, i64 8
  %231 = load double, ptr %230, align 8, !tbaa !13
  %232 = fsub double %231, %.0491621
  %233 = load double, ptr %229, align 8, !tbaa !13
  %234 = fsub double %233, %232
  %235 = load double, ptr %14, align 8, !tbaa !13
  %236 = load double, ptr %10, align 8, !tbaa !13
  %237 = fmul double %236, 2.000000e+00
  %238 = fmul double %223, %237
  %239 = call double @llvm.fmuladd.f64(double %234, double %235, double %238)
  store double %239, ptr %13, align 8, !tbaa !13
  %240 = fmul double %235, %239
  %241 = fadd double %232, %240
  store double %241, ptr %230, align 8, !tbaa !13
  %242 = fneg double %223
  %243 = call double @llvm.fmuladd.f64(double %236, double %239, double %242)
  store double %243, ptr %12, align 8, !tbaa !13
  br i1 %.not.not, label %244, label %253

244:                                              ; preds = %228
  %245 = getelementptr inbounds double, ptr %27, i64 %indvars.iv701
  store double %236, ptr %245, align 8, !tbaa !13
  %246 = fneg double %235
  %247 = load i32, ptr %1, align 4, !tbaa !5
  %248 = trunc nsw i64 %indvars.iv701 to i32
  %249 = add i32 %248, -1
  %250 = add i32 %249, %247
  %251 = sext i32 %250 to i64
  %252 = getelementptr inbounds double, ptr %27, i64 %251
  store double %246, ptr %252, align 8, !tbaa !13
  br label %253

253:                                              ; preds = %228, %244
  %254 = load i32, ptr %9, align 4, !tbaa !5
  %255 = sext i32 %254 to i64
  %.not534.not = icmp sgt i64 %indvars.iv701, %255
  br i1 %.not534.not, label %.lr.ph624, label %._crit_edge625, !llvm.loop !17

._crit_edge625:                                   ; preds = %253, %212
  %256 = phi double [ %216, %212 ], [ %243, %253 ]
  %.0491.lcssa = phi double [ 0.000000e+00, %212 ], [ %240, %253 ]
  br i1 %.not.not, label %257, label %263

257:                                              ; preds = %._crit_edge625
  %reass.sub = sub i32 %.3498551, %.1500.ph
  %258 = add i32 %reass.sub, 1
  store i32 %258, ptr %16, align 4, !tbaa !5
  %259 = load i32, ptr %1, align 4, !tbaa !5
  %260 = add i32 %143, %259
  %261 = sext i32 %260 to i64
  %262 = getelementptr inbounds double, ptr %27, i64 %261
  call void @zlasr_(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.9, ptr noundef nonnull %1, ptr noundef nonnull %16, ptr noundef nonnull %142, ptr noundef nonnull %262, ptr noundef %gep628, ptr noundef nonnull %5) #6
  %.pre720 = load double, ptr %12, align 8, !tbaa !13
  br label %263

263:                                              ; preds = %257, %._crit_edge625
  %264 = phi double [ %.pre720, %257 ], [ %256, %._crit_edge625 ]
  %265 = load double, ptr %137, align 8, !tbaa !13
  %266 = fsub double %265, %.0491.lcssa
  store double %266, ptr %137, align 8, !tbaa !13
  store double %264, ptr %141, align 8, !tbaa !13
  br label %146

267:                                              ; preds = %.thread549
  %.not537.not = icmp slt i32 %.1500.ph, %.0480
  br i1 %.not537.not, label %.outer.backedge, label %.loopexit557

.outer.backedge:                                  ; preds = %267, %186
  %.1500.ph.be = phi i32 [ %189, %186 ], [ %138, %267 ]
  br label %.outer

268:                                              ; preds = %.outer561, %418
  %.2 = phi i32 [ %325, %418 ], [ %.2.ph, %.outer561 ]
  br i1 %.not525, label %.thread553, label %269

269:                                              ; preds = %268
  store i32 %133, ptr %9, align 4, !tbaa !5
  br label %270

270:                                              ; preds = %271, %269
  %indvars.iv691 = phi i64 [ %indvars.iv.next692, %271 ], [ %315, %269 ]
  %.not526.not = icmp sgt i64 %indvars.iv691, %134
  br i1 %.not526.not, label %271, label %.thread553

271:                                              ; preds = %270
  %indvars.iv.next692 = add nsw i64 %indvars.iv691, -1
  %272 = getelementptr inbounds double, ptr %22, i64 %indvars.iv.next692
  %273 = load double, ptr %272, align 8, !tbaa !13
  %274 = fcmp oge double %273, 0.000000e+00
  %275 = fneg double %273
  %276 = select i1 %274, double %273, double %275
  %277 = fmul double %276, %276
  %278 = getelementptr inbounds double, ptr %21, i64 %indvars.iv691
  %279 = load double, ptr %278, align 8, !tbaa !13
  %280 = fcmp oge double %279, 0.000000e+00
  %281 = fneg double %279
  %282 = select i1 %280, double %279, double %281
  %283 = fmul double %51, %282
  %284 = getelementptr inbounds double, ptr %21, i64 %indvars.iv.next692
  %285 = load double, ptr %284, align 8, !tbaa !13
  %286 = fcmp oge double %285, 0.000000e+00
  %287 = fneg double %285
  %288 = select i1 %286, double %285, double %287
  %289 = call double @llvm.fmuladd.f64(double %283, double %288, double %52)
  %290 = fcmp ugt double %277, %289
  br i1 %290, label %270, label %291, !llvm.loop !18

291:                                              ; preds = %271
  %292 = trunc nsw i64 %indvars.iv691 to i32
  %sext = shl i64 %indvars.iv691, 32
  %293 = ashr exact i64 %sext, 29
  %gep615 = getelementptr i8, ptr %invariant.gep, i64 %293
  store double 0.000000e+00, ptr %gep615, align 8, !tbaa !13
  br label %.thread553

.thread553:                                       ; preds = %270, %268, %291
  %.5555 = phi i32 [ %292, %291 ], [ %.0480, %268 ], [ %.0480, %270 ]
  %294 = load double, ptr %316, align 8, !tbaa !13
  %295 = icmp eq i32 %.5555, %.2501.ph
  br i1 %295, label %422, label %296

296:                                              ; preds = %.thread553
  %297 = icmp eq i32 %.5555, %317
  br i1 %297, label %298, label %322

298:                                              ; preds = %296
  br i1 %.not.not, label %299, label %310

299:                                              ; preds = %298
  call void @dlaev2_(ptr noundef nonnull %319, ptr noundef nonnull %320, ptr noundef nonnull %316, ptr noundef nonnull %19, ptr noundef nonnull %20, ptr noundef nonnull %10, ptr noundef nonnull %14) #6
  %300 = load double, ptr %10, align 8, !tbaa !13
  %301 = getelementptr inbounds double, ptr %27, i64 %318
  store double %300, ptr %301, align 8, !tbaa !13
  %302 = load double, ptr %14, align 8, !tbaa !13
  %303 = load i32, ptr %1, align 4, !tbaa !5
  %304 = add i32 %.2501.ph, -2
  %305 = add i32 %304, %303
  %306 = sext i32 %305 to i64
  %307 = getelementptr inbounds double, ptr %27, i64 %306
  store double %302, ptr %307, align 8, !tbaa !13
  %308 = mul nsw i32 %317, %23
  %309 = sext i32 %308 to i64
  %gep619 = getelementptr %struct.doublecomplex, ptr %invariant.gep616, i64 %309
  call void @zlasr_(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.10, ptr noundef nonnull %1, ptr noundef nonnull @c__2, ptr noundef nonnull %301, ptr noundef nonnull %307, ptr noundef %gep619, ptr noundef nonnull %5) #6
  br label %311

310:                                              ; preds = %298
  call void @dlae2_(ptr noundef nonnull %319, ptr noundef nonnull %320, ptr noundef nonnull %316, ptr noundef nonnull %19, ptr noundef nonnull %20) #6
  br label %311

311:                                              ; preds = %310, %299
  %312 = load double, ptr %19, align 8, !tbaa !13
  store double %312, ptr %319, align 8, !tbaa !13
  %313 = load double, ptr %20, align 8, !tbaa !13
  store double %313, ptr %316, align 8, !tbaa !13
  store double 0.000000e+00, ptr %320, align 8, !tbaa !13
  %314 = add nsw i32 %.2501.ph, -2
  %.not529 = icmp slt i32 %314, %.0480
  br i1 %.not529, label %.loopexit557, label %.outer561.backedge

.outer561:                                        ; preds = %.outer561.backedge, %.preheader559
  %.2501.ph = phi i32 [ %.0499, %.preheader559 ], [ %.2501.ph.be, %.outer561.backedge ]
  %.2.ph = phi i32 [ %.0481.ph, %.preheader559 ], [ %.2, %.outer561.backedge ]
  %.not525 = icmp eq i32 %.2501.ph, %.0480
  %315 = sext i32 %.2501.ph to i64
  %316 = getelementptr inbounds double, ptr %21, i64 %315
  %317 = add nsw i32 %.2501.ph, -1
  %318 = sext i32 %317 to i64
  %319 = getelementptr inbounds double, ptr %21, i64 %318
  %320 = getelementptr inbounds double, ptr %22, i64 %318
  %321 = add i32 %.2501.ph, 1
  br label %268

322:                                              ; preds = %296
  %323 = icmp eq i32 %.2, %61
  br i1 %323, label %.loopexit557, label %324

324:                                              ; preds = %322
  %325 = add nsw i32 %.2, 1
  %326 = load double, ptr %319, align 8, !tbaa !13
  %327 = fsub double %326, %294
  %328 = load double, ptr %320, align 8, !tbaa !13
  %329 = fmul double %328, 2.000000e+00
  %330 = fdiv double %327, %329
  store double %330, ptr %12, align 8, !tbaa !13
  %331 = call double @dlapy2_(ptr noundef nonnull %12, ptr noundef nonnull @c_b41) #6
  store double %331, ptr %13, align 8, !tbaa !13
  %332 = sext i32 %.5555 to i64
  %333 = getelementptr inbounds double, ptr %21, i64 %332
  %334 = load double, ptr %333, align 8, !tbaa !13
  %335 = fsub double %334, %294
  %336 = load double, ptr %320, align 8, !tbaa !13
  %337 = load double, ptr %12, align 8, !tbaa !13
  %338 = fcmp ult double %337, 0.000000e+00
  %339 = fcmp oge double %331, 0.000000e+00
  %.neg = fneg double %331
  br i1 %338, label %342, label %340

340:                                              ; preds = %324
  %341 = select i1 %339, double %331, double %.neg
  br label %344

342:                                              ; preds = %324
  %343 = select i1 %339, double %.neg, double %331
  br label %344

344:                                              ; preds = %342, %340
  %345 = phi double [ %341, %340 ], [ %343, %342 ]
  %346 = fadd double %337, %345
  %347 = fdiv double %336, %346
  %348 = fadd double %335, %347
  store double %348, ptr %12, align 8, !tbaa !13
  store double 1.000000e+00, ptr %14, align 8, !tbaa !13
  store double 1.000000e+00, ptr %10, align 8, !tbaa !13
  store i32 %317, ptr %9, align 4, !tbaa !5
  %.not527607.not = icmp slt i32 %.5555, %.2501.ph
  br i1 %.not527607.not, label %349, label %._crit_edge612

349:                                              ; preds = %344
  %350 = getelementptr inbounds double, ptr %22, i64 %332
  %351 = load double, ptr %350, align 8, !tbaa !13
  store double %351, ptr %11, align 8, !tbaa !13
  call void @dlartg_(ptr noundef nonnull %12, ptr noundef nonnull %11, ptr noundef nonnull %10, ptr noundef nonnull %14, ptr noundef nonnull %13) #6
  %.pre718 = load double, ptr %333, align 8, !tbaa !13
  %352 = getelementptr double, ptr %2, i64 %332
  %353 = load double, ptr %352, align 8, !tbaa !13
  %354 = fsub double %353, %.pre718
  %355 = load double, ptr %14, align 8, !tbaa !13
  %356 = load double, ptr %10, align 8, !tbaa !13
  %357 = fmul double %356, 2.000000e+00
  %358 = fmul double %351, %357
  %359 = call double @llvm.fmuladd.f64(double %354, double %355, double %358)
  store double %359, ptr %13, align 8, !tbaa !13
  %360 = fmul double %355, %359
  %361 = fadd double %.pre718, %360
  store double %361, ptr %333, align 8, !tbaa !13
  %362 = fneg double %351
  %363 = call double @llvm.fmuladd.f64(double %356, double %359, double %362)
  store double %363, ptr %12, align 8, !tbaa !13
  br i1 %.not.not, label %364, label %371

364:                                              ; preds = %349
  %365 = getelementptr inbounds double, ptr %27, i64 %332
  store double %356, ptr %365, align 8, !tbaa !13
  %366 = load i32, ptr %1, align 4, !tbaa !5
  %367 = add i32 %.5555, -1
  %368 = add i32 %367, %366
  %369 = sext i32 %368 to i64
  %370 = getelementptr inbounds double, ptr %27, i64 %369
  store double %355, ptr %370, align 8, !tbaa !13
  br label %371

371:                                              ; preds = %364, %349
  %372 = load i32, ptr %9, align 4, !tbaa !5
  %.not527.not.peel = icmp slt i32 %.5555, %372
  br i1 %.not527.not.peel, label %.lr.ph611.peel.next, label %._crit_edge612

.lr.ph611.peel.next:                              ; preds = %371, %404
  %373 = phi double [ %388, %404 ], [ %356, %371 ]
  %374 = phi double [ %387, %404 ], [ %355, %371 ]
  %indvars.iv694.in = phi i64 [ %indvars.iv694, %404 ], [ %332, %371 ]
  %.1492608 = phi double [ %392, %404 ], [ %360, %371 ]
  %indvars.iv694 = add nsw i64 %indvars.iv694.in, 1
  %375 = getelementptr double, ptr %3, i64 %indvars.iv694.in
  %376 = load double, ptr %375, align 8, !tbaa !13
  %377 = fmul double %374, %376
  store double %377, ptr %11, align 8, !tbaa !13
  %378 = fmul double %376, %373
  call void @dlartg_(ptr noundef nonnull %12, ptr noundef nonnull %11, ptr noundef nonnull %10, ptr noundef nonnull %14, ptr noundef nonnull %13) #6
  %379 = load double, ptr %13, align 8, !tbaa !13
  %380 = getelementptr i8, ptr %375, i64 -8
  store double %379, ptr %380, align 8, !tbaa !13
  %381 = getelementptr double, ptr %2, i64 %indvars.iv694.in
  %382 = load double, ptr %381, align 8, !tbaa !13
  %383 = fsub double %382, %.1492608
  %384 = getelementptr double, ptr %2, i64 %indvars.iv694
  %385 = load double, ptr %384, align 8, !tbaa !13
  %386 = fsub double %385, %383
  %387 = load double, ptr %14, align 8, !tbaa !13
  %388 = load double, ptr %10, align 8, !tbaa !13
  %389 = fmul double %388, 2.000000e+00
  %390 = fmul double %378, %389
  %391 = call double @llvm.fmuladd.f64(double %386, double %387, double %390)
  store double %391, ptr %13, align 8, !tbaa !13
  %392 = fmul double %387, %391
  %393 = fadd double %383, %392
  store double %393, ptr %381, align 8, !tbaa !13
  %394 = fneg double %378
  %395 = call double @llvm.fmuladd.f64(double %388, double %391, double %394)
  store double %395, ptr %12, align 8, !tbaa !13
  br i1 %.not.not, label %396, label %404

396:                                              ; preds = %.lr.ph611.peel.next
  %397 = getelementptr double, ptr %6, i64 %indvars.iv694.in
  store double %388, ptr %397, align 8, !tbaa !13
  %398 = load i32, ptr %1, align 4, !tbaa !5
  %399 = trunc nsw i64 %indvars.iv694 to i32
  %400 = add i32 %399, -1
  %401 = add i32 %400, %398
  %402 = sext i32 %401 to i64
  %403 = getelementptr inbounds double, ptr %27, i64 %402
  store double %387, ptr %403, align 8, !tbaa !13
  br label %404

404:                                              ; preds = %.lr.ph611.peel.next, %396
  %405 = load i32, ptr %9, align 4, !tbaa !5
  %406 = sext i32 %405 to i64
  %.not527.not = icmp slt i64 %indvars.iv694, %406
  br i1 %.not527.not, label %.lr.ph611.peel.next, label %._crit_edge612, !llvm.loop !19

._crit_edge612:                                   ; preds = %404, %371, %344
  %407 = phi double [ %348, %344 ], [ %363, %371 ], [ %395, %404 ]
  %.1492.lcssa = phi double [ 0.000000e+00, %344 ], [ %360, %371 ], [ %392, %404 ]
  br i1 %.not.not, label %408, label %418

408:                                              ; preds = %._crit_edge612
  %409 = sub i32 %321, %.5555
  store i32 %409, ptr %16, align 4, !tbaa !5
  %410 = getelementptr inbounds double, ptr %27, i64 %332
  %411 = load i32, ptr %1, align 4, !tbaa !5
  %412 = add i32 %.5555, -1
  %413 = add i32 %412, %411
  %414 = sext i32 %413 to i64
  %415 = getelementptr inbounds double, ptr %27, i64 %414
  %416 = mul nsw i32 %.5555, %23
  %417 = sext i32 %416 to i64
  %gep617 = getelementptr %struct.doublecomplex, ptr %invariant.gep616, i64 %417
  call void @zlasr_(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.10, ptr noundef nonnull %1, ptr noundef nonnull %16, ptr noundef nonnull %410, ptr noundef nonnull %415, ptr noundef %gep617, ptr noundef nonnull %5) #6
  %.pre719 = load double, ptr %12, align 8, !tbaa !13
  br label %418

418:                                              ; preds = %408, %._crit_edge612
  %419 = phi double [ %.pre719, %408 ], [ %407, %._crit_edge612 ]
  %420 = load double, ptr %316, align 8, !tbaa !13
  %421 = fsub double %420, %.1492.lcssa
  store double %421, ptr %316, align 8, !tbaa !13
  store double %419, ptr %320, align 8, !tbaa !13
  br label %268

422:                                              ; preds = %.thread553
  %.not530.not = icmp sgt i32 %.2501.ph, %.0480
  br i1 %.not530.not, label %.outer561.backedge, label %.loopexit557

.outer561.backedge:                               ; preds = %422, %311
  %.2501.ph.be = phi i32 [ %314, %311 ], [ %317, %422 ]
  br label %.outer561

.loopexit557:                                     ; preds = %422, %311, %267, %186, %322, %190
  %.3 = phi i32 [ %61, %190 ], [ %61, %322 ], [ %.1, %186 ], [ %.1, %267 ], [ %.2, %311 ], [ %.2, %422 ]
  %.not = xor i1 %115, true
  %brmerge = or i1 %.not, %120
  %.mux = select i1 %.not, ptr %18, ptr %17
  br i1 %brmerge, label %.sink.split762, label %423

.sink.split762:                                   ; preds = %.loopexit557
  store i32 %107, ptr %9, align 4, !tbaa !5
  call void @dlascl_(ptr noundef nonnull @.str.7, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %.mux, ptr noundef nonnull %15, ptr noundef nonnull %9, ptr noundef nonnull @c__1, ptr noundef nonnull %109, ptr noundef nonnull %1, ptr noundef nonnull %7) #6
  store i32 %106, ptr %9, align 4, !tbaa !5
  call void @dlascl_(ptr noundef nonnull @.str.7, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %.mux, ptr noundef nonnull %15, ptr noundef nonnull %9, ptr noundef nonnull @c__1, ptr noundef nonnull %110, ptr noundef nonnull %1, ptr noundef nonnull %7) #6
  br label %423

423:                                              ; preds = %.loopexit557, %.sink.split762
  %424 = icmp eq i32 %.3, %61
  br i1 %424, label %425, label %.outer565

425:                                              ; preds = %423
  %426 = load i32, ptr %1, align 4, !tbaa !5
  %.not538.not631 = icmp sgt i32 %426, 1
  br i1 %.not538.not631, label %.lr.ph634.preheader, label %.loopexit

.lr.ph634.preheader:                              ; preds = %425
  %wide.trip.count708 = zext nneg i32 %426 to i64
  %427 = add nsw i64 %wide.trip.count708, -1
  %xtraiter = and i64 %427, 1
  %428 = icmp eq i32 %426, 2
  br i1 %428, label %.loopexit.loopexit800.unr-lcssa, label %.lr.ph634.preheader.new

.lr.ph634.preheader.new:                          ; preds = %.lr.ph634.preheader
  %unroll_iter = and i64 %427, -2
  br label %.lr.ph634

.lr.ph634:                                        ; preds = %441, %.lr.ph634.preheader.new
  %indvars.iv705 = phi i64 [ 1, %.lr.ph634.preheader.new ], [ %indvars.iv.next706.1, %441 ]
  %niter = phi i64 [ 0, %.lr.ph634.preheader.new ], [ %niter.next.1, %441 ]
  %429 = getelementptr inbounds double, ptr %22, i64 %indvars.iv705
  %430 = load double, ptr %429, align 8, !tbaa !13
  %431 = fcmp une double %430, 0.000000e+00
  br i1 %431, label %432, label %.lr.ph634.1

432:                                              ; preds = %.lr.ph634
  %433 = load i32, ptr %7, align 4, !tbaa !5
  %434 = add nsw i32 %433, 1
  store i32 %434, ptr %7, align 4, !tbaa !5
  br label %.lr.ph634.1

.lr.ph634.1:                                      ; preds = %.lr.ph634, %432
  %435 = getelementptr double, ptr %3, i64 %indvars.iv705
  %436 = load double, ptr %435, align 8, !tbaa !13
  %437 = fcmp une double %436, 0.000000e+00
  br i1 %437, label %438, label %441

438:                                              ; preds = %.lr.ph634.1
  %439 = load i32, ptr %7, align 4, !tbaa !5
  %440 = add nsw i32 %439, 1
  store i32 %440, ptr %7, align 4, !tbaa !5
  br label %441

441:                                              ; preds = %438, %.lr.ph634.1
  %indvars.iv.next706.1 = add nuw nsw i64 %indvars.iv705, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %.loopexit.loopexit800.unr-lcssa, label %.lr.ph634, !llvm.loop !21

.outer565._crit_edge:                             ; preds = %.outer565, %.backedge
  %.lcssa = phi i32 [ %104, %.backedge ], [ %63, %.outer565 ]
  br i1 %.not.not, label %443, label %442

442:                                              ; preds = %.outer565._crit_edge
  call void @dlasrt_(ptr noundef nonnull @.str.2, ptr noundef nonnull %1, ptr noundef %2, ptr noundef nonnull %7) #6
  br label %.loopexit

443:                                              ; preds = %.outer565._crit_edge
  store i32 %.lcssa, ptr %9, align 4, !tbaa !5
  %.not648 = icmp slt i32 %.lcssa, 2
  br i1 %.not648, label %.loopexit, label %.lr.ph651.preheader

.lr.ph651.preheader:                              ; preds = %443
  %444 = sext i32 %23 to i64
  br label %.lr.ph651

.lr.ph651:                                        ; preds = %.lr.ph651.preheader, %464
  %445 = phi i32 [ %.lcssa, %.lr.ph651.preheader ], [ %465, %464 ]
  %indvars.iv710 = phi i64 [ 2, %.lr.ph651.preheader ], [ %indvars.iv.next711, %464 ]
  %446 = add nsw i64 %indvars.iv710, -1
  %447 = getelementptr inbounds double, ptr %21, i64 %446
  %448 = load double, ptr %447, align 8, !tbaa !13
  %449 = load i32, ptr %1, align 4, !tbaa !5
  %450 = sext i32 %449 to i64
  %.not539635 = icmp sgt i64 %indvars.iv710, %450
  %451 = trunc nuw nsw i64 %446 to i32
  br i1 %.not539635, label %._crit_edge641, label %.lr.ph640.preheader

.lr.ph640.preheader:                              ; preds = %.lr.ph651
  %452 = add i32 %449, 1
  %wide.trip.count715 = zext i32 %452 to i64
  br label %.lr.ph640

.lr.ph640:                                        ; preds = %.lr.ph640.preheader, %.lr.ph640
  %indvars.iv712 = phi i64 [ %indvars.iv710, %.lr.ph640.preheader ], [ %indvars.iv.next713, %.lr.ph640 ]
  %.0488637 = phi i32 [ %451, %.lr.ph640.preheader ], [ %.1489, %.lr.ph640 ]
  %.2493636 = phi double [ %448, %.lr.ph640.preheader ], [ %.3494, %.lr.ph640 ]
  %453 = getelementptr inbounds double, ptr %21, i64 %indvars.iv712
  %454 = load double, ptr %453, align 8, !tbaa !13
  %455 = fcmp olt double %454, %.2493636
  %.3494 = select i1 %455, double %454, double %.2493636
  %456 = trunc nuw nsw i64 %indvars.iv712 to i32
  %.1489 = select i1 %455, i32 %456, i32 %.0488637
  %indvars.iv.next713 = add nuw nsw i64 %indvars.iv712, 1
  %exitcond716.not = icmp eq i64 %indvars.iv.next713, %wide.trip.count715
  br i1 %exitcond716.not, label %._crit_edge641, label %.lr.ph640, !llvm.loop !22

._crit_edge641:                                   ; preds = %.lr.ph640, %.lr.ph651
  %.2493.lcssa = phi double [ %448, %.lr.ph651 ], [ %.3494, %.lr.ph640 ]
  %.0488.lcssa = phi i32 [ %451, %.lr.ph651 ], [ %.1489, %.lr.ph640 ]
  %457 = zext i32 %.0488.lcssa to i64
  %.not540 = icmp eq i64 %446, %457
  br i1 %.not540, label %464, label %458

458:                                              ; preds = %._crit_edge641
  %459 = sext i32 %.0488.lcssa to i64
  %460 = getelementptr inbounds double, ptr %21, i64 %459
  store double %448, ptr %460, align 8, !tbaa !13
  store double %.2493.lcssa, ptr %447, align 8, !tbaa !13
  %461 = mul nsw i64 %446, %444
  %gep645 = getelementptr %struct.doublecomplex, ptr %invariant.gep616, i64 %461
  %462 = mul nsw i32 %.0488.lcssa, %23
  %463 = sext i32 %462 to i64
  %gep647 = getelementptr %struct.doublecomplex, ptr %invariant.gep616, i64 %463
  call void @zswap_(ptr noundef nonnull %1, ptr noundef %gep645, ptr noundef nonnull @c__1, ptr noundef %gep647, ptr noundef nonnull @c__1) #6
  %.pre721 = load i32, ptr %9, align 4, !tbaa !5
  br label %464

464:                                              ; preds = %._crit_edge641, %458
  %465 = phi i32 [ %445, %._crit_edge641 ], [ %.pre721, %458 ]
  %indvars.iv.next711 = add nuw nsw i64 %indvars.iv710, 1
  %466 = sext i32 %465 to i64
  %.not.not653 = icmp slt i64 %indvars.iv710, %466
  br i1 %.not.not653, label %.lr.ph651, label %.loopexit, !llvm.loop !23

.loopexit.loopexit800.unr-lcssa:                  ; preds = %441, %.lr.ph634.preheader
  %indvars.iv705.unr = phi i64 [ 1, %.lr.ph634.preheader ], [ %indvars.iv.next706.1, %441 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.loopexit, label %.lr.ph634.epil

.lr.ph634.epil:                                   ; preds = %.loopexit.loopexit800.unr-lcssa
  %467 = getelementptr inbounds double, ptr %22, i64 %indvars.iv705.unr
  %468 = load double, ptr %467, align 8, !tbaa !13
  %469 = fcmp une double %468, 0.000000e+00
  br i1 %469, label %470, label %.loopexit

470:                                              ; preds = %.lr.ph634.epil
  %471 = load i32, ptr %7, align 4, !tbaa !5
  %472 = add nsw i32 %471, 1
  store i32 %472, ptr %7, align 4, !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit800.unr-lcssa, %470, %.lr.ph634.epil, %464, %425, %443, %442, %45, %46, %44, %.thread546
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #6
  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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

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

declare void @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

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

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

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

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

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

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

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

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

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

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

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 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !11, i64 0}
!10 = !{!"", !11, i64 0, !11, i64 8}
!11 = !{!"double", !7, i64 0}
!12 = !{!10, !11, i64 8}
!13 = !{!11, !11, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = distinct !{!16, !15}
!17 = distinct !{!17, !15}
!18 = distinct !{!18, !15}
!19 = distinct !{!19, !15, !20}
!20 = !{!"llvm.loop.peeled.count", i32 1}
!21 = distinct !{!21, !15}
!22 = distinct !{!22, !15}
!23 = distinct !{!23, !15}


; Effective O3 passes: BDCEPass,ConstraintEliminationPass,CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopFullUnrollPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass