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

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.doublecomplex = type { double, double }

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i32, align 4

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

92:                                               ; preds = %6
  store double 0.000000e+00, ptr %16, align 8, !tbaa !11
  %93 = load double, ptr %16, align 8, !tbaa !11
  store double %93, ptr %7, align 8
  store i32 1, ptr %32, align 4
  br label %6159

94:                                               ; preds = %6
  %95 = load ptr, ptr %11, align 8, !tbaa !5
  %96 = load i32, ptr %95, align 4, !tbaa !9
  %97 = icmp eq i32 %96, 1
  br i1 %97, label %98, label %113

98:                                               ; preds = %94
  %99 = load ptr, ptr %12, align 8, !tbaa !5
  %100 = getelementptr inbounds %struct.doublecomplex, ptr %99, i64 0
  %101 = getelementptr inbounds %struct.doublecomplex, ptr %100, i32 0, i32 0
  %102 = load double, ptr %101, align 8, !tbaa !13
  store double %102, ptr %17, align 8, !tbaa !11
  %103 = load double, ptr %17, align 8, !tbaa !11
  %104 = fcmp oge double %103, 0.000000e+00
  br i1 %104, label %105, label %107

105:                                              ; preds = %98
  %106 = load double, ptr %17, align 8, !tbaa !11
  br label %110

107:                                              ; preds = %98
  %108 = load double, ptr %17, align 8, !tbaa !11
  %109 = fneg double %108
  br label %110

110:                                              ; preds = %107, %105
  %111 = phi double [ %106, %105 ], [ %109, %107 ]
  store double %111, ptr %16, align 8, !tbaa !11
  %112 = load double, ptr %16, align 8, !tbaa !11
  store double %112, ptr %7, align 8
  store i32 1, ptr %32, align 4
  br label %6159

113:                                              ; preds = %94
  br label %114

114:                                              ; preds = %113
  store i32 1, ptr %30, align 4, !tbaa !9
  %115 = load ptr, ptr %11, align 8, !tbaa !5
  %116 = load i32, ptr %115, align 4, !tbaa !9
  %117 = srem i32 %116, 2
  %118 = icmp eq i32 %117, 0
  br i1 %118, label %119, label %120

119:                                              ; preds = %114
  store i32 0, ptr %30, align 4, !tbaa !9
  br label %120

120:                                              ; preds = %119, %114
  store i32 1, ptr %29, align 4, !tbaa !9
  %121 = load ptr, ptr %9, align 8, !tbaa !5
  %122 = call i32 @lsame_(ptr noundef %121, ptr noundef @.str)
  %123 = icmp ne i32 %122, 0
  br i1 %123, label %124, label %125

124:                                              ; preds = %120
  store i32 0, ptr %29, align 4, !tbaa !9
  br label %125

125:                                              ; preds = %124, %120
  store i32 1, ptr %31, align 4, !tbaa !9
  %126 = load ptr, ptr %10, align 8, !tbaa !5
  %127 = call i32 @lsame_(ptr noundef %126, ptr noundef @.str.1)
  %128 = icmp ne i32 %127, 0
  br i1 %128, label %129, label %130

129:                                              ; preds = %125
  store i32 0, ptr %31, align 4, !tbaa !9
  br label %130

130:                                              ; preds = %129, %125
  %131 = load i32, ptr %29, align 4, !tbaa !9
  %132 = icmp eq i32 %131, 1
  br i1 %132, label %133, label %144

133:                                              ; preds = %130
  %134 = load i32, ptr %30, align 4, !tbaa !9
  %135 = icmp eq i32 %134, 1
  br i1 %135, label %136, label %139

136:                                              ; preds = %133
  %137 = load ptr, ptr %11, align 8, !tbaa !5
  %138 = load i32, ptr %137, align 4, !tbaa !9
  store i32 %138, ptr %28, align 4, !tbaa !9
  br label %143

139:                                              ; preds = %133
  %140 = load ptr, ptr %11, align 8, !tbaa !5
  %141 = load i32, ptr %140, align 4, !tbaa !9
  %142 = add nsw i32 %141, 1
  store i32 %142, ptr %28, align 4, !tbaa !9
  br label %143

143:                                              ; preds = %139, %136
  br label %149

144:                                              ; preds = %130
  %145 = load ptr, ptr %11, align 8, !tbaa !5
  %146 = load i32, ptr %145, align 4, !tbaa !9
  %147 = add nsw i32 %146, 1
  %148 = sdiv i32 %147, 2
  store i32 %148, ptr %28, align 4, !tbaa !9
  br label %149

149:                                              ; preds = %144, %143
  %150 = load ptr, ptr %8, align 8, !tbaa !5
  %151 = call i32 @lsame_(ptr noundef %150, ptr noundef @.str.2)
  %152 = icmp ne i32 %151, 0
  br i1 %152, label %153, label %2373

153:                                              ; preds = %149
  %154 = load ptr, ptr %11, align 8, !tbaa !5
  %155 = load i32, ptr %154, align 4, !tbaa !9
  %156 = add nsw i32 %155, 1
  %157 = sdiv i32 %156, 2
  store i32 %157, ptr %21, align 4, !tbaa !9
  store double 0.000000e+00, ptr %25, align 8, !tbaa !11
  %158 = load i32, ptr %30, align 4, !tbaa !9
  %159 = icmp eq i32 %158, 1
  br i1 %159, label %160, label %1169

160:                                              ; preds = %153
  %161 = load i32, ptr %29, align 4, !tbaa !9
  %162 = icmp eq i32 %161, 1
  br i1 %162, label %163, label %614

163:                                              ; preds = %160
  %164 = load i32, ptr %31, align 4, !tbaa !9
  %165 = icmp eq i32 %164, 1
  br i1 %165, label %166, label %386

166:                                              ; preds = %163
  store i32 0, ptr %20, align 4, !tbaa !9
  %167 = load i32, ptr %20, align 4, !tbaa !9
  %168 = load i32, ptr %20, align 4, !tbaa !9
  %169 = load i32, ptr %28, align 4, !tbaa !9
  %170 = mul nsw i32 %168, %169
  %171 = add nsw i32 %167, %170
  store i32 %171, ptr %14, align 4, !tbaa !9
  %172 = load ptr, ptr %12, align 8, !tbaa !5
  %173 = load i32, ptr %14, align 4, !tbaa !9
  %174 = sext i32 %173 to i64
  %175 = getelementptr inbounds %struct.doublecomplex, ptr %172, i64 %174
  %176 = getelementptr inbounds %struct.doublecomplex, ptr %175, i32 0, i32 0
  %177 = load double, ptr %176, align 8, !tbaa !13
  store double %177, ptr %17, align 8, !tbaa !11
  %178 = load double, ptr %17, align 8, !tbaa !11
  %179 = fcmp oge double %178, 0.000000e+00
  br i1 %179, label %180, label %182

180:                                              ; preds = %166
  %181 = load double, ptr %17, align 8, !tbaa !11
  br label %185

182:                                              ; preds = %166
  %183 = load double, ptr %17, align 8, !tbaa !11
  %184 = fneg double %183
  br label %185

185:                                              ; preds = %182, %180
  %186 = phi double [ %181, %180 ], [ %184, %182 ]
  store double %186, ptr %18, align 8, !tbaa !11
  %187 = load double, ptr %25, align 8, !tbaa !11
  %188 = load double, ptr %18, align 8, !tbaa !11
  %189 = fcmp olt double %187, %188
  br i1 %189, label %193, label %190

190:                                              ; preds = %185
  %191 = call i32 @disnan_(ptr noundef %18)
  %192 = icmp ne i32 %191, 0
  br i1 %192, label %193, label %195

193:                                              ; preds = %190, %185
  %194 = load double, ptr %18, align 8, !tbaa !11
  store double %194, ptr %25, align 8, !tbaa !11
  br label %195

195:                                              ; preds = %193, %190
  %196 = load ptr, ptr %11, align 8, !tbaa !5
  %197 = load i32, ptr %196, align 4, !tbaa !9
  %198 = sub nsw i32 %197, 1
  store i32 %198, ptr %14, align 4, !tbaa !9
  store i32 1, ptr %19, align 4, !tbaa !9
  br label %199

199:                                              ; preds = %231, %195
  %200 = load i32, ptr %19, align 4, !tbaa !9
  %201 = load i32, ptr %14, align 4, !tbaa !9
  %202 = icmp sle i32 %200, %201
  br i1 %202, label %203, label %234

203:                                              ; preds = %199
  %204 = load ptr, ptr %12, align 8, !tbaa !5
  %205 = load i32, ptr %19, align 4, !tbaa !9
  %206 = load i32, ptr %20, align 4, !tbaa !9
  %207 = load i32, ptr %28, align 4, !tbaa !9
  %208 = mul nsw i32 %206, %207
  %209 = add nsw i32 %205, %208
  %210 = sext i32 %209 to i64
  %211 = getelementptr inbounds %struct.doublecomplex, ptr %204, i64 %210
  %212 = call { double, double } @Cd(ptr noundef %211)
  %213 = extractvalue { double, double } %212, 0
  %214 = extractvalue { double, double } %212, 1
  %215 = getelementptr inbounds { double, double }, ptr %33, i32 0, i32 0
  %216 = getelementptr inbounds { double, double }, ptr %33, i32 0, i32 1
  store double %213, ptr %215, align 8
  store double %214, ptr %216, align 8
  %217 = getelementptr inbounds { double, double }, ptr %33, i32 0, i32 0
  %218 = load double, ptr %217, align 8
  %219 = getelementptr inbounds { double, double }, ptr %33, i32 0, i32 1
  %220 = load double, ptr %219, align 8
  %221 = call double @cabs(double noundef %218, double noundef %220) #6
  store double %221, ptr %18, align 8, !tbaa !11
  %222 = load double, ptr %25, align 8, !tbaa !11
  %223 = load double, ptr %18, align 8, !tbaa !11
  %224 = fcmp olt double %222, %223
  br i1 %224, label %228, label %225

225:                                              ; preds = %203
  %226 = call i32 @disnan_(ptr noundef %18)
  %227 = icmp ne i32 %226, 0
  br i1 %227, label %228, label %230

228:                                              ; preds = %225, %203
  %229 = load double, ptr %18, align 8, !tbaa !11
  store double %229, ptr %25, align 8, !tbaa !11
  br label %230

230:                                              ; preds = %228, %225
  br label %231

231:                                              ; preds = %230
  %232 = load i32, ptr %19, align 4, !tbaa !9
  %233 = add nsw i32 %232, 1
  store i32 %233, ptr %19, align 4, !tbaa !9
  br label %199, !llvm.loop !15

234:                                              ; preds = %199
  %235 = load i32, ptr %21, align 4, !tbaa !9
  %236 = sub nsw i32 %235, 1
  store i32 %236, ptr %14, align 4, !tbaa !9
  store i32 1, ptr %20, align 4, !tbaa !9
  br label %237

237:                                              ; preds = %382, %234
  %238 = load i32, ptr %20, align 4, !tbaa !9
  %239 = load i32, ptr %14, align 4, !tbaa !9
  %240 = icmp sle i32 %238, %239
  br i1 %240, label %241, label %385

241:                                              ; preds = %237
  %242 = load i32, ptr %20, align 4, !tbaa !9
  %243 = sub nsw i32 %242, 2
  store i32 %243, ptr %15, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %244

244:                                              ; preds = %276, %241
  %245 = load i32, ptr %19, align 4, !tbaa !9
  %246 = load i32, ptr %15, align 4, !tbaa !9
  %247 = icmp sle i32 %245, %246
  br i1 %247, label %248, label %279

248:                                              ; preds = %244
  %249 = load ptr, ptr %12, align 8, !tbaa !5
  %250 = load i32, ptr %19, align 4, !tbaa !9
  %251 = load i32, ptr %20, align 4, !tbaa !9
  %252 = load i32, ptr %28, align 4, !tbaa !9
  %253 = mul nsw i32 %251, %252
  %254 = add nsw i32 %250, %253
  %255 = sext i32 %254 to i64
  %256 = getelementptr inbounds %struct.doublecomplex, ptr %249, i64 %255
  %257 = call { double, double } @Cd(ptr noundef %256)
  %258 = extractvalue { double, double } %257, 0
  %259 = extractvalue { double, double } %257, 1
  %260 = getelementptr inbounds { double, double }, ptr %34, i32 0, i32 0
  %261 = getelementptr inbounds { double, double }, ptr %34, i32 0, i32 1
  store double %258, ptr %260, align 8
  store double %259, ptr %261, align 8
  %262 = getelementptr inbounds { double, double }, ptr %34, i32 0, i32 0
  %263 = load double, ptr %262, align 8
  %264 = getelementptr inbounds { double, double }, ptr %34, i32 0, i32 1
  %265 = load double, ptr %264, align 8
  %266 = call double @cabs(double noundef %263, double noundef %265) #6
  store double %266, ptr %18, align 8, !tbaa !11
  %267 = load double, ptr %25, align 8, !tbaa !11
  %268 = load double, ptr %18, align 8, !tbaa !11
  %269 = fcmp olt double %267, %268
  br i1 %269, label %273, label %270

270:                                              ; preds = %248
  %271 = call i32 @disnan_(ptr noundef %18)
  %272 = icmp ne i32 %271, 0
  br i1 %272, label %273, label %275

273:                                              ; preds = %270, %248
  %274 = load double, ptr %18, align 8, !tbaa !11
  store double %274, ptr %25, align 8, !tbaa !11
  br label %275

275:                                              ; preds = %273, %270
  br label %276

276:                                              ; preds = %275
  %277 = load i32, ptr %19, align 4, !tbaa !9
  %278 = add nsw i32 %277, 1
  store i32 %278, ptr %19, align 4, !tbaa !9
  br label %244, !llvm.loop !17

279:                                              ; preds = %244
  %280 = load i32, ptr %20, align 4, !tbaa !9
  %281 = sub nsw i32 %280, 1
  store i32 %281, ptr %19, align 4, !tbaa !9
  %282 = load i32, ptr %19, align 4, !tbaa !9
  %283 = load i32, ptr %20, align 4, !tbaa !9
  %284 = load i32, ptr %28, align 4, !tbaa !9
  %285 = mul nsw i32 %283, %284
  %286 = add nsw i32 %282, %285
  store i32 %286, ptr %15, align 4, !tbaa !9
  %287 = load ptr, ptr %12, align 8, !tbaa !5
  %288 = load i32, ptr %15, align 4, !tbaa !9
  %289 = sext i32 %288 to i64
  %290 = getelementptr inbounds %struct.doublecomplex, ptr %287, i64 %289
  %291 = getelementptr inbounds %struct.doublecomplex, ptr %290, i32 0, i32 0
  %292 = load double, ptr %291, align 8, !tbaa !13
  store double %292, ptr %17, align 8, !tbaa !11
  %293 = load double, ptr %17, align 8, !tbaa !11
  %294 = fcmp oge double %293, 0.000000e+00
  br i1 %294, label %295, label %297

295:                                              ; preds = %279
  %296 = load double, ptr %17, align 8, !tbaa !11
  br label %300

297:                                              ; preds = %279
  %298 = load double, ptr %17, align 8, !tbaa !11
  %299 = fneg double %298
  br label %300

300:                                              ; preds = %297, %295
  %301 = phi double [ %296, %295 ], [ %299, %297 ]
  store double %301, ptr %18, align 8, !tbaa !11
  %302 = load double, ptr %25, align 8, !tbaa !11
  %303 = load double, ptr %18, align 8, !tbaa !11
  %304 = fcmp olt double %302, %303
  br i1 %304, label %308, label %305

305:                                              ; preds = %300
  %306 = call i32 @disnan_(ptr noundef %18)
  %307 = icmp ne i32 %306, 0
  br i1 %307, label %308, label %310

308:                                              ; preds = %305, %300
  %309 = load double, ptr %18, align 8, !tbaa !11
  store double %309, ptr %25, align 8, !tbaa !11
  br label %310

310:                                              ; preds = %308, %305
  %311 = load i32, ptr %20, align 4, !tbaa !9
  store i32 %311, ptr %19, align 4, !tbaa !9
  %312 = load i32, ptr %19, align 4, !tbaa !9
  %313 = load i32, ptr %20, align 4, !tbaa !9
  %314 = load i32, ptr %28, align 4, !tbaa !9
  %315 = mul nsw i32 %313, %314
  %316 = add nsw i32 %312, %315
  store i32 %316, ptr %15, align 4, !tbaa !9
  %317 = load ptr, ptr %12, align 8, !tbaa !5
  %318 = load i32, ptr %15, align 4, !tbaa !9
  %319 = sext i32 %318 to i64
  %320 = getelementptr inbounds %struct.doublecomplex, ptr %317, i64 %319
  %321 = getelementptr inbounds %struct.doublecomplex, ptr %320, i32 0, i32 0
  %322 = load double, ptr %321, align 8, !tbaa !13
  store double %322, ptr %17, align 8, !tbaa !11
  %323 = load double, ptr %17, align 8, !tbaa !11
  %324 = fcmp oge double %323, 0.000000e+00
  br i1 %324, label %325, label %327

325:                                              ; preds = %310
  %326 = load double, ptr %17, align 8, !tbaa !11
  br label %330

327:                                              ; preds = %310
  %328 = load double, ptr %17, align 8, !tbaa !11
  %329 = fneg double %328
  br label %330

330:                                              ; preds = %327, %325
  %331 = phi double [ %326, %325 ], [ %329, %327 ]
  store double %331, ptr %18, align 8, !tbaa !11
  %332 = load double, ptr %25, align 8, !tbaa !11
  %333 = load double, ptr %18, align 8, !tbaa !11
  %334 = fcmp olt double %332, %333
  br i1 %334, label %338, label %335

335:                                              ; preds = %330
  %336 = call i32 @disnan_(ptr noundef %18)
  %337 = icmp ne i32 %336, 0
  br i1 %337, label %338, label %340

338:                                              ; preds = %335, %330
  %339 = load double, ptr %18, align 8, !tbaa !11
  store double %339, ptr %25, align 8, !tbaa !11
  br label %340

340:                                              ; preds = %338, %335
  %341 = load ptr, ptr %11, align 8, !tbaa !5
  %342 = load i32, ptr %341, align 4, !tbaa !9
  %343 = sub nsw i32 %342, 1
  store i32 %343, ptr %15, align 4, !tbaa !9
  %344 = load i32, ptr %20, align 4, !tbaa !9
  %345 = add nsw i32 %344, 1
  store i32 %345, ptr %19, align 4, !tbaa !9
  br label %346

346:                                              ; preds = %378, %340
  %347 = load i32, ptr %19, align 4, !tbaa !9
  %348 = load i32, ptr %15, align 4, !tbaa !9
  %349 = icmp sle i32 %347, %348
  br i1 %349, label %350, label %381

350:                                              ; preds = %346
  %351 = load ptr, ptr %12, align 8, !tbaa !5
  %352 = load i32, ptr %19, align 4, !tbaa !9
  %353 = load i32, ptr %20, align 4, !tbaa !9
  %354 = load i32, ptr %28, align 4, !tbaa !9
  %355 = mul nsw i32 %353, %354
  %356 = add nsw i32 %352, %355
  %357 = sext i32 %356 to i64
  %358 = getelementptr inbounds %struct.doublecomplex, ptr %351, i64 %357
  %359 = call { double, double } @Cd(ptr noundef %358)
  %360 = extractvalue { double, double } %359, 0
  %361 = extractvalue { double, double } %359, 1
  %362 = getelementptr inbounds { double, double }, ptr %35, i32 0, i32 0
  %363 = getelementptr inbounds { double, double }, ptr %35, i32 0, i32 1
  store double %360, ptr %362, align 8
  store double %361, ptr %363, align 8
  %364 = getelementptr inbounds { double, double }, ptr %35, i32 0, i32 0
  %365 = load double, ptr %364, align 8
  %366 = getelementptr inbounds { double, double }, ptr %35, i32 0, i32 1
  %367 = load double, ptr %366, align 8
  %368 = call double @cabs(double noundef %365, double noundef %367) #6
  store double %368, ptr %18, align 8, !tbaa !11
  %369 = load double, ptr %25, align 8, !tbaa !11
  %370 = load double, ptr %18, align 8, !tbaa !11
  %371 = fcmp olt double %369, %370
  br i1 %371, label %375, label %372

372:                                              ; preds = %350
  %373 = call i32 @disnan_(ptr noundef %18)
  %374 = icmp ne i32 %373, 0
  br i1 %374, label %375, label %377

375:                                              ; preds = %372, %350
  %376 = load double, ptr %18, align 8, !tbaa !11
  store double %376, ptr %25, align 8, !tbaa !11
  br label %377

377:                                              ; preds = %375, %372
  br label %378

378:                                              ; preds = %377
  %379 = load i32, ptr %19, align 4, !tbaa !9
  %380 = add nsw i32 %379, 1
  store i32 %380, ptr %19, align 4, !tbaa !9
  br label %346, !llvm.loop !18

381:                                              ; preds = %346
  br label %382

382:                                              ; preds = %381
  %383 = load i32, ptr %20, align 4, !tbaa !9
  %384 = add nsw i32 %383, 1
  store i32 %384, ptr %20, align 4, !tbaa !9
  br label %237, !llvm.loop !19

385:                                              ; preds = %237
  br label %613

386:                                              ; preds = %163
  %387 = load i32, ptr %21, align 4, !tbaa !9
  %388 = sub nsw i32 %387, 2
  store i32 %388, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %389

389:                                              ; preds = %541, %386
  %390 = load i32, ptr %20, align 4, !tbaa !9
  %391 = load i32, ptr %14, align 4, !tbaa !9
  %392 = icmp sle i32 %390, %391
  br i1 %392, label %393, label %544

393:                                              ; preds = %389
  %394 = load i32, ptr %21, align 4, !tbaa !9
  %395 = load i32, ptr %20, align 4, !tbaa !9
  %396 = add nsw i32 %394, %395
  %397 = sub nsw i32 %396, 2
  store i32 %397, ptr %15, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %398

398:                                              ; preds = %430, %393
  %399 = load i32, ptr %19, align 4, !tbaa !9
  %400 = load i32, ptr %15, align 4, !tbaa !9
  %401 = icmp sle i32 %399, %400
  br i1 %401, label %402, label %433

402:                                              ; preds = %398
  %403 = load ptr, ptr %12, align 8, !tbaa !5
  %404 = load i32, ptr %19, align 4, !tbaa !9
  %405 = load i32, ptr %20, align 4, !tbaa !9
  %406 = load i32, ptr %28, align 4, !tbaa !9
  %407 = mul nsw i32 %405, %406
  %408 = add nsw i32 %404, %407
  %409 = sext i32 %408 to i64
  %410 = getelementptr inbounds %struct.doublecomplex, ptr %403, i64 %409
  %411 = call { double, double } @Cd(ptr noundef %410)
  %412 = extractvalue { double, double } %411, 0
  %413 = extractvalue { double, double } %411, 1
  %414 = getelementptr inbounds { double, double }, ptr %36, i32 0, i32 0
  %415 = getelementptr inbounds { double, double }, ptr %36, i32 0, i32 1
  store double %412, ptr %414, align 8
  store double %413, ptr %415, align 8
  %416 = getelementptr inbounds { double, double }, ptr %36, i32 0, i32 0
  %417 = load double, ptr %416, align 8
  %418 = getelementptr inbounds { double, double }, ptr %36, i32 0, i32 1
  %419 = load double, ptr %418, align 8
  %420 = call double @cabs(double noundef %417, double noundef %419) #6
  store double %420, ptr %18, align 8, !tbaa !11
  %421 = load double, ptr %25, align 8, !tbaa !11
  %422 = load double, ptr %18, align 8, !tbaa !11
  %423 = fcmp olt double %421, %422
  br i1 %423, label %427, label %424

424:                                              ; preds = %402
  %425 = call i32 @disnan_(ptr noundef %18)
  %426 = icmp ne i32 %425, 0
  br i1 %426, label %427, label %429

427:                                              ; preds = %424, %402
  %428 = load double, ptr %18, align 8, !tbaa !11
  store double %428, ptr %25, align 8, !tbaa !11
  br label %429

429:                                              ; preds = %427, %424
  br label %430

430:                                              ; preds = %429
  %431 = load i32, ptr %19, align 4, !tbaa !9
  %432 = add nsw i32 %431, 1
  store i32 %432, ptr %19, align 4, !tbaa !9
  br label %398, !llvm.loop !20

433:                                              ; preds = %398
  %434 = load i32, ptr %21, align 4, !tbaa !9
  %435 = load i32, ptr %20, align 4, !tbaa !9
  %436 = add nsw i32 %434, %435
  %437 = sub nsw i32 %436, 1
  store i32 %437, ptr %19, align 4, !tbaa !9
  %438 = load i32, ptr %19, align 4, !tbaa !9
  %439 = load i32, ptr %20, align 4, !tbaa !9
  %440 = load i32, ptr %28, align 4, !tbaa !9
  %441 = mul nsw i32 %439, %440
  %442 = add nsw i32 %438, %441
  store i32 %442, ptr %15, align 4, !tbaa !9
  %443 = load ptr, ptr %12, align 8, !tbaa !5
  %444 = load i32, ptr %15, align 4, !tbaa !9
  %445 = sext i32 %444 to i64
  %446 = getelementptr inbounds %struct.doublecomplex, ptr %443, i64 %445
  %447 = getelementptr inbounds %struct.doublecomplex, ptr %446, i32 0, i32 0
  %448 = load double, ptr %447, align 8, !tbaa !13
  store double %448, ptr %17, align 8, !tbaa !11
  %449 = load double, ptr %17, align 8, !tbaa !11
  %450 = fcmp oge double %449, 0.000000e+00
  br i1 %450, label %451, label %453

451:                                              ; preds = %433
  %452 = load double, ptr %17, align 8, !tbaa !11
  br label %456

453:                                              ; preds = %433
  %454 = load double, ptr %17, align 8, !tbaa !11
  %455 = fneg double %454
  br label %456

456:                                              ; preds = %453, %451
  %457 = phi double [ %452, %451 ], [ %455, %453 ]
  store double %457, ptr %18, align 8, !tbaa !11
  %458 = load double, ptr %25, align 8, !tbaa !11
  %459 = load double, ptr %18, align 8, !tbaa !11
  %460 = fcmp olt double %458, %459
  br i1 %460, label %464, label %461

461:                                              ; preds = %456
  %462 = call i32 @disnan_(ptr noundef %18)
  %463 = icmp ne i32 %462, 0
  br i1 %463, label %464, label %466

464:                                              ; preds = %461, %456
  %465 = load double, ptr %18, align 8, !tbaa !11
  store double %465, ptr %25, align 8, !tbaa !11
  br label %466

466:                                              ; preds = %464, %461
  %467 = load i32, ptr %19, align 4, !tbaa !9
  %468 = add nsw i32 %467, 1
  store i32 %468, ptr %19, align 4, !tbaa !9
  %469 = load i32, ptr %19, align 4, !tbaa !9
  %470 = load i32, ptr %20, align 4, !tbaa !9
  %471 = load i32, ptr %28, align 4, !tbaa !9
  %472 = mul nsw i32 %470, %471
  %473 = add nsw i32 %469, %472
  store i32 %473, ptr %15, align 4, !tbaa !9
  %474 = load ptr, ptr %12, align 8, !tbaa !5
  %475 = load i32, ptr %15, align 4, !tbaa !9
  %476 = sext i32 %475 to i64
  %477 = getelementptr inbounds %struct.doublecomplex, ptr %474, i64 %476
  %478 = getelementptr inbounds %struct.doublecomplex, ptr %477, i32 0, i32 0
  %479 = load double, ptr %478, align 8, !tbaa !13
  store double %479, ptr %17, align 8, !tbaa !11
  %480 = load double, ptr %17, align 8, !tbaa !11
  %481 = fcmp oge double %480, 0.000000e+00
  br i1 %481, label %482, label %484

482:                                              ; preds = %466
  %483 = load double, ptr %17, align 8, !tbaa !11
  br label %487

484:                                              ; preds = %466
  %485 = load double, ptr %17, align 8, !tbaa !11
  %486 = fneg double %485
  br label %487

487:                                              ; preds = %484, %482
  %488 = phi double [ %483, %482 ], [ %486, %484 ]
  store double %488, ptr %18, align 8, !tbaa !11
  %489 = load double, ptr %25, align 8, !tbaa !11
  %490 = load double, ptr %18, align 8, !tbaa !11
  %491 = fcmp olt double %489, %490
  br i1 %491, label %495, label %492

492:                                              ; preds = %487
  %493 = call i32 @disnan_(ptr noundef %18)
  %494 = icmp ne i32 %493, 0
  br i1 %494, label %495, label %497

495:                                              ; preds = %492, %487
  %496 = load double, ptr %18, align 8, !tbaa !11
  store double %496, ptr %25, align 8, !tbaa !11
  br label %497

497:                                              ; preds = %495, %492
  %498 = load ptr, ptr %11, align 8, !tbaa !5
  %499 = load i32, ptr %498, align 4, !tbaa !9
  %500 = sub nsw i32 %499, 1
  store i32 %500, ptr %15, align 4, !tbaa !9
  %501 = load i32, ptr %21, align 4, !tbaa !9
  %502 = load i32, ptr %20, align 4, !tbaa !9
  %503 = add nsw i32 %501, %502
  %504 = add nsw i32 %503, 1
  store i32 %504, ptr %19, align 4, !tbaa !9
  br label %505

505:                                              ; preds = %537, %497
  %506 = load i32, ptr %19, align 4, !tbaa !9
  %507 = load i32, ptr %15, align 4, !tbaa !9
  %508 = icmp sle i32 %506, %507
  br i1 %508, label %509, label %540

509:                                              ; preds = %505
  %510 = load ptr, ptr %12, align 8, !tbaa !5
  %511 = load i32, ptr %19, align 4, !tbaa !9
  %512 = load i32, ptr %20, align 4, !tbaa !9
  %513 = load i32, ptr %28, align 4, !tbaa !9
  %514 = mul nsw i32 %512, %513
  %515 = add nsw i32 %511, %514
  %516 = sext i32 %515 to i64
  %517 = getelementptr inbounds %struct.doublecomplex, ptr %510, i64 %516
  %518 = call { double, double } @Cd(ptr noundef %517)
  %519 = extractvalue { double, double } %518, 0
  %520 = extractvalue { double, double } %518, 1
  %521 = getelementptr inbounds { double, double }, ptr %37, i32 0, i32 0
  %522 = getelementptr inbounds { double, double }, ptr %37, i32 0, i32 1
  store double %519, ptr %521, align 8
  store double %520, ptr %522, align 8
  %523 = getelementptr inbounds { double, double }, ptr %37, i32 0, i32 0
  %524 = load double, ptr %523, align 8
  %525 = getelementptr inbounds { double, double }, ptr %37, i32 0, i32 1
  %526 = load double, ptr %525, align 8
  %527 = call double @cabs(double noundef %524, double noundef %526) #6
  store double %527, ptr %18, align 8, !tbaa !11
  %528 = load double, ptr %25, align 8, !tbaa !11
  %529 = load double, ptr %18, align 8, !tbaa !11
  %530 = fcmp olt double %528, %529
  br i1 %530, label %534, label %531

531:                                              ; preds = %509
  %532 = call i32 @disnan_(ptr noundef %18)
  %533 = icmp ne i32 %532, 0
  br i1 %533, label %534, label %536

534:                                              ; preds = %531, %509
  %535 = load double, ptr %18, align 8, !tbaa !11
  store double %535, ptr %25, align 8, !tbaa !11
  br label %536

536:                                              ; preds = %534, %531
  br label %537

537:                                              ; preds = %536
  %538 = load i32, ptr %19, align 4, !tbaa !9
  %539 = add nsw i32 %538, 1
  store i32 %539, ptr %19, align 4, !tbaa !9
  br label %505, !llvm.loop !21

540:                                              ; preds = %505
  br label %541

541:                                              ; preds = %540
  %542 = load i32, ptr %20, align 4, !tbaa !9
  %543 = add nsw i32 %542, 1
  store i32 %543, ptr %20, align 4, !tbaa !9
  br label %389, !llvm.loop !22

544:                                              ; preds = %389
  %545 = load ptr, ptr %11, align 8, !tbaa !5
  %546 = load i32, ptr %545, align 4, !tbaa !9
  %547 = sub nsw i32 %546, 2
  store i32 %547, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %548

548:                                              ; preds = %580, %544
  %549 = load i32, ptr %19, align 4, !tbaa !9
  %550 = load i32, ptr %14, align 4, !tbaa !9
  %551 = icmp sle i32 %549, %550
  br i1 %551, label %552, label %583

552:                                              ; preds = %548
  %553 = load ptr, ptr %12, align 8, !tbaa !5
  %554 = load i32, ptr %19, align 4, !tbaa !9
  %555 = load i32, ptr %20, align 4, !tbaa !9
  %556 = load i32, ptr %28, align 4, !tbaa !9
  %557 = mul nsw i32 %555, %556
  %558 = add nsw i32 %554, %557
  %559 = sext i32 %558 to i64
  %560 = getelementptr inbounds %struct.doublecomplex, ptr %553, i64 %559
  %561 = call { double, double } @Cd(ptr noundef %560)
  %562 = extractvalue { double, double } %561, 0
  %563 = extractvalue { double, double } %561, 1
  %564 = getelementptr inbounds { double, double }, ptr %38, i32 0, i32 0
  %565 = getelementptr inbounds { double, double }, ptr %38, i32 0, i32 1
  store double %562, ptr %564, align 8
  store double %563, ptr %565, align 8
  %566 = getelementptr inbounds { double, double }, ptr %38, i32 0, i32 0
  %567 = load double, ptr %566, align 8
  %568 = getelementptr inbounds { double, double }, ptr %38, i32 0, i32 1
  %569 = load double, ptr %568, align 8
  %570 = call double @cabs(double noundef %567, double noundef %569) #6
  store double %570, ptr %18, align 8, !tbaa !11
  %571 = load double, ptr %25, align 8, !tbaa !11
  %572 = load double, ptr %18, align 8, !tbaa !11
  %573 = fcmp olt double %571, %572
  br i1 %573, label %577, label %574

574:                                              ; preds = %552
  %575 = call i32 @disnan_(ptr noundef %18)
  %576 = icmp ne i32 %575, 0
  br i1 %576, label %577, label %579

577:                                              ; preds = %574, %552
  %578 = load double, ptr %18, align 8, !tbaa !11
  store double %578, ptr %25, align 8, !tbaa !11
  br label %579

579:                                              ; preds = %577, %574
  br label %580

580:                                              ; preds = %579
  %581 = load i32, ptr %19, align 4, !tbaa !9
  %582 = add nsw i32 %581, 1
  store i32 %582, ptr %19, align 4, !tbaa !9
  br label %548, !llvm.loop !23

583:                                              ; preds = %548
  %584 = load i32, ptr %19, align 4, !tbaa !9
  %585 = load i32, ptr %20, align 4, !tbaa !9
  %586 = load i32, ptr %28, align 4, !tbaa !9
  %587 = mul nsw i32 %585, %586
  %588 = add nsw i32 %584, %587
  store i32 %588, ptr %14, align 4, !tbaa !9
  %589 = load ptr, ptr %12, align 8, !tbaa !5
  %590 = load i32, ptr %14, align 4, !tbaa !9
  %591 = sext i32 %590 to i64
  %592 = getelementptr inbounds %struct.doublecomplex, ptr %589, i64 %591
  %593 = getelementptr inbounds %struct.doublecomplex, ptr %592, i32 0, i32 0
  %594 = load double, ptr %593, align 8, !tbaa !13
  store double %594, ptr %17, align 8, !tbaa !11
  %595 = load double, ptr %17, align 8, !tbaa !11
  %596 = fcmp oge double %595, 0.000000e+00
  br i1 %596, label %597, label %599

597:                                              ; preds = %583
  %598 = load double, ptr %17, align 8, !tbaa !11
  br label %602

599:                                              ; preds = %583
  %600 = load double, ptr %17, align 8, !tbaa !11
  %601 = fneg double %600
  br label %602

602:                                              ; preds = %599, %597
  %603 = phi double [ %598, %597 ], [ %601, %599 ]
  store double %603, ptr %18, align 8, !tbaa !11
  %604 = load double, ptr %25, align 8, !tbaa !11
  %605 = load double, ptr %18, align 8, !tbaa !11
  %606 = fcmp olt double %604, %605
  br i1 %606, label %610, label %607

607:                                              ; preds = %602
  %608 = call i32 @disnan_(ptr noundef %18)
  %609 = icmp ne i32 %608, 0
  br i1 %609, label %610, label %612

610:                                              ; preds = %607, %602
  %611 = load double, ptr %18, align 8, !tbaa !11
  store double %611, ptr %25, align 8, !tbaa !11
  br label %612

612:                                              ; preds = %610, %607
  br label %613

613:                                              ; preds = %612, %385
  br label %1168

614:                                              ; preds = %160
  %615 = load i32, ptr %31, align 4, !tbaa !9
  %616 = icmp eq i32 %615, 1
  br i1 %616, label %617, label %890

617:                                              ; preds = %614
  %618 = load i32, ptr %21, align 4, !tbaa !9
  %619 = sub nsw i32 %618, 2
  store i32 %619, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %620

620:                                              ; preds = %764, %617
  %621 = load i32, ptr %20, align 4, !tbaa !9
  %622 = load i32, ptr %14, align 4, !tbaa !9
  %623 = icmp sle i32 %621, %622
  br i1 %623, label %624, label %767

624:                                              ; preds = %620
  %625 = load i32, ptr %20, align 4, !tbaa !9
  %626 = sub nsw i32 %625, 1
  store i32 %626, ptr %15, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %627

627:                                              ; preds = %659, %624
  %628 = load i32, ptr %19, align 4, !tbaa !9
  %629 = load i32, ptr %15, align 4, !tbaa !9
  %630 = icmp sle i32 %628, %629
  br i1 %630, label %631, label %662

631:                                              ; preds = %627
  %632 = load ptr, ptr %12, align 8, !tbaa !5
  %633 = load i32, ptr %19, align 4, !tbaa !9
  %634 = load i32, ptr %20, align 4, !tbaa !9
  %635 = load i32, ptr %28, align 4, !tbaa !9
  %636 = mul nsw i32 %634, %635
  %637 = add nsw i32 %633, %636
  %638 = sext i32 %637 to i64
  %639 = getelementptr inbounds %struct.doublecomplex, ptr %632, i64 %638
  %640 = call { double, double } @Cd(ptr noundef %639)
  %641 = extractvalue { double, double } %640, 0
  %642 = extractvalue { double, double } %640, 1
  %643 = getelementptr inbounds { double, double }, ptr %39, i32 0, i32 0
  %644 = getelementptr inbounds { double, double }, ptr %39, i32 0, i32 1
  store double %641, ptr %643, align 8
  store double %642, ptr %644, align 8
  %645 = getelementptr inbounds { double, double }, ptr %39, i32 0, i32 0
  %646 = load double, ptr %645, align 8
  %647 = getelementptr inbounds { double, double }, ptr %39, i32 0, i32 1
  %648 = load double, ptr %647, align 8
  %649 = call double @cabs(double noundef %646, double noundef %648) #6
  store double %649, ptr %18, align 8, !tbaa !11
  %650 = load double, ptr %25, align 8, !tbaa !11
  %651 = load double, ptr %18, align 8, !tbaa !11
  %652 = fcmp olt double %650, %651
  br i1 %652, label %656, label %653

653:                                              ; preds = %631
  %654 = call i32 @disnan_(ptr noundef %18)
  %655 = icmp ne i32 %654, 0
  br i1 %655, label %656, label %658

656:                                              ; preds = %653, %631
  %657 = load double, ptr %18, align 8, !tbaa !11
  store double %657, ptr %25, align 8, !tbaa !11
  br label %658

658:                                              ; preds = %656, %653
  br label %659

659:                                              ; preds = %658
  %660 = load i32, ptr %19, align 4, !tbaa !9
  %661 = add nsw i32 %660, 1
  store i32 %661, ptr %19, align 4, !tbaa !9
  br label %627, !llvm.loop !24

662:                                              ; preds = %627
  %663 = load i32, ptr %20, align 4, !tbaa !9
  store i32 %663, ptr %19, align 4, !tbaa !9
  %664 = load i32, ptr %19, align 4, !tbaa !9
  %665 = load i32, ptr %20, align 4, !tbaa !9
  %666 = load i32, ptr %28, align 4, !tbaa !9
  %667 = mul nsw i32 %665, %666
  %668 = add nsw i32 %664, %667
  store i32 %668, ptr %15, align 4, !tbaa !9
  %669 = load ptr, ptr %12, align 8, !tbaa !5
  %670 = load i32, ptr %15, align 4, !tbaa !9
  %671 = sext i32 %670 to i64
  %672 = getelementptr inbounds %struct.doublecomplex, ptr %669, i64 %671
  %673 = getelementptr inbounds %struct.doublecomplex, ptr %672, i32 0, i32 0
  %674 = load double, ptr %673, align 8, !tbaa !13
  store double %674, ptr %17, align 8, !tbaa !11
  %675 = load double, ptr %17, align 8, !tbaa !11
  %676 = fcmp oge double %675, 0.000000e+00
  br i1 %676, label %677, label %679

677:                                              ; preds = %662
  %678 = load double, ptr %17, align 8, !tbaa !11
  br label %682

679:                                              ; preds = %662
  %680 = load double, ptr %17, align 8, !tbaa !11
  %681 = fneg double %680
  br label %682

682:                                              ; preds = %679, %677
  %683 = phi double [ %678, %677 ], [ %681, %679 ]
  store double %683, ptr %18, align 8, !tbaa !11
  %684 = load double, ptr %25, align 8, !tbaa !11
  %685 = load double, ptr %18, align 8, !tbaa !11
  %686 = fcmp olt double %684, %685
  br i1 %686, label %690, label %687

687:                                              ; preds = %682
  %688 = call i32 @disnan_(ptr noundef %18)
  %689 = icmp ne i32 %688, 0
  br i1 %689, label %690, label %692

690:                                              ; preds = %687, %682
  %691 = load double, ptr %18, align 8, !tbaa !11
  store double %691, ptr %25, align 8, !tbaa !11
  br label %692

692:                                              ; preds = %690, %687
  %693 = load i32, ptr %20, align 4, !tbaa !9
  %694 = add nsw i32 %693, 1
  store i32 %694, ptr %19, align 4, !tbaa !9
  %695 = load i32, ptr %19, align 4, !tbaa !9
  %696 = load i32, ptr %20, align 4, !tbaa !9
  %697 = load i32, ptr %28, align 4, !tbaa !9
  %698 = mul nsw i32 %696, %697
  %699 = add nsw i32 %695, %698
  store i32 %699, ptr %15, align 4, !tbaa !9
  %700 = load ptr, ptr %12, align 8, !tbaa !5
  %701 = load i32, ptr %15, align 4, !tbaa !9
  %702 = sext i32 %701 to i64
  %703 = getelementptr inbounds %struct.doublecomplex, ptr %700, i64 %702
  %704 = getelementptr inbounds %struct.doublecomplex, ptr %703, i32 0, i32 0
  %705 = load double, ptr %704, align 8, !tbaa !13
  store double %705, ptr %17, align 8, !tbaa !11
  %706 = load double, ptr %17, align 8, !tbaa !11
  %707 = fcmp oge double %706, 0.000000e+00
  br i1 %707, label %708, label %710

708:                                              ; preds = %692
  %709 = load double, ptr %17, align 8, !tbaa !11
  br label %713

710:                                              ; preds = %692
  %711 = load double, ptr %17, align 8, !tbaa !11
  %712 = fneg double %711
  br label %713

713:                                              ; preds = %710, %708
  %714 = phi double [ %709, %708 ], [ %712, %710 ]
  store double %714, ptr %18, align 8, !tbaa !11
  %715 = load double, ptr %25, align 8, !tbaa !11
  %716 = load double, ptr %18, align 8, !tbaa !11
  %717 = fcmp olt double %715, %716
  br i1 %717, label %721, label %718

718:                                              ; preds = %713
  %719 = call i32 @disnan_(ptr noundef %18)
  %720 = icmp ne i32 %719, 0
  br i1 %720, label %721, label %723

721:                                              ; preds = %718, %713
  %722 = load double, ptr %18, align 8, !tbaa !11
  store double %722, ptr %25, align 8, !tbaa !11
  br label %723

723:                                              ; preds = %721, %718
  %724 = load i32, ptr %21, align 4, !tbaa !9
  %725 = sub nsw i32 %724, 1
  store i32 %725, ptr %15, align 4, !tbaa !9
  %726 = load i32, ptr %20, align 4, !tbaa !9
  %727 = add nsw i32 %726, 2
  store i32 %727, ptr %19, align 4, !tbaa !9
  br label %728

728:                                              ; preds = %760, %723
  %729 = load i32, ptr %19, align 4, !tbaa !9
  %730 = load i32, ptr %15, align 4, !tbaa !9
  %731 = icmp sle i32 %729, %730
  br i1 %731, label %732, label %763

732:                                              ; preds = %728
  %733 = load ptr, ptr %12, align 8, !tbaa !5
  %734 = load i32, ptr %19, align 4, !tbaa !9
  %735 = load i32, ptr %20, align 4, !tbaa !9
  %736 = load i32, ptr %28, align 4, !tbaa !9
  %737 = mul nsw i32 %735, %736
  %738 = add nsw i32 %734, %737
  %739 = sext i32 %738 to i64
  %740 = getelementptr inbounds %struct.doublecomplex, ptr %733, i64 %739
  %741 = call { double, double } @Cd(ptr noundef %740)
  %742 = extractvalue { double, double } %741, 0
  %743 = extractvalue { double, double } %741, 1
  %744 = getelementptr inbounds { double, double }, ptr %40, i32 0, i32 0
  %745 = getelementptr inbounds { double, double }, ptr %40, i32 0, i32 1
  store double %742, ptr %744, align 8
  store double %743, ptr %745, align 8
  %746 = getelementptr inbounds { double, double }, ptr %40, i32 0, i32 0
  %747 = load double, ptr %746, align 8
  %748 = getelementptr inbounds { double, double }, ptr %40, i32 0, i32 1
  %749 = load double, ptr %748, align 8
  %750 = call double @cabs(double noundef %747, double noundef %749) #6
  store double %750, ptr %18, align 8, !tbaa !11
  %751 = load double, ptr %25, align 8, !tbaa !11
  %752 = load double, ptr %18, align 8, !tbaa !11
  %753 = fcmp olt double %751, %752
  br i1 %753, label %757, label %754

754:                                              ; preds = %732
  %755 = call i32 @disnan_(ptr noundef %18)
  %756 = icmp ne i32 %755, 0
  br i1 %756, label %757, label %759

757:                                              ; preds = %754, %732
  %758 = load double, ptr %18, align 8, !tbaa !11
  store double %758, ptr %25, align 8, !tbaa !11
  br label %759

759:                                              ; preds = %757, %754
  br label %760

760:                                              ; preds = %759
  %761 = load i32, ptr %19, align 4, !tbaa !9
  %762 = add nsw i32 %761, 1
  store i32 %762, ptr %19, align 4, !tbaa !9
  br label %728, !llvm.loop !25

763:                                              ; preds = %728
  br label %764

764:                                              ; preds = %763
  %765 = load i32, ptr %20, align 4, !tbaa !9
  %766 = add nsw i32 %765, 1
  store i32 %766, ptr %20, align 4, !tbaa !9
  br label %620, !llvm.loop !26

767:                                              ; preds = %620
  %768 = load i32, ptr %21, align 4, !tbaa !9
  %769 = sub nsw i32 %768, 1
  store i32 %769, ptr %20, align 4, !tbaa !9
  %770 = load i32, ptr %21, align 4, !tbaa !9
  %771 = sub nsw i32 %770, 2
  store i32 %771, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %772

772:                                              ; preds = %804, %767
  %773 = load i32, ptr %19, align 4, !tbaa !9
  %774 = load i32, ptr %14, align 4, !tbaa !9
  %775 = icmp sle i32 %773, %774
  br i1 %775, label %776, label %807

776:                                              ; preds = %772
  %777 = load ptr, ptr %12, align 8, !tbaa !5
  %778 = load i32, ptr %19, align 4, !tbaa !9
  %779 = load i32, ptr %20, align 4, !tbaa !9
  %780 = load i32, ptr %28, align 4, !tbaa !9
  %781 = mul nsw i32 %779, %780
  %782 = add nsw i32 %778, %781
  %783 = sext i32 %782 to i64
  %784 = getelementptr inbounds %struct.doublecomplex, ptr %777, i64 %783
  %785 = call { double, double } @Cd(ptr noundef %784)
  %786 = extractvalue { double, double } %785, 0
  %787 = extractvalue { double, double } %785, 1
  %788 = getelementptr inbounds { double, double }, ptr %41, i32 0, i32 0
  %789 = getelementptr inbounds { double, double }, ptr %41, i32 0, i32 1
  store double %786, ptr %788, align 8
  store double %787, ptr %789, align 8
  %790 = getelementptr inbounds { double, double }, ptr %41, i32 0, i32 0
  %791 = load double, ptr %790, align 8
  %792 = getelementptr inbounds { double, double }, ptr %41, i32 0, i32 1
  %793 = load double, ptr %792, align 8
  %794 = call double @cabs(double noundef %791, double noundef %793) #6
  store double %794, ptr %18, align 8, !tbaa !11
  %795 = load double, ptr %25, align 8, !tbaa !11
  %796 = load double, ptr %18, align 8, !tbaa !11
  %797 = fcmp olt double %795, %796
  br i1 %797, label %801, label %798

798:                                              ; preds = %776
  %799 = call i32 @disnan_(ptr noundef %18)
  %800 = icmp ne i32 %799, 0
  br i1 %800, label %801, label %803

801:                                              ; preds = %798, %776
  %802 = load double, ptr %18, align 8, !tbaa !11
  store double %802, ptr %25, align 8, !tbaa !11
  br label %803

803:                                              ; preds = %801, %798
  br label %804

804:                                              ; preds = %803
  %805 = load i32, ptr %19, align 4, !tbaa !9
  %806 = add nsw i32 %805, 1
  store i32 %806, ptr %19, align 4, !tbaa !9
  br label %772, !llvm.loop !27

807:                                              ; preds = %772
  %808 = load i32, ptr %21, align 4, !tbaa !9
  %809 = sub nsw i32 %808, 1
  store i32 %809, ptr %19, align 4, !tbaa !9
  %810 = load i32, ptr %19, align 4, !tbaa !9
  %811 = load i32, ptr %20, align 4, !tbaa !9
  %812 = load i32, ptr %28, align 4, !tbaa !9
  %813 = mul nsw i32 %811, %812
  %814 = add nsw i32 %810, %813
  store i32 %814, ptr %14, align 4, !tbaa !9
  %815 = load ptr, ptr %12, align 8, !tbaa !5
  %816 = load i32, ptr %14, align 4, !tbaa !9
  %817 = sext i32 %816 to i64
  %818 = getelementptr inbounds %struct.doublecomplex, ptr %815, i64 %817
  %819 = getelementptr inbounds %struct.doublecomplex, ptr %818, i32 0, i32 0
  %820 = load double, ptr %819, align 8, !tbaa !13
  store double %820, ptr %17, align 8, !tbaa !11
  %821 = load double, ptr %17, align 8, !tbaa !11
  %822 = fcmp oge double %821, 0.000000e+00
  br i1 %822, label %823, label %825

823:                                              ; preds = %807
  %824 = load double, ptr %17, align 8, !tbaa !11
  br label %828

825:                                              ; preds = %807
  %826 = load double, ptr %17, align 8, !tbaa !11
  %827 = fneg double %826
  br label %828

828:                                              ; preds = %825, %823
  %829 = phi double [ %824, %823 ], [ %827, %825 ]
  store double %829, ptr %18, align 8, !tbaa !11
  %830 = load double, ptr %25, align 8, !tbaa !11
  %831 = load double, ptr %18, align 8, !tbaa !11
  %832 = fcmp olt double %830, %831
  br i1 %832, label %836, label %833

833:                                              ; preds = %828
  %834 = call i32 @disnan_(ptr noundef %18)
  %835 = icmp ne i32 %834, 0
  br i1 %835, label %836, label %838

836:                                              ; preds = %833, %828
  %837 = load double, ptr %18, align 8, !tbaa !11
  store double %837, ptr %25, align 8, !tbaa !11
  br label %838

838:                                              ; preds = %836, %833
  %839 = load ptr, ptr %11, align 8, !tbaa !5
  %840 = load i32, ptr %839, align 4, !tbaa !9
  %841 = sub nsw i32 %840, 1
  store i32 %841, ptr %14, align 4, !tbaa !9
  %842 = load i32, ptr %21, align 4, !tbaa !9
  store i32 %842, ptr %20, align 4, !tbaa !9
  br label %843

843:                                              ; preds = %886, %838
  %844 = load i32, ptr %20, align 4, !tbaa !9
  %845 = load i32, ptr %14, align 4, !tbaa !9
  %846 = icmp sle i32 %844, %845
  br i1 %846, label %847, label %889

847:                                              ; preds = %843
  %848 = load i32, ptr %21, align 4, !tbaa !9
  %849 = sub nsw i32 %848, 1
  store i32 %849, ptr %15, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %850

850:                                              ; preds = %882, %847
  %851 = load i32, ptr %19, align 4, !tbaa !9
  %852 = load i32, ptr %15, align 4, !tbaa !9
  %853 = icmp sle i32 %851, %852
  br i1 %853, label %854, label %885

854:                                              ; preds = %850
  %855 = load ptr, ptr %12, align 8, !tbaa !5
  %856 = load i32, ptr %19, align 4, !tbaa !9
  %857 = load i32, ptr %20, align 4, !tbaa !9
  %858 = load i32, ptr %28, align 4, !tbaa !9
  %859 = mul nsw i32 %857, %858
  %860 = add nsw i32 %856, %859
  %861 = sext i32 %860 to i64
  %862 = getelementptr inbounds %struct.doublecomplex, ptr %855, i64 %861
  %863 = call { double, double } @Cd(ptr noundef %862)
  %864 = extractvalue { double, double } %863, 0
  %865 = extractvalue { double, double } %863, 1
  %866 = getelementptr inbounds { double, double }, ptr %42, i32 0, i32 0
  %867 = getelementptr inbounds { double, double }, ptr %42, i32 0, i32 1
  store double %864, ptr %866, align 8
  store double %865, ptr %867, align 8
  %868 = getelementptr inbounds { double, double }, ptr %42, i32 0, i32 0
  %869 = load double, ptr %868, align 8
  %870 = getelementptr inbounds { double, double }, ptr %42, i32 0, i32 1
  %871 = load double, ptr %870, align 8
  %872 = call double @cabs(double noundef %869, double noundef %871) #6
  store double %872, ptr %18, align 8, !tbaa !11
  %873 = load double, ptr %25, align 8, !tbaa !11
  %874 = load double, ptr %18, align 8, !tbaa !11
  %875 = fcmp olt double %873, %874
  br i1 %875, label %879, label %876

876:                                              ; preds = %854
  %877 = call i32 @disnan_(ptr noundef %18)
  %878 = icmp ne i32 %877, 0
  br i1 %878, label %879, label %881

879:                                              ; preds = %876, %854
  %880 = load double, ptr %18, align 8, !tbaa !11
  store double %880, ptr %25, align 8, !tbaa !11
  br label %881

881:                                              ; preds = %879, %876
  br label %882

882:                                              ; preds = %881
  %883 = load i32, ptr %19, align 4, !tbaa !9
  %884 = add nsw i32 %883, 1
  store i32 %884, ptr %19, align 4, !tbaa !9
  br label %850, !llvm.loop !28

885:                                              ; preds = %850
  br label %886

886:                                              ; preds = %885
  %887 = load i32, ptr %20, align 4, !tbaa !9
  %888 = add nsw i32 %887, 1
  store i32 %888, ptr %20, align 4, !tbaa !9
  br label %843, !llvm.loop !29

889:                                              ; preds = %843
  br label %1167

890:                                              ; preds = %614
  %891 = load i32, ptr %21, align 4, !tbaa !9
  %892 = sub nsw i32 %891, 2
  store i32 %892, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %893

893:                                              ; preds = %936, %890
  %894 = load i32, ptr %20, align 4, !tbaa !9
  %895 = load i32, ptr %14, align 4, !tbaa !9
  %896 = icmp sle i32 %894, %895
  br i1 %896, label %897, label %939

897:                                              ; preds = %893
  %898 = load i32, ptr %21, align 4, !tbaa !9
  %899 = sub nsw i32 %898, 1
  store i32 %899, ptr %15, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %900

900:                                              ; preds = %932, %897
  %901 = load i32, ptr %19, align 4, !tbaa !9
  %902 = load i32, ptr %15, align 4, !tbaa !9
  %903 = icmp sle i32 %901, %902
  br i1 %903, label %904, label %935

904:                                              ; preds = %900
  %905 = load ptr, ptr %12, align 8, !tbaa !5
  %906 = load i32, ptr %19, align 4, !tbaa !9
  %907 = load i32, ptr %20, align 4, !tbaa !9
  %908 = load i32, ptr %28, align 4, !tbaa !9
  %909 = mul nsw i32 %907, %908
  %910 = add nsw i32 %906, %909
  %911 = sext i32 %910 to i64
  %912 = getelementptr inbounds %struct.doublecomplex, ptr %905, i64 %911
  %913 = call { double, double } @Cd(ptr noundef %912)
  %914 = extractvalue { double, double } %913, 0
  %915 = extractvalue { double, double } %913, 1
  %916 = getelementptr inbounds { double, double }, ptr %43, i32 0, i32 0
  %917 = getelementptr inbounds { double, double }, ptr %43, i32 0, i32 1
  store double %914, ptr %916, align 8
  store double %915, ptr %917, align 8
  %918 = getelementptr inbounds { double, double }, ptr %43, i32 0, i32 0
  %919 = load double, ptr %918, align 8
  %920 = getelementptr inbounds { double, double }, ptr %43, i32 0, i32 1
  %921 = load double, ptr %920, align 8
  %922 = call double @cabs(double noundef %919, double noundef %921) #6
  store double %922, ptr %18, align 8, !tbaa !11
  %923 = load double, ptr %25, align 8, !tbaa !11
  %924 = load double, ptr %18, align 8, !tbaa !11
  %925 = fcmp olt double %923, %924
  br i1 %925, label %929, label %926

926:                                              ; preds = %904
  %927 = call i32 @disnan_(ptr noundef %18)
  %928 = icmp ne i32 %927, 0
  br i1 %928, label %929, label %931

929:                                              ; preds = %926, %904
  %930 = load double, ptr %18, align 8, !tbaa !11
  store double %930, ptr %25, align 8, !tbaa !11
  br label %931

931:                                              ; preds = %929, %926
  br label %932

932:                                              ; preds = %931
  %933 = load i32, ptr %19, align 4, !tbaa !9
  %934 = add nsw i32 %933, 1
  store i32 %934, ptr %19, align 4, !tbaa !9
  br label %900, !llvm.loop !30

935:                                              ; preds = %900
  br label %936

936:                                              ; preds = %935
  %937 = load i32, ptr %20, align 4, !tbaa !9
  %938 = add nsw i32 %937, 1
  store i32 %938, ptr %20, align 4, !tbaa !9
  br label %893, !llvm.loop !31

939:                                              ; preds = %893
  %940 = load i32, ptr %21, align 4, !tbaa !9
  %941 = sub nsw i32 %940, 1
  store i32 %941, ptr %20, align 4, !tbaa !9
  %942 = load i32, ptr %20, align 4, !tbaa !9
  %943 = load i32, ptr %28, align 4, !tbaa !9
  %944 = mul nsw i32 %942, %943
  store i32 %944, ptr %14, align 4, !tbaa !9
  %945 = load ptr, ptr %12, align 8, !tbaa !5
  %946 = load i32, ptr %14, align 4, !tbaa !9
  %947 = sext i32 %946 to i64
  %948 = getelementptr inbounds %struct.doublecomplex, ptr %945, i64 %947
  %949 = getelementptr inbounds %struct.doublecomplex, ptr %948, i32 0, i32 0
  %950 = load double, ptr %949, align 8, !tbaa !13
  store double %950, ptr %17, align 8, !tbaa !11
  %951 = load double, ptr %17, align 8, !tbaa !11
  %952 = fcmp oge double %951, 0.000000e+00
  br i1 %952, label %953, label %955

953:                                              ; preds = %939
  %954 = load double, ptr %17, align 8, !tbaa !11
  br label %958

955:                                              ; preds = %939
  %956 = load double, ptr %17, align 8, !tbaa !11
  %957 = fneg double %956
  br label %958

958:                                              ; preds = %955, %953
  %959 = phi double [ %954, %953 ], [ %957, %955 ]
  store double %959, ptr %18, align 8, !tbaa !11
  %960 = load double, ptr %25, align 8, !tbaa !11
  %961 = load double, ptr %18, align 8, !tbaa !11
  %962 = fcmp olt double %960, %961
  br i1 %962, label %966, label %963

963:                                              ; preds = %958
  %964 = call i32 @disnan_(ptr noundef %18)
  %965 = icmp ne i32 %964, 0
  br i1 %965, label %966, label %968

966:                                              ; preds = %963, %958
  %967 = load double, ptr %18, align 8, !tbaa !11
  store double %967, ptr %25, align 8, !tbaa !11
  br label %968

968:                                              ; preds = %966, %963
  %969 = load i32, ptr %21, align 4, !tbaa !9
  %970 = sub nsw i32 %969, 1
  store i32 %970, ptr %14, align 4, !tbaa !9
  store i32 1, ptr %19, align 4, !tbaa !9
  br label %971

971:                                              ; preds = %1003, %968
  %972 = load i32, ptr %19, align 4, !tbaa !9
  %973 = load i32, ptr %14, align 4, !tbaa !9
  %974 = icmp sle i32 %972, %973
  br i1 %974, label %975, label %1006

975:                                              ; preds = %971
  %976 = load ptr, ptr %12, align 8, !tbaa !5
  %977 = load i32, ptr %19, align 4, !tbaa !9
  %978 = load i32, ptr %20, align 4, !tbaa !9
  %979 = load i32, ptr %28, align 4, !tbaa !9
  %980 = mul nsw i32 %978, %979
  %981 = add nsw i32 %977, %980
  %982 = sext i32 %981 to i64
  %983 = getelementptr inbounds %struct.doublecomplex, ptr %976, i64 %982
  %984 = call { double, double } @Cd(ptr noundef %983)
  %985 = extractvalue { double, double } %984, 0
  %986 = extractvalue { double, double } %984, 1
  %987 = getelementptr inbounds { double, double }, ptr %44, i32 0, i32 0
  %988 = getelementptr inbounds { double, double }, ptr %44, i32 0, i32 1
  store double %985, ptr %987, align 8
  store double %986, ptr %988, align 8
  %989 = getelementptr inbounds { double, double }, ptr %44, i32 0, i32 0
  %990 = load double, ptr %989, align 8
  %991 = getelementptr inbounds { double, double }, ptr %44, i32 0, i32 1
  %992 = load double, ptr %991, align 8
  %993 = call double @cabs(double noundef %990, double noundef %992) #6
  store double %993, ptr %18, align 8, !tbaa !11
  %994 = load double, ptr %25, align 8, !tbaa !11
  %995 = load double, ptr %18, align 8, !tbaa !11
  %996 = fcmp olt double %994, %995
  br i1 %996, label %1000, label %997

997:                                              ; preds = %975
  %998 = call i32 @disnan_(ptr noundef %18)
  %999 = icmp ne i32 %998, 0
  br i1 %999, label %1000, label %1002

1000:                                             ; preds = %997, %975
  %1001 = load double, ptr %18, align 8, !tbaa !11
  store double %1001, ptr %25, align 8, !tbaa !11
  br label %1002

1002:                                             ; preds = %1000, %997
  br label %1003

1003:                                             ; preds = %1002
  %1004 = load i32, ptr %19, align 4, !tbaa !9
  %1005 = add nsw i32 %1004, 1
  store i32 %1005, ptr %19, align 4, !tbaa !9
  br label %971, !llvm.loop !32

1006:                                             ; preds = %971
  %1007 = load ptr, ptr %11, align 8, !tbaa !5
  %1008 = load i32, ptr %1007, align 4, !tbaa !9
  %1009 = sub nsw i32 %1008, 1
  store i32 %1009, ptr %14, align 4, !tbaa !9
  %1010 = load i32, ptr %21, align 4, !tbaa !9
  store i32 %1010, ptr %20, align 4, !tbaa !9
  br label %1011

1011:                                             ; preds = %1163, %1006
  %1012 = load i32, ptr %20, align 4, !tbaa !9
  %1013 = load i32, ptr %14, align 4, !tbaa !9
  %1014 = icmp sle i32 %1012, %1013
  br i1 %1014, label %1015, label %1166

1015:                                             ; preds = %1011
  %1016 = load i32, ptr %20, align 4, !tbaa !9
  %1017 = load i32, ptr %21, align 4, !tbaa !9
  %1018 = sub nsw i32 %1016, %1017
  %1019 = sub nsw i32 %1018, 1
  store i32 %1019, ptr %15, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %1020

1020:                                             ; preds = %1052, %1015
  %1021 = load i32, ptr %19, align 4, !tbaa !9
  %1022 = load i32, ptr %15, align 4, !tbaa !9
  %1023 = icmp sle i32 %1021, %1022
  br i1 %1023, label %1024, label %1055

1024:                                             ; preds = %1020
  %1025 = load ptr, ptr %12, align 8, !tbaa !5
  %1026 = load i32, ptr %19, align 4, !tbaa !9
  %1027 = load i32, ptr %20, align 4, !tbaa !9
  %1028 = load i32, ptr %28, align 4, !tbaa !9
  %1029 = mul nsw i32 %1027, %1028
  %1030 = add nsw i32 %1026, %1029
  %1031 = sext i32 %1030 to i64
  %1032 = getelementptr inbounds %struct.doublecomplex, ptr %1025, i64 %1031
  %1033 = call { double, double } @Cd(ptr noundef %1032)
  %1034 = extractvalue { double, double } %1033, 0
  %1035 = extractvalue { double, double } %1033, 1
  %1036 = getelementptr inbounds { double, double }, ptr %45, i32 0, i32 0
  %1037 = getelementptr inbounds { double, double }, ptr %45, i32 0, i32 1
  store double %1034, ptr %1036, align 8
  store double %1035, ptr %1037, align 8
  %1038 = getelementptr inbounds { double, double }, ptr %45, i32 0, i32 0
  %1039 = load double, ptr %1038, align 8
  %1040 = getelementptr inbounds { double, double }, ptr %45, i32 0, i32 1
  %1041 = load double, ptr %1040, align 8
  %1042 = call double @cabs(double noundef %1039, double noundef %1041) #6
  store double %1042, ptr %18, align 8, !tbaa !11
  %1043 = load double, ptr %25, align 8, !tbaa !11
  %1044 = load double, ptr %18, align 8, !tbaa !11
  %1045 = fcmp olt double %1043, %1044
  br i1 %1045, label %1049, label %1046

1046:                                             ; preds = %1024
  %1047 = call i32 @disnan_(ptr noundef %18)
  %1048 = icmp ne i32 %1047, 0
  br i1 %1048, label %1049, label %1051

1049:                                             ; preds = %1046, %1024
  %1050 = load double, ptr %18, align 8, !tbaa !11
  store double %1050, ptr %25, align 8, !tbaa !11
  br label %1051

1051:                                             ; preds = %1049, %1046
  br label %1052

1052:                                             ; preds = %1051
  %1053 = load i32, ptr %19, align 4, !tbaa !9
  %1054 = add nsw i32 %1053, 1
  store i32 %1054, ptr %19, align 4, !tbaa !9
  br label %1020, !llvm.loop !33

1055:                                             ; preds = %1020
  %1056 = load i32, ptr %20, align 4, !tbaa !9
  %1057 = load i32, ptr %21, align 4, !tbaa !9
  %1058 = sub nsw i32 %1056, %1057
  store i32 %1058, ptr %19, align 4, !tbaa !9
  %1059 = load i32, ptr %19, align 4, !tbaa !9
  %1060 = load i32, ptr %20, align 4, !tbaa !9
  %1061 = load i32, ptr %28, align 4, !tbaa !9
  %1062 = mul nsw i32 %1060, %1061
  %1063 = add nsw i32 %1059, %1062
  store i32 %1063, ptr %15, align 4, !tbaa !9
  %1064 = load ptr, ptr %12, align 8, !tbaa !5
  %1065 = load i32, ptr %15, align 4, !tbaa !9
  %1066 = sext i32 %1065 to i64
  %1067 = getelementptr inbounds %struct.doublecomplex, ptr %1064, i64 %1066
  %1068 = getelementptr inbounds %struct.doublecomplex, ptr %1067, i32 0, i32 0
  %1069 = load double, ptr %1068, align 8, !tbaa !13
  store double %1069, ptr %17, align 8, !tbaa !11
  %1070 = load double, ptr %17, align 8, !tbaa !11
  %1071 = fcmp oge double %1070, 0.000000e+00
  br i1 %1071, label %1072, label %1074

1072:                                             ; preds = %1055
  %1073 = load double, ptr %17, align 8, !tbaa !11
  br label %1077

1074:                                             ; preds = %1055
  %1075 = load double, ptr %17, align 8, !tbaa !11
  %1076 = fneg double %1075
  br label %1077

1077:                                             ; preds = %1074, %1072
  %1078 = phi double [ %1073, %1072 ], [ %1076, %1074 ]
  store double %1078, ptr %18, align 8, !tbaa !11
  %1079 = load double, ptr %25, align 8, !tbaa !11
  %1080 = load double, ptr %18, align 8, !tbaa !11
  %1081 = fcmp olt double %1079, %1080
  br i1 %1081, label %1085, label %1082

1082:                                             ; preds = %1077
  %1083 = call i32 @disnan_(ptr noundef %18)
  %1084 = icmp ne i32 %1083, 0
  br i1 %1084, label %1085, label %1087

1085:                                             ; preds = %1082, %1077
  %1086 = load double, ptr %18, align 8, !tbaa !11
  store double %1086, ptr %25, align 8, !tbaa !11
  br label %1087

1087:                                             ; preds = %1085, %1082
  %1088 = load i32, ptr %20, align 4, !tbaa !9
  %1089 = load i32, ptr %21, align 4, !tbaa !9
  %1090 = sub nsw i32 %1088, %1089
  %1091 = add nsw i32 %1090, 1
  store i32 %1091, ptr %19, align 4, !tbaa !9
  %1092 = load i32, ptr %19, align 4, !tbaa !9
  %1093 = load i32, ptr %20, align 4, !tbaa !9
  %1094 = load i32, ptr %28, align 4, !tbaa !9
  %1095 = mul nsw i32 %1093, %1094
  %1096 = add nsw i32 %1092, %1095
  store i32 %1096, ptr %15, align 4, !tbaa !9
  %1097 = load ptr, ptr %12, align 8, !tbaa !5
  %1098 = load i32, ptr %15, align 4, !tbaa !9
  %1099 = sext i32 %1098 to i64
  %1100 = getelementptr inbounds %struct.doublecomplex, ptr %1097, i64 %1099
  %1101 = getelementptr inbounds %struct.doublecomplex, ptr %1100, i32 0, i32 0
  %1102 = load double, ptr %1101, align 8, !tbaa !13
  store double %1102, ptr %17, align 8, !tbaa !11
  %1103 = load double, ptr %17, align 8, !tbaa !11
  %1104 = fcmp oge double %1103, 0.000000e+00
  br i1 %1104, label %1105, label %1107

1105:                                             ; preds = %1087
  %1106 = load double, ptr %17, align 8, !tbaa !11
  br label %1110

1107:                                             ; preds = %1087
  %1108 = load double, ptr %17, align 8, !tbaa !11
  %1109 = fneg double %1108
  br label %1110

1110:                                             ; preds = %1107, %1105
  %1111 = phi double [ %1106, %1105 ], [ %1109, %1107 ]
  store double %1111, ptr %18, align 8, !tbaa !11
  %1112 = load double, ptr %25, align 8, !tbaa !11
  %1113 = load double, ptr %18, align 8, !tbaa !11
  %1114 = fcmp olt double %1112, %1113
  br i1 %1114, label %1118, label %1115

1115:                                             ; preds = %1110
  %1116 = call i32 @disnan_(ptr noundef %18)
  %1117 = icmp ne i32 %1116, 0
  br i1 %1117, label %1118, label %1120

1118:                                             ; preds = %1115, %1110
  %1119 = load double, ptr %18, align 8, !tbaa !11
  store double %1119, ptr %25, align 8, !tbaa !11
  br label %1120

1120:                                             ; preds = %1118, %1115
  %1121 = load i32, ptr %21, align 4, !tbaa !9
  %1122 = sub nsw i32 %1121, 1
  store i32 %1122, ptr %15, align 4, !tbaa !9
  %1123 = load i32, ptr %20, align 4, !tbaa !9
  %1124 = load i32, ptr %21, align 4, !tbaa !9
  %1125 = sub nsw i32 %1123, %1124
  %1126 = add nsw i32 %1125, 2
  store i32 %1126, ptr %19, align 4, !tbaa !9
  br label %1127

1127:                                             ; preds = %1159, %1120
  %1128 = load i32, ptr %19, align 4, !tbaa !9
  %1129 = load i32, ptr %15, align 4, !tbaa !9
  %1130 = icmp sle i32 %1128, %1129
  br i1 %1130, label %1131, label %1162

1131:                                             ; preds = %1127
  %1132 = load ptr, ptr %12, align 8, !tbaa !5
  %1133 = load i32, ptr %19, align 4, !tbaa !9
  %1134 = load i32, ptr %20, align 4, !tbaa !9
  %1135 = load i32, ptr %28, align 4, !tbaa !9
  %1136 = mul nsw i32 %1134, %1135
  %1137 = add nsw i32 %1133, %1136
  %1138 = sext i32 %1137 to i64
  %1139 = getelementptr inbounds %struct.doublecomplex, ptr %1132, i64 %1138
  %1140 = call { double, double } @Cd(ptr noundef %1139)
  %1141 = extractvalue { double, double } %1140, 0
  %1142 = extractvalue { double, double } %1140, 1
  %1143 = getelementptr inbounds { double, double }, ptr %46, i32 0, i32 0
  %1144 = getelementptr inbounds { double, double }, ptr %46, i32 0, i32 1
  store double %1141, ptr %1143, align 8
  store double %1142, ptr %1144, align 8
  %1145 = getelementptr inbounds { double, double }, ptr %46, i32 0, i32 0
  %1146 = load double, ptr %1145, align 8
  %1147 = getelementptr inbounds { double, double }, ptr %46, i32 0, i32 1
  %1148 = load double, ptr %1147, align 8
  %1149 = call double @cabs(double noundef %1146, double noundef %1148) #6
  store double %1149, ptr %18, align 8, !tbaa !11
  %1150 = load double, ptr %25, align 8, !tbaa !11
  %1151 = load double, ptr %18, align 8, !tbaa !11
  %1152 = fcmp olt double %1150, %1151
  br i1 %1152, label %1156, label %1153

1153:                                             ; preds = %1131
  %1154 = call i32 @disnan_(ptr noundef %18)
  %1155 = icmp ne i32 %1154, 0
  br i1 %1155, label %1156, label %1158

1156:                                             ; preds = %1153, %1131
  %1157 = load double, ptr %18, align 8, !tbaa !11
  store double %1157, ptr %25, align 8, !tbaa !11
  br label %1158

1158:                                             ; preds = %1156, %1153
  br label %1159

1159:                                             ; preds = %1158
  %1160 = load i32, ptr %19, align 4, !tbaa !9
  %1161 = add nsw i32 %1160, 1
  store i32 %1161, ptr %19, align 4, !tbaa !9
  br label %1127, !llvm.loop !34

1162:                                             ; preds = %1127
  br label %1163

1163:                                             ; preds = %1162
  %1164 = load i32, ptr %20, align 4, !tbaa !9
  %1165 = add nsw i32 %1164, 1
  store i32 %1165, ptr %20, align 4, !tbaa !9
  br label %1011, !llvm.loop !35

1166:                                             ; preds = %1011
  br label %1167

1167:                                             ; preds = %1166, %889
  br label %1168

1168:                                             ; preds = %1167, %613
  br label %2372

1169:                                             ; preds = %153
  %1170 = load i32, ptr %29, align 4, !tbaa !9
  %1171 = icmp eq i32 %1170, 1
  br i1 %1171, label %1172, label %1680

1172:                                             ; preds = %1169
  %1173 = load i32, ptr %31, align 4, !tbaa !9
  %1174 = icmp eq i32 %1173, 1
  br i1 %1174, label %1175, label %1423

1175:                                             ; preds = %1172
  store i32 0, ptr %20, align 4, !tbaa !9
  %1176 = load i32, ptr %20, align 4, !tbaa !9
  %1177 = load i32, ptr %20, align 4, !tbaa !9
  %1178 = load i32, ptr %28, align 4, !tbaa !9
  %1179 = mul nsw i32 %1177, %1178
  %1180 = add nsw i32 %1176, %1179
  store i32 %1180, ptr %14, align 4, !tbaa !9
  %1181 = load ptr, ptr %12, align 8, !tbaa !5
  %1182 = load i32, ptr %14, align 4, !tbaa !9
  %1183 = sext i32 %1182 to i64
  %1184 = getelementptr inbounds %struct.doublecomplex, ptr %1181, i64 %1183
  %1185 = getelementptr inbounds %struct.doublecomplex, ptr %1184, i32 0, i32 0
  %1186 = load double, ptr %1185, align 8, !tbaa !13
  store double %1186, ptr %17, align 8, !tbaa !11
  %1187 = load double, ptr %17, align 8, !tbaa !11
  %1188 = fcmp oge double %1187, 0.000000e+00
  br i1 %1188, label %1189, label %1191

1189:                                             ; preds = %1175
  %1190 = load double, ptr %17, align 8, !tbaa !11
  br label %1194

1191:                                             ; preds = %1175
  %1192 = load double, ptr %17, align 8, !tbaa !11
  %1193 = fneg double %1192
  br label %1194

1194:                                             ; preds = %1191, %1189
  %1195 = phi double [ %1190, %1189 ], [ %1193, %1191 ]
  store double %1195, ptr %18, align 8, !tbaa !11
  %1196 = load double, ptr %25, align 8, !tbaa !11
  %1197 = load double, ptr %18, align 8, !tbaa !11
  %1198 = fcmp olt double %1196, %1197
  br i1 %1198, label %1202, label %1199

1199:                                             ; preds = %1194
  %1200 = call i32 @disnan_(ptr noundef %18)
  %1201 = icmp ne i32 %1200, 0
  br i1 %1201, label %1202, label %1204

1202:                                             ; preds = %1199, %1194
  %1203 = load double, ptr %18, align 8, !tbaa !11
  store double %1203, ptr %25, align 8, !tbaa !11
  br label %1204

1204:                                             ; preds = %1202, %1199
  %1205 = load i32, ptr %20, align 4, !tbaa !9
  %1206 = add nsw i32 %1205, 1
  %1207 = load i32, ptr %20, align 4, !tbaa !9
  %1208 = load i32, ptr %28, align 4, !tbaa !9
  %1209 = mul nsw i32 %1207, %1208
  %1210 = add nsw i32 %1206, %1209
  store i32 %1210, ptr %14, align 4, !tbaa !9
  %1211 = load ptr, ptr %12, align 8, !tbaa !5
  %1212 = load i32, ptr %14, align 4, !tbaa !9
  %1213 = sext i32 %1212 to i64
  %1214 = getelementptr inbounds %struct.doublecomplex, ptr %1211, i64 %1213
  %1215 = getelementptr inbounds %struct.doublecomplex, ptr %1214, i32 0, i32 0
  %1216 = load double, ptr %1215, align 8, !tbaa !13
  store double %1216, ptr %17, align 8, !tbaa !11
  %1217 = load double, ptr %17, align 8, !tbaa !11
  %1218 = fcmp oge double %1217, 0.000000e+00
  br i1 %1218, label %1219, label %1221

1219:                                             ; preds = %1204
  %1220 = load double, ptr %17, align 8, !tbaa !11
  br label %1224

1221:                                             ; preds = %1204
  %1222 = load double, ptr %17, align 8, !tbaa !11
  %1223 = fneg double %1222
  br label %1224

1224:                                             ; preds = %1221, %1219
  %1225 = phi double [ %1220, %1219 ], [ %1223, %1221 ]
  store double %1225, ptr %18, align 8, !tbaa !11
  %1226 = load double, ptr %25, align 8, !tbaa !11
  %1227 = load double, ptr %18, align 8, !tbaa !11
  %1228 = fcmp olt double %1226, %1227
  br i1 %1228, label %1232, label %1229

1229:                                             ; preds = %1224
  %1230 = call i32 @disnan_(ptr noundef %18)
  %1231 = icmp ne i32 %1230, 0
  br i1 %1231, label %1232, label %1234

1232:                                             ; preds = %1229, %1224
  %1233 = load double, ptr %18, align 8, !tbaa !11
  store double %1233, ptr %25, align 8, !tbaa !11
  br label %1234

1234:                                             ; preds = %1232, %1229
  %1235 = load ptr, ptr %11, align 8, !tbaa !5
  %1236 = load i32, ptr %1235, align 4, !tbaa !9
  store i32 %1236, ptr %14, align 4, !tbaa !9
  store i32 2, ptr %19, align 4, !tbaa !9
  br label %1237

1237:                                             ; preds = %1269, %1234
  %1238 = load i32, ptr %19, align 4, !tbaa !9
  %1239 = load i32, ptr %14, align 4, !tbaa !9
  %1240 = icmp sle i32 %1238, %1239
  br i1 %1240, label %1241, label %1272

1241:                                             ; preds = %1237
  %1242 = load ptr, ptr %12, align 8, !tbaa !5
  %1243 = load i32, ptr %19, align 4, !tbaa !9
  %1244 = load i32, ptr %20, align 4, !tbaa !9
  %1245 = load i32, ptr %28, align 4, !tbaa !9
  %1246 = mul nsw i32 %1244, %1245
  %1247 = add nsw i32 %1243, %1246
  %1248 = sext i32 %1247 to i64
  %1249 = getelementptr inbounds %struct.doublecomplex, ptr %1242, i64 %1248
  %1250 = call { double, double } @Cd(ptr noundef %1249)
  %1251 = extractvalue { double, double } %1250, 0
  %1252 = extractvalue { double, double } %1250, 1
  %1253 = getelementptr inbounds { double, double }, ptr %47, i32 0, i32 0
  %1254 = getelementptr inbounds { double, double }, ptr %47, i32 0, i32 1
  store double %1251, ptr %1253, align 8
  store double %1252, ptr %1254, align 8
  %1255 = getelementptr inbounds { double, double }, ptr %47, i32 0, i32 0
  %1256 = load double, ptr %1255, align 8
  %1257 = getelementptr inbounds { double, double }, ptr %47, i32 0, i32 1
  %1258 = load double, ptr %1257, align 8
  %1259 = call double @cabs(double noundef %1256, double noundef %1258) #6
  store double %1259, ptr %18, align 8, !tbaa !11
  %1260 = load double, ptr %25, align 8, !tbaa !11
  %1261 = load double, ptr %18, align 8, !tbaa !11
  %1262 = fcmp olt double %1260, %1261
  br i1 %1262, label %1266, label %1263

1263:                                             ; preds = %1241
  %1264 = call i32 @disnan_(ptr noundef %18)
  %1265 = icmp ne i32 %1264, 0
  br i1 %1265, label %1266, label %1268

1266:                                             ; preds = %1263, %1241
  %1267 = load double, ptr %18, align 8, !tbaa !11
  store double %1267, ptr %25, align 8, !tbaa !11
  br label %1268

1268:                                             ; preds = %1266, %1263
  br label %1269

1269:                                             ; preds = %1268
  %1270 = load i32, ptr %19, align 4, !tbaa !9
  %1271 = add nsw i32 %1270, 1
  store i32 %1271, ptr %19, align 4, !tbaa !9
  br label %1237, !llvm.loop !36

1272:                                             ; preds = %1237
  %1273 = load i32, ptr %21, align 4, !tbaa !9
  %1274 = sub nsw i32 %1273, 1
  store i32 %1274, ptr %14, align 4, !tbaa !9
  store i32 1, ptr %20, align 4, !tbaa !9
  br label %1275

1275:                                             ; preds = %1419, %1272
  %1276 = load i32, ptr %20, align 4, !tbaa !9
  %1277 = load i32, ptr %14, align 4, !tbaa !9
  %1278 = icmp sle i32 %1276, %1277
  br i1 %1278, label %1279, label %1422

1279:                                             ; preds = %1275
  %1280 = load i32, ptr %20, align 4, !tbaa !9
  %1281 = sub nsw i32 %1280, 1
  store i32 %1281, ptr %15, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %1282

1282:                                             ; preds = %1314, %1279
  %1283 = load i32, ptr %19, align 4, !tbaa !9
  %1284 = load i32, ptr %15, align 4, !tbaa !9
  %1285 = icmp sle i32 %1283, %1284
  br i1 %1285, label %1286, label %1317

1286:                                             ; preds = %1282
  %1287 = load ptr, ptr %12, align 8, !tbaa !5
  %1288 = load i32, ptr %19, align 4, !tbaa !9
  %1289 = load i32, ptr %20, align 4, !tbaa !9
  %1290 = load i32, ptr %28, align 4, !tbaa !9
  %1291 = mul nsw i32 %1289, %1290
  %1292 = add nsw i32 %1288, %1291
  %1293 = sext i32 %1292 to i64
  %1294 = getelementptr inbounds %struct.doublecomplex, ptr %1287, i64 %1293
  %1295 = call { double, double } @Cd(ptr noundef %1294)
  %1296 = extractvalue { double, double } %1295, 0
  %1297 = extractvalue { double, double } %1295, 1
  %1298 = getelementptr inbounds { double, double }, ptr %48, i32 0, i32 0
  %1299 = getelementptr inbounds { double, double }, ptr %48, i32 0, i32 1
  store double %1296, ptr %1298, align 8
  store double %1297, ptr %1299, align 8
  %1300 = getelementptr inbounds { double, double }, ptr %48, i32 0, i32 0
  %1301 = load double, ptr %1300, align 8
  %1302 = getelementptr inbounds { double, double }, ptr %48, i32 0, i32 1
  %1303 = load double, ptr %1302, align 8
  %1304 = call double @cabs(double noundef %1301, double noundef %1303) #6
  store double %1304, ptr %18, align 8, !tbaa !11
  %1305 = load double, ptr %25, align 8, !tbaa !11
  %1306 = load double, ptr %18, align 8, !tbaa !11
  %1307 = fcmp olt double %1305, %1306
  br i1 %1307, label %1311, label %1308

1308:                                             ; preds = %1286
  %1309 = call i32 @disnan_(ptr noundef %18)
  %1310 = icmp ne i32 %1309, 0
  br i1 %1310, label %1311, label %1313

1311:                                             ; preds = %1308, %1286
  %1312 = load double, ptr %18, align 8, !tbaa !11
  store double %1312, ptr %25, align 8, !tbaa !11
  br label %1313

1313:                                             ; preds = %1311, %1308
  br label %1314

1314:                                             ; preds = %1313
  %1315 = load i32, ptr %19, align 4, !tbaa !9
  %1316 = add nsw i32 %1315, 1
  store i32 %1316, ptr %19, align 4, !tbaa !9
  br label %1282, !llvm.loop !37

1317:                                             ; preds = %1282
  %1318 = load i32, ptr %20, align 4, !tbaa !9
  store i32 %1318, ptr %19, align 4, !tbaa !9
  %1319 = load i32, ptr %19, align 4, !tbaa !9
  %1320 = load i32, ptr %20, align 4, !tbaa !9
  %1321 = load i32, ptr %28, align 4, !tbaa !9
  %1322 = mul nsw i32 %1320, %1321
  %1323 = add nsw i32 %1319, %1322
  store i32 %1323, ptr %15, align 4, !tbaa !9
  %1324 = load ptr, ptr %12, align 8, !tbaa !5
  %1325 = load i32, ptr %15, align 4, !tbaa !9
  %1326 = sext i32 %1325 to i64
  %1327 = getelementptr inbounds %struct.doublecomplex, ptr %1324, i64 %1326
  %1328 = getelementptr inbounds %struct.doublecomplex, ptr %1327, i32 0, i32 0
  %1329 = load double, ptr %1328, align 8, !tbaa !13
  store double %1329, ptr %17, align 8, !tbaa !11
  %1330 = load double, ptr %17, align 8, !tbaa !11
  %1331 = fcmp oge double %1330, 0.000000e+00
  br i1 %1331, label %1332, label %1334

1332:                                             ; preds = %1317
  %1333 = load double, ptr %17, align 8, !tbaa !11
  br label %1337

1334:                                             ; preds = %1317
  %1335 = load double, ptr %17, align 8, !tbaa !11
  %1336 = fneg double %1335
  br label %1337

1337:                                             ; preds = %1334, %1332
  %1338 = phi double [ %1333, %1332 ], [ %1336, %1334 ]
  store double %1338, ptr %18, align 8, !tbaa !11
  %1339 = load double, ptr %25, align 8, !tbaa !11
  %1340 = load double, ptr %18, align 8, !tbaa !11
  %1341 = fcmp olt double %1339, %1340
  br i1 %1341, label %1345, label %1342

1342:                                             ; preds = %1337
  %1343 = call i32 @disnan_(ptr noundef %18)
  %1344 = icmp ne i32 %1343, 0
  br i1 %1344, label %1345, label %1347

1345:                                             ; preds = %1342, %1337
  %1346 = load double, ptr %18, align 8, !tbaa !11
  store double %1346, ptr %25, align 8, !tbaa !11
  br label %1347

1347:                                             ; preds = %1345, %1342
  %1348 = load i32, ptr %20, align 4, !tbaa !9
  %1349 = add nsw i32 %1348, 1
  store i32 %1349, ptr %19, align 4, !tbaa !9
  %1350 = load i32, ptr %19, align 4, !tbaa !9
  %1351 = load i32, ptr %20, align 4, !tbaa !9
  %1352 = load i32, ptr %28, align 4, !tbaa !9
  %1353 = mul nsw i32 %1351, %1352
  %1354 = add nsw i32 %1350, %1353
  store i32 %1354, ptr %15, align 4, !tbaa !9
  %1355 = load ptr, ptr %12, align 8, !tbaa !5
  %1356 = load i32, ptr %15, align 4, !tbaa !9
  %1357 = sext i32 %1356 to i64
  %1358 = getelementptr inbounds %struct.doublecomplex, ptr %1355, i64 %1357
  %1359 = getelementptr inbounds %struct.doublecomplex, ptr %1358, i32 0, i32 0
  %1360 = load double, ptr %1359, align 8, !tbaa !13
  store double %1360, ptr %17, align 8, !tbaa !11
  %1361 = load double, ptr %17, align 8, !tbaa !11
  %1362 = fcmp oge double %1361, 0.000000e+00
  br i1 %1362, label %1363, label %1365

1363:                                             ; preds = %1347
  %1364 = load double, ptr %17, align 8, !tbaa !11
  br label %1368

1365:                                             ; preds = %1347
  %1366 = load double, ptr %17, align 8, !tbaa !11
  %1367 = fneg double %1366
  br label %1368

1368:                                             ; preds = %1365, %1363
  %1369 = phi double [ %1364, %1363 ], [ %1367, %1365 ]
  store double %1369, ptr %18, align 8, !tbaa !11
  %1370 = load double, ptr %25, align 8, !tbaa !11
  %1371 = load double, ptr %18, align 8, !tbaa !11
  %1372 = fcmp olt double %1370, %1371
  br i1 %1372, label %1376, label %1373

1373:                                             ; preds = %1368
  %1374 = call i32 @disnan_(ptr noundef %18)
  %1375 = icmp ne i32 %1374, 0
  br i1 %1375, label %1376, label %1378

1376:                                             ; preds = %1373, %1368
  %1377 = load double, ptr %18, align 8, !tbaa !11
  store double %1377, ptr %25, align 8, !tbaa !11
  br label %1378

1378:                                             ; preds = %1376, %1373
  %1379 = load ptr, ptr %11, align 8, !tbaa !5
  %1380 = load i32, ptr %1379, align 4, !tbaa !9
  store i32 %1380, ptr %15, align 4, !tbaa !9
  %1381 = load i32, ptr %20, align 4, !tbaa !9
  %1382 = add nsw i32 %1381, 2
  store i32 %1382, ptr %19, align 4, !tbaa !9
  br label %1383

1383:                                             ; preds = %1415, %1378
  %1384 = load i32, ptr %19, align 4, !tbaa !9
  %1385 = load i32, ptr %15, align 4, !tbaa !9
  %1386 = icmp sle i32 %1384, %1385
  br i1 %1386, label %1387, label %1418

1387:                                             ; preds = %1383
  %1388 = load ptr, ptr %12, align 8, !tbaa !5
  %1389 = load i32, ptr %19, align 4, !tbaa !9
  %1390 = load i32, ptr %20, align 4, !tbaa !9
  %1391 = load i32, ptr %28, align 4, !tbaa !9
  %1392 = mul nsw i32 %1390, %1391
  %1393 = add nsw i32 %1389, %1392
  %1394 = sext i32 %1393 to i64
  %1395 = getelementptr inbounds %struct.doublecomplex, ptr %1388, i64 %1394
  %1396 = call { double, double } @Cd(ptr noundef %1395)
  %1397 = extractvalue { double, double } %1396, 0
  %1398 = extractvalue { double, double } %1396, 1
  %1399 = getelementptr inbounds { double, double }, ptr %49, i32 0, i32 0
  %1400 = getelementptr inbounds { double, double }, ptr %49, i32 0, i32 1
  store double %1397, ptr %1399, align 8
  store double %1398, ptr %1400, align 8
  %1401 = getelementptr inbounds { double, double }, ptr %49, i32 0, i32 0
  %1402 = load double, ptr %1401, align 8
  %1403 = getelementptr inbounds { double, double }, ptr %49, i32 0, i32 1
  %1404 = load double, ptr %1403, align 8
  %1405 = call double @cabs(double noundef %1402, double noundef %1404) #6
  store double %1405, ptr %18, align 8, !tbaa !11
  %1406 = load double, ptr %25, align 8, !tbaa !11
  %1407 = load double, ptr %18, align 8, !tbaa !11
  %1408 = fcmp olt double %1406, %1407
  br i1 %1408, label %1412, label %1409

1409:                                             ; preds = %1387
  %1410 = call i32 @disnan_(ptr noundef %18)
  %1411 = icmp ne i32 %1410, 0
  br i1 %1411, label %1412, label %1414

1412:                                             ; preds = %1409, %1387
  %1413 = load double, ptr %18, align 8, !tbaa !11
  store double %1413, ptr %25, align 8, !tbaa !11
  br label %1414

1414:                                             ; preds = %1412, %1409
  br label %1415

1415:                                             ; preds = %1414
  %1416 = load i32, ptr %19, align 4, !tbaa !9
  %1417 = add nsw i32 %1416, 1
  store i32 %1417, ptr %19, align 4, !tbaa !9
  br label %1383, !llvm.loop !38

1418:                                             ; preds = %1383
  br label %1419

1419:                                             ; preds = %1418
  %1420 = load i32, ptr %20, align 4, !tbaa !9
  %1421 = add nsw i32 %1420, 1
  store i32 %1421, ptr %20, align 4, !tbaa !9
  br label %1275, !llvm.loop !39

1422:                                             ; preds = %1275
  br label %1679

1423:                                             ; preds = %1172
  %1424 = load i32, ptr %21, align 4, !tbaa !9
  %1425 = sub nsw i32 %1424, 2
  store i32 %1425, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %1426

1426:                                             ; preds = %1576, %1423
  %1427 = load i32, ptr %20, align 4, !tbaa !9
  %1428 = load i32, ptr %14, align 4, !tbaa !9
  %1429 = icmp sle i32 %1427, %1428
  br i1 %1429, label %1430, label %1579

1430:                                             ; preds = %1426
  %1431 = load i32, ptr %21, align 4, !tbaa !9
  %1432 = load i32, ptr %20, align 4, !tbaa !9
  %1433 = add nsw i32 %1431, %1432
  %1434 = sub nsw i32 %1433, 1
  store i32 %1434, ptr %15, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %1435

1435:                                             ; preds = %1467, %1430
  %1436 = load i32, ptr %19, align 4, !tbaa !9
  %1437 = load i32, ptr %15, align 4, !tbaa !9
  %1438 = icmp sle i32 %1436, %1437
  br i1 %1438, label %1439, label %1470

1439:                                             ; preds = %1435
  %1440 = load ptr, ptr %12, align 8, !tbaa !5
  %1441 = load i32, ptr %19, align 4, !tbaa !9
  %1442 = load i32, ptr %20, align 4, !tbaa !9
  %1443 = load i32, ptr %28, align 4, !tbaa !9
  %1444 = mul nsw i32 %1442, %1443
  %1445 = add nsw i32 %1441, %1444
  %1446 = sext i32 %1445 to i64
  %1447 = getelementptr inbounds %struct.doublecomplex, ptr %1440, i64 %1446
  %1448 = call { double, double } @Cd(ptr noundef %1447)
  %1449 = extractvalue { double, double } %1448, 0
  %1450 = extractvalue { double, double } %1448, 1
  %1451 = getelementptr inbounds { double, double }, ptr %50, i32 0, i32 0
  %1452 = getelementptr inbounds { double, double }, ptr %50, i32 0, i32 1
  store double %1449, ptr %1451, align 8
  store double %1450, ptr %1452, align 8
  %1453 = getelementptr inbounds { double, double }, ptr %50, i32 0, i32 0
  %1454 = load double, ptr %1453, align 8
  %1455 = getelementptr inbounds { double, double }, ptr %50, i32 0, i32 1
  %1456 = load double, ptr %1455, align 8
  %1457 = call double @cabs(double noundef %1454, double noundef %1456) #6
  store double %1457, ptr %18, align 8, !tbaa !11
  %1458 = load double, ptr %25, align 8, !tbaa !11
  %1459 = load double, ptr %18, align 8, !tbaa !11
  %1460 = fcmp olt double %1458, %1459
  br i1 %1460, label %1464, label %1461

1461:                                             ; preds = %1439
  %1462 = call i32 @disnan_(ptr noundef %18)
  %1463 = icmp ne i32 %1462, 0
  br i1 %1463, label %1464, label %1466

1464:                                             ; preds = %1461, %1439
  %1465 = load double, ptr %18, align 8, !tbaa !11
  store double %1465, ptr %25, align 8, !tbaa !11
  br label %1466

1466:                                             ; preds = %1464, %1461
  br label %1467

1467:                                             ; preds = %1466
  %1468 = load i32, ptr %19, align 4, !tbaa !9
  %1469 = add nsw i32 %1468, 1
  store i32 %1469, ptr %19, align 4, !tbaa !9
  br label %1435, !llvm.loop !40

1470:                                             ; preds = %1435
  %1471 = load i32, ptr %21, align 4, !tbaa !9
  %1472 = load i32, ptr %20, align 4, !tbaa !9
  %1473 = add nsw i32 %1471, %1472
  store i32 %1473, ptr %19, align 4, !tbaa !9
  %1474 = load i32, ptr %19, align 4, !tbaa !9
  %1475 = load i32, ptr %20, align 4, !tbaa !9
  %1476 = load i32, ptr %28, align 4, !tbaa !9
  %1477 = mul nsw i32 %1475, %1476
  %1478 = add nsw i32 %1474, %1477
  store i32 %1478, ptr %15, align 4, !tbaa !9
  %1479 = load ptr, ptr %12, align 8, !tbaa !5
  %1480 = load i32, ptr %15, align 4, !tbaa !9
  %1481 = sext i32 %1480 to i64
  %1482 = getelementptr inbounds %struct.doublecomplex, ptr %1479, i64 %1481
  %1483 = getelementptr inbounds %struct.doublecomplex, ptr %1482, i32 0, i32 0
  %1484 = load double, ptr %1483, align 8, !tbaa !13
  store double %1484, ptr %17, align 8, !tbaa !11
  %1485 = load double, ptr %17, align 8, !tbaa !11
  %1486 = fcmp oge double %1485, 0.000000e+00
  br i1 %1486, label %1487, label %1489

1487:                                             ; preds = %1470
  %1488 = load double, ptr %17, align 8, !tbaa !11
  br label %1492

1489:                                             ; preds = %1470
  %1490 = load double, ptr %17, align 8, !tbaa !11
  %1491 = fneg double %1490
  br label %1492

1492:                                             ; preds = %1489, %1487
  %1493 = phi double [ %1488, %1487 ], [ %1491, %1489 ]
  store double %1493, ptr %18, align 8, !tbaa !11
  %1494 = load double, ptr %25, align 8, !tbaa !11
  %1495 = load double, ptr %18, align 8, !tbaa !11
  %1496 = fcmp olt double %1494, %1495
  br i1 %1496, label %1500, label %1497

1497:                                             ; preds = %1492
  %1498 = call i32 @disnan_(ptr noundef %18)
  %1499 = icmp ne i32 %1498, 0
  br i1 %1499, label %1500, label %1502

1500:                                             ; preds = %1497, %1492
  %1501 = load double, ptr %18, align 8, !tbaa !11
  store double %1501, ptr %25, align 8, !tbaa !11
  br label %1502

1502:                                             ; preds = %1500, %1497
  %1503 = load i32, ptr %19, align 4, !tbaa !9
  %1504 = add nsw i32 %1503, 1
  store i32 %1504, ptr %19, align 4, !tbaa !9
  %1505 = load i32, ptr %19, align 4, !tbaa !9
  %1506 = load i32, ptr %20, align 4, !tbaa !9
  %1507 = load i32, ptr %28, align 4, !tbaa !9
  %1508 = mul nsw i32 %1506, %1507
  %1509 = add nsw i32 %1505, %1508
  store i32 %1509, ptr %15, align 4, !tbaa !9
  %1510 = load ptr, ptr %12, align 8, !tbaa !5
  %1511 = load i32, ptr %15, align 4, !tbaa !9
  %1512 = sext i32 %1511 to i64
  %1513 = getelementptr inbounds %struct.doublecomplex, ptr %1510, i64 %1512
  %1514 = getelementptr inbounds %struct.doublecomplex, ptr %1513, i32 0, i32 0
  %1515 = load double, ptr %1514, align 8, !tbaa !13
  store double %1515, ptr %17, align 8, !tbaa !11
  %1516 = load double, ptr %17, align 8, !tbaa !11
  %1517 = fcmp oge double %1516, 0.000000e+00
  br i1 %1517, label %1518, label %1520

1518:                                             ; preds = %1502
  %1519 = load double, ptr %17, align 8, !tbaa !11
  br label %1523

1520:                                             ; preds = %1502
  %1521 = load double, ptr %17, align 8, !tbaa !11
  %1522 = fneg double %1521
  br label %1523

1523:                                             ; preds = %1520, %1518
  %1524 = phi double [ %1519, %1518 ], [ %1522, %1520 ]
  store double %1524, ptr %18, align 8, !tbaa !11
  %1525 = load double, ptr %25, align 8, !tbaa !11
  %1526 = load double, ptr %18, align 8, !tbaa !11
  %1527 = fcmp olt double %1525, %1526
  br i1 %1527, label %1531, label %1528

1528:                                             ; preds = %1523
  %1529 = call i32 @disnan_(ptr noundef %18)
  %1530 = icmp ne i32 %1529, 0
  br i1 %1530, label %1531, label %1533

1531:                                             ; preds = %1528, %1523
  %1532 = load double, ptr %18, align 8, !tbaa !11
  store double %1532, ptr %25, align 8, !tbaa !11
  br label %1533

1533:                                             ; preds = %1531, %1528
  %1534 = load ptr, ptr %11, align 8, !tbaa !5
  %1535 = load i32, ptr %1534, align 4, !tbaa !9
  store i32 %1535, ptr %15, align 4, !tbaa !9
  %1536 = load i32, ptr %21, align 4, !tbaa !9
  %1537 = load i32, ptr %20, align 4, !tbaa !9
  %1538 = add nsw i32 %1536, %1537
  %1539 = add nsw i32 %1538, 2
  store i32 %1539, ptr %19, align 4, !tbaa !9
  br label %1540

1540:                                             ; preds = %1572, %1533
  %1541 = load i32, ptr %19, align 4, !tbaa !9
  %1542 = load i32, ptr %15, align 4, !tbaa !9
  %1543 = icmp sle i32 %1541, %1542
  br i1 %1543, label %1544, label %1575

1544:                                             ; preds = %1540
  %1545 = load ptr, ptr %12, align 8, !tbaa !5
  %1546 = load i32, ptr %19, align 4, !tbaa !9
  %1547 = load i32, ptr %20, align 4, !tbaa !9
  %1548 = load i32, ptr %28, align 4, !tbaa !9
  %1549 = mul nsw i32 %1547, %1548
  %1550 = add nsw i32 %1546, %1549
  %1551 = sext i32 %1550 to i64
  %1552 = getelementptr inbounds %struct.doublecomplex, ptr %1545, i64 %1551
  %1553 = call { double, double } @Cd(ptr noundef %1552)
  %1554 = extractvalue { double, double } %1553, 0
  %1555 = extractvalue { double, double } %1553, 1
  %1556 = getelementptr inbounds { double, double }, ptr %51, i32 0, i32 0
  %1557 = getelementptr inbounds { double, double }, ptr %51, i32 0, i32 1
  store double %1554, ptr %1556, align 8
  store double %1555, ptr %1557, align 8
  %1558 = getelementptr inbounds { double, double }, ptr %51, i32 0, i32 0
  %1559 = load double, ptr %1558, align 8
  %1560 = getelementptr inbounds { double, double }, ptr %51, i32 0, i32 1
  %1561 = load double, ptr %1560, align 8
  %1562 = call double @cabs(double noundef %1559, double noundef %1561) #6
  store double %1562, ptr %18, align 8, !tbaa !11
  %1563 = load double, ptr %25, align 8, !tbaa !11
  %1564 = load double, ptr %18, align 8, !tbaa !11
  %1565 = fcmp olt double %1563, %1564
  br i1 %1565, label %1569, label %1566

1566:                                             ; preds = %1544
  %1567 = call i32 @disnan_(ptr noundef %18)
  %1568 = icmp ne i32 %1567, 0
  br i1 %1568, label %1569, label %1571

1569:                                             ; preds = %1566, %1544
  %1570 = load double, ptr %18, align 8, !tbaa !11
  store double %1570, ptr %25, align 8, !tbaa !11
  br label %1571

1571:                                             ; preds = %1569, %1566
  br label %1572

1572:                                             ; preds = %1571
  %1573 = load i32, ptr %19, align 4, !tbaa !9
  %1574 = add nsw i32 %1573, 1
  store i32 %1574, ptr %19, align 4, !tbaa !9
  br label %1540, !llvm.loop !41

1575:                                             ; preds = %1540
  br label %1576

1576:                                             ; preds = %1575
  %1577 = load i32, ptr %20, align 4, !tbaa !9
  %1578 = add nsw i32 %1577, 1
  store i32 %1578, ptr %20, align 4, !tbaa !9
  br label %1426, !llvm.loop !42

1579:                                             ; preds = %1426
  %1580 = load ptr, ptr %11, align 8, !tbaa !5
  %1581 = load i32, ptr %1580, align 4, !tbaa !9
  %1582 = sub nsw i32 %1581, 2
  store i32 %1582, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %1583

1583:                                             ; preds = %1615, %1579
  %1584 = load i32, ptr %19, align 4, !tbaa !9
  %1585 = load i32, ptr %14, align 4, !tbaa !9
  %1586 = icmp sle i32 %1584, %1585
  br i1 %1586, label %1587, label %1618

1587:                                             ; preds = %1583
  %1588 = load ptr, ptr %12, align 8, !tbaa !5
  %1589 = load i32, ptr %19, align 4, !tbaa !9
  %1590 = load i32, ptr %20, align 4, !tbaa !9
  %1591 = load i32, ptr %28, align 4, !tbaa !9
  %1592 = mul nsw i32 %1590, %1591
  %1593 = add nsw i32 %1589, %1592
  %1594 = sext i32 %1593 to i64
  %1595 = getelementptr inbounds %struct.doublecomplex, ptr %1588, i64 %1594
  %1596 = call { double, double } @Cd(ptr noundef %1595)
  %1597 = extractvalue { double, double } %1596, 0
  %1598 = extractvalue { double, double } %1596, 1
  %1599 = getelementptr inbounds { double, double }, ptr %52, i32 0, i32 0
  %1600 = getelementptr inbounds { double, double }, ptr %52, i32 0, i32 1
  store double %1597, ptr %1599, align 8
  store double %1598, ptr %1600, align 8
  %1601 = getelementptr inbounds { double, double }, ptr %52, i32 0, i32 0
  %1602 = load double, ptr %1601, align 8
  %1603 = getelementptr inbounds { double, double }, ptr %52, i32 0, i32 1
  %1604 = load double, ptr %1603, align 8
  %1605 = call double @cabs(double noundef %1602, double noundef %1604) #6
  store double %1605, ptr %18, align 8, !tbaa !11
  %1606 = load double, ptr %25, align 8, !tbaa !11
  %1607 = load double, ptr %18, align 8, !tbaa !11
  %1608 = fcmp olt double %1606, %1607
  br i1 %1608, label %1612, label %1609

1609:                                             ; preds = %1587
  %1610 = call i32 @disnan_(ptr noundef %18)
  %1611 = icmp ne i32 %1610, 0
  br i1 %1611, label %1612, label %1614

1612:                                             ; preds = %1609, %1587
  %1613 = load double, ptr %18, align 8, !tbaa !11
  store double %1613, ptr %25, align 8, !tbaa !11
  br label %1614

1614:                                             ; preds = %1612, %1609
  br label %1615

1615:                                             ; preds = %1614
  %1616 = load i32, ptr %19, align 4, !tbaa !9
  %1617 = add nsw i32 %1616, 1
  store i32 %1617, ptr %19, align 4, !tbaa !9
  br label %1583, !llvm.loop !43

1618:                                             ; preds = %1583
  %1619 = load i32, ptr %19, align 4, !tbaa !9
  %1620 = load i32, ptr %20, align 4, !tbaa !9
  %1621 = load i32, ptr %28, align 4, !tbaa !9
  %1622 = mul nsw i32 %1620, %1621
  %1623 = add nsw i32 %1619, %1622
  store i32 %1623, ptr %14, align 4, !tbaa !9
  %1624 = load ptr, ptr %12, align 8, !tbaa !5
  %1625 = load i32, ptr %14, align 4, !tbaa !9
  %1626 = sext i32 %1625 to i64
  %1627 = getelementptr inbounds %struct.doublecomplex, ptr %1624, i64 %1626
  %1628 = getelementptr inbounds %struct.doublecomplex, ptr %1627, i32 0, i32 0
  %1629 = load double, ptr %1628, align 8, !tbaa !13
  store double %1629, ptr %17, align 8, !tbaa !11
  %1630 = load double, ptr %17, align 8, !tbaa !11
  %1631 = fcmp oge double %1630, 0.000000e+00
  br i1 %1631, label %1632, label %1634

1632:                                             ; preds = %1618
  %1633 = load double, ptr %17, align 8, !tbaa !11
  br label %1637

1634:                                             ; preds = %1618
  %1635 = load double, ptr %17, align 8, !tbaa !11
  %1636 = fneg double %1635
  br label %1637

1637:                                             ; preds = %1634, %1632
  %1638 = phi double [ %1633, %1632 ], [ %1636, %1634 ]
  store double %1638, ptr %18, align 8, !tbaa !11
  %1639 = load double, ptr %25, align 8, !tbaa !11
  %1640 = load double, ptr %18, align 8, !tbaa !11
  %1641 = fcmp olt double %1639, %1640
  br i1 %1641, label %1645, label %1642

1642:                                             ; preds = %1637
  %1643 = call i32 @disnan_(ptr noundef %18)
  %1644 = icmp ne i32 %1643, 0
  br i1 %1644, label %1645, label %1647

1645:                                             ; preds = %1642, %1637
  %1646 = load double, ptr %18, align 8, !tbaa !11
  store double %1646, ptr %25, align 8, !tbaa !11
  br label %1647

1647:                                             ; preds = %1645, %1642
  %1648 = load ptr, ptr %11, align 8, !tbaa !5
  %1649 = load i32, ptr %1648, align 4, !tbaa !9
  store i32 %1649, ptr %19, align 4, !tbaa !9
  %1650 = load i32, ptr %19, align 4, !tbaa !9
  %1651 = load i32, ptr %20, align 4, !tbaa !9
  %1652 = load i32, ptr %28, align 4, !tbaa !9
  %1653 = mul nsw i32 %1651, %1652
  %1654 = add nsw i32 %1650, %1653
  store i32 %1654, ptr %14, align 4, !tbaa !9
  %1655 = load ptr, ptr %12, align 8, !tbaa !5
  %1656 = load i32, ptr %14, align 4, !tbaa !9
  %1657 = sext i32 %1656 to i64
  %1658 = getelementptr inbounds %struct.doublecomplex, ptr %1655, i64 %1657
  %1659 = getelementptr inbounds %struct.doublecomplex, ptr %1658, i32 0, i32 0
  %1660 = load double, ptr %1659, align 8, !tbaa !13
  store double %1660, ptr %17, align 8, !tbaa !11
  %1661 = load double, ptr %17, align 8, !tbaa !11
  %1662 = fcmp oge double %1661, 0.000000e+00
  br i1 %1662, label %1663, label %1665

1663:                                             ; preds = %1647
  %1664 = load double, ptr %17, align 8, !tbaa !11
  br label %1668

1665:                                             ; preds = %1647
  %1666 = load double, ptr %17, align 8, !tbaa !11
  %1667 = fneg double %1666
  br label %1668

1668:                                             ; preds = %1665, %1663
  %1669 = phi double [ %1664, %1663 ], [ %1667, %1665 ]
  store double %1669, ptr %18, align 8, !tbaa !11
  %1670 = load double, ptr %25, align 8, !tbaa !11
  %1671 = load double, ptr %18, align 8, !tbaa !11
  %1672 = fcmp olt double %1670, %1671
  br i1 %1672, label %1676, label %1673

1673:                                             ; preds = %1668
  %1674 = call i32 @disnan_(ptr noundef %18)
  %1675 = icmp ne i32 %1674, 0
  br i1 %1675, label %1676, label %1678

1676:                                             ; preds = %1673, %1668
  %1677 = load double, ptr %18, align 8, !tbaa !11
  store double %1677, ptr %25, align 8, !tbaa !11
  br label %1678

1678:                                             ; preds = %1676, %1673
  br label %1679

1679:                                             ; preds = %1678, %1422
  br label %2371

1680:                                             ; preds = %1169
  %1681 = load i32, ptr %31, align 4, !tbaa !9
  %1682 = icmp eq i32 %1681, 1
  br i1 %1682, label %1683, label %2022

1683:                                             ; preds = %1680
  store i32 0, ptr %20, align 4, !tbaa !9
  %1684 = load i32, ptr %20, align 4, !tbaa !9
  %1685 = load i32, ptr %20, align 4, !tbaa !9
  %1686 = load i32, ptr %28, align 4, !tbaa !9
  %1687 = mul nsw i32 %1685, %1686
  %1688 = add nsw i32 %1684, %1687
  store i32 %1688, ptr %14, align 4, !tbaa !9
  %1689 = load ptr, ptr %12, align 8, !tbaa !5
  %1690 = load i32, ptr %14, align 4, !tbaa !9
  %1691 = sext i32 %1690 to i64
  %1692 = getelementptr inbounds %struct.doublecomplex, ptr %1689, i64 %1691
  %1693 = getelementptr inbounds %struct.doublecomplex, ptr %1692, i32 0, i32 0
  %1694 = load double, ptr %1693, align 8, !tbaa !13
  store double %1694, ptr %17, align 8, !tbaa !11
  %1695 = load double, ptr %17, align 8, !tbaa !11
  %1696 = fcmp oge double %1695, 0.000000e+00
  br i1 %1696, label %1697, label %1699

1697:                                             ; preds = %1683
  %1698 = load double, ptr %17, align 8, !tbaa !11
  br label %1702

1699:                                             ; preds = %1683
  %1700 = load double, ptr %17, align 8, !tbaa !11
  %1701 = fneg double %1700
  br label %1702

1702:                                             ; preds = %1699, %1697
  %1703 = phi double [ %1698, %1697 ], [ %1701, %1699 ]
  store double %1703, ptr %18, align 8, !tbaa !11
  %1704 = load double, ptr %25, align 8, !tbaa !11
  %1705 = load double, ptr %18, align 8, !tbaa !11
  %1706 = fcmp olt double %1704, %1705
  br i1 %1706, label %1710, label %1707

1707:                                             ; preds = %1702
  %1708 = call i32 @disnan_(ptr noundef %18)
  %1709 = icmp ne i32 %1708, 0
  br i1 %1709, label %1710, label %1712

1710:                                             ; preds = %1707, %1702
  %1711 = load double, ptr %18, align 8, !tbaa !11
  store double %1711, ptr %25, align 8, !tbaa !11
  br label %1712

1712:                                             ; preds = %1710, %1707
  %1713 = load i32, ptr %21, align 4, !tbaa !9
  %1714 = sub nsw i32 %1713, 1
  store i32 %1714, ptr %14, align 4, !tbaa !9
  store i32 1, ptr %19, align 4, !tbaa !9
  br label %1715

1715:                                             ; preds = %1747, %1712
  %1716 = load i32, ptr %19, align 4, !tbaa !9
  %1717 = load i32, ptr %14, align 4, !tbaa !9
  %1718 = icmp sle i32 %1716, %1717
  br i1 %1718, label %1719, label %1750

1719:                                             ; preds = %1715
  %1720 = load ptr, ptr %12, align 8, !tbaa !5
  %1721 = load i32, ptr %19, align 4, !tbaa !9
  %1722 = load i32, ptr %20, align 4, !tbaa !9
  %1723 = load i32, ptr %28, align 4, !tbaa !9
  %1724 = mul nsw i32 %1722, %1723
  %1725 = add nsw i32 %1721, %1724
  %1726 = sext i32 %1725 to i64
  %1727 = getelementptr inbounds %struct.doublecomplex, ptr %1720, i64 %1726
  %1728 = call { double, double } @Cd(ptr noundef %1727)
  %1729 = extractvalue { double, double } %1728, 0
  %1730 = extractvalue { double, double } %1728, 1
  %1731 = getelementptr inbounds { double, double }, ptr %53, i32 0, i32 0
  %1732 = getelementptr inbounds { double, double }, ptr %53, i32 0, i32 1
  store double %1729, ptr %1731, align 8
  store double %1730, ptr %1732, align 8
  %1733 = getelementptr inbounds { double, double }, ptr %53, i32 0, i32 0
  %1734 = load double, ptr %1733, align 8
  %1735 = getelementptr inbounds { double, double }, ptr %53, i32 0, i32 1
  %1736 = load double, ptr %1735, align 8
  %1737 = call double @cabs(double noundef %1734, double noundef %1736) #6
  store double %1737, ptr %18, align 8, !tbaa !11
  %1738 = load double, ptr %25, align 8, !tbaa !11
  %1739 = load double, ptr %18, align 8, !tbaa !11
  %1740 = fcmp olt double %1738, %1739
  br i1 %1740, label %1744, label %1741

1741:                                             ; preds = %1719
  %1742 = call i32 @disnan_(ptr noundef %18)
  %1743 = icmp ne i32 %1742, 0
  br i1 %1743, label %1744, label %1746

1744:                                             ; preds = %1741, %1719
  %1745 = load double, ptr %18, align 8, !tbaa !11
  store double %1745, ptr %25, align 8, !tbaa !11
  br label %1746

1746:                                             ; preds = %1744, %1741
  br label %1747

1747:                                             ; preds = %1746
  %1748 = load i32, ptr %19, align 4, !tbaa !9
  %1749 = add nsw i32 %1748, 1
  store i32 %1749, ptr %19, align 4, !tbaa !9
  br label %1715, !llvm.loop !44

1750:                                             ; preds = %1715
  %1751 = load i32, ptr %21, align 4, !tbaa !9
  %1752 = sub nsw i32 %1751, 1
  store i32 %1752, ptr %14, align 4, !tbaa !9
  store i32 1, ptr %20, align 4, !tbaa !9
  br label %1753

1753:                                             ; preds = %1897, %1750
  %1754 = load i32, ptr %20, align 4, !tbaa !9
  %1755 = load i32, ptr %14, align 4, !tbaa !9
  %1756 = icmp sle i32 %1754, %1755
  br i1 %1756, label %1757, label %1900

1757:                                             ; preds = %1753
  %1758 = load i32, ptr %20, align 4, !tbaa !9
  %1759 = sub nsw i32 %1758, 2
  store i32 %1759, ptr %15, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %1760

1760:                                             ; preds = %1792, %1757
  %1761 = load i32, ptr %19, align 4, !tbaa !9
  %1762 = load i32, ptr %15, align 4, !tbaa !9
  %1763 = icmp sle i32 %1761, %1762
  br i1 %1763, label %1764, label %1795

1764:                                             ; preds = %1760
  %1765 = load ptr, ptr %12, align 8, !tbaa !5
  %1766 = load i32, ptr %19, align 4, !tbaa !9
  %1767 = load i32, ptr %20, align 4, !tbaa !9
  %1768 = load i32, ptr %28, align 4, !tbaa !9
  %1769 = mul nsw i32 %1767, %1768
  %1770 = add nsw i32 %1766, %1769
  %1771 = sext i32 %1770 to i64
  %1772 = getelementptr inbounds %struct.doublecomplex, ptr %1765, i64 %1771
  %1773 = call { double, double } @Cd(ptr noundef %1772)
  %1774 = extractvalue { double, double } %1773, 0
  %1775 = extractvalue { double, double } %1773, 1
  %1776 = getelementptr inbounds { double, double }, ptr %54, i32 0, i32 0
  %1777 = getelementptr inbounds { double, double }, ptr %54, i32 0, i32 1
  store double %1774, ptr %1776, align 8
  store double %1775, ptr %1777, align 8
  %1778 = getelementptr inbounds { double, double }, ptr %54, i32 0, i32 0
  %1779 = load double, ptr %1778, align 8
  %1780 = getelementptr inbounds { double, double }, ptr %54, i32 0, i32 1
  %1781 = load double, ptr %1780, align 8
  %1782 = call double @cabs(double noundef %1779, double noundef %1781) #6
  store double %1782, ptr %18, align 8, !tbaa !11
  %1783 = load double, ptr %25, align 8, !tbaa !11
  %1784 = load double, ptr %18, align 8, !tbaa !11
  %1785 = fcmp olt double %1783, %1784
  br i1 %1785, label %1789, label %1786

1786:                                             ; preds = %1764
  %1787 = call i32 @disnan_(ptr noundef %18)
  %1788 = icmp ne i32 %1787, 0
  br i1 %1788, label %1789, label %1791

1789:                                             ; preds = %1786, %1764
  %1790 = load double, ptr %18, align 8, !tbaa !11
  store double %1790, ptr %25, align 8, !tbaa !11
  br label %1791

1791:                                             ; preds = %1789, %1786
  br label %1792

1792:                                             ; preds = %1791
  %1793 = load i32, ptr %19, align 4, !tbaa !9
  %1794 = add nsw i32 %1793, 1
  store i32 %1794, ptr %19, align 4, !tbaa !9
  br label %1760, !llvm.loop !45

1795:                                             ; preds = %1760
  %1796 = load i32, ptr %20, align 4, !tbaa !9
  %1797 = sub nsw i32 %1796, 1
  store i32 %1797, ptr %19, align 4, !tbaa !9
  %1798 = load i32, ptr %19, align 4, !tbaa !9
  %1799 = load i32, ptr %20, align 4, !tbaa !9
  %1800 = load i32, ptr %28, align 4, !tbaa !9
  %1801 = mul nsw i32 %1799, %1800
  %1802 = add nsw i32 %1798, %1801
  store i32 %1802, ptr %15, align 4, !tbaa !9
  %1803 = load ptr, ptr %12, align 8, !tbaa !5
  %1804 = load i32, ptr %15, align 4, !tbaa !9
  %1805 = sext i32 %1804 to i64
  %1806 = getelementptr inbounds %struct.doublecomplex, ptr %1803, i64 %1805
  %1807 = getelementptr inbounds %struct.doublecomplex, ptr %1806, i32 0, i32 0
  %1808 = load double, ptr %1807, align 8, !tbaa !13
  store double %1808, ptr %17, align 8, !tbaa !11
  %1809 = load double, ptr %17, align 8, !tbaa !11
  %1810 = fcmp oge double %1809, 0.000000e+00
  br i1 %1810, label %1811, label %1813

1811:                                             ; preds = %1795
  %1812 = load double, ptr %17, align 8, !tbaa !11
  br label %1816

1813:                                             ; preds = %1795
  %1814 = load double, ptr %17, align 8, !tbaa !11
  %1815 = fneg double %1814
  br label %1816

1816:                                             ; preds = %1813, %1811
  %1817 = phi double [ %1812, %1811 ], [ %1815, %1813 ]
  store double %1817, ptr %18, align 8, !tbaa !11
  %1818 = load double, ptr %25, align 8, !tbaa !11
  %1819 = load double, ptr %18, align 8, !tbaa !11
  %1820 = fcmp olt double %1818, %1819
  br i1 %1820, label %1824, label %1821

1821:                                             ; preds = %1816
  %1822 = call i32 @disnan_(ptr noundef %18)
  %1823 = icmp ne i32 %1822, 0
  br i1 %1823, label %1824, label %1826

1824:                                             ; preds = %1821, %1816
  %1825 = load double, ptr %18, align 8, !tbaa !11
  store double %1825, ptr %25, align 8, !tbaa !11
  br label %1826

1826:                                             ; preds = %1824, %1821
  %1827 = load i32, ptr %20, align 4, !tbaa !9
  store i32 %1827, ptr %19, align 4, !tbaa !9
  %1828 = load i32, ptr %19, align 4, !tbaa !9
  %1829 = load i32, ptr %20, align 4, !tbaa !9
  %1830 = load i32, ptr %28, align 4, !tbaa !9
  %1831 = mul nsw i32 %1829, %1830
  %1832 = add nsw i32 %1828, %1831
  store i32 %1832, ptr %15, align 4, !tbaa !9
  %1833 = load ptr, ptr %12, align 8, !tbaa !5
  %1834 = load i32, ptr %15, align 4, !tbaa !9
  %1835 = sext i32 %1834 to i64
  %1836 = getelementptr inbounds %struct.doublecomplex, ptr %1833, i64 %1835
  %1837 = getelementptr inbounds %struct.doublecomplex, ptr %1836, i32 0, i32 0
  %1838 = load double, ptr %1837, align 8, !tbaa !13
  store double %1838, ptr %17, align 8, !tbaa !11
  %1839 = load double, ptr %17, align 8, !tbaa !11
  %1840 = fcmp oge double %1839, 0.000000e+00
  br i1 %1840, label %1841, label %1843

1841:                                             ; preds = %1826
  %1842 = load double, ptr %17, align 8, !tbaa !11
  br label %1846

1843:                                             ; preds = %1826
  %1844 = load double, ptr %17, align 8, !tbaa !11
  %1845 = fneg double %1844
  br label %1846

1846:                                             ; preds = %1843, %1841
  %1847 = phi double [ %1842, %1841 ], [ %1845, %1843 ]
  store double %1847, ptr %18, align 8, !tbaa !11
  %1848 = load double, ptr %25, align 8, !tbaa !11
  %1849 = load double, ptr %18, align 8, !tbaa !11
  %1850 = fcmp olt double %1848, %1849
  br i1 %1850, label %1854, label %1851

1851:                                             ; preds = %1846
  %1852 = call i32 @disnan_(ptr noundef %18)
  %1853 = icmp ne i32 %1852, 0
  br i1 %1853, label %1854, label %1856

1854:                                             ; preds = %1851, %1846
  %1855 = load double, ptr %18, align 8, !tbaa !11
  store double %1855, ptr %25, align 8, !tbaa !11
  br label %1856

1856:                                             ; preds = %1854, %1851
  %1857 = load i32, ptr %21, align 4, !tbaa !9
  %1858 = sub nsw i32 %1857, 1
  store i32 %1858, ptr %15, align 4, !tbaa !9
  %1859 = load i32, ptr %20, align 4, !tbaa !9
  %1860 = add nsw i32 %1859, 1
  store i32 %1860, ptr %19, align 4, !tbaa !9
  br label %1861

1861:                                             ; preds = %1893, %1856
  %1862 = load i32, ptr %19, align 4, !tbaa !9
  %1863 = load i32, ptr %15, align 4, !tbaa !9
  %1864 = icmp sle i32 %1862, %1863
  br i1 %1864, label %1865, label %1896

1865:                                             ; preds = %1861
  %1866 = load ptr, ptr %12, align 8, !tbaa !5
  %1867 = load i32, ptr %19, align 4, !tbaa !9
  %1868 = load i32, ptr %20, align 4, !tbaa !9
  %1869 = load i32, ptr %28, align 4, !tbaa !9
  %1870 = mul nsw i32 %1868, %1869
  %1871 = add nsw i32 %1867, %1870
  %1872 = sext i32 %1871 to i64
  %1873 = getelementptr inbounds %struct.doublecomplex, ptr %1866, i64 %1872
  %1874 = call { double, double } @Cd(ptr noundef %1873)
  %1875 = extractvalue { double, double } %1874, 0
  %1876 = extractvalue { double, double } %1874, 1
  %1877 = getelementptr inbounds { double, double }, ptr %55, i32 0, i32 0
  %1878 = getelementptr inbounds { double, double }, ptr %55, i32 0, i32 1
  store double %1875, ptr %1877, align 8
  store double %1876, ptr %1878, align 8
  %1879 = getelementptr inbounds { double, double }, ptr %55, i32 0, i32 0
  %1880 = load double, ptr %1879, align 8
  %1881 = getelementptr inbounds { double, double }, ptr %55, i32 0, i32 1
  %1882 = load double, ptr %1881, align 8
  %1883 = call double @cabs(double noundef %1880, double noundef %1882) #6
  store double %1883, ptr %18, align 8, !tbaa !11
  %1884 = load double, ptr %25, align 8, !tbaa !11
  %1885 = load double, ptr %18, align 8, !tbaa !11
  %1886 = fcmp olt double %1884, %1885
  br i1 %1886, label %1890, label %1887

1887:                                             ; preds = %1865
  %1888 = call i32 @disnan_(ptr noundef %18)
  %1889 = icmp ne i32 %1888, 0
  br i1 %1889, label %1890, label %1892

1890:                                             ; preds = %1887, %1865
  %1891 = load double, ptr %18, align 8, !tbaa !11
  store double %1891, ptr %25, align 8, !tbaa !11
  br label %1892

1892:                                             ; preds = %1890, %1887
  br label %1893

1893:                                             ; preds = %1892
  %1894 = load i32, ptr %19, align 4, !tbaa !9
  %1895 = add nsw i32 %1894, 1
  store i32 %1895, ptr %19, align 4, !tbaa !9
  br label %1861, !llvm.loop !46

1896:                                             ; preds = %1861
  br label %1897

1897:                                             ; preds = %1896
  %1898 = load i32, ptr %20, align 4, !tbaa !9
  %1899 = add nsw i32 %1898, 1
  store i32 %1899, ptr %20, align 4, !tbaa !9
  br label %1753, !llvm.loop !47

1900:                                             ; preds = %1753
  %1901 = load i32, ptr %21, align 4, !tbaa !9
  store i32 %1901, ptr %20, align 4, !tbaa !9
  %1902 = load i32, ptr %21, align 4, !tbaa !9
  %1903 = sub nsw i32 %1902, 2
  store i32 %1903, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %1904

1904:                                             ; preds = %1936, %1900
  %1905 = load i32, ptr %19, align 4, !tbaa !9
  %1906 = load i32, ptr %14, align 4, !tbaa !9
  %1907 = icmp sle i32 %1905, %1906
  br i1 %1907, label %1908, label %1939

1908:                                             ; preds = %1904
  %1909 = load ptr, ptr %12, align 8, !tbaa !5
  %1910 = load i32, ptr %19, align 4, !tbaa !9
  %1911 = load i32, ptr %20, align 4, !tbaa !9
  %1912 = load i32, ptr %28, align 4, !tbaa !9
  %1913 = mul nsw i32 %1911, %1912
  %1914 = add nsw i32 %1910, %1913
  %1915 = sext i32 %1914 to i64
  %1916 = getelementptr inbounds %struct.doublecomplex, ptr %1909, i64 %1915
  %1917 = call { double, double } @Cd(ptr noundef %1916)
  %1918 = extractvalue { double, double } %1917, 0
  %1919 = extractvalue { double, double } %1917, 1
  %1920 = getelementptr inbounds { double, double }, ptr %56, i32 0, i32 0
  %1921 = getelementptr inbounds { double, double }, ptr %56, i32 0, i32 1
  store double %1918, ptr %1920, align 8
  store double %1919, ptr %1921, align 8
  %1922 = getelementptr inbounds { double, double }, ptr %56, i32 0, i32 0
  %1923 = load double, ptr %1922, align 8
  %1924 = getelementptr inbounds { double, double }, ptr %56, i32 0, i32 1
  %1925 = load double, ptr %1924, align 8
  %1926 = call double @cabs(double noundef %1923, double noundef %1925) #6
  store double %1926, ptr %18, align 8, !tbaa !11
  %1927 = load double, ptr %25, align 8, !tbaa !11
  %1928 = load double, ptr %18, align 8, !tbaa !11
  %1929 = fcmp olt double %1927, %1928
  br i1 %1929, label %1933, label %1930

1930:                                             ; preds = %1908
  %1931 = call i32 @disnan_(ptr noundef %18)
  %1932 = icmp ne i32 %1931, 0
  br i1 %1932, label %1933, label %1935

1933:                                             ; preds = %1930, %1908
  %1934 = load double, ptr %18, align 8, !tbaa !11
  store double %1934, ptr %25, align 8, !tbaa !11
  br label %1935

1935:                                             ; preds = %1933, %1930
  br label %1936

1936:                                             ; preds = %1935
  %1937 = load i32, ptr %19, align 4, !tbaa !9
  %1938 = add nsw i32 %1937, 1
  store i32 %1938, ptr %19, align 4, !tbaa !9
  br label %1904, !llvm.loop !48

1939:                                             ; preds = %1904
  %1940 = load i32, ptr %21, align 4, !tbaa !9
  %1941 = sub nsw i32 %1940, 1
  store i32 %1941, ptr %19, align 4, !tbaa !9
  %1942 = load i32, ptr %19, align 4, !tbaa !9
  %1943 = load i32, ptr %20, align 4, !tbaa !9
  %1944 = load i32, ptr %28, align 4, !tbaa !9
  %1945 = mul nsw i32 %1943, %1944
  %1946 = add nsw i32 %1942, %1945
  store i32 %1946, ptr %14, align 4, !tbaa !9
  %1947 = load ptr, ptr %12, align 8, !tbaa !5
  %1948 = load i32, ptr %14, align 4, !tbaa !9
  %1949 = sext i32 %1948 to i64
  %1950 = getelementptr inbounds %struct.doublecomplex, ptr %1947, i64 %1949
  %1951 = getelementptr inbounds %struct.doublecomplex, ptr %1950, i32 0, i32 0
  %1952 = load double, ptr %1951, align 8, !tbaa !13
  store double %1952, ptr %17, align 8, !tbaa !11
  %1953 = load double, ptr %17, align 8, !tbaa !11
  %1954 = fcmp oge double %1953, 0.000000e+00
  br i1 %1954, label %1955, label %1957

1955:                                             ; preds = %1939
  %1956 = load double, ptr %17, align 8, !tbaa !11
  br label %1960

1957:                                             ; preds = %1939
  %1958 = load double, ptr %17, align 8, !tbaa !11
  %1959 = fneg double %1958
  br label %1960

1960:                                             ; preds = %1957, %1955
  %1961 = phi double [ %1956, %1955 ], [ %1959, %1957 ]
  store double %1961, ptr %18, align 8, !tbaa !11
  %1962 = load double, ptr %25, align 8, !tbaa !11
  %1963 = load double, ptr %18, align 8, !tbaa !11
  %1964 = fcmp olt double %1962, %1963
  br i1 %1964, label %1968, label %1965

1965:                                             ; preds = %1960
  %1966 = call i32 @disnan_(ptr noundef %18)
  %1967 = icmp ne i32 %1966, 0
  br i1 %1967, label %1968, label %1970

1968:                                             ; preds = %1965, %1960
  %1969 = load double, ptr %18, align 8, !tbaa !11
  store double %1969, ptr %25, align 8, !tbaa !11
  br label %1970

1970:                                             ; preds = %1968, %1965
  %1971 = load ptr, ptr %11, align 8, !tbaa !5
  %1972 = load i32, ptr %1971, align 4, !tbaa !9
  store i32 %1972, ptr %14, align 4, !tbaa !9
  %1973 = load i32, ptr %21, align 4, !tbaa !9
  %1974 = add nsw i32 %1973, 1
  store i32 %1974, ptr %20, align 4, !tbaa !9
  br label %1975

1975:                                             ; preds = %2018, %1970
  %1976 = load i32, ptr %20, align 4, !tbaa !9
  %1977 = load i32, ptr %14, align 4, !tbaa !9
  %1978 = icmp sle i32 %1976, %1977
  br i1 %1978, label %1979, label %2021

1979:                                             ; preds = %1975
  %1980 = load i32, ptr %21, align 4, !tbaa !9
  %1981 = sub nsw i32 %1980, 1
  store i32 %1981, ptr %15, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %1982

1982:                                             ; preds = %2014, %1979
  %1983 = load i32, ptr %19, align 4, !tbaa !9
  %1984 = load i32, ptr %15, align 4, !tbaa !9
  %1985 = icmp sle i32 %1983, %1984
  br i1 %1985, label %1986, label %2017

1986:                                             ; preds = %1982
  %1987 = load ptr, ptr %12, align 8, !tbaa !5
  %1988 = load i32, ptr %19, align 4, !tbaa !9
  %1989 = load i32, ptr %20, align 4, !tbaa !9
  %1990 = load i32, ptr %28, align 4, !tbaa !9
  %1991 = mul nsw i32 %1989, %1990
  %1992 = add nsw i32 %1988, %1991
  %1993 = sext i32 %1992 to i64
  %1994 = getelementptr inbounds %struct.doublecomplex, ptr %1987, i64 %1993
  %1995 = call { double, double } @Cd(ptr noundef %1994)
  %1996 = extractvalue { double, double } %1995, 0
  %1997 = extractvalue { double, double } %1995, 1
  %1998 = getelementptr inbounds { double, double }, ptr %57, i32 0, i32 0
  %1999 = getelementptr inbounds { double, double }, ptr %57, i32 0, i32 1
  store double %1996, ptr %1998, align 8
  store double %1997, ptr %1999, align 8
  %2000 = getelementptr inbounds { double, double }, ptr %57, i32 0, i32 0
  %2001 = load double, ptr %2000, align 8
  %2002 = getelementptr inbounds { double, double }, ptr %57, i32 0, i32 1
  %2003 = load double, ptr %2002, align 8
  %2004 = call double @cabs(double noundef %2001, double noundef %2003) #6
  store double %2004, ptr %18, align 8, !tbaa !11
  %2005 = load double, ptr %25, align 8, !tbaa !11
  %2006 = load double, ptr %18, align 8, !tbaa !11
  %2007 = fcmp olt double %2005, %2006
  br i1 %2007, label %2011, label %2008

2008:                                             ; preds = %1986
  %2009 = call i32 @disnan_(ptr noundef %18)
  %2010 = icmp ne i32 %2009, 0
  br i1 %2010, label %2011, label %2013

2011:                                             ; preds = %2008, %1986
  %2012 = load double, ptr %18, align 8, !tbaa !11
  store double %2012, ptr %25, align 8, !tbaa !11
  br label %2013

2013:                                             ; preds = %2011, %2008
  br label %2014

2014:                                             ; preds = %2013
  %2015 = load i32, ptr %19, align 4, !tbaa !9
  %2016 = add nsw i32 %2015, 1
  store i32 %2016, ptr %19, align 4, !tbaa !9
  br label %1982, !llvm.loop !49

2017:                                             ; preds = %1982
  br label %2018

2018:                                             ; preds = %2017
  %2019 = load i32, ptr %20, align 4, !tbaa !9
  %2020 = add nsw i32 %2019, 1
  store i32 %2020, ptr %20, align 4, !tbaa !9
  br label %1975, !llvm.loop !50

2021:                                             ; preds = %1975
  br label %2370

2022:                                             ; preds = %1680
  %2023 = load i32, ptr %21, align 4, !tbaa !9
  %2024 = sub nsw i32 %2023, 1
  store i32 %2024, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %2025

2025:                                             ; preds = %2068, %2022
  %2026 = load i32, ptr %20, align 4, !tbaa !9
  %2027 = load i32, ptr %14, align 4, !tbaa !9
  %2028 = icmp sle i32 %2026, %2027
  br i1 %2028, label %2029, label %2071

2029:                                             ; preds = %2025
  %2030 = load i32, ptr %21, align 4, !tbaa !9
  %2031 = sub nsw i32 %2030, 1
  store i32 %2031, ptr %15, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %2032

2032:                                             ; preds = %2064, %2029
  %2033 = load i32, ptr %19, align 4, !tbaa !9
  %2034 = load i32, ptr %15, align 4, !tbaa !9
  %2035 = icmp sle i32 %2033, %2034
  br i1 %2035, label %2036, label %2067

2036:                                             ; preds = %2032
  %2037 = load ptr, ptr %12, align 8, !tbaa !5
  %2038 = load i32, ptr %19, align 4, !tbaa !9
  %2039 = load i32, ptr %20, align 4, !tbaa !9
  %2040 = load i32, ptr %28, align 4, !tbaa !9
  %2041 = mul nsw i32 %2039, %2040
  %2042 = add nsw i32 %2038, %2041
  %2043 = sext i32 %2042 to i64
  %2044 = getelementptr inbounds %struct.doublecomplex, ptr %2037, i64 %2043
  %2045 = call { double, double } @Cd(ptr noundef %2044)
  %2046 = extractvalue { double, double } %2045, 0
  %2047 = extractvalue { double, double } %2045, 1
  %2048 = getelementptr inbounds { double, double }, ptr %58, i32 0, i32 0
  %2049 = getelementptr inbounds { double, double }, ptr %58, i32 0, i32 1
  store double %2046, ptr %2048, align 8
  store double %2047, ptr %2049, align 8
  %2050 = getelementptr inbounds { double, double }, ptr %58, i32 0, i32 0
  %2051 = load double, ptr %2050, align 8
  %2052 = getelementptr inbounds { double, double }, ptr %58, i32 0, i32 1
  %2053 = load double, ptr %2052, align 8
  %2054 = call double @cabs(double noundef %2051, double noundef %2053) #6
  store double %2054, ptr %18, align 8, !tbaa !11
  %2055 = load double, ptr %25, align 8, !tbaa !11
  %2056 = load double, ptr %18, align 8, !tbaa !11
  %2057 = fcmp olt double %2055, %2056
  br i1 %2057, label %2061, label %2058

2058:                                             ; preds = %2036
  %2059 = call i32 @disnan_(ptr noundef %18)
  %2060 = icmp ne i32 %2059, 0
  br i1 %2060, label %2061, label %2063

2061:                                             ; preds = %2058, %2036
  %2062 = load double, ptr %18, align 8, !tbaa !11
  store double %2062, ptr %25, align 8, !tbaa !11
  br label %2063

2063:                                             ; preds = %2061, %2058
  br label %2064

2064:                                             ; preds = %2063
  %2065 = load i32, ptr %19, align 4, !tbaa !9
  %2066 = add nsw i32 %2065, 1
  store i32 %2066, ptr %19, align 4, !tbaa !9
  br label %2032, !llvm.loop !51

2067:                                             ; preds = %2032
  br label %2068

2068:                                             ; preds = %2067
  %2069 = load i32, ptr %20, align 4, !tbaa !9
  %2070 = add nsw i32 %2069, 1
  store i32 %2070, ptr %20, align 4, !tbaa !9
  br label %2025, !llvm.loop !52

2071:                                             ; preds = %2025
  %2072 = load i32, ptr %21, align 4, !tbaa !9
  store i32 %2072, ptr %20, align 4, !tbaa !9
  %2073 = load i32, ptr %20, align 4, !tbaa !9
  %2074 = load i32, ptr %28, align 4, !tbaa !9
  %2075 = mul nsw i32 %2073, %2074
  store i32 %2075, ptr %14, align 4, !tbaa !9
  %2076 = load ptr, ptr %12, align 8, !tbaa !5
  %2077 = load i32, ptr %14, align 4, !tbaa !9
  %2078 = sext i32 %2077 to i64
  %2079 = getelementptr inbounds %struct.doublecomplex, ptr %2076, i64 %2078
  %2080 = getelementptr inbounds %struct.doublecomplex, ptr %2079, i32 0, i32 0
  %2081 = load double, ptr %2080, align 8, !tbaa !13
  store double %2081, ptr %17, align 8, !tbaa !11
  %2082 = load double, ptr %17, align 8, !tbaa !11
  %2083 = fcmp oge double %2082, 0.000000e+00
  br i1 %2083, label %2084, label %2086

2084:                                             ; preds = %2071
  %2085 = load double, ptr %17, align 8, !tbaa !11
  br label %2089

2086:                                             ; preds = %2071
  %2087 = load double, ptr %17, align 8, !tbaa !11
  %2088 = fneg double %2087
  br label %2089

2089:                                             ; preds = %2086, %2084
  %2090 = phi double [ %2085, %2084 ], [ %2088, %2086 ]
  store double %2090, ptr %18, align 8, !tbaa !11
  %2091 = load double, ptr %25, align 8, !tbaa !11
  %2092 = load double, ptr %18, align 8, !tbaa !11
  %2093 = fcmp olt double %2091, %2092
  br i1 %2093, label %2097, label %2094

2094:                                             ; preds = %2089
  %2095 = call i32 @disnan_(ptr noundef %18)
  %2096 = icmp ne i32 %2095, 0
  br i1 %2096, label %2097, label %2099

2097:                                             ; preds = %2094, %2089
  %2098 = load double, ptr %18, align 8, !tbaa !11
  store double %2098, ptr %25, align 8, !tbaa !11
  br label %2099

2099:                                             ; preds = %2097, %2094
  %2100 = load i32, ptr %21, align 4, !tbaa !9
  %2101 = sub nsw i32 %2100, 1
  store i32 %2101, ptr %14, align 4, !tbaa !9
  store i32 1, ptr %19, align 4, !tbaa !9
  br label %2102

2102:                                             ; preds = %2134, %2099
  %2103 = load i32, ptr %19, align 4, !tbaa !9
  %2104 = load i32, ptr %14, align 4, !tbaa !9
  %2105 = icmp sle i32 %2103, %2104
  br i1 %2105, label %2106, label %2137

2106:                                             ; preds = %2102
  %2107 = load ptr, ptr %12, align 8, !tbaa !5
  %2108 = load i32, ptr %19, align 4, !tbaa !9
  %2109 = load i32, ptr %20, align 4, !tbaa !9
  %2110 = load i32, ptr %28, align 4, !tbaa !9
  %2111 = mul nsw i32 %2109, %2110
  %2112 = add nsw i32 %2108, %2111
  %2113 = sext i32 %2112 to i64
  %2114 = getelementptr inbounds %struct.doublecomplex, ptr %2107, i64 %2113
  %2115 = call { double, double } @Cd(ptr noundef %2114)
  %2116 = extractvalue { double, double } %2115, 0
  %2117 = extractvalue { double, double } %2115, 1
  %2118 = getelementptr inbounds { double, double }, ptr %59, i32 0, i32 0
  %2119 = getelementptr inbounds { double, double }, ptr %59, i32 0, i32 1
  store double %2116, ptr %2118, align 8
  store double %2117, ptr %2119, align 8
  %2120 = getelementptr inbounds { double, double }, ptr %59, i32 0, i32 0
  %2121 = load double, ptr %2120, align 8
  %2122 = getelementptr inbounds { double, double }, ptr %59, i32 0, i32 1
  %2123 = load double, ptr %2122, align 8
  %2124 = call double @cabs(double noundef %2121, double noundef %2123) #6
  store double %2124, ptr %18, align 8, !tbaa !11
  %2125 = load double, ptr %25, align 8, !tbaa !11
  %2126 = load double, ptr %18, align 8, !tbaa !11
  %2127 = fcmp olt double %2125, %2126
  br i1 %2127, label %2131, label %2128

2128:                                             ; preds = %2106
  %2129 = call i32 @disnan_(ptr noundef %18)
  %2130 = icmp ne i32 %2129, 0
  br i1 %2130, label %2131, label %2133

2131:                                             ; preds = %2128, %2106
  %2132 = load double, ptr %18, align 8, !tbaa !11
  store double %2132, ptr %25, align 8, !tbaa !11
  br label %2133

2133:                                             ; preds = %2131, %2128
  br label %2134

2134:                                             ; preds = %2133
  %2135 = load i32, ptr %19, align 4, !tbaa !9
  %2136 = add nsw i32 %2135, 1
  store i32 %2136, ptr %19, align 4, !tbaa !9
  br label %2102, !llvm.loop !53

2137:                                             ; preds = %2102
  %2138 = load ptr, ptr %11, align 8, !tbaa !5
  %2139 = load i32, ptr %2138, align 4, !tbaa !9
  %2140 = sub nsw i32 %2139, 1
  store i32 %2140, ptr %14, align 4, !tbaa !9
  %2141 = load i32, ptr %21, align 4, !tbaa !9
  %2142 = add nsw i32 %2141, 1
  store i32 %2142, ptr %20, align 4, !tbaa !9
  br label %2143

2143:                                             ; preds = %2295, %2137
  %2144 = load i32, ptr %20, align 4, !tbaa !9
  %2145 = load i32, ptr %14, align 4, !tbaa !9
  %2146 = icmp sle i32 %2144, %2145
  br i1 %2146, label %2147, label %2298

2147:                                             ; preds = %2143
  %2148 = load i32, ptr %20, align 4, !tbaa !9
  %2149 = load i32, ptr %21, align 4, !tbaa !9
  %2150 = sub nsw i32 %2148, %2149
  %2151 = sub nsw i32 %2150, 2
  store i32 %2151, ptr %15, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %2152

2152:                                             ; preds = %2184, %2147
  %2153 = load i32, ptr %19, align 4, !tbaa !9
  %2154 = load i32, ptr %15, align 4, !tbaa !9
  %2155 = icmp sle i32 %2153, %2154
  br i1 %2155, label %2156, label %2187

2156:                                             ; preds = %2152
  %2157 = load ptr, ptr %12, align 8, !tbaa !5
  %2158 = load i32, ptr %19, align 4, !tbaa !9
  %2159 = load i32, ptr %20, align 4, !tbaa !9
  %2160 = load i32, ptr %28, align 4, !tbaa !9
  %2161 = mul nsw i32 %2159, %2160
  %2162 = add nsw i32 %2158, %2161
  %2163 = sext i32 %2162 to i64
  %2164 = getelementptr inbounds %struct.doublecomplex, ptr %2157, i64 %2163
  %2165 = call { double, double } @Cd(ptr noundef %2164)
  %2166 = extractvalue { double, double } %2165, 0
  %2167 = extractvalue { double, double } %2165, 1
  %2168 = getelementptr inbounds { double, double }, ptr %60, i32 0, i32 0
  %2169 = getelementptr inbounds { double, double }, ptr %60, i32 0, i32 1
  store double %2166, ptr %2168, align 8
  store double %2167, ptr %2169, align 8
  %2170 = getelementptr inbounds { double, double }, ptr %60, i32 0, i32 0
  %2171 = load double, ptr %2170, align 8
  %2172 = getelementptr inbounds { double, double }, ptr %60, i32 0, i32 1
  %2173 = load double, ptr %2172, align 8
  %2174 = call double @cabs(double noundef %2171, double noundef %2173) #6
  store double %2174, ptr %18, align 8, !tbaa !11
  %2175 = load double, ptr %25, align 8, !tbaa !11
  %2176 = load double, ptr %18, align 8, !tbaa !11
  %2177 = fcmp olt double %2175, %2176
  br i1 %2177, label %2181, label %2178

2178:                                             ; preds = %2156
  %2179 = call i32 @disnan_(ptr noundef %18)
  %2180 = icmp ne i32 %2179, 0
  br i1 %2180, label %2181, label %2183

2181:                                             ; preds = %2178, %2156
  %2182 = load double, ptr %18, align 8, !tbaa !11
  store double %2182, ptr %25, align 8, !tbaa !11
  br label %2183

2183:                                             ; preds = %2181, %2178
  br label %2184

2184:                                             ; preds = %2183
  %2185 = load i32, ptr %19, align 4, !tbaa !9
  %2186 = add nsw i32 %2185, 1
  store i32 %2186, ptr %19, align 4, !tbaa !9
  br label %2152, !llvm.loop !54

2187:                                             ; preds = %2152
  %2188 = load i32, ptr %20, align 4, !tbaa !9
  %2189 = load i32, ptr %21, align 4, !tbaa !9
  %2190 = sub nsw i32 %2188, %2189
  %2191 = sub nsw i32 %2190, 1
  store i32 %2191, ptr %19, align 4, !tbaa !9
  %2192 = load i32, ptr %19, align 4, !tbaa !9
  %2193 = load i32, ptr %20, align 4, !tbaa !9
  %2194 = load i32, ptr %28, align 4, !tbaa !9
  %2195 = mul nsw i32 %2193, %2194
  %2196 = add nsw i32 %2192, %2195
  store i32 %2196, ptr %15, align 4, !tbaa !9
  %2197 = load ptr, ptr %12, align 8, !tbaa !5
  %2198 = load i32, ptr %15, align 4, !tbaa !9
  %2199 = sext i32 %2198 to i64
  %2200 = getelementptr inbounds %struct.doublecomplex, ptr %2197, i64 %2199
  %2201 = getelementptr inbounds %struct.doublecomplex, ptr %2200, i32 0, i32 0
  %2202 = load double, ptr %2201, align 8, !tbaa !13
  store double %2202, ptr %17, align 8, !tbaa !11
  %2203 = load double, ptr %17, align 8, !tbaa !11
  %2204 = fcmp oge double %2203, 0.000000e+00
  br i1 %2204, label %2205, label %2207

2205:                                             ; preds = %2187
  %2206 = load double, ptr %17, align 8, !tbaa !11
  br label %2210

2207:                                             ; preds = %2187
  %2208 = load double, ptr %17, align 8, !tbaa !11
  %2209 = fneg double %2208
  br label %2210

2210:                                             ; preds = %2207, %2205
  %2211 = phi double [ %2206, %2205 ], [ %2209, %2207 ]
  store double %2211, ptr %18, align 8, !tbaa !11
  %2212 = load double, ptr %25, align 8, !tbaa !11
  %2213 = load double, ptr %18, align 8, !tbaa !11
  %2214 = fcmp olt double %2212, %2213
  br i1 %2214, label %2218, label %2215

2215:                                             ; preds = %2210
  %2216 = call i32 @disnan_(ptr noundef %18)
  %2217 = icmp ne i32 %2216, 0
  br i1 %2217, label %2218, label %2220

2218:                                             ; preds = %2215, %2210
  %2219 = load double, ptr %18, align 8, !tbaa !11
  store double %2219, ptr %25, align 8, !tbaa !11
  br label %2220

2220:                                             ; preds = %2218, %2215
  %2221 = load i32, ptr %20, align 4, !tbaa !9
  %2222 = load i32, ptr %21, align 4, !tbaa !9
  %2223 = sub nsw i32 %2221, %2222
  store i32 %2223, ptr %19, align 4, !tbaa !9
  %2224 = load i32, ptr %19, align 4, !tbaa !9
  %2225 = load i32, ptr %20, align 4, !tbaa !9
  %2226 = load i32, ptr %28, align 4, !tbaa !9
  %2227 = mul nsw i32 %2225, %2226
  %2228 = add nsw i32 %2224, %2227
  store i32 %2228, ptr %15, align 4, !tbaa !9
  %2229 = load ptr, ptr %12, align 8, !tbaa !5
  %2230 = load i32, ptr %15, align 4, !tbaa !9
  %2231 = sext i32 %2230 to i64
  %2232 = getelementptr inbounds %struct.doublecomplex, ptr %2229, i64 %2231
  %2233 = getelementptr inbounds %struct.doublecomplex, ptr %2232, i32 0, i32 0
  %2234 = load double, ptr %2233, align 8, !tbaa !13
  store double %2234, ptr %17, align 8, !tbaa !11
  %2235 = load double, ptr %17, align 8, !tbaa !11
  %2236 = fcmp oge double %2235, 0.000000e+00
  br i1 %2236, label %2237, label %2239

2237:                                             ; preds = %2220
  %2238 = load double, ptr %17, align 8, !tbaa !11
  br label %2242

2239:                                             ; preds = %2220
  %2240 = load double, ptr %17, align 8, !tbaa !11
  %2241 = fneg double %2240
  br label %2242

2242:                                             ; preds = %2239, %2237
  %2243 = phi double [ %2238, %2237 ], [ %2241, %2239 ]
  store double %2243, ptr %18, align 8, !tbaa !11
  %2244 = load double, ptr %25, align 8, !tbaa !11
  %2245 = load double, ptr %18, align 8, !tbaa !11
  %2246 = fcmp olt double %2244, %2245
  br i1 %2246, label %2250, label %2247

2247:                                             ; preds = %2242
  %2248 = call i32 @disnan_(ptr noundef %18)
  %2249 = icmp ne i32 %2248, 0
  br i1 %2249, label %2250, label %2252

2250:                                             ; preds = %2247, %2242
  %2251 = load double, ptr %18, align 8, !tbaa !11
  store double %2251, ptr %25, align 8, !tbaa !11
  br label %2252

2252:                                             ; preds = %2250, %2247
  %2253 = load i32, ptr %21, align 4, !tbaa !9
  %2254 = sub nsw i32 %2253, 1
  store i32 %2254, ptr %15, align 4, !tbaa !9
  %2255 = load i32, ptr %20, align 4, !tbaa !9
  %2256 = load i32, ptr %21, align 4, !tbaa !9
  %2257 = sub nsw i32 %2255, %2256
  %2258 = add nsw i32 %2257, 1
  store i32 %2258, ptr %19, align 4, !tbaa !9
  br label %2259

2259:                                             ; preds = %2291, %2252
  %2260 = load i32, ptr %19, align 4, !tbaa !9
  %2261 = load i32, ptr %15, align 4, !tbaa !9
  %2262 = icmp sle i32 %2260, %2261
  br i1 %2262, label %2263, label %2294

2263:                                             ; preds = %2259
  %2264 = load ptr, ptr %12, align 8, !tbaa !5
  %2265 = load i32, ptr %19, align 4, !tbaa !9
  %2266 = load i32, ptr %20, align 4, !tbaa !9
  %2267 = load i32, ptr %28, align 4, !tbaa !9
  %2268 = mul nsw i32 %2266, %2267
  %2269 = add nsw i32 %2265, %2268
  %2270 = sext i32 %2269 to i64
  %2271 = getelementptr inbounds %struct.doublecomplex, ptr %2264, i64 %2270
  %2272 = call { double, double } @Cd(ptr noundef %2271)
  %2273 = extractvalue { double, double } %2272, 0
  %2274 = extractvalue { double, double } %2272, 1
  %2275 = getelementptr inbounds { double, double }, ptr %61, i32 0, i32 0
  %2276 = getelementptr inbounds { double, double }, ptr %61, i32 0, i32 1
  store double %2273, ptr %2275, align 8
  store double %2274, ptr %2276, align 8
  %2277 = getelementptr inbounds { double, double }, ptr %61, i32 0, i32 0
  %2278 = load double, ptr %2277, align 8
  %2279 = getelementptr inbounds { double, double }, ptr %61, i32 0, i32 1
  %2280 = load double, ptr %2279, align 8
  %2281 = call double @cabs(double noundef %2278, double noundef %2280) #6
  store double %2281, ptr %18, align 8, !tbaa !11
  %2282 = load double, ptr %25, align 8, !tbaa !11
  %2283 = load double, ptr %18, align 8, !tbaa !11
  %2284 = fcmp olt double %2282, %2283
  br i1 %2284, label %2288, label %2285

2285:                                             ; preds = %2263
  %2286 = call i32 @disnan_(ptr noundef %18)
  %2287 = icmp ne i32 %2286, 0
  br i1 %2287, label %2288, label %2290

2288:                                             ; preds = %2285, %2263
  %2289 = load double, ptr %18, align 8, !tbaa !11
  store double %2289, ptr %25, align 8, !tbaa !11
  br label %2290

2290:                                             ; preds = %2288, %2285
  br label %2291

2291:                                             ; preds = %2290
  %2292 = load i32, ptr %19, align 4, !tbaa !9
  %2293 = add nsw i32 %2292, 1
  store i32 %2293, ptr %19, align 4, !tbaa !9
  br label %2259, !llvm.loop !55

2294:                                             ; preds = %2259
  br label %2295

2295:                                             ; preds = %2294
  %2296 = load i32, ptr %20, align 4, !tbaa !9
  %2297 = add nsw i32 %2296, 1
  store i32 %2297, ptr %20, align 4, !tbaa !9
  br label %2143, !llvm.loop !56

2298:                                             ; preds = %2143
  %2299 = load ptr, ptr %11, align 8, !tbaa !5
  %2300 = load i32, ptr %2299, align 4, !tbaa !9
  store i32 %2300, ptr %20, align 4, !tbaa !9
  %2301 = load i32, ptr %21, align 4, !tbaa !9
  %2302 = sub nsw i32 %2301, 2
  store i32 %2302, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %2303

2303:                                             ; preds = %2335, %2298
  %2304 = load i32, ptr %19, align 4, !tbaa !9
  %2305 = load i32, ptr %14, align 4, !tbaa !9
  %2306 = icmp sle i32 %2304, %2305
  br i1 %2306, label %2307, label %2338

2307:                                             ; preds = %2303
  %2308 = load ptr, ptr %12, align 8, !tbaa !5
  %2309 = load i32, ptr %19, align 4, !tbaa !9
  %2310 = load i32, ptr %20, align 4, !tbaa !9
  %2311 = load i32, ptr %28, align 4, !tbaa !9
  %2312 = mul nsw i32 %2310, %2311
  %2313 = add nsw i32 %2309, %2312
  %2314 = sext i32 %2313 to i64
  %2315 = getelementptr inbounds %struct.doublecomplex, ptr %2308, i64 %2314
  %2316 = call { double, double } @Cd(ptr noundef %2315)
  %2317 = extractvalue { double, double } %2316, 0
  %2318 = extractvalue { double, double } %2316, 1
  %2319 = getelementptr inbounds { double, double }, ptr %62, i32 0, i32 0
  %2320 = getelementptr inbounds { double, double }, ptr %62, i32 0, i32 1
  store double %2317, ptr %2319, align 8
  store double %2318, ptr %2320, align 8
  %2321 = getelementptr inbounds { double, double }, ptr %62, i32 0, i32 0
  %2322 = load double, ptr %2321, align 8
  %2323 = getelementptr inbounds { double, double }, ptr %62, i32 0, i32 1
  %2324 = load double, ptr %2323, align 8
  %2325 = call double @cabs(double noundef %2322, double noundef %2324) #6
  store double %2325, ptr %18, align 8, !tbaa !11
  %2326 = load double, ptr %25, align 8, !tbaa !11
  %2327 = load double, ptr %18, align 8, !tbaa !11
  %2328 = fcmp olt double %2326, %2327
  br i1 %2328, label %2332, label %2329

2329:                                             ; preds = %2307
  %2330 = call i32 @disnan_(ptr noundef %18)
  %2331 = icmp ne i32 %2330, 0
  br i1 %2331, label %2332, label %2334

2332:                                             ; preds = %2329, %2307
  %2333 = load double, ptr %18, align 8, !tbaa !11
  store double %2333, ptr %25, align 8, !tbaa !11
  br label %2334

2334:                                             ; preds = %2332, %2329
  br label %2335

2335:                                             ; preds = %2334
  %2336 = load i32, ptr %19, align 4, !tbaa !9
  %2337 = add nsw i32 %2336, 1
  store i32 %2337, ptr %19, align 4, !tbaa !9
  br label %2303, !llvm.loop !57

2338:                                             ; preds = %2303
  %2339 = load i32, ptr %21, align 4, !tbaa !9
  %2340 = sub nsw i32 %2339, 1
  store i32 %2340, ptr %19, align 4, !tbaa !9
  %2341 = load i32, ptr %19, align 4, !tbaa !9
  %2342 = load i32, ptr %20, align 4, !tbaa !9
  %2343 = load i32, ptr %28, align 4, !tbaa !9
  %2344 = mul nsw i32 %2342, %2343
  %2345 = add nsw i32 %2341, %2344
  store i32 %2345, ptr %14, align 4, !tbaa !9
  %2346 = load ptr, ptr %12, align 8, !tbaa !5
  %2347 = load i32, ptr %14, align 4, !tbaa !9
  %2348 = sext i32 %2347 to i64
  %2349 = getelementptr inbounds %struct.doublecomplex, ptr %2346, i64 %2348
  %2350 = getelementptr inbounds %struct.doublecomplex, ptr %2349, i32 0, i32 0
  %2351 = load double, ptr %2350, align 8, !tbaa !13
  store double %2351, ptr %17, align 8, !tbaa !11
  %2352 = load double, ptr %17, align 8, !tbaa !11
  %2353 = fcmp oge double %2352, 0.000000e+00
  br i1 %2353, label %2354, label %2356

2354:                                             ; preds = %2338
  %2355 = load double, ptr %17, align 8, !tbaa !11
  br label %2359

2356:                                             ; preds = %2338
  %2357 = load double, ptr %17, align 8, !tbaa !11
  %2358 = fneg double %2357
  br label %2359

2359:                                             ; preds = %2356, %2354
  %2360 = phi double [ %2355, %2354 ], [ %2358, %2356 ]
  store double %2360, ptr %18, align 8, !tbaa !11
  %2361 = load double, ptr %25, align 8, !tbaa !11
  %2362 = load double, ptr %18, align 8, !tbaa !11
  %2363 = fcmp olt double %2361, %2362
  br i1 %2363, label %2367, label %2364

2364:                                             ; preds = %2359
  %2365 = call i32 @disnan_(ptr noundef %18)
  %2366 = icmp ne i32 %2365, 0
  br i1 %2366, label %2367, label %2369

2367:                                             ; preds = %2364, %2359
  %2368 = load double, ptr %18, align 8, !tbaa !11
  store double %2368, ptr %25, align 8, !tbaa !11
  br label %2369

2369:                                             ; preds = %2367, %2364
  br label %2370

2370:                                             ; preds = %2369, %2021
  br label %2371

2371:                                             ; preds = %2370, %1679
  br label %2372

2372:                                             ; preds = %2371, %1168
  br label %6156

2373:                                             ; preds = %149
  %2374 = load ptr, ptr %8, align 8, !tbaa !5
  %2375 = call i32 @lsame_(ptr noundef %2374, ptr noundef @.str.3)
  %2376 = icmp ne i32 %2375, 0
  br i1 %2376, label %2386, label %2377

2377:                                             ; preds = %2373
  %2378 = load ptr, ptr %8, align 8, !tbaa !5
  %2379 = call i32 @lsame_(ptr noundef %2378, ptr noundef @.str.4)
  %2380 = icmp ne i32 %2379, 0
  br i1 %2380, label %2386, label %2381

2381:                                             ; preds = %2377
  %2382 = load ptr, ptr %8, align 8, !tbaa !5
  %2383 = load i8, ptr %2382, align 1, !tbaa !58
  %2384 = zext i8 %2383 to i32
  %2385 = icmp eq i32 %2384, 49
  br i1 %2385, label %2386, label %4712

2386:                                             ; preds = %2381, %2377, %2373
  %2387 = load i32, ptr %29, align 4, !tbaa !9
  %2388 = icmp eq i32 %2387, 1
  br i1 %2388, label %2389, label %3243

2389:                                             ; preds = %2386
  %2390 = load ptr, ptr %11, align 8, !tbaa !5
  %2391 = load i32, ptr %2390, align 4, !tbaa !9
  %2392 = sdiv i32 %2391, 2
  store i32 %2392, ptr %21, align 4, !tbaa !9
  %2393 = load i32, ptr %30, align 4, !tbaa !9
  %2394 = icmp eq i32 %2393, 1
  br i1 %2394, label %2395, label %2825

2395:                                             ; preds = %2389
  %2396 = load i32, ptr %31, align 4, !tbaa !9
  %2397 = icmp eq i32 %2396, 0
  br i1 %2397, label %2398, label %2610

2398:                                             ; preds = %2395
  %2399 = load i32, ptr %21, align 4, !tbaa !9
  %2400 = sub nsw i32 %2399, 1
  store i32 %2400, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %2401

2401:                                             ; preds = %2410, %2398
  %2402 = load i32, ptr %19, align 4, !tbaa !9
  %2403 = load i32, ptr %14, align 4, !tbaa !9
  %2404 = icmp sle i32 %2402, %2403
  br i1 %2404, label %2405, label %2413

2405:                                             ; preds = %2401
  %2406 = load ptr, ptr %13, align 8, !tbaa !5
  %2407 = load i32, ptr %19, align 4, !tbaa !9
  %2408 = sext i32 %2407 to i64
  %2409 = getelementptr inbounds double, ptr %2406, i64 %2408
  store double 0.000000e+00, ptr %2409, align 8, !tbaa !11
  br label %2410

2410:                                             ; preds = %2405
  %2411 = load i32, ptr %19, align 4, !tbaa !9
  %2412 = add nsw i32 %2411, 1
  store i32 %2412, ptr %19, align 4, !tbaa !9
  br label %2401, !llvm.loop !59

2413:                                             ; preds = %2401
  %2414 = load i32, ptr %21, align 4, !tbaa !9
  store i32 %2414, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %2415

2415:                                             ; preds = %2576, %2413
  %2416 = load i32, ptr %20, align 4, !tbaa !9
  %2417 = load i32, ptr %14, align 4, !tbaa !9
  %2418 = icmp sle i32 %2416, %2417
  br i1 %2418, label %2419, label %2579

2419:                                             ; preds = %2415
  store double 0.000000e+00, ptr %23, align 8, !tbaa !11
  %2420 = load i32, ptr %21, align 4, !tbaa !9
  %2421 = load i32, ptr %20, align 4, !tbaa !9
  %2422 = add nsw i32 %2420, %2421
  %2423 = sub nsw i32 %2422, 1
  store i32 %2423, ptr %15, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %2424

2424:                                             ; preds = %2457, %2419
  %2425 = load i32, ptr %19, align 4, !tbaa !9
  %2426 = load i32, ptr %15, align 4, !tbaa !9
  %2427 = icmp sle i32 %2425, %2426
  br i1 %2427, label %2428, label %2460

2428:                                             ; preds = %2424
  %2429 = load ptr, ptr %12, align 8, !tbaa !5
  %2430 = load i32, ptr %19, align 4, !tbaa !9
  %2431 = load i32, ptr %20, align 4, !tbaa !9
  %2432 = load i32, ptr %28, align 4, !tbaa !9
  %2433 = mul nsw i32 %2431, %2432
  %2434 = add nsw i32 %2430, %2433
  %2435 = sext i32 %2434 to i64
  %2436 = getelementptr inbounds %struct.doublecomplex, ptr %2429, i64 %2435
  %2437 = call { double, double } @Cd(ptr noundef %2436)
  %2438 = extractvalue { double, double } %2437, 0
  %2439 = extractvalue { double, double } %2437, 1
  %2440 = getelementptr inbounds { double, double }, ptr %63, i32 0, i32 0
  %2441 = getelementptr inbounds { double, double }, ptr %63, i32 0, i32 1
  store double %2438, ptr %2440, align 8
  store double %2439, ptr %2441, align 8
  %2442 = getelementptr inbounds { double, double }, ptr %63, i32 0, i32 0
  %2443 = load double, ptr %2442, align 8
  %2444 = getelementptr inbounds { double, double }, ptr %63, i32 0, i32 1
  %2445 = load double, ptr %2444, align 8
  %2446 = call double @cabs(double noundef %2443, double noundef %2445) #6
  store double %2446, ptr %27, align 8, !tbaa !11
  %2447 = load double, ptr %27, align 8, !tbaa !11
  %2448 = load double, ptr %23, align 8, !tbaa !11
  %2449 = fadd double %2448, %2447
  store double %2449, ptr %23, align 8, !tbaa !11
  %2450 = load double, ptr %27, align 8, !tbaa !11
  %2451 = load ptr, ptr %13, align 8, !tbaa !5
  %2452 = load i32, ptr %19, align 4, !tbaa !9
  %2453 = sext i32 %2452 to i64
  %2454 = getelementptr inbounds double, ptr %2451, i64 %2453
  %2455 = load double, ptr %2454, align 8, !tbaa !11
  %2456 = fadd double %2455, %2450
  store double %2456, ptr %2454, align 8, !tbaa !11
  br label %2457

2457:                                             ; preds = %2428
  %2458 = load i32, ptr %19, align 4, !tbaa !9
  %2459 = add nsw i32 %2458, 1
  store i32 %2459, ptr %19, align 4, !tbaa !9
  br label %2424, !llvm.loop !60

2460:                                             ; preds = %2424
  %2461 = load i32, ptr %19, align 4, !tbaa !9
  %2462 = load i32, ptr %20, align 4, !tbaa !9
  %2463 = load i32, ptr %28, align 4, !tbaa !9
  %2464 = mul nsw i32 %2462, %2463
  %2465 = add nsw i32 %2461, %2464
  store i32 %2465, ptr %15, align 4, !tbaa !9
  %2466 = load ptr, ptr %12, align 8, !tbaa !5
  %2467 = load i32, ptr %15, align 4, !tbaa !9
  %2468 = sext i32 %2467 to i64
  %2469 = getelementptr inbounds %struct.doublecomplex, ptr %2466, i64 %2468
  %2470 = getelementptr inbounds %struct.doublecomplex, ptr %2469, i32 0, i32 0
  %2471 = load double, ptr %2470, align 8, !tbaa !13
  store double %2471, ptr %17, align 8, !tbaa !11
  %2472 = load double, ptr %17, align 8, !tbaa !11
  %2473 = fcmp oge double %2472, 0.000000e+00
  br i1 %2473, label %2474, label %2476

2474:                                             ; preds = %2460
  %2475 = load double, ptr %17, align 8, !tbaa !11
  br label %2479

2476:                                             ; preds = %2460
  %2477 = load double, ptr %17, align 8, !tbaa !11
  %2478 = fneg double %2477
  br label %2479

2479:                                             ; preds = %2476, %2474
  %2480 = phi double [ %2475, %2474 ], [ %2478, %2476 ]
  store double %2480, ptr %27, align 8, !tbaa !11
  %2481 = load double, ptr %23, align 8, !tbaa !11
  %2482 = load double, ptr %27, align 8, !tbaa !11
  %2483 = fadd double %2481, %2482
  %2484 = load ptr, ptr %13, align 8, !tbaa !5
  %2485 = load i32, ptr %20, align 4, !tbaa !9
  %2486 = load i32, ptr %21, align 4, !tbaa !9
  %2487 = add nsw i32 %2485, %2486
  %2488 = sext i32 %2487 to i64
  %2489 = getelementptr inbounds double, ptr %2484, i64 %2488
  store double %2483, ptr %2489, align 8, !tbaa !11
  %2490 = load i32, ptr %19, align 4, !tbaa !9
  %2491 = load i32, ptr %21, align 4, !tbaa !9
  %2492 = load i32, ptr %21, align 4, !tbaa !9
  %2493 = add nsw i32 %2491, %2492
  %2494 = icmp eq i32 %2490, %2493
  br i1 %2494, label %2495, label %2496

2495:                                             ; preds = %2479
  br label %2580

2496:                                             ; preds = %2479
  %2497 = load i32, ptr %19, align 4, !tbaa !9
  %2498 = add nsw i32 %2497, 1
  store i32 %2498, ptr %19, align 4, !tbaa !9
  %2499 = load i32, ptr %19, align 4, !tbaa !9
  %2500 = load i32, ptr %20, align 4, !tbaa !9
  %2501 = load i32, ptr %28, align 4, !tbaa !9
  %2502 = mul nsw i32 %2500, %2501
  %2503 = add nsw i32 %2499, %2502
  store i32 %2503, ptr %15, align 4, !tbaa !9
  %2504 = load ptr, ptr %12, align 8, !tbaa !5
  %2505 = load i32, ptr %15, align 4, !tbaa !9
  %2506 = sext i32 %2505 to i64
  %2507 = getelementptr inbounds %struct.doublecomplex, ptr %2504, i64 %2506
  %2508 = getelementptr inbounds %struct.doublecomplex, ptr %2507, i32 0, i32 0
  %2509 = load double, ptr %2508, align 8, !tbaa !13
  store double %2509, ptr %17, align 8, !tbaa !11
  %2510 = load double, ptr %17, align 8, !tbaa !11
  %2511 = fcmp oge double %2510, 0.000000e+00
  br i1 %2511, label %2512, label %2514

2512:                                             ; preds = %2496
  %2513 = load double, ptr %17, align 8, !tbaa !11
  br label %2517

2514:                                             ; preds = %2496
  %2515 = load double, ptr %17, align 8, !tbaa !11
  %2516 = fneg double %2515
  br label %2517

2517:                                             ; preds = %2514, %2512
  %2518 = phi double [ %2513, %2512 ], [ %2516, %2514 ]
  store double %2518, ptr %27, align 8, !tbaa !11
  %2519 = load double, ptr %27, align 8, !tbaa !11
  %2520 = load ptr, ptr %13, align 8, !tbaa !5
  %2521 = load i32, ptr %20, align 4, !tbaa !9
  %2522 = sext i32 %2521 to i64
  %2523 = getelementptr inbounds double, ptr %2520, i64 %2522
  %2524 = load double, ptr %2523, align 8, !tbaa !11
  %2525 = fadd double %2524, %2519
  store double %2525, ptr %2523, align 8, !tbaa !11
  store double 0.000000e+00, ptr %23, align 8, !tbaa !11
  %2526 = load i32, ptr %21, align 4, !tbaa !9
  %2527 = sub nsw i32 %2526, 1
  store i32 %2527, ptr %15, align 4, !tbaa !9
  %2528 = load i32, ptr %20, align 4, !tbaa !9
  %2529 = add nsw i32 %2528, 1
  store i32 %2529, ptr %22, align 4, !tbaa !9
  br label %2530

2530:                                             ; preds = %2565, %2517
  %2531 = load i32, ptr %22, align 4, !tbaa !9
  %2532 = load i32, ptr %15, align 4, !tbaa !9
  %2533 = icmp sle i32 %2531, %2532
  br i1 %2533, label %2534, label %2568

2534:                                             ; preds = %2530
  %2535 = load i32, ptr %19, align 4, !tbaa !9
  %2536 = add nsw i32 %2535, 1
  store i32 %2536, ptr %19, align 4, !tbaa !9
  %2537 = load ptr, ptr %12, align 8, !tbaa !5
  %2538 = load i32, ptr %19, align 4, !tbaa !9
  %2539 = load i32, ptr %20, align 4, !tbaa !9
  %2540 = load i32, ptr %28, align 4, !tbaa !9
  %2541 = mul nsw i32 %2539, %2540
  %2542 = add nsw i32 %2538, %2541
  %2543 = sext i32 %2542 to i64
  %2544 = getelementptr inbounds %struct.doublecomplex, ptr %2537, i64 %2543
  %2545 = call { double, double } @Cd(ptr noundef %2544)
  %2546 = extractvalue { double, double } %2545, 0
  %2547 = extractvalue { double, double } %2545, 1
  %2548 = getelementptr inbounds { double, double }, ptr %64, i32 0, i32 0
  %2549 = getelementptr inbounds { double, double }, ptr %64, i32 0, i32 1
  store double %2546, ptr %2548, align 8
  store double %2547, ptr %2549, align 8
  %2550 = getelementptr inbounds { double, double }, ptr %64, i32 0, i32 0
  %2551 = load double, ptr %2550, align 8
  %2552 = getelementptr inbounds { double, double }, ptr %64, i32 0, i32 1
  %2553 = load double, ptr %2552, align 8
  %2554 = call double @cabs(double noundef %2551, double noundef %2553) #6
  store double %2554, ptr %27, align 8, !tbaa !11
  %2555 = load double, ptr %27, align 8, !tbaa !11
  %2556 = load double, ptr %23, align 8, !tbaa !11
  %2557 = fadd double %2556, %2555
  store double %2557, ptr %23, align 8, !tbaa !11
  %2558 = load double, ptr %27, align 8, !tbaa !11
  %2559 = load ptr, ptr %13, align 8, !tbaa !5
  %2560 = load i32, ptr %22, align 4, !tbaa !9
  %2561 = sext i32 %2560 to i64
  %2562 = getelementptr inbounds double, ptr %2559, i64 %2561
  %2563 = load double, ptr %2562, align 8, !tbaa !11
  %2564 = fadd double %2563, %2558
  store double %2564, ptr %2562, align 8, !tbaa !11
  br label %2565

2565:                                             ; preds = %2534
  %2566 = load i32, ptr %22, align 4, !tbaa !9
  %2567 = add nsw i32 %2566, 1
  store i32 %2567, ptr %22, align 4, !tbaa !9
  br label %2530, !llvm.loop !61

2568:                                             ; preds = %2530
  %2569 = load double, ptr %23, align 8, !tbaa !11
  %2570 = load ptr, ptr %13, align 8, !tbaa !5
  %2571 = load i32, ptr %20, align 4, !tbaa !9
  %2572 = sext i32 %2571 to i64
  %2573 = getelementptr inbounds double, ptr %2570, i64 %2572
  %2574 = load double, ptr %2573, align 8, !tbaa !11
  %2575 = fadd double %2574, %2569
  store double %2575, ptr %2573, align 8, !tbaa !11
  br label %2576

2576:                                             ; preds = %2568
  %2577 = load i32, ptr %20, align 4, !tbaa !9
  %2578 = add nsw i32 %2577, 1
  store i32 %2578, ptr %20, align 4, !tbaa !9
  br label %2415, !llvm.loop !62

2579:                                             ; preds = %2415
  br label %2580

2580:                                             ; preds = %2579, %2495
  %2581 = load ptr, ptr %13, align 8, !tbaa !5
  %2582 = getelementptr inbounds double, ptr %2581, i64 0
  %2583 = load double, ptr %2582, align 8, !tbaa !11
  store double %2583, ptr %25, align 8, !tbaa !11
  %2584 = load ptr, ptr %11, align 8, !tbaa !5
  %2585 = load i32, ptr %2584, align 4, !tbaa !9
  %2586 = sub nsw i32 %2585, 1
  store i32 %2586, ptr %14, align 4, !tbaa !9
  store i32 1, ptr %19, align 4, !tbaa !9
  br label %2587

2587:                                             ; preds = %2606, %2580
  %2588 = load i32, ptr %19, align 4, !tbaa !9
  %2589 = load i32, ptr %14, align 4, !tbaa !9
  %2590 = icmp sle i32 %2588, %2589
  br i1 %2590, label %2591, label %2609

2591:                                             ; preds = %2587
  %2592 = load ptr, ptr %13, align 8, !tbaa !5
  %2593 = load i32, ptr %19, align 4, !tbaa !9
  %2594 = sext i32 %2593 to i64
  %2595 = getelementptr inbounds double, ptr %2592, i64 %2594
  %2596 = load double, ptr %2595, align 8, !tbaa !11
  store double %2596, ptr %18, align 8, !tbaa !11
  %2597 = load double, ptr %25, align 8, !tbaa !11
  %2598 = load double, ptr %18, align 8, !tbaa !11
  %2599 = fcmp olt double %2597, %2598
  br i1 %2599, label %2603, label %2600

2600:                                             ; preds = %2591
  %2601 = call i32 @disnan_(ptr noundef %18)
  %2602 = icmp ne i32 %2601, 0
  br i1 %2602, label %2603, label %2605

2603:                                             ; preds = %2600, %2591
  %2604 = load double, ptr %18, align 8, !tbaa !11
  store double %2604, ptr %25, align 8, !tbaa !11
  br label %2605

2605:                                             ; preds = %2603, %2600
  br label %2606

2606:                                             ; preds = %2605
  %2607 = load i32, ptr %19, align 4, !tbaa !9
  %2608 = add nsw i32 %2607, 1
  store i32 %2608, ptr %19, align 4, !tbaa !9
  br label %2587, !llvm.loop !63

2609:                                             ; preds = %2587
  br label %2824

2610:                                             ; preds = %2395
  %2611 = load i32, ptr %21, align 4, !tbaa !9
  %2612 = add nsw i32 %2611, 1
  store i32 %2612, ptr %21, align 4, !tbaa !9
  %2613 = load ptr, ptr %11, align 8, !tbaa !5
  %2614 = load i32, ptr %2613, align 4, !tbaa !9
  %2615 = sub nsw i32 %2614, 1
  store i32 %2615, ptr %14, align 4, !tbaa !9
  %2616 = load i32, ptr %21, align 4, !tbaa !9
  store i32 %2616, ptr %19, align 4, !tbaa !9
  br label %2617

2617:                                             ; preds = %2626, %2610
  %2618 = load i32, ptr %19, align 4, !tbaa !9
  %2619 = load i32, ptr %14, align 4, !tbaa !9
  %2620 = icmp sle i32 %2618, %2619
  br i1 %2620, label %2621, label %2629

2621:                                             ; preds = %2617
  %2622 = load ptr, ptr %13, align 8, !tbaa !5
  %2623 = load i32, ptr %19, align 4, !tbaa !9
  %2624 = sext i32 %2623 to i64
  %2625 = getelementptr inbounds double, ptr %2622, i64 %2624
  store double 0.000000e+00, ptr %2625, align 8, !tbaa !11
  br label %2626

2626:                                             ; preds = %2621
  %2627 = load i32, ptr %19, align 4, !tbaa !9
  %2628 = add nsw i32 %2627, 1
  store i32 %2628, ptr %19, align 4, !tbaa !9
  br label %2617, !llvm.loop !64

2629:                                             ; preds = %2617
  %2630 = load i32, ptr %21, align 4, !tbaa !9
  %2631 = sub nsw i32 %2630, 1
  store i32 %2631, ptr %20, align 4, !tbaa !9
  br label %2632

2632:                                             ; preds = %2791, %2629
  %2633 = load i32, ptr %20, align 4, !tbaa !9
  %2634 = icmp sge i32 %2633, 0
  br i1 %2634, label %2635, label %2794

2635:                                             ; preds = %2632
  store double 0.000000e+00, ptr %23, align 8, !tbaa !11
  %2636 = load i32, ptr %20, align 4, !tbaa !9
  %2637 = sub nsw i32 %2636, 2
  store i32 %2637, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %2638

2638:                                             ; preds = %2673, %2635
  %2639 = load i32, ptr %19, align 4, !tbaa !9
  %2640 = load i32, ptr %14, align 4, !tbaa !9
  %2641 = icmp sle i32 %2639, %2640
  br i1 %2641, label %2642, label %2676

2642:                                             ; preds = %2638
  %2643 = load ptr, ptr %12, align 8, !tbaa !5
  %2644 = load i32, ptr %19, align 4, !tbaa !9
  %2645 = load i32, ptr %20, align 4, !tbaa !9
  %2646 = load i32, ptr %28, align 4, !tbaa !9
  %2647 = mul nsw i32 %2645, %2646
  %2648 = add nsw i32 %2644, %2647
  %2649 = sext i32 %2648 to i64
  %2650 = getelementptr inbounds %struct.doublecomplex, ptr %2643, i64 %2649
  %2651 = call { double, double } @Cd(ptr noundef %2650)
  %2652 = extractvalue { double, double } %2651, 0
  %2653 = extractvalue { double, double } %2651, 1
  %2654 = getelementptr inbounds { double, double }, ptr %65, i32 0, i32 0
  %2655 = getelementptr inbounds { double, double }, ptr %65, i32 0, i32 1
  store double %2652, ptr %2654, align 8
  store double %2653, ptr %2655, align 8
  %2656 = getelementptr inbounds { double, double }, ptr %65, i32 0, i32 0
  %2657 = load double, ptr %2656, align 8
  %2658 = getelementptr inbounds { double, double }, ptr %65, i32 0, i32 1
  %2659 = load double, ptr %2658, align 8
  %2660 = call double @cabs(double noundef %2657, double noundef %2659) #6
  store double %2660, ptr %27, align 8, !tbaa !11
  %2661 = load double, ptr %27, align 8, !tbaa !11
  %2662 = load double, ptr %23, align 8, !tbaa !11
  %2663 = fadd double %2662, %2661
  store double %2663, ptr %23, align 8, !tbaa !11
  %2664 = load double, ptr %27, align 8, !tbaa !11
  %2665 = load ptr, ptr %13, align 8, !tbaa !5
  %2666 = load i32, ptr %19, align 4, !tbaa !9
  %2667 = load i32, ptr %21, align 4, !tbaa !9
  %2668 = add nsw i32 %2666, %2667
  %2669 = sext i32 %2668 to i64
  %2670 = getelementptr inbounds double, ptr %2665, i64 %2669
  %2671 = load double, ptr %2670, align 8, !tbaa !11
  %2672 = fadd double %2671, %2664
  store double %2672, ptr %2670, align 8, !tbaa !11
  br label %2673

2673:                                             ; preds = %2642
  %2674 = load i32, ptr %19, align 4, !tbaa !9
  %2675 = add nsw i32 %2674, 1
  store i32 %2675, ptr %19, align 4, !tbaa !9
  br label %2638, !llvm.loop !65

2676:                                             ; preds = %2638
  %2677 = load i32, ptr %20, align 4, !tbaa !9
  %2678 = icmp sgt i32 %2677, 0
  br i1 %2678, label %2679, label %2714

2679:                                             ; preds = %2676
  %2680 = load i32, ptr %19, align 4, !tbaa !9
  %2681 = load i32, ptr %20, align 4, !tbaa !9
  %2682 = load i32, ptr %28, align 4, !tbaa !9
  %2683 = mul nsw i32 %2681, %2682
  %2684 = add nsw i32 %2680, %2683
  store i32 %2684, ptr %14, align 4, !tbaa !9
  %2685 = load ptr, ptr %12, align 8, !tbaa !5
  %2686 = load i32, ptr %14, align 4, !tbaa !9
  %2687 = sext i32 %2686 to i64
  %2688 = getelementptr inbounds %struct.doublecomplex, ptr %2685, i64 %2687
  %2689 = getelementptr inbounds %struct.doublecomplex, ptr %2688, i32 0, i32 0
  %2690 = load double, ptr %2689, align 8, !tbaa !13
  store double %2690, ptr %17, align 8, !tbaa !11
  %2691 = load double, ptr %17, align 8, !tbaa !11
  %2692 = fcmp oge double %2691, 0.000000e+00
  br i1 %2692, label %2693, label %2695

2693:                                             ; preds = %2679
  %2694 = load double, ptr %17, align 8, !tbaa !11
  br label %2698

2695:                                             ; preds = %2679
  %2696 = load double, ptr %17, align 8, !tbaa !11
  %2697 = fneg double %2696
  br label %2698

2698:                                             ; preds = %2695, %2693
  %2699 = phi double [ %2694, %2693 ], [ %2697, %2695 ]
  store double %2699, ptr %27, align 8, !tbaa !11
  %2700 = load double, ptr %27, align 8, !tbaa !11
  %2701 = load double, ptr %23, align 8, !tbaa !11
  %2702 = fadd double %2701, %2700
  store double %2702, ptr %23, align 8, !tbaa !11
  %2703 = load double, ptr %23, align 8, !tbaa !11
  %2704 = load ptr, ptr %13, align 8, !tbaa !5
  %2705 = load i32, ptr %19, align 4, !tbaa !9
  %2706 = load i32, ptr %21, align 4, !tbaa !9
  %2707 = add nsw i32 %2705, %2706
  %2708 = sext i32 %2707 to i64
  %2709 = getelementptr inbounds double, ptr %2704, i64 %2708
  %2710 = load double, ptr %2709, align 8, !tbaa !11
  %2711 = fadd double %2710, %2703
  store double %2711, ptr %2709, align 8, !tbaa !11
  %2712 = load i32, ptr %19, align 4, !tbaa !9
  %2713 = add nsw i32 %2712, 1
  store i32 %2713, ptr %19, align 4, !tbaa !9
  br label %2714

2714:                                             ; preds = %2698, %2676
  %2715 = load i32, ptr %19, align 4, !tbaa !9
  %2716 = load i32, ptr %20, align 4, !tbaa !9
  %2717 = load i32, ptr %28, align 4, !tbaa !9
  %2718 = mul nsw i32 %2716, %2717
  %2719 = add nsw i32 %2715, %2718
  store i32 %2719, ptr %14, align 4, !tbaa !9
  %2720 = load ptr, ptr %12, align 8, !tbaa !5
  %2721 = load i32, ptr %14, align 4, !tbaa !9
  %2722 = sext i32 %2721 to i64
  %2723 = getelementptr inbounds %struct.doublecomplex, ptr %2720, i64 %2722
  %2724 = getelementptr inbounds %struct.doublecomplex, ptr %2723, i32 0, i32 0
  %2725 = load double, ptr %2724, align 8, !tbaa !13
  store double %2725, ptr %17, align 8, !tbaa !11
  %2726 = load double, ptr %17, align 8, !tbaa !11
  %2727 = fcmp oge double %2726, 0.000000e+00
  br i1 %2727, label %2728, label %2730

2728:                                             ; preds = %2714
  %2729 = load double, ptr %17, align 8, !tbaa !11
  br label %2733

2730:                                             ; preds = %2714
  %2731 = load double, ptr %17, align 8, !tbaa !11
  %2732 = fneg double %2731
  br label %2733

2733:                                             ; preds = %2730, %2728
  %2734 = phi double [ %2729, %2728 ], [ %2732, %2730 ]
  store double %2734, ptr %27, align 8, !tbaa !11
  %2735 = load double, ptr %27, align 8, !tbaa !11
  %2736 = load ptr, ptr %13, align 8, !tbaa !5
  %2737 = load i32, ptr %20, align 4, !tbaa !9
  %2738 = sext i32 %2737 to i64
  %2739 = getelementptr inbounds double, ptr %2736, i64 %2738
  store double %2735, ptr %2739, align 8, !tbaa !11
  store double 0.000000e+00, ptr %23, align 8, !tbaa !11
  %2740 = load ptr, ptr %11, align 8, !tbaa !5
  %2741 = load i32, ptr %2740, align 4, !tbaa !9
  %2742 = sub nsw i32 %2741, 1
  store i32 %2742, ptr %14, align 4, !tbaa !9
  %2743 = load i32, ptr %20, align 4, !tbaa !9
  %2744 = add nsw i32 %2743, 1
  store i32 %2744, ptr %22, align 4, !tbaa !9
  br label %2745

2745:                                             ; preds = %2780, %2733
  %2746 = load i32, ptr %22, align 4, !tbaa !9
  %2747 = load i32, ptr %14, align 4, !tbaa !9
  %2748 = icmp sle i32 %2746, %2747
  br i1 %2748, label %2749, label %2783

2749:                                             ; preds = %2745
  %2750 = load i32, ptr %19, align 4, !tbaa !9
  %2751 = add nsw i32 %2750, 1
  store i32 %2751, ptr %19, align 4, !tbaa !9
  %2752 = load ptr, ptr %12, align 8, !tbaa !5
  %2753 = load i32, ptr %19, align 4, !tbaa !9
  %2754 = load i32, ptr %20, align 4, !tbaa !9
  %2755 = load i32, ptr %28, align 4, !tbaa !9
  %2756 = mul nsw i32 %2754, %2755
  %2757 = add nsw i32 %2753, %2756
  %2758 = sext i32 %2757 to i64
  %2759 = getelementptr inbounds %struct.doublecomplex, ptr %2752, i64 %2758
  %2760 = call { double, double } @Cd(ptr noundef %2759)
  %2761 = extractvalue { double, double } %2760, 0
  %2762 = extractvalue { double, double } %2760, 1
  %2763 = getelementptr inbounds { double, double }, ptr %66, i32 0, i32 0
  %2764 = getelementptr inbounds { double, double }, ptr %66, i32 0, i32 1
  store double %2761, ptr %2763, align 8
  store double %2762, ptr %2764, align 8
  %2765 = getelementptr inbounds { double, double }, ptr %66, i32 0, i32 0
  %2766 = load double, ptr %2765, align 8
  %2767 = getelementptr inbounds { double, double }, ptr %66, i32 0, i32 1
  %2768 = load double, ptr %2767, align 8
  %2769 = call double @cabs(double noundef %2766, double noundef %2768) #6
  store double %2769, ptr %27, align 8, !tbaa !11
  %2770 = load double, ptr %27, align 8, !tbaa !11
  %2771 = load double, ptr %23, align 8, !tbaa !11
  %2772 = fadd double %2771, %2770
  store double %2772, ptr %23, align 8, !tbaa !11
  %2773 = load double, ptr %27, align 8, !tbaa !11
  %2774 = load ptr, ptr %13, align 8, !tbaa !5
  %2775 = load i32, ptr %22, align 4, !tbaa !9
  %2776 = sext i32 %2775 to i64
  %2777 = getelementptr inbounds double, ptr %2774, i64 %2776
  %2778 = load double, ptr %2777, align 8, !tbaa !11
  %2779 = fadd double %2778, %2773
  store double %2779, ptr %2777, align 8, !tbaa !11
  br label %2780

2780:                                             ; preds = %2749
  %2781 = load i32, ptr %22, align 4, !tbaa !9
  %2782 = add nsw i32 %2781, 1
  store i32 %2782, ptr %22, align 4, !tbaa !9
  br label %2745, !llvm.loop !66

2783:                                             ; preds = %2745
  %2784 = load double, ptr %23, align 8, !tbaa !11
  %2785 = load ptr, ptr %13, align 8, !tbaa !5
  %2786 = load i32, ptr %20, align 4, !tbaa !9
  %2787 = sext i32 %2786 to i64
  %2788 = getelementptr inbounds double, ptr %2785, i64 %2787
  %2789 = load double, ptr %2788, align 8, !tbaa !11
  %2790 = fadd double %2789, %2784
  store double %2790, ptr %2788, align 8, !tbaa !11
  br label %2791

2791:                                             ; preds = %2783
  %2792 = load i32, ptr %20, align 4, !tbaa !9
  %2793 = add nsw i32 %2792, -1
  store i32 %2793, ptr %20, align 4, !tbaa !9
  br label %2632, !llvm.loop !67

2794:                                             ; preds = %2632
  %2795 = load ptr, ptr %13, align 8, !tbaa !5
  %2796 = getelementptr inbounds double, ptr %2795, i64 0
  %2797 = load double, ptr %2796, align 8, !tbaa !11
  store double %2797, ptr %25, align 8, !tbaa !11
  %2798 = load ptr, ptr %11, align 8, !tbaa !5
  %2799 = load i32, ptr %2798, align 4, !tbaa !9
  %2800 = sub nsw i32 %2799, 1
  store i32 %2800, ptr %14, align 4, !tbaa !9
  store i32 1, ptr %19, align 4, !tbaa !9
  br label %2801

2801:                                             ; preds = %2820, %2794
  %2802 = load i32, ptr %19, align 4, !tbaa !9
  %2803 = load i32, ptr %14, align 4, !tbaa !9
  %2804 = icmp sle i32 %2802, %2803
  br i1 %2804, label %2805, label %2823

2805:                                             ; preds = %2801
  %2806 = load ptr, ptr %13, align 8, !tbaa !5
  %2807 = load i32, ptr %19, align 4, !tbaa !9
  %2808 = sext i32 %2807 to i64
  %2809 = getelementptr inbounds double, ptr %2806, i64 %2808
  %2810 = load double, ptr %2809, align 8, !tbaa !11
  store double %2810, ptr %18, align 8, !tbaa !11
  %2811 = load double, ptr %25, align 8, !tbaa !11
  %2812 = load double, ptr %18, align 8, !tbaa !11
  %2813 = fcmp olt double %2811, %2812
  br i1 %2813, label %2817, label %2814

2814:                                             ; preds = %2805
  %2815 = call i32 @disnan_(ptr noundef %18)
  %2816 = icmp ne i32 %2815, 0
  br i1 %2816, label %2817, label %2819

2817:                                             ; preds = %2814, %2805
  %2818 = load double, ptr %18, align 8, !tbaa !11
  store double %2818, ptr %25, align 8, !tbaa !11
  br label %2819

2819:                                             ; preds = %2817, %2814
  br label %2820

2820:                                             ; preds = %2819
  %2821 = load i32, ptr %19, align 4, !tbaa !9
  %2822 = add nsw i32 %2821, 1
  store i32 %2822, ptr %19, align 4, !tbaa !9
  br label %2801, !llvm.loop !68

2823:                                             ; preds = %2801
  br label %2824

2824:                                             ; preds = %2823, %2609
  br label %3242

2825:                                             ; preds = %2389
  %2826 = load i32, ptr %31, align 4, !tbaa !9
  %2827 = icmp eq i32 %2826, 0
  br i1 %2827, label %2828, label %3033

2828:                                             ; preds = %2825
  %2829 = load i32, ptr %21, align 4, !tbaa !9
  %2830 = sub nsw i32 %2829, 1
  store i32 %2830, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %2831

2831:                                             ; preds = %2840, %2828
  %2832 = load i32, ptr %19, align 4, !tbaa !9
  %2833 = load i32, ptr %14, align 4, !tbaa !9
  %2834 = icmp sle i32 %2832, %2833
  br i1 %2834, label %2835, label %2843

2835:                                             ; preds = %2831
  %2836 = load ptr, ptr %13, align 8, !tbaa !5
  %2837 = load i32, ptr %19, align 4, !tbaa !9
  %2838 = sext i32 %2837 to i64
  %2839 = getelementptr inbounds double, ptr %2836, i64 %2838
  store double 0.000000e+00, ptr %2839, align 8, !tbaa !11
  br label %2840

2840:                                             ; preds = %2835
  %2841 = load i32, ptr %19, align 4, !tbaa !9
  %2842 = add nsw i32 %2841, 1
  store i32 %2842, ptr %19, align 4, !tbaa !9
  br label %2831, !llvm.loop !69

2843:                                             ; preds = %2831
  %2844 = load i32, ptr %21, align 4, !tbaa !9
  %2845 = sub nsw i32 %2844, 1
  store i32 %2845, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %2846

2846:                                             ; preds = %3000, %2843
  %2847 = load i32, ptr %20, align 4, !tbaa !9
  %2848 = load i32, ptr %14, align 4, !tbaa !9
  %2849 = icmp sle i32 %2847, %2848
  br i1 %2849, label %2850, label %3003

2850:                                             ; preds = %2846
  store double 0.000000e+00, ptr %23, align 8, !tbaa !11
  %2851 = load i32, ptr %21, align 4, !tbaa !9
  %2852 = load i32, ptr %20, align 4, !tbaa !9
  %2853 = add nsw i32 %2851, %2852
  %2854 = sub nsw i32 %2853, 1
  store i32 %2854, ptr %15, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %2855

2855:                                             ; preds = %2888, %2850
  %2856 = load i32, ptr %19, align 4, !tbaa !9
  %2857 = load i32, ptr %15, align 4, !tbaa !9
  %2858 = icmp sle i32 %2856, %2857
  br i1 %2858, label %2859, label %2891

2859:                                             ; preds = %2855
  %2860 = load ptr, ptr %12, align 8, !tbaa !5
  %2861 = load i32, ptr %19, align 4, !tbaa !9
  %2862 = load i32, ptr %20, align 4, !tbaa !9
  %2863 = load i32, ptr %28, align 4, !tbaa !9
  %2864 = mul nsw i32 %2862, %2863
  %2865 = add nsw i32 %2861, %2864
  %2866 = sext i32 %2865 to i64
  %2867 = getelementptr inbounds %struct.doublecomplex, ptr %2860, i64 %2866
  %2868 = call { double, double } @Cd(ptr noundef %2867)
  %2869 = extractvalue { double, double } %2868, 0
  %2870 = extractvalue { double, double } %2868, 1
  %2871 = getelementptr inbounds { double, double }, ptr %67, i32 0, i32 0
  %2872 = getelementptr inbounds { double, double }, ptr %67, i32 0, i32 1
  store double %2869, ptr %2871, align 8
  store double %2870, ptr %2872, align 8
  %2873 = getelementptr inbounds { double, double }, ptr %67, i32 0, i32 0
  %2874 = load double, ptr %2873, align 8
  %2875 = getelementptr inbounds { double, double }, ptr %67, i32 0, i32 1
  %2876 = load double, ptr %2875, align 8
  %2877 = call double @cabs(double noundef %2874, double noundef %2876) #6
  store double %2877, ptr %27, align 8, !tbaa !11
  %2878 = load double, ptr %27, align 8, !tbaa !11
  %2879 = load double, ptr %23, align 8, !tbaa !11
  %2880 = fadd double %2879, %2878
  store double %2880, ptr %23, align 8, !tbaa !11
  %2881 = load double, ptr %27, align 8, !tbaa !11
  %2882 = load ptr, ptr %13, align 8, !tbaa !5
  %2883 = load i32, ptr %19, align 4, !tbaa !9
  %2884 = sext i32 %2883 to i64
  %2885 = getelementptr inbounds double, ptr %2882, i64 %2884
  %2886 = load double, ptr %2885, align 8, !tbaa !11
  %2887 = fadd double %2886, %2881
  store double %2887, ptr %2885, align 8, !tbaa !11
  br label %2888

2888:                                             ; preds = %2859
  %2889 = load i32, ptr %19, align 4, !tbaa !9
  %2890 = add nsw i32 %2889, 1
  store i32 %2890, ptr %19, align 4, !tbaa !9
  br label %2855, !llvm.loop !70

2891:                                             ; preds = %2855
  %2892 = load i32, ptr %19, align 4, !tbaa !9
  %2893 = load i32, ptr %20, align 4, !tbaa !9
  %2894 = load i32, ptr %28, align 4, !tbaa !9
  %2895 = mul nsw i32 %2893, %2894
  %2896 = add nsw i32 %2892, %2895
  store i32 %2896, ptr %15, align 4, !tbaa !9
  %2897 = load ptr, ptr %12, align 8, !tbaa !5
  %2898 = load i32, ptr %15, align 4, !tbaa !9
  %2899 = sext i32 %2898 to i64
  %2900 = getelementptr inbounds %struct.doublecomplex, ptr %2897, i64 %2899
  %2901 = getelementptr inbounds %struct.doublecomplex, ptr %2900, i32 0, i32 0
  %2902 = load double, ptr %2901, align 8, !tbaa !13
  store double %2902, ptr %17, align 8, !tbaa !11
  %2903 = load double, ptr %17, align 8, !tbaa !11
  %2904 = fcmp oge double %2903, 0.000000e+00
  br i1 %2904, label %2905, label %2907

2905:                                             ; preds = %2891
  %2906 = load double, ptr %17, align 8, !tbaa !11
  br label %2910

2907:                                             ; preds = %2891
  %2908 = load double, ptr %17, align 8, !tbaa !11
  %2909 = fneg double %2908
  br label %2910

2910:                                             ; preds = %2907, %2905
  %2911 = phi double [ %2906, %2905 ], [ %2909, %2907 ]
  store double %2911, ptr %27, align 8, !tbaa !11
  %2912 = load double, ptr %23, align 8, !tbaa !11
  %2913 = load double, ptr %27, align 8, !tbaa !11
  %2914 = fadd double %2912, %2913
  %2915 = load ptr, ptr %13, align 8, !tbaa !5
  %2916 = load i32, ptr %20, align 4, !tbaa !9
  %2917 = load i32, ptr %21, align 4, !tbaa !9
  %2918 = add nsw i32 %2916, %2917
  %2919 = sext i32 %2918 to i64
  %2920 = getelementptr inbounds double, ptr %2915, i64 %2919
  store double %2914, ptr %2920, align 8, !tbaa !11
  %2921 = load i32, ptr %19, align 4, !tbaa !9
  %2922 = add nsw i32 %2921, 1
  store i32 %2922, ptr %19, align 4, !tbaa !9
  %2923 = load i32, ptr %19, align 4, !tbaa !9
  %2924 = load i32, ptr %20, align 4, !tbaa !9
  %2925 = load i32, ptr %28, align 4, !tbaa !9
  %2926 = mul nsw i32 %2924, %2925
  %2927 = add nsw i32 %2923, %2926
  store i32 %2927, ptr %15, align 4, !tbaa !9
  %2928 = load ptr, ptr %12, align 8, !tbaa !5
  %2929 = load i32, ptr %15, align 4, !tbaa !9
  %2930 = sext i32 %2929 to i64
  %2931 = getelementptr inbounds %struct.doublecomplex, ptr %2928, i64 %2930
  %2932 = getelementptr inbounds %struct.doublecomplex, ptr %2931, i32 0, i32 0
  %2933 = load double, ptr %2932, align 8, !tbaa !13
  store double %2933, ptr %17, align 8, !tbaa !11
  %2934 = load double, ptr %17, align 8, !tbaa !11
  %2935 = fcmp oge double %2934, 0.000000e+00
  br i1 %2935, label %2936, label %2938

2936:                                             ; preds = %2910
  %2937 = load double, ptr %17, align 8, !tbaa !11
  br label %2941

2938:                                             ; preds = %2910
  %2939 = load double, ptr %17, align 8, !tbaa !11
  %2940 = fneg double %2939
  br label %2941

2941:                                             ; preds = %2938, %2936
  %2942 = phi double [ %2937, %2936 ], [ %2940, %2938 ]
  store double %2942, ptr %27, align 8, !tbaa !11
  %2943 = load double, ptr %27, align 8, !tbaa !11
  %2944 = load ptr, ptr %13, align 8, !tbaa !5
  %2945 = load i32, ptr %20, align 4, !tbaa !9
  %2946 = sext i32 %2945 to i64
  %2947 = getelementptr inbounds double, ptr %2944, i64 %2946
  %2948 = load double, ptr %2947, align 8, !tbaa !11
  %2949 = fadd double %2948, %2943
  store double %2949, ptr %2947, align 8, !tbaa !11
  store double 0.000000e+00, ptr %23, align 8, !tbaa !11
  %2950 = load i32, ptr %21, align 4, !tbaa !9
  %2951 = sub nsw i32 %2950, 1
  store i32 %2951, ptr %15, align 4, !tbaa !9
  %2952 = load i32, ptr %20, align 4, !tbaa !9
  %2953 = add nsw i32 %2952, 1
  store i32 %2953, ptr %22, align 4, !tbaa !9
  br label %2954

2954:                                             ; preds = %2989, %2941
  %2955 = load i32, ptr %22, align 4, !tbaa !9
  %2956 = load i32, ptr %15, align 4, !tbaa !9
  %2957 = icmp sle i32 %2955, %2956
  br i1 %2957, label %2958, label %2992

2958:                                             ; preds = %2954
  %2959 = load i32, ptr %19, align 4, !tbaa !9
  %2960 = add nsw i32 %2959, 1
  store i32 %2960, ptr %19, align 4, !tbaa !9
  %2961 = load ptr, ptr %12, align 8, !tbaa !5
  %2962 = load i32, ptr %19, align 4, !tbaa !9
  %2963 = load i32, ptr %20, align 4, !tbaa !9
  %2964 = load i32, ptr %28, align 4, !tbaa !9
  %2965 = mul nsw i32 %2963, %2964
  %2966 = add nsw i32 %2962, %2965
  %2967 = sext i32 %2966 to i64
  %2968 = getelementptr inbounds %struct.doublecomplex, ptr %2961, i64 %2967
  %2969 = call { double, double } @Cd(ptr noundef %2968)
  %2970 = extractvalue { double, double } %2969, 0
  %2971 = extractvalue { double, double } %2969, 1
  %2972 = getelementptr inbounds { double, double }, ptr %68, i32 0, i32 0
  %2973 = getelementptr inbounds { double, double }, ptr %68, i32 0, i32 1
  store double %2970, ptr %2972, align 8
  store double %2971, ptr %2973, align 8
  %2974 = getelementptr inbounds { double, double }, ptr %68, i32 0, i32 0
  %2975 = load double, ptr %2974, align 8
  %2976 = getelementptr inbounds { double, double }, ptr %68, i32 0, i32 1
  %2977 = load double, ptr %2976, align 8
  %2978 = call double @cabs(double noundef %2975, double noundef %2977) #6
  store double %2978, ptr %27, align 8, !tbaa !11
  %2979 = load double, ptr %27, align 8, !tbaa !11
  %2980 = load double, ptr %23, align 8, !tbaa !11
  %2981 = fadd double %2980, %2979
  store double %2981, ptr %23, align 8, !tbaa !11
  %2982 = load double, ptr %27, align 8, !tbaa !11
  %2983 = load ptr, ptr %13, align 8, !tbaa !5
  %2984 = load i32, ptr %22, align 4, !tbaa !9
  %2985 = sext i32 %2984 to i64
  %2986 = getelementptr inbounds double, ptr %2983, i64 %2985
  %2987 = load double, ptr %2986, align 8, !tbaa !11
  %2988 = fadd double %2987, %2982
  store double %2988, ptr %2986, align 8, !tbaa !11
  br label %2989

2989:                                             ; preds = %2958
  %2990 = load i32, ptr %22, align 4, !tbaa !9
  %2991 = add nsw i32 %2990, 1
  store i32 %2991, ptr %22, align 4, !tbaa !9
  br label %2954, !llvm.loop !71

2992:                                             ; preds = %2954
  %2993 = load double, ptr %23, align 8, !tbaa !11
  %2994 = load ptr, ptr %13, align 8, !tbaa !5
  %2995 = load i32, ptr %20, align 4, !tbaa !9
  %2996 = sext i32 %2995 to i64
  %2997 = getelementptr inbounds double, ptr %2994, i64 %2996
  %2998 = load double, ptr %2997, align 8, !tbaa !11
  %2999 = fadd double %2998, %2993
  store double %2999, ptr %2997, align 8, !tbaa !11
  br label %3000

3000:                                             ; preds = %2992
  %3001 = load i32, ptr %20, align 4, !tbaa !9
  %3002 = add nsw i32 %3001, 1
  store i32 %3002, ptr %20, align 4, !tbaa !9
  br label %2846, !llvm.loop !72

3003:                                             ; preds = %2846
  %3004 = load ptr, ptr %13, align 8, !tbaa !5
  %3005 = getelementptr inbounds double, ptr %3004, i64 0
  %3006 = load double, ptr %3005, align 8, !tbaa !11
  store double %3006, ptr %25, align 8, !tbaa !11
  %3007 = load ptr, ptr %11, align 8, !tbaa !5
  %3008 = load i32, ptr %3007, align 4, !tbaa !9
  %3009 = sub nsw i32 %3008, 1
  store i32 %3009, ptr %14, align 4, !tbaa !9
  store i32 1, ptr %19, align 4, !tbaa !9
  br label %3010

3010:                                             ; preds = %3029, %3003
  %3011 = load i32, ptr %19, align 4, !tbaa !9
  %3012 = load i32, ptr %14, align 4, !tbaa !9
  %3013 = icmp sle i32 %3011, %3012
  br i1 %3013, label %3014, label %3032

3014:                                             ; preds = %3010
  %3015 = load ptr, ptr %13, align 8, !tbaa !5
  %3016 = load i32, ptr %19, align 4, !tbaa !9
  %3017 = sext i32 %3016 to i64
  %3018 = getelementptr inbounds double, ptr %3015, i64 %3017
  %3019 = load double, ptr %3018, align 8, !tbaa !11
  store double %3019, ptr %18, align 8, !tbaa !11
  %3020 = load double, ptr %25, align 8, !tbaa !11
  %3021 = load double, ptr %18, align 8, !tbaa !11
  %3022 = fcmp olt double %3020, %3021
  br i1 %3022, label %3026, label %3023

3023:                                             ; preds = %3014
  %3024 = call i32 @disnan_(ptr noundef %18)
  %3025 = icmp ne i32 %3024, 0
  br i1 %3025, label %3026, label %3028

3026:                                             ; preds = %3023, %3014
  %3027 = load double, ptr %18, align 8, !tbaa !11
  store double %3027, ptr %25, align 8, !tbaa !11
  br label %3028

3028:                                             ; preds = %3026, %3023
  br label %3029

3029:                                             ; preds = %3028
  %3030 = load i32, ptr %19, align 4, !tbaa !9
  %3031 = add nsw i32 %3030, 1
  store i32 %3031, ptr %19, align 4, !tbaa !9
  br label %3010, !llvm.loop !73

3032:                                             ; preds = %3010
  br label %3241

3033:                                             ; preds = %2825
  %3034 = load ptr, ptr %11, align 8, !tbaa !5
  %3035 = load i32, ptr %3034, align 4, !tbaa !9
  %3036 = sub nsw i32 %3035, 1
  store i32 %3036, ptr %14, align 4, !tbaa !9
  %3037 = load i32, ptr %21, align 4, !tbaa !9
  store i32 %3037, ptr %19, align 4, !tbaa !9
  br label %3038

3038:                                             ; preds = %3047, %3033
  %3039 = load i32, ptr %19, align 4, !tbaa !9
  %3040 = load i32, ptr %14, align 4, !tbaa !9
  %3041 = icmp sle i32 %3039, %3040
  br i1 %3041, label %3042, label %3050

3042:                                             ; preds = %3038
  %3043 = load ptr, ptr %13, align 8, !tbaa !5
  %3044 = load i32, ptr %19, align 4, !tbaa !9
  %3045 = sext i32 %3044 to i64
  %3046 = getelementptr inbounds double, ptr %3043, i64 %3045
  store double 0.000000e+00, ptr %3046, align 8, !tbaa !11
  br label %3047

3047:                                             ; preds = %3042
  %3048 = load i32, ptr %19, align 4, !tbaa !9
  %3049 = add nsw i32 %3048, 1
  store i32 %3049, ptr %19, align 4, !tbaa !9
  br label %3038, !llvm.loop !74

3050:                                             ; preds = %3038
  %3051 = load i32, ptr %21, align 4, !tbaa !9
  %3052 = sub nsw i32 %3051, 1
  store i32 %3052, ptr %20, align 4, !tbaa !9
  br label %3053

3053:                                             ; preds = %3208, %3050
  %3054 = load i32, ptr %20, align 4, !tbaa !9
  %3055 = icmp sge i32 %3054, 0
  br i1 %3055, label %3056, label %3211

3056:                                             ; preds = %3053
  store double 0.000000e+00, ptr %23, align 8, !tbaa !11
  %3057 = load i32, ptr %20, align 4, !tbaa !9
  %3058 = sub nsw i32 %3057, 1
  store i32 %3058, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %3059

3059:                                             ; preds = %3094, %3056
  %3060 = load i32, ptr %19, align 4, !tbaa !9
  %3061 = load i32, ptr %14, align 4, !tbaa !9
  %3062 = icmp sle i32 %3060, %3061
  br i1 %3062, label %3063, label %3097

3063:                                             ; preds = %3059
  %3064 = load ptr, ptr %12, align 8, !tbaa !5
  %3065 = load i32, ptr %19, align 4, !tbaa !9
  %3066 = load i32, ptr %20, align 4, !tbaa !9
  %3067 = load i32, ptr %28, align 4, !tbaa !9
  %3068 = mul nsw i32 %3066, %3067
  %3069 = add nsw i32 %3065, %3068
  %3070 = sext i32 %3069 to i64
  %3071 = getelementptr inbounds %struct.doublecomplex, ptr %3064, i64 %3070
  %3072 = call { double, double } @Cd(ptr noundef %3071)
  %3073 = extractvalue { double, double } %3072, 0
  %3074 = extractvalue { double, double } %3072, 1
  %3075 = getelementptr inbounds { double, double }, ptr %69, i32 0, i32 0
  %3076 = getelementptr inbounds { double, double }, ptr %69, i32 0, i32 1
  store double %3073, ptr %3075, align 8
  store double %3074, ptr %3076, align 8
  %3077 = getelementptr inbounds { double, double }, ptr %69, i32 0, i32 0
  %3078 = load double, ptr %3077, align 8
  %3079 = getelementptr inbounds { double, double }, ptr %69, i32 0, i32 1
  %3080 = load double, ptr %3079, align 8
  %3081 = call double @cabs(double noundef %3078, double noundef %3080) #6
  store double %3081, ptr %27, align 8, !tbaa !11
  %3082 = load double, ptr %27, align 8, !tbaa !11
  %3083 = load double, ptr %23, align 8, !tbaa !11
  %3084 = fadd double %3083, %3082
  store double %3084, ptr %23, align 8, !tbaa !11
  %3085 = load double, ptr %27, align 8, !tbaa !11
  %3086 = load ptr, ptr %13, align 8, !tbaa !5
  %3087 = load i32, ptr %19, align 4, !tbaa !9
  %3088 = load i32, ptr %21, align 4, !tbaa !9
  %3089 = add nsw i32 %3087, %3088
  %3090 = sext i32 %3089 to i64
  %3091 = getelementptr inbounds double, ptr %3086, i64 %3090
  %3092 = load double, ptr %3091, align 8, !tbaa !11
  %3093 = fadd double %3092, %3085
  store double %3093, ptr %3091, align 8, !tbaa !11
  br label %3094

3094:                                             ; preds = %3063
  %3095 = load i32, ptr %19, align 4, !tbaa !9
  %3096 = add nsw i32 %3095, 1
  store i32 %3096, ptr %19, align 4, !tbaa !9
  br label %3059, !llvm.loop !75

3097:                                             ; preds = %3059
  %3098 = load i32, ptr %19, align 4, !tbaa !9
  %3099 = load i32, ptr %20, align 4, !tbaa !9
  %3100 = load i32, ptr %28, align 4, !tbaa !9
  %3101 = mul nsw i32 %3099, %3100
  %3102 = add nsw i32 %3098, %3101
  store i32 %3102, ptr %14, align 4, !tbaa !9
  %3103 = load ptr, ptr %12, align 8, !tbaa !5
  %3104 = load i32, ptr %14, align 4, !tbaa !9
  %3105 = sext i32 %3104 to i64
  %3106 = getelementptr inbounds %struct.doublecomplex, ptr %3103, i64 %3105
  %3107 = getelementptr inbounds %struct.doublecomplex, ptr %3106, i32 0, i32 0
  %3108 = load double, ptr %3107, align 8, !tbaa !13
  store double %3108, ptr %17, align 8, !tbaa !11
  %3109 = load double, ptr %17, align 8, !tbaa !11
  %3110 = fcmp oge double %3109, 0.000000e+00
  br i1 %3110, label %3111, label %3113

3111:                                             ; preds = %3097
  %3112 = load double, ptr %17, align 8, !tbaa !11
  br label %3116

3113:                                             ; preds = %3097
  %3114 = load double, ptr %17, align 8, !tbaa !11
  %3115 = fneg double %3114
  br label %3116

3116:                                             ; preds = %3113, %3111
  %3117 = phi double [ %3112, %3111 ], [ %3115, %3113 ]
  store double %3117, ptr %27, align 8, !tbaa !11
  %3118 = load double, ptr %27, align 8, !tbaa !11
  %3119 = load double, ptr %23, align 8, !tbaa !11
  %3120 = fadd double %3119, %3118
  store double %3120, ptr %23, align 8, !tbaa !11
  %3121 = load double, ptr %23, align 8, !tbaa !11
  %3122 = load ptr, ptr %13, align 8, !tbaa !5
  %3123 = load i32, ptr %19, align 4, !tbaa !9
  %3124 = load i32, ptr %21, align 4, !tbaa !9
  %3125 = add nsw i32 %3123, %3124
  %3126 = sext i32 %3125 to i64
  %3127 = getelementptr inbounds double, ptr %3122, i64 %3126
  %3128 = load double, ptr %3127, align 8, !tbaa !11
  %3129 = fadd double %3128, %3121
  store double %3129, ptr %3127, align 8, !tbaa !11
  %3130 = load i32, ptr %19, align 4, !tbaa !9
  %3131 = add nsw i32 %3130, 1
  store i32 %3131, ptr %19, align 4, !tbaa !9
  %3132 = load i32, ptr %19, align 4, !tbaa !9
  %3133 = load i32, ptr %20, align 4, !tbaa !9
  %3134 = load i32, ptr %28, align 4, !tbaa !9
  %3135 = mul nsw i32 %3133, %3134
  %3136 = add nsw i32 %3132, %3135
  store i32 %3136, ptr %14, align 4, !tbaa !9
  %3137 = load ptr, ptr %12, align 8, !tbaa !5
  %3138 = load i32, ptr %14, align 4, !tbaa !9
  %3139 = sext i32 %3138 to i64
  %3140 = getelementptr inbounds %struct.doublecomplex, ptr %3137, i64 %3139
  %3141 = getelementptr inbounds %struct.doublecomplex, ptr %3140, i32 0, i32 0
  %3142 = load double, ptr %3141, align 8, !tbaa !13
  store double %3142, ptr %17, align 8, !tbaa !11
  %3143 = load double, ptr %17, align 8, !tbaa !11
  %3144 = fcmp oge double %3143, 0.000000e+00
  br i1 %3144, label %3145, label %3147

3145:                                             ; preds = %3116
  %3146 = load double, ptr %17, align 8, !tbaa !11
  br label %3150

3147:                                             ; preds = %3116
  %3148 = load double, ptr %17, align 8, !tbaa !11
  %3149 = fneg double %3148
  br label %3150

3150:                                             ; preds = %3147, %3145
  %3151 = phi double [ %3146, %3145 ], [ %3149, %3147 ]
  store double %3151, ptr %27, align 8, !tbaa !11
  %3152 = load double, ptr %27, align 8, !tbaa !11
  %3153 = load ptr, ptr %13, align 8, !tbaa !5
  %3154 = load i32, ptr %20, align 4, !tbaa !9
  %3155 = sext i32 %3154 to i64
  %3156 = getelementptr inbounds double, ptr %3153, i64 %3155
  store double %3152, ptr %3156, align 8, !tbaa !11
  store double 0.000000e+00, ptr %23, align 8, !tbaa !11
  %3157 = load ptr, ptr %11, align 8, !tbaa !5
  %3158 = load i32, ptr %3157, align 4, !tbaa !9
  %3159 = sub nsw i32 %3158, 1
  store i32 %3159, ptr %14, align 4, !tbaa !9
  %3160 = load i32, ptr %20, align 4, !tbaa !9
  %3161 = add nsw i32 %3160, 1
  store i32 %3161, ptr %22, align 4, !tbaa !9
  br label %3162

3162:                                             ; preds = %3197, %3150
  %3163 = load i32, ptr %22, align 4, !tbaa !9
  %3164 = load i32, ptr %14, align 4, !tbaa !9
  %3165 = icmp sle i32 %3163, %3164
  br i1 %3165, label %3166, label %3200

3166:                                             ; preds = %3162
  %3167 = load i32, ptr %19, align 4, !tbaa !9
  %3168 = add nsw i32 %3167, 1
  store i32 %3168, ptr %19, align 4, !tbaa !9
  %3169 = load ptr, ptr %12, align 8, !tbaa !5
  %3170 = load i32, ptr %19, align 4, !tbaa !9
  %3171 = load i32, ptr %20, align 4, !tbaa !9
  %3172 = load i32, ptr %28, align 4, !tbaa !9
  %3173 = mul nsw i32 %3171, %3172
  %3174 = add nsw i32 %3170, %3173
  %3175 = sext i32 %3174 to i64
  %3176 = getelementptr inbounds %struct.doublecomplex, ptr %3169, i64 %3175
  %3177 = call { double, double } @Cd(ptr noundef %3176)
  %3178 = extractvalue { double, double } %3177, 0
  %3179 = extractvalue { double, double } %3177, 1
  %3180 = getelementptr inbounds { double, double }, ptr %70, i32 0, i32 0
  %3181 = getelementptr inbounds { double, double }, ptr %70, i32 0, i32 1
  store double %3178, ptr %3180, align 8
  store double %3179, ptr %3181, align 8
  %3182 = getelementptr inbounds { double, double }, ptr %70, i32 0, i32 0
  %3183 = load double, ptr %3182, align 8
  %3184 = getelementptr inbounds { double, double }, ptr %70, i32 0, i32 1
  %3185 = load double, ptr %3184, align 8
  %3186 = call double @cabs(double noundef %3183, double noundef %3185) #6
  store double %3186, ptr %27, align 8, !tbaa !11
  %3187 = load double, ptr %27, align 8, !tbaa !11
  %3188 = load double, ptr %23, align 8, !tbaa !11
  %3189 = fadd double %3188, %3187
  store double %3189, ptr %23, align 8, !tbaa !11
  %3190 = load double, ptr %27, align 8, !tbaa !11
  %3191 = load ptr, ptr %13, align 8, !tbaa !5
  %3192 = load i32, ptr %22, align 4, !tbaa !9
  %3193 = sext i32 %3192 to i64
  %3194 = getelementptr inbounds double, ptr %3191, i64 %3193
  %3195 = load double, ptr %3194, align 8, !tbaa !11
  %3196 = fadd double %3195, %3190
  store double %3196, ptr %3194, align 8, !tbaa !11
  br label %3197

3197:                                             ; preds = %3166
  %3198 = load i32, ptr %22, align 4, !tbaa !9
  %3199 = add nsw i32 %3198, 1
  store i32 %3199, ptr %22, align 4, !tbaa !9
  br label %3162, !llvm.loop !76

3200:                                             ; preds = %3162
  %3201 = load double, ptr %23, align 8, !tbaa !11
  %3202 = load ptr, ptr %13, align 8, !tbaa !5
  %3203 = load i32, ptr %20, align 4, !tbaa !9
  %3204 = sext i32 %3203 to i64
  %3205 = getelementptr inbounds double, ptr %3202, i64 %3204
  %3206 = load double, ptr %3205, align 8, !tbaa !11
  %3207 = fadd double %3206, %3201
  store double %3207, ptr %3205, align 8, !tbaa !11
  br label %3208

3208:                                             ; preds = %3200
  %3209 = load i32, ptr %20, align 4, !tbaa !9
  %3210 = add nsw i32 %3209, -1
  store i32 %3210, ptr %20, align 4, !tbaa !9
  br label %3053, !llvm.loop !77

3211:                                             ; preds = %3053
  %3212 = load ptr, ptr %13, align 8, !tbaa !5
  %3213 = getelementptr inbounds double, ptr %3212, i64 0
  %3214 = load double, ptr %3213, align 8, !tbaa !11
  store double %3214, ptr %25, align 8, !tbaa !11
  %3215 = load ptr, ptr %11, align 8, !tbaa !5
  %3216 = load i32, ptr %3215, align 4, !tbaa !9
  %3217 = sub nsw i32 %3216, 1
  store i32 %3217, ptr %14, align 4, !tbaa !9
  store i32 1, ptr %19, align 4, !tbaa !9
  br label %3218

3218:                                             ; preds = %3237, %3211
  %3219 = load i32, ptr %19, align 4, !tbaa !9
  %3220 = load i32, ptr %14, align 4, !tbaa !9
  %3221 = icmp sle i32 %3219, %3220
  br i1 %3221, label %3222, label %3240

3222:                                             ; preds = %3218
  %3223 = load ptr, ptr %13, align 8, !tbaa !5
  %3224 = load i32, ptr %19, align 4, !tbaa !9
  %3225 = sext i32 %3224 to i64
  %3226 = getelementptr inbounds double, ptr %3223, i64 %3225
  %3227 = load double, ptr %3226, align 8, !tbaa !11
  store double %3227, ptr %18, align 8, !tbaa !11
  %3228 = load double, ptr %25, align 8, !tbaa !11
  %3229 = load double, ptr %18, align 8, !tbaa !11
  %3230 = fcmp olt double %3228, %3229
  br i1 %3230, label %3234, label %3231

3231:                                             ; preds = %3222
  %3232 = call i32 @disnan_(ptr noundef %18)
  %3233 = icmp ne i32 %3232, 0
  br i1 %3233, label %3234, label %3236

3234:                                             ; preds = %3231, %3222
  %3235 = load double, ptr %18, align 8, !tbaa !11
  store double %3235, ptr %25, align 8, !tbaa !11
  br label %3236

3236:                                             ; preds = %3234, %3231
  br label %3237

3237:                                             ; preds = %3236
  %3238 = load i32, ptr %19, align 4, !tbaa !9
  %3239 = add nsw i32 %3238, 1
  store i32 %3239, ptr %19, align 4, !tbaa !9
  br label %3218, !llvm.loop !78

3240:                                             ; preds = %3218
  br label %3241

3241:                                             ; preds = %3240, %3032
  br label %3242

3242:                                             ; preds = %3241, %2824
  br label %4711

3243:                                             ; preds = %2386
  %3244 = load ptr, ptr %11, align 8, !tbaa !5
  %3245 = load i32, ptr %3244, align 4, !tbaa !9
  %3246 = sdiv i32 %3245, 2
  store i32 %3246, ptr %21, align 4, !tbaa !9
  %3247 = load i32, ptr %30, align 4, !tbaa !9
  %3248 = icmp eq i32 %3247, 1
  br i1 %3248, label %3249, label %3916

3249:                                             ; preds = %3243
  %3250 = load i32, ptr %31, align 4, !tbaa !9
  %3251 = icmp eq i32 %3250, 0
  br i1 %3251, label %3252, label %3584

3252:                                             ; preds = %3249
  %3253 = load i32, ptr %21, align 4, !tbaa !9
  store i32 %3253, ptr %26, align 4, !tbaa !9
  %3254 = load i32, ptr %21, align 4, !tbaa !9
  %3255 = add nsw i32 %3254, 1
  store i32 %3255, ptr %21, align 4, !tbaa !9
  %3256 = load ptr, ptr %11, align 8, !tbaa !5
  %3257 = load i32, ptr %3256, align 4, !tbaa !9
  %3258 = sub nsw i32 %3257, 1
  store i32 %3258, ptr %14, align 4, !tbaa !9
  %3259 = load i32, ptr %26, align 4, !tbaa !9
  store i32 %3259, ptr %19, align 4, !tbaa !9
  br label %3260

3260:                                             ; preds = %3269, %3252
  %3261 = load i32, ptr %19, align 4, !tbaa !9
  %3262 = load i32, ptr %14, align 4, !tbaa !9
  %3263 = icmp sle i32 %3261, %3262
  br i1 %3263, label %3264, label %3272

3264:                                             ; preds = %3260
  %3265 = load ptr, ptr %13, align 8, !tbaa !5
  %3266 = load i32, ptr %19, align 4, !tbaa !9
  %3267 = sext i32 %3266 to i64
  %3268 = getelementptr inbounds double, ptr %3265, i64 %3267
  store double 0.000000e+00, ptr %3268, align 8, !tbaa !11
  br label %3269

3269:                                             ; preds = %3264
  %3270 = load i32, ptr %19, align 4, !tbaa !9
  %3271 = add nsw i32 %3270, 1
  store i32 %3271, ptr %19, align 4, !tbaa !9
  br label %3260, !llvm.loop !79

3272:                                             ; preds = %3260
  %3273 = load i32, ptr %26, align 4, !tbaa !9
  %3274 = sub nsw i32 %3273, 1
  store i32 %3274, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %3275

3275:                                             ; preds = %3326, %3272
  %3276 = load i32, ptr %20, align 4, !tbaa !9
  %3277 = load i32, ptr %14, align 4, !tbaa !9
  %3278 = icmp sle i32 %3276, %3277
  br i1 %3278, label %3279, label %3329

3279:                                             ; preds = %3275
  store double 0.000000e+00, ptr %23, align 8, !tbaa !11
  %3280 = load i32, ptr %21, align 4, !tbaa !9
  %3281 = sub nsw i32 %3280, 1
  store i32 %3281, ptr %15, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %3282

3282:                                             ; preds = %3317, %3279
  %3283 = load i32, ptr %19, align 4, !tbaa !9
  %3284 = load i32, ptr %15, align 4, !tbaa !9
  %3285 = icmp sle i32 %3283, %3284
  br i1 %3285, label %3286, label %3320

3286:                                             ; preds = %3282
  %3287 = load ptr, ptr %12, align 8, !tbaa !5
  %3288 = load i32, ptr %19, align 4, !tbaa !9
  %3289 = load i32, ptr %20, align 4, !tbaa !9
  %3290 = load i32, ptr %28, align 4, !tbaa !9
  %3291 = mul nsw i32 %3289, %3290
  %3292 = add nsw i32 %3288, %3291
  %3293 = sext i32 %3292 to i64
  %3294 = getelementptr inbounds %struct.doublecomplex, ptr %3287, i64 %3293
  %3295 = call { double, double } @Cd(ptr noundef %3294)
  %3296 = extractvalue { double, double } %3295, 0
  %3297 = extractvalue { double, double } %3295, 1
  %3298 = getelementptr inbounds { double, double }, ptr %71, i32 0, i32 0
  %3299 = getelementptr inbounds { double, double }, ptr %71, i32 0, i32 1
  store double %3296, ptr %3298, align 8
  store double %3297, ptr %3299, align 8
  %3300 = getelementptr inbounds { double, double }, ptr %71, i32 0, i32 0
  %3301 = load double, ptr %3300, align 8
  %3302 = getelementptr inbounds { double, double }, ptr %71, i32 0, i32 1
  %3303 = load double, ptr %3302, align 8
  %3304 = call double @cabs(double noundef %3301, double noundef %3303) #6
  store double %3304, ptr %27, align 8, !tbaa !11
  %3305 = load double, ptr %27, align 8, !tbaa !11
  %3306 = load ptr, ptr %13, align 8, !tbaa !5
  %3307 = load i32, ptr %19, align 4, !tbaa !9
  %3308 = load i32, ptr %26, align 4, !tbaa !9
  %3309 = add nsw i32 %3307, %3308
  %3310 = sext i32 %3309 to i64
  %3311 = getelementptr inbounds double, ptr %3306, i64 %3310
  %3312 = load double, ptr %3311, align 8, !tbaa !11
  %3313 = fadd double %3312, %3305
  store double %3313, ptr %3311, align 8, !tbaa !11
  %3314 = load double, ptr %27, align 8, !tbaa !11
  %3315 = load double, ptr %23, align 8, !tbaa !11
  %3316 = fadd double %3315, %3314
  store double %3316, ptr %23, align 8, !tbaa !11
  br label %3317

3317:                                             ; preds = %3286
  %3318 = load i32, ptr %19, align 4, !tbaa !9
  %3319 = add nsw i32 %3318, 1
  store i32 %3319, ptr %19, align 4, !tbaa !9
  br label %3282, !llvm.loop !80

3320:                                             ; preds = %3282
  %3321 = load double, ptr %23, align 8, !tbaa !11
  %3322 = load ptr, ptr %13, align 8, !tbaa !5
  %3323 = load i32, ptr %20, align 4, !tbaa !9
  %3324 = sext i32 %3323 to i64
  %3325 = getelementptr inbounds double, ptr %3322, i64 %3324
  store double %3321, ptr %3325, align 8, !tbaa !11
  br label %3326

3326:                                             ; preds = %3320
  %3327 = load i32, ptr %20, align 4, !tbaa !9
  %3328 = add nsw i32 %3327, 1
  store i32 %3328, ptr %20, align 4, !tbaa !9
  br label %3275, !llvm.loop !81

3329:                                             ; preds = %3275
  %3330 = load i32, ptr %20, align 4, !tbaa !9
  %3331 = load i32, ptr %28, align 4, !tbaa !9
  %3332 = mul nsw i32 %3330, %3331
  store i32 %3332, ptr %14, align 4, !tbaa !9
  %3333 = load ptr, ptr %12, align 8, !tbaa !5
  %3334 = load i32, ptr %14, align 4, !tbaa !9
  %3335 = sext i32 %3334 to i64
  %3336 = getelementptr inbounds %struct.doublecomplex, ptr %3333, i64 %3335
  %3337 = getelementptr inbounds %struct.doublecomplex, ptr %3336, i32 0, i32 0
  %3338 = load double, ptr %3337, align 8, !tbaa !13
  store double %3338, ptr %17, align 8, !tbaa !11
  %3339 = load double, ptr %17, align 8, !tbaa !11
  %3340 = fcmp oge double %3339, 0.000000e+00
  br i1 %3340, label %3341, label %3343

3341:                                             ; preds = %3329
  %3342 = load double, ptr %17, align 8, !tbaa !11
  br label %3346

3343:                                             ; preds = %3329
  %3344 = load double, ptr %17, align 8, !tbaa !11
  %3345 = fneg double %3344
  br label %3346

3346:                                             ; preds = %3343, %3341
  %3347 = phi double [ %3342, %3341 ], [ %3345, %3343 ]
  store double %3347, ptr %23, align 8, !tbaa !11
  %3348 = load i32, ptr %21, align 4, !tbaa !9
  %3349 = sub nsw i32 %3348, 1
  store i32 %3349, ptr %14, align 4, !tbaa !9
  store i32 1, ptr %19, align 4, !tbaa !9
  br label %3350

3350:                                             ; preds = %3385, %3346
  %3351 = load i32, ptr %19, align 4, !tbaa !9
  %3352 = load i32, ptr %14, align 4, !tbaa !9
  %3353 = icmp sle i32 %3351, %3352
  br i1 %3353, label %3354, label %3388

3354:                                             ; preds = %3350
  %3355 = load ptr, ptr %12, align 8, !tbaa !5
  %3356 = load i32, ptr %19, align 4, !tbaa !9
  %3357 = load i32, ptr %20, align 4, !tbaa !9
  %3358 = load i32, ptr %28, align 4, !tbaa !9
  %3359 = mul nsw i32 %3357, %3358
  %3360 = add nsw i32 %3356, %3359
  %3361 = sext i32 %3360 to i64
  %3362 = getelementptr inbounds %struct.doublecomplex, ptr %3355, i64 %3361
  %3363 = call { double, double } @Cd(ptr noundef %3362)
  %3364 = extractvalue { double, double } %3363, 0
  %3365 = extractvalue { double, double } %3363, 1
  %3366 = getelementptr inbounds { double, double }, ptr %72, i32 0, i32 0
  %3367 = getelementptr inbounds { double, double }, ptr %72, i32 0, i32 1
  store double %3364, ptr %3366, align 8
  store double %3365, ptr %3367, align 8
  %3368 = getelementptr inbounds { double, double }, ptr %72, i32 0, i32 0
  %3369 = load double, ptr %3368, align 8
  %3370 = getelementptr inbounds { double, double }, ptr %72, i32 0, i32 1
  %3371 = load double, ptr %3370, align 8
  %3372 = call double @cabs(double noundef %3369, double noundef %3371) #6
  store double %3372, ptr %27, align 8, !tbaa !11
  %3373 = load double, ptr %27, align 8, !tbaa !11
  %3374 = load ptr, ptr %13, align 8, !tbaa !5
  %3375 = load i32, ptr %19, align 4, !tbaa !9
  %3376 = load i32, ptr %26, align 4, !tbaa !9
  %3377 = add nsw i32 %3375, %3376
  %3378 = sext i32 %3377 to i64
  %3379 = getelementptr inbounds double, ptr %3374, i64 %3378
  %3380 = load double, ptr %3379, align 8, !tbaa !11
  %3381 = fadd double %3380, %3373
  store double %3381, ptr %3379, align 8, !tbaa !11
  %3382 = load double, ptr %27, align 8, !tbaa !11
  %3383 = load double, ptr %23, align 8, !tbaa !11
  %3384 = fadd double %3383, %3382
  store double %3384, ptr %23, align 8, !tbaa !11
  br label %3385

3385:                                             ; preds = %3354
  %3386 = load i32, ptr %19, align 4, !tbaa !9
  %3387 = add nsw i32 %3386, 1
  store i32 %3387, ptr %19, align 4, !tbaa !9
  br label %3350, !llvm.loop !82

3388:                                             ; preds = %3350
  %3389 = load double, ptr %23, align 8, !tbaa !11
  %3390 = load ptr, ptr %13, align 8, !tbaa !5
  %3391 = load i32, ptr %20, align 4, !tbaa !9
  %3392 = sext i32 %3391 to i64
  %3393 = getelementptr inbounds double, ptr %3390, i64 %3392
  %3394 = load double, ptr %3393, align 8, !tbaa !11
  %3395 = fadd double %3394, %3389
  store double %3395, ptr %3393, align 8, !tbaa !11
  %3396 = load ptr, ptr %11, align 8, !tbaa !5
  %3397 = load i32, ptr %3396, align 4, !tbaa !9
  %3398 = sub nsw i32 %3397, 1
  store i32 %3398, ptr %14, align 4, !tbaa !9
  %3399 = load i32, ptr %21, align 4, !tbaa !9
  store i32 %3399, ptr %20, align 4, !tbaa !9
  br label %3400

3400:                                             ; preds = %3551, %3388
  %3401 = load i32, ptr %20, align 4, !tbaa !9
  %3402 = load i32, ptr %14, align 4, !tbaa !9
  %3403 = icmp sle i32 %3401, %3402
  br i1 %3403, label %3404, label %3554

3404:                                             ; preds = %3400
  store double 0.000000e+00, ptr %23, align 8, !tbaa !11
  %3405 = load i32, ptr %20, align 4, !tbaa !9
  %3406 = load i32, ptr %21, align 4, !tbaa !9
  %3407 = sub nsw i32 %3405, %3406
  %3408 = sub nsw i32 %3407, 1
  store i32 %3408, ptr %15, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %3409

3409:                                             ; preds = %3442, %3404
  %3410 = load i32, ptr %19, align 4, !tbaa !9
  %3411 = load i32, ptr %15, align 4, !tbaa !9
  %3412 = icmp sle i32 %3410, %3411
  br i1 %3412, label %3413, label %3445

3413:                                             ; preds = %3409
  %3414 = load ptr, ptr %12, align 8, !tbaa !5
  %3415 = load i32, ptr %19, align 4, !tbaa !9
  %3416 = load i32, ptr %20, align 4, !tbaa !9
  %3417 = load i32, ptr %28, align 4, !tbaa !9
  %3418 = mul nsw i32 %3416, %3417
  %3419 = add nsw i32 %3415, %3418
  %3420 = sext i32 %3419 to i64
  %3421 = getelementptr inbounds %struct.doublecomplex, ptr %3414, i64 %3420
  %3422 = call { double, double } @Cd(ptr noundef %3421)
  %3423 = extractvalue { double, double } %3422, 0
  %3424 = extractvalue { double, double } %3422, 1
  %3425 = getelementptr inbounds { double, double }, ptr %73, i32 0, i32 0
  %3426 = getelementptr inbounds { double, double }, ptr %73, i32 0, i32 1
  store double %3423, ptr %3425, align 8
  store double %3424, ptr %3426, align 8
  %3427 = getelementptr inbounds { double, double }, ptr %73, i32 0, i32 0
  %3428 = load double, ptr %3427, align 8
  %3429 = getelementptr inbounds { double, double }, ptr %73, i32 0, i32 1
  %3430 = load double, ptr %3429, align 8
  %3431 = call double @cabs(double noundef %3428, double noundef %3430) #6
  store double %3431, ptr %27, align 8, !tbaa !11
  %3432 = load double, ptr %27, align 8, !tbaa !11
  %3433 = load ptr, ptr %13, align 8, !tbaa !5
  %3434 = load i32, ptr %19, align 4, !tbaa !9
  %3435 = sext i32 %3434 to i64
  %3436 = getelementptr inbounds double, ptr %3433, i64 %3435
  %3437 = load double, ptr %3436, align 8, !tbaa !11
  %3438 = fadd double %3437, %3432
  store double %3438, ptr %3436, align 8, !tbaa !11
  %3439 = load double, ptr %27, align 8, !tbaa !11
  %3440 = load double, ptr %23, align 8, !tbaa !11
  %3441 = fadd double %3440, %3439
  store double %3441, ptr %23, align 8, !tbaa !11
  br label %3442

3442:                                             ; preds = %3413
  %3443 = load i32, ptr %19, align 4, !tbaa !9
  %3444 = add nsw i32 %3443, 1
  store i32 %3444, ptr %19, align 4, !tbaa !9
  br label %3409, !llvm.loop !83

3445:                                             ; preds = %3409
  %3446 = load i32, ptr %19, align 4, !tbaa !9
  %3447 = load i32, ptr %20, align 4, !tbaa !9
  %3448 = load i32, ptr %28, align 4, !tbaa !9
  %3449 = mul nsw i32 %3447, %3448
  %3450 = add nsw i32 %3446, %3449
  store i32 %3450, ptr %15, align 4, !tbaa !9
  %3451 = load ptr, ptr %12, align 8, !tbaa !5
  %3452 = load i32, ptr %15, align 4, !tbaa !9
  %3453 = sext i32 %3452 to i64
  %3454 = getelementptr inbounds %struct.doublecomplex, ptr %3451, i64 %3453
  %3455 = getelementptr inbounds %struct.doublecomplex, ptr %3454, i32 0, i32 0
  %3456 = load double, ptr %3455, align 8, !tbaa !13
  store double %3456, ptr %17, align 8, !tbaa !11
  %3457 = load double, ptr %17, align 8, !tbaa !11
  %3458 = fcmp oge double %3457, 0.000000e+00
  br i1 %3458, label %3459, label %3461

3459:                                             ; preds = %3445
  %3460 = load double, ptr %17, align 8, !tbaa !11
  br label %3464

3461:                                             ; preds = %3445
  %3462 = load double, ptr %17, align 8, !tbaa !11
  %3463 = fneg double %3462
  br label %3464

3464:                                             ; preds = %3461, %3459
  %3465 = phi double [ %3460, %3459 ], [ %3463, %3461 ]
  store double %3465, ptr %27, align 8, !tbaa !11
  %3466 = load double, ptr %27, align 8, !tbaa !11
  %3467 = load double, ptr %23, align 8, !tbaa !11
  %3468 = fadd double %3467, %3466
  store double %3468, ptr %23, align 8, !tbaa !11
  %3469 = load double, ptr %23, align 8, !tbaa !11
  %3470 = load ptr, ptr %13, align 8, !tbaa !5
  %3471 = load i32, ptr %20, align 4, !tbaa !9
  %3472 = load i32, ptr %21, align 4, !tbaa !9
  %3473 = sub nsw i32 %3471, %3472
  %3474 = sext i32 %3473 to i64
  %3475 = getelementptr inbounds double, ptr %3470, i64 %3474
  %3476 = load double, ptr %3475, align 8, !tbaa !11
  %3477 = fadd double %3476, %3469
  store double %3477, ptr %3475, align 8, !tbaa !11
  %3478 = load i32, ptr %19, align 4, !tbaa !9
  %3479 = add nsw i32 %3478, 1
  store i32 %3479, ptr %19, align 4, !tbaa !9
  %3480 = load i32, ptr %19, align 4, !tbaa !9
  %3481 = load i32, ptr %20, align 4, !tbaa !9
  %3482 = load i32, ptr %28, align 4, !tbaa !9
  %3483 = mul nsw i32 %3481, %3482
  %3484 = add nsw i32 %3480, %3483
  store i32 %3484, ptr %15, align 4, !tbaa !9
  %3485 = load ptr, ptr %12, align 8, !tbaa !5
  %3486 = load i32, ptr %15, align 4, !tbaa !9
  %3487 = sext i32 %3486 to i64
  %3488 = getelementptr inbounds %struct.doublecomplex, ptr %3485, i64 %3487
  %3489 = getelementptr inbounds %struct.doublecomplex, ptr %3488, i32 0, i32 0
  %3490 = load double, ptr %3489, align 8, !tbaa !13
  store double %3490, ptr %17, align 8, !tbaa !11
  %3491 = load double, ptr %17, align 8, !tbaa !11
  %3492 = fcmp oge double %3491, 0.000000e+00
  br i1 %3492, label %3493, label %3495

3493:                                             ; preds = %3464
  %3494 = load double, ptr %17, align 8, !tbaa !11
  br label %3498

3495:                                             ; preds = %3464
  %3496 = load double, ptr %17, align 8, !tbaa !11
  %3497 = fneg double %3496
  br label %3498

3498:                                             ; preds = %3495, %3493
  %3499 = phi double [ %3494, %3493 ], [ %3497, %3495 ]
  store double %3499, ptr %23, align 8, !tbaa !11
  %3500 = load ptr, ptr %11, align 8, !tbaa !5
  %3501 = load i32, ptr %3500, align 4, !tbaa !9
  %3502 = sub nsw i32 %3501, 1
  store i32 %3502, ptr %15, align 4, !tbaa !9
  %3503 = load i32, ptr %20, align 4, !tbaa !9
  %3504 = add nsw i32 %3503, 1
  store i32 %3504, ptr %22, align 4, !tbaa !9
  br label %3505

3505:                                             ; preds = %3540, %3498
  %3506 = load i32, ptr %22, align 4, !tbaa !9
  %3507 = load i32, ptr %15, align 4, !tbaa !9
  %3508 = icmp sle i32 %3506, %3507
  br i1 %3508, label %3509, label %3543

3509:                                             ; preds = %3505
  %3510 = load i32, ptr %19, align 4, !tbaa !9
  %3511 = add nsw i32 %3510, 1
  store i32 %3511, ptr %19, align 4, !tbaa !9
  %3512 = load ptr, ptr %12, align 8, !tbaa !5
  %3513 = load i32, ptr %19, align 4, !tbaa !9
  %3514 = load i32, ptr %20, align 4, !tbaa !9
  %3515 = load i32, ptr %28, align 4, !tbaa !9
  %3516 = mul nsw i32 %3514, %3515
  %3517 = add nsw i32 %3513, %3516
  %3518 = sext i32 %3517 to i64
  %3519 = getelementptr inbounds %struct.doublecomplex, ptr %3512, i64 %3518
  %3520 = call { double, double } @Cd(ptr noundef %3519)
  %3521 = extractvalue { double, double } %3520, 0
  %3522 = extractvalue { double, double } %3520, 1
  %3523 = getelementptr inbounds { double, double }, ptr %74, i32 0, i32 0
  %3524 = getelementptr inbounds { double, double }, ptr %74, i32 0, i32 1
  store double %3521, ptr %3523, align 8
  store double %3522, ptr %3524, align 8
  %3525 = getelementptr inbounds { double, double }, ptr %74, i32 0, i32 0
  %3526 = load double, ptr %3525, align 8
  %3527 = getelementptr inbounds { double, double }, ptr %74, i32 0, i32 1
  %3528 = load double, ptr %3527, align 8
  %3529 = call double @cabs(double noundef %3526, double noundef %3528) #6
  store double %3529, ptr %27, align 8, !tbaa !11
  %3530 = load double, ptr %27, align 8, !tbaa !11
  %3531 = load ptr, ptr %13, align 8, !tbaa !5
  %3532 = load i32, ptr %22, align 4, !tbaa !9
  %3533 = sext i32 %3532 to i64
  %3534 = getelementptr inbounds double, ptr %3531, i64 %3533
  %3535 = load double, ptr %3534, align 8, !tbaa !11
  %3536 = fadd double %3535, %3530
  store double %3536, ptr %3534, align 8, !tbaa !11
  %3537 = load double, ptr %27, align 8, !tbaa !11
  %3538 = load double, ptr %23, align 8, !tbaa !11
  %3539 = fadd double %3538, %3537
  store double %3539, ptr %23, align 8, !tbaa !11
  br label %3540

3540:                                             ; preds = %3509
  %3541 = load i32, ptr %22, align 4, !tbaa !9
  %3542 = add nsw i32 %3541, 1
  store i32 %3542, ptr %22, align 4, !tbaa !9
  br label %3505, !llvm.loop !84

3543:                                             ; preds = %3505
  %3544 = load double, ptr %23, align 8, !tbaa !11
  %3545 = load ptr, ptr %13, align 8, !tbaa !5
  %3546 = load i32, ptr %20, align 4, !tbaa !9
  %3547 = sext i32 %3546 to i64
  %3548 = getelementptr inbounds double, ptr %3545, i64 %3547
  %3549 = load double, ptr %3548, align 8, !tbaa !11
  %3550 = fadd double %3549, %3544
  store double %3550, ptr %3548, align 8, !tbaa !11
  br label %3551

3551:                                             ; preds = %3543
  %3552 = load i32, ptr %20, align 4, !tbaa !9
  %3553 = add nsw i32 %3552, 1
  store i32 %3553, ptr %20, align 4, !tbaa !9
  br label %3400, !llvm.loop !85

3554:                                             ; preds = %3400
  %3555 = load ptr, ptr %13, align 8, !tbaa !5
  %3556 = getelementptr inbounds double, ptr %3555, i64 0
  %3557 = load double, ptr %3556, align 8, !tbaa !11
  store double %3557, ptr %25, align 8, !tbaa !11
  %3558 = load ptr, ptr %11, align 8, !tbaa !5
  %3559 = load i32, ptr %3558, align 4, !tbaa !9
  %3560 = sub nsw i32 %3559, 1
  store i32 %3560, ptr %14, align 4, !tbaa !9
  store i32 1, ptr %19, align 4, !tbaa !9
  br label %3561

3561:                                             ; preds = %3580, %3554
  %3562 = load i32, ptr %19, align 4, !tbaa !9
  %3563 = load i32, ptr %14, align 4, !tbaa !9
  %3564 = icmp sle i32 %3562, %3563
  br i1 %3564, label %3565, label %3583

3565:                                             ; preds = %3561
  %3566 = load ptr, ptr %13, align 8, !tbaa !5
  %3567 = load i32, ptr %19, align 4, !tbaa !9
  %3568 = sext i32 %3567 to i64
  %3569 = getelementptr inbounds double, ptr %3566, i64 %3568
  %3570 = load double, ptr %3569, align 8, !tbaa !11
  store double %3570, ptr %18, align 8, !tbaa !11
  %3571 = load double, ptr %25, align 8, !tbaa !11
  %3572 = load double, ptr %18, align 8, !tbaa !11
  %3573 = fcmp olt double %3571, %3572
  br i1 %3573, label %3577, label %3574

3574:                                             ; preds = %3565
  %3575 = call i32 @disnan_(ptr noundef %18)
  %3576 = icmp ne i32 %3575, 0
  br i1 %3576, label %3577, label %3579

3577:                                             ; preds = %3574, %3565
  %3578 = load double, ptr %18, align 8, !tbaa !11
  store double %3578, ptr %25, align 8, !tbaa !11
  br label %3579

3579:                                             ; preds = %3577, %3574
  br label %3580

3580:                                             ; preds = %3579
  %3581 = load i32, ptr %19, align 4, !tbaa !9
  %3582 = add nsw i32 %3581, 1
  store i32 %3582, ptr %19, align 4, !tbaa !9
  br label %3561, !llvm.loop !86

3583:                                             ; preds = %3561
  br label %3915

3584:                                             ; preds = %3249
  %3585 = load i32, ptr %21, align 4, !tbaa !9
  %3586 = add nsw i32 %3585, 1
  store i32 %3586, ptr %21, align 4, !tbaa !9
  %3587 = load ptr, ptr %11, align 8, !tbaa !5
  %3588 = load i32, ptr %3587, align 4, !tbaa !9
  %3589 = sub nsw i32 %3588, 1
  store i32 %3589, ptr %14, align 4, !tbaa !9
  %3590 = load i32, ptr %21, align 4, !tbaa !9
  store i32 %3590, ptr %19, align 4, !tbaa !9
  br label %3591

3591:                                             ; preds = %3600, %3584
  %3592 = load i32, ptr %19, align 4, !tbaa !9
  %3593 = load i32, ptr %14, align 4, !tbaa !9
  %3594 = icmp sle i32 %3592, %3593
  br i1 %3594, label %3595, label %3603

3595:                                             ; preds = %3591
  %3596 = load ptr, ptr %13, align 8, !tbaa !5
  %3597 = load i32, ptr %19, align 4, !tbaa !9
  %3598 = sext i32 %3597 to i64
  %3599 = getelementptr inbounds double, ptr %3596, i64 %3598
  store double 0.000000e+00, ptr %3599, align 8, !tbaa !11
  br label %3600

3600:                                             ; preds = %3595
  %3601 = load i32, ptr %19, align 4, !tbaa !9
  %3602 = add nsw i32 %3601, 1
  store i32 %3602, ptr %19, align 4, !tbaa !9
  br label %3591, !llvm.loop !87

3603:                                             ; preds = %3591
  %3604 = load i32, ptr %21, align 4, !tbaa !9
  %3605 = sub nsw i32 %3604, 2
  store i32 %3605, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %3606

3606:                                             ; preds = %3756, %3603
  %3607 = load i32, ptr %20, align 4, !tbaa !9
  %3608 = load i32, ptr %14, align 4, !tbaa !9
  %3609 = icmp sle i32 %3607, %3608
  br i1 %3609, label %3610, label %3759

3610:                                             ; preds = %3606
  store double 0.000000e+00, ptr %23, align 8, !tbaa !11
  %3611 = load i32, ptr %20, align 4, !tbaa !9
  %3612 = sub nsw i32 %3611, 1
  store i32 %3612, ptr %15, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %3613

3613:                                             ; preds = %3646, %3610
  %3614 = load i32, ptr %19, align 4, !tbaa !9
  %3615 = load i32, ptr %15, align 4, !tbaa !9
  %3616 = icmp sle i32 %3614, %3615
  br i1 %3616, label %3617, label %3649

3617:                                             ; preds = %3613
  %3618 = load ptr, ptr %12, align 8, !tbaa !5
  %3619 = load i32, ptr %19, align 4, !tbaa !9
  %3620 = load i32, ptr %20, align 4, !tbaa !9
  %3621 = load i32, ptr %28, align 4, !tbaa !9
  %3622 = mul nsw i32 %3620, %3621
  %3623 = add nsw i32 %3619, %3622
  %3624 = sext i32 %3623 to i64
  %3625 = getelementptr inbounds %struct.doublecomplex, ptr %3618, i64 %3624
  %3626 = call { double, double } @Cd(ptr noundef %3625)
  %3627 = extractvalue { double, double } %3626, 0
  %3628 = extractvalue { double, double } %3626, 1
  %3629 = getelementptr inbounds { double, double }, ptr %75, i32 0, i32 0
  %3630 = getelementptr inbounds { double, double }, ptr %75, i32 0, i32 1
  store double %3627, ptr %3629, align 8
  store double %3628, ptr %3630, align 8
  %3631 = getelementptr inbounds { double, double }, ptr %75, i32 0, i32 0
  %3632 = load double, ptr %3631, align 8
  %3633 = getelementptr inbounds { double, double }, ptr %75, i32 0, i32 1
  %3634 = load double, ptr %3633, align 8
  %3635 = call double @cabs(double noundef %3632, double noundef %3634) #6
  store double %3635, ptr %27, align 8, !tbaa !11
  %3636 = load double, ptr %27, align 8, !tbaa !11
  %3637 = load ptr, ptr %13, align 8, !tbaa !5
  %3638 = load i32, ptr %19, align 4, !tbaa !9
  %3639 = sext i32 %3638 to i64
  %3640 = getelementptr inbounds double, ptr %3637, i64 %3639
  %3641 = load double, ptr %3640, align 8, !tbaa !11
  %3642 = fadd double %3641, %3636
  store double %3642, ptr %3640, align 8, !tbaa !11
  %3643 = load double, ptr %27, align 8, !tbaa !11
  %3644 = load double, ptr %23, align 8, !tbaa !11
  %3645 = fadd double %3644, %3643
  store double %3645, ptr %23, align 8, !tbaa !11
  br label %3646

3646:                                             ; preds = %3617
  %3647 = load i32, ptr %19, align 4, !tbaa !9
  %3648 = add nsw i32 %3647, 1
  store i32 %3648, ptr %19, align 4, !tbaa !9
  br label %3613, !llvm.loop !88

3649:                                             ; preds = %3613
  %3650 = load i32, ptr %19, align 4, !tbaa !9
  %3651 = load i32, ptr %20, align 4, !tbaa !9
  %3652 = load i32, ptr %28, align 4, !tbaa !9
  %3653 = mul nsw i32 %3651, %3652
  %3654 = add nsw i32 %3650, %3653
  store i32 %3654, ptr %15, align 4, !tbaa !9
  %3655 = load ptr, ptr %12, align 8, !tbaa !5
  %3656 = load i32, ptr %15, align 4, !tbaa !9
  %3657 = sext i32 %3656 to i64
  %3658 = getelementptr inbounds %struct.doublecomplex, ptr %3655, i64 %3657
  %3659 = getelementptr inbounds %struct.doublecomplex, ptr %3658, i32 0, i32 0
  %3660 = load double, ptr %3659, align 8, !tbaa !13
  store double %3660, ptr %17, align 8, !tbaa !11
  %3661 = load double, ptr %17, align 8, !tbaa !11
  %3662 = fcmp oge double %3661, 0.000000e+00
  br i1 %3662, label %3663, label %3665

3663:                                             ; preds = %3649
  %3664 = load double, ptr %17, align 8, !tbaa !11
  br label %3668

3665:                                             ; preds = %3649
  %3666 = load double, ptr %17, align 8, !tbaa !11
  %3667 = fneg double %3666
  br label %3668

3668:                                             ; preds = %3665, %3663
  %3669 = phi double [ %3664, %3663 ], [ %3667, %3665 ]
  store double %3669, ptr %27, align 8, !tbaa !11
  %3670 = load double, ptr %27, align 8, !tbaa !11
  %3671 = load double, ptr %23, align 8, !tbaa !11
  %3672 = fadd double %3671, %3670
  store double %3672, ptr %23, align 8, !tbaa !11
  %3673 = load double, ptr %23, align 8, !tbaa !11
  %3674 = load ptr, ptr %13, align 8, !tbaa !5
  %3675 = load i32, ptr %20, align 4, !tbaa !9
  %3676 = sext i32 %3675 to i64
  %3677 = getelementptr inbounds double, ptr %3674, i64 %3676
  store double %3673, ptr %3677, align 8, !tbaa !11
  %3678 = load i32, ptr %19, align 4, !tbaa !9
  %3679 = add nsw i32 %3678, 1
  store i32 %3679, ptr %19, align 4, !tbaa !9
  %3680 = load i32, ptr %19, align 4, !tbaa !9
  %3681 = load i32, ptr %20, align 4, !tbaa !9
  %3682 = load i32, ptr %28, align 4, !tbaa !9
  %3683 = mul nsw i32 %3681, %3682
  %3684 = add nsw i32 %3680, %3683
  store i32 %3684, ptr %15, align 4, !tbaa !9
  %3685 = load ptr, ptr %12, align 8, !tbaa !5
  %3686 = load i32, ptr %15, align 4, !tbaa !9
  %3687 = sext i32 %3686 to i64
  %3688 = getelementptr inbounds %struct.doublecomplex, ptr %3685, i64 %3687
  %3689 = getelementptr inbounds %struct.doublecomplex, ptr %3688, i32 0, i32 0
  %3690 = load double, ptr %3689, align 8, !tbaa !13
  store double %3690, ptr %17, align 8, !tbaa !11
  %3691 = load double, ptr %17, align 8, !tbaa !11
  %3692 = fcmp oge double %3691, 0.000000e+00
  br i1 %3692, label %3693, label %3695

3693:                                             ; preds = %3668
  %3694 = load double, ptr %17, align 8, !tbaa !11
  br label %3698

3695:                                             ; preds = %3668
  %3696 = load double, ptr %17, align 8, !tbaa !11
  %3697 = fneg double %3696
  br label %3698

3698:                                             ; preds = %3695, %3693
  %3699 = phi double [ %3694, %3693 ], [ %3697, %3695 ]
  store double %3699, ptr %27, align 8, !tbaa !11
  %3700 = load double, ptr %27, align 8, !tbaa !11
  store double %3700, ptr %23, align 8, !tbaa !11
  %3701 = load ptr, ptr %11, align 8, !tbaa !5
  %3702 = load i32, ptr %3701, align 4, !tbaa !9
  %3703 = sub nsw i32 %3702, 1
  store i32 %3703, ptr %15, align 4, !tbaa !9
  %3704 = load i32, ptr %21, align 4, !tbaa !9
  %3705 = load i32, ptr %20, align 4, !tbaa !9
  %3706 = add nsw i32 %3704, %3705
  %3707 = add nsw i32 %3706, 1
  store i32 %3707, ptr %22, align 4, !tbaa !9
  br label %3708

3708:                                             ; preds = %3743, %3698
  %3709 = load i32, ptr %22, align 4, !tbaa !9
  %3710 = load i32, ptr %15, align 4, !tbaa !9
  %3711 = icmp sle i32 %3709, %3710
  br i1 %3711, label %3712, label %3746

3712:                                             ; preds = %3708
  %3713 = load i32, ptr %19, align 4, !tbaa !9
  %3714 = add nsw i32 %3713, 1
  store i32 %3714, ptr %19, align 4, !tbaa !9
  %3715 = load ptr, ptr %12, align 8, !tbaa !5
  %3716 = load i32, ptr %19, align 4, !tbaa !9
  %3717 = load i32, ptr %20, align 4, !tbaa !9
  %3718 = load i32, ptr %28, align 4, !tbaa !9
  %3719 = mul nsw i32 %3717, %3718
  %3720 = add nsw i32 %3716, %3719
  %3721 = sext i32 %3720 to i64
  %3722 = getelementptr inbounds %struct.doublecomplex, ptr %3715, i64 %3721
  %3723 = call { double, double } @Cd(ptr noundef %3722)
  %3724 = extractvalue { double, double } %3723, 0
  %3725 = extractvalue { double, double } %3723, 1
  %3726 = getelementptr inbounds { double, double }, ptr %76, i32 0, i32 0
  %3727 = getelementptr inbounds { double, double }, ptr %76, i32 0, i32 1
  store double %3724, ptr %3726, align 8
  store double %3725, ptr %3727, align 8
  %3728 = getelementptr inbounds { double, double }, ptr %76, i32 0, i32 0
  %3729 = load double, ptr %3728, align 8
  %3730 = getelementptr inbounds { double, double }, ptr %76, i32 0, i32 1
  %3731 = load double, ptr %3730, align 8
  %3732 = call double @cabs(double noundef %3729, double noundef %3731) #6
  store double %3732, ptr %27, align 8, !tbaa !11
  %3733 = load double, ptr %27, align 8, !tbaa !11
  %3734 = load double, ptr %23, align 8, !tbaa !11
  %3735 = fadd double %3734, %3733
  store double %3735, ptr %23, align 8, !tbaa !11
  %3736 = load double, ptr %27, align 8, !tbaa !11
  %3737 = load ptr, ptr %13, align 8, !tbaa !5
  %3738 = load i32, ptr %22, align 4, !tbaa !9
  %3739 = sext i32 %3738 to i64
  %3740 = getelementptr inbounds double, ptr %3737, i64 %3739
  %3741 = load double, ptr %3740, align 8, !tbaa !11
  %3742 = fadd double %3741, %3736
  store double %3742, ptr %3740, align 8, !tbaa !11
  br label %3743

3743:                                             ; preds = %3712
  %3744 = load i32, ptr %22, align 4, !tbaa !9
  %3745 = add nsw i32 %3744, 1
  store i32 %3745, ptr %22, align 4, !tbaa !9
  br label %3708, !llvm.loop !89

3746:                                             ; preds = %3708
  %3747 = load double, ptr %23, align 8, !tbaa !11
  %3748 = load ptr, ptr %13, align 8, !tbaa !5
  %3749 = load i32, ptr %21, align 4, !tbaa !9
  %3750 = load i32, ptr %20, align 4, !tbaa !9
  %3751 = add nsw i32 %3749, %3750
  %3752 = sext i32 %3751 to i64
  %3753 = getelementptr inbounds double, ptr %3748, i64 %3752
  %3754 = load double, ptr %3753, align 8, !tbaa !11
  %3755 = fadd double %3754, %3747
  store double %3755, ptr %3753, align 8, !tbaa !11
  br label %3756

3756:                                             ; preds = %3746
  %3757 = load i32, ptr %20, align 4, !tbaa !9
  %3758 = add nsw i32 %3757, 1
  store i32 %3758, ptr %20, align 4, !tbaa !9
  br label %3606, !llvm.loop !90

3759:                                             ; preds = %3606
  store double 0.000000e+00, ptr %23, align 8, !tbaa !11
  %3760 = load i32, ptr %21, align 4, !tbaa !9
  %3761 = sub nsw i32 %3760, 2
  store i32 %3761, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %3762

3762:                                             ; preds = %3795, %3759
  %3763 = load i32, ptr %19, align 4, !tbaa !9
  %3764 = load i32, ptr %14, align 4, !tbaa !9
  %3765 = icmp sle i32 %3763, %3764
  br i1 %3765, label %3766, label %3798

3766:                                             ; preds = %3762
  %3767 = load ptr, ptr %12, align 8, !tbaa !5
  %3768 = load i32, ptr %19, align 4, !tbaa !9
  %3769 = load i32, ptr %20, align 4, !tbaa !9
  %3770 = load i32, ptr %28, align 4, !tbaa !9
  %3771 = mul nsw i32 %3769, %3770
  %3772 = add nsw i32 %3768, %3771
  %3773 = sext i32 %3772 to i64
  %3774 = getelementptr inbounds %struct.doublecomplex, ptr %3767, i64 %3773
  %3775 = call { double, double } @Cd(ptr noundef %3774)
  %3776 = extractvalue { double, double } %3775, 0
  %3777 = extractvalue { double, double } %3775, 1
  %3778 = getelementptr inbounds { double, double }, ptr %77, i32 0, i32 0
  %3779 = getelementptr inbounds { double, double }, ptr %77, i32 0, i32 1
  store double %3776, ptr %3778, align 8
  store double %3777, ptr %3779, align 8
  %3780 = getelementptr inbounds { double, double }, ptr %77, i32 0, i32 0
  %3781 = load double, ptr %3780, align 8
  %3782 = getelementptr inbounds { double, double }, ptr %77, i32 0, i32 1
  %3783 = load double, ptr %3782, align 8
  %3784 = call double @cabs(double noundef %3781, double noundef %3783) #6
  store double %3784, ptr %27, align 8, !tbaa !11
  %3785 = load double, ptr %27, align 8, !tbaa !11
  %3786 = load ptr, ptr %13, align 8, !tbaa !5
  %3787 = load i32, ptr %19, align 4, !tbaa !9
  %3788 = sext i32 %3787 to i64
  %3789 = getelementptr inbounds double, ptr %3786, i64 %3788
  %3790 = load double, ptr %3789, align 8, !tbaa !11
  %3791 = fadd double %3790, %3785
  store double %3791, ptr %3789, align 8, !tbaa !11
  %3792 = load double, ptr %27, align 8, !tbaa !11
  %3793 = load double, ptr %23, align 8, !tbaa !11
  %3794 = fadd double %3793, %3792
  store double %3794, ptr %23, align 8, !tbaa !11
  br label %3795

3795:                                             ; preds = %3766
  %3796 = load i32, ptr %19, align 4, !tbaa !9
  %3797 = add nsw i32 %3796, 1
  store i32 %3797, ptr %19, align 4, !tbaa !9
  br label %3762, !llvm.loop !91

3798:                                             ; preds = %3762
  %3799 = load i32, ptr %19, align 4, !tbaa !9
  %3800 = load i32, ptr %20, align 4, !tbaa !9
  %3801 = load i32, ptr %28, align 4, !tbaa !9
  %3802 = mul nsw i32 %3800, %3801
  %3803 = add nsw i32 %3799, %3802
  store i32 %3803, ptr %14, align 4, !tbaa !9
  %3804 = load ptr, ptr %12, align 8, !tbaa !5
  %3805 = load i32, ptr %14, align 4, !tbaa !9
  %3806 = sext i32 %3805 to i64
  %3807 = getelementptr inbounds %struct.doublecomplex, ptr %3804, i64 %3806
  %3808 = getelementptr inbounds %struct.doublecomplex, ptr %3807, i32 0, i32 0
  %3809 = load double, ptr %3808, align 8, !tbaa !13
  store double %3809, ptr %17, align 8, !tbaa !11
  %3810 = load double, ptr %17, align 8, !tbaa !11
  %3811 = fcmp oge double %3810, 0.000000e+00
  br i1 %3811, label %3812, label %3814

3812:                                             ; preds = %3798
  %3813 = load double, ptr %17, align 8, !tbaa !11
  br label %3817

3814:                                             ; preds = %3798
  %3815 = load double, ptr %17, align 8, !tbaa !11
  %3816 = fneg double %3815
  br label %3817

3817:                                             ; preds = %3814, %3812
  %3818 = phi double [ %3813, %3812 ], [ %3816, %3814 ]
  store double %3818, ptr %27, align 8, !tbaa !11
  %3819 = load double, ptr %27, align 8, !tbaa !11
  %3820 = load double, ptr %23, align 8, !tbaa !11
  %3821 = fadd double %3820, %3819
  store double %3821, ptr %23, align 8, !tbaa !11
  %3822 = load double, ptr %23, align 8, !tbaa !11
  %3823 = load ptr, ptr %13, align 8, !tbaa !5
  %3824 = load i32, ptr %19, align 4, !tbaa !9
  %3825 = sext i32 %3824 to i64
  %3826 = getelementptr inbounds double, ptr %3823, i64 %3825
  store double %3822, ptr %3826, align 8, !tbaa !11
  %3827 = load ptr, ptr %11, align 8, !tbaa !5
  %3828 = load i32, ptr %3827, align 4, !tbaa !9
  %3829 = sub nsw i32 %3828, 1
  store i32 %3829, ptr %14, align 4, !tbaa !9
  %3830 = load i32, ptr %21, align 4, !tbaa !9
  store i32 %3830, ptr %20, align 4, !tbaa !9
  br label %3831

3831:                                             ; preds = %3882, %3817
  %3832 = load i32, ptr %20, align 4, !tbaa !9
  %3833 = load i32, ptr %14, align 4, !tbaa !9
  %3834 = icmp sle i32 %3832, %3833
  br i1 %3834, label %3835, label %3885

3835:                                             ; preds = %3831
  store double 0.000000e+00, ptr %23, align 8, !tbaa !11
  %3836 = load i32, ptr %21, align 4, !tbaa !9
  %3837 = sub nsw i32 %3836, 1
  store i32 %3837, ptr %15, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %3838

3838:                                             ; preds = %3871, %3835
  %3839 = load i32, ptr %19, align 4, !tbaa !9
  %3840 = load i32, ptr %15, align 4, !tbaa !9
  %3841 = icmp sle i32 %3839, %3840
  br i1 %3841, label %3842, label %3874

3842:                                             ; preds = %3838
  %3843 = load ptr, ptr %12, align 8, !tbaa !5
  %3844 = load i32, ptr %19, align 4, !tbaa !9
  %3845 = load i32, ptr %20, align 4, !tbaa !9
  %3846 = load i32, ptr %28, align 4, !tbaa !9
  %3847 = mul nsw i32 %3845, %3846
  %3848 = add nsw i32 %3844, %3847
  %3849 = sext i32 %3848 to i64
  %3850 = getelementptr inbounds %struct.doublecomplex, ptr %3843, i64 %3849
  %3851 = call { double, double } @Cd(ptr noundef %3850)
  %3852 = extractvalue { double, double } %3851, 0
  %3853 = extractvalue { double, double } %3851, 1
  %3854 = getelementptr inbounds { double, double }, ptr %78, i32 0, i32 0
  %3855 = getelementptr inbounds { double, double }, ptr %78, i32 0, i32 1
  store double %3852, ptr %3854, align 8
  store double %3853, ptr %3855, align 8
  %3856 = getelementptr inbounds { double, double }, ptr %78, i32 0, i32 0
  %3857 = load double, ptr %3856, align 8
  %3858 = getelementptr inbounds { double, double }, ptr %78, i32 0, i32 1
  %3859 = load double, ptr %3858, align 8
  %3860 = call double @cabs(double noundef %3857, double noundef %3859) #6
  store double %3860, ptr %27, align 8, !tbaa !11
  %3861 = load double, ptr %27, align 8, !tbaa !11
  %3862 = load ptr, ptr %13, align 8, !tbaa !5
  %3863 = load i32, ptr %19, align 4, !tbaa !9
  %3864 = sext i32 %3863 to i64
  %3865 = getelementptr inbounds double, ptr %3862, i64 %3864
  %3866 = load double, ptr %3865, align 8, !tbaa !11
  %3867 = fadd double %3866, %3861
  store double %3867, ptr %3865, align 8, !tbaa !11
  %3868 = load double, ptr %27, align 8, !tbaa !11
  %3869 = load double, ptr %23, align 8, !tbaa !11
  %3870 = fadd double %3869, %3868
  store double %3870, ptr %23, align 8, !tbaa !11
  br label %3871

3871:                                             ; preds = %3842
  %3872 = load i32, ptr %19, align 4, !tbaa !9
  %3873 = add nsw i32 %3872, 1
  store i32 %3873, ptr %19, align 4, !tbaa !9
  br label %3838, !llvm.loop !92

3874:                                             ; preds = %3838
  %3875 = load double, ptr %23, align 8, !tbaa !11
  %3876 = load ptr, ptr %13, align 8, !tbaa !5
  %3877 = load i32, ptr %20, align 4, !tbaa !9
  %3878 = sext i32 %3877 to i64
  %3879 = getelementptr inbounds double, ptr %3876, i64 %3878
  %3880 = load double, ptr %3879, align 8, !tbaa !11
  %3881 = fadd double %3880, %3875
  store double %3881, ptr %3879, align 8, !tbaa !11
  br label %3882

3882:                                             ; preds = %3874
  %3883 = load i32, ptr %20, align 4, !tbaa !9
  %3884 = add nsw i32 %3883, 1
  store i32 %3884, ptr %20, align 4, !tbaa !9
  br label %3831, !llvm.loop !93

3885:                                             ; preds = %3831
  %3886 = load ptr, ptr %13, align 8, !tbaa !5
  %3887 = getelementptr inbounds double, ptr %3886, i64 0
  %3888 = load double, ptr %3887, align 8, !tbaa !11
  store double %3888, ptr %25, align 8, !tbaa !11
  %3889 = load ptr, ptr %11, align 8, !tbaa !5
  %3890 = load i32, ptr %3889, align 4, !tbaa !9
  %3891 = sub nsw i32 %3890, 1
  store i32 %3891, ptr %14, align 4, !tbaa !9
  store i32 1, ptr %19, align 4, !tbaa !9
  br label %3892

3892:                                             ; preds = %3911, %3885
  %3893 = load i32, ptr %19, align 4, !tbaa !9
  %3894 = load i32, ptr %14, align 4, !tbaa !9
  %3895 = icmp sle i32 %3893, %3894
  br i1 %3895, label %3896, label %3914

3896:                                             ; preds = %3892
  %3897 = load ptr, ptr %13, align 8, !tbaa !5
  %3898 = load i32, ptr %19, align 4, !tbaa !9
  %3899 = sext i32 %3898 to i64
  %3900 = getelementptr inbounds double, ptr %3897, i64 %3899
  %3901 = load double, ptr %3900, align 8, !tbaa !11
  store double %3901, ptr %18, align 8, !tbaa !11
  %3902 = load double, ptr %25, align 8, !tbaa !11
  %3903 = load double, ptr %18, align 8, !tbaa !11
  %3904 = fcmp olt double %3902, %3903
  br i1 %3904, label %3908, label %3905

3905:                                             ; preds = %3896
  %3906 = call i32 @disnan_(ptr noundef %18)
  %3907 = icmp ne i32 %3906, 0
  br i1 %3907, label %3908, label %3910

3908:                                             ; preds = %3905, %3896
  %3909 = load double, ptr %18, align 8, !tbaa !11
  store double %3909, ptr %25, align 8, !tbaa !11
  br label %3910

3910:                                             ; preds = %3908, %3905
  br label %3911

3911:                                             ; preds = %3910
  %3912 = load i32, ptr %19, align 4, !tbaa !9
  %3913 = add nsw i32 %3912, 1
  store i32 %3913, ptr %19, align 4, !tbaa !9
  br label %3892, !llvm.loop !94

3914:                                             ; preds = %3892
  br label %3915

3915:                                             ; preds = %3914, %3583
  br label %4710

3916:                                             ; preds = %3243
  %3917 = load i32, ptr %31, align 4, !tbaa !9
  %3918 = icmp eq i32 %3917, 0
  br i1 %3918, label %3919, label %4321

3919:                                             ; preds = %3916
  %3920 = load ptr, ptr %11, align 8, !tbaa !5
  %3921 = load i32, ptr %3920, align 4, !tbaa !9
  %3922 = sub nsw i32 %3921, 1
  store i32 %3922, ptr %14, align 4, !tbaa !9
  %3923 = load i32, ptr %21, align 4, !tbaa !9
  store i32 %3923, ptr %19, align 4, !tbaa !9
  br label %3924

3924:                                             ; preds = %3933, %3919
  %3925 = load i32, ptr %19, align 4, !tbaa !9
  %3926 = load i32, ptr %14, align 4, !tbaa !9
  %3927 = icmp sle i32 %3925, %3926
  br i1 %3927, label %3928, label %3936

3928:                                             ; preds = %3924
  %3929 = load ptr, ptr %13, align 8, !tbaa !5
  %3930 = load i32, ptr %19, align 4, !tbaa !9
  %3931 = sext i32 %3930 to i64
  %3932 = getelementptr inbounds double, ptr %3929, i64 %3931
  store double 0.000000e+00, ptr %3932, align 8, !tbaa !11
  br label %3933

3933:                                             ; preds = %3928
  %3934 = load i32, ptr %19, align 4, !tbaa !9
  %3935 = add nsw i32 %3934, 1
  store i32 %3935, ptr %19, align 4, !tbaa !9
  br label %3924, !llvm.loop !95

3936:                                             ; preds = %3924
  %3937 = load i32, ptr %21, align 4, !tbaa !9
  %3938 = sub nsw i32 %3937, 1
  store i32 %3938, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %3939

3939:                                             ; preds = %3990, %3936
  %3940 = load i32, ptr %20, align 4, !tbaa !9
  %3941 = load i32, ptr %14, align 4, !tbaa !9
  %3942 = icmp sle i32 %3940, %3941
  br i1 %3942, label %3943, label %3993

3943:                                             ; preds = %3939
  store double 0.000000e+00, ptr %23, align 8, !tbaa !11
  %3944 = load i32, ptr %21, align 4, !tbaa !9
  %3945 = sub nsw i32 %3944, 1
  store i32 %3945, ptr %15, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %3946

3946:                                             ; preds = %3981, %3943
  %3947 = load i32, ptr %19, align 4, !tbaa !9
  %3948 = load i32, ptr %15, align 4, !tbaa !9
  %3949 = icmp sle i32 %3947, %3948
  br i1 %3949, label %3950, label %3984

3950:                                             ; preds = %3946
  %3951 = load ptr, ptr %12, align 8, !tbaa !5
  %3952 = load i32, ptr %19, align 4, !tbaa !9
  %3953 = load i32, ptr %20, align 4, !tbaa !9
  %3954 = load i32, ptr %28, align 4, !tbaa !9
  %3955 = mul nsw i32 %3953, %3954
  %3956 = add nsw i32 %3952, %3955
  %3957 = sext i32 %3956 to i64
  %3958 = getelementptr inbounds %struct.doublecomplex, ptr %3951, i64 %3957
  %3959 = call { double, double } @Cd(ptr noundef %3958)
  %3960 = extractvalue { double, double } %3959, 0
  %3961 = extractvalue { double, double } %3959, 1
  %3962 = getelementptr inbounds { double, double }, ptr %79, i32 0, i32 0
  %3963 = getelementptr inbounds { double, double }, ptr %79, i32 0, i32 1
  store double %3960, ptr %3962, align 8
  store double %3961, ptr %3963, align 8
  %3964 = getelementptr inbounds { double, double }, ptr %79, i32 0, i32 0
  %3965 = load double, ptr %3964, align 8
  %3966 = getelementptr inbounds { double, double }, ptr %79, i32 0, i32 1
  %3967 = load double, ptr %3966, align 8
  %3968 = call double @cabs(double noundef %3965, double noundef %3967) #6
  store double %3968, ptr %27, align 8, !tbaa !11
  %3969 = load double, ptr %27, align 8, !tbaa !11
  %3970 = load ptr, ptr %13, align 8, !tbaa !5
  %3971 = load i32, ptr %19, align 4, !tbaa !9
  %3972 = load i32, ptr %21, align 4, !tbaa !9
  %3973 = add nsw i32 %3971, %3972
  %3974 = sext i32 %3973 to i64
  %3975 = getelementptr inbounds double, ptr %3970, i64 %3974
  %3976 = load double, ptr %3975, align 8, !tbaa !11
  %3977 = fadd double %3976, %3969
  store double %3977, ptr %3975, align 8, !tbaa !11
  %3978 = load double, ptr %27, align 8, !tbaa !11
  %3979 = load double, ptr %23, align 8, !tbaa !11
  %3980 = fadd double %3979, %3978
  store double %3980, ptr %23, align 8, !tbaa !11
  br label %3981

3981:                                             ; preds = %3950
  %3982 = load i32, ptr %19, align 4, !tbaa !9
  %3983 = add nsw i32 %3982, 1
  store i32 %3983, ptr %19, align 4, !tbaa !9
  br label %3946, !llvm.loop !96

3984:                                             ; preds = %3946
  %3985 = load double, ptr %23, align 8, !tbaa !11
  %3986 = load ptr, ptr %13, align 8, !tbaa !5
  %3987 = load i32, ptr %20, align 4, !tbaa !9
  %3988 = sext i32 %3987 to i64
  %3989 = getelementptr inbounds double, ptr %3986, i64 %3988
  store double %3985, ptr %3989, align 8, !tbaa !11
  br label %3990

3990:                                             ; preds = %3984
  %3991 = load i32, ptr %20, align 4, !tbaa !9
  %3992 = add nsw i32 %3991, 1
  store i32 %3992, ptr %20, align 4, !tbaa !9
  br label %3939, !llvm.loop !97

3993:                                             ; preds = %3939
  %3994 = load i32, ptr %20, align 4, !tbaa !9
  %3995 = load i32, ptr %28, align 4, !tbaa !9
  %3996 = mul nsw i32 %3994, %3995
  store i32 %3996, ptr %14, align 4, !tbaa !9
  %3997 = load ptr, ptr %12, align 8, !tbaa !5
  %3998 = load i32, ptr %14, align 4, !tbaa !9
  %3999 = sext i32 %3998 to i64
  %4000 = getelementptr inbounds %struct.doublecomplex, ptr %3997, i64 %3999
  %4001 = getelementptr inbounds %struct.doublecomplex, ptr %4000, i32 0, i32 0
  %4002 = load double, ptr %4001, align 8, !tbaa !13
  store double %4002, ptr %17, align 8, !tbaa !11
  %4003 = load double, ptr %17, align 8, !tbaa !11
  %4004 = fcmp oge double %4003, 0.000000e+00
  br i1 %4004, label %4005, label %4007

4005:                                             ; preds = %3993
  %4006 = load double, ptr %17, align 8, !tbaa !11
  br label %4010

4007:                                             ; preds = %3993
  %4008 = load double, ptr %17, align 8, !tbaa !11
  %4009 = fneg double %4008
  br label %4010

4010:                                             ; preds = %4007, %4005
  %4011 = phi double [ %4006, %4005 ], [ %4009, %4007 ]
  store double %4011, ptr %27, align 8, !tbaa !11
  %4012 = load double, ptr %27, align 8, !tbaa !11
  store double %4012, ptr %23, align 8, !tbaa !11
  %4013 = load i32, ptr %21, align 4, !tbaa !9
  %4014 = sub nsw i32 %4013, 1
  store i32 %4014, ptr %14, align 4, !tbaa !9
  store i32 1, ptr %19, align 4, !tbaa !9
  br label %4015

4015:                                             ; preds = %4050, %4010
  %4016 = load i32, ptr %19, align 4, !tbaa !9
  %4017 = load i32, ptr %14, align 4, !tbaa !9
  %4018 = icmp sle i32 %4016, %4017
  br i1 %4018, label %4019, label %4053

4019:                                             ; preds = %4015
  %4020 = load ptr, ptr %12, align 8, !tbaa !5
  %4021 = load i32, ptr %19, align 4, !tbaa !9
  %4022 = load i32, ptr %20, align 4, !tbaa !9
  %4023 = load i32, ptr %28, align 4, !tbaa !9
  %4024 = mul nsw i32 %4022, %4023
  %4025 = add nsw i32 %4021, %4024
  %4026 = sext i32 %4025 to i64
  %4027 = getelementptr inbounds %struct.doublecomplex, ptr %4020, i64 %4026
  %4028 = call { double, double } @Cd(ptr noundef %4027)
  %4029 = extractvalue { double, double } %4028, 0
  %4030 = extractvalue { double, double } %4028, 1
  %4031 = getelementptr inbounds { double, double }, ptr %80, i32 0, i32 0
  %4032 = getelementptr inbounds { double, double }, ptr %80, i32 0, i32 1
  store double %4029, ptr %4031, align 8
  store double %4030, ptr %4032, align 8
  %4033 = getelementptr inbounds { double, double }, ptr %80, i32 0, i32 0
  %4034 = load double, ptr %4033, align 8
  %4035 = getelementptr inbounds { double, double }, ptr %80, i32 0, i32 1
  %4036 = load double, ptr %4035, align 8
  %4037 = call double @cabs(double noundef %4034, double noundef %4036) #6
  store double %4037, ptr %27, align 8, !tbaa !11
  %4038 = load double, ptr %27, align 8, !tbaa !11
  %4039 = load ptr, ptr %13, align 8, !tbaa !5
  %4040 = load i32, ptr %19, align 4, !tbaa !9
  %4041 = load i32, ptr %21, align 4, !tbaa !9
  %4042 = add nsw i32 %4040, %4041
  %4043 = sext i32 %4042 to i64
  %4044 = getelementptr inbounds double, ptr %4039, i64 %4043
  %4045 = load double, ptr %4044, align 8, !tbaa !11
  %4046 = fadd double %4045, %4038
  store double %4046, ptr %4044, align 8, !tbaa !11
  %4047 = load double, ptr %27, align 8, !tbaa !11
  %4048 = load double, ptr %23, align 8, !tbaa !11
  %4049 = fadd double %4048, %4047
  store double %4049, ptr %23, align 8, !tbaa !11
  br label %4050

4050:                                             ; preds = %4019
  %4051 = load i32, ptr %19, align 4, !tbaa !9
  %4052 = add nsw i32 %4051, 1
  store i32 %4052, ptr %19, align 4, !tbaa !9
  br label %4015, !llvm.loop !98

4053:                                             ; preds = %4015
  %4054 = load double, ptr %23, align 8, !tbaa !11
  %4055 = load ptr, ptr %13, align 8, !tbaa !5
  %4056 = load i32, ptr %20, align 4, !tbaa !9
  %4057 = sext i32 %4056 to i64
  %4058 = getelementptr inbounds double, ptr %4055, i64 %4057
  %4059 = load double, ptr %4058, align 8, !tbaa !11
  %4060 = fadd double %4059, %4054
  store double %4060, ptr %4058, align 8, !tbaa !11
  %4061 = load ptr, ptr %11, align 8, !tbaa !5
  %4062 = load i32, ptr %4061, align 4, !tbaa !9
  %4063 = sub nsw i32 %4062, 1
  store i32 %4063, ptr %14, align 4, !tbaa !9
  %4064 = load i32, ptr %21, align 4, !tbaa !9
  %4065 = add nsw i32 %4064, 1
  store i32 %4065, ptr %20, align 4, !tbaa !9
  br label %4066

4066:                                             ; preds = %4219, %4053
  %4067 = load i32, ptr %20, align 4, !tbaa !9
  %4068 = load i32, ptr %14, align 4, !tbaa !9
  %4069 = icmp sle i32 %4067, %4068
  br i1 %4069, label %4070, label %4222

4070:                                             ; preds = %4066
  store double 0.000000e+00, ptr %23, align 8, !tbaa !11
  %4071 = load i32, ptr %20, align 4, !tbaa !9
  %4072 = sub nsw i32 %4071, 2
  %4073 = load i32, ptr %21, align 4, !tbaa !9
  %4074 = sub nsw i32 %4072, %4073
  store i32 %4074, ptr %15, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %4075

4075:                                             ; preds = %4108, %4070
  %4076 = load i32, ptr %19, align 4, !tbaa !9
  %4077 = load i32, ptr %15, align 4, !tbaa !9
  %4078 = icmp sle i32 %4076, %4077
  br i1 %4078, label %4079, label %4111

4079:                                             ; preds = %4075
  %4080 = load ptr, ptr %12, align 8, !tbaa !5
  %4081 = load i32, ptr %19, align 4, !tbaa !9
  %4082 = load i32, ptr %20, align 4, !tbaa !9
  %4083 = load i32, ptr %28, align 4, !tbaa !9
  %4084 = mul nsw i32 %4082, %4083
  %4085 = add nsw i32 %4081, %4084
  %4086 = sext i32 %4085 to i64
  %4087 = getelementptr inbounds %struct.doublecomplex, ptr %4080, i64 %4086
  %4088 = call { double, double } @Cd(ptr noundef %4087)
  %4089 = extractvalue { double, double } %4088, 0
  %4090 = extractvalue { double, double } %4088, 1
  %4091 = getelementptr inbounds { double, double }, ptr %81, i32 0, i32 0
  %4092 = getelementptr inbounds { double, double }, ptr %81, i32 0, i32 1
  store double %4089, ptr %4091, align 8
  store double %4090, ptr %4092, align 8
  %4093 = getelementptr inbounds { double, double }, ptr %81, i32 0, i32 0
  %4094 = load double, ptr %4093, align 8
  %4095 = getelementptr inbounds { double, double }, ptr %81, i32 0, i32 1
  %4096 = load double, ptr %4095, align 8
  %4097 = call double @cabs(double noundef %4094, double noundef %4096) #6
  store double %4097, ptr %27, align 8, !tbaa !11
  %4098 = load double, ptr %27, align 8, !tbaa !11
  %4099 = load ptr, ptr %13, align 8, !tbaa !5
  %4100 = load i32, ptr %19, align 4, !tbaa !9
  %4101 = sext i32 %4100 to i64
  %4102 = getelementptr inbounds double, ptr %4099, i64 %4101
  %4103 = load double, ptr %4102, align 8, !tbaa !11
  %4104 = fadd double %4103, %4098
  store double %4104, ptr %4102, align 8, !tbaa !11
  %4105 = load double, ptr %27, align 8, !tbaa !11
  %4106 = load double, ptr %23, align 8, !tbaa !11
  %4107 = fadd double %4106, %4105
  store double %4107, ptr %23, align 8, !tbaa !11
  br label %4108

4108:                                             ; preds = %4079
  %4109 = load i32, ptr %19, align 4, !tbaa !9
  %4110 = add nsw i32 %4109, 1
  store i32 %4110, ptr %19, align 4, !tbaa !9
  br label %4075, !llvm.loop !99

4111:                                             ; preds = %4075
  %4112 = load i32, ptr %19, align 4, !tbaa !9
  %4113 = load i32, ptr %20, align 4, !tbaa !9
  %4114 = load i32, ptr %28, align 4, !tbaa !9
  %4115 = mul nsw i32 %4113, %4114
  %4116 = add nsw i32 %4112, %4115
  store i32 %4116, ptr %15, align 4, !tbaa !9
  %4117 = load ptr, ptr %12, align 8, !tbaa !5
  %4118 = load i32, ptr %15, align 4, !tbaa !9
  %4119 = sext i32 %4118 to i64
  %4120 = getelementptr inbounds %struct.doublecomplex, ptr %4117, i64 %4119
  %4121 = getelementptr inbounds %struct.doublecomplex, ptr %4120, i32 0, i32 0
  %4122 = load double, ptr %4121, align 8, !tbaa !13
  store double %4122, ptr %17, align 8, !tbaa !11
  %4123 = load double, ptr %17, align 8, !tbaa !11
  %4124 = fcmp oge double %4123, 0.000000e+00
  br i1 %4124, label %4125, label %4127

4125:                                             ; preds = %4111
  %4126 = load double, ptr %17, align 8, !tbaa !11
  br label %4130

4127:                                             ; preds = %4111
  %4128 = load double, ptr %17, align 8, !tbaa !11
  %4129 = fneg double %4128
  br label %4130

4130:                                             ; preds = %4127, %4125
  %4131 = phi double [ %4126, %4125 ], [ %4129, %4127 ]
  store double %4131, ptr %27, align 8, !tbaa !11
  %4132 = load double, ptr %27, align 8, !tbaa !11
  %4133 = load double, ptr %23, align 8, !tbaa !11
  %4134 = fadd double %4133, %4132
  store double %4134, ptr %23, align 8, !tbaa !11
  %4135 = load double, ptr %23, align 8, !tbaa !11
  %4136 = load ptr, ptr %13, align 8, !tbaa !5
  %4137 = load i32, ptr %20, align 4, !tbaa !9
  %4138 = load i32, ptr %21, align 4, !tbaa !9
  %4139 = sub nsw i32 %4137, %4138
  %4140 = sub nsw i32 %4139, 1
  %4141 = sext i32 %4140 to i64
  %4142 = getelementptr inbounds double, ptr %4136, i64 %4141
  %4143 = load double, ptr %4142, align 8, !tbaa !11
  %4144 = fadd double %4143, %4135
  store double %4144, ptr %4142, align 8, !tbaa !11
  %4145 = load i32, ptr %19, align 4, !tbaa !9
  %4146 = add nsw i32 %4145, 1
  store i32 %4146, ptr %19, align 4, !tbaa !9
  %4147 = load i32, ptr %19, align 4, !tbaa !9
  %4148 = load i32, ptr %20, align 4, !tbaa !9
  %4149 = load i32, ptr %28, align 4, !tbaa !9
  %4150 = mul nsw i32 %4148, %4149
  %4151 = add nsw i32 %4147, %4150
  store i32 %4151, ptr %15, align 4, !tbaa !9
  %4152 = load ptr, ptr %12, align 8, !tbaa !5
  %4153 = load i32, ptr %15, align 4, !tbaa !9
  %4154 = sext i32 %4153 to i64
  %4155 = getelementptr inbounds %struct.doublecomplex, ptr %4152, i64 %4154
  %4156 = getelementptr inbounds %struct.doublecomplex, ptr %4155, i32 0, i32 0
  %4157 = load double, ptr %4156, align 8, !tbaa !13
  store double %4157, ptr %17, align 8, !tbaa !11
  %4158 = load double, ptr %17, align 8, !tbaa !11
  %4159 = fcmp oge double %4158, 0.000000e+00
  br i1 %4159, label %4160, label %4162

4160:                                             ; preds = %4130
  %4161 = load double, ptr %17, align 8, !tbaa !11
  br label %4165

4162:                                             ; preds = %4130
  %4163 = load double, ptr %17, align 8, !tbaa !11
  %4164 = fneg double %4163
  br label %4165

4165:                                             ; preds = %4162, %4160
  %4166 = phi double [ %4161, %4160 ], [ %4164, %4162 ]
  store double %4166, ptr %27, align 8, !tbaa !11
  %4167 = load double, ptr %27, align 8, !tbaa !11
  store double %4167, ptr %23, align 8, !tbaa !11
  %4168 = load ptr, ptr %11, align 8, !tbaa !5
  %4169 = load i32, ptr %4168, align 4, !tbaa !9
  %4170 = sub nsw i32 %4169, 1
  store i32 %4170, ptr %15, align 4, !tbaa !9
  %4171 = load i32, ptr %20, align 4, !tbaa !9
  %4172 = add nsw i32 %4171, 1
  store i32 %4172, ptr %22, align 4, !tbaa !9
  br label %4173

4173:                                             ; preds = %4208, %4165
  %4174 = load i32, ptr %22, align 4, !tbaa !9
  %4175 = load i32, ptr %15, align 4, !tbaa !9
  %4176 = icmp sle i32 %4174, %4175
  br i1 %4176, label %4177, label %4211

4177:                                             ; preds = %4173
  %4178 = load i32, ptr %19, align 4, !tbaa !9
  %4179 = add nsw i32 %4178, 1
  store i32 %4179, ptr %19, align 4, !tbaa !9
  %4180 = load ptr, ptr %12, align 8, !tbaa !5
  %4181 = load i32, ptr %19, align 4, !tbaa !9
  %4182 = load i32, ptr %20, align 4, !tbaa !9
  %4183 = load i32, ptr %28, align 4, !tbaa !9
  %4184 = mul nsw i32 %4182, %4183
  %4185 = add nsw i32 %4181, %4184
  %4186 = sext i32 %4185 to i64
  %4187 = getelementptr inbounds %struct.doublecomplex, ptr %4180, i64 %4186
  %4188 = call { double, double } @Cd(ptr noundef %4187)
  %4189 = extractvalue { double, double } %4188, 0
  %4190 = extractvalue { double, double } %4188, 1
  %4191 = getelementptr inbounds { double, double }, ptr %82, i32 0, i32 0
  %4192 = getelementptr inbounds { double, double }, ptr %82, i32 0, i32 1
  store double %4189, ptr %4191, align 8
  store double %4190, ptr %4192, align 8
  %4193 = getelementptr inbounds { double, double }, ptr %82, i32 0, i32 0
  %4194 = load double, ptr %4193, align 8
  %4195 = getelementptr inbounds { double, double }, ptr %82, i32 0, i32 1
  %4196 = load double, ptr %4195, align 8
  %4197 = call double @cabs(double noundef %4194, double noundef %4196) #6
  store double %4197, ptr %27, align 8, !tbaa !11
  %4198 = load double, ptr %27, align 8, !tbaa !11
  %4199 = load ptr, ptr %13, align 8, !tbaa !5
  %4200 = load i32, ptr %22, align 4, !tbaa !9
  %4201 = sext i32 %4200 to i64
  %4202 = getelementptr inbounds double, ptr %4199, i64 %4201
  %4203 = load double, ptr %4202, align 8, !tbaa !11
  %4204 = fadd double %4203, %4198
  store double %4204, ptr %4202, align 8, !tbaa !11
  %4205 = load double, ptr %27, align 8, !tbaa !11
  %4206 = load double, ptr %23, align 8, !tbaa !11
  %4207 = fadd double %4206, %4205
  store double %4207, ptr %23, align 8, !tbaa !11
  br label %4208

4208:                                             ; preds = %4177
  %4209 = load i32, ptr %22, align 4, !tbaa !9
  %4210 = add nsw i32 %4209, 1
  store i32 %4210, ptr %22, align 4, !tbaa !9
  br label %4173, !llvm.loop !100

4211:                                             ; preds = %4173
  %4212 = load double, ptr %23, align 8, !tbaa !11
  %4213 = load ptr, ptr %13, align 8, !tbaa !5
  %4214 = load i32, ptr %20, align 4, !tbaa !9
  %4215 = sext i32 %4214 to i64
  %4216 = getelementptr inbounds double, ptr %4213, i64 %4215
  %4217 = load double, ptr %4216, align 8, !tbaa !11
  %4218 = fadd double %4217, %4212
  store double %4218, ptr %4216, align 8, !tbaa !11
  br label %4219

4219:                                             ; preds = %4211
  %4220 = load i32, ptr %20, align 4, !tbaa !9
  %4221 = add nsw i32 %4220, 1
  store i32 %4221, ptr %20, align 4, !tbaa !9
  br label %4066, !llvm.loop !101

4222:                                             ; preds = %4066
  store double 0.000000e+00, ptr %23, align 8, !tbaa !11
  %4223 = load i32, ptr %21, align 4, !tbaa !9
  %4224 = sub nsw i32 %4223, 2
  store i32 %4224, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %4225

4225:                                             ; preds = %4258, %4222
  %4226 = load i32, ptr %19, align 4, !tbaa !9
  %4227 = load i32, ptr %14, align 4, !tbaa !9
  %4228 = icmp sle i32 %4226, %4227
  br i1 %4228, label %4229, label %4261

4229:                                             ; preds = %4225
  %4230 = load ptr, ptr %12, align 8, !tbaa !5
  %4231 = load i32, ptr %19, align 4, !tbaa !9
  %4232 = load i32, ptr %20, align 4, !tbaa !9
  %4233 = load i32, ptr %28, align 4, !tbaa !9
  %4234 = mul nsw i32 %4232, %4233
  %4235 = add nsw i32 %4231, %4234
  %4236 = sext i32 %4235 to i64
  %4237 = getelementptr inbounds %struct.doublecomplex, ptr %4230, i64 %4236
  %4238 = call { double, double } @Cd(ptr noundef %4237)
  %4239 = extractvalue { double, double } %4238, 0
  %4240 = extractvalue { double, double } %4238, 1
  %4241 = getelementptr inbounds { double, double }, ptr %83, i32 0, i32 0
  %4242 = getelementptr inbounds { double, double }, ptr %83, i32 0, i32 1
  store double %4239, ptr %4241, align 8
  store double %4240, ptr %4242, align 8
  %4243 = getelementptr inbounds { double, double }, ptr %83, i32 0, i32 0
  %4244 = load double, ptr %4243, align 8
  %4245 = getelementptr inbounds { double, double }, ptr %83, i32 0, i32 1
  %4246 = load double, ptr %4245, align 8
  %4247 = call double @cabs(double noundef %4244, double noundef %4246) #6
  store double %4247, ptr %27, align 8, !tbaa !11
  %4248 = load double, ptr %27, align 8, !tbaa !11
  %4249 = load ptr, ptr %13, align 8, !tbaa !5
  %4250 = load i32, ptr %19, align 4, !tbaa !9
  %4251 = sext i32 %4250 to i64
  %4252 = getelementptr inbounds double, ptr %4249, i64 %4251
  %4253 = load double, ptr %4252, align 8, !tbaa !11
  %4254 = fadd double %4253, %4248
  store double %4254, ptr %4252, align 8, !tbaa !11
  %4255 = load double, ptr %27, align 8, !tbaa !11
  %4256 = load double, ptr %23, align 8, !tbaa !11
  %4257 = fadd double %4256, %4255
  store double %4257, ptr %23, align 8, !tbaa !11
  br label %4258

4258:                                             ; preds = %4229
  %4259 = load i32, ptr %19, align 4, !tbaa !9
  %4260 = add nsw i32 %4259, 1
  store i32 %4260, ptr %19, align 4, !tbaa !9
  br label %4225, !llvm.loop !102

4261:                                             ; preds = %4225
  %4262 = load i32, ptr %19, align 4, !tbaa !9
  %4263 = load i32, ptr %20, align 4, !tbaa !9
  %4264 = load i32, ptr %28, align 4, !tbaa !9
  %4265 = mul nsw i32 %4263, %4264
  %4266 = add nsw i32 %4262, %4265
  store i32 %4266, ptr %14, align 4, !tbaa !9
  %4267 = load ptr, ptr %12, align 8, !tbaa !5
  %4268 = load i32, ptr %14, align 4, !tbaa !9
  %4269 = sext i32 %4268 to i64
  %4270 = getelementptr inbounds %struct.doublecomplex, ptr %4267, i64 %4269
  %4271 = getelementptr inbounds %struct.doublecomplex, ptr %4270, i32 0, i32 0
  %4272 = load double, ptr %4271, align 8, !tbaa !13
  store double %4272, ptr %17, align 8, !tbaa !11
  %4273 = load double, ptr %17, align 8, !tbaa !11
  %4274 = fcmp oge double %4273, 0.000000e+00
  br i1 %4274, label %4275, label %4277

4275:                                             ; preds = %4261
  %4276 = load double, ptr %17, align 8, !tbaa !11
  br label %4280

4277:                                             ; preds = %4261
  %4278 = load double, ptr %17, align 8, !tbaa !11
  %4279 = fneg double %4278
  br label %4280

4280:                                             ; preds = %4277, %4275
  %4281 = phi double [ %4276, %4275 ], [ %4279, %4277 ]
  store double %4281, ptr %27, align 8, !tbaa !11
  %4282 = load double, ptr %27, align 8, !tbaa !11
  %4283 = load double, ptr %23, align 8, !tbaa !11
  %4284 = fadd double %4283, %4282
  store double %4284, ptr %23, align 8, !tbaa !11
  %4285 = load double, ptr %23, align 8, !tbaa !11
  %4286 = load ptr, ptr %13, align 8, !tbaa !5
  %4287 = load i32, ptr %19, align 4, !tbaa !9
  %4288 = sext i32 %4287 to i64
  %4289 = getelementptr inbounds double, ptr %4286, i64 %4288
  %4290 = load double, ptr %4289, align 8, !tbaa !11
  %4291 = fadd double %4290, %4285
  store double %4291, ptr %4289, align 8, !tbaa !11
  %4292 = load ptr, ptr %13, align 8, !tbaa !5
  %4293 = getelementptr inbounds double, ptr %4292, i64 0
  %4294 = load double, ptr %4293, align 8, !tbaa !11
  store double %4294, ptr %25, align 8, !tbaa !11
  %4295 = load ptr, ptr %11, align 8, !tbaa !5
  %4296 = load i32, ptr %4295, align 4, !tbaa !9
  %4297 = sub nsw i32 %4296, 1
  store i32 %4297, ptr %14, align 4, !tbaa !9
  store i32 1, ptr %19, align 4, !tbaa !9
  br label %4298

4298:                                             ; preds = %4317, %4280
  %4299 = load i32, ptr %19, align 4, !tbaa !9
  %4300 = load i32, ptr %14, align 4, !tbaa !9
  %4301 = icmp sle i32 %4299, %4300
  br i1 %4301, label %4302, label %4320

4302:                                             ; preds = %4298
  %4303 = load ptr, ptr %13, align 8, !tbaa !5
  %4304 = load i32, ptr %19, align 4, !tbaa !9
  %4305 = sext i32 %4304 to i64
  %4306 = getelementptr inbounds double, ptr %4303, i64 %4305
  %4307 = load double, ptr %4306, align 8, !tbaa !11
  store double %4307, ptr %18, align 8, !tbaa !11
  %4308 = load double, ptr %25, align 8, !tbaa !11
  %4309 = load double, ptr %18, align 8, !tbaa !11
  %4310 = fcmp olt double %4308, %4309
  br i1 %4310, label %4314, label %4311

4311:                                             ; preds = %4302
  %4312 = call i32 @disnan_(ptr noundef %18)
  %4313 = icmp ne i32 %4312, 0
  br i1 %4313, label %4314, label %4316

4314:                                             ; preds = %4311, %4302
  %4315 = load double, ptr %18, align 8, !tbaa !11
  store double %4315, ptr %25, align 8, !tbaa !11
  br label %4316

4316:                                             ; preds = %4314, %4311
  br label %4317

4317:                                             ; preds = %4316
  %4318 = load i32, ptr %19, align 4, !tbaa !9
  %4319 = add nsw i32 %4318, 1
  store i32 %4319, ptr %19, align 4, !tbaa !9
  br label %4298, !llvm.loop !103

4320:                                             ; preds = %4298
  br label %4709

4321:                                             ; preds = %3916
  %4322 = load ptr, ptr %11, align 8, !tbaa !5
  %4323 = load i32, ptr %4322, align 4, !tbaa !9
  %4324 = sub nsw i32 %4323, 1
  store i32 %4324, ptr %14, align 4, !tbaa !9
  %4325 = load i32, ptr %21, align 4, !tbaa !9
  store i32 %4325, ptr %19, align 4, !tbaa !9
  br label %4326

4326:                                             ; preds = %4335, %4321
  %4327 = load i32, ptr %19, align 4, !tbaa !9
  %4328 = load i32, ptr %14, align 4, !tbaa !9
  %4329 = icmp sle i32 %4327, %4328
  br i1 %4329, label %4330, label %4338

4330:                                             ; preds = %4326
  %4331 = load ptr, ptr %13, align 8, !tbaa !5
  %4332 = load i32, ptr %19, align 4, !tbaa !9
  %4333 = sext i32 %4332 to i64
  %4334 = getelementptr inbounds double, ptr %4331, i64 %4333
  store double 0.000000e+00, ptr %4334, align 8, !tbaa !11
  br label %4335

4335:                                             ; preds = %4330
  %4336 = load i32, ptr %19, align 4, !tbaa !9
  %4337 = add nsw i32 %4336, 1
  store i32 %4337, ptr %19, align 4, !tbaa !9
  br label %4326, !llvm.loop !104

4338:                                             ; preds = %4326
  %4339 = load ptr, ptr %12, align 8, !tbaa !5
  %4340 = getelementptr inbounds %struct.doublecomplex, ptr %4339, i64 0
  %4341 = getelementptr inbounds %struct.doublecomplex, ptr %4340, i32 0, i32 0
  %4342 = load double, ptr %4341, align 8, !tbaa !13
  store double %4342, ptr %17, align 8, !tbaa !11
  %4343 = load double, ptr %17, align 8, !tbaa !11
  %4344 = fcmp oge double %4343, 0.000000e+00
  br i1 %4344, label %4345, label %4347

4345:                                             ; preds = %4338
  %4346 = load double, ptr %17, align 8, !tbaa !11
  br label %4350

4347:                                             ; preds = %4338
  %4348 = load double, ptr %17, align 8, !tbaa !11
  %4349 = fneg double %4348
  br label %4350

4350:                                             ; preds = %4347, %4345
  %4351 = phi double [ %4346, %4345 ], [ %4349, %4347 ]
  store double %4351, ptr %23, align 8, !tbaa !11
  %4352 = load i32, ptr %21, align 4, !tbaa !9
  %4353 = sub nsw i32 %4352, 1
  store i32 %4353, ptr %14, align 4, !tbaa !9
  store i32 1, ptr %19, align 4, !tbaa !9
  br label %4354

4354:                                             ; preds = %4385, %4350
  %4355 = load i32, ptr %19, align 4, !tbaa !9
  %4356 = load i32, ptr %14, align 4, !tbaa !9
  %4357 = icmp sle i32 %4355, %4356
  br i1 %4357, label %4358, label %4388

4358:                                             ; preds = %4354
  %4359 = load ptr, ptr %12, align 8, !tbaa !5
  %4360 = load i32, ptr %19, align 4, !tbaa !9
  %4361 = sext i32 %4360 to i64
  %4362 = getelementptr inbounds %struct.doublecomplex, ptr %4359, i64 %4361
  %4363 = call { double, double } @Cd(ptr noundef %4362)
  %4364 = extractvalue { double, double } %4363, 0
  %4365 = extractvalue { double, double } %4363, 1
  %4366 = getelementptr inbounds { double, double }, ptr %84, i32 0, i32 0
  %4367 = getelementptr inbounds { double, double }, ptr %84, i32 0, i32 1
  store double %4364, ptr %4366, align 8
  store double %4365, ptr %4367, align 8
  %4368 = getelementptr inbounds { double, double }, ptr %84, i32 0, i32 0
  %4369 = load double, ptr %4368, align 8
  %4370 = getelementptr inbounds { double, double }, ptr %84, i32 0, i32 1
  %4371 = load double, ptr %4370, align 8
  %4372 = call double @cabs(double noundef %4369, double noundef %4371) #6
  store double %4372, ptr %27, align 8, !tbaa !11
  %4373 = load double, ptr %27, align 8, !tbaa !11
  %4374 = load ptr, ptr %13, align 8, !tbaa !5
  %4375 = load i32, ptr %19, align 4, !tbaa !9
  %4376 = load i32, ptr %21, align 4, !tbaa !9
  %4377 = add nsw i32 %4375, %4376
  %4378 = sext i32 %4377 to i64
  %4379 = getelementptr inbounds double, ptr %4374, i64 %4378
  %4380 = load double, ptr %4379, align 8, !tbaa !11
  %4381 = fadd double %4380, %4373
  store double %4381, ptr %4379, align 8, !tbaa !11
  %4382 = load double, ptr %27, align 8, !tbaa !11
  %4383 = load double, ptr %23, align 8, !tbaa !11
  %4384 = fadd double %4383, %4382
  store double %4384, ptr %23, align 8, !tbaa !11
  br label %4385

4385:                                             ; preds = %4358
  %4386 = load i32, ptr %19, align 4, !tbaa !9
  %4387 = add nsw i32 %4386, 1
  store i32 %4387, ptr %19, align 4, !tbaa !9
  br label %4354, !llvm.loop !105

4388:                                             ; preds = %4354
  %4389 = load double, ptr %23, align 8, !tbaa !11
  %4390 = load ptr, ptr %13, align 8, !tbaa !5
  %4391 = load i32, ptr %21, align 4, !tbaa !9
  %4392 = sext i32 %4391 to i64
  %4393 = getelementptr inbounds double, ptr %4390, i64 %4392
  %4394 = load double, ptr %4393, align 8, !tbaa !11
  %4395 = fadd double %4394, %4389
  store double %4395, ptr %4393, align 8, !tbaa !11
  %4396 = load i32, ptr %21, align 4, !tbaa !9
  %4397 = sub nsw i32 %4396, 1
  store i32 %4397, ptr %14, align 4, !tbaa !9
  store i32 1, ptr %20, align 4, !tbaa !9
  br label %4398

4398:                                             ; preds = %4549, %4388
  %4399 = load i32, ptr %20, align 4, !tbaa !9
  %4400 = load i32, ptr %14, align 4, !tbaa !9
  %4401 = icmp sle i32 %4399, %4400
  br i1 %4401, label %4402, label %4552

4402:                                             ; preds = %4398
  store double 0.000000e+00, ptr %23, align 8, !tbaa !11
  %4403 = load i32, ptr %20, align 4, !tbaa !9
  %4404 = sub nsw i32 %4403, 2
  store i32 %4404, ptr %15, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %4405

4405:                                             ; preds = %4438, %4402
  %4406 = load i32, ptr %19, align 4, !tbaa !9
  %4407 = load i32, ptr %15, align 4, !tbaa !9
  %4408 = icmp sle i32 %4406, %4407
  br i1 %4408, label %4409, label %4441

4409:                                             ; preds = %4405
  %4410 = load ptr, ptr %12, align 8, !tbaa !5
  %4411 = load i32, ptr %19, align 4, !tbaa !9
  %4412 = load i32, ptr %20, align 4, !tbaa !9
  %4413 = load i32, ptr %28, align 4, !tbaa !9
  %4414 = mul nsw i32 %4412, %4413
  %4415 = add nsw i32 %4411, %4414
  %4416 = sext i32 %4415 to i64
  %4417 = getelementptr inbounds %struct.doublecomplex, ptr %4410, i64 %4416
  %4418 = call { double, double } @Cd(ptr noundef %4417)
  %4419 = extractvalue { double, double } %4418, 0
  %4420 = extractvalue { double, double } %4418, 1
  %4421 = getelementptr inbounds { double, double }, ptr %85, i32 0, i32 0
  %4422 = getelementptr inbounds { double, double }, ptr %85, i32 0, i32 1
  store double %4419, ptr %4421, align 8
  store double %4420, ptr %4422, align 8
  %4423 = getelementptr inbounds { double, double }, ptr %85, i32 0, i32 0
  %4424 = load double, ptr %4423, align 8
  %4425 = getelementptr inbounds { double, double }, ptr %85, i32 0, i32 1
  %4426 = load double, ptr %4425, align 8
  %4427 = call double @cabs(double noundef %4424, double noundef %4426) #6
  store double %4427, ptr %27, align 8, !tbaa !11
  %4428 = load double, ptr %27, align 8, !tbaa !11
  %4429 = load ptr, ptr %13, align 8, !tbaa !5
  %4430 = load i32, ptr %19, align 4, !tbaa !9
  %4431 = sext i32 %4430 to i64
  %4432 = getelementptr inbounds double, ptr %4429, i64 %4431
  %4433 = load double, ptr %4432, align 8, !tbaa !11
  %4434 = fadd double %4433, %4428
  store double %4434, ptr %4432, align 8, !tbaa !11
  %4435 = load double, ptr %27, align 8, !tbaa !11
  %4436 = load double, ptr %23, align 8, !tbaa !11
  %4437 = fadd double %4436, %4435
  store double %4437, ptr %23, align 8, !tbaa !11
  br label %4438

4438:                                             ; preds = %4409
  %4439 = load i32, ptr %19, align 4, !tbaa !9
  %4440 = add nsw i32 %4439, 1
  store i32 %4440, ptr %19, align 4, !tbaa !9
  br label %4405, !llvm.loop !106

4441:                                             ; preds = %4405
  %4442 = load i32, ptr %19, align 4, !tbaa !9
  %4443 = load i32, ptr %20, align 4, !tbaa !9
  %4444 = load i32, ptr %28, align 4, !tbaa !9
  %4445 = mul nsw i32 %4443, %4444
  %4446 = add nsw i32 %4442, %4445
  store i32 %4446, ptr %15, align 4, !tbaa !9
  %4447 = load ptr, ptr %12, align 8, !tbaa !5
  %4448 = load i32, ptr %15, align 4, !tbaa !9
  %4449 = sext i32 %4448 to i64
  %4450 = getelementptr inbounds %struct.doublecomplex, ptr %4447, i64 %4449
  %4451 = getelementptr inbounds %struct.doublecomplex, ptr %4450, i32 0, i32 0
  %4452 = load double, ptr %4451, align 8, !tbaa !13
  store double %4452, ptr %17, align 8, !tbaa !11
  %4453 = load double, ptr %17, align 8, !tbaa !11
  %4454 = fcmp oge double %4453, 0.000000e+00
  br i1 %4454, label %4455, label %4457

4455:                                             ; preds = %4441
  %4456 = load double, ptr %17, align 8, !tbaa !11
  br label %4460

4457:                                             ; preds = %4441
  %4458 = load double, ptr %17, align 8, !tbaa !11
  %4459 = fneg double %4458
  br label %4460

4460:                                             ; preds = %4457, %4455
  %4461 = phi double [ %4456, %4455 ], [ %4459, %4457 ]
  store double %4461, ptr %27, align 8, !tbaa !11
  %4462 = load double, ptr %27, align 8, !tbaa !11
  %4463 = load double, ptr %23, align 8, !tbaa !11
  %4464 = fadd double %4463, %4462
  store double %4464, ptr %23, align 8, !tbaa !11
  %4465 = load double, ptr %23, align 8, !tbaa !11
  %4466 = load ptr, ptr %13, align 8, !tbaa !5
  %4467 = load i32, ptr %20, align 4, !tbaa !9
  %4468 = sub nsw i32 %4467, 1
  %4469 = sext i32 %4468 to i64
  %4470 = getelementptr inbounds double, ptr %4466, i64 %4469
  store double %4465, ptr %4470, align 8, !tbaa !11
  %4471 = load i32, ptr %19, align 4, !tbaa !9
  %4472 = add nsw i32 %4471, 1
  store i32 %4472, ptr %19, align 4, !tbaa !9
  %4473 = load i32, ptr %19, align 4, !tbaa !9
  %4474 = load i32, ptr %20, align 4, !tbaa !9
  %4475 = load i32, ptr %28, align 4, !tbaa !9
  %4476 = mul nsw i32 %4474, %4475
  %4477 = add nsw i32 %4473, %4476
  store i32 %4477, ptr %15, align 4, !tbaa !9
  %4478 = load ptr, ptr %12, align 8, !tbaa !5
  %4479 = load i32, ptr %15, align 4, !tbaa !9
  %4480 = sext i32 %4479 to i64
  %4481 = getelementptr inbounds %struct.doublecomplex, ptr %4478, i64 %4480
  %4482 = getelementptr inbounds %struct.doublecomplex, ptr %4481, i32 0, i32 0
  %4483 = load double, ptr %4482, align 8, !tbaa !13
  store double %4483, ptr %17, align 8, !tbaa !11
  %4484 = load double, ptr %17, align 8, !tbaa !11
  %4485 = fcmp oge double %4484, 0.000000e+00
  br i1 %4485, label %4486, label %4488

4486:                                             ; preds = %4460
  %4487 = load double, ptr %17, align 8, !tbaa !11
  br label %4491

4488:                                             ; preds = %4460
  %4489 = load double, ptr %17, align 8, !tbaa !11
  %4490 = fneg double %4489
  br label %4491

4491:                                             ; preds = %4488, %4486
  %4492 = phi double [ %4487, %4486 ], [ %4490, %4488 ]
  store double %4492, ptr %27, align 8, !tbaa !11
  %4493 = load double, ptr %27, align 8, !tbaa !11
  store double %4493, ptr %23, align 8, !tbaa !11
  %4494 = load ptr, ptr %11, align 8, !tbaa !5
  %4495 = load i32, ptr %4494, align 4, !tbaa !9
  %4496 = sub nsw i32 %4495, 1
  store i32 %4496, ptr %15, align 4, !tbaa !9
  %4497 = load i32, ptr %21, align 4, !tbaa !9
  %4498 = load i32, ptr %20, align 4, !tbaa !9
  %4499 = add nsw i32 %4497, %4498
  %4500 = add nsw i32 %4499, 1
  store i32 %4500, ptr %22, align 4, !tbaa !9
  br label %4501

4501:                                             ; preds = %4536, %4491
  %4502 = load i32, ptr %22, align 4, !tbaa !9
  %4503 = load i32, ptr %15, align 4, !tbaa !9
  %4504 = icmp sle i32 %4502, %4503
  br i1 %4504, label %4505, label %4539

4505:                                             ; preds = %4501
  %4506 = load i32, ptr %19, align 4, !tbaa !9
  %4507 = add nsw i32 %4506, 1
  store i32 %4507, ptr %19, align 4, !tbaa !9
  %4508 = load ptr, ptr %12, align 8, !tbaa !5
  %4509 = load i32, ptr %19, align 4, !tbaa !9
  %4510 = load i32, ptr %20, align 4, !tbaa !9
  %4511 = load i32, ptr %28, align 4, !tbaa !9
  %4512 = mul nsw i32 %4510, %4511
  %4513 = add nsw i32 %4509, %4512
  %4514 = sext i32 %4513 to i64
  %4515 = getelementptr inbounds %struct.doublecomplex, ptr %4508, i64 %4514
  %4516 = call { double, double } @Cd(ptr noundef %4515)
  %4517 = extractvalue { double, double } %4516, 0
  %4518 = extractvalue { double, double } %4516, 1
  %4519 = getelementptr inbounds { double, double }, ptr %86, i32 0, i32 0
  %4520 = getelementptr inbounds { double, double }, ptr %86, i32 0, i32 1
  store double %4517, ptr %4519, align 8
  store double %4518, ptr %4520, align 8
  %4521 = getelementptr inbounds { double, double }, ptr %86, i32 0, i32 0
  %4522 = load double, ptr %4521, align 8
  %4523 = getelementptr inbounds { double, double }, ptr %86, i32 0, i32 1
  %4524 = load double, ptr %4523, align 8
  %4525 = call double @cabs(double noundef %4522, double noundef %4524) #6
  store double %4525, ptr %27, align 8, !tbaa !11
  %4526 = load double, ptr %27, align 8, !tbaa !11
  %4527 = load double, ptr %23, align 8, !tbaa !11
  %4528 = fadd double %4527, %4526
  store double %4528, ptr %23, align 8, !tbaa !11
  %4529 = load double, ptr %27, align 8, !tbaa !11
  %4530 = load ptr, ptr %13, align 8, !tbaa !5
  %4531 = load i32, ptr %22, align 4, !tbaa !9
  %4532 = sext i32 %4531 to i64
  %4533 = getelementptr inbounds double, ptr %4530, i64 %4532
  %4534 = load double, ptr %4533, align 8, !tbaa !11
  %4535 = fadd double %4534, %4529
  store double %4535, ptr %4533, align 8, !tbaa !11
  br label %4536

4536:                                             ; preds = %4505
  %4537 = load i32, ptr %22, align 4, !tbaa !9
  %4538 = add nsw i32 %4537, 1
  store i32 %4538, ptr %22, align 4, !tbaa !9
  br label %4501, !llvm.loop !107

4539:                                             ; preds = %4501
  %4540 = load double, ptr %23, align 8, !tbaa !11
  %4541 = load ptr, ptr %13, align 8, !tbaa !5
  %4542 = load i32, ptr %21, align 4, !tbaa !9
  %4543 = load i32, ptr %20, align 4, !tbaa !9
  %4544 = add nsw i32 %4542, %4543
  %4545 = sext i32 %4544 to i64
  %4546 = getelementptr inbounds double, ptr %4541, i64 %4545
  %4547 = load double, ptr %4546, align 8, !tbaa !11
  %4548 = fadd double %4547, %4540
  store double %4548, ptr %4546, align 8, !tbaa !11
  br label %4549

4549:                                             ; preds = %4539
  %4550 = load i32, ptr %20, align 4, !tbaa !9
  %4551 = add nsw i32 %4550, 1
  store i32 %4551, ptr %20, align 4, !tbaa !9
  br label %4398, !llvm.loop !108

4552:                                             ; preds = %4398
  store double 0.000000e+00, ptr %23, align 8, !tbaa !11
  %4553 = load i32, ptr %21, align 4, !tbaa !9
  %4554 = sub nsw i32 %4553, 2
  store i32 %4554, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %4555

4555:                                             ; preds = %4588, %4552
  %4556 = load i32, ptr %19, align 4, !tbaa !9
  %4557 = load i32, ptr %14, align 4, !tbaa !9
  %4558 = icmp sle i32 %4556, %4557
  br i1 %4558, label %4559, label %4591

4559:                                             ; preds = %4555
  %4560 = load ptr, ptr %12, align 8, !tbaa !5
  %4561 = load i32, ptr %19, align 4, !tbaa !9
  %4562 = load i32, ptr %20, align 4, !tbaa !9
  %4563 = load i32, ptr %28, align 4, !tbaa !9
  %4564 = mul nsw i32 %4562, %4563
  %4565 = add nsw i32 %4561, %4564
  %4566 = sext i32 %4565 to i64
  %4567 = getelementptr inbounds %struct.doublecomplex, ptr %4560, i64 %4566
  %4568 = call { double, double } @Cd(ptr noundef %4567)
  %4569 = extractvalue { double, double } %4568, 0
  %4570 = extractvalue { double, double } %4568, 1
  %4571 = getelementptr inbounds { double, double }, ptr %87, i32 0, i32 0
  %4572 = getelementptr inbounds { double, double }, ptr %87, i32 0, i32 1
  store double %4569, ptr %4571, align 8
  store double %4570, ptr %4572, align 8
  %4573 = getelementptr inbounds { double, double }, ptr %87, i32 0, i32 0
  %4574 = load double, ptr %4573, align 8
  %4575 = getelementptr inbounds { double, double }, ptr %87, i32 0, i32 1
  %4576 = load double, ptr %4575, align 8
  %4577 = call double @cabs(double noundef %4574, double noundef %4576) #6
  store double %4577, ptr %27, align 8, !tbaa !11
  %4578 = load double, ptr %27, align 8, !tbaa !11
  %4579 = load ptr, ptr %13, align 8, !tbaa !5
  %4580 = load i32, ptr %19, align 4, !tbaa !9
  %4581 = sext i32 %4580 to i64
  %4582 = getelementptr inbounds double, ptr %4579, i64 %4581
  %4583 = load double, ptr %4582, align 8, !tbaa !11
  %4584 = fadd double %4583, %4578
  store double %4584, ptr %4582, align 8, !tbaa !11
  %4585 = load double, ptr %27, align 8, !tbaa !11
  %4586 = load double, ptr %23, align 8, !tbaa !11
  %4587 = fadd double %4586, %4585
  store double %4587, ptr %23, align 8, !tbaa !11
  br label %4588

4588:                                             ; preds = %4559
  %4589 = load i32, ptr %19, align 4, !tbaa !9
  %4590 = add nsw i32 %4589, 1
  store i32 %4590, ptr %19, align 4, !tbaa !9
  br label %4555, !llvm.loop !109

4591:                                             ; preds = %4555
  %4592 = load i32, ptr %19, align 4, !tbaa !9
  %4593 = load i32, ptr %20, align 4, !tbaa !9
  %4594 = load i32, ptr %28, align 4, !tbaa !9
  %4595 = mul nsw i32 %4593, %4594
  %4596 = add nsw i32 %4592, %4595
  store i32 %4596, ptr %14, align 4, !tbaa !9
  %4597 = load ptr, ptr %12, align 8, !tbaa !5
  %4598 = load i32, ptr %14, align 4, !tbaa !9
  %4599 = sext i32 %4598 to i64
  %4600 = getelementptr inbounds %struct.doublecomplex, ptr %4597, i64 %4599
  %4601 = getelementptr inbounds %struct.doublecomplex, ptr %4600, i32 0, i32 0
  %4602 = load double, ptr %4601, align 8, !tbaa !13
  store double %4602, ptr %17, align 8, !tbaa !11
  %4603 = load double, ptr %17, align 8, !tbaa !11
  %4604 = fcmp oge double %4603, 0.000000e+00
  br i1 %4604, label %4605, label %4607

4605:                                             ; preds = %4591
  %4606 = load double, ptr %17, align 8, !tbaa !11
  br label %4610

4607:                                             ; preds = %4591
  %4608 = load double, ptr %17, align 8, !tbaa !11
  %4609 = fneg double %4608
  br label %4610

4610:                                             ; preds = %4607, %4605
  %4611 = phi double [ %4606, %4605 ], [ %4609, %4607 ]
  store double %4611, ptr %27, align 8, !tbaa !11
  %4612 = load double, ptr %27, align 8, !tbaa !11
  %4613 = load double, ptr %23, align 8, !tbaa !11
  %4614 = fadd double %4613, %4612
  store double %4614, ptr %23, align 8, !tbaa !11
  %4615 = load double, ptr %23, align 8, !tbaa !11
  %4616 = load ptr, ptr %13, align 8, !tbaa !5
  %4617 = load i32, ptr %19, align 4, !tbaa !9
  %4618 = sext i32 %4617 to i64
  %4619 = getelementptr inbounds double, ptr %4616, i64 %4618
  store double %4615, ptr %4619, align 8, !tbaa !11
  %4620 = load ptr, ptr %11, align 8, !tbaa !5
  %4621 = load i32, ptr %4620, align 4, !tbaa !9
  store i32 %4621, ptr %14, align 4, !tbaa !9
  %4622 = load i32, ptr %21, align 4, !tbaa !9
  %4623 = add nsw i32 %4622, 1
  store i32 %4623, ptr %20, align 4, !tbaa !9
  br label %4624

4624:                                             ; preds = %4676, %4610
  %4625 = load i32, ptr %20, align 4, !tbaa !9
  %4626 = load i32, ptr %14, align 4, !tbaa !9
  %4627 = icmp sle i32 %4625, %4626
  br i1 %4627, label %4628, label %4679

4628:                                             ; preds = %4624
  store double 0.000000e+00, ptr %23, align 8, !tbaa !11
  %4629 = load i32, ptr %21, align 4, !tbaa !9
  %4630 = sub nsw i32 %4629, 1
  store i32 %4630, ptr %15, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %4631

4631:                                             ; preds = %4664, %4628
  %4632 = load i32, ptr %19, align 4, !tbaa !9
  %4633 = load i32, ptr %15, align 4, !tbaa !9
  %4634 = icmp sle i32 %4632, %4633
  br i1 %4634, label %4635, label %4667

4635:                                             ; preds = %4631
  %4636 = load ptr, ptr %12, align 8, !tbaa !5
  %4637 = load i32, ptr %19, align 4, !tbaa !9
  %4638 = load i32, ptr %20, align 4, !tbaa !9
  %4639 = load i32, ptr %28, align 4, !tbaa !9
  %4640 = mul nsw i32 %4638, %4639
  %4641 = add nsw i32 %4637, %4640
  %4642 = sext i32 %4641 to i64
  %4643 = getelementptr inbounds %struct.doublecomplex, ptr %4636, i64 %4642
  %4644 = call { double, double } @Cd(ptr noundef %4643)
  %4645 = extractvalue { double, double } %4644, 0
  %4646 = extractvalue { double, double } %4644, 1
  %4647 = getelementptr inbounds { double, double }, ptr %88, i32 0, i32 0
  %4648 = getelementptr inbounds { double, double }, ptr %88, i32 0, i32 1
  store double %4645, ptr %4647, align 8
  store double %4646, ptr %4648, align 8
  %4649 = getelementptr inbounds { double, double }, ptr %88, i32 0, i32 0
  %4650 = load double, ptr %4649, align 8
  %4651 = getelementptr inbounds { double, double }, ptr %88, i32 0, i32 1
  %4652 = load double, ptr %4651, align 8
  %4653 = call double @cabs(double noundef %4650, double noundef %4652) #6
  store double %4653, ptr %27, align 8, !tbaa !11
  %4654 = load double, ptr %27, align 8, !tbaa !11
  %4655 = load ptr, ptr %13, align 8, !tbaa !5
  %4656 = load i32, ptr %19, align 4, !tbaa !9
  %4657 = sext i32 %4656 to i64
  %4658 = getelementptr inbounds double, ptr %4655, i64 %4657
  %4659 = load double, ptr %4658, align 8, !tbaa !11
  %4660 = fadd double %4659, %4654
  store double %4660, ptr %4658, align 8, !tbaa !11
  %4661 = load double, ptr %27, align 8, !tbaa !11
  %4662 = load double, ptr %23, align 8, !tbaa !11
  %4663 = fadd double %4662, %4661
  store double %4663, ptr %23, align 8, !tbaa !11
  br label %4664

4664:                                             ; preds = %4635
  %4665 = load i32, ptr %19, align 4, !tbaa !9
  %4666 = add nsw i32 %4665, 1
  store i32 %4666, ptr %19, align 4, !tbaa !9
  br label %4631, !llvm.loop !110

4667:                                             ; preds = %4631
  %4668 = load double, ptr %23, align 8, !tbaa !11
  %4669 = load ptr, ptr %13, align 8, !tbaa !5
  %4670 = load i32, ptr %20, align 4, !tbaa !9
  %4671 = sub nsw i32 %4670, 1
  %4672 = sext i32 %4671 to i64
  %4673 = getelementptr inbounds double, ptr %4669, i64 %4672
  %4674 = load double, ptr %4673, align 8, !tbaa !11
  %4675 = fadd double %4674, %4668
  store double %4675, ptr %4673, align 8, !tbaa !11
  br label %4676

4676:                                             ; preds = %4667
  %4677 = load i32, ptr %20, align 4, !tbaa !9
  %4678 = add nsw i32 %4677, 1
  store i32 %4678, ptr %20, align 4, !tbaa !9
  br label %4624, !llvm.loop !111

4679:                                             ; preds = %4624
  %4680 = load ptr, ptr %13, align 8, !tbaa !5
  %4681 = getelementptr inbounds double, ptr %4680, i64 0
  %4682 = load double, ptr %4681, align 8, !tbaa !11
  store double %4682, ptr %25, align 8, !tbaa !11
  %4683 = load ptr, ptr %11, align 8, !tbaa !5
  %4684 = load i32, ptr %4683, align 4, !tbaa !9
  %4685 = sub nsw i32 %4684, 1
  store i32 %4685, ptr %14, align 4, !tbaa !9
  store i32 1, ptr %19, align 4, !tbaa !9
  br label %4686

4686:                                             ; preds = %4705, %4679
  %4687 = load i32, ptr %19, align 4, !tbaa !9
  %4688 = load i32, ptr %14, align 4, !tbaa !9
  %4689 = icmp sle i32 %4687, %4688
  br i1 %4689, label %4690, label %4708

4690:                                             ; preds = %4686
  %4691 = load ptr, ptr %13, align 8, !tbaa !5
  %4692 = load i32, ptr %19, align 4, !tbaa !9
  %4693 = sext i32 %4692 to i64
  %4694 = getelementptr inbounds double, ptr %4691, i64 %4693
  %4695 = load double, ptr %4694, align 8, !tbaa !11
  store double %4695, ptr %18, align 8, !tbaa !11
  %4696 = load double, ptr %25, align 8, !tbaa !11
  %4697 = load double, ptr %18, align 8, !tbaa !11
  %4698 = fcmp olt double %4696, %4697
  br i1 %4698, label %4702, label %4699

4699:                                             ; preds = %4690
  %4700 = call i32 @disnan_(ptr noundef %18)
  %4701 = icmp ne i32 %4700, 0
  br i1 %4701, label %4702, label %4704

4702:                                             ; preds = %4699, %4690
  %4703 = load double, ptr %18, align 8, !tbaa !11
  store double %4703, ptr %25, align 8, !tbaa !11
  br label %4704

4704:                                             ; preds = %4702, %4699
  br label %4705

4705:                                             ; preds = %4704
  %4706 = load i32, ptr %19, align 4, !tbaa !9
  %4707 = add nsw i32 %4706, 1
  store i32 %4707, ptr %19, align 4, !tbaa !9
  br label %4686, !llvm.loop !112

4708:                                             ; preds = %4686
  br label %4709

4709:                                             ; preds = %4708, %4320
  br label %4710

4710:                                             ; preds = %4709, %3915
  br label %4711

4711:                                             ; preds = %4710, %3242
  br label %6155

4712:                                             ; preds = %2381
  %4713 = load ptr, ptr %8, align 8, !tbaa !5
  %4714 = call i32 @lsame_(ptr noundef %4713, ptr noundef @.str.5)
  %4715 = icmp ne i32 %4714, 0
  br i1 %4715, label %4720, label %4716

4716:                                             ; preds = %4712
  %4717 = load ptr, ptr %8, align 8, !tbaa !5
  %4718 = call i32 @lsame_(ptr noundef %4717, ptr noundef @.str.6)
  %4719 = icmp ne i32 %4718, 0
  br i1 %4719, label %4720, label %6154

4720:                                             ; preds = %4716, %4712
  %4721 = load ptr, ptr %11, align 8, !tbaa !5
  %4722 = load i32, ptr %4721, align 4, !tbaa !9
  %4723 = add nsw i32 %4722, 1
  %4724 = sdiv i32 %4723, 2
  store i32 %4724, ptr %21, align 4, !tbaa !9
  store double 0.000000e+00, ptr %24, align 8, !tbaa !11
  store double 1.000000e+00, ptr %23, align 8, !tbaa !11
  %4725 = load i32, ptr %30, align 4, !tbaa !9
  %4726 = icmp eq i32 %4725, 1
  br i1 %4726, label %4727, label %5438

4727:                                             ; preds = %4720
  %4728 = load i32, ptr %29, align 4, !tbaa !9
  %4729 = icmp eq i32 %4728, 1
  br i1 %4729, label %4730, label %5062

4730:                                             ; preds = %4727
  %4731 = load i32, ptr %31, align 4, !tbaa !9
  %4732 = icmp eq i32 %4731, 0
  br i1 %4732, label %4733, label %4901

4733:                                             ; preds = %4730
  %4734 = load i32, ptr %21, align 4, !tbaa !9
  %4735 = sub nsw i32 %4734, 3
  store i32 %4735, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %4736

4736:                                             ; preds = %4756, %4733
  %4737 = load i32, ptr %20, align 4, !tbaa !9
  %4738 = load i32, ptr %14, align 4, !tbaa !9
  %4739 = icmp sle i32 %4737, %4738
  br i1 %4739, label %4740, label %4759

4740:                                             ; preds = %4736
  %4741 = load i32, ptr %21, align 4, !tbaa !9
  %4742 = load i32, ptr %20, align 4, !tbaa !9
  %4743 = sub nsw i32 %4741, %4742
  %4744 = sub nsw i32 %4743, 2
  store i32 %4744, ptr %15, align 4, !tbaa !9
  %4745 = load ptr, ptr %12, align 8, !tbaa !5
  %4746 = load i32, ptr %21, align 4, !tbaa !9
  %4747 = load i32, ptr %20, align 4, !tbaa !9
  %4748 = add nsw i32 %4746, %4747
  %4749 = add nsw i32 %4748, 1
  %4750 = load i32, ptr %20, align 4, !tbaa !9
  %4751 = load i32, ptr %28, align 4, !tbaa !9
  %4752 = mul nsw i32 %4750, %4751
  %4753 = add nsw i32 %4749, %4752
  %4754 = sext i32 %4753 to i64
  %4755 = getelementptr inbounds %struct.doublecomplex, ptr %4745, i64 %4754
  call void @zlassq_(ptr noundef %15, ptr noundef %4755, ptr noundef @c__1, ptr noundef %24, ptr noundef %23)
  br label %4756

4756:                                             ; preds = %4740
  %4757 = load i32, ptr %20, align 4, !tbaa !9
  %4758 = add nsw i32 %4757, 1
  store i32 %4758, ptr %20, align 4, !tbaa !9
  br label %4736, !llvm.loop !113

4759:                                             ; preds = %4736
  %4760 = load i32, ptr %21, align 4, !tbaa !9
  %4761 = sub nsw i32 %4760, 1
  store i32 %4761, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %4762

4762:                                             ; preds = %4777, %4759
  %4763 = load i32, ptr %20, align 4, !tbaa !9
  %4764 = load i32, ptr %14, align 4, !tbaa !9
  %4765 = icmp sle i32 %4763, %4764
  br i1 %4765, label %4766, label %4780

4766:                                             ; preds = %4762
  %4767 = load i32, ptr %21, align 4, !tbaa !9
  %4768 = load i32, ptr %20, align 4, !tbaa !9
  %4769 = add nsw i32 %4767, %4768
  %4770 = sub nsw i32 %4769, 1
  store i32 %4770, ptr %15, align 4, !tbaa !9
  %4771 = load ptr, ptr %12, align 8, !tbaa !5
  %4772 = load i32, ptr %20, align 4, !tbaa !9
  %4773 = load i32, ptr %28, align 4, !tbaa !9
  %4774 = mul nsw i32 %4772, %4773
  %4775 = sext i32 %4774 to i64
  %4776 = getelementptr inbounds %struct.doublecomplex, ptr %4771, i64 %4775
  call void @zlassq_(ptr noundef %15, ptr noundef %4776, ptr noundef @c__1, ptr noundef %24, ptr noundef %23)
  br label %4777

4777:                                             ; preds = %4766
  %4778 = load i32, ptr %20, align 4, !tbaa !9
  %4779 = add nsw i32 %4778, 1
  store i32 %4779, ptr %20, align 4, !tbaa !9
  br label %4762, !llvm.loop !114

4780:                                             ; preds = %4762
  %4781 = load double, ptr %23, align 8, !tbaa !11
  %4782 = load double, ptr %23, align 8, !tbaa !11
  %4783 = fadd double %4782, %4781
  store double %4783, ptr %23, align 8, !tbaa !11
  %4784 = load i32, ptr %21, align 4, !tbaa !9
  %4785 = sub nsw i32 %4784, 1
  store i32 %4785, ptr %22, align 4, !tbaa !9
  %4786 = load i32, ptr %21, align 4, !tbaa !9
  %4787 = sub nsw i32 %4786, 2
  store i32 %4787, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %4788

4788:                                             ; preds = %4864, %4780
  %4789 = load i32, ptr %19, align 4, !tbaa !9
  %4790 = load i32, ptr %14, align 4, !tbaa !9
  %4791 = icmp sle i32 %4789, %4790
  br i1 %4791, label %4792, label %4867

4792:                                             ; preds = %4788
  %4793 = load i32, ptr %22, align 4, !tbaa !9
  store i32 %4793, ptr %15, align 4, !tbaa !9
  %4794 = load ptr, ptr %12, align 8, !tbaa !5
  %4795 = load i32, ptr %15, align 4, !tbaa !9
  %4796 = sext i32 %4795 to i64
  %4797 = getelementptr inbounds %struct.doublecomplex, ptr %4794, i64 %4796
  %4798 = getelementptr inbounds %struct.doublecomplex, ptr %4797, i32 0, i32 0
  %4799 = load double, ptr %4798, align 8, !tbaa !13
  store double %4799, ptr %27, align 8, !tbaa !11
  %4800 = load double, ptr %27, align 8, !tbaa !11
  %4801 = fcmp une double %4800, 0.000000e+00
  br i1 %4801, label %4802, label %4825

4802:                                             ; preds = %4792
  %4803 = load double, ptr %24, align 8, !tbaa !11
  %4804 = load double, ptr %27, align 8, !tbaa !11
  %4805 = fcmp olt double %4803, %4804
  br i1 %4805, label %4806, label %4816

4806:                                             ; preds = %4802
  %4807 = load double, ptr %24, align 8, !tbaa !11
  %4808 = load double, ptr %27, align 8, !tbaa !11
  %4809 = fdiv double %4807, %4808
  store double %4809, ptr %17, align 8, !tbaa !11
  %4810 = load double, ptr %23, align 8, !tbaa !11
  %4811 = load double, ptr %17, align 8, !tbaa !11
  %4812 = load double, ptr %17, align 8, !tbaa !11
  %4813 = fmul double %4811, %4812
  %4814 = call double @llvm.fmuladd.f64(double %4810, double %4813, double 1.000000e+00)
  store double %4814, ptr %23, align 8, !tbaa !11
  %4815 = load double, ptr %27, align 8, !tbaa !11
  store double %4815, ptr %24, align 8, !tbaa !11
  br label %4824

4816:                                             ; preds = %4802
  %4817 = load double, ptr %27, align 8, !tbaa !11
  %4818 = load double, ptr %24, align 8, !tbaa !11
  %4819 = fdiv double %4817, %4818
  store double %4819, ptr %17, align 8, !tbaa !11
  %4820 = load double, ptr %17, align 8, !tbaa !11
  %4821 = load double, ptr %17, align 8, !tbaa !11
  %4822 = load double, ptr %23, align 8, !tbaa !11
  %4823 = call double @llvm.fmuladd.f64(double %4820, double %4821, double %4822)
  store double %4823, ptr %23, align 8, !tbaa !11
  br label %4824

4824:                                             ; preds = %4816, %4806
  br label %4825

4825:                                             ; preds = %4824, %4792
  %4826 = load i32, ptr %22, align 4, !tbaa !9
  %4827 = add nsw i32 %4826, 1
  store i32 %4827, ptr %15, align 4, !tbaa !9
  %4828 = load ptr, ptr %12, align 8, !tbaa !5
  %4829 = load i32, ptr %15, align 4, !tbaa !9
  %4830 = sext i32 %4829 to i64
  %4831 = getelementptr inbounds %struct.doublecomplex, ptr %4828, i64 %4830
  %4832 = getelementptr inbounds %struct.doublecomplex, ptr %4831, i32 0, i32 0
  %4833 = load double, ptr %4832, align 8, !tbaa !13
  store double %4833, ptr %27, align 8, !tbaa !11
  %4834 = load double, ptr %27, align 8, !tbaa !11
  %4835 = fcmp une double %4834, 0.000000e+00
  br i1 %4835, label %4836, label %4859

4836:                                             ; preds = %4825
  %4837 = load double, ptr %24, align 8, !tbaa !11
  %4838 = load double, ptr %27, align 8, !tbaa !11
  %4839 = fcmp olt double %4837, %4838
  br i1 %4839, label %4840, label %4850

4840:                                             ; preds = %4836
  %4841 = load double, ptr %24, align 8, !tbaa !11
  %4842 = load double, ptr %27, align 8, !tbaa !11
  %4843 = fdiv double %4841, %4842
  store double %4843, ptr %17, align 8, !tbaa !11
  %4844 = load double, ptr %23, align 8, !tbaa !11
  %4845 = load double, ptr %17, align 8, !tbaa !11
  %4846 = load double, ptr %17, align 8, !tbaa !11
  %4847 = fmul double %4845, %4846
  %4848 = call double @llvm.fmuladd.f64(double %4844, double %4847, double 1.000000e+00)
  store double %4848, ptr %23, align 8, !tbaa !11
  %4849 = load double, ptr %27, align 8, !tbaa !11
  store double %4849, ptr %24, align 8, !tbaa !11
  br label %4858

4850:                                             ; preds = %4836
  %4851 = load double, ptr %27, align 8, !tbaa !11
  %4852 = load double, ptr %24, align 8, !tbaa !11
  %4853 = fdiv double %4851, %4852
  store double %4853, ptr %17, align 8, !tbaa !11
  %4854 = load double, ptr %17, align 8, !tbaa !11
  %4855 = load double, ptr %17, align 8, !tbaa !11
  %4856 = load double, ptr %23, align 8, !tbaa !11
  %4857 = call double @llvm.fmuladd.f64(double %4854, double %4855, double %4856)
  store double %4857, ptr %23, align 8, !tbaa !11
  br label %4858

4858:                                             ; preds = %4850, %4840
  br label %4859

4859:                                             ; preds = %4858, %4825
  %4860 = load i32, ptr %22, align 4, !tbaa !9
  %4861 = load i32, ptr %28, align 4, !tbaa !9
  %4862 = add nsw i32 %4860, %4861
  %4863 = add nsw i32 %4862, 1
  store i32 %4863, ptr %22, align 4, !tbaa !9
  br label %4864

4864:                                             ; preds = %4859
  %4865 = load i32, ptr %19, align 4, !tbaa !9
  %4866 = add nsw i32 %4865, 1
  store i32 %4866, ptr %19, align 4, !tbaa !9
  br label %4788, !llvm.loop !115

4867:                                             ; preds = %4788
  %4868 = load i32, ptr %22, align 4, !tbaa !9
  store i32 %4868, ptr %14, align 4, !tbaa !9
  %4869 = load ptr, ptr %12, align 8, !tbaa !5
  %4870 = load i32, ptr %14, align 4, !tbaa !9
  %4871 = sext i32 %4870 to i64
  %4872 = getelementptr inbounds %struct.doublecomplex, ptr %4869, i64 %4871
  %4873 = getelementptr inbounds %struct.doublecomplex, ptr %4872, i32 0, i32 0
  %4874 = load double, ptr %4873, align 8, !tbaa !13
  store double %4874, ptr %27, align 8, !tbaa !11
  %4875 = load double, ptr %27, align 8, !tbaa !11
  %4876 = fcmp une double %4875, 0.000000e+00
  br i1 %4876, label %4877, label %4900

4877:                                             ; preds = %4867
  %4878 = load double, ptr %24, align 8, !tbaa !11
  %4879 = load double, ptr %27, align 8, !tbaa !11
  %4880 = fcmp olt double %4878, %4879
  br i1 %4880, label %4881, label %4891

4881:                                             ; preds = %4877
  %4882 = load double, ptr %24, align 8, !tbaa !11
  %4883 = load double, ptr %27, align 8, !tbaa !11
  %4884 = fdiv double %4882, %4883
  store double %4884, ptr %17, align 8, !tbaa !11
  %4885 = load double, ptr %23, align 8, !tbaa !11
  %4886 = load double, ptr %17, align 8, !tbaa !11
  %4887 = load double, ptr %17, align 8, !tbaa !11
  %4888 = fmul double %4886, %4887
  %4889 = call double @llvm.fmuladd.f64(double %4885, double %4888, double 1.000000e+00)
  store double %4889, ptr %23, align 8, !tbaa !11
  %4890 = load double, ptr %27, align 8, !tbaa !11
  store double %4890, ptr %24, align 8, !tbaa !11
  br label %4899

4891:                                             ; preds = %4877
  %4892 = load double, ptr %27, align 8, !tbaa !11
  %4893 = load double, ptr %24, align 8, !tbaa !11
  %4894 = fdiv double %4892, %4893
  store double %4894, ptr %17, align 8, !tbaa !11
  %4895 = load double, ptr %17, align 8, !tbaa !11
  %4896 = load double, ptr %17, align 8, !tbaa !11
  %4897 = load double, ptr %23, align 8, !tbaa !11
  %4898 = call double @llvm.fmuladd.f64(double %4895, double %4896, double %4897)
  store double %4898, ptr %23, align 8, !tbaa !11
  br label %4899

4899:                                             ; preds = %4891, %4881
  br label %4900

4900:                                             ; preds = %4899, %4867
  br label %5061

4901:                                             ; preds = %4730
  %4902 = load i32, ptr %21, align 4, !tbaa !9
  %4903 = sub nsw i32 %4902, 1
  store i32 %4903, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %4904

4904:                                             ; preds = %4923, %4901
  %4905 = load i32, ptr %20, align 4, !tbaa !9
  %4906 = load i32, ptr %14, align 4, !tbaa !9
  %4907 = icmp sle i32 %4905, %4906
  br i1 %4907, label %4908, label %4926

4908:                                             ; preds = %4904
  %4909 = load ptr, ptr %11, align 8, !tbaa !5
  %4910 = load i32, ptr %4909, align 4, !tbaa !9
  %4911 = load i32, ptr %20, align 4, !tbaa !9
  %4912 = sub nsw i32 %4910, %4911
  %4913 = sub nsw i32 %4912, 1
  store i32 %4913, ptr %15, align 4, !tbaa !9
  %4914 = load ptr, ptr %12, align 8, !tbaa !5
  %4915 = load i32, ptr %20, align 4, !tbaa !9
  %4916 = add nsw i32 %4915, 1
  %4917 = load i32, ptr %20, align 4, !tbaa !9
  %4918 = load i32, ptr %28, align 4, !tbaa !9
  %4919 = mul nsw i32 %4917, %4918
  %4920 = add nsw i32 %4916, %4919
  %4921 = sext i32 %4920 to i64
  %4922 = getelementptr inbounds %struct.doublecomplex, ptr %4914, i64 %4921
  call void @zlassq_(ptr noundef %15, ptr noundef %4922, ptr noundef @c__1, ptr noundef %24, ptr noundef %23)
  br label %4923

4923:                                             ; preds = %4908
  %4924 = load i32, ptr %20, align 4, !tbaa !9
  %4925 = add nsw i32 %4924, 1
  store i32 %4925, ptr %20, align 4, !tbaa !9
  br label %4904, !llvm.loop !116

4926:                                             ; preds = %4904
  %4927 = load i32, ptr %21, align 4, !tbaa !9
  %4928 = sub nsw i32 %4927, 2
  store i32 %4928, ptr %14, align 4, !tbaa !9
  store i32 1, ptr %20, align 4, !tbaa !9
  br label %4929

4929:                                             ; preds = %4941, %4926
  %4930 = load i32, ptr %20, align 4, !tbaa !9
  %4931 = load i32, ptr %14, align 4, !tbaa !9
  %4932 = icmp sle i32 %4930, %4931
  br i1 %4932, label %4933, label %4944

4933:                                             ; preds = %4929
  %4934 = load ptr, ptr %12, align 8, !tbaa !5
  %4935 = load i32, ptr %20, align 4, !tbaa !9
  %4936 = add nsw i32 %4935, 1
  %4937 = load i32, ptr %28, align 4, !tbaa !9
  %4938 = mul nsw i32 %4936, %4937
  %4939 = sext i32 %4938 to i64
  %4940 = getelementptr inbounds %struct.doublecomplex, ptr %4934, i64 %4939
  call void @zlassq_(ptr noundef %20, ptr noundef %4940, ptr noundef @c__1, ptr noundef %24, ptr noundef %23)
  br label %4941

4941:                                             ; preds = %4933
  %4942 = load i32, ptr %20, align 4, !tbaa !9
  %4943 = add nsw i32 %4942, 1
  store i32 %4943, ptr %20, align 4, !tbaa !9
  br label %4929, !llvm.loop !117

4944:                                             ; preds = %4929
  %4945 = load double, ptr %23, align 8, !tbaa !11
  %4946 = load double, ptr %23, align 8, !tbaa !11
  %4947 = fadd double %4946, %4945
  store double %4947, ptr %23, align 8, !tbaa !11
  %4948 = load ptr, ptr %12, align 8, !tbaa !5
  %4949 = getelementptr inbounds %struct.doublecomplex, ptr %4948, i64 0
  %4950 = getelementptr inbounds %struct.doublecomplex, ptr %4949, i32 0, i32 0
  %4951 = load double, ptr %4950, align 8, !tbaa !13
  store double %4951, ptr %27, align 8, !tbaa !11
  %4952 = load double, ptr %27, align 8, !tbaa !11
  %4953 = fcmp une double %4952, 0.000000e+00
  br i1 %4953, label %4954, label %4977

4954:                                             ; preds = %4944
  %4955 = load double, ptr %24, align 8, !tbaa !11
  %4956 = load double, ptr %27, align 8, !tbaa !11
  %4957 = fcmp olt double %4955, %4956
  br i1 %4957, label %4958, label %4968

4958:                                             ; preds = %4954
  %4959 = load double, ptr %24, align 8, !tbaa !11
  %4960 = load double, ptr %27, align 8, !tbaa !11
  %4961 = fdiv double %4959, %4960
  store double %4961, ptr %17, align 8, !tbaa !11
  %4962 = load double, ptr %23, align 8, !tbaa !11
  %4963 = load double, ptr %17, align 8, !tbaa !11
  %4964 = load double, ptr %17, align 8, !tbaa !11
  %4965 = fmul double %4963, %4964
  %4966 = call double @llvm.fmuladd.f64(double %4962, double %4965, double 1.000000e+00)
  store double %4966, ptr %23, align 8, !tbaa !11
  %4967 = load double, ptr %27, align 8, !tbaa !11
  store double %4967, ptr %24, align 8, !tbaa !11
  br label %4976

4968:                                             ; preds = %4954
  %4969 = load double, ptr %27, align 8, !tbaa !11
  %4970 = load double, ptr %24, align 8, !tbaa !11
  %4971 = fdiv double %4969, %4970
  store double %4971, ptr %17, align 8, !tbaa !11
  %4972 = load double, ptr %17, align 8, !tbaa !11
  %4973 = load double, ptr %17, align 8, !tbaa !11
  %4974 = load double, ptr %23, align 8, !tbaa !11
  %4975 = call double @llvm.fmuladd.f64(double %4972, double %4973, double %4974)
  store double %4975, ptr %23, align 8, !tbaa !11
  br label %4976

4976:                                             ; preds = %4968, %4958
  br label %4977

4977:                                             ; preds = %4976, %4944
  %4978 = load i32, ptr %28, align 4, !tbaa !9
  store i32 %4978, ptr %22, align 4, !tbaa !9
  %4979 = load i32, ptr %21, align 4, !tbaa !9
  %4980 = sub nsw i32 %4979, 1
  store i32 %4980, ptr %14, align 4, !tbaa !9
  store i32 1, ptr %19, align 4, !tbaa !9
  br label %4981

4981:                                             ; preds = %5057, %4977
  %4982 = load i32, ptr %19, align 4, !tbaa !9
  %4983 = load i32, ptr %14, align 4, !tbaa !9
  %4984 = icmp sle i32 %4982, %4983
  br i1 %4984, label %4985, label %5060

4985:                                             ; preds = %4981
  %4986 = load i32, ptr %22, align 4, !tbaa !9
  store i32 %4986, ptr %15, align 4, !tbaa !9
  %4987 = load ptr, ptr %12, align 8, !tbaa !5
  %4988 = load i32, ptr %15, align 4, !tbaa !9
  %4989 = sext i32 %4988 to i64
  %4990 = getelementptr inbounds %struct.doublecomplex, ptr %4987, i64 %4989
  %4991 = getelementptr inbounds %struct.doublecomplex, ptr %4990, i32 0, i32 0
  %4992 = load double, ptr %4991, align 8, !tbaa !13
  store double %4992, ptr %27, align 8, !tbaa !11
  %4993 = load double, ptr %27, align 8, !tbaa !11
  %4994 = fcmp une double %4993, 0.000000e+00
  br i1 %4994, label %4995, label %5018

4995:                                             ; preds = %4985
  %4996 = load double, ptr %24, align 8, !tbaa !11
  %4997 = load double, ptr %27, align 8, !tbaa !11
  %4998 = fcmp olt double %4996, %4997
  br i1 %4998, label %4999, label %5009

4999:                                             ; preds = %4995
  %5000 = load double, ptr %24, align 8, !tbaa !11
  %5001 = load double, ptr %27, align 8, !tbaa !11
  %5002 = fdiv double %5000, %5001
  store double %5002, ptr %17, align 8, !tbaa !11
  %5003 = load double, ptr %23, align 8, !tbaa !11
  %5004 = load double, ptr %17, align 8, !tbaa !11
  %5005 = load double, ptr %17, align 8, !tbaa !11
  %5006 = fmul double %5004, %5005
  %5007 = call double @llvm.fmuladd.f64(double %5003, double %5006, double 1.000000e+00)
  store double %5007, ptr %23, align 8, !tbaa !11
  %5008 = load double, ptr %27, align 8, !tbaa !11
  store double %5008, ptr %24, align 8, !tbaa !11
  br label %5017

5009:                                             ; preds = %4995
  %5010 = load double, ptr %27, align 8, !tbaa !11
  %5011 = load double, ptr %24, align 8, !tbaa !11
  %5012 = fdiv double %5010, %5011
  store double %5012, ptr %17, align 8, !tbaa !11
  %5013 = load double, ptr %17, align 8, !tbaa !11
  %5014 = load double, ptr %17, align 8, !tbaa !11
  %5015 = load double, ptr %23, align 8, !tbaa !11
  %5016 = call double @llvm.fmuladd.f64(double %5013, double %5014, double %5015)
  store double %5016, ptr %23, align 8, !tbaa !11
  br label %5017

5017:                                             ; preds = %5009, %4999
  br label %5018

5018:                                             ; preds = %5017, %4985
  %5019 = load i32, ptr %22, align 4, !tbaa !9
  %5020 = add nsw i32 %5019, 1
  store i32 %5020, ptr %15, align 4, !tbaa !9
  %5021 = load ptr, ptr %12, align 8, !tbaa !5
  %5022 = load i32, ptr %15, align 4, !tbaa !9
  %5023 = sext i32 %5022 to i64
  %5024 = getelementptr inbounds %struct.doublecomplex, ptr %5021, i64 %5023
  %5025 = getelementptr inbounds %struct.doublecomplex, ptr %5024, i32 0, i32 0
  %5026 = load double, ptr %5025, align 8, !tbaa !13
  store double %5026, ptr %27, align 8, !tbaa !11
  %5027 = load double, ptr %27, align 8, !tbaa !11
  %5028 = fcmp une double %5027, 0.000000e+00
  br i1 %5028, label %5029, label %5052

5029:                                             ; preds = %5018
  %5030 = load double, ptr %24, align 8, !tbaa !11
  %5031 = load double, ptr %27, align 8, !tbaa !11
  %5032 = fcmp olt double %5030, %5031
  br i1 %5032, label %5033, label %5043

5033:                                             ; preds = %5029
  %5034 = load double, ptr %24, align 8, !tbaa !11
  %5035 = load double, ptr %27, align 8, !tbaa !11
  %5036 = fdiv double %5034, %5035
  store double %5036, ptr %17, align 8, !tbaa !11
  %5037 = load double, ptr %23, align 8, !tbaa !11
  %5038 = load double, ptr %17, align 8, !tbaa !11
  %5039 = load double, ptr %17, align 8, !tbaa !11
  %5040 = fmul double %5038, %5039
  %5041 = call double @llvm.fmuladd.f64(double %5037, double %5040, double 1.000000e+00)
  store double %5041, ptr %23, align 8, !tbaa !11
  %5042 = load double, ptr %27, align 8, !tbaa !11
  store double %5042, ptr %24, align 8, !tbaa !11
  br label %5051

5043:                                             ; preds = %5029
  %5044 = load double, ptr %27, align 8, !tbaa !11
  %5045 = load double, ptr %24, align 8, !tbaa !11
  %5046 = fdiv double %5044, %5045
  store double %5046, ptr %17, align 8, !tbaa !11
  %5047 = load double, ptr %17, align 8, !tbaa !11
  %5048 = load double, ptr %17, align 8, !tbaa !11
  %5049 = load double, ptr %23, align 8, !tbaa !11
  %5050 = call double @llvm.fmuladd.f64(double %5047, double %5048, double %5049)
  store double %5050, ptr %23, align 8, !tbaa !11
  br label %5051

5051:                                             ; preds = %5043, %5033
  br label %5052

5052:                                             ; preds = %5051, %5018
  %5053 = load i32, ptr %22, align 4, !tbaa !9
  %5054 = load i32, ptr %28, align 4, !tbaa !9
  %5055 = add nsw i32 %5053, %5054
  %5056 = add nsw i32 %5055, 1
  store i32 %5056, ptr %22, align 4, !tbaa !9
  br label %5057

5057:                                             ; preds = %5052
  %5058 = load i32, ptr %19, align 4, !tbaa !9
  %5059 = add nsw i32 %5058, 1
  store i32 %5059, ptr %19, align 4, !tbaa !9
  br label %4981, !llvm.loop !118

5060:                                             ; preds = %4981
  br label %5061

5061:                                             ; preds = %5060, %4900
  br label %5437

5062:                                             ; preds = %4727
  %5063 = load i32, ptr %31, align 4, !tbaa !9
  %5064 = icmp eq i32 %5063, 0
  br i1 %5064, label %5065, label %5257

5065:                                             ; preds = %5062
  %5066 = load i32, ptr %21, align 4, !tbaa !9
  %5067 = sub nsw i32 %5066, 2
  store i32 %5067, ptr %14, align 4, !tbaa !9
  store i32 1, ptr %20, align 4, !tbaa !9
  br label %5068

5068:                                             ; preds = %5081, %5065
  %5069 = load i32, ptr %20, align 4, !tbaa !9
  %5070 = load i32, ptr %14, align 4, !tbaa !9
  %5071 = icmp sle i32 %5069, %5070
  br i1 %5071, label %5072, label %5084

5072:                                             ; preds = %5068
  %5073 = load ptr, ptr %12, align 8, !tbaa !5
  %5074 = load i32, ptr %21, align 4, !tbaa !9
  %5075 = load i32, ptr %20, align 4, !tbaa !9
  %5076 = add nsw i32 %5074, %5075
  %5077 = load i32, ptr %28, align 4, !tbaa !9
  %5078 = mul nsw i32 %5076, %5077
  %5079 = sext i32 %5078 to i64
  %5080 = getelementptr inbounds %struct.doublecomplex, ptr %5073, i64 %5079
  call void @zlassq_(ptr noundef %20, ptr noundef %5080, ptr noundef @c__1, ptr noundef %24, ptr noundef %23)
  br label %5081

5081:                                             ; preds = %5072
  %5082 = load i32, ptr %20, align 4, !tbaa !9
  %5083 = add nsw i32 %5082, 1
  store i32 %5083, ptr %20, align 4, !tbaa !9
  br label %5068, !llvm.loop !119

5084:                                             ; preds = %5068
  %5085 = load i32, ptr %21, align 4, !tbaa !9
  %5086 = sub nsw i32 %5085, 2
  store i32 %5086, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %5087

5087:                                             ; preds = %5098, %5084
  %5088 = load i32, ptr %20, align 4, !tbaa !9
  %5089 = load i32, ptr %14, align 4, !tbaa !9
  %5090 = icmp sle i32 %5088, %5089
  br i1 %5090, label %5091, label %5101

5091:                                             ; preds = %5087
  %5092 = load ptr, ptr %12, align 8, !tbaa !5
  %5093 = load i32, ptr %20, align 4, !tbaa !9
  %5094 = load i32, ptr %28, align 4, !tbaa !9
  %5095 = mul nsw i32 %5093, %5094
  %5096 = sext i32 %5095 to i64
  %5097 = getelementptr inbounds %struct.doublecomplex, ptr %5092, i64 %5096
  call void @zlassq_(ptr noundef %21, ptr noundef %5097, ptr noundef @c__1, ptr noundef %24, ptr noundef %23)
  br label %5098

5098:                                             ; preds = %5091
  %5099 = load i32, ptr %20, align 4, !tbaa !9
  %5100 = add nsw i32 %5099, 1
  store i32 %5100, ptr %20, align 4, !tbaa !9
  br label %5087, !llvm.loop !120

5101:                                             ; preds = %5087
  %5102 = load i32, ptr %21, align 4, !tbaa !9
  %5103 = sub nsw i32 %5102, 2
  store i32 %5103, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %5104

5104:                                             ; preds = %5125, %5101
  %5105 = load i32, ptr %20, align 4, !tbaa !9
  %5106 = load i32, ptr %14, align 4, !tbaa !9
  %5107 = icmp sle i32 %5105, %5106
  br i1 %5107, label %5108, label %5128

5108:                                             ; preds = %5104
  %5109 = load i32, ptr %21, align 4, !tbaa !9
  %5110 = load i32, ptr %20, align 4, !tbaa !9
  %5111 = sub nsw i32 %5109, %5110
  %5112 = sub nsw i32 %5111, 1
  store i32 %5112, ptr %15, align 4, !tbaa !9
  %5113 = load ptr, ptr %12, align 8, !tbaa !5
  %5114 = load i32, ptr %20, align 4, !tbaa !9
  %5115 = add nsw i32 %5114, 1
  %5116 = load i32, ptr %20, align 4, !tbaa !9
  %5117 = load i32, ptr %21, align 4, !tbaa !9
  %5118 = add nsw i32 %5116, %5117
  %5119 = sub nsw i32 %5118, 1
  %5120 = load i32, ptr %28, align 4, !tbaa !9
  %5121 = mul nsw i32 %5119, %5120
  %5122 = add nsw i32 %5115, %5121
  %5123 = sext i32 %5122 to i64
  %5124 = getelementptr inbounds %struct.doublecomplex, ptr %5113, i64 %5123
  call void @zlassq_(ptr noundef %15, ptr noundef %5124, ptr noundef @c__1, ptr noundef %24, ptr noundef %23)
  br label %5125

5125:                                             ; preds = %5108
  %5126 = load i32, ptr %20, align 4, !tbaa !9
  %5127 = add nsw i32 %5126, 1
  store i32 %5127, ptr %20, align 4, !tbaa !9
  br label %5104, !llvm.loop !121

5128:                                             ; preds = %5104
  %5129 = load double, ptr %23, align 8, !tbaa !11
  %5130 = load double, ptr %23, align 8, !tbaa !11
  %5131 = fadd double %5130, %5129
  store double %5131, ptr %23, align 8, !tbaa !11
  %5132 = load i32, ptr %21, align 4, !tbaa !9
  %5133 = load i32, ptr %28, align 4, !tbaa !9
  %5134 = mul nsw i32 %5132, %5133
  %5135 = load i32, ptr %28, align 4, !tbaa !9
  %5136 = sub nsw i32 %5134, %5135
  store i32 %5136, ptr %22, align 4, !tbaa !9
  %5137 = load i32, ptr %22, align 4, !tbaa !9
  store i32 %5137, ptr %14, align 4, !tbaa !9
  %5138 = load ptr, ptr %12, align 8, !tbaa !5
  %5139 = load i32, ptr %14, align 4, !tbaa !9
  %5140 = sext i32 %5139 to i64
  %5141 = getelementptr inbounds %struct.doublecomplex, ptr %5138, i64 %5140
  %5142 = getelementptr inbounds %struct.doublecomplex, ptr %5141, i32 0, i32 0
  %5143 = load double, ptr %5142, align 8, !tbaa !13
  store double %5143, ptr %27, align 8, !tbaa !11
  %5144 = load double, ptr %27, align 8, !tbaa !11
  %5145 = fcmp une double %5144, 0.000000e+00
  br i1 %5145, label %5146, label %5169

5146:                                             ; preds = %5128
  %5147 = load double, ptr %24, align 8, !tbaa !11
  %5148 = load double, ptr %27, align 8, !tbaa !11
  %5149 = fcmp olt double %5147, %5148
  br i1 %5149, label %5150, label %5160

5150:                                             ; preds = %5146
  %5151 = load double, ptr %24, align 8, !tbaa !11
  %5152 = load double, ptr %27, align 8, !tbaa !11
  %5153 = fdiv double %5151, %5152
  store double %5153, ptr %17, align 8, !tbaa !11
  %5154 = load double, ptr %23, align 8, !tbaa !11
  %5155 = load double, ptr %17, align 8, !tbaa !11
  %5156 = load double, ptr %17, align 8, !tbaa !11
  %5157 = fmul double %5155, %5156
  %5158 = call double @llvm.fmuladd.f64(double %5154, double %5157, double 1.000000e+00)
  store double %5158, ptr %23, align 8, !tbaa !11
  %5159 = load double, ptr %27, align 8, !tbaa !11
  store double %5159, ptr %24, align 8, !tbaa !11
  br label %5168

5160:                                             ; preds = %5146
  %5161 = load double, ptr %27, align 8, !tbaa !11
  %5162 = load double, ptr %24, align 8, !tbaa !11
  %5163 = fdiv double %5161, %5162
  store double %5163, ptr %17, align 8, !tbaa !11
  %5164 = load double, ptr %17, align 8, !tbaa !11
  %5165 = load double, ptr %17, align 8, !tbaa !11
  %5166 = load double, ptr %23, align 8, !tbaa !11
  %5167 = call double @llvm.fmuladd.f64(double %5164, double %5165, double %5166)
  store double %5167, ptr %23, align 8, !tbaa !11
  br label %5168

5168:                                             ; preds = %5160, %5150
  br label %5169

5169:                                             ; preds = %5168, %5128
  %5170 = load i32, ptr %28, align 4, !tbaa !9
  %5171 = load i32, ptr %22, align 4, !tbaa !9
  %5172 = add nsw i32 %5171, %5170
  store i32 %5172, ptr %22, align 4, !tbaa !9
  %5173 = load ptr, ptr %11, align 8, !tbaa !5
  %5174 = load i32, ptr %5173, align 4, !tbaa !9
  %5175 = sub nsw i32 %5174, 1
  store i32 %5175, ptr %14, align 4, !tbaa !9
  %5176 = load i32, ptr %21, align 4, !tbaa !9
  store i32 %5176, ptr %20, align 4, !tbaa !9
  br label %5177

5177:                                             ; preds = %5253, %5169
  %5178 = load i32, ptr %20, align 4, !tbaa !9
  %5179 = load i32, ptr %14, align 4, !tbaa !9
  %5180 = icmp sle i32 %5178, %5179
  br i1 %5180, label %5181, label %5256

5181:                                             ; preds = %5177
  %5182 = load i32, ptr %22, align 4, !tbaa !9
  store i32 %5182, ptr %15, align 4, !tbaa !9
  %5183 = load ptr, ptr %12, align 8, !tbaa !5
  %5184 = load i32, ptr %15, align 4, !tbaa !9
  %5185 = sext i32 %5184 to i64
  %5186 = getelementptr inbounds %struct.doublecomplex, ptr %5183, i64 %5185
  %5187 = getelementptr inbounds %struct.doublecomplex, ptr %5186, i32 0, i32 0
  %5188 = load double, ptr %5187, align 8, !tbaa !13
  store double %5188, ptr %27, align 8, !tbaa !11
  %5189 = load double, ptr %27, align 8, !tbaa !11
  %5190 = fcmp une double %5189, 0.000000e+00
  br i1 %5190, label %5191, label %5214

5191:                                             ; preds = %5181
  %5192 = load double, ptr %24, align 8, !tbaa !11
  %5193 = load double, ptr %27, align 8, !tbaa !11
  %5194 = fcmp olt double %5192, %5193
  br i1 %5194, label %5195, label %5205

5195:                                             ; preds = %5191
  %5196 = load double, ptr %24, align 8, !tbaa !11
  %5197 = load double, ptr %27, align 8, !tbaa !11
  %5198 = fdiv double %5196, %5197
  store double %5198, ptr %17, align 8, !tbaa !11
  %5199 = load double, ptr %23, align 8, !tbaa !11
  %5200 = load double, ptr %17, align 8, !tbaa !11
  %5201 = load double, ptr %17, align 8, !tbaa !11
  %5202 = fmul double %5200, %5201
  %5203 = call double @llvm.fmuladd.f64(double %5199, double %5202, double 1.000000e+00)
  store double %5203, ptr %23, align 8, !tbaa !11
  %5204 = load double, ptr %27, align 8, !tbaa !11
  store double %5204, ptr %24, align 8, !tbaa !11
  br label %5213

5205:                                             ; preds = %5191
  %5206 = load double, ptr %27, align 8, !tbaa !11
  %5207 = load double, ptr %24, align 8, !tbaa !11
  %5208 = fdiv double %5206, %5207
  store double %5208, ptr %17, align 8, !tbaa !11
  %5209 = load double, ptr %17, align 8, !tbaa !11
  %5210 = load double, ptr %17, align 8, !tbaa !11
  %5211 = load double, ptr %23, align 8, !tbaa !11
  %5212 = call double @llvm.fmuladd.f64(double %5209, double %5210, double %5211)
  store double %5212, ptr %23, align 8, !tbaa !11
  br label %5213

5213:                                             ; preds = %5205, %5195
  br label %5214

5214:                                             ; preds = %5213, %5181
  %5215 = load i32, ptr %22, align 4, !tbaa !9
  %5216 = add nsw i32 %5215, 1
  store i32 %5216, ptr %15, align 4, !tbaa !9
  %5217 = load ptr, ptr %12, align 8, !tbaa !5
  %5218 = load i32, ptr %15, align 4, !tbaa !9
  %5219 = sext i32 %5218 to i64
  %5220 = getelementptr inbounds %struct.doublecomplex, ptr %5217, i64 %5219
  %5221 = getelementptr inbounds %struct.doublecomplex, ptr %5220, i32 0, i32 0
  %5222 = load double, ptr %5221, align 8, !tbaa !13
  store double %5222, ptr %27, align 8, !tbaa !11
  %5223 = load double, ptr %27, align 8, !tbaa !11
  %5224 = fcmp une double %5223, 0.000000e+00
  br i1 %5224, label %5225, label %5248

5225:                                             ; preds = %5214
  %5226 = load double, ptr %24, align 8, !tbaa !11
  %5227 = load double, ptr %27, align 8, !tbaa !11
  %5228 = fcmp olt double %5226, %5227
  br i1 %5228, label %5229, label %5239

5229:                                             ; preds = %5225
  %5230 = load double, ptr %24, align 8, !tbaa !11
  %5231 = load double, ptr %27, align 8, !tbaa !11
  %5232 = fdiv double %5230, %5231
  store double %5232, ptr %17, align 8, !tbaa !11
  %5233 = load double, ptr %23, align 8, !tbaa !11
  %5234 = load double, ptr %17, align 8, !tbaa !11
  %5235 = load double, ptr %17, align 8, !tbaa !11
  %5236 = fmul double %5234, %5235
  %5237 = call double @llvm.fmuladd.f64(double %5233, double %5236, double 1.000000e+00)
  store double %5237, ptr %23, align 8, !tbaa !11
  %5238 = load double, ptr %27, align 8, !tbaa !11
  store double %5238, ptr %24, align 8, !tbaa !11
  br label %5247

5239:                                             ; preds = %5225
  %5240 = load double, ptr %27, align 8, !tbaa !11
  %5241 = load double, ptr %24, align 8, !tbaa !11
  %5242 = fdiv double %5240, %5241
  store double %5242, ptr %17, align 8, !tbaa !11
  %5243 = load double, ptr %17, align 8, !tbaa !11
  %5244 = load double, ptr %17, align 8, !tbaa !11
  %5245 = load double, ptr %23, align 8, !tbaa !11
  %5246 = call double @llvm.fmuladd.f64(double %5243, double %5244, double %5245)
  store double %5246, ptr %23, align 8, !tbaa !11
  br label %5247

5247:                                             ; preds = %5239, %5229
  br label %5248

5248:                                             ; preds = %5247, %5214
  %5249 = load i32, ptr %22, align 4, !tbaa !9
  %5250 = load i32, ptr %28, align 4, !tbaa !9
  %5251 = add nsw i32 %5249, %5250
  %5252 = add nsw i32 %5251, 1
  store i32 %5252, ptr %22, align 4, !tbaa !9
  br label %5253

5253:                                             ; preds = %5248
  %5254 = load i32, ptr %20, align 4, !tbaa !9
  %5255 = add nsw i32 %5254, 1
  store i32 %5255, ptr %20, align 4, !tbaa !9
  br label %5177, !llvm.loop !122

5256:                                             ; preds = %5177
  br label %5436

5257:                                             ; preds = %5062
  %5258 = load i32, ptr %21, align 4, !tbaa !9
  %5259 = sub nsw i32 %5258, 1
  store i32 %5259, ptr %14, align 4, !tbaa !9
  store i32 1, ptr %20, align 4, !tbaa !9
  br label %5260

5260:                                             ; preds = %5271, %5257
  %5261 = load i32, ptr %20, align 4, !tbaa !9
  %5262 = load i32, ptr %14, align 4, !tbaa !9
  %5263 = icmp sle i32 %5261, %5262
  br i1 %5263, label %5264, label %5274

5264:                                             ; preds = %5260
  %5265 = load ptr, ptr %12, align 8, !tbaa !5
  %5266 = load i32, ptr %20, align 4, !tbaa !9
  %5267 = load i32, ptr %28, align 4, !tbaa !9
  %5268 = mul nsw i32 %5266, %5267
  %5269 = sext i32 %5268 to i64
  %5270 = getelementptr inbounds %struct.doublecomplex, ptr %5265, i64 %5269
  call void @zlassq_(ptr noundef %20, ptr noundef %5270, ptr noundef @c__1, ptr noundef %24, ptr noundef %23)
  br label %5271

5271:                                             ; preds = %5264
  %5272 = load i32, ptr %20, align 4, !tbaa !9
  %5273 = add nsw i32 %5272, 1
  store i32 %5273, ptr %20, align 4, !tbaa !9
  br label %5260, !llvm.loop !123

5274:                                             ; preds = %5260
  %5275 = load ptr, ptr %11, align 8, !tbaa !5
  %5276 = load i32, ptr %5275, align 4, !tbaa !9
  %5277 = sub nsw i32 %5276, 1
  store i32 %5277, ptr %14, align 4, !tbaa !9
  %5278 = load i32, ptr %21, align 4, !tbaa !9
  store i32 %5278, ptr %20, align 4, !tbaa !9
  br label %5279

5279:                                             ; preds = %5290, %5274
  %5280 = load i32, ptr %20, align 4, !tbaa !9
  %5281 = load i32, ptr %14, align 4, !tbaa !9
  %5282 = icmp sle i32 %5280, %5281
  br i1 %5282, label %5283, label %5293

5283:                                             ; preds = %5279
  %5284 = load ptr, ptr %12, align 8, !tbaa !5
  %5285 = load i32, ptr %20, align 4, !tbaa !9
  %5286 = load i32, ptr %28, align 4, !tbaa !9
  %5287 = mul nsw i32 %5285, %5286
  %5288 = sext i32 %5287 to i64
  %5289 = getelementptr inbounds %struct.doublecomplex, ptr %5284, i64 %5288
  call void @zlassq_(ptr noundef %21, ptr noundef %5289, ptr noundef @c__1, ptr noundef %24, ptr noundef %23)
  br label %5290

5290:                                             ; preds = %5283
  %5291 = load i32, ptr %20, align 4, !tbaa !9
  %5292 = add nsw i32 %5291, 1
  store i32 %5292, ptr %20, align 4, !tbaa !9
  br label %5279, !llvm.loop !124

5293:                                             ; preds = %5279
  %5294 = load i32, ptr %21, align 4, !tbaa !9
  %5295 = sub nsw i32 %5294, 3
  store i32 %5295, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %5296

5296:                                             ; preds = %5314, %5293
  %5297 = load i32, ptr %20, align 4, !tbaa !9
  %5298 = load i32, ptr %14, align 4, !tbaa !9
  %5299 = icmp sle i32 %5297, %5298
  br i1 %5299, label %5300, label %5317

5300:                                             ; preds = %5296
  %5301 = load i32, ptr %21, align 4, !tbaa !9
  %5302 = load i32, ptr %20, align 4, !tbaa !9
  %5303 = sub nsw i32 %5301, %5302
  %5304 = sub nsw i32 %5303, 2
  store i32 %5304, ptr %15, align 4, !tbaa !9
  %5305 = load ptr, ptr %12, align 8, !tbaa !5
  %5306 = load i32, ptr %20, align 4, !tbaa !9
  %5307 = add nsw i32 %5306, 2
  %5308 = load i32, ptr %20, align 4, !tbaa !9
  %5309 = load i32, ptr %28, align 4, !tbaa !9
  %5310 = mul nsw i32 %5308, %5309
  %5311 = add nsw i32 %5307, %5310
  %5312 = sext i32 %5311 to i64
  %5313 = getelementptr inbounds %struct.doublecomplex, ptr %5305, i64 %5312
  call void @zlassq_(ptr noundef %15, ptr noundef %5313, ptr noundef @c__1, ptr noundef %24, ptr noundef %23)
  br label %5314

5314:                                             ; preds = %5300
  %5315 = load i32, ptr %20, align 4, !tbaa !9
  %5316 = add nsw i32 %5315, 1
  store i32 %5316, ptr %20, align 4, !tbaa !9
  br label %5296, !llvm.loop !125

5317:                                             ; preds = %5296
  %5318 = load double, ptr %23, align 8, !tbaa !11
  %5319 = load double, ptr %23, align 8, !tbaa !11
  %5320 = fadd double %5319, %5318
  store double %5320, ptr %23, align 8, !tbaa !11
  store i32 0, ptr %22, align 4, !tbaa !9
  %5321 = load i32, ptr %21, align 4, !tbaa !9
  %5322 = sub nsw i32 %5321, 2
  store i32 %5322, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %5323

5323:                                             ; preds = %5399, %5317
  %5324 = load i32, ptr %19, align 4, !tbaa !9
  %5325 = load i32, ptr %14, align 4, !tbaa !9
  %5326 = icmp sle i32 %5324, %5325
  br i1 %5326, label %5327, label %5402

5327:                                             ; preds = %5323
  %5328 = load i32, ptr %22, align 4, !tbaa !9
  store i32 %5328, ptr %15, align 4, !tbaa !9
  %5329 = load ptr, ptr %12, align 8, !tbaa !5
  %5330 = load i32, ptr %15, align 4, !tbaa !9
  %5331 = sext i32 %5330 to i64
  %5332 = getelementptr inbounds %struct.doublecomplex, ptr %5329, i64 %5331
  %5333 = getelementptr inbounds %struct.doublecomplex, ptr %5332, i32 0, i32 0
  %5334 = load double, ptr %5333, align 8, !tbaa !13
  store double %5334, ptr %27, align 8, !tbaa !11
  %5335 = load double, ptr %27, align 8, !tbaa !11
  %5336 = fcmp une double %5335, 0.000000e+00
  br i1 %5336, label %5337, label %5360

5337:                                             ; preds = %5327
  %5338 = load double, ptr %24, align 8, !tbaa !11
  %5339 = load double, ptr %27, align 8, !tbaa !11
  %5340 = fcmp olt double %5338, %5339
  br i1 %5340, label %5341, label %5351

5341:                                             ; preds = %5337
  %5342 = load double, ptr %24, align 8, !tbaa !11
  %5343 = load double, ptr %27, align 8, !tbaa !11
  %5344 = fdiv double %5342, %5343
  store double %5344, ptr %17, align 8, !tbaa !11
  %5345 = load double, ptr %23, align 8, !tbaa !11
  %5346 = load double, ptr %17, align 8, !tbaa !11
  %5347 = load double, ptr %17, align 8, !tbaa !11
  %5348 = fmul double %5346, %5347
  %5349 = call double @llvm.fmuladd.f64(double %5345, double %5348, double 1.000000e+00)
  store double %5349, ptr %23, align 8, !tbaa !11
  %5350 = load double, ptr %27, align 8, !tbaa !11
  store double %5350, ptr %24, align 8, !tbaa !11
  br label %5359

5351:                                             ; preds = %5337
  %5352 = load double, ptr %27, align 8, !tbaa !11
  %5353 = load double, ptr %24, align 8, !tbaa !11
  %5354 = fdiv double %5352, %5353
  store double %5354, ptr %17, align 8, !tbaa !11
  %5355 = load double, ptr %17, align 8, !tbaa !11
  %5356 = load double, ptr %17, align 8, !tbaa !11
  %5357 = load double, ptr %23, align 8, !tbaa !11
  %5358 = call double @llvm.fmuladd.f64(double %5355, double %5356, double %5357)
  store double %5358, ptr %23, align 8, !tbaa !11
  br label %5359

5359:                                             ; preds = %5351, %5341
  br label %5360

5360:                                             ; preds = %5359, %5327
  %5361 = load i32, ptr %22, align 4, !tbaa !9
  %5362 = add nsw i32 %5361, 1
  store i32 %5362, ptr %15, align 4, !tbaa !9
  %5363 = load ptr, ptr %12, align 8, !tbaa !5
  %5364 = load i32, ptr %15, align 4, !tbaa !9
  %5365 = sext i32 %5364 to i64
  %5366 = getelementptr inbounds %struct.doublecomplex, ptr %5363, i64 %5365
  %5367 = getelementptr inbounds %struct.doublecomplex, ptr %5366, i32 0, i32 0
  %5368 = load double, ptr %5367, align 8, !tbaa !13
  store double %5368, ptr %27, align 8, !tbaa !11
  %5369 = load double, ptr %27, align 8, !tbaa !11
  %5370 = fcmp une double %5369, 0.000000e+00
  br i1 %5370, label %5371, label %5394

5371:                                             ; preds = %5360
  %5372 = load double, ptr %24, align 8, !tbaa !11
  %5373 = load double, ptr %27, align 8, !tbaa !11
  %5374 = fcmp olt double %5372, %5373
  br i1 %5374, label %5375, label %5385

5375:                                             ; preds = %5371
  %5376 = load double, ptr %24, align 8, !tbaa !11
  %5377 = load double, ptr %27, align 8, !tbaa !11
  %5378 = fdiv double %5376, %5377
  store double %5378, ptr %17, align 8, !tbaa !11
  %5379 = load double, ptr %23, align 8, !tbaa !11
  %5380 = load double, ptr %17, align 8, !tbaa !11
  %5381 = load double, ptr %17, align 8, !tbaa !11
  %5382 = fmul double %5380, %5381
  %5383 = call double @llvm.fmuladd.f64(double %5379, double %5382, double 1.000000e+00)
  store double %5383, ptr %23, align 8, !tbaa !11
  %5384 = load double, ptr %27, align 8, !tbaa !11
  store double %5384, ptr %24, align 8, !tbaa !11
  br label %5393

5385:                                             ; preds = %5371
  %5386 = load double, ptr %27, align 8, !tbaa !11
  %5387 = load double, ptr %24, align 8, !tbaa !11
  %5388 = fdiv double %5386, %5387
  store double %5388, ptr %17, align 8, !tbaa !11
  %5389 = load double, ptr %17, align 8, !tbaa !11
  %5390 = load double, ptr %17, align 8, !tbaa !11
  %5391 = load double, ptr %23, align 8, !tbaa !11
  %5392 = call double @llvm.fmuladd.f64(double %5389, double %5390, double %5391)
  store double %5392, ptr %23, align 8, !tbaa !11
  br label %5393

5393:                                             ; preds = %5385, %5375
  br label %5394

5394:                                             ; preds = %5393, %5360
  %5395 = load i32, ptr %22, align 4, !tbaa !9
  %5396 = load i32, ptr %28, align 4, !tbaa !9
  %5397 = add nsw i32 %5395, %5396
  %5398 = add nsw i32 %5397, 1
  store i32 %5398, ptr %22, align 4, !tbaa !9
  br label %5399

5399:                                             ; preds = %5394
  %5400 = load i32, ptr %19, align 4, !tbaa !9
  %5401 = add nsw i32 %5400, 1
  store i32 %5401, ptr %19, align 4, !tbaa !9
  br label %5323, !llvm.loop !126

5402:                                             ; preds = %5323
  %5403 = load i32, ptr %22, align 4, !tbaa !9
  store i32 %5403, ptr %14, align 4, !tbaa !9
  %5404 = load ptr, ptr %12, align 8, !tbaa !5
  %5405 = load i32, ptr %14, align 4, !tbaa !9
  %5406 = sext i32 %5405 to i64
  %5407 = getelementptr inbounds %struct.doublecomplex, ptr %5404, i64 %5406
  %5408 = getelementptr inbounds %struct.doublecomplex, ptr %5407, i32 0, i32 0
  %5409 = load double, ptr %5408, align 8, !tbaa !13
  store double %5409, ptr %27, align 8, !tbaa !11
  %5410 = load double, ptr %27, align 8, !tbaa !11
  %5411 = fcmp une double %5410, 0.000000e+00
  br i1 %5411, label %5412, label %5435

5412:                                             ; preds = %5402
  %5413 = load double, ptr %24, align 8, !tbaa !11
  %5414 = load double, ptr %27, align 8, !tbaa !11
  %5415 = fcmp olt double %5413, %5414
  br i1 %5415, label %5416, label %5426

5416:                                             ; preds = %5412
  %5417 = load double, ptr %24, align 8, !tbaa !11
  %5418 = load double, ptr %27, align 8, !tbaa !11
  %5419 = fdiv double %5417, %5418
  store double %5419, ptr %17, align 8, !tbaa !11
  %5420 = load double, ptr %23, align 8, !tbaa !11
  %5421 = load double, ptr %17, align 8, !tbaa !11
  %5422 = load double, ptr %17, align 8, !tbaa !11
  %5423 = fmul double %5421, %5422
  %5424 = call double @llvm.fmuladd.f64(double %5420, double %5423, double 1.000000e+00)
  store double %5424, ptr %23, align 8, !tbaa !11
  %5425 = load double, ptr %27, align 8, !tbaa !11
  store double %5425, ptr %24, align 8, !tbaa !11
  br label %5434

5426:                                             ; preds = %5412
  %5427 = load double, ptr %27, align 8, !tbaa !11
  %5428 = load double, ptr %24, align 8, !tbaa !11
  %5429 = fdiv double %5427, %5428
  store double %5429, ptr %17, align 8, !tbaa !11
  %5430 = load double, ptr %17, align 8, !tbaa !11
  %5431 = load double, ptr %17, align 8, !tbaa !11
  %5432 = load double, ptr %23, align 8, !tbaa !11
  %5433 = call double @llvm.fmuladd.f64(double %5430, double %5431, double %5432)
  store double %5433, ptr %23, align 8, !tbaa !11
  br label %5434

5434:                                             ; preds = %5426, %5416
  br label %5435

5435:                                             ; preds = %5434, %5402
  br label %5436

5436:                                             ; preds = %5435, %5256
  br label %5437

5437:                                             ; preds = %5436, %5061
  br label %6149

5438:                                             ; preds = %4720
  %5439 = load i32, ptr %29, align 4, !tbaa !9
  %5440 = icmp eq i32 %5439, 1
  br i1 %5440, label %5441, label %5706

5441:                                             ; preds = %5438
  %5442 = load i32, ptr %31, align 4, !tbaa !9
  %5443 = icmp eq i32 %5442, 0
  br i1 %5443, label %5444, label %5577

5444:                                             ; preds = %5441
  %5445 = load i32, ptr %21, align 4, !tbaa !9
  %5446 = sub nsw i32 %5445, 2
  store i32 %5446, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %5447

5447:                                             ; preds = %5467, %5444
  %5448 = load i32, ptr %20, align 4, !tbaa !9
  %5449 = load i32, ptr %14, align 4, !tbaa !9
  %5450 = icmp sle i32 %5448, %5449
  br i1 %5450, label %5451, label %5470

5451:                                             ; preds = %5447
  %5452 = load i32, ptr %21, align 4, !tbaa !9
  %5453 = load i32, ptr %20, align 4, !tbaa !9
  %5454 = sub nsw i32 %5452, %5453
  %5455 = sub nsw i32 %5454, 1
  store i32 %5455, ptr %15, align 4, !tbaa !9
  %5456 = load ptr, ptr %12, align 8, !tbaa !5
  %5457 = load i32, ptr %21, align 4, !tbaa !9
  %5458 = load i32, ptr %20, align 4, !tbaa !9
  %5459 = add nsw i32 %5457, %5458
  %5460 = add nsw i32 %5459, 2
  %5461 = load i32, ptr %20, align 4, !tbaa !9
  %5462 = load i32, ptr %28, align 4, !tbaa !9
  %5463 = mul nsw i32 %5461, %5462
  %5464 = add nsw i32 %5460, %5463
  %5465 = sext i32 %5464 to i64
  %5466 = getelementptr inbounds %struct.doublecomplex, ptr %5456, i64 %5465
  call void @zlassq_(ptr noundef %15, ptr noundef %5466, ptr noundef @c__1, ptr noundef %24, ptr noundef %23)
  br label %5467

5467:                                             ; preds = %5451
  %5468 = load i32, ptr %20, align 4, !tbaa !9
  %5469 = add nsw i32 %5468, 1
  store i32 %5469, ptr %20, align 4, !tbaa !9
  br label %5447, !llvm.loop !127

5470:                                             ; preds = %5447
  %5471 = load i32, ptr %21, align 4, !tbaa !9
  %5472 = sub nsw i32 %5471, 1
  store i32 %5472, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %5473

5473:                                             ; preds = %5487, %5470
  %5474 = load i32, ptr %20, align 4, !tbaa !9
  %5475 = load i32, ptr %14, align 4, !tbaa !9
  %5476 = icmp sle i32 %5474, %5475
  br i1 %5476, label %5477, label %5490

5477:                                             ; preds = %5473
  %5478 = load i32, ptr %21, align 4, !tbaa !9
  %5479 = load i32, ptr %20, align 4, !tbaa !9
  %5480 = add nsw i32 %5478, %5479
  store i32 %5480, ptr %15, align 4, !tbaa !9
  %5481 = load ptr, ptr %12, align 8, !tbaa !5
  %5482 = load i32, ptr %20, align 4, !tbaa !9
  %5483 = load i32, ptr %28, align 4, !tbaa !9
  %5484 = mul nsw i32 %5482, %5483
  %5485 = sext i32 %5484 to i64
  %5486 = getelementptr inbounds %struct.doublecomplex, ptr %5481, i64 %5485
  call void @zlassq_(ptr noundef %15, ptr noundef %5486, ptr noundef @c__1, ptr noundef %24, ptr noundef %23)
  br label %5487

5487:                                             ; preds = %5477
  %5488 = load i32, ptr %20, align 4, !tbaa !9
  %5489 = add nsw i32 %5488, 1
  store i32 %5489, ptr %20, align 4, !tbaa !9
  br label %5473, !llvm.loop !128

5490:                                             ; preds = %5473
  %5491 = load double, ptr %23, align 8, !tbaa !11
  %5492 = load double, ptr %23, align 8, !tbaa !11
  %5493 = fadd double %5492, %5491
  store double %5493, ptr %23, align 8, !tbaa !11
  %5494 = load i32, ptr %21, align 4, !tbaa !9
  store i32 %5494, ptr %22, align 4, !tbaa !9
  %5495 = load i32, ptr %21, align 4, !tbaa !9
  %5496 = sub nsw i32 %5495, 1
  store i32 %5496, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %5497

5497:                                             ; preds = %5573, %5490
  %5498 = load i32, ptr %19, align 4, !tbaa !9
  %5499 = load i32, ptr %14, align 4, !tbaa !9
  %5500 = icmp sle i32 %5498, %5499
  br i1 %5500, label %5501, label %5576

5501:                                             ; preds = %5497
  %5502 = load i32, ptr %22, align 4, !tbaa !9
  store i32 %5502, ptr %15, align 4, !tbaa !9
  %5503 = load ptr, ptr %12, align 8, !tbaa !5
  %5504 = load i32, ptr %15, align 4, !tbaa !9
  %5505 = sext i32 %5504 to i64
  %5506 = getelementptr inbounds %struct.doublecomplex, ptr %5503, i64 %5505
  %5507 = getelementptr inbounds %struct.doublecomplex, ptr %5506, i32 0, i32 0
  %5508 = load double, ptr %5507, align 8, !tbaa !13
  store double %5508, ptr %27, align 8, !tbaa !11
  %5509 = load double, ptr %27, align 8, !tbaa !11
  %5510 = fcmp une double %5509, 0.000000e+00
  br i1 %5510, label %5511, label %5534

5511:                                             ; preds = %5501
  %5512 = load double, ptr %24, align 8, !tbaa !11
  %5513 = load double, ptr %27, align 8, !tbaa !11
  %5514 = fcmp olt double %5512, %5513
  br i1 %5514, label %5515, label %5525

5515:                                             ; preds = %5511
  %5516 = load double, ptr %24, align 8, !tbaa !11
  %5517 = load double, ptr %27, align 8, !tbaa !11
  %5518 = fdiv double %5516, %5517
  store double %5518, ptr %17, align 8, !tbaa !11
  %5519 = load double, ptr %23, align 8, !tbaa !11
  %5520 = load double, ptr %17, align 8, !tbaa !11
  %5521 = load double, ptr %17, align 8, !tbaa !11
  %5522 = fmul double %5520, %5521
  %5523 = call double @llvm.fmuladd.f64(double %5519, double %5522, double 1.000000e+00)
  store double %5523, ptr %23, align 8, !tbaa !11
  %5524 = load double, ptr %27, align 8, !tbaa !11
  store double %5524, ptr %24, align 8, !tbaa !11
  br label %5533

5525:                                             ; preds = %5511
  %5526 = load double, ptr %27, align 8, !tbaa !11
  %5527 = load double, ptr %24, align 8, !tbaa !11
  %5528 = fdiv double %5526, %5527
  store double %5528, ptr %17, align 8, !tbaa !11
  %5529 = load double, ptr %17, align 8, !tbaa !11
  %5530 = load double, ptr %17, align 8, !tbaa !11
  %5531 = load double, ptr %23, align 8, !tbaa !11
  %5532 = call double @llvm.fmuladd.f64(double %5529, double %5530, double %5531)
  store double %5532, ptr %23, align 8, !tbaa !11
  br label %5533

5533:                                             ; preds = %5525, %5515
  br label %5534

5534:                                             ; preds = %5533, %5501
  %5535 = load i32, ptr %22, align 4, !tbaa !9
  %5536 = add nsw i32 %5535, 1
  store i32 %5536, ptr %15, align 4, !tbaa !9
  %5537 = load ptr, ptr %12, align 8, !tbaa !5
  %5538 = load i32, ptr %15, align 4, !tbaa !9
  %5539 = sext i32 %5538 to i64
  %5540 = getelementptr inbounds %struct.doublecomplex, ptr %5537, i64 %5539
  %5541 = getelementptr inbounds %struct.doublecomplex, ptr %5540, i32 0, i32 0
  %5542 = load double, ptr %5541, align 8, !tbaa !13
  store double %5542, ptr %27, align 8, !tbaa !11
  %5543 = load double, ptr %27, align 8, !tbaa !11
  %5544 = fcmp une double %5543, 0.000000e+00
  br i1 %5544, label %5545, label %5568

5545:                                             ; preds = %5534
  %5546 = load double, ptr %24, align 8, !tbaa !11
  %5547 = load double, ptr %27, align 8, !tbaa !11
  %5548 = fcmp olt double %5546, %5547
  br i1 %5548, label %5549, label %5559

5549:                                             ; preds = %5545
  %5550 = load double, ptr %24, align 8, !tbaa !11
  %5551 = load double, ptr %27, align 8, !tbaa !11
  %5552 = fdiv double %5550, %5551
  store double %5552, ptr %17, align 8, !tbaa !11
  %5553 = load double, ptr %23, align 8, !tbaa !11
  %5554 = load double, ptr %17, align 8, !tbaa !11
  %5555 = load double, ptr %17, align 8, !tbaa !11
  %5556 = fmul double %5554, %5555
  %5557 = call double @llvm.fmuladd.f64(double %5553, double %5556, double 1.000000e+00)
  store double %5557, ptr %23, align 8, !tbaa !11
  %5558 = load double, ptr %27, align 8, !tbaa !11
  store double %5558, ptr %24, align 8, !tbaa !11
  br label %5567

5559:                                             ; preds = %5545
  %5560 = load double, ptr %27, align 8, !tbaa !11
  %5561 = load double, ptr %24, align 8, !tbaa !11
  %5562 = fdiv double %5560, %5561
  store double %5562, ptr %17, align 8, !tbaa !11
  %5563 = load double, ptr %17, align 8, !tbaa !11
  %5564 = load double, ptr %17, align 8, !tbaa !11
  %5565 = load double, ptr %23, align 8, !tbaa !11
  %5566 = call double @llvm.fmuladd.f64(double %5563, double %5564, double %5565)
  store double %5566, ptr %23, align 8, !tbaa !11
  br label %5567

5567:                                             ; preds = %5559, %5549
  br label %5568

5568:                                             ; preds = %5567, %5534
  %5569 = load i32, ptr %22, align 4, !tbaa !9
  %5570 = load i32, ptr %28, align 4, !tbaa !9
  %5571 = add nsw i32 %5569, %5570
  %5572 = add nsw i32 %5571, 1
  store i32 %5572, ptr %22, align 4, !tbaa !9
  br label %5573

5573:                                             ; preds = %5568
  %5574 = load i32, ptr %19, align 4, !tbaa !9
  %5575 = add nsw i32 %5574, 1
  store i32 %5575, ptr %19, align 4, !tbaa !9
  br label %5497, !llvm.loop !129

5576:                                             ; preds = %5497
  br label %5705

5577:                                             ; preds = %5441
  %5578 = load i32, ptr %21, align 4, !tbaa !9
  %5579 = sub nsw i32 %5578, 1
  store i32 %5579, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %5580

5580:                                             ; preds = %5599, %5577
  %5581 = load i32, ptr %20, align 4, !tbaa !9
  %5582 = load i32, ptr %14, align 4, !tbaa !9
  %5583 = icmp sle i32 %5581, %5582
  br i1 %5583, label %5584, label %5602

5584:                                             ; preds = %5580
  %5585 = load ptr, ptr %11, align 8, !tbaa !5
  %5586 = load i32, ptr %5585, align 4, !tbaa !9
  %5587 = load i32, ptr %20, align 4, !tbaa !9
  %5588 = sub nsw i32 %5586, %5587
  %5589 = sub nsw i32 %5588, 1
  store i32 %5589, ptr %15, align 4, !tbaa !9
  %5590 = load ptr, ptr %12, align 8, !tbaa !5
  %5591 = load i32, ptr %20, align 4, !tbaa !9
  %5592 = add nsw i32 %5591, 2
  %5593 = load i32, ptr %20, align 4, !tbaa !9
  %5594 = load i32, ptr %28, align 4, !tbaa !9
  %5595 = mul nsw i32 %5593, %5594
  %5596 = add nsw i32 %5592, %5595
  %5597 = sext i32 %5596 to i64
  %5598 = getelementptr inbounds %struct.doublecomplex, ptr %5590, i64 %5597
  call void @zlassq_(ptr noundef %15, ptr noundef %5598, ptr noundef @c__1, ptr noundef %24, ptr noundef %23)
  br label %5599

5599:                                             ; preds = %5584
  %5600 = load i32, ptr %20, align 4, !tbaa !9
  %5601 = add nsw i32 %5600, 1
  store i32 %5601, ptr %20, align 4, !tbaa !9
  br label %5580, !llvm.loop !130

5602:                                             ; preds = %5580
  %5603 = load i32, ptr %21, align 4, !tbaa !9
  %5604 = sub nsw i32 %5603, 1
  store i32 %5604, ptr %14, align 4, !tbaa !9
  store i32 1, ptr %20, align 4, !tbaa !9
  br label %5605

5605:                                             ; preds = %5616, %5602
  %5606 = load i32, ptr %20, align 4, !tbaa !9
  %5607 = load i32, ptr %14, align 4, !tbaa !9
  %5608 = icmp sle i32 %5606, %5607
  br i1 %5608, label %5609, label %5619

5609:                                             ; preds = %5605
  %5610 = load ptr, ptr %12, align 8, !tbaa !5
  %5611 = load i32, ptr %20, align 4, !tbaa !9
  %5612 = load i32, ptr %28, align 4, !tbaa !9
  %5613 = mul nsw i32 %5611, %5612
  %5614 = sext i32 %5613 to i64
  %5615 = getelementptr inbounds %struct.doublecomplex, ptr %5610, i64 %5614
  call void @zlassq_(ptr noundef %20, ptr noundef %5615, ptr noundef @c__1, ptr noundef %24, ptr noundef %23)
  br label %5616

5616:                                             ; preds = %5609
  %5617 = load i32, ptr %20, align 4, !tbaa !9
  %5618 = add nsw i32 %5617, 1
  store i32 %5618, ptr %20, align 4, !tbaa !9
  br label %5605, !llvm.loop !131

5619:                                             ; preds = %5605
  %5620 = load double, ptr %23, align 8, !tbaa !11
  %5621 = load double, ptr %23, align 8, !tbaa !11
  %5622 = fadd double %5621, %5620
  store double %5622, ptr %23, align 8, !tbaa !11
  store i32 0, ptr %22, align 4, !tbaa !9
  %5623 = load i32, ptr %21, align 4, !tbaa !9
  %5624 = sub nsw i32 %5623, 1
  store i32 %5624, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %5625

5625:                                             ; preds = %5701, %5619
  %5626 = load i32, ptr %19, align 4, !tbaa !9
  %5627 = load i32, ptr %14, align 4, !tbaa !9
  %5628 = icmp sle i32 %5626, %5627
  br i1 %5628, label %5629, label %5704

5629:                                             ; preds = %5625
  %5630 = load i32, ptr %22, align 4, !tbaa !9
  store i32 %5630, ptr %15, align 4, !tbaa !9
  %5631 = load ptr, ptr %12, align 8, !tbaa !5
  %5632 = load i32, ptr %15, align 4, !tbaa !9
  %5633 = sext i32 %5632 to i64
  %5634 = getelementptr inbounds %struct.doublecomplex, ptr %5631, i64 %5633
  %5635 = getelementptr inbounds %struct.doublecomplex, ptr %5634, i32 0, i32 0
  %5636 = load double, ptr %5635, align 8, !tbaa !13
  store double %5636, ptr %27, align 8, !tbaa !11
  %5637 = load double, ptr %27, align 8, !tbaa !11
  %5638 = fcmp une double %5637, 0.000000e+00
  br i1 %5638, label %5639, label %5662

5639:                                             ; preds = %5629
  %5640 = load double, ptr %24, align 8, !tbaa !11
  %5641 = load double, ptr %27, align 8, !tbaa !11
  %5642 = fcmp olt double %5640, %5641
  br i1 %5642, label %5643, label %5653

5643:                                             ; preds = %5639
  %5644 = load double, ptr %24, align 8, !tbaa !11
  %5645 = load double, ptr %27, align 8, !tbaa !11
  %5646 = fdiv double %5644, %5645
  store double %5646, ptr %17, align 8, !tbaa !11
  %5647 = load double, ptr %23, align 8, !tbaa !11
  %5648 = load double, ptr %17, align 8, !tbaa !11
  %5649 = load double, ptr %17, align 8, !tbaa !11
  %5650 = fmul double %5648, %5649
  %5651 = call double @llvm.fmuladd.f64(double %5647, double %5650, double 1.000000e+00)
  store double %5651, ptr %23, align 8, !tbaa !11
  %5652 = load double, ptr %27, align 8, !tbaa !11
  store double %5652, ptr %24, align 8, !tbaa !11
  br label %5661

5653:                                             ; preds = %5639
  %5654 = load double, ptr %27, align 8, !tbaa !11
  %5655 = load double, ptr %24, align 8, !tbaa !11
  %5656 = fdiv double %5654, %5655
  store double %5656, ptr %17, align 8, !tbaa !11
  %5657 = load double, ptr %17, align 8, !tbaa !11
  %5658 = load double, ptr %17, align 8, !tbaa !11
  %5659 = load double, ptr %23, align 8, !tbaa !11
  %5660 = call double @llvm.fmuladd.f64(double %5657, double %5658, double %5659)
  store double %5660, ptr %23, align 8, !tbaa !11
  br label %5661

5661:                                             ; preds = %5653, %5643
  br label %5662

5662:                                             ; preds = %5661, %5629
  %5663 = load i32, ptr %22, align 4, !tbaa !9
  %5664 = add nsw i32 %5663, 1
  store i32 %5664, ptr %15, align 4, !tbaa !9
  %5665 = load ptr, ptr %12, align 8, !tbaa !5
  %5666 = load i32, ptr %15, align 4, !tbaa !9
  %5667 = sext i32 %5666 to i64
  %5668 = getelementptr inbounds %struct.doublecomplex, ptr %5665, i64 %5667
  %5669 = getelementptr inbounds %struct.doublecomplex, ptr %5668, i32 0, i32 0
  %5670 = load double, ptr %5669, align 8, !tbaa !13
  store double %5670, ptr %27, align 8, !tbaa !11
  %5671 = load double, ptr %27, align 8, !tbaa !11
  %5672 = fcmp une double %5671, 0.000000e+00
  br i1 %5672, label %5673, label %5696

5673:                                             ; preds = %5662
  %5674 = load double, ptr %24, align 8, !tbaa !11
  %5675 = load double, ptr %27, align 8, !tbaa !11
  %5676 = fcmp olt double %5674, %5675
  br i1 %5676, label %5677, label %5687

5677:                                             ; preds = %5673
  %5678 = load double, ptr %24, align 8, !tbaa !11
  %5679 = load double, ptr %27, align 8, !tbaa !11
  %5680 = fdiv double %5678, %5679
  store double %5680, ptr %17, align 8, !tbaa !11
  %5681 = load double, ptr %23, align 8, !tbaa !11
  %5682 = load double, ptr %17, align 8, !tbaa !11
  %5683 = load double, ptr %17, align 8, !tbaa !11
  %5684 = fmul double %5682, %5683
  %5685 = call double @llvm.fmuladd.f64(double %5681, double %5684, double 1.000000e+00)
  store double %5685, ptr %23, align 8, !tbaa !11
  %5686 = load double, ptr %27, align 8, !tbaa !11
  store double %5686, ptr %24, align 8, !tbaa !11
  br label %5695

5687:                                             ; preds = %5673
  %5688 = load double, ptr %27, align 8, !tbaa !11
  %5689 = load double, ptr %24, align 8, !tbaa !11
  %5690 = fdiv double %5688, %5689
  store double %5690, ptr %17, align 8, !tbaa !11
  %5691 = load double, ptr %17, align 8, !tbaa !11
  %5692 = load double, ptr %17, align 8, !tbaa !11
  %5693 = load double, ptr %23, align 8, !tbaa !11
  %5694 = call double @llvm.fmuladd.f64(double %5691, double %5692, double %5693)
  store double %5694, ptr %23, align 8, !tbaa !11
  br label %5695

5695:                                             ; preds = %5687, %5677
  br label %5696

5696:                                             ; preds = %5695, %5662
  %5697 = load i32, ptr %22, align 4, !tbaa !9
  %5698 = load i32, ptr %28, align 4, !tbaa !9
  %5699 = add nsw i32 %5697, %5698
  %5700 = add nsw i32 %5699, 1
  store i32 %5700, ptr %22, align 4, !tbaa !9
  br label %5701

5701:                                             ; preds = %5696
  %5702 = load i32, ptr %19, align 4, !tbaa !9
  %5703 = add nsw i32 %5702, 1
  store i32 %5703, ptr %19, align 4, !tbaa !9
  br label %5625, !llvm.loop !132

5704:                                             ; preds = %5625
  br label %5705

5705:                                             ; preds = %5704, %5576
  br label %6148

5706:                                             ; preds = %5438
  %5707 = load i32, ptr %31, align 4, !tbaa !9
  %5708 = icmp eq i32 %5707, 0
  br i1 %5708, label %5709, label %5933

5709:                                             ; preds = %5706
  %5710 = load i32, ptr %21, align 4, !tbaa !9
  %5711 = sub nsw i32 %5710, 1
  store i32 %5711, ptr %14, align 4, !tbaa !9
  store i32 1, ptr %20, align 4, !tbaa !9
  br label %5712

5712:                                             ; preds = %5726, %5709
  %5713 = load i32, ptr %20, align 4, !tbaa !9
  %5714 = load i32, ptr %14, align 4, !tbaa !9
  %5715 = icmp sle i32 %5713, %5714
  br i1 %5715, label %5716, label %5729

5716:                                             ; preds = %5712
  %5717 = load ptr, ptr %12, align 8, !tbaa !5
  %5718 = load i32, ptr %21, align 4, !tbaa !9
  %5719 = add nsw i32 %5718, 1
  %5720 = load i32, ptr %20, align 4, !tbaa !9
  %5721 = add nsw i32 %5719, %5720
  %5722 = load i32, ptr %28, align 4, !tbaa !9
  %5723 = mul nsw i32 %5721, %5722
  %5724 = sext i32 %5723 to i64
  %5725 = getelementptr inbounds %struct.doublecomplex, ptr %5717, i64 %5724
  call void @zlassq_(ptr noundef %20, ptr noundef %5725, ptr noundef @c__1, ptr noundef %24, ptr noundef %23)
  br label %5726

5726:                                             ; preds = %5716
  %5727 = load i32, ptr %20, align 4, !tbaa !9
  %5728 = add nsw i32 %5727, 1
  store i32 %5728, ptr %20, align 4, !tbaa !9
  br label %5712, !llvm.loop !133

5729:                                             ; preds = %5712
  %5730 = load i32, ptr %21, align 4, !tbaa !9
  %5731 = sub nsw i32 %5730, 1
  store i32 %5731, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %5732

5732:                                             ; preds = %5743, %5729
  %5733 = load i32, ptr %20, align 4, !tbaa !9
  %5734 = load i32, ptr %14, align 4, !tbaa !9
  %5735 = icmp sle i32 %5733, %5734
  br i1 %5735, label %5736, label %5746

5736:                                             ; preds = %5732
  %5737 = load ptr, ptr %12, align 8, !tbaa !5
  %5738 = load i32, ptr %20, align 4, !tbaa !9
  %5739 = load i32, ptr %28, align 4, !tbaa !9
  %5740 = mul nsw i32 %5738, %5739
  %5741 = sext i32 %5740 to i64
  %5742 = getelementptr inbounds %struct.doublecomplex, ptr %5737, i64 %5741
  call void @zlassq_(ptr noundef %21, ptr noundef %5742, ptr noundef @c__1, ptr noundef %24, ptr noundef %23)
  br label %5743

5743:                                             ; preds = %5736
  %5744 = load i32, ptr %20, align 4, !tbaa !9
  %5745 = add nsw i32 %5744, 1
  store i32 %5745, ptr %20, align 4, !tbaa !9
  br label %5732, !llvm.loop !134

5746:                                             ; preds = %5732
  %5747 = load i32, ptr %21, align 4, !tbaa !9
  %5748 = sub nsw i32 %5747, 2
  store i32 %5748, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %5749

5749:                                             ; preds = %5769, %5746
  %5750 = load i32, ptr %20, align 4, !tbaa !9
  %5751 = load i32, ptr %14, align 4, !tbaa !9
  %5752 = icmp sle i32 %5750, %5751
  br i1 %5752, label %5753, label %5772

5753:                                             ; preds = %5749
  %5754 = load i32, ptr %21, align 4, !tbaa !9
  %5755 = load i32, ptr %20, align 4, !tbaa !9
  %5756 = sub nsw i32 %5754, %5755
  %5757 = sub nsw i32 %5756, 1
  store i32 %5757, ptr %15, align 4, !tbaa !9
  %5758 = load ptr, ptr %12, align 8, !tbaa !5
  %5759 = load i32, ptr %20, align 4, !tbaa !9
  %5760 = add nsw i32 %5759, 1
  %5761 = load i32, ptr %20, align 4, !tbaa !9
  %5762 = load i32, ptr %21, align 4, !tbaa !9
  %5763 = add nsw i32 %5761, %5762
  %5764 = load i32, ptr %28, align 4, !tbaa !9
  %5765 = mul nsw i32 %5763, %5764
  %5766 = add nsw i32 %5760, %5765
  %5767 = sext i32 %5766 to i64
  %5768 = getelementptr inbounds %struct.doublecomplex, ptr %5758, i64 %5767
  call void @zlassq_(ptr noundef %15, ptr noundef %5768, ptr noundef @c__1, ptr noundef %24, ptr noundef %23)
  br label %5769

5769:                                             ; preds = %5753
  %5770 = load i32, ptr %20, align 4, !tbaa !9
  %5771 = add nsw i32 %5770, 1
  store i32 %5771, ptr %20, align 4, !tbaa !9
  br label %5749, !llvm.loop !135

5772:                                             ; preds = %5749
  %5773 = load double, ptr %23, align 8, !tbaa !11
  %5774 = load double, ptr %23, align 8, !tbaa !11
  %5775 = fadd double %5774, %5773
  store double %5775, ptr %23, align 8, !tbaa !11
  %5776 = load i32, ptr %21, align 4, !tbaa !9
  %5777 = load i32, ptr %28, align 4, !tbaa !9
  %5778 = mul nsw i32 %5776, %5777
  store i32 %5778, ptr %22, align 4, !tbaa !9
  %5779 = load i32, ptr %22, align 4, !tbaa !9
  store i32 %5779, ptr %14, align 4, !tbaa !9
  %5780 = load ptr, ptr %12, align 8, !tbaa !5
  %5781 = load i32, ptr %14, align 4, !tbaa !9
  %5782 = sext i32 %5781 to i64
  %5783 = getelementptr inbounds %struct.doublecomplex, ptr %5780, i64 %5782
  %5784 = getelementptr inbounds %struct.doublecomplex, ptr %5783, i32 0, i32 0
  %5785 = load double, ptr %5784, align 8, !tbaa !13
  store double %5785, ptr %27, align 8, !tbaa !11
  %5786 = load double, ptr %27, align 8, !tbaa !11
  %5787 = fcmp une double %5786, 0.000000e+00
  br i1 %5787, label %5788, label %5811

5788:                                             ; preds = %5772
  %5789 = load double, ptr %24, align 8, !tbaa !11
  %5790 = load double, ptr %27, align 8, !tbaa !11
  %5791 = fcmp olt double %5789, %5790
  br i1 %5791, label %5792, label %5802

5792:                                             ; preds = %5788
  %5793 = load double, ptr %24, align 8, !tbaa !11
  %5794 = load double, ptr %27, align 8, !tbaa !11
  %5795 = fdiv double %5793, %5794
  store double %5795, ptr %17, align 8, !tbaa !11
  %5796 = load double, ptr %23, align 8, !tbaa !11
  %5797 = load double, ptr %17, align 8, !tbaa !11
  %5798 = load double, ptr %17, align 8, !tbaa !11
  %5799 = fmul double %5797, %5798
  %5800 = call double @llvm.fmuladd.f64(double %5796, double %5799, double 1.000000e+00)
  store double %5800, ptr %23, align 8, !tbaa !11
  %5801 = load double, ptr %27, align 8, !tbaa !11
  store double %5801, ptr %24, align 8, !tbaa !11
  br label %5810

5802:                                             ; preds = %5788
  %5803 = load double, ptr %27, align 8, !tbaa !11
  %5804 = load double, ptr %24, align 8, !tbaa !11
  %5805 = fdiv double %5803, %5804
  store double %5805, ptr %17, align 8, !tbaa !11
  %5806 = load double, ptr %17, align 8, !tbaa !11
  %5807 = load double, ptr %17, align 8, !tbaa !11
  %5808 = load double, ptr %23, align 8, !tbaa !11
  %5809 = call double @llvm.fmuladd.f64(double %5806, double %5807, double %5808)
  store double %5809, ptr %23, align 8, !tbaa !11
  br label %5810

5810:                                             ; preds = %5802, %5792
  br label %5811

5811:                                             ; preds = %5810, %5772
  %5812 = load i32, ptr %28, align 4, !tbaa !9
  %5813 = load i32, ptr %22, align 4, !tbaa !9
  %5814 = add nsw i32 %5813, %5812
  store i32 %5814, ptr %22, align 4, !tbaa !9
  %5815 = load ptr, ptr %11, align 8, !tbaa !5
  %5816 = load i32, ptr %5815, align 4, !tbaa !9
  %5817 = sub nsw i32 %5816, 1
  store i32 %5817, ptr %14, align 4, !tbaa !9
  %5818 = load i32, ptr %21, align 4, !tbaa !9
  %5819 = add nsw i32 %5818, 1
  store i32 %5819, ptr %20, align 4, !tbaa !9
  br label %5820

5820:                                             ; preds = %5896, %5811
  %5821 = load i32, ptr %20, align 4, !tbaa !9
  %5822 = load i32, ptr %14, align 4, !tbaa !9
  %5823 = icmp sle i32 %5821, %5822
  br i1 %5823, label %5824, label %5899

5824:                                             ; preds = %5820
  %5825 = load i32, ptr %22, align 4, !tbaa !9
  store i32 %5825, ptr %15, align 4, !tbaa !9
  %5826 = load ptr, ptr %12, align 8, !tbaa !5
  %5827 = load i32, ptr %15, align 4, !tbaa !9
  %5828 = sext i32 %5827 to i64
  %5829 = getelementptr inbounds %struct.doublecomplex, ptr %5826, i64 %5828
  %5830 = getelementptr inbounds %struct.doublecomplex, ptr %5829, i32 0, i32 0
  %5831 = load double, ptr %5830, align 8, !tbaa !13
  store double %5831, ptr %27, align 8, !tbaa !11
  %5832 = load double, ptr %27, align 8, !tbaa !11
  %5833 = fcmp une double %5832, 0.000000e+00
  br i1 %5833, label %5834, label %5857

5834:                                             ; preds = %5824
  %5835 = load double, ptr %24, align 8, !tbaa !11
  %5836 = load double, ptr %27, align 8, !tbaa !11
  %5837 = fcmp olt double %5835, %5836
  br i1 %5837, label %5838, label %5848

5838:                                             ; preds = %5834
  %5839 = load double, ptr %24, align 8, !tbaa !11
  %5840 = load double, ptr %27, align 8, !tbaa !11
  %5841 = fdiv double %5839, %5840
  store double %5841, ptr %17, align 8, !tbaa !11
  %5842 = load double, ptr %23, align 8, !tbaa !11
  %5843 = load double, ptr %17, align 8, !tbaa !11
  %5844 = load double, ptr %17, align 8, !tbaa !11
  %5845 = fmul double %5843, %5844
  %5846 = call double @llvm.fmuladd.f64(double %5842, double %5845, double 1.000000e+00)
  store double %5846, ptr %23, align 8, !tbaa !11
  %5847 = load double, ptr %27, align 8, !tbaa !11
  store double %5847, ptr %24, align 8, !tbaa !11
  br label %5856

5848:                                             ; preds = %5834
  %5849 = load double, ptr %27, align 8, !tbaa !11
  %5850 = load double, ptr %24, align 8, !tbaa !11
  %5851 = fdiv double %5849, %5850
  store double %5851, ptr %17, align 8, !tbaa !11
  %5852 = load double, ptr %17, align 8, !tbaa !11
  %5853 = load double, ptr %17, align 8, !tbaa !11
  %5854 = load double, ptr %23, align 8, !tbaa !11
  %5855 = call double @llvm.fmuladd.f64(double %5852, double %5853, double %5854)
  store double %5855, ptr %23, align 8, !tbaa !11
  br label %5856

5856:                                             ; preds = %5848, %5838
  br label %5857

5857:                                             ; preds = %5856, %5824
  %5858 = load i32, ptr %22, align 4, !tbaa !9
  %5859 = add nsw i32 %5858, 1
  store i32 %5859, ptr %15, align 4, !tbaa !9
  %5860 = load ptr, ptr %12, align 8, !tbaa !5
  %5861 = load i32, ptr %15, align 4, !tbaa !9
  %5862 = sext i32 %5861 to i64
  %5863 = getelementptr inbounds %struct.doublecomplex, ptr %5860, i64 %5862
  %5864 = getelementptr inbounds %struct.doublecomplex, ptr %5863, i32 0, i32 0
  %5865 = load double, ptr %5864, align 8, !tbaa !13
  store double %5865, ptr %27, align 8, !tbaa !11
  %5866 = load double, ptr %27, align 8, !tbaa !11
  %5867 = fcmp une double %5866, 0.000000e+00
  br i1 %5867, label %5868, label %5891

5868:                                             ; preds = %5857
  %5869 = load double, ptr %24, align 8, !tbaa !11
  %5870 = load double, ptr %27, align 8, !tbaa !11
  %5871 = fcmp olt double %5869, %5870
  br i1 %5871, label %5872, label %5882

5872:                                             ; preds = %5868
  %5873 = load double, ptr %24, align 8, !tbaa !11
  %5874 = load double, ptr %27, align 8, !tbaa !11
  %5875 = fdiv double %5873, %5874
  store double %5875, ptr %17, align 8, !tbaa !11
  %5876 = load double, ptr %23, align 8, !tbaa !11
  %5877 = load double, ptr %17, align 8, !tbaa !11
  %5878 = load double, ptr %17, align 8, !tbaa !11
  %5879 = fmul double %5877, %5878
  %5880 = call double @llvm.fmuladd.f64(double %5876, double %5879, double 1.000000e+00)
  store double %5880, ptr %23, align 8, !tbaa !11
  %5881 = load double, ptr %27, align 8, !tbaa !11
  store double %5881, ptr %24, align 8, !tbaa !11
  br label %5890

5882:                                             ; preds = %5868
  %5883 = load double, ptr %27, align 8, !tbaa !11
  %5884 = load double, ptr %24, align 8, !tbaa !11
  %5885 = fdiv double %5883, %5884
  store double %5885, ptr %17, align 8, !tbaa !11
  %5886 = load double, ptr %17, align 8, !tbaa !11
  %5887 = load double, ptr %17, align 8, !tbaa !11
  %5888 = load double, ptr %23, align 8, !tbaa !11
  %5889 = call double @llvm.fmuladd.f64(double %5886, double %5887, double %5888)
  store double %5889, ptr %23, align 8, !tbaa !11
  br label %5890

5890:                                             ; preds = %5882, %5872
  br label %5891

5891:                                             ; preds = %5890, %5857
  %5892 = load i32, ptr %22, align 4, !tbaa !9
  %5893 = load i32, ptr %28, align 4, !tbaa !9
  %5894 = add nsw i32 %5892, %5893
  %5895 = add nsw i32 %5894, 1
  store i32 %5895, ptr %22, align 4, !tbaa !9
  br label %5896

5896:                                             ; preds = %5891
  %5897 = load i32, ptr %20, align 4, !tbaa !9
  %5898 = add nsw i32 %5897, 1
  store i32 %5898, ptr %20, align 4, !tbaa !9
  br label %5820, !llvm.loop !136

5899:                                             ; preds = %5820
  %5900 = load i32, ptr %22, align 4, !tbaa !9
  store i32 %5900, ptr %14, align 4, !tbaa !9
  %5901 = load ptr, ptr %12, align 8, !tbaa !5
  %5902 = load i32, ptr %14, align 4, !tbaa !9
  %5903 = sext i32 %5902 to i64
  %5904 = getelementptr inbounds %struct.doublecomplex, ptr %5901, i64 %5903
  %5905 = getelementptr inbounds %struct.doublecomplex, ptr %5904, i32 0, i32 0
  %5906 = load double, ptr %5905, align 8, !tbaa !13
  store double %5906, ptr %27, align 8, !tbaa !11
  %5907 = load double, ptr %27, align 8, !tbaa !11
  %5908 = fcmp une double %5907, 0.000000e+00
  br i1 %5908, label %5909, label %5932

5909:                                             ; preds = %5899
  %5910 = load double, ptr %24, align 8, !tbaa !11
  %5911 = load double, ptr %27, align 8, !tbaa !11
  %5912 = fcmp olt double %5910, %5911
  br i1 %5912, label %5913, label %5923

5913:                                             ; preds = %5909
  %5914 = load double, ptr %24, align 8, !tbaa !11
  %5915 = load double, ptr %27, align 8, !tbaa !11
  %5916 = fdiv double %5914, %5915
  store double %5916, ptr %17, align 8, !tbaa !11
  %5917 = load double, ptr %23, align 8, !tbaa !11
  %5918 = load double, ptr %17, align 8, !tbaa !11
  %5919 = load double, ptr %17, align 8, !tbaa !11
  %5920 = fmul double %5918, %5919
  %5921 = call double @llvm.fmuladd.f64(double %5917, double %5920, double 1.000000e+00)
  store double %5921, ptr %23, align 8, !tbaa !11
  %5922 = load double, ptr %27, align 8, !tbaa !11
  store double %5922, ptr %24, align 8, !tbaa !11
  br label %5931

5923:                                             ; preds = %5909
  %5924 = load double, ptr %27, align 8, !tbaa !11
  %5925 = load double, ptr %24, align 8, !tbaa !11
  %5926 = fdiv double %5924, %5925
  store double %5926, ptr %17, align 8, !tbaa !11
  %5927 = load double, ptr %17, align 8, !tbaa !11
  %5928 = load double, ptr %17, align 8, !tbaa !11
  %5929 = load double, ptr %23, align 8, !tbaa !11
  %5930 = call double @llvm.fmuladd.f64(double %5927, double %5928, double %5929)
  store double %5930, ptr %23, align 8, !tbaa !11
  br label %5931

5931:                                             ; preds = %5923, %5913
  br label %5932

5932:                                             ; preds = %5931, %5899
  br label %6147

5933:                                             ; preds = %5706
  %5934 = load i32, ptr %21, align 4, !tbaa !9
  %5935 = sub nsw i32 %5934, 1
  store i32 %5935, ptr %14, align 4, !tbaa !9
  store i32 1, ptr %20, align 4, !tbaa !9
  br label %5936

5936:                                             ; preds = %5948, %5933
  %5937 = load i32, ptr %20, align 4, !tbaa !9
  %5938 = load i32, ptr %14, align 4, !tbaa !9
  %5939 = icmp sle i32 %5937, %5938
  br i1 %5939, label %5940, label %5951

5940:                                             ; preds = %5936
  %5941 = load ptr, ptr %12, align 8, !tbaa !5
  %5942 = load i32, ptr %20, align 4, !tbaa !9
  %5943 = add nsw i32 %5942, 1
  %5944 = load i32, ptr %28, align 4, !tbaa !9
  %5945 = mul nsw i32 %5943, %5944
  %5946 = sext i32 %5945 to i64
  %5947 = getelementptr inbounds %struct.doublecomplex, ptr %5941, i64 %5946
  call void @zlassq_(ptr noundef %20, ptr noundef %5947, ptr noundef @c__1, ptr noundef %24, ptr noundef %23)
  br label %5948

5948:                                             ; preds = %5940
  %5949 = load i32, ptr %20, align 4, !tbaa !9
  %5950 = add nsw i32 %5949, 1
  store i32 %5950, ptr %20, align 4, !tbaa !9
  br label %5936, !llvm.loop !137

5951:                                             ; preds = %5936
  %5952 = load ptr, ptr %11, align 8, !tbaa !5
  %5953 = load i32, ptr %5952, align 4, !tbaa !9
  store i32 %5953, ptr %14, align 4, !tbaa !9
  %5954 = load i32, ptr %21, align 4, !tbaa !9
  %5955 = add nsw i32 %5954, 1
  store i32 %5955, ptr %20, align 4, !tbaa !9
  br label %5956

5956:                                             ; preds = %5967, %5951
  %5957 = load i32, ptr %20, align 4, !tbaa !9
  %5958 = load i32, ptr %14, align 4, !tbaa !9
  %5959 = icmp sle i32 %5957, %5958
  br i1 %5959, label %5960, label %5970

5960:                                             ; preds = %5956
  %5961 = load ptr, ptr %12, align 8, !tbaa !5
  %5962 = load i32, ptr %20, align 4, !tbaa !9
  %5963 = load i32, ptr %28, align 4, !tbaa !9
  %5964 = mul nsw i32 %5962, %5963
  %5965 = sext i32 %5964 to i64
  %5966 = getelementptr inbounds %struct.doublecomplex, ptr %5961, i64 %5965
  call void @zlassq_(ptr noundef %21, ptr noundef %5966, ptr noundef @c__1, ptr noundef %24, ptr noundef %23)
  br label %5967

5967:                                             ; preds = %5960
  %5968 = load i32, ptr %20, align 4, !tbaa !9
  %5969 = add nsw i32 %5968, 1
  store i32 %5969, ptr %20, align 4, !tbaa !9
  br label %5956, !llvm.loop !138

5970:                                             ; preds = %5956
  %5971 = load i32, ptr %21, align 4, !tbaa !9
  %5972 = sub nsw i32 %5971, 2
  store i32 %5972, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %5973

5973:                                             ; preds = %5991, %5970
  %5974 = load i32, ptr %20, align 4, !tbaa !9
  %5975 = load i32, ptr %14, align 4, !tbaa !9
  %5976 = icmp sle i32 %5974, %5975
  br i1 %5976, label %5977, label %5994

5977:                                             ; preds = %5973
  %5978 = load i32, ptr %21, align 4, !tbaa !9
  %5979 = load i32, ptr %20, align 4, !tbaa !9
  %5980 = sub nsw i32 %5978, %5979
  %5981 = sub nsw i32 %5980, 1
  store i32 %5981, ptr %15, align 4, !tbaa !9
  %5982 = load ptr, ptr %12, align 8, !tbaa !5
  %5983 = load i32, ptr %20, align 4, !tbaa !9
  %5984 = add nsw i32 %5983, 1
  %5985 = load i32, ptr %20, align 4, !tbaa !9
  %5986 = load i32, ptr %28, align 4, !tbaa !9
  %5987 = mul nsw i32 %5985, %5986
  %5988 = add nsw i32 %5984, %5987
  %5989 = sext i32 %5988 to i64
  %5990 = getelementptr inbounds %struct.doublecomplex, ptr %5982, i64 %5989
  call void @zlassq_(ptr noundef %15, ptr noundef %5990, ptr noundef @c__1, ptr noundef %24, ptr noundef %23)
  br label %5991

5991:                                             ; preds = %5977
  %5992 = load i32, ptr %20, align 4, !tbaa !9
  %5993 = add nsw i32 %5992, 1
  store i32 %5993, ptr %20, align 4, !tbaa !9
  br label %5973, !llvm.loop !139

5994:                                             ; preds = %5973
  %5995 = load double, ptr %23, align 8, !tbaa !11
  %5996 = load double, ptr %23, align 8, !tbaa !11
  %5997 = fadd double %5996, %5995
  store double %5997, ptr %23, align 8, !tbaa !11
  store i32 0, ptr %22, align 4, !tbaa !9
  %5998 = load i32, ptr %22, align 4, !tbaa !9
  store i32 %5998, ptr %14, align 4, !tbaa !9
  %5999 = load ptr, ptr %12, align 8, !tbaa !5
  %6000 = load i32, ptr %14, align 4, !tbaa !9
  %6001 = sext i32 %6000 to i64
  %6002 = getelementptr inbounds %struct.doublecomplex, ptr %5999, i64 %6001
  %6003 = getelementptr inbounds %struct.doublecomplex, ptr %6002, i32 0, i32 0
  %6004 = load double, ptr %6003, align 8, !tbaa !13
  store double %6004, ptr %27, align 8, !tbaa !11
  %6005 = load double, ptr %27, align 8, !tbaa !11
  %6006 = fcmp une double %6005, 0.000000e+00
  br i1 %6006, label %6007, label %6030

6007:                                             ; preds = %5994
  %6008 = load double, ptr %24, align 8, !tbaa !11
  %6009 = load double, ptr %27, align 8, !tbaa !11
  %6010 = fcmp olt double %6008, %6009
  br i1 %6010, label %6011, label %6021

6011:                                             ; preds = %6007
  %6012 = load double, ptr %24, align 8, !tbaa !11
  %6013 = load double, ptr %27, align 8, !tbaa !11
  %6014 = fdiv double %6012, %6013
  store double %6014, ptr %17, align 8, !tbaa !11
  %6015 = load double, ptr %23, align 8, !tbaa !11
  %6016 = load double, ptr %17, align 8, !tbaa !11
  %6017 = load double, ptr %17, align 8, !tbaa !11
  %6018 = fmul double %6016, %6017
  %6019 = call double @llvm.fmuladd.f64(double %6015, double %6018, double 1.000000e+00)
  store double %6019, ptr %23, align 8, !tbaa !11
  %6020 = load double, ptr %27, align 8, !tbaa !11
  store double %6020, ptr %24, align 8, !tbaa !11
  br label %6029

6021:                                             ; preds = %6007
  %6022 = load double, ptr %27, align 8, !tbaa !11
  %6023 = load double, ptr %24, align 8, !tbaa !11
  %6024 = fdiv double %6022, %6023
  store double %6024, ptr %17, align 8, !tbaa !11
  %6025 = load double, ptr %17, align 8, !tbaa !11
  %6026 = load double, ptr %17, align 8, !tbaa !11
  %6027 = load double, ptr %23, align 8, !tbaa !11
  %6028 = call double @llvm.fmuladd.f64(double %6025, double %6026, double %6027)
  store double %6028, ptr %23, align 8, !tbaa !11
  br label %6029

6029:                                             ; preds = %6021, %6011
  br label %6030

6030:                                             ; preds = %6029, %5994
  %6031 = load i32, ptr %28, align 4, !tbaa !9
  store i32 %6031, ptr %22, align 4, !tbaa !9
  %6032 = load i32, ptr %21, align 4, !tbaa !9
  %6033 = sub nsw i32 %6032, 2
  store i32 %6033, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %6034

6034:                                             ; preds = %6110, %6030
  %6035 = load i32, ptr %19, align 4, !tbaa !9
  %6036 = load i32, ptr %14, align 4, !tbaa !9
  %6037 = icmp sle i32 %6035, %6036
  br i1 %6037, label %6038, label %6113

6038:                                             ; preds = %6034
  %6039 = load i32, ptr %22, align 4, !tbaa !9
  store i32 %6039, ptr %15, align 4, !tbaa !9
  %6040 = load ptr, ptr %12, align 8, !tbaa !5
  %6041 = load i32, ptr %15, align 4, !tbaa !9
  %6042 = sext i32 %6041 to i64
  %6043 = getelementptr inbounds %struct.doublecomplex, ptr %6040, i64 %6042
  %6044 = getelementptr inbounds %struct.doublecomplex, ptr %6043, i32 0, i32 0
  %6045 = load double, ptr %6044, align 8, !tbaa !13
  store double %6045, ptr %27, align 8, !tbaa !11
  %6046 = load double, ptr %27, align 8, !tbaa !11
  %6047 = fcmp une double %6046, 0.000000e+00
  br i1 %6047, label %6048, label %6071

6048:                                             ; preds = %6038
  %6049 = load double, ptr %24, align 8, !tbaa !11
  %6050 = load double, ptr %27, align 8, !tbaa !11
  %6051 = fcmp olt double %6049, %6050
  br i1 %6051, label %6052, label %6062

6052:                                             ; preds = %6048
  %6053 = load double, ptr %24, align 8, !tbaa !11
  %6054 = load double, ptr %27, align 8, !tbaa !11
  %6055 = fdiv double %6053, %6054
  store double %6055, ptr %17, align 8, !tbaa !11
  %6056 = load double, ptr %23, align 8, !tbaa !11
  %6057 = load double, ptr %17, align 8, !tbaa !11
  %6058 = load double, ptr %17, align 8, !tbaa !11
  %6059 = fmul double %6057, %6058
  %6060 = call double @llvm.fmuladd.f64(double %6056, double %6059, double 1.000000e+00)
  store double %6060, ptr %23, align 8, !tbaa !11
  %6061 = load double, ptr %27, align 8, !tbaa !11
  store double %6061, ptr %24, align 8, !tbaa !11
  br label %6070

6062:                                             ; preds = %6048
  %6063 = load double, ptr %27, align 8, !tbaa !11
  %6064 = load double, ptr %24, align 8, !tbaa !11
  %6065 = fdiv double %6063, %6064
  store double %6065, ptr %17, align 8, !tbaa !11
  %6066 = load double, ptr %17, align 8, !tbaa !11
  %6067 = load double, ptr %17, align 8, !tbaa !11
  %6068 = load double, ptr %23, align 8, !tbaa !11
  %6069 = call double @llvm.fmuladd.f64(double %6066, double %6067, double %6068)
  store double %6069, ptr %23, align 8, !tbaa !11
  br label %6070

6070:                                             ; preds = %6062, %6052
  br label %6071

6071:                                             ; preds = %6070, %6038
  %6072 = load i32, ptr %22, align 4, !tbaa !9
  %6073 = add nsw i32 %6072, 1
  store i32 %6073, ptr %15, align 4, !tbaa !9
  %6074 = load ptr, ptr %12, align 8, !tbaa !5
  %6075 = load i32, ptr %15, align 4, !tbaa !9
  %6076 = sext i32 %6075 to i64
  %6077 = getelementptr inbounds %struct.doublecomplex, ptr %6074, i64 %6076
  %6078 = getelementptr inbounds %struct.doublecomplex, ptr %6077, i32 0, i32 0
  %6079 = load double, ptr %6078, align 8, !tbaa !13
  store double %6079, ptr %27, align 8, !tbaa !11
  %6080 = load double, ptr %27, align 8, !tbaa !11
  %6081 = fcmp une double %6080, 0.000000e+00
  br i1 %6081, label %6082, label %6105

6082:                                             ; preds = %6071
  %6083 = load double, ptr %24, align 8, !tbaa !11
  %6084 = load double, ptr %27, align 8, !tbaa !11
  %6085 = fcmp olt double %6083, %6084
  br i1 %6085, label %6086, label %6096

6086:                                             ; preds = %6082
  %6087 = load double, ptr %24, align 8, !tbaa !11
  %6088 = load double, ptr %27, align 8, !tbaa !11
  %6089 = fdiv double %6087, %6088
  store double %6089, ptr %17, align 8, !tbaa !11
  %6090 = load double, ptr %23, align 8, !tbaa !11
  %6091 = load double, ptr %17, align 8, !tbaa !11
  %6092 = load double, ptr %17, align 8, !tbaa !11
  %6093 = fmul double %6091, %6092
  %6094 = call double @llvm.fmuladd.f64(double %6090, double %6093, double 1.000000e+00)
  store double %6094, ptr %23, align 8, !tbaa !11
  %6095 = load double, ptr %27, align 8, !tbaa !11
  store double %6095, ptr %24, align 8, !tbaa !11
  br label %6104

6096:                                             ; preds = %6082
  %6097 = load double, ptr %27, align 8, !tbaa !11
  %6098 = load double, ptr %24, align 8, !tbaa !11
  %6099 = fdiv double %6097, %6098
  store double %6099, ptr %17, align 8, !tbaa !11
  %6100 = load double, ptr %17, align 8, !tbaa !11
  %6101 = load double, ptr %17, align 8, !tbaa !11
  %6102 = load double, ptr %23, align 8, !tbaa !11
  %6103 = call double @llvm.fmuladd.f64(double %6100, double %6101, double %6102)
  store double %6103, ptr %23, align 8, !tbaa !11
  br label %6104

6104:                                             ; preds = %6096, %6086
  br label %6105

6105:                                             ; preds = %6104, %6071
  %6106 = load i32, ptr %22, align 4, !tbaa !9
  %6107 = load i32, ptr %28, align 4, !tbaa !9
  %6108 = add nsw i32 %6106, %6107
  %6109 = add nsw i32 %6108, 1
  store i32 %6109, ptr %22, align 4, !tbaa !9
  br label %6110

6110:                                             ; preds = %6105
  %6111 = load i32, ptr %19, align 4, !tbaa !9
  %6112 = add nsw i32 %6111, 1
  store i32 %6112, ptr %19, align 4, !tbaa !9
  br label %6034, !llvm.loop !140

6113:                                             ; preds = %6034
  %6114 = load i32, ptr %22, align 4, !tbaa !9
  store i32 %6114, ptr %14, align 4, !tbaa !9
  %6115 = load ptr, ptr %12, align 8, !tbaa !5
  %6116 = load i32, ptr %14, align 4, !tbaa !9
  %6117 = sext i32 %6116 to i64
  %6118 = getelementptr inbounds %struct.doublecomplex, ptr %6115, i64 %6117
  %6119 = getelementptr inbounds %struct.doublecomplex, ptr %6118, i32 0, i32 0
  %6120 = load double, ptr %6119, align 8, !tbaa !13
  store double %6120, ptr %27, align 8, !tbaa !11
  %6121 = load double, ptr %27, align 8, !tbaa !11
  %6122 = fcmp une double %6121, 0.000000e+00
  br i1 %6122, label %6123, label %6146

6123:                                             ; preds = %6113
  %6124 = load double, ptr %24, align 8, !tbaa !11
  %6125 = load double, ptr %27, align 8, !tbaa !11
  %6126 = fcmp olt double %6124, %6125
  br i1 %6126, label %6127, label %6137

6127:                                             ; preds = %6123
  %6128 = load double, ptr %24, align 8, !tbaa !11
  %6129 = load double, ptr %27, align 8, !tbaa !11
  %6130 = fdiv double %6128, %6129
  store double %6130, ptr %17, align 8, !tbaa !11
  %6131 = load double, ptr %23, align 8, !tbaa !11
  %6132 = load double, ptr %17, align 8, !tbaa !11
  %6133 = load double, ptr %17, align 8, !tbaa !11
  %6134 = fmul double %6132, %6133
  %6135 = call double @llvm.fmuladd.f64(double %6131, double %6134, double 1.000000e+00)
  store double %6135, ptr %23, align 8, !tbaa !11
  %6136 = load double, ptr %27, align 8, !tbaa !11
  store double %6136, ptr %24, align 8, !tbaa !11
  br label %6145

6137:                                             ; preds = %6123
  %6138 = load double, ptr %27, align 8, !tbaa !11
  %6139 = load double, ptr %24, align 8, !tbaa !11
  %6140 = fdiv double %6138, %6139
  store double %6140, ptr %17, align 8, !tbaa !11
  %6141 = load double, ptr %17, align 8, !tbaa !11
  %6142 = load double, ptr %17, align 8, !tbaa !11
  %6143 = load double, ptr %23, align 8, !tbaa !11
  %6144 = call double @llvm.fmuladd.f64(double %6141, double %6142, double %6143)
  store double %6144, ptr %23, align 8, !tbaa !11
  br label %6145

6145:                                             ; preds = %6137, %6127
  br label %6146

6146:                                             ; preds = %6145, %6113
  br label %6147

6147:                                             ; preds = %6146, %5932
  br label %6148

6148:                                             ; preds = %6147, %5705
  br label %6149

6149:                                             ; preds = %6148, %5437
  %6150 = load double, ptr %24, align 8, !tbaa !11
  %6151 = load double, ptr %23, align 8, !tbaa !11
  %6152 = call double @sqrt(double noundef %6151) #6
  %6153 = fmul double %6150, %6152
  store double %6153, ptr %25, align 8, !tbaa !11
  br label %6154

6154:                                             ; preds = %6149, %4716
  br label %6155

6155:                                             ; preds = %6154, %4711
  br label %6156

6156:                                             ; preds = %6155, %2372
  %6157 = load double, ptr %25, align 8, !tbaa !11
  store double %6157, ptr %16, align 8, !tbaa !11
  %6158 = load double, ptr %16, align 8, !tbaa !11
  store double %6158, ptr %7, align 8
  store i32 1, ptr %32, align 4
  br label %6159

6159:                                             ; preds = %6156, %110, %92
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #6
  %6160 = load double, ptr %7, align 8
  ret double %6160
}

; 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 @disnan_(ptr noundef) #2

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = !{!14, !12, i64 0}
!14 = !{!"", !12, i64 0, !12, i64 8}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}
!17 = distinct !{!17, !16}
!18 = distinct !{!18, !16}
!19 = distinct !{!19, !16}
!20 = distinct !{!20, !16}
!21 = distinct !{!21, !16}
!22 = distinct !{!22, !16}
!23 = distinct !{!23, !16}
!24 = distinct !{!24, !16}
!25 = distinct !{!25, !16}
!26 = distinct !{!26, !16}
!27 = distinct !{!27, !16}
!28 = distinct !{!28, !16}
!29 = distinct !{!29, !16}
!30 = distinct !{!30, !16}
!31 = distinct !{!31, !16}
!32 = distinct !{!32, !16}
!33 = distinct !{!33, !16}
!34 = distinct !{!34, !16}
!35 = distinct !{!35, !16}
!36 = distinct !{!36, !16}
!37 = distinct !{!37, !16}
!38 = distinct !{!38, !16}
!39 = distinct !{!39, !16}
!40 = distinct !{!40, !16}
!41 = distinct !{!41, !16}
!42 = distinct !{!42, !16}
!43 = distinct !{!43, !16}
!44 = distinct !{!44, !16}
!45 = distinct !{!45, !16}
!46 = distinct !{!46, !16}
!47 = distinct !{!47, !16}
!48 = distinct !{!48, !16}
!49 = distinct !{!49, !16}
!50 = distinct !{!50, !16}
!51 = distinct !{!51, !16}
!52 = distinct !{!52, !16}
!53 = distinct !{!53, !16}
!54 = distinct !{!54, !16}
!55 = distinct !{!55, !16}
!56 = distinct !{!56, !16}
!57 = distinct !{!57, !16}
!58 = !{!7, !7, i64 0}
!59 = distinct !{!59, !16}
!60 = distinct !{!60, !16}
!61 = distinct !{!61, !16}
!62 = distinct !{!62, !16}
!63 = distinct !{!63, !16}
!64 = distinct !{!64, !16}
!65 = distinct !{!65, !16}
!66 = distinct !{!66, !16}
!67 = distinct !{!67, !16}
!68 = distinct !{!68, !16}
!69 = distinct !{!69, !16}
!70 = distinct !{!70, !16}
!71 = distinct !{!71, !16}
!72 = distinct !{!72, !16}
!73 = distinct !{!73, !16}
!74 = distinct !{!74, !16}
!75 = distinct !{!75, !16}
!76 = distinct !{!76, !16}
!77 = distinct !{!77, !16}
!78 = distinct !{!78, !16}
!79 = distinct !{!79, !16}
!80 = distinct !{!80, !16}
!81 = distinct !{!81, !16}
!82 = distinct !{!82, !16}
!83 = distinct !{!83, !16}
!84 = distinct !{!84, !16}
!85 = distinct !{!85, !16}
!86 = distinct !{!86, !16}
!87 = distinct !{!87, !16}
!88 = distinct !{!88, !16}
!89 = distinct !{!89, !16}
!90 = distinct !{!90, !16}
!91 = distinct !{!91, !16}
!92 = distinct !{!92, !16}
!93 = distinct !{!93, !16}
!94 = distinct !{!94, !16}
!95 = distinct !{!95, !16}
!96 = distinct !{!96, !16}
!97 = distinct !{!97, !16}
!98 = distinct !{!98, !16}
!99 = distinct !{!99, !16}
!100 = distinct !{!100, !16}
!101 = distinct !{!101, !16}
!102 = distinct !{!102, !16}
!103 = distinct !{!103, !16}
!104 = distinct !{!104, !16}
!105 = distinct !{!105, !16}
!106 = distinct !{!106, !16}
!107 = distinct !{!107, !16}
!108 = distinct !{!108, !16}
!109 = distinct !{!109, !16}
!110 = distinct !{!110, !16}
!111 = distinct !{!111, !16}
!112 = distinct !{!112, !16}
!113 = distinct !{!113, !16}
!114 = distinct !{!114, !16}
!115 = distinct !{!115, !16}
!116 = distinct !{!116, !16}
!117 = distinct !{!117, !16}
!118 = distinct !{!118, !16}
!119 = distinct !{!119, !16}
!120 = distinct !{!120, !16}
!121 = distinct !{!121, !16}
!122 = distinct !{!122, !16}
!123 = distinct !{!123, !16}
!124 = distinct !{!124, !16}
!125 = distinct !{!125, !16}
!126 = distinct !{!126, !16}
!127 = distinct !{!127, !16}
!128 = distinct !{!128, !16}
!129 = distinct !{!129, !16}
!130 = distinct !{!130, !16}
!131 = distinct !{!131, !16}
!132 = distinct !{!132, !16}
!133 = distinct !{!133, !16}
!134 = distinct !{!134, !16}
!135 = distinct !{!135, !16}
!136 = distinct !{!136, !16}
!137 = distinct !{!137, !16}
!138 = distinct !{!138, !16}
!139 = distinct !{!139, !16}
!140 = distinct !{!140, !16}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.doublecomplex = type { double, double }

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i32, align 4

; Function Attrs: nounwind uwtable
define dso_local double @zlanhf_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr nocapture noundef readonly %3, ptr noundef %4, ptr noundef %5) local_unnamed_addr #0 {
  %7 = alloca i32, align 4
  %8 = alloca double, align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca double, align 8
  %12 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #9
  %13 = load i32, ptr %3, align 4, !tbaa !5
  switch i32 %13, label %19 [
    i32 0, label %.loopexit
    i32 1, label %14
  ]

14:                                               ; preds = %6
  %15 = load double, ptr %4, align 8, !tbaa !9
  %16 = fcmp oge double %15, 0.000000e+00
  %17 = fneg double %15
  %18 = select i1 %16, double %15, double %17
  br label %.loopexit

19:                                               ; preds = %6
  %20 = and i32 %13, 1
  %21 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #9
  %.not = icmp eq i32 %21, 0
  %22 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.1) #9
  %.not1748.not.not.not.not.not.not.not.not = icmp eq i32 %22, 0
  %23 = load i32, ptr %3, align 4, !tbaa !5
  br i1 %.not, label %24, label %26

24:                                               ; preds = %19
  %25 = xor i32 %20, 1
  %spec.select = add i32 %23, %25
  br label %29

26:                                               ; preds = %19
  %27 = add nsw i32 %23, 1
  %28 = sdiv i32 %27, 2
  br label %29

29:                                               ; preds = %24, %26
  %.01641 = phi i32 [ %28, %26 ], [ %spec.select, %24 ]
  %30 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #9
  %.not1750 = icmp eq i32 %30, 0
  br i1 %.not1750, label %966, label %31

31:                                               ; preds = %29
  %32 = load i32, ptr %3, align 4, !tbaa !5
  %33 = add nsw i32 %32, 1
  %34 = sdiv i32 %33, 2
  store i32 %34, ptr %10, align 4, !tbaa !5
  %.not1879 = icmp eq i32 %20, 0
  br i1 %.not1879, label %464, label %35

35:                                               ; preds = %31
  br i1 %.not, label %36, label %224

36:                                               ; preds = %35
  br i1 %.not1748.not.not.not.not.not.not.not.not, label %37, label %125

37:                                               ; preds = %36
  store i32 0, ptr %9, align 4, !tbaa !5
  %38 = load double, ptr %4, align 8, !tbaa !9
  %39 = fcmp oge double %38, 0.000000e+00
  %40 = fneg double %38
  %41 = select i1 %39, double %38, double %40
  store double %41, ptr %8, align 8, !tbaa !12
  %42 = fcmp ogt double %41, 0.000000e+00
  br i1 %42, label %45, label %43

43:                                               ; preds = %37
  %44 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1981 = icmp eq i32 %44, 0
  br i1 %.not1981, label %45, label %._crit_edge3369

._crit_edge3369:                                  ; preds = %43
  %.pre3370 = load double, ptr %8, align 8, !tbaa !12
  br label %45

45:                                               ; preds = %37, %._crit_edge3369, %43
  %.01562 = phi double [ 0.000000e+00, %43 ], [ %.pre3370, %._crit_edge3369 ], [ %41, %37 ]
  %46 = load i32, ptr %3, align 4, !tbaa !5
  %.not1982.not2135 = icmp sgt i32 %46, 1
  br i1 %.not1982.not2135, label %.lr.ph2139, label %._crit_edge2140

.lr.ph2139:                                       ; preds = %45, %59
  %.015452137 = phi i32 [ %60, %59 ], [ 1, %45 ]
  %.115632136 = phi double [ %.21564, %59 ], [ %.01562, %45 ]
  %47 = load i32, ptr %9, align 4, !tbaa !5
  %48 = mul nsw i32 %47, %.01641
  %49 = add nsw i32 %48, %.015452137
  %50 = sext i32 %49 to i64
  %51 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %50
  %52 = call { double, double } @Cd(ptr noundef nonnull %51)
  %53 = extractvalue { double, double } %52, 0
  %54 = extractvalue { double, double } %52, 1
  %55 = call double @cabs(double noundef %53, double noundef %54) #9
  store double %55, ptr %8, align 8, !tbaa !12
  %56 = fcmp olt double %.115632136, %55
  br i1 %56, label %59, label %57

57:                                               ; preds = %.lr.ph2139
  %58 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1991 = icmp eq i32 %58, 0
  br i1 %.not1991, label %59, label %._crit_edge3371

._crit_edge3371:                                  ; preds = %57
  %.pre3372 = load double, ptr %8, align 8, !tbaa !12
  br label %59

59:                                               ; preds = %.lr.ph2139, %._crit_edge3371, %57
  %.21564 = phi double [ %.115632136, %57 ], [ %.pre3372, %._crit_edge3371 ], [ %55, %.lr.ph2139 ]
  %60 = add nuw nsw i32 %.015452137, 1
  %exitcond3018.not = icmp eq i32 %60, %46
  br i1 %exitcond3018.not, label %._crit_edge2140, label %.lr.ph2139, !llvm.loop !13

._crit_edge2140:                                  ; preds = %59, %45
  %.11563.lcssa = phi double [ %.01562, %45 ], [ %.21564, %59 ]
  %61 = load i32, ptr %10, align 4, !tbaa !5
  store i32 1, ptr %9, align 4, !tbaa !5
  %.not1984.not2157 = icmp sgt i32 %61, 1
  br i1 %.not1984.not2157, label %.lr.ph2161, label %.loopexit

.lr.ph2161:                                       ; preds = %._crit_edge2140
  %62 = add i32 %.01641, 1
  br label %63

63:                                               ; preds = %.lr.ph2161, %._crit_edge2155
  %.315652159 = phi double [ %.11563.lcssa, %.lr.ph2161 ], [ %.81570.lcssa, %._crit_edge2155 ]
  %storemerge19832158 = phi i32 [ 1, %.lr.ph2161 ], [ %124, %._crit_edge2155 ]
  %64 = add nsw i32 %storemerge19832158, -2
  store i32 %64, ptr %7, align 4, !tbaa !5
  %.not19852142 = icmp slt i32 %storemerge19832158, 2
  br i1 %.not19852142, label %._crit_edge2147, label %.lr.ph2146

.lr.ph2146:                                       ; preds = %63, %77
  %.12144 = phi i32 [ %78, %77 ], [ 0, %63 ]
  %.415662143 = phi double [ %.51567, %77 ], [ %.315652159, %63 ]
  %65 = load i32, ptr %9, align 4, !tbaa !5
  %66 = mul nsw i32 %65, %.01641
  %67 = add nsw i32 %66, %.12144
  %68 = sext i32 %67 to i64
  %69 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %68
  %70 = call { double, double } @Cd(ptr noundef nonnull %69)
  %71 = extractvalue { double, double } %70, 0
  %72 = extractvalue { double, double } %70, 1
  %73 = call double @cabs(double noundef %71, double noundef %72) #9
  store double %73, ptr %8, align 8, !tbaa !12
  %74 = fcmp olt double %.415662143, %73
  br i1 %74, label %77, label %75

75:                                               ; preds = %.lr.ph2146
  %76 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1990 = icmp eq i32 %76, 0
  br i1 %.not1990, label %77, label %._crit_edge3373

._crit_edge3373:                                  ; preds = %75
  %.pre3374 = load double, ptr %8, align 8, !tbaa !12
  br label %77

77:                                               ; preds = %.lr.ph2146, %._crit_edge3373, %75
  %.51567 = phi double [ %.415662143, %75 ], [ %.pre3374, %._crit_edge3373 ], [ %73, %.lr.ph2146 ]
  %78 = add nuw nsw i32 %.12144, 1
  %79 = load i32, ptr %7, align 4, !tbaa !5
  %.not1985.not = icmp slt i32 %.12144, %79
  br i1 %.not1985.not, label %.lr.ph2146, label %._crit_edge2147.loopexit, !llvm.loop !15

._crit_edge2147.loopexit:                         ; preds = %77
  %.pre3375 = load i32, ptr %9, align 4, !tbaa !5
  br label %._crit_edge2147

._crit_edge2147:                                  ; preds = %._crit_edge2147.loopexit, %63
  %80 = phi i32 [ %storemerge19832158, %63 ], [ %.pre3375, %._crit_edge2147.loopexit ]
  %.41566.lcssa = phi double [ %.315652159, %63 ], [ %.51567, %._crit_edge2147.loopexit ]
  %81 = add nsw i32 %80, -1
  %82 = mul nsw i32 %80, %.01641
  %83 = add nsw i32 %81, %82
  store i32 %83, ptr %7, align 4, !tbaa !5
  %84 = sext i32 %83 to i64
  %85 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %84
  %86 = load double, ptr %85, align 8, !tbaa !9
  %87 = fcmp oge double %86, 0.000000e+00
  %88 = fneg double %86
  %89 = select i1 %87, double %86, double %88
  store double %89, ptr %8, align 8, !tbaa !12
  %90 = fcmp olt double %.41566.lcssa, %89
  br i1 %90, label %93, label %91

91:                                               ; preds = %._crit_edge2147
  %92 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1986 = icmp eq i32 %92, 0
  br i1 %.not1986, label %93, label %._crit_edge3376

._crit_edge3376:                                  ; preds = %91
  %.pre3377 = load double, ptr %8, align 8, !tbaa !12
  br label %93

93:                                               ; preds = %._crit_edge2147, %._crit_edge3376, %91
  %.61568 = phi double [ %.41566.lcssa, %91 ], [ %.pre3377, %._crit_edge3376 ], [ %89, %._crit_edge2147 ]
  %94 = load i32, ptr %9, align 4, !tbaa !5
  %95 = mul i32 %94, %62
  store i32 %95, ptr %7, align 4, !tbaa !5
  %96 = sext i32 %95 to i64
  %97 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %96
  %98 = load double, ptr %97, align 8, !tbaa !9
  %99 = fcmp oge double %98, 0.000000e+00
  %100 = fneg double %98
  %101 = select i1 %99, double %98, double %100
  store double %101, ptr %8, align 8, !tbaa !12
  %102 = fcmp olt double %.61568, %101
  br i1 %102, label %105, label %103

103:                                              ; preds = %93
  %104 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1987 = icmp eq i32 %104, 0
  br i1 %.not1987, label %105, label %._crit_edge3378

._crit_edge3378:                                  ; preds = %103
  %.pre3379 = load double, ptr %8, align 8, !tbaa !12
  br label %105

105:                                              ; preds = %93, %._crit_edge3378, %103
  %.71569 = phi double [ %.61568, %103 ], [ %.pre3379, %._crit_edge3378 ], [ %101, %93 ]
  %106 = load i32, ptr %3, align 4, !tbaa !5
  %107 = add nsw i32 %106, -1
  store i32 %107, ptr %7, align 4, !tbaa !5
  %108 = load i32, ptr %9, align 4, !tbaa !5
  %.not1988.not2150 = icmp slt i32 %108, %107
  br i1 %.not1988.not2150, label %.lr.ph2154, label %._crit_edge2155

.lr.ph2154:                                       ; preds = %105, %121
  %.22152.in = phi i32 [ %.22152, %121 ], [ %108, %105 ]
  %.815702151 = phi double [ %.91571, %121 ], [ %.71569, %105 ]
  %.22152 = add nsw i32 %.22152.in, 1
  %109 = load i32, ptr %9, align 4, !tbaa !5
  %110 = mul nsw i32 %109, %.01641
  %111 = add nsw i32 %110, %.22152
  %112 = sext i32 %111 to i64
  %113 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %112
  %114 = call { double, double } @Cd(ptr noundef nonnull %113)
  %115 = extractvalue { double, double } %114, 0
  %116 = extractvalue { double, double } %114, 1
  %117 = call double @cabs(double noundef %115, double noundef %116) #9
  store double %117, ptr %8, align 8, !tbaa !12
  %118 = fcmp olt double %.815702151, %117
  br i1 %118, label %121, label %119

119:                                              ; preds = %.lr.ph2154
  %120 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1989 = icmp eq i32 %120, 0
  br i1 %.not1989, label %121, label %._crit_edge3380

._crit_edge3380:                                  ; preds = %119
  %.pre3381 = load double, ptr %8, align 8, !tbaa !12
  br label %121

121:                                              ; preds = %.lr.ph2154, %._crit_edge3380, %119
  %.91571 = phi double [ %.815702151, %119 ], [ %.pre3381, %._crit_edge3380 ], [ %117, %.lr.ph2154 ]
  %122 = load i32, ptr %7, align 4, !tbaa !5
  %.not1988.not = icmp slt i32 %.22152, %122
  br i1 %.not1988.not, label %.lr.ph2154, label %._crit_edge2155.loopexit, !llvm.loop !16

._crit_edge2155.loopexit:                         ; preds = %121
  %.pre3382 = load i32, ptr %9, align 4, !tbaa !5
  br label %._crit_edge2155

._crit_edge2155:                                  ; preds = %._crit_edge2155.loopexit, %105
  %123 = phi i32 [ %108, %105 ], [ %.pre3382, %._crit_edge2155.loopexit ]
  %.81570.lcssa = phi double [ %.71569, %105 ], [ %.91571, %._crit_edge2155.loopexit ]
  %124 = add nsw i32 %123, 1
  store i32 %124, ptr %9, align 4, !tbaa !5
  %.not1984.not = icmp slt i32 %124, %61
  br i1 %.not1984.not, label %63, label %.loopexit, !llvm.loop !17

125:                                              ; preds = %36
  %126 = add nsw i32 %34, -2
  store i32 0, ptr %9, align 4, !tbaa !5
  %.not19712120 = icmp slt i32 %32, 3
  br i1 %.not19712120, label %._crit_edge2125, label %.lr.ph2124

.lr.ph2124:                                       ; preds = %125, %._crit_edge2118
  %.1015722122 = phi double [ %.151577.lcssa, %._crit_edge2118 ], [ 0.000000e+00, %125 ]
  %storemerge19702121 = phi i32 [ %194, %._crit_edge2118 ], [ 0, %125 ]
  %127 = load i32, ptr %10, align 4, !tbaa !5
  %128 = add i32 %storemerge19702121, -2
  %129 = add i32 %128, %127
  store i32 %129, ptr %7, align 4, !tbaa !5
  %.not19752105 = icmp slt i32 %129, 0
  br i1 %.not19752105, label %._crit_edge2110, label %.lr.ph2109

.lr.ph2109:                                       ; preds = %.lr.ph2124, %142
  %.32107 = phi i32 [ %143, %142 ], [ 0, %.lr.ph2124 ]
  %.1115732106 = phi double [ %.121574, %142 ], [ %.1015722122, %.lr.ph2124 ]
  %130 = load i32, ptr %9, align 4, !tbaa !5
  %131 = mul nsw i32 %130, %.01641
  %132 = add nsw i32 %131, %.32107
  %133 = sext i32 %132 to i64
  %134 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %133
  %135 = call { double, double } @Cd(ptr noundef %134)
  %136 = extractvalue { double, double } %135, 0
  %137 = extractvalue { double, double } %135, 1
  %138 = call double @cabs(double noundef %136, double noundef %137) #9
  store double %138, ptr %8, align 8, !tbaa !12
  %139 = fcmp olt double %.1115732106, %138
  br i1 %139, label %142, label %140

140:                                              ; preds = %.lr.ph2109
  %141 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1980 = icmp eq i32 %141, 0
  br i1 %.not1980, label %142, label %._crit_edge3352

._crit_edge3352:                                  ; preds = %140
  %.pre3353 = load double, ptr %8, align 8, !tbaa !12
  br label %142

142:                                              ; preds = %.lr.ph2109, %._crit_edge3352, %140
  %.121574 = phi double [ %.1115732106, %140 ], [ %.pre3353, %._crit_edge3352 ], [ %138, %.lr.ph2109 ]
  %143 = add nuw nsw i32 %.32107, 1
  %144 = load i32, ptr %7, align 4, !tbaa !5
  %.not1975.not = icmp slt i32 %.32107, %144
  br i1 %.not1975.not, label %.lr.ph2109, label %._crit_edge2110.loopexit, !llvm.loop !18

._crit_edge2110.loopexit:                         ; preds = %142
  %.pre3354 = load i32, ptr %10, align 4, !tbaa !5
  %.pre3355 = load i32, ptr %9, align 4, !tbaa !5
  br label %._crit_edge2110

._crit_edge2110:                                  ; preds = %._crit_edge2110.loopexit, %.lr.ph2124
  %145 = phi i32 [ %storemerge19702121, %.lr.ph2124 ], [ %.pre3355, %._crit_edge2110.loopexit ]
  %146 = phi i32 [ %127, %.lr.ph2124 ], [ %.pre3354, %._crit_edge2110.loopexit ]
  %.111573.lcssa = phi double [ %.1015722122, %.lr.ph2124 ], [ %.121574, %._crit_edge2110.loopexit ]
  %147 = add nsw i32 %145, %146
  %148 = add nsw i32 %147, -1
  %149 = mul nsw i32 %145, %.01641
  %150 = add nsw i32 %148, %149
  store i32 %150, ptr %7, align 4, !tbaa !5
  %151 = sext i32 %150 to i64
  %152 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %151
  %153 = load double, ptr %152, align 8, !tbaa !9
  %154 = fcmp oge double %153, 0.000000e+00
  %155 = fneg double %153
  %156 = select i1 %154, double %153, double %155
  store double %156, ptr %8, align 8, !tbaa !12
  %157 = fcmp olt double %.111573.lcssa, %156
  br i1 %157, label %160, label %158

158:                                              ; preds = %._crit_edge2110
  %159 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1976 = icmp eq i32 %159, 0
  br i1 %.not1976, label %160, label %._crit_edge3356

._crit_edge3356:                                  ; preds = %158
  %.pre3357 = load double, ptr %8, align 8, !tbaa !12
  br label %160

160:                                              ; preds = %._crit_edge2110, %._crit_edge3356, %158
  %.131575 = phi double [ %.111573.lcssa, %158 ], [ %.pre3357, %._crit_edge3356 ], [ %156, %._crit_edge2110 ]
  %161 = load i32, ptr %9, align 4, !tbaa !5
  %162 = mul nsw i32 %161, %.01641
  %163 = add nsw i32 %162, %147
  store i32 %163, ptr %7, align 4, !tbaa !5
  %164 = sext i32 %163 to i64
  %165 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %164
  %166 = load double, ptr %165, align 8, !tbaa !9
  %167 = fcmp oge double %166, 0.000000e+00
  %168 = fneg double %166
  %169 = select i1 %167, double %166, double %168
  store double %169, ptr %8, align 8, !tbaa !12
  %170 = fcmp olt double %.131575, %169
  br i1 %170, label %173, label %171

171:                                              ; preds = %160
  %172 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1977 = icmp eq i32 %172, 0
  br i1 %.not1977, label %173, label %._crit_edge3358

._crit_edge3358:                                  ; preds = %171
  %.pre3359 = load double, ptr %8, align 8, !tbaa !12
  br label %173

173:                                              ; preds = %160, %._crit_edge3358, %171
  %.141576 = phi double [ %.131575, %171 ], [ %.pre3359, %._crit_edge3358 ], [ %169, %160 ]
  %174 = load i32, ptr %3, align 4, !tbaa !5
  %175 = add nsw i32 %174, -1
  store i32 %175, ptr %7, align 4, !tbaa !5
  %176 = load i32, ptr %10, align 4, !tbaa !5
  %177 = load i32, ptr %9, align 4, !tbaa !5
  %178 = add nsw i32 %177, %176
  %.not1978.not2113 = icmp slt i32 %178, %175
  br i1 %.not1978.not2113, label %.lr.ph2117, label %._crit_edge2118

.lr.ph2117:                                       ; preds = %173, %191
  %.42115.in = phi i32 [ %.42115, %191 ], [ %178, %173 ]
  %.1515772114 = phi double [ %.161578, %191 ], [ %.141576, %173 ]
  %.42115 = add nsw i32 %.42115.in, 1
  %179 = load i32, ptr %9, align 4, !tbaa !5
  %180 = mul nsw i32 %179, %.01641
  %181 = add nsw i32 %180, %.42115
  %182 = sext i32 %181 to i64
  %183 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %182
  %184 = call { double, double } @Cd(ptr noundef %183)
  %185 = extractvalue { double, double } %184, 0
  %186 = extractvalue { double, double } %184, 1
  %187 = call double @cabs(double noundef %185, double noundef %186) #9
  store double %187, ptr %8, align 8, !tbaa !12
  %188 = fcmp olt double %.1515772114, %187
  br i1 %188, label %191, label %189

189:                                              ; preds = %.lr.ph2117
  %190 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1979 = icmp eq i32 %190, 0
  br i1 %.not1979, label %191, label %._crit_edge3360

._crit_edge3360:                                  ; preds = %189
  %.pre3361 = load double, ptr %8, align 8, !tbaa !12
  br label %191

191:                                              ; preds = %.lr.ph2117, %._crit_edge3360, %189
  %.161578 = phi double [ %.1515772114, %189 ], [ %.pre3361, %._crit_edge3360 ], [ %187, %.lr.ph2117 ]
  %192 = load i32, ptr %7, align 4, !tbaa !5
  %.not1978.not = icmp slt i32 %.42115, %192
  br i1 %.not1978.not, label %.lr.ph2117, label %._crit_edge2118.loopexit, !llvm.loop !19

._crit_edge2118.loopexit:                         ; preds = %191
  %.pre3362 = load i32, ptr %9, align 4, !tbaa !5
  br label %._crit_edge2118

._crit_edge2118:                                  ; preds = %._crit_edge2118.loopexit, %173
  %193 = phi i32 [ %177, %173 ], [ %.pre3362, %._crit_edge2118.loopexit ]
  %.151577.lcssa = phi double [ %.141576, %173 ], [ %.161578, %._crit_edge2118.loopexit ]
  %194 = add nsw i32 %193, 1
  store i32 %194, ptr %9, align 4, !tbaa !5
  %.not1971.not = icmp slt i32 %193, %126
  br i1 %.not1971.not, label %.lr.ph2124, label %._crit_edge2125.loopexit, !llvm.loop !20

._crit_edge2125.loopexit:                         ; preds = %._crit_edge2118
  %.pre3363 = load i32, ptr %3, align 4, !tbaa !5
  br label %._crit_edge2125

._crit_edge2125:                                  ; preds = %._crit_edge2125.loopexit, %125
  %195 = phi i32 [ 0, %125 ], [ %194, %._crit_edge2125.loopexit ]
  %196 = phi i32 [ %32, %125 ], [ %.pre3363, %._crit_edge2125.loopexit ]
  %.101572.lcssa = phi double [ 0.000000e+00, %125 ], [ %.151577.lcssa, %._crit_edge2125.loopexit ]
  %.not19722127 = icmp slt i32 %196, 2
  br i1 %.not19722127, label %._crit_edge2132, label %.lr.ph2131.preheader

.lr.ph2131.preheader:                             ; preds = %._crit_edge2125
  %197 = add nsw i32 %196, -1
  br label %.lr.ph2131

.lr.ph2131:                                       ; preds = %.lr.ph2131.preheader, %210
  %.52129 = phi i32 [ %211, %210 ], [ 0, %.lr.ph2131.preheader ]
  %.1715792128 = phi double [ %.181580, %210 ], [ %.101572.lcssa, %.lr.ph2131.preheader ]
  %198 = load i32, ptr %9, align 4, !tbaa !5
  %199 = mul nsw i32 %198, %.01641
  %200 = add nsw i32 %199, %.52129
  %201 = sext i32 %200 to i64
  %202 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %201
  %203 = call { double, double } @Cd(ptr noundef %202)
  %204 = extractvalue { double, double } %203, 0
  %205 = extractvalue { double, double } %203, 1
  %206 = call double @cabs(double noundef %204, double noundef %205) #9
  store double %206, ptr %8, align 8, !tbaa !12
  %207 = fcmp olt double %.1715792128, %206
  br i1 %207, label %210, label %208

208:                                              ; preds = %.lr.ph2131
  %209 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1974 = icmp eq i32 %209, 0
  br i1 %.not1974, label %210, label %._crit_edge3364

._crit_edge3364:                                  ; preds = %208
  %.pre3365 = load double, ptr %8, align 8, !tbaa !12
  br label %210

210:                                              ; preds = %.lr.ph2131, %._crit_edge3364, %208
  %.181580 = phi double [ %.1715792128, %208 ], [ %.pre3365, %._crit_edge3364 ], [ %206, %.lr.ph2131 ]
  %211 = add nuw i32 %.52129, 1
  %exitcond3017.not = icmp eq i32 %211, %197
  br i1 %exitcond3017.not, label %._crit_edge2132.loopexit, label %.lr.ph2131, !llvm.loop !21

._crit_edge2132.loopexit:                         ; preds = %210
  %.pre3366 = load i32, ptr %9, align 4, !tbaa !5
  br label %._crit_edge2132

._crit_edge2132:                                  ; preds = %._crit_edge2132.loopexit, %._crit_edge2125
  %212 = phi i32 [ %195, %._crit_edge2125 ], [ %.pre3366, %._crit_edge2132.loopexit ]
  %.171579.lcssa = phi double [ %.101572.lcssa, %._crit_edge2125 ], [ %.181580, %._crit_edge2132.loopexit ]
  %.5.lcssa = phi i32 [ 0, %._crit_edge2125 ], [ %197, %._crit_edge2132.loopexit ]
  %213 = mul nsw i32 %212, %.01641
  %214 = add nsw i32 %213, %.5.lcssa
  %215 = sext i32 %214 to i64
  %216 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %215
  %217 = load double, ptr %216, align 8, !tbaa !9
  %218 = fcmp oge double %217, 0.000000e+00
  %219 = fneg double %217
  %220 = select i1 %218, double %217, double %219
  store double %220, ptr %8, align 8, !tbaa !12
  %221 = fcmp olt double %.171579.lcssa, %220
  br i1 %221, label %.loopexit, label %222

222:                                              ; preds = %._crit_edge2132
  %223 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1973 = icmp eq i32 %223, 0
  br i1 %.not1973, label %.loopexit, label %._crit_edge3367

._crit_edge3367:                                  ; preds = %222
  %.pre3368 = load double, ptr %8, align 8, !tbaa !12
  br label %.loopexit

224:                                              ; preds = %35
  %225 = add nsw i32 %34, -2
  store i32 0, ptr %9, align 4, !tbaa !5
  %.not19562079 = icmp slt i32 %32, 3
  br i1 %.not1748.not.not.not.not.not.not.not.not, label %226, label %343

226:                                              ; preds = %224
  br i1 %.not19562079, label %._crit_edge2084, label %.lr.ph2083

.lr.ph2083:                                       ; preds = %226
  %227 = add i32 %.01641, 1
  br label %228

228:                                              ; preds = %.lr.ph2083, %._crit_edge2077
  %229 = phi i32 [ 0, %.lr.ph2083 ], [ %291, %._crit_edge2077 ]
  %.1915812081 = phi double [ 0.000000e+00, %.lr.ph2083 ], [ %.241586.lcssa, %._crit_edge2077 ]
  %storemerge19552080 = phi i32 [ -1, %.lr.ph2083 ], [ %290, %._crit_edge2077 ]
  store i32 %storemerge19552080, ptr %7, align 4, !tbaa !5
  %.not19642065 = icmp slt i32 %storemerge19552080, 0
  br i1 %.not19642065, label %._crit_edge2070, label %.lr.ph2069

.lr.ph2069:                                       ; preds = %228, %242
  %.62067 = phi i32 [ %243, %242 ], [ 0, %228 ]
  %.2015822066 = phi double [ %.211583, %242 ], [ %.1915812081, %228 ]
  %230 = load i32, ptr %9, align 4, !tbaa !5
  %231 = mul nsw i32 %230, %.01641
  %232 = add nsw i32 %231, %.62067
  %233 = sext i32 %232 to i64
  %234 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %233
  %235 = call { double, double } @Cd(ptr noundef %234)
  %236 = extractvalue { double, double } %235, 0
  %237 = extractvalue { double, double } %235, 1
  %238 = call double @cabs(double noundef %236, double noundef %237) #9
  store double %238, ptr %8, align 8, !tbaa !12
  %239 = fcmp olt double %.2015822066, %238
  br i1 %239, label %242, label %240

240:                                              ; preds = %.lr.ph2069
  %241 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1969 = icmp eq i32 %241, 0
  br i1 %.not1969, label %242, label %._crit_edge3332

._crit_edge3332:                                  ; preds = %240
  %.pre3333 = load double, ptr %8, align 8, !tbaa !12
  br label %242

242:                                              ; preds = %.lr.ph2069, %._crit_edge3332, %240
  %.211583 = phi double [ %.2015822066, %240 ], [ %.pre3333, %._crit_edge3332 ], [ %238, %.lr.ph2069 ]
  %243 = add nuw nsw i32 %.62067, 1
  %244 = load i32, ptr %7, align 4, !tbaa !5
  %.not1964.not = icmp slt i32 %.62067, %244
  br i1 %.not1964.not, label %.lr.ph2069, label %._crit_edge2070.loopexit, !llvm.loop !22

._crit_edge2070.loopexit:                         ; preds = %242
  %.pre3334 = load i32, ptr %9, align 4, !tbaa !5
  br label %._crit_edge2070

._crit_edge2070:                                  ; preds = %._crit_edge2070.loopexit, %228
  %245 = phi i32 [ %229, %228 ], [ %.pre3334, %._crit_edge2070.loopexit ]
  %.201582.lcssa = phi double [ %.1915812081, %228 ], [ %.211583, %._crit_edge2070.loopexit ]
  %246 = mul i32 %245, %227
  store i32 %246, ptr %7, align 4, !tbaa !5
  %247 = sext i32 %246 to i64
  %248 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %247
  %249 = load double, ptr %248, align 8, !tbaa !9
  %250 = fcmp oge double %249, 0.000000e+00
  %251 = fneg double %249
  %252 = select i1 %250, double %249, double %251
  store double %252, ptr %8, align 8, !tbaa !12
  %253 = fcmp olt double %.201582.lcssa, %252
  br i1 %253, label %256, label %254

254:                                              ; preds = %._crit_edge2070
  %255 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1965 = icmp eq i32 %255, 0
  br i1 %.not1965, label %256, label %._crit_edge3335

._crit_edge3335:                                  ; preds = %254
  %.pre3336 = load double, ptr %8, align 8, !tbaa !12
  br label %256

256:                                              ; preds = %._crit_edge2070, %._crit_edge3335, %254
  %.221584 = phi double [ %.201582.lcssa, %254 ], [ %.pre3336, %._crit_edge3335 ], [ %252, %._crit_edge2070 ]
  %257 = load i32, ptr %9, align 4, !tbaa !5
  %258 = add nsw i32 %257, 1
  %259 = mul nsw i32 %257, %.01641
  %260 = add nsw i32 %258, %259
  store i32 %260, ptr %7, align 4, !tbaa !5
  %261 = sext i32 %260 to i64
  %262 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %261
  %263 = load double, ptr %262, align 8, !tbaa !9
  %264 = fcmp oge double %263, 0.000000e+00
  %265 = fneg double %263
  %266 = select i1 %264, double %263, double %265
  store double %266, ptr %8, align 8, !tbaa !12
  %267 = fcmp olt double %.221584, %266
  br i1 %267, label %270, label %268

268:                                              ; preds = %256
  %269 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1966 = icmp eq i32 %269, 0
  br i1 %.not1966, label %270, label %._crit_edge3337

._crit_edge3337:                                  ; preds = %268
  %.pre3338 = load double, ptr %8, align 8, !tbaa !12
  br label %270

270:                                              ; preds = %256, %._crit_edge3337, %268
  %.231585 = phi double [ %.221584, %268 ], [ %.pre3338, %._crit_edge3337 ], [ %266, %256 ]
  %271 = load i32, ptr %10, align 4, !tbaa !5
  %272 = add nsw i32 %271, -1
  store i32 %272, ptr %7, align 4, !tbaa !5
  %273 = load i32, ptr %9, align 4, !tbaa !5
  %274 = add nsw i32 %273, 2
  %.not19672072.not = icmp slt i32 %274, %271
  br i1 %.not19672072.not, label %.lr.ph2076, label %._crit_edge2077

.lr.ph2076:                                       ; preds = %270, %287
  %.72074 = phi i32 [ %288, %287 ], [ %274, %270 ]
  %.2415862073 = phi double [ %.251587, %287 ], [ %.231585, %270 ]
  %275 = load i32, ptr %9, align 4, !tbaa !5
  %276 = mul nsw i32 %275, %.01641
  %277 = add nsw i32 %276, %.72074
  %278 = sext i32 %277 to i64
  %279 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %278
  %280 = call { double, double } @Cd(ptr noundef %279)
  %281 = extractvalue { double, double } %280, 0
  %282 = extractvalue { double, double } %280, 1
  %283 = call double @cabs(double noundef %281, double noundef %282) #9
  store double %283, ptr %8, align 8, !tbaa !12
  %284 = fcmp olt double %.2415862073, %283
  br i1 %284, label %287, label %285

285:                                              ; preds = %.lr.ph2076
  %286 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1968 = icmp eq i32 %286, 0
  br i1 %.not1968, label %287, label %._crit_edge3339

._crit_edge3339:                                  ; preds = %285
  %.pre3340 = load double, ptr %8, align 8, !tbaa !12
  br label %287

287:                                              ; preds = %.lr.ph2076, %._crit_edge3339, %285
  %.251587 = phi double [ %.2415862073, %285 ], [ %.pre3340, %._crit_edge3339 ], [ %283, %.lr.ph2076 ]
  %288 = add nsw i32 %.72074, 1
  %289 = load i32, ptr %7, align 4, !tbaa !5
  %.not1967.not = icmp slt i32 %.72074, %289
  br i1 %.not1967.not, label %.lr.ph2076, label %._crit_edge2077.loopexit, !llvm.loop !23

._crit_edge2077.loopexit:                         ; preds = %287
  %.pre3341 = load i32, ptr %9, align 4, !tbaa !5
  br label %._crit_edge2077

._crit_edge2077:                                  ; preds = %._crit_edge2077.loopexit, %270
  %290 = phi i32 [ %273, %270 ], [ %.pre3341, %._crit_edge2077.loopexit ]
  %.241586.lcssa = phi double [ %.231585, %270 ], [ %.251587, %._crit_edge2077.loopexit ]
  %291 = add nsw i32 %290, 1
  store i32 %291, ptr %9, align 4, !tbaa !5
  %.not1956.not = icmp slt i32 %290, %225
  br i1 %.not1956.not, label %228, label %._crit_edge2084.loopexit, !llvm.loop !24

._crit_edge2084.loopexit:                         ; preds = %._crit_edge2077
  %.pre3342 = load i32, ptr %10, align 4, !tbaa !5
  br label %._crit_edge2084

._crit_edge2084:                                  ; preds = %._crit_edge2084.loopexit, %226
  %292 = phi i32 [ %34, %226 ], [ %.pre3342, %._crit_edge2084.loopexit ]
  %.191581.lcssa = phi double [ 0.000000e+00, %226 ], [ %.241586.lcssa, %._crit_edge2084.loopexit ]
  %293 = add i32 %292, -1
  store i32 %293, ptr %9, align 4, !tbaa !5
  %.not19572086 = icmp slt i32 %292, 2
  br i1 %.not19572086, label %._crit_edge2091, label %.lr.ph2090

.lr.ph2090:                                       ; preds = %._crit_edge2084, %306
  %.82088 = phi i32 [ %307, %306 ], [ 0, %._crit_edge2084 ]
  %.2615882087 = phi double [ %.271589, %306 ], [ %.191581.lcssa, %._crit_edge2084 ]
  %294 = load i32, ptr %9, align 4, !tbaa !5
  %295 = mul nsw i32 %294, %.01641
  %296 = add nsw i32 %295, %.82088
  %297 = sext i32 %296 to i64
  %298 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %297
  %299 = call { double, double } @Cd(ptr noundef %298)
  %300 = extractvalue { double, double } %299, 0
  %301 = extractvalue { double, double } %299, 1
  %302 = call double @cabs(double noundef %300, double noundef %301) #9
  store double %302, ptr %8, align 8, !tbaa !12
  %303 = fcmp olt double %.2615882087, %302
  br i1 %303, label %306, label %304

304:                                              ; preds = %.lr.ph2090
  %305 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1963 = icmp eq i32 %305, 0
  br i1 %.not1963, label %306, label %._crit_edge3343

._crit_edge3343:                                  ; preds = %304
  %.pre3344 = load double, ptr %8, align 8, !tbaa !12
  br label %306

306:                                              ; preds = %.lr.ph2090, %._crit_edge3343, %304
  %.271589 = phi double [ %.2615882087, %304 ], [ %.pre3344, %._crit_edge3343 ], [ %302, %.lr.ph2090 ]
  %307 = add nuw i32 %.82088, 1
  %exitcond3016.not = icmp eq i32 %307, %293
  br i1 %exitcond3016.not, label %._crit_edge2091.loopexit, label %.lr.ph2090, !llvm.loop !25

._crit_edge2091.loopexit:                         ; preds = %306
  %.pre3345 = load i32, ptr %10, align 4, !tbaa !5
  %.pre3346 = load i32, ptr %9, align 4, !tbaa !5
  %.pre3526 = add nsw i32 %.pre3345, -1
  br label %._crit_edge2091

._crit_edge2091:                                  ; preds = %._crit_edge2091.loopexit, %._crit_edge2084
  %.pre-phi3527 = phi i32 [ %.pre3526, %._crit_edge2091.loopexit ], [ %293, %._crit_edge2084 ]
  %308 = phi i32 [ %.pre3346, %._crit_edge2091.loopexit ], [ %293, %._crit_edge2084 ]
  %.261588.lcssa = phi double [ %.271589, %._crit_edge2091.loopexit ], [ %.191581.lcssa, %._crit_edge2084 ]
  %309 = mul nsw i32 %308, %.01641
  %310 = add nsw i32 %.pre-phi3527, %309
  %311 = sext i32 %310 to i64
  %312 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %311
  %313 = load double, ptr %312, align 8, !tbaa !9
  %314 = fcmp oge double %313, 0.000000e+00
  %315 = fneg double %313
  %316 = select i1 %314, double %313, double %315
  store double %316, ptr %8, align 8, !tbaa !12
  %317 = fcmp olt double %.261588.lcssa, %316
  br i1 %317, label %320, label %318

318:                                              ; preds = %._crit_edge2091
  %319 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1958 = icmp eq i32 %319, 0
  br i1 %.not1958, label %320, label %._crit_edge3347

._crit_edge3347:                                  ; preds = %318
  %.pre3348 = load double, ptr %8, align 8, !tbaa !12
  br label %320

320:                                              ; preds = %._crit_edge2091, %._crit_edge3347, %318
  %.281590 = phi double [ %.261588.lcssa, %318 ], [ %.pre3348, %._crit_edge3347 ], [ %316, %._crit_edge2091 ]
  %321 = load i32, ptr %3, align 4, !tbaa !5
  %322 = load i32, ptr %10, align 4, !tbaa !5
  store i32 %322, ptr %9, align 4, !tbaa !5
  %.not1960.not2100 = icmp slt i32 %322, %321
  br i1 %.not1960.not2100, label %.lr.ph2103, label %.loopexit

.lr.ph2103thread-pre-split:                       ; preds = %._crit_edge2098
  %.pr = load i32, ptr %10, align 4, !tbaa !5
  br label %.lr.ph2103

.lr.ph2103:                                       ; preds = %320, %.lr.ph2103thread-pre-split
  %323 = phi i32 [ %.pr, %.lr.ph2103thread-pre-split ], [ %322, %320 ]
  %324 = phi i32 [ %342, %.lr.ph2103thread-pre-split ], [ %322, %320 ]
  %.2915912101 = phi double [ %.301592.lcssa, %.lr.ph2103thread-pre-split ], [ %.281590, %320 ]
  %325 = add nsw i32 %323, -1
  store i32 %325, ptr %7, align 4, !tbaa !5
  %.not19612093 = icmp slt i32 %323, 1
  br i1 %.not19612093, label %._crit_edge2098, label %.lr.ph2097

.lr.ph2097:                                       ; preds = %.lr.ph2103, %338
  %.92095 = phi i32 [ %339, %338 ], [ 0, %.lr.ph2103 ]
  %.3015922094 = phi double [ %.311593, %338 ], [ %.2915912101, %.lr.ph2103 ]
  %326 = load i32, ptr %9, align 4, !tbaa !5
  %327 = mul nsw i32 %326, %.01641
  %328 = add nsw i32 %327, %.92095
  %329 = sext i32 %328 to i64
  %330 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %329
  %331 = call { double, double } @Cd(ptr noundef %330)
  %332 = extractvalue { double, double } %331, 0
  %333 = extractvalue { double, double } %331, 1
  %334 = call double @cabs(double noundef %332, double noundef %333) #9
  store double %334, ptr %8, align 8, !tbaa !12
  %335 = fcmp olt double %.3015922094, %334
  br i1 %335, label %338, label %336

336:                                              ; preds = %.lr.ph2097
  %337 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1962 = icmp eq i32 %337, 0
  br i1 %.not1962, label %338, label %._crit_edge3349

._crit_edge3349:                                  ; preds = %336
  %.pre3350 = load double, ptr %8, align 8, !tbaa !12
  br label %338

338:                                              ; preds = %.lr.ph2097, %._crit_edge3349, %336
  %.311593 = phi double [ %.3015922094, %336 ], [ %.pre3350, %._crit_edge3349 ], [ %334, %.lr.ph2097 ]
  %339 = add nuw nsw i32 %.92095, 1
  %340 = load i32, ptr %7, align 4, !tbaa !5
  %.not1961.not = icmp slt i32 %.92095, %340
  br i1 %.not1961.not, label %.lr.ph2097, label %._crit_edge2098.loopexit, !llvm.loop !26

._crit_edge2098.loopexit:                         ; preds = %338
  %.pre3351 = load i32, ptr %9, align 4, !tbaa !5
  br label %._crit_edge2098

._crit_edge2098:                                  ; preds = %._crit_edge2098.loopexit, %.lr.ph2103
  %341 = phi i32 [ %324, %.lr.ph2103 ], [ %.pre3351, %._crit_edge2098.loopexit ]
  %.301592.lcssa = phi double [ %.2915912101, %.lr.ph2103 ], [ %.311593, %._crit_edge2098.loopexit ]
  %342 = add nsw i32 %341, 1
  store i32 %342, ptr %9, align 4, !tbaa !5
  %.not1960.not = icmp slt i32 %342, %321
  br i1 %.not1960.not, label %.lr.ph2103thread-pre-split, label %.loopexit, !llvm.loop !27

343:                                              ; preds = %224
  br i1 %.not19562079, label %._crit_edge2036, label %.lr.ph2035

.lr.ph2035:                                       ; preds = %343, %._crit_edge
  %344 = phi i32 [ %363, %._crit_edge ], [ 0, %343 ]
  %.3215942033 = phi double [ %.331595.lcssa, %._crit_edge ], [ 0.000000e+00, %343 ]
  %345 = load i32, ptr %10, align 4, !tbaa !5
  %346 = add nsw i32 %345, -1
  store i32 %346, ptr %7, align 4, !tbaa !5
  %.not19532029 = icmp slt i32 %345, 1
  br i1 %.not19532029, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph2035, %359
  %.102031 = phi i32 [ %360, %359 ], [ 0, %.lr.ph2035 ]
  %.3315952030 = phi double [ %.341596, %359 ], [ %.3215942033, %.lr.ph2035 ]
  %347 = load i32, ptr %9, align 4, !tbaa !5
  %348 = mul nsw i32 %347, %.01641
  %349 = add nsw i32 %348, %.102031
  %350 = sext i32 %349 to i64
  %351 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %350
  %352 = call { double, double } @Cd(ptr noundef %351)
  %353 = extractvalue { double, double } %352, 0
  %354 = extractvalue { double, double } %352, 1
  %355 = call double @cabs(double noundef %353, double noundef %354) #9
  store double %355, ptr %8, align 8, !tbaa !12
  %356 = fcmp olt double %.3315952030, %355
  br i1 %356, label %359, label %357

357:                                              ; preds = %.lr.ph
  %358 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1954 = icmp eq i32 %358, 0
  br i1 %.not1954, label %359, label %._crit_edge3313

._crit_edge3313:                                  ; preds = %357
  %.pre = load double, ptr %8, align 8, !tbaa !12
  br label %359

359:                                              ; preds = %.lr.ph, %._crit_edge3313, %357
  %.341596 = phi double [ %.3315952030, %357 ], [ %.pre, %._crit_edge3313 ], [ %355, %.lr.ph ]
  %360 = add nuw nsw i32 %.102031, 1
  %361 = load i32, ptr %7, align 4, !tbaa !5
  %.not1953.not = icmp slt i32 %.102031, %361
  br i1 %.not1953.not, label %.lr.ph, label %._crit_edge.loopexit, !llvm.loop !28

._crit_edge.loopexit:                             ; preds = %359
  %.pre3314 = load i32, ptr %9, align 4, !tbaa !5
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %.lr.ph2035
  %362 = phi i32 [ %344, %.lr.ph2035 ], [ %.pre3314, %._crit_edge.loopexit ]
  %.331595.lcssa = phi double [ %.3215942033, %.lr.ph2035 ], [ %.341596, %._crit_edge.loopexit ]
  %363 = add nsw i32 %362, 1
  store i32 %363, ptr %9, align 4, !tbaa !5
  %.not1941.not = icmp slt i32 %362, %225
  br i1 %.not1941.not, label %.lr.ph2035, label %._crit_edge2036.loopexit, !llvm.loop !29

._crit_edge2036.loopexit:                         ; preds = %._crit_edge
  %.pre3315 = load i32, ptr %10, align 4, !tbaa !5
  br label %._crit_edge2036

._crit_edge2036:                                  ; preds = %._crit_edge2036.loopexit, %343
  %364 = phi i32 [ %34, %343 ], [ %.pre3315, %._crit_edge2036.loopexit ]
  %.321594.lcssa = phi double [ 0.000000e+00, %343 ], [ %.331595.lcssa, %._crit_edge2036.loopexit ]
  %365 = add nsw i32 %364, -1
  store i32 %365, ptr %9, align 4, !tbaa !5
  %366 = mul nsw i32 %365, %.01641
  %367 = sext i32 %366 to i64
  %368 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %367
  %369 = load double, ptr %368, align 8, !tbaa !9
  %370 = fcmp oge double %369, 0.000000e+00
  %371 = fneg double %369
  %372 = select i1 %370, double %369, double %371
  store double %372, ptr %8, align 8, !tbaa !12
  %373 = fcmp olt double %.321594.lcssa, %372
  br i1 %373, label %376, label %374

374:                                              ; preds = %._crit_edge2036
  %375 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1942 = icmp eq i32 %375, 0
  br i1 %.not1942, label %376, label %._crit_edge3316

._crit_edge3316:                                  ; preds = %374
  %.pre3317 = load double, ptr %8, align 8, !tbaa !12
  br label %376

376:                                              ; preds = %._crit_edge2036, %._crit_edge3316, %374
  %.351597 = phi double [ %.321594.lcssa, %374 ], [ %.pre3317, %._crit_edge3316 ], [ %372, %._crit_edge2036 ]
  %377 = load i32, ptr %10, align 4, !tbaa !5
  %.not1943.not2038 = icmp sgt i32 %377, 1
  br i1 %.not1943.not2038, label %.lr.ph2042, label %._crit_edge2043

.lr.ph2042:                                       ; preds = %376, %390
  %.112040 = phi i32 [ %391, %390 ], [ 1, %376 ]
  %.3615982039 = phi double [ %.371599, %390 ], [ %.351597, %376 ]
  %378 = load i32, ptr %9, align 4, !tbaa !5
  %379 = mul nsw i32 %378, %.01641
  %380 = add nsw i32 %379, %.112040
  %381 = sext i32 %380 to i64
  %382 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %381
  %383 = call { double, double } @Cd(ptr noundef %382)
  %384 = extractvalue { double, double } %383, 0
  %385 = extractvalue { double, double } %383, 1
  %386 = call double @cabs(double noundef %384, double noundef %385) #9
  store double %386, ptr %8, align 8, !tbaa !12
  %387 = fcmp olt double %.3615982039, %386
  br i1 %387, label %390, label %388

388:                                              ; preds = %.lr.ph2042
  %389 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1952 = icmp eq i32 %389, 0
  br i1 %.not1952, label %390, label %._crit_edge3318

._crit_edge3318:                                  ; preds = %388
  %.pre3319 = load double, ptr %8, align 8, !tbaa !12
  br label %390

390:                                              ; preds = %.lr.ph2042, %._crit_edge3318, %388
  %.371599 = phi double [ %.3615982039, %388 ], [ %.pre3319, %._crit_edge3318 ], [ %386, %.lr.ph2042 ]
  %391 = add nuw nsw i32 %.112040, 1
  %exitcond.not = icmp eq i32 %391, %377
  br i1 %exitcond.not, label %._crit_edge2043.loopexit, label %.lr.ph2042, !llvm.loop !30

._crit_edge2043.loopexit:                         ; preds = %390
  %.pre3320 = load i32, ptr %10, align 4, !tbaa !5
  br label %._crit_edge2043

._crit_edge2043:                                  ; preds = %._crit_edge2043.loopexit, %376
  %392 = phi i32 [ %377, %376 ], [ %.pre3320, %._crit_edge2043.loopexit ]
  %.361598.lcssa = phi double [ %.351597, %376 ], [ %.371599, %._crit_edge2043.loopexit ]
  %393 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %392, ptr %9, align 4, !tbaa !5
  %.not1945.not2059 = icmp slt i32 %392, %393
  br i1 %.not1945.not2059, label %.lr.ph2063, label %.loopexit

.lr.ph2063:                                       ; preds = %._crit_edge2043, %._crit_edge2057
  %.3816002061 = phi double [ %.431605.lcssa, %._crit_edge2057 ], [ %.361598.lcssa, %._crit_edge2043 ]
  %storemerge19442060 = phi i32 [ %463, %._crit_edge2057 ], [ %392, %._crit_edge2043 ]
  %394 = load i32, ptr %10, align 4, !tbaa !5
  %395 = xor i32 %394, -1
  %396 = add i32 %storemerge19442060, %395
  store i32 %396, ptr %7, align 4, !tbaa !5
  %.not19462045 = icmp slt i32 %396, 0
  br i1 %.not19462045, label %._crit_edge2050, label %.lr.ph2049

.lr.ph2049:                                       ; preds = %.lr.ph2063, %409
  %.122047 = phi i32 [ %410, %409 ], [ 0, %.lr.ph2063 ]
  %.3916012046 = phi double [ %.401602, %409 ], [ %.3816002061, %.lr.ph2063 ]
  %397 = load i32, ptr %9, align 4, !tbaa !5
  %398 = mul nsw i32 %397, %.01641
  %399 = add nsw i32 %398, %.122047
  %400 = sext i32 %399 to i64
  %401 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %400
  %402 = call { double, double } @Cd(ptr noundef %401)
  %403 = extractvalue { double, double } %402, 0
  %404 = extractvalue { double, double } %402, 1
  %405 = call double @cabs(double noundef %403, double noundef %404) #9
  store double %405, ptr %8, align 8, !tbaa !12
  %406 = fcmp olt double %.3916012046, %405
  br i1 %406, label %409, label %407

407:                                              ; preds = %.lr.ph2049
  %408 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1951 = icmp eq i32 %408, 0
  br i1 %.not1951, label %409, label %._crit_edge3321

._crit_edge3321:                                  ; preds = %407
  %.pre3322 = load double, ptr %8, align 8, !tbaa !12
  br label %409

409:                                              ; preds = %.lr.ph2049, %._crit_edge3321, %407
  %.401602 = phi double [ %.3916012046, %407 ], [ %.pre3322, %._crit_edge3321 ], [ %405, %.lr.ph2049 ]
  %410 = add nuw nsw i32 %.122047, 1
  %411 = load i32, ptr %7, align 4, !tbaa !5
  %.not1946.not = icmp slt i32 %.122047, %411
  br i1 %.not1946.not, label %.lr.ph2049, label %._crit_edge2050.loopexit, !llvm.loop !31

._crit_edge2050.loopexit:                         ; preds = %409
  %.pre3323 = load i32, ptr %9, align 4, !tbaa !5
  %.pre3324 = load i32, ptr %10, align 4, !tbaa !5
  br label %._crit_edge2050

._crit_edge2050:                                  ; preds = %._crit_edge2050.loopexit, %.lr.ph2063
  %412 = phi i32 [ %394, %.lr.ph2063 ], [ %.pre3324, %._crit_edge2050.loopexit ]
  %413 = phi i32 [ %storemerge19442060, %.lr.ph2063 ], [ %.pre3323, %._crit_edge2050.loopexit ]
  %.391601.lcssa = phi double [ %.3816002061, %.lr.ph2063 ], [ %.401602, %._crit_edge2050.loopexit ]
  %414 = sub nsw i32 %413, %412
  %415 = mul nsw i32 %413, %.01641
  %416 = add nsw i32 %414, %415
  store i32 %416, ptr %7, align 4, !tbaa !5
  %417 = sext i32 %416 to i64
  %418 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %417
  %419 = load double, ptr %418, align 8, !tbaa !9
  %420 = fcmp oge double %419, 0.000000e+00
  %421 = fneg double %419
  %422 = select i1 %420, double %419, double %421
  store double %422, ptr %8, align 8, !tbaa !12
  %423 = fcmp olt double %.391601.lcssa, %422
  br i1 %423, label %426, label %424

424:                                              ; preds = %._crit_edge2050
  %425 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1947 = icmp eq i32 %425, 0
  br i1 %.not1947, label %426, label %._crit_edge3325

._crit_edge3325:                                  ; preds = %424
  %.pre3326 = load double, ptr %8, align 8, !tbaa !12
  br label %426

426:                                              ; preds = %._crit_edge2050, %._crit_edge3325, %424
  %.411603 = phi double [ %.391601.lcssa, %424 ], [ %.pre3326, %._crit_edge3325 ], [ %422, %._crit_edge2050 ]
  %427 = load i32, ptr %9, align 4, !tbaa !5
  %428 = load i32, ptr %10, align 4, !tbaa !5
  %429 = mul nsw i32 %427, %.01641
  %430 = add i32 %427, 1
  %431 = sub i32 %430, %428
  %432 = add nsw i32 %431, %429
  store i32 %432, ptr %7, align 4, !tbaa !5
  %433 = sext i32 %432 to i64
  %434 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %433
  %435 = load double, ptr %434, align 8, !tbaa !9
  %436 = fcmp oge double %435, 0.000000e+00
  %437 = fneg double %435
  %438 = select i1 %436, double %435, double %437
  store double %438, ptr %8, align 8, !tbaa !12
  %439 = fcmp olt double %.411603, %438
  br i1 %439, label %442, label %440

440:                                              ; preds = %426
  %441 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1948 = icmp eq i32 %441, 0
  br i1 %.not1948, label %442, label %._crit_edge3327

._crit_edge3327:                                  ; preds = %440
  %.pre3328 = load double, ptr %8, align 8, !tbaa !12
  br label %442

442:                                              ; preds = %426, %._crit_edge3327, %440
  %.421604 = phi double [ %.411603, %440 ], [ %.pre3328, %._crit_edge3327 ], [ %438, %426 ]
  %443 = load i32, ptr %10, align 4, !tbaa !5
  %444 = add nsw i32 %443, -1
  store i32 %444, ptr %7, align 4, !tbaa !5
  %445 = load i32, ptr %9, align 4, !tbaa !5
  %reass.sub = sub i32 %445, %443
  %446 = add i32 %reass.sub, 2
  %.not19492052.not = icmp slt i32 %446, %443
  br i1 %.not19492052.not, label %.lr.ph2056, label %._crit_edge2057

.lr.ph2056:                                       ; preds = %442, %459
  %.132054 = phi i32 [ %460, %459 ], [ %446, %442 ]
  %.4316052053 = phi double [ %.441606, %459 ], [ %.421604, %442 ]
  %447 = load i32, ptr %9, align 4, !tbaa !5
  %448 = mul nsw i32 %447, %.01641
  %449 = add nsw i32 %448, %.132054
  %450 = sext i32 %449 to i64
  %451 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %450
  %452 = call { double, double } @Cd(ptr noundef %451)
  %453 = extractvalue { double, double } %452, 0
  %454 = extractvalue { double, double } %452, 1
  %455 = call double @cabs(double noundef %453, double noundef %454) #9
  store double %455, ptr %8, align 8, !tbaa !12
  %456 = fcmp olt double %.4316052053, %455
  br i1 %456, label %459, label %457

457:                                              ; preds = %.lr.ph2056
  %458 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1950 = icmp eq i32 %458, 0
  br i1 %.not1950, label %459, label %._crit_edge3329

._crit_edge3329:                                  ; preds = %457
  %.pre3330 = load double, ptr %8, align 8, !tbaa !12
  br label %459

459:                                              ; preds = %.lr.ph2056, %._crit_edge3329, %457
  %.441606 = phi double [ %.4316052053, %457 ], [ %.pre3330, %._crit_edge3329 ], [ %455, %.lr.ph2056 ]
  %460 = add nsw i32 %.132054, 1
  %461 = load i32, ptr %7, align 4, !tbaa !5
  %.not1949.not = icmp slt i32 %.132054, %461
  br i1 %.not1949.not, label %.lr.ph2056, label %._crit_edge2057.loopexit, !llvm.loop !32

._crit_edge2057.loopexit:                         ; preds = %459
  %.pre3331 = load i32, ptr %9, align 4, !tbaa !5
  br label %._crit_edge2057

._crit_edge2057:                                  ; preds = %._crit_edge2057.loopexit, %442
  %462 = phi i32 [ %445, %442 ], [ %.pre3331, %._crit_edge2057.loopexit ]
  %.431605.lcssa = phi double [ %.421604, %442 ], [ %.441606, %._crit_edge2057.loopexit ]
  %463 = add nsw i32 %462, 1
  store i32 %463, ptr %9, align 4, !tbaa !5
  %.not1945.not = icmp slt i32 %463, %393
  br i1 %.not1945.not, label %.lr.ph2063, label %.loopexit, !llvm.loop !33

464:                                              ; preds = %31
  br i1 %.not, label %465, label %683

465:                                              ; preds = %464
  br i1 %.not1748.not.not.not.not.not.not.not.not, label %466, label %569

466:                                              ; preds = %465
  store i32 0, ptr %9, align 4, !tbaa !5
  %467 = load double, ptr %4, align 8, !tbaa !9
  %468 = fcmp oge double %467, 0.000000e+00
  %469 = fneg double %467
  %470 = select i1 %468, double %467, double %469
  store double %470, ptr %8, align 8, !tbaa !12
  %471 = fcmp ogt double %470, 0.000000e+00
  br i1 %471, label %474, label %472

472:                                              ; preds = %466
  %473 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1928 = icmp eq i32 %473, 0
  br i1 %.not1928, label %474, label %._crit_edge3456

._crit_edge3456:                                  ; preds = %472
  %.pre3457 = load double, ptr %8, align 8, !tbaa !12
  br label %474

474:                                              ; preds = %466, %._crit_edge3456, %472
  %.451607 = phi double [ 0.000000e+00, %472 ], [ %.pre3457, %._crit_edge3456 ], [ %470, %466 ]
  %475 = load i32, ptr %9, align 4, !tbaa !5
  %476 = add nsw i32 %475, 1
  %477 = mul nsw i32 %475, %.01641
  %478 = add nsw i32 %476, %477
  %479 = sext i32 %478 to i64
  %480 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %479
  %481 = load double, ptr %480, align 8, !tbaa !9
  %482 = fcmp oge double %481, 0.000000e+00
  %483 = fneg double %481
  %484 = select i1 %482, double %481, double %483
  store double %484, ptr %8, align 8, !tbaa !12
  %485 = fcmp olt double %.451607, %484
  br i1 %485, label %488, label %486

486:                                              ; preds = %474
  %487 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1929 = icmp eq i32 %487, 0
  br i1 %.not1929, label %488, label %._crit_edge3458

._crit_edge3458:                                  ; preds = %486
  %.pre3459 = load double, ptr %8, align 8, !tbaa !12
  br label %488

488:                                              ; preds = %474, %._crit_edge3458, %486
  %.461608 = phi double [ %.451607, %486 ], [ %.pre3459, %._crit_edge3458 ], [ %484, %474 ]
  %489 = load i32, ptr %3, align 4, !tbaa !5
  %.not19302290 = icmp slt i32 %489, 2
  br i1 %.not19302290, label %._crit_edge2295, label %.lr.ph2294

.lr.ph2294:                                       ; preds = %488, %502
  %.142292 = phi i32 [ %503, %502 ], [ 2, %488 ]
  %.4716092291 = phi double [ %.481610, %502 ], [ %.461608, %488 ]
  %490 = load i32, ptr %9, align 4, !tbaa !5
  %491 = mul nsw i32 %490, %.01641
  %492 = add nsw i32 %491, %.142292
  %493 = sext i32 %492 to i64
  %494 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %493
  %495 = call { double, double } @Cd(ptr noundef nonnull %494)
  %496 = extractvalue { double, double } %495, 0
  %497 = extractvalue { double, double } %495, 1
  %498 = call double @cabs(double noundef %496, double noundef %497) #9
  store double %498, ptr %8, align 8, !tbaa !12
  %499 = fcmp olt double %.4716092291, %498
  br i1 %499, label %502, label %500

500:                                              ; preds = %.lr.ph2294
  %501 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1939 = icmp eq i32 %501, 0
  br i1 %.not1939, label %502, label %._crit_edge3460

._crit_edge3460:                                  ; preds = %500
  %.pre3461 = load double, ptr %8, align 8, !tbaa !12
  br label %502

502:                                              ; preds = %.lr.ph2294, %._crit_edge3460, %500
  %.481610 = phi double [ %.4716092291, %500 ], [ %.pre3461, %._crit_edge3460 ], [ %498, %.lr.ph2294 ]
  %503 = add nuw i32 %.142292, 1
  %exitcond3024.not = icmp eq i32 %.142292, %489
  br i1 %exitcond3024.not, label %._crit_edge2295, label %.lr.ph2294, !llvm.loop !34

._crit_edge2295:                                  ; preds = %502, %488
  %.471609.lcssa = phi double [ %.461608, %488 ], [ %.481610, %502 ]
  %504 = load i32, ptr %10, align 4, !tbaa !5
  store i32 1, ptr %9, align 4, !tbaa !5
  %.not1932.not2311 = icmp sgt i32 %504, 1
  br i1 %.not1932.not2311, label %.lr.ph2315, label %.loopexit

.lr.ph2315:                                       ; preds = %._crit_edge2295
  %505 = add i32 %.01641, 1
  br label %506

506:                                              ; preds = %.lr.ph2315, %._crit_edge2309
  %507 = phi i32 [ 1, %.lr.ph2315 ], [ %568, %._crit_edge2309 ]
  %.4916112313 = phi double [ %.471609.lcssa, %.lr.ph2315 ], [ %.541616.lcssa, %._crit_edge2309 ]
  %storemerge19312312 = phi i32 [ 0, %.lr.ph2315 ], [ %567, %._crit_edge2309 ]
  store i32 %storemerge19312312, ptr %7, align 4, !tbaa !5
  %.not19332297 = icmp slt i32 %storemerge19312312, 0
  br i1 %.not19332297, label %._crit_edge2302, label %.lr.ph2301

.lr.ph2301:                                       ; preds = %506, %520
  %.152299 = phi i32 [ %521, %520 ], [ 0, %506 ]
  %.5016122298 = phi double [ %.511613, %520 ], [ %.4916112313, %506 ]
  %508 = load i32, ptr %9, align 4, !tbaa !5
  %509 = mul nsw i32 %508, %.01641
  %510 = add nsw i32 %509, %.152299
  %511 = sext i32 %510 to i64
  %512 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %511
  %513 = call { double, double } @Cd(ptr noundef nonnull %512)
  %514 = extractvalue { double, double } %513, 0
  %515 = extractvalue { double, double } %513, 1
  %516 = call double @cabs(double noundef %514, double noundef %515) #9
  store double %516, ptr %8, align 8, !tbaa !12
  %517 = fcmp olt double %.5016122298, %516
  br i1 %517, label %520, label %518

518:                                              ; preds = %.lr.ph2301
  %519 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1938 = icmp eq i32 %519, 0
  br i1 %.not1938, label %520, label %._crit_edge3462

._crit_edge3462:                                  ; preds = %518
  %.pre3463 = load double, ptr %8, align 8, !tbaa !12
  br label %520

520:                                              ; preds = %.lr.ph2301, %._crit_edge3462, %518
  %.511613 = phi double [ %.5016122298, %518 ], [ %.pre3463, %._crit_edge3462 ], [ %516, %.lr.ph2301 ]
  %521 = add nuw nsw i32 %.152299, 1
  %522 = load i32, ptr %7, align 4, !tbaa !5
  %.not1933.not = icmp slt i32 %.152299, %522
  br i1 %.not1933.not, label %.lr.ph2301, label %._crit_edge2302.loopexit, !llvm.loop !35

._crit_edge2302.loopexit:                         ; preds = %520
  %.pre3464 = load i32, ptr %9, align 4, !tbaa !5
  br label %._crit_edge2302

._crit_edge2302:                                  ; preds = %._crit_edge2302.loopexit, %506
  %523 = phi i32 [ %507, %506 ], [ %.pre3464, %._crit_edge2302.loopexit ]
  %.501612.lcssa = phi double [ %.4916112313, %506 ], [ %.511613, %._crit_edge2302.loopexit ]
  %524 = mul i32 %523, %505
  store i32 %524, ptr %7, align 4, !tbaa !5
  %525 = sext i32 %524 to i64
  %526 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %525
  %527 = load double, ptr %526, align 8, !tbaa !9
  %528 = fcmp oge double %527, 0.000000e+00
  %529 = fneg double %527
  %530 = select i1 %528, double %527, double %529
  store double %530, ptr %8, align 8, !tbaa !12
  %531 = fcmp olt double %.501612.lcssa, %530
  br i1 %531, label %534, label %532

532:                                              ; preds = %._crit_edge2302
  %533 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1934 = icmp eq i32 %533, 0
  br i1 %.not1934, label %534, label %._crit_edge3465

._crit_edge3465:                                  ; preds = %532
  %.pre3466 = load double, ptr %8, align 8, !tbaa !12
  br label %534

534:                                              ; preds = %._crit_edge2302, %._crit_edge3465, %532
  %.521614 = phi double [ %.501612.lcssa, %532 ], [ %.pre3466, %._crit_edge3465 ], [ %530, %._crit_edge2302 ]
  %535 = load i32, ptr %9, align 4, !tbaa !5
  %536 = add nsw i32 %535, 1
  %537 = mul nsw i32 %535, %.01641
  %538 = add nsw i32 %536, %537
  store i32 %538, ptr %7, align 4, !tbaa !5
  %539 = sext i32 %538 to i64
  %540 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %539
  %541 = load double, ptr %540, align 8, !tbaa !9
  %542 = fcmp oge double %541, 0.000000e+00
  %543 = fneg double %541
  %544 = select i1 %542, double %541, double %543
  store double %544, ptr %8, align 8, !tbaa !12
  %545 = fcmp olt double %.521614, %544
  br i1 %545, label %548, label %546

546:                                              ; preds = %534
  %547 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1935 = icmp eq i32 %547, 0
  br i1 %.not1935, label %548, label %._crit_edge3467

._crit_edge3467:                                  ; preds = %546
  %.pre3468 = load double, ptr %8, align 8, !tbaa !12
  br label %548

548:                                              ; preds = %534, %._crit_edge3467, %546
  %.531615 = phi double [ %.521614, %546 ], [ %.pre3468, %._crit_edge3467 ], [ %544, %534 ]
  %549 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %549, ptr %7, align 4, !tbaa !5
  %550 = load i32, ptr %9, align 4, !tbaa !5
  %551 = add nsw i32 %550, 2
  %.not19362304 = icmp sgt i32 %551, %549
  br i1 %.not19362304, label %._crit_edge2309, label %.lr.ph2308

.lr.ph2308:                                       ; preds = %548, %564
  %.162306 = phi i32 [ %565, %564 ], [ %551, %548 ]
  %.5416162305 = phi double [ %.551617, %564 ], [ %.531615, %548 ]
  %552 = load i32, ptr %9, align 4, !tbaa !5
  %553 = mul nsw i32 %552, %.01641
  %554 = add nsw i32 %553, %.162306
  %555 = sext i32 %554 to i64
  %556 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %555
  %557 = call { double, double } @Cd(ptr noundef nonnull %556)
  %558 = extractvalue { double, double } %557, 0
  %559 = extractvalue { double, double } %557, 1
  %560 = call double @cabs(double noundef %558, double noundef %559) #9
  store double %560, ptr %8, align 8, !tbaa !12
  %561 = fcmp olt double %.5416162305, %560
  br i1 %561, label %564, label %562

562:                                              ; preds = %.lr.ph2308
  %563 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1937 = icmp eq i32 %563, 0
  br i1 %.not1937, label %564, label %._crit_edge3469

._crit_edge3469:                                  ; preds = %562
  %.pre3470 = load double, ptr %8, align 8, !tbaa !12
  br label %564

564:                                              ; preds = %.lr.ph2308, %._crit_edge3469, %562
  %.551617 = phi double [ %.5416162305, %562 ], [ %.pre3470, %._crit_edge3469 ], [ %560, %.lr.ph2308 ]
  %565 = add nsw i32 %.162306, 1
  %566 = load i32, ptr %7, align 4, !tbaa !5
  %.not1936.not = icmp slt i32 %.162306, %566
  br i1 %.not1936.not, label %.lr.ph2308, label %._crit_edge2309.loopexit, !llvm.loop !36

._crit_edge2309.loopexit:                         ; preds = %564
  %.pre3471 = load i32, ptr %9, align 4, !tbaa !5
  br label %._crit_edge2309

._crit_edge2309:                                  ; preds = %._crit_edge2309.loopexit, %548
  %567 = phi i32 [ %550, %548 ], [ %.pre3471, %._crit_edge2309.loopexit ]
  %.541616.lcssa = phi double [ %.531615, %548 ], [ %.551617, %._crit_edge2309.loopexit ]
  %568 = add nsw i32 %567, 1
  store i32 %568, ptr %9, align 4, !tbaa !5
  %.not1932.not = icmp slt i32 %568, %504
  br i1 %.not1932.not, label %506, label %.loopexit, !llvm.loop !37

569:                                              ; preds = %465
  %570 = add nsw i32 %34, -2
  store i32 0, ptr %9, align 4, !tbaa !5
  %.not19172275 = icmp slt i32 %32, 3
  br i1 %.not19172275, label %._crit_edge2280, label %.lr.ph2279

.lr.ph2279:                                       ; preds = %569, %._crit_edge2273
  %571 = phi i32 [ %639, %._crit_edge2273 ], [ 0, %569 ]
  %.5616182277 = phi double [ %.611623.lcssa, %._crit_edge2273 ], [ 0.000000e+00, %569 ]
  %storemerge19162276 = phi i32 [ %638, %._crit_edge2273 ], [ -1, %569 ]
  %572 = load i32, ptr %10, align 4, !tbaa !5
  %573 = add i32 %storemerge19162276, %572
  store i32 %573, ptr %7, align 4, !tbaa !5
  %.not19222261 = icmp slt i32 %573, 0
  br i1 %.not19222261, label %._crit_edge2266, label %.lr.ph2265

.lr.ph2265:                                       ; preds = %.lr.ph2279, %586
  %.172263 = phi i32 [ %587, %586 ], [ 0, %.lr.ph2279 ]
  %.5716192262 = phi double [ %.581620, %586 ], [ %.5616182277, %.lr.ph2279 ]
  %574 = load i32, ptr %9, align 4, !tbaa !5
  %575 = mul nsw i32 %574, %.01641
  %576 = add nsw i32 %575, %.172263
  %577 = sext i32 %576 to i64
  %578 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %577
  %579 = call { double, double } @Cd(ptr noundef %578)
  %580 = extractvalue { double, double } %579, 0
  %581 = extractvalue { double, double } %579, 1
  %582 = call double @cabs(double noundef %580, double noundef %581) #9
  store double %582, ptr %8, align 8, !tbaa !12
  %583 = fcmp olt double %.5716192262, %582
  br i1 %583, label %586, label %584

584:                                              ; preds = %.lr.ph2265
  %585 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1927 = icmp eq i32 %585, 0
  br i1 %.not1927, label %586, label %._crit_edge3437

._crit_edge3437:                                  ; preds = %584
  %.pre3438 = load double, ptr %8, align 8, !tbaa !12
  br label %586

586:                                              ; preds = %.lr.ph2265, %._crit_edge3437, %584
  %.581620 = phi double [ %.5716192262, %584 ], [ %.pre3438, %._crit_edge3437 ], [ %582, %.lr.ph2265 ]
  %587 = add nuw nsw i32 %.172263, 1
  %588 = load i32, ptr %7, align 4, !tbaa !5
  %.not1922.not = icmp slt i32 %.172263, %588
  br i1 %.not1922.not, label %.lr.ph2265, label %._crit_edge2266.loopexit, !llvm.loop !38

._crit_edge2266.loopexit:                         ; preds = %586
  %.pre3439 = load i32, ptr %10, align 4, !tbaa !5
  %.pre3440 = load i32, ptr %9, align 4, !tbaa !5
  br label %._crit_edge2266

._crit_edge2266:                                  ; preds = %._crit_edge2266.loopexit, %.lr.ph2279
  %589 = phi i32 [ %571, %.lr.ph2279 ], [ %.pre3440, %._crit_edge2266.loopexit ]
  %590 = phi i32 [ %572, %.lr.ph2279 ], [ %.pre3439, %._crit_edge2266.loopexit ]
  %.571619.lcssa = phi double [ %.5616182277, %.lr.ph2279 ], [ %.581620, %._crit_edge2266.loopexit ]
  %591 = add nsw i32 %589, %590
  %592 = mul nsw i32 %589, %.01641
  %593 = add nsw i32 %591, %592
  store i32 %593, ptr %7, align 4, !tbaa !5
  %594 = sext i32 %593 to i64
  %595 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %594
  %596 = load double, ptr %595, align 8, !tbaa !9
  %597 = fcmp oge double %596, 0.000000e+00
  %598 = fneg double %596
  %599 = select i1 %597, double %596, double %598
  store double %599, ptr %8, align 8, !tbaa !12
  %600 = fcmp olt double %.571619.lcssa, %599
  br i1 %600, label %603, label %601

601:                                              ; preds = %._crit_edge2266
  %602 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1923 = icmp eq i32 %602, 0
  br i1 %.not1923, label %603, label %._crit_edge3441

._crit_edge3441:                                  ; preds = %601
  %.pre3442 = load double, ptr %8, align 8, !tbaa !12
  br label %603

603:                                              ; preds = %._crit_edge2266, %._crit_edge3441, %601
  %.591621 = phi double [ %.571619.lcssa, %601 ], [ %.pre3442, %._crit_edge3441 ], [ %599, %._crit_edge2266 ]
  %604 = add nsw i32 %591, 1
  %605 = load i32, ptr %9, align 4, !tbaa !5
  %606 = mul nsw i32 %605, %.01641
  %607 = add nsw i32 %604, %606
  store i32 %607, ptr %7, align 4, !tbaa !5
  %608 = sext i32 %607 to i64
  %609 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %608
  %610 = load double, ptr %609, align 8, !tbaa !9
  %611 = fcmp oge double %610, 0.000000e+00
  %612 = fneg double %610
  %613 = select i1 %611, double %610, double %612
  store double %613, ptr %8, align 8, !tbaa !12
  %614 = fcmp olt double %.591621, %613
  br i1 %614, label %617, label %615

615:                                              ; preds = %603
  %616 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1924 = icmp eq i32 %616, 0
  br i1 %.not1924, label %617, label %._crit_edge3443

._crit_edge3443:                                  ; preds = %615
  %.pre3444 = load double, ptr %8, align 8, !tbaa !12
  br label %617

617:                                              ; preds = %603, %._crit_edge3443, %615
  %.601622 = phi double [ %.591621, %615 ], [ %.pre3444, %._crit_edge3443 ], [ %613, %603 ]
  %618 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %618, ptr %7, align 4, !tbaa !5
  %619 = load i32, ptr %10, align 4, !tbaa !5
  %620 = load i32, ptr %9, align 4, !tbaa !5
  %621 = add i32 %619, 2
  %622 = add i32 %621, %620
  %.not19252268 = icmp sgt i32 %622, %618
  br i1 %.not19252268, label %._crit_edge2273, label %.lr.ph2272

.lr.ph2272:                                       ; preds = %617, %635
  %.182270 = phi i32 [ %636, %635 ], [ %622, %617 ]
  %.6116232269 = phi double [ %.621624, %635 ], [ %.601622, %617 ]
  %623 = load i32, ptr %9, align 4, !tbaa !5
  %624 = mul nsw i32 %623, %.01641
  %625 = add nsw i32 %624, %.182270
  %626 = sext i32 %625 to i64
  %627 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %626
  %628 = call { double, double } @Cd(ptr noundef %627)
  %629 = extractvalue { double, double } %628, 0
  %630 = extractvalue { double, double } %628, 1
  %631 = call double @cabs(double noundef %629, double noundef %630) #9
  store double %631, ptr %8, align 8, !tbaa !12
  %632 = fcmp olt double %.6116232269, %631
  br i1 %632, label %635, label %633

633:                                              ; preds = %.lr.ph2272
  %634 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1926 = icmp eq i32 %634, 0
  br i1 %.not1926, label %635, label %._crit_edge3445

._crit_edge3445:                                  ; preds = %633
  %.pre3446 = load double, ptr %8, align 8, !tbaa !12
  br label %635

635:                                              ; preds = %.lr.ph2272, %._crit_edge3445, %633
  %.621624 = phi double [ %.6116232269, %633 ], [ %.pre3446, %._crit_edge3445 ], [ %631, %.lr.ph2272 ]
  %636 = add nsw i32 %.182270, 1
  %637 = load i32, ptr %7, align 4, !tbaa !5
  %.not1925.not = icmp slt i32 %.182270, %637
  br i1 %.not1925.not, label %.lr.ph2272, label %._crit_edge2273.loopexit, !llvm.loop !39

._crit_edge2273.loopexit:                         ; preds = %635
  %.pre3447 = load i32, ptr %9, align 4, !tbaa !5
  br label %._crit_edge2273

._crit_edge2273:                                  ; preds = %._crit_edge2273.loopexit, %617
  %638 = phi i32 [ %620, %617 ], [ %.pre3447, %._crit_edge2273.loopexit ]
  %.611623.lcssa = phi double [ %.601622, %617 ], [ %.621624, %._crit_edge2273.loopexit ]
  %639 = add nsw i32 %638, 1
  store i32 %639, ptr %9, align 4, !tbaa !5
  %.not1917.not = icmp slt i32 %638, %570
  br i1 %.not1917.not, label %.lr.ph2279, label %._crit_edge2280.loopexit, !llvm.loop !40

._crit_edge2280.loopexit:                         ; preds = %._crit_edge2273
  %.pre3448 = load i32, ptr %3, align 4, !tbaa !5
  br label %._crit_edge2280

._crit_edge2280:                                  ; preds = %._crit_edge2280.loopexit, %569
  %640 = phi i32 [ 0, %569 ], [ %639, %._crit_edge2280.loopexit ]
  %641 = phi i32 [ %32, %569 ], [ %.pre3448, %._crit_edge2280.loopexit ]
  %.561618.lcssa = phi double [ 0.000000e+00, %569 ], [ %.611623.lcssa, %._crit_edge2280.loopexit ]
  %.not19182282 = icmp slt i32 %641, 2
  br i1 %.not19182282, label %._crit_edge2287, label %.lr.ph2286.preheader

.lr.ph2286.preheader:                             ; preds = %._crit_edge2280
  %642 = add nsw i32 %641, -1
  br label %.lr.ph2286

.lr.ph2286:                                       ; preds = %.lr.ph2286.preheader, %655
  %.192284 = phi i32 [ %656, %655 ], [ 0, %.lr.ph2286.preheader ]
  %.6316252283 = phi double [ %.641626, %655 ], [ %.561618.lcssa, %.lr.ph2286.preheader ]
  %643 = load i32, ptr %9, align 4, !tbaa !5
  %644 = mul nsw i32 %643, %.01641
  %645 = add nsw i32 %644, %.192284
  %646 = sext i32 %645 to i64
  %647 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %646
  %648 = call { double, double } @Cd(ptr noundef %647)
  %649 = extractvalue { double, double } %648, 0
  %650 = extractvalue { double, double } %648, 1
  %651 = call double @cabs(double noundef %649, double noundef %650) #9
  store double %651, ptr %8, align 8, !tbaa !12
  %652 = fcmp olt double %.6316252283, %651
  br i1 %652, label %655, label %653

653:                                              ; preds = %.lr.ph2286
  %654 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1921 = icmp eq i32 %654, 0
  br i1 %.not1921, label %655, label %._crit_edge3449

._crit_edge3449:                                  ; preds = %653
  %.pre3450 = load double, ptr %8, align 8, !tbaa !12
  br label %655

655:                                              ; preds = %.lr.ph2286, %._crit_edge3449, %653
  %.641626 = phi double [ %.6316252283, %653 ], [ %.pre3450, %._crit_edge3449 ], [ %651, %.lr.ph2286 ]
  %656 = add nuw i32 %.192284, 1
  %exitcond3023.not = icmp eq i32 %656, %642
  br i1 %exitcond3023.not, label %._crit_edge2287.loopexit, label %.lr.ph2286, !llvm.loop !41

._crit_edge2287.loopexit:                         ; preds = %655
  %.pre3451 = load i32, ptr %9, align 4, !tbaa !5
  br label %._crit_edge2287

._crit_edge2287:                                  ; preds = %._crit_edge2287.loopexit, %._crit_edge2280
  %657 = phi i32 [ %640, %._crit_edge2280 ], [ %.pre3451, %._crit_edge2287.loopexit ]
  %.631625.lcssa = phi double [ %.561618.lcssa, %._crit_edge2280 ], [ %.641626, %._crit_edge2287.loopexit ]
  %.19.lcssa = phi i32 [ 0, %._crit_edge2280 ], [ %642, %._crit_edge2287.loopexit ]
  %658 = mul nsw i32 %657, %.01641
  %659 = add nsw i32 %658, %.19.lcssa
  %660 = sext i32 %659 to i64
  %661 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %660
  %662 = load double, ptr %661, align 8, !tbaa !9
  %663 = fcmp oge double %662, 0.000000e+00
  %664 = fneg double %662
  %665 = select i1 %663, double %662, double %664
  store double %665, ptr %8, align 8, !tbaa !12
  %666 = fcmp olt double %.631625.lcssa, %665
  br i1 %666, label %669, label %667

667:                                              ; preds = %._crit_edge2287
  %668 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1919 = icmp eq i32 %668, 0
  br i1 %.not1919, label %669, label %._crit_edge3452

._crit_edge3452:                                  ; preds = %667
  %.pre3453 = load double, ptr %8, align 8, !tbaa !12
  br label %669

669:                                              ; preds = %._crit_edge2287, %._crit_edge3452, %667
  %.651627 = phi double [ %.631625.lcssa, %667 ], [ %.pre3453, %._crit_edge3452 ], [ %665, %._crit_edge2287 ]
  %670 = load i32, ptr %3, align 4, !tbaa !5
  %671 = load i32, ptr %9, align 4, !tbaa !5
  %672 = mul nsw i32 %671, %.01641
  %673 = add nsw i32 %672, %670
  %674 = sext i32 %673 to i64
  %675 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %674
  %676 = load double, ptr %675, align 8, !tbaa !9
  %677 = fcmp oge double %676, 0.000000e+00
  %678 = fneg double %676
  %679 = select i1 %677, double %676, double %678
  store double %679, ptr %8, align 8, !tbaa !12
  %680 = fcmp olt double %.651627, %679
  br i1 %680, label %.loopexit, label %681

681:                                              ; preds = %669
  %682 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1920 = icmp eq i32 %682, 0
  br i1 %.not1920, label %.loopexit, label %._crit_edge3454

._crit_edge3454:                                  ; preds = %681
  %.pre3455 = load double, ptr %8, align 8, !tbaa !12
  br label %.loopexit

683:                                              ; preds = %464
  store i32 0, ptr %9, align 4, !tbaa !5
  br i1 %.not1748.not.not.not.not.not.not.not.not, label %684, label %.preheader2025

.preheader2025:                                   ; preds = %683
  %.not1881.not2170 = icmp sgt i32 %32, 0
  br i1 %.not1881.not2170, label %.lr.ph2172, label %._crit_edge2173

684:                                              ; preds = %683
  %685 = load double, ptr %4, align 8, !tbaa !9
  %686 = fcmp oge double %685, 0.000000e+00
  %687 = fneg double %685
  %688 = select i1 %686, double %685, double %687
  store double %688, ptr %8, align 8, !tbaa !12
  %689 = fcmp ogt double %688, 0.000000e+00
  br i1 %689, label %692, label %690

690:                                              ; preds = %684
  %691 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1898 = icmp eq i32 %691, 0
  br i1 %.not1898, label %692, label %._crit_edge3411

._crit_edge3411:                                  ; preds = %690
  %.pre3412 = load double, ptr %8, align 8, !tbaa !12
  br label %692

692:                                              ; preds = %684, %._crit_edge3411, %690
  %.661628 = phi double [ 0.000000e+00, %690 ], [ %.pre3412, %._crit_edge3411 ], [ %688, %684 ]
  %693 = load i32, ptr %10, align 4, !tbaa !5
  %.not1899.not2212 = icmp sgt i32 %693, 1
  br i1 %.not1899.not2212, label %.lr.ph2216, label %._crit_edge2239.thread

.lr.ph2216:                                       ; preds = %692, %706
  %.202214 = phi i32 [ %707, %706 ], [ 1, %692 ]
  %.6716292213 = phi double [ %.681630, %706 ], [ %.661628, %692 ]
  %694 = load i32, ptr %9, align 4, !tbaa !5
  %695 = mul nsw i32 %694, %.01641
  %696 = add nsw i32 %695, %.202214
  %697 = sext i32 %696 to i64
  %698 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %697
  %699 = call { double, double } @Cd(ptr noundef nonnull %698)
  %700 = extractvalue { double, double } %699, 0
  %701 = extractvalue { double, double } %699, 1
  %702 = call double @cabs(double noundef %700, double noundef %701) #9
  store double %702, ptr %8, align 8, !tbaa !12
  %703 = fcmp olt double %.6716292213, %702
  br i1 %703, label %706, label %704

704:                                              ; preds = %.lr.ph2216
  %705 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1915 = icmp eq i32 %705, 0
  br i1 %.not1915, label %706, label %._crit_edge3413

._crit_edge3413:                                  ; preds = %704
  %.pre3414 = load double, ptr %8, align 8, !tbaa !12
  br label %706

706:                                              ; preds = %.lr.ph2216, %._crit_edge3413, %704
  %.681630 = phi double [ %.6716292213, %704 ], [ %.pre3414, %._crit_edge3413 ], [ %702, %.lr.ph2216 ]
  %707 = add nuw nsw i32 %.202214, 1
  %exitcond3021.not = icmp eq i32 %707, %693
  br i1 %exitcond3021.not, label %._crit_edge2217, label %.lr.ph2216, !llvm.loop !42

._crit_edge2217:                                  ; preds = %706
  %.pre3415 = load i32, ptr %10, align 4, !tbaa !5
  store i32 1, ptr %9, align 4, !tbaa !5
  %.not1901.not2234 = icmp sgt i32 %.pre3415, 1
  br i1 %.not1901.not2234, label %.lr.ph2238, label %._crit_edge2239.thread

.lr.ph2238:                                       ; preds = %._crit_edge2217
  %708 = add i32 %.01641, 1
  br label %709

709:                                              ; preds = %.lr.ph2238, %._crit_edge2232
  %.6916312236 = phi double [ %.681630, %.lr.ph2238 ], [ %.741636.lcssa, %._crit_edge2232 ]
  %storemerge19002235 = phi i32 [ 1, %.lr.ph2238 ], [ %770, %._crit_edge2232 ]
  %710 = add nsw i32 %storemerge19002235, -2
  store i32 %710, ptr %7, align 4, !tbaa !5
  %.not19092219 = icmp slt i32 %storemerge19002235, 2
  br i1 %.not19092219, label %._crit_edge2224, label %.lr.ph2223

.lr.ph2223:                                       ; preds = %709, %723
  %.212221 = phi i32 [ %724, %723 ], [ 0, %709 ]
  %.7016322220 = phi double [ %.711633, %723 ], [ %.6916312236, %709 ]
  %711 = load i32, ptr %9, align 4, !tbaa !5
  %712 = mul nsw i32 %711, %.01641
  %713 = add nsw i32 %712, %.212221
  %714 = sext i32 %713 to i64
  %715 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %714
  %716 = call { double, double } @Cd(ptr noundef nonnull %715)
  %717 = extractvalue { double, double } %716, 0
  %718 = extractvalue { double, double } %716, 1
  %719 = call double @cabs(double noundef %717, double noundef %718) #9
  store double %719, ptr %8, align 8, !tbaa !12
  %720 = fcmp olt double %.7016322220, %719
  br i1 %720, label %723, label %721

721:                                              ; preds = %.lr.ph2223
  %722 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1914 = icmp eq i32 %722, 0
  br i1 %.not1914, label %723, label %._crit_edge3416

._crit_edge3416:                                  ; preds = %721
  %.pre3417 = load double, ptr %8, align 8, !tbaa !12
  br label %723

723:                                              ; preds = %.lr.ph2223, %._crit_edge3416, %721
  %.711633 = phi double [ %.7016322220, %721 ], [ %.pre3417, %._crit_edge3416 ], [ %719, %.lr.ph2223 ]
  %724 = add nuw nsw i32 %.212221, 1
  %725 = load i32, ptr %7, align 4, !tbaa !5
  %.not1909.not = icmp slt i32 %.212221, %725
  br i1 %.not1909.not, label %.lr.ph2223, label %._crit_edge2224.loopexit, !llvm.loop !43

._crit_edge2224.loopexit:                         ; preds = %723
  %.pre3418 = load i32, ptr %9, align 4, !tbaa !5
  br label %._crit_edge2224

._crit_edge2224:                                  ; preds = %._crit_edge2224.loopexit, %709
  %726 = phi i32 [ %storemerge19002235, %709 ], [ %.pre3418, %._crit_edge2224.loopexit ]
  %.701632.lcssa = phi double [ %.6916312236, %709 ], [ %.711633, %._crit_edge2224.loopexit ]
  %727 = add nsw i32 %726, -1
  %728 = mul nsw i32 %726, %.01641
  %729 = add nsw i32 %727, %728
  store i32 %729, ptr %7, align 4, !tbaa !5
  %730 = sext i32 %729 to i64
  %731 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %730
  %732 = load double, ptr %731, align 8, !tbaa !9
  %733 = fcmp oge double %732, 0.000000e+00
  %734 = fneg double %732
  %735 = select i1 %733, double %732, double %734
  store double %735, ptr %8, align 8, !tbaa !12
  %736 = fcmp olt double %.701632.lcssa, %735
  br i1 %736, label %739, label %737

737:                                              ; preds = %._crit_edge2224
  %738 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1910 = icmp eq i32 %738, 0
  br i1 %.not1910, label %739, label %._crit_edge3419

._crit_edge3419:                                  ; preds = %737
  %.pre3420 = load double, ptr %8, align 8, !tbaa !12
  br label %739

739:                                              ; preds = %._crit_edge2224, %._crit_edge3419, %737
  %.721634 = phi double [ %.701632.lcssa, %737 ], [ %.pre3420, %._crit_edge3419 ], [ %735, %._crit_edge2224 ]
  %740 = load i32, ptr %9, align 4, !tbaa !5
  %741 = mul i32 %740, %708
  store i32 %741, ptr %7, align 4, !tbaa !5
  %742 = sext i32 %741 to i64
  %743 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %742
  %744 = load double, ptr %743, align 8, !tbaa !9
  %745 = fcmp oge double %744, 0.000000e+00
  %746 = fneg double %744
  %747 = select i1 %745, double %744, double %746
  store double %747, ptr %8, align 8, !tbaa !12
  %748 = fcmp olt double %.721634, %747
  br i1 %748, label %751, label %749

749:                                              ; preds = %739
  %750 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1911 = icmp eq i32 %750, 0
  br i1 %.not1911, label %751, label %._crit_edge3421

._crit_edge3421:                                  ; preds = %749
  %.pre3422 = load double, ptr %8, align 8, !tbaa !12
  br label %751

751:                                              ; preds = %739, %._crit_edge3421, %749
  %.731635 = phi double [ %.721634, %749 ], [ %.pre3422, %._crit_edge3421 ], [ %747, %739 ]
  %752 = load i32, ptr %10, align 4, !tbaa !5
  %753 = add nsw i32 %752, -1
  store i32 %753, ptr %7, align 4, !tbaa !5
  %754 = load i32, ptr %9, align 4, !tbaa !5
  %.not1912.not2227 = icmp slt i32 %754, %753
  br i1 %.not1912.not2227, label %.lr.ph2231, label %._crit_edge2232

.lr.ph2231:                                       ; preds = %751, %767
  %.222229.in = phi i32 [ %.222229, %767 ], [ %754, %751 ]
  %.7416362228 = phi double [ %.751637, %767 ], [ %.731635, %751 ]
  %.222229 = add nsw i32 %.222229.in, 1
  %755 = load i32, ptr %9, align 4, !tbaa !5
  %756 = mul nsw i32 %755, %.01641
  %757 = add nsw i32 %756, %.222229
  %758 = sext i32 %757 to i64
  %759 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %758
  %760 = call { double, double } @Cd(ptr noundef nonnull %759)
  %761 = extractvalue { double, double } %760, 0
  %762 = extractvalue { double, double } %760, 1
  %763 = call double @cabs(double noundef %761, double noundef %762) #9
  store double %763, ptr %8, align 8, !tbaa !12
  %764 = fcmp olt double %.7416362228, %763
  br i1 %764, label %767, label %765

765:                                              ; preds = %.lr.ph2231
  %766 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1913 = icmp eq i32 %766, 0
  br i1 %.not1913, label %767, label %._crit_edge3423

._crit_edge3423:                                  ; preds = %765
  %.pre3424 = load double, ptr %8, align 8, !tbaa !12
  br label %767

767:                                              ; preds = %.lr.ph2231, %._crit_edge3423, %765
  %.751637 = phi double [ %.7416362228, %765 ], [ %.pre3424, %._crit_edge3423 ], [ %763, %.lr.ph2231 ]
  %768 = load i32, ptr %7, align 4, !tbaa !5
  %.not1912.not = icmp slt i32 %.222229, %768
  br i1 %.not1912.not, label %.lr.ph2231, label %._crit_edge2232.loopexit, !llvm.loop !44

._crit_edge2232.loopexit:                         ; preds = %767
  %.pre3425 = load i32, ptr %9, align 4, !tbaa !5
  br label %._crit_edge2232

._crit_edge2232:                                  ; preds = %._crit_edge2232.loopexit, %751
  %769 = phi i32 [ %754, %751 ], [ %.pre3425, %._crit_edge2232.loopexit ]
  %.741636.lcssa = phi double [ %.731635, %751 ], [ %.751637, %._crit_edge2232.loopexit ]
  %770 = add nsw i32 %769, 1
  store i32 %770, ptr %9, align 4, !tbaa !5
  %.not1901.not = icmp slt i32 %770, %.pre3415
  br i1 %.not1901.not, label %709, label %._crit_edge2239, !llvm.loop !45

._crit_edge2239.thread:                           ; preds = %692, %._crit_edge2217
  %.ph = phi i32 [ %.pre3415, %._crit_edge2217 ], [ %693, %692 ]
  %.691631.lcssa.ph = phi double [ %.681630, %._crit_edge2217 ], [ %.661628, %692 ]
  store i32 %.ph, ptr %9, align 4, !tbaa !5
  br label %._crit_edge2246

._crit_edge2239:                                  ; preds = %._crit_edge2232
  %.pre3426 = load i32, ptr %10, align 4, !tbaa !5
  store i32 %.pre3426, ptr %9, align 4, !tbaa !5
  %.not19022241 = icmp slt i32 %.pre3426, 2
  br i1 %.not19022241, label %._crit_edge2246, label %.lr.ph2245.preheader

.lr.ph2245.preheader:                             ; preds = %._crit_edge2239
  %771 = add nsw i32 %.pre3426, -2
  br label %.lr.ph2245

.lr.ph2245:                                       ; preds = %.lr.ph2245.preheader, %784
  %.232243 = phi i32 [ %785, %784 ], [ 0, %.lr.ph2245.preheader ]
  %.7616382242 = phi double [ %.771639, %784 ], [ %.741636.lcssa, %.lr.ph2245.preheader ]
  %772 = load i32, ptr %9, align 4, !tbaa !5
  %773 = mul nsw i32 %772, %.01641
  %774 = add nsw i32 %773, %.232243
  %775 = sext i32 %774 to i64
  %776 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %775
  %777 = call { double, double } @Cd(ptr noundef nonnull %776)
  %778 = extractvalue { double, double } %777, 0
  %779 = extractvalue { double, double } %777, 1
  %780 = call double @cabs(double noundef %778, double noundef %779) #9
  store double %780, ptr %8, align 8, !tbaa !12
  %781 = fcmp olt double %.7616382242, %780
  br i1 %781, label %784, label %782

782:                                              ; preds = %.lr.ph2245
  %783 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1908 = icmp eq i32 %783, 0
  br i1 %.not1908, label %784, label %._crit_edge3427

._crit_edge3427:                                  ; preds = %782
  %.pre3428 = load double, ptr %8, align 8, !tbaa !12
  br label %784

784:                                              ; preds = %.lr.ph2245, %._crit_edge3427, %782
  %.771639 = phi double [ %.7616382242, %782 ], [ %.pre3428, %._crit_edge3427 ], [ %780, %.lr.ph2245 ]
  %785 = add nuw i32 %.232243, 1
  %exitcond3022.not = icmp eq i32 %.232243, %771
  br i1 %exitcond3022.not, label %._crit_edge2246.loopexit, label %.lr.ph2245, !llvm.loop !46

._crit_edge2246.loopexit:                         ; preds = %784
  %.pre3429 = load i32, ptr %10, align 4, !tbaa !5
  %.pre3430 = load i32, ptr %9, align 4, !tbaa !5
  br label %._crit_edge2246

._crit_edge2246:                                  ; preds = %._crit_edge2239.thread, %._crit_edge2246.loopexit, %._crit_edge2239
  %786 = phi i32 [ %.pre3426, %._crit_edge2239 ], [ %.pre3430, %._crit_edge2246.loopexit ], [ %.ph, %._crit_edge2239.thread ]
  %787 = phi i32 [ %.pre3426, %._crit_edge2239 ], [ %.pre3429, %._crit_edge2246.loopexit ], [ %.ph, %._crit_edge2239.thread ]
  %.761638.lcssa = phi double [ %.741636.lcssa, %._crit_edge2239 ], [ %.771639, %._crit_edge2246.loopexit ], [ %.691631.lcssa.ph, %._crit_edge2239.thread ]
  %788 = add nsw i32 %787, -1
  %789 = mul nsw i32 %786, %.01641
  %790 = add nsw i32 %788, %789
  %791 = sext i32 %790 to i64
  %792 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %791
  %793 = load double, ptr %792, align 8, !tbaa !9
  %794 = fcmp oge double %793, 0.000000e+00
  %795 = fneg double %793
  %796 = select i1 %794, double %793, double %795
  store double %796, ptr %8, align 8, !tbaa !12
  %797 = fcmp olt double %.761638.lcssa, %796
  br i1 %797, label %800, label %798

798:                                              ; preds = %._crit_edge2246
  %799 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1903 = icmp eq i32 %799, 0
  br i1 %.not1903, label %800, label %._crit_edge3431

._crit_edge3431:                                  ; preds = %798
  %.pre3432 = load double, ptr %8, align 8, !tbaa !12
  br label %800

800:                                              ; preds = %._crit_edge2246, %._crit_edge3431, %798
  %.781640 = phi double [ %.761638.lcssa, %798 ], [ %.pre3432, %._crit_edge3431 ], [ %796, %._crit_edge2246 ]
  %801 = load i32, ptr %3, align 4, !tbaa !5
  %storemerge1904.in2254 = load i32, ptr %10, align 4, !tbaa !5
  %storemerge19042255 = add nsw i32 %storemerge1904.in2254, 1
  store i32 %storemerge19042255, ptr %9, align 4, !tbaa !5
  %.not1905.not2256 = icmp slt i32 %storemerge1904.in2254, %801
  br i1 %.not1905.not2256, label %.lr.ph2259, label %.loopexit

.loopexit2022.loopexit:                           ; preds = %816
  %storemerge1904.in.pre = load i32, ptr %9, align 4, !tbaa !5
  br label %.loopexit2022

.loopexit2022:                                    ; preds = %.loopexit2022.loopexit, %.lr.ph2259
  %storemerge1904.in = phi i32 [ %storemerge1904.in3435, %.lr.ph2259 ], [ %storemerge1904.in.pre, %.loopexit2022.loopexit ]
  %.80.lcssa = phi double [ %.792257, %.lr.ph2259 ], [ %.81, %.loopexit2022.loopexit ]
  %storemerge1904 = add nsw i32 %storemerge1904.in, 1
  store i32 %storemerge1904, ptr %9, align 4, !tbaa !5
  %.not1905.not = icmp slt i32 %storemerge1904.in, %801
  br i1 %.not1905.not, label %.lr.ph2259thread-pre-split, label %.loopexit, !llvm.loop !47

.lr.ph2259thread-pre-split:                       ; preds = %.loopexit2022
  %.pr3562 = load i32, ptr %10, align 4, !tbaa !5
  br label %.lr.ph2259

.lr.ph2259:                                       ; preds = %800, %.lr.ph2259thread-pre-split
  %802 = phi i32 [ %.pr3562, %.lr.ph2259thread-pre-split ], [ %storemerge1904.in2254, %800 ]
  %storemerge1904.in3435 = phi i32 [ %storemerge1904, %.lr.ph2259thread-pre-split ], [ %storemerge19042255, %800 ]
  %.792257 = phi double [ %.80.lcssa, %.lr.ph2259thread-pre-split ], [ %.781640, %800 ]
  %803 = add nsw i32 %802, -1
  store i32 %803, ptr %7, align 4, !tbaa !5
  %.not19062248 = icmp slt i32 %802, 1
  br i1 %.not19062248, label %.loopexit2022, label %.lr.ph2252

.lr.ph2252:                                       ; preds = %.lr.ph2259, %816
  %.242250 = phi i32 [ %817, %816 ], [ 0, %.lr.ph2259 ]
  %.802249 = phi double [ %.81, %816 ], [ %.792257, %.lr.ph2259 ]
  %804 = load i32, ptr %9, align 4, !tbaa !5
  %805 = mul nsw i32 %804, %.01641
  %806 = add nsw i32 %805, %.242250
  %807 = sext i32 %806 to i64
  %808 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %807
  %809 = call { double, double } @Cd(ptr noundef nonnull %808)
  %810 = extractvalue { double, double } %809, 0
  %811 = extractvalue { double, double } %809, 1
  %812 = call double @cabs(double noundef %810, double noundef %811) #9
  store double %812, ptr %8, align 8, !tbaa !12
  %813 = fcmp olt double %.802249, %812
  br i1 %813, label %816, label %814

814:                                              ; preds = %.lr.ph2252
  %815 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1907 = icmp eq i32 %815, 0
  br i1 %.not1907, label %816, label %._crit_edge3433

._crit_edge3433:                                  ; preds = %814
  %.pre3434 = load double, ptr %8, align 8, !tbaa !12
  br label %816

816:                                              ; preds = %.lr.ph2252, %._crit_edge3433, %814
  %.81 = phi double [ %.802249, %814 ], [ %.pre3434, %._crit_edge3433 ], [ %812, %.lr.ph2252 ]
  %817 = add nuw nsw i32 %.242250, 1
  %818 = load i32, ptr %7, align 4, !tbaa !5
  %.not1906.not = icmp slt i32 %.242250, %818
  br i1 %.not1906.not, label %.lr.ph2252, label %.loopexit2022.loopexit, !llvm.loop !48

.lr.ph2172:                                       ; preds = %.preheader2025, %._crit_edge2168
  %819 = phi i32 [ %838, %._crit_edge2168 ], [ 0, %.preheader2025 ]
  %.822171 = phi double [ %.83.lcssa, %._crit_edge2168 ], [ 0.000000e+00, %.preheader2025 ]
  %820 = load i32, ptr %10, align 4, !tbaa !5
  %821 = add nsw i32 %820, -1
  store i32 %821, ptr %7, align 4, !tbaa !5
  %.not18962163 = icmp slt i32 %820, 1
  br i1 %.not18962163, label %._crit_edge2168, label %.lr.ph2167

.lr.ph2167:                                       ; preds = %.lr.ph2172, %834
  %.252165 = phi i32 [ %835, %834 ], [ 0, %.lr.ph2172 ]
  %.832164 = phi double [ %.84, %834 ], [ %.822171, %.lr.ph2172 ]
  %822 = load i32, ptr %9, align 4, !tbaa !5
  %823 = mul nsw i32 %822, %.01641
  %824 = add nsw i32 %823, %.252165
  %825 = sext i32 %824 to i64
  %826 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %825
  %827 = call { double, double } @Cd(ptr noundef %826)
  %828 = extractvalue { double, double } %827, 0
  %829 = extractvalue { double, double } %827, 1
  %830 = call double @cabs(double noundef %828, double noundef %829) #9
  store double %830, ptr %8, align 8, !tbaa !12
  %831 = fcmp olt double %.832164, %830
  br i1 %831, label %834, label %832

832:                                              ; preds = %.lr.ph2167
  %833 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1897 = icmp eq i32 %833, 0
  br i1 %.not1897, label %834, label %._crit_edge3383

._crit_edge3383:                                  ; preds = %832
  %.pre3384 = load double, ptr %8, align 8, !tbaa !12
  br label %834

834:                                              ; preds = %.lr.ph2167, %._crit_edge3383, %832
  %.84 = phi double [ %.832164, %832 ], [ %.pre3384, %._crit_edge3383 ], [ %830, %.lr.ph2167 ]
  %835 = add nuw nsw i32 %.252165, 1
  %836 = load i32, ptr %7, align 4, !tbaa !5
  %.not1896.not = icmp slt i32 %.252165, %836
  br i1 %.not1896.not, label %.lr.ph2167, label %._crit_edge2168.loopexit, !llvm.loop !49

._crit_edge2168.loopexit:                         ; preds = %834
  %.pre3385 = load i32, ptr %9, align 4, !tbaa !5
  br label %._crit_edge2168

._crit_edge2168:                                  ; preds = %._crit_edge2168.loopexit, %.lr.ph2172
  %837 = phi i32 [ %819, %.lr.ph2172 ], [ %.pre3385, %._crit_edge2168.loopexit ]
  %.83.lcssa = phi double [ %.822171, %.lr.ph2172 ], [ %.84, %._crit_edge2168.loopexit ]
  %838 = add nsw i32 %837, 1
  store i32 %838, ptr %9, align 4, !tbaa !5
  %.not1881.not = icmp slt i32 %838, %34
  br i1 %.not1881.not, label %.lr.ph2172, label %._crit_edge2173.loopexit, !llvm.loop !50

._crit_edge2173.loopexit:                         ; preds = %._crit_edge2168
  %.pre3386 = load i32, ptr %10, align 4, !tbaa !5
  br label %._crit_edge2173

._crit_edge2173:                                  ; preds = %._crit_edge2173.loopexit, %.preheader2025
  %839 = phi i32 [ %34, %.preheader2025 ], [ %.pre3386, %._crit_edge2173.loopexit ]
  %.82.lcssa = phi double [ 0.000000e+00, %.preheader2025 ], [ %.83.lcssa, %._crit_edge2173.loopexit ]
  store i32 %839, ptr %9, align 4, !tbaa !5
  %840 = mul nsw i32 %839, %.01641
  %841 = sext i32 %840 to i64
  %842 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %841
  %843 = load double, ptr %842, align 8, !tbaa !9
  %844 = fcmp oge double %843, 0.000000e+00
  %845 = fneg double %843
  %846 = select i1 %844, double %843, double %845
  store double %846, ptr %8, align 8, !tbaa !12
  %847 = fcmp olt double %.82.lcssa, %846
  br i1 %847, label %850, label %848

848:                                              ; preds = %._crit_edge2173
  %849 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1882 = icmp eq i32 %849, 0
  br i1 %.not1882, label %850, label %._crit_edge3387

._crit_edge3387:                                  ; preds = %848
  %.pre3388 = load double, ptr %8, align 8, !tbaa !12
  br label %850

850:                                              ; preds = %._crit_edge2173, %._crit_edge3387, %848
  %.85 = phi double [ %.82.lcssa, %848 ], [ %.pre3388, %._crit_edge3387 ], [ %846, %._crit_edge2173 ]
  %851 = load i32, ptr %10, align 4, !tbaa !5
  %.not1883.not2175 = icmp sgt i32 %851, 1
  br i1 %.not1883.not2175, label %.lr.ph2179, label %._crit_edge2180

.lr.ph2179:                                       ; preds = %850, %864
  %.262177 = phi i32 [ %865, %864 ], [ 1, %850 ]
  %.862176 = phi double [ %.87, %864 ], [ %.85, %850 ]
  %852 = load i32, ptr %9, align 4, !tbaa !5
  %853 = mul nsw i32 %852, %.01641
  %854 = add nsw i32 %853, %.262177
  %855 = sext i32 %854 to i64
  %856 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %855
  %857 = call { double, double } @Cd(ptr noundef %856)
  %858 = extractvalue { double, double } %857, 0
  %859 = extractvalue { double, double } %857, 1
  %860 = call double @cabs(double noundef %858, double noundef %859) #9
  store double %860, ptr %8, align 8, !tbaa !12
  %861 = fcmp olt double %.862176, %860
  br i1 %861, label %864, label %862

862:                                              ; preds = %.lr.ph2179
  %863 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1895 = icmp eq i32 %863, 0
  br i1 %.not1895, label %864, label %._crit_edge3389

._crit_edge3389:                                  ; preds = %862
  %.pre3390 = load double, ptr %8, align 8, !tbaa !12
  br label %864

864:                                              ; preds = %.lr.ph2179, %._crit_edge3389, %862
  %.87 = phi double [ %.862176, %862 ], [ %.pre3390, %._crit_edge3389 ], [ %860, %.lr.ph2179 ]
  %865 = add nuw nsw i32 %.262177, 1
  %exitcond3019.not = icmp eq i32 %865, %851
  br i1 %exitcond3019.not, label %._crit_edge2180.loopexit, label %.lr.ph2179, !llvm.loop !51

._crit_edge2180.loopexit:                         ; preds = %864
  %storemerge1884.in2196.pre = load i32, ptr %10, align 4, !tbaa !5
  br label %._crit_edge2180

._crit_edge2180:                                  ; preds = %._crit_edge2180.loopexit, %850
  %storemerge1884.in2196 = phi i32 [ %851, %850 ], [ %storemerge1884.in2196.pre, %._crit_edge2180.loopexit ]
  %.86.lcssa = phi double [ %.85, %850 ], [ %.87, %._crit_edge2180.loopexit ]
  %866 = load i32, ptr %3, align 4, !tbaa !5
  %867 = add nsw i32 %866, -1
  %storemerge18842197 = add nsw i32 %storemerge1884.in2196, 1
  store i32 %storemerge18842197, ptr %9, align 4, !tbaa !5
  %.not1885.not2198 = icmp slt i32 %storemerge1884.in2196, %867
  br i1 %.not1885.not2198, label %.lr.ph2202, label %._crit_edge2203

.loopexit2024.loopexit:                           ; preds = %933
  %storemerge1884.in.pre = load i32, ptr %9, align 4, !tbaa !5
  br label %.loopexit2024

.loopexit2024:                                    ; preds = %.loopexit2024.loopexit, %916
  %storemerge1884.in = phi i32 [ %919, %916 ], [ %storemerge1884.in.pre, %.loopexit2024.loopexit ]
  %.93.lcssa = phi double [ %.92, %916 ], [ %.94, %.loopexit2024.loopexit ]
  %storemerge1884 = add nsw i32 %storemerge1884.in, 1
  store i32 %storemerge1884, ptr %9, align 4, !tbaa !5
  %.not1885.not = icmp slt i32 %storemerge1884.in, %867
  br i1 %.not1885.not, label %.lr.ph2202, label %._crit_edge2203.loopexit, !llvm.loop !52

.lr.ph2202:                                       ; preds = %._crit_edge2180, %.loopexit2024
  %storemerge18842200 = phi i32 [ %storemerge1884, %.loopexit2024 ], [ %storemerge18842197, %._crit_edge2180 ]
  %.882199 = phi double [ %.93.lcssa, %.loopexit2024 ], [ %.86.lcssa, %._crit_edge2180 ]
  %868 = load i32, ptr %10, align 4, !tbaa !5
  %869 = add i32 %storemerge18842200, -2
  %870 = sub i32 %869, %868
  store i32 %870, ptr %7, align 4, !tbaa !5
  %.not18892182 = icmp slt i32 %870, 0
  br i1 %.not18892182, label %._crit_edge2187, label %.lr.ph2186

.lr.ph2186:                                       ; preds = %.lr.ph2202, %883
  %.272184 = phi i32 [ %884, %883 ], [ 0, %.lr.ph2202 ]
  %.892183 = phi double [ %.90, %883 ], [ %.882199, %.lr.ph2202 ]
  %871 = load i32, ptr %9, align 4, !tbaa !5
  %872 = mul nsw i32 %871, %.01641
  %873 = add nsw i32 %872, %.272184
  %874 = sext i32 %873 to i64
  %875 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %874
  %876 = call { double, double } @Cd(ptr noundef %875)
  %877 = extractvalue { double, double } %876, 0
  %878 = extractvalue { double, double } %876, 1
  %879 = call double @cabs(double noundef %877, double noundef %878) #9
  store double %879, ptr %8, align 8, !tbaa !12
  %880 = fcmp olt double %.892183, %879
  br i1 %880, label %883, label %881

881:                                              ; preds = %.lr.ph2186
  %882 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1894 = icmp eq i32 %882, 0
  br i1 %.not1894, label %883, label %._crit_edge3392

._crit_edge3392:                                  ; preds = %881
  %.pre3393 = load double, ptr %8, align 8, !tbaa !12
  br label %883

883:                                              ; preds = %.lr.ph2186, %._crit_edge3392, %881
  %.90 = phi double [ %.892183, %881 ], [ %.pre3393, %._crit_edge3392 ], [ %879, %.lr.ph2186 ]
  %884 = add nuw nsw i32 %.272184, 1
  %885 = load i32, ptr %7, align 4, !tbaa !5
  %.not1889.not = icmp slt i32 %.272184, %885
  br i1 %.not1889.not, label %.lr.ph2186, label %._crit_edge2187.loopexit, !llvm.loop !53

._crit_edge2187.loopexit:                         ; preds = %883
  %.pre3394 = load i32, ptr %9, align 4, !tbaa !5
  %.pre3395 = load i32, ptr %10, align 4, !tbaa !5
  br label %._crit_edge2187

._crit_edge2187:                                  ; preds = %._crit_edge2187.loopexit, %.lr.ph2202
  %886 = phi i32 [ %868, %.lr.ph2202 ], [ %.pre3395, %._crit_edge2187.loopexit ]
  %887 = phi i32 [ %storemerge18842200, %.lr.ph2202 ], [ %.pre3394, %._crit_edge2187.loopexit ]
  %.89.lcssa = phi double [ %.882199, %.lr.ph2202 ], [ %.90, %._crit_edge2187.loopexit ]
  %888 = xor i32 %886, -1
  %889 = add i32 %887, %888
  %890 = mul nsw i32 %887, %.01641
  %891 = add nsw i32 %889, %890
  store i32 %891, ptr %7, align 4, !tbaa !5
  %892 = sext i32 %891 to i64
  %893 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %892
  %894 = load double, ptr %893, align 8, !tbaa !9
  %895 = fcmp oge double %894, 0.000000e+00
  %896 = fneg double %894
  %897 = select i1 %895, double %894, double %896
  store double %897, ptr %8, align 8, !tbaa !12
  %898 = fcmp olt double %.89.lcssa, %897
  br i1 %898, label %901, label %899

899:                                              ; preds = %._crit_edge2187
  %900 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1890 = icmp eq i32 %900, 0
  br i1 %.not1890, label %901, label %._crit_edge3396

._crit_edge3396:                                  ; preds = %899
  %.pre3397 = load double, ptr %8, align 8, !tbaa !12
  br label %901

901:                                              ; preds = %._crit_edge2187, %._crit_edge3396, %899
  %.91 = phi double [ %.89.lcssa, %899 ], [ %.pre3397, %._crit_edge3396 ], [ %897, %._crit_edge2187 ]
  %902 = load i32, ptr %9, align 4, !tbaa !5
  %903 = load i32, ptr %10, align 4, !tbaa !5
  %904 = sub nsw i32 %902, %903
  %905 = mul nsw i32 %902, %.01641
  %906 = add nsw i32 %904, %905
  store i32 %906, ptr %7, align 4, !tbaa !5
  %907 = sext i32 %906 to i64
  %908 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %907
  %909 = load double, ptr %908, align 8, !tbaa !9
  %910 = fcmp oge double %909, 0.000000e+00
  %911 = fneg double %909
  %912 = select i1 %910, double %909, double %911
  store double %912, ptr %8, align 8, !tbaa !12
  %913 = fcmp olt double %.91, %912
  br i1 %913, label %916, label %914

914:                                              ; preds = %901
  %915 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1891 = icmp eq i32 %915, 0
  br i1 %.not1891, label %916, label %._crit_edge3398

._crit_edge3398:                                  ; preds = %914
  %.pre3399 = load double, ptr %8, align 8, !tbaa !12
  br label %916

916:                                              ; preds = %901, %._crit_edge3398, %914
  %.92 = phi double [ %.91, %914 ], [ %.pre3399, %._crit_edge3398 ], [ %912, %901 ]
  %917 = load i32, ptr %10, align 4, !tbaa !5
  %918 = add nsw i32 %917, -1
  store i32 %918, ptr %7, align 4, !tbaa !5
  %919 = load i32, ptr %9, align 4, !tbaa !5
  %920 = sub nsw i32 %919, %917
  %.not1892.not2190 = icmp slt i32 %920, %918
  br i1 %.not1892.not2190, label %.lr.ph2194, label %.loopexit2024

.lr.ph2194:                                       ; preds = %916, %933
  %.282192.in = phi i32 [ %.282192, %933 ], [ %920, %916 ]
  %.932191 = phi double [ %.94, %933 ], [ %.92, %916 ]
  %.282192 = add nsw i32 %.282192.in, 1
  %921 = load i32, ptr %9, align 4, !tbaa !5
  %922 = mul nsw i32 %921, %.01641
  %923 = add nsw i32 %922, %.282192
  %924 = sext i32 %923 to i64
  %925 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %924
  %926 = call { double, double } @Cd(ptr noundef %925)
  %927 = extractvalue { double, double } %926, 0
  %928 = extractvalue { double, double } %926, 1
  %929 = call double @cabs(double noundef %927, double noundef %928) #9
  store double %929, ptr %8, align 8, !tbaa !12
  %930 = fcmp olt double %.932191, %929
  br i1 %930, label %933, label %931

931:                                              ; preds = %.lr.ph2194
  %932 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1893 = icmp eq i32 %932, 0
  br i1 %.not1893, label %933, label %._crit_edge3400

._crit_edge3400:                                  ; preds = %931
  %.pre3401 = load double, ptr %8, align 8, !tbaa !12
  br label %933

933:                                              ; preds = %.lr.ph2194, %._crit_edge3400, %931
  %.94 = phi double [ %.932191, %931 ], [ %.pre3401, %._crit_edge3400 ], [ %929, %.lr.ph2194 ]
  %934 = load i32, ptr %7, align 4, !tbaa !5
  %.not1892.not = icmp slt i32 %.282192, %934
  br i1 %.not1892.not, label %.lr.ph2194, label %.loopexit2024.loopexit, !llvm.loop !54

._crit_edge2203.loopexit:                         ; preds = %.loopexit2024
  %.pre3403 = load i32, ptr %3, align 4, !tbaa !5
  %.pre3404 = load i32, ptr %10, align 4, !tbaa !5
  br label %._crit_edge2203

._crit_edge2203:                                  ; preds = %._crit_edge2203.loopexit, %._crit_edge2180
  %935 = phi i32 [ %storemerge1884.in2196, %._crit_edge2180 ], [ %.pre3404, %._crit_edge2203.loopexit ]
  %936 = phi i32 [ %866, %._crit_edge2180 ], [ %.pre3403, %._crit_edge2203.loopexit ]
  %.88.lcssa = phi double [ %.86.lcssa, %._crit_edge2180 ], [ %.93.lcssa, %._crit_edge2203.loopexit ]
  store i32 %936, ptr %9, align 4, !tbaa !5
  %.not18862205 = icmp slt i32 %935, 2
  br i1 %.not18862205, label %._crit_edge2210, label %.lr.ph2209.preheader

.lr.ph2209.preheader:                             ; preds = %._crit_edge2203
  %937 = add nsw i32 %935, -2
  br label %.lr.ph2209

.lr.ph2209:                                       ; preds = %.lr.ph2209.preheader, %950
  %.292207 = phi i32 [ %951, %950 ], [ 0, %.lr.ph2209.preheader ]
  %.952206 = phi double [ %.96, %950 ], [ %.88.lcssa, %.lr.ph2209.preheader ]
  %938 = load i32, ptr %9, align 4, !tbaa !5
  %939 = mul nsw i32 %938, %.01641
  %940 = add nsw i32 %939, %.292207
  %941 = sext i32 %940 to i64
  %942 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %941
  %943 = call { double, double } @Cd(ptr noundef %942)
  %944 = extractvalue { double, double } %943, 0
  %945 = extractvalue { double, double } %943, 1
  %946 = call double @cabs(double noundef %944, double noundef %945) #9
  store double %946, ptr %8, align 8, !tbaa !12
  %947 = fcmp olt double %.952206, %946
  br i1 %947, label %950, label %948

948:                                              ; preds = %.lr.ph2209
  %949 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1888 = icmp eq i32 %949, 0
  br i1 %.not1888, label %950, label %._crit_edge3405

._crit_edge3405:                                  ; preds = %948
  %.pre3406 = load double, ptr %8, align 8, !tbaa !12
  br label %950

950:                                              ; preds = %.lr.ph2209, %._crit_edge3405, %948
  %.96 = phi double [ %.952206, %948 ], [ %.pre3406, %._crit_edge3405 ], [ %946, %.lr.ph2209 ]
  %951 = add nuw i32 %.292207, 1
  %exitcond3020.not = icmp eq i32 %.292207, %937
  br i1 %exitcond3020.not, label %._crit_edge2210.loopexit, label %.lr.ph2209, !llvm.loop !55

._crit_edge2210.loopexit:                         ; preds = %950
  %.pre3407 = load i32, ptr %10, align 4, !tbaa !5
  %.pre3408 = load i32, ptr %9, align 4, !tbaa !5
  br label %._crit_edge2210

._crit_edge2210:                                  ; preds = %._crit_edge2210.loopexit, %._crit_edge2203
  %952 = phi i32 [ %936, %._crit_edge2203 ], [ %.pre3408, %._crit_edge2210.loopexit ]
  %953 = phi i32 [ %935, %._crit_edge2203 ], [ %.pre3407, %._crit_edge2210.loopexit ]
  %.95.lcssa = phi double [ %.88.lcssa, %._crit_edge2203 ], [ %.96, %._crit_edge2210.loopexit ]
  %954 = add nsw i32 %953, -1
  %955 = mul nsw i32 %952, %.01641
  %956 = add nsw i32 %954, %955
  %957 = sext i32 %956 to i64
  %958 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %957
  %959 = load double, ptr %958, align 8, !tbaa !9
  %960 = fcmp oge double %959, 0.000000e+00
  %961 = fneg double %959
  %962 = select i1 %960, double %959, double %961
  store double %962, ptr %8, align 8, !tbaa !12
  %963 = fcmp olt double %.95.lcssa, %962
  br i1 %963, label %.loopexit, label %964

964:                                              ; preds = %._crit_edge2210
  %965 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1887 = icmp eq i32 %965, 0
  br i1 %.not1887, label %.loopexit, label %._crit_edge3409

._crit_edge3409:                                  ; preds = %964
  %.pre3410 = load double, ptr %8, align 8, !tbaa !12
  br label %.loopexit

966:                                              ; preds = %29
  %967 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.3) #9
  %.not1751 = icmp eq i32 %967, 0
  br i1 %.not1751, label %968, label %973

968:                                              ; preds = %966
  %969 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.4) #9
  %.not1752 = icmp eq i32 %969, 0
  br i1 %.not1752, label %970, label %973

970:                                              ; preds = %968
  %971 = load i8, ptr %0, align 1, !tbaa !56
  %972 = icmp eq i8 %971, 49
  br i1 %972, label %973, label %1778

973:                                              ; preds = %970, %968, %966
  %974 = load i32, ptr %3, align 4, !tbaa !5
  %975 = sdiv i32 %974, 2
  store i32 %975, ptr %10, align 4, !tbaa !5
  %.not1852 = icmp eq i32 %20, 0
  br i1 %.not, label %976, label %1259

976:                                              ; preds = %973
  br i1 %.not1852, label %1124, label %977

977:                                              ; preds = %976
  br i1 %.not1748.not.not.not.not.not.not.not.not, label %1048, label %.preheader2002

.preheader2002:                                   ; preds = %977
  %.not1872.not2780 = icmp sgt i32 %974, 1
  br i1 %.not1872.not2780, label %.preheader2001.thread, label %.preheader2001

.preheader2001.thread:                            ; preds = %.preheader2002
  %978 = add nsw i32 %975, -1
  %979 = zext i32 %978 to i64
  %980 = shl nuw nsw i64 %979, 3
  %981 = add nuw nsw i64 %980, 8
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %5, i8 0, i64 %981, i1 false), !tbaa !12
  br label %.lr.ph2808

.preheader2001:                                   ; preds = %.preheader2002
  %.not18742806 = icmp slt i32 %974, -1
  br i1 %.not18742806, label %1039, label %.lr.ph2808

.lr.ph2808:                                       ; preds = %.preheader2001.thread, %.preheader2001
  %982 = shl nsw i32 %975, 1
  %983 = add nsw i32 %975, -1
  %984 = sext i32 %.01641 to i64
  %985 = sext i32 %975 to i64
  %986 = sext i32 %983 to i64
  %987 = add nsw i32 %975, 1
  %wide.trip.count3230 = zext i32 %987 to i64
  %invariant.gep3678 = getelementptr double, ptr %5, i64 %985
  %wide.trip.count3227 = zext i32 %983 to i64
  br label %988

988:                                              ; preds = %.lr.ph2808, %._crit_edge2798
  %indvars.iv3220 = phi i64 [ 0, %.lr.ph2808 ], [ %indvars.iv.next3221, %._crit_edge2798 ]
  %indvars.iv3214 = phi i32 [ %975, %.lr.ph2808 ], [ %indvars.iv.next3215, %._crit_edge2798 ]
  %indvars3229 = trunc i64 %indvars.iv3220 to i32
  %989 = add nsw i32 %indvars3229, -1
  %990 = add i32 %989, %975
  %.not18752784 = icmp slt i32 %990, 0
  %.pre3537 = mul nsw i64 %indvars.iv3220, %984
  br i1 %.not18752784, label %._crit_edge2788, label %.lr.ph2787

.lr.ph2787:                                       ; preds = %988
  %wide.trip.count3216 = zext i32 %indvars.iv3214 to i64
  %991 = getelementptr %struct.doublecomplex, ptr %4, i64 %.pre3537
  br label %992

992:                                              ; preds = %.lr.ph2787, %992
  %indvars.iv3211 = phi i64 [ 0, %.lr.ph2787 ], [ %indvars.iv.next3212, %992 ]
  %993 = phi double [ 0.000000e+00, %.lr.ph2787 ], [ %999, %992 ]
  %994 = getelementptr %struct.doublecomplex, ptr %991, i64 %indvars.iv3211
  %995 = tail call { double, double } @Cd(ptr noundef %994)
  %996 = extractvalue { double, double } %995, 0
  %997 = extractvalue { double, double } %995, 1
  %998 = tail call double @cabs(double noundef %996, double noundef %997) #9
  %999 = fadd double %998, %993
  %1000 = getelementptr inbounds double, ptr %5, i64 %indvars.iv3211
  %1001 = load double, ptr %1000, align 8, !tbaa !12
  %1002 = fadd double %998, %1001
  store double %1002, ptr %1000, align 8, !tbaa !12
  %indvars.iv.next3212 = add nuw nsw i64 %indvars.iv3211, 1
  %exitcond3217.not = icmp eq i64 %indvars.iv.next3212, %wide.trip.count3216
  br i1 %exitcond3217.not, label %._crit_edge2788, label %992, !llvm.loop !57

._crit_edge2788:                                  ; preds = %992, %988
  %.lcssa28002804 = phi double [ 0.000000e+00, %988 ], [ %999, %992 ]
  %.31.lcssa = phi i32 [ 0, %988 ], [ %indvars.iv3214, %992 ]
  %1003 = sext i32 %.31.lcssa to i64
  %1004 = add nsw i64 %.pre3537, %1003
  %1005 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %1004
  %1006 = load double, ptr %1005, align 8, !tbaa !9
  %1007 = fcmp oge double %1006, 0.000000e+00
  %1008 = fneg double %1006
  %1009 = select i1 %1007, double %1006, double %1008
  %1010 = fadd double %.lcssa28002804, %1009
  %gep3679 = getelementptr double, ptr %invariant.gep3678, i64 %indvars.iv3220
  store double %1010, ptr %gep3679, align 8, !tbaa !12
  %1011 = icmp eq i32 %.31.lcssa, %982
  br i1 %1011, label %._crit_edge2811, label %1012

1012:                                             ; preds = %._crit_edge2788
  %1013 = add nuw nsw i32 %.31.lcssa, 1
  %1014 = sext i32 %1013 to i64
  %1015 = getelementptr %struct.doublecomplex, ptr %4, i64 %.pre3537
  %1016 = getelementptr %struct.doublecomplex, ptr %1015, i64 %1014
  %1017 = load double, ptr %1016, align 8, !tbaa !9
  %1018 = fcmp oge double %1017, 0.000000e+00
  %1019 = fneg double %1017
  %1020 = select i1 %1018, double %1017, double %1019
  %1021 = getelementptr inbounds double, ptr %5, i64 %indvars.iv3220
  %1022 = load double, ptr %1021, align 8, !tbaa !12
  %1023 = fadd double %1022, %1020
  store double %1023, ptr %1021, align 8, !tbaa !12
  %.not1876.not2793 = icmp slt i64 %indvars.iv3220, %986
  br i1 %.not1876.not2793, label %.lr.ph2797, label %._crit_edge2798

.lr.ph2797:                                       ; preds = %1012
  %1024 = getelementptr %struct.doublecomplex, ptr %4, i64 %.pre3537
  br label %1025

1025:                                             ; preds = %.lr.ph2797, %1025
  %indvars.iv3222 = phi i64 [ %indvars.iv3220, %.lr.ph2797 ], [ %indvars.iv.next3223, %1025 ]
  %indvars.iv3218 = phi i64 [ %1014, %.lr.ph2797 ], [ %indvars.iv.next3219, %1025 ]
  %1026 = phi double [ 0.000000e+00, %.lr.ph2797 ], [ %1032, %1025 ]
  %indvars.iv.next3223 = add nuw nsw i64 %indvars.iv3222, 1
  %indvars.iv.next3219 = add nuw nsw i64 %indvars.iv3218, 1
  %1027 = getelementptr %struct.doublecomplex, ptr %1024, i64 %indvars.iv.next3219
  %1028 = tail call { double, double } @Cd(ptr noundef %1027)
  %1029 = extractvalue { double, double } %1028, 0
  %1030 = extractvalue { double, double } %1028, 1
  %1031 = tail call double @cabs(double noundef %1029, double noundef %1030) #9
  %1032 = fadd double %1031, %1026
  %1033 = getelementptr inbounds double, ptr %5, i64 %indvars.iv.next3223
  %1034 = load double, ptr %1033, align 8, !tbaa !12
  %1035 = fadd double %1031, %1034
  store double %1035, ptr %1033, align 8, !tbaa !12
  %exitcond3228.not = icmp eq i64 %indvars.iv.next3223, %wide.trip.count3227
  br i1 %exitcond3228.not, label %._crit_edge2798.loopexit, label %1025, !llvm.loop !58

._crit_edge2798.loopexit:                         ; preds = %1025
  %.pre3508 = load double, ptr %1021, align 8, !tbaa !12
  br label %._crit_edge2798

._crit_edge2798:                                  ; preds = %._crit_edge2798.loopexit, %1012
  %1036 = phi double [ %1023, %1012 ], [ %.pre3508, %._crit_edge2798.loopexit ]
  %.lcssa28002803 = phi double [ 0.000000e+00, %1012 ], [ %1032, %._crit_edge2798.loopexit ]
  %1037 = fadd double %.lcssa28002803, %1036
  store double %1037, ptr %1021, align 8, !tbaa !12
  %indvars.iv.next3221 = add nuw nsw i64 %indvars.iv3220, 1
  %indvars.iv.next3215 = add i32 %indvars.iv3214, 1
  %exitcond3231.not = icmp eq i64 %indvars.iv.next3221, %wide.trip.count3230
  br i1 %exitcond3231.not, label %._crit_edge2809, label %988, !llvm.loop !59

._crit_edge2809:                                  ; preds = %._crit_edge2798
  store double %.lcssa28002803, ptr %11, align 8, !tbaa !12
  store i32 %983, ptr %7, align 4, !tbaa !5
  br label %1039

._crit_edge2811:                                  ; preds = %._crit_edge2788
  %1038 = trunc i64 %1004 to i32
  store double %.lcssa28002804, ptr %11, align 8, !tbaa !12
  store i32 %1038, ptr %7, align 4, !tbaa !5
  br label %1039

1039:                                             ; preds = %._crit_edge2811, %._crit_edge2809, %.preheader2001
  %storemerge1873.lcssa = phi i32 [ %987, %._crit_edge2809 ], [ %indvars3229, %._crit_edge2811 ], [ 0, %.preheader2001 ]
  store i32 %storemerge1873.lcssa, ptr %9, align 4, !tbaa !5
  %1040 = load double, ptr %5, align 8, !tbaa !12
  %1041 = load i32, ptr %3, align 4, !tbaa !5
  %.not1877.not2814 = icmp sgt i32 %1041, 1
  br i1 %.not1877.not2814, label %.lr.ph2818.preheader, label %.loopexit

.lr.ph2818.preheader:                             ; preds = %1039
  %wide.trip.count3235 = zext nneg i32 %1041 to i64
  br label %.lr.ph2818

.lr.ph2818:                                       ; preds = %.lr.ph2818.preheader, %1047
  %indvars.iv3232 = phi i64 [ 1, %.lr.ph2818.preheader ], [ %indvars.iv.next3233, %1047 ]
  %.972815 = phi double [ %1040, %.lr.ph2818.preheader ], [ %.98, %1047 ]
  %1042 = getelementptr inbounds double, ptr %5, i64 %indvars.iv3232
  %1043 = load double, ptr %1042, align 8, !tbaa !12
  store double %1043, ptr %8, align 8, !tbaa !12
  %1044 = fcmp olt double %.972815, %1043
  br i1 %1044, label %1047, label %1045

1045:                                             ; preds = %.lr.ph2818
  %1046 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1878 = icmp eq i32 %1046, 0
  br i1 %.not1878, label %1047, label %._crit_edge3509

._crit_edge3509:                                  ; preds = %1045
  %.pre3510 = load double, ptr %8, align 8, !tbaa !12
  br label %1047

1047:                                             ; preds = %.lr.ph2818, %._crit_edge3509, %1045
  %.98 = phi double [ %.972815, %1045 ], [ %.pre3510, %._crit_edge3509 ], [ %1043, %.lr.ph2818 ]
  %indvars.iv.next3233 = add nuw nsw i64 %indvars.iv3232, 1
  %exitcond3236.not = icmp eq i64 %indvars.iv.next3233, %wide.trip.count3235
  br i1 %exitcond3236.not, label %.loopexit, label %.lr.ph2818, !llvm.loop !60

1048:                                             ; preds = %977
  %1049 = add nsw i32 %975, 1
  store i32 %1049, ptr %10, align 4, !tbaa !5
  %.not1866.not2820 = icmp slt i32 %1049, %974
  br i1 %.not1866.not2820, label %.lr.ph2823.preheader, label %.preheader1999

.lr.ph2823.preheader:                             ; preds = %1048
  %1050 = sext i32 %975 to i64
  %1051 = shl nsw i64 %1050, 3
  %1052 = getelementptr i8, ptr %5, i64 %1051
  %scevgep3237 = getelementptr i8, ptr %1052, i64 8
  %1053 = add nsw i32 %974, -2
  %1054 = sub i32 %1053, %975
  %1055 = zext i32 %1054 to i64
  %1056 = shl nuw nsw i64 %1055, 3
  %1057 = add nuw nsw i64 %1056, 8
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %scevgep3237, i8 0, i64 %1057, i1 false), !tbaa !12
  br label %.preheader1999

.preheader1999:                                   ; preds = %.lr.ph2823.preheader, %1048
  %1058 = icmp sgt i32 %974, -2
  br i1 %1058, label %.lr.ph2850, label %.thread

.thread:                                          ; preds = %.preheader1999
  %1059 = load double, ptr %5, align 8, !tbaa !12
  br label %.loopexit

.lr.ph2850:                                       ; preds = %.preheader1999
  %1060 = sext i32 %1049 to i64
  %invariant.gep3682 = getelementptr double, ptr %5, i64 %1060
  br label %1061

1061:                                             ; preds = %.lr.ph2850, %._crit_edge2839
  %storemerge1867.in2853 = phi i32 [ %975, %.lr.ph2850 ], [ %storemerge1867, %._crit_edge2839 ]
  %storemerge1867.in2848 = phi i32 [ %1049, %.lr.ph2850 ], [ %storemerge1867.in2853, %._crit_edge2839 ]
  %.not18702825 = icmp slt i32 %storemerge1867.in2848, 3
  br i1 %.not18702825, label %._crit_edge2829, label %.lr.ph2828

.lr.ph2828:                                       ; preds = %1061
  %1062 = mul nsw i32 %storemerge1867.in2853, %.01641
  %1063 = sext i32 %1062 to i64
  %1064 = add nsw i32 %storemerge1867.in2848, -2
  %wide.trip.count3244 = zext nneg i32 %1064 to i64
  %invariant.gep3680 = getelementptr %struct.doublecomplex, ptr %4, i64 %1063
  br label %1065

1065:                                             ; preds = %.lr.ph2828, %1065
  %indvars.iv3241 = phi i64 [ 0, %.lr.ph2828 ], [ %indvars.iv.next3242, %1065 ]
  %1066 = phi double [ 0.000000e+00, %.lr.ph2828 ], [ %1071, %1065 ]
  %gep3681 = getelementptr %struct.doublecomplex, ptr %invariant.gep3680, i64 %indvars.iv3241
  %1067 = tail call { double, double } @Cd(ptr noundef %gep3681)
  %1068 = extractvalue { double, double } %1067, 0
  %1069 = extractvalue { double, double } %1067, 1
  %1070 = tail call double @cabs(double noundef %1068, double noundef %1069) #9
  %1071 = fadd double %1070, %1066
  %gep3683 = getelementptr double, ptr %invariant.gep3682, i64 %indvars.iv3241
  %1072 = load double, ptr %gep3683, align 8, !tbaa !12
  %1073 = fadd double %1070, %1072
  store double %1073, ptr %gep3683, align 8, !tbaa !12
  %indvars.iv.next3242 = add nuw nsw i64 %indvars.iv3241, 1
  %exitcond3245.not = icmp eq i64 %indvars.iv.next3242, %wide.trip.count3244
  br i1 %exitcond3245.not, label %._crit_edge2829, label %1065, !llvm.loop !61

._crit_edge2829:                                  ; preds = %1065, %1061
  %.lcssa28412845 = phi double [ 0.000000e+00, %1061 ], [ %1071, %1065 ]
  %.35.lcssa = phi i32 [ 0, %1061 ], [ %1064, %1065 ]
  %1074 = icmp sgt i32 %storemerge1867.in2853, 0
  %1075 = mul nsw i32 %storemerge1867.in2853, %.01641
  br i1 %1074, label %1076, label %._crit_edge2829._crit_edge

1076:                                             ; preds = %._crit_edge2829
  %1077 = add nsw i32 %1075, %.35.lcssa
  %1078 = sext i32 %1077 to i64
  %1079 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %1078
  %1080 = load double, ptr %1079, align 8, !tbaa !9
  %1081 = fcmp oge double %1080, 0.000000e+00
  %1082 = fneg double %1080
  %1083 = select i1 %1081, double %1080, double %1082
  %1084 = fadd double %.lcssa28412845, %1083
  %1085 = add nsw i32 %1049, %.35.lcssa
  %1086 = sext i32 %1085 to i64
  %1087 = getelementptr inbounds double, ptr %5, i64 %1086
  %1088 = load double, ptr %1087, align 8, !tbaa !12
  %1089 = fadd double %1084, %1088
  store double %1089, ptr %1087, align 8, !tbaa !12
  %1090 = add nuw nsw i32 %.35.lcssa, 1
  br label %._crit_edge2829._crit_edge

._crit_edge2829._crit_edge:                       ; preds = %._crit_edge2829, %1076
  %.36 = phi i32 [ %1090, %1076 ], [ %.35.lcssa, %._crit_edge2829 ]
  %1091 = add nsw i32 %.36, %1075
  %1092 = sext i32 %1091 to i64
  %1093 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %1092
  %1094 = load double, ptr %1093, align 8, !tbaa !9
  %1095 = fcmp oge double %1094, 0.000000e+00
  %1096 = fneg double %1094
  %1097 = select i1 %1095, double %1094, double %1096
  %1098 = sext i32 %storemerge1867.in2853 to i64
  %1099 = getelementptr inbounds double, ptr %5, i64 %1098
  store double %1097, ptr %1099, align 8, !tbaa !12
  %1100 = load i32, ptr %3, align 4, !tbaa !5
  %1101 = add nsw i32 %1100, -1
  %.not1871.not2834 = icmp slt i32 %storemerge1867.in2853, %1101
  br i1 %.not1871.not2834, label %.lr.ph2838, label %._crit_edge2839

.lr.ph2838:                                       ; preds = %._crit_edge2829._crit_edge
  %1102 = sext i32 %.36 to i64
  %1103 = sext i32 %1075 to i64
  %wide.trip.count3253 = sext i32 %1101 to i64
  %invariant.gep3684 = getelementptr %struct.doublecomplex, ptr %4, i64 %1103
  br label %1104

1104:                                             ; preds = %.lr.ph2838, %1104
  %indvars.iv3248 = phi i64 [ %1098, %.lr.ph2838 ], [ %indvars.iv.next3249, %1104 ]
  %indvars.iv3246 = phi i64 [ %1102, %.lr.ph2838 ], [ %indvars.iv.next3247, %1104 ]
  %1105 = phi double [ 0.000000e+00, %.lr.ph2838 ], [ %1110, %1104 ]
  %indvars.iv.next3249 = add nsw i64 %indvars.iv3248, 1
  %indvars.iv.next3247 = add nsw i64 %indvars.iv3246, 1
  %gep3685 = getelementptr %struct.doublecomplex, ptr %invariant.gep3684, i64 %indvars.iv.next3247
  %1106 = tail call { double, double } @Cd(ptr noundef %gep3685)
  %1107 = extractvalue { double, double } %1106, 0
  %1108 = extractvalue { double, double } %1106, 1
  %1109 = tail call double @cabs(double noundef %1107, double noundef %1108) #9
  %1110 = fadd double %1109, %1105
  %1111 = getelementptr inbounds double, ptr %5, i64 %indvars.iv.next3249
  %1112 = load double, ptr %1111, align 8, !tbaa !12
  %1113 = fadd double %1109, %1112
  store double %1113, ptr %1111, align 8, !tbaa !12
  %exitcond3254.not = icmp eq i64 %indvars.iv.next3249, %wide.trip.count3253
  br i1 %exitcond3254.not, label %._crit_edge2839.loopexit, label %1104, !llvm.loop !62

._crit_edge2839.loopexit:                         ; preds = %1104
  %.pre3511 = load double, ptr %1099, align 8, !tbaa !12
  br label %._crit_edge2839

._crit_edge2839:                                  ; preds = %._crit_edge2839.loopexit, %._crit_edge2829._crit_edge
  %1114 = phi double [ %1097, %._crit_edge2829._crit_edge ], [ %.pre3511, %._crit_edge2839.loopexit ]
  %.lcssa28412844 = phi double [ 0.000000e+00, %._crit_edge2829._crit_edge ], [ %1110, %._crit_edge2839.loopexit ]
  %1115 = fadd double %.lcssa28412844, %1114
  store double %1115, ptr %1099, align 8, !tbaa !12
  %storemerge1867 = add nsw i32 %storemerge1867.in2853, -1
  br i1 %1074, label %1061, label %1116, !llvm.loop !63

1116:                                             ; preds = %._crit_edge2839
  store double %.lcssa28412844, ptr %11, align 8, !tbaa !12
  store i32 %storemerge1867, ptr %9, align 4, !tbaa !5
  %.pre3512 = load i32, ptr %3, align 4, !tbaa !5
  %1117 = load double, ptr %5, align 8, !tbaa !12
  %.not1868.not2854 = icmp sgt i32 %.pre3512, 1
  br i1 %.not1868.not2854, label %.lr.ph2858.preheader, label %.loopexit

.lr.ph2858.preheader:                             ; preds = %1116
  %wide.trip.count3258 = zext nneg i32 %.pre3512 to i64
  br label %.lr.ph2858

.lr.ph2858:                                       ; preds = %.lr.ph2858.preheader, %1123
  %indvars.iv3255 = phi i64 [ 1, %.lr.ph2858.preheader ], [ %indvars.iv.next3256, %1123 ]
  %.992855 = phi double [ %1117, %.lr.ph2858.preheader ], [ %.100, %1123 ]
  %1118 = getelementptr inbounds double, ptr %5, i64 %indvars.iv3255
  %1119 = load double, ptr %1118, align 8, !tbaa !12
  store double %1119, ptr %8, align 8, !tbaa !12
  %1120 = fcmp olt double %.992855, %1119
  br i1 %1120, label %1123, label %1121

1121:                                             ; preds = %.lr.ph2858
  %1122 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1869 = icmp eq i32 %1122, 0
  br i1 %.not1869, label %1123, label %._crit_edge3513

._crit_edge3513:                                  ; preds = %1121
  %.pre3514 = load double, ptr %8, align 8, !tbaa !12
  br label %1123

1123:                                             ; preds = %.lr.ph2858, %._crit_edge3513, %1121
  %.100 = phi double [ %.992855, %1121 ], [ %.pre3514, %._crit_edge3513 ], [ %1119, %.lr.ph2858 ]
  %indvars.iv.next3256 = add nuw nsw i64 %indvars.iv3255, 1
  %exitcond3259.not = icmp eq i64 %indvars.iv.next3256, %wide.trip.count3258
  br i1 %exitcond3259.not, label %.loopexit, label %.lr.ph2858, !llvm.loop !64

1124:                                             ; preds = %976
  br i1 %.not1748.not.not.not.not.not.not.not.not, label %.preheader1994, label %.preheader1997

.preheader1997:                                   ; preds = %1124
  %.not1859.not2860 = icmp sgt i32 %974, 1
  br i1 %.not1859.not2860, label %.lr.ph2888, label %.preheader1996.thread3565

.preheader1996.thread3565:                        ; preds = %.preheader1997
  %1125 = load double, ptr %5, align 8, !tbaa !12
  br label %.loopexit

.preheader1994:                                   ; preds = %1124
  %.not1853.not2897 = icmp sgt i32 %974, 0
  br i1 %.not1853.not2897, label %.preheader, label %.thread3569

.lr.ph2888:                                       ; preds = %.preheader1997
  %1126 = add nsw i32 %975, -1
  %1127 = zext i32 %1126 to i64
  %1128 = shl nuw nsw i64 %1127, 3
  %1129 = add nuw nsw i64 %1128, 8
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %5, i8 0, i64 %1129, i1 false), !tbaa !12
  %1130 = add nsw i32 %975, -1
  %1131 = sext i32 %.01641 to i64
  %1132 = zext nneg i32 %975 to i64
  %1133 = sext i32 %1130 to i64
  %wide.trip.count3282 = zext nneg i32 %975 to i64
  %invariant.gep3686 = getelementptr inbounds double, ptr %5, i64 %1132
  %wide.trip.count3279 = zext i32 %1130 to i64
  br label %1134

1134:                                             ; preds = %.lr.ph2888, %._crit_edge2878
  %indvars.iv3272 = phi i64 [ 0, %.lr.ph2888 ], [ %indvars.iv.next3273, %._crit_edge2878 ]
  %indvars.iv3266 = phi i32 [ %975, %.lr.ph2888 ], [ %indvars.iv.next3267, %._crit_edge2878 ]
  %indvars3281 = trunc i64 %indvars.iv3272 to i32
  %1135 = add nsw i32 %indvars3281, -1
  %1136 = add i32 %1135, %975
  %.not18642864 = icmp slt i32 %1136, 0
  %.pre3533 = mul nsw i64 %indvars.iv3272, %1131
  br i1 %.not18642864, label %._crit_edge2868, label %.lr.ph2867

.lr.ph2867:                                       ; preds = %1134
  %wide.trip.count3268 = zext i32 %indvars.iv3266 to i64
  %1137 = getelementptr %struct.doublecomplex, ptr %4, i64 %.pre3533
  br label %1138

1138:                                             ; preds = %.lr.ph2867, %1138
  %indvars.iv3263 = phi i64 [ 0, %.lr.ph2867 ], [ %indvars.iv.next3264, %1138 ]
  %1139 = phi double [ 0.000000e+00, %.lr.ph2867 ], [ %1145, %1138 ]
  %1140 = getelementptr %struct.doublecomplex, ptr %1137, i64 %indvars.iv3263
  %1141 = tail call { double, double } @Cd(ptr noundef %1140)
  %1142 = extractvalue { double, double } %1141, 0
  %1143 = extractvalue { double, double } %1141, 1
  %1144 = tail call double @cabs(double noundef %1142, double noundef %1143) #9
  %1145 = fadd double %1144, %1139
  %1146 = getelementptr inbounds double, ptr %5, i64 %indvars.iv3263
  %1147 = load double, ptr %1146, align 8, !tbaa !12
  %1148 = fadd double %1144, %1147
  store double %1148, ptr %1146, align 8, !tbaa !12
  %indvars.iv.next3264 = add nuw nsw i64 %indvars.iv3263, 1
  %exitcond3269.not = icmp eq i64 %indvars.iv.next3264, %wide.trip.count3268
  br i1 %exitcond3269.not, label %._crit_edge2868, label %1138, !llvm.loop !65

._crit_edge2868:                                  ; preds = %1138, %1134
  %.lcssa28802883 = phi double [ 0.000000e+00, %1134 ], [ %1145, %1138 ]
  %.40.lcssa = phi i32 [ 0, %1134 ], [ %indvars.iv3266, %1138 ]
  %1149 = sext i32 %.40.lcssa to i64
  %1150 = getelementptr %struct.doublecomplex, ptr %4, i64 %.pre3533
  %1151 = getelementptr %struct.doublecomplex, ptr %1150, i64 %1149
  %1152 = load double, ptr %1151, align 8, !tbaa !9
  %1153 = fcmp oge double %1152, 0.000000e+00
  %1154 = fneg double %1152
  %1155 = select i1 %1153, double %1152, double %1154
  %1156 = fadd double %.lcssa28802883, %1155
  %gep3687 = getelementptr inbounds double, ptr %invariant.gep3686, i64 %indvars.iv3272
  store double %1156, ptr %gep3687, align 8, !tbaa !12
  %1157 = getelementptr %struct.doublecomplex, ptr %4, i64 %.pre3533
  %1158 = sext i32 %.40.lcssa to i64
  %1159 = getelementptr %struct.doublecomplex, ptr %1157, i64 %1158
  %1160 = getelementptr i8, ptr %1159, i64 16
  %1161 = load double, ptr %1160, align 8, !tbaa !9
  %1162 = fcmp oge double %1161, 0.000000e+00
  %1163 = fneg double %1161
  %1164 = select i1 %1162, double %1161, double %1163
  %1165 = getelementptr inbounds double, ptr %5, i64 %indvars.iv3272
  %1166 = load double, ptr %1165, align 8, !tbaa !12
  %1167 = fadd double %1166, %1164
  store double %1167, ptr %1165, align 8, !tbaa !12
  %.not1865.not2873 = icmp slt i64 %indvars.iv3272, %1133
  br i1 %.not1865.not2873, label %.lr.ph2877, label %._crit_edge2878

.lr.ph2877:                                       ; preds = %._crit_edge2868
  %1168 = add nsw i64 %1149, 1
  %1169 = getelementptr %struct.doublecomplex, ptr %4, i64 %.pre3533
  br label %1170

1170:                                             ; preds = %.lr.ph2877, %1170
  %indvars.iv3274 = phi i64 [ %indvars.iv3272, %.lr.ph2877 ], [ %indvars.iv.next3275, %1170 ]
  %indvars.iv3270 = phi i64 [ %1168, %.lr.ph2877 ], [ %indvars.iv.next3271, %1170 ]
  %1171 = phi double [ 0.000000e+00, %.lr.ph2877 ], [ %1177, %1170 ]
  %indvars.iv.next3275 = add nuw nsw i64 %indvars.iv3274, 1
  %indvars.iv.next3271 = add nuw nsw i64 %indvars.iv3270, 1
  %1172 = getelementptr %struct.doublecomplex, ptr %1169, i64 %indvars.iv.next3271
  %1173 = tail call { double, double } @Cd(ptr noundef %1172)
  %1174 = extractvalue { double, double } %1173, 0
  %1175 = extractvalue { double, double } %1173, 1
  %1176 = tail call double @cabs(double noundef %1174, double noundef %1175) #9
  %1177 = fadd double %1176, %1171
  %1178 = getelementptr inbounds double, ptr %5, i64 %indvars.iv.next3275
  %1179 = load double, ptr %1178, align 8, !tbaa !12
  %1180 = fadd double %1176, %1179
  store double %1180, ptr %1178, align 8, !tbaa !12
  %exitcond3280.not = icmp eq i64 %indvars.iv.next3275, %wide.trip.count3279
  br i1 %exitcond3280.not, label %._crit_edge2878.loopexit, label %1170, !llvm.loop !66

._crit_edge2878.loopexit:                         ; preds = %1170
  %.pre3515 = load double, ptr %1165, align 8, !tbaa !12
  br label %._crit_edge2878

._crit_edge2878:                                  ; preds = %._crit_edge2878.loopexit, %._crit_edge2868
  %1181 = phi double [ %1167, %._crit_edge2868 ], [ %.pre3515, %._crit_edge2878.loopexit ]
  %.lcssa28802884 = phi double [ 0.000000e+00, %._crit_edge2868 ], [ %1177, %._crit_edge2878.loopexit ]
  %1182 = fadd double %.lcssa28802884, %1181
  store double %1182, ptr %1165, align 8, !tbaa !12
  %indvars.iv.next3273 = add nuw nsw i64 %indvars.iv3272, 1
  %indvars.iv.next3267 = add i32 %indvars.iv3266, 1
  %exitcond3283.not = icmp eq i64 %indvars.iv.next3273, %wide.trip.count3282
  br i1 %exitcond3283.not, label %.preheader1996, label %1134, !llvm.loop !67

.preheader1996:                                   ; preds = %._crit_edge2878
  store double %.lcssa28802884, ptr %11, align 8, !tbaa !12
  store i32 %1130, ptr %7, align 4, !tbaa !5
  %.pre3516 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %975, ptr %9, align 4, !tbaa !5
  %1183 = load double, ptr %5, align 8, !tbaa !12
  %.not1862.not2891 = icmp sgt i32 %.pre3516, 1
  br i1 %.not1862.not2891, label %.lr.ph2895.preheader, label %.loopexit

.lr.ph2895.preheader:                             ; preds = %.preheader1996
  %wide.trip.count3287 = zext nneg i32 %.pre3516 to i64
  br label %.lr.ph2895

.lr.ph2895:                                       ; preds = %.lr.ph2895.preheader, %1189
  %indvars.iv3284 = phi i64 [ 1, %.lr.ph2895.preheader ], [ %indvars.iv.next3285, %1189 ]
  %.1012892 = phi double [ %1183, %.lr.ph2895.preheader ], [ %.102, %1189 ]
  %1184 = getelementptr inbounds double, ptr %5, i64 %indvars.iv3284
  %1185 = load double, ptr %1184, align 8, !tbaa !12
  store double %1185, ptr %8, align 8, !tbaa !12
  %1186 = fcmp olt double %.1012892, %1185
  br i1 %1186, label %1189, label %1187

1187:                                             ; preds = %.lr.ph2895
  %1188 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1863 = icmp eq i32 %1188, 0
  br i1 %.not1863, label %1189, label %._crit_edge3517

._crit_edge3517:                                  ; preds = %1187
  %.pre3518 = load double, ptr %8, align 8, !tbaa !12
  br label %1189

1189:                                             ; preds = %.lr.ph2895, %._crit_edge3517, %1187
  %.102 = phi double [ %.1012892, %1187 ], [ %.pre3518, %._crit_edge3517 ], [ %1185, %.lr.ph2895 ]
  %indvars.iv.next3285 = add nuw nsw i64 %indvars.iv3284, 1
  %exitcond3288.not = icmp eq i64 %indvars.iv.next3285, %wide.trip.count3287
  br i1 %exitcond3288.not, label %.loopexit, label %.lr.ph2895, !llvm.loop !68

.preheader:                                       ; preds = %.preheader1994
  %1190 = zext nneg i32 %975 to i64
  %1191 = shl nuw nsw i64 %1190, 3
  %scevgep3289 = getelementptr i8, ptr %5, i64 %1191
  %1192 = add nuw nsw i32 %975, 1
  %smax3290 = tail call i32 @llvm.smax.i32(i32 %974, i32 %1192)
  %1193 = xor i32 %975, -1
  %1194 = add nsw i32 %smax3290, %1193
  %1195 = zext i32 %1194 to i64
  %1196 = shl nuw nsw i64 %1195, 3
  %1197 = add nuw nsw i64 %1196, 8
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %scevgep3289, i8 0, i64 %1197, i1 false), !tbaa !12
  %.not3694 = icmp eq i32 %974, 1
  br i1 %.not3694, label %.thread3569, label %.lr.ph2925

.lr.ph2925:                                       ; preds = %.preheader
  %storemerge18542923 = add nsw i32 %975, -1
  %1198 = zext nneg i32 %975 to i64
  %invariant.gep3690 = getelementptr inbounds double, ptr %5, i64 %1198
  br label %1199

1199:                                             ; preds = %.lr.ph2925, %._crit_edge2915
  %storemerge1854.in2928 = phi i32 [ %storemerge18542923, %.lr.ph2925 ], [ %storemerge1854, %._crit_edge2915 ]
  %.not1857.not2901 = icmp sgt i32 %storemerge1854.in2928, 0
  %1200 = mul nsw i32 %storemerge1854.in2928, %.01641
  br i1 %.not1857.not2901, label %.lr.ph2904, label %._crit_edge2905

.lr.ph2904:                                       ; preds = %1199
  %1201 = sext i32 %1200 to i64
  %wide.trip.count3297 = zext nneg i32 %storemerge1854.in2928 to i64
  %invariant.gep3688 = getelementptr %struct.doublecomplex, ptr %4, i64 %1201
  br label %1202

1202:                                             ; preds = %.lr.ph2904, %1202
  %indvars.iv3294 = phi i64 [ 0, %.lr.ph2904 ], [ %indvars.iv.next3295, %1202 ]
  %1203 = phi double [ 0.000000e+00, %.lr.ph2904 ], [ %1208, %1202 ]
  %gep3689 = getelementptr %struct.doublecomplex, ptr %invariant.gep3688, i64 %indvars.iv3294
  %1204 = tail call { double, double } @Cd(ptr noundef %gep3689)
  %1205 = extractvalue { double, double } %1204, 0
  %1206 = extractvalue { double, double } %1204, 1
  %1207 = tail call double @cabs(double noundef %1205, double noundef %1206) #9
  %1208 = fadd double %1207, %1203
  %gep3691 = getelementptr inbounds double, ptr %invariant.gep3690, i64 %indvars.iv3294
  %1209 = load double, ptr %gep3691, align 8, !tbaa !12
  %1210 = fadd double %1207, %1209
  store double %1210, ptr %gep3691, align 8, !tbaa !12
  %indvars.iv.next3295 = add nuw nsw i64 %indvars.iv3294, 1
  %exitcond3298.not = icmp eq i64 %indvars.iv.next3295, %wide.trip.count3297
  br i1 %exitcond3298.not, label %._crit_edge2905, label %1202, !llvm.loop !69

._crit_edge2905:                                  ; preds = %1202, %1199
  %.lcssa29172920 = phi double [ 0.000000e+00, %1199 ], [ %1208, %1202 ]
  %.44.lcssa = phi i32 [ 0, %1199 ], [ %storemerge1854.in2928, %1202 ]
  %1211 = add nsw i32 %1200, %.44.lcssa
  %1212 = sext i32 %1211 to i64
  %1213 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %1212
  %1214 = load double, ptr %1213, align 8, !tbaa !9
  %1215 = fcmp oge double %1214, 0.000000e+00
  %1216 = fneg double %1214
  %1217 = select i1 %1215, double %1214, double %1216
  %1218 = fadd double %.lcssa29172920, %1217
  %1219 = add nuw nsw i32 %975, %.44.lcssa
  %1220 = zext nneg i32 %1219 to i64
  %1221 = getelementptr inbounds double, ptr %5, i64 %1220
  %1222 = load double, ptr %1221, align 8, !tbaa !12
  %1223 = fadd double %1218, %1222
  store double %1223, ptr %1221, align 8, !tbaa !12
  %1224 = add nuw nsw i32 %.44.lcssa, 1
  %1225 = add nsw i32 %1200, %1224
  %1226 = sext i32 %1225 to i64
  %1227 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %1226
  %1228 = load double, ptr %1227, align 8, !tbaa !9
  %1229 = fcmp oge double %1228, 0.000000e+00
  %1230 = fneg double %1228
  %1231 = select i1 %1229, double %1228, double %1230
  %1232 = sext i32 %storemerge1854.in2928 to i64
  %1233 = getelementptr inbounds double, ptr %5, i64 %1232
  store double %1231, ptr %1233, align 8, !tbaa !12
  %1234 = load i32, ptr %3, align 4, !tbaa !5
  %1235 = add nsw i32 %1234, -1
  %.not1858.not2910 = icmp slt i32 %storemerge1854.in2928, %1235
  br i1 %.not1858.not2910, label %.lr.ph2914, label %._crit_edge2915

.lr.ph2914:                                       ; preds = %._crit_edge2905
  %narrow = add nuw i32 %.44.lcssa, 1
  %1236 = zext i32 %narrow to i64
  %1237 = sext i32 %1200 to i64
  %wide.trip.count3306 = sext i32 %1235 to i64
  %invariant.gep3692 = getelementptr %struct.doublecomplex, ptr %4, i64 %1237
  br label %1238

1238:                                             ; preds = %.lr.ph2914, %1238
  %indvars.iv3301 = phi i64 [ %1232, %.lr.ph2914 ], [ %indvars.iv.next3302, %1238 ]
  %indvars.iv3299 = phi i64 [ %1236, %.lr.ph2914 ], [ %indvars.iv.next3300, %1238 ]
  %1239 = phi double [ 0.000000e+00, %.lr.ph2914 ], [ %1244, %1238 ]
  %indvars.iv.next3302 = add nsw i64 %indvars.iv3301, 1
  %indvars.iv.next3300 = add nuw nsw i64 %indvars.iv3299, 1
  %gep3693 = getelementptr %struct.doublecomplex, ptr %invariant.gep3692, i64 %indvars.iv.next3300
  %1240 = tail call { double, double } @Cd(ptr noundef %gep3693)
  %1241 = extractvalue { double, double } %1240, 0
  %1242 = extractvalue { double, double } %1240, 1
  %1243 = tail call double @cabs(double noundef %1241, double noundef %1242) #9
  %1244 = fadd double %1243, %1239
  %1245 = getelementptr inbounds double, ptr %5, i64 %indvars.iv.next3302
  %1246 = load double, ptr %1245, align 8, !tbaa !12
  %1247 = fadd double %1243, %1246
  store double %1247, ptr %1245, align 8, !tbaa !12
  %exitcond3307.not = icmp eq i64 %indvars.iv.next3302, %wide.trip.count3306
  br i1 %exitcond3307.not, label %._crit_edge2915.loopexit, label %1238, !llvm.loop !70

._crit_edge2915.loopexit:                         ; preds = %1238
  %.pre3519 = load double, ptr %1233, align 8, !tbaa !12
  br label %._crit_edge2915

._crit_edge2915:                                  ; preds = %._crit_edge2915.loopexit, %._crit_edge2905
  %1248 = phi double [ %1231, %._crit_edge2905 ], [ %.pre3519, %._crit_edge2915.loopexit ]
  %.lcssa29172921 = phi double [ 0.000000e+00, %._crit_edge2905 ], [ %1244, %._crit_edge2915.loopexit ]
  %1249 = fadd double %.lcssa29172921, %1248
  store double %1249, ptr %1233, align 8, !tbaa !12
  %storemerge1854 = add nsw i32 %storemerge1854.in2928, -1
  br i1 %.not1857.not2901, label %1199, label %1251, !llvm.loop !71

.thread3569:                                      ; preds = %.preheader1994, %.preheader
  %1250 = load double, ptr %5, align 8, !tbaa !12
  br label %.loopexit

1251:                                             ; preds = %._crit_edge2915
  store double %.lcssa29172921, ptr %11, align 8, !tbaa !12
  store i32 %storemerge1854, ptr %9, align 4, !tbaa !5
  %.pre3520 = load i32, ptr %3, align 4, !tbaa !5
  %1252 = load double, ptr %5, align 8, !tbaa !12
  %.not1855.not2929 = icmp sgt i32 %.pre3520, 1
  br i1 %.not1855.not2929, label %.lr.ph2933.preheader, label %.loopexit

.lr.ph2933.preheader:                             ; preds = %1251
  %wide.trip.count3311 = zext nneg i32 %.pre3520 to i64
  br label %.lr.ph2933

.lr.ph2933:                                       ; preds = %.lr.ph2933.preheader, %1258
  %indvars.iv3308 = phi i64 [ 1, %.lr.ph2933.preheader ], [ %indvars.iv.next3309, %1258 ]
  %.1032930 = phi double [ %1252, %.lr.ph2933.preheader ], [ %.104, %1258 ]
  %1253 = getelementptr inbounds double, ptr %5, i64 %indvars.iv3308
  %1254 = load double, ptr %1253, align 8, !tbaa !12
  store double %1254, ptr %8, align 8, !tbaa !12
  %1255 = fcmp olt double %.1032930, %1254
  br i1 %1255, label %1258, label %1256

1256:                                             ; preds = %.lr.ph2933
  %1257 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1856 = icmp eq i32 %1257, 0
  br i1 %.not1856, label %1258, label %._crit_edge3521

._crit_edge3521:                                  ; preds = %1256
  %.pre3522 = load double, ptr %8, align 8, !tbaa !12
  br label %1258

1258:                                             ; preds = %.lr.ph2933, %._crit_edge3521, %1256
  %.104 = phi double [ %.1032930, %1256 ], [ %.pre3522, %._crit_edge3521 ], [ %1254, %.lr.ph2933 ]
  %indvars.iv.next3309 = add nuw nsw i64 %indvars.iv3308, 1
  %exitcond3312.not = icmp eq i64 %indvars.iv.next3309, %wide.trip.count3311
  br i1 %exitcond3312.not, label %.loopexit, label %.lr.ph2933, !llvm.loop !72

1259:                                             ; preds = %973
  br i1 %.not1852, label %1494, label %1260

1260:                                             ; preds = %1259
  %1261 = add nsw i32 %975, 1
  store i32 %1261, ptr %10, align 4, !tbaa !5
  br i1 %.not1748.not.not.not.not.not.not.not.not, label %1377, label %1262

1262:                                             ; preds = %1260
  %.not1841.not2488 = icmp sgt i32 %974, 0
  br i1 %.not1841.not2488, label %.preheader2011, label %.preheader2011.thread

.preheader2011:                                   ; preds = %1262
  %1263 = zext nneg i32 %975 to i64
  %1264 = shl nuw nsw i64 %1263, 3
  %scevgep = getelementptr i8, ptr %5, i64 %1264
  %smax3033 = tail call i32 @llvm.smax.i32(i32 %974, i32 %1261)
  %1265 = xor i32 %975, -1
  %1266 = add nsw i32 %smax3033, %1265
  %1267 = zext i32 %1266 to i64
  %1268 = shl nuw nsw i64 %1267, 3
  %1269 = add nuw nsw i64 %1268, 8
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %scevgep, i8 0, i64 %1269, i1 false), !tbaa !12
  %.not1843.not2505.not = icmp eq i32 %974, 1
  br i1 %.not1843.not2505.not, label %.preheader2011.thread, label %.lr.ph2507

.lr.ph2507:                                       ; preds = %.preheader2011
  %1270 = zext nneg i32 %975 to i64
  %1271 = sext i32 %.01641 to i64
  %wide.trip.count3040 = zext nneg i32 %975 to i64
  %wide.trip.count = zext nneg i32 %1261 to i64
  %invariant.gep3652 = getelementptr inbounds double, ptr %5, i64 %1270
  br label %.lr.ph2496

.lr.ph2496:                                       ; preds = %._crit_edge2497, %.lr.ph2507
  %indvars.iv3037 = phi i64 [ 0, %.lr.ph2507 ], [ %indvars.iv.next3038, %._crit_edge2497 ]
  %1272 = mul nsw i64 %indvars.iv3037, %1271
  %1273 = getelementptr %struct.doublecomplex, ptr %4, i64 %1272
  br label %1274

1274:                                             ; preds = %.lr.ph2496, %1274
  %indvars.iv = phi i64 [ 0, %.lr.ph2496 ], [ %indvars.iv.next, %1274 ]
  %1275 = phi double [ 0.000000e+00, %.lr.ph2496 ], [ %1283, %1274 ]
  %1276 = getelementptr %struct.doublecomplex, ptr %1273, i64 %indvars.iv
  %1277 = tail call { double, double } @Cd(ptr noundef %1276)
  %1278 = extractvalue { double, double } %1277, 0
  %1279 = extractvalue { double, double } %1277, 1
  %1280 = tail call double @cabs(double noundef %1278, double noundef %1279) #9
  %gep3653 = getelementptr inbounds double, ptr %invariant.gep3652, i64 %indvars.iv
  %1281 = load double, ptr %gep3653, align 8, !tbaa !12
  %1282 = fadd double %1280, %1281
  store double %1282, ptr %gep3653, align 8, !tbaa !12
  %1283 = fadd double %1280, %1275
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond3036.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond3036.not, label %._crit_edge2497, label %1274, !llvm.loop !73

._crit_edge2497:                                  ; preds = %1274
  %1284 = getelementptr inbounds double, ptr %5, i64 %indvars.iv3037
  store double %1283, ptr %1284, align 8, !tbaa !12
  %indvars.iv.next3038 = add nuw nsw i64 %indvars.iv3037, 1
  %exitcond3041.not = icmp eq i64 %indvars.iv.next3038, %wide.trip.count3040
  br i1 %exitcond3041.not, label %._crit_edge2508, label %.lr.ph2496, !llvm.loop !74

._crit_edge2508:                                  ; preds = %._crit_edge2497
  store i32 %975, ptr %7, align 4, !tbaa !5
  br label %.preheader2011.thread

.preheader2011.thread:                            ; preds = %1262, %._crit_edge2508, %.preheader2011
  %1285 = phi i32 [ %975, %._crit_edge2508 ], [ 0, %.preheader2011 ], [ 0, %1262 ]
  %1286 = mul nsw i32 %1285, %.01641
  %1287 = sext i32 %1286 to i64
  %1288 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %1287
  %1289 = load double, ptr %1288, align 8, !tbaa !9
  %1290 = fcmp oge double %1289, 0.000000e+00
  %1291 = fneg double %1289
  %1292 = select i1 %1290, double %1289, double %1291
  store double %1292, ptr %11, align 8, !tbaa !12
  %.not1844.not2512 = icmp sgt i32 %974, 1
  br i1 %.not1844.not2512, label %.lr.ph2515, label %1303

.lr.ph2515:                                       ; preds = %.preheader2011.thread
  %1293 = zext nneg i32 %975 to i64
  %wide.trip.count3045 = zext nneg i32 %1261 to i64
  %invariant.gep3654 = getelementptr %struct.doublecomplex, ptr %4, i64 %1287
  %invariant.gep3656 = getelementptr inbounds double, ptr %5, i64 %1293
  br label %1294

1294:                                             ; preds = %.lr.ph2515, %1294
  %indvars.iv3042 = phi i64 [ 1, %.lr.ph2515 ], [ %indvars.iv.next3043, %1294 ]
  %1295 = phi double [ %1292, %.lr.ph2515 ], [ %1302, %1294 ]
  %gep3655 = getelementptr %struct.doublecomplex, ptr %invariant.gep3654, i64 %indvars.iv3042
  %1296 = tail call { double, double } @Cd(ptr noundef %gep3655)
  %1297 = extractvalue { double, double } %1296, 0
  %1298 = extractvalue { double, double } %1296, 1
  %1299 = tail call double @cabs(double noundef %1297, double noundef %1298) #9
  %gep3657 = getelementptr inbounds double, ptr %invariant.gep3656, i64 %indvars.iv3042
  %1300 = load double, ptr %gep3657, align 8, !tbaa !12
  %1301 = fadd double %1299, %1300
  store double %1301, ptr %gep3657, align 8, !tbaa !12
  %1302 = fadd double %1299, %1295
  %indvars.iv.next3043 = add nuw nsw i64 %indvars.iv3042, 1
  %exitcond3046.not = icmp eq i64 %indvars.iv.next3043, %wide.trip.count3045
  br i1 %exitcond3046.not, label %._crit_edge2516, label %1294, !llvm.loop !75

._crit_edge2516:                                  ; preds = %1294
  store double %1302, ptr %11, align 8, !tbaa !12
  br label %1303

1303:                                             ; preds = %._crit_edge2516, %.preheader2011.thread
  %1304 = phi double [ %1302, %._crit_edge2516 ], [ %1292, %.preheader2011.thread ]
  %1305 = sext i32 %1285 to i64
  %1306 = getelementptr inbounds double, ptr %5, i64 %1305
  %1307 = load double, ptr %1306, align 8, !tbaa !12
  %1308 = fadd double %1304, %1307
  store double %1308, ptr %1306, align 8, !tbaa !12
  %1309 = load i32, ptr %3, align 4, !tbaa !5
  %.not1846.not2542 = icmp slt i32 %1261, %1309
  br i1 %.not1846.not2542, label %.lr.ph2545, label %1368

.lr.ph2545:                                       ; preds = %1303
  %1310 = sext i32 %1261 to i64
  %1311 = sext i32 %.01641 to i64
  br label %1312

1312:                                             ; preds = %.lr.ph2545, %._crit_edge2534
  %indvars.iv3052 = phi i64 [ %1310, %.lr.ph2545 ], [ %indvars.iv.next3053, %._crit_edge2534 ]
  %1313 = trunc nsw i64 %indvars.iv3052 to i32
  %reass.sub3557 = sub i32 %1313, %975
  %1314 = add i32 %reass.sub3557, -2
  %.not18492520 = icmp slt i32 %1314, 0
  %.pre3555 = mul nsw i64 %indvars.iv3052, %1311
  br i1 %.not18492520, label %._crit_edge2524, label %.lr.ph2523

.lr.ph2523:                                       ; preds = %1312
  %1315 = zext nneg i32 %1314 to i64
  %1316 = getelementptr %struct.doublecomplex, ptr %4, i64 %.pre3555
  br label %1317

1317:                                             ; preds = %.lr.ph2523, %1317
  %indvars.iv3047 = phi i64 [ 0, %.lr.ph2523 ], [ %indvars.iv.next3048, %1317 ]
  %1318 = phi double [ 0.000000e+00, %.lr.ph2523 ], [ %1327, %1317 ]
  %1319 = getelementptr %struct.doublecomplex, ptr %1316, i64 %indvars.iv3047
  %1320 = tail call { double, double } @Cd(ptr noundef %1319)
  %1321 = extractvalue { double, double } %1320, 0
  %1322 = extractvalue { double, double } %1320, 1
  %1323 = tail call double @cabs(double noundef %1321, double noundef %1322) #9
  %1324 = getelementptr inbounds double, ptr %5, i64 %indvars.iv3047
  %1325 = load double, ptr %1324, align 8, !tbaa !12
  %1326 = fadd double %1323, %1325
  store double %1326, ptr %1324, align 8, !tbaa !12
  %1327 = fadd double %1323, %1318
  %indvars.iv.next3048 = add nuw nsw i64 %indvars.iv3047, 1
  %.not1849.not = icmp ult i64 %indvars.iv3047, %1315
  br i1 %.not1849.not, label %1317, label %._crit_edge2524.loopexit, !llvm.loop !76

._crit_edge2524.loopexit:                         ; preds = %1317
  %1328 = trunc nsw i64 %indvars.iv.next3048 to i32
  br label %._crit_edge2524

._crit_edge2524:                                  ; preds = %1312, %._crit_edge2524.loopexit
  %.lcssa25362539 = phi double [ %1327, %._crit_edge2524.loopexit ], [ 0.000000e+00, %1312 ]
  %.50.lcssa = phi i32 [ %1328, %._crit_edge2524.loopexit ], [ 0, %1312 ]
  %1329 = sext i32 %.50.lcssa to i64
  %1330 = getelementptr %struct.doublecomplex, ptr %4, i64 %.pre3555
  %1331 = getelementptr %struct.doublecomplex, ptr %1330, i64 %1329
  %1332 = load double, ptr %1331, align 8, !tbaa !9
  %1333 = fcmp oge double %1332, 0.000000e+00
  %1334 = fneg double %1332
  %1335 = select i1 %1333, double %1332, double %1334
  %1336 = fadd double %.lcssa25362539, %1335
  %1337 = sub nsw i64 %indvars.iv3052, %1310
  %1338 = getelementptr inbounds double, ptr %5, i64 %1337
  %1339 = load double, ptr %1338, align 8, !tbaa !12
  %1340 = fadd double %1336, %1339
  store double %1340, ptr %1338, align 8, !tbaa !12
  %1341 = getelementptr %struct.doublecomplex, ptr %4, i64 %.pre3555
  %1342 = sext i32 %.50.lcssa to i64
  %1343 = getelementptr %struct.doublecomplex, ptr %1341, i64 %1342
  %1344 = getelementptr i8, ptr %1343, i64 16
  %1345 = load double, ptr %1344, align 8, !tbaa !9
  %1346 = fcmp oge double %1345, 0.000000e+00
  %1347 = fneg double %1345
  %1348 = select i1 %1346, double %1345, double %1347
  %1349 = load i32, ptr %3, align 4, !tbaa !5
  %1350 = add nsw i32 %1349, -1
  %1351 = sext i32 %1350 to i64
  %.not1850.not2529 = icmp slt i64 %indvars.iv3052, %1351
  br i1 %.not1850.not2529, label %.lr.ph2533, label %._crit_edge2534

.lr.ph2533:                                       ; preds = %._crit_edge2524
  %1352 = add nsw i64 %1329, 1
  %1353 = getelementptr %struct.doublecomplex, ptr %4, i64 %.pre3555
  br label %1354

1354:                                             ; preds = %.lr.ph2533, %1354
  %indvars.iv3054 = phi i64 [ %indvars.iv3052, %.lr.ph2533 ], [ %indvars.iv.next3055, %1354 ]
  %indvars.iv3050 = phi i64 [ %1352, %.lr.ph2533 ], [ %indvars.iv.next3051, %1354 ]
  %1355 = phi double [ %1348, %.lr.ph2533 ], [ %1364, %1354 ]
  %indvars.iv.next3055 = add nsw i64 %indvars.iv3054, 1
  %indvars.iv.next3051 = add nuw nsw i64 %indvars.iv3050, 1
  %1356 = getelementptr %struct.doublecomplex, ptr %1353, i64 %indvars.iv.next3051
  %1357 = tail call { double, double } @Cd(ptr noundef %1356)
  %1358 = extractvalue { double, double } %1357, 0
  %1359 = extractvalue { double, double } %1357, 1
  %1360 = tail call double @cabs(double noundef %1358, double noundef %1359) #9
  %1361 = getelementptr inbounds double, ptr %5, i64 %indvars.iv.next3055
  %1362 = load double, ptr %1361, align 8, !tbaa !12
  %1363 = fadd double %1360, %1362
  store double %1363, ptr %1361, align 8, !tbaa !12
  %1364 = fadd double %1360, %1355
  %.not1850.not = icmp slt i64 %indvars.iv.next3055, %1351
  br i1 %.not1850.not, label %1354, label %._crit_edge2534, !llvm.loop !77

._crit_edge2534:                                  ; preds = %1354, %._crit_edge2524
  %.lcssa25362540 = phi double [ %1348, %._crit_edge2524 ], [ %1364, %1354 ]
  %1365 = getelementptr inbounds double, ptr %5, i64 %indvars.iv3052
  %1366 = load double, ptr %1365, align 8, !tbaa !12
  %1367 = fadd double %.lcssa25362540, %1366
  store double %1367, ptr %1365, align 8, !tbaa !12
  %indvars.iv.next3053 = add nsw i64 %indvars.iv3052, 1
  %lftr.wideiv = trunc i64 %indvars.iv.next3053 to i32
  %exitcond3060.not = icmp eq i32 %1309, %lftr.wideiv
  br i1 %exitcond3060.not, label %._crit_edge2546, label %1312, !llvm.loop !78

._crit_edge2546:                                  ; preds = %._crit_edge2534
  store double %.lcssa25362540, ptr %11, align 8, !tbaa !12
  store i32 %1350, ptr %7, align 4, !tbaa !5
  %.pre3497 = load i32, ptr %3, align 4, !tbaa !5
  br label %1368

1368:                                             ; preds = %._crit_edge2546, %1303
  %1369 = phi i32 [ %.pre3497, %._crit_edge2546 ], [ %1309, %1303 ]
  %storemerge1845.lcssa = phi i32 [ %1309, %._crit_edge2546 ], [ %1261, %1303 ]
  store i32 %storemerge1845.lcssa, ptr %9, align 4, !tbaa !5
  %1370 = load double, ptr %5, align 8, !tbaa !12
  %.not1847.not2549 = icmp sgt i32 %1369, 1
  br i1 %.not1847.not2549, label %.lr.ph2553.preheader, label %.loopexit

.lr.ph2553.preheader:                             ; preds = %1368
  %wide.trip.count3064 = zext nneg i32 %1369 to i64
  br label %.lr.ph2553

.lr.ph2553:                                       ; preds = %.lr.ph2553.preheader, %1376
  %indvars.iv3061 = phi i64 [ 1, %.lr.ph2553.preheader ], [ %indvars.iv.next3062, %1376 ]
  %.1052550 = phi double [ %1370, %.lr.ph2553.preheader ], [ %.106, %1376 ]
  %1371 = getelementptr inbounds double, ptr %5, i64 %indvars.iv3061
  %1372 = load double, ptr %1371, align 8, !tbaa !12
  store double %1372, ptr %8, align 8, !tbaa !12
  %1373 = fcmp olt double %.1052550, %1372
  br i1 %1373, label %1376, label %1374

1374:                                             ; preds = %.lr.ph2553
  %1375 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1848 = icmp eq i32 %1375, 0
  br i1 %.not1848, label %1376, label %._crit_edge3498

._crit_edge3498:                                  ; preds = %1374
  %.pre3499 = load double, ptr %8, align 8, !tbaa !12
  br label %1376

1376:                                             ; preds = %.lr.ph2553, %._crit_edge3498, %1374
  %.106 = phi double [ %.1052550, %1374 ], [ %.pre3499, %._crit_edge3498 ], [ %1372, %.lr.ph2553 ]
  %indvars.iv.next3062 = add nuw nsw i64 %indvars.iv3061, 1
  %exitcond3065.not = icmp eq i64 %indvars.iv.next3062, %wide.trip.count3064
  br i1 %exitcond3065.not, label %.loopexit, label %.lr.ph2553, !llvm.loop !79

1377:                                             ; preds = %1260
  %.not1830.not2555 = icmp slt i32 %1261, %974
  br i1 %.not1830.not2555, label %.lr.ph2558.preheader, label %.preheader2009

.lr.ph2558.preheader:                             ; preds = %1377
  %1378 = sext i32 %975 to i64
  %1379 = shl nsw i64 %1378, 3
  %1380 = getelementptr i8, ptr %5, i64 %1379
  %scevgep3066 = getelementptr i8, ptr %1380, i64 8
  %1381 = add nsw i32 %974, -2
  %1382 = sub i32 %1381, %975
  %1383 = zext i32 %1382 to i64
  %1384 = shl nuw nsw i64 %1383, 3
  %1385 = add nuw nsw i64 %1384, 8
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %scevgep3066, i8 0, i64 %1385, i1 false), !tbaa !12
  br label %.preheader2009

.preheader2009:                                   ; preds = %.lr.ph2558.preheader, %1377
  %.not1832.not2582 = icmp sgt i32 %974, 1
  br i1 %.not1832.not2582, label %.lr.ph2584, label %.thread3572

.thread3572:                                      ; preds = %.preheader2009
  store i32 0, ptr %9, align 4, !tbaa !5
  br label %._crit_edge2593

.lr.ph2584:                                       ; preds = %.preheader2009
  %1386 = sext i32 %.01641 to i64
  %1387 = zext nneg i32 %1261 to i64
  %wide.trip.count3087 = zext nneg i32 %975 to i64
  br label %1388

1388:                                             ; preds = %.lr.ph2584, %._crit_edge2574
  %indvars.iv3084 = phi i64 [ 0, %.lr.ph2584 ], [ %indvars.iv.next3085, %._crit_edge2574 ]
  %indvars.iv3077 = phi i32 [ %1261, %.lr.ph2584 ], [ %indvars.iv.next3078, %._crit_edge2574 ]
  %1389 = sext i32 %indvars.iv3077 to i64
  %.not18392560 = icmp eq i64 %indvars.iv3084, 0
  br i1 %.not18392560, label %._crit_edge2564, label %.lr.ph2563

.lr.ph2563:                                       ; preds = %1388
  %1390 = mul nsw i64 %indvars.iv3084, %1386
  %1391 = getelementptr %struct.doublecomplex, ptr %4, i64 %1390
  br label %1392

1392:                                             ; preds = %.lr.ph2563, %1392
  %indvars.iv3070 = phi i64 [ 0, %.lr.ph2563 ], [ %indvars.iv.next3071, %1392 ]
  %1393 = phi double [ 0.000000e+00, %.lr.ph2563 ], [ %1402, %1392 ]
  %1394 = getelementptr %struct.doublecomplex, ptr %1391, i64 %indvars.iv3070
  %1395 = tail call { double, double } @Cd(ptr noundef %1394)
  %1396 = extractvalue { double, double } %1395, 0
  %1397 = extractvalue { double, double } %1395, 1
  %1398 = tail call double @cabs(double noundef %1396, double noundef %1397) #9
  %1399 = getelementptr inbounds double, ptr %5, i64 %indvars.iv3070
  %1400 = load double, ptr %1399, align 8, !tbaa !12
  %1401 = fadd double %1398, %1400
  store double %1401, ptr %1399, align 8, !tbaa !12
  %1402 = fadd double %1398, %1393
  %indvars.iv.next3071 = add nuw nsw i64 %indvars.iv3070, 1
  %exitcond3074.not = icmp eq i64 %indvars.iv.next3071, %indvars.iv3084
  br i1 %exitcond3074.not, label %._crit_edge2564.loopexit, label %1392, !llvm.loop !80

._crit_edge2564.loopexit:                         ; preds = %1392
  %1403 = trunc nuw nsw i64 %indvars.iv3084 to i32
  br label %._crit_edge2564

._crit_edge2564:                                  ; preds = %1388, %._crit_edge2564.loopexit
  %.pre-phi3552 = phi i64 [ %1390, %._crit_edge2564.loopexit ], [ 0, %1388 ]
  %.lcssa25762579 = phi double [ %1402, %._crit_edge2564.loopexit ], [ 0.000000e+00, %1388 ]
  %.54.lcssa = phi i32 [ %1403, %._crit_edge2564.loopexit ], [ 0, %1388 ]
  %1404 = sext i32 %.54.lcssa to i64
  %1405 = getelementptr %struct.doublecomplex, ptr %4, i64 %.pre-phi3552
  %1406 = getelementptr %struct.doublecomplex, ptr %1405, i64 %1404
  %1407 = load double, ptr %1406, align 8, !tbaa !9
  %1408 = fcmp oge double %1407, 0.000000e+00
  %1409 = fneg double %1407
  %1410 = select i1 %1408, double %1407, double %1409
  %1411 = fadd double %.lcssa25762579, %1410
  %1412 = getelementptr inbounds double, ptr %5, i64 %indvars.iv3084
  store double %1411, ptr %1412, align 8, !tbaa !12
  %1413 = getelementptr %struct.doublecomplex, ptr %4, i64 %.pre-phi3552
  %1414 = sext i32 %.54.lcssa to i64
  %1415 = getelementptr %struct.doublecomplex, ptr %1413, i64 %1414
  %1416 = getelementptr i8, ptr %1415, i64 16
  %1417 = load double, ptr %1416, align 8, !tbaa !9
  %1418 = fcmp oge double %1417, 0.000000e+00
  %1419 = fneg double %1417
  %1420 = select i1 %1418, double %1417, double %1419
  %1421 = load i32, ptr %3, align 4, !tbaa !5
  %1422 = add nsw i32 %1421, -1
  %1423 = add nuw nsw i64 %indvars.iv3084, %1387
  %1424 = sext i32 %1422 to i64
  %.not1840.not2569 = icmp slt i64 %1423, %1424
  br i1 %.not1840.not2569, label %.lr.ph2573, label %._crit_edge2574

.lr.ph2573:                                       ; preds = %._crit_edge2564
  %1425 = zext nneg i32 %.54.lcssa to i64
  %1426 = add nuw nsw i64 %1425, 1
  %1427 = getelementptr %struct.doublecomplex, ptr %4, i64 %.pre-phi3552
  br label %1428

1428:                                             ; preds = %.lr.ph2573, %1428
  %indvars.iv3079 = phi i64 [ %1389, %.lr.ph2573 ], [ %indvars.iv.next3080, %1428 ]
  %indvars.iv3075 = phi i64 [ %1426, %.lr.ph2573 ], [ %indvars.iv.next3076, %1428 ]
  %1429 = phi double [ %1420, %.lr.ph2573 ], [ %1435, %1428 ]
  %indvars.iv.next3080 = add nsw i64 %indvars.iv3079, 1
  %indvars.iv.next3076 = add nuw nsw i64 %indvars.iv3075, 1
  %1430 = getelementptr %struct.doublecomplex, ptr %1427, i64 %indvars.iv.next3076
  %1431 = tail call { double, double } @Cd(ptr noundef %1430)
  %1432 = extractvalue { double, double } %1431, 0
  %1433 = extractvalue { double, double } %1431, 1
  %1434 = tail call double @cabs(double noundef %1432, double noundef %1433) #9
  %1435 = fadd double %1434, %1429
  %1436 = getelementptr inbounds double, ptr %5, i64 %indvars.iv.next3080
  %1437 = load double, ptr %1436, align 8, !tbaa !12
  %1438 = fadd double %1434, %1437
  store double %1438, ptr %1436, align 8, !tbaa !12
  %.not1840.not = icmp slt i64 %indvars.iv.next3080, %1424
  br i1 %.not1840.not, label %1428, label %._crit_edge2574, !llvm.loop !81

._crit_edge2574:                                  ; preds = %1428, %._crit_edge2564
  %.lcssa25762580 = phi double [ %1420, %._crit_edge2564 ], [ %1435, %1428 ]
  %1439 = getelementptr inbounds double, ptr %5, i64 %1423
  %1440 = load double, ptr %1439, align 8, !tbaa !12
  %1441 = fadd double %.lcssa25762580, %1440
  store double %1441, ptr %1439, align 8, !tbaa !12
  %indvars.iv.next3085 = add nuw nsw i64 %indvars.iv3084, 1
  %indvars.iv.next3078 = add i32 %indvars.iv3077, 1
  %exitcond3088.not = icmp eq i64 %indvars.iv.next3085, %wide.trip.count3087
  br i1 %exitcond3088.not, label %.lr.ph2592, label %1388, !llvm.loop !82

.lr.ph2592:                                       ; preds = %._crit_edge2574
  store i32 %1422, ptr %7, align 4, !tbaa !5
  store i32 %975, ptr %9, align 4, !tbaa !5
  %1442 = mul nsw i32 %975, %.01641
  %1443 = sext i32 %1442 to i64
  %wide.trip.count3092 = zext nneg i32 %975 to i64
  %invariant.gep3658 = getelementptr %struct.doublecomplex, ptr %4, i64 %1443
  br label %1444

1444:                                             ; preds = %.lr.ph2592, %1444
  %indvars.iv3089 = phi i64 [ 0, %.lr.ph2592 ], [ %indvars.iv.next3090, %1444 ]
  %1445 = phi double [ 0.000000e+00, %.lr.ph2592 ], [ %1453, %1444 ]
  %gep3659 = getelementptr %struct.doublecomplex, ptr %invariant.gep3658, i64 %indvars.iv3089
  %1446 = tail call { double, double } @Cd(ptr noundef %gep3659)
  %1447 = extractvalue { double, double } %1446, 0
  %1448 = extractvalue { double, double } %1446, 1
  %1449 = tail call double @cabs(double noundef %1447, double noundef %1448) #9
  %1450 = getelementptr inbounds double, ptr %5, i64 %indvars.iv3089
  %1451 = load double, ptr %1450, align 8, !tbaa !12
  %1452 = fadd double %1449, %1451
  store double %1452, ptr %1450, align 8, !tbaa !12
  %1453 = fadd double %1449, %1445
  %indvars.iv.next3090 = add nuw nsw i64 %indvars.iv3089, 1
  %exitcond3093.not = icmp eq i64 %indvars.iv.next3090, %wide.trip.count3092
  br i1 %exitcond3093.not, label %._crit_edge2593, label %1444, !llvm.loop !83

._crit_edge2593:                                  ; preds = %1444, %.thread3572
  %.pre-phi3554 = phi i32 [ 0, %.thread3572 ], [ %1442, %1444 ]
  %1454 = phi double [ 0.000000e+00, %.thread3572 ], [ %1453, %1444 ]
  %.56.lcssa = phi i32 [ 0, %.thread3572 ], [ %975, %1444 ]
  %1455 = add nsw i32 %.pre-phi3554, %.56.lcssa
  %1456 = sext i32 %1455 to i64
  %1457 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %1456
  %1458 = load double, ptr %1457, align 8, !tbaa !9
  %1459 = fcmp oge double %1458, 0.000000e+00
  %1460 = fneg double %1458
  %1461 = select i1 %1459, double %1458, double %1460
  %1462 = fadd double %1454, %1461
  store double %1462, ptr %11, align 8, !tbaa !12
  %1463 = zext nneg i32 %.56.lcssa to i64
  %1464 = getelementptr inbounds double, ptr %5, i64 %1463
  store double %1462, ptr %1464, align 8, !tbaa !12
  %1465 = load i32, ptr %3, align 4, !tbaa !5
  %.not1835.not2609 = icmp slt i32 %1261, %1465
  br i1 %.not1835.not2609, label %.lr.ph2612, label %1485

.lr.ph2612:                                       ; preds = %._crit_edge2593
  %.not18382598 = icmp slt i32 %974, -1
  %1466 = sext i32 %1261 to i64
  %1467 = sext i32 %.01641 to i64
  %wide.trip.count3097 = zext i32 %1261 to i64
  br label %1468

1468:                                             ; preds = %.lr.ph2612, %._crit_edge2602
  %indvars.iv3099 = phi i64 [ %1466, %.lr.ph2612 ], [ %indvars.iv.next3100, %._crit_edge2602 ]
  br i1 %.not18382598, label %._crit_edge2602, label %.lr.ph2601

.lr.ph2601:                                       ; preds = %1468
  %1469 = mul nsw i64 %indvars.iv3099, %1467
  %1470 = getelementptr %struct.doublecomplex, ptr %4, i64 %1469
  br label %1471

1471:                                             ; preds = %.lr.ph2601, %1471
  %indvars.iv3094 = phi i64 [ 0, %.lr.ph2601 ], [ %indvars.iv.next3095, %1471 ]
  %1472 = phi double [ 0.000000e+00, %.lr.ph2601 ], [ %1481, %1471 ]
  %1473 = getelementptr %struct.doublecomplex, ptr %1470, i64 %indvars.iv3094
  %1474 = tail call { double, double } @Cd(ptr noundef %1473)
  %1475 = extractvalue { double, double } %1474, 0
  %1476 = extractvalue { double, double } %1474, 1
  %1477 = tail call double @cabs(double noundef %1475, double noundef %1476) #9
  %1478 = getelementptr inbounds double, ptr %5, i64 %indvars.iv3094
  %1479 = load double, ptr %1478, align 8, !tbaa !12
  %1480 = fadd double %1477, %1479
  store double %1480, ptr %1478, align 8, !tbaa !12
  %1481 = fadd double %1477, %1472
  %indvars.iv.next3095 = add nuw nsw i64 %indvars.iv3094, 1
  %exitcond3098.not = icmp eq i64 %indvars.iv.next3095, %wide.trip.count3097
  br i1 %exitcond3098.not, label %._crit_edge2602, label %1471, !llvm.loop !84

._crit_edge2602:                                  ; preds = %1471, %1468
  %.lcssa26042607 = phi double [ 0.000000e+00, %1468 ], [ %1481, %1471 ]
  %1482 = getelementptr inbounds double, ptr %5, i64 %indvars.iv3099
  %1483 = load double, ptr %1482, align 8, !tbaa !12
  %1484 = fadd double %.lcssa26042607, %1483
  store double %1484, ptr %1482, align 8, !tbaa !12
  %indvars.iv.next3100 = add nsw i64 %indvars.iv3099, 1
  %lftr.wideiv3102 = trunc i64 %indvars.iv.next3100 to i32
  %exitcond3103.not = icmp eq i32 %1465, %lftr.wideiv3102
  br i1 %exitcond3103.not, label %._crit_edge2613, label %1468, !llvm.loop !85

._crit_edge2613:                                  ; preds = %._crit_edge2602
  store double %.lcssa26042607, ptr %11, align 8, !tbaa !12
  store i32 %975, ptr %7, align 4, !tbaa !5
  %.pre3500 = load i32, ptr %3, align 4, !tbaa !5
  br label %1485

1485:                                             ; preds = %._crit_edge2613, %._crit_edge2593
  %1486 = phi i32 [ %.pre3500, %._crit_edge2613 ], [ %1465, %._crit_edge2593 ]
  %storemerge1834.lcssa = phi i32 [ %1465, %._crit_edge2613 ], [ %1261, %._crit_edge2593 ]
  store i32 %storemerge1834.lcssa, ptr %9, align 4, !tbaa !5
  %1487 = load double, ptr %5, align 8, !tbaa !12
  %.not1836.not2615 = icmp sgt i32 %1486, 1
  br i1 %.not1836.not2615, label %.lr.ph2619.preheader, label %.loopexit

.lr.ph2619.preheader:                             ; preds = %1485
  %wide.trip.count3107 = zext nneg i32 %1486 to i64
  br label %.lr.ph2619

.lr.ph2619:                                       ; preds = %.lr.ph2619.preheader, %1493
  %indvars.iv3104 = phi i64 [ 1, %.lr.ph2619.preheader ], [ %indvars.iv.next3105, %1493 ]
  %.1072616 = phi double [ %1487, %.lr.ph2619.preheader ], [ %.108, %1493 ]
  %1488 = getelementptr inbounds double, ptr %5, i64 %indvars.iv3104
  %1489 = load double, ptr %1488, align 8, !tbaa !12
  store double %1489, ptr %8, align 8, !tbaa !12
  %1490 = fcmp olt double %.1072616, %1489
  br i1 %1490, label %1493, label %1491

1491:                                             ; preds = %.lr.ph2619
  %1492 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1837 = icmp eq i32 %1492, 0
  br i1 %.not1837, label %1493, label %._crit_edge3501

._crit_edge3501:                                  ; preds = %1491
  %.pre3502 = load double, ptr %8, align 8, !tbaa !12
  br label %1493

1493:                                             ; preds = %.lr.ph2619, %._crit_edge3501, %1491
  %.108 = phi double [ %.1072616, %1491 ], [ %.pre3502, %._crit_edge3501 ], [ %1489, %.lr.ph2619 ]
  %indvars.iv.next3105 = add nuw nsw i64 %indvars.iv3104, 1
  %exitcond3108.not = icmp eq i64 %indvars.iv.next3105, %wide.trip.count3107
  br i1 %exitcond3108.not, label %.loopexit, label %.lr.ph2619, !llvm.loop !86

1494:                                             ; preds = %1259
  %.not1806.not2700 = icmp sgt i32 %974, 0
  br i1 %.not1748.not.not.not.not.not.not.not.not, label %.preheader2004, label %.preheader2007

.preheader2007:                                   ; preds = %1494
  br i1 %.not1806.not2700, label %.preheader2006, label %.preheader2006.thread

.preheader2004:                                   ; preds = %1494
  br i1 %.not1806.not2700, label %._crit_edge2703, label %._crit_edge2703.thread

._crit_edge2703.thread:                           ; preds = %.preheader2004
  %1495 = load double, ptr %4, align 8, !tbaa !9
  %1496 = fcmp oge double %1495, 0.000000e+00
  %1497 = fneg double %1495
  %1498 = select i1 %1496, double %1495, double %1497
  store double %1498, ptr %11, align 8, !tbaa !12
  br label %.thread3576

.preheader2006:                                   ; preds = %.preheader2007
  %1499 = zext nneg i32 %975 to i64
  %1500 = shl nuw nsw i64 %1499, 3
  %scevgep3109 = getelementptr i8, ptr %5, i64 %1500
  %1501 = add nuw nsw i32 %975, 1
  %smax3110 = tail call i32 @llvm.smax.i32(i32 %974, i32 %1501)
  %1502 = xor i32 %975, -1
  %1503 = add nsw i32 %smax3110, %1502
  %1504 = zext i32 %1503 to i64
  %1505 = shl nuw nsw i64 %1504, 3
  %1506 = add nuw nsw i64 %1505, 8
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %scevgep3109, i8 0, i64 %1506, i1 false), !tbaa !12
  %.not1820.not2637.not = icmp eq i32 %974, 1
  br i1 %.not1820.not2637.not, label %.preheader2006.thread, label %.lr.ph2639

.lr.ph2639:                                       ; preds = %.preheader2006
  %1507 = zext nneg i32 %975 to i64
  %1508 = sext i32 %.01641 to i64
  %wide.trip.count3122 = zext nneg i32 %975 to i64
  %invariant.gep3660 = getelementptr inbounds double, ptr %5, i64 %1507
  br label %.lr.ph2628

.lr.ph2628:                                       ; preds = %._crit_edge2629, %.lr.ph2639
  %indvars.iv3119 = phi i64 [ 0, %.lr.ph2639 ], [ %indvars.iv.next3120, %._crit_edge2629 ]
  %1509 = mul nsw i64 %indvars.iv3119, %1508
  %1510 = getelementptr %struct.doublecomplex, ptr %4, i64 %1509
  br label %1511

1511:                                             ; preds = %.lr.ph2628, %1511
  %indvars.iv3114 = phi i64 [ 0, %.lr.ph2628 ], [ %indvars.iv.next3115, %1511 ]
  %1512 = phi double [ 0.000000e+00, %.lr.ph2628 ], [ %1520, %1511 ]
  %1513 = getelementptr %struct.doublecomplex, ptr %1510, i64 %indvars.iv3114
  %1514 = tail call { double, double } @Cd(ptr noundef %1513)
  %1515 = extractvalue { double, double } %1514, 0
  %1516 = extractvalue { double, double } %1514, 1
  %1517 = tail call double @cabs(double noundef %1515, double noundef %1516) #9
  %gep3661 = getelementptr inbounds double, ptr %invariant.gep3660, i64 %indvars.iv3114
  %1518 = load double, ptr %gep3661, align 8, !tbaa !12
  %1519 = fadd double %1517, %1518
  store double %1519, ptr %gep3661, align 8, !tbaa !12
  %1520 = fadd double %1517, %1512
  %indvars.iv.next3115 = add nuw nsw i64 %indvars.iv3114, 1
  %exitcond3118.not = icmp eq i64 %indvars.iv.next3115, %wide.trip.count3122
  br i1 %exitcond3118.not, label %._crit_edge2629, label %1511, !llvm.loop !87

._crit_edge2629:                                  ; preds = %1511
  %1521 = getelementptr inbounds double, ptr %5, i64 %indvars.iv3119
  store double %1520, ptr %1521, align 8, !tbaa !12
  %indvars.iv.next3120 = add nuw nsw i64 %indvars.iv3119, 1
  %exitcond3123.not = icmp eq i64 %indvars.iv.next3120, %wide.trip.count3122
  br i1 %exitcond3123.not, label %._crit_edge2640, label %.lr.ph2628, !llvm.loop !88

._crit_edge2640:                                  ; preds = %._crit_edge2629
  %1522 = add nsw i32 %975, -1
  store double %1520, ptr %11, align 8, !tbaa !12
  store i32 %1522, ptr %7, align 4, !tbaa !5
  br label %.preheader2006.thread

.preheader2006.thread:                            ; preds = %.preheader2007, %._crit_edge2640, %.preheader2006
  %1523 = phi i32 [ %975, %._crit_edge2640 ], [ 0, %.preheader2006 ], [ 0, %.preheader2007 ]
  %1524 = mul nsw i32 %1523, %.01641
  %1525 = sext i32 %1524 to i64
  %1526 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %1525
  %1527 = load double, ptr %1526, align 8, !tbaa !9
  %1528 = fcmp oge double %1527, 0.000000e+00
  %1529 = fneg double %1527
  %1530 = select i1 %1528, double %1527, double %1529
  %.not1821.not2644 = icmp sgt i32 %974, 3
  br i1 %.not1821.not2644, label %.lr.ph2647, label %._crit_edge2648

.lr.ph2647:                                       ; preds = %.preheader2006.thread
  %1531 = zext nneg i32 %975 to i64
  %wide.trip.count3127 = zext nneg i32 %975 to i64
  %invariant.gep3662 = getelementptr %struct.doublecomplex, ptr %4, i64 %1525
  %invariant.gep3664 = getelementptr inbounds double, ptr %5, i64 %1531
  br label %1532

1532:                                             ; preds = %.lr.ph2647, %1532
  %indvars.iv3124 = phi i64 [ 1, %.lr.ph2647 ], [ %indvars.iv.next3125, %1532 ]
  %1533 = phi double [ %1530, %.lr.ph2647 ], [ %1540, %1532 ]
  %gep3663 = getelementptr %struct.doublecomplex, ptr %invariant.gep3662, i64 %indvars.iv3124
  %1534 = tail call { double, double } @Cd(ptr noundef %gep3663)
  %1535 = extractvalue { double, double } %1534, 0
  %1536 = extractvalue { double, double } %1534, 1
  %1537 = tail call double @cabs(double noundef %1535, double noundef %1536) #9
  %gep3665 = getelementptr inbounds double, ptr %invariant.gep3664, i64 %indvars.iv3124
  %1538 = load double, ptr %gep3665, align 8, !tbaa !12
  %1539 = fadd double %1537, %1538
  store double %1539, ptr %gep3665, align 8, !tbaa !12
  %1540 = fadd double %1537, %1533
  %indvars.iv.next3125 = add nuw nsw i64 %indvars.iv3124, 1
  %exitcond3128.not = icmp eq i64 %indvars.iv.next3125, %wide.trip.count3127
  br i1 %exitcond3128.not, label %._crit_edge2648, label %1532, !llvm.loop !89

._crit_edge2648:                                  ; preds = %1532, %.preheader2006.thread
  %1541 = phi double [ %1530, %.preheader2006.thread ], [ %1540, %1532 ]
  %1542 = sext i32 %1523 to i64
  %1543 = getelementptr inbounds double, ptr %5, i64 %1542
  %1544 = load double, ptr %1543, align 8, !tbaa !12
  %1545 = fadd double %1541, %1544
  store double %1545, ptr %1543, align 8, !tbaa !12
  %1546 = load i32, ptr %3, align 4, !tbaa !5
  %1547 = add nsw i32 %1546, -1
  %storemerge18222675 = add nsw i32 %975, 1
  store i32 %storemerge18222675, ptr %9, align 4, !tbaa !5
  %.not1823.not2676 = icmp slt i32 %975, %1547
  br i1 %.not1823.not2676, label %.lr.ph2680, label %1604

.lr.ph2680:                                       ; preds = %._crit_edge2648
  %1548 = xor i32 %975, -1
  %smax3143 = tail call i32 @llvm.smax.i32(i32 %storemerge18222675, i32 %1547)
  %1549 = add nsw i32 %smax3143, 1
  br label %1550

1550:                                             ; preds = %.lr.ph2680, %._crit_edge2666
  %storemerge1822.in2684 = phi i32 [ %storemerge18222675, %.lr.ph2680 ], [ %storemerge1822, %._crit_edge2666 ]
  %storemerge1822.in2677 = phi i32 [ %975, %.lr.ph2680 ], [ %storemerge1822.in2684, %._crit_edge2666 ]
  %1551 = sub i32 %975, %storemerge1822.in2677
  %.not18272652 = icmp sgt i32 %1551, -1
  %.pre3545 = mul nsw i32 %storemerge1822.in2684, %.01641
  br i1 %.not18272652, label %._crit_edge2656, label %.lr.ph2655

.lr.ph2655:                                       ; preds = %1550
  %1552 = sext i32 %.pre3545 to i64
  %1553 = sub i32 %storemerge1822.in2677, %975
  %wide.trip.count3132 = zext i32 %1553 to i64
  %invariant.gep3666 = getelementptr %struct.doublecomplex, ptr %4, i64 %1552
  br label %1554

1554:                                             ; preds = %.lr.ph2655, %1554
  %indvars.iv3129 = phi i64 [ 0, %.lr.ph2655 ], [ %indvars.iv.next3130, %1554 ]
  %1555 = phi double [ 0.000000e+00, %.lr.ph2655 ], [ %1563, %1554 ]
  %gep3667 = getelementptr %struct.doublecomplex, ptr %invariant.gep3666, i64 %indvars.iv3129
  %1556 = tail call { double, double } @Cd(ptr noundef %gep3667)
  %1557 = extractvalue { double, double } %1556, 0
  %1558 = extractvalue { double, double } %1556, 1
  %1559 = tail call double @cabs(double noundef %1557, double noundef %1558) #9
  %1560 = getelementptr inbounds double, ptr %5, i64 %indvars.iv3129
  %1561 = load double, ptr %1560, align 8, !tbaa !12
  %1562 = fadd double %1559, %1561
  store double %1562, ptr %1560, align 8, !tbaa !12
  %1563 = fadd double %1559, %1555
  %indvars.iv.next3130 = add nuw nsw i64 %indvars.iv3129, 1
  %exitcond3133.not = icmp eq i64 %indvars.iv.next3130, %wide.trip.count3132
  br i1 %exitcond3133.not, label %._crit_edge2656, label %1554, !llvm.loop !90

._crit_edge2656:                                  ; preds = %1554, %1550
  %.lcssa26682671 = phi double [ 0.000000e+00, %1550 ], [ %1563, %1554 ]
  %.62.lcssa = phi i32 [ 0, %1550 ], [ %1553, %1554 ]
  %1564 = add nsw i32 %.pre3545, %.62.lcssa
  %1565 = sext i32 %1564 to i64
  %1566 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %1565
  %1567 = load double, ptr %1566, align 8, !tbaa !9
  %1568 = fcmp oge double %1567, 0.000000e+00
  %1569 = fneg double %1567
  %1570 = select i1 %1568, double %1567, double %1569
  %1571 = fadd double %.lcssa26682671, %1570
  %1572 = add i32 %storemerge1822.in2684, %1548
  %1573 = sext i32 %1572 to i64
  %1574 = getelementptr inbounds double, ptr %5, i64 %1573
  %1575 = load double, ptr %1574, align 8, !tbaa !12
  %1576 = fadd double %1571, %1575
  store double %1576, ptr %1574, align 8, !tbaa !12
  %1577 = add nuw nsw i32 %.62.lcssa, 1
  %1578 = add nsw i32 %.pre3545, %1577
  %1579 = sext i32 %1578 to i64
  %1580 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %1579
  %1581 = load double, ptr %1580, align 8, !tbaa !9
  %1582 = fcmp oge double %1581, 0.000000e+00
  %1583 = fneg double %1581
  %1584 = select i1 %1582, double %1581, double %1583
  %1585 = load i32, ptr %3, align 4, !tbaa !5
  %1586 = add nsw i32 %1585, -1
  %.not1828.not2661 = icmp slt i32 %storemerge1822.in2684, %1586
  br i1 %.not1828.not2661, label %.lr.ph2665, label %._crit_edge2656.._crit_edge2666_crit_edge

._crit_edge2656.._crit_edge2666_crit_edge:        ; preds = %._crit_edge2656
  %.pre3547 = sext i32 %storemerge1822.in2684 to i64
  br label %._crit_edge2666

.lr.ph2665:                                       ; preds = %._crit_edge2656
  %1587 = sext i32 %.62.lcssa to i64
  %1588 = add nsw i64 %1587, 1
  %1589 = sext i32 %.pre3545 to i64
  %1590 = sext i32 %storemerge1822.in2684 to i64
  %wide.trip.count3141 = sext i32 %1586 to i64
  %invariant.gep3668 = getelementptr %struct.doublecomplex, ptr %4, i64 %1589
  br label %1591

1591:                                             ; preds = %.lr.ph2665, %1591
  %indvars.iv3136 = phi i64 [ %1590, %.lr.ph2665 ], [ %indvars.iv.next3137, %1591 ]
  %indvars.iv3134 = phi i64 [ %1588, %.lr.ph2665 ], [ %indvars.iv.next3135, %1591 ]
  %1592 = phi double [ %1584, %.lr.ph2665 ], [ %1600, %1591 ]
  %indvars.iv.next3137 = add nsw i64 %indvars.iv3136, 1
  %indvars.iv.next3135 = add nuw nsw i64 %indvars.iv3134, 1
  %gep3669 = getelementptr %struct.doublecomplex, ptr %invariant.gep3668, i64 %indvars.iv.next3135
  %1593 = tail call { double, double } @Cd(ptr noundef %gep3669)
  %1594 = extractvalue { double, double } %1593, 0
  %1595 = extractvalue { double, double } %1593, 1
  %1596 = tail call double @cabs(double noundef %1594, double noundef %1595) #9
  %1597 = getelementptr inbounds double, ptr %5, i64 %indvars.iv.next3137
  %1598 = load double, ptr %1597, align 8, !tbaa !12
  %1599 = fadd double %1596, %1598
  store double %1599, ptr %1597, align 8, !tbaa !12
  %1600 = fadd double %1596, %1592
  %exitcond3142.not = icmp eq i64 %indvars.iv.next3137, %wide.trip.count3141
  br i1 %exitcond3142.not, label %._crit_edge2666, label %1591, !llvm.loop !91

._crit_edge2666:                                  ; preds = %1591, %._crit_edge2656.._crit_edge2666_crit_edge
  %.pre-phi3548 = phi i64 [ %.pre3547, %._crit_edge2656.._crit_edge2666_crit_edge ], [ %1590, %1591 ]
  %.lcssa26682672 = phi double [ %1584, %._crit_edge2656.._crit_edge2666_crit_edge ], [ %1600, %1591 ]
  %1601 = getelementptr inbounds double, ptr %5, i64 %.pre-phi3548
  %1602 = load double, ptr %1601, align 8, !tbaa !12
  %1603 = fadd double %.lcssa26682672, %1602
  store double %1603, ptr %1601, align 8, !tbaa !12
  %storemerge1822 = add i32 %storemerge1822.in2684, 1
  %exitcond3144.not = icmp eq i32 %storemerge1822.in2684, %smax3143
  br i1 %exitcond3144.not, label %._crit_edge2681, label %1550, !llvm.loop !92

._crit_edge2681:                                  ; preds = %._crit_edge2666
  store i32 %1586, ptr %7, align 4, !tbaa !5
  store i32 %1549, ptr %9, align 4, !tbaa !5
  br label %1604

1604:                                             ; preds = %._crit_edge2681, %._crit_edge2648
  %1605 = phi i32 [ %1549, %._crit_edge2681 ], [ %storemerge18222675, %._crit_edge2648 ]
  %.not18242686 = icmp slt i32 %974, 4
  %.pre3549 = mul nsw i32 %1605, %.01641
  br i1 %.not18242686, label %._crit_edge3529, label %.lr.ph2689

.lr.ph2689:                                       ; preds = %1604
  %1606 = sext i32 %.pre3549 to i64
  %1607 = add nsw i32 %975, -1
  %wide.trip.count3148 = zext i32 %1607 to i64
  %invariant.gep3670 = getelementptr %struct.doublecomplex, ptr %4, i64 %1606
  br label %1608

1608:                                             ; preds = %.lr.ph2689, %1608
  %indvars.iv3145 = phi i64 [ 0, %.lr.ph2689 ], [ %indvars.iv.next3146, %1608 ]
  %1609 = phi double [ 0.000000e+00, %.lr.ph2689 ], [ %1617, %1608 ]
  %gep3671 = getelementptr %struct.doublecomplex, ptr %invariant.gep3670, i64 %indvars.iv3145
  %1610 = tail call { double, double } @Cd(ptr noundef %gep3671)
  %1611 = extractvalue { double, double } %1610, 0
  %1612 = extractvalue { double, double } %1610, 1
  %1613 = tail call double @cabs(double noundef %1611, double noundef %1612) #9
  %1614 = getelementptr inbounds double, ptr %5, i64 %indvars.iv3145
  %1615 = load double, ptr %1614, align 8, !tbaa !12
  %1616 = fadd double %1613, %1615
  store double %1616, ptr %1614, align 8, !tbaa !12
  %1617 = fadd double %1613, %1609
  %indvars.iv.next3146 = add nuw nsw i64 %indvars.iv3145, 1
  %exitcond3149.not = icmp eq i64 %indvars.iv.next3146, %wide.trip.count3148
  br i1 %exitcond3149.not, label %._crit_edge3529, label %1608, !llvm.loop !93

._crit_edge3529:                                  ; preds = %1608, %1604
  %1618 = phi double [ 0.000000e+00, %1604 ], [ %1617, %1608 ]
  %.64.lcssa = phi i32 [ 0, %1604 ], [ %1607, %1608 ]
  %1619 = add nsw i32 %.pre3549, %.64.lcssa
  %1620 = sext i32 %1619 to i64
  %1621 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %1620
  %1622 = load double, ptr %1621, align 8, !tbaa !9
  %1623 = fcmp oge double %1622, 0.000000e+00
  %1624 = fneg double %1622
  %1625 = select i1 %1623, double %1622, double %1624
  %1626 = fadd double %1618, %1625
  store double %1626, ptr %11, align 8, !tbaa !12
  %1627 = zext nneg i32 %.64.lcssa to i64
  %1628 = getelementptr inbounds double, ptr %5, i64 %1627
  %1629 = load double, ptr %1628, align 8, !tbaa !12
  %1630 = fadd double %1629, %1626
  store double %1630, ptr %1628, align 8, !tbaa !12
  %1631 = load double, ptr %5, align 8, !tbaa !12
  %1632 = load i32, ptr %3, align 4, !tbaa !5
  %.not1825.not2694 = icmp sgt i32 %1632, 1
  br i1 %.not1825.not2694, label %.lr.ph2698.preheader, label %.loopexit

.lr.ph2698.preheader:                             ; preds = %._crit_edge3529
  %wide.trip.count3153 = zext nneg i32 %1632 to i64
  br label %.lr.ph2698

.lr.ph2698:                                       ; preds = %.lr.ph2698.preheader, %1638
  %indvars.iv3150 = phi i64 [ 1, %.lr.ph2698.preheader ], [ %indvars.iv.next3151, %1638 ]
  %.1092695 = phi double [ %1631, %.lr.ph2698.preheader ], [ %.110, %1638 ]
  %1633 = getelementptr inbounds double, ptr %5, i64 %indvars.iv3150
  %1634 = load double, ptr %1633, align 8, !tbaa !12
  store double %1634, ptr %8, align 8, !tbaa !12
  %1635 = fcmp olt double %.1092695, %1634
  br i1 %1635, label %1638, label %1636

1636:                                             ; preds = %.lr.ph2698
  %1637 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1826 = icmp eq i32 %1637, 0
  br i1 %.not1826, label %1638, label %._crit_edge3503

._crit_edge3503:                                  ; preds = %1636
  %.pre3504 = load double, ptr %8, align 8, !tbaa !12
  br label %1638

1638:                                             ; preds = %.lr.ph2698, %._crit_edge3503, %1636
  %.110 = phi double [ %.1092695, %1636 ], [ %.pre3504, %._crit_edge3503 ], [ %1634, %.lr.ph2698 ]
  %indvars.iv.next3151 = add nuw nsw i64 %indvars.iv3150, 1
  %exitcond3154.not = icmp eq i64 %indvars.iv.next3151, %wide.trip.count3153
  br i1 %exitcond3154.not, label %.loopexit, label %.lr.ph2698, !llvm.loop !94

._crit_edge2703:                                  ; preds = %.preheader2004
  %1639 = zext nneg i32 %975 to i64
  %1640 = shl nuw nsw i64 %1639, 3
  %scevgep3155 = getelementptr i8, ptr %5, i64 %1640
  %1641 = add nuw nsw i32 %975, 1
  %smax3156 = tail call i32 @llvm.smax.i32(i32 %974, i32 %1641)
  %1642 = xor i32 %975, -1
  %1643 = add nsw i32 %smax3156, %1642
  %1644 = zext i32 %1643 to i64
  %1645 = shl nuw nsw i64 %1644, 3
  %1646 = add nuw nsw i64 %1645, 8
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %scevgep3155, i8 0, i64 %1646, i1 false), !tbaa !12
  %1647 = load double, ptr %4, align 8, !tbaa !9
  %1648 = fcmp oge double %1647, 0.000000e+00
  %1649 = fneg double %1647
  %1650 = select i1 %1648, double %1647, double %1649
  store double %1650, ptr %11, align 8, !tbaa !12
  %.not1807.not2705 = icmp ugt i32 %974, 3
  br i1 %.not1807.not2705, label %.lr.ph2708, label %.thread3576

.thread3576:                                      ; preds = %._crit_edge2703, %._crit_edge2703.thread
  %1651 = phi double [ %1498, %._crit_edge2703.thread ], [ %1650, %._crit_edge2703 ]
  %.pre3539 = sext i32 %975 to i64
  %1652 = getelementptr inbounds double, ptr %5, i64 %.pre3539
  %1653 = load double, ptr %1652, align 8, !tbaa !12
  %1654 = fadd double %1651, %1653
  store double %1654, ptr %1652, align 8, !tbaa !12
  br label %._crit_edge2747

.lr.ph2708:                                       ; preds = %._crit_edge2703
  %1655 = zext nneg i32 %975 to i64
  %smax3163 = tail call i32 @llvm.smax.i32(i32 %975, i32 2)
  %wide.trip.count3164 = zext nneg i32 %smax3163 to i64
  %invariant.gep3672 = getelementptr inbounds double, ptr %5, i64 %1655
  br label %1656

1656:                                             ; preds = %.lr.ph2708, %1656
  %indvars.iv3160 = phi i64 [ 1, %.lr.ph2708 ], [ %indvars.iv.next3161, %1656 ]
  %1657 = phi double [ %1650, %.lr.ph2708 ], [ %1665, %1656 ]
  %1658 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %indvars.iv3160
  %1659 = tail call { double, double } @Cd(ptr noundef nonnull %1658)
  %1660 = extractvalue { double, double } %1659, 0
  %1661 = extractvalue { double, double } %1659, 1
  %1662 = tail call double @cabs(double noundef %1660, double noundef %1661) #9
  %gep3673 = getelementptr inbounds double, ptr %invariant.gep3672, i64 %indvars.iv3160
  %1663 = load double, ptr %gep3673, align 8, !tbaa !12
  %1664 = fadd double %1662, %1663
  store double %1664, ptr %gep3673, align 8, !tbaa !12
  %1665 = fadd double %1662, %1657
  %indvars.iv.next3161 = add nuw nsw i64 %indvars.iv3160, 1
  %exitcond3165.not = icmp eq i64 %indvars.iv.next3161, %wide.trip.count3164
  br i1 %exitcond3165.not, label %1666, label %1656, !llvm.loop !95

1666:                                             ; preds = %1656
  %1667 = getelementptr inbounds double, ptr %5, i64 %1655
  %1668 = load double, ptr %1667, align 8, !tbaa !12
  %1669 = fadd double %1665, %1668
  store double %1669, ptr %1667, align 8, !tbaa !12
  %invariant.gep = getelementptr i8, ptr %5, i64 -8
  %.not1809.not2735 = icmp sgt i32 %974, 3
  br i1 %.not1809.not2735, label %.lr.ph2738, label %._crit_edge2747

.lr.ph2738:                                       ; preds = %1666
  %1670 = sext i32 %.01641 to i64
  %1671 = add nsw i32 %975, -1
  %wide.trip.count3189 = zext i32 %1671 to i64
  br label %1672

1672:                                             ; preds = %.lr.ph2738, %._crit_edge2727
  %indvars.iv3184 = phi i64 [ 1, %.lr.ph2738 ], [ %indvars.iv.next3185, %._crit_edge2727 ]
  %indvars.iv3182 = phi i64 [ 0, %.lr.ph2738 ], [ %indvars.iv.next3183, %._crit_edge2727 ]
  %indvars.iv3175.in = phi i32 [ %975, %.lr.ph2738 ], [ %indvars.iv3175, %._crit_edge2727 ]
  %indvars.iv3175 = add i32 %indvars.iv3175.in, 1
  %1673 = sext i32 %indvars.iv3175 to i64
  %.not18162713 = icmp ult i64 %indvars.iv3184, 2
  %.pre3541 = mul nsw i64 %indvars.iv3184, %1670
  br i1 %.not18162713, label %._crit_edge2717, label %.lr.ph2716

.lr.ph2716:                                       ; preds = %1672
  %1674 = getelementptr %struct.doublecomplex, ptr %4, i64 %.pre3541
  br label %1675

1675:                                             ; preds = %.lr.ph2716, %1675
  %indvars.iv3166 = phi i64 [ 0, %.lr.ph2716 ], [ %indvars.iv.next3167, %1675 ]
  %1676 = phi double [ 0.000000e+00, %.lr.ph2716 ], [ %1685, %1675 ]
  %1677 = getelementptr %struct.doublecomplex, ptr %1674, i64 %indvars.iv3166
  %1678 = tail call { double, double } @Cd(ptr noundef nonnull %1677)
  %1679 = extractvalue { double, double } %1678, 0
  %1680 = extractvalue { double, double } %1678, 1
  %1681 = tail call double @cabs(double noundef %1679, double noundef %1680) #9
  %1682 = getelementptr inbounds double, ptr %5, i64 %indvars.iv3166
  %1683 = load double, ptr %1682, align 8, !tbaa !12
  %1684 = fadd double %1681, %1683
  store double %1684, ptr %1682, align 8, !tbaa !12
  %1685 = fadd double %1681, %1676
  %indvars.iv.next3167 = add nuw nsw i64 %indvars.iv3166, 1
  %exitcond3172.not = icmp eq i64 %indvars.iv.next3167, %indvars.iv3182
  br i1 %exitcond3172.not, label %._crit_edge2717.loopexit, label %1675, !llvm.loop !96

._crit_edge2717.loopexit:                         ; preds = %1675
  %1686 = trunc nuw nsw i64 %indvars.iv3182 to i32
  br label %._crit_edge2717

._crit_edge2717:                                  ; preds = %1672, %._crit_edge2717.loopexit
  %.lcssa27292732 = phi double [ %1685, %._crit_edge2717.loopexit ], [ 0.000000e+00, %1672 ]
  %.68.lcssa = phi i32 [ %1686, %._crit_edge2717.loopexit ], [ 0, %1672 ]
  %1687 = sext i32 %.68.lcssa to i64
  %1688 = getelementptr %struct.doublecomplex, ptr %4, i64 %.pre3541
  %1689 = getelementptr %struct.doublecomplex, ptr %1688, i64 %1687
  %1690 = load double, ptr %1689, align 8, !tbaa !9
  %1691 = fcmp oge double %1690, 0.000000e+00
  %1692 = fneg double %1690
  %1693 = select i1 %1691, double %1690, double %1692
  %1694 = fadd double %.lcssa27292732, %1693
  %gep = getelementptr double, ptr %invariant.gep, i64 %indvars.iv3184
  store double %1694, ptr %gep, align 8, !tbaa !12
  %1695 = getelementptr %struct.doublecomplex, ptr %4, i64 %.pre3541
  %1696 = sext i32 %.68.lcssa to i64
  %1697 = getelementptr %struct.doublecomplex, ptr %1695, i64 %1696
  %1698 = getelementptr i8, ptr %1697, i64 16
  %1699 = load double, ptr %1698, align 8, !tbaa !9
  %1700 = fcmp oge double %1699, 0.000000e+00
  %1701 = fneg double %1699
  %1702 = select i1 %1700, double %1699, double %1701
  %1703 = load i32, ptr %3, align 4, !tbaa !5
  %1704 = add nsw i32 %1703, -1
  %1705 = add nuw nsw i64 %indvars.iv3184, %1655
  %1706 = sext i32 %1704 to i64
  %.not1817.not2722 = icmp slt i64 %1705, %1706
  br i1 %.not1817.not2722, label %.lr.ph2726, label %._crit_edge2727

.lr.ph2726:                                       ; preds = %._crit_edge2717
  %1707 = zext nneg i32 %.68.lcssa to i64
  %1708 = add nuw nsw i64 %1707, 1
  %1709 = getelementptr %struct.doublecomplex, ptr %4, i64 %.pre3541
  br label %1710

1710:                                             ; preds = %.lr.ph2726, %1710
  %indvars.iv3177 = phi i64 [ %1673, %.lr.ph2726 ], [ %indvars.iv.next3178, %1710 ]
  %indvars.iv3173 = phi i64 [ %1708, %.lr.ph2726 ], [ %indvars.iv.next3174, %1710 ]
  %1711 = phi double [ %1702, %.lr.ph2726 ], [ %1717, %1710 ]
  %indvars.iv.next3178 = add nsw i64 %indvars.iv3177, 1
  %indvars.iv.next3174 = add nuw nsw i64 %indvars.iv3173, 1
  %1712 = getelementptr %struct.doublecomplex, ptr %1709, i64 %indvars.iv.next3174
  %1713 = tail call { double, double } @Cd(ptr noundef nonnull %1712)
  %1714 = extractvalue { double, double } %1713, 0
  %1715 = extractvalue { double, double } %1713, 1
  %1716 = tail call double @cabs(double noundef %1714, double noundef %1715) #9
  %1717 = fadd double %1716, %1711
  %1718 = getelementptr inbounds double, ptr %5, i64 %indvars.iv.next3178
  %1719 = load double, ptr %1718, align 8, !tbaa !12
  %1720 = fadd double %1716, %1719
  store double %1720, ptr %1718, align 8, !tbaa !12
  %.not1817.not = icmp slt i64 %indvars.iv.next3178, %1706
  br i1 %.not1817.not, label %1710, label %._crit_edge2727, !llvm.loop !97

._crit_edge2727:                                  ; preds = %1710, %._crit_edge2717
  %.lcssa27292733 = phi double [ %1702, %._crit_edge2717 ], [ %1717, %1710 ]
  %1721 = getelementptr inbounds double, ptr %5, i64 %1705
  %1722 = load double, ptr %1721, align 8, !tbaa !12
  %1723 = fadd double %.lcssa27292733, %1722
  store double %1723, ptr %1721, align 8, !tbaa !12
  %indvars.iv.next3185 = add nuw nsw i64 %indvars.iv3184, 1
  %indvars.iv.next3183 = add nuw nsw i64 %indvars.iv3182, 1
  %exitcond3190.not = icmp eq i64 %indvars.iv.next3183, %wide.trip.count3189
  br i1 %exitcond3190.not, label %.lr.ph2746, label %1672, !llvm.loop !98

.lr.ph2746:                                       ; preds = %._crit_edge2727
  store i32 %1704, ptr %7, align 4, !tbaa !5
  %1724 = trunc nuw nsw i64 %indvars.iv.next3185 to i32
  %1725 = mul nsw i32 %.01641, %1724
  %1726 = sext i32 %1725 to i64
  %1727 = add nsw i32 %975, -1
  %wide.trip.count3194 = zext i32 %1727 to i64
  %invariant.gep3674 = getelementptr %struct.doublecomplex, ptr %4, i64 %1726
  br label %1728

1728:                                             ; preds = %.lr.ph2746, %1728
  %indvars.iv3191 = phi i64 [ 0, %.lr.ph2746 ], [ %indvars.iv.next3192, %1728 ]
  %1729 = phi double [ 0.000000e+00, %.lr.ph2746 ], [ %1737, %1728 ]
  %gep3675 = getelementptr %struct.doublecomplex, ptr %invariant.gep3674, i64 %indvars.iv3191
  %1730 = tail call { double, double } @Cd(ptr noundef nonnull %gep3675)
  %1731 = extractvalue { double, double } %1730, 0
  %1732 = extractvalue { double, double } %1730, 1
  %1733 = tail call double @cabs(double noundef %1731, double noundef %1732) #9
  %1734 = getelementptr inbounds double, ptr %5, i64 %indvars.iv3191
  %1735 = load double, ptr %1734, align 8, !tbaa !12
  %1736 = fadd double %1733, %1735
  store double %1736, ptr %1734, align 8, !tbaa !12
  %1737 = fadd double %1733, %1729
  %indvars.iv.next3192 = add nuw nsw i64 %indvars.iv3191, 1
  %exitcond3195.not = icmp eq i64 %indvars.iv.next3192, %wide.trip.count3194
  br i1 %exitcond3195.not, label %._crit_edge2747, label %1728, !llvm.loop !99

._crit_edge2747:                                  ; preds = %1728, %.thread3576, %1666
  %.pre-phi3544 = phi i32 [ %.01641, %.thread3576 ], [ %.01641, %1666 ], [ %1725, %1728 ]
  %1738 = phi double [ 0.000000e+00, %.thread3576 ], [ 0.000000e+00, %1666 ], [ %1737, %1728 ]
  %.70.lcssa = phi i32 [ 0, %.thread3576 ], [ 0, %1666 ], [ %1727, %1728 ]
  %1739 = add nsw i32 %.pre-phi3544, %.70.lcssa
  %1740 = sext i32 %1739 to i64
  %1741 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %1740
  %1742 = load double, ptr %1741, align 8, !tbaa !9
  %1743 = fcmp oge double %1742, 0.000000e+00
  %1744 = fneg double %1742
  %1745 = select i1 %1743, double %1742, double %1744
  %1746 = fadd double %1738, %1745
  store double %1746, ptr %11, align 8, !tbaa !12
  %1747 = zext nneg i32 %.70.lcssa to i64
  %1748 = getelementptr inbounds double, ptr %5, i64 %1747
  store double %1746, ptr %1748, align 8, !tbaa !12
  %1749 = load i32, ptr %3, align 4, !tbaa !5
  %storemerge18112766 = add nsw i32 %975, 1
  store i32 %storemerge18112766, ptr %9, align 4, !tbaa !5
  %.not1812.not2767 = icmp slt i32 %975, %1749
  br i1 %.not1812.not2767, label %.lr.ph2770, label %1769

.lr.ph2770:                                       ; preds = %._crit_edge2747
  %.not18152752 = icmp slt i32 %974, 2
  %smax3201 = tail call i32 @llvm.smax.i32(i32 %storemerge18112766, i32 %1749)
  %1750 = add i32 %smax3201, 1
  %wide.trip.count3199 = zext nneg i32 %975 to i64
  %1751 = getelementptr i8, ptr %5, i64 -8
  br label %1752

1752:                                             ; preds = %.lr.ph2770, %._crit_edge2756
  %storemerge1811.in2773 = phi i32 [ %storemerge18112766, %.lr.ph2770 ], [ %storemerge1811, %._crit_edge2756 ]
  br i1 %.not18152752, label %._crit_edge2756, label %.lr.ph2755

.lr.ph2755:                                       ; preds = %1752
  %1753 = mul nsw i32 %storemerge1811.in2773, %.01641
  %1754 = sext i32 %1753 to i64
  %invariant.gep3676 = getelementptr %struct.doublecomplex, ptr %4, i64 %1754
  br label %1755

1755:                                             ; preds = %.lr.ph2755, %1755
  %indvars.iv3196 = phi i64 [ 0, %.lr.ph2755 ], [ %indvars.iv.next3197, %1755 ]
  %1756 = phi double [ 0.000000e+00, %.lr.ph2755 ], [ %1764, %1755 ]
  %gep3677 = getelementptr %struct.doublecomplex, ptr %invariant.gep3676, i64 %indvars.iv3196
  %1757 = tail call { double, double } @Cd(ptr noundef nonnull %gep3677)
  %1758 = extractvalue { double, double } %1757, 0
  %1759 = extractvalue { double, double } %1757, 1
  %1760 = tail call double @cabs(double noundef %1758, double noundef %1759) #9
  %1761 = getelementptr inbounds double, ptr %5, i64 %indvars.iv3196
  %1762 = load double, ptr %1761, align 8, !tbaa !12
  %1763 = fadd double %1760, %1762
  store double %1763, ptr %1761, align 8, !tbaa !12
  %1764 = fadd double %1760, %1756
  %indvars.iv.next3197 = add nuw nsw i64 %indvars.iv3196, 1
  %exitcond3200.not = icmp eq i64 %indvars.iv.next3197, %wide.trip.count3199
  br i1 %exitcond3200.not, label %._crit_edge2756, label %1755, !llvm.loop !100

._crit_edge2756:                                  ; preds = %1755, %1752
  %.lcssa27582763 = phi double [ 0.000000e+00, %1752 ], [ %1764, %1755 ]
  %1765 = sext i32 %storemerge1811.in2773 to i64
  %gep2760 = getelementptr double, ptr %1751, i64 %1765
  %1766 = load double, ptr %gep2760, align 8, !tbaa !12
  %1767 = fadd double %.lcssa27582763, %1766
  store double %1767, ptr %gep2760, align 8, !tbaa !12
  %storemerge1811 = add i32 %storemerge1811.in2773, 1
  %exitcond3202.not = icmp eq i32 %storemerge1811.in2773, %smax3201
  br i1 %exitcond3202.not, label %._crit_edge2771, label %1752, !llvm.loop !101

._crit_edge2771:                                  ; preds = %._crit_edge2756
  %1768 = add nsw i32 %975, -1
  store double %.lcssa27582763, ptr %11, align 8, !tbaa !12
  store i32 %1768, ptr %7, align 4, !tbaa !5
  store i32 %1750, ptr %9, align 4, !tbaa !5
  %.pre3505 = load i32, ptr %3, align 4, !tbaa !5
  br label %1769

1769:                                             ; preds = %._crit_edge2771, %._crit_edge2747
  %1770 = phi i32 [ %.pre3505, %._crit_edge2771 ], [ %1749, %._crit_edge2747 ]
  %1771 = load double, ptr %5, align 8, !tbaa !12
  %.not1813.not2774 = icmp sgt i32 %1770, 1
  br i1 %.not1813.not2774, label %.lr.ph2778.preheader, label %.loopexit

.lr.ph2778.preheader:                             ; preds = %1769
  %wide.trip.count3206 = zext nneg i32 %1770 to i64
  br label %.lr.ph2778

.lr.ph2778:                                       ; preds = %.lr.ph2778.preheader, %1777
  %indvars.iv3203 = phi i64 [ 1, %.lr.ph2778.preheader ], [ %indvars.iv.next3204, %1777 ]
  %.1112775 = phi double [ %1771, %.lr.ph2778.preheader ], [ %.112, %1777 ]
  %1772 = getelementptr inbounds double, ptr %5, i64 %indvars.iv3203
  %1773 = load double, ptr %1772, align 8, !tbaa !12
  store double %1773, ptr %8, align 8, !tbaa !12
  %1774 = fcmp olt double %.1112775, %1773
  br i1 %1774, label %1777, label %1775

1775:                                             ; preds = %.lr.ph2778
  %1776 = call i32 @disnan_(ptr noundef nonnull %8) #9
  %.not1814 = icmp eq i32 %1776, 0
  br i1 %.not1814, label %1777, label %._crit_edge3506

._crit_edge3506:                                  ; preds = %1775
  %.pre3507 = load double, ptr %8, align 8, !tbaa !12
  br label %1777

1777:                                             ; preds = %.lr.ph2778, %._crit_edge3506, %1775
  %.112 = phi double [ %.1112775, %1775 ], [ %.pre3507, %._crit_edge3506 ], [ %1773, %.lr.ph2778 ]
  %indvars.iv.next3204 = add nuw nsw i64 %indvars.iv3203, 1
  %exitcond3207.not = icmp eq i64 %indvars.iv.next3204, %wide.trip.count3206
  br i1 %exitcond3207.not, label %.loopexit, label %.lr.ph2778, !llvm.loop !102

1778:                                             ; preds = %970
  %1779 = tail call i32 @lsame_(ptr noundef nonnull %0, ptr noundef nonnull @.str.5) #9
  %.not1753 = icmp eq i32 %1779, 0
  br i1 %.not1753, label %1780, label %1782

1780:                                             ; preds = %1778
  %1781 = tail call i32 @lsame_(ptr noundef nonnull %0, ptr noundef nonnull @.str.6) #9
  %.not1754 = icmp eq i32 %1781, 0
  br i1 %.not1754, label %.loopexit, label %1782

1782:                                             ; preds = %1780, %1778
  %1783 = load i32, ptr %3, align 4, !tbaa !5
  %1784 = add nsw i32 %1783, 1
  %1785 = sdiv i32 %1784, 2
  store i32 %1785, ptr %10, align 4, !tbaa !5
  store double 0.000000e+00, ptr %12, align 8, !tbaa !12
  store double 1.000000e+00, ptr %11, align 8, !tbaa !12
  %.not1755 = icmp eq i32 %20, 0
  br i1 %.not1755, label %2104, label %1786

1786:                                             ; preds = %1782
  br i1 %.not, label %1787, label %1938

1787:                                             ; preds = %1786
  br i1 %.not1748.not.not.not.not.not.not.not.not, label %.preheader2018, label %1788

.preheader2018:                                   ; preds = %1787
  store i32 0, ptr %9, align 4, !tbaa !5
  %.not1796.not2383 = icmp sgt i32 %1783, 0
  br i1 %.not1796.not2383, label %.lr.ph2385, label %._crit_edge2386

1788:                                             ; preds = %1787
  %1789 = add nsw i32 %1785, -3
  store i32 0, ptr %9, align 4, !tbaa !5
  %.not18012363 = icmp slt i32 %1783, 5
  br i1 %.not18012363, label %._crit_edge2367, label %.lr.ph2366

.lr.ph2366:                                       ; preds = %1788, %.lr.ph2366
  %storemerge18002364 = phi i32 [ %1799, %.lr.ph2366 ], [ 0, %1788 ]
  %1790 = load i32, ptr %10, align 4, !tbaa !5
  %reass.sub2936 = sub i32 %1790, %storemerge18002364
  %1791 = add i32 %reass.sub2936, -2
  store i32 %1791, ptr %7, align 4, !tbaa !5
  %1792 = mul nsw i32 %storemerge18002364, %.01641
  %1793 = add i32 %storemerge18002364, 1
  %1794 = add i32 %1793, %1792
  %1795 = add i32 %1794, %1790
  %1796 = sext i32 %1795 to i64
  %1797 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %1796
  call void @zlassq_(ptr noundef nonnull %7, ptr noundef %1797, ptr noundef nonnull @c__1, ptr noundef nonnull %12, ptr noundef nonnull %11) #9
  %1798 = load i32, ptr %9, align 4, !tbaa !5
  %1799 = add nsw i32 %1798, 1
  store i32 %1799, ptr %9, align 4, !tbaa !5
  %.not1801.not = icmp slt i32 %1798, %1789
  br i1 %.not1801.not, label %.lr.ph2366, label %._crit_edge2367.loopexit, !llvm.loop !103

._crit_edge2367.loopexit:                         ; preds = %.lr.ph2366
  %.pre3480 = load i32, ptr %10, align 4, !tbaa !5
  br label %._crit_edge2367

._crit_edge2367:                                  ; preds = %._crit_edge2367.loopexit, %1788
  %1800 = phi i32 [ %.pre3480, %._crit_edge2367.loopexit ], [ %1785, %1788 ]
  store i32 0, ptr %9, align 4, !tbaa !5
  %.not1803.not2368 = icmp sgt i32 %1800, 0
  br i1 %.not1803.not2368, label %.lr.ph2371, label %._crit_edge2372.thread

._crit_edge2372.thread:                           ; preds = %._crit_edge2367
  %1801 = load double, ptr %11, align 8, !tbaa !12
  %1802 = fadd double %1801, %1801
  %1803 = add i32 %1800, -1
  br label %._crit_edge2380

.lr.ph2371:                                       ; preds = %._crit_edge2367, %.lr.ph2371
  %storemerge18022369 = phi i32 [ %1811, %.lr.ph2371 ], [ 0, %._crit_edge2367 ]
  %1804 = load i32, ptr %10, align 4, !tbaa !5
  %1805 = add nsw i32 %storemerge18022369, -1
  %1806 = add i32 %1805, %1804
  store i32 %1806, ptr %7, align 4, !tbaa !5
  %1807 = mul nsw i32 %storemerge18022369, %.01641
  %1808 = sext i32 %1807 to i64
  %1809 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %1808
  call void @zlassq_(ptr noundef nonnull %7, ptr noundef %1809, ptr noundef nonnull @c__1, ptr noundef nonnull %12, ptr noundef nonnull %11) #9
  %1810 = load i32, ptr %9, align 4, !tbaa !5
  %1811 = add nsw i32 %1810, 1
  store i32 %1811, ptr %9, align 4, !tbaa !5
  %.not1803.not = icmp slt i32 %1811, %1800
  br i1 %.not1803.not, label %.lr.ph2371, label %._crit_edge2372, !llvm.loop !104

._crit_edge2372:                                  ; preds = %.lr.ph2371
  %.pre3481 = load i32, ptr %10, align 4, !tbaa !5
  %1812 = load double, ptr %11, align 8, !tbaa !12
  %1813 = fadd double %1812, %1812
  %1814 = add i32 %.pre3481, -1
  %.not18042375 = icmp slt i32 %.pre3481, 2
  br i1 %.not18042375, label %._crit_edge2380, label %.lr.ph2379

.lr.ph2379:                                       ; preds = %._crit_edge2372
  %.promoted2373 = load double, ptr %12, align 8, !tbaa !12
  %1815 = add i32 %.01641, 1
  %invariant.gep3873 = getelementptr i8, ptr %4, i64 16
  br label %1816

1816:                                             ; preds = %.lr.ph2379, %1847
  %.732377 = phi i32 [ 0, %.lr.ph2379 ], [ %1851, %1847 ]
  %.815542376 = phi i32 [ %1814, %.lr.ph2379 ], [ %1850, %1847 ]
  %1817 = phi double [ %.promoted2373, %.lr.ph2379 ], [ %1849, %1847 ]
  %1818 = phi double [ %1813, %.lr.ph2379 ], [ %1848, %1847 ]
  %1819 = sext i32 %.815542376 to i64
  %1820 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %1819
  %1821 = load double, ptr %1820, align 8, !tbaa !9
  %1822 = fcmp une double %1821, 0.000000e+00
  br i1 %1822, label %1823, label %1832

1823:                                             ; preds = %1816
  %1824 = fcmp olt double %1817, %1821
  br i1 %1824, label %1825, label %1829

1825:                                             ; preds = %1823
  %1826 = fdiv double %1817, %1821
  %1827 = fmul double %1826, %1826
  %1828 = call double @llvm.fmuladd.f64(double %1818, double %1827, double 1.000000e+00)
  store double %1821, ptr %12, align 8, !tbaa !12
  br label %1832

1829:                                             ; preds = %1823
  %1830 = fdiv double %1821, %1817
  %1831 = call double @llvm.fmuladd.f64(double %1830, double %1830, double %1818)
  br label %1832

1832:                                             ; preds = %1825, %1829, %1816
  %1833 = phi double [ %1828, %1825 ], [ %1831, %1829 ], [ %1818, %1816 ]
  %1834 = phi double [ %1821, %1825 ], [ %1817, %1829 ], [ %1817, %1816 ]
  %1835 = sext i32 %.815542376 to i64
  %gep3874 = getelementptr %struct.doublecomplex, ptr %invariant.gep3873, i64 %1835
  %1836 = load double, ptr %gep3874, align 8, !tbaa !9
  %1837 = fcmp une double %1836, 0.000000e+00
  br i1 %1837, label %1838, label %1847

1838:                                             ; preds = %1832
  %1839 = fcmp olt double %1834, %1836
  br i1 %1839, label %1840, label %1844

1840:                                             ; preds = %1838
  %1841 = fdiv double %1834, %1836
  %1842 = fmul double %1841, %1841
  %1843 = call double @llvm.fmuladd.f64(double %1833, double %1842, double 1.000000e+00)
  store double %1836, ptr %12, align 8, !tbaa !12
  br label %1847

1844:                                             ; preds = %1838
  %1845 = fdiv double %1836, %1834
  %1846 = call double @llvm.fmuladd.f64(double %1845, double %1845, double %1833)
  br label %1847

1847:                                             ; preds = %1840, %1844, %1832
  %1848 = phi double [ %1843, %1840 ], [ %1846, %1844 ], [ %1833, %1832 ]
  %1849 = phi double [ %1836, %1840 ], [ %1834, %1844 ], [ %1834, %1832 ]
  %1850 = add i32 %1815, %.815542376
  %1851 = add nuw i32 %.732377, 1
  %exitcond3027.not = icmp eq i32 %1851, %1814
  br i1 %exitcond3027.not, label %._crit_edge2380, label %1816, !llvm.loop !105

._crit_edge2380:                                  ; preds = %1847, %._crit_edge2372.thread, %._crit_edge2372
  %1852 = phi double [ %1813, %._crit_edge2372 ], [ %1802, %._crit_edge2372.thread ], [ %1848, %1847 ]
  %.81554.lcssa = phi i32 [ %1814, %._crit_edge2372 ], [ %1803, %._crit_edge2372.thread ], [ %1850, %1847 ]
  %1853 = sext i32 %.81554.lcssa to i64
  %1854 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %1853
  %1855 = load double, ptr %1854, align 8, !tbaa !9
  %1856 = fcmp une double %1855, 0.000000e+00
  br i1 %1856, label %1857, label %.loopexit2012

1857:                                             ; preds = %._crit_edge2380
  %1858 = load double, ptr %12, align 8, !tbaa !12
  %1859 = fcmp olt double %1858, %1855
  br i1 %1859, label %1860, label %1864

1860:                                             ; preds = %1857
  %1861 = fdiv double %1858, %1855
  %1862 = fmul double %1861, %1861
  %1863 = call double @llvm.fmuladd.f64(double %1852, double %1862, double 1.000000e+00)
  store double %1855, ptr %12, align 8, !tbaa !12
  br label %.loopexit2012

1864:                                             ; preds = %1857
  %1865 = fdiv double %1855, %1858
  %1866 = call double @llvm.fmuladd.f64(double %1865, double %1865, double %1852)
  br label %.loopexit2012

.lr.ph2385:                                       ; preds = %.preheader2018, %.lr.ph2385
  %storemerge17952384 = phi i32 [ %1876, %.lr.ph2385 ], [ 0, %.preheader2018 ]
  %1867 = load i32, ptr %3, align 4, !tbaa !5
  %1868 = xor i32 %storemerge17952384, -1
  %1869 = add i32 %1867, %1868
  store i32 %1869, ptr %7, align 4, !tbaa !5
  %1870 = add nsw i32 %storemerge17952384, 1
  %1871 = mul nsw i32 %storemerge17952384, %.01641
  %1872 = add nsw i32 %1870, %1871
  %1873 = sext i32 %1872 to i64
  %1874 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %1873
  call void @zlassq_(ptr noundef nonnull %7, ptr noundef %1874, ptr noundef nonnull @c__1, ptr noundef nonnull %12, ptr noundef nonnull %11) #9
  %1875 = load i32, ptr %9, align 4, !tbaa !5
  %1876 = add nsw i32 %1875, 1
  store i32 %1876, ptr %9, align 4, !tbaa !5
  %.not1796.not = icmp slt i32 %1876, %1785
  br i1 %.not1796.not, label %.lr.ph2385, label %._crit_edge2386.loopexit, !llvm.loop !106

._crit_edge2386.loopexit:                         ; preds = %.lr.ph2385
  %.pre3482 = load i32, ptr %10, align 4, !tbaa !5
  br label %._crit_edge2386

._crit_edge2386:                                  ; preds = %._crit_edge2386.loopexit, %.preheader2018
  %1877 = phi i32 [ %.pre3482, %._crit_edge2386.loopexit ], [ %1785, %.preheader2018 ]
  %1878 = add nsw i32 %1877, -2
  store i32 1, ptr %9, align 4, !tbaa !5
  %.not17982387 = icmp slt i32 %1877, 3
  br i1 %.not17982387, label %._crit_edge2391, label %.lr.ph2390

.lr.ph2390:                                       ; preds = %._crit_edge2386, %.lr.ph2390
  %storemerge17972388 = phi i32 [ %1884, %.lr.ph2390 ], [ 1, %._crit_edge2386 ]
  %1879 = add nsw i32 %storemerge17972388, 1
  %1880 = mul nsw i32 %1879, %.01641
  %1881 = sext i32 %1880 to i64
  %1882 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %1881
  call void @zlassq_(ptr noundef nonnull %9, ptr noundef %1882, ptr noundef nonnull @c__1, ptr noundef nonnull %12, ptr noundef nonnull %11) #9
  %1883 = load i32, ptr %9, align 4, !tbaa !5
  %1884 = add nsw i32 %1883, 1
  store i32 %1884, ptr %9, align 4, !tbaa !5
  %.not1798.not = icmp slt i32 %1883, %1878
  br i1 %.not1798.not, label %.lr.ph2390, label %._crit_edge2391, !llvm.loop !107

._crit_edge2391:                                  ; preds = %.lr.ph2390, %._crit_edge2386
  %1885 = load double, ptr %11, align 8, !tbaa !12
  %1886 = fadd double %1885, %1885
  %1887 = load double, ptr %4, align 8, !tbaa !9
  %1888 = fcmp une double %1887, 0.000000e+00
  br i1 %1888, label %1889, label %1899

1889:                                             ; preds = %._crit_edge2391
  %1890 = load double, ptr %12, align 8, !tbaa !12
  %1891 = fcmp olt double %1890, %1887
  br i1 %1891, label %1892, label %1896

1892:                                             ; preds = %1889
  %1893 = fdiv double %1890, %1887
  %1894 = fmul double %1893, %1893
  %1895 = call double @llvm.fmuladd.f64(double %1886, double %1894, double 1.000000e+00)
  store double %1887, ptr %12, align 8, !tbaa !12
  br label %1899

1896:                                             ; preds = %1889
  %1897 = fdiv double %1887, %1890
  %1898 = call double @llvm.fmuladd.f64(double %1897, double %1897, double %1886)
  br label %1899

1899:                                             ; preds = %1892, %1896, %._crit_edge2391
  %.promoted2393 = phi double [ %1895, %1892 ], [ %1898, %1896 ], [ %1886, %._crit_edge2391 ]
  %1900 = load i32, ptr %10, align 4, !tbaa !5
  %.not1799.not2394 = icmp sgt i32 %1900, 1
  br i1 %.not1799.not2394, label %.lr.ph2398, label %.loopexit2012

.lr.ph2398:                                       ; preds = %1899
  %.promoted2392 = load double, ptr %12, align 8, !tbaa !12
  %1901 = add i32 %.01641, 1
  %invariant.gep3875 = getelementptr i8, ptr %4, i64 16
  br label %1902

1902:                                             ; preds = %.lr.ph2398, %1933
  %.742396 = phi i32 [ 1, %.lr.ph2398 ], [ %1937, %1933 ]
  %.915552395 = phi i32 [ %.01641, %.lr.ph2398 ], [ %1936, %1933 ]
  %1903 = phi double [ %.promoted2392, %.lr.ph2398 ], [ %1935, %1933 ]
  %1904 = phi double [ %.promoted2393, %.lr.ph2398 ], [ %1934, %1933 ]
  %1905 = sext i32 %.915552395 to i64
  %1906 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %1905
  %1907 = load double, ptr %1906, align 8, !tbaa !9
  %1908 = fcmp une double %1907, 0.000000e+00
  br i1 %1908, label %1909, label %1918

1909:                                             ; preds = %1902
  %1910 = fcmp olt double %1903, %1907
  br i1 %1910, label %1911, label %1915

1911:                                             ; preds = %1909
  %1912 = fdiv double %1903, %1907
  %1913 = fmul double %1912, %1912
  %1914 = call double @llvm.fmuladd.f64(double %1904, double %1913, double 1.000000e+00)
  store double %1907, ptr %12, align 8, !tbaa !12
  br label %1918

1915:                                             ; preds = %1909
  %1916 = fdiv double %1907, %1903
  %1917 = call double @llvm.fmuladd.f64(double %1916, double %1916, double %1904)
  br label %1918

1918:                                             ; preds = %1911, %1915, %1902
  %1919 = phi double [ %1914, %1911 ], [ %1917, %1915 ], [ %1904, %1902 ]
  %1920 = phi double [ %1907, %1911 ], [ %1903, %1915 ], [ %1903, %1902 ]
  %1921 = sext i32 %.915552395 to i64
  %gep3876 = getelementptr %struct.doublecomplex, ptr %invariant.gep3875, i64 %1921
  %1922 = load double, ptr %gep3876, align 8, !tbaa !9
  %1923 = fcmp une double %1922, 0.000000e+00
  br i1 %1923, label %1924, label %1933

1924:                                             ; preds = %1918
  %1925 = fcmp olt double %1920, %1922
  br i1 %1925, label %1926, label %1930

1926:                                             ; preds = %1924
  %1927 = fdiv double %1920, %1922
  %1928 = fmul double %1927, %1927
  %1929 = call double @llvm.fmuladd.f64(double %1919, double %1928, double 1.000000e+00)
  store double %1922, ptr %12, align 8, !tbaa !12
  br label %1933

1930:                                             ; preds = %1924
  %1931 = fdiv double %1922, %1920
  %1932 = call double @llvm.fmuladd.f64(double %1931, double %1931, double %1919)
  br label %1933

1933:                                             ; preds = %1926, %1930, %1918
  %1934 = phi double [ %1929, %1926 ], [ %1932, %1930 ], [ %1919, %1918 ]
  %1935 = phi double [ %1922, %1926 ], [ %1920, %1930 ], [ %1920, %1918 ]
  %1936 = add i32 %1901, %.915552395
  %1937 = add nuw nsw i32 %.742396, 1
  %exitcond3028.not = icmp eq i32 %1937, %1900
  br i1 %exitcond3028.not, label %.loopexit2012, label %1902, !llvm.loop !108

1938:                                             ; preds = %1786
  br i1 %.not1748.not.not.not.not.not.not.not.not, label %.preheader2019, label %1939

.preheader2019:                                   ; preds = %1938
  store i32 1, ptr %9, align 4, !tbaa !5
  %.not1781.not2339 = icmp sgt i32 %1783, 2
  br i1 %.not1781.not2339, label %.lr.ph2341, label %._crit_edge2342

1939:                                             ; preds = %1938
  %1940 = add nsw i32 %1785, -2
  store i32 1, ptr %9, align 4, !tbaa !5
  %.not17882317 = icmp slt i32 %1783, 5
  br i1 %.not17882317, label %._crit_edge2321, label %.lr.ph2320

.lr.ph2320:                                       ; preds = %1939, %.lr.ph2320
  %storemerge17872318 = phi i32 [ %1947, %.lr.ph2320 ], [ 1, %1939 ]
  %1941 = load i32, ptr %10, align 4, !tbaa !5
  %1942 = add nsw i32 %1941, %storemerge17872318
  %1943 = mul nsw i32 %1942, %.01641
  %1944 = sext i32 %1943 to i64
  %1945 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %1944
  call void @zlassq_(ptr noundef nonnull %9, ptr noundef %1945, ptr noundef nonnull @c__1, ptr noundef nonnull %12, ptr noundef nonnull %11) #9
  %1946 = load i32, ptr %9, align 4, !tbaa !5
  %1947 = add nsw i32 %1946, 1
  store i32 %1947, ptr %9, align 4, !tbaa !5
  %.not1788.not = icmp slt i32 %1946, %1940
  br i1 %.not1788.not, label %.lr.ph2320, label %._crit_edge2321.loopexit, !llvm.loop !109

._crit_edge2321.loopexit:                         ; preds = %.lr.ph2320
  %.pre3472 = load i32, ptr %10, align 4, !tbaa !5
  %.pre3523 = add nsw i32 %.pre3472, -2
  br label %._crit_edge2321

._crit_edge2321:                                  ; preds = %._crit_edge2321.loopexit, %1939
  %.pre-phi = phi i32 [ %.pre3523, %._crit_edge2321.loopexit ], [ %1940, %1939 ]
  %1948 = phi i32 [ %.pre3472, %._crit_edge2321.loopexit ], [ %1785, %1939 ]
  store i32 0, ptr %9, align 4, !tbaa !5
  %.not17902322 = icmp slt i32 %1948, 2
  br i1 %.not17902322, label %._crit_edge2331, label %.lr.ph2325

.lr.ph2325:                                       ; preds = %._crit_edge2321, %.lr.ph2325
  %storemerge17892323 = phi i32 [ %1953, %.lr.ph2325 ], [ 0, %._crit_edge2321 ]
  %1949 = mul nsw i32 %storemerge17892323, %.01641
  %1950 = sext i32 %1949 to i64
  %1951 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %1950
  call void @zlassq_(ptr noundef nonnull %10, ptr noundef %1951, ptr noundef nonnull @c__1, ptr noundef nonnull %12, ptr noundef nonnull %11) #9
  %1952 = load i32, ptr %9, align 4, !tbaa !5
  %1953 = add nsw i32 %1952, 1
  store i32 %1953, ptr %9, align 4, !tbaa !5
  %.not1790.not = icmp slt i32 %1952, %.pre-phi
  br i1 %.not1790.not, label %.lr.ph2325, label %._crit_edge2326, !llvm.loop !110

._crit_edge2326:                                  ; preds = %.lr.ph2325
  %.pre3473 = load i32, ptr %10, align 4, !tbaa !5
  %.pre3524 = add nsw i32 %.pre3473, -2
  store i32 0, ptr %9, align 4, !tbaa !5
  %.not17922327 = icmp slt i32 %.pre3473, 2
  br i1 %.not17922327, label %._crit_edge2331, label %.lr.ph2330

.lr.ph2330:                                       ; preds = %._crit_edge2326, %.lr.ph2330
  %storemerge17912328 = phi i32 [ %1965, %.lr.ph2330 ], [ 0, %._crit_edge2326 ]
  %1954 = load i32, ptr %10, align 4, !tbaa !5
  %1955 = xor i32 %storemerge17912328, -1
  %1956 = add i32 %1954, %1955
  store i32 %1956, ptr %7, align 4, !tbaa !5
  %1957 = add nsw i32 %storemerge17912328, 1
  %1958 = add nsw i32 %storemerge17912328, -1
  %1959 = add i32 %1958, %1954
  %1960 = mul nsw i32 %1959, %.01641
  %1961 = add nsw i32 %1957, %1960
  %1962 = sext i32 %1961 to i64
  %1963 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %1962
  call void @zlassq_(ptr noundef nonnull %7, ptr noundef %1963, ptr noundef nonnull @c__1, ptr noundef nonnull %12, ptr noundef nonnull %11) #9
  %1964 = load i32, ptr %9, align 4, !tbaa !5
  %1965 = add nsw i32 %1964, 1
  store i32 %1965, ptr %9, align 4, !tbaa !5
  %.not1792.not = icmp slt i32 %1964, %.pre3524
  br i1 %.not1792.not, label %.lr.ph2330, label %._crit_edge2331.loopexit, !llvm.loop !111

._crit_edge2331.loopexit:                         ; preds = %.lr.ph2330
  %.pre3474 = load i32, ptr %10, align 4, !tbaa !5
  br label %._crit_edge2331

._crit_edge2331:                                  ; preds = %._crit_edge2321, %._crit_edge2331.loopexit, %._crit_edge2326
  %1966 = phi i32 [ %.pre3474, %._crit_edge2331.loopexit ], [ %.pre3473, %._crit_edge2326 ], [ %1948, %._crit_edge2321 ]
  %1967 = load double, ptr %11, align 8, !tbaa !12
  %1968 = fadd double %1967, %1967
  %1969 = mul nsw i32 %1966, %.01641
  %1970 = sub nsw i32 %1969, %.01641
  %1971 = sext i32 %1970 to i64
  %1972 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %1971
  %1973 = load double, ptr %1972, align 8, !tbaa !9
  %1974 = fcmp une double %1973, 0.000000e+00
  br i1 %1974, label %1975, label %1985

1975:                                             ; preds = %._crit_edge2331
  %1976 = load double, ptr %12, align 8, !tbaa !12
  %1977 = fcmp olt double %1976, %1973
  br i1 %1977, label %1978, label %1982

1978:                                             ; preds = %1975
  %1979 = fdiv double %1976, %1973
  %1980 = fmul double %1979, %1979
  %1981 = call double @llvm.fmuladd.f64(double %1968, double %1980, double 1.000000e+00)
  store double %1973, ptr %12, align 8, !tbaa !12
  br label %1985

1982:                                             ; preds = %1975
  %1983 = fdiv double %1973, %1976
  %1984 = call double @llvm.fmuladd.f64(double %1983, double %1983, double %1968)
  br label %1985

1985:                                             ; preds = %1978, %1982, %._crit_edge2331
  %.promoted2332 = phi double [ %1981, %1978 ], [ %1984, %1982 ], [ %1968, %._crit_edge2331 ]
  %1986 = load i32, ptr %3, align 4, !tbaa !5
  %.not1794.not2333 = icmp slt i32 %1966, %1986
  br i1 %.not1794.not2333, label %.lr.ph2337, label %.loopexit2012

.lr.ph2337:                                       ; preds = %1985
  %.promoted = load double, ptr %12, align 8, !tbaa !12
  %1987 = add i32 %.01641, 1
  %invariant.gep3869 = getelementptr i8, ptr %4, i64 16
  br label %1988

1988:                                             ; preds = %.lr.ph2337, %2019
  %.1015562335 = phi i32 [ %1969, %.lr.ph2337 ], [ %2022, %2019 ]
  %storemerge17932334 = phi i32 [ %1966, %.lr.ph2337 ], [ %2023, %2019 ]
  %1989 = phi double [ %.promoted, %.lr.ph2337 ], [ %2021, %2019 ]
  %1990 = phi double [ %.promoted2332, %.lr.ph2337 ], [ %2020, %2019 ]
  %1991 = sext i32 %.1015562335 to i64
  %1992 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %1991
  %1993 = load double, ptr %1992, align 8, !tbaa !9
  %1994 = fcmp une double %1993, 0.000000e+00
  br i1 %1994, label %1995, label %2004

1995:                                             ; preds = %1988
  %1996 = fcmp olt double %1989, %1993
  br i1 %1996, label %1997, label %2001

1997:                                             ; preds = %1995
  %1998 = fdiv double %1989, %1993
  %1999 = fmul double %1998, %1998
  %2000 = call double @llvm.fmuladd.f64(double %1990, double %1999, double 1.000000e+00)
  store double %1993, ptr %12, align 8, !tbaa !12
  br label %2004

2001:                                             ; preds = %1995
  %2002 = fdiv double %1993, %1989
  %2003 = call double @llvm.fmuladd.f64(double %2002, double %2002, double %1990)
  br label %2004

2004:                                             ; preds = %1997, %2001, %1988
  %2005 = phi double [ %2000, %1997 ], [ %2003, %2001 ], [ %1990, %1988 ]
  %2006 = phi double [ %1993, %1997 ], [ %1989, %2001 ], [ %1989, %1988 ]
  %2007 = sext i32 %.1015562335 to i64
  %gep3870 = getelementptr %struct.doublecomplex, ptr %invariant.gep3869, i64 %2007
  %2008 = load double, ptr %gep3870, align 8, !tbaa !9
  %2009 = fcmp une double %2008, 0.000000e+00
  br i1 %2009, label %2010, label %2019

2010:                                             ; preds = %2004
  %2011 = fcmp olt double %2006, %2008
  br i1 %2011, label %2012, label %2016

2012:                                             ; preds = %2010
  %2013 = fdiv double %2006, %2008
  %2014 = fmul double %2013, %2013
  %2015 = call double @llvm.fmuladd.f64(double %2005, double %2014, double 1.000000e+00)
  store double %2008, ptr %12, align 8, !tbaa !12
  br label %2019

2016:                                             ; preds = %2010
  %2017 = fdiv double %2008, %2006
  %2018 = call double @llvm.fmuladd.f64(double %2017, double %2017, double %2005)
  br label %2019

2019:                                             ; preds = %2012, %2016, %2004
  %2020 = phi double [ %2015, %2012 ], [ %2018, %2016 ], [ %2005, %2004 ]
  %2021 = phi double [ %2008, %2012 ], [ %2006, %2016 ], [ %2006, %2004 ]
  %2022 = add i32 %1987, %.1015562335
  %2023 = add nsw i32 %storemerge17932334, 1
  %exitcond3025.not = icmp eq i32 %2023, %1986
  br i1 %exitcond3025.not, label %.loopexit2012, label %1988, !llvm.loop !112

.lr.ph2341:                                       ; preds = %.preheader2019, %.lr.ph2341
  %storemerge17802340 = phi i32 [ %2028, %.lr.ph2341 ], [ 1, %.preheader2019 ]
  %2024 = mul nsw i32 %storemerge17802340, %.01641
  %2025 = sext i32 %2024 to i64
  %2026 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %2025
  call void @zlassq_(ptr noundef nonnull %9, ptr noundef %2026, ptr noundef nonnull @c__1, ptr noundef nonnull %12, ptr noundef nonnull %11) #9
  %2027 = load i32, ptr %9, align 4, !tbaa !5
  %2028 = add nsw i32 %2027, 1
  store i32 %2028, ptr %9, align 4, !tbaa !5
  %.not1781.not = icmp slt i32 %2028, %1785
  br i1 %.not1781.not, label %.lr.ph2341, label %._crit_edge2342.loopexit, !llvm.loop !113

._crit_edge2342.loopexit:                         ; preds = %.lr.ph2341
  %.pre3476 = load i32, ptr %3, align 4, !tbaa !5
  %.pre3477 = load i32, ptr %10, align 4, !tbaa !5
  br label %._crit_edge2342

._crit_edge2342:                                  ; preds = %._crit_edge2342.loopexit, %.preheader2019
  %2029 = phi i32 [ %.pre3477, %._crit_edge2342.loopexit ], [ %1785, %.preheader2019 ]
  %2030 = phi i32 [ %.pre3476, %._crit_edge2342.loopexit ], [ %1783, %.preheader2019 ]
  store i32 %2029, ptr %9, align 4, !tbaa !5
  %.not1783.not2343 = icmp slt i32 %2029, %2030
  br i1 %.not1783.not2343, label %.lr.ph2346, label %._crit_edge2347

.lr.ph2346:                                       ; preds = %._crit_edge2342, %.lr.ph2346
  %storemerge17822344 = phi i32 [ %2035, %.lr.ph2346 ], [ %2029, %._crit_edge2342 ]
  %2031 = mul nsw i32 %storemerge17822344, %.01641
  %2032 = sext i32 %2031 to i64
  %2033 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %2032
  call void @zlassq_(ptr noundef nonnull %10, ptr noundef %2033, ptr noundef nonnull @c__1, ptr noundef nonnull %12, ptr noundef nonnull %11) #9
  %2034 = load i32, ptr %9, align 4, !tbaa !5
  %2035 = add nsw i32 %2034, 1
  store i32 %2035, ptr %9, align 4, !tbaa !5
  %.not1783.not = icmp slt i32 %2035, %2030
  br i1 %.not1783.not, label %.lr.ph2346, label %._crit_edge2347.loopexit, !llvm.loop !114

._crit_edge2347.loopexit:                         ; preds = %.lr.ph2346
  %.pre3478 = load i32, ptr %10, align 4, !tbaa !5
  br label %._crit_edge2347

._crit_edge2347:                                  ; preds = %._crit_edge2347.loopexit, %._crit_edge2342
  %2036 = phi i32 [ %.pre3478, %._crit_edge2347.loopexit ], [ %2029, %._crit_edge2342 ]
  %2037 = add nsw i32 %2036, -3
  store i32 0, ptr %9, align 4, !tbaa !5
  %.not17852348 = icmp slt i32 %2036, 3
  br i1 %.not17852348, label %._crit_edge2352, label %.lr.ph2351

.lr.ph2351:                                       ; preds = %._crit_edge2347, %.lr.ph2351
  %storemerge17842349 = phi i32 [ %2046, %.lr.ph2351 ], [ 0, %._crit_edge2347 ]
  %2038 = load i32, ptr %10, align 4, !tbaa !5
  %reass.sub2935 = sub i32 %2038, %storemerge17842349
  %2039 = add i32 %reass.sub2935, -2
  store i32 %2039, ptr %7, align 4, !tbaa !5
  %2040 = add nsw i32 %storemerge17842349, 2
  %2041 = mul nsw i32 %storemerge17842349, %.01641
  %2042 = add nsw i32 %2040, %2041
  %2043 = sext i32 %2042 to i64
  %2044 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %2043
  call void @zlassq_(ptr noundef nonnull %7, ptr noundef %2044, ptr noundef nonnull @c__1, ptr noundef nonnull %12, ptr noundef nonnull %11) #9
  %2045 = load i32, ptr %9, align 4, !tbaa !5
  %2046 = add nsw i32 %2045, 1
  store i32 %2046, ptr %9, align 4, !tbaa !5
  %.not1785.not = icmp slt i32 %2045, %2037
  br i1 %.not1785.not, label %.lr.ph2351, label %._crit_edge2352.loopexit, !llvm.loop !115

._crit_edge2352.loopexit:                         ; preds = %.lr.ph2351
  %.pre3479 = load i32, ptr %10, align 4, !tbaa !5
  br label %._crit_edge2352

._crit_edge2352:                                  ; preds = %._crit_edge2352.loopexit, %._crit_edge2347
  %2047 = phi i32 [ %.pre3479, %._crit_edge2352.loopexit ], [ %2036, %._crit_edge2347 ]
  %2048 = load double, ptr %11, align 8, !tbaa !12
  %2049 = fadd double %2048, %2048
  %.not17862355 = icmp slt i32 %2047, 2
  br i1 %.not17862355, label %2089, label %.lr.ph2359

.lr.ph2359:                                       ; preds = %._crit_edge2352
  %.promoted2353 = load double, ptr %12, align 8, !tbaa !12
  %2050 = add i32 %.01641, 1
  %2051 = add nsw i32 %2047, -2
  %invariant.gep3871 = getelementptr i8, ptr %4, i64 16
  br label %2052

2052:                                             ; preds = %.lr.ph2359, %2083
  %.752357 = phi i32 [ 0, %.lr.ph2359 ], [ %2087, %2083 ]
  %.1115572356 = phi i32 [ 0, %.lr.ph2359 ], [ %2086, %2083 ]
  %2053 = phi double [ %.promoted2353, %.lr.ph2359 ], [ %2085, %2083 ]
  %2054 = phi double [ %2049, %.lr.ph2359 ], [ %2084, %2083 ]
  %2055 = sext i32 %.1115572356 to i64
  %2056 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %2055
  %2057 = load double, ptr %2056, align 8, !tbaa !9
  %2058 = fcmp une double %2057, 0.000000e+00
  br i1 %2058, label %2059, label %2068

2059:                                             ; preds = %2052
  %2060 = fcmp olt double %2053, %2057
  br i1 %2060, label %2061, label %2065

2061:                                             ; preds = %2059
  %2062 = fdiv double %2053, %2057
  %2063 = fmul double %2062, %2062
  %2064 = call double @llvm.fmuladd.f64(double %2054, double %2063, double 1.000000e+00)
  store double %2057, ptr %12, align 8, !tbaa !12
  br label %2068

2065:                                             ; preds = %2059
  %2066 = fdiv double %2057, %2053
  %2067 = call double @llvm.fmuladd.f64(double %2066, double %2066, double %2054)
  br label %2068

2068:                                             ; preds = %2061, %2065, %2052
  %2069 = phi double [ %2064, %2061 ], [ %2067, %2065 ], [ %2054, %2052 ]
  %2070 = phi double [ %2057, %2061 ], [ %2053, %2065 ], [ %2053, %2052 ]
  %2071 = sext i32 %.1115572356 to i64
  %gep3872 = getelementptr %struct.doublecomplex, ptr %invariant.gep3871, i64 %2071
  %2072 = load double, ptr %gep3872, align 8, !tbaa !9
  %2073 = fcmp une double %2072, 0.000000e+00
  br i1 %2073, label %2074, label %2083

2074:                                             ; preds = %2068
  %2075 = fcmp olt double %2070, %2072
  br i1 %2075, label %2076, label %2080

2076:                                             ; preds = %2074
  %2077 = fdiv double %2070, %2072
  %2078 = fmul double %2077, %2077
  %2079 = call double @llvm.fmuladd.f64(double %2069, double %2078, double 1.000000e+00)
  store double %2072, ptr %12, align 8, !tbaa !12
  br label %2083

2080:                                             ; preds = %2074
  %2081 = fdiv double %2072, %2070
  %2082 = call double @llvm.fmuladd.f64(double %2081, double %2081, double %2069)
  br label %2083

2083:                                             ; preds = %2076, %2080, %2068
  %2084 = phi double [ %2079, %2076 ], [ %2082, %2080 ], [ %2069, %2068 ]
  %2085 = phi double [ %2072, %2076 ], [ %2070, %2080 ], [ %2070, %2068 ]
  %2086 = add i32 %2050, %.1115572356
  %2087 = add nuw i32 %.752357, 1
  %exitcond3026.not = icmp eq i32 %.752357, %2051
  br i1 %exitcond3026.not, label %._crit_edge2360, label %2052, !llvm.loop !116

._crit_edge2360:                                  ; preds = %2083
  %2088 = sext i32 %2086 to i64
  br label %2089

2089:                                             ; preds = %._crit_edge2360, %._crit_edge2352
  %2090 = phi double [ %2084, %._crit_edge2360 ], [ %2049, %._crit_edge2352 ]
  %.111557.lcssa = phi i64 [ %2088, %._crit_edge2360 ], [ 0, %._crit_edge2352 ]
  %2091 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %.111557.lcssa
  %2092 = load double, ptr %2091, align 8, !tbaa !9
  %2093 = fcmp une double %2092, 0.000000e+00
  br i1 %2093, label %2094, label %.loopexit2012

2094:                                             ; preds = %2089
  %2095 = load double, ptr %12, align 8, !tbaa !12
  %2096 = fcmp olt double %2095, %2092
  br i1 %2096, label %2097, label %2101

2097:                                             ; preds = %2094
  %2098 = fdiv double %2095, %2092
  %2099 = fmul double %2098, %2098
  %2100 = call double @llvm.fmuladd.f64(double %2090, double %2099, double 1.000000e+00)
  store double %2092, ptr %12, align 8, !tbaa !12
  br label %.loopexit2012

2101:                                             ; preds = %2094
  %2102 = fdiv double %2092, %2095
  %2103 = call double @llvm.fmuladd.f64(double %2102, double %2102, double %2090)
  br label %.loopexit2012

2104:                                             ; preds = %1782
  br i1 %.not, label %2105, label %2224

2105:                                             ; preds = %2104
  br i1 %.not1748.not.not.not.not.not.not.not.not, label %.preheader2013, label %2106

.preheader2013:                                   ; preds = %2105
  store i32 0, ptr %9, align 4, !tbaa !5
  %.not1771.not2471 = icmp sgt i32 %1783, 0
  br i1 %.not1771.not2471, label %.lr.ph2473, label %._crit_edge2474

2106:                                             ; preds = %2105
  %2107 = add nsw i32 %1785, -2
  store i32 0, ptr %9, align 4, !tbaa !5
  %.not17762453 = icmp slt i32 %1783, 3
  br i1 %.not17762453, label %._crit_edge2457, label %.lr.ph2456

.lr.ph2456:                                       ; preds = %2106, %.lr.ph2456
  %storemerge17752454 = phi i32 [ %2118, %.lr.ph2456 ], [ 0, %2106 ]
  %2108 = load i32, ptr %10, align 4, !tbaa !5
  %2109 = xor i32 %storemerge17752454, -1
  %2110 = add i32 %2108, %2109
  store i32 %2110, ptr %7, align 4, !tbaa !5
  %2111 = mul nsw i32 %storemerge17752454, %.01641
  %2112 = add i32 %storemerge17752454, 2
  %2113 = add i32 %2112, %2111
  %2114 = add i32 %2113, %2108
  %2115 = sext i32 %2114 to i64
  %2116 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %2115
  call void @zlassq_(ptr noundef nonnull %7, ptr noundef %2116, ptr noundef nonnull @c__1, ptr noundef nonnull %12, ptr noundef nonnull %11) #9
  %2117 = load i32, ptr %9, align 4, !tbaa !5
  %2118 = add nsw i32 %2117, 1
  store i32 %2118, ptr %9, align 4, !tbaa !5
  %.not1776.not = icmp slt i32 %2117, %2107
  br i1 %.not1776.not, label %.lr.ph2456, label %._crit_edge2457.loopexit, !llvm.loop !117

._crit_edge2457.loopexit:                         ; preds = %.lr.ph2456
  %.pre3493 = load i32, ptr %10, align 4, !tbaa !5
  br label %._crit_edge2457

._crit_edge2457:                                  ; preds = %._crit_edge2457.loopexit, %2106
  %2119 = phi i32 [ %.pre3493, %._crit_edge2457.loopexit ], [ %1785, %2106 ]
  store i32 0, ptr %9, align 4, !tbaa !5
  %.not1778.not2458 = icmp sgt i32 %2119, 0
  br i1 %.not1778.not2458, label %.lr.ph2461, label %._crit_edge2462.thread

._crit_edge2462.thread:                           ; preds = %._crit_edge2457
  %2120 = load double, ptr %11, align 8, !tbaa !12
  %2121 = fadd double %2120, %2120
  br label %.loopexit2012

.lr.ph2461:                                       ; preds = %._crit_edge2457, %.lr.ph2461
  %storemerge17772459 = phi i32 [ %2128, %.lr.ph2461 ], [ 0, %._crit_edge2457 ]
  %2122 = load i32, ptr %10, align 4, !tbaa !5
  %2123 = add nsw i32 %2122, %storemerge17772459
  store i32 %2123, ptr %7, align 4, !tbaa !5
  %2124 = mul nsw i32 %storemerge17772459, %.01641
  %2125 = sext i32 %2124 to i64
  %2126 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %2125
  call void @zlassq_(ptr noundef nonnull %7, ptr noundef %2126, ptr noundef nonnull @c__1, ptr noundef nonnull %12, ptr noundef nonnull %11) #9
  %2127 = load i32, ptr %9, align 4, !tbaa !5
  %2128 = add nsw i32 %2127, 1
  store i32 %2128, ptr %9, align 4, !tbaa !5
  %.not1778.not = icmp slt i32 %2128, %2119
  br i1 %.not1778.not, label %.lr.ph2461, label %._crit_edge2462, !llvm.loop !118

._crit_edge2462:                                  ; preds = %.lr.ph2461
  %.pre3494 = load i32, ptr %10, align 4, !tbaa !5
  %2129 = load double, ptr %11, align 8, !tbaa !12
  %2130 = fadd double %2129, %2129
  %.not1779.not2465 = icmp sgt i32 %.pre3494, 0
  br i1 %.not1779.not2465, label %.lr.ph2469, label %.loopexit2012

.lr.ph2469:                                       ; preds = %._crit_edge2462
  %.promoted2463 = load double, ptr %12, align 8, !tbaa !12
  %2131 = add i32 %.01641, 1
  %invariant.gep3881 = getelementptr i8, ptr %4, i64 16
  br label %2132

2132:                                             ; preds = %.lr.ph2469, %2163
  %.762467 = phi i32 [ 0, %.lr.ph2469 ], [ %2167, %2163 ]
  %.1215582466 = phi i32 [ %.pre3494, %.lr.ph2469 ], [ %2166, %2163 ]
  %2133 = phi double [ %.promoted2463, %.lr.ph2469 ], [ %2165, %2163 ]
  %2134 = phi double [ %2130, %.lr.ph2469 ], [ %2164, %2163 ]
  %2135 = sext i32 %.1215582466 to i64
  %2136 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %2135
  %2137 = load double, ptr %2136, align 8, !tbaa !9
  %2138 = fcmp une double %2137, 0.000000e+00
  br i1 %2138, label %2139, label %2148

2139:                                             ; preds = %2132
  %2140 = fcmp olt double %2133, %2137
  br i1 %2140, label %2141, label %2145

2141:                                             ; preds = %2139
  %2142 = fdiv double %2133, %2137
  %2143 = fmul double %2142, %2142
  %2144 = call double @llvm.fmuladd.f64(double %2134, double %2143, double 1.000000e+00)
  store double %2137, ptr %12, align 8, !tbaa !12
  br label %2148

2145:                                             ; preds = %2139
  %2146 = fdiv double %2137, %2133
  %2147 = call double @llvm.fmuladd.f64(double %2146, double %2146, double %2134)
  br label %2148

2148:                                             ; preds = %2141, %2145, %2132
  %2149 = phi double [ %2144, %2141 ], [ %2147, %2145 ], [ %2134, %2132 ]
  %2150 = phi double [ %2137, %2141 ], [ %2133, %2145 ], [ %2133, %2132 ]
  %2151 = sext i32 %.1215582466 to i64
  %gep3882 = getelementptr %struct.doublecomplex, ptr %invariant.gep3881, i64 %2151
  %2152 = load double, ptr %gep3882, align 8, !tbaa !9
  %2153 = fcmp une double %2152, 0.000000e+00
  br i1 %2153, label %2154, label %2163

2154:                                             ; preds = %2148
  %2155 = fcmp olt double %2150, %2152
  br i1 %2155, label %2156, label %2160

2156:                                             ; preds = %2154
  %2157 = fdiv double %2150, %2152
  %2158 = fmul double %2157, %2157
  %2159 = call double @llvm.fmuladd.f64(double %2149, double %2158, double 1.000000e+00)
  store double %2152, ptr %12, align 8, !tbaa !12
  br label %2163

2160:                                             ; preds = %2154
  %2161 = fdiv double %2152, %2150
  %2162 = call double @llvm.fmuladd.f64(double %2161, double %2161, double %2149)
  br label %2163

2163:                                             ; preds = %2156, %2160, %2148
  %2164 = phi double [ %2159, %2156 ], [ %2162, %2160 ], [ %2149, %2148 ]
  %2165 = phi double [ %2152, %2156 ], [ %2150, %2160 ], [ %2150, %2148 ]
  %2166 = add i32 %2131, %.1215582466
  %2167 = add nuw nsw i32 %.762467, 1
  %exitcond3031.not = icmp eq i32 %2167, %.pre3494
  br i1 %exitcond3031.not, label %.loopexit2012, label %2132, !llvm.loop !119

.lr.ph2473:                                       ; preds = %.preheader2013, %.lr.ph2473
  %storemerge17702472 = phi i32 [ %2177, %.lr.ph2473 ], [ 0, %.preheader2013 ]
  %2168 = load i32, ptr %3, align 4, !tbaa !5
  %2169 = xor i32 %storemerge17702472, -1
  %2170 = add i32 %2168, %2169
  store i32 %2170, ptr %7, align 4, !tbaa !5
  %2171 = add nsw i32 %storemerge17702472, 2
  %2172 = mul nsw i32 %storemerge17702472, %.01641
  %2173 = add nsw i32 %2171, %2172
  %2174 = sext i32 %2173 to i64
  %2175 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %2174
  call void @zlassq_(ptr noundef nonnull %7, ptr noundef %2175, ptr noundef nonnull @c__1, ptr noundef nonnull %12, ptr noundef nonnull %11) #9
  %2176 = load i32, ptr %9, align 4, !tbaa !5
  %2177 = add nsw i32 %2176, 1
  store i32 %2177, ptr %9, align 4, !tbaa !5
  %.not1771.not = icmp slt i32 %2177, %1785
  br i1 %.not1771.not, label %.lr.ph2473, label %._crit_edge2474.loopexit, !llvm.loop !120

._crit_edge2474.loopexit:                         ; preds = %.lr.ph2473
  %.pre3495 = load i32, ptr %10, align 4, !tbaa !5
  br label %._crit_edge2474

._crit_edge2474:                                  ; preds = %._crit_edge2474.loopexit, %.preheader2013
  %2178 = phi i32 [ %.pre3495, %._crit_edge2474.loopexit ], [ %1785, %.preheader2013 ]
  store i32 1, ptr %9, align 4, !tbaa !5
  %.not1773.not2475 = icmp sgt i32 %2178, 1
  br i1 %.not1773.not2475, label %.lr.ph2478, label %._crit_edge2479

.lr.ph2478:                                       ; preds = %._crit_edge2474, %.lr.ph2478
  %storemerge17722476 = phi i32 [ %2183, %.lr.ph2478 ], [ 1, %._crit_edge2474 ]
  %2179 = mul nsw i32 %storemerge17722476, %.01641
  %2180 = sext i32 %2179 to i64
  %2181 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %2180
  call void @zlassq_(ptr noundef nonnull %9, ptr noundef %2181, ptr noundef nonnull @c__1, ptr noundef nonnull %12, ptr noundef nonnull %11) #9
  %2182 = load i32, ptr %9, align 4, !tbaa !5
  %2183 = add nsw i32 %2182, 1
  store i32 %2183, ptr %9, align 4, !tbaa !5
  %.not1773.not = icmp slt i32 %2183, %2178
  br i1 %.not1773.not, label %.lr.ph2478, label %._crit_edge2479.loopexit, !llvm.loop !121

._crit_edge2479.loopexit:                         ; preds = %.lr.ph2478
  %.pre3496 = load i32, ptr %10, align 4, !tbaa !5
  br label %._crit_edge2479

._crit_edge2479:                                  ; preds = %._crit_edge2479.loopexit, %._crit_edge2474
  %2184 = phi i32 [ %.pre3496, %._crit_edge2479.loopexit ], [ %2178, %._crit_edge2474 ]
  %2185 = load double, ptr %11, align 8, !tbaa !12
  %2186 = fadd double %2185, %2185
  %.not1774.not2482 = icmp sgt i32 %2184, 0
  br i1 %.not1774.not2482, label %.lr.ph2486, label %.loopexit2012

.lr.ph2486:                                       ; preds = %._crit_edge2479
  %.promoted2480 = load double, ptr %12, align 8, !tbaa !12
  %2187 = add i32 %.01641, 1
  %invariant.gep3883 = getelementptr i8, ptr %4, i64 16
  br label %2188

2188:                                             ; preds = %.lr.ph2486, %2219
  %.772484 = phi i32 [ 0, %.lr.ph2486 ], [ %2223, %2219 ]
  %.1315592483 = phi i32 [ 0, %.lr.ph2486 ], [ %2222, %2219 ]
  %2189 = phi double [ %.promoted2480, %.lr.ph2486 ], [ %2221, %2219 ]
  %2190 = phi double [ %2186, %.lr.ph2486 ], [ %2220, %2219 ]
  %2191 = sext i32 %.1315592483 to i64
  %2192 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %2191
  %2193 = load double, ptr %2192, align 8, !tbaa !9
  %2194 = fcmp une double %2193, 0.000000e+00
  br i1 %2194, label %2195, label %2204

2195:                                             ; preds = %2188
  %2196 = fcmp olt double %2189, %2193
  br i1 %2196, label %2197, label %2201

2197:                                             ; preds = %2195
  %2198 = fdiv double %2189, %2193
  %2199 = fmul double %2198, %2198
  %2200 = call double @llvm.fmuladd.f64(double %2190, double %2199, double 1.000000e+00)
  store double %2193, ptr %12, align 8, !tbaa !12
  br label %2204

2201:                                             ; preds = %2195
  %2202 = fdiv double %2193, %2189
  %2203 = call double @llvm.fmuladd.f64(double %2202, double %2202, double %2190)
  br label %2204

2204:                                             ; preds = %2197, %2201, %2188
  %2205 = phi double [ %2200, %2197 ], [ %2203, %2201 ], [ %2190, %2188 ]
  %2206 = phi double [ %2193, %2197 ], [ %2189, %2201 ], [ %2189, %2188 ]
  %2207 = sext i32 %.1315592483 to i64
  %gep3884 = getelementptr %struct.doublecomplex, ptr %invariant.gep3883, i64 %2207
  %2208 = load double, ptr %gep3884, align 8, !tbaa !9
  %2209 = fcmp une double %2208, 0.000000e+00
  br i1 %2209, label %2210, label %2219

2210:                                             ; preds = %2204
  %2211 = fcmp olt double %2206, %2208
  br i1 %2211, label %2212, label %2216

2212:                                             ; preds = %2210
  %2213 = fdiv double %2206, %2208
  %2214 = fmul double %2213, %2213
  %2215 = call double @llvm.fmuladd.f64(double %2205, double %2214, double 1.000000e+00)
  store double %2208, ptr %12, align 8, !tbaa !12
  br label %2219

2216:                                             ; preds = %2210
  %2217 = fdiv double %2208, %2206
  %2218 = call double @llvm.fmuladd.f64(double %2217, double %2217, double %2205)
  br label %2219

2219:                                             ; preds = %2212, %2216, %2204
  %2220 = phi double [ %2215, %2212 ], [ %2218, %2216 ], [ %2205, %2204 ]
  %2221 = phi double [ %2208, %2212 ], [ %2206, %2216 ], [ %2206, %2204 ]
  %2222 = add i32 %2187, %.1315592483
  %2223 = add nuw nsw i32 %.772484, 1
  %exitcond3032.not = icmp eq i32 %2223, %2184
  br i1 %exitcond3032.not, label %.loopexit2012, label %2188, !llvm.loop !122

2224:                                             ; preds = %2104
  store i32 1, ptr %9, align 4, !tbaa !5
  %.not1756.not2427 = icmp sgt i32 %1783, 2
  br i1 %.not1748.not.not.not.not.not.not.not.not, label %.preheader2015, label %.preheader2016

.preheader2016:                                   ; preds = %2224
  br i1 %.not1756.not2427, label %.lr.ph2402, label %._crit_edge2403

.preheader2015:                                   ; preds = %2224
  br i1 %.not1756.not2427, label %.lr.ph2429, label %._crit_edge2430

.lr.ph2402:                                       ; preds = %.preheader2016, %.lr.ph2402
  %storemerge17622401 = phi i32 [ %2232, %.lr.ph2402 ], [ 1, %.preheader2016 ]
  %2225 = load i32, ptr %10, align 4, !tbaa !5
  %2226 = add nsw i32 %storemerge17622401, 1
  %2227 = add i32 %2226, %2225
  %2228 = mul nsw i32 %2227, %.01641
  %2229 = sext i32 %2228 to i64
  %2230 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %2229
  call void @zlassq_(ptr noundef nonnull %9, ptr noundef %2230, ptr noundef nonnull @c__1, ptr noundef nonnull %12, ptr noundef nonnull %11) #9
  %2231 = load i32, ptr %9, align 4, !tbaa !5
  %2232 = add nsw i32 %2231, 1
  store i32 %2232, ptr %9, align 4, !tbaa !5
  %.not1763.not = icmp slt i32 %2232, %1785
  br i1 %.not1763.not, label %.lr.ph2402, label %._crit_edge2403.loopexit, !llvm.loop !123

._crit_edge2403.loopexit:                         ; preds = %.lr.ph2402
  %.pre3484 = load i32, ptr %10, align 4, !tbaa !5
  br label %._crit_edge2403

._crit_edge2403:                                  ; preds = %._crit_edge2403.loopexit, %.preheader2016
  %2233 = phi i32 [ %.pre3484, %._crit_edge2403.loopexit ], [ %1785, %.preheader2016 ]
  store i32 0, ptr %9, align 4, !tbaa !5
  %.not1765.not2404 = icmp sgt i32 %2233, 0
  br i1 %.not1765.not2404, label %.lr.ph2407, label %._crit_edge2413

.lr.ph2407:                                       ; preds = %._crit_edge2403, %.lr.ph2407
  %storemerge17642405 = phi i32 [ %2238, %.lr.ph2407 ], [ 0, %._crit_edge2403 ]
  %2234 = mul nsw i32 %storemerge17642405, %.01641
  %2235 = sext i32 %2234 to i64
  %2236 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %2235
  call void @zlassq_(ptr noundef nonnull %10, ptr noundef %2236, ptr noundef nonnull @c__1, ptr noundef nonnull %12, ptr noundef nonnull %11) #9
  %2237 = load i32, ptr %9, align 4, !tbaa !5
  %2238 = add nsw i32 %2237, 1
  store i32 %2238, ptr %9, align 4, !tbaa !5
  %.not1765.not = icmp slt i32 %2238, %2233
  br i1 %.not1765.not, label %.lr.ph2407, label %._crit_edge2408, !llvm.loop !124

._crit_edge2408:                                  ; preds = %.lr.ph2407
  %.pre3485 = load i32, ptr %10, align 4, !tbaa !5
  %2239 = add nsw i32 %.pre3485, -2
  store i32 0, ptr %9, align 4, !tbaa !5
  %.not17672409 = icmp slt i32 %.pre3485, 2
  br i1 %.not17672409, label %._crit_edge2413, label %.lr.ph2412

.lr.ph2412:                                       ; preds = %._crit_edge2408, %.lr.ph2412
  %storemerge17662410 = phi i32 [ %2250, %.lr.ph2412 ], [ 0, %._crit_edge2408 ]
  %2240 = load i32, ptr %10, align 4, !tbaa !5
  %2241 = xor i32 %storemerge17662410, -1
  %2242 = add i32 %2240, %2241
  store i32 %2242, ptr %7, align 4, !tbaa !5
  %2243 = add nsw i32 %storemerge17662410, 1
  %2244 = add nsw i32 %2240, %storemerge17662410
  %2245 = mul nsw i32 %2244, %.01641
  %2246 = add nsw i32 %2243, %2245
  %2247 = sext i32 %2246 to i64
  %2248 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %2247
  call void @zlassq_(ptr noundef nonnull %7, ptr noundef %2248, ptr noundef nonnull @c__1, ptr noundef nonnull %12, ptr noundef nonnull %11) #9
  %2249 = load i32, ptr %9, align 4, !tbaa !5
  %2250 = add nsw i32 %2249, 1
  store i32 %2250, ptr %9, align 4, !tbaa !5
  %.not1767.not = icmp slt i32 %2249, %2239
  br i1 %.not1767.not, label %.lr.ph2412, label %._crit_edge2413.loopexit, !llvm.loop !125

._crit_edge2413.loopexit:                         ; preds = %.lr.ph2412
  %.pre3486 = load i32, ptr %10, align 4, !tbaa !5
  br label %._crit_edge2413

._crit_edge2413:                                  ; preds = %._crit_edge2403, %._crit_edge2413.loopexit, %._crit_edge2408
  %storemerge1768.in2416 = phi i32 [ %.pre3486, %._crit_edge2413.loopexit ], [ %.pre3485, %._crit_edge2408 ], [ %2233, %._crit_edge2403 ]
  %2251 = load double, ptr %11, align 8, !tbaa !12
  %2252 = fadd double %2251, %2251
  %2253 = mul nsw i32 %storemerge1768.in2416, %.01641
  %2254 = sext i32 %2253 to i64
  %2255 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %2254
  %2256 = load double, ptr %2255, align 8, !tbaa !9
  %2257 = fcmp une double %2256, 0.000000e+00
  %2258 = load double, ptr %12, align 8, !tbaa !12
  br i1 %2257, label %2259, label %._crit_edge2413._crit_edge

2259:                                             ; preds = %._crit_edge2413
  %2260 = fcmp olt double %2258, %2256
  br i1 %2260, label %2261, label %2265

2261:                                             ; preds = %2259
  %2262 = fdiv double %2258, %2256
  %2263 = fmul double %2262, %2262
  %2264 = call double @llvm.fmuladd.f64(double %2252, double %2263, double 1.000000e+00)
  store double %2256, ptr %12, align 8, !tbaa !12
  br label %._crit_edge2413._crit_edge

2265:                                             ; preds = %2259
  %2266 = fdiv double %2256, %2258
  %2267 = call double @llvm.fmuladd.f64(double %2266, double %2266, double %2252)
  br label %._crit_edge2413._crit_edge

._crit_edge2413._crit_edge:                       ; preds = %._crit_edge2413, %2261, %2265
  %.promoted2415 = phi double [ %2264, %2261 ], [ %2267, %2265 ], [ %2252, %._crit_edge2413 ]
  %.promoted2414 = phi double [ %2256, %2261 ], [ %2258, %2265 ], [ %2258, %._crit_edge2413 ]
  %2268 = add nsw i32 %2253, %.01641
  %2269 = load i32, ptr %3, align 4, !tbaa !5
  %2270 = add nsw i32 %2269, -1
  %.not1769.not2418 = icmp slt i32 %storemerge1768.in2416, %2270
  br i1 %.not1769.not2418, label %.lr.ph2421, label %._crit_edge2422

.lr.ph2421:                                       ; preds = %._crit_edge2413._crit_edge
  %storemerge17682417 = add nsw i32 %storemerge1768.in2416, 1
  %2271 = add i32 %.01641, 1
  %smax = call i32 @llvm.smax.i32(i32 %storemerge17682417, i32 %2270)
  %invariant.gep3877 = getelementptr i8, ptr %4, i64 16
  br label %2272

2272:                                             ; preds = %.lr.ph2421, %2303
  %storemerge1768.in2426 = phi i32 [ %storemerge17682417, %.lr.ph2421 ], [ %storemerge1768, %2303 ]
  %.1415602419 = phi i32 [ %2268, %.lr.ph2421 ], [ %2306, %2303 ]
  %2273 = phi double [ %.promoted2414, %.lr.ph2421 ], [ %2305, %2303 ]
  %2274 = phi double [ %.promoted2415, %.lr.ph2421 ], [ %2304, %2303 ]
  %2275 = sext i32 %.1415602419 to i64
  %2276 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %2275
  %2277 = load double, ptr %2276, align 8, !tbaa !9
  %2278 = fcmp une double %2277, 0.000000e+00
  br i1 %2278, label %2279, label %2288

2279:                                             ; preds = %2272
  %2280 = fcmp olt double %2273, %2277
  br i1 %2280, label %2281, label %2285

2281:                                             ; preds = %2279
  %2282 = fdiv double %2273, %2277
  %2283 = fmul double %2282, %2282
  %2284 = call double @llvm.fmuladd.f64(double %2274, double %2283, double 1.000000e+00)
  store double %2277, ptr %12, align 8, !tbaa !12
  br label %2288

2285:                                             ; preds = %2279
  %2286 = fdiv double %2277, %2273
  %2287 = call double @llvm.fmuladd.f64(double %2286, double %2286, double %2274)
  br label %2288

2288:                                             ; preds = %2281, %2285, %2272
  %2289 = phi double [ %2284, %2281 ], [ %2287, %2285 ], [ %2274, %2272 ]
  %2290 = phi double [ %2277, %2281 ], [ %2273, %2285 ], [ %2273, %2272 ]
  %2291 = sext i32 %.1415602419 to i64
  %gep3878 = getelementptr %struct.doublecomplex, ptr %invariant.gep3877, i64 %2291
  %2292 = load double, ptr %gep3878, align 8, !tbaa !9
  %2293 = fcmp une double %2292, 0.000000e+00
  br i1 %2293, label %2294, label %2303

2294:                                             ; preds = %2288
  %2295 = fcmp olt double %2290, %2292
  br i1 %2295, label %2296, label %2300

2296:                                             ; preds = %2294
  %2297 = fdiv double %2290, %2292
  %2298 = fmul double %2297, %2297
  %2299 = call double @llvm.fmuladd.f64(double %2289, double %2298, double 1.000000e+00)
  store double %2292, ptr %12, align 8, !tbaa !12
  br label %2303

2300:                                             ; preds = %2294
  %2301 = fdiv double %2292, %2290
  %2302 = call double @llvm.fmuladd.f64(double %2301, double %2301, double %2289)
  br label %2303

2303:                                             ; preds = %2296, %2300, %2288
  %2304 = phi double [ %2299, %2296 ], [ %2302, %2300 ], [ %2289, %2288 ]
  %2305 = phi double [ %2292, %2296 ], [ %2290, %2300 ], [ %2290, %2288 ]
  %2306 = add i32 %2271, %.1415602419
  %storemerge1768 = add i32 %storemerge1768.in2426, 1
  %exitcond3029.not = icmp eq i32 %storemerge1768.in2426, %smax
  br i1 %exitcond3029.not, label %._crit_edge2422, label %2272, !llvm.loop !126

._crit_edge2422:                                  ; preds = %2303, %._crit_edge2413._crit_edge
  %2307 = phi double [ %.promoted2415, %._crit_edge2413._crit_edge ], [ %2304, %2303 ]
  %2308 = phi double [ %.promoted2414, %._crit_edge2413._crit_edge ], [ %2305, %2303 ]
  %.141560.lcssa = phi i32 [ %2268, %._crit_edge2413._crit_edge ], [ %2306, %2303 ]
  %2309 = sext i32 %.141560.lcssa to i64
  %2310 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %2309
  %2311 = load double, ptr %2310, align 8, !tbaa !9
  %2312 = fcmp une double %2311, 0.000000e+00
  br i1 %2312, label %2313, label %.loopexit2012

2313:                                             ; preds = %._crit_edge2422
  %2314 = fcmp olt double %2308, %2311
  br i1 %2314, label %2315, label %2319

2315:                                             ; preds = %2313
  %2316 = fdiv double %2308, %2311
  %2317 = fmul double %2316, %2316
  %2318 = call double @llvm.fmuladd.f64(double %2307, double %2317, double 1.000000e+00)
  store double %2311, ptr %12, align 8, !tbaa !12
  br label %.loopexit2012

2319:                                             ; preds = %2313
  %2320 = fdiv double %2311, %2308
  %2321 = call double @llvm.fmuladd.f64(double %2320, double %2320, double %2307)
  br label %.loopexit2012

.lr.ph2429:                                       ; preds = %.preheader2015, %.lr.ph2429
  %storemerge2428 = phi i32 [ %2327, %.lr.ph2429 ], [ 1, %.preheader2015 ]
  %2322 = add nsw i32 %storemerge2428, 1
  %2323 = mul nsw i32 %2322, %.01641
  %2324 = sext i32 %2323 to i64
  %2325 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %2324
  call void @zlassq_(ptr noundef nonnull %9, ptr noundef %2325, ptr noundef nonnull @c__1, ptr noundef nonnull %12, ptr noundef nonnull %11) #9
  %2326 = load i32, ptr %9, align 4, !tbaa !5
  %2327 = add nsw i32 %2326, 1
  store i32 %2327, ptr %9, align 4, !tbaa !5
  %.not1756.not = icmp slt i32 %2327, %1785
  br i1 %.not1756.not, label %.lr.ph2429, label %._crit_edge2430.loopexit, !llvm.loop !127

._crit_edge2430.loopexit:                         ; preds = %.lr.ph2429
  %.pre3489 = load i32, ptr %3, align 4, !tbaa !5
  %storemerge1757.in2431.pre = load i32, ptr %10, align 4, !tbaa !5
  br label %._crit_edge2430

._crit_edge2430:                                  ; preds = %._crit_edge2430.loopexit, %.preheader2015
  %storemerge1757.in2431 = phi i32 [ %storemerge1757.in2431.pre, %._crit_edge2430.loopexit ], [ %1785, %.preheader2015 ]
  %2328 = phi i32 [ %.pre3489, %._crit_edge2430.loopexit ], [ %1783, %.preheader2015 ]
  %storemerge17572432 = add nsw i32 %storemerge1757.in2431, 1
  store i32 %storemerge17572432, ptr %9, align 4, !tbaa !5
  %.not1758.not2433 = icmp slt i32 %storemerge1757.in2431, %2328
  br i1 %.not1758.not2433, label %.lr.ph2436, label %._crit_edge2437

.lr.ph2436:                                       ; preds = %._crit_edge2430, %.lr.ph2436
  %storemerge17572434 = phi i32 [ %storemerge1757, %.lr.ph2436 ], [ %storemerge17572432, %._crit_edge2430 ]
  %2329 = mul nsw i32 %storemerge17572434, %.01641
  %2330 = sext i32 %2329 to i64
  %2331 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %2330
  call void @zlassq_(ptr noundef nonnull %10, ptr noundef %2331, ptr noundef nonnull @c__1, ptr noundef nonnull %12, ptr noundef nonnull %11) #9
  %storemerge1757.in = load i32, ptr %9, align 4, !tbaa !5
  %storemerge1757 = add nsw i32 %storemerge1757.in, 1
  store i32 %storemerge1757, ptr %9, align 4, !tbaa !5
  %.not1758.not = icmp slt i32 %storemerge1757.in, %2328
  br i1 %.not1758.not, label %.lr.ph2436, label %._crit_edge2437.loopexit, !llvm.loop !128

._crit_edge2437.loopexit:                         ; preds = %.lr.ph2436
  %.pre3491 = load i32, ptr %10, align 4, !tbaa !5
  br label %._crit_edge2437

._crit_edge2437:                                  ; preds = %._crit_edge2437.loopexit, %._crit_edge2430
  %2332 = phi i32 [ %.pre3491, %._crit_edge2437.loopexit ], [ %storemerge1757.in2431, %._crit_edge2430 ]
  %2333 = add nsw i32 %2332, -2
  store i32 0, ptr %9, align 4, !tbaa !5
  %.not17602438 = icmp slt i32 %2332, 2
  br i1 %.not17602438, label %._crit_edge2442, label %.lr.ph2441

.lr.ph2441:                                       ; preds = %._crit_edge2437, %.lr.ph2441
  %storemerge17592439 = phi i32 [ %2343, %.lr.ph2441 ], [ 0, %._crit_edge2437 ]
  %2334 = load i32, ptr %10, align 4, !tbaa !5
  %2335 = xor i32 %storemerge17592439, -1
  %2336 = add i32 %2334, %2335
  store i32 %2336, ptr %7, align 4, !tbaa !5
  %2337 = add nsw i32 %storemerge17592439, 1
  %2338 = mul nsw i32 %storemerge17592439, %.01641
  %2339 = add nsw i32 %2337, %2338
  %2340 = sext i32 %2339 to i64
  %2341 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %2340
  call void @zlassq_(ptr noundef nonnull %7, ptr noundef %2341, ptr noundef nonnull @c__1, ptr noundef nonnull %12, ptr noundef nonnull %11) #9
  %2342 = load i32, ptr %9, align 4, !tbaa !5
  %2343 = add nsw i32 %2342, 1
  store i32 %2343, ptr %9, align 4, !tbaa !5
  %.not1760.not = icmp slt i32 %2342, %2333
  br i1 %.not1760.not, label %.lr.ph2441, label %._crit_edge2442, !llvm.loop !129

._crit_edge2442:                                  ; preds = %.lr.ph2441, %._crit_edge2437
  %2344 = load double, ptr %11, align 8, !tbaa !12
  %2345 = fadd double %2344, %2344
  %2346 = load double, ptr %4, align 8, !tbaa !9
  %2347 = fcmp une double %2346, 0.000000e+00
  br i1 %2347, label %2348, label %2358

2348:                                             ; preds = %._crit_edge2442
  %2349 = load double, ptr %12, align 8, !tbaa !12
  %2350 = fcmp olt double %2349, %2346
  br i1 %2350, label %2351, label %2355

2351:                                             ; preds = %2348
  %2352 = fdiv double %2349, %2346
  %2353 = fmul double %2352, %2352
  %2354 = call double @llvm.fmuladd.f64(double %2345, double %2353, double 1.000000e+00)
  store double %2346, ptr %12, align 8, !tbaa !12
  br label %2358

2355:                                             ; preds = %2348
  %2356 = fdiv double %2346, %2349
  %2357 = call double @llvm.fmuladd.f64(double %2356, double %2356, double %2345)
  br label %2358

2358:                                             ; preds = %2351, %2355, %._crit_edge2442
  %.promoted2444 = phi double [ %2354, %2351 ], [ %2357, %2355 ], [ %2345, %._crit_edge2442 ]
  %2359 = load i32, ptr %10, align 4, !tbaa !5
  %.not17612445 = icmp slt i32 %2359, 2
  br i1 %.not17612445, label %._crit_edge2450, label %.lr.ph2449

.lr.ph2449:                                       ; preds = %2358
  %.promoted2443 = load double, ptr %12, align 8, !tbaa !12
  %2360 = add i32 %.01641, 1
  %2361 = add nsw i32 %2359, -2
  %invariant.gep3879 = getelementptr i8, ptr %4, i64 16
  br label %2362

2362:                                             ; preds = %.lr.ph2449, %2393
  %.782447 = phi i32 [ 0, %.lr.ph2449 ], [ %2397, %2393 ]
  %.1515612446 = phi i32 [ %.01641, %.lr.ph2449 ], [ %2396, %2393 ]
  %2363 = phi double [ %.promoted2443, %.lr.ph2449 ], [ %2395, %2393 ]
  %2364 = phi double [ %.promoted2444, %.lr.ph2449 ], [ %2394, %2393 ]
  %2365 = sext i32 %.1515612446 to i64
  %2366 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %2365
  %2367 = load double, ptr %2366, align 8, !tbaa !9
  %2368 = fcmp une double %2367, 0.000000e+00
  br i1 %2368, label %2369, label %2378

2369:                                             ; preds = %2362
  %2370 = fcmp olt double %2363, %2367
  br i1 %2370, label %2371, label %2375

2371:                                             ; preds = %2369
  %2372 = fdiv double %2363, %2367
  %2373 = fmul double %2372, %2372
  %2374 = call double @llvm.fmuladd.f64(double %2364, double %2373, double 1.000000e+00)
  store double %2367, ptr %12, align 8, !tbaa !12
  br label %2378

2375:                                             ; preds = %2369
  %2376 = fdiv double %2367, %2363
  %2377 = call double @llvm.fmuladd.f64(double %2376, double %2376, double %2364)
  br label %2378

2378:                                             ; preds = %2371, %2375, %2362
  %2379 = phi double [ %2374, %2371 ], [ %2377, %2375 ], [ %2364, %2362 ]
  %2380 = phi double [ %2367, %2371 ], [ %2363, %2375 ], [ %2363, %2362 ]
  %2381 = sext i32 %.1515612446 to i64
  %gep3880 = getelementptr %struct.doublecomplex, ptr %invariant.gep3879, i64 %2381
  %2382 = load double, ptr %gep3880, align 8, !tbaa !9
  %2383 = fcmp une double %2382, 0.000000e+00
  br i1 %2383, label %2384, label %2393

2384:                                             ; preds = %2378
  %2385 = fcmp olt double %2380, %2382
  br i1 %2385, label %2386, label %2390

2386:                                             ; preds = %2384
  %2387 = fdiv double %2380, %2382
  %2388 = fmul double %2387, %2387
  %2389 = call double @llvm.fmuladd.f64(double %2379, double %2388, double 1.000000e+00)
  store double %2382, ptr %12, align 8, !tbaa !12
  br label %2393

2390:                                             ; preds = %2384
  %2391 = fdiv double %2382, %2380
  %2392 = call double @llvm.fmuladd.f64(double %2391, double %2391, double %2379)
  br label %2393

2393:                                             ; preds = %2386, %2390, %2378
  %2394 = phi double [ %2389, %2386 ], [ %2392, %2390 ], [ %2379, %2378 ]
  %2395 = phi double [ %2382, %2386 ], [ %2380, %2390 ], [ %2380, %2378 ]
  %2396 = add i32 %2360, %.1515612446
  %2397 = add nuw i32 %.782447, 1
  %exitcond3030.not = icmp eq i32 %.782447, %2361
  br i1 %exitcond3030.not, label %._crit_edge2450, label %2362, !llvm.loop !130

._crit_edge2450:                                  ; preds = %2393, %2358
  %2398 = phi double [ %.promoted2444, %2358 ], [ %2394, %2393 ]
  %.151561.lcssa = phi i32 [ %.01641, %2358 ], [ %2396, %2393 ]
  %2399 = sext i32 %.151561.lcssa to i64
  %2400 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %2399
  %2401 = load double, ptr %2400, align 8, !tbaa !9
  %2402 = fcmp une double %2401, 0.000000e+00
  br i1 %2402, label %2403, label %.loopexit2012

2403:                                             ; preds = %._crit_edge2450
  %2404 = load double, ptr %12, align 8, !tbaa !12
  %2405 = fcmp olt double %2404, %2401
  br i1 %2405, label %2406, label %2410

2406:                                             ; preds = %2403
  %2407 = fdiv double %2404, %2401
  %2408 = fmul double %2407, %2407
  %2409 = call double @llvm.fmuladd.f64(double %2398, double %2408, double 1.000000e+00)
  store double %2401, ptr %12, align 8, !tbaa !12
  br label %.loopexit2012

2410:                                             ; preds = %2403
  %2411 = fdiv double %2401, %2404
  %2412 = call double @llvm.fmuladd.f64(double %2411, double %2411, double %2398)
  br label %.loopexit2012

.loopexit2012:                                    ; preds = %2019, %1933, %2163, %2219, %1985, %._crit_edge2462.thread, %1899, %._crit_edge2462, %._crit_edge2479, %._crit_edge2450, %2410, %2406, %._crit_edge2422, %2319, %2315, %._crit_edge2380, %1864, %1860, %2089, %2101, %2097
  %2413 = phi double [ %.promoted2393, %1899 ], [ %2130, %._crit_edge2462 ], [ %2186, %._crit_edge2479 ], [ %2398, %._crit_edge2450 ], [ %2412, %2410 ], [ %2409, %2406 ], [ %2307, %._crit_edge2422 ], [ %2321, %2319 ], [ %2318, %2315 ], [ %1852, %._crit_edge2380 ], [ %1866, %1864 ], [ %1863, %1860 ], [ %2090, %2089 ], [ %2103, %2101 ], [ %2100, %2097 ], [ %2121, %._crit_edge2462.thread ], [ %.promoted2332, %1985 ], [ %2220, %2219 ], [ %2164, %2163 ], [ %1934, %1933 ], [ %2020, %2019 ]
  %2414 = load double, ptr %12, align 8, !tbaa !12
  %2415 = call double @sqrt(double noundef %2413) #9
  %2416 = fmul double %2414, %2415
  br label %.loopexit

.loopexit:                                        ; preds = %._crit_edge2057, %._crit_edge2098, %._crit_edge2155, %.loopexit2022, %._crit_edge2309, %1376, %1493, %1638, %1777, %1047, %1123, %1189, %1258, %.thread3569, %.preheader1996.thread3565, %.thread, %._crit_edge2210, %._crit_edge3409, %669, %._crit_edge3454, %._crit_edge2132, %._crit_edge3367, %._crit_edge2043, %320, %._crit_edge2140, %800, %._crit_edge2295, %1368, %1485, %._crit_edge3529, %1769, %1039, %1116, %.preheader1996, %1251, %681, %964, %222, %1780, %.loopexit2012, %6, %14
  %.0 = phi double [ %18, %14 ], [ 0.000000e+00, %6 ], [ %.171579.lcssa, %222 ], [ %.651627, %681 ], [ %.95.lcssa, %964 ], [ %2416, %.loopexit2012 ], [ undef, %1780 ], [ %1252, %1251 ], [ %1183, %.preheader1996 ], [ %1117, %1116 ], [ %1040, %1039 ], [ %1771, %1769 ], [ %1631, %._crit_edge3529 ], [ %1487, %1485 ], [ %1370, %1368 ], [ %.471609.lcssa, %._crit_edge2295 ], [ %.781640, %800 ], [ %.11563.lcssa, %._crit_edge2140 ], [ %.281590, %320 ], [ %.361598.lcssa, %._crit_edge2043 ], [ %.pre3368, %._crit_edge3367 ], [ %220, %._crit_edge2132 ], [ %.pre3455, %._crit_edge3454 ], [ %679, %669 ], [ %.pre3410, %._crit_edge3409 ], [ %962, %._crit_edge2210 ], [ %1059, %.thread ], [ %1125, %.preheader1996.thread3565 ], [ %1250, %.thread3569 ], [ %.104, %1258 ], [ %.102, %1189 ], [ %.100, %1123 ], [ %.98, %1047 ], [ %.112, %1777 ], [ %.110, %1638 ], [ %.108, %1493 ], [ %.106, %1376 ], [ %.541616.lcssa, %._crit_edge2309 ], [ %.80.lcssa, %.loopexit2022 ], [ %.81570.lcssa, %._crit_edge2155 ], [ %.301592.lcssa, %._crit_edge2098 ], [ %.431605.lcssa, %._crit_edge2057 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #9
  ret double %.0
}

; 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 @disnan_(ptr noundef) local_unnamed_addr #2

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

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

declare void @zlassq_(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) #5

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

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #8

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !11, i64 0}
!10 = !{!"", !11, i64 0, !11, i64 8}
!11 = !{!"double", !7, i64 0}
!12 = !{!11, !11, 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}
!29 = distinct !{!29, !14}
!30 = distinct !{!30, !14}
!31 = distinct !{!31, !14}
!32 = distinct !{!32, !14}
!33 = distinct !{!33, !14}
!34 = distinct !{!34, !14}
!35 = distinct !{!35, !14}
!36 = distinct !{!36, !14}
!37 = distinct !{!37, !14}
!38 = distinct !{!38, !14}
!39 = distinct !{!39, !14}
!40 = distinct !{!40, !14}
!41 = distinct !{!41, !14}
!42 = distinct !{!42, !14}
!43 = distinct !{!43, !14}
!44 = distinct !{!44, !14}
!45 = distinct !{!45, !14}
!46 = distinct !{!46, !14}
!47 = distinct !{!47, !14}
!48 = distinct !{!48, !14}
!49 = distinct !{!49, !14}
!50 = distinct !{!50, !14}
!51 = distinct !{!51, !14}
!52 = distinct !{!52, !14}
!53 = distinct !{!53, !14}
!54 = distinct !{!54, !14}
!55 = distinct !{!55, !14}
!56 = !{!7, !7, i64 0}
!57 = distinct !{!57, !14}
!58 = distinct !{!58, !14}
!59 = distinct !{!59, !14}
!60 = distinct !{!60, !14}
!61 = distinct !{!61, !14}
!62 = distinct !{!62, !14}
!63 = distinct !{!63, !14}
!64 = distinct !{!64, !14}
!65 = distinct !{!65, !14}
!66 = distinct !{!66, !14}
!67 = distinct !{!67, !14}
!68 = distinct !{!68, !14}
!69 = distinct !{!69, !14}
!70 = distinct !{!70, !14}
!71 = distinct !{!71, !14}
!72 = distinct !{!72, !14}
!73 = distinct !{!73, !14}
!74 = distinct !{!74, !14}
!75 = distinct !{!75, !14}
!76 = distinct !{!76, !14}
!77 = distinct !{!77, !14}
!78 = distinct !{!78, !14}
!79 = distinct !{!79, !14}
!80 = distinct !{!80, !14}
!81 = distinct !{!81, !14}
!82 = distinct !{!82, !14}
!83 = distinct !{!83, !14}
!84 = distinct !{!84, !14}
!85 = distinct !{!85, !14}
!86 = distinct !{!86, !14}
!87 = distinct !{!87, !14}
!88 = distinct !{!88, !14}
!89 = distinct !{!89, !14}
!90 = distinct !{!90, !14}
!91 = distinct !{!91, !14}
!92 = distinct !{!92, !14}
!93 = distinct !{!93, !14}
!94 = distinct !{!94, !14}
!95 = distinct !{!95, !14}
!96 = distinct !{!96, !14}
!97 = distinct !{!97, !14}
!98 = distinct !{!98, !14}
!99 = distinct !{!99, !14}
!100 = distinct !{!100, !14}
!101 = distinct !{!101, !14}
!102 = distinct !{!102, !14}
!103 = distinct !{!103, !14}
!104 = distinct !{!104, !14}
!105 = distinct !{!105, !14}
!106 = distinct !{!106, !14}
!107 = distinct !{!107, !14}
!108 = distinct !{!108, !14}
!109 = distinct !{!109, !14}
!110 = distinct !{!110, !14}
!111 = distinct !{!111, !14}
!112 = distinct !{!112, !14}
!113 = distinct !{!113, !14}
!114 = distinct !{!114, !14}
!115 = distinct !{!115, !14}
!116 = distinct !{!116, !14}
!117 = distinct !{!117, !14}
!118 = distinct !{!118, !14}
!119 = distinct !{!119, !14}
!120 = distinct !{!120, !14}
!121 = distinct !{!121, !14}
!122 = distinct !{!122, !14}
!123 = distinct !{!123, !14}
!124 = distinct !{!124, !14}
!125 = distinct !{!125, !14}
!126 = distinct !{!126, !14}
!127 = distinct !{!127, !14}
!128 = distinct !{!128, !14}
!129 = distinct !{!129, !14}
!130 = distinct !{!130, !14}


; Effective O3 passes: ADCEPass,BDCEPass,CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopIdiomRecognizePass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass