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

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

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

130:                                              ; preds = %15
  %131 = load i32, ptr %71, align 4, !tbaa !9
  %132 = icmp ne i32 %131, 0
  br i1 %132, label %135, label %133

133:                                              ; preds = %130
  %134 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 -1, ptr %134, align 4, !tbaa !9
  br label %235

135:                                              ; preds = %130, %15
  %136 = load ptr, ptr %17, align 8, !tbaa !5
  %137 = load i32, ptr %136, align 4, !tbaa !9
  %138 = icmp slt i32 %137, 0
  br i1 %138, label %139, label %141

139:                                              ; preds = %135
  %140 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 -2, ptr %140, align 4, !tbaa !9
  br label %234

141:                                              ; preds = %135
  %142 = load ptr, ptr %18, align 8, !tbaa !5
  %143 = load i32, ptr %142, align 4, !tbaa !9
  %144 = icmp slt i32 %143, 0
  br i1 %144, label %145, label %147

145:                                              ; preds = %141
  %146 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 -3, ptr %146, align 4, !tbaa !9
  br label %233

147:                                              ; preds = %141
  %148 = load ptr, ptr %19, align 8, !tbaa !5
  %149 = load i32, ptr %148, align 4, !tbaa !9
  %150 = icmp slt i32 %149, 0
  br i1 %150, label %151, label %153

151:                                              ; preds = %147
  %152 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 -4, ptr %152, align 4, !tbaa !9
  br label %232

153:                                              ; preds = %147
  %154 = load ptr, ptr %20, align 8, !tbaa !5
  %155 = load i32, ptr %154, align 4, !tbaa !9
  %156 = icmp slt i32 %155, 0
  br i1 %156, label %157, label %159

157:                                              ; preds = %153
  %158 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 -5, ptr %158, align 4, !tbaa !9
  br label %231

159:                                              ; preds = %153
  %160 = load ptr, ptr %18, align 8, !tbaa !5
  %161 = load i32, ptr %160, align 4, !tbaa !9
  %162 = icmp eq i32 %161, 0
  br i1 %162, label %163, label %167

163:                                              ; preds = %159
  %164 = load ptr, ptr %24, align 8, !tbaa !5
  %165 = load i32, ptr %164, align 4, !tbaa !9
  %166 = icmp slt i32 %165, 1
  br i1 %166, label %184, label %167

167:                                              ; preds = %163, %159
  %168 = load ptr, ptr %18, align 8, !tbaa !5
  %169 = load i32, ptr %168, align 4, !tbaa !9
  %170 = icmp sgt i32 %169, 0
  br i1 %170, label %171, label %186

171:                                              ; preds = %167
  %172 = load ptr, ptr %24, align 8, !tbaa !5
  %173 = load i32, ptr %172, align 4, !tbaa !9
  %174 = load ptr, ptr %17, align 8, !tbaa !5
  %175 = load i32, ptr %174, align 4, !tbaa !9
  %176 = icmp sge i32 1, %175
  br i1 %176, label %177, label %178

177:                                              ; preds = %171
  br label %181

178:                                              ; preds = %171
  %179 = load ptr, ptr %17, align 8, !tbaa !5
  %180 = load i32, ptr %179, align 4, !tbaa !9
  br label %181

181:                                              ; preds = %178, %177
  %182 = phi i32 [ 1, %177 ], [ %180, %178 ]
  %183 = icmp slt i32 %173, %182
  br i1 %183, label %184, label %186

184:                                              ; preds = %181, %163
  %185 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 -9, ptr %185, align 4, !tbaa !9
  br label %230

186:                                              ; preds = %181, %167
  %187 = load ptr, ptr %26, align 8, !tbaa !5
  %188 = load i32, ptr %187, align 4, !tbaa !9
  %189 = load ptr, ptr %19, align 8, !tbaa !5
  %190 = load i32, ptr %189, align 4, !tbaa !9
  %191 = icmp sge i32 1, %190
  br i1 %191, label %192, label %193

192:                                              ; preds = %186
  br label %196

193:                                              ; preds = %186
  %194 = load ptr, ptr %19, align 8, !tbaa !5
  %195 = load i32, ptr %194, align 4, !tbaa !9
  br label %196

196:                                              ; preds = %193, %192
  %197 = phi i32 [ 1, %192 ], [ %195, %193 ]
  %198 = icmp slt i32 %188, %197
  br i1 %198, label %199, label %201

199:                                              ; preds = %196
  %200 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 -11, ptr %200, align 4, !tbaa !9
  br label %229

201:                                              ; preds = %196
  %202 = load ptr, ptr %20, align 8, !tbaa !5
  %203 = load i32, ptr %202, align 4, !tbaa !9
  %204 = icmp eq i32 %203, 0
  br i1 %204, label %205, label %209

205:                                              ; preds = %201
  %206 = load ptr, ptr %28, align 8, !tbaa !5
  %207 = load i32, ptr %206, align 4, !tbaa !9
  %208 = icmp slt i32 %207, 1
  br i1 %208, label %226, label %209

209:                                              ; preds = %205, %201
  %210 = load ptr, ptr %20, align 8, !tbaa !5
  %211 = load i32, ptr %210, align 4, !tbaa !9
  %212 = icmp sgt i32 %211, 0
  br i1 %212, label %213, label %228

213:                                              ; preds = %209
  %214 = load ptr, ptr %28, align 8, !tbaa !5
  %215 = load i32, ptr %214, align 4, !tbaa !9
  %216 = load ptr, ptr %17, align 8, !tbaa !5
  %217 = load i32, ptr %216, align 4, !tbaa !9
  %218 = icmp sge i32 1, %217
  br i1 %218, label %219, label %220

219:                                              ; preds = %213
  br label %223

220:                                              ; preds = %213
  %221 = load ptr, ptr %17, align 8, !tbaa !5
  %222 = load i32, ptr %221, align 4, !tbaa !9
  br label %223

223:                                              ; preds = %220, %219
  %224 = phi i32 [ 1, %219 ], [ %222, %220 ]
  %225 = icmp slt i32 %215, %224
  br i1 %225, label %226, label %228

226:                                              ; preds = %223, %205
  %227 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 -13, ptr %227, align 4, !tbaa !9
  br label %228

228:                                              ; preds = %226, %223, %209
  br label %229

229:                                              ; preds = %228, %199
  br label %230

230:                                              ; preds = %229, %184
  br label %231

231:                                              ; preds = %230, %157
  br label %232

232:                                              ; preds = %231, %151
  br label %233

233:                                              ; preds = %232, %145
  br label %234

234:                                              ; preds = %233, %139
  br label %235

235:                                              ; preds = %234, %133
  %236 = load ptr, ptr %30, align 8, !tbaa !5
  %237 = load i32, ptr %236, align 4, !tbaa !9
  %238 = icmp ne i32 %237, 0
  br i1 %238, label %239, label %244

239:                                              ; preds = %235
  %240 = load ptr, ptr %30, align 8, !tbaa !5
  %241 = load i32, ptr %240, align 4, !tbaa !9
  %242 = sub nsw i32 0, %241
  store i32 %242, ptr %37, align 4, !tbaa !9
  %243 = call i32 @xerbla_(ptr noundef @.str.2, ptr noundef %37, i32 noundef 6)
  store i32 1, ptr %87, align 4
  br label %2731

244:                                              ; preds = %235
  %245 = load ptr, ptr %17, align 8, !tbaa !5
  %246 = load i32, ptr %245, align 4, !tbaa !9
  %247 = icmp eq i32 %246, 0
  br i1 %247, label %248, label %249

248:                                              ; preds = %244
  store i32 1, ptr %87, align 4
  br label %2731

249:                                              ; preds = %244
  %250 = load ptr, ptr %17, align 8, !tbaa !5
  %251 = load i32, ptr %250, align 4, !tbaa !9
  %252 = icmp eq i32 %251, 1
  br i1 %252, label %253, label %254

253:                                              ; preds = %249
  br label %2515

254:                                              ; preds = %249
  %255 = load ptr, ptr %18, align 8, !tbaa !5
  %256 = load i32, ptr %255, align 4, !tbaa !9
  %257 = icmp sgt i32 %256, 0
  br i1 %257, label %266, label %258

258:                                              ; preds = %254
  %259 = load ptr, ptr %19, align 8, !tbaa !5
  %260 = load i32, ptr %259, align 4, !tbaa !9
  %261 = icmp sgt i32 %260, 0
  br i1 %261, label %266, label %262

262:                                              ; preds = %258
  %263 = load ptr, ptr %20, align 8, !tbaa !5
  %264 = load i32, ptr %263, align 4, !tbaa !9
  %265 = icmp sgt i32 %264, 0
  br label %266

266:                                              ; preds = %262, %258, %254
  %267 = phi i1 [ true, %258 ], [ true, %254 ], [ %265, %262 ]
  %268 = zext i1 %267 to i32
  store i32 %268, ptr %78, align 4, !tbaa !9
  %269 = load i32, ptr %78, align 4, !tbaa !9
  %270 = icmp ne i32 %269, 0
  br i1 %270, label %286, label %271

271:                                              ; preds = %266
  %272 = load ptr, ptr %17, align 8, !tbaa !5
  %273 = load ptr, ptr %21, align 8, !tbaa !5
  %274 = getelementptr inbounds double, ptr %273, i64 1
  %275 = load ptr, ptr %22, align 8, !tbaa !5
  %276 = getelementptr inbounds double, ptr %275, i64 1
  %277 = load ptr, ptr %29, align 8, !tbaa !5
  %278 = getelementptr inbounds double, ptr %277, i64 1
  %279 = load ptr, ptr %30, align 8, !tbaa !5
  call void @dlasq1_(ptr noundef %272, ptr noundef %274, ptr noundef %276, ptr noundef %278, ptr noundef %279)
  %280 = load ptr, ptr %30, align 8, !tbaa !5
  %281 = load i32, ptr %280, align 4, !tbaa !9
  %282 = icmp ne i32 %281, 2
  br i1 %282, label %283, label %284

283:                                              ; preds = %271
  store i32 1, ptr %87, align 4
  br label %2731

284:                                              ; preds = %271
  %285 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 0, ptr %285, align 4, !tbaa !9
  br label %286

286:                                              ; preds = %284, %266
  %287 = load ptr, ptr %17, align 8, !tbaa !5
  %288 = load i32, ptr %287, align 4, !tbaa !9
  %289 = sub nsw i32 %288, 1
  store i32 %289, ptr %79, align 4, !tbaa !9
  %290 = load i32, ptr %79, align 4, !tbaa !9
  %291 = load i32, ptr %79, align 4, !tbaa !9
  %292 = add nsw i32 %290, %291
  store i32 %292, ptr %81, align 4, !tbaa !9
  %293 = load i32, ptr %81, align 4, !tbaa !9
  %294 = load i32, ptr %79, align 4, !tbaa !9
  %295 = add nsw i32 %293, %294
  store i32 %295, ptr %82, align 4, !tbaa !9
  store i32 0, ptr %44, align 4, !tbaa !9
  %296 = call double @dlamch_(ptr noundef @.str.3)
  store double %296, ptr %84, align 8, !tbaa !11
  %297 = call double @dlamch_(ptr noundef @.str.4)
  store double %297, ptr %50, align 8, !tbaa !11
  %298 = load i32, ptr %71, align 4, !tbaa !9
  %299 = icmp ne i32 %298, 0
  br i1 %299, label %300, label %401

300:                                              ; preds = %286
  %301 = load ptr, ptr %17, align 8, !tbaa !5
  %302 = load i32, ptr %301, align 4, !tbaa !9
  %303 = sub nsw i32 %302, 1
  store i32 %303, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %59, align 4, !tbaa !9
  br label %304

304:                                              ; preds = %359, %300
  %305 = load i32, ptr %59, align 4, !tbaa !9
  %306 = load i32, ptr %37, align 4, !tbaa !9
  %307 = icmp sle i32 %305, %306
  br i1 %307, label %308, label %362

308:                                              ; preds = %304
  %309 = load ptr, ptr %21, align 8, !tbaa !5
  %310 = load i32, ptr %59, align 4, !tbaa !9
  %311 = sext i32 %310 to i64
  %312 = getelementptr inbounds double, ptr %309, i64 %311
  %313 = load ptr, ptr %22, align 8, !tbaa !5
  %314 = load i32, ptr %59, align 4, !tbaa !9
  %315 = sext i32 %314 to i64
  %316 = getelementptr inbounds double, ptr %313, i64 %315
  call void @dlartg_(ptr noundef %312, ptr noundef %316, ptr noundef %72, ptr noundef %74, ptr noundef %62)
  %317 = load double, ptr %62, align 8, !tbaa !11
  %318 = load ptr, ptr %21, align 8, !tbaa !5
  %319 = load i32, ptr %59, align 4, !tbaa !9
  %320 = sext i32 %319 to i64
  %321 = getelementptr inbounds double, ptr %318, i64 %320
  store double %317, ptr %321, align 8, !tbaa !11
  %322 = load double, ptr %74, align 8, !tbaa !11
  %323 = load ptr, ptr %21, align 8, !tbaa !5
  %324 = load i32, ptr %59, align 4, !tbaa !9
  %325 = add nsw i32 %324, 1
  %326 = sext i32 %325 to i64
  %327 = getelementptr inbounds double, ptr %323, i64 %326
  %328 = load double, ptr %327, align 8, !tbaa !11
  %329 = fmul double %322, %328
  %330 = load ptr, ptr %22, align 8, !tbaa !5
  %331 = load i32, ptr %59, align 4, !tbaa !9
  %332 = sext i32 %331 to i64
  %333 = getelementptr inbounds double, ptr %330, i64 %332
  store double %329, ptr %333, align 8, !tbaa !11
  %334 = load double, ptr %72, align 8, !tbaa !11
  %335 = load ptr, ptr %21, align 8, !tbaa !5
  %336 = load i32, ptr %59, align 4, !tbaa !9
  %337 = add nsw i32 %336, 1
  %338 = sext i32 %337 to i64
  %339 = getelementptr inbounds double, ptr %335, i64 %338
  %340 = load double, ptr %339, align 8, !tbaa !11
  %341 = fmul double %334, %340
  %342 = load ptr, ptr %21, align 8, !tbaa !5
  %343 = load i32, ptr %59, align 4, !tbaa !9
  %344 = add nsw i32 %343, 1
  %345 = sext i32 %344 to i64
  %346 = getelementptr inbounds double, ptr %342, i64 %345
  store double %341, ptr %346, align 8, !tbaa !11
  %347 = load double, ptr %72, align 8, !tbaa !11
  %348 = load ptr, ptr %29, align 8, !tbaa !5
  %349 = load i32, ptr %59, align 4, !tbaa !9
  %350 = sext i32 %349 to i64
  %351 = getelementptr inbounds double, ptr %348, i64 %350
  store double %347, ptr %351, align 8, !tbaa !11
  %352 = load double, ptr %74, align 8, !tbaa !11
  %353 = load ptr, ptr %29, align 8, !tbaa !5
  %354 = load i32, ptr %79, align 4, !tbaa !9
  %355 = load i32, ptr %59, align 4, !tbaa !9
  %356 = add nsw i32 %354, %355
  %357 = sext i32 %356 to i64
  %358 = getelementptr inbounds double, ptr %353, i64 %357
  store double %352, ptr %358, align 8, !tbaa !11
  br label %359

359:                                              ; preds = %308
  %360 = load i32, ptr %59, align 4, !tbaa !9
  %361 = add nsw i32 %360, 1
  store i32 %361, ptr %59, align 4, !tbaa !9
  br label %304, !llvm.loop !13

362:                                              ; preds = %304
  %363 = load ptr, ptr %19, align 8, !tbaa !5
  %364 = load i32, ptr %363, align 4, !tbaa !9
  %365 = icmp sgt i32 %364, 0
  br i1 %365, label %366, label %381

366:                                              ; preds = %362
  %367 = load ptr, ptr %19, align 8, !tbaa !5
  %368 = load ptr, ptr %17, align 8, !tbaa !5
  %369 = load ptr, ptr %29, align 8, !tbaa !5
  %370 = getelementptr inbounds double, ptr %369, i64 1
  %371 = load ptr, ptr %29, align 8, !tbaa !5
  %372 = load ptr, ptr %17, align 8, !tbaa !5
  %373 = load i32, ptr %372, align 4, !tbaa !9
  %374 = sext i32 %373 to i64
  %375 = getelementptr inbounds double, ptr %371, i64 %374
  %376 = load ptr, ptr %25, align 8, !tbaa !5
  %377 = load i32, ptr %34, align 4, !tbaa !9
  %378 = sext i32 %377 to i64
  %379 = getelementptr inbounds %struct.doublecomplex, ptr %376, i64 %378
  %380 = load ptr, ptr %26, align 8, !tbaa !5
  call void @zlasr_(ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %367, ptr noundef %368, ptr noundef %370, ptr noundef %375, ptr noundef %379, ptr noundef %380)
  br label %381

381:                                              ; preds = %366, %362
  %382 = load ptr, ptr %20, align 8, !tbaa !5
  %383 = load i32, ptr %382, align 4, !tbaa !9
  %384 = icmp sgt i32 %383, 0
  br i1 %384, label %385, label %400

385:                                              ; preds = %381
  %386 = load ptr, ptr %17, align 8, !tbaa !5
  %387 = load ptr, ptr %20, align 8, !tbaa !5
  %388 = load ptr, ptr %29, align 8, !tbaa !5
  %389 = getelementptr inbounds double, ptr %388, i64 1
  %390 = load ptr, ptr %29, align 8, !tbaa !5
  %391 = load ptr, ptr %17, align 8, !tbaa !5
  %392 = load i32, ptr %391, align 4, !tbaa !9
  %393 = sext i32 %392 to i64
  %394 = getelementptr inbounds double, ptr %390, i64 %393
  %395 = load ptr, ptr %27, align 8, !tbaa !5
  %396 = load i32, ptr %32, align 4, !tbaa !9
  %397 = sext i32 %396 to i64
  %398 = getelementptr inbounds %struct.doublecomplex, ptr %395, i64 %397
  %399 = load ptr, ptr %28, align 8, !tbaa !5
  call void @zlasr_(ptr noundef @.str, ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %386, ptr noundef %387, ptr noundef %389, ptr noundef %394, ptr noundef %398, ptr noundef %399)
  br label %400

400:                                              ; preds = %385, %381
  br label %401

401:                                              ; preds = %400, %286
  store double 1.000000e+02, ptr %41, align 8, !tbaa !11
  %402 = load double, ptr %84, align 8, !tbaa !11
  %403 = load double, ptr @c_b15, align 8, !tbaa !11
  %404 = call double @pow(double noundef %402, double noundef %403) #5
  store double %404, ptr %42, align 8, !tbaa !11
  store double 1.000000e+01, ptr %39, align 8, !tbaa !11
  %405 = load double, ptr %41, align 8, !tbaa !11
  %406 = load double, ptr %42, align 8, !tbaa !11
  %407 = fcmp ole double %405, %406
  br i1 %407, label %408, label %410

408:                                              ; preds = %401
  %409 = load double, ptr %41, align 8, !tbaa !11
  br label %412

410:                                              ; preds = %401
  %411 = load double, ptr %42, align 8, !tbaa !11
  br label %412

412:                                              ; preds = %410, %408
  %413 = phi double [ %409, %408 ], [ %411, %410 ]
  store double %413, ptr %40, align 8, !tbaa !11
  %414 = load double, ptr %39, align 8, !tbaa !11
  %415 = load double, ptr %40, align 8, !tbaa !11
  %416 = fcmp oge double %414, %415
  br i1 %416, label %417, label %419

417:                                              ; preds = %412
  %418 = load double, ptr %39, align 8, !tbaa !11
  br label %421

419:                                              ; preds = %412
  %420 = load double, ptr %40, align 8, !tbaa !11
  br label %421

421:                                              ; preds = %419, %417
  %422 = phi double [ %418, %417 ], [ %420, %419 ]
  store double %422, ptr %80, align 8, !tbaa !11
  %423 = load double, ptr %80, align 8, !tbaa !11
  %424 = load double, ptr %84, align 8, !tbaa !11
  %425 = fmul double %423, %424
  store double %425, ptr %86, align 8, !tbaa !11
  store double 0.000000e+00, ptr %54, align 8, !tbaa !11
  %426 = load ptr, ptr %17, align 8, !tbaa !5
  %427 = load i32, ptr %426, align 4, !tbaa !9
  store i32 %427, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %59, align 4, !tbaa !9
  br label %428

428:                                              ; preds = %457, %421
  %429 = load i32, ptr %59, align 4, !tbaa !9
  %430 = load i32, ptr %37, align 4, !tbaa !9
  %431 = icmp sle i32 %429, %430
  br i1 %431, label %432, label %460

432:                                              ; preds = %428
  %433 = load double, ptr %54, align 8, !tbaa !11
  store double %433, ptr %40, align 8, !tbaa !11
  %434 = load ptr, ptr %21, align 8, !tbaa !5
  %435 = load i32, ptr %59, align 4, !tbaa !9
  %436 = sext i32 %435 to i64
  %437 = getelementptr inbounds double, ptr %434, i64 %436
  %438 = load double, ptr %437, align 8, !tbaa !11
  store double %438, ptr %39, align 8, !tbaa !11
  %439 = load double, ptr %39, align 8, !tbaa !11
  %440 = fcmp oge double %439, 0.000000e+00
  br i1 %440, label %441, label %443

441:                                              ; preds = %432
  %442 = load double, ptr %39, align 8, !tbaa !11
  br label %446

443:                                              ; preds = %432
  %444 = load double, ptr %39, align 8, !tbaa !11
  %445 = fneg double %444
  br label %446

446:                                              ; preds = %443, %441
  %447 = phi double [ %442, %441 ], [ %445, %443 ]
  store double %447, ptr %41, align 8, !tbaa !11
  %448 = load double, ptr %40, align 8, !tbaa !11
  %449 = load double, ptr %41, align 8, !tbaa !11
  %450 = fcmp oge double %448, %449
  br i1 %450, label %451, label %453

451:                                              ; preds = %446
  %452 = load double, ptr %40, align 8, !tbaa !11
  br label %455

453:                                              ; preds = %446
  %454 = load double, ptr %41, align 8, !tbaa !11
  br label %455

455:                                              ; preds = %453, %451
  %456 = phi double [ %452, %451 ], [ %454, %453 ]
  store double %456, ptr %54, align 8, !tbaa !11
  br label %457

457:                                              ; preds = %455
  %458 = load i32, ptr %59, align 4, !tbaa !9
  %459 = add nsw i32 %458, 1
  store i32 %459, ptr %59, align 4, !tbaa !9
  br label %428, !llvm.loop !15

460:                                              ; preds = %428
  %461 = load ptr, ptr %17, align 8, !tbaa !5
  %462 = load i32, ptr %461, align 4, !tbaa !9
  %463 = sub nsw i32 %462, 1
  store i32 %463, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %59, align 4, !tbaa !9
  br label %464

464:                                              ; preds = %493, %460
  %465 = load i32, ptr %59, align 4, !tbaa !9
  %466 = load i32, ptr %37, align 4, !tbaa !9
  %467 = icmp sle i32 %465, %466
  br i1 %467, label %468, label %496

468:                                              ; preds = %464
  %469 = load double, ptr %54, align 8, !tbaa !11
  store double %469, ptr %40, align 8, !tbaa !11
  %470 = load ptr, ptr %22, align 8, !tbaa !5
  %471 = load i32, ptr %59, align 4, !tbaa !9
  %472 = sext i32 %471 to i64
  %473 = getelementptr inbounds double, ptr %470, i64 %472
  %474 = load double, ptr %473, align 8, !tbaa !11
  store double %474, ptr %39, align 8, !tbaa !11
  %475 = load double, ptr %39, align 8, !tbaa !11
  %476 = fcmp oge double %475, 0.000000e+00
  br i1 %476, label %477, label %479

477:                                              ; preds = %468
  %478 = load double, ptr %39, align 8, !tbaa !11
  br label %482

479:                                              ; preds = %468
  %480 = load double, ptr %39, align 8, !tbaa !11
  %481 = fneg double %480
  br label %482

482:                                              ; preds = %479, %477
  %483 = phi double [ %478, %477 ], [ %481, %479 ]
  store double %483, ptr %41, align 8, !tbaa !11
  %484 = load double, ptr %40, align 8, !tbaa !11
  %485 = load double, ptr %41, align 8, !tbaa !11
  %486 = fcmp oge double %484, %485
  br i1 %486, label %487, label %489

487:                                              ; preds = %482
  %488 = load double, ptr %40, align 8, !tbaa !11
  br label %491

489:                                              ; preds = %482
  %490 = load double, ptr %41, align 8, !tbaa !11
  br label %491

491:                                              ; preds = %489, %487
  %492 = phi double [ %488, %487 ], [ %490, %489 ]
  store double %492, ptr %54, align 8, !tbaa !11
  br label %493

493:                                              ; preds = %491
  %494 = load i32, ptr %59, align 4, !tbaa !9
  %495 = add nsw i32 %494, 1
  store i32 %495, ptr %59, align 4, !tbaa !9
  br label %464, !llvm.loop !16

496:                                              ; preds = %464
  store double 0.000000e+00, ptr %69, align 8, !tbaa !11
  %497 = load double, ptr %86, align 8, !tbaa !11
  %498 = fcmp oge double %497, 0.000000e+00
  br i1 %498, label %499, label %606

499:                                              ; preds = %496
  %500 = load ptr, ptr %21, align 8, !tbaa !5
  %501 = getelementptr inbounds double, ptr %500, i64 1
  %502 = load double, ptr %501, align 8, !tbaa !11
  %503 = fcmp oge double %502, 0.000000e+00
  br i1 %503, label %504, label %508

504:                                              ; preds = %499
  %505 = load ptr, ptr %21, align 8, !tbaa !5
  %506 = getelementptr inbounds double, ptr %505, i64 1
  %507 = load double, ptr %506, align 8, !tbaa !11
  br label %513

508:                                              ; preds = %499
  %509 = load ptr, ptr %21, align 8, !tbaa !5
  %510 = getelementptr inbounds double, ptr %509, i64 1
  %511 = load double, ptr %510, align 8, !tbaa !11
  %512 = fneg double %511
  br label %513

513:                                              ; preds = %508, %504
  %514 = phi double [ %507, %504 ], [ %512, %508 ]
  store double %514, ptr %76, align 8, !tbaa !11
  %515 = load double, ptr %76, align 8, !tbaa !11
  %516 = fcmp oeq double %515, 0.000000e+00
  br i1 %516, label %517, label %518

517:                                              ; preds = %513
  br label %578

518:                                              ; preds = %513
  %519 = load double, ptr %76, align 8, !tbaa !11
  store double %519, ptr %75, align 8, !tbaa !11
  %520 = load ptr, ptr %17, align 8, !tbaa !5
  %521 = load i32, ptr %520, align 4, !tbaa !9
  store i32 %521, ptr %37, align 4, !tbaa !9
  store i32 2, ptr %59, align 4, !tbaa !9
  br label %522

522:                                              ; preds = %574, %518
  %523 = load i32, ptr %59, align 4, !tbaa !9
  %524 = load i32, ptr %37, align 4, !tbaa !9
  %525 = icmp sle i32 %523, %524
  br i1 %525, label %526, label %577

526:                                              ; preds = %522
  %527 = load ptr, ptr %21, align 8, !tbaa !5
  %528 = load i32, ptr %59, align 4, !tbaa !9
  %529 = sext i32 %528 to i64
  %530 = getelementptr inbounds double, ptr %527, i64 %529
  %531 = load double, ptr %530, align 8, !tbaa !11
  store double %531, ptr %40, align 8, !tbaa !11
  %532 = load double, ptr %40, align 8, !tbaa !11
  %533 = fcmp oge double %532, 0.000000e+00
  br i1 %533, label %534, label %536

534:                                              ; preds = %526
  %535 = load double, ptr %40, align 8, !tbaa !11
  br label %539

536:                                              ; preds = %526
  %537 = load double, ptr %40, align 8, !tbaa !11
  %538 = fneg double %537
  br label %539

539:                                              ; preds = %536, %534
  %540 = phi double [ %535, %534 ], [ %538, %536 ]
  %541 = load double, ptr %75, align 8, !tbaa !11
  %542 = load double, ptr %75, align 8, !tbaa !11
  %543 = load ptr, ptr %22, align 8, !tbaa !5
  %544 = load i32, ptr %59, align 4, !tbaa !9
  %545 = sub nsw i32 %544, 1
  %546 = sext i32 %545 to i64
  %547 = getelementptr inbounds double, ptr %543, i64 %546
  %548 = load double, ptr %547, align 8, !tbaa !11
  store double %548, ptr %39, align 8, !tbaa !11
  %549 = load double, ptr %39, align 8, !tbaa !11
  %550 = fcmp oge double %549, 0.000000e+00
  br i1 %550, label %551, label %553

551:                                              ; preds = %539
  %552 = load double, ptr %39, align 8, !tbaa !11
  br label %556

553:                                              ; preds = %539
  %554 = load double, ptr %39, align 8, !tbaa !11
  %555 = fneg double %554
  br label %556

556:                                              ; preds = %553, %551
  %557 = phi double [ %552, %551 ], [ %555, %553 ]
  %558 = fadd double %542, %557
  %559 = fdiv double %541, %558
  %560 = fmul double %540, %559
  store double %560, ptr %75, align 8, !tbaa !11
  %561 = load double, ptr %76, align 8, !tbaa !11
  %562 = load double, ptr %75, align 8, !tbaa !11
  %563 = fcmp ole double %561, %562
  br i1 %563, label %564, label %566

564:                                              ; preds = %556
  %565 = load double, ptr %76, align 8, !tbaa !11
  br label %568

566:                                              ; preds = %556
  %567 = load double, ptr %75, align 8, !tbaa !11
  br label %568

568:                                              ; preds = %566, %564
  %569 = phi double [ %565, %564 ], [ %567, %566 ]
  store double %569, ptr %76, align 8, !tbaa !11
  %570 = load double, ptr %76, align 8, !tbaa !11
  %571 = fcmp oeq double %570, 0.000000e+00
  br i1 %571, label %572, label %573

572:                                              ; preds = %568
  br label %578

573:                                              ; preds = %568
  br label %574

574:                                              ; preds = %573
  %575 = load i32, ptr %59, align 4, !tbaa !9
  %576 = add nsw i32 %575, 1
  store i32 %576, ptr %59, align 4, !tbaa !9
  br label %522, !llvm.loop !17

577:                                              ; preds = %522
  br label %578

578:                                              ; preds = %577, %572, %517
  %579 = load ptr, ptr %17, align 8, !tbaa !5
  %580 = load i32, ptr %579, align 4, !tbaa !9
  %581 = sitofp i32 %580 to double
  %582 = call double @sqrt(double noundef %581) #5
  %583 = load double, ptr %76, align 8, !tbaa !11
  %584 = fdiv double %583, %582
  store double %584, ptr %76, align 8, !tbaa !11
  %585 = load double, ptr %86, align 8, !tbaa !11
  %586 = load double, ptr %76, align 8, !tbaa !11
  %587 = fmul double %585, %586
  store double %587, ptr %39, align 8, !tbaa !11
  %588 = load ptr, ptr %17, align 8, !tbaa !5
  %589 = load i32, ptr %588, align 4, !tbaa !9
  %590 = mul nsw i32 %589, 6
  %591 = load ptr, ptr %17, align 8, !tbaa !5
  %592 = load i32, ptr %591, align 4, !tbaa !9
  %593 = mul nsw i32 %590, %592
  %594 = sitofp i32 %593 to double
  %595 = load double, ptr %50, align 8, !tbaa !11
  %596 = fmul double %594, %595
  store double %596, ptr %40, align 8, !tbaa !11
  %597 = load double, ptr %39, align 8, !tbaa !11
  %598 = load double, ptr %40, align 8, !tbaa !11
  %599 = fcmp oge double %597, %598
  br i1 %599, label %600, label %602

600:                                              ; preds = %578
  %601 = load double, ptr %39, align 8, !tbaa !11
  br label %604

602:                                              ; preds = %578
  %603 = load double, ptr %40, align 8, !tbaa !11
  br label %604

604:                                              ; preds = %602, %600
  %605 = phi double [ %601, %600 ], [ %603, %602 ]
  store double %605, ptr %77, align 8, !tbaa !11
  br label %636

606:                                              ; preds = %496
  %607 = load double, ptr %86, align 8, !tbaa !11
  %608 = fcmp oge double %607, 0.000000e+00
  br i1 %608, label %609, label %611

609:                                              ; preds = %606
  %610 = load double, ptr %86, align 8, !tbaa !11
  br label %614

611:                                              ; preds = %606
  %612 = load double, ptr %86, align 8, !tbaa !11
  %613 = fneg double %612
  br label %614

614:                                              ; preds = %611, %609
  %615 = phi double [ %610, %609 ], [ %613, %611 ]
  %616 = load double, ptr %54, align 8, !tbaa !11
  %617 = fmul double %615, %616
  store double %617, ptr %39, align 8, !tbaa !11
  %618 = load ptr, ptr %17, align 8, !tbaa !5
  %619 = load i32, ptr %618, align 4, !tbaa !9
  %620 = mul nsw i32 %619, 6
  %621 = load ptr, ptr %17, align 8, !tbaa !5
  %622 = load i32, ptr %621, align 4, !tbaa !9
  %623 = mul nsw i32 %620, %622
  %624 = sitofp i32 %623 to double
  %625 = load double, ptr %50, align 8, !tbaa !11
  %626 = fmul double %624, %625
  store double %626, ptr %40, align 8, !tbaa !11
  %627 = load double, ptr %39, align 8, !tbaa !11
  %628 = load double, ptr %40, align 8, !tbaa !11
  %629 = fcmp oge double %627, %628
  br i1 %629, label %630, label %632

630:                                              ; preds = %614
  %631 = load double, ptr %39, align 8, !tbaa !11
  br label %634

632:                                              ; preds = %614
  %633 = load double, ptr %40, align 8, !tbaa !11
  br label %634

634:                                              ; preds = %632, %630
  %635 = phi double [ %631, %630 ], [ %633, %632 ]
  store double %635, ptr %77, align 8, !tbaa !11
  br label %636

636:                                              ; preds = %634, %604
  %637 = load ptr, ptr %17, align 8, !tbaa !5
  %638 = load i32, ptr %637, align 4, !tbaa !9
  %639 = mul nsw i32 %638, 6
  %640 = load ptr, ptr %17, align 8, !tbaa !5
  %641 = load i32, ptr %640, align 4, !tbaa !9
  %642 = mul nsw i32 %639, %641
  store i32 %642, ptr %68, align 4, !tbaa !9
  store i32 0, ptr %49, align 4, !tbaa !9
  store i32 -1, ptr %64, align 4, !tbaa !9
  store i32 -1, ptr %46, align 4, !tbaa !9
  %643 = load ptr, ptr %17, align 8, !tbaa !5
  %644 = load i32, ptr %643, align 4, !tbaa !9
  store i32 %644, ptr %61, align 4, !tbaa !9
  br label %645

645:                                              ; preds = %2514, %1218, %1168, %1054, %1003, %894, %790, %636
  %646 = load i32, ptr %61, align 4, !tbaa !9
  %647 = icmp sle i32 %646, 1
  br i1 %647, label %648, label %649

648:                                              ; preds = %645
  br label %2515

649:                                              ; preds = %645
  %650 = load i32, ptr %49, align 4, !tbaa !9
  %651 = load i32, ptr %68, align 4, !tbaa !9
  %652 = icmp sgt i32 %650, %651
  br i1 %652, label %653, label %654

653:                                              ; preds = %649
  br label %2705

654:                                              ; preds = %649
  %655 = load double, ptr %86, align 8, !tbaa !11
  %656 = fcmp olt double %655, 0.000000e+00
  br i1 %656, label %657, label %679

657:                                              ; preds = %654
  %658 = load ptr, ptr %21, align 8, !tbaa !5
  %659 = load i32, ptr %61, align 4, !tbaa !9
  %660 = sext i32 %659 to i64
  %661 = getelementptr inbounds double, ptr %658, i64 %660
  %662 = load double, ptr %661, align 8, !tbaa !11
  store double %662, ptr %39, align 8, !tbaa !11
  %663 = load double, ptr %39, align 8, !tbaa !11
  %664 = fcmp oge double %663, 0.000000e+00
  br i1 %664, label %665, label %667

665:                                              ; preds = %657
  %666 = load double, ptr %39, align 8, !tbaa !11
  br label %670

667:                                              ; preds = %657
  %668 = load double, ptr %39, align 8, !tbaa !11
  %669 = fneg double %668
  br label %670

670:                                              ; preds = %667, %665
  %671 = phi double [ %666, %665 ], [ %669, %667 ]
  %672 = load double, ptr %77, align 8, !tbaa !11
  %673 = fcmp ole double %671, %672
  br i1 %673, label %674, label %679

674:                                              ; preds = %670
  %675 = load ptr, ptr %21, align 8, !tbaa !5
  %676 = load i32, ptr %61, align 4, !tbaa !9
  %677 = sext i32 %676 to i64
  %678 = getelementptr inbounds double, ptr %675, i64 %677
  store double 0.000000e+00, ptr %678, align 8, !tbaa !11
  br label %679

679:                                              ; preds = %674, %670, %654
  %680 = load ptr, ptr %21, align 8, !tbaa !5
  %681 = load i32, ptr %61, align 4, !tbaa !9
  %682 = sext i32 %681 to i64
  %683 = getelementptr inbounds double, ptr %680, i64 %682
  %684 = load double, ptr %683, align 8, !tbaa !11
  store double %684, ptr %39, align 8, !tbaa !11
  %685 = load double, ptr %39, align 8, !tbaa !11
  %686 = fcmp oge double %685, 0.000000e+00
  br i1 %686, label %687, label %689

687:                                              ; preds = %679
  %688 = load double, ptr %39, align 8, !tbaa !11
  br label %692

689:                                              ; preds = %679
  %690 = load double, ptr %39, align 8, !tbaa !11
  %691 = fneg double %690
  br label %692

692:                                              ; preds = %689, %687
  %693 = phi double [ %688, %687 ], [ %691, %689 ]
  store double %693, ptr %54, align 8, !tbaa !11
  %694 = load double, ptr %54, align 8, !tbaa !11
  store double %694, ptr %53, align 8, !tbaa !11
  %695 = load i32, ptr %61, align 4, !tbaa !9
  %696 = sub nsw i32 %695, 1
  store i32 %696, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %83, align 4, !tbaa !9
  br label %697

697:                                              ; preds = %777, %692
  %698 = load i32, ptr %83, align 4, !tbaa !9
  %699 = load i32, ptr %37, align 4, !tbaa !9
  %700 = icmp sle i32 %698, %699
  br i1 %700, label %701, label %780

701:                                              ; preds = %697
  %702 = load i32, ptr %61, align 4, !tbaa !9
  %703 = load i32, ptr %83, align 4, !tbaa !9
  %704 = sub nsw i32 %702, %703
  store i32 %704, ptr %73, align 4, !tbaa !9
  %705 = load ptr, ptr %21, align 8, !tbaa !5
  %706 = load i32, ptr %73, align 4, !tbaa !9
  %707 = sext i32 %706 to i64
  %708 = getelementptr inbounds double, ptr %705, i64 %707
  %709 = load double, ptr %708, align 8, !tbaa !11
  store double %709, ptr %39, align 8, !tbaa !11
  %710 = load double, ptr %39, align 8, !tbaa !11
  %711 = fcmp oge double %710, 0.000000e+00
  br i1 %711, label %712, label %714

712:                                              ; preds = %701
  %713 = load double, ptr %39, align 8, !tbaa !11
  br label %717

714:                                              ; preds = %701
  %715 = load double, ptr %39, align 8, !tbaa !11
  %716 = fneg double %715
  br label %717

717:                                              ; preds = %714, %712
  %718 = phi double [ %713, %712 ], [ %716, %714 ]
  store double %718, ptr %45, align 8, !tbaa !11
  %719 = load ptr, ptr %22, align 8, !tbaa !5
  %720 = load i32, ptr %73, align 4, !tbaa !9
  %721 = sext i32 %720 to i64
  %722 = getelementptr inbounds double, ptr %719, i64 %721
  %723 = load double, ptr %722, align 8, !tbaa !11
  store double %723, ptr %39, align 8, !tbaa !11
  %724 = load double, ptr %39, align 8, !tbaa !11
  %725 = fcmp oge double %724, 0.000000e+00
  br i1 %725, label %726, label %728

726:                                              ; preds = %717
  %727 = load double, ptr %39, align 8, !tbaa !11
  br label %731

728:                                              ; preds = %717
  %729 = load double, ptr %39, align 8, !tbaa !11
  %730 = fneg double %729
  br label %731

731:                                              ; preds = %728, %726
  %732 = phi double [ %727, %726 ], [ %730, %728 ]
  store double %732, ptr %43, align 8, !tbaa !11
  %733 = load double, ptr %86, align 8, !tbaa !11
  %734 = fcmp olt double %733, 0.000000e+00
  br i1 %734, label %735, label %744

735:                                              ; preds = %731
  %736 = load double, ptr %45, align 8, !tbaa !11
  %737 = load double, ptr %77, align 8, !tbaa !11
  %738 = fcmp ole double %736, %737
  br i1 %738, label %739, label %744

739:                                              ; preds = %735
  %740 = load ptr, ptr %21, align 8, !tbaa !5
  %741 = load i32, ptr %73, align 4, !tbaa !9
  %742 = sext i32 %741 to i64
  %743 = getelementptr inbounds double, ptr %740, i64 %742
  store double 0.000000e+00, ptr %743, align 8, !tbaa !11
  br label %744

744:                                              ; preds = %739, %735, %731
  %745 = load double, ptr %43, align 8, !tbaa !11
  %746 = load double, ptr %77, align 8, !tbaa !11
  %747 = fcmp ole double %745, %746
  br i1 %747, label %748, label %749

748:                                              ; preds = %744
  br label %781

749:                                              ; preds = %744
  %750 = load double, ptr %53, align 8, !tbaa !11
  %751 = load double, ptr %45, align 8, !tbaa !11
  %752 = fcmp ole double %750, %751
  br i1 %752, label %753, label %755

753:                                              ; preds = %749
  %754 = load double, ptr %53, align 8, !tbaa !11
  br label %757

755:                                              ; preds = %749
  %756 = load double, ptr %45, align 8, !tbaa !11
  br label %757

757:                                              ; preds = %755, %753
  %758 = phi double [ %754, %753 ], [ %756, %755 ]
  store double %758, ptr %53, align 8, !tbaa !11
  %759 = load double, ptr %54, align 8, !tbaa !11
  %760 = load double, ptr %45, align 8, !tbaa !11
  %761 = fcmp oge double %759, %760
  br i1 %761, label %762, label %764

762:                                              ; preds = %757
  %763 = load double, ptr %54, align 8, !tbaa !11
  br label %766

764:                                              ; preds = %757
  %765 = load double, ptr %45, align 8, !tbaa !11
  br label %766

766:                                              ; preds = %764, %762
  %767 = phi double [ %763, %762 ], [ %765, %764 ]
  store double %767, ptr %39, align 8, !tbaa !11
  %768 = load double, ptr %39, align 8, !tbaa !11
  %769 = load double, ptr %43, align 8, !tbaa !11
  %770 = fcmp oge double %768, %769
  br i1 %770, label %771, label %773

771:                                              ; preds = %766
  %772 = load double, ptr %39, align 8, !tbaa !11
  br label %775

773:                                              ; preds = %766
  %774 = load double, ptr %43, align 8, !tbaa !11
  br label %775

775:                                              ; preds = %773, %771
  %776 = phi double [ %772, %771 ], [ %774, %773 ]
  store double %776, ptr %54, align 8, !tbaa !11
  br label %777

777:                                              ; preds = %775
  %778 = load i32, ptr %83, align 4, !tbaa !9
  %779 = add nsw i32 %778, 1
  store i32 %779, ptr %83, align 4, !tbaa !9
  br label %697, !llvm.loop !18

780:                                              ; preds = %697
  store i32 0, ptr %73, align 4, !tbaa !9
  br label %794

781:                                              ; preds = %748
  %782 = load ptr, ptr %22, align 8, !tbaa !5
  %783 = load i32, ptr %73, align 4, !tbaa !9
  %784 = sext i32 %783 to i64
  %785 = getelementptr inbounds double, ptr %782, i64 %784
  store double 0.000000e+00, ptr %785, align 8, !tbaa !11
  %786 = load i32, ptr %73, align 4, !tbaa !9
  %787 = load i32, ptr %61, align 4, !tbaa !9
  %788 = sub nsw i32 %787, 1
  %789 = icmp eq i32 %786, %788
  br i1 %789, label %790, label %793

790:                                              ; preds = %781
  %791 = load i32, ptr %61, align 4, !tbaa !9
  %792 = add nsw i32 %791, -1
  store i32 %792, ptr %61, align 4, !tbaa !9
  br label %645

793:                                              ; preds = %781
  br label %794

794:                                              ; preds = %793, %780
  %795 = load i32, ptr %73, align 4, !tbaa !9
  %796 = add nsw i32 %795, 1
  store i32 %796, ptr %73, align 4, !tbaa !9
  %797 = load i32, ptr %73, align 4, !tbaa !9
  %798 = load i32, ptr %61, align 4, !tbaa !9
  %799 = sub nsw i32 %798, 1
  %800 = icmp eq i32 %797, %799
  br i1 %800, label %801, label %897

801:                                              ; preds = %794
  %802 = load ptr, ptr %21, align 8, !tbaa !5
  %803 = load i32, ptr %61, align 4, !tbaa !9
  %804 = sub nsw i32 %803, 1
  %805 = sext i32 %804 to i64
  %806 = getelementptr inbounds double, ptr %802, i64 %805
  %807 = load ptr, ptr %22, align 8, !tbaa !5
  %808 = load i32, ptr %61, align 4, !tbaa !9
  %809 = sub nsw i32 %808, 1
  %810 = sext i32 %809 to i64
  %811 = getelementptr inbounds double, ptr %807, i64 %810
  %812 = load ptr, ptr %21, align 8, !tbaa !5
  %813 = load i32, ptr %61, align 4, !tbaa !9
  %814 = sext i32 %813 to i64
  %815 = getelementptr inbounds double, ptr %812, i64 %814
  call void @dlasv2_(ptr noundef %806, ptr noundef %811, ptr noundef %815, ptr noundef %66, ptr noundef %70, ptr noundef %55, ptr noundef %52, ptr noundef %51, ptr noundef %47)
  %816 = load double, ptr %70, align 8, !tbaa !11
  %817 = load ptr, ptr %21, align 8, !tbaa !5
  %818 = load i32, ptr %61, align 4, !tbaa !9
  %819 = sub nsw i32 %818, 1
  %820 = sext i32 %819 to i64
  %821 = getelementptr inbounds double, ptr %817, i64 %820
  store double %816, ptr %821, align 8, !tbaa !11
  %822 = load ptr, ptr %22, align 8, !tbaa !5
  %823 = load i32, ptr %61, align 4, !tbaa !9
  %824 = sub nsw i32 %823, 1
  %825 = sext i32 %824 to i64
  %826 = getelementptr inbounds double, ptr %822, i64 %825
  store double 0.000000e+00, ptr %826, align 8, !tbaa !11
  %827 = load double, ptr %66, align 8, !tbaa !11
  %828 = load ptr, ptr %21, align 8, !tbaa !5
  %829 = load i32, ptr %61, align 4, !tbaa !9
  %830 = sext i32 %829 to i64
  %831 = getelementptr inbounds double, ptr %828, i64 %830
  store double %827, ptr %831, align 8, !tbaa !11
  %832 = load ptr, ptr %18, align 8, !tbaa !5
  %833 = load i32, ptr %832, align 4, !tbaa !9
  %834 = icmp sgt i32 %833, 0
  br i1 %834, label %835, label %852

835:                                              ; preds = %801
  %836 = load ptr, ptr %18, align 8, !tbaa !5
  %837 = load ptr, ptr %23, align 8, !tbaa !5
  %838 = load i32, ptr %61, align 4, !tbaa !9
  %839 = sub nsw i32 %838, 1
  %840 = load i32, ptr %35, align 4, !tbaa !9
  %841 = add nsw i32 %839, %840
  %842 = sext i32 %841 to i64
  %843 = getelementptr inbounds %struct.doublecomplex, ptr %837, i64 %842
  %844 = load ptr, ptr %24, align 8, !tbaa !5
  %845 = load ptr, ptr %23, align 8, !tbaa !5
  %846 = load i32, ptr %61, align 4, !tbaa !9
  %847 = load i32, ptr %35, align 4, !tbaa !9
  %848 = add nsw i32 %846, %847
  %849 = sext i32 %848 to i64
  %850 = getelementptr inbounds %struct.doublecomplex, ptr %845, i64 %849
  %851 = load ptr, ptr %24, align 8, !tbaa !5
  call void @zdrot_(ptr noundef %836, ptr noundef %843, ptr noundef %844, ptr noundef %850, ptr noundef %851, ptr noundef %52, ptr noundef %55)
  br label %852

852:                                              ; preds = %835, %801
  %853 = load ptr, ptr %19, align 8, !tbaa !5
  %854 = load i32, ptr %853, align 4, !tbaa !9
  %855 = icmp sgt i32 %854, 0
  br i1 %855, label %856, label %873

856:                                              ; preds = %852
  %857 = load ptr, ptr %19, align 8, !tbaa !5
  %858 = load ptr, ptr %25, align 8, !tbaa !5
  %859 = load i32, ptr %61, align 4, !tbaa !9
  %860 = sub nsw i32 %859, 1
  %861 = load i32, ptr %33, align 4, !tbaa !9
  %862 = mul nsw i32 %860, %861
  %863 = add nsw i32 %862, 1
  %864 = sext i32 %863 to i64
  %865 = getelementptr inbounds %struct.doublecomplex, ptr %858, i64 %864
  %866 = load ptr, ptr %25, align 8, !tbaa !5
  %867 = load i32, ptr %61, align 4, !tbaa !9
  %868 = load i32, ptr %33, align 4, !tbaa !9
  %869 = mul nsw i32 %867, %868
  %870 = add nsw i32 %869, 1
  %871 = sext i32 %870 to i64
  %872 = getelementptr inbounds %struct.doublecomplex, ptr %866, i64 %871
  call void @zdrot_(ptr noundef %857, ptr noundef %865, ptr noundef @c__1, ptr noundef %872, ptr noundef @c__1, ptr noundef %47, ptr noundef %51)
  br label %873

873:                                              ; preds = %856, %852
  %874 = load ptr, ptr %20, align 8, !tbaa !5
  %875 = load i32, ptr %874, align 4, !tbaa !9
  %876 = icmp sgt i32 %875, 0
  br i1 %876, label %877, label %894

877:                                              ; preds = %873
  %878 = load ptr, ptr %20, align 8, !tbaa !5
  %879 = load ptr, ptr %27, align 8, !tbaa !5
  %880 = load i32, ptr %61, align 4, !tbaa !9
  %881 = sub nsw i32 %880, 1
  %882 = load i32, ptr %31, align 4, !tbaa !9
  %883 = add nsw i32 %881, %882
  %884 = sext i32 %883 to i64
  %885 = getelementptr inbounds %struct.doublecomplex, ptr %879, i64 %884
  %886 = load ptr, ptr %28, align 8, !tbaa !5
  %887 = load ptr, ptr %27, align 8, !tbaa !5
  %888 = load i32, ptr %61, align 4, !tbaa !9
  %889 = load i32, ptr %31, align 4, !tbaa !9
  %890 = add nsw i32 %888, %889
  %891 = sext i32 %890 to i64
  %892 = getelementptr inbounds %struct.doublecomplex, ptr %887, i64 %891
  %893 = load ptr, ptr %28, align 8, !tbaa !5
  call void @zdrot_(ptr noundef %878, ptr noundef %885, ptr noundef %886, ptr noundef %892, ptr noundef %893, ptr noundef %47, ptr noundef %51)
  br label %894

894:                                              ; preds = %877, %873
  %895 = load i32, ptr %61, align 4, !tbaa !9
  %896 = add nsw i32 %895, -2
  store i32 %896, ptr %61, align 4, !tbaa !9
  br label %645

897:                                              ; preds = %794
  %898 = load i32, ptr %73, align 4, !tbaa !9
  %899 = load i32, ptr %46, align 4, !tbaa !9
  %900 = icmp sgt i32 %898, %899
  br i1 %900, label %905, label %901

901:                                              ; preds = %897
  %902 = load i32, ptr %61, align 4, !tbaa !9
  %903 = load i32, ptr %64, align 4, !tbaa !9
  %904 = icmp slt i32 %902, %903
  br i1 %904, label %905, label %938

905:                                              ; preds = %901, %897
  %906 = load ptr, ptr %21, align 8, !tbaa !5
  %907 = load i32, ptr %73, align 4, !tbaa !9
  %908 = sext i32 %907 to i64
  %909 = getelementptr inbounds double, ptr %906, i64 %908
  %910 = load double, ptr %909, align 8, !tbaa !11
  store double %910, ptr %39, align 8, !tbaa !11
  %911 = load double, ptr %39, align 8, !tbaa !11
  %912 = fcmp oge double %911, 0.000000e+00
  br i1 %912, label %913, label %915

913:                                              ; preds = %905
  %914 = load double, ptr %39, align 8, !tbaa !11
  br label %918

915:                                              ; preds = %905
  %916 = load double, ptr %39, align 8, !tbaa !11
  %917 = fneg double %916
  br label %918

918:                                              ; preds = %915, %913
  %919 = phi double [ %914, %913 ], [ %917, %915 ]
  %920 = load ptr, ptr %21, align 8, !tbaa !5
  %921 = load i32, ptr %61, align 4, !tbaa !9
  %922 = sext i32 %921 to i64
  %923 = getelementptr inbounds double, ptr %920, i64 %922
  %924 = load double, ptr %923, align 8, !tbaa !11
  store double %924, ptr %40, align 8, !tbaa !11
  %925 = load double, ptr %40, align 8, !tbaa !11
  %926 = fcmp oge double %925, 0.000000e+00
  br i1 %926, label %927, label %929

927:                                              ; preds = %918
  %928 = load double, ptr %40, align 8, !tbaa !11
  br label %932

929:                                              ; preds = %918
  %930 = load double, ptr %40, align 8, !tbaa !11
  %931 = fneg double %930
  br label %932

932:                                              ; preds = %929, %927
  %933 = phi double [ %928, %927 ], [ %931, %929 ]
  %934 = fcmp oge double %919, %933
  br i1 %934, label %935, label %936

935:                                              ; preds = %932
  store i32 1, ptr %44, align 4, !tbaa !9
  br label %937

936:                                              ; preds = %932
  store i32 2, ptr %44, align 4, !tbaa !9
  br label %937

937:                                              ; preds = %936, %935
  br label %938

938:                                              ; preds = %937, %901
  %939 = load i32, ptr %44, align 4, !tbaa !9
  %940 = icmp eq i32 %939, 1
  br i1 %940, label %941, label %1108

941:                                              ; preds = %938
  %942 = load ptr, ptr %22, align 8, !tbaa !5
  %943 = load i32, ptr %61, align 4, !tbaa !9
  %944 = sub nsw i32 %943, 1
  %945 = sext i32 %944 to i64
  %946 = getelementptr inbounds double, ptr %942, i64 %945
  %947 = load double, ptr %946, align 8, !tbaa !11
  store double %947, ptr %40, align 8, !tbaa !11
  %948 = load double, ptr %40, align 8, !tbaa !11
  %949 = fcmp oge double %948, 0.000000e+00
  br i1 %949, label %950, label %952

950:                                              ; preds = %941
  %951 = load double, ptr %40, align 8, !tbaa !11
  br label %955

952:                                              ; preds = %941
  %953 = load double, ptr %40, align 8, !tbaa !11
  %954 = fneg double %953
  br label %955

955:                                              ; preds = %952, %950
  %956 = phi double [ %951, %950 ], [ %954, %952 ]
  %957 = load double, ptr %86, align 8, !tbaa !11
  %958 = fcmp oge double %957, 0.000000e+00
  br i1 %958, label %959, label %961

959:                                              ; preds = %955
  %960 = load double, ptr %86, align 8, !tbaa !11
  br label %964

961:                                              ; preds = %955
  %962 = load double, ptr %86, align 8, !tbaa !11
  %963 = fneg double %962
  br label %964

964:                                              ; preds = %961, %959
  %965 = phi double [ %960, %959 ], [ %963, %961 ]
  %966 = load ptr, ptr %21, align 8, !tbaa !5
  %967 = load i32, ptr %61, align 4, !tbaa !9
  %968 = sext i32 %967 to i64
  %969 = getelementptr inbounds double, ptr %966, i64 %968
  %970 = load double, ptr %969, align 8, !tbaa !11
  store double %970, ptr %39, align 8, !tbaa !11
  %971 = load double, ptr %39, align 8, !tbaa !11
  %972 = fcmp oge double %971, 0.000000e+00
  br i1 %972, label %973, label %975

973:                                              ; preds = %964
  %974 = load double, ptr %39, align 8, !tbaa !11
  br label %978

975:                                              ; preds = %964
  %976 = load double, ptr %39, align 8, !tbaa !11
  %977 = fneg double %976
  br label %978

978:                                              ; preds = %975, %973
  %979 = phi double [ %974, %973 ], [ %977, %975 ]
  %980 = fmul double %965, %979
  %981 = fcmp ole double %956, %980
  br i1 %981, label %1003, label %982

982:                                              ; preds = %978
  %983 = load double, ptr %86, align 8, !tbaa !11
  %984 = fcmp olt double %983, 0.000000e+00
  br i1 %984, label %985, label %1009

985:                                              ; preds = %982
  %986 = load ptr, ptr %22, align 8, !tbaa !5
  %987 = load i32, ptr %61, align 4, !tbaa !9
  %988 = sub nsw i32 %987, 1
  %989 = sext i32 %988 to i64
  %990 = getelementptr inbounds double, ptr %986, i64 %989
  %991 = load double, ptr %990, align 8, !tbaa !11
  store double %991, ptr %41, align 8, !tbaa !11
  %992 = load double, ptr %41, align 8, !tbaa !11
  %993 = fcmp oge double %992, 0.000000e+00
  br i1 %993, label %994, label %996

994:                                              ; preds = %985
  %995 = load double, ptr %41, align 8, !tbaa !11
  br label %999

996:                                              ; preds = %985
  %997 = load double, ptr %41, align 8, !tbaa !11
  %998 = fneg double %997
  br label %999

999:                                              ; preds = %996, %994
  %1000 = phi double [ %995, %994 ], [ %998, %996 ]
  %1001 = load double, ptr %77, align 8, !tbaa !11
  %1002 = fcmp ole double %1000, %1001
  br i1 %1002, label %1003, label %1009

1003:                                             ; preds = %999, %978
  %1004 = load ptr, ptr %22, align 8, !tbaa !5
  %1005 = load i32, ptr %61, align 4, !tbaa !9
  %1006 = sub nsw i32 %1005, 1
  %1007 = sext i32 %1006 to i64
  %1008 = getelementptr inbounds double, ptr %1004, i64 %1007
  store double 0.000000e+00, ptr %1008, align 8, !tbaa !11
  br label %645

1009:                                             ; preds = %999, %982
  %1010 = load double, ptr %86, align 8, !tbaa !11
  %1011 = fcmp oge double %1010, 0.000000e+00
  br i1 %1011, label %1012, label %1107

1012:                                             ; preds = %1009
  %1013 = load ptr, ptr %21, align 8, !tbaa !5
  %1014 = load i32, ptr %73, align 4, !tbaa !9
  %1015 = sext i32 %1014 to i64
  %1016 = getelementptr inbounds double, ptr %1013, i64 %1015
  %1017 = load double, ptr %1016, align 8, !tbaa !11
  store double %1017, ptr %39, align 8, !tbaa !11
  %1018 = load double, ptr %39, align 8, !tbaa !11
  %1019 = fcmp oge double %1018, 0.000000e+00
  br i1 %1019, label %1020, label %1022

1020:                                             ; preds = %1012
  %1021 = load double, ptr %39, align 8, !tbaa !11
  br label %1025

1022:                                             ; preds = %1012
  %1023 = load double, ptr %39, align 8, !tbaa !11
  %1024 = fneg double %1023
  br label %1025

1025:                                             ; preds = %1022, %1020
  %1026 = phi double [ %1021, %1020 ], [ %1024, %1022 ]
  store double %1026, ptr %75, align 8, !tbaa !11
  %1027 = load double, ptr %75, align 8, !tbaa !11
  store double %1027, ptr %69, align 8, !tbaa !11
  %1028 = load i32, ptr %61, align 4, !tbaa !9
  %1029 = sub nsw i32 %1028, 1
  store i32 %1029, ptr %37, align 4, !tbaa !9
  %1030 = load i32, ptr %73, align 4, !tbaa !9
  store i32 %1030, ptr %83, align 4, !tbaa !9
  br label %1031

1031:                                             ; preds = %1103, %1025
  %1032 = load i32, ptr %83, align 4, !tbaa !9
  %1033 = load i32, ptr %37, align 4, !tbaa !9
  %1034 = icmp sle i32 %1032, %1033
  br i1 %1034, label %1035, label %1106

1035:                                             ; preds = %1031
  %1036 = load ptr, ptr %22, align 8, !tbaa !5
  %1037 = load i32, ptr %83, align 4, !tbaa !9
  %1038 = sext i32 %1037 to i64
  %1039 = getelementptr inbounds double, ptr %1036, i64 %1038
  %1040 = load double, ptr %1039, align 8, !tbaa !11
  store double %1040, ptr %39, align 8, !tbaa !11
  %1041 = load double, ptr %39, align 8, !tbaa !11
  %1042 = fcmp oge double %1041, 0.000000e+00
  br i1 %1042, label %1043, label %1045

1043:                                             ; preds = %1035
  %1044 = load double, ptr %39, align 8, !tbaa !11
  br label %1048

1045:                                             ; preds = %1035
  %1046 = load double, ptr %39, align 8, !tbaa !11
  %1047 = fneg double %1046
  br label %1048

1048:                                             ; preds = %1045, %1043
  %1049 = phi double [ %1044, %1043 ], [ %1047, %1045 ]
  %1050 = load double, ptr %86, align 8, !tbaa !11
  %1051 = load double, ptr %75, align 8, !tbaa !11
  %1052 = fmul double %1050, %1051
  %1053 = fcmp ole double %1049, %1052
  br i1 %1053, label %1054, label %1059

1054:                                             ; preds = %1048
  %1055 = load ptr, ptr %22, align 8, !tbaa !5
  %1056 = load i32, ptr %83, align 4, !tbaa !9
  %1057 = sext i32 %1056 to i64
  %1058 = getelementptr inbounds double, ptr %1055, i64 %1057
  store double 0.000000e+00, ptr %1058, align 8, !tbaa !11
  br label %645

1059:                                             ; preds = %1048
  %1060 = load ptr, ptr %21, align 8, !tbaa !5
  %1061 = load i32, ptr %83, align 4, !tbaa !9
  %1062 = add nsw i32 %1061, 1
  %1063 = sext i32 %1062 to i64
  %1064 = getelementptr inbounds double, ptr %1060, i64 %1063
  %1065 = load double, ptr %1064, align 8, !tbaa !11
  store double %1065, ptr %40, align 8, !tbaa !11
  %1066 = load double, ptr %40, align 8, !tbaa !11
  %1067 = fcmp oge double %1066, 0.000000e+00
  br i1 %1067, label %1068, label %1070

1068:                                             ; preds = %1059
  %1069 = load double, ptr %40, align 8, !tbaa !11
  br label %1073

1070:                                             ; preds = %1059
  %1071 = load double, ptr %40, align 8, !tbaa !11
  %1072 = fneg double %1071
  br label %1073

1073:                                             ; preds = %1070, %1068
  %1074 = phi double [ %1069, %1068 ], [ %1072, %1070 ]
  %1075 = load double, ptr %75, align 8, !tbaa !11
  %1076 = load double, ptr %75, align 8, !tbaa !11
  %1077 = load ptr, ptr %22, align 8, !tbaa !5
  %1078 = load i32, ptr %83, align 4, !tbaa !9
  %1079 = sext i32 %1078 to i64
  %1080 = getelementptr inbounds double, ptr %1077, i64 %1079
  %1081 = load double, ptr %1080, align 8, !tbaa !11
  store double %1081, ptr %39, align 8, !tbaa !11
  %1082 = load double, ptr %39, align 8, !tbaa !11
  %1083 = fcmp oge double %1082, 0.000000e+00
  br i1 %1083, label %1084, label %1086

1084:                                             ; preds = %1073
  %1085 = load double, ptr %39, align 8, !tbaa !11
  br label %1089

1086:                                             ; preds = %1073
  %1087 = load double, ptr %39, align 8, !tbaa !11
  %1088 = fneg double %1087
  br label %1089

1089:                                             ; preds = %1086, %1084
  %1090 = phi double [ %1085, %1084 ], [ %1088, %1086 ]
  %1091 = fadd double %1076, %1090
  %1092 = fdiv double %1075, %1091
  %1093 = fmul double %1074, %1092
  store double %1093, ptr %75, align 8, !tbaa !11
  %1094 = load double, ptr %69, align 8, !tbaa !11
  %1095 = load double, ptr %75, align 8, !tbaa !11
  %1096 = fcmp ole double %1094, %1095
  br i1 %1096, label %1097, label %1099

1097:                                             ; preds = %1089
  %1098 = load double, ptr %69, align 8, !tbaa !11
  br label %1101

1099:                                             ; preds = %1089
  %1100 = load double, ptr %75, align 8, !tbaa !11
  br label %1101

1101:                                             ; preds = %1099, %1097
  %1102 = phi double [ %1098, %1097 ], [ %1100, %1099 ]
  store double %1102, ptr %69, align 8, !tbaa !11
  br label %1103

1103:                                             ; preds = %1101
  %1104 = load i32, ptr %83, align 4, !tbaa !9
  %1105 = add nsw i32 %1104, 1
  store i32 %1105, ptr %83, align 4, !tbaa !9
  br label %1031, !llvm.loop !19

1106:                                             ; preds = %1031
  br label %1107

1107:                                             ; preds = %1106, %1009
  br label %1271

1108:                                             ; preds = %938
  %1109 = load ptr, ptr %22, align 8, !tbaa !5
  %1110 = load i32, ptr %73, align 4, !tbaa !9
  %1111 = sext i32 %1110 to i64
  %1112 = getelementptr inbounds double, ptr %1109, i64 %1111
  %1113 = load double, ptr %1112, align 8, !tbaa !11
  store double %1113, ptr %40, align 8, !tbaa !11
  %1114 = load double, ptr %40, align 8, !tbaa !11
  %1115 = fcmp oge double %1114, 0.000000e+00
  br i1 %1115, label %1116, label %1118

1116:                                             ; preds = %1108
  %1117 = load double, ptr %40, align 8, !tbaa !11
  br label %1121

1118:                                             ; preds = %1108
  %1119 = load double, ptr %40, align 8, !tbaa !11
  %1120 = fneg double %1119
  br label %1121

1121:                                             ; preds = %1118, %1116
  %1122 = phi double [ %1117, %1116 ], [ %1120, %1118 ]
  %1123 = load double, ptr %86, align 8, !tbaa !11
  %1124 = fcmp oge double %1123, 0.000000e+00
  br i1 %1124, label %1125, label %1127

1125:                                             ; preds = %1121
  %1126 = load double, ptr %86, align 8, !tbaa !11
  br label %1130

1127:                                             ; preds = %1121
  %1128 = load double, ptr %86, align 8, !tbaa !11
  %1129 = fneg double %1128
  br label %1130

1130:                                             ; preds = %1127, %1125
  %1131 = phi double [ %1126, %1125 ], [ %1129, %1127 ]
  %1132 = load ptr, ptr %21, align 8, !tbaa !5
  %1133 = load i32, ptr %73, align 4, !tbaa !9
  %1134 = sext i32 %1133 to i64
  %1135 = getelementptr inbounds double, ptr %1132, i64 %1134
  %1136 = load double, ptr %1135, align 8, !tbaa !11
  store double %1136, ptr %39, align 8, !tbaa !11
  %1137 = load double, ptr %39, align 8, !tbaa !11
  %1138 = fcmp oge double %1137, 0.000000e+00
  br i1 %1138, label %1139, label %1141

1139:                                             ; preds = %1130
  %1140 = load double, ptr %39, align 8, !tbaa !11
  br label %1144

1141:                                             ; preds = %1130
  %1142 = load double, ptr %39, align 8, !tbaa !11
  %1143 = fneg double %1142
  br label %1144

1144:                                             ; preds = %1141, %1139
  %1145 = phi double [ %1140, %1139 ], [ %1143, %1141 ]
  %1146 = fmul double %1131, %1145
  %1147 = fcmp ole double %1122, %1146
  br i1 %1147, label %1168, label %1148

1148:                                             ; preds = %1144
  %1149 = load double, ptr %86, align 8, !tbaa !11
  %1150 = fcmp olt double %1149, 0.000000e+00
  br i1 %1150, label %1151, label %1173

1151:                                             ; preds = %1148
  %1152 = load ptr, ptr %22, align 8, !tbaa !5
  %1153 = load i32, ptr %73, align 4, !tbaa !9
  %1154 = sext i32 %1153 to i64
  %1155 = getelementptr inbounds double, ptr %1152, i64 %1154
  %1156 = load double, ptr %1155, align 8, !tbaa !11
  store double %1156, ptr %41, align 8, !tbaa !11
  %1157 = load double, ptr %41, align 8, !tbaa !11
  %1158 = fcmp oge double %1157, 0.000000e+00
  br i1 %1158, label %1159, label %1161

1159:                                             ; preds = %1151
  %1160 = load double, ptr %41, align 8, !tbaa !11
  br label %1164

1161:                                             ; preds = %1151
  %1162 = load double, ptr %41, align 8, !tbaa !11
  %1163 = fneg double %1162
  br label %1164

1164:                                             ; preds = %1161, %1159
  %1165 = phi double [ %1160, %1159 ], [ %1163, %1161 ]
  %1166 = load double, ptr %77, align 8, !tbaa !11
  %1167 = fcmp ole double %1165, %1166
  br i1 %1167, label %1168, label %1173

1168:                                             ; preds = %1164, %1144
  %1169 = load ptr, ptr %22, align 8, !tbaa !5
  %1170 = load i32, ptr %73, align 4, !tbaa !9
  %1171 = sext i32 %1170 to i64
  %1172 = getelementptr inbounds double, ptr %1169, i64 %1171
  store double 0.000000e+00, ptr %1172, align 8, !tbaa !11
  br label %645

1173:                                             ; preds = %1164, %1148
  %1174 = load double, ptr %86, align 8, !tbaa !11
  %1175 = fcmp oge double %1174, 0.000000e+00
  br i1 %1175, label %1176, label %1270

1176:                                             ; preds = %1173
  %1177 = load ptr, ptr %21, align 8, !tbaa !5
  %1178 = load i32, ptr %61, align 4, !tbaa !9
  %1179 = sext i32 %1178 to i64
  %1180 = getelementptr inbounds double, ptr %1177, i64 %1179
  %1181 = load double, ptr %1180, align 8, !tbaa !11
  store double %1181, ptr %39, align 8, !tbaa !11
  %1182 = load double, ptr %39, align 8, !tbaa !11
  %1183 = fcmp oge double %1182, 0.000000e+00
  br i1 %1183, label %1184, label %1186

1184:                                             ; preds = %1176
  %1185 = load double, ptr %39, align 8, !tbaa !11
  br label %1189

1186:                                             ; preds = %1176
  %1187 = load double, ptr %39, align 8, !tbaa !11
  %1188 = fneg double %1187
  br label %1189

1189:                                             ; preds = %1186, %1184
  %1190 = phi double [ %1185, %1184 ], [ %1188, %1186 ]
  store double %1190, ptr %75, align 8, !tbaa !11
  %1191 = load double, ptr %75, align 8, !tbaa !11
  store double %1191, ptr %69, align 8, !tbaa !11
  %1192 = load i32, ptr %73, align 4, !tbaa !9
  store i32 %1192, ptr %37, align 4, !tbaa !9
  %1193 = load i32, ptr %61, align 4, !tbaa !9
  %1194 = sub nsw i32 %1193, 1
  store i32 %1194, ptr %83, align 4, !tbaa !9
  br label %1195

1195:                                             ; preds = %1266, %1189
  %1196 = load i32, ptr %83, align 4, !tbaa !9
  %1197 = load i32, ptr %37, align 4, !tbaa !9
  %1198 = icmp sge i32 %1196, %1197
  br i1 %1198, label %1199, label %1269

1199:                                             ; preds = %1195
  %1200 = load ptr, ptr %22, align 8, !tbaa !5
  %1201 = load i32, ptr %83, align 4, !tbaa !9
  %1202 = sext i32 %1201 to i64
  %1203 = getelementptr inbounds double, ptr %1200, i64 %1202
  %1204 = load double, ptr %1203, align 8, !tbaa !11
  store double %1204, ptr %39, align 8, !tbaa !11
  %1205 = load double, ptr %39, align 8, !tbaa !11
  %1206 = fcmp oge double %1205, 0.000000e+00
  br i1 %1206, label %1207, label %1209

1207:                                             ; preds = %1199
  %1208 = load double, ptr %39, align 8, !tbaa !11
  br label %1212

1209:                                             ; preds = %1199
  %1210 = load double, ptr %39, align 8, !tbaa !11
  %1211 = fneg double %1210
  br label %1212

1212:                                             ; preds = %1209, %1207
  %1213 = phi double [ %1208, %1207 ], [ %1211, %1209 ]
  %1214 = load double, ptr %86, align 8, !tbaa !11
  %1215 = load double, ptr %75, align 8, !tbaa !11
  %1216 = fmul double %1214, %1215
  %1217 = fcmp ole double %1213, %1216
  br i1 %1217, label %1218, label %1223

1218:                                             ; preds = %1212
  %1219 = load ptr, ptr %22, align 8, !tbaa !5
  %1220 = load i32, ptr %83, align 4, !tbaa !9
  %1221 = sext i32 %1220 to i64
  %1222 = getelementptr inbounds double, ptr %1219, i64 %1221
  store double 0.000000e+00, ptr %1222, align 8, !tbaa !11
  br label %645

1223:                                             ; preds = %1212
  %1224 = load ptr, ptr %21, align 8, !tbaa !5
  %1225 = load i32, ptr %83, align 4, !tbaa !9
  %1226 = sext i32 %1225 to i64
  %1227 = getelementptr inbounds double, ptr %1224, i64 %1226
  %1228 = load double, ptr %1227, align 8, !tbaa !11
  store double %1228, ptr %40, align 8, !tbaa !11
  %1229 = load double, ptr %40, align 8, !tbaa !11
  %1230 = fcmp oge double %1229, 0.000000e+00
  br i1 %1230, label %1231, label %1233

1231:                                             ; preds = %1223
  %1232 = load double, ptr %40, align 8, !tbaa !11
  br label %1236

1233:                                             ; preds = %1223
  %1234 = load double, ptr %40, align 8, !tbaa !11
  %1235 = fneg double %1234
  br label %1236

1236:                                             ; preds = %1233, %1231
  %1237 = phi double [ %1232, %1231 ], [ %1235, %1233 ]
  %1238 = load double, ptr %75, align 8, !tbaa !11
  %1239 = load double, ptr %75, align 8, !tbaa !11
  %1240 = load ptr, ptr %22, align 8, !tbaa !5
  %1241 = load i32, ptr %83, align 4, !tbaa !9
  %1242 = sext i32 %1241 to i64
  %1243 = getelementptr inbounds double, ptr %1240, i64 %1242
  %1244 = load double, ptr %1243, align 8, !tbaa !11
  store double %1244, ptr %39, align 8, !tbaa !11
  %1245 = load double, ptr %39, align 8, !tbaa !11
  %1246 = fcmp oge double %1245, 0.000000e+00
  br i1 %1246, label %1247, label %1249

1247:                                             ; preds = %1236
  %1248 = load double, ptr %39, align 8, !tbaa !11
  br label %1252

1249:                                             ; preds = %1236
  %1250 = load double, ptr %39, align 8, !tbaa !11
  %1251 = fneg double %1250
  br label %1252

1252:                                             ; preds = %1249, %1247
  %1253 = phi double [ %1248, %1247 ], [ %1251, %1249 ]
  %1254 = fadd double %1239, %1253
  %1255 = fdiv double %1238, %1254
  %1256 = fmul double %1237, %1255
  store double %1256, ptr %75, align 8, !tbaa !11
  %1257 = load double, ptr %69, align 8, !tbaa !11
  %1258 = load double, ptr %75, align 8, !tbaa !11
  %1259 = fcmp ole double %1257, %1258
  br i1 %1259, label %1260, label %1262

1260:                                             ; preds = %1252
  %1261 = load double, ptr %69, align 8, !tbaa !11
  br label %1264

1262:                                             ; preds = %1252
  %1263 = load double, ptr %75, align 8, !tbaa !11
  br label %1264

1264:                                             ; preds = %1262, %1260
  %1265 = phi double [ %1261, %1260 ], [ %1263, %1262 ]
  store double %1265, ptr %69, align 8, !tbaa !11
  br label %1266

1266:                                             ; preds = %1264
  %1267 = load i32, ptr %83, align 4, !tbaa !9
  %1268 = add nsw i32 %1267, -1
  store i32 %1268, ptr %83, align 4, !tbaa !9
  br label %1195, !llvm.loop !20

1269:                                             ; preds = %1195
  br label %1270

1270:                                             ; preds = %1269, %1173
  br label %1271

1271:                                             ; preds = %1270, %1107
  %1272 = load i32, ptr %73, align 4, !tbaa !9
  store i32 %1272, ptr %64, align 4, !tbaa !9
  %1273 = load i32, ptr %61, align 4, !tbaa !9
  store i32 %1273, ptr %46, align 4, !tbaa !9
  %1274 = load double, ptr %84, align 8, !tbaa !11
  store double %1274, ptr %39, align 8, !tbaa !11
  %1275 = load double, ptr %86, align 8, !tbaa !11
  %1276 = fmul double %1275, 1.000000e-02
  store double %1276, ptr %40, align 8, !tbaa !11
  %1277 = load double, ptr %86, align 8, !tbaa !11
  %1278 = fcmp oge double %1277, 0.000000e+00
  br i1 %1278, label %1279, label %1300

1279:                                             ; preds = %1271
  %1280 = load ptr, ptr %17, align 8, !tbaa !5
  %1281 = load i32, ptr %1280, align 4, !tbaa !9
  %1282 = sitofp i32 %1281 to double
  %1283 = load double, ptr %86, align 8, !tbaa !11
  %1284 = fmul double %1282, %1283
  %1285 = load double, ptr %69, align 8, !tbaa !11
  %1286 = load double, ptr %54, align 8, !tbaa !11
  %1287 = fdiv double %1285, %1286
  %1288 = fmul double %1284, %1287
  %1289 = load double, ptr %39, align 8, !tbaa !11
  %1290 = load double, ptr %40, align 8, !tbaa !11
  %1291 = fcmp oge double %1289, %1290
  br i1 %1291, label %1292, label %1294

1292:                                             ; preds = %1279
  %1293 = load double, ptr %39, align 8, !tbaa !11
  br label %1296

1294:                                             ; preds = %1279
  %1295 = load double, ptr %40, align 8, !tbaa !11
  br label %1296

1296:                                             ; preds = %1294, %1292
  %1297 = phi double [ %1293, %1292 ], [ %1295, %1294 ]
  %1298 = fcmp ole double %1288, %1297
  br i1 %1298, label %1299, label %1300

1299:                                             ; preds = %1296
  store double 0.000000e+00, ptr %65, align 8, !tbaa !11
  br label %1375

1300:                                             ; preds = %1296, %1271
  %1301 = load i32, ptr %44, align 4, !tbaa !9
  %1302 = icmp eq i32 %1301, 1
  br i1 %1302, label %1303, label %1332

1303:                                             ; preds = %1300
  %1304 = load ptr, ptr %21, align 8, !tbaa !5
  %1305 = load i32, ptr %73, align 4, !tbaa !9
  %1306 = sext i32 %1305 to i64
  %1307 = getelementptr inbounds double, ptr %1304, i64 %1306
  %1308 = load double, ptr %1307, align 8, !tbaa !11
  store double %1308, ptr %39, align 8, !tbaa !11
  %1309 = load double, ptr %39, align 8, !tbaa !11
  %1310 = fcmp oge double %1309, 0.000000e+00
  br i1 %1310, label %1311, label %1313

1311:                                             ; preds = %1303
  %1312 = load double, ptr %39, align 8, !tbaa !11
  br label %1316

1313:                                             ; preds = %1303
  %1314 = load double, ptr %39, align 8, !tbaa !11
  %1315 = fneg double %1314
  br label %1316

1316:                                             ; preds = %1313, %1311
  %1317 = phi double [ %1312, %1311 ], [ %1315, %1313 ]
  store double %1317, ptr %85, align 8, !tbaa !11
  %1318 = load ptr, ptr %21, align 8, !tbaa !5
  %1319 = load i32, ptr %61, align 4, !tbaa !9
  %1320 = sub nsw i32 %1319, 1
  %1321 = sext i32 %1320 to i64
  %1322 = getelementptr inbounds double, ptr %1318, i64 %1321
  %1323 = load ptr, ptr %22, align 8, !tbaa !5
  %1324 = load i32, ptr %61, align 4, !tbaa !9
  %1325 = sub nsw i32 %1324, 1
  %1326 = sext i32 %1325 to i64
  %1327 = getelementptr inbounds double, ptr %1323, i64 %1326
  %1328 = load ptr, ptr %21, align 8, !tbaa !5
  %1329 = load i32, ptr %61, align 4, !tbaa !9
  %1330 = sext i32 %1329 to i64
  %1331 = getelementptr inbounds double, ptr %1328, i64 %1330
  call void @dlas2_(ptr noundef %1322, ptr noundef %1327, ptr noundef %1331, ptr noundef %65, ptr noundef %62)
  br label %1360

1332:                                             ; preds = %1300
  %1333 = load ptr, ptr %21, align 8, !tbaa !5
  %1334 = load i32, ptr %61, align 4, !tbaa !9
  %1335 = sext i32 %1334 to i64
  %1336 = getelementptr inbounds double, ptr %1333, i64 %1335
  %1337 = load double, ptr %1336, align 8, !tbaa !11
  store double %1337, ptr %39, align 8, !tbaa !11
  %1338 = load double, ptr %39, align 8, !tbaa !11
  %1339 = fcmp oge double %1338, 0.000000e+00
  br i1 %1339, label %1340, label %1342

1340:                                             ; preds = %1332
  %1341 = load double, ptr %39, align 8, !tbaa !11
  br label %1345

1342:                                             ; preds = %1332
  %1343 = load double, ptr %39, align 8, !tbaa !11
  %1344 = fneg double %1343
  br label %1345

1345:                                             ; preds = %1342, %1340
  %1346 = phi double [ %1341, %1340 ], [ %1344, %1342 ]
  store double %1346, ptr %85, align 8, !tbaa !11
  %1347 = load ptr, ptr %21, align 8, !tbaa !5
  %1348 = load i32, ptr %73, align 4, !tbaa !9
  %1349 = sext i32 %1348 to i64
  %1350 = getelementptr inbounds double, ptr %1347, i64 %1349
  %1351 = load ptr, ptr %22, align 8, !tbaa !5
  %1352 = load i32, ptr %73, align 4, !tbaa !9
  %1353 = sext i32 %1352 to i64
  %1354 = getelementptr inbounds double, ptr %1351, i64 %1353
  %1355 = load ptr, ptr %21, align 8, !tbaa !5
  %1356 = load i32, ptr %73, align 4, !tbaa !9
  %1357 = add nsw i32 %1356, 1
  %1358 = sext i32 %1357 to i64
  %1359 = getelementptr inbounds double, ptr %1355, i64 %1358
  call void @dlas2_(ptr noundef %1350, ptr noundef %1354, ptr noundef %1359, ptr noundef %65, ptr noundef %62)
  br label %1360

1360:                                             ; preds = %1345, %1316
  %1361 = load double, ptr %85, align 8, !tbaa !11
  %1362 = fcmp ogt double %1361, 0.000000e+00
  br i1 %1362, label %1363, label %1374

1363:                                             ; preds = %1360
  %1364 = load double, ptr %65, align 8, !tbaa !11
  %1365 = load double, ptr %85, align 8, !tbaa !11
  %1366 = fdiv double %1364, %1365
  store double %1366, ptr %39, align 8, !tbaa !11
  %1367 = load double, ptr %39, align 8, !tbaa !11
  %1368 = load double, ptr %39, align 8, !tbaa !11
  %1369 = fmul double %1367, %1368
  %1370 = load double, ptr %84, align 8, !tbaa !11
  %1371 = fcmp olt double %1369, %1370
  br i1 %1371, label %1372, label %1373

1372:                                             ; preds = %1363
  store double 0.000000e+00, ptr %65, align 8, !tbaa !11
  br label %1373

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

1374:                                             ; preds = %1373, %1360
  br label %1375

1375:                                             ; preds = %1374, %1299
  %1376 = load i32, ptr %49, align 4, !tbaa !9
  %1377 = load i32, ptr %61, align 4, !tbaa !9
  %1378 = add nsw i32 %1376, %1377
  %1379 = load i32, ptr %73, align 4, !tbaa !9
  %1380 = sub nsw i32 %1378, %1379
  store i32 %1380, ptr %49, align 4, !tbaa !9
  %1381 = load double, ptr %65, align 8, !tbaa !11
  %1382 = fcmp oeq double %1381, 0.000000e+00
  br i1 %1382, label %1383, label %1809

1383:                                             ; preds = %1375
  %1384 = load i32, ptr %44, align 4, !tbaa !9
  %1385 = icmp eq i32 %1384, 1
  br i1 %1385, label %1386, label %1601

1386:                                             ; preds = %1383
  store double 1.000000e+00, ptr %72, align 8, !tbaa !11
  store double 1.000000e+00, ptr %63, align 8, !tbaa !11
  %1387 = load i32, ptr %61, align 4, !tbaa !9
  %1388 = sub nsw i32 %1387, 1
  store i32 %1388, ptr %37, align 4, !tbaa !9
  %1389 = load i32, ptr %73, align 4, !tbaa !9
  store i32 %1389, ptr %59, align 4, !tbaa !9
  br label %1390

1390:                                             ; preds = %1472, %1386
  %1391 = load i32, ptr %59, align 4, !tbaa !9
  %1392 = load i32, ptr %37, align 4, !tbaa !9
  %1393 = icmp sle i32 %1391, %1392
  br i1 %1393, label %1394, label %1475

1394:                                             ; preds = %1390
  %1395 = load ptr, ptr %21, align 8, !tbaa !5
  %1396 = load i32, ptr %59, align 4, !tbaa !9
  %1397 = sext i32 %1396 to i64
  %1398 = getelementptr inbounds double, ptr %1395, i64 %1397
  %1399 = load double, ptr %1398, align 8, !tbaa !11
  %1400 = load double, ptr %72, align 8, !tbaa !11
  %1401 = fmul double %1399, %1400
  store double %1401, ptr %39, align 8, !tbaa !11
  %1402 = load ptr, ptr %22, align 8, !tbaa !5
  %1403 = load i32, ptr %59, align 4, !tbaa !9
  %1404 = sext i32 %1403 to i64
  %1405 = getelementptr inbounds double, ptr %1402, i64 %1404
  call void @dlartg_(ptr noundef %39, ptr noundef %1405, ptr noundef %72, ptr noundef %74, ptr noundef %62)
  %1406 = load i32, ptr %59, align 4, !tbaa !9
  %1407 = load i32, ptr %73, align 4, !tbaa !9
  %1408 = icmp sgt i32 %1406, %1407
  br i1 %1408, label %1409, label %1418

1409:                                             ; preds = %1394
  %1410 = load double, ptr %67, align 8, !tbaa !11
  %1411 = load double, ptr %62, align 8, !tbaa !11
  %1412 = fmul double %1410, %1411
  %1413 = load ptr, ptr %22, align 8, !tbaa !5
  %1414 = load i32, ptr %59, align 4, !tbaa !9
  %1415 = sub nsw i32 %1414, 1
  %1416 = sext i32 %1415 to i64
  %1417 = getelementptr inbounds double, ptr %1413, i64 %1416
  store double %1412, ptr %1417, align 8, !tbaa !11
  br label %1418

1418:                                             ; preds = %1409, %1394
  %1419 = load double, ptr %63, align 8, !tbaa !11
  %1420 = load double, ptr %62, align 8, !tbaa !11
  %1421 = fmul double %1419, %1420
  store double %1421, ptr %39, align 8, !tbaa !11
  %1422 = load ptr, ptr %21, align 8, !tbaa !5
  %1423 = load i32, ptr %59, align 4, !tbaa !9
  %1424 = add nsw i32 %1423, 1
  %1425 = sext i32 %1424 to i64
  %1426 = getelementptr inbounds double, ptr %1422, i64 %1425
  %1427 = load double, ptr %1426, align 8, !tbaa !11
  %1428 = load double, ptr %74, align 8, !tbaa !11
  %1429 = fmul double %1427, %1428
  store double %1429, ptr %40, align 8, !tbaa !11
  %1430 = load ptr, ptr %21, align 8, !tbaa !5
  %1431 = load i32, ptr %59, align 4, !tbaa !9
  %1432 = sext i32 %1431 to i64
  %1433 = getelementptr inbounds double, ptr %1430, i64 %1432
  call void @dlartg_(ptr noundef %39, ptr noundef %40, ptr noundef %63, ptr noundef %67, ptr noundef %1433)
  %1434 = load double, ptr %72, align 8, !tbaa !11
  %1435 = load ptr, ptr %29, align 8, !tbaa !5
  %1436 = load i32, ptr %59, align 4, !tbaa !9
  %1437 = load i32, ptr %73, align 4, !tbaa !9
  %1438 = sub nsw i32 %1436, %1437
  %1439 = add nsw i32 %1438, 1
  %1440 = sext i32 %1439 to i64
  %1441 = getelementptr inbounds double, ptr %1435, i64 %1440
  store double %1434, ptr %1441, align 8, !tbaa !11
  %1442 = load double, ptr %74, align 8, !tbaa !11
  %1443 = load ptr, ptr %29, align 8, !tbaa !5
  %1444 = load i32, ptr %59, align 4, !tbaa !9
  %1445 = load i32, ptr %73, align 4, !tbaa !9
  %1446 = sub nsw i32 %1444, %1445
  %1447 = add nsw i32 %1446, 1
  %1448 = load i32, ptr %79, align 4, !tbaa !9
  %1449 = add nsw i32 %1447, %1448
  %1450 = sext i32 %1449 to i64
  %1451 = getelementptr inbounds double, ptr %1443, i64 %1450
  store double %1442, ptr %1451, align 8, !tbaa !11
  %1452 = load double, ptr %63, align 8, !tbaa !11
  %1453 = load ptr, ptr %29, align 8, !tbaa !5
  %1454 = load i32, ptr %59, align 4, !tbaa !9
  %1455 = load i32, ptr %73, align 4, !tbaa !9
  %1456 = sub nsw i32 %1454, %1455
  %1457 = add nsw i32 %1456, 1
  %1458 = load i32, ptr %81, align 4, !tbaa !9
  %1459 = add nsw i32 %1457, %1458
  %1460 = sext i32 %1459 to i64
  %1461 = getelementptr inbounds double, ptr %1453, i64 %1460
  store double %1452, ptr %1461, align 8, !tbaa !11
  %1462 = load double, ptr %67, align 8, !tbaa !11
  %1463 = load ptr, ptr %29, align 8, !tbaa !5
  %1464 = load i32, ptr %59, align 4, !tbaa !9
  %1465 = load i32, ptr %73, align 4, !tbaa !9
  %1466 = sub nsw i32 %1464, %1465
  %1467 = add nsw i32 %1466, 1
  %1468 = load i32, ptr %82, align 4, !tbaa !9
  %1469 = add nsw i32 %1467, %1468
  %1470 = sext i32 %1469 to i64
  %1471 = getelementptr inbounds double, ptr %1463, i64 %1470
  store double %1462, ptr %1471, align 8, !tbaa !11
  br label %1472

1472:                                             ; preds = %1418
  %1473 = load i32, ptr %59, align 4, !tbaa !9
  %1474 = add nsw i32 %1473, 1
  store i32 %1474, ptr %59, align 4, !tbaa !9
  br label %1390, !llvm.loop !21

1475:                                             ; preds = %1390
  %1476 = load ptr, ptr %21, align 8, !tbaa !5
  %1477 = load i32, ptr %61, align 4, !tbaa !9
  %1478 = sext i32 %1477 to i64
  %1479 = getelementptr inbounds double, ptr %1476, i64 %1478
  %1480 = load double, ptr %1479, align 8, !tbaa !11
  %1481 = load double, ptr %72, align 8, !tbaa !11
  %1482 = fmul double %1480, %1481
  store double %1482, ptr %58, align 8, !tbaa !11
  %1483 = load double, ptr %58, align 8, !tbaa !11
  %1484 = load double, ptr %63, align 8, !tbaa !11
  %1485 = fmul double %1483, %1484
  %1486 = load ptr, ptr %21, align 8, !tbaa !5
  %1487 = load i32, ptr %61, align 4, !tbaa !9
  %1488 = sext i32 %1487 to i64
  %1489 = getelementptr inbounds double, ptr %1486, i64 %1488
  store double %1485, ptr %1489, align 8, !tbaa !11
  %1490 = load double, ptr %58, align 8, !tbaa !11
  %1491 = load double, ptr %67, align 8, !tbaa !11
  %1492 = fmul double %1490, %1491
  %1493 = load ptr, ptr %22, align 8, !tbaa !5
  %1494 = load i32, ptr %61, align 4, !tbaa !9
  %1495 = sub nsw i32 %1494, 1
  %1496 = sext i32 %1495 to i64
  %1497 = getelementptr inbounds double, ptr %1493, i64 %1496
  store double %1492, ptr %1497, align 8, !tbaa !11
  %1498 = load ptr, ptr %18, align 8, !tbaa !5
  %1499 = load i32, ptr %1498, align 4, !tbaa !9
  %1500 = icmp sgt i32 %1499, 0
  br i1 %1500, label %1501, label %1521

1501:                                             ; preds = %1475
  %1502 = load i32, ptr %61, align 4, !tbaa !9
  %1503 = load i32, ptr %73, align 4, !tbaa !9
  %1504 = sub nsw i32 %1502, %1503
  %1505 = add nsw i32 %1504, 1
  store i32 %1505, ptr %37, align 4, !tbaa !9
  %1506 = load ptr, ptr %18, align 8, !tbaa !5
  %1507 = load ptr, ptr %29, align 8, !tbaa !5
  %1508 = getelementptr inbounds double, ptr %1507, i64 1
  %1509 = load ptr, ptr %29, align 8, !tbaa !5
  %1510 = load ptr, ptr %17, align 8, !tbaa !5
  %1511 = load i32, ptr %1510, align 4, !tbaa !9
  %1512 = sext i32 %1511 to i64
  %1513 = getelementptr inbounds double, ptr %1509, i64 %1512
  %1514 = load ptr, ptr %23, align 8, !tbaa !5
  %1515 = load i32, ptr %73, align 4, !tbaa !9
  %1516 = load i32, ptr %35, align 4, !tbaa !9
  %1517 = add nsw i32 %1515, %1516
  %1518 = sext i32 %1517 to i64
  %1519 = getelementptr inbounds %struct.doublecomplex, ptr %1514, i64 %1518
  %1520 = load ptr, ptr %24, align 8, !tbaa !5
  call void @zlasr_(ptr noundef @.str, ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %37, ptr noundef %1506, ptr noundef %1508, ptr noundef %1513, ptr noundef %1519, ptr noundef %1520)
  br label %1521

1521:                                             ; preds = %1501, %1475
  %1522 = load ptr, ptr %19, align 8, !tbaa !5
  %1523 = load i32, ptr %1522, align 4, !tbaa !9
  %1524 = icmp sgt i32 %1523, 0
  br i1 %1524, label %1525, label %1549

1525:                                             ; preds = %1521
  %1526 = load i32, ptr %61, align 4, !tbaa !9
  %1527 = load i32, ptr %73, align 4, !tbaa !9
  %1528 = sub nsw i32 %1526, %1527
  %1529 = add nsw i32 %1528, 1
  store i32 %1529, ptr %37, align 4, !tbaa !9
  %1530 = load ptr, ptr %19, align 8, !tbaa !5
  %1531 = load ptr, ptr %29, align 8, !tbaa !5
  %1532 = load i32, ptr %81, align 4, !tbaa !9
  %1533 = add nsw i32 %1532, 1
  %1534 = sext i32 %1533 to i64
  %1535 = getelementptr inbounds double, ptr %1531, i64 %1534
  %1536 = load ptr, ptr %29, align 8, !tbaa !5
  %1537 = load i32, ptr %82, align 4, !tbaa !9
  %1538 = add nsw i32 %1537, 1
  %1539 = sext i32 %1538 to i64
  %1540 = getelementptr inbounds double, ptr %1536, i64 %1539
  %1541 = load ptr, ptr %25, align 8, !tbaa !5
  %1542 = load i32, ptr %73, align 4, !tbaa !9
  %1543 = load i32, ptr %33, align 4, !tbaa !9
  %1544 = mul nsw i32 %1542, %1543
  %1545 = add nsw i32 %1544, 1
  %1546 = sext i32 %1545 to i64
  %1547 = getelementptr inbounds %struct.doublecomplex, ptr %1541, i64 %1546
  %1548 = load ptr, ptr %26, align 8, !tbaa !5
  call void @zlasr_(ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %1530, ptr noundef %37, ptr noundef %1535, ptr noundef %1540, ptr noundef %1547, ptr noundef %1548)
  br label %1549

1549:                                             ; preds = %1525, %1521
  %1550 = load ptr, ptr %20, align 8, !tbaa !5
  %1551 = load i32, ptr %1550, align 4, !tbaa !9
  %1552 = icmp sgt i32 %1551, 0
  br i1 %1552, label %1553, label %1576

1553:                                             ; preds = %1549
  %1554 = load i32, ptr %61, align 4, !tbaa !9
  %1555 = load i32, ptr %73, align 4, !tbaa !9
  %1556 = sub nsw i32 %1554, %1555
  %1557 = add nsw i32 %1556, 1
  store i32 %1557, ptr %37, align 4, !tbaa !9
  %1558 = load ptr, ptr %20, align 8, !tbaa !5
  %1559 = load ptr, ptr %29, align 8, !tbaa !5
  %1560 = load i32, ptr %81, align 4, !tbaa !9
  %1561 = add nsw i32 %1560, 1
  %1562 = sext i32 %1561 to i64
  %1563 = getelementptr inbounds double, ptr %1559, i64 %1562
  %1564 = load ptr, ptr %29, align 8, !tbaa !5
  %1565 = load i32, ptr %82, align 4, !tbaa !9
  %1566 = add nsw i32 %1565, 1
  %1567 = sext i32 %1566 to i64
  %1568 = getelementptr inbounds double, ptr %1564, i64 %1567
  %1569 = load ptr, ptr %27, align 8, !tbaa !5
  %1570 = load i32, ptr %73, align 4, !tbaa !9
  %1571 = load i32, ptr %31, align 4, !tbaa !9
  %1572 = add nsw i32 %1570, %1571
  %1573 = sext i32 %1572 to i64
  %1574 = getelementptr inbounds %struct.doublecomplex, ptr %1569, i64 %1573
  %1575 = load ptr, ptr %28, align 8, !tbaa !5
  call void @zlasr_(ptr noundef @.str, ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %37, ptr noundef %1558, ptr noundef %1563, ptr noundef %1568, ptr noundef %1574, ptr noundef %1575)
  br label %1576

1576:                                             ; preds = %1553, %1549
  %1577 = load ptr, ptr %22, align 8, !tbaa !5
  %1578 = load i32, ptr %61, align 4, !tbaa !9
  %1579 = sub nsw i32 %1578, 1
  %1580 = sext i32 %1579 to i64
  %1581 = getelementptr inbounds double, ptr %1577, i64 %1580
  %1582 = load double, ptr %1581, align 8, !tbaa !11
  store double %1582, ptr %39, align 8, !tbaa !11
  %1583 = load double, ptr %39, align 8, !tbaa !11
  %1584 = fcmp oge double %1583, 0.000000e+00
  br i1 %1584, label %1585, label %1587

1585:                                             ; preds = %1576
  %1586 = load double, ptr %39, align 8, !tbaa !11
  br label %1590

1587:                                             ; preds = %1576
  %1588 = load double, ptr %39, align 8, !tbaa !11
  %1589 = fneg double %1588
  br label %1590

1590:                                             ; preds = %1587, %1585
  %1591 = phi double [ %1586, %1585 ], [ %1589, %1587 ]
  %1592 = load double, ptr %77, align 8, !tbaa !11
  %1593 = fcmp ole double %1591, %1592
  br i1 %1593, label %1594, label %1600

1594:                                             ; preds = %1590
  %1595 = load ptr, ptr %22, align 8, !tbaa !5
  %1596 = load i32, ptr %61, align 4, !tbaa !9
  %1597 = sub nsw i32 %1596, 1
  %1598 = sext i32 %1597 to i64
  %1599 = getelementptr inbounds double, ptr %1595, i64 %1598
  store double 0.000000e+00, ptr %1599, align 8, !tbaa !11
  br label %1600

1600:                                             ; preds = %1594, %1590
  br label %1808

1601:                                             ; preds = %1383
  store double 1.000000e+00, ptr %72, align 8, !tbaa !11
  store double 1.000000e+00, ptr %63, align 8, !tbaa !11
  %1602 = load i32, ptr %73, align 4, !tbaa !9
  %1603 = add nsw i32 %1602, 1
  store i32 %1603, ptr %37, align 4, !tbaa !9
  %1604 = load i32, ptr %61, align 4, !tbaa !9
  store i32 %1604, ptr %59, align 4, !tbaa !9
  br label %1605

1605:                                             ; preds = %1685, %1601
  %1606 = load i32, ptr %59, align 4, !tbaa !9
  %1607 = load i32, ptr %37, align 4, !tbaa !9
  %1608 = icmp sge i32 %1606, %1607
  br i1 %1608, label %1609, label %1688

1609:                                             ; preds = %1605
  %1610 = load ptr, ptr %21, align 8, !tbaa !5
  %1611 = load i32, ptr %59, align 4, !tbaa !9
  %1612 = sext i32 %1611 to i64
  %1613 = getelementptr inbounds double, ptr %1610, i64 %1612
  %1614 = load double, ptr %1613, align 8, !tbaa !11
  %1615 = load double, ptr %72, align 8, !tbaa !11
  %1616 = fmul double %1614, %1615
  store double %1616, ptr %39, align 8, !tbaa !11
  %1617 = load ptr, ptr %22, align 8, !tbaa !5
  %1618 = load i32, ptr %59, align 4, !tbaa !9
  %1619 = sub nsw i32 %1618, 1
  %1620 = sext i32 %1619 to i64
  %1621 = getelementptr inbounds double, ptr %1617, i64 %1620
  call void @dlartg_(ptr noundef %39, ptr noundef %1621, ptr noundef %72, ptr noundef %74, ptr noundef %62)
  %1622 = load i32, ptr %59, align 4, !tbaa !9
  %1623 = load i32, ptr %61, align 4, !tbaa !9
  %1624 = icmp slt i32 %1622, %1623
  br i1 %1624, label %1625, label %1633

1625:                                             ; preds = %1609
  %1626 = load double, ptr %67, align 8, !tbaa !11
  %1627 = load double, ptr %62, align 8, !tbaa !11
  %1628 = fmul double %1626, %1627
  %1629 = load ptr, ptr %22, align 8, !tbaa !5
  %1630 = load i32, ptr %59, align 4, !tbaa !9
  %1631 = sext i32 %1630 to i64
  %1632 = getelementptr inbounds double, ptr %1629, i64 %1631
  store double %1628, ptr %1632, align 8, !tbaa !11
  br label %1633

1633:                                             ; preds = %1625, %1609
  %1634 = load double, ptr %63, align 8, !tbaa !11
  %1635 = load double, ptr %62, align 8, !tbaa !11
  %1636 = fmul double %1634, %1635
  store double %1636, ptr %39, align 8, !tbaa !11
  %1637 = load ptr, ptr %21, align 8, !tbaa !5
  %1638 = load i32, ptr %59, align 4, !tbaa !9
  %1639 = sub nsw i32 %1638, 1
  %1640 = sext i32 %1639 to i64
  %1641 = getelementptr inbounds double, ptr %1637, i64 %1640
  %1642 = load double, ptr %1641, align 8, !tbaa !11
  %1643 = load double, ptr %74, align 8, !tbaa !11
  %1644 = fmul double %1642, %1643
  store double %1644, ptr %40, align 8, !tbaa !11
  %1645 = load ptr, ptr %21, align 8, !tbaa !5
  %1646 = load i32, ptr %59, align 4, !tbaa !9
  %1647 = sext i32 %1646 to i64
  %1648 = getelementptr inbounds double, ptr %1645, i64 %1647
  call void @dlartg_(ptr noundef %39, ptr noundef %40, ptr noundef %63, ptr noundef %67, ptr noundef %1648)
  %1649 = load double, ptr %72, align 8, !tbaa !11
  %1650 = load ptr, ptr %29, align 8, !tbaa !5
  %1651 = load i32, ptr %59, align 4, !tbaa !9
  %1652 = load i32, ptr %73, align 4, !tbaa !9
  %1653 = sub nsw i32 %1651, %1652
  %1654 = sext i32 %1653 to i64
  %1655 = getelementptr inbounds double, ptr %1650, i64 %1654
  store double %1649, ptr %1655, align 8, !tbaa !11
  %1656 = load double, ptr %74, align 8, !tbaa !11
  %1657 = fneg double %1656
  %1658 = load ptr, ptr %29, align 8, !tbaa !5
  %1659 = load i32, ptr %59, align 4, !tbaa !9
  %1660 = load i32, ptr %73, align 4, !tbaa !9
  %1661 = sub nsw i32 %1659, %1660
  %1662 = load i32, ptr %79, align 4, !tbaa !9
  %1663 = add nsw i32 %1661, %1662
  %1664 = sext i32 %1663 to i64
  %1665 = getelementptr inbounds double, ptr %1658, i64 %1664
  store double %1657, ptr %1665, align 8, !tbaa !11
  %1666 = load double, ptr %63, align 8, !tbaa !11
  %1667 = load ptr, ptr %29, align 8, !tbaa !5
  %1668 = load i32, ptr %59, align 4, !tbaa !9
  %1669 = load i32, ptr %73, align 4, !tbaa !9
  %1670 = sub nsw i32 %1668, %1669
  %1671 = load i32, ptr %81, align 4, !tbaa !9
  %1672 = add nsw i32 %1670, %1671
  %1673 = sext i32 %1672 to i64
  %1674 = getelementptr inbounds double, ptr %1667, i64 %1673
  store double %1666, ptr %1674, align 8, !tbaa !11
  %1675 = load double, ptr %67, align 8, !tbaa !11
  %1676 = fneg double %1675
  %1677 = load ptr, ptr %29, align 8, !tbaa !5
  %1678 = load i32, ptr %59, align 4, !tbaa !9
  %1679 = load i32, ptr %73, align 4, !tbaa !9
  %1680 = sub nsw i32 %1678, %1679
  %1681 = load i32, ptr %82, align 4, !tbaa !9
  %1682 = add nsw i32 %1680, %1681
  %1683 = sext i32 %1682 to i64
  %1684 = getelementptr inbounds double, ptr %1677, i64 %1683
  store double %1676, ptr %1684, align 8, !tbaa !11
  br label %1685

1685:                                             ; preds = %1633
  %1686 = load i32, ptr %59, align 4, !tbaa !9
  %1687 = add nsw i32 %1686, -1
  store i32 %1687, ptr %59, align 4, !tbaa !9
  br label %1605, !llvm.loop !22

1688:                                             ; preds = %1605
  %1689 = load ptr, ptr %21, align 8, !tbaa !5
  %1690 = load i32, ptr %73, align 4, !tbaa !9
  %1691 = sext i32 %1690 to i64
  %1692 = getelementptr inbounds double, ptr %1689, i64 %1691
  %1693 = load double, ptr %1692, align 8, !tbaa !11
  %1694 = load double, ptr %72, align 8, !tbaa !11
  %1695 = fmul double %1693, %1694
  store double %1695, ptr %58, align 8, !tbaa !11
  %1696 = load double, ptr %58, align 8, !tbaa !11
  %1697 = load double, ptr %63, align 8, !tbaa !11
  %1698 = fmul double %1696, %1697
  %1699 = load ptr, ptr %21, align 8, !tbaa !5
  %1700 = load i32, ptr %73, align 4, !tbaa !9
  %1701 = sext i32 %1700 to i64
  %1702 = getelementptr inbounds double, ptr %1699, i64 %1701
  store double %1698, ptr %1702, align 8, !tbaa !11
  %1703 = load double, ptr %58, align 8, !tbaa !11
  %1704 = load double, ptr %67, align 8, !tbaa !11
  %1705 = fmul double %1703, %1704
  %1706 = load ptr, ptr %22, align 8, !tbaa !5
  %1707 = load i32, ptr %73, align 4, !tbaa !9
  %1708 = sext i32 %1707 to i64
  %1709 = getelementptr inbounds double, ptr %1706, i64 %1708
  store double %1705, ptr %1709, align 8, !tbaa !11
  %1710 = load ptr, ptr %18, align 8, !tbaa !5
  %1711 = load i32, ptr %1710, align 4, !tbaa !9
  %1712 = icmp sgt i32 %1711, 0
  br i1 %1712, label %1713, label %1736

1713:                                             ; preds = %1688
  %1714 = load i32, ptr %61, align 4, !tbaa !9
  %1715 = load i32, ptr %73, align 4, !tbaa !9
  %1716 = sub nsw i32 %1714, %1715
  %1717 = add nsw i32 %1716, 1
  store i32 %1717, ptr %37, align 4, !tbaa !9
  %1718 = load ptr, ptr %18, align 8, !tbaa !5
  %1719 = load ptr, ptr %29, align 8, !tbaa !5
  %1720 = load i32, ptr %81, align 4, !tbaa !9
  %1721 = add nsw i32 %1720, 1
  %1722 = sext i32 %1721 to i64
  %1723 = getelementptr inbounds double, ptr %1719, i64 %1722
  %1724 = load ptr, ptr %29, align 8, !tbaa !5
  %1725 = load i32, ptr %82, align 4, !tbaa !9
  %1726 = add nsw i32 %1725, 1
  %1727 = sext i32 %1726 to i64
  %1728 = getelementptr inbounds double, ptr %1724, i64 %1727
  %1729 = load ptr, ptr %23, align 8, !tbaa !5
  %1730 = load i32, ptr %73, align 4, !tbaa !9
  %1731 = load i32, ptr %35, align 4, !tbaa !9
  %1732 = add nsw i32 %1730, %1731
  %1733 = sext i32 %1732 to i64
  %1734 = getelementptr inbounds %struct.doublecomplex, ptr %1729, i64 %1733
  %1735 = load ptr, ptr %24, align 8, !tbaa !5
  call void @zlasr_(ptr noundef @.str, ptr noundef @.str.6, ptr noundef @.str.8, ptr noundef %37, ptr noundef %1718, ptr noundef %1723, ptr noundef %1728, ptr noundef %1734, ptr noundef %1735)
  br label %1736

1736:                                             ; preds = %1713, %1688
  %1737 = load ptr, ptr %19, align 8, !tbaa !5
  %1738 = load i32, ptr %1737, align 4, !tbaa !9
  %1739 = icmp sgt i32 %1738, 0
  br i1 %1739, label %1740, label %1761

1740:                                             ; preds = %1736
  %1741 = load i32, ptr %61, align 4, !tbaa !9
  %1742 = load i32, ptr %73, align 4, !tbaa !9
  %1743 = sub nsw i32 %1741, %1742
  %1744 = add nsw i32 %1743, 1
  store i32 %1744, ptr %37, align 4, !tbaa !9
  %1745 = load ptr, ptr %19, align 8, !tbaa !5
  %1746 = load ptr, ptr %29, align 8, !tbaa !5
  %1747 = getelementptr inbounds double, ptr %1746, i64 1
  %1748 = load ptr, ptr %29, align 8, !tbaa !5
  %1749 = load ptr, ptr %17, align 8, !tbaa !5
  %1750 = load i32, ptr %1749, align 4, !tbaa !9
  %1751 = sext i32 %1750 to i64
  %1752 = getelementptr inbounds double, ptr %1748, i64 %1751
  %1753 = load ptr, ptr %25, align 8, !tbaa !5
  %1754 = load i32, ptr %73, align 4, !tbaa !9
  %1755 = load i32, ptr %33, align 4, !tbaa !9
  %1756 = mul nsw i32 %1754, %1755
  %1757 = add nsw i32 %1756, 1
  %1758 = sext i32 %1757 to i64
  %1759 = getelementptr inbounds %struct.doublecomplex, ptr %1753, i64 %1758
  %1760 = load ptr, ptr %26, align 8, !tbaa !5
  call void @zlasr_(ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef @.str.8, ptr noundef %1745, ptr noundef %37, ptr noundef %1747, ptr noundef %1752, ptr noundef %1759, ptr noundef %1760)
  br label %1761

1761:                                             ; preds = %1740, %1736
  %1762 = load ptr, ptr %20, align 8, !tbaa !5
  %1763 = load i32, ptr %1762, align 4, !tbaa !9
  %1764 = icmp sgt i32 %1763, 0
  br i1 %1764, label %1765, label %1785

1765:                                             ; preds = %1761
  %1766 = load i32, ptr %61, align 4, !tbaa !9
  %1767 = load i32, ptr %73, align 4, !tbaa !9
  %1768 = sub nsw i32 %1766, %1767
  %1769 = add nsw i32 %1768, 1
  store i32 %1769, ptr %37, align 4, !tbaa !9
  %1770 = load ptr, ptr %20, align 8, !tbaa !5
  %1771 = load ptr, ptr %29, align 8, !tbaa !5
  %1772 = getelementptr inbounds double, ptr %1771, i64 1
  %1773 = load ptr, ptr %29, align 8, !tbaa !5
  %1774 = load ptr, ptr %17, align 8, !tbaa !5
  %1775 = load i32, ptr %1774, align 4, !tbaa !9
  %1776 = sext i32 %1775 to i64
  %1777 = getelementptr inbounds double, ptr %1773, i64 %1776
  %1778 = load ptr, ptr %27, align 8, !tbaa !5
  %1779 = load i32, ptr %73, align 4, !tbaa !9
  %1780 = load i32, ptr %31, align 4, !tbaa !9
  %1781 = add nsw i32 %1779, %1780
  %1782 = sext i32 %1781 to i64
  %1783 = getelementptr inbounds %struct.doublecomplex, ptr %1778, i64 %1782
  %1784 = load ptr, ptr %28, align 8, !tbaa !5
  call void @zlasr_(ptr noundef @.str, ptr noundef @.str.6, ptr noundef @.str.8, ptr noundef %37, ptr noundef %1770, ptr noundef %1772, ptr noundef %1777, ptr noundef %1783, ptr noundef %1784)
  br label %1785

1785:                                             ; preds = %1765, %1761
  %1786 = load ptr, ptr %22, align 8, !tbaa !5
  %1787 = load i32, ptr %73, align 4, !tbaa !9
  %1788 = sext i32 %1787 to i64
  %1789 = getelementptr inbounds double, ptr %1786, i64 %1788
  %1790 = load double, ptr %1789, align 8, !tbaa !11
  store double %1790, ptr %39, align 8, !tbaa !11
  %1791 = load double, ptr %39, align 8, !tbaa !11
  %1792 = fcmp oge double %1791, 0.000000e+00
  br i1 %1792, label %1793, label %1795

1793:                                             ; preds = %1785
  %1794 = load double, ptr %39, align 8, !tbaa !11
  br label %1798

1795:                                             ; preds = %1785
  %1796 = load double, ptr %39, align 8, !tbaa !11
  %1797 = fneg double %1796
  br label %1798

1798:                                             ; preds = %1795, %1793
  %1799 = phi double [ %1794, %1793 ], [ %1797, %1795 ]
  %1800 = load double, ptr %77, align 8, !tbaa !11
  %1801 = fcmp ole double %1799, %1800
  br i1 %1801, label %1802, label %1807

1802:                                             ; preds = %1798
  %1803 = load ptr, ptr %22, align 8, !tbaa !5
  %1804 = load i32, ptr %73, align 4, !tbaa !9
  %1805 = sext i32 %1804 to i64
  %1806 = getelementptr inbounds double, ptr %1803, i64 %1805
  store double 0.000000e+00, ptr %1806, align 8, !tbaa !11
  br label %1807

1807:                                             ; preds = %1802, %1798
  br label %1808

1808:                                             ; preds = %1807, %1600
  br label %2514

1809:                                             ; preds = %1375
  %1810 = load i32, ptr %44, align 4, !tbaa !9
  %1811 = icmp eq i32 %1810, 1
  br i1 %1811, label %1812, label %2164

1812:                                             ; preds = %1809
  %1813 = load ptr, ptr %21, align 8, !tbaa !5
  %1814 = load i32, ptr %73, align 4, !tbaa !9
  %1815 = sext i32 %1814 to i64
  %1816 = getelementptr inbounds double, ptr %1813, i64 %1815
  %1817 = load double, ptr %1816, align 8, !tbaa !11
  store double %1817, ptr %39, align 8, !tbaa !11
  %1818 = load double, ptr %39, align 8, !tbaa !11
  %1819 = fcmp oge double %1818, 0.000000e+00
  br i1 %1819, label %1820, label %1822

1820:                                             ; preds = %1812
  %1821 = load double, ptr %39, align 8, !tbaa !11
  br label %1825

1822:                                             ; preds = %1812
  %1823 = load double, ptr %39, align 8, !tbaa !11
  %1824 = fneg double %1823
  br label %1825

1825:                                             ; preds = %1822, %1820
  %1826 = phi double [ %1821, %1820 ], [ %1824, %1822 ]
  %1827 = load double, ptr %65, align 8, !tbaa !11
  %1828 = fsub double %1826, %1827
  %1829 = load ptr, ptr %21, align 8, !tbaa !5
  %1830 = load i32, ptr %73, align 4, !tbaa !9
  %1831 = sext i32 %1830 to i64
  %1832 = getelementptr inbounds double, ptr %1829, i64 %1831
  %1833 = load double, ptr %1832, align 8, !tbaa !11
  %1834 = fcmp oge double %1833, 0.000000e+00
  br i1 %1834, label %1835, label %1845

1835:                                             ; preds = %1825
  %1836 = load double, ptr @c_b49, align 8, !tbaa !11
  %1837 = fcmp oge double %1836, 0.000000e+00
  br i1 %1837, label %1838, label %1840

1838:                                             ; preds = %1835
  %1839 = load double, ptr @c_b49, align 8, !tbaa !11
  br label %1843

1840:                                             ; preds = %1835
  %1841 = load double, ptr @c_b49, align 8, !tbaa !11
  %1842 = fneg double %1841
  br label %1843

1843:                                             ; preds = %1840, %1838
  %1844 = phi double [ %1839, %1838 ], [ %1842, %1840 ]
  br label %1856

1845:                                             ; preds = %1825
  %1846 = load double, ptr @c_b49, align 8, !tbaa !11
  %1847 = fcmp oge double %1846, 0.000000e+00
  br i1 %1847, label %1848, label %1850

1848:                                             ; preds = %1845
  %1849 = load double, ptr @c_b49, align 8, !tbaa !11
  br label %1853

1850:                                             ; preds = %1845
  %1851 = load double, ptr @c_b49, align 8, !tbaa !11
  %1852 = fneg double %1851
  br label %1853

1853:                                             ; preds = %1850, %1848
  %1854 = phi double [ %1849, %1848 ], [ %1852, %1850 ]
  %1855 = fneg double %1854
  br label %1856

1856:                                             ; preds = %1853, %1843
  %1857 = phi double [ %1844, %1843 ], [ %1855, %1853 ]
  %1858 = load double, ptr %65, align 8, !tbaa !11
  %1859 = load ptr, ptr %21, align 8, !tbaa !5
  %1860 = load i32, ptr %73, align 4, !tbaa !9
  %1861 = sext i32 %1860 to i64
  %1862 = getelementptr inbounds double, ptr %1859, i64 %1861
  %1863 = load double, ptr %1862, align 8, !tbaa !11
  %1864 = fdiv double %1858, %1863
  %1865 = fadd double %1857, %1864
  %1866 = fmul double %1828, %1865
  store double %1866, ptr %56, align 8, !tbaa !11
  %1867 = load ptr, ptr %22, align 8, !tbaa !5
  %1868 = load i32, ptr %73, align 4, !tbaa !9
  %1869 = sext i32 %1868 to i64
  %1870 = getelementptr inbounds double, ptr %1867, i64 %1869
  %1871 = load double, ptr %1870, align 8, !tbaa !11
  store double %1871, ptr %57, align 8, !tbaa !11
  %1872 = load i32, ptr %61, align 4, !tbaa !9
  %1873 = sub nsw i32 %1872, 1
  store i32 %1873, ptr %37, align 4, !tbaa !9
  %1874 = load i32, ptr %73, align 4, !tbaa !9
  store i32 %1874, ptr %59, align 4, !tbaa !9
  br label %1875

1875:                                             ; preds = %2051, %1856
  %1876 = load i32, ptr %59, align 4, !tbaa !9
  %1877 = load i32, ptr %37, align 4, !tbaa !9
  %1878 = icmp sle i32 %1876, %1877
  br i1 %1878, label %1879, label %2054

1879:                                             ; preds = %1875
  call void @dlartg_(ptr noundef %56, ptr noundef %57, ptr noundef %52, ptr noundef %55, ptr noundef %62)
  %1880 = load i32, ptr %59, align 4, !tbaa !9
  %1881 = load i32, ptr %73, align 4, !tbaa !9
  %1882 = icmp sgt i32 %1880, %1881
  br i1 %1882, label %1883, label %1890

1883:                                             ; preds = %1879
  %1884 = load double, ptr %62, align 8, !tbaa !11
  %1885 = load ptr, ptr %22, align 8, !tbaa !5
  %1886 = load i32, ptr %59, align 4, !tbaa !9
  %1887 = sub nsw i32 %1886, 1
  %1888 = sext i32 %1887 to i64
  %1889 = getelementptr inbounds double, ptr %1885, i64 %1888
  store double %1884, ptr %1889, align 8, !tbaa !11
  br label %1890

1890:                                             ; preds = %1883, %1879
  %1891 = load double, ptr %52, align 8, !tbaa !11
  %1892 = load ptr, ptr %21, align 8, !tbaa !5
  %1893 = load i32, ptr %59, align 4, !tbaa !9
  %1894 = sext i32 %1893 to i64
  %1895 = getelementptr inbounds double, ptr %1892, i64 %1894
  %1896 = load double, ptr %1895, align 8, !tbaa !11
  %1897 = load double, ptr %55, align 8, !tbaa !11
  %1898 = load ptr, ptr %22, align 8, !tbaa !5
  %1899 = load i32, ptr %59, align 4, !tbaa !9
  %1900 = sext i32 %1899 to i64
  %1901 = getelementptr inbounds double, ptr %1898, i64 %1900
  %1902 = load double, ptr %1901, align 8, !tbaa !11
  %1903 = fmul double %1897, %1902
  %1904 = call double @llvm.fmuladd.f64(double %1891, double %1896, double %1903)
  store double %1904, ptr %56, align 8, !tbaa !11
  %1905 = load double, ptr %52, align 8, !tbaa !11
  %1906 = load ptr, ptr %22, align 8, !tbaa !5
  %1907 = load i32, ptr %59, align 4, !tbaa !9
  %1908 = sext i32 %1907 to i64
  %1909 = getelementptr inbounds double, ptr %1906, i64 %1908
  %1910 = load double, ptr %1909, align 8, !tbaa !11
  %1911 = load double, ptr %55, align 8, !tbaa !11
  %1912 = load ptr, ptr %21, align 8, !tbaa !5
  %1913 = load i32, ptr %59, align 4, !tbaa !9
  %1914 = sext i32 %1913 to i64
  %1915 = getelementptr inbounds double, ptr %1912, i64 %1914
  %1916 = load double, ptr %1915, align 8, !tbaa !11
  %1917 = fmul double %1911, %1916
  %1918 = fneg double %1917
  %1919 = call double @llvm.fmuladd.f64(double %1905, double %1910, double %1918)
  %1920 = load ptr, ptr %22, align 8, !tbaa !5
  %1921 = load i32, ptr %59, align 4, !tbaa !9
  %1922 = sext i32 %1921 to i64
  %1923 = getelementptr inbounds double, ptr %1920, i64 %1922
  store double %1919, ptr %1923, align 8, !tbaa !11
  %1924 = load double, ptr %55, align 8, !tbaa !11
  %1925 = load ptr, ptr %21, align 8, !tbaa !5
  %1926 = load i32, ptr %59, align 4, !tbaa !9
  %1927 = add nsw i32 %1926, 1
  %1928 = sext i32 %1927 to i64
  %1929 = getelementptr inbounds double, ptr %1925, i64 %1928
  %1930 = load double, ptr %1929, align 8, !tbaa !11
  %1931 = fmul double %1924, %1930
  store double %1931, ptr %57, align 8, !tbaa !11
  %1932 = load double, ptr %52, align 8, !tbaa !11
  %1933 = load ptr, ptr %21, align 8, !tbaa !5
  %1934 = load i32, ptr %59, align 4, !tbaa !9
  %1935 = add nsw i32 %1934, 1
  %1936 = sext i32 %1935 to i64
  %1937 = getelementptr inbounds double, ptr %1933, i64 %1936
  %1938 = load double, ptr %1937, align 8, !tbaa !11
  %1939 = fmul double %1932, %1938
  %1940 = load ptr, ptr %21, align 8, !tbaa !5
  %1941 = load i32, ptr %59, align 4, !tbaa !9
  %1942 = add nsw i32 %1941, 1
  %1943 = sext i32 %1942 to i64
  %1944 = getelementptr inbounds double, ptr %1940, i64 %1943
  store double %1939, ptr %1944, align 8, !tbaa !11
  call void @dlartg_(ptr noundef %56, ptr noundef %57, ptr noundef %47, ptr noundef %51, ptr noundef %62)
  %1945 = load double, ptr %62, align 8, !tbaa !11
  %1946 = load ptr, ptr %21, align 8, !tbaa !5
  %1947 = load i32, ptr %59, align 4, !tbaa !9
  %1948 = sext i32 %1947 to i64
  %1949 = getelementptr inbounds double, ptr %1946, i64 %1948
  store double %1945, ptr %1949, align 8, !tbaa !11
  %1950 = load double, ptr %47, align 8, !tbaa !11
  %1951 = load ptr, ptr %22, align 8, !tbaa !5
  %1952 = load i32, ptr %59, align 4, !tbaa !9
  %1953 = sext i32 %1952 to i64
  %1954 = getelementptr inbounds double, ptr %1951, i64 %1953
  %1955 = load double, ptr %1954, align 8, !tbaa !11
  %1956 = load double, ptr %51, align 8, !tbaa !11
  %1957 = load ptr, ptr %21, align 8, !tbaa !5
  %1958 = load i32, ptr %59, align 4, !tbaa !9
  %1959 = add nsw i32 %1958, 1
  %1960 = sext i32 %1959 to i64
  %1961 = getelementptr inbounds double, ptr %1957, i64 %1960
  %1962 = load double, ptr %1961, align 8, !tbaa !11
  %1963 = fmul double %1956, %1962
  %1964 = call double @llvm.fmuladd.f64(double %1950, double %1955, double %1963)
  store double %1964, ptr %56, align 8, !tbaa !11
  %1965 = load double, ptr %47, align 8, !tbaa !11
  %1966 = load ptr, ptr %21, align 8, !tbaa !5
  %1967 = load i32, ptr %59, align 4, !tbaa !9
  %1968 = add nsw i32 %1967, 1
  %1969 = sext i32 %1968 to i64
  %1970 = getelementptr inbounds double, ptr %1966, i64 %1969
  %1971 = load double, ptr %1970, align 8, !tbaa !11
  %1972 = load double, ptr %51, align 8, !tbaa !11
  %1973 = load ptr, ptr %22, align 8, !tbaa !5
  %1974 = load i32, ptr %59, align 4, !tbaa !9
  %1975 = sext i32 %1974 to i64
  %1976 = getelementptr inbounds double, ptr %1973, i64 %1975
  %1977 = load double, ptr %1976, align 8, !tbaa !11
  %1978 = fmul double %1972, %1977
  %1979 = fneg double %1978
  %1980 = call double @llvm.fmuladd.f64(double %1965, double %1971, double %1979)
  %1981 = load ptr, ptr %21, align 8, !tbaa !5
  %1982 = load i32, ptr %59, align 4, !tbaa !9
  %1983 = add nsw i32 %1982, 1
  %1984 = sext i32 %1983 to i64
  %1985 = getelementptr inbounds double, ptr %1981, i64 %1984
  store double %1980, ptr %1985, align 8, !tbaa !11
  %1986 = load i32, ptr %59, align 4, !tbaa !9
  %1987 = load i32, ptr %61, align 4, !tbaa !9
  %1988 = sub nsw i32 %1987, 1
  %1989 = icmp slt i32 %1986, %1988
  br i1 %1989, label %1990, label %2012

1990:                                             ; preds = %1890
  %1991 = load double, ptr %51, align 8, !tbaa !11
  %1992 = load ptr, ptr %22, align 8, !tbaa !5
  %1993 = load i32, ptr %59, align 4, !tbaa !9
  %1994 = add nsw i32 %1993, 1
  %1995 = sext i32 %1994 to i64
  %1996 = getelementptr inbounds double, ptr %1992, i64 %1995
  %1997 = load double, ptr %1996, align 8, !tbaa !11
  %1998 = fmul double %1991, %1997
  store double %1998, ptr %57, align 8, !tbaa !11
  %1999 = load double, ptr %47, align 8, !tbaa !11
  %2000 = load ptr, ptr %22, align 8, !tbaa !5
  %2001 = load i32, ptr %59, align 4, !tbaa !9
  %2002 = add nsw i32 %2001, 1
  %2003 = sext i32 %2002 to i64
  %2004 = getelementptr inbounds double, ptr %2000, i64 %2003
  %2005 = load double, ptr %2004, align 8, !tbaa !11
  %2006 = fmul double %1999, %2005
  %2007 = load ptr, ptr %22, align 8, !tbaa !5
  %2008 = load i32, ptr %59, align 4, !tbaa !9
  %2009 = add nsw i32 %2008, 1
  %2010 = sext i32 %2009 to i64
  %2011 = getelementptr inbounds double, ptr %2007, i64 %2010
  store double %2006, ptr %2011, align 8, !tbaa !11
  br label %2012

2012:                                             ; preds = %1990, %1890
  %2013 = load double, ptr %52, align 8, !tbaa !11
  %2014 = load ptr, ptr %29, align 8, !tbaa !5
  %2015 = load i32, ptr %59, align 4, !tbaa !9
  %2016 = load i32, ptr %73, align 4, !tbaa !9
  %2017 = sub nsw i32 %2015, %2016
  %2018 = add nsw i32 %2017, 1
  %2019 = sext i32 %2018 to i64
  %2020 = getelementptr inbounds double, ptr %2014, i64 %2019
  store double %2013, ptr %2020, align 8, !tbaa !11
  %2021 = load double, ptr %55, align 8, !tbaa !11
  %2022 = load ptr, ptr %29, align 8, !tbaa !5
  %2023 = load i32, ptr %59, align 4, !tbaa !9
  %2024 = load i32, ptr %73, align 4, !tbaa !9
  %2025 = sub nsw i32 %2023, %2024
  %2026 = add nsw i32 %2025, 1
  %2027 = load i32, ptr %79, align 4, !tbaa !9
  %2028 = add nsw i32 %2026, %2027
  %2029 = sext i32 %2028 to i64
  %2030 = getelementptr inbounds double, ptr %2022, i64 %2029
  store double %2021, ptr %2030, align 8, !tbaa !11
  %2031 = load double, ptr %47, align 8, !tbaa !11
  %2032 = load ptr, ptr %29, align 8, !tbaa !5
  %2033 = load i32, ptr %59, align 4, !tbaa !9
  %2034 = load i32, ptr %73, align 4, !tbaa !9
  %2035 = sub nsw i32 %2033, %2034
  %2036 = add nsw i32 %2035, 1
  %2037 = load i32, ptr %81, align 4, !tbaa !9
  %2038 = add nsw i32 %2036, %2037
  %2039 = sext i32 %2038 to i64
  %2040 = getelementptr inbounds double, ptr %2032, i64 %2039
  store double %2031, ptr %2040, align 8, !tbaa !11
  %2041 = load double, ptr %51, align 8, !tbaa !11
  %2042 = load ptr, ptr %29, align 8, !tbaa !5
  %2043 = load i32, ptr %59, align 4, !tbaa !9
  %2044 = load i32, ptr %73, align 4, !tbaa !9
  %2045 = sub nsw i32 %2043, %2044
  %2046 = add nsw i32 %2045, 1
  %2047 = load i32, ptr %82, align 4, !tbaa !9
  %2048 = add nsw i32 %2046, %2047
  %2049 = sext i32 %2048 to i64
  %2050 = getelementptr inbounds double, ptr %2042, i64 %2049
  store double %2041, ptr %2050, align 8, !tbaa !11
  br label %2051

2051:                                             ; preds = %2012
  %2052 = load i32, ptr %59, align 4, !tbaa !9
  %2053 = add nsw i32 %2052, 1
  store i32 %2053, ptr %59, align 4, !tbaa !9
  br label %1875, !llvm.loop !23

2054:                                             ; preds = %1875
  %2055 = load double, ptr %56, align 8, !tbaa !11
  %2056 = load ptr, ptr %22, align 8, !tbaa !5
  %2057 = load i32, ptr %61, align 4, !tbaa !9
  %2058 = sub nsw i32 %2057, 1
  %2059 = sext i32 %2058 to i64
  %2060 = getelementptr inbounds double, ptr %2056, i64 %2059
  store double %2055, ptr %2060, align 8, !tbaa !11
  %2061 = load ptr, ptr %18, align 8, !tbaa !5
  %2062 = load i32, ptr %2061, align 4, !tbaa !9
  %2063 = icmp sgt i32 %2062, 0
  br i1 %2063, label %2064, label %2084

2064:                                             ; preds = %2054
  %2065 = load i32, ptr %61, align 4, !tbaa !9
  %2066 = load i32, ptr %73, align 4, !tbaa !9
  %2067 = sub nsw i32 %2065, %2066
  %2068 = add nsw i32 %2067, 1
  store i32 %2068, ptr %37, align 4, !tbaa !9
  %2069 = load ptr, ptr %18, align 8, !tbaa !5
  %2070 = load ptr, ptr %29, align 8, !tbaa !5
  %2071 = getelementptr inbounds double, ptr %2070, i64 1
  %2072 = load ptr, ptr %29, align 8, !tbaa !5
  %2073 = load ptr, ptr %17, align 8, !tbaa !5
  %2074 = load i32, ptr %2073, align 4, !tbaa !9
  %2075 = sext i32 %2074 to i64
  %2076 = getelementptr inbounds double, ptr %2072, i64 %2075
  %2077 = load ptr, ptr %23, align 8, !tbaa !5
  %2078 = load i32, ptr %73, align 4, !tbaa !9
  %2079 = load i32, ptr %35, align 4, !tbaa !9
  %2080 = add nsw i32 %2078, %2079
  %2081 = sext i32 %2080 to i64
  %2082 = getelementptr inbounds %struct.doublecomplex, ptr %2077, i64 %2081
  %2083 = load ptr, ptr %24, align 8, !tbaa !5
  call void @zlasr_(ptr noundef @.str, ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %37, ptr noundef %2069, ptr noundef %2071, ptr noundef %2076, ptr noundef %2082, ptr noundef %2083)
  br label %2084

2084:                                             ; preds = %2064, %2054
  %2085 = load ptr, ptr %19, align 8, !tbaa !5
  %2086 = load i32, ptr %2085, align 4, !tbaa !9
  %2087 = icmp sgt i32 %2086, 0
  br i1 %2087, label %2088, label %2112

2088:                                             ; preds = %2084
  %2089 = load i32, ptr %61, align 4, !tbaa !9
  %2090 = load i32, ptr %73, align 4, !tbaa !9
  %2091 = sub nsw i32 %2089, %2090
  %2092 = add nsw i32 %2091, 1
  store i32 %2092, ptr %37, align 4, !tbaa !9
  %2093 = load ptr, ptr %19, align 8, !tbaa !5
  %2094 = load ptr, ptr %29, align 8, !tbaa !5
  %2095 = load i32, ptr %81, align 4, !tbaa !9
  %2096 = add nsw i32 %2095, 1
  %2097 = sext i32 %2096 to i64
  %2098 = getelementptr inbounds double, ptr %2094, i64 %2097
  %2099 = load ptr, ptr %29, align 8, !tbaa !5
  %2100 = load i32, ptr %82, align 4, !tbaa !9
  %2101 = add nsw i32 %2100, 1
  %2102 = sext i32 %2101 to i64
  %2103 = getelementptr inbounds double, ptr %2099, i64 %2102
  %2104 = load ptr, ptr %25, align 8, !tbaa !5
  %2105 = load i32, ptr %73, align 4, !tbaa !9
  %2106 = load i32, ptr %33, align 4, !tbaa !9
  %2107 = mul nsw i32 %2105, %2106
  %2108 = add nsw i32 %2107, 1
  %2109 = sext i32 %2108 to i64
  %2110 = getelementptr inbounds %struct.doublecomplex, ptr %2104, i64 %2109
  %2111 = load ptr, ptr %26, align 8, !tbaa !5
  call void @zlasr_(ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %2093, ptr noundef %37, ptr noundef %2098, ptr noundef %2103, ptr noundef %2110, ptr noundef %2111)
  br label %2112

2112:                                             ; preds = %2088, %2084
  %2113 = load ptr, ptr %20, align 8, !tbaa !5
  %2114 = load i32, ptr %2113, align 4, !tbaa !9
  %2115 = icmp sgt i32 %2114, 0
  br i1 %2115, label %2116, label %2139

2116:                                             ; preds = %2112
  %2117 = load i32, ptr %61, align 4, !tbaa !9
  %2118 = load i32, ptr %73, align 4, !tbaa !9
  %2119 = sub nsw i32 %2117, %2118
  %2120 = add nsw i32 %2119, 1
  store i32 %2120, ptr %37, align 4, !tbaa !9
  %2121 = load ptr, ptr %20, align 8, !tbaa !5
  %2122 = load ptr, ptr %29, align 8, !tbaa !5
  %2123 = load i32, ptr %81, align 4, !tbaa !9
  %2124 = add nsw i32 %2123, 1
  %2125 = sext i32 %2124 to i64
  %2126 = getelementptr inbounds double, ptr %2122, i64 %2125
  %2127 = load ptr, ptr %29, align 8, !tbaa !5
  %2128 = load i32, ptr %82, align 4, !tbaa !9
  %2129 = add nsw i32 %2128, 1
  %2130 = sext i32 %2129 to i64
  %2131 = getelementptr inbounds double, ptr %2127, i64 %2130
  %2132 = load ptr, ptr %27, align 8, !tbaa !5
  %2133 = load i32, ptr %73, align 4, !tbaa !9
  %2134 = load i32, ptr %31, align 4, !tbaa !9
  %2135 = add nsw i32 %2133, %2134
  %2136 = sext i32 %2135 to i64
  %2137 = getelementptr inbounds %struct.doublecomplex, ptr %2132, i64 %2136
  %2138 = load ptr, ptr %28, align 8, !tbaa !5
  call void @zlasr_(ptr noundef @.str, ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %37, ptr noundef %2121, ptr noundef %2126, ptr noundef %2131, ptr noundef %2137, ptr noundef %2138)
  br label %2139

2139:                                             ; preds = %2116, %2112
  %2140 = load ptr, ptr %22, align 8, !tbaa !5
  %2141 = load i32, ptr %61, align 4, !tbaa !9
  %2142 = sub nsw i32 %2141, 1
  %2143 = sext i32 %2142 to i64
  %2144 = getelementptr inbounds double, ptr %2140, i64 %2143
  %2145 = load double, ptr %2144, align 8, !tbaa !11
  store double %2145, ptr %39, align 8, !tbaa !11
  %2146 = load double, ptr %39, align 8, !tbaa !11
  %2147 = fcmp oge double %2146, 0.000000e+00
  br i1 %2147, label %2148, label %2150

2148:                                             ; preds = %2139
  %2149 = load double, ptr %39, align 8, !tbaa !11
  br label %2153

2150:                                             ; preds = %2139
  %2151 = load double, ptr %39, align 8, !tbaa !11
  %2152 = fneg double %2151
  br label %2153

2153:                                             ; preds = %2150, %2148
  %2154 = phi double [ %2149, %2148 ], [ %2152, %2150 ]
  %2155 = load double, ptr %77, align 8, !tbaa !11
  %2156 = fcmp ole double %2154, %2155
  br i1 %2156, label %2157, label %2163

2157:                                             ; preds = %2153
  %2158 = load ptr, ptr %22, align 8, !tbaa !5
  %2159 = load i32, ptr %61, align 4, !tbaa !9
  %2160 = sub nsw i32 %2159, 1
  %2161 = sext i32 %2160 to i64
  %2162 = getelementptr inbounds double, ptr %2158, i64 %2161
  store double 0.000000e+00, ptr %2162, align 8, !tbaa !11
  br label %2163

2163:                                             ; preds = %2157, %2153
  br label %2513

2164:                                             ; preds = %1809
  %2165 = load ptr, ptr %21, align 8, !tbaa !5
  %2166 = load i32, ptr %61, align 4, !tbaa !9
  %2167 = sext i32 %2166 to i64
  %2168 = getelementptr inbounds double, ptr %2165, i64 %2167
  %2169 = load double, ptr %2168, align 8, !tbaa !11
  store double %2169, ptr %39, align 8, !tbaa !11
  %2170 = load double, ptr %39, align 8, !tbaa !11
  %2171 = fcmp oge double %2170, 0.000000e+00
  br i1 %2171, label %2172, label %2174

2172:                                             ; preds = %2164
  %2173 = load double, ptr %39, align 8, !tbaa !11
  br label %2177

2174:                                             ; preds = %2164
  %2175 = load double, ptr %39, align 8, !tbaa !11
  %2176 = fneg double %2175
  br label %2177

2177:                                             ; preds = %2174, %2172
  %2178 = phi double [ %2173, %2172 ], [ %2176, %2174 ]
  %2179 = load double, ptr %65, align 8, !tbaa !11
  %2180 = fsub double %2178, %2179
  %2181 = load ptr, ptr %21, align 8, !tbaa !5
  %2182 = load i32, ptr %61, align 4, !tbaa !9
  %2183 = sext i32 %2182 to i64
  %2184 = getelementptr inbounds double, ptr %2181, i64 %2183
  %2185 = load double, ptr %2184, align 8, !tbaa !11
  %2186 = fcmp oge double %2185, 0.000000e+00
  br i1 %2186, label %2187, label %2197

2187:                                             ; preds = %2177
  %2188 = load double, ptr @c_b49, align 8, !tbaa !11
  %2189 = fcmp oge double %2188, 0.000000e+00
  br i1 %2189, label %2190, label %2192

2190:                                             ; preds = %2187
  %2191 = load double, ptr @c_b49, align 8, !tbaa !11
  br label %2195

2192:                                             ; preds = %2187
  %2193 = load double, ptr @c_b49, align 8, !tbaa !11
  %2194 = fneg double %2193
  br label %2195

2195:                                             ; preds = %2192, %2190
  %2196 = phi double [ %2191, %2190 ], [ %2194, %2192 ]
  br label %2208

2197:                                             ; preds = %2177
  %2198 = load double, ptr @c_b49, align 8, !tbaa !11
  %2199 = fcmp oge double %2198, 0.000000e+00
  br i1 %2199, label %2200, label %2202

2200:                                             ; preds = %2197
  %2201 = load double, ptr @c_b49, align 8, !tbaa !11
  br label %2205

2202:                                             ; preds = %2197
  %2203 = load double, ptr @c_b49, align 8, !tbaa !11
  %2204 = fneg double %2203
  br label %2205

2205:                                             ; preds = %2202, %2200
  %2206 = phi double [ %2201, %2200 ], [ %2204, %2202 ]
  %2207 = fneg double %2206
  br label %2208

2208:                                             ; preds = %2205, %2195
  %2209 = phi double [ %2196, %2195 ], [ %2207, %2205 ]
  %2210 = load double, ptr %65, align 8, !tbaa !11
  %2211 = load ptr, ptr %21, align 8, !tbaa !5
  %2212 = load i32, ptr %61, align 4, !tbaa !9
  %2213 = sext i32 %2212 to i64
  %2214 = getelementptr inbounds double, ptr %2211, i64 %2213
  %2215 = load double, ptr %2214, align 8, !tbaa !11
  %2216 = fdiv double %2210, %2215
  %2217 = fadd double %2209, %2216
  %2218 = fmul double %2180, %2217
  store double %2218, ptr %56, align 8, !tbaa !11
  %2219 = load ptr, ptr %22, align 8, !tbaa !5
  %2220 = load i32, ptr %61, align 4, !tbaa !9
  %2221 = sub nsw i32 %2220, 1
  %2222 = sext i32 %2221 to i64
  %2223 = getelementptr inbounds double, ptr %2219, i64 %2222
  %2224 = load double, ptr %2223, align 8, !tbaa !11
  store double %2224, ptr %57, align 8, !tbaa !11
  %2225 = load i32, ptr %73, align 4, !tbaa !9
  %2226 = add nsw i32 %2225, 1
  store i32 %2226, ptr %37, align 4, !tbaa !9
  %2227 = load i32, ptr %61, align 4, !tbaa !9
  store i32 %2227, ptr %59, align 4, !tbaa !9
  br label %2228

2228:                                             ; preds = %2406, %2208
  %2229 = load i32, ptr %59, align 4, !tbaa !9
  %2230 = load i32, ptr %37, align 4, !tbaa !9
  %2231 = icmp sge i32 %2229, %2230
  br i1 %2231, label %2232, label %2409

2232:                                             ; preds = %2228
  call void @dlartg_(ptr noundef %56, ptr noundef %57, ptr noundef %52, ptr noundef %55, ptr noundef %62)
  %2233 = load i32, ptr %59, align 4, !tbaa !9
  %2234 = load i32, ptr %61, align 4, !tbaa !9
  %2235 = icmp slt i32 %2233, %2234
  br i1 %2235, label %2236, label %2242

2236:                                             ; preds = %2232
  %2237 = load double, ptr %62, align 8, !tbaa !11
  %2238 = load ptr, ptr %22, align 8, !tbaa !5
  %2239 = load i32, ptr %59, align 4, !tbaa !9
  %2240 = sext i32 %2239 to i64
  %2241 = getelementptr inbounds double, ptr %2238, i64 %2240
  store double %2237, ptr %2241, align 8, !tbaa !11
  br label %2242

2242:                                             ; preds = %2236, %2232
  %2243 = load double, ptr %52, align 8, !tbaa !11
  %2244 = load ptr, ptr %21, align 8, !tbaa !5
  %2245 = load i32, ptr %59, align 4, !tbaa !9
  %2246 = sext i32 %2245 to i64
  %2247 = getelementptr inbounds double, ptr %2244, i64 %2246
  %2248 = load double, ptr %2247, align 8, !tbaa !11
  %2249 = load double, ptr %55, align 8, !tbaa !11
  %2250 = load ptr, ptr %22, align 8, !tbaa !5
  %2251 = load i32, ptr %59, align 4, !tbaa !9
  %2252 = sub nsw i32 %2251, 1
  %2253 = sext i32 %2252 to i64
  %2254 = getelementptr inbounds double, ptr %2250, i64 %2253
  %2255 = load double, ptr %2254, align 8, !tbaa !11
  %2256 = fmul double %2249, %2255
  %2257 = call double @llvm.fmuladd.f64(double %2243, double %2248, double %2256)
  store double %2257, ptr %56, align 8, !tbaa !11
  %2258 = load double, ptr %52, align 8, !tbaa !11
  %2259 = load ptr, ptr %22, align 8, !tbaa !5
  %2260 = load i32, ptr %59, align 4, !tbaa !9
  %2261 = sub nsw i32 %2260, 1
  %2262 = sext i32 %2261 to i64
  %2263 = getelementptr inbounds double, ptr %2259, i64 %2262
  %2264 = load double, ptr %2263, align 8, !tbaa !11
  %2265 = load double, ptr %55, align 8, !tbaa !11
  %2266 = load ptr, ptr %21, align 8, !tbaa !5
  %2267 = load i32, ptr %59, align 4, !tbaa !9
  %2268 = sext i32 %2267 to i64
  %2269 = getelementptr inbounds double, ptr %2266, i64 %2268
  %2270 = load double, ptr %2269, align 8, !tbaa !11
  %2271 = fmul double %2265, %2270
  %2272 = fneg double %2271
  %2273 = call double @llvm.fmuladd.f64(double %2258, double %2264, double %2272)
  %2274 = load ptr, ptr %22, align 8, !tbaa !5
  %2275 = load i32, ptr %59, align 4, !tbaa !9
  %2276 = sub nsw i32 %2275, 1
  %2277 = sext i32 %2276 to i64
  %2278 = getelementptr inbounds double, ptr %2274, i64 %2277
  store double %2273, ptr %2278, align 8, !tbaa !11
  %2279 = load double, ptr %55, align 8, !tbaa !11
  %2280 = load ptr, ptr %21, align 8, !tbaa !5
  %2281 = load i32, ptr %59, align 4, !tbaa !9
  %2282 = sub nsw i32 %2281, 1
  %2283 = sext i32 %2282 to i64
  %2284 = getelementptr inbounds double, ptr %2280, i64 %2283
  %2285 = load double, ptr %2284, align 8, !tbaa !11
  %2286 = fmul double %2279, %2285
  store double %2286, ptr %57, align 8, !tbaa !11
  %2287 = load double, ptr %52, align 8, !tbaa !11
  %2288 = load ptr, ptr %21, align 8, !tbaa !5
  %2289 = load i32, ptr %59, align 4, !tbaa !9
  %2290 = sub nsw i32 %2289, 1
  %2291 = sext i32 %2290 to i64
  %2292 = getelementptr inbounds double, ptr %2288, i64 %2291
  %2293 = load double, ptr %2292, align 8, !tbaa !11
  %2294 = fmul double %2287, %2293
  %2295 = load ptr, ptr %21, align 8, !tbaa !5
  %2296 = load i32, ptr %59, align 4, !tbaa !9
  %2297 = sub nsw i32 %2296, 1
  %2298 = sext i32 %2297 to i64
  %2299 = getelementptr inbounds double, ptr %2295, i64 %2298
  store double %2294, ptr %2299, align 8, !tbaa !11
  call void @dlartg_(ptr noundef %56, ptr noundef %57, ptr noundef %47, ptr noundef %51, ptr noundef %62)
  %2300 = load double, ptr %62, align 8, !tbaa !11
  %2301 = load ptr, ptr %21, align 8, !tbaa !5
  %2302 = load i32, ptr %59, align 4, !tbaa !9
  %2303 = sext i32 %2302 to i64
  %2304 = getelementptr inbounds double, ptr %2301, i64 %2303
  store double %2300, ptr %2304, align 8, !tbaa !11
  %2305 = load double, ptr %47, align 8, !tbaa !11
  %2306 = load ptr, ptr %22, align 8, !tbaa !5
  %2307 = load i32, ptr %59, align 4, !tbaa !9
  %2308 = sub nsw i32 %2307, 1
  %2309 = sext i32 %2308 to i64
  %2310 = getelementptr inbounds double, ptr %2306, i64 %2309
  %2311 = load double, ptr %2310, align 8, !tbaa !11
  %2312 = load double, ptr %51, align 8, !tbaa !11
  %2313 = load ptr, ptr %21, align 8, !tbaa !5
  %2314 = load i32, ptr %59, align 4, !tbaa !9
  %2315 = sub nsw i32 %2314, 1
  %2316 = sext i32 %2315 to i64
  %2317 = getelementptr inbounds double, ptr %2313, i64 %2316
  %2318 = load double, ptr %2317, align 8, !tbaa !11
  %2319 = fmul double %2312, %2318
  %2320 = call double @llvm.fmuladd.f64(double %2305, double %2311, double %2319)
  store double %2320, ptr %56, align 8, !tbaa !11
  %2321 = load double, ptr %47, align 8, !tbaa !11
  %2322 = load ptr, ptr %21, align 8, !tbaa !5
  %2323 = load i32, ptr %59, align 4, !tbaa !9
  %2324 = sub nsw i32 %2323, 1
  %2325 = sext i32 %2324 to i64
  %2326 = getelementptr inbounds double, ptr %2322, i64 %2325
  %2327 = load double, ptr %2326, align 8, !tbaa !11
  %2328 = load double, ptr %51, align 8, !tbaa !11
  %2329 = load ptr, ptr %22, align 8, !tbaa !5
  %2330 = load i32, ptr %59, align 4, !tbaa !9
  %2331 = sub nsw i32 %2330, 1
  %2332 = sext i32 %2331 to i64
  %2333 = getelementptr inbounds double, ptr %2329, i64 %2332
  %2334 = load double, ptr %2333, align 8, !tbaa !11
  %2335 = fmul double %2328, %2334
  %2336 = fneg double %2335
  %2337 = call double @llvm.fmuladd.f64(double %2321, double %2327, double %2336)
  %2338 = load ptr, ptr %21, align 8, !tbaa !5
  %2339 = load i32, ptr %59, align 4, !tbaa !9
  %2340 = sub nsw i32 %2339, 1
  %2341 = sext i32 %2340 to i64
  %2342 = getelementptr inbounds double, ptr %2338, i64 %2341
  store double %2337, ptr %2342, align 8, !tbaa !11
  %2343 = load i32, ptr %59, align 4, !tbaa !9
  %2344 = load i32, ptr %73, align 4, !tbaa !9
  %2345 = add nsw i32 %2344, 1
  %2346 = icmp sgt i32 %2343, %2345
  br i1 %2346, label %2347, label %2369

2347:                                             ; preds = %2242
  %2348 = load double, ptr %51, align 8, !tbaa !11
  %2349 = load ptr, ptr %22, align 8, !tbaa !5
  %2350 = load i32, ptr %59, align 4, !tbaa !9
  %2351 = sub nsw i32 %2350, 2
  %2352 = sext i32 %2351 to i64
  %2353 = getelementptr inbounds double, ptr %2349, i64 %2352
  %2354 = load double, ptr %2353, align 8, !tbaa !11
  %2355 = fmul double %2348, %2354
  store double %2355, ptr %57, align 8, !tbaa !11
  %2356 = load double, ptr %47, align 8, !tbaa !11
  %2357 = load ptr, ptr %22, align 8, !tbaa !5
  %2358 = load i32, ptr %59, align 4, !tbaa !9
  %2359 = sub nsw i32 %2358, 2
  %2360 = sext i32 %2359 to i64
  %2361 = getelementptr inbounds double, ptr %2357, i64 %2360
  %2362 = load double, ptr %2361, align 8, !tbaa !11
  %2363 = fmul double %2356, %2362
  %2364 = load ptr, ptr %22, align 8, !tbaa !5
  %2365 = load i32, ptr %59, align 4, !tbaa !9
  %2366 = sub nsw i32 %2365, 2
  %2367 = sext i32 %2366 to i64
  %2368 = getelementptr inbounds double, ptr %2364, i64 %2367
  store double %2363, ptr %2368, align 8, !tbaa !11
  br label %2369

2369:                                             ; preds = %2347, %2242
  %2370 = load double, ptr %52, align 8, !tbaa !11
  %2371 = load ptr, ptr %29, align 8, !tbaa !5
  %2372 = load i32, ptr %59, align 4, !tbaa !9
  %2373 = load i32, ptr %73, align 4, !tbaa !9
  %2374 = sub nsw i32 %2372, %2373
  %2375 = sext i32 %2374 to i64
  %2376 = getelementptr inbounds double, ptr %2371, i64 %2375
  store double %2370, ptr %2376, align 8, !tbaa !11
  %2377 = load double, ptr %55, align 8, !tbaa !11
  %2378 = fneg double %2377
  %2379 = load ptr, ptr %29, align 8, !tbaa !5
  %2380 = load i32, ptr %59, align 4, !tbaa !9
  %2381 = load i32, ptr %73, align 4, !tbaa !9
  %2382 = sub nsw i32 %2380, %2381
  %2383 = load i32, ptr %79, align 4, !tbaa !9
  %2384 = add nsw i32 %2382, %2383
  %2385 = sext i32 %2384 to i64
  %2386 = getelementptr inbounds double, ptr %2379, i64 %2385
  store double %2378, ptr %2386, align 8, !tbaa !11
  %2387 = load double, ptr %47, align 8, !tbaa !11
  %2388 = load ptr, ptr %29, align 8, !tbaa !5
  %2389 = load i32, ptr %59, align 4, !tbaa !9
  %2390 = load i32, ptr %73, align 4, !tbaa !9
  %2391 = sub nsw i32 %2389, %2390
  %2392 = load i32, ptr %81, align 4, !tbaa !9
  %2393 = add nsw i32 %2391, %2392
  %2394 = sext i32 %2393 to i64
  %2395 = getelementptr inbounds double, ptr %2388, i64 %2394
  store double %2387, ptr %2395, align 8, !tbaa !11
  %2396 = load double, ptr %51, align 8, !tbaa !11
  %2397 = fneg double %2396
  %2398 = load ptr, ptr %29, align 8, !tbaa !5
  %2399 = load i32, ptr %59, align 4, !tbaa !9
  %2400 = load i32, ptr %73, align 4, !tbaa !9
  %2401 = sub nsw i32 %2399, %2400
  %2402 = load i32, ptr %82, align 4, !tbaa !9
  %2403 = add nsw i32 %2401, %2402
  %2404 = sext i32 %2403 to i64
  %2405 = getelementptr inbounds double, ptr %2398, i64 %2404
  store double %2397, ptr %2405, align 8, !tbaa !11
  br label %2406

2406:                                             ; preds = %2369
  %2407 = load i32, ptr %59, align 4, !tbaa !9
  %2408 = add nsw i32 %2407, -1
  store i32 %2408, ptr %59, align 4, !tbaa !9
  br label %2228, !llvm.loop !24

2409:                                             ; preds = %2228
  %2410 = load double, ptr %56, align 8, !tbaa !11
  %2411 = load ptr, ptr %22, align 8, !tbaa !5
  %2412 = load i32, ptr %73, align 4, !tbaa !9
  %2413 = sext i32 %2412 to i64
  %2414 = getelementptr inbounds double, ptr %2411, i64 %2413
  store double %2410, ptr %2414, align 8, !tbaa !11
  %2415 = load ptr, ptr %22, align 8, !tbaa !5
  %2416 = load i32, ptr %73, align 4, !tbaa !9
  %2417 = sext i32 %2416 to i64
  %2418 = getelementptr inbounds double, ptr %2415, i64 %2417
  %2419 = load double, ptr %2418, align 8, !tbaa !11
  store double %2419, ptr %39, align 8, !tbaa !11
  %2420 = load double, ptr %39, align 8, !tbaa !11
  %2421 = fcmp oge double %2420, 0.000000e+00
  br i1 %2421, label %2422, label %2424

2422:                                             ; preds = %2409
  %2423 = load double, ptr %39, align 8, !tbaa !11
  br label %2427

2424:                                             ; preds = %2409
  %2425 = load double, ptr %39, align 8, !tbaa !11
  %2426 = fneg double %2425
  br label %2427

2427:                                             ; preds = %2424, %2422
  %2428 = phi double [ %2423, %2422 ], [ %2426, %2424 ]
  %2429 = load double, ptr %77, align 8, !tbaa !11
  %2430 = fcmp ole double %2428, %2429
  br i1 %2430, label %2431, label %2436

2431:                                             ; preds = %2427
  %2432 = load ptr, ptr %22, align 8, !tbaa !5
  %2433 = load i32, ptr %73, align 4, !tbaa !9
  %2434 = sext i32 %2433 to i64
  %2435 = getelementptr inbounds double, ptr %2432, i64 %2434
  store double 0.000000e+00, ptr %2435, align 8, !tbaa !11
  br label %2436

2436:                                             ; preds = %2431, %2427
  %2437 = load ptr, ptr %18, align 8, !tbaa !5
  %2438 = load i32, ptr %2437, align 4, !tbaa !9
  %2439 = icmp sgt i32 %2438, 0
  br i1 %2439, label %2440, label %2463

2440:                                             ; preds = %2436
  %2441 = load i32, ptr %61, align 4, !tbaa !9
  %2442 = load i32, ptr %73, align 4, !tbaa !9
  %2443 = sub nsw i32 %2441, %2442
  %2444 = add nsw i32 %2443, 1
  store i32 %2444, ptr %37, align 4, !tbaa !9
  %2445 = load ptr, ptr %18, align 8, !tbaa !5
  %2446 = load ptr, ptr %29, align 8, !tbaa !5
  %2447 = load i32, ptr %81, align 4, !tbaa !9
  %2448 = add nsw i32 %2447, 1
  %2449 = sext i32 %2448 to i64
  %2450 = getelementptr inbounds double, ptr %2446, i64 %2449
  %2451 = load ptr, ptr %29, align 8, !tbaa !5
  %2452 = load i32, ptr %82, align 4, !tbaa !9
  %2453 = add nsw i32 %2452, 1
  %2454 = sext i32 %2453 to i64
  %2455 = getelementptr inbounds double, ptr %2451, i64 %2454
  %2456 = load ptr, ptr %23, align 8, !tbaa !5
  %2457 = load i32, ptr %73, align 4, !tbaa !9
  %2458 = load i32, ptr %35, align 4, !tbaa !9
  %2459 = add nsw i32 %2457, %2458
  %2460 = sext i32 %2459 to i64
  %2461 = getelementptr inbounds %struct.doublecomplex, ptr %2456, i64 %2460
  %2462 = load ptr, ptr %24, align 8, !tbaa !5
  call void @zlasr_(ptr noundef @.str, ptr noundef @.str.6, ptr noundef @.str.8, ptr noundef %37, ptr noundef %2445, ptr noundef %2450, ptr noundef %2455, ptr noundef %2461, ptr noundef %2462)
  br label %2463

2463:                                             ; preds = %2440, %2436
  %2464 = load ptr, ptr %19, align 8, !tbaa !5
  %2465 = load i32, ptr %2464, align 4, !tbaa !9
  %2466 = icmp sgt i32 %2465, 0
  br i1 %2466, label %2467, label %2488

2467:                                             ; preds = %2463
  %2468 = load i32, ptr %61, align 4, !tbaa !9
  %2469 = load i32, ptr %73, align 4, !tbaa !9
  %2470 = sub nsw i32 %2468, %2469
  %2471 = add nsw i32 %2470, 1
  store i32 %2471, ptr %37, align 4, !tbaa !9
  %2472 = load ptr, ptr %19, align 8, !tbaa !5
  %2473 = load ptr, ptr %29, align 8, !tbaa !5
  %2474 = getelementptr inbounds double, ptr %2473, i64 1
  %2475 = load ptr, ptr %29, align 8, !tbaa !5
  %2476 = load ptr, ptr %17, align 8, !tbaa !5
  %2477 = load i32, ptr %2476, align 4, !tbaa !9
  %2478 = sext i32 %2477 to i64
  %2479 = getelementptr inbounds double, ptr %2475, i64 %2478
  %2480 = load ptr, ptr %25, align 8, !tbaa !5
  %2481 = load i32, ptr %73, align 4, !tbaa !9
  %2482 = load i32, ptr %33, align 4, !tbaa !9
  %2483 = mul nsw i32 %2481, %2482
  %2484 = add nsw i32 %2483, 1
  %2485 = sext i32 %2484 to i64
  %2486 = getelementptr inbounds %struct.doublecomplex, ptr %2480, i64 %2485
  %2487 = load ptr, ptr %26, align 8, !tbaa !5
  call void @zlasr_(ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef @.str.8, ptr noundef %2472, ptr noundef %37, ptr noundef %2474, ptr noundef %2479, ptr noundef %2486, ptr noundef %2487)
  br label %2488

2488:                                             ; preds = %2467, %2463
  %2489 = load ptr, ptr %20, align 8, !tbaa !5
  %2490 = load i32, ptr %2489, align 4, !tbaa !9
  %2491 = icmp sgt i32 %2490, 0
  br i1 %2491, label %2492, label %2512

2492:                                             ; preds = %2488
  %2493 = load i32, ptr %61, align 4, !tbaa !9
  %2494 = load i32, ptr %73, align 4, !tbaa !9
  %2495 = sub nsw i32 %2493, %2494
  %2496 = add nsw i32 %2495, 1
  store i32 %2496, ptr %37, align 4, !tbaa !9
  %2497 = load ptr, ptr %20, align 8, !tbaa !5
  %2498 = load ptr, ptr %29, align 8, !tbaa !5
  %2499 = getelementptr inbounds double, ptr %2498, i64 1
  %2500 = load ptr, ptr %29, align 8, !tbaa !5
  %2501 = load ptr, ptr %17, align 8, !tbaa !5
  %2502 = load i32, ptr %2501, align 4, !tbaa !9
  %2503 = sext i32 %2502 to i64
  %2504 = getelementptr inbounds double, ptr %2500, i64 %2503
  %2505 = load ptr, ptr %27, align 8, !tbaa !5
  %2506 = load i32, ptr %73, align 4, !tbaa !9
  %2507 = load i32, ptr %31, align 4, !tbaa !9
  %2508 = add nsw i32 %2506, %2507
  %2509 = sext i32 %2508 to i64
  %2510 = getelementptr inbounds %struct.doublecomplex, ptr %2505, i64 %2509
  %2511 = load ptr, ptr %28, align 8, !tbaa !5
  call void @zlasr_(ptr noundef @.str, ptr noundef @.str.6, ptr noundef @.str.8, ptr noundef %37, ptr noundef %2497, ptr noundef %2499, ptr noundef %2504, ptr noundef %2510, ptr noundef %2511)
  br label %2512

2512:                                             ; preds = %2492, %2488
  br label %2513

2513:                                             ; preds = %2512, %2163
  br label %2514

2514:                                             ; preds = %2513, %1808
  br label %645

2515:                                             ; preds = %648, %253
  %2516 = load ptr, ptr %17, align 8, !tbaa !5
  %2517 = load i32, ptr %2516, align 4, !tbaa !9
  store i32 %2517, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %59, align 4, !tbaa !9
  br label %2518

2518:                                             ; preds = %2554, %2515
  %2519 = load i32, ptr %59, align 4, !tbaa !9
  %2520 = load i32, ptr %37, align 4, !tbaa !9
  %2521 = icmp sle i32 %2519, %2520
  br i1 %2521, label %2522, label %2557

2522:                                             ; preds = %2518
  %2523 = load ptr, ptr %21, align 8, !tbaa !5
  %2524 = load i32, ptr %59, align 4, !tbaa !9
  %2525 = sext i32 %2524 to i64
  %2526 = getelementptr inbounds double, ptr %2523, i64 %2525
  %2527 = load double, ptr %2526, align 8, !tbaa !11
  %2528 = fcmp olt double %2527, 0.000000e+00
  br i1 %2528, label %2529, label %2553

2529:                                             ; preds = %2522
  %2530 = load ptr, ptr %21, align 8, !tbaa !5
  %2531 = load i32, ptr %59, align 4, !tbaa !9
  %2532 = sext i32 %2531 to i64
  %2533 = getelementptr inbounds double, ptr %2530, i64 %2532
  %2534 = load double, ptr %2533, align 8, !tbaa !11
  %2535 = fneg double %2534
  %2536 = load ptr, ptr %21, align 8, !tbaa !5
  %2537 = load i32, ptr %59, align 4, !tbaa !9
  %2538 = sext i32 %2537 to i64
  %2539 = getelementptr inbounds double, ptr %2536, i64 %2538
  store double %2535, ptr %2539, align 8, !tbaa !11
  %2540 = load ptr, ptr %18, align 8, !tbaa !5
  %2541 = load i32, ptr %2540, align 4, !tbaa !9
  %2542 = icmp sgt i32 %2541, 0
  br i1 %2542, label %2543, label %2552

2543:                                             ; preds = %2529
  %2544 = load ptr, ptr %18, align 8, !tbaa !5
  %2545 = load ptr, ptr %23, align 8, !tbaa !5
  %2546 = load i32, ptr %59, align 4, !tbaa !9
  %2547 = load i32, ptr %35, align 4, !tbaa !9
  %2548 = add nsw i32 %2546, %2547
  %2549 = sext i32 %2548 to i64
  %2550 = getelementptr inbounds %struct.doublecomplex, ptr %2545, i64 %2549
  %2551 = load ptr, ptr %24, align 8, !tbaa !5
  call void @zdscal_(ptr noundef %2544, ptr noundef @c_b72, ptr noundef %2550, ptr noundef %2551)
  br label %2552

2552:                                             ; preds = %2543, %2529
  br label %2553

2553:                                             ; preds = %2552, %2522
  br label %2554

2554:                                             ; preds = %2553
  %2555 = load i32, ptr %59, align 4, !tbaa !9
  %2556 = add nsw i32 %2555, 1
  store i32 %2556, ptr %59, align 4, !tbaa !9
  br label %2518, !llvm.loop !25

2557:                                             ; preds = %2518
  %2558 = load ptr, ptr %17, align 8, !tbaa !5
  %2559 = load i32, ptr %2558, align 4, !tbaa !9
  %2560 = sub nsw i32 %2559, 1
  store i32 %2560, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %59, align 4, !tbaa !9
  br label %2561

2561:                                             ; preds = %2701, %2557
  %2562 = load i32, ptr %59, align 4, !tbaa !9
  %2563 = load i32, ptr %37, align 4, !tbaa !9
  %2564 = icmp sle i32 %2562, %2563
  br i1 %2564, label %2565, label %2704

2565:                                             ; preds = %2561
  store i32 1, ptr %48, align 4, !tbaa !9
  %2566 = load ptr, ptr %21, align 8, !tbaa !5
  %2567 = getelementptr inbounds double, ptr %2566, i64 1
  %2568 = load double, ptr %2567, align 8, !tbaa !11
  store double %2568, ptr %53, align 8, !tbaa !11
  %2569 = load ptr, ptr %17, align 8, !tbaa !5
  %2570 = load i32, ptr %2569, align 4, !tbaa !9
  %2571 = add nsw i32 %2570, 1
  %2572 = load i32, ptr %59, align 4, !tbaa !9
  %2573 = sub nsw i32 %2571, %2572
  store i32 %2573, ptr %38, align 4, !tbaa !9
  store i32 2, ptr %60, align 4, !tbaa !9
  br label %2574

2574:                                             ; preds = %2594, %2565
  %2575 = load i32, ptr %60, align 4, !tbaa !9
  %2576 = load i32, ptr %38, align 4, !tbaa !9
  %2577 = icmp sle i32 %2575, %2576
  br i1 %2577, label %2578, label %2597

2578:                                             ; preds = %2574
  %2579 = load ptr, ptr %21, align 8, !tbaa !5
  %2580 = load i32, ptr %60, align 4, !tbaa !9
  %2581 = sext i32 %2580 to i64
  %2582 = getelementptr inbounds double, ptr %2579, i64 %2581
  %2583 = load double, ptr %2582, align 8, !tbaa !11
  %2584 = load double, ptr %53, align 8, !tbaa !11
  %2585 = fcmp ole double %2583, %2584
  br i1 %2585, label %2586, label %2593

2586:                                             ; preds = %2578
  %2587 = load i32, ptr %60, align 4, !tbaa !9
  store i32 %2587, ptr %48, align 4, !tbaa !9
  %2588 = load ptr, ptr %21, align 8, !tbaa !5
  %2589 = load i32, ptr %60, align 4, !tbaa !9
  %2590 = sext i32 %2589 to i64
  %2591 = getelementptr inbounds double, ptr %2588, i64 %2590
  %2592 = load double, ptr %2591, align 8, !tbaa !11
  store double %2592, ptr %53, align 8, !tbaa !11
  br label %2593

2593:                                             ; preds = %2586, %2578
  br label %2594

2594:                                             ; preds = %2593
  %2595 = load i32, ptr %60, align 4, !tbaa !9
  %2596 = add nsw i32 %2595, 1
  store i32 %2596, ptr %60, align 4, !tbaa !9
  br label %2574, !llvm.loop !26

2597:                                             ; preds = %2574
  %2598 = load i32, ptr %48, align 4, !tbaa !9
  %2599 = load ptr, ptr %17, align 8, !tbaa !5
  %2600 = load i32, ptr %2599, align 4, !tbaa !9
  %2601 = add nsw i32 %2600, 1
  %2602 = load i32, ptr %59, align 4, !tbaa !9
  %2603 = sub nsw i32 %2601, %2602
  %2604 = icmp ne i32 %2598, %2603
  br i1 %2604, label %2605, label %2700

2605:                                             ; preds = %2597
  %2606 = load ptr, ptr %21, align 8, !tbaa !5
  %2607 = load ptr, ptr %17, align 8, !tbaa !5
  %2608 = load i32, ptr %2607, align 4, !tbaa !9
  %2609 = add nsw i32 %2608, 1
  %2610 = load i32, ptr %59, align 4, !tbaa !9
  %2611 = sub nsw i32 %2609, %2610
  %2612 = sext i32 %2611 to i64
  %2613 = getelementptr inbounds double, ptr %2606, i64 %2612
  %2614 = load double, ptr %2613, align 8, !tbaa !11
  %2615 = load ptr, ptr %21, align 8, !tbaa !5
  %2616 = load i32, ptr %48, align 4, !tbaa !9
  %2617 = sext i32 %2616 to i64
  %2618 = getelementptr inbounds double, ptr %2615, i64 %2617
  store double %2614, ptr %2618, align 8, !tbaa !11
  %2619 = load double, ptr %53, align 8, !tbaa !11
  %2620 = load ptr, ptr %21, align 8, !tbaa !5
  %2621 = load ptr, ptr %17, align 8, !tbaa !5
  %2622 = load i32, ptr %2621, align 4, !tbaa !9
  %2623 = add nsw i32 %2622, 1
  %2624 = load i32, ptr %59, align 4, !tbaa !9
  %2625 = sub nsw i32 %2623, %2624
  %2626 = sext i32 %2625 to i64
  %2627 = getelementptr inbounds double, ptr %2620, i64 %2626
  store double %2619, ptr %2627, align 8, !tbaa !11
  %2628 = load ptr, ptr %18, align 8, !tbaa !5
  %2629 = load i32, ptr %2628, align 4, !tbaa !9
  %2630 = icmp sgt i32 %2629, 0
  br i1 %2630, label %2631, label %2651

2631:                                             ; preds = %2605
  %2632 = load ptr, ptr %18, align 8, !tbaa !5
  %2633 = load ptr, ptr %23, align 8, !tbaa !5
  %2634 = load i32, ptr %48, align 4, !tbaa !9
  %2635 = load i32, ptr %35, align 4, !tbaa !9
  %2636 = add nsw i32 %2634, %2635
  %2637 = sext i32 %2636 to i64
  %2638 = getelementptr inbounds %struct.doublecomplex, ptr %2633, i64 %2637
  %2639 = load ptr, ptr %24, align 8, !tbaa !5
  %2640 = load ptr, ptr %23, align 8, !tbaa !5
  %2641 = load ptr, ptr %17, align 8, !tbaa !5
  %2642 = load i32, ptr %2641, align 4, !tbaa !9
  %2643 = add nsw i32 %2642, 1
  %2644 = load i32, ptr %59, align 4, !tbaa !9
  %2645 = sub nsw i32 %2643, %2644
  %2646 = load i32, ptr %35, align 4, !tbaa !9
  %2647 = add nsw i32 %2645, %2646
  %2648 = sext i32 %2647 to i64
  %2649 = getelementptr inbounds %struct.doublecomplex, ptr %2640, i64 %2648
  %2650 = load ptr, ptr %24, align 8, !tbaa !5
  call void @zswap_(ptr noundef %2632, ptr noundef %2638, ptr noundef %2639, ptr noundef %2649, ptr noundef %2650)
  br label %2651

2651:                                             ; preds = %2631, %2605
  %2652 = load ptr, ptr %19, align 8, !tbaa !5
  %2653 = load i32, ptr %2652, align 4, !tbaa !9
  %2654 = icmp sgt i32 %2653, 0
  br i1 %2654, label %2655, label %2675

2655:                                             ; preds = %2651
  %2656 = load ptr, ptr %19, align 8, !tbaa !5
  %2657 = load ptr, ptr %25, align 8, !tbaa !5
  %2658 = load i32, ptr %48, align 4, !tbaa !9
  %2659 = load i32, ptr %33, align 4, !tbaa !9
  %2660 = mul nsw i32 %2658, %2659
  %2661 = add nsw i32 %2660, 1
  %2662 = sext i32 %2661 to i64
  %2663 = getelementptr inbounds %struct.doublecomplex, ptr %2657, i64 %2662
  %2664 = load ptr, ptr %25, align 8, !tbaa !5
  %2665 = load ptr, ptr %17, align 8, !tbaa !5
  %2666 = load i32, ptr %2665, align 4, !tbaa !9
  %2667 = add nsw i32 %2666, 1
  %2668 = load i32, ptr %59, align 4, !tbaa !9
  %2669 = sub nsw i32 %2667, %2668
  %2670 = load i32, ptr %33, align 4, !tbaa !9
  %2671 = mul nsw i32 %2669, %2670
  %2672 = add nsw i32 %2671, 1
  %2673 = sext i32 %2672 to i64
  %2674 = getelementptr inbounds %struct.doublecomplex, ptr %2664, i64 %2673
  call void @zswap_(ptr noundef %2656, ptr noundef %2663, ptr noundef @c__1, ptr noundef %2674, ptr noundef @c__1)
  br label %2675

2675:                                             ; preds = %2655, %2651
  %2676 = load ptr, ptr %20, align 8, !tbaa !5
  %2677 = load i32, ptr %2676, align 4, !tbaa !9
  %2678 = icmp sgt i32 %2677, 0
  br i1 %2678, label %2679, label %2699

2679:                                             ; preds = %2675
  %2680 = load ptr, ptr %20, align 8, !tbaa !5
  %2681 = load ptr, ptr %27, align 8, !tbaa !5
  %2682 = load i32, ptr %48, align 4, !tbaa !9
  %2683 = load i32, ptr %31, align 4, !tbaa !9
  %2684 = add nsw i32 %2682, %2683
  %2685 = sext i32 %2684 to i64
  %2686 = getelementptr inbounds %struct.doublecomplex, ptr %2681, i64 %2685
  %2687 = load ptr, ptr %28, align 8, !tbaa !5
  %2688 = load ptr, ptr %27, align 8, !tbaa !5
  %2689 = load ptr, ptr %17, align 8, !tbaa !5
  %2690 = load i32, ptr %2689, align 4, !tbaa !9
  %2691 = add nsw i32 %2690, 1
  %2692 = load i32, ptr %59, align 4, !tbaa !9
  %2693 = sub nsw i32 %2691, %2692
  %2694 = load i32, ptr %31, align 4, !tbaa !9
  %2695 = add nsw i32 %2693, %2694
  %2696 = sext i32 %2695 to i64
  %2697 = getelementptr inbounds %struct.doublecomplex, ptr %2688, i64 %2696
  %2698 = load ptr, ptr %28, align 8, !tbaa !5
  call void @zswap_(ptr noundef %2680, ptr noundef %2686, ptr noundef %2687, ptr noundef %2697, ptr noundef %2698)
  br label %2699

2699:                                             ; preds = %2679, %2675
  br label %2700

2700:                                             ; preds = %2699, %2597
  br label %2701

2701:                                             ; preds = %2700
  %2702 = load i32, ptr %59, align 4, !tbaa !9
  %2703 = add nsw i32 %2702, 1
  store i32 %2703, ptr %59, align 4, !tbaa !9
  br label %2561, !llvm.loop !27

2704:                                             ; preds = %2561
  br label %2730

2705:                                             ; preds = %653
  %2706 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 0, ptr %2706, align 4, !tbaa !9
  %2707 = load ptr, ptr %17, align 8, !tbaa !5
  %2708 = load i32, ptr %2707, align 4, !tbaa !9
  %2709 = sub nsw i32 %2708, 1
  store i32 %2709, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %59, align 4, !tbaa !9
  br label %2710

2710:                                             ; preds = %2726, %2705
  %2711 = load i32, ptr %59, align 4, !tbaa !9
  %2712 = load i32, ptr %37, align 4, !tbaa !9
  %2713 = icmp sle i32 %2711, %2712
  br i1 %2713, label %2714, label %2729

2714:                                             ; preds = %2710
  %2715 = load ptr, ptr %22, align 8, !tbaa !5
  %2716 = load i32, ptr %59, align 4, !tbaa !9
  %2717 = sext i32 %2716 to i64
  %2718 = getelementptr inbounds double, ptr %2715, i64 %2717
  %2719 = load double, ptr %2718, align 8, !tbaa !11
  %2720 = fcmp une double %2719, 0.000000e+00
  br i1 %2720, label %2721, label %2725

2721:                                             ; preds = %2714
  %2722 = load ptr, ptr %30, align 8, !tbaa !5
  %2723 = load i32, ptr %2722, align 4, !tbaa !9
  %2724 = add nsw i32 %2723, 1
  store i32 %2724, ptr %2722, align 4, !tbaa !9
  br label %2725

2725:                                             ; preds = %2721, %2714
  br label %2726

2726:                                             ; preds = %2725
  %2727 = load i32, ptr %59, align 4, !tbaa !9
  %2728 = add nsw i32 %2727, 1
  store i32 %2728, ptr %59, align 4, !tbaa !9
  br label %2710, !llvm.loop !28

2729:                                             ; preds = %2710
  br label %2730

2730:                                             ; preds = %2729, %2704
  store i32 1, ptr %87, align 4
  br label %2731

2731:                                             ; preds = %2730, %283, %248, %239
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #5
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 8, 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 4, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #5
  call void @llvm.lifetime.end.p0(i64 4, 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
  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 void @dlasq1_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

declare void @dlas2_(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 @zdscal_(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, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}
!20 = distinct !{!20, !14}
!21 = distinct !{!21, !14}
!22 = distinct !{!22, !14}
!23 = distinct !{!23, !14}
!24 = distinct !{!24, !14}
!25 = distinct !{!25, !14}
!26 = distinct !{!26, !14}
!27 = distinct !{!27, !14}
!28 = distinct !{!28, !14}


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

; Function Attrs: nounwind uwtable
define dso_local void @zbdsqr_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14) local_unnamed_addr #0 {
  %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
  %21 = alloca double, align 8
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  %28 = alloca double, align 8
  %29 = alloca double, align 8
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca double, align 8
  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
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #6
  %33 = getelementptr inbounds i8, ptr %5, i64 -8
  %34 = getelementptr inbounds i8, ptr %6, i64 -8
  %35 = load i32, ptr %8, align 4, !tbaa !5
  %narrow = xor i32 %35, -1
  %36 = sext i32 %narrow to i64
  %37 = getelementptr inbounds %struct.doublecomplex, ptr %7, i64 %36
  %38 = load i32, ptr %10, align 4, !tbaa !5
  %narrow888 = xor i32 %38, -1
  %39 = sext i32 %narrow888 to i64
  %40 = getelementptr inbounds %struct.doublecomplex, ptr %9, i64 %39
  %41 = load i32, ptr %12, align 4, !tbaa !5
  %narrow889 = xor i32 %41, -1
  %42 = sext i32 %narrow889 to i64
  %43 = getelementptr inbounds %struct.doublecomplex, ptr %11, i64 %42
  %44 = getelementptr inbounds i8, ptr %13, i64 -8
  store i32 0, ptr %14, align 4, !tbaa !5
  %45 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #6
  %46 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #6
  %47 = icmp ne i32 %46, 0
  %48 = icmp ne i32 %45, 0
  %or.cond = select i1 %47, i1 true, i1 %48
  br i1 %or.cond, label %49, label %.thread913.sink.split

49:                                               ; preds = %15
  %50 = load i32, ptr %1, align 4, !tbaa !5
  %51 = icmp slt i32 %50, 0
  br i1 %51, label %.thread913.sink.split, label %52

52:                                               ; preds = %49
  %53 = load i32, ptr %2, align 4, !tbaa !5
  %54 = icmp slt i32 %53, 0
  br i1 %54, label %.thread913.sink.split, label %55

55:                                               ; preds = %52
  %56 = load i32, ptr %3, align 4, !tbaa !5
  %57 = icmp slt i32 %56, 0
  br i1 %57, label %.thread913.sink.split, label %58

58:                                               ; preds = %55
  %59 = load i32, ptr %4, align 4, !tbaa !5
  %60 = icmp slt i32 %59, 0
  br i1 %60, label %.thread913.sink.split, label %61

61:                                               ; preds = %58
  %62 = icmp eq i32 %53, 0
  %63 = load i32, ptr %8, align 4, !tbaa !5
  br i1 %62, label %64, label %66

64:                                               ; preds = %61
  %65 = icmp slt i32 %63, 1
  br i1 %65, label %.thread913.sink.split, label %68

66:                                               ; preds = %61
  %spec.select = tail call i32 @llvm.umax.i32(i32 %50, i32 1)
  %67 = icmp slt i32 %63, %spec.select
  br i1 %67, label %.thread913.sink.split, label %68

68:                                               ; preds = %64, %66
  %69 = load i32, ptr %10, align 4, !tbaa !5
  %spec.select907 = tail call i32 @llvm.umax.i32(i32 %56, i32 1)
  %70 = icmp slt i32 %69, %spec.select907
  br i1 %70, label %.thread913.sink.split, label %71

71:                                               ; preds = %68
  %72 = icmp eq i32 %59, 0
  %73 = load i32, ptr %12, align 4, !tbaa !5
  br i1 %72, label %74, label %76

74:                                               ; preds = %71
  %75 = icmp slt i32 %73, 1
  br i1 %75, label %.thread913.sink.split, label %78

76:                                               ; preds = %71
  %spec.select908 = tail call i32 @llvm.umax.i32(i32 %50, i32 1)
  %77 = icmp slt i32 %73, %spec.select908
  br i1 %77, label %.thread913.sink.split, label %78

78:                                               ; preds = %74, %76
  %.pr = load i32, ptr %14, align 4, !tbaa !5
  %.not = icmp eq i32 %.pr, 0
  br i1 %.not, label %82, label %.thread913

.thread913.sink.split:                            ; preds = %74, %76, %68, %64, %66, %58, %55, %52, %49, %15
  %.sink = phi i32 [ -1, %15 ], [ -2, %49 ], [ -3, %52 ], [ -4, %55 ], [ -5, %58 ], [ -9, %66 ], [ -9, %64 ], [ -11, %68 ], [ -13, %76 ], [ -13, %74 ]
  store i32 %.sink, ptr %14, align 4, !tbaa !5
  br label %.thread913

.thread913:                                       ; preds = %.thread913.sink.split, %78
  %79 = phi i32 [ %.pr, %78 ], [ %.sink, %.thread913.sink.split ]
  %80 = sub nsw i32 0, %79
  store i32 %80, ptr %16, align 4, !tbaa !5
  %81 = call i32 @xerbla_(ptr noundef nonnull @.str.2, ptr noundef nonnull %16, i32 noundef 6) #6
  br label %.loopexit

82:                                               ; preds = %78
  switch i32 %50, label %83 [
    i32 0, label %.loopexit
    i32 1, label %.loopexit965
  ]

83:                                               ; preds = %82
  %84 = or i32 %53, %56
  %85 = or i32 %84, %59
  %or.cond1675 = icmp eq i32 %85, 0
  br i1 %or.cond1675, label %86, label %.critedge

86:                                               ; preds = %83
  tail call void @dlasq1_(ptr noundef nonnull %1, ptr noundef %5, ptr noundef %6, ptr noundef %13, ptr noundef nonnull %14) #6
  %87 = load i32, ptr %14, align 4, !tbaa !5
  %.not886 = icmp eq i32 %87, 2
  br i1 %.not886, label %88, label %.loopexit

88:                                               ; preds = %86
  store i32 0, ptr %14, align 4, !tbaa !5
  %.pre = load i32, ptr %1, align 4, !tbaa !5
  br label %.critedge

.critedge:                                        ; preds = %83, %88
  %89 = phi i32 [ %50, %83 ], [ %.pre, %88 ]
  %90 = add nsw i32 %89, -1
  %91 = shl nsw i32 %90, 1
  %92 = mul nsw i32 %90, 3
  %93 = tail call double @dlamch_(ptr noundef nonnull @.str.3) #6
  %94 = tail call double @dlamch_(ptr noundef nonnull @.str.4) #6
  br i1 %48, label %95, label %125

95:                                               ; preds = %.critedge
  %96 = load i32, ptr %1, align 4, !tbaa !5
  %97 = add nsw i32 %96, -1
  store i32 %97, ptr %16, align 4, !tbaa !5
  %.not8871051 = icmp slt i32 %96, 2
  br i1 %.not8871051, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %95
  %98 = sext i32 %90 to i64
  %invariant.gep1637 = getelementptr double, ptr %44, i64 %98
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %.lr.ph
  %indvars.iv = phi i64 [ 1, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ]
  %99 = getelementptr inbounds double, ptr %33, i64 %indvars.iv
  %100 = getelementptr inbounds double, ptr %34, i64 %indvars.iv
  call void @dlartg_(ptr noundef nonnull %99, ptr noundef nonnull %100, ptr noundef nonnull %31, ptr noundef nonnull %32, ptr noundef nonnull %25) #6
  %101 = load double, ptr %25, align 8, !tbaa !9
  store double %101, ptr %99, align 8, !tbaa !9
  %102 = load double, ptr %32, align 8, !tbaa !9
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %103 = getelementptr double, ptr %5, i64 %indvars.iv
  %104 = load double, ptr %103, align 8, !tbaa !9
  %105 = fmul double %102, %104
  store double %105, ptr %100, align 8, !tbaa !9
  %106 = load double, ptr %31, align 8, !tbaa !9
  %107 = load double, ptr %103, align 8, !tbaa !9
  %108 = fmul double %106, %107
  store double %108, ptr %103, align 8, !tbaa !9
  %109 = getelementptr inbounds double, ptr %44, i64 %indvars.iv
  store double %106, ptr %109, align 8, !tbaa !9
  %gep1638 = getelementptr double, ptr %invariant.gep1637, i64 %indvars.iv
  store double %102, ptr %gep1638, align 8, !tbaa !9
  %110 = load i32, ptr %16, align 4, !tbaa !5
  %111 = sext i32 %110 to i64
  %.not887.not = icmp slt i64 %indvars.iv, %111
  br i1 %.not887.not, label %.lr.ph, label %._crit_edge, !llvm.loop !11

._crit_edge:                                      ; preds = %.lr.ph, %95
  %112 = load i32, ptr %3, align 4, !tbaa !5
  %113 = icmp sgt i32 %112, 0
  br i1 %113, label %114, label %118

114:                                              ; preds = %._crit_edge
  %115 = load i32, ptr %1, align 4, !tbaa !5
  %116 = sext i32 %115 to i64
  %117 = getelementptr inbounds double, ptr %44, i64 %116
  call void @zlasr_(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %3, ptr noundef nonnull %1, ptr noundef %13, ptr noundef nonnull %117, ptr noundef %9, ptr noundef nonnull %10) #6
  br label %118

118:                                              ; preds = %114, %._crit_edge
  %119 = load i32, ptr %4, align 4, !tbaa !5
  %120 = icmp sgt i32 %119, 0
  br i1 %120, label %121, label %125

121:                                              ; preds = %118
  %122 = load i32, ptr %1, align 4, !tbaa !5
  %123 = sext i32 %122 to i64
  %124 = getelementptr inbounds double, ptr %44, i64 %123
  call void @zlasr_(ptr noundef nonnull @.str, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %1, ptr noundef nonnull %4, ptr noundef %13, ptr noundef nonnull %124, ptr noundef %11, ptr noundef nonnull %12) #6
  br label %125

125:                                              ; preds = %118, %121, %.critedge
  %126 = load double, ptr @c_b15, align 8, !tbaa !9
  %127 = call double @pow(double noundef %93, double noundef %126) #6
  %128 = fcmp oge double %127, 1.000000e+02
  %129 = select i1 %128, double 1.000000e+02, double %127
  %130 = fcmp ole double %129, 1.000000e+01
  %131 = select i1 %130, double 1.000000e+01, double %129
  %132 = fmul double %93, %131
  %133 = load i32, ptr %1, align 4, !tbaa !5
  %.not8901053 = icmp slt i32 %133, 1
  br i1 %.not8901053, label %.thread, label %.lr.ph1057.preheader

.thread:                                          ; preds = %125
  %134 = add nsw i32 %133, -1
  store i32 %134, ptr %16, align 4, !tbaa !5
  br label %._crit_edge1065

.lr.ph1057.preheader:                             ; preds = %125
  %135 = zext nneg i32 %133 to i64
  %xtraiter = and i64 %135, 1
  %136 = icmp eq i32 %133, 1
  br i1 %136, label %.unr-lcssa, label %.lr.ph1057.preheader.new

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

.lr.ph1057:                                       ; preds = %.lr.ph1057, %.lr.ph1057.preheader.new
  %indvars.iv1391 = phi i64 [ 1, %.lr.ph1057.preheader.new ], [ %indvars.iv.next1392.1, %.lr.ph1057 ]
  %.08521054 = phi double [ 0.000000e+00, %.lr.ph1057.preheader.new ], [ %150, %.lr.ph1057 ]
  %niter = phi i64 [ 0, %.lr.ph1057.preheader.new ], [ %niter.next.1, %.lr.ph1057 ]
  %137 = getelementptr inbounds double, ptr %33, i64 %indvars.iv1391
  %138 = load double, ptr %137, align 8, !tbaa !9
  %139 = fcmp oge double %138, 0.000000e+00
  %140 = fneg double %138
  %141 = select i1 %139, double %138, double %140
  %142 = fcmp oge double %.08521054, %141
  %143 = select i1 %142, double %.08521054, double %141
  %144 = getelementptr double, ptr %5, i64 %indvars.iv1391
  %145 = load double, ptr %144, align 8, !tbaa !9
  %146 = fcmp oge double %145, 0.000000e+00
  %147 = fneg double %145
  %148 = select i1 %146, double %145, double %147
  %149 = fcmp oge double %143, %148
  %150 = select i1 %149, double %143, double %148
  %indvars.iv.next1392.1 = add nuw nsw i64 %indvars.iv1391, 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 %.unr-lcssa, label %.lr.ph1057, !llvm.loop !13

.unr-lcssa:                                       ; preds = %.lr.ph1057, %.lr.ph1057.preheader
  %.lcssa1936.ph = phi double [ poison, %.lr.ph1057.preheader ], [ %150, %.lr.ph1057 ]
  %indvars.iv1391.unr = phi i64 [ 1, %.lr.ph1057.preheader ], [ %indvars.iv.next1392.1, %.lr.ph1057 ]
  %.08521054.unr = phi double [ 0.000000e+00, %.lr.ph1057.preheader ], [ %150, %.lr.ph1057 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %158, label %.lr.ph1057.epil

.lr.ph1057.epil:                                  ; preds = %.unr-lcssa
  %151 = getelementptr inbounds double, ptr %33, i64 %indvars.iv1391.unr
  %152 = load double, ptr %151, align 8, !tbaa !9
  %153 = fcmp oge double %152, 0.000000e+00
  %154 = fneg double %152
  %155 = select i1 %153, double %152, double %154
  %156 = fcmp oge double %.08521054.unr, %155
  %157 = select i1 %156, double %.08521054.unr, double %155
  br label %158

158:                                              ; preds = %.unr-lcssa, %.lr.ph1057.epil
  %.lcssa1936 = phi double [ %.lcssa1936.ph, %.unr-lcssa ], [ %157, %.lr.ph1057.epil ]
  %159 = add nsw i32 %133, -1
  store i32 %159, ptr %16, align 4, !tbaa !5
  %.not891.not1060.not = icmp eq i32 %133, 1
  br i1 %.not891.not1060.not, label %._crit_edge1065, label %.lr.ph1064.preheader

.lr.ph1064.preheader:                             ; preds = %158
  %wide.trip.count1397 = zext nneg i32 %133 to i64
  %160 = add nsw i64 %wide.trip.count1397, -1
  %xtraiter1938 = and i64 %160, 1
  %161 = icmp eq i32 %133, 2
  br i1 %161, label %._crit_edge1065.loopexit.unr-lcssa, label %.lr.ph1064.preheader.new

.lr.ph1064.preheader.new:                         ; preds = %.lr.ph1064.preheader
  %unroll_iter1941 = and i64 %160, -2
  br label %.lr.ph1064

.lr.ph1064:                                       ; preds = %.lr.ph1064, %.lr.ph1064.preheader.new
  %indvars.iv1394 = phi i64 [ 1, %.lr.ph1064.preheader.new ], [ %indvars.iv.next1395.1, %.lr.ph1064 ]
  %.18531061 = phi double [ %.lcssa1936, %.lr.ph1064.preheader.new ], [ %175, %.lr.ph1064 ]
  %niter1942 = phi i64 [ 0, %.lr.ph1064.preheader.new ], [ %niter1942.next.1, %.lr.ph1064 ]
  %162 = getelementptr inbounds double, ptr %34, i64 %indvars.iv1394
  %163 = load double, ptr %162, align 8, !tbaa !9
  %164 = fcmp oge double %163, 0.000000e+00
  %165 = fneg double %163
  %166 = select i1 %164, double %163, double %165
  %167 = fcmp oge double %.18531061, %166
  %168 = select i1 %167, double %.18531061, double %166
  %169 = getelementptr double, ptr %6, i64 %indvars.iv1394
  %170 = load double, ptr %169, align 8, !tbaa !9
  %171 = fcmp oge double %170, 0.000000e+00
  %172 = fneg double %170
  %173 = select i1 %171, double %170, double %172
  %174 = fcmp oge double %168, %173
  %175 = select i1 %174, double %168, double %173
  %indvars.iv.next1395.1 = add nuw nsw i64 %indvars.iv1394, 2
  %niter1942.next.1 = add i64 %niter1942, 2
  %niter1942.ncmp.1 = icmp eq i64 %niter1942.next.1, %unroll_iter1941
  br i1 %niter1942.ncmp.1, label %._crit_edge1065.loopexit.unr-lcssa, label %.lr.ph1064, !llvm.loop !14

._crit_edge1065.loopexit.unr-lcssa:               ; preds = %.lr.ph1064, %.lr.ph1064.preheader
  %.lcssa1935.ph = phi double [ poison, %.lr.ph1064.preheader ], [ %175, %.lr.ph1064 ]
  %indvars.iv1394.unr = phi i64 [ 1, %.lr.ph1064.preheader ], [ %indvars.iv.next1395.1, %.lr.ph1064 ]
  %.18531061.unr = phi double [ %.lcssa1936, %.lr.ph1064.preheader ], [ %175, %.lr.ph1064 ]
  %lcmp.mod1939.not = icmp eq i64 %xtraiter1938, 0
  br i1 %lcmp.mod1939.not, label %._crit_edge1065, label %.lr.ph1064.epil

.lr.ph1064.epil:                                  ; preds = %._crit_edge1065.loopexit.unr-lcssa
  %176 = getelementptr inbounds double, ptr %34, i64 %indvars.iv1394.unr
  %177 = load double, ptr %176, align 8, !tbaa !9
  %178 = fcmp oge double %177, 0.000000e+00
  %179 = fneg double %177
  %180 = select i1 %178, double %177, double %179
  %181 = fcmp oge double %.18531061.unr, %180
  %182 = select i1 %181, double %.18531061.unr, double %180
  br label %._crit_edge1065

._crit_edge1065:                                  ; preds = %.lr.ph1064.epil, %._crit_edge1065.loopexit.unr-lcssa, %.thread, %158
  %.1853.lcssa = phi double [ %.lcssa1936, %158 ], [ 0.000000e+00, %.thread ], [ %.lcssa1935.ph, %._crit_edge1065.loopexit.unr-lcssa ], [ %182, %.lr.ph1064.epil ]
  %183 = fcmp oge double %132, 0.000000e+00
  br i1 %183, label %184, label %218

184:                                              ; preds = %._crit_edge1065
  %185 = load double, ptr %5, align 8, !tbaa !9
  %186 = fcmp ult double %185, 0.000000e+00
  %187 = fneg double %185
  %188 = select i1 %186, double %187, double %185
  %189 = fcmp oeq double %185, 0.000000e+00
  br i1 %189, label %.loopexit975, label %190

190:                                              ; preds = %184
  %invariant.gep = getelementptr i8, ptr %6, i64 -16
  %.not8921068 = icmp slt i32 %133, 2
  br i1 %.not8921068, label %.loopexit975, label %.lr.ph1073.preheader

.lr.ph1073.preheader:                             ; preds = %190
  %191 = add nuw i32 %133, 1
  %wide.trip.count1402 = zext i32 %191 to i64
  br label %.lr.ph1073

.lr.ph1073:                                       ; preds = %.lr.ph1073, %.lr.ph1073.preheader
  %indvars.iv1399 = phi i64 [ 2, %.lr.ph1073.preheader ], [ %indvars.iv.next1400, %.lr.ph1073 ]
  %.08331071 = phi double [ %188, %.lr.ph1073.preheader ], [ %205, %.lr.ph1073 ]
  %.08351070 = phi double [ %188, %.lr.ph1073.preheader ], [ %203, %.lr.ph1073 ]
  %192 = getelementptr inbounds double, ptr %33, i64 %indvars.iv1399
  %193 = load double, ptr %192, align 8, !tbaa !9
  %194 = fcmp oge double %193, 0.000000e+00
  %195 = fneg double %193
  %196 = select i1 %194, double %193, double %195
  %gep = getelementptr double, ptr %invariant.gep, i64 %indvars.iv1399
  %197 = load double, ptr %gep, align 8, !tbaa !9
  %198 = fcmp oge double %197, 0.000000e+00
  %199 = fneg double %197
  %200 = select i1 %198, double %197, double %199
  %201 = fadd double %.08351070, %200
  %202 = fdiv double %.08351070, %201
  %203 = fmul double %196, %202
  %204 = fcmp ole double %.08331071, %203
  %205 = select i1 %204, double %.08331071, double %203
  %206 = fcmp oeq double %205, 0.000000e+00
  %indvars.iv.next1400 = add nuw nsw i64 %indvars.iv1399, 1
  %exitcond1403.not = icmp eq i64 %indvars.iv.next1400, %wide.trip.count1402
  %or.cond1678 = select i1 %206, i1 true, i1 %exitcond1403.not
  br i1 %or.cond1678, label %.loopexit975, label %.lr.ph1073, !llvm.loop !15

.loopexit975:                                     ; preds = %.lr.ph1073, %190, %184
  %.1834 = phi double [ %188, %184 ], [ %188, %190 ], [ %205, %.lr.ph1073 ]
  %207 = sitofp i32 %133 to double
  %208 = call double @sqrt(double noundef %207) #6
  %209 = fdiv double %.1834, %208
  %210 = fmul double %132, %209
  store double %210, ptr %17, align 8, !tbaa !9
  %211 = load i32, ptr %1, align 4, !tbaa !5
  %212 = mul nsw i32 %211, 6
  %213 = mul nsw i32 %212, %211
  %214 = sitofp i32 %213 to double
  %215 = fmul double %94, %214
  store double %215, ptr %18, align 8, !tbaa !9
  %216 = fcmp oge double %210, %215
  %217 = select i1 %216, double %210, double %215
  br label %227

218:                                              ; preds = %._crit_edge1065
  %219 = fneg double %132
  %220 = fmul double %.1853.lcssa, %219
  store double %220, ptr %17, align 8, !tbaa !9
  %221 = mul nsw i32 %133, 6
  %222 = mul nsw i32 %221, %133
  %223 = sitofp i32 %222 to double
  %224 = fmul double %94, %223
  store double %224, ptr %18, align 8, !tbaa !9
  %225 = fcmp oge double %220, %224
  %226 = select i1 %225, double %220, double %224
  br label %227

227:                                              ; preds = %218, %.loopexit975
  %.pre-phi1480 = phi i32 [ %222, %218 ], [ %213, %.loopexit975 ]
  %228 = phi i32 [ %133, %218 ], [ %211, %.loopexit975 ]
  %.0832 = phi double [ %226, %218 ], [ %217, %.loopexit975 ]
  %invariant.gep1172 = getelementptr i8, ptr %40, i64 16
  %invariant.gep1203 = getelementptr i8, ptr %5, i64 8
  %229 = icmp slt i32 %228, 2
  br i1 %229, label %.loopexit965, label %.lr.ph1099.lr.ph.lr.ph.lr.ph

.lr.ph1099.lr.ph.lr.ph.lr.ph:                     ; preds = %227
  %230 = fcmp uge double %132, 0.000000e+00
  %231 = fneg double %132
  %232 = select i1 %183, double %132, double %231
  %233 = fmul double %132, 1.000000e-02
  %234 = fcmp oge double %93, %233
  %235 = select i1 %234, double %93, double %233
  %invariant.gep1179 = getelementptr i8, ptr %6, i64 -24
  %236 = or disjoint i32 %91, 1
  %237 = sext i32 %236 to i64
  %238 = getelementptr inbounds double, ptr %44, i64 %237
  %239 = sext i32 %92 to i64
  %gep1206 = getelementptr double, ptr %13, i64 %239
  %invariant.gep1186 = getelementptr i8, ptr %6, i64 -16
  %240 = sext i32 %90 to i64
  %241 = sext i32 %91 to i64
  %invariant.gep1659 = getelementptr double, ptr %44, i64 %240
  %invariant.gep1661 = getelementptr double, ptr %44, i64 %241
  %invariant.gep1663 = getelementptr double, ptr %44, i64 %239
  %invariant.gep1639 = getelementptr double, ptr %44, i64 %240
  %invariant.gep1641 = getelementptr double, ptr %44, i64 %241
  %invariant.gep1643 = getelementptr double, ptr %44, i64 %239
  %242 = sext i32 %89 to i64
  %243 = getelementptr inbounds double, ptr %44, i64 %242
  %244 = getelementptr double, ptr %13, i64 %241
  %245 = getelementptr double, ptr %13, i64 %239
  %invariant.gep1645 = getelementptr double, ptr %13, i64 %241
  %invariant.gep1647 = getelementptr double, ptr %13, i64 %239
  %invariant.gep1665 = getelementptr double, ptr %44, i64 %240
  %invariant.gep1667 = getelementptr double, ptr %44, i64 %241
  %invariant.gep1669 = getelementptr double, ptr %44, i64 %239
  %invariant.gep1649 = getelementptr double, ptr %44, i64 %240
  %invariant.gep1651 = getelementptr double, ptr %44, i64 %241
  %invariant.gep1653 = getelementptr double, ptr %44, i64 %239
  %246 = sext i32 %89 to i64
  %247 = getelementptr inbounds double, ptr %44, i64 %246
  %248 = getelementptr double, ptr %13, i64 %241
  %249 = getelementptr double, ptr %13, i64 %239
  %invariant.gep1655 = getelementptr double, ptr %13, i64 %241
  %invariant.gep1657 = getelementptr double, ptr %13, i64 %239
  br label %.lr.ph1099.lr.ph.lr.ph

.lr.ph1099.lr.ph.lr.ph:                           ; preds = %.lr.ph1099.lr.ph.lr.ph.lr.ph, %.outer
  %.0839.ph1230 = phi i32 [ 0, %.lr.ph1099.lr.ph.lr.ph.lr.ph ], [ %.1840917927946, %.outer ]
  %.0844.ph1228 = phi i32 [ -1, %.lr.ph1099.lr.ph.lr.ph.lr.ph ], [ %.0846.ph9671176, %.outer ]
  %.0845.ph1227 = phi i32 [ -1, %.lr.ph1099.lr.ph.lr.ph.lr.ph ], [ %307, %.outer ]
  %.0846.ph1226 = phi i32 [ %228, %.lr.ph1099.lr.ph.lr.ph.lr.ph ], [ %.0846.ph9671176, %.outer ]
  %.0860.ph1225 = phi i32 [ 0, %.lr.ph1099.lr.ph.lr.ph.lr.ph ], [ %941, %.outer ]
  %250 = icmp sgt i32 %.0860.ph1225, %.pre-phi1480
  br i1 %250, label %1021, label %.lr.ph1099.lr.ph

.outer966.loopexit:                               ; preds = %.split.us
  store double %.us-phi, ptr %17, align 8, !tbaa !9
  store i32 %253, ptr %16, align 4, !tbaa !5
  br label %.outer966.backedge

.lr.ph1099.lr.ph:                                 ; preds = %.lr.ph1099.lr.ph.lr.ph, %.outer966.backedge
  %.0839.ph9711178 = phi i32 [ %.08391098, %.outer966.backedge ], [ %.0839.ph1230, %.lr.ph1099.lr.ph.lr.ph ]
  %.0846.ph9671176 = phi i32 [ %.0846.ph967.be, %.outer966.backedge ], [ %.0846.ph1226, %.lr.ph1099.lr.ph.lr.ph ]
  %251 = zext nneg i32 %.0846.ph9671176 to i64
  %252 = getelementptr inbounds double, ptr %33, i64 %251
  %253 = add nsw i32 %.0846.ph9671176, -1
  %254 = icmp slt i32 %.0846.ph9671176, %.0845.ph1227
  %255 = zext nneg i32 %253 to i64
  %256 = getelementptr inbounds double, ptr %34, i64 %255
  %257 = zext nneg i32 %.0846.ph9671176 to i64
  %258 = zext nneg i32 %253 to i64
  %wide.trip.count1407 = zext nneg i32 %.0846.ph9671176 to i64
  %wide.trip.count1413 = zext nneg i32 %.0846.ph9671176 to i64
  br label %.lr.ph1099

.lr.ph1099:                                       ; preds = %.lr.ph1099.backedge, %.lr.ph1099.lr.ph
  %.08391098 = phi i32 [ %.0839.ph9711178, %.lr.ph1099.lr.ph ], [ %.08391098.be, %.lr.ph1099.backedge ]
  %.pre1456 = load double, ptr %252, align 8, !tbaa !9
  %259 = fcmp oge double %.pre1456, 0.000000e+00
  %260 = fneg double %.pre1456
  %261 = select i1 %259, double %.pre1456, double %260
  br i1 %230, label %.lr.ph1087.split.us, label %262

262:                                              ; preds = %.lr.ph1099
  %263 = fcmp ugt double %261, %.0832
  br i1 %263, label %.lr.ph1087.split.preheader, label %264

264:                                              ; preds = %262
  store double 0.000000e+00, ptr %252, align 8, !tbaa !9
  br label %.lr.ph1087.split.preheader

.lr.ph1087.split.preheader:                       ; preds = %264, %262
  %.ph = phi double [ %.pre1456, %262 ], [ 0.000000e+00, %264 ]
  %265 = fcmp oge double %.ph, 0.000000e+00
  %266 = fneg double %.ph
  %267 = select i1 %265, double %.ph, double %266
  br label %.lr.ph1087.split

.lr.ph1087.split.us:                              ; preds = %.lr.ph1099, %275
  %indvars.iv1409 = phi i64 [ %indvars.iv.next1410, %275 ], [ 1, %.lr.ph1099 ]
  %.28541084.us = phi double [ %284, %275 ], [ %261, %.lr.ph1099 ]
  %268 = sub nsw i64 %257, %indvars.iv1409
  %269 = getelementptr inbounds double, ptr %34, i64 %268
  %270 = load double, ptr %269, align 8, !tbaa !9
  %271 = fcmp oge double %270, 0.000000e+00
  %272 = fneg double %270
  %273 = select i1 %271, double %270, double %272
  %274 = fcmp ugt double %273, %.0832
  br i1 %274, label %275, label %.split.us

275:                                              ; preds = %.lr.ph1087.split.us
  %276 = getelementptr inbounds double, ptr %33, i64 %268
  %277 = load double, ptr %276, align 8, !tbaa !9
  %278 = fcmp oge double %277, 0.000000e+00
  %279 = fneg double %277
  %280 = select i1 %278, double %277, double %279
  %281 = fcmp oge double %.28541084.us, %280
  %282 = select i1 %281, double %.28541084.us, double %280
  %283 = fcmp oge double %282, %273
  %284 = select i1 %283, double %282, double %273
  %indvars.iv.next1410 = add nuw nsw i64 %indvars.iv1409, 1
  %exitcond1414.not = icmp eq i64 %indvars.iv.next1410, %wide.trip.count1413
  br i1 %exitcond1414.not, label %.loopexit964, label %.lr.ph1087.split.us, !llvm.loop !16

.lr.ph1087.split:                                 ; preds = %.lr.ph1087.split.preheader, %300
  %indvars.iv1404 = phi i64 [ 1, %.lr.ph1087.split.preheader ], [ %indvars.iv.next1405, %300 ]
  %.28541084 = phi double [ %267, %.lr.ph1087.split.preheader ], [ %304, %300 ]
  %285 = sub nsw i64 %257, %indvars.iv1404
  %286 = getelementptr inbounds double, ptr %33, i64 %285
  %287 = load double, ptr %286, align 8, !tbaa !9
  %288 = fcmp oge double %287, 0.000000e+00
  %289 = fneg double %287
  %290 = select i1 %288, double %287, double %289
  %291 = getelementptr inbounds double, ptr %34, i64 %285
  %292 = load double, ptr %291, align 8, !tbaa !9
  %293 = fcmp oge double %292, 0.000000e+00
  %294 = fneg double %292
  %295 = select i1 %293, double %292, double %294
  %296 = fcmp ugt double %290, %.0832
  br i1 %296, label %298, label %297

297:                                              ; preds = %.lr.ph1087.split
  store double 0.000000e+00, ptr %286, align 8, !tbaa !9
  br label %298

298:                                              ; preds = %297, %.lr.ph1087.split
  %299 = fcmp ugt double %295, %.0832
  br i1 %299, label %300, label %.split.us

300:                                              ; preds = %298
  %301 = fcmp oge double %.28541084, %290
  %302 = select i1 %301, double %.28541084, double %290
  %303 = fcmp oge double %302, %295
  %304 = select i1 %303, double %302, double %295
  %indvars.iv.next1405 = add nuw nsw i64 %indvars.iv1404, 1
  %exitcond1408.not = icmp eq i64 %indvars.iv.next1405, %wide.trip.count1407
  br i1 %exitcond1408.not, label %.loopexit964, label %.lr.ph1087.split, !llvm.loop !16

.split.us:                                        ; preds = %298, %.lr.ph1087.split.us
  %.us-phi = phi double [ %270, %.lr.ph1087.split.us ], [ %292, %298 ]
  %.us-phi1090 = phi i64 [ %268, %.lr.ph1087.split.us ], [ %285, %298 ]
  %.us-phi1092 = phi double [ %.28541084.us, %.lr.ph1087.split.us ], [ %.28541084, %298 ]
  %.us-phi1091 = trunc i64 %.us-phi1090 to i32
  %305 = getelementptr inbounds double, ptr %34, i64 %.us-phi1090
  store double 0.000000e+00, ptr %305, align 8, !tbaa !9
  %306 = icmp eq i32 %253, %.us-phi1091
  br i1 %306, label %.outer966.loopexit, label %.loopexit964

.loopexit964:                                     ; preds = %300, %275, %.split.us
  %.us-phi10931100 = phi double [ %.us-phi, %.split.us ], [ %282, %275 ], [ %302, %300 ]
  %.2854977 = phi double [ %.us-phi1092, %.split.us ], [ %284, %275 ], [ %304, %300 ]
  %.0838 = phi i32 [ %.us-phi1091, %.split.us ], [ 0, %275 ], [ 0, %300 ]
  %307 = add nsw i32 %.0838, 1
  %308 = icmp eq i32 %307, %253
  br i1 %308, label %309, label %343

309:                                              ; preds = %.loopexit964
  store double %.us-phi10931100, ptr %17, align 8, !tbaa !9
  store i32 %253, ptr %16, align 4, !tbaa !5
  %310 = getelementptr inbounds double, ptr %33, i64 %255
  call void @dlasv2_(ptr noundef nonnull %310, ptr noundef nonnull %256, ptr noundef nonnull %252, ptr noundef nonnull %28, ptr noundef nonnull %30, ptr noundef nonnull %22, ptr noundef nonnull %21, ptr noundef nonnull %20, ptr noundef nonnull %19) #6
  %311 = load double, ptr %30, align 8, !tbaa !9
  store double %311, ptr %310, align 8, !tbaa !9
  store double 0.000000e+00, ptr %256, align 8, !tbaa !9
  %312 = load double, ptr %28, align 8, !tbaa !9
  store double %312, ptr %252, align 8, !tbaa !9
  %313 = load i32, ptr %2, align 4, !tbaa !5
  %314 = icmp sgt i32 %313, 0
  br i1 %314, label %315, label %322

315:                                              ; preds = %309
  %316 = add nsw i32 %253, %35
  %317 = sext i32 %316 to i64
  %318 = getelementptr inbounds %struct.doublecomplex, ptr %37, i64 %317
  %319 = add nsw i32 %.0846.ph9671176, %35
  %320 = sext i32 %319 to i64
  %321 = getelementptr inbounds %struct.doublecomplex, ptr %37, i64 %320
  call void @zdrot_(ptr noundef nonnull %2, ptr noundef %318, ptr noundef nonnull %8, ptr noundef %321, ptr noundef nonnull %8, ptr noundef nonnull %21, ptr noundef nonnull %22) #6
  br label %322

322:                                              ; preds = %315, %309
  %323 = load i32, ptr %3, align 4, !tbaa !5
  %324 = icmp sgt i32 %323, 0
  br i1 %324, label %325, label %330

325:                                              ; preds = %322
  %326 = mul nsw i32 %253, %38
  %327 = sext i32 %326 to i64
  %gep1173 = getelementptr %struct.doublecomplex, ptr %invariant.gep1172, i64 %327
  %328 = mul nsw i32 %.0846.ph9671176, %38
  %329 = sext i32 %328 to i64
  %gep1175 = getelementptr %struct.doublecomplex, ptr %invariant.gep1172, i64 %329
  call void @zdrot_(ptr noundef nonnull %3, ptr noundef %gep1173, ptr noundef nonnull @c__1, ptr noundef %gep1175, ptr noundef nonnull @c__1, ptr noundef nonnull %19, ptr noundef nonnull %20) #6
  br label %330

330:                                              ; preds = %325, %322
  %331 = load i32, ptr %4, align 4, !tbaa !5
  %332 = icmp sgt i32 %331, 0
  br i1 %332, label %333, label %340

333:                                              ; preds = %330
  %334 = add nsw i32 %253, %41
  %335 = sext i32 %334 to i64
  %336 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %335
  %337 = add nsw i32 %.0846.ph9671176, %41
  %338 = sext i32 %337 to i64
  %339 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %338
  call void @zdrot_(ptr noundef nonnull %4, ptr noundef %336, ptr noundef nonnull %12, ptr noundef %339, ptr noundef nonnull %12, ptr noundef nonnull %19, ptr noundef nonnull %20) #6
  br label %340

340:                                              ; preds = %333, %330
  %341 = add nsw i32 %.0846.ph9671176, -2
  br label %.outer966.backedge

.outer966.backedge:                               ; preds = %340, %.outer966.loopexit
  %.0846.ph967.be = phi i32 [ %341, %340 ], [ %253, %.outer966.loopexit ]
  %342 = icmp slt i32 %.0846.ph967.be, 2
  br i1 %342, label %.loopexit965, label %.lr.ph1099.lr.ph

343:                                              ; preds = %.loopexit964
  %.not894 = icmp sge i32 %.0838, %.0844.ph1228
  %or.cond911 = or i1 %.not894, %254
  br i1 %or.cond911, label %344, label %356

344:                                              ; preds = %343
  %345 = sext i32 %307 to i64
  %346 = getelementptr inbounds double, ptr %33, i64 %345
  %347 = load double, ptr %346, align 8, !tbaa !9
  %348 = fcmp oge double %347, 0.000000e+00
  %349 = fneg double %347
  %350 = select i1 %348, double %347, double %349
  %351 = load double, ptr %252, align 8, !tbaa !9
  %352 = fcmp oge double %351, 0.000000e+00
  %353 = fneg double %351
  %354 = select i1 %352, double %351, double %353
  %355 = fcmp ult double %350, %354
  br i1 %355, label %.thread919, label %.thread915

356:                                              ; preds = %343
  %357 = icmp eq i32 %.08391098, 1
  br i1 %357, label %..thread915_crit_edge, label %..thread919_crit_edge

..thread919_crit_edge:                            ; preds = %356
  %.phi.trans.insert = sext i32 %307 to i64
  %.phi.trans.insert1458 = getelementptr inbounds double, ptr %33, i64 %.phi.trans.insert
  %.pre1459 = load double, ptr %.phi.trans.insert1458, align 8, !tbaa !9
  %.pre1481 = fneg double %.pre1459
  br label %.thread919

..thread915_crit_edge:                            ; preds = %356
  %.pre1457 = load double, ptr %252, align 8, !tbaa !9
  %.pre1483 = fneg double %.pre1457
  br label %.thread915

.thread915:                                       ; preds = %..thread915_crit_edge, %344
  %.pre-phi1484 = phi double [ %.pre1483, %..thread915_crit_edge ], [ %353, %344 ]
  %358 = phi double [ %.pre1457, %..thread915_crit_edge ], [ %351, %344 ]
  %359 = load double, ptr %256, align 8, !tbaa !9
  store double %359, ptr %18, align 8, !tbaa !9
  %360 = fcmp oge double %359, 0.000000e+00
  %361 = fneg double %359
  %362 = select i1 %360, double %359, double %361
  %363 = fcmp oge double %358, 0.000000e+00
  %364 = select i1 %363, double %358, double %.pre-phi1484
  %365 = fmul double %232, %364
  %366 = fcmp ugt double %362, %365
  %367 = fcmp ugt double %362, %.0832
  %or.cond955 = select i1 %230, i1 true, i1 %367
  %or.cond958 = select i1 %366, i1 %or.cond955, i1 false
  br i1 %or.cond958, label %368, label %.backedge

.backedge:                                        ; preds = %.thread915, %.thread919
  %.sink1676 = phi ptr [ %397, %.thread919 ], [ %256, %.thread915 ]
  %.0839.be = phi i32 [ %.1840921, %.thread919 ], [ 1, %.thread915 ]
  store double 0.000000e+00, ptr %.sink1676, align 8, !tbaa !9
  br label %.lr.ph1099.backedge

.lr.ph1099.backedge:                              ; preds = %.backedge, %.outer972.backedge
  %.08391098.be = phi i32 [ %.0839.be, %.backedge ], [ %.0839.ph974.be, %.outer972.backedge ]
  br label %.lr.ph1099

368:                                              ; preds = %.thread915
  store i32 %253, ptr %16, align 4, !tbaa !5
  br i1 %183, label %369, label %.thread924.thread

.thread924.thread:                                ; preds = %368
  %.neg960.le1096.le1164 = xor i32 %.0838, -1
  store double %233, ptr %18, align 8, !tbaa !9
  %.phi.trans.insert1461 = sext i32 %307 to i64
  %.phi.trans.insert1462 = getelementptr inbounds double, ptr %33, i64 %.phi.trans.insert1461
  %.pre1463 = load double, ptr %.phi.trans.insert1462, align 8, !tbaa !9
  br label %._crit_edge1485

369:                                              ; preds = %368
  %370 = sext i32 %307 to i64
  %371 = getelementptr inbounds double, ptr %33, i64 %370
  %372 = load double, ptr %371, align 8, !tbaa !9
  %373 = fcmp oge double %372, 0.000000e+00
  %374 = fneg double %372
  %375 = select i1 %373, double %372, double %374
  %.not896.not1109 = icmp slt i32 %307, %.0846.ph9671176
  br i1 %.not896.not1109, label %.lr.ph1114.preheader, label %.loopexit962.thread

.lr.ph1114.preheader:                             ; preds = %369
  %376 = sext i32 %.0838 to i64
  %377 = add nsw i64 %376, 1
  br label %.lr.ph1114

.lr.ph1114:                                       ; preds = %.lr.ph1114.preheader, %385
  %indvars.iv1418 = phi i64 [ %377, %.lr.ph1114.preheader ], [ %indvars.iv.next1419, %385 ]
  %.18361111 = phi double [ %375, %.lr.ph1114.preheader ], [ %393, %385 ]
  %.18421110 = phi double [ %375, %.lr.ph1114.preheader ], [ %395, %385 ]
  %378 = getelementptr inbounds double, ptr %34, i64 %indvars.iv1418
  %379 = load double, ptr %378, align 8, !tbaa !9
  %380 = fcmp oge double %379, 0.000000e+00
  %381 = fneg double %379
  %382 = select i1 %380, double %379, double %381
  %383 = fmul double %132, %.18361111
  %384 = fcmp ugt double %382, %383
  br i1 %384, label %385, label %.outer972.backedge

.outer972.backedge:                               ; preds = %.lr.ph1114, %.lr.ph1140
  %storemerge = phi double [ %415, %.lr.ph1140 ], [ %379, %.lr.ph1114 ]
  %indvars.iv1418.pn = phi i64 [ %indvars.iv1422, %.lr.ph1140 ], [ %indvars.iv1418, %.lr.ph1114 ]
  %.0839.ph974.be = phi i32 [ %.1840921, %.lr.ph1140 ], [ 1, %.lr.ph1114 ]
  %.sink1677 = getelementptr inbounds double, ptr %34, i64 %indvars.iv1418.pn
  store double %storemerge, ptr %17, align 8, !tbaa !9
  store double 0.000000e+00, ptr %.sink1677, align 8, !tbaa !9
  br label %.lr.ph1099.backedge

385:                                              ; preds = %.lr.ph1114
  %indvars.iv.next1419 = add nsw i64 %indvars.iv1418, 1
  %386 = getelementptr double, ptr %5, i64 %indvars.iv1418
  %387 = load double, ptr %386, align 8, !tbaa !9
  store double %387, ptr %18, align 8, !tbaa !9
  %388 = fcmp oge double %387, 0.000000e+00
  %389 = fneg double %387
  %390 = select i1 %388, double %387, double %389
  %391 = fadd double %.18361111, %382
  %392 = fdiv double %.18361111, %391
  %393 = fmul double %392, %390
  %394 = fcmp ole double %.18421110, %393
  %395 = select i1 %394, double %.18421110, double %393
  %lftr.wideiv = trunc i64 %indvars.iv.next1419 to i32
  %exitcond1421.not = icmp eq i32 %.0846.ph9671176, %lftr.wideiv
  br i1 %exitcond1421.not, label %.loopexit962, label %.lr.ph1114, !llvm.loop !17

.thread919:                                       ; preds = %..thread919_crit_edge, %344
  %.pre-phi1482 = phi double [ %.pre1481, %..thread919_crit_edge ], [ %349, %344 ]
  %.pre-phi1478 = phi i64 [ %.phi.trans.insert, %..thread919_crit_edge ], [ %345, %344 ]
  %396 = phi double [ %.pre1459, %..thread919_crit_edge ], [ %347, %344 ]
  %.1840921 = phi i32 [ %.08391098, %..thread919_crit_edge ], [ 2, %344 ]
  %397 = getelementptr inbounds double, ptr %34, i64 %.pre-phi1478
  %398 = load double, ptr %397, align 8, !tbaa !9
  store double %398, ptr %18, align 8, !tbaa !9
  %399 = fcmp oge double %398, 0.000000e+00
  %400 = fneg double %398
  %401 = select i1 %399, double %398, double %400
  %402 = fcmp oge double %396, 0.000000e+00
  %403 = select i1 %402, double %396, double %.pre-phi1482
  %404 = fmul double %232, %403
  %405 = fcmp ugt double %401, %404
  %406 = fcmp ugt double %401, %.0832
  %or.cond957 = select i1 %230, i1 true, i1 %406
  %or.cond959 = select i1 %405, i1 %or.cond957, i1 false
  br i1 %or.cond959, label %407, label %.backedge

407:                                              ; preds = %.thread919
  store i32 %253, ptr %16, align 4, !tbaa !5
  br i1 %183, label %408, label %.thread924

408:                                              ; preds = %407
  %409 = load double, ptr %252, align 8, !tbaa !9
  %410 = fcmp oge double %409, 0.000000e+00
  %411 = fneg double %409
  %412 = select i1 %410, double %409, double %411
  store i32 %307, ptr %16, align 4, !tbaa !5
  %.not895.not1135 = icmp sgt i32 %253, %.0838
  br i1 %.not895.not1135, label %.lr.ph1140.preheader, label %.loopexit962.thread

.lr.ph1140.preheader:                             ; preds = %408
  %413 = sext i32 %.0838 to i64
  br label %.lr.ph1140

.lr.ph1140:                                       ; preds = %.lr.ph1140.preheader, %421
  %indvars.iv1422 = phi i64 [ %258, %.lr.ph1140.preheader ], [ %indvars.iv.next1423, %421 ]
  %.28371137 = phi double [ %412, %.lr.ph1140.preheader ], [ %429, %421 ]
  %.28431136 = phi double [ %412, %.lr.ph1140.preheader ], [ %431, %421 ]
  %414 = getelementptr inbounds double, ptr %34, i64 %indvars.iv1422
  %415 = load double, ptr %414, align 8, !tbaa !9
  %416 = fcmp oge double %415, 0.000000e+00
  %417 = fneg double %415
  %418 = select i1 %416, double %415, double %417
  %419 = fmul double %132, %.28371137
  %420 = fcmp ugt double %418, %419
  br i1 %420, label %421, label %.outer972.backedge

421:                                              ; preds = %.lr.ph1140
  %422 = getelementptr inbounds double, ptr %33, i64 %indvars.iv1422
  %423 = load double, ptr %422, align 8, !tbaa !9
  store double %423, ptr %18, align 8, !tbaa !9
  %424 = fcmp oge double %423, 0.000000e+00
  %425 = fneg double %423
  %426 = select i1 %424, double %423, double %425
  %427 = fadd double %.28371137, %418
  %428 = fdiv double %.28371137, %427
  %429 = fmul double %428, %426
  %430 = fcmp ole double %.28431136, %429
  %431 = select i1 %430, double %.28431136, double %429
  %indvars.iv.next1423 = add nsw i64 %indvars.iv1422, -1
  %.not895.not = icmp sgt i64 %indvars.iv.next1423, %413
  br i1 %.not895.not, label %.lr.ph1140, label %.loopexit962, !llvm.loop !18

.thread924:                                       ; preds = %407
  %.neg960.le.le1168 = xor i32 %.0838, -1
  store double %233, ptr %18, align 8, !tbaa !9
  %.pre1460 = load double, ptr %252, align 8, !tbaa !9
  br label %457

.loopexit962.thread:                              ; preds = %369, %408
  %.ph1497 = phi double [ %372, %369 ], [ %396, %408 ]
  %.ph1498 = phi double [ %358, %369 ], [ %409, %408 ]
  %.ph1499 = phi i1 [ true, %369 ], [ false, %408 ]
  %.1840917.ph = phi i32 [ 1, %369 ], [ %.1840921, %408 ]
  %.3.ph = phi double [ %375, %369 ], [ %412, %408 ]
  %.neg96010081502 = xor i32 %.0838, -1
  store double %93, ptr %17, align 8, !tbaa !9
  store double %233, ptr %18, align 8, !tbaa !9
  br label %435

.loopexit962:                                     ; preds = %385, %421
  %432 = phi double [ %396, %421 ], [ %372, %385 ]
  %433 = phi double [ %409, %421 ], [ %358, %385 ]
  %434 = phi i1 [ false, %421 ], [ true, %385 ]
  %.1840917 = phi i32 [ %.1840921, %421 ], [ 1, %385 ]
  %.3 = phi double [ %431, %421 ], [ %395, %385 ]
  %.neg9601008 = xor i32 %.0838, -1
  store double %93, ptr %17, align 8, !tbaa !9
  store double %233, ptr %18, align 8, !tbaa !9
  br i1 %183, label %435, label %448

435:                                              ; preds = %.loopexit962.thread, %.loopexit962
  %.neg96010081506 = phi i32 [ %.neg96010081502, %.loopexit962.thread ], [ %.neg9601008, %.loopexit962 ]
  %.31505 = phi double [ %.3.ph, %.loopexit962.thread ], [ %.3, %.loopexit962 ]
  %.18409171503 = phi i32 [ %.1840917.ph, %.loopexit962.thread ], [ %.1840917, %.loopexit962 ]
  %436 = phi i1 [ %.ph1499, %.loopexit962.thread ], [ %434, %.loopexit962 ]
  %437 = phi double [ %.ph1498, %.loopexit962.thread ], [ %433, %.loopexit962 ]
  %438 = phi double [ %.ph1497, %.loopexit962.thread ], [ %432, %.loopexit962 ]
  %439 = load i32, ptr %1, align 4, !tbaa !5
  %440 = sitofp i32 %439 to double
  %441 = fmul double %132, %440
  %442 = fdiv double %.31505, %.2854977
  %443 = fmul double %442, %441
  %444 = fcmp ugt double %443, %235
  br i1 %444, label %448, label %445

445:                                              ; preds = %435
  store double 0.000000e+00, ptr %27, align 8, !tbaa !9
  %446 = add nsw i32 %.0846.ph9671176, %.0860.ph1225
  %447 = add i32 %446, %.neg96010081506
  br i1 %436, label %480, label %568

448:                                              ; preds = %435, %.loopexit962
  %.neg96010081507 = phi i32 [ %.neg96010081506, %435 ], [ %.neg9601008, %.loopexit962 ]
  %.18409171504 = phi i32 [ %.18409171503, %435 ], [ %.1840917, %.loopexit962 ]
  %449 = phi i1 [ %436, %435 ], [ %434, %.loopexit962 ]
  %450 = phi double [ %437, %435 ], [ %433, %.loopexit962 ]
  %451 = phi double [ %438, %435 ], [ %432, %.loopexit962 ]
  br i1 %449, label %._crit_edge1485, label %457

._crit_edge1485:                                  ; preds = %448, %.thread924.thread
  %452 = phi double [ %.pre1463, %.thread924.thread ], [ %451, %448 ]
  %.neg9601006 = phi i32 [ %.neg960.le1096.le1164, %.thread924.thread ], [ %.neg96010081507, %448 ]
  %.1840917928936 = phi i32 [ 1, %.thread924.thread ], [ %.18409171504, %448 ]
  store double %452, ptr %17, align 8, !tbaa !9
  %453 = fcmp oge double %452, 0.000000e+00
  %454 = fneg double %452
  %455 = select i1 %453, double %452, double %454
  %456 = getelementptr inbounds double, ptr %33, i64 %255
  call void @dlas2_(ptr noundef nonnull %456, ptr noundef nonnull %256, ptr noundef nonnull %252, ptr noundef nonnull %27, ptr noundef nonnull %25) #6
  br label %466

457:                                              ; preds = %.thread924, %448
  %458 = phi double [ %.pre1460, %.thread924 ], [ %450, %448 ]
  %.neg9601007 = phi i32 [ %.neg960.le.le1168, %.thread924 ], [ %.neg96010081507, %448 ]
  %.1840917928935 = phi i32 [ %.1840921, %.thread924 ], [ %.18409171504, %448 ]
  store double %458, ptr %17, align 8, !tbaa !9
  %459 = fcmp oge double %458, 0.000000e+00
  %460 = fneg double %458
  %461 = select i1 %459, double %458, double %460
  %462 = sext i32 %307 to i64
  %463 = getelementptr inbounds double, ptr %33, i64 %462
  %464 = getelementptr inbounds double, ptr %34, i64 %462
  %465 = sext i32 %.0838 to i64
  %gep1204 = getelementptr double, ptr %invariant.gep1203, i64 %465
  call void @dlas2_(ptr noundef nonnull %463, ptr noundef nonnull %464, ptr noundef %gep1204, ptr noundef nonnull %27, ptr noundef nonnull %25) #6
  br label %466

466:                                              ; preds = %457, %._crit_edge1485
  %.neg9601005 = phi i32 [ %.neg9601006, %._crit_edge1485 ], [ %.neg9601007, %457 ]
  %467 = phi i1 [ true, %._crit_edge1485 ], [ false, %457 ]
  %.1840917928934 = phi i32 [ %.1840917928936, %._crit_edge1485 ], [ %.1840917928935, %457 ]
  %.0 = phi double [ %455, %._crit_edge1485 ], [ %461, %457 ]
  %468 = fcmp ogt double %.0, 0.000000e+00
  %469 = load double, ptr %27, align 8, !tbaa !9
  br i1 %468, label %470, label %thread-pre-split937

470:                                              ; preds = %466
  %471 = fdiv double %469, %.0
  store double %471, ptr %17, align 8, !tbaa !9
  %472 = fmul double %471, %471
  %473 = fcmp olt double %472, %93
  br i1 %473, label %.thread941, label %thread-pre-split937

.thread941:                                       ; preds = %470
  store double 0.000000e+00, ptr %27, align 8, !tbaa !9
  %474 = add nsw i32 %.0846.ph9671176, %.0860.ph1225
  %475 = add i32 %474, %.neg9601005
  br i1 %467, label %480, label %568

thread-pre-split937:                              ; preds = %466, %470
  %476 = add nsw i32 %.0846.ph9671176, %.0860.ph1225
  %477 = add i32 %476, %.neg9601005
  %478 = fcmp oeq double %469, 0.000000e+00
  br i1 %478, label %479, label %663

479:                                              ; preds = %thread-pre-split937
  br i1 %467, label %480, label %568

480:                                              ; preds = %445, %.thread941, %479
  %.neg9601004 = phi i32 [ %.neg9601005, %.thread941 ], [ %.neg9601005, %479 ], [ %.neg96010081506, %445 ]
  %.1840917927947948 = phi i32 [ %.1840917928934, %.thread941 ], [ %.1840917928934, %479 ], [ %.18409171503, %445 ]
  %481 = phi i32 [ %475, %.thread941 ], [ %477, %479 ], [ %447, %445 ]
  store double 1.000000e+00, ptr %31, align 8, !tbaa !9
  store double 1.000000e+00, ptr %26, align 8, !tbaa !9
  store i32 %253, ptr %16, align 4, !tbaa !5
  %.not9011198.not = icmp slt i32 %.0838, %253
  br i1 %.not9011198.not, label %482, label %.._crit_edge1202_crit_edge

.._crit_edge1202_crit_edge:                       ; preds = %480
  %.pre1475 = load double, ptr %29, align 8, !tbaa !9
  br label %._crit_edge1202

482:                                              ; preds = %480
  %483 = sext i32 %307 to i64
  %484 = getelementptr inbounds double, ptr %33, i64 %483
  %485 = load double, ptr %484, align 8, !tbaa !9
  store double %485, ptr %17, align 8, !tbaa !9
  %486 = getelementptr inbounds double, ptr %34, i64 %483
  call void @dlartg_(ptr noundef nonnull %17, ptr noundef nonnull %486, ptr noundef nonnull %31, ptr noundef nonnull %32, ptr noundef nonnull %25) #6
  %.pre1473 = load double, ptr %25, align 8, !tbaa !9
  %487 = load double, ptr %26, align 8, !tbaa !9
  %488 = fmul double %487, %.pre1473
  store double %488, ptr %17, align 8, !tbaa !9
  %489 = getelementptr double, ptr %5, i64 %483
  %490 = load double, ptr %489, align 8, !tbaa !9
  %491 = load double, ptr %32, align 8, !tbaa !9
  %492 = fmul double %490, %491
  store double %492, ptr %18, align 8, !tbaa !9
  call void @dlartg_(ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef nonnull %26, ptr noundef nonnull %29, ptr noundef nonnull %484) #6
  %493 = load double, ptr %31, align 8, !tbaa !9
  store double %493, ptr %13, align 8, !tbaa !9
  %494 = load double, ptr %32, align 8, !tbaa !9
  store double %494, ptr %247, align 8, !tbaa !9
  %495 = load double, ptr %26, align 8, !tbaa !9
  store double %495, ptr %248, align 8, !tbaa !9
  %496 = load double, ptr %29, align 8, !tbaa !9
  store double %496, ptr %249, align 8, !tbaa !9
  %497 = load i32, ptr %16, align 4, !tbaa !5
  %.not901.not.peel = icmp slt i32 %307, %497
  br i1 %.not901.not.peel, label %.lr.ph1201, label %._crit_edge1202

.lr.ph1201:                                       ; preds = %482, %507
  %498 = phi double [ %514, %507 ], [ %493, %482 ]
  %indvars.iv1437.in = phi i64 [ %indvars.iv1437, %507 ], [ %483, %482 ]
  %indvars.iv1437 = add nsw i64 %indvars.iv1437.in, 1
  %499 = getelementptr double, ptr %5, i64 %indvars.iv1437.in
  %500 = load double, ptr %499, align 8, !tbaa !9
  %501 = fmul double %500, %498
  store double %501, ptr %17, align 8, !tbaa !9
  %502 = getelementptr double, ptr %6, i64 %indvars.iv1437.in
  call void @dlartg_(ptr noundef nonnull %17, ptr noundef nonnull %502, ptr noundef nonnull %31, ptr noundef nonnull %32, ptr noundef nonnull %25) #6
  %.not1494 = icmp slt i64 %indvars.iv1437.in, %483
  %.pre1474 = load double, ptr %25, align 8, !tbaa !9
  br i1 %.not1494, label %507, label %503

503:                                              ; preds = %.lr.ph1201
  %504 = load double, ptr %29, align 8, !tbaa !9
  %505 = fmul double %504, %.pre1474
  %506 = getelementptr i8, ptr %502, i64 -8
  store double %505, ptr %506, align 8, !tbaa !9
  br label %507

507:                                              ; preds = %503, %.lr.ph1201
  %508 = load double, ptr %26, align 8, !tbaa !9
  %509 = fmul double %508, %.pre1474
  store double %509, ptr %17, align 8, !tbaa !9
  %510 = getelementptr double, ptr %5, i64 %indvars.iv1437
  %511 = load double, ptr %510, align 8, !tbaa !9
  %512 = load double, ptr %32, align 8, !tbaa !9
  %513 = fmul double %511, %512
  store double %513, ptr %18, align 8, !tbaa !9
  call void @dlartg_(ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef nonnull %26, ptr noundef nonnull %29, ptr noundef nonnull %499) #6
  %514 = load double, ptr %31, align 8, !tbaa !9
  %515 = sub nsw i64 %indvars.iv1437, %483
  %516 = getelementptr double, ptr %13, i64 %515
  store double %514, ptr %516, align 8, !tbaa !9
  %517 = load double, ptr %32, align 8, !tbaa !9
  %518 = trunc nsw i64 %515 to i32
  %519 = add i32 %89, %518
  %520 = sext i32 %519 to i64
  %521 = getelementptr inbounds double, ptr %44, i64 %520
  store double %517, ptr %521, align 8, !tbaa !9
  %522 = load double, ptr %26, align 8, !tbaa !9
  %gep1656 = getelementptr double, ptr %invariant.gep1655, i64 %515
  store double %522, ptr %gep1656, align 8, !tbaa !9
  %523 = load double, ptr %29, align 8, !tbaa !9
  %gep1658 = getelementptr double, ptr %invariant.gep1657, i64 %515
  store double %523, ptr %gep1658, align 8, !tbaa !9
  %524 = load i32, ptr %16, align 4, !tbaa !5
  %525 = sext i32 %524 to i64
  %.not901.not = icmp slt i64 %indvars.iv1437, %525
  br i1 %.not901.not, label %.lr.ph1201, label %._crit_edge1202, !llvm.loop !19

._crit_edge1202:                                  ; preds = %507, %482, %.._crit_edge1202_crit_edge
  %526 = phi double [ %.pre1475, %.._crit_edge1202_crit_edge ], [ %496, %482 ], [ %523, %507 ]
  %527 = phi double [ 1.000000e+00, %.._crit_edge1202_crit_edge ], [ %495, %482 ], [ %522, %507 ]
  %528 = phi double [ 1.000000e+00, %.._crit_edge1202_crit_edge ], [ %493, %482 ], [ %514, %507 ]
  %529 = load double, ptr %252, align 8, !tbaa !9
  %530 = fmul double %529, %528
  %531 = fmul double %530, %527
  store double %531, ptr %252, align 8, !tbaa !9
  %532 = fmul double %530, %526
  store double %532, ptr %256, align 8, !tbaa !9
  %533 = load i32, ptr %2, align 4, !tbaa !5
  %534 = icmp sgt i32 %533, 0
  br i1 %534, label %535, label %544

535:                                              ; preds = %._crit_edge1202
  %536 = add i32 %.0846.ph9671176, 1
  %537 = add i32 %536, %.neg9601004
  store i32 %537, ptr %16, align 4, !tbaa !5
  %538 = load i32, ptr %1, align 4, !tbaa !5
  %539 = sext i32 %538 to i64
  %540 = getelementptr inbounds double, ptr %44, i64 %539
  %541 = add nsw i32 %307, %35
  %542 = sext i32 %541 to i64
  %543 = getelementptr inbounds %struct.doublecomplex, ptr %37, i64 %542
  call void @zlasr_(ptr noundef nonnull @.str, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %16, ptr noundef nonnull %2, ptr noundef %13, ptr noundef nonnull %540, ptr noundef %543, ptr noundef nonnull %8) #6
  br label %544

544:                                              ; preds = %535, %._crit_edge1202
  %545 = load i32, ptr %3, align 4, !tbaa !5
  %546 = icmp sgt i32 %545, 0
  br i1 %546, label %547, label %552

547:                                              ; preds = %544
  %548 = add i32 %.0846.ph9671176, 1
  %549 = add i32 %548, %.neg9601004
  store i32 %549, ptr %16, align 4, !tbaa !5
  %550 = mul nsw i32 %307, %38
  %551 = sext i32 %550 to i64
  %gep1222 = getelementptr %struct.doublecomplex, ptr %invariant.gep1172, i64 %551
  call void @zlasr_(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %3, ptr noundef nonnull %16, ptr noundef nonnull %238, ptr noundef %gep1206, ptr noundef %gep1222, ptr noundef nonnull %10) #6
  br label %552

552:                                              ; preds = %547, %544
  %553 = load i32, ptr %4, align 4, !tbaa !5
  %554 = icmp sgt i32 %553, 0
  br i1 %554, label %555, label %561

555:                                              ; preds = %552
  %556 = add i32 %.0846.ph9671176, 1
  %557 = add i32 %556, %.neg9601004
  store i32 %557, ptr %16, align 4, !tbaa !5
  %558 = add nsw i32 %307, %41
  %559 = sext i32 %558 to i64
  %560 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %559
  call void @zlasr_(ptr noundef nonnull @.str, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %16, ptr noundef nonnull %4, ptr noundef nonnull %238, ptr noundef %gep1206, ptr noundef %560, ptr noundef nonnull %12) #6
  br label %561

561:                                              ; preds = %555, %552
  %562 = load double, ptr %256, align 8, !tbaa !9
  store double %562, ptr %17, align 8, !tbaa !9
  %563 = fcmp oge double %562, 0.000000e+00
  %564 = fneg double %562
  %565 = select i1 %563, double %562, double %564
  %566 = fcmp ugt double %565, %.0832
  br i1 %566, label %.outer, label %567

567:                                              ; preds = %561
  store double 0.000000e+00, ptr %256, align 8, !tbaa !9
  br label %.outer

568:                                              ; preds = %445, %.thread941, %479
  %.neg9601009 = phi i32 [ %.neg9601005, %.thread941 ], [ %.neg9601005, %479 ], [ %.neg96010081506, %445 ]
  %.1840917927947949 = phi i32 [ %.1840917928934, %.thread941 ], [ %.1840917928934, %479 ], [ %.18409171503, %445 ]
  %569 = phi i32 [ %475, %.thread941 ], [ %477, %479 ], [ %447, %445 ]
  store double 1.000000e+00, ptr %31, align 8, !tbaa !9
  store double 1.000000e+00, ptr %26, align 8, !tbaa !9
  %570 = add nsw i32 %.0838, 2
  store i32 %570, ptr %16, align 4, !tbaa !5
  %.not9001193 = icmp slt i32 %.0846.ph9671176, %570
  br i1 %.not9001193, label %.._crit_edge1197_crit_edge, label %571

.._crit_edge1197_crit_edge:                       ; preds = %568
  %.pre1471 = load double, ptr %29, align 8, !tbaa !9
  %.pre1472 = sext i32 %307 to i64
  br label %._crit_edge1197

571:                                              ; preds = %568
  %572 = sext i32 %307 to i64
  %573 = getelementptr inbounds double, ptr %33, i64 %257
  %574 = load double, ptr %573, align 8, !tbaa !9
  store double %574, ptr %17, align 8, !tbaa !9
  %indvars.iv.next1434.peel = add nsw i64 %257, -1
  %575 = getelementptr inbounds double, ptr %34, i64 %indvars.iv.next1434.peel
  call void @dlartg_(ptr noundef nonnull %17, ptr noundef nonnull %575, ptr noundef nonnull %31, ptr noundef nonnull %32, ptr noundef nonnull %25) #6
  %.pre1467 = load double, ptr %25, align 8, !tbaa !9
  %.phi.trans.insert1468 = getelementptr inbounds double, ptr %33, i64 %indvars.iv.next1434.peel
  %.pre1469 = load double, ptr %.phi.trans.insert1468, align 8, !tbaa !9
  %576 = load double, ptr %26, align 8, !tbaa !9
  %577 = fmul double %576, %.pre1467
  store double %577, ptr %17, align 8, !tbaa !9
  %578 = load double, ptr %32, align 8, !tbaa !9
  %579 = fmul double %.pre1469, %578
  store double %579, ptr %18, align 8, !tbaa !9
  call void @dlartg_(ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef nonnull %26, ptr noundef nonnull %29, ptr noundef nonnull %573) #6
  %580 = load double, ptr %31, align 8, !tbaa !9
  %581 = sub nsw i64 %257, %572
  %582 = getelementptr inbounds double, ptr %44, i64 %581
  store double %580, ptr %582, align 8, !tbaa !9
  %583 = load double, ptr %32, align 8, !tbaa !9
  %584 = fneg double %583
  %gep1666 = getelementptr double, ptr %invariant.gep1665, i64 %581
  store double %584, ptr %gep1666, align 8, !tbaa !9
  %585 = load double, ptr %26, align 8, !tbaa !9
  %gep1668 = getelementptr double, ptr %invariant.gep1667, i64 %581
  store double %585, ptr %gep1668, align 8, !tbaa !9
  %586 = load double, ptr %29, align 8, !tbaa !9
  %587 = fneg double %586
  %gep1670 = getelementptr double, ptr %invariant.gep1669, i64 %581
  store double %587, ptr %gep1670, align 8, !tbaa !9
  %588 = load i32, ptr %16, align 4, !tbaa !5
  %.not900.not.peel = icmp sgt i32 %.0846.ph9671176, %588
  br i1 %.not900.not.peel, label %.lr.ph1196, label %._crit_edge1197

.lr.ph1196:                                       ; preds = %571, %599
  %589 = phi double [ %606, %599 ], [ %580, %571 ]
  %indvars.iv1433 = phi i64 [ %indvars.iv.next1434, %599 ], [ %indvars.iv.next1434.peel, %571 ]
  %590 = getelementptr inbounds double, ptr %33, i64 %indvars.iv1433
  %591 = load double, ptr %590, align 8, !tbaa !9
  %592 = fmul double %591, %589
  store double %592, ptr %17, align 8, !tbaa !9
  %indvars.iv.next1434 = add nsw i64 %indvars.iv1433, -1
  %593 = getelementptr inbounds double, ptr %34, i64 %indvars.iv.next1434
  call void @dlartg_(ptr noundef nonnull %17, ptr noundef nonnull %593, ptr noundef nonnull %31, ptr noundef nonnull %32, ptr noundef nonnull %25) #6
  %594 = icmp slt i64 %indvars.iv1433, %257
  %.pre1470 = load double, ptr %25, align 8, !tbaa !9
  br i1 %594, label %595, label %599

595:                                              ; preds = %.lr.ph1196
  %596 = load double, ptr %29, align 8, !tbaa !9
  %597 = fmul double %596, %.pre1470
  %598 = getelementptr inbounds double, ptr %34, i64 %indvars.iv1433
  store double %597, ptr %598, align 8, !tbaa !9
  br label %599

599:                                              ; preds = %595, %.lr.ph1196
  %600 = load double, ptr %26, align 8, !tbaa !9
  %601 = fmul double %600, %.pre1470
  store double %601, ptr %17, align 8, !tbaa !9
  %602 = getelementptr inbounds double, ptr %33, i64 %indvars.iv.next1434
  %603 = load double, ptr %602, align 8, !tbaa !9
  %604 = load double, ptr %32, align 8, !tbaa !9
  %605 = fmul double %603, %604
  store double %605, ptr %18, align 8, !tbaa !9
  call void @dlartg_(ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef nonnull %26, ptr noundef nonnull %29, ptr noundef nonnull %590) #6
  %606 = load double, ptr %31, align 8, !tbaa !9
  %607 = sub nsw i64 %indvars.iv1433, %572
  %608 = getelementptr inbounds double, ptr %44, i64 %607
  store double %606, ptr %608, align 8, !tbaa !9
  %609 = load double, ptr %32, align 8, !tbaa !9
  %610 = fneg double %609
  %gep1650 = getelementptr double, ptr %invariant.gep1649, i64 %607
  store double %610, ptr %gep1650, align 8, !tbaa !9
  %611 = load double, ptr %26, align 8, !tbaa !9
  %gep1652 = getelementptr double, ptr %invariant.gep1651, i64 %607
  store double %611, ptr %gep1652, align 8, !tbaa !9
  %612 = load double, ptr %29, align 8, !tbaa !9
  %613 = fneg double %612
  %gep1654 = getelementptr double, ptr %invariant.gep1653, i64 %607
  store double %613, ptr %gep1654, align 8, !tbaa !9
  %614 = load i32, ptr %16, align 4, !tbaa !5
  %615 = sext i32 %614 to i64
  %.not900.not = icmp sgt i64 %indvars.iv1433, %615
  br i1 %.not900.not, label %.lr.ph1196, label %._crit_edge1197, !llvm.loop !21

._crit_edge1197:                                  ; preds = %599, %571, %.._crit_edge1197_crit_edge
  %.pre-phi = phi i64 [ %.pre1472, %.._crit_edge1197_crit_edge ], [ %572, %571 ], [ %572, %599 ]
  %616 = phi double [ %.pre1471, %.._crit_edge1197_crit_edge ], [ %586, %571 ], [ %612, %599 ]
  %617 = phi double [ 1.000000e+00, %.._crit_edge1197_crit_edge ], [ %585, %571 ], [ %611, %599 ]
  %618 = phi double [ 1.000000e+00, %.._crit_edge1197_crit_edge ], [ %580, %571 ], [ %606, %599 ]
  %619 = getelementptr inbounds double, ptr %33, i64 %.pre-phi
  %620 = load double, ptr %619, align 8, !tbaa !9
  %621 = fmul double %620, %618
  %622 = fmul double %621, %617
  store double %622, ptr %619, align 8, !tbaa !9
  %623 = fmul double %621, %616
  %624 = getelementptr inbounds double, ptr %34, i64 %.pre-phi
  store double %623, ptr %624, align 8, !tbaa !9
  %625 = load i32, ptr %2, align 4, !tbaa !5
  %626 = icmp sgt i32 %625, 0
  br i1 %626, label %627, label %633

627:                                              ; preds = %._crit_edge1197
  %628 = add i32 %.0846.ph9671176, 1
  %629 = add i32 %628, %.neg9601009
  store i32 %629, ptr %16, align 4, !tbaa !5
  %630 = add nsw i32 %307, %35
  %631 = sext i32 %630 to i64
  %632 = getelementptr inbounds %struct.doublecomplex, ptr %37, i64 %631
  call void @zlasr_(ptr noundef nonnull @.str, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.8, ptr noundef nonnull %16, ptr noundef nonnull %2, ptr noundef nonnull %238, ptr noundef %gep1206, ptr noundef %632, ptr noundef nonnull %8) #6
  br label %633

633:                                              ; preds = %627, %._crit_edge1197
  %634 = load i32, ptr %3, align 4, !tbaa !5
  %635 = icmp sgt i32 %634, 0
  br i1 %635, label %636, label %644

636:                                              ; preds = %633
  %637 = add i32 %.0846.ph9671176, 1
  %638 = add i32 %637, %.neg9601009
  store i32 %638, ptr %16, align 4, !tbaa !5
  %639 = load i32, ptr %1, align 4, !tbaa !5
  %640 = sext i32 %639 to i64
  %641 = getelementptr inbounds double, ptr %44, i64 %640
  %642 = mul nsw i32 %307, %38
  %643 = sext i32 %642 to i64
  %gep1218 = getelementptr %struct.doublecomplex, ptr %invariant.gep1172, i64 %643
  call void @zlasr_(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.8, ptr noundef nonnull %3, ptr noundef nonnull %16, ptr noundef %13, ptr noundef nonnull %641, ptr noundef %gep1218, ptr noundef nonnull %10) #6
  br label %644

644:                                              ; preds = %636, %633
  %645 = load i32, ptr %4, align 4, !tbaa !5
  %646 = icmp sgt i32 %645, 0
  br i1 %646, label %647, label %656

647:                                              ; preds = %644
  %648 = add i32 %.0846.ph9671176, 1
  %649 = add i32 %648, %.neg9601009
  store i32 %649, ptr %16, align 4, !tbaa !5
  %650 = load i32, ptr %1, align 4, !tbaa !5
  %651 = sext i32 %650 to i64
  %652 = getelementptr inbounds double, ptr %44, i64 %651
  %653 = add nsw i32 %307, %41
  %654 = sext i32 %653 to i64
  %655 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %654
  call void @zlasr_(ptr noundef nonnull @.str, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.8, ptr noundef nonnull %16, ptr noundef nonnull %4, ptr noundef %13, ptr noundef nonnull %652, ptr noundef %655, ptr noundef nonnull %12) #6
  br label %656

656:                                              ; preds = %647, %644
  %657 = load double, ptr %624, align 8, !tbaa !9
  store double %657, ptr %17, align 8, !tbaa !9
  %658 = fcmp oge double %657, 0.000000e+00
  %659 = fneg double %657
  %660 = select i1 %658, double %657, double %659
  %661 = fcmp ugt double %660, %.0832
  br i1 %661, label %.outer, label %662

662:                                              ; preds = %656
  store double 0.000000e+00, ptr %624, align 8, !tbaa !9
  br label %.outer

663:                                              ; preds = %thread-pre-split937
  br i1 %467, label %664, label %800

664:                                              ; preds = %663
  %665 = sext i32 %307 to i64
  %666 = getelementptr inbounds double, ptr %33, i64 %665
  %667 = load double, ptr %666, align 8, !tbaa !9
  store double %667, ptr %17, align 8, !tbaa !9
  %668 = fcmp oge double %667, 0.000000e+00
  %669 = fneg double %667
  %670 = select i1 %668, double %667, double %669
  %671 = fsub double %670, %469
  %672 = fcmp ult double %667, 0.000000e+00
  %673 = load double, ptr @c_b49, align 8
  %674 = fcmp oge double %673, 0.000000e+00
  %.neg898 = fneg double %673
  br i1 %672, label %677, label %675

675:                                              ; preds = %664
  %676 = select i1 %674, double %673, double %.neg898
  br label %679

677:                                              ; preds = %664
  %678 = select i1 %674, double %.neg898, double %673
  br label %679

679:                                              ; preds = %677, %675
  %680 = phi double [ %676, %675 ], [ %678, %677 ]
  %681 = fdiv double %469, %667
  %682 = fadd double %681, %680
  %683 = fmul double %671, %682
  store double %683, ptr %23, align 8, !tbaa !9
  %684 = getelementptr inbounds double, ptr %34, i64 %665
  %685 = load double, ptr %684, align 8, !tbaa !9
  store double %685, ptr %24, align 8, !tbaa !9
  store i32 %253, ptr %16, align 4, !tbaa !5
  %.not8991188.not = icmp slt i32 %.0838, %253
  br i1 %.not8991188.not, label %686, label %._crit_edge1192

686:                                              ; preds = %679
  call void @dlartg_(ptr noundef nonnull %23, ptr noundef nonnull %24, ptr noundef nonnull %21, ptr noundef nonnull %22, ptr noundef nonnull %25) #6
  %.pre1466 = load double, ptr %666, align 8, !tbaa !9
  %687 = load double, ptr %21, align 8, !tbaa !9
  %688 = load double, ptr %22, align 8, !tbaa !9
  %689 = load double, ptr %684, align 8, !tbaa !9
  %690 = fmul double %688, %689
  %691 = call double @llvm.fmuladd.f64(double %687, double %.pre1466, double %690)
  store double %691, ptr %23, align 8, !tbaa !9
  %692 = fneg double %688
  %693 = fmul double %.pre1466, %692
  %694 = call double @llvm.fmuladd.f64(double %687, double %689, double %693)
  store double %694, ptr %684, align 8, !tbaa !9
  %695 = getelementptr double, ptr %5, i64 %665
  %696 = load double, ptr %695, align 8, !tbaa !9
  %697 = fmul double %688, %696
  store double %697, ptr %24, align 8, !tbaa !9
  %698 = fmul double %687, %696
  store double %698, ptr %695, align 8, !tbaa !9
  call void @dlartg_(ptr noundef nonnull %23, ptr noundef nonnull %24, ptr noundef nonnull %19, ptr noundef nonnull %20, ptr noundef nonnull %25) #6
  %699 = load double, ptr %25, align 8, !tbaa !9
  store double %699, ptr %666, align 8, !tbaa !9
  %700 = load double, ptr %19, align 8, !tbaa !9
  %701 = load double, ptr %684, align 8, !tbaa !9
  %702 = load double, ptr %20, align 8, !tbaa !9
  %703 = load double, ptr %695, align 8, !tbaa !9
  %704 = fmul double %702, %703
  %705 = call double @llvm.fmuladd.f64(double %700, double %701, double %704)
  store double %705, ptr %23, align 8, !tbaa !9
  %706 = fneg double %702
  %707 = fmul double %701, %706
  %708 = call double @llvm.fmuladd.f64(double %700, double %703, double %707)
  store double %708, ptr %695, align 8, !tbaa !9
  %709 = icmp slt i32 %307, %253
  br i1 %709, label %710, label %715

710:                                              ; preds = %686
  %711 = getelementptr double, ptr %6, i64 %665
  %712 = load double, ptr %711, align 8, !tbaa !9
  %713 = fmul double %702, %712
  store double %713, ptr %24, align 8, !tbaa !9
  %714 = fmul double %700, %712
  store double %714, ptr %711, align 8, !tbaa !9
  br label %715

715:                                              ; preds = %710, %686
  %716 = load double, ptr %21, align 8, !tbaa !9
  store double %716, ptr %13, align 8, !tbaa !9
  %717 = load double, ptr %22, align 8, !tbaa !9
  store double %717, ptr %243, align 8, !tbaa !9
  store double %700, ptr %244, align 8, !tbaa !9
  store double %702, ptr %245, align 8, !tbaa !9
  %718 = load i32, ptr %16, align 4, !tbaa !5
  %.not899.not.peel = icmp slt i32 %307, %718
  br i1 %.not899.not.peel, label %.lr.ph1191, label %._crit_edge1192

.lr.ph1191:                                       ; preds = %715, %753
  %indvars.iv1429.in = phi i64 [ %indvars.iv1429, %753 ], [ %665, %715 ]
  %indvars.iv1429 = add nsw i64 %indvars.iv1429.in, 1
  call void @dlartg_(ptr noundef nonnull %23, ptr noundef nonnull %24, ptr noundef nonnull %21, ptr noundef nonnull %22, ptr noundef nonnull %25) #6
  %.not1493 = icmp slt i64 %indvars.iv1429.in, %665
  br i1 %.not1493, label %721, label %719

719:                                              ; preds = %.lr.ph1191
  %720 = load double, ptr %25, align 8, !tbaa !9
  %gep1187 = getelementptr double, ptr %invariant.gep1186, i64 %indvars.iv1429
  store double %720, ptr %gep1187, align 8, !tbaa !9
  br label %721

721:                                              ; preds = %719, %.lr.ph1191
  %722 = load double, ptr %21, align 8, !tbaa !9
  %723 = getelementptr double, ptr %5, i64 %indvars.iv1429.in
  %724 = load double, ptr %723, align 8, !tbaa !9
  %725 = load double, ptr %22, align 8, !tbaa !9
  %726 = getelementptr double, ptr %6, i64 %indvars.iv1429.in
  %727 = load double, ptr %726, align 8, !tbaa !9
  %728 = fmul double %725, %727
  %729 = call double @llvm.fmuladd.f64(double %722, double %724, double %728)
  store double %729, ptr %23, align 8, !tbaa !9
  %730 = fneg double %725
  %731 = fmul double %724, %730
  %732 = call double @llvm.fmuladd.f64(double %722, double %727, double %731)
  store double %732, ptr %726, align 8, !tbaa !9
  %733 = getelementptr double, ptr %5, i64 %indvars.iv1429
  %734 = load double, ptr %733, align 8, !tbaa !9
  %735 = fmul double %725, %734
  store double %735, ptr %24, align 8, !tbaa !9
  %736 = fmul double %722, %734
  store double %736, ptr %733, align 8, !tbaa !9
  call void @dlartg_(ptr noundef nonnull %23, ptr noundef nonnull %24, ptr noundef nonnull %19, ptr noundef nonnull %20, ptr noundef nonnull %25) #6
  %737 = load double, ptr %25, align 8, !tbaa !9
  store double %737, ptr %723, align 8, !tbaa !9
  %738 = load double, ptr %19, align 8, !tbaa !9
  %739 = load double, ptr %726, align 8, !tbaa !9
  %740 = load double, ptr %20, align 8, !tbaa !9
  %741 = load double, ptr %733, align 8, !tbaa !9
  %742 = fmul double %740, %741
  %743 = call double @llvm.fmuladd.f64(double %738, double %739, double %742)
  store double %743, ptr %23, align 8, !tbaa !9
  %744 = fneg double %740
  %745 = fmul double %739, %744
  %746 = call double @llvm.fmuladd.f64(double %738, double %741, double %745)
  store double %746, ptr %733, align 8, !tbaa !9
  %747 = icmp slt i64 %indvars.iv1429, %258
  br i1 %747, label %748, label %753

748:                                              ; preds = %721
  %749 = getelementptr double, ptr %6, i64 %indvars.iv1429
  %750 = load double, ptr %749, align 8, !tbaa !9
  %751 = fmul double %740, %750
  store double %751, ptr %24, align 8, !tbaa !9
  %752 = fmul double %738, %750
  store double %752, ptr %749, align 8, !tbaa !9
  br label %753

753:                                              ; preds = %748, %721
  %754 = load double, ptr %21, align 8, !tbaa !9
  %755 = sub nsw i64 %indvars.iv1429, %665
  %756 = getelementptr double, ptr %13, i64 %755
  store double %754, ptr %756, align 8, !tbaa !9
  %757 = load double, ptr %22, align 8, !tbaa !9
  %758 = trunc nsw i64 %755 to i32
  %759 = add i32 %89, %758
  %760 = sext i32 %759 to i64
  %761 = getelementptr inbounds double, ptr %44, i64 %760
  store double %757, ptr %761, align 8, !tbaa !9
  %gep1646 = getelementptr double, ptr %invariant.gep1645, i64 %755
  store double %738, ptr %gep1646, align 8, !tbaa !9
  %gep1648 = getelementptr double, ptr %invariant.gep1647, i64 %755
  store double %740, ptr %gep1648, align 8, !tbaa !9
  %762 = load i32, ptr %16, align 4, !tbaa !5
  %763 = sext i32 %762 to i64
  %.not899.not = icmp slt i64 %indvars.iv1429, %763
  br i1 %.not899.not, label %.lr.ph1191, label %._crit_edge1192, !llvm.loop !22

._crit_edge1192:                                  ; preds = %753, %715, %679
  %764 = phi double [ %683, %679 ], [ %705, %715 ], [ %743, %753 ]
  store double %764, ptr %256, align 8, !tbaa !9
  %765 = load i32, ptr %2, align 4, !tbaa !5
  %766 = icmp sgt i32 %765, 0
  br i1 %766, label %767, label %776

767:                                              ; preds = %._crit_edge1192
  %768 = add i32 %.0846.ph9671176, 1
  %769 = add i32 %768, %.neg9601005
  store i32 %769, ptr %16, align 4, !tbaa !5
  %770 = load i32, ptr %1, align 4, !tbaa !5
  %771 = sext i32 %770 to i64
  %772 = getelementptr inbounds double, ptr %44, i64 %771
  %773 = add nsw i32 %307, %35
  %774 = sext i32 %773 to i64
  %775 = getelementptr inbounds %struct.doublecomplex, ptr %37, i64 %774
  call void @zlasr_(ptr noundef nonnull @.str, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %16, ptr noundef nonnull %2, ptr noundef %13, ptr noundef nonnull %772, ptr noundef %775, ptr noundef nonnull %8) #6
  br label %776

776:                                              ; preds = %767, %._crit_edge1192
  %777 = load i32, ptr %3, align 4, !tbaa !5
  %778 = icmp sgt i32 %777, 0
  br i1 %778, label %779, label %784

779:                                              ; preds = %776
  %780 = add i32 %.0846.ph9671176, 1
  %781 = add i32 %780, %.neg9601005
  store i32 %781, ptr %16, align 4, !tbaa !5
  %782 = mul nsw i32 %307, %38
  %783 = sext i32 %782 to i64
  %gep1212 = getelementptr %struct.doublecomplex, ptr %invariant.gep1172, i64 %783
  call void @zlasr_(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %3, ptr noundef nonnull %16, ptr noundef nonnull %238, ptr noundef %gep1206, ptr noundef %gep1212, ptr noundef nonnull %10) #6
  br label %784

784:                                              ; preds = %779, %776
  %785 = load i32, ptr %4, align 4, !tbaa !5
  %786 = icmp sgt i32 %785, 0
  br i1 %786, label %787, label %793

787:                                              ; preds = %784
  %788 = add i32 %.0846.ph9671176, 1
  %789 = add i32 %788, %.neg9601005
  store i32 %789, ptr %16, align 4, !tbaa !5
  %790 = add nsw i32 %307, %41
  %791 = sext i32 %790 to i64
  %792 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %791
  call void @zlasr_(ptr noundef nonnull @.str, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %16, ptr noundef nonnull %4, ptr noundef nonnull %238, ptr noundef %gep1206, ptr noundef %792, ptr noundef nonnull %12) #6
  br label %793

793:                                              ; preds = %787, %784
  %794 = load double, ptr %256, align 8, !tbaa !9
  store double %794, ptr %17, align 8, !tbaa !9
  %795 = fcmp oge double %794, 0.000000e+00
  %796 = fneg double %794
  %797 = select i1 %795, double %794, double %796
  %798 = fcmp ugt double %797, %.0832
  br i1 %798, label %.outer, label %799

799:                                              ; preds = %793
  store double 0.000000e+00, ptr %256, align 8, !tbaa !9
  br label %.outer

800:                                              ; preds = %663
  %801 = load double, ptr %252, align 8, !tbaa !9
  store double %801, ptr %17, align 8, !tbaa !9
  %802 = fcmp oge double %801, 0.000000e+00
  %803 = fneg double %801
  %804 = select i1 %802, double %801, double %803
  %805 = fsub double %804, %469
  %806 = fcmp ult double %801, 0.000000e+00
  %807 = load double, ptr @c_b49, align 8
  %808 = fcmp oge double %807, 0.000000e+00
  %.neg = fneg double %807
  br i1 %806, label %811, label %809

809:                                              ; preds = %800
  %810 = select i1 %808, double %807, double %.neg
  br label %813

811:                                              ; preds = %800
  %812 = select i1 %808, double %.neg, double %807
  br label %813

813:                                              ; preds = %811, %809
  %814 = phi double [ %810, %809 ], [ %812, %811 ]
  %815 = fdiv double %469, %801
  %816 = fadd double %815, %814
  %817 = fmul double %805, %816
  store double %817, ptr %23, align 8, !tbaa !9
  %818 = load double, ptr %256, align 8, !tbaa !9
  store double %818, ptr %24, align 8, !tbaa !9
  %819 = add nsw i32 %.0838, 2
  store i32 %819, ptr %16, align 4, !tbaa !5
  %.not8971181 = icmp slt i32 %.0846.ph9671176, %819
  br i1 %.not8971181, label %.._crit_edge1185_crit_edge, label %820

.._crit_edge1185_crit_edge:                       ; preds = %813
  %.pre1488 = sext i32 %307 to i64
  br label %._crit_edge1185

820:                                              ; preds = %813
  %821 = sext i32 %819 to i64
  %822 = sext i32 %307 to i64
  call void @dlartg_(ptr noundef nonnull %23, ptr noundef nonnull %24, ptr noundef nonnull %21, ptr noundef nonnull %22, ptr noundef nonnull %25) #6
  %.phi.trans.insert1464 = getelementptr inbounds double, ptr %33, i64 %257
  %.pre1465 = load double, ptr %.phi.trans.insert1464, align 8, !tbaa !9
  %823 = load double, ptr %21, align 8, !tbaa !9
  %824 = getelementptr inbounds double, ptr %33, i64 %257
  %825 = load double, ptr %22, align 8, !tbaa !9
  %indvars.iv.next1426.peel = add nsw i64 %257, -1
  %826 = getelementptr inbounds double, ptr %34, i64 %indvars.iv.next1426.peel
  %827 = load double, ptr %826, align 8, !tbaa !9
  %828 = fmul double %825, %827
  %829 = call double @llvm.fmuladd.f64(double %823, double %.pre1465, double %828)
  store double %829, ptr %23, align 8, !tbaa !9
  %830 = fneg double %825
  %831 = fmul double %.pre1465, %830
  %832 = call double @llvm.fmuladd.f64(double %823, double %827, double %831)
  store double %832, ptr %826, align 8, !tbaa !9
  %833 = getelementptr inbounds double, ptr %33, i64 %indvars.iv.next1426.peel
  %834 = load double, ptr %833, align 8, !tbaa !9
  %835 = fmul double %825, %834
  store double %835, ptr %24, align 8, !tbaa !9
  %836 = fmul double %823, %834
  store double %836, ptr %833, align 8, !tbaa !9
  call void @dlartg_(ptr noundef nonnull %23, ptr noundef nonnull %24, ptr noundef nonnull %19, ptr noundef nonnull %20, ptr noundef nonnull %25) #6
  %837 = load double, ptr %25, align 8, !tbaa !9
  store double %837, ptr %824, align 8, !tbaa !9
  %838 = load double, ptr %19, align 8, !tbaa !9
  %839 = load double, ptr %826, align 8, !tbaa !9
  %840 = load double, ptr %20, align 8, !tbaa !9
  %841 = load double, ptr %833, align 8, !tbaa !9
  %842 = fmul double %840, %841
  %843 = call double @llvm.fmuladd.f64(double %838, double %839, double %842)
  store double %843, ptr %23, align 8, !tbaa !9
  %844 = fneg double %840
  %845 = fmul double %839, %844
  %846 = call double @llvm.fmuladd.f64(double %838, double %841, double %845)
  store double %846, ptr %833, align 8, !tbaa !9
  %847 = icmp sgt i32 %.0846.ph9671176, %819
  br i1 %847, label %848, label %852

848:                                              ; preds = %820
  %gep1180.peel = getelementptr double, ptr %invariant.gep1179, i64 %257
  %849 = load double, ptr %gep1180.peel, align 8, !tbaa !9
  %850 = fmul double %840, %849
  store double %850, ptr %24, align 8, !tbaa !9
  %851 = fmul double %838, %849
  store double %851, ptr %gep1180.peel, align 8, !tbaa !9
  br label %852

852:                                              ; preds = %848, %820
  %853 = load double, ptr %21, align 8, !tbaa !9
  %854 = sub nsw i64 %257, %822
  %855 = getelementptr inbounds double, ptr %44, i64 %854
  store double %853, ptr %855, align 8, !tbaa !9
  %856 = load double, ptr %22, align 8, !tbaa !9
  %857 = fneg double %856
  %gep1660 = getelementptr double, ptr %invariant.gep1659, i64 %854
  store double %857, ptr %gep1660, align 8, !tbaa !9
  %gep1662 = getelementptr double, ptr %invariant.gep1661, i64 %854
  store double %838, ptr %gep1662, align 8, !tbaa !9
  %gep1664 = getelementptr double, ptr %invariant.gep1663, i64 %854
  store double %844, ptr %gep1664, align 8, !tbaa !9
  %858 = load i32, ptr %16, align 4, !tbaa !5
  %.not897.not.peel = icmp sgt i32 %.0846.ph9671176, %858
  br i1 %.not897.not.peel, label %.lr.ph1184, label %._crit_edge1185

.lr.ph1184:                                       ; preds = %852, %894
  %indvars.iv1425 = phi i64 [ %indvars.iv.next1426, %894 ], [ %indvars.iv.next1426.peel, %852 ]
  call void @dlartg_(ptr noundef nonnull %23, ptr noundef nonnull %24, ptr noundef nonnull %21, ptr noundef nonnull %22, ptr noundef nonnull %25) #6
  %859 = icmp slt i64 %indvars.iv1425, %257
  br i1 %859, label %860, label %863

860:                                              ; preds = %.lr.ph1184
  %861 = load double, ptr %25, align 8, !tbaa !9
  %862 = getelementptr inbounds double, ptr %34, i64 %indvars.iv1425
  store double %861, ptr %862, align 8, !tbaa !9
  br label %863

863:                                              ; preds = %860, %.lr.ph1184
  %864 = load double, ptr %21, align 8, !tbaa !9
  %865 = getelementptr inbounds double, ptr %33, i64 %indvars.iv1425
  %866 = load double, ptr %865, align 8, !tbaa !9
  %867 = load double, ptr %22, align 8, !tbaa !9
  %indvars.iv.next1426 = add nsw i64 %indvars.iv1425, -1
  %868 = getelementptr inbounds double, ptr %34, i64 %indvars.iv.next1426
  %869 = load double, ptr %868, align 8, !tbaa !9
  %870 = fmul double %867, %869
  %871 = call double @llvm.fmuladd.f64(double %864, double %866, double %870)
  store double %871, ptr %23, align 8, !tbaa !9
  %872 = fneg double %867
  %873 = fmul double %866, %872
  %874 = call double @llvm.fmuladd.f64(double %864, double %869, double %873)
  store double %874, ptr %868, align 8, !tbaa !9
  %875 = getelementptr inbounds double, ptr %33, i64 %indvars.iv.next1426
  %876 = load double, ptr %875, align 8, !tbaa !9
  %877 = fmul double %867, %876
  store double %877, ptr %24, align 8, !tbaa !9
  %878 = fmul double %864, %876
  store double %878, ptr %875, align 8, !tbaa !9
  call void @dlartg_(ptr noundef nonnull %23, ptr noundef nonnull %24, ptr noundef nonnull %19, ptr noundef nonnull %20, ptr noundef nonnull %25) #6
  %879 = load double, ptr %25, align 8, !tbaa !9
  store double %879, ptr %865, align 8, !tbaa !9
  %880 = load double, ptr %19, align 8, !tbaa !9
  %881 = load double, ptr %868, align 8, !tbaa !9
  %882 = load double, ptr %20, align 8, !tbaa !9
  %883 = load double, ptr %875, align 8, !tbaa !9
  %884 = fmul double %882, %883
  %885 = call double @llvm.fmuladd.f64(double %880, double %881, double %884)
  store double %885, ptr %23, align 8, !tbaa !9
  %886 = fneg double %882
  %887 = fmul double %881, %886
  %888 = call double @llvm.fmuladd.f64(double %880, double %883, double %887)
  store double %888, ptr %875, align 8, !tbaa !9
  %889 = icmp sgt i64 %indvars.iv1425, %821
  br i1 %889, label %890, label %894

890:                                              ; preds = %863
  %gep1180 = getelementptr double, ptr %invariant.gep1179, i64 %indvars.iv1425
  %891 = load double, ptr %gep1180, align 8, !tbaa !9
  %892 = fmul double %882, %891
  store double %892, ptr %24, align 8, !tbaa !9
  %893 = fmul double %880, %891
  store double %893, ptr %gep1180, align 8, !tbaa !9
  br label %894

894:                                              ; preds = %890, %863
  %895 = load double, ptr %21, align 8, !tbaa !9
  %896 = sub nsw i64 %indvars.iv1425, %822
  %897 = getelementptr inbounds double, ptr %44, i64 %896
  store double %895, ptr %897, align 8, !tbaa !9
  %898 = load double, ptr %22, align 8, !tbaa !9
  %899 = fneg double %898
  %gep1640 = getelementptr double, ptr %invariant.gep1639, i64 %896
  store double %899, ptr %gep1640, align 8, !tbaa !9
  %gep1642 = getelementptr double, ptr %invariant.gep1641, i64 %896
  store double %880, ptr %gep1642, align 8, !tbaa !9
  %gep1644 = getelementptr double, ptr %invariant.gep1643, i64 %896
  store double %886, ptr %gep1644, align 8, !tbaa !9
  %900 = load i32, ptr %16, align 4, !tbaa !5
  %901 = sext i32 %900 to i64
  %.not897.not = icmp sgt i64 %indvars.iv1425, %901
  br i1 %.not897.not, label %.lr.ph1184, label %._crit_edge1185, !llvm.loop !23

._crit_edge1185:                                  ; preds = %894, %852, %.._crit_edge1185_crit_edge
  %.pre-phi1489 = phi i64 [ %.pre1488, %.._crit_edge1185_crit_edge ], [ %822, %852 ], [ %822, %894 ]
  %902 = phi double [ %817, %.._crit_edge1185_crit_edge ], [ %843, %852 ], [ %885, %894 ]
  %903 = getelementptr inbounds double, ptr %34, i64 %.pre-phi1489
  store double %902, ptr %903, align 8, !tbaa !9
  store double %902, ptr %17, align 8, !tbaa !9
  %904 = fcmp oge double %902, 0.000000e+00
  %905 = fneg double %902
  %906 = select i1 %904, double %902, double %905
  %907 = fcmp ugt double %906, %.0832
  br i1 %907, label %909, label %908

908:                                              ; preds = %._crit_edge1185
  store double 0.000000e+00, ptr %903, align 8, !tbaa !9
  br label %909

909:                                              ; preds = %908, %._crit_edge1185
  %910 = load i32, ptr %2, align 4, !tbaa !5
  %911 = icmp sgt i32 %910, 0
  br i1 %911, label %912, label %918

912:                                              ; preds = %909
  %913 = add i32 %.0846.ph9671176, 1
  %914 = add i32 %913, %.neg9601005
  store i32 %914, ptr %16, align 4, !tbaa !5
  %915 = add nsw i32 %307, %35
  %916 = sext i32 %915 to i64
  %917 = getelementptr inbounds %struct.doublecomplex, ptr %37, i64 %916
  call void @zlasr_(ptr noundef nonnull @.str, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.8, ptr noundef nonnull %16, ptr noundef nonnull %2, ptr noundef nonnull %238, ptr noundef %gep1206, ptr noundef %917, ptr noundef nonnull %8) #6
  br label %918

918:                                              ; preds = %912, %909
  %919 = load i32, ptr %3, align 4, !tbaa !5
  %920 = icmp sgt i32 %919, 0
  br i1 %920, label %921, label %929

921:                                              ; preds = %918
  %922 = add i32 %.0846.ph9671176, 1
  %923 = add i32 %922, %.neg9601005
  store i32 %923, ptr %16, align 4, !tbaa !5
  %924 = load i32, ptr %1, align 4, !tbaa !5
  %925 = sext i32 %924 to i64
  %926 = getelementptr inbounds double, ptr %44, i64 %925
  %927 = mul nsw i32 %307, %38
  %928 = sext i32 %927 to i64
  %gep1208 = getelementptr %struct.doublecomplex, ptr %invariant.gep1172, i64 %928
  call void @zlasr_(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.8, ptr noundef nonnull %3, ptr noundef nonnull %16, ptr noundef %13, ptr noundef nonnull %926, ptr noundef %gep1208, ptr noundef nonnull %10) #6
  br label %929

929:                                              ; preds = %921, %918
  %930 = load i32, ptr %4, align 4, !tbaa !5
  %931 = icmp sgt i32 %930, 0
  br i1 %931, label %932, label %.outer

932:                                              ; preds = %929
  %933 = add i32 %.0846.ph9671176, 1
  %934 = add i32 %933, %.neg9601005
  store i32 %934, ptr %16, align 4, !tbaa !5
  %935 = load i32, ptr %1, align 4, !tbaa !5
  %936 = sext i32 %935 to i64
  %937 = getelementptr inbounds double, ptr %44, i64 %936
  %938 = add nsw i32 %307, %41
  %939 = sext i32 %938 to i64
  %940 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %939
  call void @zlasr_(ptr noundef nonnull @.str, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.8, ptr noundef nonnull %16, ptr noundef nonnull %4, ptr noundef %13, ptr noundef nonnull %937, ptr noundef %940, ptr noundef nonnull %12) #6
  br label %.outer

.outer:                                           ; preds = %799, %793, %932, %929, %567, %561, %662, %656
  %941 = phi i32 [ %477, %799 ], [ %477, %793 ], [ %477, %932 ], [ %477, %929 ], [ %481, %567 ], [ %481, %561 ], [ %569, %662 ], [ %569, %656 ]
  %.1840917927946 = phi i32 [ %.1840917928934, %799 ], [ %.1840917928934, %793 ], [ %.1840917928934, %932 ], [ %.1840917928934, %929 ], [ %.1840917927947948, %567 ], [ %.1840917927947948, %561 ], [ %.1840917927947949, %662 ], [ %.1840917927947949, %656 ]
  %942 = icmp slt i32 %.0846.ph9671176, 2
  br i1 %942, label %.loopexit965, label %.lr.ph1099.lr.ph.lr.ph

.loopexit965:                                     ; preds = %.outer, %.outer966.backedge, %227, %82
  %943 = load i32, ptr %1, align 4, !tbaa !5
  store i32 %943, ptr %16, align 4, !tbaa !5
  %.not9031235 = icmp slt i32 %943, 1
  br i1 %.not9031235, label %.loopexit, label %.lr.ph1238.preheader

.lr.ph1238.preheader:                             ; preds = %.loopexit965
  %944 = sext i32 %35 to i64
  %invariant.gep1671 = getelementptr %struct.doublecomplex, ptr %37, i64 %944
  br label %.lr.ph1238

.lr.ph1238:                                       ; preds = %.lr.ph1238.preheader, %954
  %945 = phi i32 [ %943, %.lr.ph1238.preheader ], [ %955, %954 ]
  %indvars.iv1446 = phi i64 [ 1, %.lr.ph1238.preheader ], [ %indvars.iv.next1447, %954 ]
  %946 = getelementptr inbounds double, ptr %33, i64 %indvars.iv1446
  %947 = load double, ptr %946, align 8, !tbaa !9
  %948 = fcmp olt double %947, 0.000000e+00
  br i1 %948, label %949, label %954

949:                                              ; preds = %.lr.ph1238
  %950 = fneg double %947
  store double %950, ptr %946, align 8, !tbaa !9
  %951 = load i32, ptr %2, align 4, !tbaa !5
  %952 = icmp sgt i32 %951, 0
  br i1 %952, label %953, label %954

953:                                              ; preds = %949
  %gep1672 = getelementptr %struct.doublecomplex, ptr %invariant.gep1671, i64 %indvars.iv1446
  call void @zdscal_(ptr noundef nonnull %2, ptr noundef nonnull @c_b72, ptr noundef %gep1672, ptr noundef nonnull %8) #6
  %.pre1476 = load i32, ptr %16, align 4, !tbaa !5
  br label %954

954:                                              ; preds = %.lr.ph1238, %953, %949
  %955 = phi i32 [ %945, %.lr.ph1238 ], [ %.pre1476, %953 ], [ %945, %949 ]
  %indvars.iv.next1447 = add nuw nsw i64 %indvars.iv1446, 1
  %956 = sext i32 %955 to i64
  %.not903.not = icmp slt i64 %indvars.iv1446, %956
  br i1 %.not903.not, label %.lr.ph1238, label %._crit_edge1239, !llvm.loop !24

._crit_edge1239:                                  ; preds = %954
  %.pre1477 = load i32, ptr %1, align 4, !tbaa !5
  %957 = add nsw i32 %.pre1477, -1
  store i32 %957, ptr %16, align 4, !tbaa !5
  %invariant.gep1249 = getelementptr i8, ptr %40, i64 16
  %.not9041253 = icmp slt i32 %.pre1477, 2
  br i1 %.not9041253, label %.loopexit, label %.lr.ph1257

.lr.ph1257:                                       ; preds = %._crit_edge1239
  %958 = add i32 %41, 1
  br label %959

959:                                              ; preds = %.lr.ph1257, %1018
  %indvars.iv1452 = phi i32 [ 1, %.lr.ph1257 ], [ %indvars.iv.next1453, %1018 ]
  %.9.neg1255 = phi i32 [ -1, %.lr.ph1257 ], [ %.9.neg, %1018 ]
  %.91254 = phi i32 [ 1, %.lr.ph1257 ], [ %1019, %1018 ]
  %960 = load double, ptr %5, align 8, !tbaa !9
  %961 = load i32, ptr %1, align 4, !tbaa !5
  %962 = add nsw i32 %.9.neg1255, 1
  %963 = add i32 %962, %961
  %.not9051240 = icmp slt i32 %963, 2
  br i1 %.not9051240, label %._crit_edge1246, label %.lr.ph1245.preheader

.lr.ph1245.preheader:                             ; preds = %959
  %964 = add i32 %961, %indvars.iv1452
  %wide.trip.count1454 = zext i32 %964 to i64
  %xtraiter1947 = and i64 %wide.trip.count1454, 1
  %965 = icmp eq i32 %964, 3
  br i1 %965, label %._crit_edge1246.loopexit.unr-lcssa, label %.lr.ph1245.preheader.new

.lr.ph1245.preheader.new:                         ; preds = %.lr.ph1245.preheader
  %966 = and i64 %wide.trip.count1454, 4294967294
  %967 = add nsw i64 %966, -4
  br label %.lr.ph1245

.lr.ph1245:                                       ; preds = %.lr.ph1245, %.lr.ph1245.preheader.new
  %indvars.iv1449 = phi i64 [ 2, %.lr.ph1245.preheader.new ], [ %indvars.iv.next1450.1, %.lr.ph1245 ]
  %.18561242 = phi double [ %960, %.lr.ph1245.preheader.new ], [ %.2857.1, %.lr.ph1245 ]
  %.08581241 = phi i32 [ 1, %.lr.ph1245.preheader.new ], [ %.1859.1, %.lr.ph1245 ]
  %niter1952 = phi i64 [ 0, %.lr.ph1245.preheader.new ], [ %niter1952.next.1, %.lr.ph1245 ]
  %968 = getelementptr inbounds double, ptr %33, i64 %indvars.iv1449
  %969 = load double, ptr %968, align 8, !tbaa !9
  %970 = fcmp ugt double %969, %.18561242
  %971 = trunc nuw nsw i64 %indvars.iv1449 to i32
  %.1859 = select i1 %970, i32 %.08581241, i32 %971
  %.2857 = select i1 %970, double %.18561242, double %969
  %972 = getelementptr double, ptr %5, i64 %indvars.iv1449
  %973 = load double, ptr %972, align 8, !tbaa !9
  %974 = fcmp ugt double %973, %.2857
  %975 = trunc i64 %indvars.iv1449 to i32
  %976 = or disjoint i32 %975, 1
  %.1859.1 = select i1 %974, i32 %.1859, i32 %976
  %.2857.1 = select i1 %974, double %.2857, double %973
  %indvars.iv.next1450.1 = add nuw nsw i64 %indvars.iv1449, 2
  %niter1952.next.1 = add i64 %niter1952, 2
  %niter1952.ncmp.1 = icmp eq i64 %niter1952, %967
  br i1 %niter1952.ncmp.1, label %._crit_edge1246.loopexit.unr-lcssa, label %.lr.ph1245, !llvm.loop !25

._crit_edge1246.loopexit.unr-lcssa:               ; preds = %.lr.ph1245, %.lr.ph1245.preheader
  %.1859.lcssa.ph = phi i32 [ poison, %.lr.ph1245.preheader ], [ %.1859.1, %.lr.ph1245 ]
  %.2857.lcssa.ph = phi double [ poison, %.lr.ph1245.preheader ], [ %.2857.1, %.lr.ph1245 ]
  %indvars.iv1449.unr = phi i64 [ 2, %.lr.ph1245.preheader ], [ %indvars.iv.next1450.1, %.lr.ph1245 ]
  %.18561242.unr = phi double [ %960, %.lr.ph1245.preheader ], [ %.2857.1, %.lr.ph1245 ]
  %.08581241.unr = phi i32 [ 1, %.lr.ph1245.preheader ], [ %.1859.1, %.lr.ph1245 ]
  %lcmp.mod1948.not = icmp eq i64 %xtraiter1947, 0
  br i1 %lcmp.mod1948.not, label %._crit_edge1246, label %.lr.ph1245.epil

.lr.ph1245.epil:                                  ; preds = %._crit_edge1246.loopexit.unr-lcssa
  %977 = getelementptr inbounds double, ptr %33, i64 %indvars.iv1449.unr
  %978 = load double, ptr %977, align 8, !tbaa !9
  %979 = fcmp ugt double %978, %.18561242.unr
  %980 = trunc nuw nsw i64 %indvars.iv1449.unr to i32
  %.1859.epil = select i1 %979, i32 %.08581241.unr, i32 %980
  %.2857.epil = select i1 %979, double %.18561242.unr, double %978
  br label %._crit_edge1246

._crit_edge1246:                                  ; preds = %.lr.ph1245.epil, %._crit_edge1246.loopexit.unr-lcssa, %959
  %.0858.lcssa = phi i32 [ 1, %959 ], [ %.1859.lcssa.ph, %._crit_edge1246.loopexit.unr-lcssa ], [ %.1859.epil, %.lr.ph1245.epil ]
  %.1856.lcssa = phi double [ %960, %959 ], [ %.2857.lcssa.ph, %._crit_edge1246.loopexit.unr-lcssa ], [ %.2857.epil, %.lr.ph1245.epil ]
  %.not906 = icmp eq i32 %.0858.lcssa, %963
  br i1 %.not906, label %1018, label %981

981:                                              ; preds = %._crit_edge1246
  %982 = sext i32 %963 to i64
  %983 = getelementptr inbounds double, ptr %33, i64 %982
  %984 = load double, ptr %983, align 8, !tbaa !9
  %985 = sext i32 %.0858.lcssa to i64
  %986 = getelementptr inbounds double, ptr %33, i64 %985
  store double %984, ptr %986, align 8, !tbaa !9
  store double %.1856.lcssa, ptr %983, align 8, !tbaa !9
  %987 = load i32, ptr %2, align 4, !tbaa !5
  %988 = icmp sgt i32 %987, 0
  br i1 %988, label %989, label %996

989:                                              ; preds = %981
  %990 = add nsw i32 %.0858.lcssa, %35
  %991 = sext i32 %990 to i64
  %992 = getelementptr inbounds %struct.doublecomplex, ptr %37, i64 %991
  %993 = add nsw i32 %963, %35
  %994 = sext i32 %993 to i64
  %995 = getelementptr inbounds %struct.doublecomplex, ptr %37, i64 %994
  call void @zswap_(ptr noundef nonnull %2, ptr noundef %992, ptr noundef nonnull %8, ptr noundef %995, ptr noundef nonnull %8) #6
  br label %996

996:                                              ; preds = %989, %981
  %997 = load i32, ptr %3, align 4, !tbaa !5
  %998 = icmp sgt i32 %997, 0
  br i1 %998, label %999, label %1006

999:                                              ; preds = %996
  %1000 = mul nsw i32 %.0858.lcssa, %38
  %1001 = sext i32 %1000 to i64
  %gep1250 = getelementptr %struct.doublecomplex, ptr %invariant.gep1249, i64 %1001
  %1002 = load i32, ptr %1, align 4, !tbaa !5
  %1003 = add i32 %962, %1002
  %1004 = mul nsw i32 %1003, %38
  %1005 = sext i32 %1004 to i64
  %gep1252 = getelementptr %struct.doublecomplex, ptr %invariant.gep1249, i64 %1005
  call void @zswap_(ptr noundef nonnull %3, ptr noundef %gep1250, ptr noundef nonnull @c__1, ptr noundef %gep1252, ptr noundef nonnull @c__1) #6
  br label %1006

1006:                                             ; preds = %999, %996
  %1007 = load i32, ptr %4, align 4, !tbaa !5
  %1008 = icmp sgt i32 %1007, 0
  br i1 %1008, label %1009, label %1018

1009:                                             ; preds = %1006
  %1010 = add nsw i32 %.0858.lcssa, %41
  %1011 = sext i32 %1010 to i64
  %1012 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %1011
  %1013 = load i32, ptr %1, align 4, !tbaa !5
  %1014 = add i32 %958, %.9.neg1255
  %1015 = add i32 %1014, %1013
  %1016 = sext i32 %1015 to i64
  %1017 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %1016
  call void @zswap_(ptr noundef nonnull %4, ptr noundef %1012, ptr noundef nonnull %12, ptr noundef %1017, ptr noundef nonnull %12) #6
  br label %1018

1018:                                             ; preds = %._crit_edge1246, %1009, %1006
  %1019 = add nuw nsw i32 %.91254, 1
  %.9.neg = xor i32 %.91254, -1
  %1020 = load i32, ptr %16, align 4, !tbaa !5
  %.not904.not = icmp slt i32 %.91254, %1020
  %indvars.iv.next1453 = add nsw i32 %indvars.iv1452, -1
  br i1 %.not904.not, label %959, label %.loopexit, !llvm.loop !26

1021:                                             ; preds = %.lr.ph1099.lr.ph.lr.ph
  store i32 0, ptr %14, align 4, !tbaa !5
  %1022 = load i32, ptr %1, align 4, !tbaa !5
  %.not902.not1231 = icmp sgt i32 %1022, 1
  br i1 %.not902.not1231, label %.lr.ph1234.preheader, label %.loopexit

.lr.ph1234.preheader:                             ; preds = %1021
  %wide.trip.count1444 = zext nneg i32 %1022 to i64
  %1023 = add nsw i64 %wide.trip.count1444, -1
  %xtraiter1943 = and i64 %1023, 1
  %1024 = icmp eq i32 %1022, 2
  br i1 %1024, label %.loopexit.loopexit1804.unr-lcssa, label %.lr.ph1234.preheader.new

.lr.ph1234.preheader.new:                         ; preds = %.lr.ph1234.preheader
  %unroll_iter1945 = and i64 %1023, -2
  br label %.lr.ph1234

.lr.ph1234:                                       ; preds = %1037, %.lr.ph1234.preheader.new
  %1025 = phi i32 [ 0, %.lr.ph1234.preheader.new ], [ %1038, %1037 ]
  %indvars.iv1441 = phi i64 [ 1, %.lr.ph1234.preheader.new ], [ %indvars.iv.next1442.1, %1037 ]
  %niter1946 = phi i64 [ 0, %.lr.ph1234.preheader.new ], [ %niter1946.next.1, %1037 ]
  %1026 = getelementptr inbounds double, ptr %34, i64 %indvars.iv1441
  %1027 = load double, ptr %1026, align 8, !tbaa !9
  %1028 = fcmp une double %1027, 0.000000e+00
  br i1 %1028, label %1029, label %.lr.ph1234.1

1029:                                             ; preds = %.lr.ph1234
  %1030 = add nsw i32 %1025, 1
  store i32 %1030, ptr %14, align 4, !tbaa !5
  br label %.lr.ph1234.1

.lr.ph1234.1:                                     ; preds = %.lr.ph1234, %1029
  %1031 = phi i32 [ %1025, %.lr.ph1234 ], [ %1030, %1029 ]
  %1032 = getelementptr double, ptr %6, i64 %indvars.iv1441
  %1033 = load double, ptr %1032, align 8, !tbaa !9
  %1034 = fcmp une double %1033, 0.000000e+00
  br i1 %1034, label %1035, label %1037

1035:                                             ; preds = %.lr.ph1234.1
  %1036 = add nsw i32 %1031, 1
  store i32 %1036, ptr %14, align 4, !tbaa !5
  br label %1037

1037:                                             ; preds = %1035, %.lr.ph1234.1
  %1038 = phi i32 [ %1031, %.lr.ph1234.1 ], [ %1036, %1035 ]
  %indvars.iv.next1442.1 = add nuw nsw i64 %indvars.iv1441, 2
  %niter1946.next.1 = add i64 %niter1946, 2
  %niter1946.ncmp.1 = icmp eq i64 %niter1946.next.1, %unroll_iter1945
  br i1 %niter1946.ncmp.1, label %.loopexit.loopexit1804.unr-lcssa.loopexit, label %.lr.ph1234, !llvm.loop !27

.loopexit.loopexit1804.unr-lcssa.loopexit:        ; preds = %1037
  %1039 = add nsw i32 %1038, 1
  br label %.loopexit.loopexit1804.unr-lcssa

.loopexit.loopexit1804.unr-lcssa:                 ; preds = %.loopexit.loopexit1804.unr-lcssa.loopexit, %.lr.ph1234.preheader
  %.unr = phi i32 [ 1, %.lr.ph1234.preheader ], [ %1039, %.loopexit.loopexit1804.unr-lcssa.loopexit ]
  %indvars.iv1441.unr = phi i64 [ 1, %.lr.ph1234.preheader ], [ %indvars.iv.next1442.1, %.loopexit.loopexit1804.unr-lcssa.loopexit ]
  %lcmp.mod1944.not = icmp eq i64 %xtraiter1943, 0
  br i1 %lcmp.mod1944.not, label %.loopexit, label %.lr.ph1234.epil

.lr.ph1234.epil:                                  ; preds = %.loopexit.loopexit1804.unr-lcssa
  %1040 = getelementptr inbounds double, ptr %34, i64 %indvars.iv1441.unr
  %1041 = load double, ptr %1040, align 8, !tbaa !9
  %1042 = fcmp une double %1041, 0.000000e+00
  br i1 %1042, label %1043, label %.loopexit

1043:                                             ; preds = %.lr.ph1234.epil
  store i32 %.unr, ptr %14, align 4, !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit1804.unr-lcssa, %1043, %.lr.ph1234.epil, %1018, %.loopexit965, %1021, %._crit_edge1239, %86, %82, %.thread913
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #6
  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
  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 void @dlasq1_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare double @dlamch_(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 @zlasr_(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 nofree nounwind willreturn memory(write)
declare double @pow(double noundef, double noundef) local_unnamed_addr #3

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

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

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

declare void @dlas2_(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 @zdscal_(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.umax.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, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = distinct !{!14, !12}
!15 = distinct !{!15, !12}
!16 = distinct !{!16, !12}
!17 = distinct !{!17, !12}
!18 = distinct !{!18, !12}
!19 = distinct !{!19, !12, !20}
!20 = !{!"llvm.loop.peeled.count", i32 1}
!21 = distinct !{!21, !12, !20}
!22 = distinct !{!22, !12, !20}
!23 = distinct !{!23, !12, !20}
!24 = distinct !{!24, !12}
!25 = distinct !{!25, !12}
!26 = distinct !{!26, !12}
!27 = distinct !{!27, !12}


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