; LLVM IR from niuyishuai/PDCABB :: LAPACK_BLAS/LAPACK (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
@c__1 = external hidden global i64, align 8
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1

; 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 i64, align 8
  %15 = alloca i64, align 8
  %16 = alloca double, align 8
  %17 = alloca double, align 8
  %18 = alloca double, align 8
  %19 = alloca double, align 8
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca i64, align 8
  %23 = alloca i64, align 8
  %24 = alloca double, align 8
  %25 = alloca i64, align 8
  %26 = alloca double, align 8
  %27 = alloca i64, align 8
  %28 = alloca i64, align 8
  %29 = alloca i64, align 8
  %30 = alloca i64, align 8
  %31 = alloca double, align 8
  %32 = alloca double, align 8
  %33 = alloca i32, align 4
  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 8, ptr %14) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #5
  %34 = load ptr, ptr %11, align 8, !tbaa !5
  %35 = load i64, ptr %34, align 8, !tbaa !9
  %36 = icmp eq i64 %35, 0
  br i1 %36, label %37, label %39

37:                                               ; preds = %6
  store double 0.000000e+00, ptr %16, align 8, !tbaa !11
  %38 = load double, ptr %16, align 8, !tbaa !11
  store double %38, ptr %7, align 8
  store i32 1, ptr %33, align 4
  br label %5278

39:                                               ; preds = %6
  store i64 1, ptr %29, align 8, !tbaa !9
  %40 = load ptr, ptr %11, align 8, !tbaa !5
  %41 = load i64, ptr %40, align 8, !tbaa !9
  %42 = srem i64 %41, 2
  %43 = icmp eq i64 %42, 0
  br i1 %43, label %44, label %45

44:                                               ; preds = %39
  store i64 0, ptr %29, align 8, !tbaa !9
  br label %45

45:                                               ; preds = %44, %39
  store i64 1, ptr %28, align 8, !tbaa !9
  %46 = load ptr, ptr %9, align 8, !tbaa !5
  %47 = call i64 @lsame_(ptr noundef %46, ptr noundef @.str)
  %48 = icmp ne i64 %47, 0
  br i1 %48, label %49, label %50

49:                                               ; preds = %45
  store i64 0, ptr %28, align 8, !tbaa !9
  br label %50

50:                                               ; preds = %49, %45
  store i64 1, ptr %30, align 8, !tbaa !9
  %51 = load ptr, ptr %10, align 8, !tbaa !5
  %52 = call i64 @lsame_(ptr noundef %51, ptr noundef @.str.1)
  %53 = icmp ne i64 %52, 0
  br i1 %53, label %54, label %55

54:                                               ; preds = %50
  store i64 0, ptr %30, align 8, !tbaa !9
  br label %55

55:                                               ; preds = %54, %50
  %56 = load i64, ptr %28, align 8, !tbaa !9
  %57 = icmp eq i64 %56, 1
  br i1 %57, label %58, label %69

58:                                               ; preds = %55
  %59 = load i64, ptr %29, align 8, !tbaa !9
  %60 = icmp eq i64 %59, 1
  br i1 %60, label %61, label %64

61:                                               ; preds = %58
  %62 = load ptr, ptr %11, align 8, !tbaa !5
  %63 = load i64, ptr %62, align 8, !tbaa !9
  store i64 %63, ptr %27, align 8, !tbaa !9
  br label %68

64:                                               ; preds = %58
  %65 = load ptr, ptr %11, align 8, !tbaa !5
  %66 = load i64, ptr %65, align 8, !tbaa !9
  %67 = add nsw i64 %66, 1
  store i64 %67, ptr %27, align 8, !tbaa !9
  br label %68

68:                                               ; preds = %64, %61
  br label %74

69:                                               ; preds = %55
  %70 = load ptr, ptr %11, align 8, !tbaa !5
  %71 = load i64, ptr %70, align 8, !tbaa !9
  %72 = add nsw i64 %71, 1
  %73 = sdiv i64 %72, 2
  store i64 %73, ptr %27, align 8, !tbaa !9
  br label %74

74:                                               ; preds = %69, %68
  %75 = load ptr, ptr %8, align 8, !tbaa !5
  %76 = call i64 @lsame_(ptr noundef %75, ptr noundef @.str.2)
  %77 = icmp ne i64 %76, 0
  br i1 %77, label %78, label %2028

78:                                               ; preds = %74
  %79 = load ptr, ptr %11, align 8, !tbaa !5
  %80 = load i64, ptr %79, align 8, !tbaa !9
  %81 = add nsw i64 %80, 1
  %82 = sdiv i64 %81, 2
  store i64 %82, ptr %22, align 8, !tbaa !9
  store double 0.000000e+00, ptr %32, align 8, !tbaa !11
  %83 = load i64, ptr %29, align 8, !tbaa !9
  %84 = icmp eq i64 %83, 1
  br i1 %84, label %85, label %968

85:                                               ; preds = %78
  %86 = load i64, ptr %28, align 8, !tbaa !9
  %87 = icmp eq i64 %86, 1
  br i1 %87, label %88, label %485

88:                                               ; preds = %85
  %89 = load i64, ptr %30, align 8, !tbaa !9
  %90 = icmp eq i64 %89, 1
  br i1 %90, label %91, label %284

91:                                               ; preds = %88
  store i64 0, ptr %21, align 8, !tbaa !9
  %92 = load i64, ptr %21, align 8, !tbaa !9
  %93 = load i64, ptr %21, align 8, !tbaa !9
  %94 = load i64, ptr %27, align 8, !tbaa !9
  %95 = mul nsw i64 %93, %94
  %96 = add nsw i64 %92, %95
  store i64 %96, ptr %14, align 8, !tbaa !9
  %97 = load double, ptr %32, align 8, !tbaa !11
  store double %97, ptr %18, align 8, !tbaa !11
  %98 = load ptr, ptr %12, align 8, !tbaa !5
  %99 = load i64, ptr %14, align 8, !tbaa !9
  %100 = getelementptr inbounds %struct.doublecomplex, ptr %98, i64 %99
  %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 = %91
  %106 = load double, ptr %17, align 8, !tbaa !11
  br label %110

107:                                              ; preds = %91
  %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 %19, align 8, !tbaa !11
  %112 = load double, ptr %18, align 8, !tbaa !11
  %113 = load double, ptr %19, align 8, !tbaa !11
  %114 = fcmp oge double %112, %113
  br i1 %114, label %115, label %117

115:                                              ; preds = %110
  %116 = load double, ptr %18, align 8, !tbaa !11
  br label %119

117:                                              ; preds = %110
  %118 = load double, ptr %19, align 8, !tbaa !11
  br label %119

119:                                              ; preds = %117, %115
  %120 = phi double [ %116, %115 ], [ %118, %117 ]
  store double %120, ptr %32, align 8, !tbaa !11
  %121 = load ptr, ptr %11, align 8, !tbaa !5
  %122 = load i64, ptr %121, align 8, !tbaa !9
  %123 = sub nsw i64 %122, 1
  store i64 %123, ptr %14, align 8, !tbaa !9
  store i64 1, ptr %20, align 8, !tbaa !9
  br label %124

124:                                              ; preds = %147, %119
  %125 = load i64, ptr %20, align 8, !tbaa !9
  %126 = load i64, ptr %14, align 8, !tbaa !9
  %127 = icmp sle i64 %125, %126
  br i1 %127, label %128, label %150

128:                                              ; preds = %124
  %129 = load double, ptr %32, align 8, !tbaa !11
  store double %129, ptr %17, align 8, !tbaa !11
  %130 = load ptr, ptr %12, align 8, !tbaa !5
  %131 = load i64, ptr %20, align 8, !tbaa !9
  %132 = load i64, ptr %21, align 8, !tbaa !9
  %133 = load i64, ptr %27, align 8, !tbaa !9
  %134 = mul nsw i64 %132, %133
  %135 = add nsw i64 %131, %134
  %136 = getelementptr inbounds %struct.doublecomplex, ptr %130, i64 %135
  %137 = call double @z_abs(ptr noundef %136)
  store double %137, ptr %18, align 8, !tbaa !11
  %138 = load double, ptr %17, align 8, !tbaa !11
  %139 = load double, ptr %18, align 8, !tbaa !11
  %140 = fcmp oge double %138, %139
  br i1 %140, label %141, label %143

141:                                              ; preds = %128
  %142 = load double, ptr %17, align 8, !tbaa !11
  br label %145

143:                                              ; preds = %128
  %144 = load double, ptr %18, align 8, !tbaa !11
  br label %145

145:                                              ; preds = %143, %141
  %146 = phi double [ %142, %141 ], [ %144, %143 ]
  store double %146, ptr %32, align 8, !tbaa !11
  br label %147

147:                                              ; preds = %145
  %148 = load i64, ptr %20, align 8, !tbaa !9
  %149 = add nsw i64 %148, 1
  store i64 %149, ptr %20, align 8, !tbaa !9
  br label %124, !llvm.loop !15

150:                                              ; preds = %124
  %151 = load i64, ptr %22, align 8, !tbaa !9
  %152 = sub nsw i64 %151, 1
  store i64 %152, ptr %14, align 8, !tbaa !9
  store i64 1, ptr %21, align 8, !tbaa !9
  br label %153

153:                                              ; preds = %280, %150
  %154 = load i64, ptr %21, align 8, !tbaa !9
  %155 = load i64, ptr %14, align 8, !tbaa !9
  %156 = icmp sle i64 %154, %155
  br i1 %156, label %157, label %283

157:                                              ; preds = %153
  %158 = load i64, ptr %21, align 8, !tbaa !9
  %159 = sub nsw i64 %158, 2
  store i64 %159, ptr %15, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %160

160:                                              ; preds = %183, %157
  %161 = load i64, ptr %20, align 8, !tbaa !9
  %162 = load i64, ptr %15, align 8, !tbaa !9
  %163 = icmp sle i64 %161, %162
  br i1 %163, label %164, label %186

164:                                              ; preds = %160
  %165 = load double, ptr %32, align 8, !tbaa !11
  store double %165, ptr %17, align 8, !tbaa !11
  %166 = load ptr, ptr %12, align 8, !tbaa !5
  %167 = load i64, ptr %20, align 8, !tbaa !9
  %168 = load i64, ptr %21, align 8, !tbaa !9
  %169 = load i64, ptr %27, align 8, !tbaa !9
  %170 = mul nsw i64 %168, %169
  %171 = add nsw i64 %167, %170
  %172 = getelementptr inbounds %struct.doublecomplex, ptr %166, i64 %171
  %173 = call double @z_abs(ptr noundef %172)
  store double %173, ptr %18, align 8, !tbaa !11
  %174 = load double, ptr %17, align 8, !tbaa !11
  %175 = load double, ptr %18, align 8, !tbaa !11
  %176 = fcmp oge double %174, %175
  br i1 %176, label %177, label %179

177:                                              ; preds = %164
  %178 = load double, ptr %17, align 8, !tbaa !11
  br label %181

179:                                              ; preds = %164
  %180 = load double, ptr %18, align 8, !tbaa !11
  br label %181

181:                                              ; preds = %179, %177
  %182 = phi double [ %178, %177 ], [ %180, %179 ]
  store double %182, ptr %32, align 8, !tbaa !11
  br label %183

183:                                              ; preds = %181
  %184 = load i64, ptr %20, align 8, !tbaa !9
  %185 = add nsw i64 %184, 1
  store i64 %185, ptr %20, align 8, !tbaa !9
  br label %160, !llvm.loop !17

186:                                              ; preds = %160
  %187 = load i64, ptr %21, align 8, !tbaa !9
  %188 = sub nsw i64 %187, 1
  store i64 %188, ptr %20, align 8, !tbaa !9
  %189 = load i64, ptr %20, align 8, !tbaa !9
  %190 = load i64, ptr %21, align 8, !tbaa !9
  %191 = load i64, ptr %27, align 8, !tbaa !9
  %192 = mul nsw i64 %190, %191
  %193 = add nsw i64 %189, %192
  store i64 %193, ptr %15, align 8, !tbaa !9
  %194 = load double, ptr %32, align 8, !tbaa !11
  store double %194, ptr %18, align 8, !tbaa !11
  %195 = load ptr, ptr %12, align 8, !tbaa !5
  %196 = load i64, ptr %15, align 8, !tbaa !9
  %197 = getelementptr inbounds %struct.doublecomplex, ptr %195, i64 %196
  %198 = getelementptr inbounds %struct.doublecomplex, ptr %197, i32 0, i32 0
  %199 = load double, ptr %198, align 8, !tbaa !13
  store double %199, ptr %17, align 8, !tbaa !11
  %200 = load double, ptr %17, align 8, !tbaa !11
  %201 = fcmp oge double %200, 0.000000e+00
  br i1 %201, label %202, label %204

202:                                              ; preds = %186
  %203 = load double, ptr %17, align 8, !tbaa !11
  br label %207

204:                                              ; preds = %186
  %205 = load double, ptr %17, align 8, !tbaa !11
  %206 = fneg double %205
  br label %207

207:                                              ; preds = %204, %202
  %208 = phi double [ %203, %202 ], [ %206, %204 ]
  store double %208, ptr %19, align 8, !tbaa !11
  %209 = load double, ptr %18, align 8, !tbaa !11
  %210 = load double, ptr %19, align 8, !tbaa !11
  %211 = fcmp oge double %209, %210
  br i1 %211, label %212, label %214

212:                                              ; preds = %207
  %213 = load double, ptr %18, align 8, !tbaa !11
  br label %216

214:                                              ; preds = %207
  %215 = load double, ptr %19, align 8, !tbaa !11
  br label %216

216:                                              ; preds = %214, %212
  %217 = phi double [ %213, %212 ], [ %215, %214 ]
  store double %217, ptr %32, align 8, !tbaa !11
  %218 = load i64, ptr %21, align 8, !tbaa !9
  store i64 %218, ptr %20, align 8, !tbaa !9
  %219 = load i64, ptr %20, align 8, !tbaa !9
  %220 = load i64, ptr %21, align 8, !tbaa !9
  %221 = load i64, ptr %27, align 8, !tbaa !9
  %222 = mul nsw i64 %220, %221
  %223 = add nsw i64 %219, %222
  store i64 %223, ptr %15, align 8, !tbaa !9
  %224 = load double, ptr %32, align 8, !tbaa !11
  store double %224, ptr %18, align 8, !tbaa !11
  %225 = load ptr, ptr %12, align 8, !tbaa !5
  %226 = load i64, ptr %15, align 8, !tbaa !9
  %227 = getelementptr inbounds %struct.doublecomplex, ptr %225, i64 %226
  %228 = getelementptr inbounds %struct.doublecomplex, ptr %227, i32 0, i32 0
  %229 = load double, ptr %228, align 8, !tbaa !13
  store double %229, ptr %17, align 8, !tbaa !11
  %230 = load double, ptr %17, align 8, !tbaa !11
  %231 = fcmp oge double %230, 0.000000e+00
  br i1 %231, label %232, label %234

232:                                              ; preds = %216
  %233 = load double, ptr %17, align 8, !tbaa !11
  br label %237

234:                                              ; preds = %216
  %235 = load double, ptr %17, align 8, !tbaa !11
  %236 = fneg double %235
  br label %237

237:                                              ; preds = %234, %232
  %238 = phi double [ %233, %232 ], [ %236, %234 ]
  store double %238, ptr %19, align 8, !tbaa !11
  %239 = load double, ptr %18, align 8, !tbaa !11
  %240 = load double, ptr %19, align 8, !tbaa !11
  %241 = fcmp oge double %239, %240
  br i1 %241, label %242, label %244

242:                                              ; preds = %237
  %243 = load double, ptr %18, align 8, !tbaa !11
  br label %246

244:                                              ; preds = %237
  %245 = load double, ptr %19, align 8, !tbaa !11
  br label %246

246:                                              ; preds = %244, %242
  %247 = phi double [ %243, %242 ], [ %245, %244 ]
  store double %247, ptr %32, align 8, !tbaa !11
  %248 = load ptr, ptr %11, align 8, !tbaa !5
  %249 = load i64, ptr %248, align 8, !tbaa !9
  %250 = sub nsw i64 %249, 1
  store i64 %250, ptr %15, align 8, !tbaa !9
  %251 = load i64, ptr %21, align 8, !tbaa !9
  %252 = add nsw i64 %251, 1
  store i64 %252, ptr %20, align 8, !tbaa !9
  br label %253

253:                                              ; preds = %276, %246
  %254 = load i64, ptr %20, align 8, !tbaa !9
  %255 = load i64, ptr %15, align 8, !tbaa !9
  %256 = icmp sle i64 %254, %255
  br i1 %256, label %257, label %279

257:                                              ; preds = %253
  %258 = load double, ptr %32, align 8, !tbaa !11
  store double %258, ptr %17, align 8, !tbaa !11
  %259 = load ptr, ptr %12, align 8, !tbaa !5
  %260 = load i64, ptr %20, align 8, !tbaa !9
  %261 = load i64, ptr %21, align 8, !tbaa !9
  %262 = load i64, ptr %27, align 8, !tbaa !9
  %263 = mul nsw i64 %261, %262
  %264 = add nsw i64 %260, %263
  %265 = getelementptr inbounds %struct.doublecomplex, ptr %259, i64 %264
  %266 = call double @z_abs(ptr noundef %265)
  store double %266, ptr %18, align 8, !tbaa !11
  %267 = load double, ptr %17, align 8, !tbaa !11
  %268 = load double, ptr %18, align 8, !tbaa !11
  %269 = fcmp oge double %267, %268
  br i1 %269, label %270, label %272

270:                                              ; preds = %257
  %271 = load double, ptr %17, align 8, !tbaa !11
  br label %274

272:                                              ; preds = %257
  %273 = load double, ptr %18, align 8, !tbaa !11
  br label %274

274:                                              ; preds = %272, %270
  %275 = phi double [ %271, %270 ], [ %273, %272 ]
  store double %275, ptr %32, align 8, !tbaa !11
  br label %276

276:                                              ; preds = %274
  %277 = load i64, ptr %20, align 8, !tbaa !9
  %278 = add nsw i64 %277, 1
  store i64 %278, ptr %20, align 8, !tbaa !9
  br label %253, !llvm.loop !18

279:                                              ; preds = %253
  br label %280

280:                                              ; preds = %279
  %281 = load i64, ptr %21, align 8, !tbaa !9
  %282 = add nsw i64 %281, 1
  store i64 %282, ptr %21, align 8, !tbaa !9
  br label %153, !llvm.loop !19

283:                                              ; preds = %153
  br label %484

284:                                              ; preds = %88
  %285 = load i64, ptr %22, align 8, !tbaa !9
  %286 = sub nsw i64 %285, 2
  store i64 %286, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %287

287:                                              ; preds = %421, %284
  %288 = load i64, ptr %21, align 8, !tbaa !9
  %289 = load i64, ptr %14, align 8, !tbaa !9
  %290 = icmp sle i64 %288, %289
  br i1 %290, label %291, label %424

291:                                              ; preds = %287
  %292 = load i64, ptr %22, align 8, !tbaa !9
  %293 = load i64, ptr %21, align 8, !tbaa !9
  %294 = add nsw i64 %292, %293
  %295 = sub nsw i64 %294, 2
  store i64 %295, ptr %15, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %296

296:                                              ; preds = %319, %291
  %297 = load i64, ptr %20, align 8, !tbaa !9
  %298 = load i64, ptr %15, align 8, !tbaa !9
  %299 = icmp sle i64 %297, %298
  br i1 %299, label %300, label %322

300:                                              ; preds = %296
  %301 = load double, ptr %32, align 8, !tbaa !11
  store double %301, ptr %17, align 8, !tbaa !11
  %302 = load ptr, ptr %12, align 8, !tbaa !5
  %303 = load i64, ptr %20, align 8, !tbaa !9
  %304 = load i64, ptr %21, align 8, !tbaa !9
  %305 = load i64, ptr %27, align 8, !tbaa !9
  %306 = mul nsw i64 %304, %305
  %307 = add nsw i64 %303, %306
  %308 = getelementptr inbounds %struct.doublecomplex, ptr %302, i64 %307
  %309 = call double @z_abs(ptr noundef %308)
  store double %309, ptr %18, align 8, !tbaa !11
  %310 = load double, ptr %17, align 8, !tbaa !11
  %311 = load double, ptr %18, align 8, !tbaa !11
  %312 = fcmp oge double %310, %311
  br i1 %312, label %313, label %315

313:                                              ; preds = %300
  %314 = load double, ptr %17, align 8, !tbaa !11
  br label %317

315:                                              ; preds = %300
  %316 = load double, ptr %18, align 8, !tbaa !11
  br label %317

317:                                              ; preds = %315, %313
  %318 = phi double [ %314, %313 ], [ %316, %315 ]
  store double %318, ptr %32, align 8, !tbaa !11
  br label %319

319:                                              ; preds = %317
  %320 = load i64, ptr %20, align 8, !tbaa !9
  %321 = add nsw i64 %320, 1
  store i64 %321, ptr %20, align 8, !tbaa !9
  br label %296, !llvm.loop !20

322:                                              ; preds = %296
  %323 = load i64, ptr %22, align 8, !tbaa !9
  %324 = load i64, ptr %21, align 8, !tbaa !9
  %325 = add nsw i64 %323, %324
  %326 = sub nsw i64 %325, 1
  store i64 %326, ptr %20, align 8, !tbaa !9
  %327 = load i64, ptr %20, align 8, !tbaa !9
  %328 = load i64, ptr %21, align 8, !tbaa !9
  %329 = load i64, ptr %27, align 8, !tbaa !9
  %330 = mul nsw i64 %328, %329
  %331 = add nsw i64 %327, %330
  store i64 %331, ptr %15, align 8, !tbaa !9
  %332 = load double, ptr %32, align 8, !tbaa !11
  store double %332, ptr %18, align 8, !tbaa !11
  %333 = load ptr, ptr %12, align 8, !tbaa !5
  %334 = load i64, ptr %15, align 8, !tbaa !9
  %335 = getelementptr inbounds %struct.doublecomplex, ptr %333, i64 %334
  %336 = getelementptr inbounds %struct.doublecomplex, ptr %335, i32 0, i32 0
  %337 = load double, ptr %336, align 8, !tbaa !13
  store double %337, ptr %17, align 8, !tbaa !11
  %338 = load double, ptr %17, align 8, !tbaa !11
  %339 = fcmp oge double %338, 0.000000e+00
  br i1 %339, label %340, label %342

340:                                              ; preds = %322
  %341 = load double, ptr %17, align 8, !tbaa !11
  br label %345

342:                                              ; preds = %322
  %343 = load double, ptr %17, align 8, !tbaa !11
  %344 = fneg double %343
  br label %345

345:                                              ; preds = %342, %340
  %346 = phi double [ %341, %340 ], [ %344, %342 ]
  store double %346, ptr %19, align 8, !tbaa !11
  %347 = load double, ptr %18, align 8, !tbaa !11
  %348 = load double, ptr %19, align 8, !tbaa !11
  %349 = fcmp oge double %347, %348
  br i1 %349, label %350, label %352

350:                                              ; preds = %345
  %351 = load double, ptr %18, align 8, !tbaa !11
  br label %354

352:                                              ; preds = %345
  %353 = load double, ptr %19, align 8, !tbaa !11
  br label %354

354:                                              ; preds = %352, %350
  %355 = phi double [ %351, %350 ], [ %353, %352 ]
  store double %355, ptr %32, align 8, !tbaa !11
  %356 = load i64, ptr %20, align 8, !tbaa !9
  %357 = add nsw i64 %356, 1
  store i64 %357, ptr %20, align 8, !tbaa !9
  %358 = load i64, ptr %20, align 8, !tbaa !9
  %359 = load i64, ptr %21, align 8, !tbaa !9
  %360 = load i64, ptr %27, align 8, !tbaa !9
  %361 = mul nsw i64 %359, %360
  %362 = add nsw i64 %358, %361
  store i64 %362, ptr %15, align 8, !tbaa !9
  %363 = load double, ptr %32, align 8, !tbaa !11
  store double %363, ptr %18, align 8, !tbaa !11
  %364 = load ptr, ptr %12, align 8, !tbaa !5
  %365 = load i64, ptr %15, align 8, !tbaa !9
  %366 = getelementptr inbounds %struct.doublecomplex, ptr %364, i64 %365
  %367 = getelementptr inbounds %struct.doublecomplex, ptr %366, i32 0, i32 0
  %368 = load double, ptr %367, align 8, !tbaa !13
  store double %368, ptr %17, align 8, !tbaa !11
  %369 = load double, ptr %17, align 8, !tbaa !11
  %370 = fcmp oge double %369, 0.000000e+00
  br i1 %370, label %371, label %373

371:                                              ; preds = %354
  %372 = load double, ptr %17, align 8, !tbaa !11
  br label %376

373:                                              ; preds = %354
  %374 = load double, ptr %17, align 8, !tbaa !11
  %375 = fneg double %374
  br label %376

376:                                              ; preds = %373, %371
  %377 = phi double [ %372, %371 ], [ %375, %373 ]
  store double %377, ptr %19, align 8, !tbaa !11
  %378 = load double, ptr %18, align 8, !tbaa !11
  %379 = load double, ptr %19, align 8, !tbaa !11
  %380 = fcmp oge double %378, %379
  br i1 %380, label %381, label %383

381:                                              ; preds = %376
  %382 = load double, ptr %18, align 8, !tbaa !11
  br label %385

383:                                              ; preds = %376
  %384 = load double, ptr %19, align 8, !tbaa !11
  br label %385

385:                                              ; preds = %383, %381
  %386 = phi double [ %382, %381 ], [ %384, %383 ]
  store double %386, ptr %32, align 8, !tbaa !11
  %387 = load ptr, ptr %11, align 8, !tbaa !5
  %388 = load i64, ptr %387, align 8, !tbaa !9
  %389 = sub nsw i64 %388, 1
  store i64 %389, ptr %15, align 8, !tbaa !9
  %390 = load i64, ptr %22, align 8, !tbaa !9
  %391 = load i64, ptr %21, align 8, !tbaa !9
  %392 = add nsw i64 %390, %391
  %393 = add nsw i64 %392, 1
  store i64 %393, ptr %20, align 8, !tbaa !9
  br label %394

394:                                              ; preds = %417, %385
  %395 = load i64, ptr %20, align 8, !tbaa !9
  %396 = load i64, ptr %15, align 8, !tbaa !9
  %397 = icmp sle i64 %395, %396
  br i1 %397, label %398, label %420

398:                                              ; preds = %394
  %399 = load double, ptr %32, align 8, !tbaa !11
  store double %399, ptr %17, align 8, !tbaa !11
  %400 = load ptr, ptr %12, align 8, !tbaa !5
  %401 = load i64, ptr %20, align 8, !tbaa !9
  %402 = load i64, ptr %21, align 8, !tbaa !9
  %403 = load i64, ptr %27, align 8, !tbaa !9
  %404 = mul nsw i64 %402, %403
  %405 = add nsw i64 %401, %404
  %406 = getelementptr inbounds %struct.doublecomplex, ptr %400, i64 %405
  %407 = call double @z_abs(ptr noundef %406)
  store double %407, ptr %18, align 8, !tbaa !11
  %408 = load double, ptr %17, align 8, !tbaa !11
  %409 = load double, ptr %18, align 8, !tbaa !11
  %410 = fcmp oge double %408, %409
  br i1 %410, label %411, label %413

411:                                              ; preds = %398
  %412 = load double, ptr %17, align 8, !tbaa !11
  br label %415

413:                                              ; preds = %398
  %414 = load double, ptr %18, align 8, !tbaa !11
  br label %415

415:                                              ; preds = %413, %411
  %416 = phi double [ %412, %411 ], [ %414, %413 ]
  store double %416, ptr %32, align 8, !tbaa !11
  br label %417

417:                                              ; preds = %415
  %418 = load i64, ptr %20, align 8, !tbaa !9
  %419 = add nsw i64 %418, 1
  store i64 %419, ptr %20, align 8, !tbaa !9
  br label %394, !llvm.loop !21

420:                                              ; preds = %394
  br label %421

421:                                              ; preds = %420
  %422 = load i64, ptr %21, align 8, !tbaa !9
  %423 = add nsw i64 %422, 1
  store i64 %423, ptr %21, align 8, !tbaa !9
  br label %287, !llvm.loop !22

424:                                              ; preds = %287
  %425 = load ptr, ptr %11, align 8, !tbaa !5
  %426 = load i64, ptr %425, align 8, !tbaa !9
  %427 = sub nsw i64 %426, 2
  store i64 %427, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %428

428:                                              ; preds = %451, %424
  %429 = load i64, ptr %20, align 8, !tbaa !9
  %430 = load i64, ptr %14, align 8, !tbaa !9
  %431 = icmp sle i64 %429, %430
  br i1 %431, label %432, label %454

432:                                              ; preds = %428
  %433 = load double, ptr %32, align 8, !tbaa !11
  store double %433, ptr %17, align 8, !tbaa !11
  %434 = load ptr, ptr %12, align 8, !tbaa !5
  %435 = load i64, ptr %20, align 8, !tbaa !9
  %436 = load i64, ptr %21, align 8, !tbaa !9
  %437 = load i64, ptr %27, align 8, !tbaa !9
  %438 = mul nsw i64 %436, %437
  %439 = add nsw i64 %435, %438
  %440 = getelementptr inbounds %struct.doublecomplex, ptr %434, i64 %439
  %441 = call double @z_abs(ptr noundef %440)
  store double %441, ptr %18, align 8, !tbaa !11
  %442 = load double, ptr %17, align 8, !tbaa !11
  %443 = load double, ptr %18, align 8, !tbaa !11
  %444 = fcmp oge double %442, %443
  br i1 %444, label %445, label %447

445:                                              ; preds = %432
  %446 = load double, ptr %17, align 8, !tbaa !11
  br label %449

447:                                              ; preds = %432
  %448 = load double, ptr %18, align 8, !tbaa !11
  br label %449

449:                                              ; preds = %447, %445
  %450 = phi double [ %446, %445 ], [ %448, %447 ]
  store double %450, ptr %32, align 8, !tbaa !11
  br label %451

451:                                              ; preds = %449
  %452 = load i64, ptr %20, align 8, !tbaa !9
  %453 = add nsw i64 %452, 1
  store i64 %453, ptr %20, align 8, !tbaa !9
  br label %428, !llvm.loop !23

454:                                              ; preds = %428
  %455 = load i64, ptr %20, align 8, !tbaa !9
  %456 = load i64, ptr %21, align 8, !tbaa !9
  %457 = load i64, ptr %27, align 8, !tbaa !9
  %458 = mul nsw i64 %456, %457
  %459 = add nsw i64 %455, %458
  store i64 %459, ptr %14, align 8, !tbaa !9
  %460 = load double, ptr %32, align 8, !tbaa !11
  store double %460, ptr %18, align 8, !tbaa !11
  %461 = load ptr, ptr %12, align 8, !tbaa !5
  %462 = load i64, ptr %14, align 8, !tbaa !9
  %463 = getelementptr inbounds %struct.doublecomplex, ptr %461, i64 %462
  %464 = getelementptr inbounds %struct.doublecomplex, ptr %463, i32 0, i32 0
  %465 = load double, ptr %464, align 8, !tbaa !13
  store double %465, ptr %17, align 8, !tbaa !11
  %466 = load double, ptr %17, align 8, !tbaa !11
  %467 = fcmp oge double %466, 0.000000e+00
  br i1 %467, label %468, label %470

468:                                              ; preds = %454
  %469 = load double, ptr %17, align 8, !tbaa !11
  br label %473

470:                                              ; preds = %454
  %471 = load double, ptr %17, align 8, !tbaa !11
  %472 = fneg double %471
  br label %473

473:                                              ; preds = %470, %468
  %474 = phi double [ %469, %468 ], [ %472, %470 ]
  store double %474, ptr %19, align 8, !tbaa !11
  %475 = load double, ptr %18, align 8, !tbaa !11
  %476 = load double, ptr %19, align 8, !tbaa !11
  %477 = fcmp oge double %475, %476
  br i1 %477, label %478, label %480

478:                                              ; preds = %473
  %479 = load double, ptr %18, align 8, !tbaa !11
  br label %482

480:                                              ; preds = %473
  %481 = load double, ptr %19, align 8, !tbaa !11
  br label %482

482:                                              ; preds = %480, %478
  %483 = phi double [ %479, %478 ], [ %481, %480 ]
  store double %483, ptr %32, align 8, !tbaa !11
  br label %484

484:                                              ; preds = %482, %283
  br label %967

485:                                              ; preds = %85
  %486 = load i64, ptr %30, align 8, !tbaa !9
  %487 = icmp eq i64 %486, 1
  br i1 %487, label %488, label %725

488:                                              ; preds = %485
  %489 = load i64, ptr %22, align 8, !tbaa !9
  %490 = sub nsw i64 %489, 2
  store i64 %490, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %491

491:                                              ; preds = %617, %488
  %492 = load i64, ptr %21, align 8, !tbaa !9
  %493 = load i64, ptr %14, align 8, !tbaa !9
  %494 = icmp sle i64 %492, %493
  br i1 %494, label %495, label %620

495:                                              ; preds = %491
  %496 = load i64, ptr %21, align 8, !tbaa !9
  %497 = sub nsw i64 %496, 1
  store i64 %497, ptr %15, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %498

498:                                              ; preds = %521, %495
  %499 = load i64, ptr %20, align 8, !tbaa !9
  %500 = load i64, ptr %15, align 8, !tbaa !9
  %501 = icmp sle i64 %499, %500
  br i1 %501, label %502, label %524

502:                                              ; preds = %498
  %503 = load double, ptr %32, align 8, !tbaa !11
  store double %503, ptr %17, align 8, !tbaa !11
  %504 = load ptr, ptr %12, align 8, !tbaa !5
  %505 = load i64, ptr %20, align 8, !tbaa !9
  %506 = load i64, ptr %21, align 8, !tbaa !9
  %507 = load i64, ptr %27, align 8, !tbaa !9
  %508 = mul nsw i64 %506, %507
  %509 = add nsw i64 %505, %508
  %510 = getelementptr inbounds %struct.doublecomplex, ptr %504, i64 %509
  %511 = call double @z_abs(ptr noundef %510)
  store double %511, ptr %18, align 8, !tbaa !11
  %512 = load double, ptr %17, align 8, !tbaa !11
  %513 = load double, ptr %18, align 8, !tbaa !11
  %514 = fcmp oge double %512, %513
  br i1 %514, label %515, label %517

515:                                              ; preds = %502
  %516 = load double, ptr %17, align 8, !tbaa !11
  br label %519

517:                                              ; preds = %502
  %518 = load double, ptr %18, align 8, !tbaa !11
  br label %519

519:                                              ; preds = %517, %515
  %520 = phi double [ %516, %515 ], [ %518, %517 ]
  store double %520, ptr %32, align 8, !tbaa !11
  br label %521

521:                                              ; preds = %519
  %522 = load i64, ptr %20, align 8, !tbaa !9
  %523 = add nsw i64 %522, 1
  store i64 %523, ptr %20, align 8, !tbaa !9
  br label %498, !llvm.loop !24

524:                                              ; preds = %498
  %525 = load i64, ptr %21, align 8, !tbaa !9
  store i64 %525, ptr %20, align 8, !tbaa !9
  %526 = load i64, ptr %20, align 8, !tbaa !9
  %527 = load i64, ptr %21, align 8, !tbaa !9
  %528 = load i64, ptr %27, align 8, !tbaa !9
  %529 = mul nsw i64 %527, %528
  %530 = add nsw i64 %526, %529
  store i64 %530, ptr %15, align 8, !tbaa !9
  %531 = load double, ptr %32, align 8, !tbaa !11
  store double %531, ptr %18, align 8, !tbaa !11
  %532 = load ptr, ptr %12, align 8, !tbaa !5
  %533 = load i64, ptr %15, align 8, !tbaa !9
  %534 = getelementptr inbounds %struct.doublecomplex, ptr %532, i64 %533
  %535 = getelementptr inbounds %struct.doublecomplex, ptr %534, i32 0, i32 0
  %536 = load double, ptr %535, align 8, !tbaa !13
  store double %536, ptr %17, align 8, !tbaa !11
  %537 = load double, ptr %17, align 8, !tbaa !11
  %538 = fcmp oge double %537, 0.000000e+00
  br i1 %538, label %539, label %541

539:                                              ; preds = %524
  %540 = load double, ptr %17, align 8, !tbaa !11
  br label %544

541:                                              ; preds = %524
  %542 = load double, ptr %17, align 8, !tbaa !11
  %543 = fneg double %542
  br label %544

544:                                              ; preds = %541, %539
  %545 = phi double [ %540, %539 ], [ %543, %541 ]
  store double %545, ptr %19, align 8, !tbaa !11
  %546 = load double, ptr %18, align 8, !tbaa !11
  %547 = load double, ptr %19, align 8, !tbaa !11
  %548 = fcmp oge double %546, %547
  br i1 %548, label %549, label %551

549:                                              ; preds = %544
  %550 = load double, ptr %18, align 8, !tbaa !11
  br label %553

551:                                              ; preds = %544
  %552 = load double, ptr %19, align 8, !tbaa !11
  br label %553

553:                                              ; preds = %551, %549
  %554 = phi double [ %550, %549 ], [ %552, %551 ]
  store double %554, ptr %32, align 8, !tbaa !11
  %555 = load i64, ptr %21, align 8, !tbaa !9
  %556 = add nsw i64 %555, 1
  store i64 %556, ptr %20, align 8, !tbaa !9
  %557 = load i64, ptr %20, align 8, !tbaa !9
  %558 = load i64, ptr %21, align 8, !tbaa !9
  %559 = load i64, ptr %27, align 8, !tbaa !9
  %560 = mul nsw i64 %558, %559
  %561 = add nsw i64 %557, %560
  store i64 %561, ptr %15, align 8, !tbaa !9
  %562 = load double, ptr %32, align 8, !tbaa !11
  store double %562, ptr %18, align 8, !tbaa !11
  %563 = load ptr, ptr %12, align 8, !tbaa !5
  %564 = load i64, ptr %15, align 8, !tbaa !9
  %565 = getelementptr inbounds %struct.doublecomplex, ptr %563, i64 %564
  %566 = getelementptr inbounds %struct.doublecomplex, ptr %565, i32 0, i32 0
  %567 = load double, ptr %566, align 8, !tbaa !13
  store double %567, ptr %17, align 8, !tbaa !11
  %568 = load double, ptr %17, align 8, !tbaa !11
  %569 = fcmp oge double %568, 0.000000e+00
  br i1 %569, label %570, label %572

570:                                              ; preds = %553
  %571 = load double, ptr %17, align 8, !tbaa !11
  br label %575

572:                                              ; preds = %553
  %573 = load double, ptr %17, align 8, !tbaa !11
  %574 = fneg double %573
  br label %575

575:                                              ; preds = %572, %570
  %576 = phi double [ %571, %570 ], [ %574, %572 ]
  store double %576, ptr %19, align 8, !tbaa !11
  %577 = load double, ptr %18, align 8, !tbaa !11
  %578 = load double, ptr %19, align 8, !tbaa !11
  %579 = fcmp oge double %577, %578
  br i1 %579, label %580, label %582

580:                                              ; preds = %575
  %581 = load double, ptr %18, align 8, !tbaa !11
  br label %584

582:                                              ; preds = %575
  %583 = load double, ptr %19, align 8, !tbaa !11
  br label %584

584:                                              ; preds = %582, %580
  %585 = phi double [ %581, %580 ], [ %583, %582 ]
  store double %585, ptr %32, align 8, !tbaa !11
  %586 = load i64, ptr %22, align 8, !tbaa !9
  %587 = sub nsw i64 %586, 1
  store i64 %587, ptr %15, align 8, !tbaa !9
  %588 = load i64, ptr %21, align 8, !tbaa !9
  %589 = add nsw i64 %588, 2
  store i64 %589, ptr %20, align 8, !tbaa !9
  br label %590

590:                                              ; preds = %613, %584
  %591 = load i64, ptr %20, align 8, !tbaa !9
  %592 = load i64, ptr %15, align 8, !tbaa !9
  %593 = icmp sle i64 %591, %592
  br i1 %593, label %594, label %616

594:                                              ; preds = %590
  %595 = load double, ptr %32, align 8, !tbaa !11
  store double %595, ptr %17, align 8, !tbaa !11
  %596 = load ptr, ptr %12, align 8, !tbaa !5
  %597 = load i64, ptr %20, align 8, !tbaa !9
  %598 = load i64, ptr %21, align 8, !tbaa !9
  %599 = load i64, ptr %27, align 8, !tbaa !9
  %600 = mul nsw i64 %598, %599
  %601 = add nsw i64 %597, %600
  %602 = getelementptr inbounds %struct.doublecomplex, ptr %596, i64 %601
  %603 = call double @z_abs(ptr noundef %602)
  store double %603, ptr %18, align 8, !tbaa !11
  %604 = load double, ptr %17, align 8, !tbaa !11
  %605 = load double, ptr %18, align 8, !tbaa !11
  %606 = fcmp oge double %604, %605
  br i1 %606, label %607, label %609

607:                                              ; preds = %594
  %608 = load double, ptr %17, align 8, !tbaa !11
  br label %611

609:                                              ; preds = %594
  %610 = load double, ptr %18, align 8, !tbaa !11
  br label %611

611:                                              ; preds = %609, %607
  %612 = phi double [ %608, %607 ], [ %610, %609 ]
  store double %612, ptr %32, align 8, !tbaa !11
  br label %613

613:                                              ; preds = %611
  %614 = load i64, ptr %20, align 8, !tbaa !9
  %615 = add nsw i64 %614, 1
  store i64 %615, ptr %20, align 8, !tbaa !9
  br label %590, !llvm.loop !25

616:                                              ; preds = %590
  br label %617

617:                                              ; preds = %616
  %618 = load i64, ptr %21, align 8, !tbaa !9
  %619 = add nsw i64 %618, 1
  store i64 %619, ptr %21, align 8, !tbaa !9
  br label %491, !llvm.loop !26

620:                                              ; preds = %491
  %621 = load i64, ptr %22, align 8, !tbaa !9
  %622 = sub nsw i64 %621, 1
  store i64 %622, ptr %21, align 8, !tbaa !9
  %623 = load i64, ptr %22, align 8, !tbaa !9
  %624 = sub nsw i64 %623, 2
  store i64 %624, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %625

625:                                              ; preds = %648, %620
  %626 = load i64, ptr %20, align 8, !tbaa !9
  %627 = load i64, ptr %14, align 8, !tbaa !9
  %628 = icmp sle i64 %626, %627
  br i1 %628, label %629, label %651

629:                                              ; preds = %625
  %630 = load double, ptr %32, align 8, !tbaa !11
  store double %630, ptr %17, align 8, !tbaa !11
  %631 = load ptr, ptr %12, align 8, !tbaa !5
  %632 = load i64, ptr %20, align 8, !tbaa !9
  %633 = load i64, ptr %21, align 8, !tbaa !9
  %634 = load i64, ptr %27, align 8, !tbaa !9
  %635 = mul nsw i64 %633, %634
  %636 = add nsw i64 %632, %635
  %637 = getelementptr inbounds %struct.doublecomplex, ptr %631, i64 %636
  %638 = call double @z_abs(ptr noundef %637)
  store double %638, ptr %18, align 8, !tbaa !11
  %639 = load double, ptr %17, align 8, !tbaa !11
  %640 = load double, ptr %18, align 8, !tbaa !11
  %641 = fcmp oge double %639, %640
  br i1 %641, label %642, label %644

642:                                              ; preds = %629
  %643 = load double, ptr %17, align 8, !tbaa !11
  br label %646

644:                                              ; preds = %629
  %645 = load double, ptr %18, align 8, !tbaa !11
  br label %646

646:                                              ; preds = %644, %642
  %647 = phi double [ %643, %642 ], [ %645, %644 ]
  store double %647, ptr %32, align 8, !tbaa !11
  br label %648

648:                                              ; preds = %646
  %649 = load i64, ptr %20, align 8, !tbaa !9
  %650 = add nsw i64 %649, 1
  store i64 %650, ptr %20, align 8, !tbaa !9
  br label %625, !llvm.loop !27

651:                                              ; preds = %625
  %652 = load i64, ptr %22, align 8, !tbaa !9
  %653 = sub nsw i64 %652, 1
  store i64 %653, ptr %20, align 8, !tbaa !9
  %654 = load i64, ptr %20, align 8, !tbaa !9
  %655 = load i64, ptr %21, align 8, !tbaa !9
  %656 = load i64, ptr %27, align 8, !tbaa !9
  %657 = mul nsw i64 %655, %656
  %658 = add nsw i64 %654, %657
  store i64 %658, ptr %14, align 8, !tbaa !9
  %659 = load double, ptr %32, align 8, !tbaa !11
  store double %659, ptr %18, align 8, !tbaa !11
  %660 = load ptr, ptr %12, align 8, !tbaa !5
  %661 = load i64, ptr %14, align 8, !tbaa !9
  %662 = getelementptr inbounds %struct.doublecomplex, ptr %660, i64 %661
  %663 = getelementptr inbounds %struct.doublecomplex, ptr %662, i32 0, i32 0
  %664 = load double, ptr %663, align 8, !tbaa !13
  store double %664, ptr %17, align 8, !tbaa !11
  %665 = load double, ptr %17, align 8, !tbaa !11
  %666 = fcmp oge double %665, 0.000000e+00
  br i1 %666, label %667, label %669

667:                                              ; preds = %651
  %668 = load double, ptr %17, align 8, !tbaa !11
  br label %672

669:                                              ; preds = %651
  %670 = load double, ptr %17, align 8, !tbaa !11
  %671 = fneg double %670
  br label %672

672:                                              ; preds = %669, %667
  %673 = phi double [ %668, %667 ], [ %671, %669 ]
  store double %673, ptr %19, align 8, !tbaa !11
  %674 = load double, ptr %18, align 8, !tbaa !11
  %675 = load double, ptr %19, align 8, !tbaa !11
  %676 = fcmp oge double %674, %675
  br i1 %676, label %677, label %679

677:                                              ; preds = %672
  %678 = load double, ptr %18, align 8, !tbaa !11
  br label %681

679:                                              ; preds = %672
  %680 = load double, ptr %19, align 8, !tbaa !11
  br label %681

681:                                              ; preds = %679, %677
  %682 = phi double [ %678, %677 ], [ %680, %679 ]
  store double %682, ptr %32, align 8, !tbaa !11
  %683 = load ptr, ptr %11, align 8, !tbaa !5
  %684 = load i64, ptr %683, align 8, !tbaa !9
  %685 = sub nsw i64 %684, 1
  store i64 %685, ptr %14, align 8, !tbaa !9
  %686 = load i64, ptr %22, align 8, !tbaa !9
  store i64 %686, ptr %21, align 8, !tbaa !9
  br label %687

687:                                              ; preds = %721, %681
  %688 = load i64, ptr %21, align 8, !tbaa !9
  %689 = load i64, ptr %14, align 8, !tbaa !9
  %690 = icmp sle i64 %688, %689
  br i1 %690, label %691, label %724

691:                                              ; preds = %687
  %692 = load i64, ptr %22, align 8, !tbaa !9
  %693 = sub nsw i64 %692, 1
  store i64 %693, ptr %15, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %694

694:                                              ; preds = %717, %691
  %695 = load i64, ptr %20, align 8, !tbaa !9
  %696 = load i64, ptr %15, align 8, !tbaa !9
  %697 = icmp sle i64 %695, %696
  br i1 %697, label %698, label %720

698:                                              ; preds = %694
  %699 = load double, ptr %32, align 8, !tbaa !11
  store double %699, ptr %17, align 8, !tbaa !11
  %700 = load ptr, ptr %12, align 8, !tbaa !5
  %701 = load i64, ptr %20, align 8, !tbaa !9
  %702 = load i64, ptr %21, align 8, !tbaa !9
  %703 = load i64, ptr %27, align 8, !tbaa !9
  %704 = mul nsw i64 %702, %703
  %705 = add nsw i64 %701, %704
  %706 = getelementptr inbounds %struct.doublecomplex, ptr %700, i64 %705
  %707 = call double @z_abs(ptr noundef %706)
  store double %707, ptr %18, align 8, !tbaa !11
  %708 = load double, ptr %17, align 8, !tbaa !11
  %709 = load double, ptr %18, align 8, !tbaa !11
  %710 = fcmp oge double %708, %709
  br i1 %710, label %711, label %713

711:                                              ; preds = %698
  %712 = load double, ptr %17, align 8, !tbaa !11
  br label %715

713:                                              ; preds = %698
  %714 = load double, ptr %18, align 8, !tbaa !11
  br label %715

715:                                              ; preds = %713, %711
  %716 = phi double [ %712, %711 ], [ %714, %713 ]
  store double %716, ptr %32, align 8, !tbaa !11
  br label %717

717:                                              ; preds = %715
  %718 = load i64, ptr %20, align 8, !tbaa !9
  %719 = add nsw i64 %718, 1
  store i64 %719, ptr %20, align 8, !tbaa !9
  br label %694, !llvm.loop !28

720:                                              ; preds = %694
  br label %721

721:                                              ; preds = %720
  %722 = load i64, ptr %21, align 8, !tbaa !9
  %723 = add nsw i64 %722, 1
  store i64 %723, ptr %21, align 8, !tbaa !9
  br label %687, !llvm.loop !29

724:                                              ; preds = %687
  br label %966

725:                                              ; preds = %485
  %726 = load i64, ptr %22, align 8, !tbaa !9
  %727 = sub nsw i64 %726, 2
  store i64 %727, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %728

728:                                              ; preds = %762, %725
  %729 = load i64, ptr %21, align 8, !tbaa !9
  %730 = load i64, ptr %14, align 8, !tbaa !9
  %731 = icmp sle i64 %729, %730
  br i1 %731, label %732, label %765

732:                                              ; preds = %728
  %733 = load i64, ptr %22, align 8, !tbaa !9
  %734 = sub nsw i64 %733, 1
  store i64 %734, ptr %15, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %735

735:                                              ; preds = %758, %732
  %736 = load i64, ptr %20, align 8, !tbaa !9
  %737 = load i64, ptr %15, align 8, !tbaa !9
  %738 = icmp sle i64 %736, %737
  br i1 %738, label %739, label %761

739:                                              ; preds = %735
  %740 = load double, ptr %32, align 8, !tbaa !11
  store double %740, ptr %17, align 8, !tbaa !11
  %741 = load ptr, ptr %12, align 8, !tbaa !5
  %742 = load i64, ptr %20, align 8, !tbaa !9
  %743 = load i64, ptr %21, align 8, !tbaa !9
  %744 = load i64, ptr %27, align 8, !tbaa !9
  %745 = mul nsw i64 %743, %744
  %746 = add nsw i64 %742, %745
  %747 = getelementptr inbounds %struct.doublecomplex, ptr %741, i64 %746
  %748 = call double @z_abs(ptr noundef %747)
  store double %748, ptr %18, align 8, !tbaa !11
  %749 = load double, ptr %17, align 8, !tbaa !11
  %750 = load double, ptr %18, align 8, !tbaa !11
  %751 = fcmp oge double %749, %750
  br i1 %751, label %752, label %754

752:                                              ; preds = %739
  %753 = load double, ptr %17, align 8, !tbaa !11
  br label %756

754:                                              ; preds = %739
  %755 = load double, ptr %18, align 8, !tbaa !11
  br label %756

756:                                              ; preds = %754, %752
  %757 = phi double [ %753, %752 ], [ %755, %754 ]
  store double %757, ptr %32, align 8, !tbaa !11
  br label %758

758:                                              ; preds = %756
  %759 = load i64, ptr %20, align 8, !tbaa !9
  %760 = add nsw i64 %759, 1
  store i64 %760, ptr %20, align 8, !tbaa !9
  br label %735, !llvm.loop !30

761:                                              ; preds = %735
  br label %762

762:                                              ; preds = %761
  %763 = load i64, ptr %21, align 8, !tbaa !9
  %764 = add nsw i64 %763, 1
  store i64 %764, ptr %21, align 8, !tbaa !9
  br label %728, !llvm.loop !31

765:                                              ; preds = %728
  %766 = load i64, ptr %22, align 8, !tbaa !9
  %767 = sub nsw i64 %766, 1
  store i64 %767, ptr %21, align 8, !tbaa !9
  %768 = load i64, ptr %21, align 8, !tbaa !9
  %769 = load i64, ptr %27, align 8, !tbaa !9
  %770 = mul nsw i64 %768, %769
  store i64 %770, ptr %14, align 8, !tbaa !9
  %771 = load double, ptr %32, align 8, !tbaa !11
  store double %771, ptr %18, align 8, !tbaa !11
  %772 = load ptr, ptr %12, align 8, !tbaa !5
  %773 = load i64, ptr %14, align 8, !tbaa !9
  %774 = getelementptr inbounds %struct.doublecomplex, ptr %772, i64 %773
  %775 = getelementptr inbounds %struct.doublecomplex, ptr %774, i32 0, i32 0
  %776 = load double, ptr %775, align 8, !tbaa !13
  store double %776, ptr %17, align 8, !tbaa !11
  %777 = load double, ptr %17, align 8, !tbaa !11
  %778 = fcmp oge double %777, 0.000000e+00
  br i1 %778, label %779, label %781

779:                                              ; preds = %765
  %780 = load double, ptr %17, align 8, !tbaa !11
  br label %784

781:                                              ; preds = %765
  %782 = load double, ptr %17, align 8, !tbaa !11
  %783 = fneg double %782
  br label %784

784:                                              ; preds = %781, %779
  %785 = phi double [ %780, %779 ], [ %783, %781 ]
  store double %785, ptr %19, align 8, !tbaa !11
  %786 = load double, ptr %18, align 8, !tbaa !11
  %787 = load double, ptr %19, align 8, !tbaa !11
  %788 = fcmp oge double %786, %787
  br i1 %788, label %789, label %791

789:                                              ; preds = %784
  %790 = load double, ptr %18, align 8, !tbaa !11
  br label %793

791:                                              ; preds = %784
  %792 = load double, ptr %19, align 8, !tbaa !11
  br label %793

793:                                              ; preds = %791, %789
  %794 = phi double [ %790, %789 ], [ %792, %791 ]
  store double %794, ptr %32, align 8, !tbaa !11
  %795 = load i64, ptr %22, align 8, !tbaa !9
  %796 = sub nsw i64 %795, 1
  store i64 %796, ptr %14, align 8, !tbaa !9
  store i64 1, ptr %20, align 8, !tbaa !9
  br label %797

797:                                              ; preds = %820, %793
  %798 = load i64, ptr %20, align 8, !tbaa !9
  %799 = load i64, ptr %14, align 8, !tbaa !9
  %800 = icmp sle i64 %798, %799
  br i1 %800, label %801, label %823

801:                                              ; preds = %797
  %802 = load double, ptr %32, align 8, !tbaa !11
  store double %802, ptr %17, align 8, !tbaa !11
  %803 = load ptr, ptr %12, align 8, !tbaa !5
  %804 = load i64, ptr %20, align 8, !tbaa !9
  %805 = load i64, ptr %21, align 8, !tbaa !9
  %806 = load i64, ptr %27, align 8, !tbaa !9
  %807 = mul nsw i64 %805, %806
  %808 = add nsw i64 %804, %807
  %809 = getelementptr inbounds %struct.doublecomplex, ptr %803, i64 %808
  %810 = call double @z_abs(ptr noundef %809)
  store double %810, ptr %18, align 8, !tbaa !11
  %811 = load double, ptr %17, align 8, !tbaa !11
  %812 = load double, ptr %18, align 8, !tbaa !11
  %813 = fcmp oge double %811, %812
  br i1 %813, label %814, label %816

814:                                              ; preds = %801
  %815 = load double, ptr %17, align 8, !tbaa !11
  br label %818

816:                                              ; preds = %801
  %817 = load double, ptr %18, align 8, !tbaa !11
  br label %818

818:                                              ; preds = %816, %814
  %819 = phi double [ %815, %814 ], [ %817, %816 ]
  store double %819, ptr %32, align 8, !tbaa !11
  br label %820

820:                                              ; preds = %818
  %821 = load i64, ptr %20, align 8, !tbaa !9
  %822 = add nsw i64 %821, 1
  store i64 %822, ptr %20, align 8, !tbaa !9
  br label %797, !llvm.loop !32

823:                                              ; preds = %797
  %824 = load ptr, ptr %11, align 8, !tbaa !5
  %825 = load i64, ptr %824, align 8, !tbaa !9
  %826 = sub nsw i64 %825, 1
  store i64 %826, ptr %14, align 8, !tbaa !9
  %827 = load i64, ptr %22, align 8, !tbaa !9
  store i64 %827, ptr %21, align 8, !tbaa !9
  br label %828

828:                                              ; preds = %962, %823
  %829 = load i64, ptr %21, align 8, !tbaa !9
  %830 = load i64, ptr %14, align 8, !tbaa !9
  %831 = icmp sle i64 %829, %830
  br i1 %831, label %832, label %965

832:                                              ; preds = %828
  %833 = load i64, ptr %21, align 8, !tbaa !9
  %834 = load i64, ptr %22, align 8, !tbaa !9
  %835 = sub nsw i64 %833, %834
  %836 = sub nsw i64 %835, 1
  store i64 %836, ptr %15, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %837

837:                                              ; preds = %860, %832
  %838 = load i64, ptr %20, align 8, !tbaa !9
  %839 = load i64, ptr %15, align 8, !tbaa !9
  %840 = icmp sle i64 %838, %839
  br i1 %840, label %841, label %863

841:                                              ; preds = %837
  %842 = load double, ptr %32, align 8, !tbaa !11
  store double %842, ptr %17, align 8, !tbaa !11
  %843 = load ptr, ptr %12, align 8, !tbaa !5
  %844 = load i64, ptr %20, align 8, !tbaa !9
  %845 = load i64, ptr %21, align 8, !tbaa !9
  %846 = load i64, ptr %27, align 8, !tbaa !9
  %847 = mul nsw i64 %845, %846
  %848 = add nsw i64 %844, %847
  %849 = getelementptr inbounds %struct.doublecomplex, ptr %843, i64 %848
  %850 = call double @z_abs(ptr noundef %849)
  store double %850, ptr %18, align 8, !tbaa !11
  %851 = load double, ptr %17, align 8, !tbaa !11
  %852 = load double, ptr %18, align 8, !tbaa !11
  %853 = fcmp oge double %851, %852
  br i1 %853, label %854, label %856

854:                                              ; preds = %841
  %855 = load double, ptr %17, align 8, !tbaa !11
  br label %858

856:                                              ; preds = %841
  %857 = load double, ptr %18, align 8, !tbaa !11
  br label %858

858:                                              ; preds = %856, %854
  %859 = phi double [ %855, %854 ], [ %857, %856 ]
  store double %859, ptr %32, align 8, !tbaa !11
  br label %860

860:                                              ; preds = %858
  %861 = load i64, ptr %20, align 8, !tbaa !9
  %862 = add nsw i64 %861, 1
  store i64 %862, ptr %20, align 8, !tbaa !9
  br label %837, !llvm.loop !33

863:                                              ; preds = %837
  %864 = load i64, ptr %21, align 8, !tbaa !9
  %865 = load i64, ptr %22, align 8, !tbaa !9
  %866 = sub nsw i64 %864, %865
  store i64 %866, ptr %20, align 8, !tbaa !9
  %867 = load i64, ptr %20, align 8, !tbaa !9
  %868 = load i64, ptr %21, align 8, !tbaa !9
  %869 = load i64, ptr %27, align 8, !tbaa !9
  %870 = mul nsw i64 %868, %869
  %871 = add nsw i64 %867, %870
  store i64 %871, ptr %15, align 8, !tbaa !9
  %872 = load double, ptr %32, align 8, !tbaa !11
  store double %872, ptr %18, align 8, !tbaa !11
  %873 = load ptr, ptr %12, align 8, !tbaa !5
  %874 = load i64, ptr %15, align 8, !tbaa !9
  %875 = getelementptr inbounds %struct.doublecomplex, ptr %873, i64 %874
  %876 = getelementptr inbounds %struct.doublecomplex, ptr %875, i32 0, i32 0
  %877 = load double, ptr %876, align 8, !tbaa !13
  store double %877, ptr %17, align 8, !tbaa !11
  %878 = load double, ptr %17, align 8, !tbaa !11
  %879 = fcmp oge double %878, 0.000000e+00
  br i1 %879, label %880, label %882

880:                                              ; preds = %863
  %881 = load double, ptr %17, align 8, !tbaa !11
  br label %885

882:                                              ; preds = %863
  %883 = load double, ptr %17, align 8, !tbaa !11
  %884 = fneg double %883
  br label %885

885:                                              ; preds = %882, %880
  %886 = phi double [ %881, %880 ], [ %884, %882 ]
  store double %886, ptr %19, align 8, !tbaa !11
  %887 = load double, ptr %18, align 8, !tbaa !11
  %888 = load double, ptr %19, align 8, !tbaa !11
  %889 = fcmp oge double %887, %888
  br i1 %889, label %890, label %892

890:                                              ; preds = %885
  %891 = load double, ptr %18, align 8, !tbaa !11
  br label %894

892:                                              ; preds = %885
  %893 = load double, ptr %19, align 8, !tbaa !11
  br label %894

894:                                              ; preds = %892, %890
  %895 = phi double [ %891, %890 ], [ %893, %892 ]
  store double %895, ptr %32, align 8, !tbaa !11
  %896 = load i64, ptr %21, align 8, !tbaa !9
  %897 = load i64, ptr %22, align 8, !tbaa !9
  %898 = sub nsw i64 %896, %897
  %899 = add nsw i64 %898, 1
  store i64 %899, ptr %20, align 8, !tbaa !9
  %900 = load i64, ptr %20, align 8, !tbaa !9
  %901 = load i64, ptr %21, align 8, !tbaa !9
  %902 = load i64, ptr %27, align 8, !tbaa !9
  %903 = mul nsw i64 %901, %902
  %904 = add nsw i64 %900, %903
  store i64 %904, ptr %15, align 8, !tbaa !9
  %905 = load double, ptr %32, align 8, !tbaa !11
  store double %905, ptr %18, align 8, !tbaa !11
  %906 = load ptr, ptr %12, align 8, !tbaa !5
  %907 = load i64, ptr %15, align 8, !tbaa !9
  %908 = getelementptr inbounds %struct.doublecomplex, ptr %906, i64 %907
  %909 = getelementptr inbounds %struct.doublecomplex, ptr %908, i32 0, i32 0
  %910 = load double, ptr %909, align 8, !tbaa !13
  store double %910, ptr %17, align 8, !tbaa !11
  %911 = load double, ptr %17, align 8, !tbaa !11
  %912 = fcmp oge double %911, 0.000000e+00
  br i1 %912, label %913, label %915

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

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

918:                                              ; preds = %915, %913
  %919 = phi double [ %914, %913 ], [ %917, %915 ]
  store double %919, ptr %19, align 8, !tbaa !11
  %920 = load double, ptr %18, align 8, !tbaa !11
  %921 = load double, ptr %19, align 8, !tbaa !11
  %922 = fcmp oge double %920, %921
  br i1 %922, label %923, label %925

923:                                              ; preds = %918
  %924 = load double, ptr %18, align 8, !tbaa !11
  br label %927

925:                                              ; preds = %918
  %926 = load double, ptr %19, align 8, !tbaa !11
  br label %927

927:                                              ; preds = %925, %923
  %928 = phi double [ %924, %923 ], [ %926, %925 ]
  store double %928, ptr %32, align 8, !tbaa !11
  %929 = load i64, ptr %22, align 8, !tbaa !9
  %930 = sub nsw i64 %929, 1
  store i64 %930, ptr %15, align 8, !tbaa !9
  %931 = load i64, ptr %21, align 8, !tbaa !9
  %932 = load i64, ptr %22, align 8, !tbaa !9
  %933 = sub nsw i64 %931, %932
  %934 = add nsw i64 %933, 2
  store i64 %934, ptr %20, align 8, !tbaa !9
  br label %935

935:                                              ; preds = %958, %927
  %936 = load i64, ptr %20, align 8, !tbaa !9
  %937 = load i64, ptr %15, align 8, !tbaa !9
  %938 = icmp sle i64 %936, %937
  br i1 %938, label %939, label %961

939:                                              ; preds = %935
  %940 = load double, ptr %32, align 8, !tbaa !11
  store double %940, ptr %17, align 8, !tbaa !11
  %941 = load ptr, ptr %12, align 8, !tbaa !5
  %942 = load i64, ptr %20, align 8, !tbaa !9
  %943 = load i64, ptr %21, align 8, !tbaa !9
  %944 = load i64, ptr %27, align 8, !tbaa !9
  %945 = mul nsw i64 %943, %944
  %946 = add nsw i64 %942, %945
  %947 = getelementptr inbounds %struct.doublecomplex, ptr %941, i64 %946
  %948 = call double @z_abs(ptr noundef %947)
  store double %948, ptr %18, align 8, !tbaa !11
  %949 = load double, ptr %17, align 8, !tbaa !11
  %950 = load double, ptr %18, align 8, !tbaa !11
  %951 = fcmp oge double %949, %950
  br i1 %951, label %952, label %954

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

954:                                              ; preds = %939
  %955 = load double, ptr %18, align 8, !tbaa !11
  br label %956

956:                                              ; preds = %954, %952
  %957 = phi double [ %953, %952 ], [ %955, %954 ]
  store double %957, ptr %32, align 8, !tbaa !11
  br label %958

958:                                              ; preds = %956
  %959 = load i64, ptr %20, align 8, !tbaa !9
  %960 = add nsw i64 %959, 1
  store i64 %960, ptr %20, align 8, !tbaa !9
  br label %935, !llvm.loop !34

961:                                              ; preds = %935
  br label %962

962:                                              ; preds = %961
  %963 = load i64, ptr %21, align 8, !tbaa !9
  %964 = add nsw i64 %963, 1
  store i64 %964, ptr %21, align 8, !tbaa !9
  br label %828, !llvm.loop !35

965:                                              ; preds = %828
  br label %966

966:                                              ; preds = %965, %724
  br label %967

967:                                              ; preds = %966, %484
  br label %2027

968:                                              ; preds = %78
  %969 = load i64, ptr %28, align 8, !tbaa !9
  %970 = icmp eq i64 %969, 1
  br i1 %970, label %971, label %1425

971:                                              ; preds = %968
  %972 = load i64, ptr %30, align 8, !tbaa !9
  %973 = icmp eq i64 %972, 1
  br i1 %973, label %974, label %1195

974:                                              ; preds = %971
  store i64 0, ptr %21, align 8, !tbaa !9
  %975 = load i64, ptr %21, align 8, !tbaa !9
  %976 = load i64, ptr %21, align 8, !tbaa !9
  %977 = load i64, ptr %27, align 8, !tbaa !9
  %978 = mul nsw i64 %976, %977
  %979 = add nsw i64 %975, %978
  store i64 %979, ptr %14, align 8, !tbaa !9
  %980 = load double, ptr %32, align 8, !tbaa !11
  store double %980, ptr %18, align 8, !tbaa !11
  %981 = load ptr, ptr %12, align 8, !tbaa !5
  %982 = load i64, ptr %14, align 8, !tbaa !9
  %983 = getelementptr inbounds %struct.doublecomplex, ptr %981, i64 %982
  %984 = getelementptr inbounds %struct.doublecomplex, ptr %983, i32 0, i32 0
  %985 = load double, ptr %984, align 8, !tbaa !13
  store double %985, ptr %17, align 8, !tbaa !11
  %986 = load double, ptr %17, align 8, !tbaa !11
  %987 = fcmp oge double %986, 0.000000e+00
  br i1 %987, label %988, label %990

988:                                              ; preds = %974
  %989 = load double, ptr %17, align 8, !tbaa !11
  br label %993

990:                                              ; preds = %974
  %991 = load double, ptr %17, align 8, !tbaa !11
  %992 = fneg double %991
  br label %993

993:                                              ; preds = %990, %988
  %994 = phi double [ %989, %988 ], [ %992, %990 ]
  store double %994, ptr %19, align 8, !tbaa !11
  %995 = load double, ptr %18, align 8, !tbaa !11
  %996 = load double, ptr %19, align 8, !tbaa !11
  %997 = fcmp oge double %995, %996
  br i1 %997, label %998, label %1000

998:                                              ; preds = %993
  %999 = load double, ptr %18, align 8, !tbaa !11
  br label %1002

1000:                                             ; preds = %993
  %1001 = load double, ptr %19, align 8, !tbaa !11
  br label %1002

1002:                                             ; preds = %1000, %998
  %1003 = phi double [ %999, %998 ], [ %1001, %1000 ]
  store double %1003, ptr %32, align 8, !tbaa !11
  %1004 = load i64, ptr %21, align 8, !tbaa !9
  %1005 = add nsw i64 %1004, 1
  %1006 = load i64, ptr %21, align 8, !tbaa !9
  %1007 = load i64, ptr %27, align 8, !tbaa !9
  %1008 = mul nsw i64 %1006, %1007
  %1009 = add nsw i64 %1005, %1008
  store i64 %1009, ptr %14, align 8, !tbaa !9
  %1010 = load double, ptr %32, align 8, !tbaa !11
  store double %1010, ptr %18, align 8, !tbaa !11
  %1011 = load ptr, ptr %12, align 8, !tbaa !5
  %1012 = load i64, ptr %14, align 8, !tbaa !9
  %1013 = getelementptr inbounds %struct.doublecomplex, ptr %1011, i64 %1012
  %1014 = getelementptr inbounds %struct.doublecomplex, ptr %1013, i32 0, i32 0
  %1015 = load double, ptr %1014, align 8, !tbaa !13
  store double %1015, ptr %17, align 8, !tbaa !11
  %1016 = load double, ptr %17, align 8, !tbaa !11
  %1017 = fcmp oge double %1016, 0.000000e+00
  br i1 %1017, label %1018, label %1020

1018:                                             ; preds = %1002
  %1019 = load double, ptr %17, align 8, !tbaa !11
  br label %1023

1020:                                             ; preds = %1002
  %1021 = load double, ptr %17, align 8, !tbaa !11
  %1022 = fneg double %1021
  br label %1023

1023:                                             ; preds = %1020, %1018
  %1024 = phi double [ %1019, %1018 ], [ %1022, %1020 ]
  store double %1024, ptr %19, align 8, !tbaa !11
  %1025 = load double, ptr %18, align 8, !tbaa !11
  %1026 = load double, ptr %19, align 8, !tbaa !11
  %1027 = fcmp oge double %1025, %1026
  br i1 %1027, label %1028, label %1030

1028:                                             ; preds = %1023
  %1029 = load double, ptr %18, align 8, !tbaa !11
  br label %1032

1030:                                             ; preds = %1023
  %1031 = load double, ptr %19, align 8, !tbaa !11
  br label %1032

1032:                                             ; preds = %1030, %1028
  %1033 = phi double [ %1029, %1028 ], [ %1031, %1030 ]
  store double %1033, ptr %32, align 8, !tbaa !11
  %1034 = load ptr, ptr %11, align 8, !tbaa !5
  %1035 = load i64, ptr %1034, align 8, !tbaa !9
  store i64 %1035, ptr %14, align 8, !tbaa !9
  store i64 2, ptr %20, align 8, !tbaa !9
  br label %1036

1036:                                             ; preds = %1059, %1032
  %1037 = load i64, ptr %20, align 8, !tbaa !9
  %1038 = load i64, ptr %14, align 8, !tbaa !9
  %1039 = icmp sle i64 %1037, %1038
  br i1 %1039, label %1040, label %1062

1040:                                             ; preds = %1036
  %1041 = load double, ptr %32, align 8, !tbaa !11
  store double %1041, ptr %17, align 8, !tbaa !11
  %1042 = load ptr, ptr %12, align 8, !tbaa !5
  %1043 = load i64, ptr %20, align 8, !tbaa !9
  %1044 = load i64, ptr %21, align 8, !tbaa !9
  %1045 = load i64, ptr %27, align 8, !tbaa !9
  %1046 = mul nsw i64 %1044, %1045
  %1047 = add nsw i64 %1043, %1046
  %1048 = getelementptr inbounds %struct.doublecomplex, ptr %1042, i64 %1047
  %1049 = call double @z_abs(ptr noundef %1048)
  store double %1049, ptr %18, align 8, !tbaa !11
  %1050 = load double, ptr %17, align 8, !tbaa !11
  %1051 = load double, ptr %18, align 8, !tbaa !11
  %1052 = fcmp oge double %1050, %1051
  br i1 %1052, label %1053, label %1055

1053:                                             ; preds = %1040
  %1054 = load double, ptr %17, align 8, !tbaa !11
  br label %1057

1055:                                             ; preds = %1040
  %1056 = load double, ptr %18, align 8, !tbaa !11
  br label %1057

1057:                                             ; preds = %1055, %1053
  %1058 = phi double [ %1054, %1053 ], [ %1056, %1055 ]
  store double %1058, ptr %32, align 8, !tbaa !11
  br label %1059

1059:                                             ; preds = %1057
  %1060 = load i64, ptr %20, align 8, !tbaa !9
  %1061 = add nsw i64 %1060, 1
  store i64 %1061, ptr %20, align 8, !tbaa !9
  br label %1036, !llvm.loop !36

1062:                                             ; preds = %1036
  %1063 = load i64, ptr %22, align 8, !tbaa !9
  %1064 = sub nsw i64 %1063, 1
  store i64 %1064, ptr %14, align 8, !tbaa !9
  store i64 1, ptr %21, align 8, !tbaa !9
  br label %1065

1065:                                             ; preds = %1191, %1062
  %1066 = load i64, ptr %21, align 8, !tbaa !9
  %1067 = load i64, ptr %14, align 8, !tbaa !9
  %1068 = icmp sle i64 %1066, %1067
  br i1 %1068, label %1069, label %1194

1069:                                             ; preds = %1065
  %1070 = load i64, ptr %21, align 8, !tbaa !9
  %1071 = sub nsw i64 %1070, 1
  store i64 %1071, ptr %15, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %1072

1072:                                             ; preds = %1095, %1069
  %1073 = load i64, ptr %20, align 8, !tbaa !9
  %1074 = load i64, ptr %15, align 8, !tbaa !9
  %1075 = icmp sle i64 %1073, %1074
  br i1 %1075, label %1076, label %1098

1076:                                             ; preds = %1072
  %1077 = load double, ptr %32, align 8, !tbaa !11
  store double %1077, ptr %17, align 8, !tbaa !11
  %1078 = load ptr, ptr %12, align 8, !tbaa !5
  %1079 = load i64, ptr %20, align 8, !tbaa !9
  %1080 = load i64, ptr %21, align 8, !tbaa !9
  %1081 = load i64, ptr %27, align 8, !tbaa !9
  %1082 = mul nsw i64 %1080, %1081
  %1083 = add nsw i64 %1079, %1082
  %1084 = getelementptr inbounds %struct.doublecomplex, ptr %1078, i64 %1083
  %1085 = call double @z_abs(ptr noundef %1084)
  store double %1085, ptr %18, align 8, !tbaa !11
  %1086 = load double, ptr %17, align 8, !tbaa !11
  %1087 = load double, ptr %18, align 8, !tbaa !11
  %1088 = fcmp oge double %1086, %1087
  br i1 %1088, label %1089, label %1091

1089:                                             ; preds = %1076
  %1090 = load double, ptr %17, align 8, !tbaa !11
  br label %1093

1091:                                             ; preds = %1076
  %1092 = load double, ptr %18, align 8, !tbaa !11
  br label %1093

1093:                                             ; preds = %1091, %1089
  %1094 = phi double [ %1090, %1089 ], [ %1092, %1091 ]
  store double %1094, ptr %32, align 8, !tbaa !11
  br label %1095

1095:                                             ; preds = %1093
  %1096 = load i64, ptr %20, align 8, !tbaa !9
  %1097 = add nsw i64 %1096, 1
  store i64 %1097, ptr %20, align 8, !tbaa !9
  br label %1072, !llvm.loop !37

1098:                                             ; preds = %1072
  %1099 = load i64, ptr %21, align 8, !tbaa !9
  store i64 %1099, ptr %20, align 8, !tbaa !9
  %1100 = load i64, ptr %20, align 8, !tbaa !9
  %1101 = load i64, ptr %21, align 8, !tbaa !9
  %1102 = load i64, ptr %27, align 8, !tbaa !9
  %1103 = mul nsw i64 %1101, %1102
  %1104 = add nsw i64 %1100, %1103
  store i64 %1104, ptr %15, align 8, !tbaa !9
  %1105 = load double, ptr %32, align 8, !tbaa !11
  store double %1105, ptr %18, align 8, !tbaa !11
  %1106 = load ptr, ptr %12, align 8, !tbaa !5
  %1107 = load i64, ptr %15, align 8, !tbaa !9
  %1108 = getelementptr inbounds %struct.doublecomplex, ptr %1106, i64 %1107
  %1109 = getelementptr inbounds %struct.doublecomplex, ptr %1108, i32 0, i32 0
  %1110 = load double, ptr %1109, align 8, !tbaa !13
  store double %1110, ptr %17, align 8, !tbaa !11
  %1111 = load double, ptr %17, align 8, !tbaa !11
  %1112 = fcmp oge double %1111, 0.000000e+00
  br i1 %1112, label %1113, label %1115

1113:                                             ; preds = %1098
  %1114 = load double, ptr %17, align 8, !tbaa !11
  br label %1118

1115:                                             ; preds = %1098
  %1116 = load double, ptr %17, align 8, !tbaa !11
  %1117 = fneg double %1116
  br label %1118

1118:                                             ; preds = %1115, %1113
  %1119 = phi double [ %1114, %1113 ], [ %1117, %1115 ]
  store double %1119, ptr %19, align 8, !tbaa !11
  %1120 = load double, ptr %18, align 8, !tbaa !11
  %1121 = load double, ptr %19, align 8, !tbaa !11
  %1122 = fcmp oge double %1120, %1121
  br i1 %1122, label %1123, label %1125

1123:                                             ; preds = %1118
  %1124 = load double, ptr %18, align 8, !tbaa !11
  br label %1127

1125:                                             ; preds = %1118
  %1126 = load double, ptr %19, align 8, !tbaa !11
  br label %1127

1127:                                             ; preds = %1125, %1123
  %1128 = phi double [ %1124, %1123 ], [ %1126, %1125 ]
  store double %1128, ptr %32, align 8, !tbaa !11
  %1129 = load i64, ptr %21, align 8, !tbaa !9
  %1130 = add nsw i64 %1129, 1
  store i64 %1130, ptr %20, align 8, !tbaa !9
  %1131 = load i64, ptr %20, align 8, !tbaa !9
  %1132 = load i64, ptr %21, align 8, !tbaa !9
  %1133 = load i64, ptr %27, align 8, !tbaa !9
  %1134 = mul nsw i64 %1132, %1133
  %1135 = add nsw i64 %1131, %1134
  store i64 %1135, ptr %15, align 8, !tbaa !9
  %1136 = load double, ptr %32, align 8, !tbaa !11
  store double %1136, ptr %18, align 8, !tbaa !11
  %1137 = load ptr, ptr %12, align 8, !tbaa !5
  %1138 = load i64, ptr %15, align 8, !tbaa !9
  %1139 = getelementptr inbounds %struct.doublecomplex, ptr %1137, i64 %1138
  %1140 = getelementptr inbounds %struct.doublecomplex, ptr %1139, i32 0, i32 0
  %1141 = load double, ptr %1140, align 8, !tbaa !13
  store double %1141, ptr %17, align 8, !tbaa !11
  %1142 = load double, ptr %17, align 8, !tbaa !11
  %1143 = fcmp oge double %1142, 0.000000e+00
  br i1 %1143, label %1144, label %1146

1144:                                             ; preds = %1127
  %1145 = load double, ptr %17, align 8, !tbaa !11
  br label %1149

1146:                                             ; preds = %1127
  %1147 = load double, ptr %17, align 8, !tbaa !11
  %1148 = fneg double %1147
  br label %1149

1149:                                             ; preds = %1146, %1144
  %1150 = phi double [ %1145, %1144 ], [ %1148, %1146 ]
  store double %1150, ptr %19, align 8, !tbaa !11
  %1151 = load double, ptr %18, align 8, !tbaa !11
  %1152 = load double, ptr %19, align 8, !tbaa !11
  %1153 = fcmp oge double %1151, %1152
  br i1 %1153, label %1154, label %1156

1154:                                             ; preds = %1149
  %1155 = load double, ptr %18, align 8, !tbaa !11
  br label %1158

1156:                                             ; preds = %1149
  %1157 = load double, ptr %19, align 8, !tbaa !11
  br label %1158

1158:                                             ; preds = %1156, %1154
  %1159 = phi double [ %1155, %1154 ], [ %1157, %1156 ]
  store double %1159, ptr %32, align 8, !tbaa !11
  %1160 = load ptr, ptr %11, align 8, !tbaa !5
  %1161 = load i64, ptr %1160, align 8, !tbaa !9
  store i64 %1161, ptr %15, align 8, !tbaa !9
  %1162 = load i64, ptr %21, align 8, !tbaa !9
  %1163 = add nsw i64 %1162, 2
  store i64 %1163, ptr %20, align 8, !tbaa !9
  br label %1164

1164:                                             ; preds = %1187, %1158
  %1165 = load i64, ptr %20, align 8, !tbaa !9
  %1166 = load i64, ptr %15, align 8, !tbaa !9
  %1167 = icmp sle i64 %1165, %1166
  br i1 %1167, label %1168, label %1190

1168:                                             ; preds = %1164
  %1169 = load double, ptr %32, align 8, !tbaa !11
  store double %1169, ptr %17, align 8, !tbaa !11
  %1170 = load ptr, ptr %12, align 8, !tbaa !5
  %1171 = load i64, ptr %20, align 8, !tbaa !9
  %1172 = load i64, ptr %21, align 8, !tbaa !9
  %1173 = load i64, ptr %27, align 8, !tbaa !9
  %1174 = mul nsw i64 %1172, %1173
  %1175 = add nsw i64 %1171, %1174
  %1176 = getelementptr inbounds %struct.doublecomplex, ptr %1170, i64 %1175
  %1177 = call double @z_abs(ptr noundef %1176)
  store double %1177, ptr %18, align 8, !tbaa !11
  %1178 = load double, ptr %17, align 8, !tbaa !11
  %1179 = load double, ptr %18, align 8, !tbaa !11
  %1180 = fcmp oge double %1178, %1179
  br i1 %1180, label %1181, label %1183

1181:                                             ; preds = %1168
  %1182 = load double, ptr %17, align 8, !tbaa !11
  br label %1185

1183:                                             ; preds = %1168
  %1184 = load double, ptr %18, align 8, !tbaa !11
  br label %1185

1185:                                             ; preds = %1183, %1181
  %1186 = phi double [ %1182, %1181 ], [ %1184, %1183 ]
  store double %1186, ptr %32, align 8, !tbaa !11
  br label %1187

1187:                                             ; preds = %1185
  %1188 = load i64, ptr %20, align 8, !tbaa !9
  %1189 = add nsw i64 %1188, 1
  store i64 %1189, ptr %20, align 8, !tbaa !9
  br label %1164, !llvm.loop !38

1190:                                             ; preds = %1164
  br label %1191

1191:                                             ; preds = %1190
  %1192 = load i64, ptr %21, align 8, !tbaa !9
  %1193 = add nsw i64 %1192, 1
  store i64 %1193, ptr %21, align 8, !tbaa !9
  br label %1065, !llvm.loop !39

1194:                                             ; preds = %1065
  br label %1424

1195:                                             ; preds = %971
  %1196 = load i64, ptr %22, align 8, !tbaa !9
  %1197 = sub nsw i64 %1196, 2
  store i64 %1197, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %1198

1198:                                             ; preds = %1330, %1195
  %1199 = load i64, ptr %21, align 8, !tbaa !9
  %1200 = load i64, ptr %14, align 8, !tbaa !9
  %1201 = icmp sle i64 %1199, %1200
  br i1 %1201, label %1202, label %1333

1202:                                             ; preds = %1198
  %1203 = load i64, ptr %22, align 8, !tbaa !9
  %1204 = load i64, ptr %21, align 8, !tbaa !9
  %1205 = add nsw i64 %1203, %1204
  %1206 = sub nsw i64 %1205, 1
  store i64 %1206, ptr %15, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %1207

1207:                                             ; preds = %1230, %1202
  %1208 = load i64, ptr %20, align 8, !tbaa !9
  %1209 = load i64, ptr %15, align 8, !tbaa !9
  %1210 = icmp sle i64 %1208, %1209
  br i1 %1210, label %1211, label %1233

1211:                                             ; preds = %1207
  %1212 = load double, ptr %32, align 8, !tbaa !11
  store double %1212, ptr %17, align 8, !tbaa !11
  %1213 = load ptr, ptr %12, align 8, !tbaa !5
  %1214 = load i64, ptr %20, align 8, !tbaa !9
  %1215 = load i64, ptr %21, align 8, !tbaa !9
  %1216 = load i64, ptr %27, align 8, !tbaa !9
  %1217 = mul nsw i64 %1215, %1216
  %1218 = add nsw i64 %1214, %1217
  %1219 = getelementptr inbounds %struct.doublecomplex, ptr %1213, i64 %1218
  %1220 = call double @z_abs(ptr noundef %1219)
  store double %1220, ptr %18, align 8, !tbaa !11
  %1221 = load double, ptr %17, align 8, !tbaa !11
  %1222 = load double, ptr %18, align 8, !tbaa !11
  %1223 = fcmp oge double %1221, %1222
  br i1 %1223, label %1224, label %1226

1224:                                             ; preds = %1211
  %1225 = load double, ptr %17, align 8, !tbaa !11
  br label %1228

1226:                                             ; preds = %1211
  %1227 = load double, ptr %18, align 8, !tbaa !11
  br label %1228

1228:                                             ; preds = %1226, %1224
  %1229 = phi double [ %1225, %1224 ], [ %1227, %1226 ]
  store double %1229, ptr %32, align 8, !tbaa !11
  br label %1230

1230:                                             ; preds = %1228
  %1231 = load i64, ptr %20, align 8, !tbaa !9
  %1232 = add nsw i64 %1231, 1
  store i64 %1232, ptr %20, align 8, !tbaa !9
  br label %1207, !llvm.loop !40

1233:                                             ; preds = %1207
  %1234 = load i64, ptr %22, align 8, !tbaa !9
  %1235 = load i64, ptr %21, align 8, !tbaa !9
  %1236 = add nsw i64 %1234, %1235
  store i64 %1236, ptr %20, align 8, !tbaa !9
  %1237 = load i64, ptr %20, align 8, !tbaa !9
  %1238 = load i64, ptr %21, align 8, !tbaa !9
  %1239 = load i64, ptr %27, align 8, !tbaa !9
  %1240 = mul nsw i64 %1238, %1239
  %1241 = add nsw i64 %1237, %1240
  store i64 %1241, ptr %15, align 8, !tbaa !9
  %1242 = load double, ptr %32, align 8, !tbaa !11
  store double %1242, ptr %18, align 8, !tbaa !11
  %1243 = load ptr, ptr %12, align 8, !tbaa !5
  %1244 = load i64, ptr %15, align 8, !tbaa !9
  %1245 = getelementptr inbounds %struct.doublecomplex, ptr %1243, i64 %1244
  %1246 = getelementptr inbounds %struct.doublecomplex, ptr %1245, i32 0, i32 0
  %1247 = load double, ptr %1246, align 8, !tbaa !13
  store double %1247, ptr %17, align 8, !tbaa !11
  %1248 = load double, ptr %17, align 8, !tbaa !11
  %1249 = fcmp oge double %1248, 0.000000e+00
  br i1 %1249, label %1250, label %1252

1250:                                             ; preds = %1233
  %1251 = load double, ptr %17, align 8, !tbaa !11
  br label %1255

1252:                                             ; preds = %1233
  %1253 = load double, ptr %17, align 8, !tbaa !11
  %1254 = fneg double %1253
  br label %1255

1255:                                             ; preds = %1252, %1250
  %1256 = phi double [ %1251, %1250 ], [ %1254, %1252 ]
  store double %1256, ptr %19, align 8, !tbaa !11
  %1257 = load double, ptr %18, align 8, !tbaa !11
  %1258 = load double, ptr %19, align 8, !tbaa !11
  %1259 = fcmp oge double %1257, %1258
  br i1 %1259, label %1260, label %1262

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

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

1264:                                             ; preds = %1262, %1260
  %1265 = phi double [ %1261, %1260 ], [ %1263, %1262 ]
  store double %1265, ptr %32, align 8, !tbaa !11
  %1266 = load i64, ptr %20, align 8, !tbaa !9
  %1267 = add nsw i64 %1266, 1
  store i64 %1267, ptr %20, align 8, !tbaa !9
  %1268 = load i64, ptr %20, align 8, !tbaa !9
  %1269 = load i64, ptr %21, align 8, !tbaa !9
  %1270 = load i64, ptr %27, align 8, !tbaa !9
  %1271 = mul nsw i64 %1269, %1270
  %1272 = add nsw i64 %1268, %1271
  store i64 %1272, ptr %15, align 8, !tbaa !9
  %1273 = load double, ptr %32, align 8, !tbaa !11
  store double %1273, ptr %18, align 8, !tbaa !11
  %1274 = load ptr, ptr %12, align 8, !tbaa !5
  %1275 = load i64, ptr %15, align 8, !tbaa !9
  %1276 = getelementptr inbounds %struct.doublecomplex, ptr %1274, i64 %1275
  %1277 = getelementptr inbounds %struct.doublecomplex, ptr %1276, i32 0, i32 0
  %1278 = load double, ptr %1277, align 8, !tbaa !13
  store double %1278, ptr %17, align 8, !tbaa !11
  %1279 = load double, ptr %17, align 8, !tbaa !11
  %1280 = fcmp oge double %1279, 0.000000e+00
  br i1 %1280, label %1281, label %1283

1281:                                             ; preds = %1264
  %1282 = load double, ptr %17, align 8, !tbaa !11
  br label %1286

1283:                                             ; preds = %1264
  %1284 = load double, ptr %17, align 8, !tbaa !11
  %1285 = fneg double %1284
  br label %1286

1286:                                             ; preds = %1283, %1281
  %1287 = phi double [ %1282, %1281 ], [ %1285, %1283 ]
  store double %1287, ptr %19, align 8, !tbaa !11
  %1288 = load double, ptr %18, align 8, !tbaa !11
  %1289 = load double, ptr %19, align 8, !tbaa !11
  %1290 = fcmp oge double %1288, %1289
  br i1 %1290, label %1291, label %1293

1291:                                             ; preds = %1286
  %1292 = load double, ptr %18, align 8, !tbaa !11
  br label %1295

1293:                                             ; preds = %1286
  %1294 = load double, ptr %19, align 8, !tbaa !11
  br label %1295

1295:                                             ; preds = %1293, %1291
  %1296 = phi double [ %1292, %1291 ], [ %1294, %1293 ]
  store double %1296, ptr %32, align 8, !tbaa !11
  %1297 = load ptr, ptr %11, align 8, !tbaa !5
  %1298 = load i64, ptr %1297, align 8, !tbaa !9
  store i64 %1298, ptr %15, align 8, !tbaa !9
  %1299 = load i64, ptr %22, align 8, !tbaa !9
  %1300 = load i64, ptr %21, align 8, !tbaa !9
  %1301 = add nsw i64 %1299, %1300
  %1302 = add nsw i64 %1301, 2
  store i64 %1302, ptr %20, align 8, !tbaa !9
  br label %1303

1303:                                             ; preds = %1326, %1295
  %1304 = load i64, ptr %20, align 8, !tbaa !9
  %1305 = load i64, ptr %15, align 8, !tbaa !9
  %1306 = icmp sle i64 %1304, %1305
  br i1 %1306, label %1307, label %1329

1307:                                             ; preds = %1303
  %1308 = load double, ptr %32, align 8, !tbaa !11
  store double %1308, ptr %17, align 8, !tbaa !11
  %1309 = load ptr, ptr %12, align 8, !tbaa !5
  %1310 = load i64, ptr %20, align 8, !tbaa !9
  %1311 = load i64, ptr %21, align 8, !tbaa !9
  %1312 = load i64, ptr %27, align 8, !tbaa !9
  %1313 = mul nsw i64 %1311, %1312
  %1314 = add nsw i64 %1310, %1313
  %1315 = getelementptr inbounds %struct.doublecomplex, ptr %1309, i64 %1314
  %1316 = call double @z_abs(ptr noundef %1315)
  store double %1316, ptr %18, align 8, !tbaa !11
  %1317 = load double, ptr %17, align 8, !tbaa !11
  %1318 = load double, ptr %18, align 8, !tbaa !11
  %1319 = fcmp oge double %1317, %1318
  br i1 %1319, label %1320, label %1322

1320:                                             ; preds = %1307
  %1321 = load double, ptr %17, align 8, !tbaa !11
  br label %1324

1322:                                             ; preds = %1307
  %1323 = load double, ptr %18, align 8, !tbaa !11
  br label %1324

1324:                                             ; preds = %1322, %1320
  %1325 = phi double [ %1321, %1320 ], [ %1323, %1322 ]
  store double %1325, ptr %32, align 8, !tbaa !11
  br label %1326

1326:                                             ; preds = %1324
  %1327 = load i64, ptr %20, align 8, !tbaa !9
  %1328 = add nsw i64 %1327, 1
  store i64 %1328, ptr %20, align 8, !tbaa !9
  br label %1303, !llvm.loop !41

1329:                                             ; preds = %1303
  br label %1330

1330:                                             ; preds = %1329
  %1331 = load i64, ptr %21, align 8, !tbaa !9
  %1332 = add nsw i64 %1331, 1
  store i64 %1332, ptr %21, align 8, !tbaa !9
  br label %1198, !llvm.loop !42

1333:                                             ; preds = %1198
  %1334 = load ptr, ptr %11, align 8, !tbaa !5
  %1335 = load i64, ptr %1334, align 8, !tbaa !9
  %1336 = sub nsw i64 %1335, 2
  store i64 %1336, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %1337

1337:                                             ; preds = %1360, %1333
  %1338 = load i64, ptr %20, align 8, !tbaa !9
  %1339 = load i64, ptr %14, align 8, !tbaa !9
  %1340 = icmp sle i64 %1338, %1339
  br i1 %1340, label %1341, label %1363

1341:                                             ; preds = %1337
  %1342 = load double, ptr %32, align 8, !tbaa !11
  store double %1342, ptr %17, align 8, !tbaa !11
  %1343 = load ptr, ptr %12, align 8, !tbaa !5
  %1344 = load i64, ptr %20, align 8, !tbaa !9
  %1345 = load i64, ptr %21, align 8, !tbaa !9
  %1346 = load i64, ptr %27, align 8, !tbaa !9
  %1347 = mul nsw i64 %1345, %1346
  %1348 = add nsw i64 %1344, %1347
  %1349 = getelementptr inbounds %struct.doublecomplex, ptr %1343, i64 %1348
  %1350 = call double @z_abs(ptr noundef %1349)
  store double %1350, ptr %18, align 8, !tbaa !11
  %1351 = load double, ptr %17, align 8, !tbaa !11
  %1352 = load double, ptr %18, align 8, !tbaa !11
  %1353 = fcmp oge double %1351, %1352
  br i1 %1353, label %1354, label %1356

1354:                                             ; preds = %1341
  %1355 = load double, ptr %17, align 8, !tbaa !11
  br label %1358

1356:                                             ; preds = %1341
  %1357 = load double, ptr %18, align 8, !tbaa !11
  br label %1358

1358:                                             ; preds = %1356, %1354
  %1359 = phi double [ %1355, %1354 ], [ %1357, %1356 ]
  store double %1359, ptr %32, align 8, !tbaa !11
  br label %1360

1360:                                             ; preds = %1358
  %1361 = load i64, ptr %20, align 8, !tbaa !9
  %1362 = add nsw i64 %1361, 1
  store i64 %1362, ptr %20, align 8, !tbaa !9
  br label %1337, !llvm.loop !43

1363:                                             ; preds = %1337
  %1364 = load i64, ptr %20, align 8, !tbaa !9
  %1365 = load i64, ptr %21, align 8, !tbaa !9
  %1366 = load i64, ptr %27, align 8, !tbaa !9
  %1367 = mul nsw i64 %1365, %1366
  %1368 = add nsw i64 %1364, %1367
  store i64 %1368, ptr %14, align 8, !tbaa !9
  %1369 = load double, ptr %32, align 8, !tbaa !11
  store double %1369, ptr %18, align 8, !tbaa !11
  %1370 = load ptr, ptr %12, align 8, !tbaa !5
  %1371 = load i64, ptr %14, align 8, !tbaa !9
  %1372 = getelementptr inbounds %struct.doublecomplex, ptr %1370, i64 %1371
  %1373 = getelementptr inbounds %struct.doublecomplex, ptr %1372, i32 0, i32 0
  %1374 = load double, ptr %1373, align 8, !tbaa !13
  store double %1374, ptr %17, align 8, !tbaa !11
  %1375 = load double, ptr %17, align 8, !tbaa !11
  %1376 = fcmp oge double %1375, 0.000000e+00
  br i1 %1376, label %1377, label %1379

1377:                                             ; preds = %1363
  %1378 = load double, ptr %17, align 8, !tbaa !11
  br label %1382

1379:                                             ; preds = %1363
  %1380 = load double, ptr %17, align 8, !tbaa !11
  %1381 = fneg double %1380
  br label %1382

1382:                                             ; preds = %1379, %1377
  %1383 = phi double [ %1378, %1377 ], [ %1381, %1379 ]
  store double %1383, ptr %19, align 8, !tbaa !11
  %1384 = load double, ptr %18, align 8, !tbaa !11
  %1385 = load double, ptr %19, align 8, !tbaa !11
  %1386 = fcmp oge double %1384, %1385
  br i1 %1386, label %1387, label %1389

1387:                                             ; preds = %1382
  %1388 = load double, ptr %18, align 8, !tbaa !11
  br label %1391

1389:                                             ; preds = %1382
  %1390 = load double, ptr %19, align 8, !tbaa !11
  br label %1391

1391:                                             ; preds = %1389, %1387
  %1392 = phi double [ %1388, %1387 ], [ %1390, %1389 ]
  store double %1392, ptr %32, align 8, !tbaa !11
  %1393 = load ptr, ptr %11, align 8, !tbaa !5
  %1394 = load i64, ptr %1393, align 8, !tbaa !9
  store i64 %1394, ptr %20, align 8, !tbaa !9
  %1395 = load i64, ptr %20, align 8, !tbaa !9
  %1396 = load i64, ptr %21, align 8, !tbaa !9
  %1397 = load i64, ptr %27, align 8, !tbaa !9
  %1398 = mul nsw i64 %1396, %1397
  %1399 = add nsw i64 %1395, %1398
  store i64 %1399, ptr %14, align 8, !tbaa !9
  %1400 = load double, ptr %32, align 8, !tbaa !11
  store double %1400, ptr %18, align 8, !tbaa !11
  %1401 = load ptr, ptr %12, align 8, !tbaa !5
  %1402 = load i64, ptr %14, align 8, !tbaa !9
  %1403 = getelementptr inbounds %struct.doublecomplex, ptr %1401, i64 %1402
  %1404 = getelementptr inbounds %struct.doublecomplex, ptr %1403, i32 0, i32 0
  %1405 = load double, ptr %1404, align 8, !tbaa !13
  store double %1405, ptr %17, align 8, !tbaa !11
  %1406 = load double, ptr %17, align 8, !tbaa !11
  %1407 = fcmp oge double %1406, 0.000000e+00
  br i1 %1407, label %1408, label %1410

1408:                                             ; preds = %1391
  %1409 = load double, ptr %17, align 8, !tbaa !11
  br label %1413

1410:                                             ; preds = %1391
  %1411 = load double, ptr %17, align 8, !tbaa !11
  %1412 = fneg double %1411
  br label %1413

1413:                                             ; preds = %1410, %1408
  %1414 = phi double [ %1409, %1408 ], [ %1412, %1410 ]
  store double %1414, ptr %19, align 8, !tbaa !11
  %1415 = load double, ptr %18, align 8, !tbaa !11
  %1416 = load double, ptr %19, align 8, !tbaa !11
  %1417 = fcmp oge double %1415, %1416
  br i1 %1417, label %1418, label %1420

1418:                                             ; preds = %1413
  %1419 = load double, ptr %18, align 8, !tbaa !11
  br label %1422

1420:                                             ; preds = %1413
  %1421 = load double, ptr %19, align 8, !tbaa !11
  br label %1422

1422:                                             ; preds = %1420, %1418
  %1423 = phi double [ %1419, %1418 ], [ %1421, %1420 ]
  store double %1423, ptr %32, align 8, !tbaa !11
  br label %1424

1424:                                             ; preds = %1422, %1194
  br label %2026

1425:                                             ; preds = %968
  %1426 = load i64, ptr %30, align 8, !tbaa !9
  %1427 = icmp eq i64 %1426, 1
  br i1 %1427, label %1428, label %1722

1428:                                             ; preds = %1425
  store i64 0, ptr %21, align 8, !tbaa !9
  %1429 = load i64, ptr %21, align 8, !tbaa !9
  %1430 = load i64, ptr %21, align 8, !tbaa !9
  %1431 = load i64, ptr %27, align 8, !tbaa !9
  %1432 = mul nsw i64 %1430, %1431
  %1433 = add nsw i64 %1429, %1432
  store i64 %1433, ptr %14, align 8, !tbaa !9
  %1434 = load double, ptr %32, align 8, !tbaa !11
  store double %1434, ptr %18, align 8, !tbaa !11
  %1435 = load ptr, ptr %12, align 8, !tbaa !5
  %1436 = load i64, ptr %14, align 8, !tbaa !9
  %1437 = getelementptr inbounds %struct.doublecomplex, ptr %1435, i64 %1436
  %1438 = getelementptr inbounds %struct.doublecomplex, ptr %1437, i32 0, i32 0
  %1439 = load double, ptr %1438, align 8, !tbaa !13
  store double %1439, ptr %17, align 8, !tbaa !11
  %1440 = load double, ptr %17, align 8, !tbaa !11
  %1441 = fcmp oge double %1440, 0.000000e+00
  br i1 %1441, label %1442, label %1444

1442:                                             ; preds = %1428
  %1443 = load double, ptr %17, align 8, !tbaa !11
  br label %1447

1444:                                             ; preds = %1428
  %1445 = load double, ptr %17, align 8, !tbaa !11
  %1446 = fneg double %1445
  br label %1447

1447:                                             ; preds = %1444, %1442
  %1448 = phi double [ %1443, %1442 ], [ %1446, %1444 ]
  store double %1448, ptr %19, align 8, !tbaa !11
  %1449 = load double, ptr %18, align 8, !tbaa !11
  %1450 = load double, ptr %19, align 8, !tbaa !11
  %1451 = fcmp oge double %1449, %1450
  br i1 %1451, label %1452, label %1454

1452:                                             ; preds = %1447
  %1453 = load double, ptr %18, align 8, !tbaa !11
  br label %1456

1454:                                             ; preds = %1447
  %1455 = load double, ptr %19, align 8, !tbaa !11
  br label %1456

1456:                                             ; preds = %1454, %1452
  %1457 = phi double [ %1453, %1452 ], [ %1455, %1454 ]
  store double %1457, ptr %32, align 8, !tbaa !11
  %1458 = load i64, ptr %22, align 8, !tbaa !9
  %1459 = sub nsw i64 %1458, 1
  store i64 %1459, ptr %14, align 8, !tbaa !9
  store i64 1, ptr %20, align 8, !tbaa !9
  br label %1460

1460:                                             ; preds = %1483, %1456
  %1461 = load i64, ptr %20, align 8, !tbaa !9
  %1462 = load i64, ptr %14, align 8, !tbaa !9
  %1463 = icmp sle i64 %1461, %1462
  br i1 %1463, label %1464, label %1486

1464:                                             ; preds = %1460
  %1465 = load double, ptr %32, align 8, !tbaa !11
  store double %1465, ptr %17, align 8, !tbaa !11
  %1466 = load ptr, ptr %12, align 8, !tbaa !5
  %1467 = load i64, ptr %20, align 8, !tbaa !9
  %1468 = load i64, ptr %21, align 8, !tbaa !9
  %1469 = load i64, ptr %27, align 8, !tbaa !9
  %1470 = mul nsw i64 %1468, %1469
  %1471 = add nsw i64 %1467, %1470
  %1472 = getelementptr inbounds %struct.doublecomplex, ptr %1466, i64 %1471
  %1473 = call double @z_abs(ptr noundef %1472)
  store double %1473, ptr %18, align 8, !tbaa !11
  %1474 = load double, ptr %17, align 8, !tbaa !11
  %1475 = load double, ptr %18, align 8, !tbaa !11
  %1476 = fcmp oge double %1474, %1475
  br i1 %1476, label %1477, label %1479

1477:                                             ; preds = %1464
  %1478 = load double, ptr %17, align 8, !tbaa !11
  br label %1481

1479:                                             ; preds = %1464
  %1480 = load double, ptr %18, align 8, !tbaa !11
  br label %1481

1481:                                             ; preds = %1479, %1477
  %1482 = phi double [ %1478, %1477 ], [ %1480, %1479 ]
  store double %1482, ptr %32, align 8, !tbaa !11
  br label %1483

1483:                                             ; preds = %1481
  %1484 = load i64, ptr %20, align 8, !tbaa !9
  %1485 = add nsw i64 %1484, 1
  store i64 %1485, ptr %20, align 8, !tbaa !9
  br label %1460, !llvm.loop !44

1486:                                             ; preds = %1460
  %1487 = load i64, ptr %22, align 8, !tbaa !9
  %1488 = sub nsw i64 %1487, 1
  store i64 %1488, ptr %14, align 8, !tbaa !9
  store i64 1, ptr %21, align 8, !tbaa !9
  br label %1489

1489:                                             ; preds = %1615, %1486
  %1490 = load i64, ptr %21, align 8, !tbaa !9
  %1491 = load i64, ptr %14, align 8, !tbaa !9
  %1492 = icmp sle i64 %1490, %1491
  br i1 %1492, label %1493, label %1618

1493:                                             ; preds = %1489
  %1494 = load i64, ptr %21, align 8, !tbaa !9
  %1495 = sub nsw i64 %1494, 2
  store i64 %1495, ptr %15, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %1496

1496:                                             ; preds = %1519, %1493
  %1497 = load i64, ptr %20, align 8, !tbaa !9
  %1498 = load i64, ptr %15, align 8, !tbaa !9
  %1499 = icmp sle i64 %1497, %1498
  br i1 %1499, label %1500, label %1522

1500:                                             ; preds = %1496
  %1501 = load double, ptr %32, align 8, !tbaa !11
  store double %1501, ptr %17, align 8, !tbaa !11
  %1502 = load ptr, ptr %12, align 8, !tbaa !5
  %1503 = load i64, ptr %20, align 8, !tbaa !9
  %1504 = load i64, ptr %21, align 8, !tbaa !9
  %1505 = load i64, ptr %27, align 8, !tbaa !9
  %1506 = mul nsw i64 %1504, %1505
  %1507 = add nsw i64 %1503, %1506
  %1508 = getelementptr inbounds %struct.doublecomplex, ptr %1502, i64 %1507
  %1509 = call double @z_abs(ptr noundef %1508)
  store double %1509, ptr %18, align 8, !tbaa !11
  %1510 = load double, ptr %17, align 8, !tbaa !11
  %1511 = load double, ptr %18, align 8, !tbaa !11
  %1512 = fcmp oge double %1510, %1511
  br i1 %1512, label %1513, label %1515

1513:                                             ; preds = %1500
  %1514 = load double, ptr %17, align 8, !tbaa !11
  br label %1517

1515:                                             ; preds = %1500
  %1516 = load double, ptr %18, align 8, !tbaa !11
  br label %1517

1517:                                             ; preds = %1515, %1513
  %1518 = phi double [ %1514, %1513 ], [ %1516, %1515 ]
  store double %1518, ptr %32, align 8, !tbaa !11
  br label %1519

1519:                                             ; preds = %1517
  %1520 = load i64, ptr %20, align 8, !tbaa !9
  %1521 = add nsw i64 %1520, 1
  store i64 %1521, ptr %20, align 8, !tbaa !9
  br label %1496, !llvm.loop !45

1522:                                             ; preds = %1496
  %1523 = load i64, ptr %21, align 8, !tbaa !9
  %1524 = sub nsw i64 %1523, 1
  store i64 %1524, ptr %20, align 8, !tbaa !9
  %1525 = load i64, ptr %20, align 8, !tbaa !9
  %1526 = load i64, ptr %21, align 8, !tbaa !9
  %1527 = load i64, ptr %27, align 8, !tbaa !9
  %1528 = mul nsw i64 %1526, %1527
  %1529 = add nsw i64 %1525, %1528
  store i64 %1529, ptr %15, align 8, !tbaa !9
  %1530 = load double, ptr %32, align 8, !tbaa !11
  store double %1530, ptr %18, align 8, !tbaa !11
  %1531 = load ptr, ptr %12, align 8, !tbaa !5
  %1532 = load i64, ptr %15, align 8, !tbaa !9
  %1533 = getelementptr inbounds %struct.doublecomplex, ptr %1531, i64 %1532
  %1534 = getelementptr inbounds %struct.doublecomplex, ptr %1533, i32 0, i32 0
  %1535 = load double, ptr %1534, align 8, !tbaa !13
  store double %1535, ptr %17, align 8, !tbaa !11
  %1536 = load double, ptr %17, align 8, !tbaa !11
  %1537 = fcmp oge double %1536, 0.000000e+00
  br i1 %1537, label %1538, label %1540

1538:                                             ; preds = %1522
  %1539 = load double, ptr %17, align 8, !tbaa !11
  br label %1543

1540:                                             ; preds = %1522
  %1541 = load double, ptr %17, align 8, !tbaa !11
  %1542 = fneg double %1541
  br label %1543

1543:                                             ; preds = %1540, %1538
  %1544 = phi double [ %1539, %1538 ], [ %1542, %1540 ]
  store double %1544, ptr %19, align 8, !tbaa !11
  %1545 = load double, ptr %18, align 8, !tbaa !11
  %1546 = load double, ptr %19, align 8, !tbaa !11
  %1547 = fcmp oge double %1545, %1546
  br i1 %1547, label %1548, label %1550

1548:                                             ; preds = %1543
  %1549 = load double, ptr %18, align 8, !tbaa !11
  br label %1552

1550:                                             ; preds = %1543
  %1551 = load double, ptr %19, align 8, !tbaa !11
  br label %1552

1552:                                             ; preds = %1550, %1548
  %1553 = phi double [ %1549, %1548 ], [ %1551, %1550 ]
  store double %1553, ptr %32, align 8, !tbaa !11
  %1554 = load i64, ptr %21, align 8, !tbaa !9
  store i64 %1554, ptr %20, align 8, !tbaa !9
  %1555 = load i64, ptr %20, align 8, !tbaa !9
  %1556 = load i64, ptr %21, align 8, !tbaa !9
  %1557 = load i64, ptr %27, align 8, !tbaa !9
  %1558 = mul nsw i64 %1556, %1557
  %1559 = add nsw i64 %1555, %1558
  store i64 %1559, ptr %15, align 8, !tbaa !9
  %1560 = load double, ptr %32, align 8, !tbaa !11
  store double %1560, ptr %18, align 8, !tbaa !11
  %1561 = load ptr, ptr %12, align 8, !tbaa !5
  %1562 = load i64, ptr %15, align 8, !tbaa !9
  %1563 = getelementptr inbounds %struct.doublecomplex, ptr %1561, i64 %1562
  %1564 = getelementptr inbounds %struct.doublecomplex, ptr %1563, i32 0, i32 0
  %1565 = load double, ptr %1564, align 8, !tbaa !13
  store double %1565, ptr %17, align 8, !tbaa !11
  %1566 = load double, ptr %17, align 8, !tbaa !11
  %1567 = fcmp oge double %1566, 0.000000e+00
  br i1 %1567, label %1568, label %1570

1568:                                             ; preds = %1552
  %1569 = load double, ptr %17, align 8, !tbaa !11
  br label %1573

1570:                                             ; preds = %1552
  %1571 = load double, ptr %17, align 8, !tbaa !11
  %1572 = fneg double %1571
  br label %1573

1573:                                             ; preds = %1570, %1568
  %1574 = phi double [ %1569, %1568 ], [ %1572, %1570 ]
  store double %1574, ptr %19, align 8, !tbaa !11
  %1575 = load double, ptr %18, align 8, !tbaa !11
  %1576 = load double, ptr %19, align 8, !tbaa !11
  %1577 = fcmp oge double %1575, %1576
  br i1 %1577, label %1578, label %1580

1578:                                             ; preds = %1573
  %1579 = load double, ptr %18, align 8, !tbaa !11
  br label %1582

1580:                                             ; preds = %1573
  %1581 = load double, ptr %19, align 8, !tbaa !11
  br label %1582

1582:                                             ; preds = %1580, %1578
  %1583 = phi double [ %1579, %1578 ], [ %1581, %1580 ]
  store double %1583, ptr %32, align 8, !tbaa !11
  %1584 = load i64, ptr %22, align 8, !tbaa !9
  %1585 = sub nsw i64 %1584, 1
  store i64 %1585, ptr %15, align 8, !tbaa !9
  %1586 = load i64, ptr %21, align 8, !tbaa !9
  %1587 = add nsw i64 %1586, 1
  store i64 %1587, ptr %20, align 8, !tbaa !9
  br label %1588

1588:                                             ; preds = %1611, %1582
  %1589 = load i64, ptr %20, align 8, !tbaa !9
  %1590 = load i64, ptr %15, align 8, !tbaa !9
  %1591 = icmp sle i64 %1589, %1590
  br i1 %1591, label %1592, label %1614

1592:                                             ; preds = %1588
  %1593 = load double, ptr %32, align 8, !tbaa !11
  store double %1593, ptr %17, align 8, !tbaa !11
  %1594 = load ptr, ptr %12, align 8, !tbaa !5
  %1595 = load i64, ptr %20, align 8, !tbaa !9
  %1596 = load i64, ptr %21, align 8, !tbaa !9
  %1597 = load i64, ptr %27, align 8, !tbaa !9
  %1598 = mul nsw i64 %1596, %1597
  %1599 = add nsw i64 %1595, %1598
  %1600 = getelementptr inbounds %struct.doublecomplex, ptr %1594, i64 %1599
  %1601 = call double @z_abs(ptr noundef %1600)
  store double %1601, ptr %18, align 8, !tbaa !11
  %1602 = load double, ptr %17, align 8, !tbaa !11
  %1603 = load double, ptr %18, align 8, !tbaa !11
  %1604 = fcmp oge double %1602, %1603
  br i1 %1604, label %1605, label %1607

1605:                                             ; preds = %1592
  %1606 = load double, ptr %17, align 8, !tbaa !11
  br label %1609

1607:                                             ; preds = %1592
  %1608 = load double, ptr %18, align 8, !tbaa !11
  br label %1609

1609:                                             ; preds = %1607, %1605
  %1610 = phi double [ %1606, %1605 ], [ %1608, %1607 ]
  store double %1610, ptr %32, align 8, !tbaa !11
  br label %1611

1611:                                             ; preds = %1609
  %1612 = load i64, ptr %20, align 8, !tbaa !9
  %1613 = add nsw i64 %1612, 1
  store i64 %1613, ptr %20, align 8, !tbaa !9
  br label %1588, !llvm.loop !46

1614:                                             ; preds = %1588
  br label %1615

1615:                                             ; preds = %1614
  %1616 = load i64, ptr %21, align 8, !tbaa !9
  %1617 = add nsw i64 %1616, 1
  store i64 %1617, ptr %21, align 8, !tbaa !9
  br label %1489, !llvm.loop !47

1618:                                             ; preds = %1489
  %1619 = load i64, ptr %22, align 8, !tbaa !9
  store i64 %1619, ptr %21, align 8, !tbaa !9
  %1620 = load i64, ptr %22, align 8, !tbaa !9
  %1621 = sub nsw i64 %1620, 2
  store i64 %1621, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %1622

1622:                                             ; preds = %1645, %1618
  %1623 = load i64, ptr %20, align 8, !tbaa !9
  %1624 = load i64, ptr %14, align 8, !tbaa !9
  %1625 = icmp sle i64 %1623, %1624
  br i1 %1625, label %1626, label %1648

1626:                                             ; preds = %1622
  %1627 = load double, ptr %32, align 8, !tbaa !11
  store double %1627, ptr %17, align 8, !tbaa !11
  %1628 = load ptr, ptr %12, align 8, !tbaa !5
  %1629 = load i64, ptr %20, align 8, !tbaa !9
  %1630 = load i64, ptr %21, align 8, !tbaa !9
  %1631 = load i64, ptr %27, align 8, !tbaa !9
  %1632 = mul nsw i64 %1630, %1631
  %1633 = add nsw i64 %1629, %1632
  %1634 = getelementptr inbounds %struct.doublecomplex, ptr %1628, i64 %1633
  %1635 = call double @z_abs(ptr noundef %1634)
  store double %1635, ptr %18, align 8, !tbaa !11
  %1636 = load double, ptr %17, align 8, !tbaa !11
  %1637 = load double, ptr %18, align 8, !tbaa !11
  %1638 = fcmp oge double %1636, %1637
  br i1 %1638, label %1639, label %1641

1639:                                             ; preds = %1626
  %1640 = load double, ptr %17, align 8, !tbaa !11
  br label %1643

1641:                                             ; preds = %1626
  %1642 = load double, ptr %18, align 8, !tbaa !11
  br label %1643

1643:                                             ; preds = %1641, %1639
  %1644 = phi double [ %1640, %1639 ], [ %1642, %1641 ]
  store double %1644, ptr %32, align 8, !tbaa !11
  br label %1645

1645:                                             ; preds = %1643
  %1646 = load i64, ptr %20, align 8, !tbaa !9
  %1647 = add nsw i64 %1646, 1
  store i64 %1647, ptr %20, align 8, !tbaa !9
  br label %1622, !llvm.loop !48

1648:                                             ; preds = %1622
  %1649 = load i64, ptr %22, align 8, !tbaa !9
  %1650 = sub nsw i64 %1649, 1
  store i64 %1650, ptr %20, align 8, !tbaa !9
  %1651 = load i64, ptr %20, align 8, !tbaa !9
  %1652 = load i64, ptr %21, align 8, !tbaa !9
  %1653 = load i64, ptr %27, align 8, !tbaa !9
  %1654 = mul nsw i64 %1652, %1653
  %1655 = add nsw i64 %1651, %1654
  store i64 %1655, ptr %14, align 8, !tbaa !9
  %1656 = load double, ptr %32, align 8, !tbaa !11
  store double %1656, ptr %18, align 8, !tbaa !11
  %1657 = load ptr, ptr %12, align 8, !tbaa !5
  %1658 = load i64, ptr %14, align 8, !tbaa !9
  %1659 = getelementptr inbounds %struct.doublecomplex, ptr %1657, i64 %1658
  %1660 = getelementptr inbounds %struct.doublecomplex, ptr %1659, i32 0, i32 0
  %1661 = load double, ptr %1660, align 8, !tbaa !13
  store double %1661, ptr %17, align 8, !tbaa !11
  %1662 = load double, ptr %17, align 8, !tbaa !11
  %1663 = fcmp oge double %1662, 0.000000e+00
  br i1 %1663, label %1664, label %1666

1664:                                             ; preds = %1648
  %1665 = load double, ptr %17, align 8, !tbaa !11
  br label %1669

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

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

1674:                                             ; preds = %1669
  %1675 = load double, ptr %18, align 8, !tbaa !11
  br label %1678

1676:                                             ; preds = %1669
  %1677 = load double, ptr %19, align 8, !tbaa !11
  br label %1678

1678:                                             ; preds = %1676, %1674
  %1679 = phi double [ %1675, %1674 ], [ %1677, %1676 ]
  store double %1679, ptr %32, align 8, !tbaa !11
  %1680 = load ptr, ptr %11, align 8, !tbaa !5
  %1681 = load i64, ptr %1680, align 8, !tbaa !9
  store i64 %1681, ptr %14, align 8, !tbaa !9
  %1682 = load i64, ptr %22, align 8, !tbaa !9
  %1683 = add nsw i64 %1682, 1
  store i64 %1683, ptr %21, align 8, !tbaa !9
  br label %1684

1684:                                             ; preds = %1718, %1678
  %1685 = load i64, ptr %21, align 8, !tbaa !9
  %1686 = load i64, ptr %14, align 8, !tbaa !9
  %1687 = icmp sle i64 %1685, %1686
  br i1 %1687, label %1688, label %1721

1688:                                             ; preds = %1684
  %1689 = load i64, ptr %22, align 8, !tbaa !9
  %1690 = sub nsw i64 %1689, 1
  store i64 %1690, ptr %15, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %1691

1691:                                             ; preds = %1714, %1688
  %1692 = load i64, ptr %20, align 8, !tbaa !9
  %1693 = load i64, ptr %15, align 8, !tbaa !9
  %1694 = icmp sle i64 %1692, %1693
  br i1 %1694, label %1695, label %1717

1695:                                             ; preds = %1691
  %1696 = load double, ptr %32, align 8, !tbaa !11
  store double %1696, ptr %17, align 8, !tbaa !11
  %1697 = load ptr, ptr %12, align 8, !tbaa !5
  %1698 = load i64, ptr %20, align 8, !tbaa !9
  %1699 = load i64, ptr %21, align 8, !tbaa !9
  %1700 = load i64, ptr %27, align 8, !tbaa !9
  %1701 = mul nsw i64 %1699, %1700
  %1702 = add nsw i64 %1698, %1701
  %1703 = getelementptr inbounds %struct.doublecomplex, ptr %1697, i64 %1702
  %1704 = call double @z_abs(ptr noundef %1703)
  store double %1704, ptr %18, align 8, !tbaa !11
  %1705 = load double, ptr %17, align 8, !tbaa !11
  %1706 = load double, ptr %18, align 8, !tbaa !11
  %1707 = fcmp oge double %1705, %1706
  br i1 %1707, label %1708, label %1710

1708:                                             ; preds = %1695
  %1709 = load double, ptr %17, align 8, !tbaa !11
  br label %1712

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

1712:                                             ; preds = %1710, %1708
  %1713 = phi double [ %1709, %1708 ], [ %1711, %1710 ]
  store double %1713, ptr %32, align 8, !tbaa !11
  br label %1714

1714:                                             ; preds = %1712
  %1715 = load i64, ptr %20, align 8, !tbaa !9
  %1716 = add nsw i64 %1715, 1
  store i64 %1716, ptr %20, align 8, !tbaa !9
  br label %1691, !llvm.loop !49

1717:                                             ; preds = %1691
  br label %1718

1718:                                             ; preds = %1717
  %1719 = load i64, ptr %21, align 8, !tbaa !9
  %1720 = add nsw i64 %1719, 1
  store i64 %1720, ptr %21, align 8, !tbaa !9
  br label %1684, !llvm.loop !50

1721:                                             ; preds = %1684
  br label %2025

1722:                                             ; preds = %1425
  %1723 = load i64, ptr %22, align 8, !tbaa !9
  %1724 = sub nsw i64 %1723, 1
  store i64 %1724, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %1725

1725:                                             ; preds = %1759, %1722
  %1726 = load i64, ptr %21, align 8, !tbaa !9
  %1727 = load i64, ptr %14, align 8, !tbaa !9
  %1728 = icmp sle i64 %1726, %1727
  br i1 %1728, label %1729, label %1762

1729:                                             ; preds = %1725
  %1730 = load i64, ptr %22, align 8, !tbaa !9
  %1731 = sub nsw i64 %1730, 1
  store i64 %1731, ptr %15, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %1732

1732:                                             ; preds = %1755, %1729
  %1733 = load i64, ptr %20, align 8, !tbaa !9
  %1734 = load i64, ptr %15, align 8, !tbaa !9
  %1735 = icmp sle i64 %1733, %1734
  br i1 %1735, label %1736, label %1758

1736:                                             ; preds = %1732
  %1737 = load double, ptr %32, align 8, !tbaa !11
  store double %1737, ptr %17, align 8, !tbaa !11
  %1738 = load ptr, ptr %12, align 8, !tbaa !5
  %1739 = load i64, ptr %20, align 8, !tbaa !9
  %1740 = load i64, ptr %21, align 8, !tbaa !9
  %1741 = load i64, ptr %27, align 8, !tbaa !9
  %1742 = mul nsw i64 %1740, %1741
  %1743 = add nsw i64 %1739, %1742
  %1744 = getelementptr inbounds %struct.doublecomplex, ptr %1738, i64 %1743
  %1745 = call double @z_abs(ptr noundef %1744)
  store double %1745, ptr %18, align 8, !tbaa !11
  %1746 = load double, ptr %17, align 8, !tbaa !11
  %1747 = load double, ptr %18, align 8, !tbaa !11
  %1748 = fcmp oge double %1746, %1747
  br i1 %1748, label %1749, label %1751

1749:                                             ; preds = %1736
  %1750 = load double, ptr %17, align 8, !tbaa !11
  br label %1753

1751:                                             ; preds = %1736
  %1752 = load double, ptr %18, align 8, !tbaa !11
  br label %1753

1753:                                             ; preds = %1751, %1749
  %1754 = phi double [ %1750, %1749 ], [ %1752, %1751 ]
  store double %1754, ptr %32, align 8, !tbaa !11
  br label %1755

1755:                                             ; preds = %1753
  %1756 = load i64, ptr %20, align 8, !tbaa !9
  %1757 = add nsw i64 %1756, 1
  store i64 %1757, ptr %20, align 8, !tbaa !9
  br label %1732, !llvm.loop !51

1758:                                             ; preds = %1732
  br label %1759

1759:                                             ; preds = %1758
  %1760 = load i64, ptr %21, align 8, !tbaa !9
  %1761 = add nsw i64 %1760, 1
  store i64 %1761, ptr %21, align 8, !tbaa !9
  br label %1725, !llvm.loop !52

1762:                                             ; preds = %1725
  %1763 = load i64, ptr %22, align 8, !tbaa !9
  store i64 %1763, ptr %21, align 8, !tbaa !9
  %1764 = load i64, ptr %21, align 8, !tbaa !9
  %1765 = load i64, ptr %27, align 8, !tbaa !9
  %1766 = mul nsw i64 %1764, %1765
  store i64 %1766, ptr %14, align 8, !tbaa !9
  %1767 = load double, ptr %32, align 8, !tbaa !11
  store double %1767, ptr %18, align 8, !tbaa !11
  %1768 = load ptr, ptr %12, align 8, !tbaa !5
  %1769 = load i64, ptr %14, align 8, !tbaa !9
  %1770 = getelementptr inbounds %struct.doublecomplex, ptr %1768, i64 %1769
  %1771 = getelementptr inbounds %struct.doublecomplex, ptr %1770, i32 0, i32 0
  %1772 = load double, ptr %1771, align 8, !tbaa !13
  store double %1772, ptr %17, align 8, !tbaa !11
  %1773 = load double, ptr %17, align 8, !tbaa !11
  %1774 = fcmp oge double %1773, 0.000000e+00
  br i1 %1774, label %1775, label %1777

1775:                                             ; preds = %1762
  %1776 = load double, ptr %17, align 8, !tbaa !11
  br label %1780

1777:                                             ; preds = %1762
  %1778 = load double, ptr %17, align 8, !tbaa !11
  %1779 = fneg double %1778
  br label %1780

1780:                                             ; preds = %1777, %1775
  %1781 = phi double [ %1776, %1775 ], [ %1779, %1777 ]
  store double %1781, ptr %19, align 8, !tbaa !11
  %1782 = load double, ptr %18, align 8, !tbaa !11
  %1783 = load double, ptr %19, align 8, !tbaa !11
  %1784 = fcmp oge double %1782, %1783
  br i1 %1784, label %1785, label %1787

1785:                                             ; preds = %1780
  %1786 = load double, ptr %18, align 8, !tbaa !11
  br label %1789

1787:                                             ; preds = %1780
  %1788 = load double, ptr %19, align 8, !tbaa !11
  br label %1789

1789:                                             ; preds = %1787, %1785
  %1790 = phi double [ %1786, %1785 ], [ %1788, %1787 ]
  store double %1790, ptr %32, align 8, !tbaa !11
  %1791 = load i64, ptr %22, align 8, !tbaa !9
  %1792 = sub nsw i64 %1791, 1
  store i64 %1792, ptr %14, align 8, !tbaa !9
  store i64 1, ptr %20, align 8, !tbaa !9
  br label %1793

1793:                                             ; preds = %1816, %1789
  %1794 = load i64, ptr %20, align 8, !tbaa !9
  %1795 = load i64, ptr %14, align 8, !tbaa !9
  %1796 = icmp sle i64 %1794, %1795
  br i1 %1796, label %1797, label %1819

1797:                                             ; preds = %1793
  %1798 = load double, ptr %32, align 8, !tbaa !11
  store double %1798, ptr %17, align 8, !tbaa !11
  %1799 = load ptr, ptr %12, align 8, !tbaa !5
  %1800 = load i64, ptr %20, align 8, !tbaa !9
  %1801 = load i64, ptr %21, align 8, !tbaa !9
  %1802 = load i64, ptr %27, align 8, !tbaa !9
  %1803 = mul nsw i64 %1801, %1802
  %1804 = add nsw i64 %1800, %1803
  %1805 = getelementptr inbounds %struct.doublecomplex, ptr %1799, i64 %1804
  %1806 = call double @z_abs(ptr noundef %1805)
  store double %1806, ptr %18, align 8, !tbaa !11
  %1807 = load double, ptr %17, align 8, !tbaa !11
  %1808 = load double, ptr %18, align 8, !tbaa !11
  %1809 = fcmp oge double %1807, %1808
  br i1 %1809, label %1810, label %1812

1810:                                             ; preds = %1797
  %1811 = load double, ptr %17, align 8, !tbaa !11
  br label %1814

1812:                                             ; preds = %1797
  %1813 = load double, ptr %18, align 8, !tbaa !11
  br label %1814

1814:                                             ; preds = %1812, %1810
  %1815 = phi double [ %1811, %1810 ], [ %1813, %1812 ]
  store double %1815, ptr %32, align 8, !tbaa !11
  br label %1816

1816:                                             ; preds = %1814
  %1817 = load i64, ptr %20, align 8, !tbaa !9
  %1818 = add nsw i64 %1817, 1
  store i64 %1818, ptr %20, align 8, !tbaa !9
  br label %1793, !llvm.loop !53

1819:                                             ; preds = %1793
  %1820 = load ptr, ptr %11, align 8, !tbaa !5
  %1821 = load i64, ptr %1820, align 8, !tbaa !9
  %1822 = sub nsw i64 %1821, 1
  store i64 %1822, ptr %14, align 8, !tbaa !9
  %1823 = load i64, ptr %22, align 8, !tbaa !9
  %1824 = add nsw i64 %1823, 1
  store i64 %1824, ptr %21, align 8, !tbaa !9
  br label %1825

1825:                                             ; preds = %1959, %1819
  %1826 = load i64, ptr %21, align 8, !tbaa !9
  %1827 = load i64, ptr %14, align 8, !tbaa !9
  %1828 = icmp sle i64 %1826, %1827
  br i1 %1828, label %1829, label %1962

1829:                                             ; preds = %1825
  %1830 = load i64, ptr %21, align 8, !tbaa !9
  %1831 = load i64, ptr %22, align 8, !tbaa !9
  %1832 = sub nsw i64 %1830, %1831
  %1833 = sub nsw i64 %1832, 2
  store i64 %1833, ptr %15, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %1834

1834:                                             ; preds = %1857, %1829
  %1835 = load i64, ptr %20, align 8, !tbaa !9
  %1836 = load i64, ptr %15, align 8, !tbaa !9
  %1837 = icmp sle i64 %1835, %1836
  br i1 %1837, label %1838, label %1860

1838:                                             ; preds = %1834
  %1839 = load double, ptr %32, align 8, !tbaa !11
  store double %1839, ptr %17, align 8, !tbaa !11
  %1840 = load ptr, ptr %12, align 8, !tbaa !5
  %1841 = load i64, ptr %20, align 8, !tbaa !9
  %1842 = load i64, ptr %21, align 8, !tbaa !9
  %1843 = load i64, ptr %27, align 8, !tbaa !9
  %1844 = mul nsw i64 %1842, %1843
  %1845 = add nsw i64 %1841, %1844
  %1846 = getelementptr inbounds %struct.doublecomplex, ptr %1840, i64 %1845
  %1847 = call double @z_abs(ptr noundef %1846)
  store double %1847, ptr %18, align 8, !tbaa !11
  %1848 = load double, ptr %17, align 8, !tbaa !11
  %1849 = load double, ptr %18, align 8, !tbaa !11
  %1850 = fcmp oge double %1848, %1849
  br i1 %1850, label %1851, label %1853

1851:                                             ; preds = %1838
  %1852 = load double, ptr %17, align 8, !tbaa !11
  br label %1855

1853:                                             ; preds = %1838
  %1854 = load double, ptr %18, align 8, !tbaa !11
  br label %1855

1855:                                             ; preds = %1853, %1851
  %1856 = phi double [ %1852, %1851 ], [ %1854, %1853 ]
  store double %1856, ptr %32, align 8, !tbaa !11
  br label %1857

1857:                                             ; preds = %1855
  %1858 = load i64, ptr %20, align 8, !tbaa !9
  %1859 = add nsw i64 %1858, 1
  store i64 %1859, ptr %20, align 8, !tbaa !9
  br label %1834, !llvm.loop !54

1860:                                             ; preds = %1834
  %1861 = load i64, ptr %21, align 8, !tbaa !9
  %1862 = load i64, ptr %22, align 8, !tbaa !9
  %1863 = sub nsw i64 %1861, %1862
  %1864 = sub nsw i64 %1863, 1
  store i64 %1864, ptr %20, align 8, !tbaa !9
  %1865 = load i64, ptr %20, align 8, !tbaa !9
  %1866 = load i64, ptr %21, align 8, !tbaa !9
  %1867 = load i64, ptr %27, align 8, !tbaa !9
  %1868 = mul nsw i64 %1866, %1867
  %1869 = add nsw i64 %1865, %1868
  store i64 %1869, ptr %15, align 8, !tbaa !9
  %1870 = load double, ptr %32, align 8, !tbaa !11
  store double %1870, ptr %18, align 8, !tbaa !11
  %1871 = load ptr, ptr %12, align 8, !tbaa !5
  %1872 = load i64, ptr %15, align 8, !tbaa !9
  %1873 = getelementptr inbounds %struct.doublecomplex, ptr %1871, i64 %1872
  %1874 = getelementptr inbounds %struct.doublecomplex, ptr %1873, i32 0, i32 0
  %1875 = load double, ptr %1874, align 8, !tbaa !13
  store double %1875, ptr %17, align 8, !tbaa !11
  %1876 = load double, ptr %17, align 8, !tbaa !11
  %1877 = fcmp oge double %1876, 0.000000e+00
  br i1 %1877, label %1878, label %1880

1878:                                             ; preds = %1860
  %1879 = load double, ptr %17, align 8, !tbaa !11
  br label %1883

1880:                                             ; preds = %1860
  %1881 = load double, ptr %17, align 8, !tbaa !11
  %1882 = fneg double %1881
  br label %1883

1883:                                             ; preds = %1880, %1878
  %1884 = phi double [ %1879, %1878 ], [ %1882, %1880 ]
  store double %1884, ptr %19, align 8, !tbaa !11
  %1885 = load double, ptr %18, align 8, !tbaa !11
  %1886 = load double, ptr %19, align 8, !tbaa !11
  %1887 = fcmp oge double %1885, %1886
  br i1 %1887, label %1888, label %1890

1888:                                             ; preds = %1883
  %1889 = load double, ptr %18, align 8, !tbaa !11
  br label %1892

1890:                                             ; preds = %1883
  %1891 = load double, ptr %19, align 8, !tbaa !11
  br label %1892

1892:                                             ; preds = %1890, %1888
  %1893 = phi double [ %1889, %1888 ], [ %1891, %1890 ]
  store double %1893, ptr %32, align 8, !tbaa !11
  %1894 = load i64, ptr %21, align 8, !tbaa !9
  %1895 = load i64, ptr %22, align 8, !tbaa !9
  %1896 = sub nsw i64 %1894, %1895
  store i64 %1896, ptr %20, align 8, !tbaa !9
  %1897 = load i64, ptr %20, align 8, !tbaa !9
  %1898 = load i64, ptr %21, align 8, !tbaa !9
  %1899 = load i64, ptr %27, align 8, !tbaa !9
  %1900 = mul nsw i64 %1898, %1899
  %1901 = add nsw i64 %1897, %1900
  store i64 %1901, ptr %15, align 8, !tbaa !9
  %1902 = load double, ptr %32, align 8, !tbaa !11
  store double %1902, ptr %18, align 8, !tbaa !11
  %1903 = load ptr, ptr %12, align 8, !tbaa !5
  %1904 = load i64, ptr %15, align 8, !tbaa !9
  %1905 = getelementptr inbounds %struct.doublecomplex, ptr %1903, i64 %1904
  %1906 = getelementptr inbounds %struct.doublecomplex, ptr %1905, i32 0, i32 0
  %1907 = load double, ptr %1906, align 8, !tbaa !13
  store double %1907, ptr %17, align 8, !tbaa !11
  %1908 = load double, ptr %17, align 8, !tbaa !11
  %1909 = fcmp oge double %1908, 0.000000e+00
  br i1 %1909, label %1910, label %1912

1910:                                             ; preds = %1892
  %1911 = load double, ptr %17, align 8, !tbaa !11
  br label %1915

1912:                                             ; preds = %1892
  %1913 = load double, ptr %17, align 8, !tbaa !11
  %1914 = fneg double %1913
  br label %1915

1915:                                             ; preds = %1912, %1910
  %1916 = phi double [ %1911, %1910 ], [ %1914, %1912 ]
  store double %1916, ptr %19, align 8, !tbaa !11
  %1917 = load double, ptr %18, align 8, !tbaa !11
  %1918 = load double, ptr %19, align 8, !tbaa !11
  %1919 = fcmp oge double %1917, %1918
  br i1 %1919, label %1920, label %1922

1920:                                             ; preds = %1915
  %1921 = load double, ptr %18, align 8, !tbaa !11
  br label %1924

1922:                                             ; preds = %1915
  %1923 = load double, ptr %19, align 8, !tbaa !11
  br label %1924

1924:                                             ; preds = %1922, %1920
  %1925 = phi double [ %1921, %1920 ], [ %1923, %1922 ]
  store double %1925, ptr %32, align 8, !tbaa !11
  %1926 = load i64, ptr %22, align 8, !tbaa !9
  %1927 = sub nsw i64 %1926, 1
  store i64 %1927, ptr %15, align 8, !tbaa !9
  %1928 = load i64, ptr %21, align 8, !tbaa !9
  %1929 = load i64, ptr %22, align 8, !tbaa !9
  %1930 = sub nsw i64 %1928, %1929
  %1931 = add nsw i64 %1930, 1
  store i64 %1931, ptr %20, align 8, !tbaa !9
  br label %1932

1932:                                             ; preds = %1955, %1924
  %1933 = load i64, ptr %20, align 8, !tbaa !9
  %1934 = load i64, ptr %15, align 8, !tbaa !9
  %1935 = icmp sle i64 %1933, %1934
  br i1 %1935, label %1936, label %1958

1936:                                             ; preds = %1932
  %1937 = load double, ptr %32, align 8, !tbaa !11
  store double %1937, ptr %17, align 8, !tbaa !11
  %1938 = load ptr, ptr %12, align 8, !tbaa !5
  %1939 = load i64, ptr %20, align 8, !tbaa !9
  %1940 = load i64, ptr %21, align 8, !tbaa !9
  %1941 = load i64, ptr %27, align 8, !tbaa !9
  %1942 = mul nsw i64 %1940, %1941
  %1943 = add nsw i64 %1939, %1942
  %1944 = getelementptr inbounds %struct.doublecomplex, ptr %1938, i64 %1943
  %1945 = call double @z_abs(ptr noundef %1944)
  store double %1945, ptr %18, align 8, !tbaa !11
  %1946 = load double, ptr %17, align 8, !tbaa !11
  %1947 = load double, ptr %18, align 8, !tbaa !11
  %1948 = fcmp oge double %1946, %1947
  br i1 %1948, label %1949, label %1951

1949:                                             ; preds = %1936
  %1950 = load double, ptr %17, align 8, !tbaa !11
  br label %1953

1951:                                             ; preds = %1936
  %1952 = load double, ptr %18, align 8, !tbaa !11
  br label %1953

1953:                                             ; preds = %1951, %1949
  %1954 = phi double [ %1950, %1949 ], [ %1952, %1951 ]
  store double %1954, ptr %32, align 8, !tbaa !11
  br label %1955

1955:                                             ; preds = %1953
  %1956 = load i64, ptr %20, align 8, !tbaa !9
  %1957 = add nsw i64 %1956, 1
  store i64 %1957, ptr %20, align 8, !tbaa !9
  br label %1932, !llvm.loop !55

1958:                                             ; preds = %1932
  br label %1959

1959:                                             ; preds = %1958
  %1960 = load i64, ptr %21, align 8, !tbaa !9
  %1961 = add nsw i64 %1960, 1
  store i64 %1961, ptr %21, align 8, !tbaa !9
  br label %1825, !llvm.loop !56

1962:                                             ; preds = %1825
  %1963 = load ptr, ptr %11, align 8, !tbaa !5
  %1964 = load i64, ptr %1963, align 8, !tbaa !9
  store i64 %1964, ptr %21, align 8, !tbaa !9
  %1965 = load i64, ptr %22, align 8, !tbaa !9
  %1966 = sub nsw i64 %1965, 2
  store i64 %1966, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %1967

1967:                                             ; preds = %1990, %1962
  %1968 = load i64, ptr %20, align 8, !tbaa !9
  %1969 = load i64, ptr %14, align 8, !tbaa !9
  %1970 = icmp sle i64 %1968, %1969
  br i1 %1970, label %1971, label %1993

1971:                                             ; preds = %1967
  %1972 = load double, ptr %32, align 8, !tbaa !11
  store double %1972, ptr %17, align 8, !tbaa !11
  %1973 = load ptr, ptr %12, align 8, !tbaa !5
  %1974 = load i64, ptr %20, align 8, !tbaa !9
  %1975 = load i64, ptr %21, align 8, !tbaa !9
  %1976 = load i64, ptr %27, align 8, !tbaa !9
  %1977 = mul nsw i64 %1975, %1976
  %1978 = add nsw i64 %1974, %1977
  %1979 = getelementptr inbounds %struct.doublecomplex, ptr %1973, i64 %1978
  %1980 = call double @z_abs(ptr noundef %1979)
  store double %1980, ptr %18, align 8, !tbaa !11
  %1981 = load double, ptr %17, align 8, !tbaa !11
  %1982 = load double, ptr %18, align 8, !tbaa !11
  %1983 = fcmp oge double %1981, %1982
  br i1 %1983, label %1984, label %1986

1984:                                             ; preds = %1971
  %1985 = load double, ptr %17, align 8, !tbaa !11
  br label %1988

1986:                                             ; preds = %1971
  %1987 = load double, ptr %18, align 8, !tbaa !11
  br label %1988

1988:                                             ; preds = %1986, %1984
  %1989 = phi double [ %1985, %1984 ], [ %1987, %1986 ]
  store double %1989, ptr %32, align 8, !tbaa !11
  br label %1990

1990:                                             ; preds = %1988
  %1991 = load i64, ptr %20, align 8, !tbaa !9
  %1992 = add nsw i64 %1991, 1
  store i64 %1992, ptr %20, align 8, !tbaa !9
  br label %1967, !llvm.loop !57

1993:                                             ; preds = %1967
  %1994 = load i64, ptr %22, align 8, !tbaa !9
  %1995 = sub nsw i64 %1994, 1
  store i64 %1995, ptr %20, align 8, !tbaa !9
  %1996 = load i64, ptr %20, align 8, !tbaa !9
  %1997 = load i64, ptr %21, align 8, !tbaa !9
  %1998 = load i64, ptr %27, align 8, !tbaa !9
  %1999 = mul nsw i64 %1997, %1998
  %2000 = add nsw i64 %1996, %1999
  store i64 %2000, ptr %14, align 8, !tbaa !9
  %2001 = load double, ptr %32, align 8, !tbaa !11
  store double %2001, ptr %18, align 8, !tbaa !11
  %2002 = load ptr, ptr %12, align 8, !tbaa !5
  %2003 = load i64, ptr %14, align 8, !tbaa !9
  %2004 = getelementptr inbounds %struct.doublecomplex, ptr %2002, i64 %2003
  %2005 = getelementptr inbounds %struct.doublecomplex, ptr %2004, i32 0, i32 0
  %2006 = load double, ptr %2005, align 8, !tbaa !13
  store double %2006, ptr %17, align 8, !tbaa !11
  %2007 = load double, ptr %17, align 8, !tbaa !11
  %2008 = fcmp oge double %2007, 0.000000e+00
  br i1 %2008, label %2009, label %2011

2009:                                             ; preds = %1993
  %2010 = load double, ptr %17, align 8, !tbaa !11
  br label %2014

2011:                                             ; preds = %1993
  %2012 = load double, ptr %17, align 8, !tbaa !11
  %2013 = fneg double %2012
  br label %2014

2014:                                             ; preds = %2011, %2009
  %2015 = phi double [ %2010, %2009 ], [ %2013, %2011 ]
  store double %2015, ptr %19, align 8, !tbaa !11
  %2016 = load double, ptr %18, align 8, !tbaa !11
  %2017 = load double, ptr %19, align 8, !tbaa !11
  %2018 = fcmp oge double %2016, %2017
  br i1 %2018, label %2019, label %2021

2019:                                             ; preds = %2014
  %2020 = load double, ptr %18, align 8, !tbaa !11
  br label %2023

2021:                                             ; preds = %2014
  %2022 = load double, ptr %19, align 8, !tbaa !11
  br label %2023

2023:                                             ; preds = %2021, %2019
  %2024 = phi double [ %2020, %2019 ], [ %2022, %2021 ]
  store double %2024, ptr %32, align 8, !tbaa !11
  br label %2025

2025:                                             ; preds = %2023, %1721
  br label %2026

2026:                                             ; preds = %2025, %1424
  br label %2027

2027:                                             ; preds = %2026, %967
  br label %5275

2028:                                             ; preds = %74
  %2029 = load ptr, ptr %8, align 8, !tbaa !5
  %2030 = call i64 @lsame_(ptr noundef %2029, ptr noundef @.str.3)
  %2031 = icmp ne i64 %2030, 0
  br i1 %2031, label %2041, label %2032

2032:                                             ; preds = %2028
  %2033 = load ptr, ptr %8, align 8, !tbaa !5
  %2034 = call i64 @lsame_(ptr noundef %2033, ptr noundef @.str.4)
  %2035 = icmp ne i64 %2034, 0
  br i1 %2035, label %2041, label %2036

2036:                                             ; preds = %2032
  %2037 = load ptr, ptr %8, align 8, !tbaa !5
  %2038 = load i8, ptr %2037, align 1, !tbaa !58
  %2039 = zext i8 %2038 to i32
  %2040 = icmp eq i32 %2039, 49
  br i1 %2040, label %2041, label %3854

2041:                                             ; preds = %2036, %2032, %2028
  %2042 = load i64, ptr %28, align 8, !tbaa !9
  %2043 = icmp eq i64 %2042, 1
  br i1 %2043, label %2044, label %2702

2044:                                             ; preds = %2041
  %2045 = load ptr, ptr %11, align 8, !tbaa !5
  %2046 = load i64, ptr %2045, align 8, !tbaa !9
  %2047 = sdiv i64 %2046, 2
  store i64 %2047, ptr %22, align 8, !tbaa !9
  %2048 = load i64, ptr %29, align 8, !tbaa !9
  %2049 = icmp eq i64 %2048, 1
  br i1 %2049, label %2050, label %2382

2050:                                             ; preds = %2044
  %2051 = load i64, ptr %30, align 8, !tbaa !9
  %2052 = icmp eq i64 %2051, 0
  br i1 %2052, label %2053, label %2216

2053:                                             ; preds = %2050
  %2054 = load i64, ptr %22, align 8, !tbaa !9
  %2055 = sub nsw i64 %2054, 1
  store i64 %2055, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %2056

2056:                                             ; preds = %2064, %2053
  %2057 = load i64, ptr %20, align 8, !tbaa !9
  %2058 = load i64, ptr %14, align 8, !tbaa !9
  %2059 = icmp sle i64 %2057, %2058
  br i1 %2059, label %2060, label %2067

2060:                                             ; preds = %2056
  %2061 = load ptr, ptr %13, align 8, !tbaa !5
  %2062 = load i64, ptr %20, align 8, !tbaa !9
  %2063 = getelementptr inbounds double, ptr %2061, i64 %2062
  store double 0.000000e+00, ptr %2063, align 8, !tbaa !11
  br label %2064

2064:                                             ; preds = %2060
  %2065 = load i64, ptr %20, align 8, !tbaa !9
  %2066 = add nsw i64 %2065, 1
  store i64 %2066, ptr %20, align 8, !tbaa !9
  br label %2056, !llvm.loop !59

2067:                                             ; preds = %2056
  %2068 = load i64, ptr %22, align 8, !tbaa !9
  store i64 %2068, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %2069

2069:                                             ; preds = %2203, %2067
  %2070 = load i64, ptr %21, align 8, !tbaa !9
  %2071 = load i64, ptr %14, align 8, !tbaa !9
  %2072 = icmp sle i64 %2070, %2071
  br i1 %2072, label %2073, label %2206

2073:                                             ; preds = %2069
  store double 0.000000e+00, ptr %24, align 8, !tbaa !11
  %2074 = load i64, ptr %22, align 8, !tbaa !9
  %2075 = load i64, ptr %21, align 8, !tbaa !9
  %2076 = add nsw i64 %2074, %2075
  %2077 = sub nsw i64 %2076, 1
  store i64 %2077, ptr %15, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %2078

2078:                                             ; preds = %2100, %2073
  %2079 = load i64, ptr %20, align 8, !tbaa !9
  %2080 = load i64, ptr %15, align 8, !tbaa !9
  %2081 = icmp sle i64 %2079, %2080
  br i1 %2081, label %2082, label %2103

2082:                                             ; preds = %2078
  %2083 = load ptr, ptr %12, align 8, !tbaa !5
  %2084 = load i64, ptr %20, align 8, !tbaa !9
  %2085 = load i64, ptr %21, align 8, !tbaa !9
  %2086 = load i64, ptr %27, align 8, !tbaa !9
  %2087 = mul nsw i64 %2085, %2086
  %2088 = add nsw i64 %2084, %2087
  %2089 = getelementptr inbounds %struct.doublecomplex, ptr %2083, i64 %2088
  %2090 = call double @z_abs(ptr noundef %2089)
  store double %2090, ptr %26, align 8, !tbaa !11
  %2091 = load double, ptr %26, align 8, !tbaa !11
  %2092 = load double, ptr %24, align 8, !tbaa !11
  %2093 = fadd double %2092, %2091
  store double %2093, ptr %24, align 8, !tbaa !11
  %2094 = load double, ptr %26, align 8, !tbaa !11
  %2095 = load ptr, ptr %13, align 8, !tbaa !5
  %2096 = load i64, ptr %20, align 8, !tbaa !9
  %2097 = getelementptr inbounds double, ptr %2095, i64 %2096
  %2098 = load double, ptr %2097, align 8, !tbaa !11
  %2099 = fadd double %2098, %2094
  store double %2099, ptr %2097, align 8, !tbaa !11
  br label %2100

2100:                                             ; preds = %2082
  %2101 = load i64, ptr %20, align 8, !tbaa !9
  %2102 = add nsw i64 %2101, 1
  store i64 %2102, ptr %20, align 8, !tbaa !9
  br label %2078, !llvm.loop !60

2103:                                             ; preds = %2078
  %2104 = load i64, ptr %20, align 8, !tbaa !9
  %2105 = load i64, ptr %21, align 8, !tbaa !9
  %2106 = load i64, ptr %27, align 8, !tbaa !9
  %2107 = mul nsw i64 %2105, %2106
  %2108 = add nsw i64 %2104, %2107
  store i64 %2108, ptr %15, align 8, !tbaa !9
  %2109 = load ptr, ptr %12, align 8, !tbaa !5
  %2110 = load i64, ptr %15, align 8, !tbaa !9
  %2111 = getelementptr inbounds %struct.doublecomplex, ptr %2109, i64 %2110
  %2112 = getelementptr inbounds %struct.doublecomplex, ptr %2111, i32 0, i32 0
  %2113 = load double, ptr %2112, align 8, !tbaa !13
  store double %2113, ptr %17, align 8, !tbaa !11
  %2114 = load double, ptr %17, align 8, !tbaa !11
  %2115 = fcmp oge double %2114, 0.000000e+00
  br i1 %2115, label %2116, label %2118

2116:                                             ; preds = %2103
  %2117 = load double, ptr %17, align 8, !tbaa !11
  br label %2121

2118:                                             ; preds = %2103
  %2119 = load double, ptr %17, align 8, !tbaa !11
  %2120 = fneg double %2119
  br label %2121

2121:                                             ; preds = %2118, %2116
  %2122 = phi double [ %2117, %2116 ], [ %2120, %2118 ]
  store double %2122, ptr %26, align 8, !tbaa !11
  %2123 = load double, ptr %24, align 8, !tbaa !11
  %2124 = load double, ptr %26, align 8, !tbaa !11
  %2125 = fadd double %2123, %2124
  %2126 = load ptr, ptr %13, align 8, !tbaa !5
  %2127 = load i64, ptr %21, align 8, !tbaa !9
  %2128 = load i64, ptr %22, align 8, !tbaa !9
  %2129 = add nsw i64 %2127, %2128
  %2130 = getelementptr inbounds double, ptr %2126, i64 %2129
  store double %2125, ptr %2130, align 8, !tbaa !11
  %2131 = load i64, ptr %20, align 8, !tbaa !9
  %2132 = load i64, ptr %22, align 8, !tbaa !9
  %2133 = load i64, ptr %22, align 8, !tbaa !9
  %2134 = add nsw i64 %2132, %2133
  %2135 = icmp eq i64 %2131, %2134
  br i1 %2135, label %2136, label %2137

2136:                                             ; preds = %2121
  br label %2207

2137:                                             ; preds = %2121
  %2138 = load i64, ptr %20, align 8, !tbaa !9
  %2139 = add nsw i64 %2138, 1
  store i64 %2139, ptr %20, align 8, !tbaa !9
  %2140 = load i64, ptr %20, align 8, !tbaa !9
  %2141 = load i64, ptr %21, align 8, !tbaa !9
  %2142 = load i64, ptr %27, align 8, !tbaa !9
  %2143 = mul nsw i64 %2141, %2142
  %2144 = add nsw i64 %2140, %2143
  store i64 %2144, ptr %15, align 8, !tbaa !9
  %2145 = load ptr, ptr %12, align 8, !tbaa !5
  %2146 = load i64, ptr %15, align 8, !tbaa !9
  %2147 = getelementptr inbounds %struct.doublecomplex, ptr %2145, i64 %2146
  %2148 = getelementptr inbounds %struct.doublecomplex, ptr %2147, i32 0, i32 0
  %2149 = load double, ptr %2148, align 8, !tbaa !13
  store double %2149, ptr %17, align 8, !tbaa !11
  %2150 = load double, ptr %17, align 8, !tbaa !11
  %2151 = fcmp oge double %2150, 0.000000e+00
  br i1 %2151, label %2152, label %2154

2152:                                             ; preds = %2137
  %2153 = load double, ptr %17, align 8, !tbaa !11
  br label %2157

2154:                                             ; preds = %2137
  %2155 = load double, ptr %17, align 8, !tbaa !11
  %2156 = fneg double %2155
  br label %2157

2157:                                             ; preds = %2154, %2152
  %2158 = phi double [ %2153, %2152 ], [ %2156, %2154 ]
  store double %2158, ptr %26, align 8, !tbaa !11
  %2159 = load double, ptr %26, align 8, !tbaa !11
  %2160 = load ptr, ptr %13, align 8, !tbaa !5
  %2161 = load i64, ptr %21, align 8, !tbaa !9
  %2162 = getelementptr inbounds double, ptr %2160, i64 %2161
  %2163 = load double, ptr %2162, align 8, !tbaa !11
  %2164 = fadd double %2163, %2159
  store double %2164, ptr %2162, align 8, !tbaa !11
  store double 0.000000e+00, ptr %24, align 8, !tbaa !11
  %2165 = load i64, ptr %22, align 8, !tbaa !9
  %2166 = sub nsw i64 %2165, 1
  store i64 %2166, ptr %15, align 8, !tbaa !9
  %2167 = load i64, ptr %21, align 8, !tbaa !9
  %2168 = add nsw i64 %2167, 1
  store i64 %2168, ptr %23, align 8, !tbaa !9
  br label %2169

2169:                                             ; preds = %2193, %2157
  %2170 = load i64, ptr %23, align 8, !tbaa !9
  %2171 = load i64, ptr %15, align 8, !tbaa !9
  %2172 = icmp sle i64 %2170, %2171
  br i1 %2172, label %2173, label %2196

2173:                                             ; preds = %2169
  %2174 = load i64, ptr %20, align 8, !tbaa !9
  %2175 = add nsw i64 %2174, 1
  store i64 %2175, ptr %20, align 8, !tbaa !9
  %2176 = load ptr, ptr %12, align 8, !tbaa !5
  %2177 = load i64, ptr %20, align 8, !tbaa !9
  %2178 = load i64, ptr %21, align 8, !tbaa !9
  %2179 = load i64, ptr %27, align 8, !tbaa !9
  %2180 = mul nsw i64 %2178, %2179
  %2181 = add nsw i64 %2177, %2180
  %2182 = getelementptr inbounds %struct.doublecomplex, ptr %2176, i64 %2181
  %2183 = call double @z_abs(ptr noundef %2182)
  store double %2183, ptr %26, align 8, !tbaa !11
  %2184 = load double, ptr %26, align 8, !tbaa !11
  %2185 = load double, ptr %24, align 8, !tbaa !11
  %2186 = fadd double %2185, %2184
  store double %2186, ptr %24, align 8, !tbaa !11
  %2187 = load double, ptr %26, align 8, !tbaa !11
  %2188 = load ptr, ptr %13, align 8, !tbaa !5
  %2189 = load i64, ptr %23, align 8, !tbaa !9
  %2190 = getelementptr inbounds double, ptr %2188, i64 %2189
  %2191 = load double, ptr %2190, align 8, !tbaa !11
  %2192 = fadd double %2191, %2187
  store double %2192, ptr %2190, align 8, !tbaa !11
  br label %2193

2193:                                             ; preds = %2173
  %2194 = load i64, ptr %23, align 8, !tbaa !9
  %2195 = add nsw i64 %2194, 1
  store i64 %2195, ptr %23, align 8, !tbaa !9
  br label %2169, !llvm.loop !61

2196:                                             ; preds = %2169
  %2197 = load double, ptr %24, align 8, !tbaa !11
  %2198 = load ptr, ptr %13, align 8, !tbaa !5
  %2199 = load i64, ptr %21, align 8, !tbaa !9
  %2200 = getelementptr inbounds double, ptr %2198, i64 %2199
  %2201 = load double, ptr %2200, align 8, !tbaa !11
  %2202 = fadd double %2201, %2197
  store double %2202, ptr %2200, align 8, !tbaa !11
  br label %2203

2203:                                             ; preds = %2196
  %2204 = load i64, ptr %21, align 8, !tbaa !9
  %2205 = add nsw i64 %2204, 1
  store i64 %2205, ptr %21, align 8, !tbaa !9
  br label %2069, !llvm.loop !62

2206:                                             ; preds = %2069
  br label %2207

2207:                                             ; preds = %2206, %2136
  %2208 = load ptr, ptr %11, align 8, !tbaa !5
  %2209 = load ptr, ptr %13, align 8, !tbaa !5
  %2210 = call i64 @f2c_idamax(ptr noundef %2208, ptr noundef %2209, ptr noundef @c__1)
  store i64 %2210, ptr %20, align 8, !tbaa !9
  %2211 = load ptr, ptr %13, align 8, !tbaa !5
  %2212 = load i64, ptr %20, align 8, !tbaa !9
  %2213 = sub nsw i64 %2212, 1
  %2214 = getelementptr inbounds double, ptr %2211, i64 %2213
  %2215 = load double, ptr %2214, align 8, !tbaa !11
  store double %2215, ptr %32, align 8, !tbaa !11
  br label %2381

2216:                                             ; preds = %2050
  %2217 = load i64, ptr %22, align 8, !tbaa !9
  %2218 = add nsw i64 %2217, 1
  store i64 %2218, ptr %22, align 8, !tbaa !9
  %2219 = load ptr, ptr %11, align 8, !tbaa !5
  %2220 = load i64, ptr %2219, align 8, !tbaa !9
  %2221 = sub nsw i64 %2220, 1
  store i64 %2221, ptr %14, align 8, !tbaa !9
  %2222 = load i64, ptr %22, align 8, !tbaa !9
  store i64 %2222, ptr %20, align 8, !tbaa !9
  br label %2223

2223:                                             ; preds = %2231, %2216
  %2224 = load i64, ptr %20, align 8, !tbaa !9
  %2225 = load i64, ptr %14, align 8, !tbaa !9
  %2226 = icmp sle i64 %2224, %2225
  br i1 %2226, label %2227, label %2234

2227:                                             ; preds = %2223
  %2228 = load ptr, ptr %13, align 8, !tbaa !5
  %2229 = load i64, ptr %20, align 8, !tbaa !9
  %2230 = getelementptr inbounds double, ptr %2228, i64 %2229
  store double 0.000000e+00, ptr %2230, align 8, !tbaa !11
  br label %2231

2231:                                             ; preds = %2227
  %2232 = load i64, ptr %20, align 8, !tbaa !9
  %2233 = add nsw i64 %2232, 1
  store i64 %2233, ptr %20, align 8, !tbaa !9
  br label %2223, !llvm.loop !63

2234:                                             ; preds = %2223
  %2235 = load i64, ptr %22, align 8, !tbaa !9
  %2236 = sub nsw i64 %2235, 1
  store i64 %2236, ptr %21, align 8, !tbaa !9
  br label %2237

2237:                                             ; preds = %2369, %2234
  %2238 = load i64, ptr %21, align 8, !tbaa !9
  %2239 = icmp sge i64 %2238, 0
  br i1 %2239, label %2240, label %2372

2240:                                             ; preds = %2237
  store double 0.000000e+00, ptr %24, align 8, !tbaa !11
  %2241 = load i64, ptr %21, align 8, !tbaa !9
  %2242 = sub nsw i64 %2241, 2
  store i64 %2242, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %2243

2243:                                             ; preds = %2267, %2240
  %2244 = load i64, ptr %20, align 8, !tbaa !9
  %2245 = load i64, ptr %14, align 8, !tbaa !9
  %2246 = icmp sle i64 %2244, %2245
  br i1 %2246, label %2247, label %2270

2247:                                             ; preds = %2243
  %2248 = load ptr, ptr %12, align 8, !tbaa !5
  %2249 = load i64, ptr %20, align 8, !tbaa !9
  %2250 = load i64, ptr %21, align 8, !tbaa !9
  %2251 = load i64, ptr %27, align 8, !tbaa !9
  %2252 = mul nsw i64 %2250, %2251
  %2253 = add nsw i64 %2249, %2252
  %2254 = getelementptr inbounds %struct.doublecomplex, ptr %2248, i64 %2253
  %2255 = call double @z_abs(ptr noundef %2254)
  store double %2255, ptr %26, align 8, !tbaa !11
  %2256 = load double, ptr %26, align 8, !tbaa !11
  %2257 = load double, ptr %24, align 8, !tbaa !11
  %2258 = fadd double %2257, %2256
  store double %2258, ptr %24, align 8, !tbaa !11
  %2259 = load double, ptr %26, align 8, !tbaa !11
  %2260 = load ptr, ptr %13, align 8, !tbaa !5
  %2261 = load i64, ptr %20, align 8, !tbaa !9
  %2262 = load i64, ptr %22, align 8, !tbaa !9
  %2263 = add nsw i64 %2261, %2262
  %2264 = getelementptr inbounds double, ptr %2260, i64 %2263
  %2265 = load double, ptr %2264, align 8, !tbaa !11
  %2266 = fadd double %2265, %2259
  store double %2266, ptr %2264, align 8, !tbaa !11
  br label %2267

2267:                                             ; preds = %2247
  %2268 = load i64, ptr %20, align 8, !tbaa !9
  %2269 = add nsw i64 %2268, 1
  store i64 %2269, ptr %20, align 8, !tbaa !9
  br label %2243, !llvm.loop !64

2270:                                             ; preds = %2243
  %2271 = load i64, ptr %21, align 8, !tbaa !9
  %2272 = icmp sgt i64 %2271, 0
  br i1 %2272, label %2273, label %2306

2273:                                             ; preds = %2270
  %2274 = load i64, ptr %20, align 8, !tbaa !9
  %2275 = load i64, ptr %21, align 8, !tbaa !9
  %2276 = load i64, ptr %27, align 8, !tbaa !9
  %2277 = mul nsw i64 %2275, %2276
  %2278 = add nsw i64 %2274, %2277
  store i64 %2278, ptr %14, align 8, !tbaa !9
  %2279 = load ptr, ptr %12, align 8, !tbaa !5
  %2280 = load i64, ptr %14, align 8, !tbaa !9
  %2281 = getelementptr inbounds %struct.doublecomplex, ptr %2279, i64 %2280
  %2282 = getelementptr inbounds %struct.doublecomplex, ptr %2281, i32 0, i32 0
  %2283 = load double, ptr %2282, align 8, !tbaa !13
  store double %2283, ptr %17, align 8, !tbaa !11
  %2284 = load double, ptr %17, align 8, !tbaa !11
  %2285 = fcmp oge double %2284, 0.000000e+00
  br i1 %2285, label %2286, label %2288

2286:                                             ; preds = %2273
  %2287 = load double, ptr %17, align 8, !tbaa !11
  br label %2291

2288:                                             ; preds = %2273
  %2289 = load double, ptr %17, align 8, !tbaa !11
  %2290 = fneg double %2289
  br label %2291

2291:                                             ; preds = %2288, %2286
  %2292 = phi double [ %2287, %2286 ], [ %2290, %2288 ]
  store double %2292, ptr %26, align 8, !tbaa !11
  %2293 = load double, ptr %26, align 8, !tbaa !11
  %2294 = load double, ptr %24, align 8, !tbaa !11
  %2295 = fadd double %2294, %2293
  store double %2295, ptr %24, align 8, !tbaa !11
  %2296 = load double, ptr %24, align 8, !tbaa !11
  %2297 = load ptr, ptr %13, align 8, !tbaa !5
  %2298 = load i64, ptr %20, align 8, !tbaa !9
  %2299 = load i64, ptr %22, align 8, !tbaa !9
  %2300 = add nsw i64 %2298, %2299
  %2301 = getelementptr inbounds double, ptr %2297, i64 %2300
  %2302 = load double, ptr %2301, align 8, !tbaa !11
  %2303 = fadd double %2302, %2296
  store double %2303, ptr %2301, align 8, !tbaa !11
  %2304 = load i64, ptr %20, align 8, !tbaa !9
  %2305 = add nsw i64 %2304, 1
  store i64 %2305, ptr %20, align 8, !tbaa !9
  br label %2306

2306:                                             ; preds = %2291, %2270
  %2307 = load i64, ptr %20, align 8, !tbaa !9
  %2308 = load i64, ptr %21, align 8, !tbaa !9
  %2309 = load i64, ptr %27, align 8, !tbaa !9
  %2310 = mul nsw i64 %2308, %2309
  %2311 = add nsw i64 %2307, %2310
  store i64 %2311, ptr %14, align 8, !tbaa !9
  %2312 = load ptr, ptr %12, align 8, !tbaa !5
  %2313 = load i64, ptr %14, align 8, !tbaa !9
  %2314 = getelementptr inbounds %struct.doublecomplex, ptr %2312, i64 %2313
  %2315 = getelementptr inbounds %struct.doublecomplex, ptr %2314, i32 0, i32 0
  %2316 = load double, ptr %2315, align 8, !tbaa !13
  store double %2316, ptr %17, align 8, !tbaa !11
  %2317 = load double, ptr %17, align 8, !tbaa !11
  %2318 = fcmp oge double %2317, 0.000000e+00
  br i1 %2318, label %2319, label %2321

2319:                                             ; preds = %2306
  %2320 = load double, ptr %17, align 8, !tbaa !11
  br label %2324

2321:                                             ; preds = %2306
  %2322 = load double, ptr %17, align 8, !tbaa !11
  %2323 = fneg double %2322
  br label %2324

2324:                                             ; preds = %2321, %2319
  %2325 = phi double [ %2320, %2319 ], [ %2323, %2321 ]
  store double %2325, ptr %26, align 8, !tbaa !11
  %2326 = load double, ptr %26, align 8, !tbaa !11
  %2327 = load ptr, ptr %13, align 8, !tbaa !5
  %2328 = load i64, ptr %21, align 8, !tbaa !9
  %2329 = getelementptr inbounds double, ptr %2327, i64 %2328
  store double %2326, ptr %2329, align 8, !tbaa !11
  store double 0.000000e+00, ptr %24, align 8, !tbaa !11
  %2330 = load ptr, ptr %11, align 8, !tbaa !5
  %2331 = load i64, ptr %2330, align 8, !tbaa !9
  %2332 = sub nsw i64 %2331, 1
  store i64 %2332, ptr %14, align 8, !tbaa !9
  %2333 = load i64, ptr %21, align 8, !tbaa !9
  %2334 = add nsw i64 %2333, 1
  store i64 %2334, ptr %23, align 8, !tbaa !9
  br label %2335

2335:                                             ; preds = %2359, %2324
  %2336 = load i64, ptr %23, align 8, !tbaa !9
  %2337 = load i64, ptr %14, align 8, !tbaa !9
  %2338 = icmp sle i64 %2336, %2337
  br i1 %2338, label %2339, label %2362

2339:                                             ; preds = %2335
  %2340 = load i64, ptr %20, align 8, !tbaa !9
  %2341 = add nsw i64 %2340, 1
  store i64 %2341, ptr %20, align 8, !tbaa !9
  %2342 = load ptr, ptr %12, align 8, !tbaa !5
  %2343 = load i64, ptr %20, align 8, !tbaa !9
  %2344 = load i64, ptr %21, align 8, !tbaa !9
  %2345 = load i64, ptr %27, align 8, !tbaa !9
  %2346 = mul nsw i64 %2344, %2345
  %2347 = add nsw i64 %2343, %2346
  %2348 = getelementptr inbounds %struct.doublecomplex, ptr %2342, i64 %2347
  %2349 = call double @z_abs(ptr noundef %2348)
  store double %2349, ptr %26, align 8, !tbaa !11
  %2350 = load double, ptr %26, align 8, !tbaa !11
  %2351 = load double, ptr %24, align 8, !tbaa !11
  %2352 = fadd double %2351, %2350
  store double %2352, ptr %24, align 8, !tbaa !11
  %2353 = load double, ptr %26, align 8, !tbaa !11
  %2354 = load ptr, ptr %13, align 8, !tbaa !5
  %2355 = load i64, ptr %23, align 8, !tbaa !9
  %2356 = getelementptr inbounds double, ptr %2354, i64 %2355
  %2357 = load double, ptr %2356, align 8, !tbaa !11
  %2358 = fadd double %2357, %2353
  store double %2358, ptr %2356, align 8, !tbaa !11
  br label %2359

2359:                                             ; preds = %2339
  %2360 = load i64, ptr %23, align 8, !tbaa !9
  %2361 = add nsw i64 %2360, 1
  store i64 %2361, ptr %23, align 8, !tbaa !9
  br label %2335, !llvm.loop !65

2362:                                             ; preds = %2335
  %2363 = load double, ptr %24, align 8, !tbaa !11
  %2364 = load ptr, ptr %13, align 8, !tbaa !5
  %2365 = load i64, ptr %21, align 8, !tbaa !9
  %2366 = getelementptr inbounds double, ptr %2364, i64 %2365
  %2367 = load double, ptr %2366, align 8, !tbaa !11
  %2368 = fadd double %2367, %2363
  store double %2368, ptr %2366, align 8, !tbaa !11
  br label %2369

2369:                                             ; preds = %2362
  %2370 = load i64, ptr %21, align 8, !tbaa !9
  %2371 = add nsw i64 %2370, -1
  store i64 %2371, ptr %21, align 8, !tbaa !9
  br label %2237, !llvm.loop !66

2372:                                             ; preds = %2237
  %2373 = load ptr, ptr %11, align 8, !tbaa !5
  %2374 = load ptr, ptr %13, align 8, !tbaa !5
  %2375 = call i64 @f2c_idamax(ptr noundef %2373, ptr noundef %2374, ptr noundef @c__1)
  store i64 %2375, ptr %20, align 8, !tbaa !9
  %2376 = load ptr, ptr %13, align 8, !tbaa !5
  %2377 = load i64, ptr %20, align 8, !tbaa !9
  %2378 = sub nsw i64 %2377, 1
  %2379 = getelementptr inbounds double, ptr %2376, i64 %2378
  %2380 = load double, ptr %2379, align 8, !tbaa !11
  store double %2380, ptr %32, align 8, !tbaa !11
  br label %2381

2381:                                             ; preds = %2372, %2207
  br label %2701

2382:                                             ; preds = %2044
  %2383 = load i64, ptr %30, align 8, !tbaa !9
  %2384 = icmp eq i64 %2383, 0
  br i1 %2384, label %2385, label %2541

2385:                                             ; preds = %2382
  %2386 = load i64, ptr %22, align 8, !tbaa !9
  %2387 = sub nsw i64 %2386, 1
  store i64 %2387, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %2388

2388:                                             ; preds = %2396, %2385
  %2389 = load i64, ptr %20, align 8, !tbaa !9
  %2390 = load i64, ptr %14, align 8, !tbaa !9
  %2391 = icmp sle i64 %2389, %2390
  br i1 %2391, label %2392, label %2399

2392:                                             ; preds = %2388
  %2393 = load ptr, ptr %13, align 8, !tbaa !5
  %2394 = load i64, ptr %20, align 8, !tbaa !9
  %2395 = getelementptr inbounds double, ptr %2393, i64 %2394
  store double 0.000000e+00, ptr %2395, align 8, !tbaa !11
  br label %2396

2396:                                             ; preds = %2392
  %2397 = load i64, ptr %20, align 8, !tbaa !9
  %2398 = add nsw i64 %2397, 1
  store i64 %2398, ptr %20, align 8, !tbaa !9
  br label %2388, !llvm.loop !67

2399:                                             ; preds = %2388
  %2400 = load i64, ptr %22, align 8, !tbaa !9
  %2401 = sub nsw i64 %2400, 1
  store i64 %2401, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %2402

2402:                                             ; preds = %2529, %2399
  %2403 = load i64, ptr %21, align 8, !tbaa !9
  %2404 = load i64, ptr %14, align 8, !tbaa !9
  %2405 = icmp sle i64 %2403, %2404
  br i1 %2405, label %2406, label %2532

2406:                                             ; preds = %2402
  store double 0.000000e+00, ptr %24, align 8, !tbaa !11
  %2407 = load i64, ptr %22, align 8, !tbaa !9
  %2408 = load i64, ptr %21, align 8, !tbaa !9
  %2409 = add nsw i64 %2407, %2408
  %2410 = sub nsw i64 %2409, 1
  store i64 %2410, ptr %15, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %2411

2411:                                             ; preds = %2433, %2406
  %2412 = load i64, ptr %20, align 8, !tbaa !9
  %2413 = load i64, ptr %15, align 8, !tbaa !9
  %2414 = icmp sle i64 %2412, %2413
  br i1 %2414, label %2415, label %2436

2415:                                             ; preds = %2411
  %2416 = load ptr, ptr %12, align 8, !tbaa !5
  %2417 = load i64, ptr %20, align 8, !tbaa !9
  %2418 = load i64, ptr %21, align 8, !tbaa !9
  %2419 = load i64, ptr %27, align 8, !tbaa !9
  %2420 = mul nsw i64 %2418, %2419
  %2421 = add nsw i64 %2417, %2420
  %2422 = getelementptr inbounds %struct.doublecomplex, ptr %2416, i64 %2421
  %2423 = call double @z_abs(ptr noundef %2422)
  store double %2423, ptr %26, align 8, !tbaa !11
  %2424 = load double, ptr %26, align 8, !tbaa !11
  %2425 = load double, ptr %24, align 8, !tbaa !11
  %2426 = fadd double %2425, %2424
  store double %2426, ptr %24, align 8, !tbaa !11
  %2427 = load double, ptr %26, align 8, !tbaa !11
  %2428 = load ptr, ptr %13, align 8, !tbaa !5
  %2429 = load i64, ptr %20, align 8, !tbaa !9
  %2430 = getelementptr inbounds double, ptr %2428, i64 %2429
  %2431 = load double, ptr %2430, align 8, !tbaa !11
  %2432 = fadd double %2431, %2427
  store double %2432, ptr %2430, align 8, !tbaa !11
  br label %2433

2433:                                             ; preds = %2415
  %2434 = load i64, ptr %20, align 8, !tbaa !9
  %2435 = add nsw i64 %2434, 1
  store i64 %2435, ptr %20, align 8, !tbaa !9
  br label %2411, !llvm.loop !68

2436:                                             ; preds = %2411
  %2437 = load i64, ptr %20, align 8, !tbaa !9
  %2438 = load i64, ptr %21, align 8, !tbaa !9
  %2439 = load i64, ptr %27, align 8, !tbaa !9
  %2440 = mul nsw i64 %2438, %2439
  %2441 = add nsw i64 %2437, %2440
  store i64 %2441, ptr %15, align 8, !tbaa !9
  %2442 = load ptr, ptr %12, align 8, !tbaa !5
  %2443 = load i64, ptr %15, align 8, !tbaa !9
  %2444 = getelementptr inbounds %struct.doublecomplex, ptr %2442, i64 %2443
  %2445 = getelementptr inbounds %struct.doublecomplex, ptr %2444, i32 0, i32 0
  %2446 = load double, ptr %2445, align 8, !tbaa !13
  store double %2446, ptr %17, align 8, !tbaa !11
  %2447 = load double, ptr %17, align 8, !tbaa !11
  %2448 = fcmp oge double %2447, 0.000000e+00
  br i1 %2448, label %2449, label %2451

2449:                                             ; preds = %2436
  %2450 = load double, ptr %17, align 8, !tbaa !11
  br label %2454

2451:                                             ; preds = %2436
  %2452 = load double, ptr %17, align 8, !tbaa !11
  %2453 = fneg double %2452
  br label %2454

2454:                                             ; preds = %2451, %2449
  %2455 = phi double [ %2450, %2449 ], [ %2453, %2451 ]
  store double %2455, ptr %26, align 8, !tbaa !11
  %2456 = load double, ptr %24, align 8, !tbaa !11
  %2457 = load double, ptr %26, align 8, !tbaa !11
  %2458 = fadd double %2456, %2457
  %2459 = load ptr, ptr %13, align 8, !tbaa !5
  %2460 = load i64, ptr %21, align 8, !tbaa !9
  %2461 = load i64, ptr %22, align 8, !tbaa !9
  %2462 = add nsw i64 %2460, %2461
  %2463 = getelementptr inbounds double, ptr %2459, i64 %2462
  store double %2458, ptr %2463, align 8, !tbaa !11
  %2464 = load i64, ptr %20, align 8, !tbaa !9
  %2465 = add nsw i64 %2464, 1
  store i64 %2465, ptr %20, align 8, !tbaa !9
  %2466 = load i64, ptr %20, align 8, !tbaa !9
  %2467 = load i64, ptr %21, align 8, !tbaa !9
  %2468 = load i64, ptr %27, align 8, !tbaa !9
  %2469 = mul nsw i64 %2467, %2468
  %2470 = add nsw i64 %2466, %2469
  store i64 %2470, ptr %15, align 8, !tbaa !9
  %2471 = load ptr, ptr %12, align 8, !tbaa !5
  %2472 = load i64, ptr %15, align 8, !tbaa !9
  %2473 = getelementptr inbounds %struct.doublecomplex, ptr %2471, i64 %2472
  %2474 = getelementptr inbounds %struct.doublecomplex, ptr %2473, i32 0, i32 0
  %2475 = load double, ptr %2474, align 8, !tbaa !13
  store double %2475, ptr %17, align 8, !tbaa !11
  %2476 = load double, ptr %17, align 8, !tbaa !11
  %2477 = fcmp oge double %2476, 0.000000e+00
  br i1 %2477, label %2478, label %2480

2478:                                             ; preds = %2454
  %2479 = load double, ptr %17, align 8, !tbaa !11
  br label %2483

2480:                                             ; preds = %2454
  %2481 = load double, ptr %17, align 8, !tbaa !11
  %2482 = fneg double %2481
  br label %2483

2483:                                             ; preds = %2480, %2478
  %2484 = phi double [ %2479, %2478 ], [ %2482, %2480 ]
  store double %2484, ptr %26, align 8, !tbaa !11
  %2485 = load double, ptr %26, align 8, !tbaa !11
  %2486 = load ptr, ptr %13, align 8, !tbaa !5
  %2487 = load i64, ptr %21, align 8, !tbaa !9
  %2488 = getelementptr inbounds double, ptr %2486, i64 %2487
  %2489 = load double, ptr %2488, align 8, !tbaa !11
  %2490 = fadd double %2489, %2485
  store double %2490, ptr %2488, align 8, !tbaa !11
  store double 0.000000e+00, ptr %24, align 8, !tbaa !11
  %2491 = load i64, ptr %22, align 8, !tbaa !9
  %2492 = sub nsw i64 %2491, 1
  store i64 %2492, ptr %15, align 8, !tbaa !9
  %2493 = load i64, ptr %21, align 8, !tbaa !9
  %2494 = add nsw i64 %2493, 1
  store i64 %2494, ptr %23, align 8, !tbaa !9
  br label %2495

2495:                                             ; preds = %2519, %2483
  %2496 = load i64, ptr %23, align 8, !tbaa !9
  %2497 = load i64, ptr %15, align 8, !tbaa !9
  %2498 = icmp sle i64 %2496, %2497
  br i1 %2498, label %2499, label %2522

2499:                                             ; preds = %2495
  %2500 = load i64, ptr %20, align 8, !tbaa !9
  %2501 = add nsw i64 %2500, 1
  store i64 %2501, ptr %20, align 8, !tbaa !9
  %2502 = load ptr, ptr %12, align 8, !tbaa !5
  %2503 = load i64, ptr %20, align 8, !tbaa !9
  %2504 = load i64, ptr %21, align 8, !tbaa !9
  %2505 = load i64, ptr %27, align 8, !tbaa !9
  %2506 = mul nsw i64 %2504, %2505
  %2507 = add nsw i64 %2503, %2506
  %2508 = getelementptr inbounds %struct.doublecomplex, ptr %2502, i64 %2507
  %2509 = call double @z_abs(ptr noundef %2508)
  store double %2509, ptr %26, align 8, !tbaa !11
  %2510 = load double, ptr %26, align 8, !tbaa !11
  %2511 = load double, ptr %24, align 8, !tbaa !11
  %2512 = fadd double %2511, %2510
  store double %2512, ptr %24, align 8, !tbaa !11
  %2513 = load double, ptr %26, align 8, !tbaa !11
  %2514 = load ptr, ptr %13, align 8, !tbaa !5
  %2515 = load i64, ptr %23, align 8, !tbaa !9
  %2516 = getelementptr inbounds double, ptr %2514, i64 %2515
  %2517 = load double, ptr %2516, align 8, !tbaa !11
  %2518 = fadd double %2517, %2513
  store double %2518, ptr %2516, align 8, !tbaa !11
  br label %2519

2519:                                             ; preds = %2499
  %2520 = load i64, ptr %23, align 8, !tbaa !9
  %2521 = add nsw i64 %2520, 1
  store i64 %2521, ptr %23, align 8, !tbaa !9
  br label %2495, !llvm.loop !69

2522:                                             ; preds = %2495
  %2523 = load double, ptr %24, align 8, !tbaa !11
  %2524 = load ptr, ptr %13, align 8, !tbaa !5
  %2525 = load i64, ptr %21, align 8, !tbaa !9
  %2526 = getelementptr inbounds double, ptr %2524, i64 %2525
  %2527 = load double, ptr %2526, align 8, !tbaa !11
  %2528 = fadd double %2527, %2523
  store double %2528, ptr %2526, align 8, !tbaa !11
  br label %2529

2529:                                             ; preds = %2522
  %2530 = load i64, ptr %21, align 8, !tbaa !9
  %2531 = add nsw i64 %2530, 1
  store i64 %2531, ptr %21, align 8, !tbaa !9
  br label %2402, !llvm.loop !70

2532:                                             ; preds = %2402
  %2533 = load ptr, ptr %11, align 8, !tbaa !5
  %2534 = load ptr, ptr %13, align 8, !tbaa !5
  %2535 = call i64 @f2c_idamax(ptr noundef %2533, ptr noundef %2534, ptr noundef @c__1)
  store i64 %2535, ptr %20, align 8, !tbaa !9
  %2536 = load ptr, ptr %13, align 8, !tbaa !5
  %2537 = load i64, ptr %20, align 8, !tbaa !9
  %2538 = sub nsw i64 %2537, 1
  %2539 = getelementptr inbounds double, ptr %2536, i64 %2538
  %2540 = load double, ptr %2539, align 8, !tbaa !11
  store double %2540, ptr %32, align 8, !tbaa !11
  br label %2700

2541:                                             ; preds = %2382
  %2542 = load ptr, ptr %11, align 8, !tbaa !5
  %2543 = load i64, ptr %2542, align 8, !tbaa !9
  %2544 = sub nsw i64 %2543, 1
  store i64 %2544, ptr %14, align 8, !tbaa !9
  %2545 = load i64, ptr %22, align 8, !tbaa !9
  store i64 %2545, ptr %20, align 8, !tbaa !9
  br label %2546

2546:                                             ; preds = %2554, %2541
  %2547 = load i64, ptr %20, align 8, !tbaa !9
  %2548 = load i64, ptr %14, align 8, !tbaa !9
  %2549 = icmp sle i64 %2547, %2548
  br i1 %2549, label %2550, label %2557

2550:                                             ; preds = %2546
  %2551 = load ptr, ptr %13, align 8, !tbaa !5
  %2552 = load i64, ptr %20, align 8, !tbaa !9
  %2553 = getelementptr inbounds double, ptr %2551, i64 %2552
  store double 0.000000e+00, ptr %2553, align 8, !tbaa !11
  br label %2554

2554:                                             ; preds = %2550
  %2555 = load i64, ptr %20, align 8, !tbaa !9
  %2556 = add nsw i64 %2555, 1
  store i64 %2556, ptr %20, align 8, !tbaa !9
  br label %2546, !llvm.loop !71

2557:                                             ; preds = %2546
  %2558 = load i64, ptr %22, align 8, !tbaa !9
  %2559 = sub nsw i64 %2558, 1
  store i64 %2559, ptr %21, align 8, !tbaa !9
  br label %2560

2560:                                             ; preds = %2688, %2557
  %2561 = load i64, ptr %21, align 8, !tbaa !9
  %2562 = icmp sge i64 %2561, 0
  br i1 %2562, label %2563, label %2691

2563:                                             ; preds = %2560
  store double 0.000000e+00, ptr %24, align 8, !tbaa !11
  %2564 = load i64, ptr %21, align 8, !tbaa !9
  %2565 = sub nsw i64 %2564, 1
  store i64 %2565, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %2566

2566:                                             ; preds = %2590, %2563
  %2567 = load i64, ptr %20, align 8, !tbaa !9
  %2568 = load i64, ptr %14, align 8, !tbaa !9
  %2569 = icmp sle i64 %2567, %2568
  br i1 %2569, label %2570, label %2593

2570:                                             ; preds = %2566
  %2571 = load ptr, ptr %12, align 8, !tbaa !5
  %2572 = load i64, ptr %20, align 8, !tbaa !9
  %2573 = load i64, ptr %21, align 8, !tbaa !9
  %2574 = load i64, ptr %27, align 8, !tbaa !9
  %2575 = mul nsw i64 %2573, %2574
  %2576 = add nsw i64 %2572, %2575
  %2577 = getelementptr inbounds %struct.doublecomplex, ptr %2571, i64 %2576
  %2578 = call double @z_abs(ptr noundef %2577)
  store double %2578, ptr %26, align 8, !tbaa !11
  %2579 = load double, ptr %26, align 8, !tbaa !11
  %2580 = load double, ptr %24, align 8, !tbaa !11
  %2581 = fadd double %2580, %2579
  store double %2581, ptr %24, align 8, !tbaa !11
  %2582 = load double, ptr %26, align 8, !tbaa !11
  %2583 = load ptr, ptr %13, align 8, !tbaa !5
  %2584 = load i64, ptr %20, align 8, !tbaa !9
  %2585 = load i64, ptr %22, align 8, !tbaa !9
  %2586 = add nsw i64 %2584, %2585
  %2587 = getelementptr inbounds double, ptr %2583, i64 %2586
  %2588 = load double, ptr %2587, align 8, !tbaa !11
  %2589 = fadd double %2588, %2582
  store double %2589, ptr %2587, align 8, !tbaa !11
  br label %2590

2590:                                             ; preds = %2570
  %2591 = load i64, ptr %20, align 8, !tbaa !9
  %2592 = add nsw i64 %2591, 1
  store i64 %2592, ptr %20, align 8, !tbaa !9
  br label %2566, !llvm.loop !72

2593:                                             ; preds = %2566
  %2594 = load i64, ptr %20, align 8, !tbaa !9
  %2595 = load i64, ptr %21, align 8, !tbaa !9
  %2596 = load i64, ptr %27, align 8, !tbaa !9
  %2597 = mul nsw i64 %2595, %2596
  %2598 = add nsw i64 %2594, %2597
  store i64 %2598, ptr %14, align 8, !tbaa !9
  %2599 = load ptr, ptr %12, align 8, !tbaa !5
  %2600 = load i64, ptr %14, align 8, !tbaa !9
  %2601 = getelementptr inbounds %struct.doublecomplex, ptr %2599, i64 %2600
  %2602 = getelementptr inbounds %struct.doublecomplex, ptr %2601, i32 0, i32 0
  %2603 = load double, ptr %2602, align 8, !tbaa !13
  store double %2603, ptr %17, align 8, !tbaa !11
  %2604 = load double, ptr %17, align 8, !tbaa !11
  %2605 = fcmp oge double %2604, 0.000000e+00
  br i1 %2605, label %2606, label %2608

2606:                                             ; preds = %2593
  %2607 = load double, ptr %17, align 8, !tbaa !11
  br label %2611

2608:                                             ; preds = %2593
  %2609 = load double, ptr %17, align 8, !tbaa !11
  %2610 = fneg double %2609
  br label %2611

2611:                                             ; preds = %2608, %2606
  %2612 = phi double [ %2607, %2606 ], [ %2610, %2608 ]
  store double %2612, ptr %26, align 8, !tbaa !11
  %2613 = load double, ptr %26, align 8, !tbaa !11
  %2614 = load double, ptr %24, align 8, !tbaa !11
  %2615 = fadd double %2614, %2613
  store double %2615, ptr %24, align 8, !tbaa !11
  %2616 = load double, ptr %24, align 8, !tbaa !11
  %2617 = load ptr, ptr %13, align 8, !tbaa !5
  %2618 = load i64, ptr %20, align 8, !tbaa !9
  %2619 = load i64, ptr %22, align 8, !tbaa !9
  %2620 = add nsw i64 %2618, %2619
  %2621 = getelementptr inbounds double, ptr %2617, i64 %2620
  %2622 = load double, ptr %2621, align 8, !tbaa !11
  %2623 = fadd double %2622, %2616
  store double %2623, ptr %2621, align 8, !tbaa !11
  %2624 = load i64, ptr %20, align 8, !tbaa !9
  %2625 = add nsw i64 %2624, 1
  store i64 %2625, ptr %20, align 8, !tbaa !9
  %2626 = load i64, ptr %20, align 8, !tbaa !9
  %2627 = load i64, ptr %21, align 8, !tbaa !9
  %2628 = load i64, ptr %27, align 8, !tbaa !9
  %2629 = mul nsw i64 %2627, %2628
  %2630 = add nsw i64 %2626, %2629
  store i64 %2630, ptr %14, align 8, !tbaa !9
  %2631 = load ptr, ptr %12, align 8, !tbaa !5
  %2632 = load i64, ptr %14, align 8, !tbaa !9
  %2633 = getelementptr inbounds %struct.doublecomplex, ptr %2631, i64 %2632
  %2634 = getelementptr inbounds %struct.doublecomplex, ptr %2633, i32 0, i32 0
  %2635 = load double, ptr %2634, align 8, !tbaa !13
  store double %2635, ptr %17, align 8, !tbaa !11
  %2636 = load double, ptr %17, align 8, !tbaa !11
  %2637 = fcmp oge double %2636, 0.000000e+00
  br i1 %2637, label %2638, label %2640

2638:                                             ; preds = %2611
  %2639 = load double, ptr %17, align 8, !tbaa !11
  br label %2643

2640:                                             ; preds = %2611
  %2641 = load double, ptr %17, align 8, !tbaa !11
  %2642 = fneg double %2641
  br label %2643

2643:                                             ; preds = %2640, %2638
  %2644 = phi double [ %2639, %2638 ], [ %2642, %2640 ]
  store double %2644, ptr %26, align 8, !tbaa !11
  %2645 = load double, ptr %26, align 8, !tbaa !11
  %2646 = load ptr, ptr %13, align 8, !tbaa !5
  %2647 = load i64, ptr %21, align 8, !tbaa !9
  %2648 = getelementptr inbounds double, ptr %2646, i64 %2647
  store double %2645, ptr %2648, align 8, !tbaa !11
  store double 0.000000e+00, ptr %24, align 8, !tbaa !11
  %2649 = load ptr, ptr %11, align 8, !tbaa !5
  %2650 = load i64, ptr %2649, align 8, !tbaa !9
  %2651 = sub nsw i64 %2650, 1
  store i64 %2651, ptr %14, align 8, !tbaa !9
  %2652 = load i64, ptr %21, align 8, !tbaa !9
  %2653 = add nsw i64 %2652, 1
  store i64 %2653, ptr %23, align 8, !tbaa !9
  br label %2654

2654:                                             ; preds = %2678, %2643
  %2655 = load i64, ptr %23, align 8, !tbaa !9
  %2656 = load i64, ptr %14, align 8, !tbaa !9
  %2657 = icmp sle i64 %2655, %2656
  br i1 %2657, label %2658, label %2681

2658:                                             ; preds = %2654
  %2659 = load i64, ptr %20, align 8, !tbaa !9
  %2660 = add nsw i64 %2659, 1
  store i64 %2660, ptr %20, align 8, !tbaa !9
  %2661 = load ptr, ptr %12, align 8, !tbaa !5
  %2662 = load i64, ptr %20, align 8, !tbaa !9
  %2663 = load i64, ptr %21, align 8, !tbaa !9
  %2664 = load i64, ptr %27, align 8, !tbaa !9
  %2665 = mul nsw i64 %2663, %2664
  %2666 = add nsw i64 %2662, %2665
  %2667 = getelementptr inbounds %struct.doublecomplex, ptr %2661, i64 %2666
  %2668 = call double @z_abs(ptr noundef %2667)
  store double %2668, ptr %26, align 8, !tbaa !11
  %2669 = load double, ptr %26, align 8, !tbaa !11
  %2670 = load double, ptr %24, align 8, !tbaa !11
  %2671 = fadd double %2670, %2669
  store double %2671, ptr %24, align 8, !tbaa !11
  %2672 = load double, ptr %26, align 8, !tbaa !11
  %2673 = load ptr, ptr %13, align 8, !tbaa !5
  %2674 = load i64, ptr %23, align 8, !tbaa !9
  %2675 = getelementptr inbounds double, ptr %2673, i64 %2674
  %2676 = load double, ptr %2675, align 8, !tbaa !11
  %2677 = fadd double %2676, %2672
  store double %2677, ptr %2675, align 8, !tbaa !11
  br label %2678

2678:                                             ; preds = %2658
  %2679 = load i64, ptr %23, align 8, !tbaa !9
  %2680 = add nsw i64 %2679, 1
  store i64 %2680, ptr %23, align 8, !tbaa !9
  br label %2654, !llvm.loop !73

2681:                                             ; preds = %2654
  %2682 = load double, ptr %24, align 8, !tbaa !11
  %2683 = load ptr, ptr %13, align 8, !tbaa !5
  %2684 = load i64, ptr %21, align 8, !tbaa !9
  %2685 = getelementptr inbounds double, ptr %2683, i64 %2684
  %2686 = load double, ptr %2685, align 8, !tbaa !11
  %2687 = fadd double %2686, %2682
  store double %2687, ptr %2685, align 8, !tbaa !11
  br label %2688

2688:                                             ; preds = %2681
  %2689 = load i64, ptr %21, align 8, !tbaa !9
  %2690 = add nsw i64 %2689, -1
  store i64 %2690, ptr %21, align 8, !tbaa !9
  br label %2560, !llvm.loop !74

2691:                                             ; preds = %2560
  %2692 = load ptr, ptr %11, align 8, !tbaa !5
  %2693 = load ptr, ptr %13, align 8, !tbaa !5
  %2694 = call i64 @f2c_idamax(ptr noundef %2692, ptr noundef %2693, ptr noundef @c__1)
  store i64 %2694, ptr %20, align 8, !tbaa !9
  %2695 = load ptr, ptr %13, align 8, !tbaa !5
  %2696 = load i64, ptr %20, align 8, !tbaa !9
  %2697 = sub nsw i64 %2696, 1
  %2698 = getelementptr inbounds double, ptr %2695, i64 %2697
  %2699 = load double, ptr %2698, align 8, !tbaa !11
  store double %2699, ptr %32, align 8, !tbaa !11
  br label %2700

2700:                                             ; preds = %2691, %2532
  br label %2701

2701:                                             ; preds = %2700, %2381
  br label %3853

2702:                                             ; preds = %2041
  %2703 = load ptr, ptr %11, align 8, !tbaa !5
  %2704 = load i64, ptr %2703, align 8, !tbaa !9
  %2705 = sdiv i64 %2704, 2
  store i64 %2705, ptr %22, align 8, !tbaa !9
  %2706 = load i64, ptr %29, align 8, !tbaa !9
  %2707 = icmp eq i64 %2706, 1
  br i1 %2707, label %2708, label %3229

2708:                                             ; preds = %2702
  %2709 = load i64, ptr %30, align 8, !tbaa !9
  %2710 = icmp eq i64 %2709, 0
  br i1 %2710, label %2711, label %2970

2711:                                             ; preds = %2708
  %2712 = load i64, ptr %22, align 8, !tbaa !9
  store i64 %2712, ptr %25, align 8, !tbaa !9
  %2713 = load i64, ptr %22, align 8, !tbaa !9
  %2714 = add nsw i64 %2713, 1
  store i64 %2714, ptr %22, align 8, !tbaa !9
  %2715 = load ptr, ptr %11, align 8, !tbaa !5
  %2716 = load i64, ptr %2715, align 8, !tbaa !9
  %2717 = sub nsw i64 %2716, 1
  store i64 %2717, ptr %14, align 8, !tbaa !9
  %2718 = load i64, ptr %25, align 8, !tbaa !9
  store i64 %2718, ptr %20, align 8, !tbaa !9
  br label %2719

2719:                                             ; preds = %2727, %2711
  %2720 = load i64, ptr %20, align 8, !tbaa !9
  %2721 = load i64, ptr %14, align 8, !tbaa !9
  %2722 = icmp sle i64 %2720, %2721
  br i1 %2722, label %2723, label %2730

2723:                                             ; preds = %2719
  %2724 = load ptr, ptr %13, align 8, !tbaa !5
  %2725 = load i64, ptr %20, align 8, !tbaa !9
  %2726 = getelementptr inbounds double, ptr %2724, i64 %2725
  store double 0.000000e+00, ptr %2726, align 8, !tbaa !11
  br label %2727

2727:                                             ; preds = %2723
  %2728 = load i64, ptr %20, align 8, !tbaa !9
  %2729 = add nsw i64 %2728, 1
  store i64 %2729, ptr %20, align 8, !tbaa !9
  br label %2719, !llvm.loop !75

2730:                                             ; preds = %2719
  %2731 = load i64, ptr %25, align 8, !tbaa !9
  %2732 = sub nsw i64 %2731, 1
  store i64 %2732, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %2733

2733:                                             ; preds = %2772, %2730
  %2734 = load i64, ptr %21, align 8, !tbaa !9
  %2735 = load i64, ptr %14, align 8, !tbaa !9
  %2736 = icmp sle i64 %2734, %2735
  br i1 %2736, label %2737, label %2775

2737:                                             ; preds = %2733
  store double 0.000000e+00, ptr %24, align 8, !tbaa !11
  %2738 = load i64, ptr %22, align 8, !tbaa !9
  %2739 = sub nsw i64 %2738, 1
  store i64 %2739, ptr %15, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %2740

2740:                                             ; preds = %2764, %2737
  %2741 = load i64, ptr %20, align 8, !tbaa !9
  %2742 = load i64, ptr %15, align 8, !tbaa !9
  %2743 = icmp sle i64 %2741, %2742
  br i1 %2743, label %2744, label %2767

2744:                                             ; preds = %2740
  %2745 = load ptr, ptr %12, align 8, !tbaa !5
  %2746 = load i64, ptr %20, align 8, !tbaa !9
  %2747 = load i64, ptr %21, align 8, !tbaa !9
  %2748 = load i64, ptr %27, align 8, !tbaa !9
  %2749 = mul nsw i64 %2747, %2748
  %2750 = add nsw i64 %2746, %2749
  %2751 = getelementptr inbounds %struct.doublecomplex, ptr %2745, i64 %2750
  %2752 = call double @z_abs(ptr noundef %2751)
  store double %2752, ptr %26, align 8, !tbaa !11
  %2753 = load double, ptr %26, align 8, !tbaa !11
  %2754 = load ptr, ptr %13, align 8, !tbaa !5
  %2755 = load i64, ptr %20, align 8, !tbaa !9
  %2756 = load i64, ptr %25, align 8, !tbaa !9
  %2757 = add nsw i64 %2755, %2756
  %2758 = getelementptr inbounds double, ptr %2754, i64 %2757
  %2759 = load double, ptr %2758, align 8, !tbaa !11
  %2760 = fadd double %2759, %2753
  store double %2760, ptr %2758, align 8, !tbaa !11
  %2761 = load double, ptr %26, align 8, !tbaa !11
  %2762 = load double, ptr %24, align 8, !tbaa !11
  %2763 = fadd double %2762, %2761
  store double %2763, ptr %24, align 8, !tbaa !11
  br label %2764

2764:                                             ; preds = %2744
  %2765 = load i64, ptr %20, align 8, !tbaa !9
  %2766 = add nsw i64 %2765, 1
  store i64 %2766, ptr %20, align 8, !tbaa !9
  br label %2740, !llvm.loop !76

2767:                                             ; preds = %2740
  %2768 = load double, ptr %24, align 8, !tbaa !11
  %2769 = load ptr, ptr %13, align 8, !tbaa !5
  %2770 = load i64, ptr %21, align 8, !tbaa !9
  %2771 = getelementptr inbounds double, ptr %2769, i64 %2770
  store double %2768, ptr %2771, align 8, !tbaa !11
  br label %2772

2772:                                             ; preds = %2767
  %2773 = load i64, ptr %21, align 8, !tbaa !9
  %2774 = add nsw i64 %2773, 1
  store i64 %2774, ptr %21, align 8, !tbaa !9
  br label %2733, !llvm.loop !77

2775:                                             ; preds = %2733
  %2776 = load i64, ptr %21, align 8, !tbaa !9
  %2777 = load i64, ptr %27, align 8, !tbaa !9
  %2778 = mul nsw i64 %2776, %2777
  store i64 %2778, ptr %14, align 8, !tbaa !9
  %2779 = load ptr, ptr %12, align 8, !tbaa !5
  %2780 = load i64, ptr %14, align 8, !tbaa !9
  %2781 = getelementptr inbounds %struct.doublecomplex, ptr %2779, i64 %2780
  %2782 = getelementptr inbounds %struct.doublecomplex, ptr %2781, i32 0, i32 0
  %2783 = load double, ptr %2782, align 8, !tbaa !13
  store double %2783, ptr %17, align 8, !tbaa !11
  %2784 = load double, ptr %17, align 8, !tbaa !11
  %2785 = fcmp oge double %2784, 0.000000e+00
  br i1 %2785, label %2786, label %2788

2786:                                             ; preds = %2775
  %2787 = load double, ptr %17, align 8, !tbaa !11
  br label %2791

2788:                                             ; preds = %2775
  %2789 = load double, ptr %17, align 8, !tbaa !11
  %2790 = fneg double %2789
  br label %2791

2791:                                             ; preds = %2788, %2786
  %2792 = phi double [ %2787, %2786 ], [ %2790, %2788 ]
  store double %2792, ptr %24, align 8, !tbaa !11
  %2793 = load i64, ptr %22, align 8, !tbaa !9
  %2794 = sub nsw i64 %2793, 1
  store i64 %2794, ptr %14, align 8, !tbaa !9
  store i64 1, ptr %20, align 8, !tbaa !9
  br label %2795

2795:                                             ; preds = %2819, %2791
  %2796 = load i64, ptr %20, align 8, !tbaa !9
  %2797 = load i64, ptr %14, align 8, !tbaa !9
  %2798 = icmp sle i64 %2796, %2797
  br i1 %2798, label %2799, label %2822

2799:                                             ; preds = %2795
  %2800 = load ptr, ptr %12, align 8, !tbaa !5
  %2801 = load i64, ptr %20, align 8, !tbaa !9
  %2802 = load i64, ptr %21, align 8, !tbaa !9
  %2803 = load i64, ptr %27, align 8, !tbaa !9
  %2804 = mul nsw i64 %2802, %2803
  %2805 = add nsw i64 %2801, %2804
  %2806 = getelementptr inbounds %struct.doublecomplex, ptr %2800, i64 %2805
  %2807 = call double @z_abs(ptr noundef %2806)
  store double %2807, ptr %26, align 8, !tbaa !11
  %2808 = load double, ptr %26, align 8, !tbaa !11
  %2809 = load ptr, ptr %13, align 8, !tbaa !5
  %2810 = load i64, ptr %20, align 8, !tbaa !9
  %2811 = load i64, ptr %25, align 8, !tbaa !9
  %2812 = add nsw i64 %2810, %2811
  %2813 = getelementptr inbounds double, ptr %2809, i64 %2812
  %2814 = load double, ptr %2813, align 8, !tbaa !11
  %2815 = fadd double %2814, %2808
  store double %2815, ptr %2813, align 8, !tbaa !11
  %2816 = load double, ptr %26, align 8, !tbaa !11
  %2817 = load double, ptr %24, align 8, !tbaa !11
  %2818 = fadd double %2817, %2816
  store double %2818, ptr %24, align 8, !tbaa !11
  br label %2819

2819:                                             ; preds = %2799
  %2820 = load i64, ptr %20, align 8, !tbaa !9
  %2821 = add nsw i64 %2820, 1
  store i64 %2821, ptr %20, align 8, !tbaa !9
  br label %2795, !llvm.loop !78

2822:                                             ; preds = %2795
  %2823 = load double, ptr %24, align 8, !tbaa !11
  %2824 = load ptr, ptr %13, align 8, !tbaa !5
  %2825 = load i64, ptr %21, align 8, !tbaa !9
  %2826 = getelementptr inbounds double, ptr %2824, i64 %2825
  %2827 = load double, ptr %2826, align 8, !tbaa !11
  %2828 = fadd double %2827, %2823
  store double %2828, ptr %2826, align 8, !tbaa !11
  %2829 = load ptr, ptr %11, align 8, !tbaa !5
  %2830 = load i64, ptr %2829, align 8, !tbaa !9
  %2831 = sub nsw i64 %2830, 1
  store i64 %2831, ptr %14, align 8, !tbaa !9
  %2832 = load i64, ptr %22, align 8, !tbaa !9
  store i64 %2832, ptr %21, align 8, !tbaa !9
  br label %2833

2833:                                             ; preds = %2958, %2822
  %2834 = load i64, ptr %21, align 8, !tbaa !9
  %2835 = load i64, ptr %14, align 8, !tbaa !9
  %2836 = icmp sle i64 %2834, %2835
  br i1 %2836, label %2837, label %2961

2837:                                             ; preds = %2833
  store double 0.000000e+00, ptr %24, align 8, !tbaa !11
  %2838 = load i64, ptr %21, align 8, !tbaa !9
  %2839 = load i64, ptr %22, align 8, !tbaa !9
  %2840 = sub nsw i64 %2838, %2839
  %2841 = sub nsw i64 %2840, 1
  store i64 %2841, ptr %15, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %2842

2842:                                             ; preds = %2864, %2837
  %2843 = load i64, ptr %20, align 8, !tbaa !9
  %2844 = load i64, ptr %15, align 8, !tbaa !9
  %2845 = icmp sle i64 %2843, %2844
  br i1 %2845, label %2846, label %2867

2846:                                             ; preds = %2842
  %2847 = load ptr, ptr %12, align 8, !tbaa !5
  %2848 = load i64, ptr %20, align 8, !tbaa !9
  %2849 = load i64, ptr %21, align 8, !tbaa !9
  %2850 = load i64, ptr %27, align 8, !tbaa !9
  %2851 = mul nsw i64 %2849, %2850
  %2852 = add nsw i64 %2848, %2851
  %2853 = getelementptr inbounds %struct.doublecomplex, ptr %2847, i64 %2852
  %2854 = call double @z_abs(ptr noundef %2853)
  store double %2854, ptr %26, align 8, !tbaa !11
  %2855 = load double, ptr %26, align 8, !tbaa !11
  %2856 = load ptr, ptr %13, align 8, !tbaa !5
  %2857 = load i64, ptr %20, align 8, !tbaa !9
  %2858 = getelementptr inbounds double, ptr %2856, i64 %2857
  %2859 = load double, ptr %2858, align 8, !tbaa !11
  %2860 = fadd double %2859, %2855
  store double %2860, ptr %2858, align 8, !tbaa !11
  %2861 = load double, ptr %26, align 8, !tbaa !11
  %2862 = load double, ptr %24, align 8, !tbaa !11
  %2863 = fadd double %2862, %2861
  store double %2863, ptr %24, align 8, !tbaa !11
  br label %2864

2864:                                             ; preds = %2846
  %2865 = load i64, ptr %20, align 8, !tbaa !9
  %2866 = add nsw i64 %2865, 1
  store i64 %2866, ptr %20, align 8, !tbaa !9
  br label %2842, !llvm.loop !79

2867:                                             ; preds = %2842
  %2868 = load i64, ptr %20, align 8, !tbaa !9
  %2869 = load i64, ptr %21, align 8, !tbaa !9
  %2870 = load i64, ptr %27, align 8, !tbaa !9
  %2871 = mul nsw i64 %2869, %2870
  %2872 = add nsw i64 %2868, %2871
  store i64 %2872, ptr %15, align 8, !tbaa !9
  %2873 = load ptr, ptr %12, align 8, !tbaa !5
  %2874 = load i64, ptr %15, align 8, !tbaa !9
  %2875 = getelementptr inbounds %struct.doublecomplex, ptr %2873, i64 %2874
  %2876 = getelementptr inbounds %struct.doublecomplex, ptr %2875, i32 0, i32 0
  %2877 = load double, ptr %2876, align 8, !tbaa !13
  store double %2877, ptr %17, align 8, !tbaa !11
  %2878 = load double, ptr %17, align 8, !tbaa !11
  %2879 = fcmp oge double %2878, 0.000000e+00
  br i1 %2879, label %2880, label %2882

2880:                                             ; preds = %2867
  %2881 = load double, ptr %17, align 8, !tbaa !11
  br label %2885

2882:                                             ; preds = %2867
  %2883 = load double, ptr %17, align 8, !tbaa !11
  %2884 = fneg double %2883
  br label %2885

2885:                                             ; preds = %2882, %2880
  %2886 = phi double [ %2881, %2880 ], [ %2884, %2882 ]
  store double %2886, ptr %26, align 8, !tbaa !11
  %2887 = load double, ptr %26, align 8, !tbaa !11
  %2888 = load double, ptr %24, align 8, !tbaa !11
  %2889 = fadd double %2888, %2887
  store double %2889, ptr %24, align 8, !tbaa !11
  %2890 = load double, ptr %24, align 8, !tbaa !11
  %2891 = load ptr, ptr %13, align 8, !tbaa !5
  %2892 = load i64, ptr %21, align 8, !tbaa !9
  %2893 = load i64, ptr %22, align 8, !tbaa !9
  %2894 = sub nsw i64 %2892, %2893
  %2895 = getelementptr inbounds double, ptr %2891, i64 %2894
  %2896 = load double, ptr %2895, align 8, !tbaa !11
  %2897 = fadd double %2896, %2890
  store double %2897, ptr %2895, align 8, !tbaa !11
  %2898 = load i64, ptr %20, align 8, !tbaa !9
  %2899 = add nsw i64 %2898, 1
  store i64 %2899, ptr %20, align 8, !tbaa !9
  %2900 = load i64, ptr %20, align 8, !tbaa !9
  %2901 = load i64, ptr %21, align 8, !tbaa !9
  %2902 = load i64, ptr %27, align 8, !tbaa !9
  %2903 = mul nsw i64 %2901, %2902
  %2904 = add nsw i64 %2900, %2903
  store i64 %2904, ptr %15, align 8, !tbaa !9
  %2905 = load ptr, ptr %12, align 8, !tbaa !5
  %2906 = load i64, ptr %15, align 8, !tbaa !9
  %2907 = getelementptr inbounds %struct.doublecomplex, ptr %2905, i64 %2906
  %2908 = getelementptr inbounds %struct.doublecomplex, ptr %2907, i32 0, i32 0
  %2909 = load double, ptr %2908, align 8, !tbaa !13
  store double %2909, ptr %17, align 8, !tbaa !11
  %2910 = load double, ptr %17, align 8, !tbaa !11
  %2911 = fcmp oge double %2910, 0.000000e+00
  br i1 %2911, label %2912, label %2914

2912:                                             ; preds = %2885
  %2913 = load double, ptr %17, align 8, !tbaa !11
  br label %2917

2914:                                             ; preds = %2885
  %2915 = load double, ptr %17, align 8, !tbaa !11
  %2916 = fneg double %2915
  br label %2917

2917:                                             ; preds = %2914, %2912
  %2918 = phi double [ %2913, %2912 ], [ %2916, %2914 ]
  store double %2918, ptr %24, align 8, !tbaa !11
  %2919 = load ptr, ptr %11, align 8, !tbaa !5
  %2920 = load i64, ptr %2919, align 8, !tbaa !9
  %2921 = sub nsw i64 %2920, 1
  store i64 %2921, ptr %15, align 8, !tbaa !9
  %2922 = load i64, ptr %21, align 8, !tbaa !9
  %2923 = add nsw i64 %2922, 1
  store i64 %2923, ptr %23, align 8, !tbaa !9
  br label %2924

2924:                                             ; preds = %2948, %2917
  %2925 = load i64, ptr %23, align 8, !tbaa !9
  %2926 = load i64, ptr %15, align 8, !tbaa !9
  %2927 = icmp sle i64 %2925, %2926
  br i1 %2927, label %2928, label %2951

2928:                                             ; preds = %2924
  %2929 = load i64, ptr %20, align 8, !tbaa !9
  %2930 = add nsw i64 %2929, 1
  store i64 %2930, ptr %20, align 8, !tbaa !9
  %2931 = load ptr, ptr %12, align 8, !tbaa !5
  %2932 = load i64, ptr %20, align 8, !tbaa !9
  %2933 = load i64, ptr %21, align 8, !tbaa !9
  %2934 = load i64, ptr %27, align 8, !tbaa !9
  %2935 = mul nsw i64 %2933, %2934
  %2936 = add nsw i64 %2932, %2935
  %2937 = getelementptr inbounds %struct.doublecomplex, ptr %2931, i64 %2936
  %2938 = call double @z_abs(ptr noundef %2937)
  store double %2938, ptr %26, align 8, !tbaa !11
  %2939 = load double, ptr %26, align 8, !tbaa !11
  %2940 = load ptr, ptr %13, align 8, !tbaa !5
  %2941 = load i64, ptr %23, align 8, !tbaa !9
  %2942 = getelementptr inbounds double, ptr %2940, i64 %2941
  %2943 = load double, ptr %2942, align 8, !tbaa !11
  %2944 = fadd double %2943, %2939
  store double %2944, ptr %2942, align 8, !tbaa !11
  %2945 = load double, ptr %26, align 8, !tbaa !11
  %2946 = load double, ptr %24, align 8, !tbaa !11
  %2947 = fadd double %2946, %2945
  store double %2947, ptr %24, align 8, !tbaa !11
  br label %2948

2948:                                             ; preds = %2928
  %2949 = load i64, ptr %23, align 8, !tbaa !9
  %2950 = add nsw i64 %2949, 1
  store i64 %2950, ptr %23, align 8, !tbaa !9
  br label %2924, !llvm.loop !80

2951:                                             ; preds = %2924
  %2952 = load double, ptr %24, align 8, !tbaa !11
  %2953 = load ptr, ptr %13, align 8, !tbaa !5
  %2954 = load i64, ptr %21, align 8, !tbaa !9
  %2955 = getelementptr inbounds double, ptr %2953, i64 %2954
  %2956 = load double, ptr %2955, align 8, !tbaa !11
  %2957 = fadd double %2956, %2952
  store double %2957, ptr %2955, align 8, !tbaa !11
  br label %2958

2958:                                             ; preds = %2951
  %2959 = load i64, ptr %21, align 8, !tbaa !9
  %2960 = add nsw i64 %2959, 1
  store i64 %2960, ptr %21, align 8, !tbaa !9
  br label %2833, !llvm.loop !81

2961:                                             ; preds = %2833
  %2962 = load ptr, ptr %11, align 8, !tbaa !5
  %2963 = load ptr, ptr %13, align 8, !tbaa !5
  %2964 = call i64 @f2c_idamax(ptr noundef %2962, ptr noundef %2963, ptr noundef @c__1)
  store i64 %2964, ptr %20, align 8, !tbaa !9
  %2965 = load ptr, ptr %13, align 8, !tbaa !5
  %2966 = load i64, ptr %20, align 8, !tbaa !9
  %2967 = sub nsw i64 %2966, 1
  %2968 = getelementptr inbounds double, ptr %2965, i64 %2967
  %2969 = load double, ptr %2968, align 8, !tbaa !11
  store double %2969, ptr %32, align 8, !tbaa !11
  br label %3228

2970:                                             ; preds = %2708
  %2971 = load i64, ptr %22, align 8, !tbaa !9
  %2972 = add nsw i64 %2971, 1
  store i64 %2972, ptr %22, align 8, !tbaa !9
  %2973 = load ptr, ptr %11, align 8, !tbaa !5
  %2974 = load i64, ptr %2973, align 8, !tbaa !9
  %2975 = sub nsw i64 %2974, 1
  store i64 %2975, ptr %14, align 8, !tbaa !9
  %2976 = load i64, ptr %22, align 8, !tbaa !9
  store i64 %2976, ptr %20, align 8, !tbaa !9
  br label %2977

2977:                                             ; preds = %2985, %2970
  %2978 = load i64, ptr %20, align 8, !tbaa !9
  %2979 = load i64, ptr %14, align 8, !tbaa !9
  %2980 = icmp sle i64 %2978, %2979
  br i1 %2980, label %2981, label %2988

2981:                                             ; preds = %2977
  %2982 = load ptr, ptr %13, align 8, !tbaa !5
  %2983 = load i64, ptr %20, align 8, !tbaa !9
  %2984 = getelementptr inbounds double, ptr %2982, i64 %2983
  store double 0.000000e+00, ptr %2984, align 8, !tbaa !11
  br label %2985

2985:                                             ; preds = %2981
  %2986 = load i64, ptr %20, align 8, !tbaa !9
  %2987 = add nsw i64 %2986, 1
  store i64 %2987, ptr %20, align 8, !tbaa !9
  br label %2977, !llvm.loop !82

2988:                                             ; preds = %2977
  %2989 = load i64, ptr %22, align 8, !tbaa !9
  %2990 = sub nsw i64 %2989, 2
  store i64 %2990, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %2991

2991:                                             ; preds = %3115, %2988
  %2992 = load i64, ptr %21, align 8, !tbaa !9
  %2993 = load i64, ptr %14, align 8, !tbaa !9
  %2994 = icmp sle i64 %2992, %2993
  br i1 %2994, label %2995, label %3118

2995:                                             ; preds = %2991
  store double 0.000000e+00, ptr %24, align 8, !tbaa !11
  %2996 = load i64, ptr %21, align 8, !tbaa !9
  %2997 = sub nsw i64 %2996, 1
  store i64 %2997, ptr %15, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %2998

2998:                                             ; preds = %3020, %2995
  %2999 = load i64, ptr %20, align 8, !tbaa !9
  %3000 = load i64, ptr %15, align 8, !tbaa !9
  %3001 = icmp sle i64 %2999, %3000
  br i1 %3001, label %3002, label %3023

3002:                                             ; preds = %2998
  %3003 = load ptr, ptr %12, align 8, !tbaa !5
  %3004 = load i64, ptr %20, align 8, !tbaa !9
  %3005 = load i64, ptr %21, align 8, !tbaa !9
  %3006 = load i64, ptr %27, align 8, !tbaa !9
  %3007 = mul nsw i64 %3005, %3006
  %3008 = add nsw i64 %3004, %3007
  %3009 = getelementptr inbounds %struct.doublecomplex, ptr %3003, i64 %3008
  %3010 = call double @z_abs(ptr noundef %3009)
  store double %3010, ptr %26, align 8, !tbaa !11
  %3011 = load double, ptr %26, align 8, !tbaa !11
  %3012 = load ptr, ptr %13, align 8, !tbaa !5
  %3013 = load i64, ptr %20, align 8, !tbaa !9
  %3014 = getelementptr inbounds double, ptr %3012, i64 %3013
  %3015 = load double, ptr %3014, align 8, !tbaa !11
  %3016 = fadd double %3015, %3011
  store double %3016, ptr %3014, align 8, !tbaa !11
  %3017 = load double, ptr %26, align 8, !tbaa !11
  %3018 = load double, ptr %24, align 8, !tbaa !11
  %3019 = fadd double %3018, %3017
  store double %3019, ptr %24, align 8, !tbaa !11
  br label %3020

3020:                                             ; preds = %3002
  %3021 = load i64, ptr %20, align 8, !tbaa !9
  %3022 = add nsw i64 %3021, 1
  store i64 %3022, ptr %20, align 8, !tbaa !9
  br label %2998, !llvm.loop !83

3023:                                             ; preds = %2998
  %3024 = load i64, ptr %20, align 8, !tbaa !9
  %3025 = load i64, ptr %21, align 8, !tbaa !9
  %3026 = load i64, ptr %27, align 8, !tbaa !9
  %3027 = mul nsw i64 %3025, %3026
  %3028 = add nsw i64 %3024, %3027
  store i64 %3028, ptr %15, align 8, !tbaa !9
  %3029 = load ptr, ptr %12, align 8, !tbaa !5
  %3030 = load i64, ptr %15, align 8, !tbaa !9
  %3031 = getelementptr inbounds %struct.doublecomplex, ptr %3029, i64 %3030
  %3032 = getelementptr inbounds %struct.doublecomplex, ptr %3031, i32 0, i32 0
  %3033 = load double, ptr %3032, align 8, !tbaa !13
  store double %3033, ptr %17, align 8, !tbaa !11
  %3034 = load double, ptr %17, align 8, !tbaa !11
  %3035 = fcmp oge double %3034, 0.000000e+00
  br i1 %3035, label %3036, label %3038

3036:                                             ; preds = %3023
  %3037 = load double, ptr %17, align 8, !tbaa !11
  br label %3041

3038:                                             ; preds = %3023
  %3039 = load double, ptr %17, align 8, !tbaa !11
  %3040 = fneg double %3039
  br label %3041

3041:                                             ; preds = %3038, %3036
  %3042 = phi double [ %3037, %3036 ], [ %3040, %3038 ]
  store double %3042, ptr %26, align 8, !tbaa !11
  %3043 = load double, ptr %26, align 8, !tbaa !11
  %3044 = load double, ptr %24, align 8, !tbaa !11
  %3045 = fadd double %3044, %3043
  store double %3045, ptr %24, align 8, !tbaa !11
  %3046 = load double, ptr %24, align 8, !tbaa !11
  %3047 = load ptr, ptr %13, align 8, !tbaa !5
  %3048 = load i64, ptr %21, align 8, !tbaa !9
  %3049 = getelementptr inbounds double, ptr %3047, i64 %3048
  store double %3046, ptr %3049, align 8, !tbaa !11
  %3050 = load i64, ptr %20, align 8, !tbaa !9
  %3051 = add nsw i64 %3050, 1
  store i64 %3051, ptr %20, align 8, !tbaa !9
  %3052 = load i64, ptr %20, align 8, !tbaa !9
  %3053 = load i64, ptr %21, align 8, !tbaa !9
  %3054 = load i64, ptr %27, align 8, !tbaa !9
  %3055 = mul nsw i64 %3053, %3054
  %3056 = add nsw i64 %3052, %3055
  store i64 %3056, ptr %15, align 8, !tbaa !9
  %3057 = load ptr, ptr %12, align 8, !tbaa !5
  %3058 = load i64, ptr %15, align 8, !tbaa !9
  %3059 = getelementptr inbounds %struct.doublecomplex, ptr %3057, i64 %3058
  %3060 = getelementptr inbounds %struct.doublecomplex, ptr %3059, i32 0, i32 0
  %3061 = load double, ptr %3060, align 8, !tbaa !13
  store double %3061, ptr %17, align 8, !tbaa !11
  %3062 = load double, ptr %17, align 8, !tbaa !11
  %3063 = fcmp oge double %3062, 0.000000e+00
  br i1 %3063, label %3064, label %3066

3064:                                             ; preds = %3041
  %3065 = load double, ptr %17, align 8, !tbaa !11
  br label %3069

3066:                                             ; preds = %3041
  %3067 = load double, ptr %17, align 8, !tbaa !11
  %3068 = fneg double %3067
  br label %3069

3069:                                             ; preds = %3066, %3064
  %3070 = phi double [ %3065, %3064 ], [ %3068, %3066 ]
  store double %3070, ptr %26, align 8, !tbaa !11
  %3071 = load double, ptr %26, align 8, !tbaa !11
  store double %3071, ptr %24, align 8, !tbaa !11
  %3072 = load ptr, ptr %11, align 8, !tbaa !5
  %3073 = load i64, ptr %3072, align 8, !tbaa !9
  %3074 = sub nsw i64 %3073, 1
  store i64 %3074, ptr %15, align 8, !tbaa !9
  %3075 = load i64, ptr %22, align 8, !tbaa !9
  %3076 = load i64, ptr %21, align 8, !tbaa !9
  %3077 = add nsw i64 %3075, %3076
  %3078 = add nsw i64 %3077, 1
  store i64 %3078, ptr %23, align 8, !tbaa !9
  br label %3079

3079:                                             ; preds = %3103, %3069
  %3080 = load i64, ptr %23, align 8, !tbaa !9
  %3081 = load i64, ptr %15, align 8, !tbaa !9
  %3082 = icmp sle i64 %3080, %3081
  br i1 %3082, label %3083, label %3106

3083:                                             ; preds = %3079
  %3084 = load i64, ptr %20, align 8, !tbaa !9
  %3085 = add nsw i64 %3084, 1
  store i64 %3085, ptr %20, align 8, !tbaa !9
  %3086 = load ptr, ptr %12, align 8, !tbaa !5
  %3087 = load i64, ptr %20, align 8, !tbaa !9
  %3088 = load i64, ptr %21, align 8, !tbaa !9
  %3089 = load i64, ptr %27, align 8, !tbaa !9
  %3090 = mul nsw i64 %3088, %3089
  %3091 = add nsw i64 %3087, %3090
  %3092 = getelementptr inbounds %struct.doublecomplex, ptr %3086, i64 %3091
  %3093 = call double @z_abs(ptr noundef %3092)
  store double %3093, ptr %26, align 8, !tbaa !11
  %3094 = load double, ptr %26, align 8, !tbaa !11
  %3095 = load double, ptr %24, align 8, !tbaa !11
  %3096 = fadd double %3095, %3094
  store double %3096, ptr %24, align 8, !tbaa !11
  %3097 = load double, ptr %26, align 8, !tbaa !11
  %3098 = load ptr, ptr %13, align 8, !tbaa !5
  %3099 = load i64, ptr %23, align 8, !tbaa !9
  %3100 = getelementptr inbounds double, ptr %3098, i64 %3099
  %3101 = load double, ptr %3100, align 8, !tbaa !11
  %3102 = fadd double %3101, %3097
  store double %3102, ptr %3100, align 8, !tbaa !11
  br label %3103

3103:                                             ; preds = %3083
  %3104 = load i64, ptr %23, align 8, !tbaa !9
  %3105 = add nsw i64 %3104, 1
  store i64 %3105, ptr %23, align 8, !tbaa !9
  br label %3079, !llvm.loop !84

3106:                                             ; preds = %3079
  %3107 = load double, ptr %24, align 8, !tbaa !11
  %3108 = load ptr, ptr %13, align 8, !tbaa !5
  %3109 = load i64, ptr %22, align 8, !tbaa !9
  %3110 = load i64, ptr %21, align 8, !tbaa !9
  %3111 = add nsw i64 %3109, %3110
  %3112 = getelementptr inbounds double, ptr %3108, i64 %3111
  %3113 = load double, ptr %3112, align 8, !tbaa !11
  %3114 = fadd double %3113, %3107
  store double %3114, ptr %3112, align 8, !tbaa !11
  br label %3115

3115:                                             ; preds = %3106
  %3116 = load i64, ptr %21, align 8, !tbaa !9
  %3117 = add nsw i64 %3116, 1
  store i64 %3117, ptr %21, align 8, !tbaa !9
  br label %2991, !llvm.loop !85

3118:                                             ; preds = %2991
  store double 0.000000e+00, ptr %24, align 8, !tbaa !11
  %3119 = load i64, ptr %22, align 8, !tbaa !9
  %3120 = sub nsw i64 %3119, 2
  store i64 %3120, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %3121

3121:                                             ; preds = %3143, %3118
  %3122 = load i64, ptr %20, align 8, !tbaa !9
  %3123 = load i64, ptr %14, align 8, !tbaa !9
  %3124 = icmp sle i64 %3122, %3123
  br i1 %3124, label %3125, label %3146

3125:                                             ; preds = %3121
  %3126 = load ptr, ptr %12, align 8, !tbaa !5
  %3127 = load i64, ptr %20, align 8, !tbaa !9
  %3128 = load i64, ptr %21, align 8, !tbaa !9
  %3129 = load i64, ptr %27, align 8, !tbaa !9
  %3130 = mul nsw i64 %3128, %3129
  %3131 = add nsw i64 %3127, %3130
  %3132 = getelementptr inbounds %struct.doublecomplex, ptr %3126, i64 %3131
  %3133 = call double @z_abs(ptr noundef %3132)
  store double %3133, ptr %26, align 8, !tbaa !11
  %3134 = load double, ptr %26, align 8, !tbaa !11
  %3135 = load ptr, ptr %13, align 8, !tbaa !5
  %3136 = load i64, ptr %20, align 8, !tbaa !9
  %3137 = getelementptr inbounds double, ptr %3135, i64 %3136
  %3138 = load double, ptr %3137, align 8, !tbaa !11
  %3139 = fadd double %3138, %3134
  store double %3139, ptr %3137, align 8, !tbaa !11
  %3140 = load double, ptr %26, align 8, !tbaa !11
  %3141 = load double, ptr %24, align 8, !tbaa !11
  %3142 = fadd double %3141, %3140
  store double %3142, ptr %24, align 8, !tbaa !11
  br label %3143

3143:                                             ; preds = %3125
  %3144 = load i64, ptr %20, align 8, !tbaa !9
  %3145 = add nsw i64 %3144, 1
  store i64 %3145, ptr %20, align 8, !tbaa !9
  br label %3121, !llvm.loop !86

3146:                                             ; preds = %3121
  %3147 = load i64, ptr %20, align 8, !tbaa !9
  %3148 = load i64, ptr %21, align 8, !tbaa !9
  %3149 = load i64, ptr %27, align 8, !tbaa !9
  %3150 = mul nsw i64 %3148, %3149
  %3151 = add nsw i64 %3147, %3150
  store i64 %3151, ptr %14, align 8, !tbaa !9
  %3152 = load ptr, ptr %12, align 8, !tbaa !5
  %3153 = load i64, ptr %14, align 8, !tbaa !9
  %3154 = getelementptr inbounds %struct.doublecomplex, ptr %3152, i64 %3153
  %3155 = getelementptr inbounds %struct.doublecomplex, ptr %3154, i32 0, i32 0
  %3156 = load double, ptr %3155, align 8, !tbaa !13
  store double %3156, ptr %17, align 8, !tbaa !11
  %3157 = load double, ptr %17, align 8, !tbaa !11
  %3158 = fcmp oge double %3157, 0.000000e+00
  br i1 %3158, label %3159, label %3161

3159:                                             ; preds = %3146
  %3160 = load double, ptr %17, align 8, !tbaa !11
  br label %3164

3161:                                             ; preds = %3146
  %3162 = load double, ptr %17, align 8, !tbaa !11
  %3163 = fneg double %3162
  br label %3164

3164:                                             ; preds = %3161, %3159
  %3165 = phi double [ %3160, %3159 ], [ %3163, %3161 ]
  store double %3165, ptr %26, align 8, !tbaa !11
  %3166 = load double, ptr %26, align 8, !tbaa !11
  %3167 = load double, ptr %24, align 8, !tbaa !11
  %3168 = fadd double %3167, %3166
  store double %3168, ptr %24, align 8, !tbaa !11
  %3169 = load double, ptr %24, align 8, !tbaa !11
  %3170 = load ptr, ptr %13, align 8, !tbaa !5
  %3171 = load i64, ptr %20, align 8, !tbaa !9
  %3172 = getelementptr inbounds double, ptr %3170, i64 %3171
  store double %3169, ptr %3172, align 8, !tbaa !11
  %3173 = load ptr, ptr %11, align 8, !tbaa !5
  %3174 = load i64, ptr %3173, align 8, !tbaa !9
  %3175 = sub nsw i64 %3174, 1
  store i64 %3175, ptr %14, align 8, !tbaa !9
  %3176 = load i64, ptr %22, align 8, !tbaa !9
  store i64 %3176, ptr %21, align 8, !tbaa !9
  br label %3177

3177:                                             ; preds = %3216, %3164
  %3178 = load i64, ptr %21, align 8, !tbaa !9
  %3179 = load i64, ptr %14, align 8, !tbaa !9
  %3180 = icmp sle i64 %3178, %3179
  br i1 %3180, label %3181, label %3219

3181:                                             ; preds = %3177
  store double 0.000000e+00, ptr %24, align 8, !tbaa !11
  %3182 = load i64, ptr %22, align 8, !tbaa !9
  %3183 = sub nsw i64 %3182, 1
  store i64 %3183, ptr %15, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %3184

3184:                                             ; preds = %3206, %3181
  %3185 = load i64, ptr %20, align 8, !tbaa !9
  %3186 = load i64, ptr %15, align 8, !tbaa !9
  %3187 = icmp sle i64 %3185, %3186
  br i1 %3187, label %3188, label %3209

3188:                                             ; preds = %3184
  %3189 = load ptr, ptr %12, align 8, !tbaa !5
  %3190 = load i64, ptr %20, align 8, !tbaa !9
  %3191 = load i64, ptr %21, align 8, !tbaa !9
  %3192 = load i64, ptr %27, align 8, !tbaa !9
  %3193 = mul nsw i64 %3191, %3192
  %3194 = add nsw i64 %3190, %3193
  %3195 = getelementptr inbounds %struct.doublecomplex, ptr %3189, i64 %3194
  %3196 = call double @z_abs(ptr noundef %3195)
  store double %3196, ptr %26, align 8, !tbaa !11
  %3197 = load double, ptr %26, align 8, !tbaa !11
  %3198 = load ptr, ptr %13, align 8, !tbaa !5
  %3199 = load i64, ptr %20, align 8, !tbaa !9
  %3200 = getelementptr inbounds double, ptr %3198, i64 %3199
  %3201 = load double, ptr %3200, align 8, !tbaa !11
  %3202 = fadd double %3201, %3197
  store double %3202, ptr %3200, align 8, !tbaa !11
  %3203 = load double, ptr %26, align 8, !tbaa !11
  %3204 = load double, ptr %24, align 8, !tbaa !11
  %3205 = fadd double %3204, %3203
  store double %3205, ptr %24, align 8, !tbaa !11
  br label %3206

3206:                                             ; preds = %3188
  %3207 = load i64, ptr %20, align 8, !tbaa !9
  %3208 = add nsw i64 %3207, 1
  store i64 %3208, ptr %20, align 8, !tbaa !9
  br label %3184, !llvm.loop !87

3209:                                             ; preds = %3184
  %3210 = load double, ptr %24, align 8, !tbaa !11
  %3211 = load ptr, ptr %13, align 8, !tbaa !5
  %3212 = load i64, ptr %21, align 8, !tbaa !9
  %3213 = getelementptr inbounds double, ptr %3211, i64 %3212
  %3214 = load double, ptr %3213, align 8, !tbaa !11
  %3215 = fadd double %3214, %3210
  store double %3215, ptr %3213, align 8, !tbaa !11
  br label %3216

3216:                                             ; preds = %3209
  %3217 = load i64, ptr %21, align 8, !tbaa !9
  %3218 = add nsw i64 %3217, 1
  store i64 %3218, ptr %21, align 8, !tbaa !9
  br label %3177, !llvm.loop !88

3219:                                             ; preds = %3177
  %3220 = load ptr, ptr %11, align 8, !tbaa !5
  %3221 = load ptr, ptr %13, align 8, !tbaa !5
  %3222 = call i64 @f2c_idamax(ptr noundef %3220, ptr noundef %3221, ptr noundef @c__1)
  store i64 %3222, ptr %20, align 8, !tbaa !9
  %3223 = load ptr, ptr %13, align 8, !tbaa !5
  %3224 = load i64, ptr %20, align 8, !tbaa !9
  %3225 = sub nsw i64 %3224, 1
  %3226 = getelementptr inbounds double, ptr %3223, i64 %3225
  %3227 = load double, ptr %3226, align 8, !tbaa !11
  store double %3227, ptr %32, align 8, !tbaa !11
  br label %3228

3228:                                             ; preds = %3219, %2961
  br label %3852

3229:                                             ; preds = %2702
  %3230 = load i64, ptr %30, align 8, !tbaa !9
  %3231 = icmp eq i64 %3230, 0
  br i1 %3231, label %3232, label %3548

3232:                                             ; preds = %3229
  %3233 = load ptr, ptr %11, align 8, !tbaa !5
  %3234 = load i64, ptr %3233, align 8, !tbaa !9
  %3235 = sub nsw i64 %3234, 1
  store i64 %3235, ptr %14, align 8, !tbaa !9
  %3236 = load i64, ptr %22, align 8, !tbaa !9
  store i64 %3236, ptr %20, align 8, !tbaa !9
  br label %3237

3237:                                             ; preds = %3245, %3232
  %3238 = load i64, ptr %20, align 8, !tbaa !9
  %3239 = load i64, ptr %14, align 8, !tbaa !9
  %3240 = icmp sle i64 %3238, %3239
  br i1 %3240, label %3241, label %3248

3241:                                             ; preds = %3237
  %3242 = load ptr, ptr %13, align 8, !tbaa !5
  %3243 = load i64, ptr %20, align 8, !tbaa !9
  %3244 = getelementptr inbounds double, ptr %3242, i64 %3243
  store double 0.000000e+00, ptr %3244, align 8, !tbaa !11
  br label %3245

3245:                                             ; preds = %3241
  %3246 = load i64, ptr %20, align 8, !tbaa !9
  %3247 = add nsw i64 %3246, 1
  store i64 %3247, ptr %20, align 8, !tbaa !9
  br label %3237, !llvm.loop !89

3248:                                             ; preds = %3237
  %3249 = load i64, ptr %22, align 8, !tbaa !9
  %3250 = sub nsw i64 %3249, 1
  store i64 %3250, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %3251

3251:                                             ; preds = %3290, %3248
  %3252 = load i64, ptr %21, align 8, !tbaa !9
  %3253 = load i64, ptr %14, align 8, !tbaa !9
  %3254 = icmp sle i64 %3252, %3253
  br i1 %3254, label %3255, label %3293

3255:                                             ; preds = %3251
  store double 0.000000e+00, ptr %24, align 8, !tbaa !11
  %3256 = load i64, ptr %22, align 8, !tbaa !9
  %3257 = sub nsw i64 %3256, 1
  store i64 %3257, ptr %15, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %3258

3258:                                             ; preds = %3282, %3255
  %3259 = load i64, ptr %20, align 8, !tbaa !9
  %3260 = load i64, ptr %15, align 8, !tbaa !9
  %3261 = icmp sle i64 %3259, %3260
  br i1 %3261, label %3262, label %3285

3262:                                             ; preds = %3258
  %3263 = load ptr, ptr %12, align 8, !tbaa !5
  %3264 = load i64, ptr %20, align 8, !tbaa !9
  %3265 = load i64, ptr %21, align 8, !tbaa !9
  %3266 = load i64, ptr %27, align 8, !tbaa !9
  %3267 = mul nsw i64 %3265, %3266
  %3268 = add nsw i64 %3264, %3267
  %3269 = getelementptr inbounds %struct.doublecomplex, ptr %3263, i64 %3268
  %3270 = call double @z_abs(ptr noundef %3269)
  store double %3270, ptr %26, align 8, !tbaa !11
  %3271 = load double, ptr %26, align 8, !tbaa !11
  %3272 = load ptr, ptr %13, align 8, !tbaa !5
  %3273 = load i64, ptr %20, align 8, !tbaa !9
  %3274 = load i64, ptr %22, align 8, !tbaa !9
  %3275 = add nsw i64 %3273, %3274
  %3276 = getelementptr inbounds double, ptr %3272, i64 %3275
  %3277 = load double, ptr %3276, align 8, !tbaa !11
  %3278 = fadd double %3277, %3271
  store double %3278, ptr %3276, align 8, !tbaa !11
  %3279 = load double, ptr %26, align 8, !tbaa !11
  %3280 = load double, ptr %24, align 8, !tbaa !11
  %3281 = fadd double %3280, %3279
  store double %3281, ptr %24, align 8, !tbaa !11
  br label %3282

3282:                                             ; preds = %3262
  %3283 = load i64, ptr %20, align 8, !tbaa !9
  %3284 = add nsw i64 %3283, 1
  store i64 %3284, ptr %20, align 8, !tbaa !9
  br label %3258, !llvm.loop !90

3285:                                             ; preds = %3258
  %3286 = load double, ptr %24, align 8, !tbaa !11
  %3287 = load ptr, ptr %13, align 8, !tbaa !5
  %3288 = load i64, ptr %21, align 8, !tbaa !9
  %3289 = getelementptr inbounds double, ptr %3287, i64 %3288
  store double %3286, ptr %3289, align 8, !tbaa !11
  br label %3290

3290:                                             ; preds = %3285
  %3291 = load i64, ptr %21, align 8, !tbaa !9
  %3292 = add nsw i64 %3291, 1
  store i64 %3292, ptr %21, align 8, !tbaa !9
  br label %3251, !llvm.loop !91

3293:                                             ; preds = %3251
  %3294 = load i64, ptr %21, align 8, !tbaa !9
  %3295 = load i64, ptr %27, align 8, !tbaa !9
  %3296 = mul nsw i64 %3294, %3295
  store i64 %3296, ptr %14, align 8, !tbaa !9
  %3297 = load ptr, ptr %12, align 8, !tbaa !5
  %3298 = load i64, ptr %14, align 8, !tbaa !9
  %3299 = getelementptr inbounds %struct.doublecomplex, ptr %3297, i64 %3298
  %3300 = getelementptr inbounds %struct.doublecomplex, ptr %3299, i32 0, i32 0
  %3301 = load double, ptr %3300, align 8, !tbaa !13
  store double %3301, ptr %17, align 8, !tbaa !11
  %3302 = load double, ptr %17, align 8, !tbaa !11
  %3303 = fcmp oge double %3302, 0.000000e+00
  br i1 %3303, label %3304, label %3306

3304:                                             ; preds = %3293
  %3305 = load double, ptr %17, align 8, !tbaa !11
  br label %3309

3306:                                             ; preds = %3293
  %3307 = load double, ptr %17, align 8, !tbaa !11
  %3308 = fneg double %3307
  br label %3309

3309:                                             ; preds = %3306, %3304
  %3310 = phi double [ %3305, %3304 ], [ %3308, %3306 ]
  store double %3310, ptr %26, align 8, !tbaa !11
  %3311 = load double, ptr %26, align 8, !tbaa !11
  store double %3311, ptr %24, align 8, !tbaa !11
  %3312 = load i64, ptr %22, align 8, !tbaa !9
  %3313 = sub nsw i64 %3312, 1
  store i64 %3313, ptr %14, align 8, !tbaa !9
  store i64 1, ptr %20, align 8, !tbaa !9
  br label %3314

3314:                                             ; preds = %3338, %3309
  %3315 = load i64, ptr %20, align 8, !tbaa !9
  %3316 = load i64, ptr %14, align 8, !tbaa !9
  %3317 = icmp sle i64 %3315, %3316
  br i1 %3317, label %3318, label %3341

3318:                                             ; preds = %3314
  %3319 = load ptr, ptr %12, align 8, !tbaa !5
  %3320 = load i64, ptr %20, align 8, !tbaa !9
  %3321 = load i64, ptr %21, align 8, !tbaa !9
  %3322 = load i64, ptr %27, align 8, !tbaa !9
  %3323 = mul nsw i64 %3321, %3322
  %3324 = add nsw i64 %3320, %3323
  %3325 = getelementptr inbounds %struct.doublecomplex, ptr %3319, i64 %3324
  %3326 = call double @z_abs(ptr noundef %3325)
  store double %3326, ptr %26, align 8, !tbaa !11
  %3327 = load double, ptr %26, align 8, !tbaa !11
  %3328 = load ptr, ptr %13, align 8, !tbaa !5
  %3329 = load i64, ptr %20, align 8, !tbaa !9
  %3330 = load i64, ptr %22, align 8, !tbaa !9
  %3331 = add nsw i64 %3329, %3330
  %3332 = getelementptr inbounds double, ptr %3328, i64 %3331
  %3333 = load double, ptr %3332, align 8, !tbaa !11
  %3334 = fadd double %3333, %3327
  store double %3334, ptr %3332, align 8, !tbaa !11
  %3335 = load double, ptr %26, align 8, !tbaa !11
  %3336 = load double, ptr %24, align 8, !tbaa !11
  %3337 = fadd double %3336, %3335
  store double %3337, ptr %24, align 8, !tbaa !11
  br label %3338

3338:                                             ; preds = %3318
  %3339 = load i64, ptr %20, align 8, !tbaa !9
  %3340 = add nsw i64 %3339, 1
  store i64 %3340, ptr %20, align 8, !tbaa !9
  br label %3314, !llvm.loop !92

3341:                                             ; preds = %3314
  %3342 = load double, ptr %24, align 8, !tbaa !11
  %3343 = load ptr, ptr %13, align 8, !tbaa !5
  %3344 = load i64, ptr %21, align 8, !tbaa !9
  %3345 = getelementptr inbounds double, ptr %3343, i64 %3344
  %3346 = load double, ptr %3345, align 8, !tbaa !11
  %3347 = fadd double %3346, %3342
  store double %3347, ptr %3345, align 8, !tbaa !11
  %3348 = load ptr, ptr %11, align 8, !tbaa !5
  %3349 = load i64, ptr %3348, align 8, !tbaa !9
  %3350 = sub nsw i64 %3349, 1
  store i64 %3350, ptr %14, align 8, !tbaa !9
  %3351 = load i64, ptr %22, align 8, !tbaa !9
  %3352 = add nsw i64 %3351, 1
  store i64 %3352, ptr %21, align 8, !tbaa !9
  br label %3353

3353:                                             ; preds = %3480, %3341
  %3354 = load i64, ptr %21, align 8, !tbaa !9
  %3355 = load i64, ptr %14, align 8, !tbaa !9
  %3356 = icmp sle i64 %3354, %3355
  br i1 %3356, label %3357, label %3483

3357:                                             ; preds = %3353
  store double 0.000000e+00, ptr %24, align 8, !tbaa !11
  %3358 = load i64, ptr %21, align 8, !tbaa !9
  %3359 = sub nsw i64 %3358, 2
  %3360 = load i64, ptr %22, align 8, !tbaa !9
  %3361 = sub nsw i64 %3359, %3360
  store i64 %3361, ptr %15, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %3362

3362:                                             ; preds = %3384, %3357
  %3363 = load i64, ptr %20, align 8, !tbaa !9
  %3364 = load i64, ptr %15, align 8, !tbaa !9
  %3365 = icmp sle i64 %3363, %3364
  br i1 %3365, label %3366, label %3387

3366:                                             ; preds = %3362
  %3367 = load ptr, ptr %12, align 8, !tbaa !5
  %3368 = load i64, ptr %20, align 8, !tbaa !9
  %3369 = load i64, ptr %21, align 8, !tbaa !9
  %3370 = load i64, ptr %27, align 8, !tbaa !9
  %3371 = mul nsw i64 %3369, %3370
  %3372 = add nsw i64 %3368, %3371
  %3373 = getelementptr inbounds %struct.doublecomplex, ptr %3367, i64 %3372
  %3374 = call double @z_abs(ptr noundef %3373)
  store double %3374, ptr %26, align 8, !tbaa !11
  %3375 = load double, ptr %26, align 8, !tbaa !11
  %3376 = load ptr, ptr %13, align 8, !tbaa !5
  %3377 = load i64, ptr %20, align 8, !tbaa !9
  %3378 = getelementptr inbounds double, ptr %3376, i64 %3377
  %3379 = load double, ptr %3378, align 8, !tbaa !11
  %3380 = fadd double %3379, %3375
  store double %3380, ptr %3378, align 8, !tbaa !11
  %3381 = load double, ptr %26, align 8, !tbaa !11
  %3382 = load double, ptr %24, align 8, !tbaa !11
  %3383 = fadd double %3382, %3381
  store double %3383, ptr %24, align 8, !tbaa !11
  br label %3384

3384:                                             ; preds = %3366
  %3385 = load i64, ptr %20, align 8, !tbaa !9
  %3386 = add nsw i64 %3385, 1
  store i64 %3386, ptr %20, align 8, !tbaa !9
  br label %3362, !llvm.loop !93

3387:                                             ; preds = %3362
  %3388 = load i64, ptr %20, align 8, !tbaa !9
  %3389 = load i64, ptr %21, align 8, !tbaa !9
  %3390 = load i64, ptr %27, align 8, !tbaa !9
  %3391 = mul nsw i64 %3389, %3390
  %3392 = add nsw i64 %3388, %3391
  store i64 %3392, ptr %15, align 8, !tbaa !9
  %3393 = load ptr, ptr %12, align 8, !tbaa !5
  %3394 = load i64, ptr %15, align 8, !tbaa !9
  %3395 = getelementptr inbounds %struct.doublecomplex, ptr %3393, i64 %3394
  %3396 = getelementptr inbounds %struct.doublecomplex, ptr %3395, i32 0, i32 0
  %3397 = load double, ptr %3396, align 8, !tbaa !13
  store double %3397, ptr %17, align 8, !tbaa !11
  %3398 = load double, ptr %17, align 8, !tbaa !11
  %3399 = fcmp oge double %3398, 0.000000e+00
  br i1 %3399, label %3400, label %3402

3400:                                             ; preds = %3387
  %3401 = load double, ptr %17, align 8, !tbaa !11
  br label %3405

3402:                                             ; preds = %3387
  %3403 = load double, ptr %17, align 8, !tbaa !11
  %3404 = fneg double %3403
  br label %3405

3405:                                             ; preds = %3402, %3400
  %3406 = phi double [ %3401, %3400 ], [ %3404, %3402 ]
  store double %3406, ptr %26, align 8, !tbaa !11
  %3407 = load double, ptr %26, align 8, !tbaa !11
  %3408 = load double, ptr %24, align 8, !tbaa !11
  %3409 = fadd double %3408, %3407
  store double %3409, ptr %24, align 8, !tbaa !11
  %3410 = load double, ptr %24, align 8, !tbaa !11
  %3411 = load ptr, ptr %13, align 8, !tbaa !5
  %3412 = load i64, ptr %21, align 8, !tbaa !9
  %3413 = load i64, ptr %22, align 8, !tbaa !9
  %3414 = sub nsw i64 %3412, %3413
  %3415 = sub nsw i64 %3414, 1
  %3416 = getelementptr inbounds double, ptr %3411, i64 %3415
  %3417 = load double, ptr %3416, align 8, !tbaa !11
  %3418 = fadd double %3417, %3410
  store double %3418, ptr %3416, align 8, !tbaa !11
  %3419 = load i64, ptr %20, align 8, !tbaa !9
  %3420 = add nsw i64 %3419, 1
  store i64 %3420, ptr %20, align 8, !tbaa !9
  %3421 = load i64, ptr %20, align 8, !tbaa !9
  %3422 = load i64, ptr %21, align 8, !tbaa !9
  %3423 = load i64, ptr %27, align 8, !tbaa !9
  %3424 = mul nsw i64 %3422, %3423
  %3425 = add nsw i64 %3421, %3424
  store i64 %3425, ptr %15, align 8, !tbaa !9
  %3426 = load ptr, ptr %12, align 8, !tbaa !5
  %3427 = load i64, ptr %15, align 8, !tbaa !9
  %3428 = getelementptr inbounds %struct.doublecomplex, ptr %3426, i64 %3427
  %3429 = getelementptr inbounds %struct.doublecomplex, ptr %3428, i32 0, i32 0
  %3430 = load double, ptr %3429, align 8, !tbaa !13
  store double %3430, ptr %17, align 8, !tbaa !11
  %3431 = load double, ptr %17, align 8, !tbaa !11
  %3432 = fcmp oge double %3431, 0.000000e+00
  br i1 %3432, label %3433, label %3435

3433:                                             ; preds = %3405
  %3434 = load double, ptr %17, align 8, !tbaa !11
  br label %3438

3435:                                             ; preds = %3405
  %3436 = load double, ptr %17, align 8, !tbaa !11
  %3437 = fneg double %3436
  br label %3438

3438:                                             ; preds = %3435, %3433
  %3439 = phi double [ %3434, %3433 ], [ %3437, %3435 ]
  store double %3439, ptr %26, align 8, !tbaa !11
  %3440 = load double, ptr %26, align 8, !tbaa !11
  store double %3440, ptr %24, align 8, !tbaa !11
  %3441 = load ptr, ptr %11, align 8, !tbaa !5
  %3442 = load i64, ptr %3441, align 8, !tbaa !9
  %3443 = sub nsw i64 %3442, 1
  store i64 %3443, ptr %15, align 8, !tbaa !9
  %3444 = load i64, ptr %21, align 8, !tbaa !9
  %3445 = add nsw i64 %3444, 1
  store i64 %3445, ptr %23, align 8, !tbaa !9
  br label %3446

3446:                                             ; preds = %3470, %3438
  %3447 = load i64, ptr %23, align 8, !tbaa !9
  %3448 = load i64, ptr %15, align 8, !tbaa !9
  %3449 = icmp sle i64 %3447, %3448
  br i1 %3449, label %3450, label %3473

3450:                                             ; preds = %3446
  %3451 = load i64, ptr %20, align 8, !tbaa !9
  %3452 = add nsw i64 %3451, 1
  store i64 %3452, ptr %20, align 8, !tbaa !9
  %3453 = load ptr, ptr %12, align 8, !tbaa !5
  %3454 = load i64, ptr %20, align 8, !tbaa !9
  %3455 = load i64, ptr %21, align 8, !tbaa !9
  %3456 = load i64, ptr %27, align 8, !tbaa !9
  %3457 = mul nsw i64 %3455, %3456
  %3458 = add nsw i64 %3454, %3457
  %3459 = getelementptr inbounds %struct.doublecomplex, ptr %3453, i64 %3458
  %3460 = call double @z_abs(ptr noundef %3459)
  store double %3460, ptr %26, align 8, !tbaa !11
  %3461 = load double, ptr %26, align 8, !tbaa !11
  %3462 = load ptr, ptr %13, align 8, !tbaa !5
  %3463 = load i64, ptr %23, align 8, !tbaa !9
  %3464 = getelementptr inbounds double, ptr %3462, i64 %3463
  %3465 = load double, ptr %3464, align 8, !tbaa !11
  %3466 = fadd double %3465, %3461
  store double %3466, ptr %3464, align 8, !tbaa !11
  %3467 = load double, ptr %26, align 8, !tbaa !11
  %3468 = load double, ptr %24, align 8, !tbaa !11
  %3469 = fadd double %3468, %3467
  store double %3469, ptr %24, align 8, !tbaa !11
  br label %3470

3470:                                             ; preds = %3450
  %3471 = load i64, ptr %23, align 8, !tbaa !9
  %3472 = add nsw i64 %3471, 1
  store i64 %3472, ptr %23, align 8, !tbaa !9
  br label %3446, !llvm.loop !94

3473:                                             ; preds = %3446
  %3474 = load double, ptr %24, align 8, !tbaa !11
  %3475 = load ptr, ptr %13, align 8, !tbaa !5
  %3476 = load i64, ptr %21, align 8, !tbaa !9
  %3477 = getelementptr inbounds double, ptr %3475, i64 %3476
  %3478 = load double, ptr %3477, align 8, !tbaa !11
  %3479 = fadd double %3478, %3474
  store double %3479, ptr %3477, align 8, !tbaa !11
  br label %3480

3480:                                             ; preds = %3473
  %3481 = load i64, ptr %21, align 8, !tbaa !9
  %3482 = add nsw i64 %3481, 1
  store i64 %3482, ptr %21, align 8, !tbaa !9
  br label %3353, !llvm.loop !95

3483:                                             ; preds = %3353
  store double 0.000000e+00, ptr %24, align 8, !tbaa !11
  %3484 = load i64, ptr %22, align 8, !tbaa !9
  %3485 = sub nsw i64 %3484, 2
  store i64 %3485, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %3486

3486:                                             ; preds = %3508, %3483
  %3487 = load i64, ptr %20, align 8, !tbaa !9
  %3488 = load i64, ptr %14, align 8, !tbaa !9
  %3489 = icmp sle i64 %3487, %3488
  br i1 %3489, label %3490, label %3511

3490:                                             ; preds = %3486
  %3491 = load ptr, ptr %12, align 8, !tbaa !5
  %3492 = load i64, ptr %20, align 8, !tbaa !9
  %3493 = load i64, ptr %21, align 8, !tbaa !9
  %3494 = load i64, ptr %27, align 8, !tbaa !9
  %3495 = mul nsw i64 %3493, %3494
  %3496 = add nsw i64 %3492, %3495
  %3497 = getelementptr inbounds %struct.doublecomplex, ptr %3491, i64 %3496
  %3498 = call double @z_abs(ptr noundef %3497)
  store double %3498, ptr %26, align 8, !tbaa !11
  %3499 = load double, ptr %26, align 8, !tbaa !11
  %3500 = load ptr, ptr %13, align 8, !tbaa !5
  %3501 = load i64, ptr %20, align 8, !tbaa !9
  %3502 = getelementptr inbounds double, ptr %3500, i64 %3501
  %3503 = load double, ptr %3502, align 8, !tbaa !11
  %3504 = fadd double %3503, %3499
  store double %3504, ptr %3502, align 8, !tbaa !11
  %3505 = load double, ptr %26, align 8, !tbaa !11
  %3506 = load double, ptr %24, align 8, !tbaa !11
  %3507 = fadd double %3506, %3505
  store double %3507, ptr %24, align 8, !tbaa !11
  br label %3508

3508:                                             ; preds = %3490
  %3509 = load i64, ptr %20, align 8, !tbaa !9
  %3510 = add nsw i64 %3509, 1
  store i64 %3510, ptr %20, align 8, !tbaa !9
  br label %3486, !llvm.loop !96

3511:                                             ; preds = %3486
  %3512 = load i64, ptr %20, align 8, !tbaa !9
  %3513 = load i64, ptr %21, align 8, !tbaa !9
  %3514 = load i64, ptr %27, align 8, !tbaa !9
  %3515 = mul nsw i64 %3513, %3514
  %3516 = add nsw i64 %3512, %3515
  store i64 %3516, ptr %14, align 8, !tbaa !9
  %3517 = load ptr, ptr %12, align 8, !tbaa !5
  %3518 = load i64, ptr %14, align 8, !tbaa !9
  %3519 = getelementptr inbounds %struct.doublecomplex, ptr %3517, i64 %3518
  %3520 = getelementptr inbounds %struct.doublecomplex, ptr %3519, i32 0, i32 0
  %3521 = load double, ptr %3520, align 8, !tbaa !13
  store double %3521, ptr %17, align 8, !tbaa !11
  %3522 = load double, ptr %17, align 8, !tbaa !11
  %3523 = fcmp oge double %3522, 0.000000e+00
  br i1 %3523, label %3524, label %3526

3524:                                             ; preds = %3511
  %3525 = load double, ptr %17, align 8, !tbaa !11
  br label %3529

3526:                                             ; preds = %3511
  %3527 = load double, ptr %17, align 8, !tbaa !11
  %3528 = fneg double %3527
  br label %3529

3529:                                             ; preds = %3526, %3524
  %3530 = phi double [ %3525, %3524 ], [ %3528, %3526 ]
  store double %3530, ptr %26, align 8, !tbaa !11
  %3531 = load double, ptr %26, align 8, !tbaa !11
  %3532 = load double, ptr %24, align 8, !tbaa !11
  %3533 = fadd double %3532, %3531
  store double %3533, ptr %24, align 8, !tbaa !11
  %3534 = load double, ptr %24, align 8, !tbaa !11
  %3535 = load ptr, ptr %13, align 8, !tbaa !5
  %3536 = load i64, ptr %20, align 8, !tbaa !9
  %3537 = getelementptr inbounds double, ptr %3535, i64 %3536
  %3538 = load double, ptr %3537, align 8, !tbaa !11
  %3539 = fadd double %3538, %3534
  store double %3539, ptr %3537, align 8, !tbaa !11
  %3540 = load ptr, ptr %11, align 8, !tbaa !5
  %3541 = load ptr, ptr %13, align 8, !tbaa !5
  %3542 = call i64 @f2c_idamax(ptr noundef %3540, ptr noundef %3541, ptr noundef @c__1)
  store i64 %3542, ptr %20, align 8, !tbaa !9
  %3543 = load ptr, ptr %13, align 8, !tbaa !5
  %3544 = load i64, ptr %20, align 8, !tbaa !9
  %3545 = sub nsw i64 %3544, 1
  %3546 = getelementptr inbounds double, ptr %3543, i64 %3545
  %3547 = load double, ptr %3546, align 8, !tbaa !11
  store double %3547, ptr %32, align 8, !tbaa !11
  br label %3851

3548:                                             ; preds = %3229
  %3549 = load ptr, ptr %11, align 8, !tbaa !5
  %3550 = load i64, ptr %3549, align 8, !tbaa !9
  %3551 = sub nsw i64 %3550, 1
  store i64 %3551, ptr %14, align 8, !tbaa !9
  %3552 = load i64, ptr %22, align 8, !tbaa !9
  store i64 %3552, ptr %20, align 8, !tbaa !9
  br label %3553

3553:                                             ; preds = %3561, %3548
  %3554 = load i64, ptr %20, align 8, !tbaa !9
  %3555 = load i64, ptr %14, align 8, !tbaa !9
  %3556 = icmp sle i64 %3554, %3555
  br i1 %3556, label %3557, label %3564

3557:                                             ; preds = %3553
  %3558 = load ptr, ptr %13, align 8, !tbaa !5
  %3559 = load i64, ptr %20, align 8, !tbaa !9
  %3560 = getelementptr inbounds double, ptr %3558, i64 %3559
  store double 0.000000e+00, ptr %3560, align 8, !tbaa !11
  br label %3561

3561:                                             ; preds = %3557
  %3562 = load i64, ptr %20, align 8, !tbaa !9
  %3563 = add nsw i64 %3562, 1
  store i64 %3563, ptr %20, align 8, !tbaa !9
  br label %3553, !llvm.loop !97

3564:                                             ; preds = %3553
  %3565 = load ptr, ptr %12, align 8, !tbaa !5
  %3566 = getelementptr inbounds %struct.doublecomplex, ptr %3565, i64 0
  %3567 = getelementptr inbounds %struct.doublecomplex, ptr %3566, i32 0, i32 0
  %3568 = load double, ptr %3567, align 8, !tbaa !13
  store double %3568, ptr %17, align 8, !tbaa !11
  %3569 = load double, ptr %17, align 8, !tbaa !11
  %3570 = fcmp oge double %3569, 0.000000e+00
  br i1 %3570, label %3571, label %3573

3571:                                             ; preds = %3564
  %3572 = load double, ptr %17, align 8, !tbaa !11
  br label %3576

3573:                                             ; preds = %3564
  %3574 = load double, ptr %17, align 8, !tbaa !11
  %3575 = fneg double %3574
  br label %3576

3576:                                             ; preds = %3573, %3571
  %3577 = phi double [ %3572, %3571 ], [ %3575, %3573 ]
  store double %3577, ptr %24, align 8, !tbaa !11
  %3578 = load i64, ptr %22, align 8, !tbaa !9
  %3579 = sub nsw i64 %3578, 1
  store i64 %3579, ptr %14, align 8, !tbaa !9
  store i64 1, ptr %20, align 8, !tbaa !9
  br label %3580

3580:                                             ; preds = %3600, %3576
  %3581 = load i64, ptr %20, align 8, !tbaa !9
  %3582 = load i64, ptr %14, align 8, !tbaa !9
  %3583 = icmp sle i64 %3581, %3582
  br i1 %3583, label %3584, label %3603

3584:                                             ; preds = %3580
  %3585 = load ptr, ptr %12, align 8, !tbaa !5
  %3586 = load i64, ptr %20, align 8, !tbaa !9
  %3587 = getelementptr inbounds %struct.doublecomplex, ptr %3585, i64 %3586
  %3588 = call double @z_abs(ptr noundef %3587)
  store double %3588, ptr %26, align 8, !tbaa !11
  %3589 = load double, ptr %26, align 8, !tbaa !11
  %3590 = load ptr, ptr %13, align 8, !tbaa !5
  %3591 = load i64, ptr %20, align 8, !tbaa !9
  %3592 = load i64, ptr %22, align 8, !tbaa !9
  %3593 = add nsw i64 %3591, %3592
  %3594 = getelementptr inbounds double, ptr %3590, i64 %3593
  %3595 = load double, ptr %3594, align 8, !tbaa !11
  %3596 = fadd double %3595, %3589
  store double %3596, ptr %3594, align 8, !tbaa !11
  %3597 = load double, ptr %26, align 8, !tbaa !11
  %3598 = load double, ptr %24, align 8, !tbaa !11
  %3599 = fadd double %3598, %3597
  store double %3599, ptr %24, align 8, !tbaa !11
  br label %3600

3600:                                             ; preds = %3584
  %3601 = load i64, ptr %20, align 8, !tbaa !9
  %3602 = add nsw i64 %3601, 1
  store i64 %3602, ptr %20, align 8, !tbaa !9
  br label %3580, !llvm.loop !98

3603:                                             ; preds = %3580
  %3604 = load double, ptr %24, align 8, !tbaa !11
  %3605 = load ptr, ptr %13, align 8, !tbaa !5
  %3606 = load i64, ptr %22, align 8, !tbaa !9
  %3607 = getelementptr inbounds double, ptr %3605, i64 %3606
  %3608 = load double, ptr %3607, align 8, !tbaa !11
  %3609 = fadd double %3608, %3604
  store double %3609, ptr %3607, align 8, !tbaa !11
  %3610 = load i64, ptr %22, align 8, !tbaa !9
  %3611 = sub nsw i64 %3610, 1
  store i64 %3611, ptr %14, align 8, !tbaa !9
  store i64 1, ptr %21, align 8, !tbaa !9
  br label %3612

3612:                                             ; preds = %3737, %3603
  %3613 = load i64, ptr %21, align 8, !tbaa !9
  %3614 = load i64, ptr %14, align 8, !tbaa !9
  %3615 = icmp sle i64 %3613, %3614
  br i1 %3615, label %3616, label %3740

3616:                                             ; preds = %3612
  store double 0.000000e+00, ptr %24, align 8, !tbaa !11
  %3617 = load i64, ptr %21, align 8, !tbaa !9
  %3618 = sub nsw i64 %3617, 2
  store i64 %3618, ptr %15, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %3619

3619:                                             ; preds = %3641, %3616
  %3620 = load i64, ptr %20, align 8, !tbaa !9
  %3621 = load i64, ptr %15, align 8, !tbaa !9
  %3622 = icmp sle i64 %3620, %3621
  br i1 %3622, label %3623, label %3644

3623:                                             ; preds = %3619
  %3624 = load ptr, ptr %12, align 8, !tbaa !5
  %3625 = load i64, ptr %20, align 8, !tbaa !9
  %3626 = load i64, ptr %21, align 8, !tbaa !9
  %3627 = load i64, ptr %27, align 8, !tbaa !9
  %3628 = mul nsw i64 %3626, %3627
  %3629 = add nsw i64 %3625, %3628
  %3630 = getelementptr inbounds %struct.doublecomplex, ptr %3624, i64 %3629
  %3631 = call double @z_abs(ptr noundef %3630)
  store double %3631, ptr %26, align 8, !tbaa !11
  %3632 = load double, ptr %26, align 8, !tbaa !11
  %3633 = load ptr, ptr %13, align 8, !tbaa !5
  %3634 = load i64, ptr %20, align 8, !tbaa !9
  %3635 = getelementptr inbounds double, ptr %3633, i64 %3634
  %3636 = load double, ptr %3635, align 8, !tbaa !11
  %3637 = fadd double %3636, %3632
  store double %3637, ptr %3635, align 8, !tbaa !11
  %3638 = load double, ptr %26, align 8, !tbaa !11
  %3639 = load double, ptr %24, align 8, !tbaa !11
  %3640 = fadd double %3639, %3638
  store double %3640, ptr %24, align 8, !tbaa !11
  br label %3641

3641:                                             ; preds = %3623
  %3642 = load i64, ptr %20, align 8, !tbaa !9
  %3643 = add nsw i64 %3642, 1
  store i64 %3643, ptr %20, align 8, !tbaa !9
  br label %3619, !llvm.loop !99

3644:                                             ; preds = %3619
  %3645 = load i64, ptr %20, align 8, !tbaa !9
  %3646 = load i64, ptr %21, align 8, !tbaa !9
  %3647 = load i64, ptr %27, align 8, !tbaa !9
  %3648 = mul nsw i64 %3646, %3647
  %3649 = add nsw i64 %3645, %3648
  store i64 %3649, ptr %15, align 8, !tbaa !9
  %3650 = load ptr, ptr %12, align 8, !tbaa !5
  %3651 = load i64, ptr %15, align 8, !tbaa !9
  %3652 = getelementptr inbounds %struct.doublecomplex, ptr %3650, i64 %3651
  %3653 = getelementptr inbounds %struct.doublecomplex, ptr %3652, i32 0, i32 0
  %3654 = load double, ptr %3653, align 8, !tbaa !13
  store double %3654, ptr %17, align 8, !tbaa !11
  %3655 = load double, ptr %17, align 8, !tbaa !11
  %3656 = fcmp oge double %3655, 0.000000e+00
  br i1 %3656, label %3657, label %3659

3657:                                             ; preds = %3644
  %3658 = load double, ptr %17, align 8, !tbaa !11
  br label %3662

3659:                                             ; preds = %3644
  %3660 = load double, ptr %17, align 8, !tbaa !11
  %3661 = fneg double %3660
  br label %3662

3662:                                             ; preds = %3659, %3657
  %3663 = phi double [ %3658, %3657 ], [ %3661, %3659 ]
  store double %3663, ptr %26, align 8, !tbaa !11
  %3664 = load double, ptr %26, align 8, !tbaa !11
  %3665 = load double, ptr %24, align 8, !tbaa !11
  %3666 = fadd double %3665, %3664
  store double %3666, ptr %24, align 8, !tbaa !11
  %3667 = load double, ptr %24, align 8, !tbaa !11
  %3668 = load ptr, ptr %13, align 8, !tbaa !5
  %3669 = load i64, ptr %21, align 8, !tbaa !9
  %3670 = sub nsw i64 %3669, 1
  %3671 = getelementptr inbounds double, ptr %3668, i64 %3670
  store double %3667, ptr %3671, align 8, !tbaa !11
  %3672 = load i64, ptr %20, align 8, !tbaa !9
  %3673 = add nsw i64 %3672, 1
  store i64 %3673, ptr %20, align 8, !tbaa !9
  %3674 = load i64, ptr %20, align 8, !tbaa !9
  %3675 = load i64, ptr %21, align 8, !tbaa !9
  %3676 = load i64, ptr %27, align 8, !tbaa !9
  %3677 = mul nsw i64 %3675, %3676
  %3678 = add nsw i64 %3674, %3677
  store i64 %3678, ptr %15, align 8, !tbaa !9
  %3679 = load ptr, ptr %12, align 8, !tbaa !5
  %3680 = load i64, ptr %15, align 8, !tbaa !9
  %3681 = getelementptr inbounds %struct.doublecomplex, ptr %3679, i64 %3680
  %3682 = getelementptr inbounds %struct.doublecomplex, ptr %3681, i32 0, i32 0
  %3683 = load double, ptr %3682, align 8, !tbaa !13
  store double %3683, ptr %17, align 8, !tbaa !11
  %3684 = load double, ptr %17, align 8, !tbaa !11
  %3685 = fcmp oge double %3684, 0.000000e+00
  br i1 %3685, label %3686, label %3688

3686:                                             ; preds = %3662
  %3687 = load double, ptr %17, align 8, !tbaa !11
  br label %3691

3688:                                             ; preds = %3662
  %3689 = load double, ptr %17, align 8, !tbaa !11
  %3690 = fneg double %3689
  br label %3691

3691:                                             ; preds = %3688, %3686
  %3692 = phi double [ %3687, %3686 ], [ %3690, %3688 ]
  store double %3692, ptr %26, align 8, !tbaa !11
  %3693 = load double, ptr %26, align 8, !tbaa !11
  store double %3693, ptr %24, align 8, !tbaa !11
  %3694 = load ptr, ptr %11, align 8, !tbaa !5
  %3695 = load i64, ptr %3694, align 8, !tbaa !9
  %3696 = sub nsw i64 %3695, 1
  store i64 %3696, ptr %15, align 8, !tbaa !9
  %3697 = load i64, ptr %22, align 8, !tbaa !9
  %3698 = load i64, ptr %21, align 8, !tbaa !9
  %3699 = add nsw i64 %3697, %3698
  %3700 = add nsw i64 %3699, 1
  store i64 %3700, ptr %23, align 8, !tbaa !9
  br label %3701

3701:                                             ; preds = %3725, %3691
  %3702 = load i64, ptr %23, align 8, !tbaa !9
  %3703 = load i64, ptr %15, align 8, !tbaa !9
  %3704 = icmp sle i64 %3702, %3703
  br i1 %3704, label %3705, label %3728

3705:                                             ; preds = %3701
  %3706 = load i64, ptr %20, align 8, !tbaa !9
  %3707 = add nsw i64 %3706, 1
  store i64 %3707, ptr %20, align 8, !tbaa !9
  %3708 = load ptr, ptr %12, align 8, !tbaa !5
  %3709 = load i64, ptr %20, align 8, !tbaa !9
  %3710 = load i64, ptr %21, align 8, !tbaa !9
  %3711 = load i64, ptr %27, align 8, !tbaa !9
  %3712 = mul nsw i64 %3710, %3711
  %3713 = add nsw i64 %3709, %3712
  %3714 = getelementptr inbounds %struct.doublecomplex, ptr %3708, i64 %3713
  %3715 = call double @z_abs(ptr noundef %3714)
  store double %3715, ptr %26, align 8, !tbaa !11
  %3716 = load double, ptr %26, align 8, !tbaa !11
  %3717 = load double, ptr %24, align 8, !tbaa !11
  %3718 = fadd double %3717, %3716
  store double %3718, ptr %24, align 8, !tbaa !11
  %3719 = load double, ptr %26, align 8, !tbaa !11
  %3720 = load ptr, ptr %13, align 8, !tbaa !5
  %3721 = load i64, ptr %23, align 8, !tbaa !9
  %3722 = getelementptr inbounds double, ptr %3720, i64 %3721
  %3723 = load double, ptr %3722, align 8, !tbaa !11
  %3724 = fadd double %3723, %3719
  store double %3724, ptr %3722, align 8, !tbaa !11
  br label %3725

3725:                                             ; preds = %3705
  %3726 = load i64, ptr %23, align 8, !tbaa !9
  %3727 = add nsw i64 %3726, 1
  store i64 %3727, ptr %23, align 8, !tbaa !9
  br label %3701, !llvm.loop !100

3728:                                             ; preds = %3701
  %3729 = load double, ptr %24, align 8, !tbaa !11
  %3730 = load ptr, ptr %13, align 8, !tbaa !5
  %3731 = load i64, ptr %22, align 8, !tbaa !9
  %3732 = load i64, ptr %21, align 8, !tbaa !9
  %3733 = add nsw i64 %3731, %3732
  %3734 = getelementptr inbounds double, ptr %3730, i64 %3733
  %3735 = load double, ptr %3734, align 8, !tbaa !11
  %3736 = fadd double %3735, %3729
  store double %3736, ptr %3734, align 8, !tbaa !11
  br label %3737

3737:                                             ; preds = %3728
  %3738 = load i64, ptr %21, align 8, !tbaa !9
  %3739 = add nsw i64 %3738, 1
  store i64 %3739, ptr %21, align 8, !tbaa !9
  br label %3612, !llvm.loop !101

3740:                                             ; preds = %3612
  store double 0.000000e+00, ptr %24, align 8, !tbaa !11
  %3741 = load i64, ptr %22, align 8, !tbaa !9
  %3742 = sub nsw i64 %3741, 2
  store i64 %3742, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %3743

3743:                                             ; preds = %3765, %3740
  %3744 = load i64, ptr %20, align 8, !tbaa !9
  %3745 = load i64, ptr %14, align 8, !tbaa !9
  %3746 = icmp sle i64 %3744, %3745
  br i1 %3746, label %3747, label %3768

3747:                                             ; preds = %3743
  %3748 = load ptr, ptr %12, align 8, !tbaa !5
  %3749 = load i64, ptr %20, align 8, !tbaa !9
  %3750 = load i64, ptr %21, align 8, !tbaa !9
  %3751 = load i64, ptr %27, align 8, !tbaa !9
  %3752 = mul nsw i64 %3750, %3751
  %3753 = add nsw i64 %3749, %3752
  %3754 = getelementptr inbounds %struct.doublecomplex, ptr %3748, i64 %3753
  %3755 = call double @z_abs(ptr noundef %3754)
  store double %3755, ptr %26, align 8, !tbaa !11
  %3756 = load double, ptr %26, align 8, !tbaa !11
  %3757 = load ptr, ptr %13, align 8, !tbaa !5
  %3758 = load i64, ptr %20, align 8, !tbaa !9
  %3759 = getelementptr inbounds double, ptr %3757, i64 %3758
  %3760 = load double, ptr %3759, align 8, !tbaa !11
  %3761 = fadd double %3760, %3756
  store double %3761, ptr %3759, align 8, !tbaa !11
  %3762 = load double, ptr %26, align 8, !tbaa !11
  %3763 = load double, ptr %24, align 8, !tbaa !11
  %3764 = fadd double %3763, %3762
  store double %3764, ptr %24, align 8, !tbaa !11
  br label %3765

3765:                                             ; preds = %3747
  %3766 = load i64, ptr %20, align 8, !tbaa !9
  %3767 = add nsw i64 %3766, 1
  store i64 %3767, ptr %20, align 8, !tbaa !9
  br label %3743, !llvm.loop !102

3768:                                             ; preds = %3743
  %3769 = load i64, ptr %20, align 8, !tbaa !9
  %3770 = load i64, ptr %21, align 8, !tbaa !9
  %3771 = load i64, ptr %27, align 8, !tbaa !9
  %3772 = mul nsw i64 %3770, %3771
  %3773 = add nsw i64 %3769, %3772
  store i64 %3773, ptr %14, align 8, !tbaa !9
  %3774 = load ptr, ptr %12, align 8, !tbaa !5
  %3775 = load i64, ptr %14, align 8, !tbaa !9
  %3776 = getelementptr inbounds %struct.doublecomplex, ptr %3774, i64 %3775
  %3777 = getelementptr inbounds %struct.doublecomplex, ptr %3776, i32 0, i32 0
  %3778 = load double, ptr %3777, align 8, !tbaa !13
  store double %3778, ptr %17, align 8, !tbaa !11
  %3779 = load double, ptr %17, align 8, !tbaa !11
  %3780 = fcmp oge double %3779, 0.000000e+00
  br i1 %3780, label %3781, label %3783

3781:                                             ; preds = %3768
  %3782 = load double, ptr %17, align 8, !tbaa !11
  br label %3786

3783:                                             ; preds = %3768
  %3784 = load double, ptr %17, align 8, !tbaa !11
  %3785 = fneg double %3784
  br label %3786

3786:                                             ; preds = %3783, %3781
  %3787 = phi double [ %3782, %3781 ], [ %3785, %3783 ]
  store double %3787, ptr %26, align 8, !tbaa !11
  %3788 = load double, ptr %26, align 8, !tbaa !11
  %3789 = load double, ptr %24, align 8, !tbaa !11
  %3790 = fadd double %3789, %3788
  store double %3790, ptr %24, align 8, !tbaa !11
  %3791 = load double, ptr %24, align 8, !tbaa !11
  %3792 = load ptr, ptr %13, align 8, !tbaa !5
  %3793 = load i64, ptr %20, align 8, !tbaa !9
  %3794 = getelementptr inbounds double, ptr %3792, i64 %3793
  store double %3791, ptr %3794, align 8, !tbaa !11
  %3795 = load ptr, ptr %11, align 8, !tbaa !5
  %3796 = load i64, ptr %3795, align 8, !tbaa !9
  store i64 %3796, ptr %14, align 8, !tbaa !9
  %3797 = load i64, ptr %22, align 8, !tbaa !9
  %3798 = add nsw i64 %3797, 1
  store i64 %3798, ptr %21, align 8, !tbaa !9
  br label %3799

3799:                                             ; preds = %3839, %3786
  %3800 = load i64, ptr %21, align 8, !tbaa !9
  %3801 = load i64, ptr %14, align 8, !tbaa !9
  %3802 = icmp sle i64 %3800, %3801
  br i1 %3802, label %3803, label %3842

3803:                                             ; preds = %3799
  store double 0.000000e+00, ptr %24, align 8, !tbaa !11
  %3804 = load i64, ptr %22, align 8, !tbaa !9
  %3805 = sub nsw i64 %3804, 1
  store i64 %3805, ptr %15, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %3806

3806:                                             ; preds = %3828, %3803
  %3807 = load i64, ptr %20, align 8, !tbaa !9
  %3808 = load i64, ptr %15, align 8, !tbaa !9
  %3809 = icmp sle i64 %3807, %3808
  br i1 %3809, label %3810, label %3831

3810:                                             ; preds = %3806
  %3811 = load ptr, ptr %12, align 8, !tbaa !5
  %3812 = load i64, ptr %20, align 8, !tbaa !9
  %3813 = load i64, ptr %21, align 8, !tbaa !9
  %3814 = load i64, ptr %27, align 8, !tbaa !9
  %3815 = mul nsw i64 %3813, %3814
  %3816 = add nsw i64 %3812, %3815
  %3817 = getelementptr inbounds %struct.doublecomplex, ptr %3811, i64 %3816
  %3818 = call double @z_abs(ptr noundef %3817)
  store double %3818, ptr %26, align 8, !tbaa !11
  %3819 = load double, ptr %26, align 8, !tbaa !11
  %3820 = load ptr, ptr %13, align 8, !tbaa !5
  %3821 = load i64, ptr %20, align 8, !tbaa !9
  %3822 = getelementptr inbounds double, ptr %3820, i64 %3821
  %3823 = load double, ptr %3822, align 8, !tbaa !11
  %3824 = fadd double %3823, %3819
  store double %3824, ptr %3822, align 8, !tbaa !11
  %3825 = load double, ptr %26, align 8, !tbaa !11
  %3826 = load double, ptr %24, align 8, !tbaa !11
  %3827 = fadd double %3826, %3825
  store double %3827, ptr %24, align 8, !tbaa !11
  br label %3828

3828:                                             ; preds = %3810
  %3829 = load i64, ptr %20, align 8, !tbaa !9
  %3830 = add nsw i64 %3829, 1
  store i64 %3830, ptr %20, align 8, !tbaa !9
  br label %3806, !llvm.loop !103

3831:                                             ; preds = %3806
  %3832 = load double, ptr %24, align 8, !tbaa !11
  %3833 = load ptr, ptr %13, align 8, !tbaa !5
  %3834 = load i64, ptr %21, align 8, !tbaa !9
  %3835 = sub nsw i64 %3834, 1
  %3836 = getelementptr inbounds double, ptr %3833, i64 %3835
  %3837 = load double, ptr %3836, align 8, !tbaa !11
  %3838 = fadd double %3837, %3832
  store double %3838, ptr %3836, align 8, !tbaa !11
  br label %3839

3839:                                             ; preds = %3831
  %3840 = load i64, ptr %21, align 8, !tbaa !9
  %3841 = add nsw i64 %3840, 1
  store i64 %3841, ptr %21, align 8, !tbaa !9
  br label %3799, !llvm.loop !104

3842:                                             ; preds = %3799
  %3843 = load ptr, ptr %11, align 8, !tbaa !5
  %3844 = load ptr, ptr %13, align 8, !tbaa !5
  %3845 = call i64 @f2c_idamax(ptr noundef %3843, ptr noundef %3844, ptr noundef @c__1)
  store i64 %3845, ptr %20, align 8, !tbaa !9
  %3846 = load ptr, ptr %13, align 8, !tbaa !5
  %3847 = load i64, ptr %20, align 8, !tbaa !9
  %3848 = sub nsw i64 %3847, 1
  %3849 = getelementptr inbounds double, ptr %3846, i64 %3848
  %3850 = load double, ptr %3849, align 8, !tbaa !11
  store double %3850, ptr %32, align 8, !tbaa !11
  br label %3851

3851:                                             ; preds = %3842, %3529
  br label %3852

3852:                                             ; preds = %3851, %3228
  br label %3853

3853:                                             ; preds = %3852, %2701
  br label %5274

3854:                                             ; preds = %2036
  %3855 = load ptr, ptr %8, align 8, !tbaa !5
  %3856 = call i64 @lsame_(ptr noundef %3855, ptr noundef @.str.5)
  %3857 = icmp ne i64 %3856, 0
  br i1 %3857, label %3862, label %3858

3858:                                             ; preds = %3854
  %3859 = load ptr, ptr %8, align 8, !tbaa !5
  %3860 = call i64 @lsame_(ptr noundef %3859, ptr noundef @.str.6)
  %3861 = icmp ne i64 %3860, 0
  br i1 %3861, label %3862, label %5273

3862:                                             ; preds = %3858, %3854
  %3863 = load ptr, ptr %11, align 8, !tbaa !5
  %3864 = load i64, ptr %3863, align 8, !tbaa !9
  %3865 = add nsw i64 %3864, 1
  %3866 = sdiv i64 %3865, 2
  store i64 %3866, ptr %22, align 8, !tbaa !9
  store double 0.000000e+00, ptr %31, align 8, !tbaa !11
  store double 1.000000e+00, ptr %24, align 8, !tbaa !11
  %3867 = load i64, ptr %29, align 8, !tbaa !9
  %3868 = icmp eq i64 %3867, 1
  br i1 %3868, label %3869, label %4569

3869:                                             ; preds = %3862
  %3870 = load i64, ptr %28, align 8, !tbaa !9
  %3871 = icmp eq i64 %3870, 1
  br i1 %3871, label %3872, label %4199

3872:                                             ; preds = %3869
  %3873 = load i64, ptr %30, align 8, !tbaa !9
  %3874 = icmp eq i64 %3873, 0
  br i1 %3874, label %3875, label %4040

3875:                                             ; preds = %3872
  %3876 = load i64, ptr %22, align 8, !tbaa !9
  %3877 = sub nsw i64 %3876, 3
  store i64 %3877, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %3878

3878:                                             ; preds = %3898, %3875
  %3879 = load i64, ptr %21, align 8, !tbaa !9
  %3880 = load i64, ptr %14, align 8, !tbaa !9
  %3881 = icmp sle i64 %3879, %3880
  br i1 %3881, label %3882, label %3901

3882:                                             ; preds = %3878
  %3883 = load i64, ptr %22, align 8, !tbaa !9
  %3884 = load i64, ptr %21, align 8, !tbaa !9
  %3885 = sub nsw i64 %3883, %3884
  %3886 = sub nsw i64 %3885, 2
  store i64 %3886, ptr %15, align 8, !tbaa !9
  %3887 = load ptr, ptr %12, align 8, !tbaa !5
  %3888 = load i64, ptr %22, align 8, !tbaa !9
  %3889 = load i64, ptr %21, align 8, !tbaa !9
  %3890 = add nsw i64 %3888, %3889
  %3891 = add nsw i64 %3890, 1
  %3892 = load i64, ptr %21, align 8, !tbaa !9
  %3893 = load i64, ptr %27, align 8, !tbaa !9
  %3894 = mul nsw i64 %3892, %3893
  %3895 = add nsw i64 %3891, %3894
  %3896 = getelementptr inbounds %struct.doublecomplex, ptr %3887, i64 %3895
  %3897 = call i32 @zlassq_(ptr noundef %15, ptr noundef %3896, ptr noundef @c__1, ptr noundef %31, ptr noundef %24)
  br label %3898

3898:                                             ; preds = %3882
  %3899 = load i64, ptr %21, align 8, !tbaa !9
  %3900 = add nsw i64 %3899, 1
  store i64 %3900, ptr %21, align 8, !tbaa !9
  br label %3878, !llvm.loop !105

3901:                                             ; preds = %3878
  %3902 = load i64, ptr %22, align 8, !tbaa !9
  %3903 = sub nsw i64 %3902, 1
  store i64 %3903, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %3904

3904:                                             ; preds = %3919, %3901
  %3905 = load i64, ptr %21, align 8, !tbaa !9
  %3906 = load i64, ptr %14, align 8, !tbaa !9
  %3907 = icmp sle i64 %3905, %3906
  br i1 %3907, label %3908, label %3922

3908:                                             ; preds = %3904
  %3909 = load i64, ptr %22, align 8, !tbaa !9
  %3910 = load i64, ptr %21, align 8, !tbaa !9
  %3911 = add nsw i64 %3909, %3910
  %3912 = sub nsw i64 %3911, 1
  store i64 %3912, ptr %15, align 8, !tbaa !9
  %3913 = load ptr, ptr %12, align 8, !tbaa !5
  %3914 = load i64, ptr %21, align 8, !tbaa !9
  %3915 = load i64, ptr %27, align 8, !tbaa !9
  %3916 = mul nsw i64 %3914, %3915
  %3917 = getelementptr inbounds %struct.doublecomplex, ptr %3913, i64 %3916
  %3918 = call i32 @zlassq_(ptr noundef %15, ptr noundef %3917, ptr noundef @c__1, ptr noundef %31, ptr noundef %24)
  br label %3919

3919:                                             ; preds = %3908
  %3920 = load i64, ptr %21, align 8, !tbaa !9
  %3921 = add nsw i64 %3920, 1
  store i64 %3921, ptr %21, align 8, !tbaa !9
  br label %3904, !llvm.loop !106

3922:                                             ; preds = %3904
  %3923 = load double, ptr %24, align 8, !tbaa !11
  %3924 = load double, ptr %24, align 8, !tbaa !11
  %3925 = fadd double %3924, %3923
  store double %3925, ptr %24, align 8, !tbaa !11
  %3926 = load i64, ptr %22, align 8, !tbaa !9
  %3927 = sub nsw i64 %3926, 1
  store i64 %3927, ptr %23, align 8, !tbaa !9
  %3928 = load i64, ptr %22, align 8, !tbaa !9
  %3929 = sub nsw i64 %3928, 2
  store i64 %3929, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %3930

3930:                                             ; preds = %4004, %3922
  %3931 = load i64, ptr %20, align 8, !tbaa !9
  %3932 = load i64, ptr %14, align 8, !tbaa !9
  %3933 = icmp sle i64 %3931, %3932
  br i1 %3933, label %3934, label %4007

3934:                                             ; preds = %3930
  %3935 = load i64, ptr %23, align 8, !tbaa !9
  store i64 %3935, ptr %15, align 8, !tbaa !9
  %3936 = load ptr, ptr %12, align 8, !tbaa !5
  %3937 = load i64, ptr %15, align 8, !tbaa !9
  %3938 = getelementptr inbounds %struct.doublecomplex, ptr %3936, i64 %3937
  %3939 = getelementptr inbounds %struct.doublecomplex, ptr %3938, i32 0, i32 0
  %3940 = load double, ptr %3939, align 8, !tbaa !13
  store double %3940, ptr %26, align 8, !tbaa !11
  %3941 = load double, ptr %26, align 8, !tbaa !11
  %3942 = fcmp une double %3941, 0.000000e+00
  br i1 %3942, label %3943, label %3966

3943:                                             ; preds = %3934
  %3944 = load double, ptr %31, align 8, !tbaa !11
  %3945 = load double, ptr %26, align 8, !tbaa !11
  %3946 = fcmp olt double %3944, %3945
  br i1 %3946, label %3947, label %3957

3947:                                             ; preds = %3943
  %3948 = load double, ptr %31, align 8, !tbaa !11
  %3949 = load double, ptr %26, align 8, !tbaa !11
  %3950 = fdiv double %3948, %3949
  store double %3950, ptr %17, align 8, !tbaa !11
  %3951 = load double, ptr %24, align 8, !tbaa !11
  %3952 = load double, ptr %17, align 8, !tbaa !11
  %3953 = load double, ptr %17, align 8, !tbaa !11
  %3954 = fmul double %3952, %3953
  %3955 = call double @llvm.fmuladd.f64(double %3951, double %3954, double 1.000000e+00)
  store double %3955, ptr %24, align 8, !tbaa !11
  %3956 = load double, ptr %26, align 8, !tbaa !11
  store double %3956, ptr %31, align 8, !tbaa !11
  br label %3965

3957:                                             ; preds = %3943
  %3958 = load double, ptr %26, align 8, !tbaa !11
  %3959 = load double, ptr %31, align 8, !tbaa !11
  %3960 = fdiv double %3958, %3959
  store double %3960, ptr %17, align 8, !tbaa !11
  %3961 = load double, ptr %17, align 8, !tbaa !11
  %3962 = load double, ptr %17, align 8, !tbaa !11
  %3963 = load double, ptr %24, align 8, !tbaa !11
  %3964 = call double @llvm.fmuladd.f64(double %3961, double %3962, double %3963)
  store double %3964, ptr %24, align 8, !tbaa !11
  br label %3965

3965:                                             ; preds = %3957, %3947
  br label %3966

3966:                                             ; preds = %3965, %3934
  %3967 = load i64, ptr %23, align 8, !tbaa !9
  %3968 = add nsw i64 %3967, 1
  store i64 %3968, ptr %15, align 8, !tbaa !9
  %3969 = load ptr, ptr %12, align 8, !tbaa !5
  %3970 = load i64, ptr %15, align 8, !tbaa !9
  %3971 = getelementptr inbounds %struct.doublecomplex, ptr %3969, i64 %3970
  %3972 = getelementptr inbounds %struct.doublecomplex, ptr %3971, i32 0, i32 0
  %3973 = load double, ptr %3972, align 8, !tbaa !13
  store double %3973, ptr %26, align 8, !tbaa !11
  %3974 = load double, ptr %26, align 8, !tbaa !11
  %3975 = fcmp une double %3974, 0.000000e+00
  br i1 %3975, label %3976, label %3999

3976:                                             ; preds = %3966
  %3977 = load double, ptr %31, align 8, !tbaa !11
  %3978 = load double, ptr %26, align 8, !tbaa !11
  %3979 = fcmp olt double %3977, %3978
  br i1 %3979, label %3980, label %3990

3980:                                             ; preds = %3976
  %3981 = load double, ptr %31, align 8, !tbaa !11
  %3982 = load double, ptr %26, align 8, !tbaa !11
  %3983 = fdiv double %3981, %3982
  store double %3983, ptr %17, align 8, !tbaa !11
  %3984 = load double, ptr %24, align 8, !tbaa !11
  %3985 = load double, ptr %17, align 8, !tbaa !11
  %3986 = load double, ptr %17, align 8, !tbaa !11
  %3987 = fmul double %3985, %3986
  %3988 = call double @llvm.fmuladd.f64(double %3984, double %3987, double 1.000000e+00)
  store double %3988, ptr %24, align 8, !tbaa !11
  %3989 = load double, ptr %26, align 8, !tbaa !11
  store double %3989, ptr %31, align 8, !tbaa !11
  br label %3998

3990:                                             ; preds = %3976
  %3991 = load double, ptr %26, align 8, !tbaa !11
  %3992 = load double, ptr %31, align 8, !tbaa !11
  %3993 = fdiv double %3991, %3992
  store double %3993, ptr %17, align 8, !tbaa !11
  %3994 = load double, ptr %17, align 8, !tbaa !11
  %3995 = load double, ptr %17, align 8, !tbaa !11
  %3996 = load double, ptr %24, align 8, !tbaa !11
  %3997 = call double @llvm.fmuladd.f64(double %3994, double %3995, double %3996)
  store double %3997, ptr %24, align 8, !tbaa !11
  br label %3998

3998:                                             ; preds = %3990, %3980
  br label %3999

3999:                                             ; preds = %3998, %3966
  %4000 = load i64, ptr %23, align 8, !tbaa !9
  %4001 = load i64, ptr %27, align 8, !tbaa !9
  %4002 = add nsw i64 %4000, %4001
  %4003 = add nsw i64 %4002, 1
  store i64 %4003, ptr %23, align 8, !tbaa !9
  br label %4004

4004:                                             ; preds = %3999
  %4005 = load i64, ptr %20, align 8, !tbaa !9
  %4006 = add nsw i64 %4005, 1
  store i64 %4006, ptr %20, align 8, !tbaa !9
  br label %3930, !llvm.loop !107

4007:                                             ; preds = %3930
  %4008 = load i64, ptr %23, align 8, !tbaa !9
  store i64 %4008, ptr %14, align 8, !tbaa !9
  %4009 = load ptr, ptr %12, align 8, !tbaa !5
  %4010 = load i64, ptr %14, align 8, !tbaa !9
  %4011 = getelementptr inbounds %struct.doublecomplex, ptr %4009, i64 %4010
  %4012 = getelementptr inbounds %struct.doublecomplex, ptr %4011, i32 0, i32 0
  %4013 = load double, ptr %4012, align 8, !tbaa !13
  store double %4013, ptr %26, align 8, !tbaa !11
  %4014 = load double, ptr %26, align 8, !tbaa !11
  %4015 = fcmp une double %4014, 0.000000e+00
  br i1 %4015, label %4016, label %4039

4016:                                             ; preds = %4007
  %4017 = load double, ptr %31, align 8, !tbaa !11
  %4018 = load double, ptr %26, align 8, !tbaa !11
  %4019 = fcmp olt double %4017, %4018
  br i1 %4019, label %4020, label %4030

4020:                                             ; preds = %4016
  %4021 = load double, ptr %31, align 8, !tbaa !11
  %4022 = load double, ptr %26, align 8, !tbaa !11
  %4023 = fdiv double %4021, %4022
  store double %4023, ptr %17, align 8, !tbaa !11
  %4024 = load double, ptr %24, align 8, !tbaa !11
  %4025 = load double, ptr %17, align 8, !tbaa !11
  %4026 = load double, ptr %17, align 8, !tbaa !11
  %4027 = fmul double %4025, %4026
  %4028 = call double @llvm.fmuladd.f64(double %4024, double %4027, double 1.000000e+00)
  store double %4028, ptr %24, align 8, !tbaa !11
  %4029 = load double, ptr %26, align 8, !tbaa !11
  store double %4029, ptr %31, align 8, !tbaa !11
  br label %4038

4030:                                             ; preds = %4016
  %4031 = load double, ptr %26, align 8, !tbaa !11
  %4032 = load double, ptr %31, align 8, !tbaa !11
  %4033 = fdiv double %4031, %4032
  store double %4033, ptr %17, align 8, !tbaa !11
  %4034 = load double, ptr %17, align 8, !tbaa !11
  %4035 = load double, ptr %17, align 8, !tbaa !11
  %4036 = load double, ptr %24, align 8, !tbaa !11
  %4037 = call double @llvm.fmuladd.f64(double %4034, double %4035, double %4036)
  store double %4037, ptr %24, align 8, !tbaa !11
  br label %4038

4038:                                             ; preds = %4030, %4020
  br label %4039

4039:                                             ; preds = %4038, %4007
  br label %4198

4040:                                             ; preds = %3872
  %4041 = load i64, ptr %22, align 8, !tbaa !9
  %4042 = sub nsw i64 %4041, 1
  store i64 %4042, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %4043

4043:                                             ; preds = %4062, %4040
  %4044 = load i64, ptr %21, align 8, !tbaa !9
  %4045 = load i64, ptr %14, align 8, !tbaa !9
  %4046 = icmp sle i64 %4044, %4045
  br i1 %4046, label %4047, label %4065

4047:                                             ; preds = %4043
  %4048 = load ptr, ptr %11, align 8, !tbaa !5
  %4049 = load i64, ptr %4048, align 8, !tbaa !9
  %4050 = load i64, ptr %21, align 8, !tbaa !9
  %4051 = sub nsw i64 %4049, %4050
  %4052 = sub nsw i64 %4051, 1
  store i64 %4052, ptr %15, align 8, !tbaa !9
  %4053 = load ptr, ptr %12, align 8, !tbaa !5
  %4054 = load i64, ptr %21, align 8, !tbaa !9
  %4055 = add nsw i64 %4054, 1
  %4056 = load i64, ptr %21, align 8, !tbaa !9
  %4057 = load i64, ptr %27, align 8, !tbaa !9
  %4058 = mul nsw i64 %4056, %4057
  %4059 = add nsw i64 %4055, %4058
  %4060 = getelementptr inbounds %struct.doublecomplex, ptr %4053, i64 %4059
  %4061 = call i32 @zlassq_(ptr noundef %15, ptr noundef %4060, ptr noundef @c__1, ptr noundef %31, ptr noundef %24)
  br label %4062

4062:                                             ; preds = %4047
  %4063 = load i64, ptr %21, align 8, !tbaa !9
  %4064 = add nsw i64 %4063, 1
  store i64 %4064, ptr %21, align 8, !tbaa !9
  br label %4043, !llvm.loop !108

4065:                                             ; preds = %4043
  %4066 = load i64, ptr %22, align 8, !tbaa !9
  %4067 = sub nsw i64 %4066, 2
  store i64 %4067, ptr %14, align 8, !tbaa !9
  store i64 1, ptr %21, align 8, !tbaa !9
  br label %4068

4068:                                             ; preds = %4080, %4065
  %4069 = load i64, ptr %21, align 8, !tbaa !9
  %4070 = load i64, ptr %14, align 8, !tbaa !9
  %4071 = icmp sle i64 %4069, %4070
  br i1 %4071, label %4072, label %4083

4072:                                             ; preds = %4068
  %4073 = load ptr, ptr %12, align 8, !tbaa !5
  %4074 = load i64, ptr %21, align 8, !tbaa !9
  %4075 = add nsw i64 %4074, 1
  %4076 = load i64, ptr %27, align 8, !tbaa !9
  %4077 = mul nsw i64 %4075, %4076
  %4078 = getelementptr inbounds %struct.doublecomplex, ptr %4073, i64 %4077
  %4079 = call i32 @zlassq_(ptr noundef %21, ptr noundef %4078, ptr noundef @c__1, ptr noundef %31, ptr noundef %24)
  br label %4080

4080:                                             ; preds = %4072
  %4081 = load i64, ptr %21, align 8, !tbaa !9
  %4082 = add nsw i64 %4081, 1
  store i64 %4082, ptr %21, align 8, !tbaa !9
  br label %4068, !llvm.loop !109

4083:                                             ; preds = %4068
  %4084 = load double, ptr %24, align 8, !tbaa !11
  %4085 = load double, ptr %24, align 8, !tbaa !11
  %4086 = fadd double %4085, %4084
  store double %4086, ptr %24, align 8, !tbaa !11
  %4087 = load ptr, ptr %12, align 8, !tbaa !5
  %4088 = getelementptr inbounds %struct.doublecomplex, ptr %4087, i64 0
  %4089 = getelementptr inbounds %struct.doublecomplex, ptr %4088, i32 0, i32 0
  %4090 = load double, ptr %4089, align 8, !tbaa !13
  store double %4090, ptr %26, align 8, !tbaa !11
  %4091 = load double, ptr %26, align 8, !tbaa !11
  %4092 = fcmp une double %4091, 0.000000e+00
  br i1 %4092, label %4093, label %4116

4093:                                             ; preds = %4083
  %4094 = load double, ptr %31, align 8, !tbaa !11
  %4095 = load double, ptr %26, align 8, !tbaa !11
  %4096 = fcmp olt double %4094, %4095
  br i1 %4096, label %4097, label %4107

4097:                                             ; preds = %4093
  %4098 = load double, ptr %31, align 8, !tbaa !11
  %4099 = load double, ptr %26, align 8, !tbaa !11
  %4100 = fdiv double %4098, %4099
  store double %4100, ptr %17, align 8, !tbaa !11
  %4101 = load double, ptr %24, align 8, !tbaa !11
  %4102 = load double, ptr %17, align 8, !tbaa !11
  %4103 = load double, ptr %17, align 8, !tbaa !11
  %4104 = fmul double %4102, %4103
  %4105 = call double @llvm.fmuladd.f64(double %4101, double %4104, double 1.000000e+00)
  store double %4105, ptr %24, align 8, !tbaa !11
  %4106 = load double, ptr %26, align 8, !tbaa !11
  store double %4106, ptr %31, align 8, !tbaa !11
  br label %4115

4107:                                             ; preds = %4093
  %4108 = load double, ptr %26, align 8, !tbaa !11
  %4109 = load double, ptr %31, align 8, !tbaa !11
  %4110 = fdiv double %4108, %4109
  store double %4110, ptr %17, align 8, !tbaa !11
  %4111 = load double, ptr %17, align 8, !tbaa !11
  %4112 = load double, ptr %17, align 8, !tbaa !11
  %4113 = load double, ptr %24, align 8, !tbaa !11
  %4114 = call double @llvm.fmuladd.f64(double %4111, double %4112, double %4113)
  store double %4114, ptr %24, align 8, !tbaa !11
  br label %4115

4115:                                             ; preds = %4107, %4097
  br label %4116

4116:                                             ; preds = %4115, %4083
  %4117 = load i64, ptr %27, align 8, !tbaa !9
  store i64 %4117, ptr %23, align 8, !tbaa !9
  %4118 = load i64, ptr %22, align 8, !tbaa !9
  %4119 = sub nsw i64 %4118, 1
  store i64 %4119, ptr %14, align 8, !tbaa !9
  store i64 1, ptr %20, align 8, !tbaa !9
  br label %4120

4120:                                             ; preds = %4194, %4116
  %4121 = load i64, ptr %20, align 8, !tbaa !9
  %4122 = load i64, ptr %14, align 8, !tbaa !9
  %4123 = icmp sle i64 %4121, %4122
  br i1 %4123, label %4124, label %4197

4124:                                             ; preds = %4120
  %4125 = load i64, ptr %23, align 8, !tbaa !9
  store i64 %4125, ptr %15, align 8, !tbaa !9
  %4126 = load ptr, ptr %12, align 8, !tbaa !5
  %4127 = load i64, ptr %15, align 8, !tbaa !9
  %4128 = getelementptr inbounds %struct.doublecomplex, ptr %4126, i64 %4127
  %4129 = getelementptr inbounds %struct.doublecomplex, ptr %4128, i32 0, i32 0
  %4130 = load double, ptr %4129, align 8, !tbaa !13
  store double %4130, ptr %26, align 8, !tbaa !11
  %4131 = load double, ptr %26, align 8, !tbaa !11
  %4132 = fcmp une double %4131, 0.000000e+00
  br i1 %4132, label %4133, label %4156

4133:                                             ; preds = %4124
  %4134 = load double, ptr %31, align 8, !tbaa !11
  %4135 = load double, ptr %26, align 8, !tbaa !11
  %4136 = fcmp olt double %4134, %4135
  br i1 %4136, label %4137, label %4147

4137:                                             ; preds = %4133
  %4138 = load double, ptr %31, align 8, !tbaa !11
  %4139 = load double, ptr %26, align 8, !tbaa !11
  %4140 = fdiv double %4138, %4139
  store double %4140, ptr %17, align 8, !tbaa !11
  %4141 = load double, ptr %24, align 8, !tbaa !11
  %4142 = load double, ptr %17, align 8, !tbaa !11
  %4143 = load double, ptr %17, align 8, !tbaa !11
  %4144 = fmul double %4142, %4143
  %4145 = call double @llvm.fmuladd.f64(double %4141, double %4144, double 1.000000e+00)
  store double %4145, ptr %24, align 8, !tbaa !11
  %4146 = load double, ptr %26, align 8, !tbaa !11
  store double %4146, ptr %31, align 8, !tbaa !11
  br label %4155

4147:                                             ; preds = %4133
  %4148 = load double, ptr %26, align 8, !tbaa !11
  %4149 = load double, ptr %31, align 8, !tbaa !11
  %4150 = fdiv double %4148, %4149
  store double %4150, ptr %17, align 8, !tbaa !11
  %4151 = load double, ptr %17, align 8, !tbaa !11
  %4152 = load double, ptr %17, align 8, !tbaa !11
  %4153 = load double, ptr %24, align 8, !tbaa !11
  %4154 = call double @llvm.fmuladd.f64(double %4151, double %4152, double %4153)
  store double %4154, ptr %24, align 8, !tbaa !11
  br label %4155

4155:                                             ; preds = %4147, %4137
  br label %4156

4156:                                             ; preds = %4155, %4124
  %4157 = load i64, ptr %23, align 8, !tbaa !9
  %4158 = add nsw i64 %4157, 1
  store i64 %4158, ptr %15, align 8, !tbaa !9
  %4159 = load ptr, ptr %12, align 8, !tbaa !5
  %4160 = load i64, ptr %15, align 8, !tbaa !9
  %4161 = getelementptr inbounds %struct.doublecomplex, ptr %4159, i64 %4160
  %4162 = getelementptr inbounds %struct.doublecomplex, ptr %4161, i32 0, i32 0
  %4163 = load double, ptr %4162, align 8, !tbaa !13
  store double %4163, ptr %26, align 8, !tbaa !11
  %4164 = load double, ptr %26, align 8, !tbaa !11
  %4165 = fcmp une double %4164, 0.000000e+00
  br i1 %4165, label %4166, label %4189

4166:                                             ; preds = %4156
  %4167 = load double, ptr %31, align 8, !tbaa !11
  %4168 = load double, ptr %26, align 8, !tbaa !11
  %4169 = fcmp olt double %4167, %4168
  br i1 %4169, label %4170, label %4180

4170:                                             ; preds = %4166
  %4171 = load double, ptr %31, align 8, !tbaa !11
  %4172 = load double, ptr %26, align 8, !tbaa !11
  %4173 = fdiv double %4171, %4172
  store double %4173, ptr %17, align 8, !tbaa !11
  %4174 = load double, ptr %24, align 8, !tbaa !11
  %4175 = load double, ptr %17, align 8, !tbaa !11
  %4176 = load double, ptr %17, align 8, !tbaa !11
  %4177 = fmul double %4175, %4176
  %4178 = call double @llvm.fmuladd.f64(double %4174, double %4177, double 1.000000e+00)
  store double %4178, ptr %24, align 8, !tbaa !11
  %4179 = load double, ptr %26, align 8, !tbaa !11
  store double %4179, ptr %31, align 8, !tbaa !11
  br label %4188

4180:                                             ; preds = %4166
  %4181 = load double, ptr %26, align 8, !tbaa !11
  %4182 = load double, ptr %31, align 8, !tbaa !11
  %4183 = fdiv double %4181, %4182
  store double %4183, ptr %17, align 8, !tbaa !11
  %4184 = load double, ptr %17, align 8, !tbaa !11
  %4185 = load double, ptr %17, align 8, !tbaa !11
  %4186 = load double, ptr %24, align 8, !tbaa !11
  %4187 = call double @llvm.fmuladd.f64(double %4184, double %4185, double %4186)
  store double %4187, ptr %24, align 8, !tbaa !11
  br label %4188

4188:                                             ; preds = %4180, %4170
  br label %4189

4189:                                             ; preds = %4188, %4156
  %4190 = load i64, ptr %23, align 8, !tbaa !9
  %4191 = load i64, ptr %27, align 8, !tbaa !9
  %4192 = add nsw i64 %4190, %4191
  %4193 = add nsw i64 %4192, 1
  store i64 %4193, ptr %23, align 8, !tbaa !9
  br label %4194

4194:                                             ; preds = %4189
  %4195 = load i64, ptr %20, align 8, !tbaa !9
  %4196 = add nsw i64 %4195, 1
  store i64 %4196, ptr %20, align 8, !tbaa !9
  br label %4120, !llvm.loop !110

4197:                                             ; preds = %4120
  br label %4198

4198:                                             ; preds = %4197, %4039
  br label %4568

4199:                                             ; preds = %3869
  %4200 = load i64, ptr %30, align 8, !tbaa !9
  %4201 = icmp eq i64 %4200, 0
  br i1 %4201, label %4202, label %4391

4202:                                             ; preds = %4199
  %4203 = load i64, ptr %22, align 8, !tbaa !9
  %4204 = sub nsw i64 %4203, 2
  store i64 %4204, ptr %14, align 8, !tbaa !9
  store i64 1, ptr %21, align 8, !tbaa !9
  br label %4205

4205:                                             ; preds = %4218, %4202
  %4206 = load i64, ptr %21, align 8, !tbaa !9
  %4207 = load i64, ptr %14, align 8, !tbaa !9
  %4208 = icmp sle i64 %4206, %4207
  br i1 %4208, label %4209, label %4221

4209:                                             ; preds = %4205
  %4210 = load ptr, ptr %12, align 8, !tbaa !5
  %4211 = load i64, ptr %22, align 8, !tbaa !9
  %4212 = load i64, ptr %21, align 8, !tbaa !9
  %4213 = add nsw i64 %4211, %4212
  %4214 = load i64, ptr %27, align 8, !tbaa !9
  %4215 = mul nsw i64 %4213, %4214
  %4216 = getelementptr inbounds %struct.doublecomplex, ptr %4210, i64 %4215
  %4217 = call i32 @zlassq_(ptr noundef %21, ptr noundef %4216, ptr noundef @c__1, ptr noundef %31, ptr noundef %24)
  br label %4218

4218:                                             ; preds = %4209
  %4219 = load i64, ptr %21, align 8, !tbaa !9
  %4220 = add nsw i64 %4219, 1
  store i64 %4220, ptr %21, align 8, !tbaa !9
  br label %4205, !llvm.loop !111

4221:                                             ; preds = %4205
  %4222 = load i64, ptr %22, align 8, !tbaa !9
  %4223 = sub nsw i64 %4222, 2
  store i64 %4223, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %4224

4224:                                             ; preds = %4235, %4221
  %4225 = load i64, ptr %21, align 8, !tbaa !9
  %4226 = load i64, ptr %14, align 8, !tbaa !9
  %4227 = icmp sle i64 %4225, %4226
  br i1 %4227, label %4228, label %4238

4228:                                             ; preds = %4224
  %4229 = load ptr, ptr %12, align 8, !tbaa !5
  %4230 = load i64, ptr %21, align 8, !tbaa !9
  %4231 = load i64, ptr %27, align 8, !tbaa !9
  %4232 = mul nsw i64 %4230, %4231
  %4233 = getelementptr inbounds %struct.doublecomplex, ptr %4229, i64 %4232
  %4234 = call i32 @zlassq_(ptr noundef %22, ptr noundef %4233, ptr noundef @c__1, ptr noundef %31, ptr noundef %24)
  br label %4235

4235:                                             ; preds = %4228
  %4236 = load i64, ptr %21, align 8, !tbaa !9
  %4237 = add nsw i64 %4236, 1
  store i64 %4237, ptr %21, align 8, !tbaa !9
  br label %4224, !llvm.loop !112

4238:                                             ; preds = %4224
  %4239 = load i64, ptr %22, align 8, !tbaa !9
  %4240 = sub nsw i64 %4239, 2
  store i64 %4240, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %4241

4241:                                             ; preds = %4262, %4238
  %4242 = load i64, ptr %21, align 8, !tbaa !9
  %4243 = load i64, ptr %14, align 8, !tbaa !9
  %4244 = icmp sle i64 %4242, %4243
  br i1 %4244, label %4245, label %4265

4245:                                             ; preds = %4241
  %4246 = load i64, ptr %22, align 8, !tbaa !9
  %4247 = load i64, ptr %21, align 8, !tbaa !9
  %4248 = sub nsw i64 %4246, %4247
  %4249 = sub nsw i64 %4248, 1
  store i64 %4249, ptr %15, align 8, !tbaa !9
  %4250 = load ptr, ptr %12, align 8, !tbaa !5
  %4251 = load i64, ptr %21, align 8, !tbaa !9
  %4252 = add nsw i64 %4251, 1
  %4253 = load i64, ptr %21, align 8, !tbaa !9
  %4254 = load i64, ptr %22, align 8, !tbaa !9
  %4255 = add nsw i64 %4253, %4254
  %4256 = sub nsw i64 %4255, 1
  %4257 = load i64, ptr %27, align 8, !tbaa !9
  %4258 = mul nsw i64 %4256, %4257
  %4259 = add nsw i64 %4252, %4258
  %4260 = getelementptr inbounds %struct.doublecomplex, ptr %4250, i64 %4259
  %4261 = call i32 @zlassq_(ptr noundef %15, ptr noundef %4260, ptr noundef @c__1, ptr noundef %31, ptr noundef %24)
  br label %4262

4262:                                             ; preds = %4245
  %4263 = load i64, ptr %21, align 8, !tbaa !9
  %4264 = add nsw i64 %4263, 1
  store i64 %4264, ptr %21, align 8, !tbaa !9
  br label %4241, !llvm.loop !113

4265:                                             ; preds = %4241
  %4266 = load double, ptr %24, align 8, !tbaa !11
  %4267 = load double, ptr %24, align 8, !tbaa !11
  %4268 = fadd double %4267, %4266
  store double %4268, ptr %24, align 8, !tbaa !11
  %4269 = load i64, ptr %22, align 8, !tbaa !9
  %4270 = load i64, ptr %27, align 8, !tbaa !9
  %4271 = mul nsw i64 %4269, %4270
  %4272 = load i64, ptr %27, align 8, !tbaa !9
  %4273 = sub nsw i64 %4271, %4272
  store i64 %4273, ptr %23, align 8, !tbaa !9
  %4274 = load i64, ptr %23, align 8, !tbaa !9
  store i64 %4274, ptr %14, align 8, !tbaa !9
  %4275 = load ptr, ptr %12, align 8, !tbaa !5
  %4276 = load i64, ptr %14, align 8, !tbaa !9
  %4277 = getelementptr inbounds %struct.doublecomplex, ptr %4275, i64 %4276
  %4278 = getelementptr inbounds %struct.doublecomplex, ptr %4277, i32 0, i32 0
  %4279 = load double, ptr %4278, align 8, !tbaa !13
  store double %4279, ptr %26, align 8, !tbaa !11
  %4280 = load double, ptr %26, align 8, !tbaa !11
  %4281 = fcmp une double %4280, 0.000000e+00
  br i1 %4281, label %4282, label %4305

4282:                                             ; preds = %4265
  %4283 = load double, ptr %31, align 8, !tbaa !11
  %4284 = load double, ptr %26, align 8, !tbaa !11
  %4285 = fcmp olt double %4283, %4284
  br i1 %4285, label %4286, label %4296

4286:                                             ; preds = %4282
  %4287 = load double, ptr %31, align 8, !tbaa !11
  %4288 = load double, ptr %26, align 8, !tbaa !11
  %4289 = fdiv double %4287, %4288
  store double %4289, ptr %17, align 8, !tbaa !11
  %4290 = load double, ptr %24, align 8, !tbaa !11
  %4291 = load double, ptr %17, align 8, !tbaa !11
  %4292 = load double, ptr %17, align 8, !tbaa !11
  %4293 = fmul double %4291, %4292
  %4294 = call double @llvm.fmuladd.f64(double %4290, double %4293, double 1.000000e+00)
  store double %4294, ptr %24, align 8, !tbaa !11
  %4295 = load double, ptr %26, align 8, !tbaa !11
  store double %4295, ptr %31, align 8, !tbaa !11
  br label %4304

4296:                                             ; preds = %4282
  %4297 = load double, ptr %26, align 8, !tbaa !11
  %4298 = load double, ptr %31, align 8, !tbaa !11
  %4299 = fdiv double %4297, %4298
  store double %4299, ptr %17, align 8, !tbaa !11
  %4300 = load double, ptr %17, align 8, !tbaa !11
  %4301 = load double, ptr %17, align 8, !tbaa !11
  %4302 = load double, ptr %24, align 8, !tbaa !11
  %4303 = call double @llvm.fmuladd.f64(double %4300, double %4301, double %4302)
  store double %4303, ptr %24, align 8, !tbaa !11
  br label %4304

4304:                                             ; preds = %4296, %4286
  br label %4305

4305:                                             ; preds = %4304, %4265
  %4306 = load i64, ptr %27, align 8, !tbaa !9
  %4307 = load i64, ptr %23, align 8, !tbaa !9
  %4308 = add nsw i64 %4307, %4306
  store i64 %4308, ptr %23, align 8, !tbaa !9
  %4309 = load ptr, ptr %11, align 8, !tbaa !5
  %4310 = load i64, ptr %4309, align 8, !tbaa !9
  %4311 = sub nsw i64 %4310, 1
  store i64 %4311, ptr %14, align 8, !tbaa !9
  %4312 = load i64, ptr %22, align 8, !tbaa !9
  store i64 %4312, ptr %21, align 8, !tbaa !9
  br label %4313

4313:                                             ; preds = %4387, %4305
  %4314 = load i64, ptr %21, align 8, !tbaa !9
  %4315 = load i64, ptr %14, align 8, !tbaa !9
  %4316 = icmp sle i64 %4314, %4315
  br i1 %4316, label %4317, label %4390

4317:                                             ; preds = %4313
  %4318 = load i64, ptr %23, align 8, !tbaa !9
  store i64 %4318, ptr %15, align 8, !tbaa !9
  %4319 = load ptr, ptr %12, align 8, !tbaa !5
  %4320 = load i64, ptr %15, align 8, !tbaa !9
  %4321 = getelementptr inbounds %struct.doublecomplex, ptr %4319, i64 %4320
  %4322 = getelementptr inbounds %struct.doublecomplex, ptr %4321, i32 0, i32 0
  %4323 = load double, ptr %4322, align 8, !tbaa !13
  store double %4323, ptr %26, align 8, !tbaa !11
  %4324 = load double, ptr %26, align 8, !tbaa !11
  %4325 = fcmp une double %4324, 0.000000e+00
  br i1 %4325, label %4326, label %4349

4326:                                             ; preds = %4317
  %4327 = load double, ptr %31, align 8, !tbaa !11
  %4328 = load double, ptr %26, align 8, !tbaa !11
  %4329 = fcmp olt double %4327, %4328
  br i1 %4329, label %4330, label %4340

4330:                                             ; preds = %4326
  %4331 = load double, ptr %31, align 8, !tbaa !11
  %4332 = load double, ptr %26, align 8, !tbaa !11
  %4333 = fdiv double %4331, %4332
  store double %4333, ptr %17, align 8, !tbaa !11
  %4334 = load double, ptr %24, align 8, !tbaa !11
  %4335 = load double, ptr %17, align 8, !tbaa !11
  %4336 = load double, ptr %17, align 8, !tbaa !11
  %4337 = fmul double %4335, %4336
  %4338 = call double @llvm.fmuladd.f64(double %4334, double %4337, double 1.000000e+00)
  store double %4338, ptr %24, align 8, !tbaa !11
  %4339 = load double, ptr %26, align 8, !tbaa !11
  store double %4339, ptr %31, align 8, !tbaa !11
  br label %4348

4340:                                             ; preds = %4326
  %4341 = load double, ptr %26, align 8, !tbaa !11
  %4342 = load double, ptr %31, align 8, !tbaa !11
  %4343 = fdiv double %4341, %4342
  store double %4343, ptr %17, align 8, !tbaa !11
  %4344 = load double, ptr %17, align 8, !tbaa !11
  %4345 = load double, ptr %17, align 8, !tbaa !11
  %4346 = load double, ptr %24, align 8, !tbaa !11
  %4347 = call double @llvm.fmuladd.f64(double %4344, double %4345, double %4346)
  store double %4347, ptr %24, align 8, !tbaa !11
  br label %4348

4348:                                             ; preds = %4340, %4330
  br label %4349

4349:                                             ; preds = %4348, %4317
  %4350 = load i64, ptr %23, align 8, !tbaa !9
  %4351 = add nsw i64 %4350, 1
  store i64 %4351, ptr %15, align 8, !tbaa !9
  %4352 = load ptr, ptr %12, align 8, !tbaa !5
  %4353 = load i64, ptr %15, align 8, !tbaa !9
  %4354 = getelementptr inbounds %struct.doublecomplex, ptr %4352, i64 %4353
  %4355 = getelementptr inbounds %struct.doublecomplex, ptr %4354, i32 0, i32 0
  %4356 = load double, ptr %4355, align 8, !tbaa !13
  store double %4356, ptr %26, align 8, !tbaa !11
  %4357 = load double, ptr %26, align 8, !tbaa !11
  %4358 = fcmp une double %4357, 0.000000e+00
  br i1 %4358, label %4359, label %4382

4359:                                             ; preds = %4349
  %4360 = load double, ptr %31, align 8, !tbaa !11
  %4361 = load double, ptr %26, align 8, !tbaa !11
  %4362 = fcmp olt double %4360, %4361
  br i1 %4362, label %4363, label %4373

4363:                                             ; preds = %4359
  %4364 = load double, ptr %31, align 8, !tbaa !11
  %4365 = load double, ptr %26, align 8, !tbaa !11
  %4366 = fdiv double %4364, %4365
  store double %4366, ptr %17, align 8, !tbaa !11
  %4367 = load double, ptr %24, align 8, !tbaa !11
  %4368 = load double, ptr %17, align 8, !tbaa !11
  %4369 = load double, ptr %17, align 8, !tbaa !11
  %4370 = fmul double %4368, %4369
  %4371 = call double @llvm.fmuladd.f64(double %4367, double %4370, double 1.000000e+00)
  store double %4371, ptr %24, align 8, !tbaa !11
  %4372 = load double, ptr %26, align 8, !tbaa !11
  store double %4372, ptr %31, align 8, !tbaa !11
  br label %4381

4373:                                             ; preds = %4359
  %4374 = load double, ptr %26, align 8, !tbaa !11
  %4375 = load double, ptr %31, align 8, !tbaa !11
  %4376 = fdiv double %4374, %4375
  store double %4376, ptr %17, align 8, !tbaa !11
  %4377 = load double, ptr %17, align 8, !tbaa !11
  %4378 = load double, ptr %17, align 8, !tbaa !11
  %4379 = load double, ptr %24, align 8, !tbaa !11
  %4380 = call double @llvm.fmuladd.f64(double %4377, double %4378, double %4379)
  store double %4380, ptr %24, align 8, !tbaa !11
  br label %4381

4381:                                             ; preds = %4373, %4363
  br label %4382

4382:                                             ; preds = %4381, %4349
  %4383 = load i64, ptr %23, align 8, !tbaa !9
  %4384 = load i64, ptr %27, align 8, !tbaa !9
  %4385 = add nsw i64 %4383, %4384
  %4386 = add nsw i64 %4385, 1
  store i64 %4386, ptr %23, align 8, !tbaa !9
  br label %4387

4387:                                             ; preds = %4382
  %4388 = load i64, ptr %21, align 8, !tbaa !9
  %4389 = add nsw i64 %4388, 1
  store i64 %4389, ptr %21, align 8, !tbaa !9
  br label %4313, !llvm.loop !114

4390:                                             ; preds = %4313
  br label %4567

4391:                                             ; preds = %4199
  %4392 = load i64, ptr %22, align 8, !tbaa !9
  %4393 = sub nsw i64 %4392, 1
  store i64 %4393, ptr %14, align 8, !tbaa !9
  store i64 1, ptr %21, align 8, !tbaa !9
  br label %4394

4394:                                             ; preds = %4405, %4391
  %4395 = load i64, ptr %21, align 8, !tbaa !9
  %4396 = load i64, ptr %14, align 8, !tbaa !9
  %4397 = icmp sle i64 %4395, %4396
  br i1 %4397, label %4398, label %4408

4398:                                             ; preds = %4394
  %4399 = load ptr, ptr %12, align 8, !tbaa !5
  %4400 = load i64, ptr %21, align 8, !tbaa !9
  %4401 = load i64, ptr %27, align 8, !tbaa !9
  %4402 = mul nsw i64 %4400, %4401
  %4403 = getelementptr inbounds %struct.doublecomplex, ptr %4399, i64 %4402
  %4404 = call i32 @zlassq_(ptr noundef %21, ptr noundef %4403, ptr noundef @c__1, ptr noundef %31, ptr noundef %24)
  br label %4405

4405:                                             ; preds = %4398
  %4406 = load i64, ptr %21, align 8, !tbaa !9
  %4407 = add nsw i64 %4406, 1
  store i64 %4407, ptr %21, align 8, !tbaa !9
  br label %4394, !llvm.loop !115

4408:                                             ; preds = %4394
  %4409 = load ptr, ptr %11, align 8, !tbaa !5
  %4410 = load i64, ptr %4409, align 8, !tbaa !9
  %4411 = sub nsw i64 %4410, 1
  store i64 %4411, ptr %14, align 8, !tbaa !9
  %4412 = load i64, ptr %22, align 8, !tbaa !9
  store i64 %4412, ptr %21, align 8, !tbaa !9
  br label %4413

4413:                                             ; preds = %4424, %4408
  %4414 = load i64, ptr %21, align 8, !tbaa !9
  %4415 = load i64, ptr %14, align 8, !tbaa !9
  %4416 = icmp sle i64 %4414, %4415
  br i1 %4416, label %4417, label %4427

4417:                                             ; preds = %4413
  %4418 = load ptr, ptr %12, align 8, !tbaa !5
  %4419 = load i64, ptr %21, align 8, !tbaa !9
  %4420 = load i64, ptr %27, align 8, !tbaa !9
  %4421 = mul nsw i64 %4419, %4420
  %4422 = getelementptr inbounds %struct.doublecomplex, ptr %4418, i64 %4421
  %4423 = call i32 @zlassq_(ptr noundef %22, ptr noundef %4422, ptr noundef @c__1, ptr noundef %31, ptr noundef %24)
  br label %4424

4424:                                             ; preds = %4417
  %4425 = load i64, ptr %21, align 8, !tbaa !9
  %4426 = add nsw i64 %4425, 1
  store i64 %4426, ptr %21, align 8, !tbaa !9
  br label %4413, !llvm.loop !116

4427:                                             ; preds = %4413
  %4428 = load i64, ptr %22, align 8, !tbaa !9
  %4429 = sub nsw i64 %4428, 3
  store i64 %4429, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %4430

4430:                                             ; preds = %4448, %4427
  %4431 = load i64, ptr %21, align 8, !tbaa !9
  %4432 = load i64, ptr %14, align 8, !tbaa !9
  %4433 = icmp sle i64 %4431, %4432
  br i1 %4433, label %4434, label %4451

4434:                                             ; preds = %4430
  %4435 = load i64, ptr %22, align 8, !tbaa !9
  %4436 = load i64, ptr %21, align 8, !tbaa !9
  %4437 = sub nsw i64 %4435, %4436
  %4438 = sub nsw i64 %4437, 2
  store i64 %4438, ptr %15, align 8, !tbaa !9
  %4439 = load ptr, ptr %12, align 8, !tbaa !5
  %4440 = load i64, ptr %21, align 8, !tbaa !9
  %4441 = add nsw i64 %4440, 2
  %4442 = load i64, ptr %21, align 8, !tbaa !9
  %4443 = load i64, ptr %27, align 8, !tbaa !9
  %4444 = mul nsw i64 %4442, %4443
  %4445 = add nsw i64 %4441, %4444
  %4446 = getelementptr inbounds %struct.doublecomplex, ptr %4439, i64 %4445
  %4447 = call i32 @zlassq_(ptr noundef %15, ptr noundef %4446, ptr noundef @c__1, ptr noundef %31, ptr noundef %24)
  br label %4448

4448:                                             ; preds = %4434
  %4449 = load i64, ptr %21, align 8, !tbaa !9
  %4450 = add nsw i64 %4449, 1
  store i64 %4450, ptr %21, align 8, !tbaa !9
  br label %4430, !llvm.loop !117

4451:                                             ; preds = %4430
  %4452 = load double, ptr %24, align 8, !tbaa !11
  %4453 = load double, ptr %24, align 8, !tbaa !11
  %4454 = fadd double %4453, %4452
  store double %4454, ptr %24, align 8, !tbaa !11
  store i64 0, ptr %23, align 8, !tbaa !9
  %4455 = load i64, ptr %22, align 8, !tbaa !9
  %4456 = sub nsw i64 %4455, 2
  store i64 %4456, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %4457

4457:                                             ; preds = %4531, %4451
  %4458 = load i64, ptr %20, align 8, !tbaa !9
  %4459 = load i64, ptr %14, align 8, !tbaa !9
  %4460 = icmp sle i64 %4458, %4459
  br i1 %4460, label %4461, label %4534

4461:                                             ; preds = %4457
  %4462 = load i64, ptr %23, align 8, !tbaa !9
  store i64 %4462, ptr %15, align 8, !tbaa !9
  %4463 = load ptr, ptr %12, align 8, !tbaa !5
  %4464 = load i64, ptr %15, align 8, !tbaa !9
  %4465 = getelementptr inbounds %struct.doublecomplex, ptr %4463, i64 %4464
  %4466 = getelementptr inbounds %struct.doublecomplex, ptr %4465, i32 0, i32 0
  %4467 = load double, ptr %4466, align 8, !tbaa !13
  store double %4467, ptr %26, align 8, !tbaa !11
  %4468 = load double, ptr %26, align 8, !tbaa !11
  %4469 = fcmp une double %4468, 0.000000e+00
  br i1 %4469, label %4470, label %4493

4470:                                             ; preds = %4461
  %4471 = load double, ptr %31, align 8, !tbaa !11
  %4472 = load double, ptr %26, align 8, !tbaa !11
  %4473 = fcmp olt double %4471, %4472
  br i1 %4473, label %4474, label %4484

4474:                                             ; preds = %4470
  %4475 = load double, ptr %31, align 8, !tbaa !11
  %4476 = load double, ptr %26, align 8, !tbaa !11
  %4477 = fdiv double %4475, %4476
  store double %4477, ptr %17, align 8, !tbaa !11
  %4478 = load double, ptr %24, align 8, !tbaa !11
  %4479 = load double, ptr %17, align 8, !tbaa !11
  %4480 = load double, ptr %17, align 8, !tbaa !11
  %4481 = fmul double %4479, %4480
  %4482 = call double @llvm.fmuladd.f64(double %4478, double %4481, double 1.000000e+00)
  store double %4482, ptr %24, align 8, !tbaa !11
  %4483 = load double, ptr %26, align 8, !tbaa !11
  store double %4483, ptr %31, align 8, !tbaa !11
  br label %4492

4484:                                             ; preds = %4470
  %4485 = load double, ptr %26, align 8, !tbaa !11
  %4486 = load double, ptr %31, align 8, !tbaa !11
  %4487 = fdiv double %4485, %4486
  store double %4487, ptr %17, align 8, !tbaa !11
  %4488 = load double, ptr %17, align 8, !tbaa !11
  %4489 = load double, ptr %17, align 8, !tbaa !11
  %4490 = load double, ptr %24, align 8, !tbaa !11
  %4491 = call double @llvm.fmuladd.f64(double %4488, double %4489, double %4490)
  store double %4491, ptr %24, align 8, !tbaa !11
  br label %4492

4492:                                             ; preds = %4484, %4474
  br label %4493

4493:                                             ; preds = %4492, %4461
  %4494 = load i64, ptr %23, align 8, !tbaa !9
  %4495 = add nsw i64 %4494, 1
  store i64 %4495, ptr %15, align 8, !tbaa !9
  %4496 = load ptr, ptr %12, align 8, !tbaa !5
  %4497 = load i64, ptr %15, align 8, !tbaa !9
  %4498 = getelementptr inbounds %struct.doublecomplex, ptr %4496, i64 %4497
  %4499 = getelementptr inbounds %struct.doublecomplex, ptr %4498, i32 0, i32 0
  %4500 = load double, ptr %4499, align 8, !tbaa !13
  store double %4500, ptr %26, align 8, !tbaa !11
  %4501 = load double, ptr %26, align 8, !tbaa !11
  %4502 = fcmp une double %4501, 0.000000e+00
  br i1 %4502, label %4503, label %4526

4503:                                             ; preds = %4493
  %4504 = load double, ptr %31, align 8, !tbaa !11
  %4505 = load double, ptr %26, align 8, !tbaa !11
  %4506 = fcmp olt double %4504, %4505
  br i1 %4506, label %4507, label %4517

4507:                                             ; preds = %4503
  %4508 = load double, ptr %31, align 8, !tbaa !11
  %4509 = load double, ptr %26, align 8, !tbaa !11
  %4510 = fdiv double %4508, %4509
  store double %4510, ptr %17, align 8, !tbaa !11
  %4511 = load double, ptr %24, align 8, !tbaa !11
  %4512 = load double, ptr %17, align 8, !tbaa !11
  %4513 = load double, ptr %17, align 8, !tbaa !11
  %4514 = fmul double %4512, %4513
  %4515 = call double @llvm.fmuladd.f64(double %4511, double %4514, double 1.000000e+00)
  store double %4515, ptr %24, align 8, !tbaa !11
  %4516 = load double, ptr %26, align 8, !tbaa !11
  store double %4516, ptr %31, align 8, !tbaa !11
  br label %4525

4517:                                             ; preds = %4503
  %4518 = load double, ptr %26, align 8, !tbaa !11
  %4519 = load double, ptr %31, align 8, !tbaa !11
  %4520 = fdiv double %4518, %4519
  store double %4520, ptr %17, align 8, !tbaa !11
  %4521 = load double, ptr %17, align 8, !tbaa !11
  %4522 = load double, ptr %17, align 8, !tbaa !11
  %4523 = load double, ptr %24, align 8, !tbaa !11
  %4524 = call double @llvm.fmuladd.f64(double %4521, double %4522, double %4523)
  store double %4524, ptr %24, align 8, !tbaa !11
  br label %4525

4525:                                             ; preds = %4517, %4507
  br label %4526

4526:                                             ; preds = %4525, %4493
  %4527 = load i64, ptr %23, align 8, !tbaa !9
  %4528 = load i64, ptr %27, align 8, !tbaa !9
  %4529 = add nsw i64 %4527, %4528
  %4530 = add nsw i64 %4529, 1
  store i64 %4530, ptr %23, align 8, !tbaa !9
  br label %4531

4531:                                             ; preds = %4526
  %4532 = load i64, ptr %20, align 8, !tbaa !9
  %4533 = add nsw i64 %4532, 1
  store i64 %4533, ptr %20, align 8, !tbaa !9
  br label %4457, !llvm.loop !118

4534:                                             ; preds = %4457
  %4535 = load i64, ptr %23, align 8, !tbaa !9
  store i64 %4535, ptr %14, align 8, !tbaa !9
  %4536 = load ptr, ptr %12, align 8, !tbaa !5
  %4537 = load i64, ptr %14, align 8, !tbaa !9
  %4538 = getelementptr inbounds %struct.doublecomplex, ptr %4536, i64 %4537
  %4539 = getelementptr inbounds %struct.doublecomplex, ptr %4538, i32 0, i32 0
  %4540 = load double, ptr %4539, align 8, !tbaa !13
  store double %4540, ptr %26, align 8, !tbaa !11
  %4541 = load double, ptr %26, align 8, !tbaa !11
  %4542 = fcmp une double %4541, 0.000000e+00
  br i1 %4542, label %4543, label %4566

4543:                                             ; preds = %4534
  %4544 = load double, ptr %31, align 8, !tbaa !11
  %4545 = load double, ptr %26, align 8, !tbaa !11
  %4546 = fcmp olt double %4544, %4545
  br i1 %4546, label %4547, label %4557

4547:                                             ; preds = %4543
  %4548 = load double, ptr %31, align 8, !tbaa !11
  %4549 = load double, ptr %26, align 8, !tbaa !11
  %4550 = fdiv double %4548, %4549
  store double %4550, ptr %17, align 8, !tbaa !11
  %4551 = load double, ptr %24, align 8, !tbaa !11
  %4552 = load double, ptr %17, align 8, !tbaa !11
  %4553 = load double, ptr %17, align 8, !tbaa !11
  %4554 = fmul double %4552, %4553
  %4555 = call double @llvm.fmuladd.f64(double %4551, double %4554, double 1.000000e+00)
  store double %4555, ptr %24, align 8, !tbaa !11
  %4556 = load double, ptr %26, align 8, !tbaa !11
  store double %4556, ptr %31, align 8, !tbaa !11
  br label %4565

4557:                                             ; preds = %4543
  %4558 = load double, ptr %26, align 8, !tbaa !11
  %4559 = load double, ptr %31, align 8, !tbaa !11
  %4560 = fdiv double %4558, %4559
  store double %4560, ptr %17, align 8, !tbaa !11
  %4561 = load double, ptr %17, align 8, !tbaa !11
  %4562 = load double, ptr %17, align 8, !tbaa !11
  %4563 = load double, ptr %24, align 8, !tbaa !11
  %4564 = call double @llvm.fmuladd.f64(double %4561, double %4562, double %4563)
  store double %4564, ptr %24, align 8, !tbaa !11
  br label %4565

4565:                                             ; preds = %4557, %4547
  br label %4566

4566:                                             ; preds = %4565, %4534
  br label %4567

4567:                                             ; preds = %4566, %4390
  br label %4568

4568:                                             ; preds = %4567, %4198
  br label %5268

4569:                                             ; preds = %3862
  %4570 = load i64, ptr %28, align 8, !tbaa !9
  %4571 = icmp eq i64 %4570, 1
  br i1 %4571, label %4572, label %4833

4572:                                             ; preds = %4569
  %4573 = load i64, ptr %30, align 8, !tbaa !9
  %4574 = icmp eq i64 %4573, 0
  br i1 %4574, label %4575, label %4706

4575:                                             ; preds = %4572
  %4576 = load i64, ptr %22, align 8, !tbaa !9
  %4577 = sub nsw i64 %4576, 2
  store i64 %4577, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %4578

4578:                                             ; preds = %4598, %4575
  %4579 = load i64, ptr %21, align 8, !tbaa !9
  %4580 = load i64, ptr %14, align 8, !tbaa !9
  %4581 = icmp sle i64 %4579, %4580
  br i1 %4581, label %4582, label %4601

4582:                                             ; preds = %4578
  %4583 = load i64, ptr %22, align 8, !tbaa !9
  %4584 = load i64, ptr %21, align 8, !tbaa !9
  %4585 = sub nsw i64 %4583, %4584
  %4586 = sub nsw i64 %4585, 1
  store i64 %4586, ptr %15, align 8, !tbaa !9
  %4587 = load ptr, ptr %12, align 8, !tbaa !5
  %4588 = load i64, ptr %22, align 8, !tbaa !9
  %4589 = load i64, ptr %21, align 8, !tbaa !9
  %4590 = add nsw i64 %4588, %4589
  %4591 = add nsw i64 %4590, 2
  %4592 = load i64, ptr %21, align 8, !tbaa !9
  %4593 = load i64, ptr %27, align 8, !tbaa !9
  %4594 = mul nsw i64 %4592, %4593
  %4595 = add nsw i64 %4591, %4594
  %4596 = getelementptr inbounds %struct.doublecomplex, ptr %4587, i64 %4595
  %4597 = call i32 @zlassq_(ptr noundef %15, ptr noundef %4596, ptr noundef @c__1, ptr noundef %31, ptr noundef %24)
  br label %4598

4598:                                             ; preds = %4582
  %4599 = load i64, ptr %21, align 8, !tbaa !9
  %4600 = add nsw i64 %4599, 1
  store i64 %4600, ptr %21, align 8, !tbaa !9
  br label %4578, !llvm.loop !119

4601:                                             ; preds = %4578
  %4602 = load i64, ptr %22, align 8, !tbaa !9
  %4603 = sub nsw i64 %4602, 1
  store i64 %4603, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %4604

4604:                                             ; preds = %4618, %4601
  %4605 = load i64, ptr %21, align 8, !tbaa !9
  %4606 = load i64, ptr %14, align 8, !tbaa !9
  %4607 = icmp sle i64 %4605, %4606
  br i1 %4607, label %4608, label %4621

4608:                                             ; preds = %4604
  %4609 = load i64, ptr %22, align 8, !tbaa !9
  %4610 = load i64, ptr %21, align 8, !tbaa !9
  %4611 = add nsw i64 %4609, %4610
  store i64 %4611, ptr %15, align 8, !tbaa !9
  %4612 = load ptr, ptr %12, align 8, !tbaa !5
  %4613 = load i64, ptr %21, align 8, !tbaa !9
  %4614 = load i64, ptr %27, align 8, !tbaa !9
  %4615 = mul nsw i64 %4613, %4614
  %4616 = getelementptr inbounds %struct.doublecomplex, ptr %4612, i64 %4615
  %4617 = call i32 @zlassq_(ptr noundef %15, ptr noundef %4616, ptr noundef @c__1, ptr noundef %31, ptr noundef %24)
  br label %4618

4618:                                             ; preds = %4608
  %4619 = load i64, ptr %21, align 8, !tbaa !9
  %4620 = add nsw i64 %4619, 1
  store i64 %4620, ptr %21, align 8, !tbaa !9
  br label %4604, !llvm.loop !120

4621:                                             ; preds = %4604
  %4622 = load double, ptr %24, align 8, !tbaa !11
  %4623 = load double, ptr %24, align 8, !tbaa !11
  %4624 = fadd double %4623, %4622
  store double %4624, ptr %24, align 8, !tbaa !11
  %4625 = load i64, ptr %22, align 8, !tbaa !9
  store i64 %4625, ptr %23, align 8, !tbaa !9
  %4626 = load i64, ptr %22, align 8, !tbaa !9
  %4627 = sub nsw i64 %4626, 1
  store i64 %4627, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %4628

4628:                                             ; preds = %4702, %4621
  %4629 = load i64, ptr %20, align 8, !tbaa !9
  %4630 = load i64, ptr %14, align 8, !tbaa !9
  %4631 = icmp sle i64 %4629, %4630
  br i1 %4631, label %4632, label %4705

4632:                                             ; preds = %4628
  %4633 = load i64, ptr %23, align 8, !tbaa !9
  store i64 %4633, ptr %15, align 8, !tbaa !9
  %4634 = load ptr, ptr %12, align 8, !tbaa !5
  %4635 = load i64, ptr %15, align 8, !tbaa !9
  %4636 = getelementptr inbounds %struct.doublecomplex, ptr %4634, i64 %4635
  %4637 = getelementptr inbounds %struct.doublecomplex, ptr %4636, i32 0, i32 0
  %4638 = load double, ptr %4637, align 8, !tbaa !13
  store double %4638, ptr %26, align 8, !tbaa !11
  %4639 = load double, ptr %26, align 8, !tbaa !11
  %4640 = fcmp une double %4639, 0.000000e+00
  br i1 %4640, label %4641, label %4664

4641:                                             ; preds = %4632
  %4642 = load double, ptr %31, align 8, !tbaa !11
  %4643 = load double, ptr %26, align 8, !tbaa !11
  %4644 = fcmp olt double %4642, %4643
  br i1 %4644, label %4645, label %4655

4645:                                             ; preds = %4641
  %4646 = load double, ptr %31, align 8, !tbaa !11
  %4647 = load double, ptr %26, align 8, !tbaa !11
  %4648 = fdiv double %4646, %4647
  store double %4648, ptr %17, align 8, !tbaa !11
  %4649 = load double, ptr %24, align 8, !tbaa !11
  %4650 = load double, ptr %17, align 8, !tbaa !11
  %4651 = load double, ptr %17, align 8, !tbaa !11
  %4652 = fmul double %4650, %4651
  %4653 = call double @llvm.fmuladd.f64(double %4649, double %4652, double 1.000000e+00)
  store double %4653, ptr %24, align 8, !tbaa !11
  %4654 = load double, ptr %26, align 8, !tbaa !11
  store double %4654, ptr %31, align 8, !tbaa !11
  br label %4663

4655:                                             ; preds = %4641
  %4656 = load double, ptr %26, align 8, !tbaa !11
  %4657 = load double, ptr %31, align 8, !tbaa !11
  %4658 = fdiv double %4656, %4657
  store double %4658, ptr %17, align 8, !tbaa !11
  %4659 = load double, ptr %17, align 8, !tbaa !11
  %4660 = load double, ptr %17, align 8, !tbaa !11
  %4661 = load double, ptr %24, align 8, !tbaa !11
  %4662 = call double @llvm.fmuladd.f64(double %4659, double %4660, double %4661)
  store double %4662, ptr %24, align 8, !tbaa !11
  br label %4663

4663:                                             ; preds = %4655, %4645
  br label %4664

4664:                                             ; preds = %4663, %4632
  %4665 = load i64, ptr %23, align 8, !tbaa !9
  %4666 = add nsw i64 %4665, 1
  store i64 %4666, ptr %15, align 8, !tbaa !9
  %4667 = load ptr, ptr %12, align 8, !tbaa !5
  %4668 = load i64, ptr %15, align 8, !tbaa !9
  %4669 = getelementptr inbounds %struct.doublecomplex, ptr %4667, i64 %4668
  %4670 = getelementptr inbounds %struct.doublecomplex, ptr %4669, i32 0, i32 0
  %4671 = load double, ptr %4670, align 8, !tbaa !13
  store double %4671, ptr %26, align 8, !tbaa !11
  %4672 = load double, ptr %26, align 8, !tbaa !11
  %4673 = fcmp une double %4672, 0.000000e+00
  br i1 %4673, label %4674, label %4697

4674:                                             ; preds = %4664
  %4675 = load double, ptr %31, align 8, !tbaa !11
  %4676 = load double, ptr %26, align 8, !tbaa !11
  %4677 = fcmp olt double %4675, %4676
  br i1 %4677, label %4678, label %4688

4678:                                             ; preds = %4674
  %4679 = load double, ptr %31, align 8, !tbaa !11
  %4680 = load double, ptr %26, align 8, !tbaa !11
  %4681 = fdiv double %4679, %4680
  store double %4681, ptr %17, align 8, !tbaa !11
  %4682 = load double, ptr %24, align 8, !tbaa !11
  %4683 = load double, ptr %17, align 8, !tbaa !11
  %4684 = load double, ptr %17, align 8, !tbaa !11
  %4685 = fmul double %4683, %4684
  %4686 = call double @llvm.fmuladd.f64(double %4682, double %4685, double 1.000000e+00)
  store double %4686, ptr %24, align 8, !tbaa !11
  %4687 = load double, ptr %26, align 8, !tbaa !11
  store double %4687, ptr %31, align 8, !tbaa !11
  br label %4696

4688:                                             ; preds = %4674
  %4689 = load double, ptr %26, align 8, !tbaa !11
  %4690 = load double, ptr %31, align 8, !tbaa !11
  %4691 = fdiv double %4689, %4690
  store double %4691, ptr %17, align 8, !tbaa !11
  %4692 = load double, ptr %17, align 8, !tbaa !11
  %4693 = load double, ptr %17, align 8, !tbaa !11
  %4694 = load double, ptr %24, align 8, !tbaa !11
  %4695 = call double @llvm.fmuladd.f64(double %4692, double %4693, double %4694)
  store double %4695, ptr %24, align 8, !tbaa !11
  br label %4696

4696:                                             ; preds = %4688, %4678
  br label %4697

4697:                                             ; preds = %4696, %4664
  %4698 = load i64, ptr %23, align 8, !tbaa !9
  %4699 = load i64, ptr %27, align 8, !tbaa !9
  %4700 = add nsw i64 %4698, %4699
  %4701 = add nsw i64 %4700, 1
  store i64 %4701, ptr %23, align 8, !tbaa !9
  br label %4702

4702:                                             ; preds = %4697
  %4703 = load i64, ptr %20, align 8, !tbaa !9
  %4704 = add nsw i64 %4703, 1
  store i64 %4704, ptr %20, align 8, !tbaa !9
  br label %4628, !llvm.loop !121

4705:                                             ; preds = %4628
  br label %4832

4706:                                             ; preds = %4572
  %4707 = load i64, ptr %22, align 8, !tbaa !9
  %4708 = sub nsw i64 %4707, 1
  store i64 %4708, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %4709

4709:                                             ; preds = %4728, %4706
  %4710 = load i64, ptr %21, align 8, !tbaa !9
  %4711 = load i64, ptr %14, align 8, !tbaa !9
  %4712 = icmp sle i64 %4710, %4711
  br i1 %4712, label %4713, label %4731

4713:                                             ; preds = %4709
  %4714 = load ptr, ptr %11, align 8, !tbaa !5
  %4715 = load i64, ptr %4714, align 8, !tbaa !9
  %4716 = load i64, ptr %21, align 8, !tbaa !9
  %4717 = sub nsw i64 %4715, %4716
  %4718 = sub nsw i64 %4717, 1
  store i64 %4718, ptr %15, align 8, !tbaa !9
  %4719 = load ptr, ptr %12, align 8, !tbaa !5
  %4720 = load i64, ptr %21, align 8, !tbaa !9
  %4721 = add nsw i64 %4720, 2
  %4722 = load i64, ptr %21, align 8, !tbaa !9
  %4723 = load i64, ptr %27, align 8, !tbaa !9
  %4724 = mul nsw i64 %4722, %4723
  %4725 = add nsw i64 %4721, %4724
  %4726 = getelementptr inbounds %struct.doublecomplex, ptr %4719, i64 %4725
  %4727 = call i32 @zlassq_(ptr noundef %15, ptr noundef %4726, ptr noundef @c__1, ptr noundef %31, ptr noundef %24)
  br label %4728

4728:                                             ; preds = %4713
  %4729 = load i64, ptr %21, align 8, !tbaa !9
  %4730 = add nsw i64 %4729, 1
  store i64 %4730, ptr %21, align 8, !tbaa !9
  br label %4709, !llvm.loop !122

4731:                                             ; preds = %4709
  %4732 = load i64, ptr %22, align 8, !tbaa !9
  %4733 = sub nsw i64 %4732, 1
  store i64 %4733, ptr %14, align 8, !tbaa !9
  store i64 1, ptr %21, align 8, !tbaa !9
  br label %4734

4734:                                             ; preds = %4745, %4731
  %4735 = load i64, ptr %21, align 8, !tbaa !9
  %4736 = load i64, ptr %14, align 8, !tbaa !9
  %4737 = icmp sle i64 %4735, %4736
  br i1 %4737, label %4738, label %4748

4738:                                             ; preds = %4734
  %4739 = load ptr, ptr %12, align 8, !tbaa !5
  %4740 = load i64, ptr %21, align 8, !tbaa !9
  %4741 = load i64, ptr %27, align 8, !tbaa !9
  %4742 = mul nsw i64 %4740, %4741
  %4743 = getelementptr inbounds %struct.doublecomplex, ptr %4739, i64 %4742
  %4744 = call i32 @zlassq_(ptr noundef %21, ptr noundef %4743, ptr noundef @c__1, ptr noundef %31, ptr noundef %24)
  br label %4745

4745:                                             ; preds = %4738
  %4746 = load i64, ptr %21, align 8, !tbaa !9
  %4747 = add nsw i64 %4746, 1
  store i64 %4747, ptr %21, align 8, !tbaa !9
  br label %4734, !llvm.loop !123

4748:                                             ; preds = %4734
  %4749 = load double, ptr %24, align 8, !tbaa !11
  %4750 = load double, ptr %24, align 8, !tbaa !11
  %4751 = fadd double %4750, %4749
  store double %4751, ptr %24, align 8, !tbaa !11
  store i64 0, ptr %23, align 8, !tbaa !9
  %4752 = load i64, ptr %22, align 8, !tbaa !9
  %4753 = sub nsw i64 %4752, 1
  store i64 %4753, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %4754

4754:                                             ; preds = %4828, %4748
  %4755 = load i64, ptr %20, align 8, !tbaa !9
  %4756 = load i64, ptr %14, align 8, !tbaa !9
  %4757 = icmp sle i64 %4755, %4756
  br i1 %4757, label %4758, label %4831

4758:                                             ; preds = %4754
  %4759 = load i64, ptr %23, align 8, !tbaa !9
  store i64 %4759, ptr %15, align 8, !tbaa !9
  %4760 = load ptr, ptr %12, align 8, !tbaa !5
  %4761 = load i64, ptr %15, align 8, !tbaa !9
  %4762 = getelementptr inbounds %struct.doublecomplex, ptr %4760, i64 %4761
  %4763 = getelementptr inbounds %struct.doublecomplex, ptr %4762, i32 0, i32 0
  %4764 = load double, ptr %4763, align 8, !tbaa !13
  store double %4764, ptr %26, align 8, !tbaa !11
  %4765 = load double, ptr %26, align 8, !tbaa !11
  %4766 = fcmp une double %4765, 0.000000e+00
  br i1 %4766, label %4767, label %4790

4767:                                             ; preds = %4758
  %4768 = load double, ptr %31, align 8, !tbaa !11
  %4769 = load double, ptr %26, align 8, !tbaa !11
  %4770 = fcmp olt double %4768, %4769
  br i1 %4770, label %4771, label %4781

4771:                                             ; preds = %4767
  %4772 = load double, ptr %31, align 8, !tbaa !11
  %4773 = load double, ptr %26, align 8, !tbaa !11
  %4774 = fdiv double %4772, %4773
  store double %4774, ptr %17, align 8, !tbaa !11
  %4775 = load double, ptr %24, align 8, !tbaa !11
  %4776 = load double, ptr %17, align 8, !tbaa !11
  %4777 = load double, ptr %17, align 8, !tbaa !11
  %4778 = fmul double %4776, %4777
  %4779 = call double @llvm.fmuladd.f64(double %4775, double %4778, double 1.000000e+00)
  store double %4779, ptr %24, align 8, !tbaa !11
  %4780 = load double, ptr %26, align 8, !tbaa !11
  store double %4780, ptr %31, align 8, !tbaa !11
  br label %4789

4781:                                             ; preds = %4767
  %4782 = load double, ptr %26, align 8, !tbaa !11
  %4783 = load double, ptr %31, align 8, !tbaa !11
  %4784 = fdiv double %4782, %4783
  store double %4784, ptr %17, align 8, !tbaa !11
  %4785 = load double, ptr %17, align 8, !tbaa !11
  %4786 = load double, ptr %17, align 8, !tbaa !11
  %4787 = load double, ptr %24, align 8, !tbaa !11
  %4788 = call double @llvm.fmuladd.f64(double %4785, double %4786, double %4787)
  store double %4788, ptr %24, align 8, !tbaa !11
  br label %4789

4789:                                             ; preds = %4781, %4771
  br label %4790

4790:                                             ; preds = %4789, %4758
  %4791 = load i64, ptr %23, align 8, !tbaa !9
  %4792 = add nsw i64 %4791, 1
  store i64 %4792, ptr %15, align 8, !tbaa !9
  %4793 = load ptr, ptr %12, align 8, !tbaa !5
  %4794 = load i64, ptr %15, align 8, !tbaa !9
  %4795 = getelementptr inbounds %struct.doublecomplex, ptr %4793, i64 %4794
  %4796 = getelementptr inbounds %struct.doublecomplex, ptr %4795, i32 0, i32 0
  %4797 = load double, ptr %4796, align 8, !tbaa !13
  store double %4797, ptr %26, align 8, !tbaa !11
  %4798 = load double, ptr %26, align 8, !tbaa !11
  %4799 = fcmp une double %4798, 0.000000e+00
  br i1 %4799, label %4800, label %4823

4800:                                             ; preds = %4790
  %4801 = load double, ptr %31, align 8, !tbaa !11
  %4802 = load double, ptr %26, align 8, !tbaa !11
  %4803 = fcmp olt double %4801, %4802
  br i1 %4803, label %4804, label %4814

4804:                                             ; preds = %4800
  %4805 = load double, ptr %31, align 8, !tbaa !11
  %4806 = load double, ptr %26, align 8, !tbaa !11
  %4807 = fdiv double %4805, %4806
  store double %4807, ptr %17, align 8, !tbaa !11
  %4808 = load double, ptr %24, align 8, !tbaa !11
  %4809 = load double, ptr %17, align 8, !tbaa !11
  %4810 = load double, ptr %17, align 8, !tbaa !11
  %4811 = fmul double %4809, %4810
  %4812 = call double @llvm.fmuladd.f64(double %4808, double %4811, double 1.000000e+00)
  store double %4812, ptr %24, align 8, !tbaa !11
  %4813 = load double, ptr %26, align 8, !tbaa !11
  store double %4813, ptr %31, align 8, !tbaa !11
  br label %4822

4814:                                             ; preds = %4800
  %4815 = load double, ptr %26, align 8, !tbaa !11
  %4816 = load double, ptr %31, align 8, !tbaa !11
  %4817 = fdiv double %4815, %4816
  store double %4817, ptr %17, align 8, !tbaa !11
  %4818 = load double, ptr %17, align 8, !tbaa !11
  %4819 = load double, ptr %17, align 8, !tbaa !11
  %4820 = load double, ptr %24, align 8, !tbaa !11
  %4821 = call double @llvm.fmuladd.f64(double %4818, double %4819, double %4820)
  store double %4821, ptr %24, align 8, !tbaa !11
  br label %4822

4822:                                             ; preds = %4814, %4804
  br label %4823

4823:                                             ; preds = %4822, %4790
  %4824 = load i64, ptr %23, align 8, !tbaa !9
  %4825 = load i64, ptr %27, align 8, !tbaa !9
  %4826 = add nsw i64 %4824, %4825
  %4827 = add nsw i64 %4826, 1
  store i64 %4827, ptr %23, align 8, !tbaa !9
  br label %4828

4828:                                             ; preds = %4823
  %4829 = load i64, ptr %20, align 8, !tbaa !9
  %4830 = add nsw i64 %4829, 1
  store i64 %4830, ptr %20, align 8, !tbaa !9
  br label %4754, !llvm.loop !124

4831:                                             ; preds = %4754
  br label %4832

4832:                                             ; preds = %4831, %4705
  br label %5267

4833:                                             ; preds = %4569
  %4834 = load i64, ptr %30, align 8, !tbaa !9
  %4835 = icmp eq i64 %4834, 0
  br i1 %4835, label %4836, label %5056

4836:                                             ; preds = %4833
  %4837 = load i64, ptr %22, align 8, !tbaa !9
  %4838 = sub nsw i64 %4837, 1
  store i64 %4838, ptr %14, align 8, !tbaa !9
  store i64 1, ptr %21, align 8, !tbaa !9
  br label %4839

4839:                                             ; preds = %4853, %4836
  %4840 = load i64, ptr %21, align 8, !tbaa !9
  %4841 = load i64, ptr %14, align 8, !tbaa !9
  %4842 = icmp sle i64 %4840, %4841
  br i1 %4842, label %4843, label %4856

4843:                                             ; preds = %4839
  %4844 = load ptr, ptr %12, align 8, !tbaa !5
  %4845 = load i64, ptr %22, align 8, !tbaa !9
  %4846 = add nsw i64 %4845, 1
  %4847 = load i64, ptr %21, align 8, !tbaa !9
  %4848 = add nsw i64 %4846, %4847
  %4849 = load i64, ptr %27, align 8, !tbaa !9
  %4850 = mul nsw i64 %4848, %4849
  %4851 = getelementptr inbounds %struct.doublecomplex, ptr %4844, i64 %4850
  %4852 = call i32 @zlassq_(ptr noundef %21, ptr noundef %4851, ptr noundef @c__1, ptr noundef %31, ptr noundef %24)
  br label %4853

4853:                                             ; preds = %4843
  %4854 = load i64, ptr %21, align 8, !tbaa !9
  %4855 = add nsw i64 %4854, 1
  store i64 %4855, ptr %21, align 8, !tbaa !9
  br label %4839, !llvm.loop !125

4856:                                             ; preds = %4839
  %4857 = load i64, ptr %22, align 8, !tbaa !9
  %4858 = sub nsw i64 %4857, 1
  store i64 %4858, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %4859

4859:                                             ; preds = %4870, %4856
  %4860 = load i64, ptr %21, align 8, !tbaa !9
  %4861 = load i64, ptr %14, align 8, !tbaa !9
  %4862 = icmp sle i64 %4860, %4861
  br i1 %4862, label %4863, label %4873

4863:                                             ; preds = %4859
  %4864 = load ptr, ptr %12, align 8, !tbaa !5
  %4865 = load i64, ptr %21, align 8, !tbaa !9
  %4866 = load i64, ptr %27, align 8, !tbaa !9
  %4867 = mul nsw i64 %4865, %4866
  %4868 = getelementptr inbounds %struct.doublecomplex, ptr %4864, i64 %4867
  %4869 = call i32 @zlassq_(ptr noundef %22, ptr noundef %4868, ptr noundef @c__1, ptr noundef %31, ptr noundef %24)
  br label %4870

4870:                                             ; preds = %4863
  %4871 = load i64, ptr %21, align 8, !tbaa !9
  %4872 = add nsw i64 %4871, 1
  store i64 %4872, ptr %21, align 8, !tbaa !9
  br label %4859, !llvm.loop !126

4873:                                             ; preds = %4859
  %4874 = load i64, ptr %22, align 8, !tbaa !9
  %4875 = sub nsw i64 %4874, 2
  store i64 %4875, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %4876

4876:                                             ; preds = %4896, %4873
  %4877 = load i64, ptr %21, align 8, !tbaa !9
  %4878 = load i64, ptr %14, align 8, !tbaa !9
  %4879 = icmp sle i64 %4877, %4878
  br i1 %4879, label %4880, label %4899

4880:                                             ; preds = %4876
  %4881 = load i64, ptr %22, align 8, !tbaa !9
  %4882 = load i64, ptr %21, align 8, !tbaa !9
  %4883 = sub nsw i64 %4881, %4882
  %4884 = sub nsw i64 %4883, 1
  store i64 %4884, ptr %15, align 8, !tbaa !9
  %4885 = load ptr, ptr %12, align 8, !tbaa !5
  %4886 = load i64, ptr %21, align 8, !tbaa !9
  %4887 = add nsw i64 %4886, 1
  %4888 = load i64, ptr %21, align 8, !tbaa !9
  %4889 = load i64, ptr %22, align 8, !tbaa !9
  %4890 = add nsw i64 %4888, %4889
  %4891 = load i64, ptr %27, align 8, !tbaa !9
  %4892 = mul nsw i64 %4890, %4891
  %4893 = add nsw i64 %4887, %4892
  %4894 = getelementptr inbounds %struct.doublecomplex, ptr %4885, i64 %4893
  %4895 = call i32 @zlassq_(ptr noundef %15, ptr noundef %4894, ptr noundef @c__1, ptr noundef %31, ptr noundef %24)
  br label %4896

4896:                                             ; preds = %4880
  %4897 = load i64, ptr %21, align 8, !tbaa !9
  %4898 = add nsw i64 %4897, 1
  store i64 %4898, ptr %21, align 8, !tbaa !9
  br label %4876, !llvm.loop !127

4899:                                             ; preds = %4876
  %4900 = load double, ptr %24, align 8, !tbaa !11
  %4901 = load double, ptr %24, align 8, !tbaa !11
  %4902 = fadd double %4901, %4900
  store double %4902, ptr %24, align 8, !tbaa !11
  %4903 = load i64, ptr %22, align 8, !tbaa !9
  %4904 = load i64, ptr %27, align 8, !tbaa !9
  %4905 = mul nsw i64 %4903, %4904
  store i64 %4905, ptr %23, align 8, !tbaa !9
  %4906 = load i64, ptr %23, align 8, !tbaa !9
  store i64 %4906, ptr %14, align 8, !tbaa !9
  %4907 = load ptr, ptr %12, align 8, !tbaa !5
  %4908 = load i64, ptr %14, align 8, !tbaa !9
  %4909 = getelementptr inbounds %struct.doublecomplex, ptr %4907, i64 %4908
  %4910 = getelementptr inbounds %struct.doublecomplex, ptr %4909, i32 0, i32 0
  %4911 = load double, ptr %4910, align 8, !tbaa !13
  store double %4911, ptr %26, align 8, !tbaa !11
  %4912 = load double, ptr %26, align 8, !tbaa !11
  %4913 = fcmp une double %4912, 0.000000e+00
  br i1 %4913, label %4914, label %4937

4914:                                             ; preds = %4899
  %4915 = load double, ptr %31, align 8, !tbaa !11
  %4916 = load double, ptr %26, align 8, !tbaa !11
  %4917 = fcmp olt double %4915, %4916
  br i1 %4917, label %4918, label %4928

4918:                                             ; preds = %4914
  %4919 = load double, ptr %31, align 8, !tbaa !11
  %4920 = load double, ptr %26, align 8, !tbaa !11
  %4921 = fdiv double %4919, %4920
  store double %4921, ptr %17, align 8, !tbaa !11
  %4922 = load double, ptr %24, align 8, !tbaa !11
  %4923 = load double, ptr %17, align 8, !tbaa !11
  %4924 = load double, ptr %17, align 8, !tbaa !11
  %4925 = fmul double %4923, %4924
  %4926 = call double @llvm.fmuladd.f64(double %4922, double %4925, double 1.000000e+00)
  store double %4926, ptr %24, align 8, !tbaa !11
  %4927 = load double, ptr %26, align 8, !tbaa !11
  store double %4927, ptr %31, align 8, !tbaa !11
  br label %4936

4928:                                             ; preds = %4914
  %4929 = load double, ptr %26, align 8, !tbaa !11
  %4930 = load double, ptr %31, align 8, !tbaa !11
  %4931 = fdiv double %4929, %4930
  store double %4931, ptr %17, align 8, !tbaa !11
  %4932 = load double, ptr %17, align 8, !tbaa !11
  %4933 = load double, ptr %17, align 8, !tbaa !11
  %4934 = load double, ptr %24, align 8, !tbaa !11
  %4935 = call double @llvm.fmuladd.f64(double %4932, double %4933, double %4934)
  store double %4935, ptr %24, align 8, !tbaa !11
  br label %4936

4936:                                             ; preds = %4928, %4918
  br label %4937

4937:                                             ; preds = %4936, %4899
  %4938 = load i64, ptr %27, align 8, !tbaa !9
  %4939 = load i64, ptr %23, align 8, !tbaa !9
  %4940 = add nsw i64 %4939, %4938
  store i64 %4940, ptr %23, align 8, !tbaa !9
  %4941 = load ptr, ptr %11, align 8, !tbaa !5
  %4942 = load i64, ptr %4941, align 8, !tbaa !9
  %4943 = sub nsw i64 %4942, 1
  store i64 %4943, ptr %14, align 8, !tbaa !9
  %4944 = load i64, ptr %22, align 8, !tbaa !9
  %4945 = add nsw i64 %4944, 1
  store i64 %4945, ptr %21, align 8, !tbaa !9
  br label %4946

4946:                                             ; preds = %5020, %4937
  %4947 = load i64, ptr %21, align 8, !tbaa !9
  %4948 = load i64, ptr %14, align 8, !tbaa !9
  %4949 = icmp sle i64 %4947, %4948
  br i1 %4949, label %4950, label %5023

4950:                                             ; preds = %4946
  %4951 = load i64, ptr %23, align 8, !tbaa !9
  store i64 %4951, ptr %15, align 8, !tbaa !9
  %4952 = load ptr, ptr %12, align 8, !tbaa !5
  %4953 = load i64, ptr %15, align 8, !tbaa !9
  %4954 = getelementptr inbounds %struct.doublecomplex, ptr %4952, i64 %4953
  %4955 = getelementptr inbounds %struct.doublecomplex, ptr %4954, i32 0, i32 0
  %4956 = load double, ptr %4955, align 8, !tbaa !13
  store double %4956, ptr %26, align 8, !tbaa !11
  %4957 = load double, ptr %26, align 8, !tbaa !11
  %4958 = fcmp une double %4957, 0.000000e+00
  br i1 %4958, label %4959, label %4982

4959:                                             ; preds = %4950
  %4960 = load double, ptr %31, align 8, !tbaa !11
  %4961 = load double, ptr %26, align 8, !tbaa !11
  %4962 = fcmp olt double %4960, %4961
  br i1 %4962, label %4963, label %4973

4963:                                             ; preds = %4959
  %4964 = load double, ptr %31, align 8, !tbaa !11
  %4965 = load double, ptr %26, align 8, !tbaa !11
  %4966 = fdiv double %4964, %4965
  store double %4966, ptr %17, align 8, !tbaa !11
  %4967 = load double, ptr %24, align 8, !tbaa !11
  %4968 = load double, ptr %17, align 8, !tbaa !11
  %4969 = load double, ptr %17, align 8, !tbaa !11
  %4970 = fmul double %4968, %4969
  %4971 = call double @llvm.fmuladd.f64(double %4967, double %4970, double 1.000000e+00)
  store double %4971, ptr %24, align 8, !tbaa !11
  %4972 = load double, ptr %26, align 8, !tbaa !11
  store double %4972, ptr %31, align 8, !tbaa !11
  br label %4981

4973:                                             ; preds = %4959
  %4974 = load double, ptr %26, align 8, !tbaa !11
  %4975 = load double, ptr %31, align 8, !tbaa !11
  %4976 = fdiv double %4974, %4975
  store double %4976, ptr %17, align 8, !tbaa !11
  %4977 = load double, ptr %17, align 8, !tbaa !11
  %4978 = load double, ptr %17, align 8, !tbaa !11
  %4979 = load double, ptr %24, align 8, !tbaa !11
  %4980 = call double @llvm.fmuladd.f64(double %4977, double %4978, double %4979)
  store double %4980, ptr %24, align 8, !tbaa !11
  br label %4981

4981:                                             ; preds = %4973, %4963
  br label %4982

4982:                                             ; preds = %4981, %4950
  %4983 = load i64, ptr %23, align 8, !tbaa !9
  %4984 = add nsw i64 %4983, 1
  store i64 %4984, ptr %15, align 8, !tbaa !9
  %4985 = load ptr, ptr %12, align 8, !tbaa !5
  %4986 = load i64, ptr %15, align 8, !tbaa !9
  %4987 = getelementptr inbounds %struct.doublecomplex, ptr %4985, i64 %4986
  %4988 = getelementptr inbounds %struct.doublecomplex, ptr %4987, i32 0, i32 0
  %4989 = load double, ptr %4988, align 8, !tbaa !13
  store double %4989, ptr %26, align 8, !tbaa !11
  %4990 = load double, ptr %26, align 8, !tbaa !11
  %4991 = fcmp une double %4990, 0.000000e+00
  br i1 %4991, label %4992, label %5015

4992:                                             ; preds = %4982
  %4993 = load double, ptr %31, align 8, !tbaa !11
  %4994 = load double, ptr %26, align 8, !tbaa !11
  %4995 = fcmp olt double %4993, %4994
  br i1 %4995, label %4996, label %5006

4996:                                             ; preds = %4992
  %4997 = load double, ptr %31, align 8, !tbaa !11
  %4998 = load double, ptr %26, align 8, !tbaa !11
  %4999 = fdiv double %4997, %4998
  store double %4999, ptr %17, align 8, !tbaa !11
  %5000 = load double, ptr %24, align 8, !tbaa !11
  %5001 = load double, ptr %17, align 8, !tbaa !11
  %5002 = load double, ptr %17, align 8, !tbaa !11
  %5003 = fmul double %5001, %5002
  %5004 = call double @llvm.fmuladd.f64(double %5000, double %5003, double 1.000000e+00)
  store double %5004, ptr %24, align 8, !tbaa !11
  %5005 = load double, ptr %26, align 8, !tbaa !11
  store double %5005, ptr %31, align 8, !tbaa !11
  br label %5014

5006:                                             ; preds = %4992
  %5007 = load double, ptr %26, align 8, !tbaa !11
  %5008 = load double, ptr %31, align 8, !tbaa !11
  %5009 = fdiv double %5007, %5008
  store double %5009, ptr %17, align 8, !tbaa !11
  %5010 = load double, ptr %17, align 8, !tbaa !11
  %5011 = load double, ptr %17, align 8, !tbaa !11
  %5012 = load double, ptr %24, align 8, !tbaa !11
  %5013 = call double @llvm.fmuladd.f64(double %5010, double %5011, double %5012)
  store double %5013, ptr %24, align 8, !tbaa !11
  br label %5014

5014:                                             ; preds = %5006, %4996
  br label %5015

5015:                                             ; preds = %5014, %4982
  %5016 = load i64, ptr %23, align 8, !tbaa !9
  %5017 = load i64, ptr %27, align 8, !tbaa !9
  %5018 = add nsw i64 %5016, %5017
  %5019 = add nsw i64 %5018, 1
  store i64 %5019, ptr %23, align 8, !tbaa !9
  br label %5020

5020:                                             ; preds = %5015
  %5021 = load i64, ptr %21, align 8, !tbaa !9
  %5022 = add nsw i64 %5021, 1
  store i64 %5022, ptr %21, align 8, !tbaa !9
  br label %4946, !llvm.loop !128

5023:                                             ; preds = %4946
  %5024 = load i64, ptr %23, align 8, !tbaa !9
  store i64 %5024, ptr %14, align 8, !tbaa !9
  %5025 = load ptr, ptr %12, align 8, !tbaa !5
  %5026 = load i64, ptr %14, align 8, !tbaa !9
  %5027 = getelementptr inbounds %struct.doublecomplex, ptr %5025, i64 %5026
  %5028 = getelementptr inbounds %struct.doublecomplex, ptr %5027, i32 0, i32 0
  %5029 = load double, ptr %5028, align 8, !tbaa !13
  store double %5029, ptr %26, align 8, !tbaa !11
  %5030 = load double, ptr %26, align 8, !tbaa !11
  %5031 = fcmp une double %5030, 0.000000e+00
  br i1 %5031, label %5032, label %5055

5032:                                             ; preds = %5023
  %5033 = load double, ptr %31, align 8, !tbaa !11
  %5034 = load double, ptr %26, align 8, !tbaa !11
  %5035 = fcmp olt double %5033, %5034
  br i1 %5035, label %5036, label %5046

5036:                                             ; preds = %5032
  %5037 = load double, ptr %31, align 8, !tbaa !11
  %5038 = load double, ptr %26, align 8, !tbaa !11
  %5039 = fdiv double %5037, %5038
  store double %5039, ptr %17, align 8, !tbaa !11
  %5040 = load double, ptr %24, align 8, !tbaa !11
  %5041 = load double, ptr %17, align 8, !tbaa !11
  %5042 = load double, ptr %17, align 8, !tbaa !11
  %5043 = fmul double %5041, %5042
  %5044 = call double @llvm.fmuladd.f64(double %5040, double %5043, double 1.000000e+00)
  store double %5044, ptr %24, align 8, !tbaa !11
  %5045 = load double, ptr %26, align 8, !tbaa !11
  store double %5045, ptr %31, align 8, !tbaa !11
  br label %5054

5046:                                             ; preds = %5032
  %5047 = load double, ptr %26, align 8, !tbaa !11
  %5048 = load double, ptr %31, align 8, !tbaa !11
  %5049 = fdiv double %5047, %5048
  store double %5049, ptr %17, align 8, !tbaa !11
  %5050 = load double, ptr %17, align 8, !tbaa !11
  %5051 = load double, ptr %17, align 8, !tbaa !11
  %5052 = load double, ptr %24, align 8, !tbaa !11
  %5053 = call double @llvm.fmuladd.f64(double %5050, double %5051, double %5052)
  store double %5053, ptr %24, align 8, !tbaa !11
  br label %5054

5054:                                             ; preds = %5046, %5036
  br label %5055

5055:                                             ; preds = %5054, %5023
  br label %5266

5056:                                             ; preds = %4833
  %5057 = load i64, ptr %22, align 8, !tbaa !9
  %5058 = sub nsw i64 %5057, 1
  store i64 %5058, ptr %14, align 8, !tbaa !9
  store i64 1, ptr %21, align 8, !tbaa !9
  br label %5059

5059:                                             ; preds = %5071, %5056
  %5060 = load i64, ptr %21, align 8, !tbaa !9
  %5061 = load i64, ptr %14, align 8, !tbaa !9
  %5062 = icmp sle i64 %5060, %5061
  br i1 %5062, label %5063, label %5074

5063:                                             ; preds = %5059
  %5064 = load ptr, ptr %12, align 8, !tbaa !5
  %5065 = load i64, ptr %21, align 8, !tbaa !9
  %5066 = add nsw i64 %5065, 1
  %5067 = load i64, ptr %27, align 8, !tbaa !9
  %5068 = mul nsw i64 %5066, %5067
  %5069 = getelementptr inbounds %struct.doublecomplex, ptr %5064, i64 %5068
  %5070 = call i32 @zlassq_(ptr noundef %21, ptr noundef %5069, ptr noundef @c__1, ptr noundef %31, ptr noundef %24)
  br label %5071

5071:                                             ; preds = %5063
  %5072 = load i64, ptr %21, align 8, !tbaa !9
  %5073 = add nsw i64 %5072, 1
  store i64 %5073, ptr %21, align 8, !tbaa !9
  br label %5059, !llvm.loop !129

5074:                                             ; preds = %5059
  %5075 = load ptr, ptr %11, align 8, !tbaa !5
  %5076 = load i64, ptr %5075, align 8, !tbaa !9
  store i64 %5076, ptr %14, align 8, !tbaa !9
  %5077 = load i64, ptr %22, align 8, !tbaa !9
  %5078 = add nsw i64 %5077, 1
  store i64 %5078, ptr %21, align 8, !tbaa !9
  br label %5079

5079:                                             ; preds = %5090, %5074
  %5080 = load i64, ptr %21, align 8, !tbaa !9
  %5081 = load i64, ptr %14, align 8, !tbaa !9
  %5082 = icmp sle i64 %5080, %5081
  br i1 %5082, label %5083, label %5093

5083:                                             ; preds = %5079
  %5084 = load ptr, ptr %12, align 8, !tbaa !5
  %5085 = load i64, ptr %21, align 8, !tbaa !9
  %5086 = load i64, ptr %27, align 8, !tbaa !9
  %5087 = mul nsw i64 %5085, %5086
  %5088 = getelementptr inbounds %struct.doublecomplex, ptr %5084, i64 %5087
  %5089 = call i32 @zlassq_(ptr noundef %22, ptr noundef %5088, ptr noundef @c__1, ptr noundef %31, ptr noundef %24)
  br label %5090

5090:                                             ; preds = %5083
  %5091 = load i64, ptr %21, align 8, !tbaa !9
  %5092 = add nsw i64 %5091, 1
  store i64 %5092, ptr %21, align 8, !tbaa !9
  br label %5079, !llvm.loop !130

5093:                                             ; preds = %5079
  %5094 = load i64, ptr %22, align 8, !tbaa !9
  %5095 = sub nsw i64 %5094, 2
  store i64 %5095, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %5096

5096:                                             ; preds = %5114, %5093
  %5097 = load i64, ptr %21, align 8, !tbaa !9
  %5098 = load i64, ptr %14, align 8, !tbaa !9
  %5099 = icmp sle i64 %5097, %5098
  br i1 %5099, label %5100, label %5117

5100:                                             ; preds = %5096
  %5101 = load i64, ptr %22, align 8, !tbaa !9
  %5102 = load i64, ptr %21, align 8, !tbaa !9
  %5103 = sub nsw i64 %5101, %5102
  %5104 = sub nsw i64 %5103, 1
  store i64 %5104, ptr %15, align 8, !tbaa !9
  %5105 = load ptr, ptr %12, align 8, !tbaa !5
  %5106 = load i64, ptr %21, align 8, !tbaa !9
  %5107 = add nsw i64 %5106, 1
  %5108 = load i64, ptr %21, align 8, !tbaa !9
  %5109 = load i64, ptr %27, align 8, !tbaa !9
  %5110 = mul nsw i64 %5108, %5109
  %5111 = add nsw i64 %5107, %5110
  %5112 = getelementptr inbounds %struct.doublecomplex, ptr %5105, i64 %5111
  %5113 = call i32 @zlassq_(ptr noundef %15, ptr noundef %5112, ptr noundef @c__1, ptr noundef %31, ptr noundef %24)
  br label %5114

5114:                                             ; preds = %5100
  %5115 = load i64, ptr %21, align 8, !tbaa !9
  %5116 = add nsw i64 %5115, 1
  store i64 %5116, ptr %21, align 8, !tbaa !9
  br label %5096, !llvm.loop !131

5117:                                             ; preds = %5096
  %5118 = load double, ptr %24, align 8, !tbaa !11
  %5119 = load double, ptr %24, align 8, !tbaa !11
  %5120 = fadd double %5119, %5118
  store double %5120, ptr %24, align 8, !tbaa !11
  store i64 0, ptr %23, align 8, !tbaa !9
  %5121 = load i64, ptr %23, align 8, !tbaa !9
  store i64 %5121, ptr %14, align 8, !tbaa !9
  %5122 = load ptr, ptr %12, align 8, !tbaa !5
  %5123 = load i64, ptr %14, align 8, !tbaa !9
  %5124 = getelementptr inbounds %struct.doublecomplex, ptr %5122, i64 %5123
  %5125 = getelementptr inbounds %struct.doublecomplex, ptr %5124, i32 0, i32 0
  %5126 = load double, ptr %5125, align 8, !tbaa !13
  store double %5126, ptr %26, align 8, !tbaa !11
  %5127 = load double, ptr %26, align 8, !tbaa !11
  %5128 = fcmp une double %5127, 0.000000e+00
  br i1 %5128, label %5129, label %5152

5129:                                             ; preds = %5117
  %5130 = load double, ptr %31, align 8, !tbaa !11
  %5131 = load double, ptr %26, align 8, !tbaa !11
  %5132 = fcmp olt double %5130, %5131
  br i1 %5132, label %5133, label %5143

5133:                                             ; preds = %5129
  %5134 = load double, ptr %31, align 8, !tbaa !11
  %5135 = load double, ptr %26, align 8, !tbaa !11
  %5136 = fdiv double %5134, %5135
  store double %5136, ptr %17, align 8, !tbaa !11
  %5137 = load double, ptr %24, align 8, !tbaa !11
  %5138 = load double, ptr %17, align 8, !tbaa !11
  %5139 = load double, ptr %17, align 8, !tbaa !11
  %5140 = fmul double %5138, %5139
  %5141 = call double @llvm.fmuladd.f64(double %5137, double %5140, double 1.000000e+00)
  store double %5141, ptr %24, align 8, !tbaa !11
  %5142 = load double, ptr %26, align 8, !tbaa !11
  store double %5142, ptr %31, align 8, !tbaa !11
  br label %5151

5143:                                             ; preds = %5129
  %5144 = load double, ptr %26, align 8, !tbaa !11
  %5145 = load double, ptr %31, align 8, !tbaa !11
  %5146 = fdiv double %5144, %5145
  store double %5146, ptr %17, align 8, !tbaa !11
  %5147 = load double, ptr %17, align 8, !tbaa !11
  %5148 = load double, ptr %17, align 8, !tbaa !11
  %5149 = load double, ptr %24, align 8, !tbaa !11
  %5150 = call double @llvm.fmuladd.f64(double %5147, double %5148, double %5149)
  store double %5150, ptr %24, align 8, !tbaa !11
  br label %5151

5151:                                             ; preds = %5143, %5133
  br label %5152

5152:                                             ; preds = %5151, %5117
  %5153 = load i64, ptr %27, align 8, !tbaa !9
  store i64 %5153, ptr %23, align 8, !tbaa !9
  %5154 = load i64, ptr %22, align 8, !tbaa !9
  %5155 = sub nsw i64 %5154, 2
  store i64 %5155, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %5156

5156:                                             ; preds = %5230, %5152
  %5157 = load i64, ptr %20, align 8, !tbaa !9
  %5158 = load i64, ptr %14, align 8, !tbaa !9
  %5159 = icmp sle i64 %5157, %5158
  br i1 %5159, label %5160, label %5233

5160:                                             ; preds = %5156
  %5161 = load i64, ptr %23, align 8, !tbaa !9
  store i64 %5161, ptr %15, align 8, !tbaa !9
  %5162 = load ptr, ptr %12, align 8, !tbaa !5
  %5163 = load i64, ptr %15, align 8, !tbaa !9
  %5164 = getelementptr inbounds %struct.doublecomplex, ptr %5162, i64 %5163
  %5165 = getelementptr inbounds %struct.doublecomplex, ptr %5164, i32 0, i32 0
  %5166 = load double, ptr %5165, align 8, !tbaa !13
  store double %5166, ptr %26, align 8, !tbaa !11
  %5167 = load double, ptr %26, align 8, !tbaa !11
  %5168 = fcmp une double %5167, 0.000000e+00
  br i1 %5168, label %5169, label %5192

5169:                                             ; preds = %5160
  %5170 = load double, ptr %31, align 8, !tbaa !11
  %5171 = load double, ptr %26, align 8, !tbaa !11
  %5172 = fcmp olt double %5170, %5171
  br i1 %5172, label %5173, label %5183

5173:                                             ; preds = %5169
  %5174 = load double, ptr %31, align 8, !tbaa !11
  %5175 = load double, ptr %26, align 8, !tbaa !11
  %5176 = fdiv double %5174, %5175
  store double %5176, ptr %17, align 8, !tbaa !11
  %5177 = load double, ptr %24, align 8, !tbaa !11
  %5178 = load double, ptr %17, align 8, !tbaa !11
  %5179 = load double, ptr %17, align 8, !tbaa !11
  %5180 = fmul double %5178, %5179
  %5181 = call double @llvm.fmuladd.f64(double %5177, double %5180, double 1.000000e+00)
  store double %5181, ptr %24, align 8, !tbaa !11
  %5182 = load double, ptr %26, align 8, !tbaa !11
  store double %5182, ptr %31, align 8, !tbaa !11
  br label %5191

5183:                                             ; preds = %5169
  %5184 = load double, ptr %26, align 8, !tbaa !11
  %5185 = load double, ptr %31, align 8, !tbaa !11
  %5186 = fdiv double %5184, %5185
  store double %5186, ptr %17, align 8, !tbaa !11
  %5187 = load double, ptr %17, align 8, !tbaa !11
  %5188 = load double, ptr %17, align 8, !tbaa !11
  %5189 = load double, ptr %24, align 8, !tbaa !11
  %5190 = call double @llvm.fmuladd.f64(double %5187, double %5188, double %5189)
  store double %5190, ptr %24, align 8, !tbaa !11
  br label %5191

5191:                                             ; preds = %5183, %5173
  br label %5192

5192:                                             ; preds = %5191, %5160
  %5193 = load i64, ptr %23, align 8, !tbaa !9
  %5194 = add nsw i64 %5193, 1
  store i64 %5194, ptr %15, align 8, !tbaa !9
  %5195 = load ptr, ptr %12, align 8, !tbaa !5
  %5196 = load i64, ptr %15, align 8, !tbaa !9
  %5197 = getelementptr inbounds %struct.doublecomplex, ptr %5195, i64 %5196
  %5198 = getelementptr inbounds %struct.doublecomplex, ptr %5197, i32 0, i32 0
  %5199 = load double, ptr %5198, align 8, !tbaa !13
  store double %5199, ptr %26, align 8, !tbaa !11
  %5200 = load double, ptr %26, align 8, !tbaa !11
  %5201 = fcmp une double %5200, 0.000000e+00
  br i1 %5201, label %5202, label %5225

5202:                                             ; preds = %5192
  %5203 = load double, ptr %31, align 8, !tbaa !11
  %5204 = load double, ptr %26, align 8, !tbaa !11
  %5205 = fcmp olt double %5203, %5204
  br i1 %5205, label %5206, label %5216

5206:                                             ; preds = %5202
  %5207 = load double, ptr %31, align 8, !tbaa !11
  %5208 = load double, ptr %26, align 8, !tbaa !11
  %5209 = fdiv double %5207, %5208
  store double %5209, ptr %17, align 8, !tbaa !11
  %5210 = load double, ptr %24, align 8, !tbaa !11
  %5211 = load double, ptr %17, align 8, !tbaa !11
  %5212 = load double, ptr %17, align 8, !tbaa !11
  %5213 = fmul double %5211, %5212
  %5214 = call double @llvm.fmuladd.f64(double %5210, double %5213, double 1.000000e+00)
  store double %5214, ptr %24, align 8, !tbaa !11
  %5215 = load double, ptr %26, align 8, !tbaa !11
  store double %5215, ptr %31, align 8, !tbaa !11
  br label %5224

5216:                                             ; preds = %5202
  %5217 = load double, ptr %26, align 8, !tbaa !11
  %5218 = load double, ptr %31, align 8, !tbaa !11
  %5219 = fdiv double %5217, %5218
  store double %5219, ptr %17, align 8, !tbaa !11
  %5220 = load double, ptr %17, align 8, !tbaa !11
  %5221 = load double, ptr %17, align 8, !tbaa !11
  %5222 = load double, ptr %24, align 8, !tbaa !11
  %5223 = call double @llvm.fmuladd.f64(double %5220, double %5221, double %5222)
  store double %5223, ptr %24, align 8, !tbaa !11
  br label %5224

5224:                                             ; preds = %5216, %5206
  br label %5225

5225:                                             ; preds = %5224, %5192
  %5226 = load i64, ptr %23, align 8, !tbaa !9
  %5227 = load i64, ptr %27, align 8, !tbaa !9
  %5228 = add nsw i64 %5226, %5227
  %5229 = add nsw i64 %5228, 1
  store i64 %5229, ptr %23, align 8, !tbaa !9
  br label %5230

5230:                                             ; preds = %5225
  %5231 = load i64, ptr %20, align 8, !tbaa !9
  %5232 = add nsw i64 %5231, 1
  store i64 %5232, ptr %20, align 8, !tbaa !9
  br label %5156, !llvm.loop !132

5233:                                             ; preds = %5156
  %5234 = load i64, ptr %23, align 8, !tbaa !9
  store i64 %5234, ptr %14, align 8, !tbaa !9
  %5235 = load ptr, ptr %12, align 8, !tbaa !5
  %5236 = load i64, ptr %14, align 8, !tbaa !9
  %5237 = getelementptr inbounds %struct.doublecomplex, ptr %5235, i64 %5236
  %5238 = getelementptr inbounds %struct.doublecomplex, ptr %5237, i32 0, i32 0
  %5239 = load double, ptr %5238, align 8, !tbaa !13
  store double %5239, ptr %26, align 8, !tbaa !11
  %5240 = load double, ptr %26, align 8, !tbaa !11
  %5241 = fcmp une double %5240, 0.000000e+00
  br i1 %5241, label %5242, label %5265

5242:                                             ; preds = %5233
  %5243 = load double, ptr %31, align 8, !tbaa !11
  %5244 = load double, ptr %26, align 8, !tbaa !11
  %5245 = fcmp olt double %5243, %5244
  br i1 %5245, label %5246, label %5256

5246:                                             ; preds = %5242
  %5247 = load double, ptr %31, align 8, !tbaa !11
  %5248 = load double, ptr %26, align 8, !tbaa !11
  %5249 = fdiv double %5247, %5248
  store double %5249, ptr %17, align 8, !tbaa !11
  %5250 = load double, ptr %24, align 8, !tbaa !11
  %5251 = load double, ptr %17, align 8, !tbaa !11
  %5252 = load double, ptr %17, align 8, !tbaa !11
  %5253 = fmul double %5251, %5252
  %5254 = call double @llvm.fmuladd.f64(double %5250, double %5253, double 1.000000e+00)
  store double %5254, ptr %24, align 8, !tbaa !11
  %5255 = load double, ptr %26, align 8, !tbaa !11
  store double %5255, ptr %31, align 8, !tbaa !11
  br label %5264

5256:                                             ; preds = %5242
  %5257 = load double, ptr %26, align 8, !tbaa !11
  %5258 = load double, ptr %31, align 8, !tbaa !11
  %5259 = fdiv double %5257, %5258
  store double %5259, ptr %17, align 8, !tbaa !11
  %5260 = load double, ptr %17, align 8, !tbaa !11
  %5261 = load double, ptr %17, align 8, !tbaa !11
  %5262 = load double, ptr %24, align 8, !tbaa !11
  %5263 = call double @llvm.fmuladd.f64(double %5260, double %5261, double %5262)
  store double %5263, ptr %24, align 8, !tbaa !11
  br label %5264

5264:                                             ; preds = %5256, %5246
  br label %5265

5265:                                             ; preds = %5264, %5233
  br label %5266

5266:                                             ; preds = %5265, %5055
  br label %5267

5267:                                             ; preds = %5266, %4832
  br label %5268

5268:                                             ; preds = %5267, %4568
  %5269 = load double, ptr %31, align 8, !tbaa !11
  %5270 = load double, ptr %24, align 8, !tbaa !11
  %5271 = call double @sqrt(double noundef %5270) #5
  %5272 = fmul double %5269, %5271
  store double %5272, ptr %32, align 8, !tbaa !11
  br label %5273

5273:                                             ; preds = %5268, %3858
  br label %5274

5274:                                             ; preds = %5273, %3853
  br label %5275

5275:                                             ; preds = %5274, %2027
  %5276 = load double, ptr %32, align 8, !tbaa !11
  store double %5276, ptr %16, align 8, !tbaa !11
  %5277 = load double, ptr %16, align 8, !tbaa !11
  store double %5277, ptr %7, align 8
  store i32 1, ptr %33, align 4
  br label %5278

5278:                                             ; preds = %5275, %37
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #5
  %5279 = load double, ptr %7, align 8
  ret double %5279
}

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

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

declare double @z_abs(ptr noundef) #2

declare i64 @f2c_idamax(ptr noundef, ptr noundef, ptr noundef) #2

declare i32 @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) #3

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

; 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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { 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 #5 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !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}


; 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
@c__1 = external hidden global i64, align 8
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1

; 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) local_unnamed_addr #0 {
  %7 = alloca i64, align 8
  %8 = alloca i64, align 8
  %9 = alloca i64, align 8
  %10 = alloca double, align 8
  %11 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #7
  %12 = load i64, ptr %3, align 8, !tbaa !5
  %13 = icmp eq i64 %12, 0
  br i1 %13, label %.loopexit1984, label %14

14:                                               ; preds = %6
  %15 = and i64 %12, 1
  %16 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #7
  %.not = icmp eq i64 %16, 0
  %17 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.1) #7
  %.not1796.not.not.not.not.not.not.not.not = icmp eq i64 %17, 0
  %18 = load i64, ptr %3, align 8, !tbaa !5
  br i1 %.not, label %19, label %21

19:                                               ; preds = %14
  %20 = xor i64 %15, 1
  %spec.select = add i64 %18, %20
  br label %24

21:                                               ; preds = %14
  %22 = add nsw i64 %18, 1
  %23 = sdiv i64 %22, 2
  br label %24

24:                                               ; preds = %19, %21
  %.01631 = phi i64 [ %23, %21 ], [ %spec.select, %19 ]
  %25 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #7
  %.not1798 = icmp eq i64 %25, 0
  br i1 %.not1798, label %483, label %26

26:                                               ; preds = %24
  %27 = load i64, ptr %3, align 8, !tbaa !5
  %28 = add i64 %27, 1
  %29 = sdiv i64 %28, 2
  store i64 %29, ptr %9, align 8, !tbaa !5
  %.not1911 = icmp eq i64 %15, 0
  br i1 %.not1911, label %239, label %30

30:                                               ; preds = %26
  br i1 %.not, label %31, label %126

31:                                               ; preds = %30
  br i1 %.not1796.not.not.not.not.not.not.not.not, label %32, label %73

32:                                               ; preds = %31
  %33 = load double, ptr %4, align 8, !tbaa !9
  %34 = fcmp oge double %33, 0.000000e+00
  %35 = fneg double %33
  %36 = select i1 %34, double %33, double %35
  %37 = fcmp ole double %36, 0.000000e+00
  %38 = select i1 %37, double 0.000000e+00, double %36
  %.not1961.not2123 = icmp sgt i64 %27, 1
  br i1 %.not1961.not2123, label %.lr.ph2127, label %.loopexit1984

.lr.ph2127:                                       ; preds = %32, %.lr.ph2127
  %.02125 = phi double [ %41, %.lr.ph2127 ], [ %38, %32 ]
  %.016492124 = phi i64 [ %42, %.lr.ph2127 ], [ 1, %32 ]
  %gep2131 = getelementptr %struct.doublecomplex, ptr %4, i64 %.016492124
  %39 = tail call double @z_abs(ptr noundef %gep2131) #7
  %40 = fcmp oge double %.02125, %39
  %41 = select i1 %40, double %.02125, double %39
  %42 = add nuw nsw i64 %.016492124, 1
  %exitcond3159.not = icmp eq i64 %42, %27
  br i1 %exitcond3159.not, label %._crit_edge2128, label %.lr.ph2127, !llvm.loop !12

._crit_edge2128:                                  ; preds = %.lr.ph2127
  %.not1963.not2150 = icmp sgt i64 %28, 3
  br i1 %.not1963.not2150, label %.lr.ph2154, label %.loopexit1984

.lr.ph2154:                                       ; preds = %._crit_edge2128
  %43 = add i64 %.01631, 1
  %invariant.gep3455 = getelementptr i8, ptr %4, i64 -16
  %44 = add nsw i64 %29, -2
  br label %45

45:                                               ; preds = %.lr.ph2154, %._crit_edge2146
  %indvars.iv3160 = phi i64 [ 0, %.lr.ph2154 ], [ %indvars.iv.next3161, %._crit_edge2146 ]
  %.12152 = phi double [ %41, %.lr.ph2154 ], [ %.3.lcssa, %._crit_edge2146 ]
  %storemerge19622151 = phi i64 [ 1, %.lr.ph2154 ], [ %72, %._crit_edge2146 ]
  %.not19642132 = icmp ult i64 %storemerge19622151, 2
  %.pre3320 = mul nsw i64 %storemerge19622151, %.01631
  br i1 %.not19642132, label %._crit_edge2137, label %.lr.ph2136

.lr.ph2136:                                       ; preds = %45
  %invariant.gep2139 = getelementptr %struct.doublecomplex, ptr %4, i64 %.pre3320
  br label %46

46:                                               ; preds = %.lr.ph2136, %46
  %.22134 = phi double [ %.12152, %.lr.ph2136 ], [ %49, %46 ]
  %.116502133 = phi i64 [ 0, %.lr.ph2136 ], [ %50, %46 ]
  %gep2140 = getelementptr %struct.doublecomplex, ptr %invariant.gep2139, i64 %.116502133
  %47 = tail call double @z_abs(ptr noundef %gep2140) #7
  %48 = fcmp oge double %.22134, %47
  %49 = select i1 %48, double %.22134, double %47
  %50 = add nuw nsw i64 %.116502133, 1
  %exitcond3162.not = icmp eq i64 %50, %indvars.iv3160
  br i1 %exitcond3162.not, label %._crit_edge2137, label %46, !llvm.loop !14

._crit_edge2137:                                  ; preds = %46, %45
  %.2.lcssa = phi double [ %.12152, %45 ], [ %49, %46 ]
  %gep3456 = getelementptr %struct.doublecomplex, ptr %invariant.gep3455, i64 %storemerge19622151
  %51 = getelementptr %struct.doublecomplex, ptr %gep3456, i64 %.pre3320
  %52 = load double, ptr %51, align 8, !tbaa !9
  %53 = fcmp oge double %52, 0.000000e+00
  %54 = fneg double %52
  %55 = select i1 %53, double %52, double %54
  %56 = fcmp oge double %.2.lcssa, %55
  %57 = select i1 %56, double %.2.lcssa, double %55
  %58 = mul i64 %storemerge19622151, %43
  %59 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %58
  %60 = load double, ptr %59, align 8, !tbaa !9
  %61 = fcmp oge double %60, 0.000000e+00
  %62 = fneg double %60
  %63 = select i1 %61, double %60, double %62
  %64 = fcmp oge double %57, %63
  %65 = select i1 %64, double %57, double %63
  %66 = load i64, ptr %3, align 8, !tbaa !5
  %67 = add nsw i64 %66, -1
  %.not1965.not2141 = icmp slt i64 %storemerge19622151, %67
  br i1 %.not1965.not2141, label %.lr.ph2145, label %._crit_edge2146

.lr.ph2145:                                       ; preds = %._crit_edge2137
  %invariant.gep2148 = getelementptr %struct.doublecomplex, ptr %4, i64 %.pre3320
  br label %68

68:                                               ; preds = %.lr.ph2145, %68
  %.32143 = phi double [ %65, %.lr.ph2145 ], [ %71, %68 ]
  %.21651.in2142 = phi i64 [ %storemerge19622151, %.lr.ph2145 ], [ %.21651, %68 ]
  %.21651 = add nuw nsw i64 %.21651.in2142, 1
  %gep2149 = getelementptr %struct.doublecomplex, ptr %invariant.gep2148, i64 %.21651
  %69 = tail call double @z_abs(ptr noundef %gep2149) #7
  %70 = fcmp oge double %.32143, %69
  %71 = select i1 %70, double %.32143, double %69
  %.not1965.not = icmp slt i64 %.21651, %67
  br i1 %.not1965.not, label %68, label %._crit_edge2146, !llvm.loop !15

._crit_edge2146:                                  ; preds = %68, %._crit_edge2137
  %.3.lcssa = phi double [ %65, %._crit_edge2137 ], [ %71, %68 ]
  %72 = add nuw nsw i64 %storemerge19622151, 1
  %indvars.iv.next3161 = add nuw nsw i64 %indvars.iv3160, 1
  %exitcond3163.not = icmp eq i64 %indvars.iv3160, %44
  br i1 %exitcond3163.not, label %.loopexit1984, label %45, !llvm.loop !16

73:                                               ; preds = %31
  %.not19572105 = icmp slt i64 %27, 3
  br i1 %.not19572105, label %109, label %.lr.ph2109

.lr.ph2109:                                       ; preds = %73
  %74 = add nsw i64 %29, -1
  %75 = tail call i64 @llvm.smax.i64(i64 %29, i64 2)
  %76 = add nsw i64 %75, -1
  br label %77

77:                                               ; preds = %.lr.ph2109, %._crit_edge2101
  %indvars.iv3153 = phi i64 [ %74, %.lr.ph2109 ], [ %indvars.iv.next3154, %._crit_edge2101 ]
  %.42107 = phi double [ 0.000000e+00, %.lr.ph2109 ], [ %.6.lcssa, %._crit_edge2101 ]
  %storemerge19562106 = phi i64 [ 0, %.lr.ph2109 ], [ %108, %._crit_edge2101 ]
  %78 = add nsw i64 %storemerge19562106, -2
  %79 = add i64 %78, %29
  %.not19592087 = icmp slt i64 %79, 0
  %.pre3324 = mul nsw i64 %storemerge19562106, %.01631
  br i1 %.not19592087, label %._crit_edge2092, label %.lr.ph2091

.lr.ph2091:                                       ; preds = %77
  %invariant.gep2094 = getelementptr %struct.doublecomplex, ptr %4, i64 %.pre3324
  br label %80

80:                                               ; preds = %.lr.ph2091, %80
  %.52089 = phi double [ %.42107, %.lr.ph2091 ], [ %83, %80 ]
  %.316522088 = phi i64 [ 0, %.lr.ph2091 ], [ %84, %80 ]
  %gep2095 = getelementptr %struct.doublecomplex, ptr %invariant.gep2094, i64 %.316522088
  %81 = tail call double @z_abs(ptr noundef %gep2095) #7
  %82 = fcmp oge double %.52089, %81
  %83 = select i1 %82, double %.52089, double %81
  %84 = add nuw i64 %.316522088, 1
  %exitcond3155.not = icmp eq i64 %84, %indvars.iv3153
  br i1 %exitcond3155.not, label %._crit_edge2092, label %80, !llvm.loop !17

._crit_edge2092:                                  ; preds = %80, %77
  %.5.lcssa = phi double [ %.42107, %77 ], [ %83, %80 ]
  %85 = add nsw i64 %storemerge19562106, %29
  %86 = getelementptr %struct.doublecomplex, ptr %4, i64 %.pre3324
  %87 = getelementptr %struct.doublecomplex, ptr %86, i64 %85
  %88 = getelementptr i8, ptr %87, i64 -16
  %89 = load double, ptr %88, align 8, !tbaa !9
  %90 = fcmp oge double %89, 0.000000e+00
  %91 = fneg double %89
  %92 = select i1 %90, double %89, double %91
  %93 = fcmp oge double %.5.lcssa, %92
  %94 = select i1 %93, double %.5.lcssa, double %92
  %95 = getelementptr %struct.doublecomplex, ptr %4, i64 %85
  %96 = getelementptr %struct.doublecomplex, ptr %95, i64 %.pre3324
  %97 = load double, ptr %96, align 8, !tbaa !9
  %98 = fcmp oge double %97, 0.000000e+00
  %99 = fneg double %97
  %100 = select i1 %98, double %97, double %99
  %101 = fcmp oge double %94, %100
  %102 = select i1 %101, double %94, double %100
  %103 = load i64, ptr %3, align 8, !tbaa !5
  %104 = add nsw i64 %103, -1
  %.not1960.not2096 = icmp slt i64 %85, %104
  br i1 %.not1960.not2096, label %.lr.ph2100, label %._crit_edge2101

.lr.ph2100:                                       ; preds = %._crit_edge2092, %.lr.ph2100
  %.62098 = phi double [ %107, %.lr.ph2100 ], [ %102, %._crit_edge2092 ]
  %.41653.in2097 = phi i64 [ %.41653, %.lr.ph2100 ], [ %85, %._crit_edge2092 ]
  %.41653 = add nsw i64 %.41653.in2097, 1
  %gep2104 = getelementptr %struct.doublecomplex, ptr %86, i64 %.41653
  %105 = tail call double @z_abs(ptr noundef %gep2104) #7
  %106 = fcmp oge double %.62098, %105
  %107 = select i1 %106, double %.62098, double %105
  %.not1960.not = icmp slt i64 %.41653, %104
  br i1 %.not1960.not, label %.lr.ph2100, label %._crit_edge2101, !llvm.loop !18

._crit_edge2101:                                  ; preds = %.lr.ph2100, %._crit_edge2092
  %.6.lcssa = phi double [ %102, %._crit_edge2092 ], [ %107, %.lr.ph2100 ]
  %108 = add nuw nsw i64 %storemerge19562106, 1
  %indvars.iv.next3154 = add i64 %indvars.iv3153, 1
  %exitcond3157.not = icmp eq i64 %108, %76
  br i1 %exitcond3157.not, label %._crit_edge2110, label %77, !llvm.loop !19

._crit_edge2110:                                  ; preds = %._crit_edge2101
  %.pre = load i64, ptr %3, align 8, !tbaa !5
  br label %109

109:                                              ; preds = %._crit_edge2110, %73
  %110 = phi i64 [ %.pre, %._crit_edge2110 ], [ %27, %73 ]
  %111 = phi i64 [ %76, %._crit_edge2110 ], [ 0, %73 ]
  %.4.lcssa = phi double [ %.6.lcssa, %._crit_edge2110 ], [ 0.000000e+00, %73 ]
  %.not19582113 = icmp slt i64 %110, 2
  %.pre3322 = mul nsw i64 %111, %.01631
  br i1 %.not19582113, label %._crit_edge2118, label %.lr.ph2117

.lr.ph2117:                                       ; preds = %109
  %invariant.gep2121 = getelementptr %struct.doublecomplex, ptr %4, i64 %.pre3322
  %112 = add nsw i64 %110, -1
  br label %113

113:                                              ; preds = %.lr.ph2117, %113
  %.72115 = phi double [ %.4.lcssa, %.lr.ph2117 ], [ %116, %113 ]
  %.516542114 = phi i64 [ 0, %.lr.ph2117 ], [ %117, %113 ]
  %gep2122 = getelementptr %struct.doublecomplex, ptr %invariant.gep2121, i64 %.516542114
  %114 = tail call double @z_abs(ptr noundef %gep2122) #7
  %115 = fcmp oge double %.72115, %114
  %116 = select i1 %115, double %.72115, double %114
  %117 = add nuw i64 %.516542114, 1
  %exitcond3158.not = icmp eq i64 %117, %112
  br i1 %exitcond3158.not, label %._crit_edge2118, label %113, !llvm.loop !20

._crit_edge2118:                                  ; preds = %113, %109
  %.51654.lcssa = phi i64 [ 0, %109 ], [ %112, %113 ]
  %.7.lcssa = phi double [ %.4.lcssa, %109 ], [ %116, %113 ]
  %118 = getelementptr %struct.doublecomplex, ptr %4, i64 %.51654.lcssa
  %119 = getelementptr %struct.doublecomplex, ptr %118, i64 %.pre3322
  %120 = load double, ptr %119, align 8, !tbaa !9
  %121 = fcmp oge double %120, 0.000000e+00
  %122 = fneg double %120
  %123 = select i1 %121, double %120, double %122
  %124 = fcmp oge double %.7.lcssa, %123
  %125 = select i1 %124, double %.7.lcssa, double %123
  br label %.loopexit1984

126:                                              ; preds = %30
  %.not19492054 = icmp slt i64 %27, 3
  br i1 %.not1796.not.not.not.not.not.not.not.not, label %127, label %186

127:                                              ; preds = %126
  br i1 %.not19492054, label %.thread, label %.lr.ph2058

.thread:                                          ; preds = %127
  %.pre3326 = add nsw i64 %29, -1
  br label %.._crit_edge2067_crit_edge

.lr.ph2058:                                       ; preds = %127
  %128 = add i64 %.01631, 1
  %129 = add nsw i64 %29, -1
  %130 = tail call i64 @llvm.smax.i64(i64 %29, i64 2)
  %invariant.gep3453 = getelementptr i8, ptr %4, i64 16
  %131 = add nsw i64 %130, -2
  br label %132

132:                                              ; preds = %.lr.ph2058, %._crit_edge2050
  %.82056 = phi double [ 0.000000e+00, %.lr.ph2058 ], [ %.10.lcssa, %._crit_edge2050 ]
  %storemerge19482055 = phi i64 [ 0, %.lr.ph2058 ], [ %160, %._crit_edge2050 ]
  %.not19542036 = icmp eq i64 %storemerge19482055, 0
  br i1 %.not19542036, label %._crit_edge2041, label %.lr.ph2040

.lr.ph2040:                                       ; preds = %132
  %133 = mul nsw i64 %storemerge19482055, %.01631
  %invariant.gep2043 = getelementptr %struct.doublecomplex, ptr %4, i64 %133
  br label %134

134:                                              ; preds = %.lr.ph2040, %134
  %.92038 = phi double [ %.82056, %.lr.ph2040 ], [ %137, %134 ]
  %.616552037 = phi i64 [ 0, %.lr.ph2040 ], [ %138, %134 ]
  %gep2044 = getelementptr %struct.doublecomplex, ptr %invariant.gep2043, i64 %.616552037
  %135 = tail call double @z_abs(ptr noundef %gep2044) #7
  %136 = fcmp oge double %.92038, %135
  %137 = select i1 %136, double %.92038, double %135
  %138 = add nuw nsw i64 %.616552037, 1
  %exitcond3147.not = icmp eq i64 %138, %storemerge19482055
  br i1 %exitcond3147.not, label %._crit_edge2041, label %134, !llvm.loop !21

._crit_edge2041:                                  ; preds = %134, %132
  %.pre-phi3331 = phi i64 [ 0, %132 ], [ %133, %134 ]
  %.9.lcssa = phi double [ %.82056, %132 ], [ %137, %134 ]
  %139 = mul i64 %storemerge19482055, %128
  %140 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %139
  %141 = load double, ptr %140, align 8, !tbaa !9
  %142 = fcmp oge double %141, 0.000000e+00
  %143 = fneg double %141
  %144 = select i1 %142, double %141, double %143
  %145 = fcmp oge double %.9.lcssa, %144
  %146 = select i1 %145, double %.9.lcssa, double %144
  %gep3454 = getelementptr %struct.doublecomplex, ptr %invariant.gep3453, i64 %storemerge19482055
  %147 = getelementptr %struct.doublecomplex, ptr %gep3454, i64 %.pre-phi3331
  %148 = load double, ptr %147, align 8, !tbaa !9
  %149 = fcmp oge double %148, 0.000000e+00
  %150 = fneg double %148
  %151 = select i1 %149, double %148, double %150
  %152 = fcmp oge double %146, %151
  %153 = select i1 %152, double %146, double %151
  %154 = add nuw nsw i64 %storemerge19482055, 2
  %.not19552045.not = icmp slt i64 %154, %29
  br i1 %.not19552045.not, label %.lr.ph2049, label %._crit_edge2050

.lr.ph2049:                                       ; preds = %._crit_edge2041
  %invariant.gep2052 = getelementptr %struct.doublecomplex, ptr %4, i64 %.pre-phi3331
  br label %155

155:                                              ; preds = %.lr.ph2049, %155
  %.102047 = phi double [ %153, %.lr.ph2049 ], [ %158, %155 ]
  %.716562046 = phi i64 [ %154, %.lr.ph2049 ], [ %159, %155 ]
  %gep2053 = getelementptr %struct.doublecomplex, ptr %invariant.gep2052, i64 %.716562046
  %156 = tail call double @z_abs(ptr noundef %gep2053) #7
  %157 = fcmp oge double %.102047, %156
  %158 = select i1 %157, double %.102047, double %156
  %159 = add nuw nsw i64 %.716562046, 1
  %.not1955.not = icmp slt i64 %.716562046, %129
  br i1 %.not1955.not, label %155, label %._crit_edge2050, !llvm.loop !22

._crit_edge2050:                                  ; preds = %155, %._crit_edge2041
  %.10.lcssa = phi double [ %153, %._crit_edge2041 ], [ %158, %155 ]
  %160 = add nuw nsw i64 %storemerge19482055, 1
  %exitcond3149.not = icmp eq i64 %storemerge19482055, %131
  br i1 %exitcond3149.not, label %161, label %132, !llvm.loop !23

161:                                              ; preds = %._crit_edge2050
  %.not19502062 = icmp slt i64 %28, 4
  br i1 %.not19502062, label %.._crit_edge2067_crit_edge, label %.lr.ph2066

.._crit_edge2067_crit_edge:                       ; preds = %.thread, %161
  %.8.lcssa3344 = phi double [ 0.000000e+00, %.thread ], [ %.10.lcssa, %161 ]
  %.pre-phi33273343 = phi i64 [ %.pre3326, %.thread ], [ %129, %161 ]
  %.pre3328 = mul nsw i64 %.pre-phi33273343, %.01631
  br label %._crit_edge2067

.lr.ph2066:                                       ; preds = %161
  %162 = mul nsw i64 %129, %.01631
  %invariant.gep2069 = getelementptr %struct.doublecomplex, ptr %4, i64 %162
  br label %163

163:                                              ; preds = %.lr.ph2066, %163
  %.112064 = phi double [ %.10.lcssa, %.lr.ph2066 ], [ %166, %163 ]
  %.816572063 = phi i64 [ 0, %.lr.ph2066 ], [ %167, %163 ]
  %gep2070 = getelementptr %struct.doublecomplex, ptr %invariant.gep2069, i64 %.816572063
  %164 = tail call double @z_abs(ptr noundef %gep2070) #7
  %165 = fcmp oge double %.112064, %164
  %166 = select i1 %165, double %.112064, double %164
  %167 = add nuw i64 %.816572063, 1
  %exitcond3150.not = icmp eq i64 %167, %129
  br i1 %exitcond3150.not, label %._crit_edge2067, label %163, !llvm.loop !24

._crit_edge2067:                                  ; preds = %163, %.._crit_edge2067_crit_edge
  %.pre-phi3329 = phi i64 [ %.pre3328, %.._crit_edge2067_crit_edge ], [ %162, %163 ]
  %.11.lcssa = phi double [ %.8.lcssa3344, %.._crit_edge2067_crit_edge ], [ %166, %163 ]
  %168 = getelementptr %struct.doublecomplex, ptr %4, i64 %29
  %169 = getelementptr i8, ptr %168, i64 -16
  %170 = getelementptr %struct.doublecomplex, ptr %169, i64 %.pre-phi3329
  %171 = load double, ptr %170, align 8, !tbaa !9
  %172 = fcmp oge double %171, 0.000000e+00
  %173 = fneg double %171
  %174 = select i1 %172, double %171, double %173
  %175 = fcmp oge double %.11.lcssa, %174
  %176 = select i1 %175, double %.11.lcssa, double %174
  %177 = load i64, ptr %3, align 8, !tbaa !5
  %.not1952.not2080 = icmp slt i64 %29, %177
  br i1 %.not1952.not2080, label %.lr.ph2084, label %.loopexit1984

.lr.ph2084:                                       ; preds = %._crit_edge2067
  %.not19532071 = icmp slt i64 %28, 2
  br label %178

178:                                              ; preds = %.lr.ph2084, %._crit_edge2076
  %.122082 = phi double [ %176, %.lr.ph2084 ], [ %.13.lcssa, %._crit_edge2076 ]
  %storemerge19512081 = phi i64 [ %29, %.lr.ph2084 ], [ %185, %._crit_edge2076 ]
  br i1 %.not19532071, label %._crit_edge2076, label %.lr.ph2075

.lr.ph2075:                                       ; preds = %178
  %179 = mul nsw i64 %storemerge19512081, %.01631
  %invariant.gep2078 = getelementptr %struct.doublecomplex, ptr %4, i64 %179
  br label %180

180:                                              ; preds = %.lr.ph2075, %180
  %.132073 = phi double [ %.122082, %.lr.ph2075 ], [ %183, %180 ]
  %.916582072 = phi i64 [ 0, %.lr.ph2075 ], [ %184, %180 ]
  %gep2079 = getelementptr %struct.doublecomplex, ptr %invariant.gep2078, i64 %.916582072
  %181 = tail call double @z_abs(ptr noundef %gep2079) #7
  %182 = fcmp oge double %.132073, %181
  %183 = select i1 %182, double %.132073, double %181
  %184 = add nuw i64 %.916582072, 1
  %exitcond3151.not = icmp eq i64 %184, %29
  br i1 %exitcond3151.not, label %._crit_edge2076, label %180, !llvm.loop !25

._crit_edge2076:                                  ; preds = %180, %178
  %.13.lcssa = phi double [ %.122082, %178 ], [ %183, %180 ]
  %185 = add i64 %storemerge19512081, 1
  %exitcond3152.not = icmp eq i64 %185, %177
  br i1 %exitcond3152.not, label %.loopexit1984, label %178, !llvm.loop !26

186:                                              ; preds = %126
  %.pre3332 = add nsw i64 %29, -1
  br i1 %.not19492054, label %._crit_edge1999, label %.lr.ph1998

.lr.ph1998:                                       ; preds = %186
  %.not19471991 = icmp slt i64 %28, 2
  %187 = tail call i64 @llvm.smax.i64(i64 %29, i64 2)
  %188 = add nsw i64 %187, -2
  br label %189

189:                                              ; preds = %.lr.ph1998, %._crit_edge
  %.141996 = phi double [ 0.000000e+00, %.lr.ph1998 ], [ %.15.lcssa, %._crit_edge ]
  %storemerge19401995 = phi i64 [ 0, %.lr.ph1998 ], [ %196, %._crit_edge ]
  br i1 %.not19471991, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %189
  %190 = mul nsw i64 %storemerge19401995, %.01631
  %invariant.gep = getelementptr %struct.doublecomplex, ptr %4, i64 %190
  br label %191

191:                                              ; preds = %.lr.ph, %191
  %.151993 = phi double [ %.141996, %.lr.ph ], [ %194, %191 ]
  %.1016591992 = phi i64 [ 0, %.lr.ph ], [ %195, %191 ]
  %gep = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %.1016591992
  %192 = tail call double @z_abs(ptr noundef %gep) #7
  %193 = fcmp oge double %.151993, %192
  %194 = select i1 %193, double %.151993, double %192
  %195 = add nuw i64 %.1016591992, 1
  %exitcond.not = icmp eq i64 %195, %29
  br i1 %exitcond.not, label %._crit_edge, label %191, !llvm.loop !27

._crit_edge:                                      ; preds = %191, %189
  %.15.lcssa = phi double [ %.141996, %189 ], [ %194, %191 ]
  %196 = add nuw nsw i64 %storemerge19401995, 1
  %exitcond3143.not = icmp eq i64 %storemerge19401995, %188
  br i1 %exitcond3143.not, label %._crit_edge1999, label %189, !llvm.loop !28

._crit_edge1999:                                  ; preds = %._crit_edge, %186
  %.14.lcssa = phi double [ 0.000000e+00, %186 ], [ %.15.lcssa, %._crit_edge ]
  %197 = mul nsw i64 %.pre3332, %.01631
  %198 = getelementptr %struct.doublecomplex, ptr %4, i64 %197
  %199 = load double, ptr %198, align 8, !tbaa !9
  %200 = fcmp oge double %199, 0.000000e+00
  %201 = fneg double %199
  %202 = select i1 %200, double %199, double %201
  %203 = fcmp oge double %.14.lcssa, %202
  %204 = select i1 %203, double %.14.lcssa, double %202
  %.not1942.not2002 = icmp sgt i64 %28, 3
  br i1 %.not1942.not2002, label %.lr.ph2006, label %._crit_edge2007

.lr.ph2006:                                       ; preds = %._crit_edge1999, %.lr.ph2006
  %.162004 = phi double [ %207, %.lr.ph2006 ], [ %204, %._crit_edge1999 ]
  %.1116602003 = phi i64 [ %208, %.lr.ph2006 ], [ 1, %._crit_edge1999 ]
  %gep2010 = getelementptr %struct.doublecomplex, ptr %198, i64 %.1116602003
  %205 = tail call double @z_abs(ptr noundef %gep2010) #7
  %206 = fcmp oge double %.162004, %205
  %207 = select i1 %206, double %.162004, double %205
  %208 = add nuw nsw i64 %.1116602003, 1
  %exitcond3144.not = icmp eq i64 %208, %29
  br i1 %exitcond3144.not, label %._crit_edge2007, label %.lr.ph2006, !llvm.loop !29

._crit_edge2007:                                  ; preds = %.lr.ph2006, %._crit_edge1999
  %.16.lcssa = phi double [ %204, %._crit_edge1999 ], [ %207, %.lr.ph2006 ]
  %209 = load i64, ptr %3, align 8, !tbaa !5
  %.not1944.not2029 = icmp slt i64 %29, %209
  br i1 %.not1944.not2029, label %.lr.ph2033, label %.loopexit1984

.lr.ph2033:                                       ; preds = %._crit_edge2007, %._crit_edge2025
  %indvars.iv = phi i64 [ %indvars.iv.next, %._crit_edge2025 ], [ 0, %._crit_edge2007 ]
  %.172031 = phi double [ %.19.lcssa, %._crit_edge2025 ], [ %.16.lcssa, %._crit_edge2007 ]
  %storemerge19432030 = phi i64 [ %238, %._crit_edge2025 ], [ %29, %._crit_edge2007 ]
  %210 = sub i64 %29, %storemerge19432030
  %.not19452011 = icmp sgt i64 %210, -1
  %.pre3334 = mul nsw i64 %storemerge19432030, %.01631
  br i1 %.not19452011, label %._crit_edge2016, label %.lr.ph2015

.lr.ph2015:                                       ; preds = %.lr.ph2033
  %invariant.gep2018 = getelementptr %struct.doublecomplex, ptr %4, i64 %.pre3334
  br label %211

211:                                              ; preds = %.lr.ph2015, %211
  %.182013 = phi double [ %.172031, %.lr.ph2015 ], [ %214, %211 ]
  %.1216612012 = phi i64 [ 0, %.lr.ph2015 ], [ %215, %211 ]
  %gep2019 = getelementptr %struct.doublecomplex, ptr %invariant.gep2018, i64 %.1216612012
  %212 = tail call double @z_abs(ptr noundef %gep2019) #7
  %213 = fcmp oge double %.182013, %212
  %214 = select i1 %213, double %.182013, double %212
  %215 = add nuw i64 %.1216612012, 1
  %exitcond3145.not = icmp eq i64 %215, %indvars.iv
  br i1 %exitcond3145.not, label %._crit_edge2016, label %211, !llvm.loop !30

._crit_edge2016:                                  ; preds = %211, %.lr.ph2033
  %.18.lcssa = phi double [ %.172031, %.lr.ph2033 ], [ %214, %211 ]
  %216 = sub nsw i64 %storemerge19432030, %29
  %217 = getelementptr %struct.doublecomplex, ptr %4, i64 %216
  %218 = getelementptr %struct.doublecomplex, ptr %217, i64 %.pre3334
  %219 = load double, ptr %218, align 8, !tbaa !9
  %220 = fcmp oge double %219, 0.000000e+00
  %221 = fneg double %219
  %222 = select i1 %220, double %219, double %221
  %223 = fcmp oge double %.18.lcssa, %222
  %224 = select i1 %223, double %.18.lcssa, double %222
  %225 = getelementptr i8, ptr %218, i64 16
  %226 = load double, ptr %225, align 8, !tbaa !9
  %227 = fcmp oge double %226, 0.000000e+00
  %228 = fneg double %226
  %229 = select i1 %227, double %226, double %228
  %230 = fcmp oge double %224, %229
  %231 = select i1 %230, double %224, double %229
  %232 = add nsw i64 %216, 2
  %.not19462020.not = icmp slt i64 %232, %29
  br i1 %.not19462020.not, label %.lr.ph2024, label %._crit_edge2025

.lr.ph2024:                                       ; preds = %._crit_edge2016
  %invariant.gep2027 = getelementptr %struct.doublecomplex, ptr %4, i64 %.pre3334
  br label %233

233:                                              ; preds = %.lr.ph2024, %233
  %.192022 = phi double [ %231, %.lr.ph2024 ], [ %236, %233 ]
  %.1316622021 = phi i64 [ %232, %.lr.ph2024 ], [ %237, %233 ]
  %gep2028 = getelementptr %struct.doublecomplex, ptr %invariant.gep2027, i64 %.1316622021
  %234 = tail call double @z_abs(ptr noundef %gep2028) #7
  %235 = fcmp oge double %.192022, %234
  %236 = select i1 %235, double %.192022, double %234
  %237 = add nsw i64 %.1316622021, 1
  %.not1946.not = icmp slt i64 %.1316622021, %.pre3332
  br i1 %.not1946.not, label %233, label %._crit_edge2025, !llvm.loop !31

._crit_edge2025:                                  ; preds = %233, %._crit_edge2016
  %.19.lcssa = phi double [ %231, %._crit_edge2016 ], [ %236, %233 ]
  %238 = add i64 %storemerge19432030, 1
  %indvars.iv.next = add i64 %indvars.iv, 1
  %exitcond3146.not = icmp eq i64 %238, %209
  br i1 %exitcond3146.not, label %.loopexit1984, label %.lr.ph2033, !llvm.loop !32

239:                                              ; preds = %26
  br i1 %.not, label %240, label %349

240:                                              ; preds = %239
  br i1 %.not1796.not.not.not.not.not.not.not.not, label %241, label %287

241:                                              ; preds = %240
  %242 = load double, ptr %4, align 8, !tbaa !9
  %243 = fcmp oge double %242, 0.000000e+00
  %244 = fneg double %242
  %245 = select i1 %243, double %242, double %244
  %246 = fcmp ole double %245, 0.000000e+00
  %247 = select i1 %246, double 0.000000e+00, double %245
  %248 = getelementptr inbounds i8, ptr %4, i64 16
  %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
  %253 = fcmp oge double %247, %252
  %254 = select i1 %253, double %247, double %252
  %.not19352323 = icmp slt i64 %27, 2
  br i1 %.not19352323, label %.loopexit1984, label %.lr.ph2327

.lr.ph2327:                                       ; preds = %241, %.lr.ph2327
  %.202325 = phi double [ %257, %.lr.ph2327 ], [ %254, %241 ]
  %.1416632324 = phi i64 [ %258, %.lr.ph2327 ], [ 2, %241 ]
  %gep2331 = getelementptr %struct.doublecomplex, ptr %4, i64 %.1416632324
  %255 = tail call double @z_abs(ptr noundef %gep2331) #7
  %256 = fcmp oge double %.202325, %255
  %257 = select i1 %256, double %.202325, double %255
  %258 = add nuw i64 %.1416632324, 1
  %exitcond3185.not = icmp eq i64 %.1416632324, %27
  br i1 %exitcond3185.not, label %._crit_edge2328, label %.lr.ph2327, !llvm.loop !33

._crit_edge2328:                                  ; preds = %.lr.ph2327
  %.not1937.not2353 = icmp sgt i64 %28, 3
  br i1 %.not1937.not2353, label %.lr.ph2357, label %.loopexit1984

.lr.ph2357:                                       ; preds = %._crit_edge2328
  %259 = add i64 %.01631, 1
  %invariant.gep3461 = getelementptr i8, ptr %4, i64 16
  br label %.lr.ph2336

.lr.ph2336:                                       ; preds = %._crit_edge2346, %.lr.ph2357
  %.212355 = phi double [ %257, %.lr.ph2357 ], [ %.23.lcssa, %._crit_edge2346 ]
  %storemerge19362354 = phi i64 [ 1, %.lr.ph2357 ], [ %286, %._crit_edge2346 ]
  %260 = mul nsw i64 %storemerge19362354, %.01631
  %invariant.gep2339 = getelementptr %struct.doublecomplex, ptr %4, i64 %260
  br label %261

261:                                              ; preds = %.lr.ph2336, %261
  %.222334 = phi double [ %.212355, %.lr.ph2336 ], [ %264, %261 ]
  %.1516642333 = phi i64 [ 0, %.lr.ph2336 ], [ %265, %261 ]
  %gep2340 = getelementptr %struct.doublecomplex, ptr %invariant.gep2339, i64 %.1516642333
  %262 = tail call double @z_abs(ptr noundef %gep2340) #7
  %263 = fcmp oge double %.222334, %262
  %264 = select i1 %263, double %.222334, double %262
  %265 = add nuw nsw i64 %.1516642333, 1
  %exitcond3186.not = icmp eq i64 %265, %storemerge19362354
  br i1 %exitcond3186.not, label %._crit_edge2337, label %261, !llvm.loop !34

._crit_edge2337:                                  ; preds = %261
  %gep3462 = getelementptr %struct.doublecomplex, ptr %invariant.gep3461, i64 %storemerge19362354
  %.phi.trans.insert3247 = getelementptr %struct.doublecomplex, ptr %gep3462, i64 %260
  %.pre3248 = load double, ptr %.phi.trans.insert3247, align 8, !tbaa !9
  %266 = mul i64 %storemerge19362354, %259
  %267 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %266
  %268 = load double, ptr %267, align 8, !tbaa !9
  %269 = fcmp oge double %268, 0.000000e+00
  %270 = fneg double %268
  %271 = select i1 %269, double %268, double %270
  %272 = fcmp oge double %264, %271
  %273 = select i1 %272, double %264, double %271
  %274 = fcmp oge double %.pre3248, 0.000000e+00
  %275 = fneg double %.pre3248
  %276 = select i1 %274, double %.pre3248, double %275
  %277 = fcmp oge double %273, %276
  %278 = select i1 %277, double %273, double %276
  %279 = load i64, ptr %3, align 8, !tbaa !5
  %280 = add nuw nsw i64 %storemerge19362354, 2
  %.not19392341 = icmp sgt i64 %280, %279
  br i1 %.not19392341, label %._crit_edge2346, label %.lr.ph2345

.lr.ph2345:                                       ; preds = %._crit_edge2337
  %invariant.gep2348 = getelementptr %struct.doublecomplex, ptr %4, i64 %260
  br label %281

281:                                              ; preds = %.lr.ph2345, %281
  %.232343 = phi double [ %278, %.lr.ph2345 ], [ %284, %281 ]
  %.1616652342 = phi i64 [ %280, %.lr.ph2345 ], [ %285, %281 ]
  %gep2349 = getelementptr %struct.doublecomplex, ptr %invariant.gep2348, i64 %.1616652342
  %282 = tail call double @z_abs(ptr noundef %gep2349) #7
  %283 = fcmp oge double %.232343, %282
  %284 = select i1 %283, double %.232343, double %282
  %285 = add nuw nsw i64 %.1616652342, 1
  %.not1939.not = icmp slt i64 %.1616652342, %279
  br i1 %.not1939.not, label %281, label %._crit_edge2346, !llvm.loop !35

._crit_edge2346:                                  ; preds = %281, %._crit_edge2337
  %.23.lcssa = phi double [ %278, %._crit_edge2337 ], [ %284, %281 ]
  %286 = add nuw nsw i64 %storemerge19362354, 1
  %exitcond3187.not = icmp eq i64 %286, %29
  br i1 %exitcond3187.not, label %.loopexit1984, label %.lr.ph2336, !llvm.loop !36

287:                                              ; preds = %240
  %.not19312304 = icmp slt i64 %27, 3
  br i1 %.not19312304, label %323, label %.lr.ph2308

.lr.ph2308:                                       ; preds = %287
  %288 = tail call i64 @llvm.smax.i64(i64 %29, i64 2)
  %289 = add nsw i64 %288, -1
  br label %290

290:                                              ; preds = %.lr.ph2308, %._crit_edge2298
  %indvars.iv3179 = phi i64 [ %29, %.lr.ph2308 ], [ %indvars.iv.next3180, %._crit_edge2298 ]
  %.242306 = phi double [ 0.000000e+00, %.lr.ph2308 ], [ %.26.lcssa, %._crit_edge2298 ]
  %storemerge19302305 = phi i64 [ 0, %.lr.ph2308 ], [ %322, %._crit_edge2298 ]
  %291 = add nsw i64 %storemerge19302305, -1
  %292 = add i64 %291, %29
  %.not19332284 = icmp slt i64 %292, 0
  %.pre3310 = mul nsw i64 %storemerge19302305, %.01631
  br i1 %.not19332284, label %._crit_edge2289, label %.lr.ph2288

.lr.ph2288:                                       ; preds = %290
  %invariant.gep2291 = getelementptr %struct.doublecomplex, ptr %4, i64 %.pre3310
  br label %293

293:                                              ; preds = %.lr.ph2288, %293
  %.252286 = phi double [ %.242306, %.lr.ph2288 ], [ %296, %293 ]
  %.1716662285 = phi i64 [ 0, %.lr.ph2288 ], [ %297, %293 ]
  %gep2292 = getelementptr %struct.doublecomplex, ptr %invariant.gep2291, i64 %.1716662285
  %294 = tail call double @z_abs(ptr noundef %gep2292) #7
  %295 = fcmp oge double %.252286, %294
  %296 = select i1 %295, double %.252286, double %294
  %297 = add nuw i64 %.1716662285, 1
  %exitcond3181.not = icmp eq i64 %297, %indvars.iv3179
  br i1 %exitcond3181.not, label %._crit_edge2289, label %293, !llvm.loop !37

._crit_edge2289:                                  ; preds = %293, %290
  %.25.lcssa = phi double [ %.242306, %290 ], [ %296, %293 ]
  %298 = add nsw i64 %storemerge19302305, %29
  %299 = getelementptr %struct.doublecomplex, ptr %4, i64 %298
  %300 = getelementptr %struct.doublecomplex, ptr %299, i64 %.pre3310
  %301 = load double, ptr %300, align 8, !tbaa !9
  %302 = fcmp oge double %301, 0.000000e+00
  %303 = fneg double %301
  %304 = select i1 %302, double %301, double %303
  %305 = fcmp oge double %.25.lcssa, %304
  %306 = select i1 %305, double %.25.lcssa, double %304
  %307 = getelementptr %struct.doublecomplex, ptr %4, i64 %.pre3310
  %308 = getelementptr %struct.doublecomplex, ptr %307, i64 %298
  %309 = getelementptr i8, ptr %308, i64 16
  %310 = load double, ptr %309, align 8, !tbaa !9
  %311 = fcmp oge double %310, 0.000000e+00
  %312 = fneg double %310
  %313 = select i1 %311, double %310, double %312
  %314 = fcmp oge double %306, %313
  %315 = select i1 %314, double %306, double %313
  %316 = load i64, ptr %3, align 8, !tbaa !5
  %317 = add nsw i64 %298, 2
  %.not19342293 = icmp sgt i64 %317, %316
  br i1 %.not19342293, label %._crit_edge2298, label %.lr.ph2297

.lr.ph2297:                                       ; preds = %._crit_edge2289, %.lr.ph2297
  %.262295 = phi double [ %320, %.lr.ph2297 ], [ %315, %._crit_edge2289 ]
  %.1816672294 = phi i64 [ %321, %.lr.ph2297 ], [ %317, %._crit_edge2289 ]
  %gep2301 = getelementptr %struct.doublecomplex, ptr %307, i64 %.1816672294
  %318 = tail call double @z_abs(ptr noundef %gep2301) #7
  %319 = fcmp oge double %.262295, %318
  %320 = select i1 %319, double %.262295, double %318
  %321 = add nsw i64 %.1816672294, 1
  %.not1934.not = icmp slt i64 %.1816672294, %316
  br i1 %.not1934.not, label %.lr.ph2297, label %._crit_edge2298, !llvm.loop !38

._crit_edge2298:                                  ; preds = %.lr.ph2297, %._crit_edge2289
  %.26.lcssa = phi double [ %315, %._crit_edge2289 ], [ %320, %.lr.ph2297 ]
  %322 = add nuw nsw i64 %storemerge19302305, 1
  %indvars.iv.next3180 = add i64 %indvars.iv3179, 1
  %exitcond3183.not = icmp eq i64 %322, %289
  br i1 %exitcond3183.not, label %._crit_edge2309, label %290, !llvm.loop !39

._crit_edge2309:                                  ; preds = %._crit_edge2298
  %.pre3243 = load i64, ptr %3, align 8, !tbaa !5
  br label %323

323:                                              ; preds = %._crit_edge2309, %287
  %324 = phi i64 [ %.pre3243, %._crit_edge2309 ], [ %27, %287 ]
  %325 = phi i64 [ %289, %._crit_edge2309 ], [ 0, %287 ]
  %.24.lcssa = phi double [ %.26.lcssa, %._crit_edge2309 ], [ 0.000000e+00, %287 ]
  %.not19322313 = icmp slt i64 %324, 2
  %.pre3308 = mul nsw i64 %325, %.01631
  br i1 %.not19322313, label %._crit_edge2318, label %.lr.ph2317

.lr.ph2317:                                       ; preds = %323
  %invariant.gep2321 = getelementptr %struct.doublecomplex, ptr %4, i64 %.pre3308
  %326 = add nsw i64 %324, -1
  br label %327

327:                                              ; preds = %.lr.ph2317, %327
  %.272315 = phi double [ %.24.lcssa, %.lr.ph2317 ], [ %330, %327 ]
  %.1916682314 = phi i64 [ 0, %.lr.ph2317 ], [ %331, %327 ]
  %gep2322 = getelementptr %struct.doublecomplex, ptr %invariant.gep2321, i64 %.1916682314
  %328 = tail call double @z_abs(ptr noundef %gep2322) #7
  %329 = fcmp oge double %.272315, %328
  %330 = select i1 %329, double %.272315, double %328
  %331 = add nuw i64 %.1916682314, 1
  %exitcond3184.not = icmp eq i64 %331, %326
  br i1 %exitcond3184.not, label %._crit_edge2318.loopexit, label %327, !llvm.loop !40

._crit_edge2318.loopexit:                         ; preds = %327
  %.pre3244 = load i64, ptr %3, align 8, !tbaa !5
  br label %._crit_edge2318

._crit_edge2318:                                  ; preds = %323, %._crit_edge2318.loopexit
  %332 = phi i64 [ %.pre3244, %._crit_edge2318.loopexit ], [ %324, %323 ]
  %.191668.lcssa = phi i64 [ %326, %._crit_edge2318.loopexit ], [ 0, %323 ]
  %.27.lcssa = phi double [ %330, %._crit_edge2318.loopexit ], [ %.24.lcssa, %323 ]
  %333 = getelementptr %struct.doublecomplex, ptr %4, i64 %.191668.lcssa
  %334 = getelementptr %struct.doublecomplex, ptr %333, i64 %.pre3308
  %335 = load double, ptr %334, align 8, !tbaa !9
  %336 = fcmp oge double %335, 0.000000e+00
  %337 = fneg double %335
  %338 = select i1 %336, double %335, double %337
  %339 = fcmp oge double %.27.lcssa, %338
  %340 = select i1 %339, double %.27.lcssa, double %338
  %341 = getelementptr %struct.doublecomplex, ptr %4, i64 %332
  %342 = getelementptr %struct.doublecomplex, ptr %341, i64 %.pre3308
  %343 = load double, ptr %342, align 8, !tbaa !9
  %344 = fcmp oge double %343, 0.000000e+00
  %345 = fneg double %343
  %346 = select i1 %344, double %343, double %345
  %347 = fcmp oge double %340, %346
  %348 = select i1 %347, double %340, double %346
  br label %.loopexit1984

349:                                              ; preds = %239
  br i1 %.not1796.not.not.not.not.not.not.not.not, label %350, label %.preheader1987

.preheader1987:                                   ; preds = %349
  %.not1913.not2167 = icmp sgt i64 %27, 0
  br i1 %.not1913.not2167, label %.lr.ph2170, label %._crit_edge2171

.lr.ph2170:                                       ; preds = %.preheader1987
  %.not19202158 = icmp slt i64 %28, 2
  %smax3165 = tail call i64 @llvm.smax.i64(i64 %29, i64 1)
  br label %414

350:                                              ; preds = %349
  %351 = load double, ptr %4, align 8, !tbaa !9
  %352 = fcmp oge double %351, 0.000000e+00
  %353 = fneg double %351
  %354 = select i1 %352, double %351, double %353
  %355 = fcmp ole double %354, 0.000000e+00
  %356 = select i1 %355, double 0.000000e+00, double %354
  %.not1921.not2219 = icmp sgt i64 %27, 2
  br i1 %.not1921.not2219, label %.lr.ph2223, label %.._crit_edge2261_crit_edge

.lr.ph2223:                                       ; preds = %350
  %smax3170 = tail call i64 @llvm.smax.i64(i64 %29, i64 2)
  br label %357

357:                                              ; preds = %.lr.ph2223, %357
  %.282221 = phi double [ %356, %.lr.ph2223 ], [ %360, %357 ]
  %.2016692220 = phi i64 [ 1, %.lr.ph2223 ], [ %361, %357 ]
  %gep2227 = getelementptr %struct.doublecomplex, ptr %4, i64 %.2016692220
  %358 = tail call double @z_abs(ptr noundef %gep2227) #7
  %359 = fcmp oge double %.282221, %358
  %360 = select i1 %359, double %.282221, double %358
  %361 = add nuw nsw i64 %.2016692220, 1
  %exitcond3171.not = icmp eq i64 %361, %smax3170
  br i1 %exitcond3171.not, label %._crit_edge2224, label %357, !llvm.loop !41

._crit_edge2224:                                  ; preds = %357
  %.not1923.not2248 = icmp sgt i64 %28, 3
  br i1 %.not1923.not2248, label %.lr.ph2252, label %.._crit_edge2261_crit_edge

.lr.ph2252:                                       ; preds = %._crit_edge2224
  %362 = add i64 %.01631, 1
  %363 = add nsw i64 %29, -1
  %invariant.gep3459 = getelementptr i8, ptr %4, i64 -16
  br label %364

364:                                              ; preds = %.lr.ph2252, %._crit_edge2242
  %indvars.iv3172 = phi i64 [ 0, %.lr.ph2252 ], [ %indvars.iv.next3173, %._crit_edge2242 ]
  %.292250 = phi double [ %360, %.lr.ph2252 ], [ %.31.lcssa, %._crit_edge2242 ]
  %storemerge19222249 = phi i64 [ 1, %.lr.ph2252 ], [ %389, %._crit_edge2242 ]
  %.not19282228 = icmp ult i64 %storemerge19222249, 2
  %.pre3312 = mul nsw i64 %storemerge19222249, %.01631
  br i1 %.not19282228, label %._crit_edge2233, label %.lr.ph2232

.lr.ph2232:                                       ; preds = %364
  %invariant.gep2235 = getelementptr %struct.doublecomplex, ptr %4, i64 %.pre3312
  br label %365

365:                                              ; preds = %.lr.ph2232, %365
  %.302230 = phi double [ %.292250, %.lr.ph2232 ], [ %368, %365 ]
  %.2116702229 = phi i64 [ 0, %.lr.ph2232 ], [ %369, %365 ]
  %gep2236 = getelementptr %struct.doublecomplex, ptr %invariant.gep2235, i64 %.2116702229
  %366 = tail call double @z_abs(ptr noundef %gep2236) #7
  %367 = fcmp oge double %.302230, %366
  %368 = select i1 %367, double %.302230, double %366
  %369 = add nuw nsw i64 %.2116702229, 1
  %exitcond3174.not = icmp eq i64 %369, %indvars.iv3172
  br i1 %exitcond3174.not, label %._crit_edge2233, label %365, !llvm.loop !42

._crit_edge2233:                                  ; preds = %365, %364
  %.30.lcssa = phi double [ %.292250, %364 ], [ %368, %365 ]
  %gep3460 = getelementptr %struct.doublecomplex, ptr %invariant.gep3459, i64 %storemerge19222249
  %370 = getelementptr %struct.doublecomplex, ptr %gep3460, i64 %.pre3312
  %371 = load double, ptr %370, align 8, !tbaa !9
  %372 = fcmp oge double %371, 0.000000e+00
  %373 = fneg double %371
  %374 = select i1 %372, double %371, double %373
  %375 = fcmp oge double %.30.lcssa, %374
  %376 = select i1 %375, double %.30.lcssa, double %374
  %377 = mul i64 %storemerge19222249, %362
  %378 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %377
  %379 = load double, ptr %378, align 8, !tbaa !9
  %380 = fcmp oge double %379, 0.000000e+00
  %381 = fneg double %379
  %382 = select i1 %380, double %379, double %381
  %383 = fcmp oge double %376, %382
  %384 = select i1 %383, double %376, double %382
  %.not1929.not2237 = icmp slt i64 %storemerge19222249, %363
  br i1 %.not1929.not2237, label %.lr.ph2241, label %._crit_edge2242

.lr.ph2241:                                       ; preds = %._crit_edge2233
  %invariant.gep2244 = getelementptr %struct.doublecomplex, ptr %4, i64 %.pre3312
  br label %385

385:                                              ; preds = %.lr.ph2241, %385
  %.312239 = phi double [ %384, %.lr.ph2241 ], [ %388, %385 ]
  %.221671.in2238 = phi i64 [ %storemerge19222249, %.lr.ph2241 ], [ %.221671, %385 ]
  %.221671 = add nuw nsw i64 %.221671.in2238, 1
  %gep2245 = getelementptr %struct.doublecomplex, ptr %invariant.gep2244, i64 %.221671
  %386 = tail call double @z_abs(ptr noundef %gep2245) #7
  %387 = fcmp oge double %.312239, %386
  %388 = select i1 %387, double %.312239, double %386
  %.not1929.not = icmp slt i64 %.221671, %363
  br i1 %.not1929.not, label %385, label %._crit_edge2242, !llvm.loop !43

._crit_edge2242:                                  ; preds = %385, %._crit_edge2233
  %.31.lcssa = phi double [ %384, %._crit_edge2233 ], [ %388, %385 ]
  %389 = add nuw nsw i64 %storemerge19222249, 1
  %indvars.iv.next3173 = add nuw nsw i64 %indvars.iv3172, 1
  %exitcond3175.not = icmp eq i64 %indvars.iv.next3173, %363
  br i1 %exitcond3175.not, label %.lr.ph2260, label %364, !llvm.loop !44

.._crit_edge2261_crit_edge:                       ; preds = %350, %._crit_edge2224
  %.29.lcssa3352 = phi double [ %360, %._crit_edge2224 ], [ %356, %350 ]
  %.pre3314 = mul nsw i64 %29, %.01631
  br label %._crit_edge2261

.lr.ph2260:                                       ; preds = %._crit_edge2242
  %390 = mul nsw i64 %29, %.01631
  %invariant.gep2263 = getelementptr %struct.doublecomplex, ptr %4, i64 %390
  %391 = add nsw i64 %29, -2
  br label %392

392:                                              ; preds = %.lr.ph2260, %392
  %.322258 = phi double [ %.31.lcssa, %.lr.ph2260 ], [ %395, %392 ]
  %.2316722257 = phi i64 [ 0, %.lr.ph2260 ], [ %396, %392 ]
  %gep2264 = getelementptr %struct.doublecomplex, ptr %invariant.gep2263, i64 %.2316722257
  %393 = tail call double @z_abs(ptr noundef %gep2264) #7
  %394 = fcmp oge double %.322258, %393
  %395 = select i1 %394, double %.322258, double %393
  %396 = add nuw i64 %.2316722257, 1
  %exitcond3176.not = icmp eq i64 %.2316722257, %391
  br i1 %exitcond3176.not, label %._crit_edge2261, label %392, !llvm.loop !45

._crit_edge2261:                                  ; preds = %392, %.._crit_edge2261_crit_edge
  %.pre-phi3315 = phi i64 [ %.pre3314, %.._crit_edge2261_crit_edge ], [ %390, %392 ]
  %.32.lcssa = phi double [ %.29.lcssa3352, %.._crit_edge2261_crit_edge ], [ %395, %392 ]
  %397 = getelementptr %struct.doublecomplex, ptr %4, i64 %29
  %398 = getelementptr i8, ptr %397, i64 -16
  %399 = getelementptr %struct.doublecomplex, ptr %398, i64 %.pre-phi3315
  %400 = load double, ptr %399, align 8, !tbaa !9
  %401 = fcmp oge double %400, 0.000000e+00
  %402 = fneg double %400
  %403 = select i1 %401, double %400, double %402
  %404 = fcmp oge double %.32.lcssa, %403
  %405 = select i1 %404, double %.32.lcssa, double %403
  %406 = load i64, ptr %3, align 8, !tbaa !5
  %.not1926.not2277 = icmp slt i64 %29, %406
  br i1 %.not1926.not2277, label %.lr.ph2281, label %.loopexit1984

.lr.ph2281:                                       ; preds = %._crit_edge2261
  %.not19272265 = icmp slt i64 %28, 2
  br label %407

407:                                              ; preds = %.lr.ph2281, %._crit_edge2270
  %storemerge19252279.in = phi i64 [ %29, %.lr.ph2281 ], [ %storemerge19252279, %._crit_edge2270 ]
  %.332278 = phi double [ %405, %.lr.ph2281 ], [ %.34.lcssa, %._crit_edge2270 ]
  %storemerge19252279 = add i64 %storemerge19252279.in, 1
  br i1 %.not19272265, label %._crit_edge2270, label %.lr.ph2269

.lr.ph2269:                                       ; preds = %407
  %408 = mul nsw i64 %storemerge19252279, %.01631
  %invariant.gep2272 = getelementptr %struct.doublecomplex, ptr %4, i64 %408
  br label %409

409:                                              ; preds = %.lr.ph2269, %409
  %.342267 = phi double [ %.332278, %.lr.ph2269 ], [ %412, %409 ]
  %.2416732266 = phi i64 [ 0, %.lr.ph2269 ], [ %413, %409 ]
  %gep2273 = getelementptr %struct.doublecomplex, ptr %invariant.gep2272, i64 %.2416732266
  %410 = tail call double @z_abs(ptr noundef %gep2273) #7
  %411 = fcmp oge double %.342267, %410
  %412 = select i1 %411, double %.342267, double %410
  %413 = add nuw i64 %.2416732266, 1
  %exitcond3177.not = icmp eq i64 %413, %29
  br i1 %exitcond3177.not, label %._crit_edge2270, label %409, !llvm.loop !46

._crit_edge2270:                                  ; preds = %409, %407
  %.34.lcssa = phi double [ %.332278, %407 ], [ %412, %409 ]
  %exitcond3178.not = icmp eq i64 %storemerge19252279, %406
  br i1 %exitcond3178.not, label %.loopexit1984, label %407, !llvm.loop !47

414:                                              ; preds = %.lr.ph2170, %._crit_edge2163
  %.352169 = phi double [ 0.000000e+00, %.lr.ph2170 ], [ %.36.lcssa, %._crit_edge2163 ]
  %storemerge19122168 = phi i64 [ 0, %.lr.ph2170 ], [ %421, %._crit_edge2163 ]
  br i1 %.not19202158, label %._crit_edge2163, label %.lr.ph2162

.lr.ph2162:                                       ; preds = %414
  %415 = mul nsw i64 %storemerge19122168, %.01631
  %invariant.gep2165 = getelementptr %struct.doublecomplex, ptr %4, i64 %415
  br label %416

416:                                              ; preds = %.lr.ph2162, %416
  %.362160 = phi double [ %.352169, %.lr.ph2162 ], [ %419, %416 ]
  %.2516742159 = phi i64 [ 0, %.lr.ph2162 ], [ %420, %416 ]
  %gep2166 = getelementptr %struct.doublecomplex, ptr %invariant.gep2165, i64 %.2516742159
  %417 = tail call double @z_abs(ptr noundef %gep2166) #7
  %418 = fcmp oge double %.362160, %417
  %419 = select i1 %418, double %.362160, double %417
  %420 = add nuw i64 %.2516742159, 1
  %exitcond3164.not = icmp eq i64 %420, %29
  br i1 %exitcond3164.not, label %._crit_edge2163, label %416, !llvm.loop !48

._crit_edge2163:                                  ; preds = %416, %414
  %.36.lcssa = phi double [ %.352169, %414 ], [ %419, %416 ]
  %421 = add nuw nsw i64 %storemerge19122168, 1
  %exitcond3166.not = icmp eq i64 %421, %smax3165
  br i1 %exitcond3166.not, label %._crit_edge2171, label %414, !llvm.loop !49

._crit_edge2171:                                  ; preds = %._crit_edge2163, %.preheader1987
  %.35.lcssa = phi double [ 0.000000e+00, %.preheader1987 ], [ %.36.lcssa, %._crit_edge2163 ]
  %422 = mul nsw i64 %29, %.01631
  %423 = getelementptr %struct.doublecomplex, ptr %4, i64 %422
  %424 = load double, ptr %423, align 8, !tbaa !9
  %425 = fcmp oge double %424, 0.000000e+00
  %426 = fneg double %424
  %427 = select i1 %425, double %424, double %426
  %428 = fcmp oge double %.35.lcssa, %427
  %429 = select i1 %428, double %.35.lcssa, double %427
  %.not1914.not2174 = icmp sgt i64 %28, 3
  br i1 %.not1914.not2174, label %.lr.ph2178, label %._crit_edge2179

.lr.ph2178:                                       ; preds = %._crit_edge2171, %.lr.ph2178
  %.372176 = phi double [ %432, %.lr.ph2178 ], [ %429, %._crit_edge2171 ]
  %.2616752175 = phi i64 [ %433, %.lr.ph2178 ], [ 1, %._crit_edge2171 ]
  %gep2182 = getelementptr %struct.doublecomplex, ptr %423, i64 %.2616752175
  %430 = tail call double @z_abs(ptr noundef %gep2182) #7
  %431 = fcmp oge double %.372176, %430
  %432 = select i1 %431, double %.372176, double %430
  %433 = add nuw nsw i64 %.2616752175, 1
  %exitcond3167.not = icmp eq i64 %433, %29
  br i1 %exitcond3167.not, label %._crit_edge2179, label %.lr.ph2178, !llvm.loop !50

._crit_edge2179:                                  ; preds = %.lr.ph2178, %._crit_edge2171
  %.37.lcssa = phi double [ %429, %._crit_edge2171 ], [ %432, %.lr.ph2178 ]
  %434 = load i64, ptr %3, align 8, !tbaa !5
  %435 = add nsw i64 %434, -1
  %.not1916.not2202 = icmp slt i64 %29, %435
  br i1 %.not1916.not2202, label %.lr.ph2206, label %466

.lr.ph2206:                                       ; preds = %._crit_edge2179
  %436 = xor i64 %29, -1
  %437 = add nsw i64 %29, -1
  %invariant.gep3457 = getelementptr %struct.doublecomplex, ptr %4, i64 %436
  br label %438

.loopexit1986:                                    ; preds = %462, %._crit_edge2188
  %.40.lcssa = phi double [ %461, %._crit_edge2188 ], [ %465, %462 ]
  %.not1916.not = icmp slt i64 %storemerge1915.in2209, %435
  br i1 %.not1916.not, label %438, label %._crit_edge2207, !llvm.loop !51

438:                                              ; preds = %.lr.ph2206, %.loopexit1986
  %storemerge1915.in2209.in = phi i64 [ %29, %.lr.ph2206 ], [ %storemerge1915.in2209, %.loopexit1986 ]
  %.382203 = phi double [ %.37.lcssa, %.lr.ph2206 ], [ %.40.lcssa, %.loopexit1986 ]
  %storemerge1915.in2209 = add nsw i64 %storemerge1915.in2209.in, 1
  %439 = sub i64 %29, %storemerge1915.in2209.in
  %.not19182183 = icmp sgt i64 %439, -1
  %.pre3316 = mul nsw i64 %storemerge1915.in2209, %.01631
  br i1 %.not19182183, label %._crit_edge2188, label %.lr.ph2187

.lr.ph2187:                                       ; preds = %438
  %invariant.gep2190 = getelementptr %struct.doublecomplex, ptr %4, i64 %.pre3316
  %440 = sub i64 %storemerge1915.in2209.in, %29
  br label %441

441:                                              ; preds = %.lr.ph2187, %441
  %.392185 = phi double [ %.382203, %.lr.ph2187 ], [ %444, %441 ]
  %.2716762184 = phi i64 [ 0, %.lr.ph2187 ], [ %445, %441 ]
  %gep2191 = getelementptr %struct.doublecomplex, ptr %invariant.gep2190, i64 %.2716762184
  %442 = tail call double @z_abs(ptr noundef %gep2191) #7
  %443 = fcmp oge double %.392185, %442
  %444 = select i1 %443, double %.392185, double %442
  %445 = add nuw i64 %.2716762184, 1
  %exitcond3168.not = icmp eq i64 %445, %440
  br i1 %exitcond3168.not, label %._crit_edge2188, label %441, !llvm.loop !52

._crit_edge2188:                                  ; preds = %441, %438
  %.39.lcssa = phi double [ %.382203, %438 ], [ %444, %441 ]
  %gep3458 = getelementptr %struct.doublecomplex, ptr %invariant.gep3457, i64 %storemerge1915.in2209
  %446 = getelementptr %struct.doublecomplex, ptr %gep3458, i64 %.pre3316
  %447 = load double, ptr %446, align 8, !tbaa !9
  %448 = fcmp oge double %447, 0.000000e+00
  %449 = fneg double %447
  %450 = select i1 %448, double %447, double %449
  %451 = fcmp oge double %.39.lcssa, %450
  %452 = select i1 %451, double %.39.lcssa, double %450
  %453 = sub nsw i64 %storemerge1915.in2209, %29
  %454 = getelementptr %struct.doublecomplex, ptr %4, i64 %453
  %455 = getelementptr %struct.doublecomplex, ptr %454, i64 %.pre3316
  %456 = load double, ptr %455, align 8, !tbaa !9
  %457 = fcmp oge double %456, 0.000000e+00
  %458 = fneg double %456
  %459 = select i1 %457, double %456, double %458
  %460 = fcmp oge double %452, %459
  %461 = select i1 %460, double %452, double %459
  %.not1919.not2192 = icmp slt i64 %453, %437
  br i1 %.not1919.not2192, label %.lr.ph2196, label %.loopexit1986

.lr.ph2196:                                       ; preds = %._crit_edge2188
  %invariant.gep2198 = getelementptr %struct.doublecomplex, ptr %4, i64 %.pre3316
  br label %462

462:                                              ; preds = %.lr.ph2196, %462
  %.402194 = phi double [ %461, %.lr.ph2196 ], [ %465, %462 ]
  %.281677.in2193 = phi i64 [ %453, %.lr.ph2196 ], [ %.281677, %462 ]
  %.281677 = add nsw i64 %.281677.in2193, 1
  %gep2199 = getelementptr %struct.doublecomplex, ptr %invariant.gep2198, i64 %.281677
  %463 = tail call double @z_abs(ptr noundef %gep2199) #7
  %464 = fcmp oge double %.402194, %463
  %465 = select i1 %464, double %.402194, double %463
  %.not1919.not = icmp slt i64 %.281677, %437
  br i1 %.not1919.not, label %462, label %.loopexit1986, !llvm.loop !53

._crit_edge2207:                                  ; preds = %.loopexit1986
  %.pre3242 = load i64, ptr %3, align 8, !tbaa !5
  br label %466

466:                                              ; preds = %._crit_edge2207, %._crit_edge2179
  %467 = phi i64 [ %.pre3242, %._crit_edge2207 ], [ %434, %._crit_edge2179 ]
  %.38.lcssa = phi double [ %.40.lcssa, %._crit_edge2207 ], [ %.37.lcssa, %._crit_edge2179 ]
  %.not19172210 = icmp slt i64 %28, 4
  %.pre3318 = mul nsw i64 %467, %.01631
  br i1 %.not19172210, label %._crit_edge2215, label %.lr.ph2214

.lr.ph2214:                                       ; preds = %466
  %invariant.gep2217 = getelementptr %struct.doublecomplex, ptr %4, i64 %.pre3318
  %468 = add nsw i64 %29, -2
  br label %469

469:                                              ; preds = %.lr.ph2214, %469
  %.412212 = phi double [ %.38.lcssa, %.lr.ph2214 ], [ %472, %469 ]
  %.2916782211 = phi i64 [ 0, %.lr.ph2214 ], [ %473, %469 ]
  %gep2218 = getelementptr %struct.doublecomplex, ptr %invariant.gep2217, i64 %.2916782211
  %470 = tail call double @z_abs(ptr noundef %gep2218) #7
  %471 = fcmp oge double %.412212, %470
  %472 = select i1 %471, double %.412212, double %470
  %473 = add nuw i64 %.2916782211, 1
  %exitcond3169.not = icmp eq i64 %.2916782211, %468
  br i1 %exitcond3169.not, label %._crit_edge2215, label %469, !llvm.loop !54

._crit_edge2215:                                  ; preds = %469, %466
  %.41.lcssa = phi double [ %.38.lcssa, %466 ], [ %472, %469 ]
  %474 = getelementptr %struct.doublecomplex, ptr %4, i64 %29
  %475 = getelementptr i8, ptr %474, i64 -16
  %476 = getelementptr %struct.doublecomplex, ptr %475, i64 %.pre3318
  %477 = load double, ptr %476, align 8, !tbaa !9
  %478 = fcmp oge double %477, 0.000000e+00
  %479 = fneg double %477
  %480 = select i1 %478, double %477, double %479
  %481 = fcmp oge double %.41.lcssa, %480
  %482 = select i1 %481, double %.41.lcssa, double %480
  br label %.loopexit1984

483:                                              ; preds = %24
  %484 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.3) #7
  %.not1799 = icmp eq i64 %484, 0
  br i1 %.not1799, label %485, label %490

485:                                              ; preds = %483
  %486 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.4) #7
  %.not1800 = icmp eq i64 %486, 0
  br i1 %.not1800, label %487, label %490

487:                                              ; preds = %485
  %488 = load i8, ptr %0, align 1, !tbaa !55
  %489 = icmp eq i8 %488, 49
  br i1 %489, label %490, label %1046

490:                                              ; preds = %487, %485, %483
  %491 = load i64, ptr %3, align 8, !tbaa !5
  %492 = sdiv i64 %491, 2
  %.not1892 = icmp eq i64 %15, 0
  br i1 %.not, label %493, label %687

493:                                              ; preds = %490
  br i1 %.not1892, label %596, label %494

494:                                              ; preds = %493
  br i1 %.not1796.not.not.not.not.not.not.not.not, label %543, label %.preheader1970

.preheader1970:                                   ; preds = %494
  %.not1906.not2874 = icmp sgt i64 %491, 1
  br i1 %.not1906.not2874, label %.preheader1969.thread, label %.preheader1969

.preheader1969.thread:                            ; preds = %.preheader1970
  %495 = shl nuw i64 %492, 3
  tail call void @llvm.memset.p0.i64(ptr align 8 %5, i8 0, i64 %495, i1 false), !tbaa !56
  br label %.lr.ph2906

.preheader1969:                                   ; preds = %.preheader1970
  %.not19082904 = icmp slt i64 %491, -1
  br i1 %.not19082904, label %._crit_edge2907, label %.lr.ph2906

.lr.ph2906:                                       ; preds = %.preheader1969.thread, %.preheader1969
  %496 = shl nsw i64 %492, 1
  %497 = add nsw i64 %492, -1
  br label %498

498:                                              ; preds = %.lr.ph2906, %._crit_edge2894
  %indvars.iv3228 = phi i64 [ %492, %.lr.ph2906 ], [ %indvars.iv.next3229, %._crit_edge2894 ]
  %storemerge19072905 = phi i64 [ 0, %.lr.ph2906 ], [ %538, %._crit_edge2894 ]
  %499 = add nsw i64 %storemerge19072905, -1
  %500 = add i64 %499, %492
  %.not19092878 = icmp slt i64 %500, 0
  %.pre3292 = mul nsw i64 %storemerge19072905, %.01631
  br i1 %.not19092878, label %._crit_edge2882, label %.lr.ph2881

.lr.ph2881:                                       ; preds = %498
  %invariant.gep2884 = getelementptr %struct.doublecomplex, ptr %4, i64 %.pre3292
  br label %501

501:                                              ; preds = %.lr.ph2881, %501
  %.3116802879 = phi i64 [ 0, %.lr.ph2881 ], [ %508, %501 ]
  %502 = phi double [ 0.000000e+00, %.lr.ph2881 ], [ %504, %501 ]
  %gep2885 = getelementptr %struct.doublecomplex, ptr %invariant.gep2884, i64 %.3116802879
  %503 = tail call double @z_abs(ptr noundef %gep2885) #7
  %504 = fadd double %503, %502
  %505 = getelementptr inbounds double, ptr %5, i64 %.3116802879
  %506 = load double, ptr %505, align 8, !tbaa !56
  %507 = fadd double %503, %506
  store double %507, ptr %505, align 8, !tbaa !56
  %508 = add nuw i64 %.3116802879, 1
  %exitcond3230.not = icmp eq i64 %508, %indvars.iv3228
  br i1 %exitcond3230.not, label %._crit_edge2882, label %501, !llvm.loop !57

._crit_edge2882:                                  ; preds = %501, %498
  %.lcssa28982902 = phi double [ 0.000000e+00, %498 ], [ %504, %501 ]
  %.311680.lcssa = phi i64 [ 0, %498 ], [ %indvars.iv3228, %501 ]
  %509 = getelementptr %struct.doublecomplex, ptr %4, i64 %.pre3292
  %510 = getelementptr %struct.doublecomplex, ptr %509, i64 %.311680.lcssa
  %511 = load double, ptr %510, align 8, !tbaa !9
  %512 = fcmp oge double %511, 0.000000e+00
  %513 = fneg double %511
  %514 = select i1 %512, double %511, double %513
  %515 = fadd double %.lcssa28982902, %514
  %516 = getelementptr double, ptr %5, i64 %storemerge19072905
  %517 = getelementptr double, ptr %516, i64 %492
  store double %515, ptr %517, align 8, !tbaa !56
  %518 = icmp eq i64 %.311680.lcssa, %496
  br i1 %518, label %._crit_edge2907, label %519

519:                                              ; preds = %._crit_edge2882
  %520 = add nuw nsw i64 %.311680.lcssa, 1
  %521 = getelementptr %struct.doublecomplex, ptr %4, i64 %.pre3292
  %522 = getelementptr %struct.doublecomplex, ptr %521, i64 %520
  %523 = load double, ptr %522, align 8, !tbaa !9
  %524 = fcmp oge double %523, 0.000000e+00
  %525 = fneg double %523
  %526 = select i1 %524, double %523, double %525
  %527 = load double, ptr %516, align 8, !tbaa !56
  %528 = fadd double %527, %526
  store double %528, ptr %516, align 8, !tbaa !56
  %.not1910.not2889 = icmp slt i64 %storemerge19072905, %497
  br i1 %.not1910.not2889, label %.lr.ph2893, label %._crit_edge2894

.lr.ph2893:                                       ; preds = %519, %.lr.ph2893
  %.01633.in2891 = phi i64 [ %.01633, %.lr.ph2893 ], [ %storemerge19072905, %519 ]
  %.3216812890 = phi i64 [ %530, %.lr.ph2893 ], [ %520, %519 ]
  %529 = phi double [ %532, %.lr.ph2893 ], [ 0.000000e+00, %519 ]
  %.01633 = add nuw nsw i64 %.01633.in2891, 1
  %530 = add nuw nsw i64 %.3216812890, 1
  %gep2896 = getelementptr %struct.doublecomplex, ptr %521, i64 %530
  %531 = tail call double @z_abs(ptr noundef %gep2896) #7
  %532 = fadd double %531, %529
  %533 = getelementptr inbounds double, ptr %5, i64 %.01633
  %534 = load double, ptr %533, align 8, !tbaa !56
  %535 = fadd double %531, %534
  store double %535, ptr %533, align 8, !tbaa !56
  %.not1910.not = icmp slt i64 %.01633, %497
  br i1 %.not1910.not, label %.lr.ph2893, label %._crit_edge2894.loopexit, !llvm.loop !58

._crit_edge2894.loopexit:                         ; preds = %.lr.ph2893
  %.pre3274 = load double, ptr %516, align 8, !tbaa !56
  br label %._crit_edge2894

._crit_edge2894:                                  ; preds = %._crit_edge2894.loopexit, %519
  %536 = phi double [ %528, %519 ], [ %.pre3274, %._crit_edge2894.loopexit ]
  %.lcssa28982901 = phi double [ 0.000000e+00, %519 ], [ %532, %._crit_edge2894.loopexit ]
  %537 = fadd double %.lcssa28982901, %536
  store double %537, ptr %516, align 8, !tbaa !56
  %538 = add nuw nsw i64 %storemerge19072905, 1
  %indvars.iv.next3229 = add i64 %indvars.iv3228, 1
  %exitcond3231.not = icmp eq i64 %storemerge19072905, %492
  br i1 %exitcond3231.not, label %._crit_edge2907, label %498, !llvm.loop !59

._crit_edge2907:                                  ; preds = %._crit_edge2882, %._crit_edge2894, %.preheader1969
  %539 = tail call i64 @f2c_idamax(ptr noundef nonnull %3, ptr noundef %5, ptr noundef nonnull @c__1) #7
  %540 = getelementptr double, ptr %5, i64 %539
  %541 = getelementptr i8, ptr %540, i64 -8
  %542 = load double, ptr %541, align 8, !tbaa !56
  br label %.loopexit1984

543:                                              ; preds = %494
  %544 = add nsw i64 %492, 1
  %.not1902.not2913 = icmp slt i64 %544, %491
  br i1 %.not1902.not2913, label %.lr.ph2916.preheader, label %thread-pre-split

.lr.ph2916.preheader:                             ; preds = %543
  %545 = shl nuw i64 %492, 3
  %546 = getelementptr i8, ptr %5, i64 %545
  %scevgep3232 = getelementptr i8, ptr %546, i64 8
  %547 = xor i64 %492, -1
  %548 = add i64 %491, %547
  %549 = shl nuw i64 %548, 3
  tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep3232, i8 0, i64 %549, i1 false), !tbaa !56
  br label %thread-pre-split

thread-pre-split:                                 ; preds = %.lr.ph2916.preheader, %543
  %550 = icmp sgt i64 %491, -2
  br i1 %550, label %.lr.ph2948, label %._crit_edge2949

.lr.ph2948:                                       ; preds = %thread-pre-split
  %invariant.gep2926 = getelementptr double, ptr %5, i64 %544
  br label %551

551:                                              ; preds = %.lr.ph2948, %._crit_edge2936
  %indvars.iv3233.in = phi i64 [ %492, %.lr.ph2948 ], [ %indvars.iv3233, %._crit_edge2936 ]
  %storemerge19032947 = phi i64 [ %492, %.lr.ph2948 ], [ %storemerge1903, %._crit_edge2936 ]
  %storemerge1903.in2946 = phi i64 [ %544, %.lr.ph2948 ], [ %storemerge19032947, %._crit_edge2936 ]
  %indvars.iv3233 = add nsw i64 %indvars.iv3233.in, -1
  %.not19042918 = icmp slt i64 %storemerge1903.in2946, 3
  br i1 %.not19042918, label %._crit_edge2922, label %.lr.ph2921

.lr.ph2921:                                       ; preds = %551
  %552 = mul nsw i64 %storemerge19032947, %.01631
  %invariant.gep2924 = getelementptr %struct.doublecomplex, ptr %4, i64 %552
  br label %553

553:                                              ; preds = %.lr.ph2921, %553
  %.3416832919 = phi i64 [ 0, %.lr.ph2921 ], [ %559, %553 ]
  %554 = phi double [ 0.000000e+00, %.lr.ph2921 ], [ %556, %553 ]
  %gep2925 = getelementptr %struct.doublecomplex, ptr %invariant.gep2924, i64 %.3416832919
  %555 = tail call double @z_abs(ptr noundef %gep2925) #7
  %556 = fadd double %555, %554
  %gep2927 = getelementptr double, ptr %invariant.gep2926, i64 %.3416832919
  %557 = load double, ptr %gep2927, align 8, !tbaa !56
  %558 = fadd double %555, %557
  store double %558, ptr %gep2927, align 8, !tbaa !56
  %559 = add nuw i64 %.3416832919, 1
  %exitcond3235.not = icmp eq i64 %559, %indvars.iv3233
  br i1 %exitcond3235.not, label %._crit_edge2922, label %553, !llvm.loop !60

._crit_edge2922:                                  ; preds = %553, %551
  %.lcssa29402944 = phi double [ 0.000000e+00, %551 ], [ %556, %553 ]
  %.341683.lcssa = phi i64 [ 0, %551 ], [ %indvars.iv3233, %553 ]
  %560 = icmp sgt i64 %storemerge19032947, 0
  %561 = mul nsw i64 %storemerge19032947, %.01631
  br i1 %560, label %562, label %._crit_edge2922._crit_edge

562:                                              ; preds = %._crit_edge2922
  %563 = getelementptr %struct.doublecomplex, ptr %4, i64 %.341683.lcssa
  %564 = getelementptr %struct.doublecomplex, ptr %563, i64 %561
  %565 = load double, ptr %564, align 8, !tbaa !9
  %566 = fcmp oge double %565, 0.000000e+00
  %567 = fneg double %565
  %568 = select i1 %566, double %565, double %567
  %569 = fadd double %.lcssa29402944, %568
  %gep2952 = getelementptr double, ptr %invariant.gep2926, i64 %.341683.lcssa
  %570 = load double, ptr %gep2952, align 8, !tbaa !56
  %571 = fadd double %569, %570
  store double %571, ptr %gep2952, align 8, !tbaa !56
  %572 = add nuw nsw i64 %.341683.lcssa, 1
  br label %._crit_edge2922._crit_edge

._crit_edge2922._crit_edge:                       ; preds = %._crit_edge2922, %562
  %.351684 = phi i64 [ %572, %562 ], [ %.341683.lcssa, %._crit_edge2922 ]
  %573 = getelementptr %struct.doublecomplex, ptr %4, i64 %.351684
  %574 = getelementptr %struct.doublecomplex, ptr %573, i64 %561
  %575 = load double, ptr %574, align 8, !tbaa !9
  %576 = fcmp oge double %575, 0.000000e+00
  %577 = fneg double %575
  %578 = select i1 %576, double %575, double %577
  %579 = getelementptr inbounds double, ptr %5, i64 %storemerge19032947
  store double %578, ptr %579, align 8, !tbaa !56
  %580 = load i64, ptr %3, align 8, !tbaa !5
  %581 = add nsw i64 %580, -1
  %.not1905.not2931 = icmp slt i64 %storemerge19032947, %581
  br i1 %.not1905.not2931, label %.lr.ph2935, label %._crit_edge2936

.lr.ph2935:                                       ; preds = %._crit_edge2922._crit_edge
  %invariant.gep2937 = getelementptr %struct.doublecomplex, ptr %4, i64 %561
  br label %582

582:                                              ; preds = %.lr.ph2935, %582
  %.11634.in2933 = phi i64 [ %storemerge19032947, %.lr.ph2935 ], [ %.11634, %582 ]
  %.3616852932 = phi i64 [ %.351684, %.lr.ph2935 ], [ %584, %582 ]
  %583 = phi double [ 0.000000e+00, %.lr.ph2935 ], [ %586, %582 ]
  %.11634 = add nsw i64 %.11634.in2933, 1
  %584 = add nsw i64 %.3616852932, 1
  %gep2938 = getelementptr %struct.doublecomplex, ptr %invariant.gep2937, i64 %584
  %585 = tail call double @z_abs(ptr noundef %gep2938) #7
  %586 = fadd double %585, %583
  %587 = getelementptr inbounds double, ptr %5, i64 %.11634
  %588 = load double, ptr %587, align 8, !tbaa !56
  %589 = fadd double %585, %588
  store double %589, ptr %587, align 8, !tbaa !56
  %.not1905.not = icmp slt i64 %.11634, %581
  br i1 %.not1905.not, label %582, label %._crit_edge2936.loopexit, !llvm.loop !61

._crit_edge2936.loopexit:                         ; preds = %582
  %.pre3275 = load double, ptr %579, align 8, !tbaa !56
  br label %._crit_edge2936

._crit_edge2936:                                  ; preds = %._crit_edge2936.loopexit, %._crit_edge2922._crit_edge
  %590 = phi double [ %578, %._crit_edge2922._crit_edge ], [ %.pre3275, %._crit_edge2936.loopexit ]
  %.lcssa29402943 = phi double [ 0.000000e+00, %._crit_edge2922._crit_edge ], [ %586, %._crit_edge2936.loopexit ]
  %591 = fadd double %.lcssa29402943, %590
  store double %591, ptr %579, align 8, !tbaa !56
  %storemerge1903 = add nsw i64 %storemerge19032947, -1
  br i1 %560, label %551, label %._crit_edge2949, !llvm.loop !62

._crit_edge2949:                                  ; preds = %._crit_edge2936, %thread-pre-split
  %592 = tail call i64 @f2c_idamax(ptr noundef nonnull %3, ptr noundef %5, ptr noundef nonnull @c__1) #7
  %593 = getelementptr double, ptr %5, i64 %592
  %594 = getelementptr i8, ptr %593, i64 -8
  %595 = load double, ptr %594, align 8, !tbaa !56
  br label %.loopexit1984

596:                                              ; preds = %493
  br i1 %.not1796.not.not.not.not.not.not.not.not, label %.preheader, label %.preheader1968

.preheader1968:                                   ; preds = %596
  %.not1897.not2953 = icmp sgt i64 %491, 1
  br i1 %.not1897.not2953, label %.lr.ph2986, label %.preheader1967

.preheader:                                       ; preds = %596
  %.not1893.not2990 = icmp sgt i64 %491, 0
  br i1 %.not1893.not2990, label %thread-pre-split1966, label %thread-pre-split1966.thread

.lr.ph2986:                                       ; preds = %.preheader1968
  %597 = shl nuw i64 %492, 3
  tail call void @llvm.memset.p0.i64(ptr align 8 %5, i8 0, i64 %597, i1 false), !tbaa !56
  %598 = add nsw i64 %492, -1
  br label %599

599:                                              ; preds = %.lr.ph2986, %._crit_edge2973
  %indvars.iv3236 = phi i64 [ %492, %.lr.ph2986 ], [ %indvars.iv.next3237, %._crit_edge2973 ]
  %storemerge18982985 = phi i64 [ 0, %.lr.ph2986 ], [ %636, %._crit_edge2973 ]
  %600 = add nsw i64 %storemerge18982985, -1
  %601 = add i64 %600, %492
  %.not19002957 = icmp slt i64 %601, 0
  %.pre3288 = mul nsw i64 %storemerge18982985, %.01631
  br i1 %.not19002957, label %._crit_edge2961, label %.lr.ph2960

.lr.ph2960:                                       ; preds = %599
  %invariant.gep2963 = getelementptr %struct.doublecomplex, ptr %4, i64 %.pre3288
  br label %602

602:                                              ; preds = %.lr.ph2960, %602
  %.3816872958 = phi i64 [ 0, %.lr.ph2960 ], [ %609, %602 ]
  %603 = phi double [ 0.000000e+00, %.lr.ph2960 ], [ %605, %602 ]
  %gep2964 = getelementptr %struct.doublecomplex, ptr %invariant.gep2963, i64 %.3816872958
  %604 = tail call double @z_abs(ptr noundef %gep2964) #7
  %605 = fadd double %604, %603
  %606 = getelementptr inbounds double, ptr %5, i64 %.3816872958
  %607 = load double, ptr %606, align 8, !tbaa !56
  %608 = fadd double %604, %607
  store double %608, ptr %606, align 8, !tbaa !56
  %609 = add nuw i64 %.3816872958, 1
  %exitcond3238.not = icmp eq i64 %609, %indvars.iv3236
  br i1 %exitcond3238.not, label %._crit_edge2961, label %602, !llvm.loop !63

._crit_edge2961:                                  ; preds = %602, %599
  %.lcssa29772980 = phi double [ 0.000000e+00, %599 ], [ %605, %602 ]
  %.381687.lcssa = phi i64 [ 0, %599 ], [ %indvars.iv3236, %602 ]
  %610 = getelementptr %struct.doublecomplex, ptr %4, i64 %.pre3288
  %611 = getelementptr %struct.doublecomplex, ptr %610, i64 %.381687.lcssa
  %612 = load double, ptr %611, align 8, !tbaa !9
  %613 = fcmp oge double %612, 0.000000e+00
  %614 = fneg double %612
  %615 = select i1 %613, double %612, double %614
  %616 = fadd double %.lcssa29772980, %615
  %617 = getelementptr double, ptr %5, i64 %storemerge18982985
  %618 = getelementptr double, ptr %617, i64 %492
  store double %616, ptr %618, align 8, !tbaa !56
  %619 = add nuw nsw i64 %.381687.lcssa, 1
  %620 = getelementptr %struct.doublecomplex, ptr %610, i64 %619
  %621 = load double, ptr %620, align 8, !tbaa !9
  %622 = fcmp oge double %621, 0.000000e+00
  %623 = fneg double %621
  %624 = select i1 %622, double %621, double %623
  %625 = load double, ptr %617, align 8, !tbaa !56
  %626 = fadd double %625, %624
  store double %626, ptr %617, align 8, !tbaa !56
  %.not1901.not2968 = icmp slt i64 %storemerge18982985, %598
  br i1 %.not1901.not2968, label %.lr.ph2972, label %._crit_edge2973

.lr.ph2972:                                       ; preds = %._crit_edge2961, %.lr.ph2972
  %.21635.in2970 = phi i64 [ %.21635, %.lr.ph2972 ], [ %storemerge18982985, %._crit_edge2961 ]
  %.3916882969 = phi i64 [ %628, %.lr.ph2972 ], [ %619, %._crit_edge2961 ]
  %627 = phi double [ %630, %.lr.ph2972 ], [ 0.000000e+00, %._crit_edge2961 ]
  %.21635 = add nuw nsw i64 %.21635.in2970, 1
  %628 = add nuw nsw i64 %.3916882969, 1
  %gep2975 = getelementptr %struct.doublecomplex, ptr %610, i64 %628
  %629 = tail call double @z_abs(ptr noundef %gep2975) #7
  %630 = fadd double %629, %627
  %631 = getelementptr inbounds double, ptr %5, i64 %.21635
  %632 = load double, ptr %631, align 8, !tbaa !56
  %633 = fadd double %629, %632
  store double %633, ptr %631, align 8, !tbaa !56
  %.not1901.not = icmp slt i64 %.21635, %598
  br i1 %.not1901.not, label %.lr.ph2972, label %._crit_edge2973.loopexit, !llvm.loop !64

._crit_edge2973.loopexit:                         ; preds = %.lr.ph2972
  %.pre3276 = load double, ptr %617, align 8, !tbaa !56
  br label %._crit_edge2973

._crit_edge2973:                                  ; preds = %._crit_edge2973.loopexit, %._crit_edge2961
  %634 = phi double [ %626, %._crit_edge2961 ], [ %.pre3276, %._crit_edge2973.loopexit ]
  %.lcssa29772981 = phi double [ 0.000000e+00, %._crit_edge2961 ], [ %630, %._crit_edge2973.loopexit ]
  %635 = fadd double %.lcssa29772981, %634
  store double %635, ptr %617, align 8, !tbaa !56
  %636 = add nuw nsw i64 %storemerge18982985, 1
  %indvars.iv.next3237 = add i64 %indvars.iv3236, 1
  %exitcond3239.not = icmp eq i64 %636, %492
  br i1 %exitcond3239.not, label %.preheader1967, label %599, !llvm.loop !65

.preheader1967:                                   ; preds = %._crit_edge2973, %.preheader1968
  %637 = tail call i64 @f2c_idamax(ptr noundef nonnull %3, ptr noundef %5, ptr noundef nonnull @c__1) #7
  %638 = getelementptr double, ptr %5, i64 %637
  %639 = getelementptr i8, ptr %638, i64 -8
  %640 = load double, ptr %639, align 8, !tbaa !56
  br label %.loopexit1984

thread-pre-split1966:                             ; preds = %.preheader
  %641 = shl nuw i64 %492, 3
  %scevgep3240 = getelementptr i8, ptr %5, i64 %641
  %642 = add nuw nsw i64 %492, 1
  %smax3241 = tail call i64 @llvm.smax.i64(i64 %491, i64 %642)
  %643 = sub nsw i64 %smax3241, %492
  %644 = shl i64 %643, 3
  tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep3240, i8 0, i64 %644, i1 false), !tbaa !56
  %.not3463 = icmp eq i64 %491, 1
  br i1 %.not3463, label %thread-pre-split1966.thread, label %.lr.ph3023

.lr.ph3023:                                       ; preds = %thread-pre-split1966
  %invariant.gep3002 = getelementptr double, ptr %5, i64 %492
  br label %645

645:                                              ; preds = %.lr.ph3023, %._crit_edge3012
  %storemerge18943022.in = phi i64 [ %492, %.lr.ph3023 ], [ %storemerge18943022, %._crit_edge3012 ]
  %storemerge18943022 = add nsw i64 %storemerge18943022.in, -1
  %.not1895.not2994 = icmp sgt i64 %storemerge18943022.in, 1
  %646 = mul nsw i64 %storemerge18943022, %.01631
  br i1 %.not1895.not2994, label %.lr.ph2997, label %._crit_edge2998

.lr.ph2997:                                       ; preds = %645
  %invariant.gep3000 = getelementptr %struct.doublecomplex, ptr %4, i64 %646
  br label %647

647:                                              ; preds = %.lr.ph2997, %647
  %.4116902995 = phi i64 [ 0, %.lr.ph2997 ], [ %653, %647 ]
  %648 = phi double [ 0.000000e+00, %.lr.ph2997 ], [ %650, %647 ]
  %gep3001 = getelementptr %struct.doublecomplex, ptr %invariant.gep3000, i64 %.4116902995
  %649 = tail call double @z_abs(ptr noundef %gep3001) #7
  %650 = fadd double %649, %648
  %gep3003 = getelementptr double, ptr %invariant.gep3002, i64 %.4116902995
  %651 = load double, ptr %gep3003, align 8, !tbaa !56
  %652 = fadd double %649, %651
  store double %652, ptr %gep3003, align 8, !tbaa !56
  %653 = add nuw nsw i64 %.4116902995, 1
  %.not1895.not = icmp slt i64 %653, %storemerge18943022
  br i1 %.not1895.not, label %647, label %._crit_edge2998, !llvm.loop !66

._crit_edge2998:                                  ; preds = %647, %645
  %.lcssa30163019 = phi double [ 0.000000e+00, %645 ], [ %650, %647 ]
  %.411690.lcssa = phi i64 [ 0, %645 ], [ %653, %647 ]
  %654 = getelementptr %struct.doublecomplex, ptr %4, i64 %.411690.lcssa
  %655 = getelementptr %struct.doublecomplex, ptr %654, i64 %646
  %656 = load double, ptr %655, align 8, !tbaa !9
  %657 = fcmp oge double %656, 0.000000e+00
  %658 = fneg double %656
  %659 = select i1 %657, double %656, double %658
  %660 = fadd double %.lcssa30163019, %659
  %gep3027 = getelementptr double, ptr %invariant.gep3002, i64 %.411690.lcssa
  %661 = load double, ptr %gep3027, align 8, !tbaa !56
  %662 = fadd double %660, %661
  store double %662, ptr %gep3027, align 8, !tbaa !56
  %663 = add nuw nsw i64 %.411690.lcssa, 1
  %664 = getelementptr %struct.doublecomplex, ptr %4, i64 %663
  %665 = getelementptr %struct.doublecomplex, ptr %664, i64 %646
  %666 = load double, ptr %665, align 8, !tbaa !9
  %667 = fcmp oge double %666, 0.000000e+00
  %668 = fneg double %666
  %669 = select i1 %667, double %666, double %668
  %670 = getelementptr inbounds double, ptr %5, i64 %storemerge18943022
  store double %669, ptr %670, align 8, !tbaa !56
  %671 = load i64, ptr %3, align 8, !tbaa !5
  %672 = add nsw i64 %671, -1
  %.not1896.not3007 = icmp slt i64 %storemerge18943022.in, %671
  br i1 %.not1896.not3007, label %.lr.ph3011, label %._crit_edge3012

.lr.ph3011:                                       ; preds = %._crit_edge2998
  %invariant.gep3013 = getelementptr %struct.doublecomplex, ptr %4, i64 %646
  br label %673

673:                                              ; preds = %.lr.ph3011, %673
  %.31636.in3009 = phi i64 [ %storemerge18943022, %.lr.ph3011 ], [ %.31636, %673 ]
  %.4216913008 = phi i64 [ %663, %.lr.ph3011 ], [ %675, %673 ]
  %674 = phi double [ 0.000000e+00, %.lr.ph3011 ], [ %677, %673 ]
  %.31636 = add nsw i64 %.31636.in3009, 1
  %675 = add nuw nsw i64 %.4216913008, 1
  %gep3014 = getelementptr %struct.doublecomplex, ptr %invariant.gep3013, i64 %675
  %676 = tail call double @z_abs(ptr noundef %gep3014) #7
  %677 = fadd double %676, %674
  %678 = getelementptr inbounds double, ptr %5, i64 %.31636
  %679 = load double, ptr %678, align 8, !tbaa !56
  %680 = fadd double %676, %679
  store double %680, ptr %678, align 8, !tbaa !56
  %.not1896.not = icmp slt i64 %.31636, %672
  br i1 %.not1896.not, label %673, label %._crit_edge3012.loopexit, !llvm.loop !67

._crit_edge3012.loopexit:                         ; preds = %673
  %.pre3277 = load double, ptr %670, align 8, !tbaa !56
  br label %._crit_edge3012

._crit_edge3012:                                  ; preds = %._crit_edge3012.loopexit, %._crit_edge2998
  %681 = phi double [ %669, %._crit_edge2998 ], [ %.pre3277, %._crit_edge3012.loopexit ]
  %.lcssa30163020 = phi double [ 0.000000e+00, %._crit_edge2998 ], [ %677, %._crit_edge3012.loopexit ]
  %682 = fadd double %.lcssa30163020, %681
  store double %682, ptr %670, align 8, !tbaa !56
  br i1 %.not1895.not2994, label %645, label %thread-pre-split1966.thread, !llvm.loop !68

thread-pre-split1966.thread:                      ; preds = %._crit_edge3012, %.preheader, %thread-pre-split1966
  %683 = tail call i64 @f2c_idamax(ptr noundef nonnull %3, ptr noundef %5, ptr noundef nonnull @c__1) #7
  %684 = getelementptr double, ptr %5, i64 %683
  %685 = getelementptr i8, ptr %684, i64 -8
  %686 = load double, ptr %685, align 8, !tbaa !56
  br label %.loopexit1984

687:                                              ; preds = %490
  br i1 %.not1892, label %847, label %688

688:                                              ; preds = %687
  %689 = add nsw i64 %492, 1
  br i1 %.not1796.not.not.not.not.not.not.not.not, label %765, label %690

690:                                              ; preds = %688
  %.not1883.not2546 = icmp sgt i64 %491, 0
  br i1 %.not1883.not2546, label %.preheader1975, label %.preheader1975.thread

.preheader1975:                                   ; preds = %690
  %691 = shl i64 %492, 3
  %scevgep = getelementptr i8, ptr %5, i64 %691
  %smax3196 = tail call i64 @llvm.smax.i64(i64 %491, i64 %689)
  %692 = sub nsw i64 %smax3196, %492
  %693 = shl i64 %692, 3
  tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep, i8 0, i64 %693, i1 false), !tbaa !56
  %.not1885.not2568.not = icmp eq i64 %491, 1
  br i1 %.not1885.not2568.not, label %.preheader1975.thread, label %.lr.ph2570

.lr.ph2570:                                       ; preds = %.preheader1975
  %invariant.gep2550 = getelementptr double, ptr %5, i64 %492
  br label %.lr.ph2556

.lr.ph2556:                                       ; preds = %._crit_edge2557, %.lr.ph2570
  %storemerge18842569 = phi i64 [ 0, %.lr.ph2570 ], [ %703, %._crit_edge2557 ]
  %694 = mul nsw i64 %storemerge18842569, %.01631
  %invariant.gep2558 = getelementptr %struct.doublecomplex, ptr %4, i64 %694
  br label %695

695:                                              ; preds = %.lr.ph2556, %695
  %.442554 = phi i64 [ 0, %.lr.ph2556 ], [ %701, %695 ]
  %696 = phi double [ 0.000000e+00, %.lr.ph2556 ], [ %700, %695 ]
  %gep2559 = getelementptr %struct.doublecomplex, ptr %invariant.gep2558, i64 %.442554
  %697 = tail call double @z_abs(ptr noundef %gep2559) #7
  %gep2551 = getelementptr double, ptr %invariant.gep2550, i64 %.442554
  %698 = load double, ptr %gep2551, align 8, !tbaa !56
  %699 = fadd double %697, %698
  store double %699, ptr %gep2551, align 8, !tbaa !56
  %700 = fadd double %697, %696
  %701 = add nuw i64 %.442554, 1
  %exitcond3197.not = icmp eq i64 %.442554, %492
  br i1 %exitcond3197.not, label %._crit_edge2557, label %695, !llvm.loop !69

._crit_edge2557:                                  ; preds = %695
  %702 = getelementptr inbounds double, ptr %5, i64 %storemerge18842569
  store double %700, ptr %702, align 8, !tbaa !56
  %703 = add nuw nsw i64 %storemerge18842569, 1
  %exitcond3198.not = icmp eq i64 %703, %492
  br i1 %exitcond3198.not, label %.preheader1975.thread, label %.lr.ph2556, !llvm.loop !70

.preheader1975.thread:                            ; preds = %._crit_edge2557, %690, %.preheader1975
  %704 = phi i64 [ 0, %.preheader1975 ], [ 0, %690 ], [ %492, %._crit_edge2557 ]
  %705 = mul nsw i64 %704, %.01631
  %706 = getelementptr %struct.doublecomplex, ptr %4, i64 %705
  %707 = load double, ptr %706, align 8, !tbaa !9
  %708 = fcmp oge double %707, 0.000000e+00
  %709 = fneg double %707
  %710 = select i1 %708, double %707, double %709
  %invariant.gep2575 = getelementptr double, ptr %5, i64 %492
  %.not1886.not2578 = icmp sgt i64 %491, 1
  br i1 %.not1886.not2578, label %.lr.ph2581, label %._crit_edge2582

.lr.ph2581:                                       ; preds = %.preheader1975.thread, %.lr.ph2581
  %.452579 = phi i64 [ %716, %.lr.ph2581 ], [ 1, %.preheader1975.thread ]
  %711 = phi double [ %715, %.lr.ph2581 ], [ %710, %.preheader1975.thread ]
  %gep2584 = getelementptr %struct.doublecomplex, ptr %706, i64 %.452579
  %712 = tail call double @z_abs(ptr noundef %gep2584) #7
  %gep2576 = getelementptr double, ptr %invariant.gep2575, i64 %.452579
  %713 = load double, ptr %gep2576, align 8, !tbaa !56
  %714 = fadd double %712, %713
  store double %714, ptr %gep2576, align 8, !tbaa !56
  %715 = fadd double %712, %711
  %716 = add nuw nsw i64 %.452579, 1
  %exitcond3199.not = icmp eq i64 %.452579, %492
  br i1 %exitcond3199.not, label %._crit_edge2582, label %.lr.ph2581, !llvm.loop !71

._crit_edge2582:                                  ; preds = %.lr.ph2581, %.preheader1975.thread
  %717 = phi double [ %710, %.preheader1975.thread ], [ %715, %.lr.ph2581 ]
  %718 = getelementptr inbounds double, ptr %5, i64 %704
  %719 = load double, ptr %718, align 8, !tbaa !56
  %720 = fadd double %717, %719
  store double %720, ptr %718, align 8, !tbaa !56
  %721 = load i64, ptr %3, align 8, !tbaa !5
  %.not1888.not2615 = icmp slt i64 %689, %721
  br i1 %.not1888.not2615, label %.lr.ph2618, label %._crit_edge2619

.lr.ph2618:                                       ; preds = %._crit_edge2582, %._crit_edge2604
  %indvars.iv3200 = phi i64 [ %indvars.iv.next3201, %._crit_edge2604 ], [ 0, %._crit_edge2582 ]
  %storemerge18872616 = phi i64 [ %760, %._crit_edge2604 ], [ %689, %._crit_edge2582 ]
  %reass.sub3336 = sub i64 %storemerge18872616, %492
  %722 = add i64 %reass.sub3336, -2
  %.not18892588 = icmp slt i64 %722, 0
  %.pre3306 = mul nsw i64 %storemerge18872616, %.01631
  br i1 %.not18892588, label %._crit_edge2592, label %.lr.ph2591

.lr.ph2591:                                       ; preds = %.lr.ph2618
  %invariant.gep2594 = getelementptr %struct.doublecomplex, ptr %4, i64 %.pre3306
  br label %723

723:                                              ; preds = %.lr.ph2591, %723
  %.462589 = phi i64 [ 0, %.lr.ph2591 ], [ %730, %723 ]
  %724 = phi double [ 0.000000e+00, %.lr.ph2591 ], [ %729, %723 ]
  %gep2595 = getelementptr %struct.doublecomplex, ptr %invariant.gep2594, i64 %.462589
  %725 = tail call double @z_abs(ptr noundef %gep2595) #7
  %726 = getelementptr inbounds double, ptr %5, i64 %.462589
  %727 = load double, ptr %726, align 8, !tbaa !56
  %728 = fadd double %725, %727
  store double %728, ptr %726, align 8, !tbaa !56
  %729 = fadd double %725, %724
  %730 = add nuw i64 %.462589, 1
  %exitcond3202.not = icmp eq i64 %730, %indvars.iv3200
  br i1 %exitcond3202.not, label %._crit_edge2592, label %723, !llvm.loop !72

._crit_edge2592:                                  ; preds = %723, %.lr.ph2618
  %.lcssa26082611 = phi double [ 0.000000e+00, %.lr.ph2618 ], [ %729, %723 ]
  %.46.lcssa = phi i64 [ 0, %.lr.ph2618 ], [ %indvars.iv3200, %723 ]
  %731 = getelementptr %struct.doublecomplex, ptr %4, i64 %.pre3306
  %732 = getelementptr %struct.doublecomplex, ptr %731, i64 %.46.lcssa
  %733 = load double, ptr %732, align 8, !tbaa !9
  %734 = fcmp oge double %733, 0.000000e+00
  %735 = fneg double %733
  %736 = select i1 %734, double %733, double %735
  %737 = fadd double %.lcssa26082611, %736
  %738 = sub nsw i64 %storemerge18872616, %689
  %739 = getelementptr inbounds double, ptr %5, i64 %738
  %740 = load double, ptr %739, align 8, !tbaa !56
  %741 = fadd double %737, %740
  store double %741, ptr %739, align 8, !tbaa !56
  %742 = add nuw nsw i64 %.46.lcssa, 1
  %743 = getelementptr %struct.doublecomplex, ptr %731, 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
  %748 = load i64, ptr %3, align 8, !tbaa !5
  %749 = add nsw i64 %748, -1
  %.not1890.not2599 = icmp slt i64 %storemerge18872616, %749
  br i1 %.not1890.not2599, label %.lr.ph2603, label %._crit_edge2604

.lr.ph2603:                                       ; preds = %._crit_edge2592, %.lr.ph2603
  %.41637.in2601 = phi i64 [ %.41637, %.lr.ph2603 ], [ %storemerge18872616, %._crit_edge2592 ]
  %.472600 = phi i64 [ %751, %.lr.ph2603 ], [ %742, %._crit_edge2592 ]
  %750 = phi double [ %756, %.lr.ph2603 ], [ %747, %._crit_edge2592 ]
  %.41637 = add nsw i64 %.41637.in2601, 1
  %751 = add nuw nsw i64 %.472600, 1
  %gep2606 = getelementptr %struct.doublecomplex, ptr %731, i64 %751
  %752 = tail call double @z_abs(ptr noundef %gep2606) #7
  %753 = getelementptr inbounds double, ptr %5, i64 %.41637
  %754 = load double, ptr %753, align 8, !tbaa !56
  %755 = fadd double %752, %754
  store double %755, ptr %753, align 8, !tbaa !56
  %756 = fadd double %752, %750
  %.not1890.not = icmp slt i64 %.41637, %749
  br i1 %.not1890.not, label %.lr.ph2603, label %._crit_edge2604, !llvm.loop !73

._crit_edge2604:                                  ; preds = %.lr.ph2603, %._crit_edge2592
  %.lcssa26082612 = phi double [ %747, %._crit_edge2592 ], [ %756, %.lr.ph2603 ]
  %757 = getelementptr inbounds double, ptr %5, i64 %storemerge18872616
  %758 = load double, ptr %757, align 8, !tbaa !56
  %759 = fadd double %.lcssa26082612, %758
  store double %759, ptr %757, align 8, !tbaa !56
  %760 = add i64 %storemerge18872616, 1
  %indvars.iv.next3201 = add i64 %indvars.iv3200, 1
  %exitcond3203.not = icmp eq i64 %760, %721
  br i1 %exitcond3203.not, label %._crit_edge2619, label %.lr.ph2618, !llvm.loop !74

._crit_edge2619:                                  ; preds = %._crit_edge2604, %._crit_edge2582
  %761 = tail call i64 @f2c_idamax(ptr noundef nonnull %3, ptr noundef nonnull %5, ptr noundef nonnull @c__1) #7
  %762 = getelementptr double, ptr %5, i64 %761
  %763 = getelementptr i8, ptr %762, i64 -8
  %764 = load double, ptr %763, align 8, !tbaa !56
  br label %.loopexit1984

765:                                              ; preds = %688
  %.not1874.not2622 = icmp slt i64 %689, %491
  br i1 %.not1874.not2622, label %.lr.ph2625.preheader, label %.preheader1974

.lr.ph2625.preheader:                             ; preds = %765
  %766 = shl i64 %492, 3
  %767 = getelementptr i8, ptr %5, i64 %766
  %scevgep3204 = getelementptr i8, ptr %767, i64 8
  %768 = xor i64 %492, -1
  %769 = add i64 %491, %768
  %770 = shl nuw i64 %769, 3
  tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep3204, i8 0, i64 %770, i1 false), !tbaa !56
  br label %.preheader1974

.preheader1974:                                   ; preds = %.lr.ph2625.preheader, %765
  %.not1876.not2654 = icmp sgt i64 %491, 1
  br i1 %.not1876.not2654, label %.lr.ph2656, label %._crit_edge2665

.lr.ph2656:                                       ; preds = %.preheader1974
  %771 = getelementptr double, ptr %5, i64 %689
  br label %772

772:                                              ; preds = %.lr.ph2656, %._crit_edge2643
  %storemerge18752655 = phi i64 [ 0, %.lr.ph2656 ], [ %809, %._crit_edge2643 ]
  %.not18812627 = icmp eq i64 %storemerge18752655, 0
  br i1 %.not18812627, label %._crit_edge2631, label %.lr.ph2630

.lr.ph2630:                                       ; preds = %772
  %773 = mul nsw i64 %storemerge18752655, %.01631
  %invariant.gep2633 = getelementptr %struct.doublecomplex, ptr %4, i64 %773
  br label %774

774:                                              ; preds = %.lr.ph2630, %774
  %.492628 = phi i64 [ 0, %.lr.ph2630 ], [ %781, %774 ]
  %775 = phi double [ 0.000000e+00, %.lr.ph2630 ], [ %780, %774 ]
  %gep2634 = getelementptr %struct.doublecomplex, ptr %invariant.gep2633, i64 %.492628
  %776 = tail call double @z_abs(ptr noundef %gep2634) #7
  %777 = getelementptr inbounds double, ptr %5, i64 %.492628
  %778 = load double, ptr %777, align 8, !tbaa !56
  %779 = fadd double %776, %778
  store double %779, ptr %777, align 8, !tbaa !56
  %780 = fadd double %776, %775
  %781 = add nuw nsw i64 %.492628, 1
  %exitcond3205.not = icmp eq i64 %781, %storemerge18752655
  br i1 %exitcond3205.not, label %._crit_edge2631, label %774, !llvm.loop !75

._crit_edge2631:                                  ; preds = %774, %772
  %.pre-phi3303 = phi i64 [ 0, %772 ], [ %773, %774 ]
  %.lcssa26472650 = phi double [ 0.000000e+00, %772 ], [ %780, %774 ]
  %782 = getelementptr %struct.doublecomplex, ptr %4, i64 %.pre-phi3303
  %783 = getelementptr %struct.doublecomplex, ptr %782, i64 %storemerge18752655
  %784 = load double, ptr %783, align 8, !tbaa !9
  %785 = fcmp oge double %784, 0.000000e+00
  %786 = fneg double %784
  %787 = select i1 %785, double %784, double %786
  %788 = fadd double %.lcssa26472650, %787
  %789 = getelementptr inbounds double, ptr %5, i64 %storemerge18752655
  store double %788, ptr %789, align 8, !tbaa !56
  %790 = add nuw nsw i64 %storemerge18752655, 1
  %791 = getelementptr %struct.doublecomplex, ptr %782, i64 %790
  %792 = load double, ptr %791, align 8, !tbaa !9
  %793 = fcmp oge double %792, 0.000000e+00
  %794 = fneg double %792
  %795 = select i1 %793, double %792, double %794
  %796 = load i64, ptr %3, align 8, !tbaa !5
  %797 = add nsw i64 %796, -1
  %798 = add nuw nsw i64 %689, %storemerge18752655
  %.not1882.not2638 = icmp slt i64 %798, %797
  br i1 %.not1882.not2638, label %.lr.ph2642, label %._crit_edge2643

.lr.ph2642:                                       ; preds = %._crit_edge2631, %.lr.ph2642
  %.51638.in2640 = phi i64 [ %.51638, %.lr.ph2642 ], [ %798, %._crit_edge2631 ]
  %.502639 = phi i64 [ %800, %.lr.ph2642 ], [ %790, %._crit_edge2631 ]
  %799 = phi double [ %802, %.lr.ph2642 ], [ %795, %._crit_edge2631 ]
  %.51638 = add nuw nsw i64 %.51638.in2640, 1
  %800 = add nuw nsw i64 %.502639, 1
  %gep2645 = getelementptr %struct.doublecomplex, ptr %782, i64 %800
  %801 = tail call double @z_abs(ptr noundef %gep2645) #7
  %802 = fadd double %801, %799
  %803 = getelementptr inbounds double, ptr %5, i64 %.51638
  %804 = load double, ptr %803, align 8, !tbaa !56
  %805 = fadd double %801, %804
  store double %805, ptr %803, align 8, !tbaa !56
  %.not1882.not = icmp slt i64 %.51638, %797
  br i1 %.not1882.not, label %.lr.ph2642, label %._crit_edge2643, !llvm.loop !76

._crit_edge2643:                                  ; preds = %.lr.ph2642, %._crit_edge2631
  %.lcssa26472651 = phi double [ %795, %._crit_edge2631 ], [ %802, %.lr.ph2642 ]
  %806 = getelementptr double, ptr %771, i64 %storemerge18752655
  %807 = load double, ptr %806, align 8, !tbaa !56
  %808 = fadd double %.lcssa26472651, %807
  store double %808, ptr %806, align 8, !tbaa !56
  %809 = add nuw nsw i64 %storemerge18752655, 1
  %exitcond3206.not = icmp eq i64 %809, %492
  br i1 %exitcond3206.not, label %.lr.ph2664, label %772, !llvm.loop !77

.lr.ph2664:                                       ; preds = %._crit_edge2643
  %810 = mul nsw i64 %492, %.01631
  %invariant.gep2667 = getelementptr %struct.doublecomplex, ptr %4, i64 %810
  br label %811

811:                                              ; preds = %.lr.ph2664, %811
  %.512662 = phi i64 [ 0, %.lr.ph2664 ], [ %818, %811 ]
  %812 = phi double [ 0.000000e+00, %.lr.ph2664 ], [ %817, %811 ]
  %gep2668 = getelementptr %struct.doublecomplex, ptr %invariant.gep2667, i64 %.512662
  %813 = tail call double @z_abs(ptr noundef %gep2668) #7
  %814 = getelementptr inbounds double, ptr %5, i64 %.512662
  %815 = load double, ptr %814, align 8, !tbaa !56
  %816 = fadd double %813, %815
  store double %816, ptr %814, align 8, !tbaa !56
  %817 = fadd double %813, %812
  %818 = add nuw i64 %.512662, 1
  %exitcond3207.not = icmp eq i64 %818, %492
  br i1 %exitcond3207.not, label %._crit_edge2665, label %811, !llvm.loop !78

._crit_edge2665:                                  ; preds = %811, %.preheader1974
  %.pre-phi3305 = phi i64 [ 0, %.preheader1974 ], [ %810, %811 ]
  %819 = phi double [ 0.000000e+00, %.preheader1974 ], [ %817, %811 ]
  %.51.lcssa = phi i64 [ 0, %.preheader1974 ], [ %492, %811 ]
  %820 = getelementptr %struct.doublecomplex, ptr %4, i64 %.51.lcssa
  %821 = getelementptr %struct.doublecomplex, ptr %820, i64 %.pre-phi3305
  %822 = load double, ptr %821, align 8, !tbaa !9
  %823 = fcmp oge double %822, 0.000000e+00
  %824 = fneg double %822
  %825 = select i1 %823, double %822, double %824
  %826 = fadd double %819, %825
  %827 = getelementptr inbounds double, ptr %5, i64 %.51.lcssa
  store double %826, ptr %827, align 8, !tbaa !56
  %828 = load i64, ptr %3, align 8, !tbaa !5
  %.not1879.not2686 = icmp slt i64 %689, %828
  br i1 %.not1879.not2686, label %.lr.ph2689, label %._crit_edge2690

.lr.ph2689:                                       ; preds = %._crit_edge2665
  %.not18802672 = icmp slt i64 %491, -1
  br label %829

829:                                              ; preds = %.lr.ph2689, %._crit_edge2676
  %storemerge18782687 = phi i64 [ %689, %.lr.ph2689 ], [ %842, %._crit_edge2676 ]
  br i1 %.not18802672, label %._crit_edge2676, label %.lr.ph2675

.lr.ph2675:                                       ; preds = %829
  %830 = mul nsw i64 %storemerge18782687, %.01631
  %invariant.gep2677 = getelementptr %struct.doublecomplex, ptr %4, i64 %830
  br label %831

831:                                              ; preds = %.lr.ph2675, %831
  %.522673 = phi i64 [ 0, %.lr.ph2675 ], [ %838, %831 ]
  %832 = phi double [ 0.000000e+00, %.lr.ph2675 ], [ %837, %831 ]
  %gep2678 = getelementptr %struct.doublecomplex, ptr %invariant.gep2677, i64 %.522673
  %833 = tail call double @z_abs(ptr noundef %gep2678) #7
  %834 = getelementptr inbounds double, ptr %5, i64 %.522673
  %835 = load double, ptr %834, align 8, !tbaa !56
  %836 = fadd double %833, %835
  store double %836, ptr %834, align 8, !tbaa !56
  %837 = fadd double %833, %832
  %838 = add nuw i64 %.522673, 1
  %exitcond3208.not = icmp eq i64 %.522673, %492
  br i1 %exitcond3208.not, label %._crit_edge2676, label %831, !llvm.loop !79

._crit_edge2676:                                  ; preds = %831, %829
  %.lcssa26802683 = phi double [ 0.000000e+00, %829 ], [ %837, %831 ]
  %839 = getelementptr inbounds double, ptr %5, i64 %storemerge18782687
  %840 = load double, ptr %839, align 8, !tbaa !56
  %841 = fadd double %.lcssa26802683, %840
  store double %841, ptr %839, align 8, !tbaa !56
  %842 = add i64 %storemerge18782687, 1
  %exitcond3209.not = icmp eq i64 %842, %828
  br i1 %exitcond3209.not, label %._crit_edge2690, label %829, !llvm.loop !80

._crit_edge2690:                                  ; preds = %._crit_edge2676, %._crit_edge2665
  %843 = tail call i64 @f2c_idamax(ptr noundef nonnull %3, ptr noundef nonnull %5, ptr noundef nonnull @c__1) #7
  %844 = getelementptr double, ptr %5, i64 %843
  %845 = getelementptr i8, ptr %844, i64 -8
  %846 = load double, ptr %845, align 8, !tbaa !56
  br label %.loopexit1984

847:                                              ; preds = %687
  %.not1854.not2785 = icmp sgt i64 %491, 0
  br i1 %.not1796.not.not.not.not.not.not.not.not, label %.preheader1971, label %.preheader1973

.preheader1973:                                   ; preds = %847
  br i1 %.not1854.not2785, label %.preheader1972, label %.preheader1972.thread

.preheader1971:                                   ; preds = %847
  br i1 %.not1854.not2785, label %._crit_edge2788, label %._crit_edge2788.thread

._crit_edge2788.thread:                           ; preds = %.preheader1971
  %848 = load double, ptr %4, align 8, !tbaa !9
  %849 = fcmp oge double %848, 0.000000e+00
  %850 = fneg double %848
  %851 = select i1 %849, double %848, double %850
  store double %851, ptr %10, align 8, !tbaa !56
  br label %.thread3364

.preheader1972:                                   ; preds = %.preheader1973
  %852 = shl i64 %492, 3
  %scevgep3210 = getelementptr i8, ptr %5, i64 %852
  %853 = add nuw nsw i64 %492, 1
  %smax3211 = tail call i64 @llvm.smax.i64(i64 %491, i64 %853)
  %854 = sub nsw i64 %smax3211, %492
  %855 = shl i64 %854, 3
  tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep3210, i8 0, i64 %855, i1 false), !tbaa !56
  %.not1866.not2714.not = icmp eq i64 %491, 1
  br i1 %.not1866.not2714.not, label %.preheader1972.thread, label %.lr.ph2716

.lr.ph2716:                                       ; preds = %.preheader1972
  %invariant.gep2704 = getelementptr double, ptr %5, i64 %492
  br label %.lr.ph2700

.lr.ph2700:                                       ; preds = %._crit_edge2701, %.lr.ph2716
  %storemerge18652715 = phi i64 [ 0, %.lr.ph2716 ], [ %865, %._crit_edge2701 ]
  %856 = mul nsw i64 %storemerge18652715, %.01631
  %invariant.gep2702 = getelementptr %struct.doublecomplex, ptr %4, i64 %856
  br label %857

857:                                              ; preds = %.lr.ph2700, %857
  %.542698 = phi i64 [ 0, %.lr.ph2700 ], [ %863, %857 ]
  %858 = phi double [ 0.000000e+00, %.lr.ph2700 ], [ %862, %857 ]
  %gep2703 = getelementptr %struct.doublecomplex, ptr %invariant.gep2702, i64 %.542698
  %859 = tail call double @z_abs(ptr noundef %gep2703) #7
  %gep2705 = getelementptr double, ptr %invariant.gep2704, i64 %.542698
  %860 = load double, ptr %gep2705, align 8, !tbaa !56
  %861 = fadd double %859, %860
  store double %861, ptr %gep2705, align 8, !tbaa !56
  %862 = fadd double %859, %858
  %863 = add nuw i64 %.542698, 1
  %exitcond3212.not = icmp eq i64 %863, %492
  br i1 %exitcond3212.not, label %._crit_edge2701, label %857, !llvm.loop !81

._crit_edge2701:                                  ; preds = %857
  %864 = getelementptr inbounds double, ptr %5, i64 %storemerge18652715
  store double %862, ptr %864, align 8, !tbaa !56
  %865 = add nuw nsw i64 %storemerge18652715, 1
  %exitcond3213.not = icmp eq i64 %865, %492
  br i1 %exitcond3213.not, label %.preheader1972.thread, label %.lr.ph2700, !llvm.loop !82

.preheader1972.thread:                            ; preds = %._crit_edge2701, %.preheader1973, %.preheader1972
  %866 = phi i64 [ 0, %.preheader1972 ], [ 0, %.preheader1973 ], [ %492, %._crit_edge2701 ]
  %867 = mul nsw i64 %866, %.01631
  %868 = getelementptr %struct.doublecomplex, ptr %4, i64 %867
  %869 = load double, ptr %868, align 8, !tbaa !9
  %870 = fcmp oge double %869, 0.000000e+00
  %871 = fneg double %869
  %872 = select i1 %870, double %869, double %871
  %.not1867.not2722 = icmp sgt i64 %491, 3
  br i1 %.not1867.not2722, label %.lr.ph2725, label %._crit_edge2726

.lr.ph2725:                                       ; preds = %.preheader1972.thread
  %invariant.gep2729 = getelementptr double, ptr %5, i64 %492
  br label %873

873:                                              ; preds = %.lr.ph2725, %873
  %.552723 = phi i64 [ 1, %.lr.ph2725 ], [ %879, %873 ]
  %874 = phi double [ %872, %.lr.ph2725 ], [ %878, %873 ]
  %gep2728 = getelementptr %struct.doublecomplex, ptr %868, i64 %.552723
  %875 = tail call double @z_abs(ptr noundef %gep2728) #7
  %gep2730 = getelementptr double, ptr %invariant.gep2729, i64 %.552723
  %876 = load double, ptr %gep2730, align 8, !tbaa !56
  %877 = fadd double %875, %876
  store double %877, ptr %gep2730, align 8, !tbaa !56
  %878 = fadd double %875, %874
  %879 = add nuw nsw i64 %.552723, 1
  %exitcond3214.not = icmp eq i64 %879, %492
  br i1 %exitcond3214.not, label %._crit_edge2726, label %873, !llvm.loop !83

._crit_edge2726:                                  ; preds = %873, %.preheader1972.thread
  %880 = phi double [ %872, %.preheader1972.thread ], [ %878, %873 ]
  %881 = getelementptr inbounds double, ptr %5, i64 %866
  %882 = load double, ptr %881, align 8, !tbaa !56
  %883 = fadd double %880, %882
  store double %883, ptr %881, align 8, !tbaa !56
  %884 = load i64, ptr %3, align 8, !tbaa !5
  %885 = add nsw i64 %884, -1
  %storemerge18682762 = add nsw i64 %492, 1
  %.not1869.not2763 = icmp slt i64 %492, %885
  br i1 %.not1869.not2763, label %.lr.ph2767, label %._crit_edge2768

.lr.ph2767:                                       ; preds = %._crit_edge2726
  %886 = xor i64 %492, -1
  %invariant.gep2770 = getelementptr double, ptr %5, i64 %886
  br label %887

887:                                              ; preds = %.lr.ph2767, %._crit_edge2750
  %storemerge1868.in2773 = phi i64 [ %storemerge18682762, %.lr.ph2767 ], [ %storemerge1868, %._crit_edge2750 ]
  %storemerge1868.in2764 = phi i64 [ %492, %.lr.ph2767 ], [ %storemerge1868.in2773, %._crit_edge2750 ]
  %888 = sub i64 %492, %storemerge1868.in2764
  %.not18712734 = icmp sgt i64 %888, -1
  %.pre3298 = mul nsw i64 %storemerge1868.in2773, %.01631
  br i1 %.not18712734, label %._crit_edge2738, label %.lr.ph2737

.lr.ph2737:                                       ; preds = %887
  %invariant.gep2740 = getelementptr %struct.doublecomplex, ptr %4, i64 %.pre3298
  %889 = sub i64 %storemerge1868.in2764, %492
  br label %890

890:                                              ; preds = %.lr.ph2737, %890
  %.562735 = phi i64 [ 0, %.lr.ph2737 ], [ %897, %890 ]
  %891 = phi double [ 0.000000e+00, %.lr.ph2737 ], [ %896, %890 ]
  %gep2741 = getelementptr %struct.doublecomplex, ptr %invariant.gep2740, i64 %.562735
  %892 = tail call double @z_abs(ptr noundef %gep2741) #7
  %893 = getelementptr inbounds double, ptr %5, i64 %.562735
  %894 = load double, ptr %893, align 8, !tbaa !56
  %895 = fadd double %892, %894
  store double %895, ptr %893, align 8, !tbaa !56
  %896 = fadd double %892, %891
  %897 = add nuw i64 %.562735, 1
  %exitcond3215.not = icmp eq i64 %897, %889
  br i1 %exitcond3215.not, label %._crit_edge2738, label %890, !llvm.loop !84

._crit_edge2738:                                  ; preds = %890, %887
  %.lcssa27542757 = phi double [ 0.000000e+00, %887 ], [ %896, %890 ]
  %.56.lcssa = phi i64 [ 0, %887 ], [ %889, %890 ]
  %898 = getelementptr %struct.doublecomplex, ptr %4, i64 %.pre3298
  %899 = getelementptr %struct.doublecomplex, ptr %898, i64 %.56.lcssa
  %900 = load double, ptr %899, align 8, !tbaa !9
  %901 = fcmp oge double %900, 0.000000e+00
  %902 = fneg double %900
  %903 = select i1 %901, double %900, double %902
  %904 = fadd double %.lcssa27542757, %903
  %gep2771 = getelementptr double, ptr %invariant.gep2770, i64 %storemerge1868.in2773
  %905 = load double, ptr %gep2771, align 8, !tbaa !56
  %906 = fadd double %904, %905
  store double %906, ptr %gep2771, align 8, !tbaa !56
  %907 = add nuw nsw i64 %.56.lcssa, 1
  %908 = getelementptr %struct.doublecomplex, ptr %898, 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
  %913 = load i64, ptr %3, align 8, !tbaa !5
  %914 = add nsw i64 %913, -1
  %.not1872.not2745 = icmp slt i64 %storemerge1868.in2773, %914
  br i1 %.not1872.not2745, label %.lr.ph2749, label %._crit_edge2750

.lr.ph2749:                                       ; preds = %._crit_edge2738, %.lr.ph2749
  %.61639.in2747 = phi i64 [ %.61639, %.lr.ph2749 ], [ %storemerge1868.in2773, %._crit_edge2738 ]
  %.572746 = phi i64 [ %916, %.lr.ph2749 ], [ %907, %._crit_edge2738 ]
  %915 = phi double [ %921, %.lr.ph2749 ], [ %912, %._crit_edge2738 ]
  %.61639 = add i64 %.61639.in2747, 1
  %916 = add nuw nsw i64 %.572746, 1
  %gep2752 = getelementptr %struct.doublecomplex, ptr %898, i64 %916
  %917 = tail call double @z_abs(ptr noundef %gep2752) #7
  %918 = getelementptr inbounds double, ptr %5, i64 %.61639
  %919 = load double, ptr %918, align 8, !tbaa !56
  %920 = fadd double %917, %919
  store double %920, ptr %918, align 8, !tbaa !56
  %921 = fadd double %917, %915
  %exitcond3216.not = icmp eq i64 %.61639, %914
  br i1 %exitcond3216.not, label %._crit_edge2750, label %.lr.ph2749, !llvm.loop !85

._crit_edge2750:                                  ; preds = %.lr.ph2749, %._crit_edge2738
  %.lcssa27542758 = phi double [ %912, %._crit_edge2738 ], [ %921, %.lr.ph2749 ]
  %922 = getelementptr inbounds double, ptr %5, i64 %storemerge1868.in2773
  %923 = load double, ptr %922, align 8, !tbaa !56
  %924 = fadd double %.lcssa27542758, %923
  store double %924, ptr %922, align 8, !tbaa !56
  %storemerge1868 = add nsw i64 %storemerge1868.in2773, 1
  %.not1869.not = icmp slt i64 %storemerge1868.in2773, %885
  br i1 %.not1869.not, label %887, label %._crit_edge2768, !llvm.loop !86

._crit_edge2768:                                  ; preds = %._crit_edge2750, %._crit_edge2726
  %925 = phi i64 [ %storemerge18682762, %._crit_edge2726 ], [ %storemerge1868, %._crit_edge2750 ]
  %.not18702775 = icmp slt i64 %491, 4
  %.pre3300 = mul nsw i64 %925, %.01631
  br i1 %.not18702775, label %._crit_edge3284, label %.lr.ph2778

.lr.ph2778:                                       ; preds = %._crit_edge2768
  %invariant.gep2781 = getelementptr %struct.doublecomplex, ptr %4, i64 %.pre3300
  %926 = add nsw i64 %492, -1
  br label %927

927:                                              ; preds = %.lr.ph2778, %927
  %.582776 = phi i64 [ 0, %.lr.ph2778 ], [ %934, %927 ]
  %928 = phi double [ 0.000000e+00, %.lr.ph2778 ], [ %933, %927 ]
  %gep2782 = getelementptr %struct.doublecomplex, ptr %invariant.gep2781, i64 %.582776
  %929 = tail call double @z_abs(ptr noundef %gep2782) #7
  %930 = getelementptr inbounds double, ptr %5, i64 %.582776
  %931 = load double, ptr %930, align 8, !tbaa !56
  %932 = fadd double %929, %931
  store double %932, ptr %930, align 8, !tbaa !56
  %933 = fadd double %929, %928
  %934 = add nuw i64 %.582776, 1
  %exitcond3217.not = icmp eq i64 %934, %926
  br i1 %exitcond3217.not, label %._crit_edge3284, label %927, !llvm.loop !87

._crit_edge3284:                                  ; preds = %927, %._crit_edge2768
  %935 = phi double [ 0.000000e+00, %._crit_edge2768 ], [ %933, %927 ]
  %.58.lcssa = phi i64 [ 0, %._crit_edge2768 ], [ %926, %927 ]
  %936 = getelementptr %struct.doublecomplex, ptr %4, i64 %.58.lcssa
  %937 = getelementptr %struct.doublecomplex, ptr %936, i64 %.pre3300
  %938 = load double, ptr %937, align 8, !tbaa !9
  %939 = fcmp oge double %938, 0.000000e+00
  %940 = fneg double %938
  %941 = select i1 %939, double %938, double %940
  %942 = fadd double %935, %941
  %943 = getelementptr inbounds double, ptr %5, i64 %.58.lcssa
  %944 = load double, ptr %943, align 8, !tbaa !56
  %945 = fadd double %944, %942
  store double %945, ptr %943, align 8, !tbaa !56
  %946 = tail call i64 @f2c_idamax(ptr noundef nonnull %3, ptr noundef nonnull %5, ptr noundef nonnull @c__1) #7
  %947 = getelementptr double, ptr %5, i64 %946
  %948 = getelementptr i8, ptr %947, i64 -8
  %949 = load double, ptr %948, align 8, !tbaa !56
  br label %.loopexit1984

._crit_edge2788:                                  ; preds = %.preheader1971
  %950 = shl i64 %492, 3
  %scevgep3218 = getelementptr i8, ptr %5, i64 %950
  %951 = add nuw nsw i64 %492, 1
  %smax3219 = tail call i64 @llvm.smax.i64(i64 %491, i64 %951)
  %952 = sub nsw i64 %smax3219, %492
  %953 = shl i64 %952, 3
  tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep3218, i8 0, i64 %953, i1 false), !tbaa !56
  %954 = load double, ptr %4, align 8, !tbaa !9
  %955 = fcmp oge double %954, 0.000000e+00
  %956 = fneg double %954
  %957 = select i1 %955, double %954, double %956
  store double %957, ptr %10, align 8, !tbaa !56
  %.not1855.not2790 = icmp ugt i64 %491, 3
  br i1 %.not1855.not2790, label %.lr.ph2793, label %.thread3364

.lr.ph2793:                                       ; preds = %._crit_edge2788
  %invariant.gep2795 = getelementptr double, ptr %5, i64 %492
  %smax3220 = tail call i64 @llvm.smax.i64(i64 %492, i64 2)
  br label %958

958:                                              ; preds = %.lr.ph2793, %958
  %.602791 = phi i64 [ 1, %.lr.ph2793 ], [ %965, %958 ]
  %959 = phi double [ %957, %.lr.ph2793 ], [ %964, %958 ]
  %960 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %.602791
  %961 = tail call double @z_abs(ptr noundef nonnull %960) #7
  %gep2796 = getelementptr double, ptr %invariant.gep2795, i64 %.602791
  %962 = load double, ptr %gep2796, align 8, !tbaa !56
  %963 = fadd double %961, %962
  store double %963, ptr %gep2796, align 8, !tbaa !56
  %964 = fadd double %961, %959
  %965 = add nuw nsw i64 %.602791, 1
  %exitcond3221.not = icmp eq i64 %965, %smax3220
  br i1 %exitcond3221.not, label %969, label %958, !llvm.loop !88

.thread3364:                                      ; preds = %._crit_edge2788.thread, %._crit_edge2788
  %.ph = phi double [ %851, %._crit_edge2788.thread ], [ %957, %._crit_edge2788 ]
  %966 = getelementptr double, ptr %5, i64 %492
  %967 = load double, ptr %966, align 8, !tbaa !56
  %968 = fadd double %.ph, %967
  store double %968, ptr %966, align 8, !tbaa !56
  br label %._crit_edge2841

969:                                              ; preds = %958
  %970 = getelementptr double, ptr %5, i64 %492
  %971 = load double, ptr %970, align 8, !tbaa !56
  %972 = fadd double %964, %971
  store double %972, ptr %970, align 8, !tbaa !56
  %invariant.gep2821 = getelementptr i8, ptr %5, i64 -8
  %.not1857.not2829 = icmp sgt i64 %491, 3
  br i1 %.not1857.not2829, label %.lr.ph2832, label %._crit_edge2841

.lr.ph2832:                                       ; preds = %969
  %973 = add nsw i64 %492, -2
  br label %974

974:                                              ; preds = %.lr.ph2832, %._crit_edge2816
  %indvars.iv3222 = phi i64 [ 0, %.lr.ph2832 ], [ %indvars.iv.next3223, %._crit_edge2816 ]
  %storemerge18562830 = phi i64 [ 1, %.lr.ph2832 ], [ %1009, %._crit_edge2816 ]
  %.not18622800 = icmp ult i64 %storemerge18562830, 2
  %.pre3294 = mul nsw i64 %storemerge18562830, %.01631
  br i1 %.not18622800, label %._crit_edge2804, label %.lr.ph2803

.lr.ph2803:                                       ; preds = %974
  %invariant.gep2806 = getelementptr %struct.doublecomplex, ptr %4, i64 %.pre3294
  br label %975

975:                                              ; preds = %.lr.ph2803, %975
  %.612801 = phi i64 [ 0, %.lr.ph2803 ], [ %982, %975 ]
  %976 = phi double [ 0.000000e+00, %.lr.ph2803 ], [ %981, %975 ]
  %gep2807 = getelementptr %struct.doublecomplex, ptr %invariant.gep2806, i64 %.612801
  %977 = tail call double @z_abs(ptr noundef %gep2807) #7
  %978 = getelementptr inbounds double, ptr %5, i64 %.612801
  %979 = load double, ptr %978, align 8, !tbaa !56
  %980 = fadd double %977, %979
  store double %980, ptr %978, align 8, !tbaa !56
  %981 = fadd double %977, %976
  %982 = add nuw nsw i64 %.612801, 1
  %exitcond3224.not = icmp eq i64 %982, %indvars.iv3222
  br i1 %exitcond3224.not, label %._crit_edge2804, label %975, !llvm.loop !89

._crit_edge2804:                                  ; preds = %975, %974
  %.lcssa28202825 = phi double [ 0.000000e+00, %974 ], [ %981, %975 ]
  %.61.lcssa = phi i64 [ 0, %974 ], [ %indvars.iv3222, %975 ]
  %983 = getelementptr %struct.doublecomplex, ptr %4, i64 %.pre3294
  %984 = getelementptr %struct.doublecomplex, ptr %983, i64 %.61.lcssa
  %985 = load double, ptr %984, align 8, !tbaa !9
  %986 = fcmp oge double %985, 0.000000e+00
  %987 = fneg double %985
  %988 = select i1 %986, double %985, double %987
  %989 = fadd double %.lcssa28202825, %988
  %gep2822 = getelementptr double, ptr %invariant.gep2821, i64 %storemerge18562830
  store double %989, ptr %gep2822, align 8, !tbaa !56
  %990 = add nuw nsw i64 %.61.lcssa, 1
  %991 = getelementptr %struct.doublecomplex, ptr %983, i64 %990
  %992 = load double, ptr %991, align 8, !tbaa !9
  %993 = fcmp oge double %992, 0.000000e+00
  %994 = fneg double %992
  %995 = select i1 %993, double %992, double %994
  %996 = load i64, ptr %3, align 8, !tbaa !5
  %997 = add nsw i64 %996, -1
  %998 = add nuw nsw i64 %492, %storemerge18562830
  %.not1863.not2811 = icmp slt i64 %998, %997
  br i1 %.not1863.not2811, label %.lr.ph2815, label %._crit_edge2816

.lr.ph2815:                                       ; preds = %._crit_edge2804, %.lr.ph2815
  %.71640.in2813 = phi i64 [ %.71640, %.lr.ph2815 ], [ %998, %._crit_edge2804 ]
  %.622812 = phi i64 [ %1000, %.lr.ph2815 ], [ %990, %._crit_edge2804 ]
  %999 = phi double [ %1002, %.lr.ph2815 ], [ %995, %._crit_edge2804 ]
  %.71640 = add nuw nsw i64 %.71640.in2813, 1
  %1000 = add nuw nsw i64 %.622812, 1
  %gep2818 = getelementptr %struct.doublecomplex, ptr %983, i64 %1000
  %1001 = tail call double @z_abs(ptr noundef %gep2818) #7
  %1002 = fadd double %1001, %999
  %1003 = getelementptr inbounds double, ptr %5, i64 %.71640
  %1004 = load double, ptr %1003, align 8, !tbaa !56
  %1005 = fadd double %1001, %1004
  store double %1005, ptr %1003, align 8, !tbaa !56
  %.not1863.not = icmp slt i64 %.71640, %997
  br i1 %.not1863.not, label %.lr.ph2815, label %._crit_edge2816, !llvm.loop !90

._crit_edge2816:                                  ; preds = %.lr.ph2815, %._crit_edge2804
  %.lcssa28202826 = phi double [ %995, %._crit_edge2804 ], [ %1002, %.lr.ph2815 ]
  %1006 = getelementptr double, ptr %970, i64 %storemerge18562830
  %1007 = load double, ptr %1006, align 8, !tbaa !56
  %1008 = fadd double %.lcssa28202826, %1007
  store double %1008, ptr %1006, align 8, !tbaa !56
  %1009 = add nuw nsw i64 %storemerge18562830, 1
  %indvars.iv.next3223 = add nuw nsw i64 %indvars.iv3222, 1
  %exitcond3225.not = icmp eq i64 %indvars.iv3222, %973
  br i1 %exitcond3225.not, label %.lr.ph2840, label %974, !llvm.loop !91

.lr.ph2840:                                       ; preds = %._crit_edge2816
  %1010 = mul nsw i64 %492, %.01631
  %invariant.gep2843 = getelementptr %struct.doublecomplex, ptr %4, i64 %1010
  %1011 = add nsw i64 %492, -1
  br label %1012

1012:                                             ; preds = %.lr.ph2840, %1012
  %.632838 = phi i64 [ 0, %.lr.ph2840 ], [ %1019, %1012 ]
  %1013 = phi double [ 0.000000e+00, %.lr.ph2840 ], [ %1018, %1012 ]
  %gep2844 = getelementptr %struct.doublecomplex, ptr %invariant.gep2843, i64 %.632838
  %1014 = tail call double @z_abs(ptr noundef %gep2844) #7
  %1015 = getelementptr inbounds double, ptr %5, i64 %.632838
  %1016 = load double, ptr %1015, align 8, !tbaa !56
  %1017 = fadd double %1014, %1016
  store double %1017, ptr %1015, align 8, !tbaa !56
  %1018 = fadd double %1014, %1013
  %1019 = add nuw i64 %.632838, 1
  %exitcond3226.not = icmp eq i64 %1019, %1011
  br i1 %exitcond3226.not, label %._crit_edge2841, label %1012, !llvm.loop !92

._crit_edge2841:                                  ; preds = %1012, %.thread3364, %969
  %.pre-phi3297 = phi i64 [ %.01631, %.thread3364 ], [ %.01631, %969 ], [ %1010, %1012 ]
  %1020 = phi double [ 0.000000e+00, %.thread3364 ], [ 0.000000e+00, %969 ], [ %1018, %1012 ]
  %.63.lcssa = phi i64 [ 0, %.thread3364 ], [ 0, %969 ], [ %1011, %1012 ]
  %1021 = getelementptr %struct.doublecomplex, ptr %4, i64 %.63.lcssa
  %1022 = getelementptr %struct.doublecomplex, ptr %1021, i64 %.pre-phi3297
  %1023 = load double, ptr %1022, align 8, !tbaa !9
  %1024 = fcmp oge double %1023, 0.000000e+00
  %1025 = fneg double %1023
  %1026 = select i1 %1024, double %1023, double %1025
  %1027 = fadd double %1020, %1026
  store double %1027, ptr %10, align 8, !tbaa !56
  %1028 = getelementptr inbounds double, ptr %5, i64 %.63.lcssa
  store double %1027, ptr %1028, align 8, !tbaa !56
  %1029 = load i64, ptr %3, align 8, !tbaa !5
  %.not1860.not2866 = icmp slt i64 %492, %1029
  br i1 %.not1860.not2866, label %.lr.ph2869, label %._crit_edge2870

.lr.ph2869:                                       ; preds = %._crit_edge2841
  %.not18612848 = icmp slt i64 %491, 2
  br label %1030

1030:                                             ; preds = %.lr.ph2869, %._crit_edge2852
  %storemerge1859.in2873.in = phi i64 [ %492, %.lr.ph2869 ], [ %storemerge1859.in2873, %._crit_edge2852 ]
  %storemerge1859.in2873 = add nsw i64 %storemerge1859.in2873.in, 1
  br i1 %.not18612848, label %._crit_edge2852, label %.lr.ph2851

.lr.ph2851:                                       ; preds = %1030
  %1031 = mul nsw i64 %storemerge1859.in2873, %.01631
  %invariant.gep2853 = getelementptr %struct.doublecomplex, ptr %4, i64 %1031
  br label %1032

1032:                                             ; preds = %.lr.ph2851, %1032
  %.642849 = phi i64 [ 0, %.lr.ph2851 ], [ %1039, %1032 ]
  %1033 = phi double [ 0.000000e+00, %.lr.ph2851 ], [ %1038, %1032 ]
  %gep2854 = getelementptr %struct.doublecomplex, ptr %invariant.gep2853, i64 %.642849
  %1034 = tail call double @z_abs(ptr noundef %gep2854) #7
  %1035 = getelementptr inbounds double, ptr %5, i64 %.642849
  %1036 = load double, ptr %1035, align 8, !tbaa !56
  %1037 = fadd double %1034, %1036
  store double %1037, ptr %1035, align 8, !tbaa !56
  %1038 = fadd double %1034, %1033
  %1039 = add nuw i64 %.642849, 1
  %exitcond3227.not = icmp eq i64 %1039, %492
  br i1 %exitcond3227.not, label %._crit_edge2852, label %1032, !llvm.loop !93

._crit_edge2852:                                  ; preds = %1032, %1030
  %.lcssa28562861 = phi double [ 0.000000e+00, %1030 ], [ %1038, %1032 ]
  %gep2858 = getelementptr double, ptr %5, i64 %storemerge1859.in2873.in
  %1040 = load double, ptr %gep2858, align 8, !tbaa !56
  %1041 = fadd double %.lcssa28562861, %1040
  store double %1041, ptr %gep2858, align 8, !tbaa !56
  %.not1860.not = icmp slt i64 %storemerge1859.in2873, %1029
  br i1 %.not1860.not, label %1030, label %._crit_edge2870, !llvm.loop !94

._crit_edge2870:                                  ; preds = %._crit_edge2852, %._crit_edge2841
  %1042 = tail call i64 @f2c_idamax(ptr noundef nonnull %3, ptr noundef nonnull %5, ptr noundef nonnull @c__1) #7
  %1043 = getelementptr double, ptr %5, i64 %1042
  %1044 = getelementptr i8, ptr %1043, i64 -8
  %1045 = load double, ptr %1044, align 8, !tbaa !56
  br label %.loopexit1984

1046:                                             ; preds = %487
  %1047 = tail call i64 @lsame_(ptr noundef nonnull %0, ptr noundef nonnull @.str.5) #7
  %.not1801 = icmp eq i64 %1047, 0
  br i1 %.not1801, label %1048, label %1050

1048:                                             ; preds = %1046
  %1049 = tail call i64 @lsame_(ptr noundef nonnull %0, ptr noundef nonnull @.str.6) #7
  %.not1802 = icmp eq i64 %1049, 0
  br i1 %.not1802, label %.loopexit1984, label %1050

1050:                                             ; preds = %1048, %1046
  %1051 = load i64, ptr %3, align 8, !tbaa !5
  %1052 = add nsw i64 %1051, 1
  %1053 = sdiv i64 %1052, 2
  store i64 %1053, ptr %9, align 8, !tbaa !5
  store double 0.000000e+00, ptr %11, align 8, !tbaa !56
  store double 1.000000e+00, ptr %10, align 8, !tbaa !56
  %.not1803 = icmp eq i64 %15, 0
  br i1 %.not1803, label %1354, label %1054

1054:                                             ; preds = %1050
  br i1 %.not, label %1055, label %1199

1055:                                             ; preds = %1054
  store i64 0, ptr %8, align 8, !tbaa !5
  br i1 %.not1796.not.not.not.not.not.not.not.not, label %.preheader1981, label %1056

.preheader1981:                                   ; preds = %1055
  %invariant.gep2433 = getelementptr i8, ptr %4, i64 16
  %.not1844.not2435 = icmp sgt i64 %1051, 0
  br i1 %.not1844.not2435, label %.lr.ph2437, label %._crit_edge2438

1056:                                             ; preds = %1055
  %1057 = add nsw i64 %1053, -3
  %.not18492413 = icmp slt i64 %1051, 5
  br i1 %.not18492413, label %._crit_edge2417, label %.lr.ph2416

.lr.ph2416:                                       ; preds = %1056, %.lr.ph2416
  %storemerge18482414 = phi i64 [ %1067, %.lr.ph2416 ], [ 0, %1056 ]
  %1058 = load i64, ptr %9, align 8, !tbaa !5
  %reass.sub3028 = sub i64 %1058, %storemerge18482414
  %1059 = add i64 %reass.sub3028, -2
  store i64 %1059, ptr %7, align 8, !tbaa !5
  %1060 = mul nsw i64 %storemerge18482414, %.01631
  %1061 = getelementptr %struct.doublecomplex, ptr %4, i64 %1058
  %1062 = getelementptr %struct.doublecomplex, ptr %1061, i64 %storemerge18482414
  %1063 = getelementptr i8, ptr %1062, i64 16
  %1064 = getelementptr %struct.doublecomplex, ptr %1063, i64 %1060
  %1065 = call i32 @zlassq_(ptr noundef nonnull %7, ptr noundef %1064, ptr noundef nonnull @c__1, ptr noundef nonnull %11, ptr noundef nonnull %10) #7
  %1066 = load i64, ptr %8, align 8, !tbaa !5
  %1067 = add nsw i64 %1066, 1
  store i64 %1067, ptr %8, align 8, !tbaa !5
  %.not1849.not = icmp slt i64 %1066, %1057
  br i1 %.not1849.not, label %.lr.ph2416, label %._crit_edge2417.loopexit, !llvm.loop !95

._crit_edge2417.loopexit:                         ; preds = %.lr.ph2416
  %.pre3257 = load i64, ptr %9, align 8, !tbaa !5
  br label %._crit_edge2417

._crit_edge2417:                                  ; preds = %._crit_edge2417.loopexit, %1056
  %1068 = phi i64 [ %.pre3257, %._crit_edge2417.loopexit ], [ %1053, %1056 ]
  store i64 0, ptr %8, align 8, !tbaa !5
  %.not1851.not2418 = icmp sgt i64 %1068, 0
  br i1 %.not1851.not2418, label %.lr.ph2421, label %._crit_edge2422.thread

._crit_edge2422.thread:                           ; preds = %._crit_edge2417
  %1069 = load double, ptr %10, align 8, !tbaa !56
  %1070 = fadd double %1069, %1069
  %1071 = add i64 %1068, -1
  br label %._crit_edge2430

.lr.ph2421:                                       ; preds = %._crit_edge2417, %.lr.ph2421
  %storemerge18502419 = phi i64 [ %1079, %.lr.ph2421 ], [ 0, %._crit_edge2417 ]
  %1072 = load i64, ptr %9, align 8, !tbaa !5
  %1073 = add nsw i64 %storemerge18502419, -1
  %1074 = add i64 %1073, %1072
  store i64 %1074, ptr %7, align 8, !tbaa !5
  %1075 = mul nsw i64 %storemerge18502419, %.01631
  %1076 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %1075
  %1077 = call i32 @zlassq_(ptr noundef nonnull %7, ptr noundef %1076, ptr noundef nonnull @c__1, ptr noundef nonnull %11, ptr noundef nonnull %10) #7
  %1078 = load i64, ptr %8, align 8, !tbaa !5
  %1079 = add nsw i64 %1078, 1
  store i64 %1079, ptr %8, align 8, !tbaa !5
  %.not1851.not = icmp slt i64 %1079, %1068
  br i1 %.not1851.not, label %.lr.ph2421, label %._crit_edge2422, !llvm.loop !96

._crit_edge2422:                                  ; preds = %.lr.ph2421
  %.pre3258 = load i64, ptr %9, align 8, !tbaa !5
  %1080 = load double, ptr %10, align 8, !tbaa !56
  %1081 = fadd double %1080, %1080
  %1082 = add i64 %.pre3258, -1
  %.not18522425 = icmp slt i64 %.pre3258, 2
  br i1 %.not18522425, label %._crit_edge2430, label %.lr.ph2429

.lr.ph2429:                                       ; preds = %._crit_edge2422
  %.promoted2423 = load double, ptr %11, align 8, !tbaa !56
  %1083 = add i64 %.01631, 1
  %invariant.gep3689 = getelementptr i8, ptr %4, i64 16
  br label %1084

1084:                                             ; preds = %.lr.ph2429, %1113
  %.816412427 = phi i64 [ %1082, %.lr.ph2429 ], [ %1116, %1113 ]
  %.652426 = phi i64 [ 0, %.lr.ph2429 ], [ %1117, %1113 ]
  %1085 = phi double [ %.promoted2423, %.lr.ph2429 ], [ %1115, %1113 ]
  %1086 = phi double [ %1081, %.lr.ph2429 ], [ %1114, %1113 ]
  %1087 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %.816412427
  %1088 = load double, ptr %1087, align 8, !tbaa !9
  %1089 = fcmp une double %1088, 0.000000e+00
  br i1 %1089, label %1090, label %1099

1090:                                             ; preds = %1084
  %1091 = fcmp olt double %1085, %1088
  br i1 %1091, label %1092, label %1096

1092:                                             ; preds = %1090
  %1093 = fdiv double %1085, %1088
  %1094 = fmul double %1093, %1093
  %1095 = call double @llvm.fmuladd.f64(double %1086, double %1094, double 1.000000e+00)
  store double %1088, ptr %11, align 8, !tbaa !56
  br label %1099

1096:                                             ; preds = %1090
  %1097 = fdiv double %1088, %1085
  %1098 = call double @llvm.fmuladd.f64(double %1097, double %1097, double %1086)
  br label %1099

1099:                                             ; preds = %1092, %1096, %1084
  %1100 = phi double [ %1095, %1092 ], [ %1098, %1096 ], [ %1086, %1084 ]
  %1101 = phi double [ %1088, %1092 ], [ %1085, %1096 ], [ %1085, %1084 ]
  %gep3690 = getelementptr %struct.doublecomplex, ptr %invariant.gep3689, i64 %.816412427
  %1102 = load double, ptr %gep3690, align 8, !tbaa !9
  %1103 = fcmp une double %1102, 0.000000e+00
  br i1 %1103, label %1104, label %1113

1104:                                             ; preds = %1099
  %1105 = fcmp olt double %1101, %1102
  br i1 %1105, label %1106, label %1110

1106:                                             ; preds = %1104
  %1107 = fdiv double %1101, %1102
  %1108 = fmul double %1107, %1107
  %1109 = call double @llvm.fmuladd.f64(double %1100, double %1108, double 1.000000e+00)
  store double %1102, ptr %11, align 8, !tbaa !56
  br label %1113

1110:                                             ; preds = %1104
  %1111 = fdiv double %1102, %1101
  %1112 = call double @llvm.fmuladd.f64(double %1111, double %1111, double %1100)
  br label %1113

1113:                                             ; preds = %1106, %1110, %1099
  %1114 = phi double [ %1109, %1106 ], [ %1112, %1110 ], [ %1100, %1099 ]
  %1115 = phi double [ %1102, %1106 ], [ %1101, %1110 ], [ %1101, %1099 ]
  %1116 = add i64 %1083, %.816412427
  %1117 = add nuw i64 %.652426, 1
  %exitcond3190.not = icmp eq i64 %1117, %1082
  br i1 %exitcond3190.not, label %._crit_edge2430, label %1084, !llvm.loop !97

._crit_edge2430:                                  ; preds = %1113, %._crit_edge2422.thread, %._crit_edge2422
  %1118 = phi double [ %1081, %._crit_edge2422 ], [ %1070, %._crit_edge2422.thread ], [ %1114, %1113 ]
  %.81641.lcssa = phi i64 [ %1082, %._crit_edge2422 ], [ %1071, %._crit_edge2422.thread ], [ %1116, %1113 ]
  %1119 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %.81641.lcssa
  %1120 = load double, ptr %1119, align 8, !tbaa !9
  %1121 = fcmp une double %1120, 0.000000e+00
  br i1 %1121, label %1122, label %.loopexit

1122:                                             ; preds = %._crit_edge2430
  %1123 = load double, ptr %11, align 8, !tbaa !56
  %1124 = fcmp olt double %1123, %1120
  br i1 %1124, label %1125, label %1129

1125:                                             ; preds = %1122
  %1126 = fdiv double %1123, %1120
  %1127 = fmul double %1126, %1126
  %1128 = call double @llvm.fmuladd.f64(double %1118, double %1127, double 1.000000e+00)
  store double %1120, ptr %11, align 8, !tbaa !56
  br label %.loopexit

1129:                                             ; preds = %1122
  %1130 = fdiv double %1120, %1123
  %1131 = call double @llvm.fmuladd.f64(double %1130, double %1130, double %1118)
  br label %.loopexit

.lr.ph2437:                                       ; preds = %.preheader1981, %.lr.ph2437
  %storemerge18432436 = phi i64 [ %1139, %.lr.ph2437 ], [ 0, %.preheader1981 ]
  %1132 = load i64, ptr %3, align 8, !tbaa !5
  %1133 = xor i64 %storemerge18432436, -1
  %1134 = add i64 %1132, %1133
  store i64 %1134, ptr %7, align 8, !tbaa !5
  %1135 = mul nsw i64 %storemerge18432436, %.01631
  %gep2434 = getelementptr %struct.doublecomplex, ptr %invariant.gep2433, i64 %storemerge18432436
  %1136 = getelementptr %struct.doublecomplex, ptr %gep2434, i64 %1135
  %1137 = call i32 @zlassq_(ptr noundef nonnull %7, ptr noundef %1136, ptr noundef nonnull @c__1, ptr noundef nonnull %11, ptr noundef nonnull %10) #7
  %1138 = load i64, ptr %8, align 8, !tbaa !5
  %1139 = add nsw i64 %1138, 1
  store i64 %1139, ptr %8, align 8, !tbaa !5
  %.not1844.not = icmp slt i64 %1139, %1053
  br i1 %.not1844.not, label %.lr.ph2437, label %._crit_edge2438.loopexit, !llvm.loop !98

._crit_edge2438.loopexit:                         ; preds = %.lr.ph2437
  %.pre3259 = load i64, ptr %9, align 8, !tbaa !5
  br label %._crit_edge2438

._crit_edge2438:                                  ; preds = %._crit_edge2438.loopexit, %.preheader1981
  %1140 = phi i64 [ %.pre3259, %._crit_edge2438.loopexit ], [ %1053, %.preheader1981 ]
  %1141 = add nsw i64 %1140, -2
  store i64 1, ptr %8, align 8, !tbaa !5
  %.not18462439 = icmp slt i64 %1140, 3
  br i1 %.not18462439, label %._crit_edge2443, label %.lr.ph2442

.lr.ph2442:                                       ; preds = %._crit_edge2438, %.lr.ph2442
  %storemerge18452440 = phi i64 [ %1147, %.lr.ph2442 ], [ 1, %._crit_edge2438 ]
  %1142 = add nsw i64 %storemerge18452440, 1
  %1143 = mul nsw i64 %1142, %.01631
  %1144 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %1143
  %1145 = call i32 @zlassq_(ptr noundef nonnull %8, ptr noundef %1144, ptr noundef nonnull @c__1, ptr noundef nonnull %11, ptr noundef nonnull %10) #7
  %1146 = load i64, ptr %8, align 8, !tbaa !5
  %1147 = add nsw i64 %1146, 1
  store i64 %1147, ptr %8, align 8, !tbaa !5
  %.not1846.not = icmp slt i64 %1146, %1141
  br i1 %.not1846.not, label %.lr.ph2442, label %._crit_edge2443, !llvm.loop !99

._crit_edge2443:                                  ; preds = %.lr.ph2442, %._crit_edge2438
  %1148 = load double, ptr %10, align 8, !tbaa !56
  %1149 = fadd double %1148, %1148
  %1150 = load double, ptr %4, align 8, !tbaa !9
  %1151 = fcmp une double %1150, 0.000000e+00
  br i1 %1151, label %1152, label %1162

1152:                                             ; preds = %._crit_edge2443
  %1153 = load double, ptr %11, align 8, !tbaa !56
  %1154 = fcmp olt double %1153, %1150
  br i1 %1154, label %1155, label %1159

1155:                                             ; preds = %1152
  %1156 = fdiv double %1153, %1150
  %1157 = fmul double %1156, %1156
  %1158 = call double @llvm.fmuladd.f64(double %1149, double %1157, double 1.000000e+00)
  store double %1150, ptr %11, align 8, !tbaa !56
  br label %1162

1159:                                             ; preds = %1152
  %1160 = fdiv double %1150, %1153
  %1161 = call double @llvm.fmuladd.f64(double %1160, double %1160, double %1149)
  br label %1162

1162:                                             ; preds = %1155, %1159, %._crit_edge2443
  %.promoted2445 = phi double [ %1158, %1155 ], [ %1161, %1159 ], [ %1149, %._crit_edge2443 ]
  %1163 = load i64, ptr %9, align 8, !tbaa !5
  %.not1847.not2446 = icmp sgt i64 %1163, 1
  br i1 %.not1847.not2446, label %.lr.ph2450, label %.loopexit

.lr.ph2450:                                       ; preds = %1162
  %.promoted2444 = load double, ptr %11, align 8, !tbaa !56
  %1164 = add i64 %.01631, 1
  %invariant.gep3691 = getelementptr i8, ptr %4, i64 16
  br label %1165

1165:                                             ; preds = %.lr.ph2450, %1194
  %.916422448 = phi i64 [ %.01631, %.lr.ph2450 ], [ %1197, %1194 ]
  %.662447 = phi i64 [ 1, %.lr.ph2450 ], [ %1198, %1194 ]
  %1166 = phi double [ %.promoted2444, %.lr.ph2450 ], [ %1196, %1194 ]
  %1167 = phi double [ %.promoted2445, %.lr.ph2450 ], [ %1195, %1194 ]
  %1168 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %.916422448
  %1169 = load double, ptr %1168, align 8, !tbaa !9
  %1170 = fcmp une double %1169, 0.000000e+00
  br i1 %1170, label %1171, label %1180

1171:                                             ; preds = %1165
  %1172 = fcmp olt double %1166, %1169
  br i1 %1172, label %1173, label %1177

1173:                                             ; preds = %1171
  %1174 = fdiv double %1166, %1169
  %1175 = fmul double %1174, %1174
  %1176 = call double @llvm.fmuladd.f64(double %1167, double %1175, double 1.000000e+00)
  store double %1169, ptr %11, align 8, !tbaa !56
  br label %1180

1177:                                             ; preds = %1171
  %1178 = fdiv double %1169, %1166
  %1179 = call double @llvm.fmuladd.f64(double %1178, double %1178, double %1167)
  br label %1180

1180:                                             ; preds = %1173, %1177, %1165
  %1181 = phi double [ %1176, %1173 ], [ %1179, %1177 ], [ %1167, %1165 ]
  %1182 = phi double [ %1169, %1173 ], [ %1166, %1177 ], [ %1166, %1165 ]
  %gep3692 = getelementptr %struct.doublecomplex, ptr %invariant.gep3691, i64 %.916422448
  %1183 = load double, ptr %gep3692, align 8, !tbaa !9
  %1184 = fcmp une double %1183, 0.000000e+00
  br i1 %1184, label %1185, label %1194

1185:                                             ; preds = %1180
  %1186 = fcmp olt double %1182, %1183
  br i1 %1186, label %1187, label %1191

1187:                                             ; preds = %1185
  %1188 = fdiv double %1182, %1183
  %1189 = fmul double %1188, %1188
  %1190 = call double @llvm.fmuladd.f64(double %1181, double %1189, double 1.000000e+00)
  store double %1183, ptr %11, align 8, !tbaa !56
  br label %1194

1191:                                             ; preds = %1185
  %1192 = fdiv double %1183, %1182
  %1193 = call double @llvm.fmuladd.f64(double %1192, double %1192, double %1181)
  br label %1194

1194:                                             ; preds = %1187, %1191, %1180
  %1195 = phi double [ %1190, %1187 ], [ %1193, %1191 ], [ %1181, %1180 ]
  %1196 = phi double [ %1183, %1187 ], [ %1182, %1191 ], [ %1182, %1180 ]
  %1197 = add i64 %1164, %.916422448
  %1198 = add nuw nsw i64 %.662447, 1
  %exitcond3191.not = icmp eq i64 %1198, %1163
  br i1 %exitcond3191.not, label %.loopexit, label %1165, !llvm.loop !100

1199:                                             ; preds = %1054
  br i1 %.not1796.not.not.not.not.not.not.not.not, label %.preheader1982, label %1200

.preheader1982:                                   ; preds = %1199
  store i64 1, ptr %8, align 8, !tbaa !5
  %.not1829.not2387 = icmp sgt i64 %1051, 2
  br i1 %.not1829.not2387, label %.lr.ph2389, label %._crit_edge2390

1200:                                             ; preds = %1199
  %1201 = add nsw i64 %1053, -2
  store i64 1, ptr %8, align 8, !tbaa !5
  %.not18362361 = icmp slt i64 %1051, 5
  br i1 %.not18362361, label %._crit_edge2365, label %.lr.ph2364

.lr.ph2364:                                       ; preds = %1200, %.lr.ph2364
  %storemerge18352362 = phi i64 [ %1208, %.lr.ph2364 ], [ 1, %1200 ]
  %1202 = load i64, ptr %9, align 8, !tbaa !5
  %1203 = add nsw i64 %1202, %storemerge18352362
  %1204 = mul nsw i64 %1203, %.01631
  %1205 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %1204
  %1206 = call i32 @zlassq_(ptr noundef nonnull %8, ptr noundef %1205, ptr noundef nonnull @c__1, ptr noundef nonnull %11, ptr noundef nonnull %10) #7
  %1207 = load i64, ptr %8, align 8, !tbaa !5
  %1208 = add nsw i64 %1207, 1
  store i64 %1208, ptr %8, align 8, !tbaa !5
  %.not1836.not = icmp slt i64 %1207, %1201
  br i1 %.not1836.not, label %.lr.ph2364, label %._crit_edge2365.loopexit, !llvm.loop !101

._crit_edge2365.loopexit:                         ; preds = %.lr.ph2364
  %.pre3249 = load i64, ptr %9, align 8, !tbaa !5
  %.pre3278 = add nsw i64 %.pre3249, -2
  br label %._crit_edge2365

._crit_edge2365:                                  ; preds = %._crit_edge2365.loopexit, %1200
  %.pre-phi3279 = phi i64 [ %.pre3278, %._crit_edge2365.loopexit ], [ %1201, %1200 ]
  %1209 = phi i64 [ %.pre3249, %._crit_edge2365.loopexit ], [ %1053, %1200 ]
  store i64 0, ptr %8, align 8, !tbaa !5
  %.not18382366 = icmp slt i64 %1209, 2
  br i1 %.not18382366, label %._crit_edge2377, label %.lr.ph2369

.lr.ph2369:                                       ; preds = %._crit_edge2365, %.lr.ph2369
  %storemerge18372367 = phi i64 [ %1214, %.lr.ph2369 ], [ 0, %._crit_edge2365 ]
  %1210 = mul nsw i64 %storemerge18372367, %.01631
  %1211 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %1210
  %1212 = call i32 @zlassq_(ptr noundef nonnull %9, ptr noundef %1211, ptr noundef nonnull @c__1, ptr noundef nonnull %11, ptr noundef nonnull %10) #7
  %1213 = load i64, ptr %8, align 8, !tbaa !5
  %1214 = add nsw i64 %1213, 1
  store i64 %1214, ptr %8, align 8, !tbaa !5
  %.not1838.not = icmp slt i64 %1213, %.pre-phi3279
  br i1 %.not1838.not, label %.lr.ph2369, label %._crit_edge2370, !llvm.loop !102

._crit_edge2370:                                  ; preds = %.lr.ph2369
  %.pre3250 = load i64, ptr %9, align 8, !tbaa !5
  %.pre3280 = add nsw i64 %.pre3250, -2
  %invariant.gep2371 = getelementptr i8, ptr %4, i64 16
  store i64 0, ptr %8, align 8, !tbaa !5
  %.not18402373 = icmp slt i64 %.pre3250, 2
  br i1 %.not18402373, label %._crit_edge2377, label %.lr.ph2376

.lr.ph2376:                                       ; preds = %._crit_edge2370, %.lr.ph2376
  %storemerge18392374 = phi i64 [ %1224, %.lr.ph2376 ], [ 0, %._crit_edge2370 ]
  %1215 = load i64, ptr %9, align 8, !tbaa !5
  %1216 = xor i64 %storemerge18392374, -1
  %1217 = add i64 %1215, %1216
  store i64 %1217, ptr %7, align 8, !tbaa !5
  %1218 = add nsw i64 %storemerge18392374, -1
  %1219 = add i64 %1218, %1215
  %1220 = mul nsw i64 %1219, %.01631
  %gep2372 = getelementptr %struct.doublecomplex, ptr %invariant.gep2371, i64 %storemerge18392374
  %1221 = getelementptr %struct.doublecomplex, ptr %gep2372, i64 %1220
  %1222 = call i32 @zlassq_(ptr noundef nonnull %7, ptr noundef %1221, ptr noundef nonnull @c__1, ptr noundef nonnull %11, ptr noundef nonnull %10) #7
  %1223 = load i64, ptr %8, align 8, !tbaa !5
  %1224 = add nsw i64 %1223, 1
  store i64 %1224, ptr %8, align 8, !tbaa !5
  %.not1840.not = icmp slt i64 %1223, %.pre3280
  br i1 %.not1840.not, label %.lr.ph2376, label %._crit_edge2377.loopexit, !llvm.loop !103

._crit_edge2377.loopexit:                         ; preds = %.lr.ph2376
  %.pre3251 = load i64, ptr %9, align 8, !tbaa !5
  br label %._crit_edge2377

._crit_edge2377:                                  ; preds = %._crit_edge2365, %._crit_edge2377.loopexit, %._crit_edge2370
  %1225 = phi i64 [ %.pre3251, %._crit_edge2377.loopexit ], [ %.pre3250, %._crit_edge2370 ], [ %1209, %._crit_edge2365 ]
  %1226 = load double, ptr %10, align 8, !tbaa !56
  %1227 = fadd double %1226, %1226
  %1228 = mul nsw i64 %1225, %.01631
  %1229 = sub nsw i64 %1228, %.01631
  %1230 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %1229
  %1231 = load double, ptr %1230, align 8, !tbaa !9
  %1232 = fcmp une double %1231, 0.000000e+00
  br i1 %1232, label %1233, label %1243

1233:                                             ; preds = %._crit_edge2377
  %1234 = load double, ptr %11, align 8, !tbaa !56
  %1235 = fcmp olt double %1234, %1231
  br i1 %1235, label %1236, label %1240

1236:                                             ; preds = %1233
  %1237 = fdiv double %1234, %1231
  %1238 = fmul double %1237, %1237
  %1239 = call double @llvm.fmuladd.f64(double %1227, double %1238, double 1.000000e+00)
  store double %1231, ptr %11, align 8, !tbaa !56
  br label %1243

1240:                                             ; preds = %1233
  %1241 = fdiv double %1231, %1234
  %1242 = call double @llvm.fmuladd.f64(double %1241, double %1241, double %1227)
  br label %1243

1243:                                             ; preds = %1236, %1240, %._crit_edge2377
  %.promoted2379 = phi double [ %1239, %1236 ], [ %1242, %1240 ], [ %1227, %._crit_edge2377 ]
  %1244 = load i64, ptr %3, align 8, !tbaa !5
  %.not1842.not2380 = icmp slt i64 %1225, %1244
  br i1 %.not1842.not2380, label %.lr.ph2384, label %.loopexit

.lr.ph2384:                                       ; preds = %1243
  %.promoted2378 = load double, ptr %11, align 8, !tbaa !56
  %1245 = add i64 %.01631, 1
  %invariant.gep3685 = getelementptr i8, ptr %4, i64 16
  br label %1246

1246:                                             ; preds = %.lr.ph2384, %1275
  %.1016432382 = phi i64 [ %1228, %.lr.ph2384 ], [ %1278, %1275 ]
  %storemerge18412381 = phi i64 [ %1225, %.lr.ph2384 ], [ %1279, %1275 ]
  %1247 = phi double [ %.promoted2378, %.lr.ph2384 ], [ %1277, %1275 ]
  %1248 = phi double [ %.promoted2379, %.lr.ph2384 ], [ %1276, %1275 ]
  %1249 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %.1016432382
  %1250 = load double, ptr %1249, align 8, !tbaa !9
  %1251 = fcmp une double %1250, 0.000000e+00
  br i1 %1251, label %1252, label %1261

1252:                                             ; preds = %1246
  %1253 = fcmp olt double %1247, %1250
  br i1 %1253, label %1254, label %1258

1254:                                             ; preds = %1252
  %1255 = fdiv double %1247, %1250
  %1256 = fmul double %1255, %1255
  %1257 = call double @llvm.fmuladd.f64(double %1248, double %1256, double 1.000000e+00)
  store double %1250, ptr %11, align 8, !tbaa !56
  br label %1261

1258:                                             ; preds = %1252
  %1259 = fdiv double %1250, %1247
  %1260 = call double @llvm.fmuladd.f64(double %1259, double %1259, double %1248)
  br label %1261

1261:                                             ; preds = %1254, %1258, %1246
  %1262 = phi double [ %1257, %1254 ], [ %1260, %1258 ], [ %1248, %1246 ]
  %1263 = phi double [ %1250, %1254 ], [ %1247, %1258 ], [ %1247, %1246 ]
  %gep3686 = getelementptr %struct.doublecomplex, ptr %invariant.gep3685, i64 %.1016432382
  %1264 = load double, ptr %gep3686, align 8, !tbaa !9
  %1265 = fcmp une double %1264, 0.000000e+00
  br i1 %1265, label %1266, label %1275

1266:                                             ; preds = %1261
  %1267 = fcmp olt double %1263, %1264
  br i1 %1267, label %1268, label %1272

1268:                                             ; preds = %1266
  %1269 = fdiv double %1263, %1264
  %1270 = fmul double %1269, %1269
  %1271 = call double @llvm.fmuladd.f64(double %1262, double %1270, double 1.000000e+00)
  store double %1264, ptr %11, align 8, !tbaa !56
  br label %1275

1272:                                             ; preds = %1266
  %1273 = fdiv double %1264, %1263
  %1274 = call double @llvm.fmuladd.f64(double %1273, double %1273, double %1262)
  br label %1275

1275:                                             ; preds = %1268, %1272, %1261
  %1276 = phi double [ %1271, %1268 ], [ %1274, %1272 ], [ %1262, %1261 ]
  %1277 = phi double [ %1264, %1268 ], [ %1263, %1272 ], [ %1263, %1261 ]
  %1278 = add i64 %1245, %.1016432382
  %1279 = add nsw i64 %storemerge18412381, 1
  %exitcond3188.not = icmp eq i64 %1279, %1244
  br i1 %exitcond3188.not, label %.loopexit, label %1246, !llvm.loop !104

.lr.ph2389:                                       ; preds = %.preheader1982, %.lr.ph2389
  %storemerge18282388 = phi i64 [ %1284, %.lr.ph2389 ], [ 1, %.preheader1982 ]
  %1280 = mul nsw i64 %storemerge18282388, %.01631
  %1281 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %1280
  %1282 = call i32 @zlassq_(ptr noundef nonnull %8, ptr noundef %1281, ptr noundef nonnull @c__1, ptr noundef nonnull %11, ptr noundef nonnull %10) #7
  %1283 = load i64, ptr %8, align 8, !tbaa !5
  %1284 = add nsw i64 %1283, 1
  store i64 %1284, ptr %8, align 8, !tbaa !5
  %.not1829.not = icmp slt i64 %1284, %1053
  br i1 %.not1829.not, label %.lr.ph2389, label %._crit_edge2390.loopexit, !llvm.loop !105

._crit_edge2390.loopexit:                         ; preds = %.lr.ph2389
  %.pre3253 = load i64, ptr %3, align 8, !tbaa !5
  %.pre3254 = load i64, ptr %9, align 8, !tbaa !5
  br label %._crit_edge2390

._crit_edge2390:                                  ; preds = %._crit_edge2390.loopexit, %.preheader1982
  %1285 = phi i64 [ %.pre3254, %._crit_edge2390.loopexit ], [ %1053, %.preheader1982 ]
  %1286 = phi i64 [ %.pre3253, %._crit_edge2390.loopexit ], [ %1051, %.preheader1982 ]
  store i64 %1285, ptr %8, align 8, !tbaa !5
  %.not1831.not2391 = icmp slt i64 %1285, %1286
  br i1 %.not1831.not2391, label %.lr.ph2394, label %._crit_edge2395

.lr.ph2394:                                       ; preds = %._crit_edge2390, %.lr.ph2394
  %storemerge18302392 = phi i64 [ %1291, %.lr.ph2394 ], [ %1285, %._crit_edge2390 ]
  %1287 = mul nsw i64 %storemerge18302392, %.01631
  %1288 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %1287
  %1289 = call i32 @zlassq_(ptr noundef nonnull %9, ptr noundef %1288, ptr noundef nonnull @c__1, ptr noundef nonnull %11, ptr noundef nonnull %10) #7
  %1290 = load i64, ptr %8, align 8, !tbaa !5
  %1291 = add nsw i64 %1290, 1
  store i64 %1291, ptr %8, align 8, !tbaa !5
  %.not1831.not = icmp slt i64 %1291, %1286
  br i1 %.not1831.not, label %.lr.ph2394, label %._crit_edge2395.loopexit, !llvm.loop !106

._crit_edge2395.loopexit:                         ; preds = %.lr.ph2394
  %.pre3255 = load i64, ptr %9, align 8, !tbaa !5
  br label %._crit_edge2395

._crit_edge2395:                                  ; preds = %._crit_edge2395.loopexit, %._crit_edge2390
  %1292 = phi i64 [ %.pre3255, %._crit_edge2395.loopexit ], [ %1285, %._crit_edge2390 ]
  %1293 = add nsw i64 %1292, -3
  %invariant.gep2396 = getelementptr i8, ptr %4, i64 32
  store i64 0, ptr %8, align 8, !tbaa !5
  %.not18332398 = icmp slt i64 %1292, 3
  br i1 %.not18332398, label %._crit_edge2402, label %.lr.ph2401

.lr.ph2401:                                       ; preds = %._crit_edge2395, %.lr.ph2401
  %storemerge18322399 = phi i64 [ %1300, %.lr.ph2401 ], [ 0, %._crit_edge2395 ]
  %1294 = load i64, ptr %9, align 8, !tbaa !5
  %reass.sub = sub i64 %1294, %storemerge18322399
  %1295 = add i64 %reass.sub, -2
  store i64 %1295, ptr %7, align 8, !tbaa !5
  %1296 = mul nsw i64 %storemerge18322399, %.01631
  %gep2397 = getelementptr %struct.doublecomplex, ptr %invariant.gep2396, i64 %storemerge18322399
  %1297 = getelementptr %struct.doublecomplex, ptr %gep2397, i64 %1296
  %1298 = call i32 @zlassq_(ptr noundef nonnull %7, ptr noundef %1297, ptr noundef nonnull @c__1, ptr noundef nonnull %11, ptr noundef nonnull %10) #7
  %1299 = load i64, ptr %8, align 8, !tbaa !5
  %1300 = add nsw i64 %1299, 1
  store i64 %1300, ptr %8, align 8, !tbaa !5
  %.not1833.not = icmp slt i64 %1299, %1293
  br i1 %.not1833.not, label %.lr.ph2401, label %._crit_edge2402.loopexit, !llvm.loop !107

._crit_edge2402.loopexit:                         ; preds = %.lr.ph2401
  %.pre3256 = load i64, ptr %9, align 8, !tbaa !5
  br label %._crit_edge2402

._crit_edge2402:                                  ; preds = %._crit_edge2402.loopexit, %._crit_edge2395
  %1301 = phi i64 [ %.pre3256, %._crit_edge2402.loopexit ], [ %1292, %._crit_edge2395 ]
  %1302 = load double, ptr %10, align 8, !tbaa !56
  %1303 = fadd double %1302, %1302
  %.not18342405 = icmp slt i64 %1301, 2
  br i1 %.not18342405, label %._crit_edge2410, label %.lr.ph2409

.lr.ph2409:                                       ; preds = %._crit_edge2402
  %.promoted2403 = load double, ptr %11, align 8, !tbaa !56
  %1304 = add i64 %.01631, 1
  %1305 = add nsw i64 %1301, -2
  %invariant.gep3687 = getelementptr i8, ptr %4, i64 16
  br label %1306

1306:                                             ; preds = %.lr.ph2409, %1335
  %.1116442407 = phi i64 [ 0, %.lr.ph2409 ], [ %1338, %1335 ]
  %.672406 = phi i64 [ 0, %.lr.ph2409 ], [ %1339, %1335 ]
  %1307 = phi double [ %.promoted2403, %.lr.ph2409 ], [ %1337, %1335 ]
  %1308 = phi double [ %1303, %.lr.ph2409 ], [ %1336, %1335 ]
  %1309 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %.1116442407
  %1310 = load double, ptr %1309, align 8, !tbaa !9
  %1311 = fcmp une double %1310, 0.000000e+00
  br i1 %1311, label %1312, label %1321

1312:                                             ; preds = %1306
  %1313 = fcmp olt double %1307, %1310
  br i1 %1313, label %1314, label %1318

1314:                                             ; preds = %1312
  %1315 = fdiv double %1307, %1310
  %1316 = fmul double %1315, %1315
  %1317 = call double @llvm.fmuladd.f64(double %1308, double %1316, double 1.000000e+00)
  store double %1310, ptr %11, align 8, !tbaa !56
  br label %1321

1318:                                             ; preds = %1312
  %1319 = fdiv double %1310, %1307
  %1320 = call double @llvm.fmuladd.f64(double %1319, double %1319, double %1308)
  br label %1321

1321:                                             ; preds = %1314, %1318, %1306
  %1322 = phi double [ %1317, %1314 ], [ %1320, %1318 ], [ %1308, %1306 ]
  %1323 = phi double [ %1310, %1314 ], [ %1307, %1318 ], [ %1307, %1306 ]
  %gep3688 = getelementptr %struct.doublecomplex, ptr %invariant.gep3687, i64 %.1116442407
  %1324 = load double, ptr %gep3688, align 8, !tbaa !9
  %1325 = fcmp une double %1324, 0.000000e+00
  br i1 %1325, label %1326, label %1335

1326:                                             ; preds = %1321
  %1327 = fcmp olt double %1323, %1324
  br i1 %1327, label %1328, label %1332

1328:                                             ; preds = %1326
  %1329 = fdiv double %1323, %1324
  %1330 = fmul double %1329, %1329
  %1331 = call double @llvm.fmuladd.f64(double %1322, double %1330, double 1.000000e+00)
  store double %1324, ptr %11, align 8, !tbaa !56
  br label %1335

1332:                                             ; preds = %1326
  %1333 = fdiv double %1324, %1323
  %1334 = call double @llvm.fmuladd.f64(double %1333, double %1333, double %1322)
  br label %1335

1335:                                             ; preds = %1328, %1332, %1321
  %1336 = phi double [ %1331, %1328 ], [ %1334, %1332 ], [ %1322, %1321 ]
  %1337 = phi double [ %1324, %1328 ], [ %1323, %1332 ], [ %1323, %1321 ]
  %1338 = add i64 %1304, %.1116442407
  %1339 = add nuw i64 %.672406, 1
  %exitcond3189.not = icmp eq i64 %.672406, %1305
  br i1 %exitcond3189.not, label %._crit_edge2410, label %1306, !llvm.loop !108

._crit_edge2410:                                  ; preds = %1335, %._crit_edge2402
  %1340 = phi double [ %1303, %._crit_edge2402 ], [ %1336, %1335 ]
  %.111644.lcssa = phi i64 [ 0, %._crit_edge2402 ], [ %1338, %1335 ]
  %1341 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %.111644.lcssa
  %1342 = load double, ptr %1341, align 8, !tbaa !9
  %1343 = fcmp une double %1342, 0.000000e+00
  br i1 %1343, label %1344, label %.loopexit

1344:                                             ; preds = %._crit_edge2410
  %1345 = load double, ptr %11, align 8, !tbaa !56
  %1346 = fcmp olt double %1345, %1342
  br i1 %1346, label %1347, label %1351

1347:                                             ; preds = %1344
  %1348 = fdiv double %1345, %1342
  %1349 = fmul double %1348, %1348
  %1350 = call double @llvm.fmuladd.f64(double %1340, double %1349, double 1.000000e+00)
  store double %1342, ptr %11, align 8, !tbaa !56
  br label %.loopexit

1351:                                             ; preds = %1344
  %1352 = fdiv double %1342, %1345
  %1353 = call double @llvm.fmuladd.f64(double %1352, double %1352, double %1340)
  br label %.loopexit

1354:                                             ; preds = %1050
  br i1 %.not, label %1355, label %1468

1355:                                             ; preds = %1354
  store i64 0, ptr %8, align 8, !tbaa !5
  br i1 %.not1796.not.not.not.not.not.not.not.not, label %.preheader1976, label %1356

.preheader1976:                                   ; preds = %1355
  %invariant.gep2527 = getelementptr i8, ptr %4, i64 32
  %.not1819.not2529 = icmp sgt i64 %1051, 0
  br i1 %.not1819.not2529, label %.lr.ph2531, label %._crit_edge2532

1356:                                             ; preds = %1355
  %1357 = add nsw i64 %1053, -2
  %.not18242509 = icmp slt i64 %1051, 3
  br i1 %.not18242509, label %._crit_edge2513, label %.lr.ph2512

.lr.ph2512:                                       ; preds = %1356, %.lr.ph2512
  %storemerge18232510 = phi i64 [ %1368, %.lr.ph2512 ], [ 0, %1356 ]
  %1358 = load i64, ptr %9, align 8, !tbaa !5
  %1359 = xor i64 %storemerge18232510, -1
  %1360 = add i64 %1358, %1359
  store i64 %1360, ptr %7, align 8, !tbaa !5
  %1361 = mul nsw i64 %storemerge18232510, %.01631
  %1362 = getelementptr %struct.doublecomplex, ptr %4, i64 %1358
  %1363 = getelementptr %struct.doublecomplex, ptr %1362, i64 %storemerge18232510
  %1364 = getelementptr i8, ptr %1363, i64 32
  %1365 = getelementptr %struct.doublecomplex, ptr %1364, i64 %1361
  %1366 = call i32 @zlassq_(ptr noundef nonnull %7, ptr noundef %1365, ptr noundef nonnull @c__1, ptr noundef nonnull %11, ptr noundef nonnull %10) #7
  %1367 = load i64, ptr %8, align 8, !tbaa !5
  %1368 = add nsw i64 %1367, 1
  store i64 %1368, ptr %8, align 8, !tbaa !5
  %.not1824.not = icmp slt i64 %1367, %1357
  br i1 %.not1824.not, label %.lr.ph2512, label %._crit_edge2513.loopexit, !llvm.loop !109

._crit_edge2513.loopexit:                         ; preds = %.lr.ph2512
  %.pre3270 = load i64, ptr %9, align 8, !tbaa !5
  br label %._crit_edge2513

._crit_edge2513:                                  ; preds = %._crit_edge2513.loopexit, %1356
  %1369 = phi i64 [ %.pre3270, %._crit_edge2513.loopexit ], [ %1053, %1356 ]
  store i64 0, ptr %8, align 8, !tbaa !5
  %.not1826.not2514 = icmp sgt i64 %1369, 0
  br i1 %.not1826.not2514, label %.lr.ph2517, label %._crit_edge2518.thread

._crit_edge2518.thread:                           ; preds = %._crit_edge2513
  %1370 = load double, ptr %10, align 8, !tbaa !56
  %1371 = fadd double %1370, %1370
  br label %.loopexit

.lr.ph2517:                                       ; preds = %._crit_edge2513, %.lr.ph2517
  %storemerge18252515 = phi i64 [ %1378, %.lr.ph2517 ], [ 0, %._crit_edge2513 ]
  %1372 = load i64, ptr %9, align 8, !tbaa !5
  %1373 = add nsw i64 %1372, %storemerge18252515
  store i64 %1373, ptr %7, align 8, !tbaa !5
  %1374 = mul nsw i64 %storemerge18252515, %.01631
  %1375 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %1374
  %1376 = call i32 @zlassq_(ptr noundef nonnull %7, ptr noundef %1375, ptr noundef nonnull @c__1, ptr noundef nonnull %11, ptr noundef nonnull %10) #7
  %1377 = load i64, ptr %8, align 8, !tbaa !5
  %1378 = add nsw i64 %1377, 1
  store i64 %1378, ptr %8, align 8, !tbaa !5
  %.not1826.not = icmp slt i64 %1378, %1369
  br i1 %.not1826.not, label %.lr.ph2517, label %._crit_edge2518, !llvm.loop !110

._crit_edge2518:                                  ; preds = %.lr.ph2517
  %.pre3271 = load i64, ptr %9, align 8, !tbaa !5
  %1379 = load double, ptr %10, align 8, !tbaa !56
  %1380 = fadd double %1379, %1379
  %.not1827.not2521 = icmp sgt i64 %.pre3271, 0
  br i1 %.not1827.not2521, label %.lr.ph2525, label %.loopexit

.lr.ph2525:                                       ; preds = %._crit_edge2518
  %.promoted2519 = load double, ptr %11, align 8, !tbaa !56
  %1381 = add i64 %.01631, 1
  %invariant.gep3697 = getelementptr i8, ptr %4, i64 16
  br label %1382

1382:                                             ; preds = %.lr.ph2525, %1411
  %.1216452523 = phi i64 [ %.pre3271, %.lr.ph2525 ], [ %1414, %1411 ]
  %.682522 = phi i64 [ 0, %.lr.ph2525 ], [ %1415, %1411 ]
  %1383 = phi double [ %.promoted2519, %.lr.ph2525 ], [ %1413, %1411 ]
  %1384 = phi double [ %1380, %.lr.ph2525 ], [ %1412, %1411 ]
  %1385 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %.1216452523
  %1386 = load double, ptr %1385, align 8, !tbaa !9
  %1387 = fcmp une double %1386, 0.000000e+00
  br i1 %1387, label %1388, label %1397

1388:                                             ; preds = %1382
  %1389 = fcmp olt double %1383, %1386
  br i1 %1389, label %1390, label %1394

1390:                                             ; preds = %1388
  %1391 = fdiv double %1383, %1386
  %1392 = fmul double %1391, %1391
  %1393 = call double @llvm.fmuladd.f64(double %1384, double %1392, double 1.000000e+00)
  store double %1386, ptr %11, align 8, !tbaa !56
  br label %1397

1394:                                             ; preds = %1388
  %1395 = fdiv double %1386, %1383
  %1396 = call double @llvm.fmuladd.f64(double %1395, double %1395, double %1384)
  br label %1397

1397:                                             ; preds = %1390, %1394, %1382
  %1398 = phi double [ %1393, %1390 ], [ %1396, %1394 ], [ %1384, %1382 ]
  %1399 = phi double [ %1386, %1390 ], [ %1383, %1394 ], [ %1383, %1382 ]
  %gep3698 = getelementptr %struct.doublecomplex, ptr %invariant.gep3697, i64 %.1216452523
  %1400 = load double, ptr %gep3698, align 8, !tbaa !9
  %1401 = fcmp une double %1400, 0.000000e+00
  br i1 %1401, label %1402, label %1411

1402:                                             ; preds = %1397
  %1403 = fcmp olt double %1399, %1400
  br i1 %1403, label %1404, label %1408

1404:                                             ; preds = %1402
  %1405 = fdiv double %1399, %1400
  %1406 = fmul double %1405, %1405
  %1407 = call double @llvm.fmuladd.f64(double %1398, double %1406, double 1.000000e+00)
  store double %1400, ptr %11, align 8, !tbaa !56
  br label %1411

1408:                                             ; preds = %1402
  %1409 = fdiv double %1400, %1399
  %1410 = call double @llvm.fmuladd.f64(double %1409, double %1409, double %1398)
  br label %1411

1411:                                             ; preds = %1404, %1408, %1397
  %1412 = phi double [ %1407, %1404 ], [ %1410, %1408 ], [ %1398, %1397 ]
  %1413 = phi double [ %1400, %1404 ], [ %1399, %1408 ], [ %1399, %1397 ]
  %1414 = add i64 %1381, %.1216452523
  %1415 = add nuw nsw i64 %.682522, 1
  %exitcond3194.not = icmp eq i64 %1415, %.pre3271
  br i1 %exitcond3194.not, label %.loopexit, label %1382, !llvm.loop !111

.lr.ph2531:                                       ; preds = %.preheader1976, %.lr.ph2531
  %storemerge18182530 = phi i64 [ %1423, %.lr.ph2531 ], [ 0, %.preheader1976 ]
  %1416 = load i64, ptr %3, align 8, !tbaa !5
  %1417 = xor i64 %storemerge18182530, -1
  %1418 = add i64 %1416, %1417
  store i64 %1418, ptr %7, align 8, !tbaa !5
  %1419 = mul nsw i64 %storemerge18182530, %.01631
  %gep2528 = getelementptr %struct.doublecomplex, ptr %invariant.gep2527, i64 %storemerge18182530
  %1420 = getelementptr %struct.doublecomplex, ptr %gep2528, i64 %1419
  %1421 = call i32 @zlassq_(ptr noundef nonnull %7, ptr noundef %1420, ptr noundef nonnull @c__1, ptr noundef nonnull %11, ptr noundef nonnull %10) #7
  %1422 = load i64, ptr %8, align 8, !tbaa !5
  %1423 = add nsw i64 %1422, 1
  store i64 %1423, ptr %8, align 8, !tbaa !5
  %.not1819.not = icmp slt i64 %1423, %1053
  br i1 %.not1819.not, label %.lr.ph2531, label %._crit_edge2532.loopexit, !llvm.loop !112

._crit_edge2532.loopexit:                         ; preds = %.lr.ph2531
  %.pre3272 = load i64, ptr %9, align 8, !tbaa !5
  br label %._crit_edge2532

._crit_edge2532:                                  ; preds = %._crit_edge2532.loopexit, %.preheader1976
  %1424 = phi i64 [ %.pre3272, %._crit_edge2532.loopexit ], [ %1053, %.preheader1976 ]
  store i64 1, ptr %8, align 8, !tbaa !5
  %.not1821.not2533 = icmp sgt i64 %1424, 1
  br i1 %.not1821.not2533, label %.lr.ph2536, label %._crit_edge2537

.lr.ph2536:                                       ; preds = %._crit_edge2532, %.lr.ph2536
  %storemerge18202534 = phi i64 [ %1429, %.lr.ph2536 ], [ 1, %._crit_edge2532 ]
  %1425 = mul nsw i64 %storemerge18202534, %.01631
  %1426 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %1425
  %1427 = call i32 @zlassq_(ptr noundef nonnull %8, ptr noundef %1426, ptr noundef nonnull @c__1, ptr noundef nonnull %11, ptr noundef nonnull %10) #7
  %1428 = load i64, ptr %8, align 8, !tbaa !5
  %1429 = add nsw i64 %1428, 1
  store i64 %1429, ptr %8, align 8, !tbaa !5
  %.not1821.not = icmp slt i64 %1429, %1424
  br i1 %.not1821.not, label %.lr.ph2536, label %._crit_edge2537.loopexit, !llvm.loop !113

._crit_edge2537.loopexit:                         ; preds = %.lr.ph2536
  %.pre3273 = load i64, ptr %9, align 8, !tbaa !5
  br label %._crit_edge2537

._crit_edge2537:                                  ; preds = %._crit_edge2537.loopexit, %._crit_edge2532
  %1430 = phi i64 [ %.pre3273, %._crit_edge2537.loopexit ], [ %1424, %._crit_edge2532 ]
  %1431 = load double, ptr %10, align 8, !tbaa !56
  %1432 = fadd double %1431, %1431
  %.not1822.not2540 = icmp sgt i64 %1430, 0
  br i1 %.not1822.not2540, label %.lr.ph2544, label %.loopexit

.lr.ph2544:                                       ; preds = %._crit_edge2537
  %.promoted2538 = load double, ptr %11, align 8, !tbaa !56
  %1433 = add i64 %.01631, 1
  %invariant.gep3699 = getelementptr i8, ptr %4, i64 16
  br label %1434

1434:                                             ; preds = %.lr.ph2544, %1463
  %.1316462542 = phi i64 [ 0, %.lr.ph2544 ], [ %1466, %1463 ]
  %.692541 = phi i64 [ 0, %.lr.ph2544 ], [ %1467, %1463 ]
  %1435 = phi double [ %.promoted2538, %.lr.ph2544 ], [ %1465, %1463 ]
  %1436 = phi double [ %1432, %.lr.ph2544 ], [ %1464, %1463 ]
  %1437 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %.1316462542
  %1438 = load double, ptr %1437, align 8, !tbaa !9
  %1439 = fcmp une double %1438, 0.000000e+00
  br i1 %1439, label %1440, label %1449

1440:                                             ; preds = %1434
  %1441 = fcmp olt double %1435, %1438
  br i1 %1441, label %1442, label %1446

1442:                                             ; preds = %1440
  %1443 = fdiv double %1435, %1438
  %1444 = fmul double %1443, %1443
  %1445 = call double @llvm.fmuladd.f64(double %1436, double %1444, double 1.000000e+00)
  store double %1438, ptr %11, align 8, !tbaa !56
  br label %1449

1446:                                             ; preds = %1440
  %1447 = fdiv double %1438, %1435
  %1448 = call double @llvm.fmuladd.f64(double %1447, double %1447, double %1436)
  br label %1449

1449:                                             ; preds = %1442, %1446, %1434
  %1450 = phi double [ %1445, %1442 ], [ %1448, %1446 ], [ %1436, %1434 ]
  %1451 = phi double [ %1438, %1442 ], [ %1435, %1446 ], [ %1435, %1434 ]
  %gep3700 = getelementptr %struct.doublecomplex, ptr %invariant.gep3699, i64 %.1316462542
  %1452 = load double, ptr %gep3700, align 8, !tbaa !9
  %1453 = fcmp une double %1452, 0.000000e+00
  br i1 %1453, label %1454, label %1463

1454:                                             ; preds = %1449
  %1455 = fcmp olt double %1451, %1452
  br i1 %1455, label %1456, label %1460

1456:                                             ; preds = %1454
  %1457 = fdiv double %1451, %1452
  %1458 = fmul double %1457, %1457
  %1459 = call double @llvm.fmuladd.f64(double %1450, double %1458, double 1.000000e+00)
  store double %1452, ptr %11, align 8, !tbaa !56
  br label %1463

1460:                                             ; preds = %1454
  %1461 = fdiv double %1452, %1451
  %1462 = call double @llvm.fmuladd.f64(double %1461, double %1461, double %1450)
  br label %1463

1463:                                             ; preds = %1456, %1460, %1449
  %1464 = phi double [ %1459, %1456 ], [ %1462, %1460 ], [ %1450, %1449 ]
  %1465 = phi double [ %1452, %1456 ], [ %1451, %1460 ], [ %1451, %1449 ]
  %1466 = add i64 %1433, %.1316462542
  %1467 = add nuw nsw i64 %.692541, 1
  %exitcond3195.not = icmp eq i64 %1467, %1430
  br i1 %exitcond3195.not, label %.loopexit, label %1434, !llvm.loop !114

1468:                                             ; preds = %1354
  store i64 1, ptr %8, align 8, !tbaa !5
  %.not1804.not2481 = icmp sgt i64 %1051, 2
  br i1 %.not1796.not.not.not.not.not.not.not.not, label %.preheader1978, label %.preheader1979

.preheader1979:                                   ; preds = %1468
  br i1 %.not1804.not2481, label %.lr.ph2454, label %._crit_edge2455

.preheader1978:                                   ; preds = %1468
  br i1 %.not1804.not2481, label %.lr.ph2483, label %._crit_edge2484

.lr.ph2454:                                       ; preds = %.preheader1979, %.lr.ph2454
  %storemerge18102453 = phi i64 [ %1476, %.lr.ph2454 ], [ 1, %.preheader1979 ]
  %1469 = load i64, ptr %9, align 8, !tbaa !5
  %1470 = add nsw i64 %storemerge18102453, 1
  %1471 = add i64 %1470, %1469
  %1472 = mul nsw i64 %1471, %.01631
  %1473 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %1472
  %1474 = call i32 @zlassq_(ptr noundef nonnull %8, ptr noundef %1473, ptr noundef nonnull @c__1, ptr noundef nonnull %11, ptr noundef nonnull %10) #7
  %1475 = load i64, ptr %8, align 8, !tbaa !5
  %1476 = add nsw i64 %1475, 1
  store i64 %1476, ptr %8, align 8, !tbaa !5
  %.not1811.not = icmp slt i64 %1476, %1053
  br i1 %.not1811.not, label %.lr.ph2454, label %._crit_edge2455.loopexit, !llvm.loop !115

._crit_edge2455.loopexit:                         ; preds = %.lr.ph2454
  %.pre3261 = load i64, ptr %9, align 8, !tbaa !5
  br label %._crit_edge2455

._crit_edge2455:                                  ; preds = %._crit_edge2455.loopexit, %.preheader1979
  %1477 = phi i64 [ %.pre3261, %._crit_edge2455.loopexit ], [ %1053, %.preheader1979 ]
  store i64 0, ptr %8, align 8, !tbaa !5
  %.not1813.not2456 = icmp sgt i64 %1477, 0
  br i1 %.not1813.not2456, label %.lr.ph2459, label %._crit_edge2467

.lr.ph2459:                                       ; preds = %._crit_edge2455, %.lr.ph2459
  %storemerge18122457 = phi i64 [ %1482, %.lr.ph2459 ], [ 0, %._crit_edge2455 ]
  %1478 = mul nsw i64 %storemerge18122457, %.01631
  %1479 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %1478
  %1480 = call i32 @zlassq_(ptr noundef nonnull %9, ptr noundef %1479, ptr noundef nonnull @c__1, ptr noundef nonnull %11, ptr noundef nonnull %10) #7
  %1481 = load i64, ptr %8, align 8, !tbaa !5
  %1482 = add nsw i64 %1481, 1
  store i64 %1482, ptr %8, align 8, !tbaa !5
  %.not1813.not = icmp slt i64 %1482, %1477
  br i1 %.not1813.not, label %.lr.ph2459, label %._crit_edge2460, !llvm.loop !116

._crit_edge2460:                                  ; preds = %.lr.ph2459
  %.pre3262 = load i64, ptr %9, align 8, !tbaa !5
  %1483 = add nsw i64 %.pre3262, -2
  %invariant.gep2461 = getelementptr i8, ptr %4, i64 16
  store i64 0, ptr %8, align 8, !tbaa !5
  %.not18152463 = icmp slt i64 %.pre3262, 2
  br i1 %.not18152463, label %._crit_edge2467, label %.lr.ph2466

.lr.ph2466:                                       ; preds = %._crit_edge2460, %.lr.ph2466
  %storemerge18142464 = phi i64 [ %1492, %.lr.ph2466 ], [ 0, %._crit_edge2460 ]
  %1484 = load i64, ptr %9, align 8, !tbaa !5
  %1485 = xor i64 %storemerge18142464, -1
  %1486 = add i64 %1484, %1485
  store i64 %1486, ptr %7, align 8, !tbaa !5
  %1487 = add nsw i64 %1484, %storemerge18142464
  %1488 = mul nsw i64 %1487, %.01631
  %gep2462 = getelementptr %struct.doublecomplex, ptr %invariant.gep2461, i64 %storemerge18142464
  %1489 = getelementptr %struct.doublecomplex, ptr %gep2462, i64 %1488
  %1490 = call i32 @zlassq_(ptr noundef nonnull %7, ptr noundef %1489, ptr noundef nonnull @c__1, ptr noundef nonnull %11, ptr noundef nonnull %10) #7
  %1491 = load i64, ptr %8, align 8, !tbaa !5
  %1492 = add nsw i64 %1491, 1
  store i64 %1492, ptr %8, align 8, !tbaa !5
  %.not1815.not = icmp slt i64 %1491, %1483
  br i1 %.not1815.not, label %.lr.ph2466, label %._crit_edge2467.loopexit, !llvm.loop !117

._crit_edge2467.loopexit:                         ; preds = %.lr.ph2466
  %.pre3263 = load i64, ptr %9, align 8, !tbaa !5
  br label %._crit_edge2467

._crit_edge2467:                                  ; preds = %._crit_edge2455, %._crit_edge2467.loopexit, %._crit_edge2460
  %storemerge1816.in2470 = phi i64 [ %.pre3263, %._crit_edge2467.loopexit ], [ %.pre3262, %._crit_edge2460 ], [ %1477, %._crit_edge2455 ]
  %1493 = load double, ptr %10, align 8, !tbaa !56
  %1494 = fadd double %1493, %1493
  %1495 = mul nsw i64 %storemerge1816.in2470, %.01631
  %1496 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %1495
  %1497 = load double, ptr %1496, align 8, !tbaa !9
  %1498 = fcmp une double %1497, 0.000000e+00
  %1499 = load double, ptr %11, align 8, !tbaa !56
  br i1 %1498, label %1500, label %._crit_edge2467._crit_edge

1500:                                             ; preds = %._crit_edge2467
  %1501 = fcmp olt double %1499, %1497
  br i1 %1501, label %1502, label %1506

1502:                                             ; preds = %1500
  %1503 = fdiv double %1499, %1497
  %1504 = fmul double %1503, %1503
  %1505 = call double @llvm.fmuladd.f64(double %1494, double %1504, double 1.000000e+00)
  store double %1497, ptr %11, align 8, !tbaa !56
  br label %._crit_edge2467._crit_edge

1506:                                             ; preds = %1500
  %1507 = fdiv double %1497, %1499
  %1508 = call double @llvm.fmuladd.f64(double %1507, double %1507, double %1494)
  br label %._crit_edge2467._crit_edge

._crit_edge2467._crit_edge:                       ; preds = %._crit_edge2467, %1502, %1506
  %.promoted2469 = phi double [ %1505, %1502 ], [ %1508, %1506 ], [ %1494, %._crit_edge2467 ]
  %.promoted2468 = phi double [ %1497, %1502 ], [ %1499, %1506 ], [ %1499, %._crit_edge2467 ]
  %1509 = add nsw i64 %1495, %.01631
  %1510 = load i64, ptr %3, align 8, !tbaa !5
  %1511 = add nsw i64 %1510, -1
  %.not1817.not2472 = icmp slt i64 %storemerge1816.in2470, %1511
  br i1 %.not1817.not2472, label %.lr.ph2475, label %._crit_edge2476

.lr.ph2475:                                       ; preds = %._crit_edge2467._crit_edge
  %1512 = add i64 %.01631, 1
  %invariant.gep3693 = getelementptr i8, ptr %4, i64 16
  br label %1513

1513:                                             ; preds = %.lr.ph2475, %1542
  %storemerge1816.in2480.in = phi i64 [ %storemerge1816.in2470, %.lr.ph2475 ], [ %storemerge1816.in2480, %1542 ]
  %.1416472473 = phi i64 [ %1509, %.lr.ph2475 ], [ %1545, %1542 ]
  %1514 = phi double [ %.promoted2468, %.lr.ph2475 ], [ %1544, %1542 ]
  %1515 = phi double [ %.promoted2469, %.lr.ph2475 ], [ %1543, %1542 ]
  %storemerge1816.in2480 = add nsw i64 %storemerge1816.in2480.in, 1
  %1516 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %.1416472473
  %1517 = load double, ptr %1516, align 8, !tbaa !9
  %1518 = fcmp une double %1517, 0.000000e+00
  br i1 %1518, label %1519, label %1528

1519:                                             ; preds = %1513
  %1520 = fcmp olt double %1514, %1517
  br i1 %1520, label %1521, label %1525

1521:                                             ; preds = %1519
  %1522 = fdiv double %1514, %1517
  %1523 = fmul double %1522, %1522
  %1524 = call double @llvm.fmuladd.f64(double %1515, double %1523, double 1.000000e+00)
  store double %1517, ptr %11, align 8, !tbaa !56
  br label %1528

1525:                                             ; preds = %1519
  %1526 = fdiv double %1517, %1514
  %1527 = call double @llvm.fmuladd.f64(double %1526, double %1526, double %1515)
  br label %1528

1528:                                             ; preds = %1521, %1525, %1513
  %1529 = phi double [ %1524, %1521 ], [ %1527, %1525 ], [ %1515, %1513 ]
  %1530 = phi double [ %1517, %1521 ], [ %1514, %1525 ], [ %1514, %1513 ]
  %gep3694 = getelementptr %struct.doublecomplex, ptr %invariant.gep3693, i64 %.1416472473
  %1531 = load double, ptr %gep3694, align 8, !tbaa !9
  %1532 = fcmp une double %1531, 0.000000e+00
  br i1 %1532, label %1533, label %1542

1533:                                             ; preds = %1528
  %1534 = fcmp olt double %1530, %1531
  br i1 %1534, label %1535, label %1539

1535:                                             ; preds = %1533
  %1536 = fdiv double %1530, %1531
  %1537 = fmul double %1536, %1536
  %1538 = call double @llvm.fmuladd.f64(double %1529, double %1537, double 1.000000e+00)
  store double %1531, ptr %11, align 8, !tbaa !56
  br label %1542

1539:                                             ; preds = %1533
  %1540 = fdiv double %1531, %1530
  %1541 = call double @llvm.fmuladd.f64(double %1540, double %1540, double %1529)
  br label %1542

1542:                                             ; preds = %1535, %1539, %1528
  %1543 = phi double [ %1538, %1535 ], [ %1541, %1539 ], [ %1529, %1528 ]
  %1544 = phi double [ %1531, %1535 ], [ %1530, %1539 ], [ %1530, %1528 ]
  %1545 = add i64 %1512, %.1416472473
  %.not1817.not = icmp slt i64 %storemerge1816.in2480, %1511
  br i1 %.not1817.not, label %1513, label %._crit_edge2476, !llvm.loop !118

._crit_edge2476:                                  ; preds = %1542, %._crit_edge2467._crit_edge
  %1546 = phi double [ %.promoted2469, %._crit_edge2467._crit_edge ], [ %1543, %1542 ]
  %1547 = phi double [ %.promoted2468, %._crit_edge2467._crit_edge ], [ %1544, %1542 ]
  %.141647.lcssa = phi i64 [ %1509, %._crit_edge2467._crit_edge ], [ %1545, %1542 ]
  %1548 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %.141647.lcssa
  %1549 = load double, ptr %1548, align 8, !tbaa !9
  %1550 = fcmp une double %1549, 0.000000e+00
  br i1 %1550, label %1551, label %.loopexit

1551:                                             ; preds = %._crit_edge2476
  %1552 = fcmp olt double %1547, %1549
  br i1 %1552, label %1553, label %1557

1553:                                             ; preds = %1551
  %1554 = fdiv double %1547, %1549
  %1555 = fmul double %1554, %1554
  %1556 = call double @llvm.fmuladd.f64(double %1546, double %1555, double 1.000000e+00)
  store double %1549, ptr %11, align 8, !tbaa !56
  br label %.loopexit

1557:                                             ; preds = %1551
  %1558 = fdiv double %1549, %1547
  %1559 = call double @llvm.fmuladd.f64(double %1558, double %1558, double %1546)
  br label %.loopexit

.lr.ph2483:                                       ; preds = %.preheader1978, %.lr.ph2483
  %storemerge2482 = phi i64 [ %1565, %.lr.ph2483 ], [ 1, %.preheader1978 ]
  %1560 = add nsw i64 %storemerge2482, 1
  %1561 = mul nsw i64 %1560, %.01631
  %1562 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %1561
  %1563 = call i32 @zlassq_(ptr noundef nonnull %8, ptr noundef %1562, ptr noundef nonnull @c__1, ptr noundef nonnull %11, ptr noundef nonnull %10) #7
  %1564 = load i64, ptr %8, align 8, !tbaa !5
  %1565 = add nsw i64 %1564, 1
  store i64 %1565, ptr %8, align 8, !tbaa !5
  %.not1804.not = icmp slt i64 %1565, %1053
  br i1 %.not1804.not, label %.lr.ph2483, label %._crit_edge2484.loopexit, !llvm.loop !119

._crit_edge2484.loopexit:                         ; preds = %.lr.ph2483
  %.pre3266 = load i64, ptr %3, align 8, !tbaa !5
  %storemerge1805.in2485.pre = load i64, ptr %9, align 8, !tbaa !5
  br label %._crit_edge2484

._crit_edge2484:                                  ; preds = %._crit_edge2484.loopexit, %.preheader1978
  %storemerge1805.in2485 = phi i64 [ %storemerge1805.in2485.pre, %._crit_edge2484.loopexit ], [ %1053, %.preheader1978 ]
  %1566 = phi i64 [ %.pre3266, %._crit_edge2484.loopexit ], [ %1051, %.preheader1978 ]
  %storemerge18052486 = add nsw i64 %storemerge1805.in2485, 1
  store i64 %storemerge18052486, ptr %8, align 8, !tbaa !5
  %.not1806.not2487 = icmp slt i64 %storemerge1805.in2485, %1566
  br i1 %.not1806.not2487, label %.lr.ph2490, label %._crit_edge2491

.lr.ph2490:                                       ; preds = %._crit_edge2484, %.lr.ph2490
  %storemerge18052488 = phi i64 [ %storemerge1805, %.lr.ph2490 ], [ %storemerge18052486, %._crit_edge2484 ]
  %1567 = mul nsw i64 %storemerge18052488, %.01631
  %1568 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %1567
  %1569 = call i32 @zlassq_(ptr noundef nonnull %9, ptr noundef %1568, ptr noundef nonnull @c__1, ptr noundef nonnull %11, ptr noundef nonnull %10) #7
  %storemerge1805.in = load i64, ptr %8, align 8, !tbaa !5
  %storemerge1805 = add nsw i64 %storemerge1805.in, 1
  store i64 %storemerge1805, ptr %8, align 8, !tbaa !5
  %.not1806.not = icmp slt i64 %storemerge1805.in, %1566
  br i1 %.not1806.not, label %.lr.ph2490, label %._crit_edge2491.loopexit, !llvm.loop !120

._crit_edge2491.loopexit:                         ; preds = %.lr.ph2490
  %.pre3268 = load i64, ptr %9, align 8, !tbaa !5
  br label %._crit_edge2491

._crit_edge2491:                                  ; preds = %._crit_edge2491.loopexit, %._crit_edge2484
  %1570 = phi i64 [ %.pre3268, %._crit_edge2491.loopexit ], [ %storemerge1805.in2485, %._crit_edge2484 ]
  %1571 = add nsw i64 %1570, -2
  %invariant.gep2492 = getelementptr i8, ptr %4, i64 16
  store i64 0, ptr %8, align 8, !tbaa !5
  %.not18082494 = icmp slt i64 %1570, 2
  br i1 %.not18082494, label %._crit_edge2498, label %.lr.ph2497

.lr.ph2497:                                       ; preds = %._crit_edge2491, %.lr.ph2497
  %storemerge18072495 = phi i64 [ %1579, %.lr.ph2497 ], [ 0, %._crit_edge2491 ]
  %1572 = load i64, ptr %9, align 8, !tbaa !5
  %1573 = xor i64 %storemerge18072495, -1
  %1574 = add i64 %1572, %1573
  store i64 %1574, ptr %7, align 8, !tbaa !5
  %1575 = mul nsw i64 %storemerge18072495, %.01631
  %gep2493 = getelementptr %struct.doublecomplex, ptr %invariant.gep2492, i64 %storemerge18072495
  %1576 = getelementptr %struct.doublecomplex, ptr %gep2493, i64 %1575
  %1577 = call i32 @zlassq_(ptr noundef nonnull %7, ptr noundef %1576, ptr noundef nonnull @c__1, ptr noundef nonnull %11, ptr noundef nonnull %10) #7
  %1578 = load i64, ptr %8, align 8, !tbaa !5
  %1579 = add nsw i64 %1578, 1
  store i64 %1579, ptr %8, align 8, !tbaa !5
  %.not1808.not = icmp slt i64 %1578, %1571
  br i1 %.not1808.not, label %.lr.ph2497, label %._crit_edge2498, !llvm.loop !121

._crit_edge2498:                                  ; preds = %.lr.ph2497, %._crit_edge2491
  %1580 = load double, ptr %10, align 8, !tbaa !56
  %1581 = fadd double %1580, %1580
  %1582 = load double, ptr %4, align 8, !tbaa !9
  %1583 = fcmp une double %1582, 0.000000e+00
  br i1 %1583, label %1584, label %1594

1584:                                             ; preds = %._crit_edge2498
  %1585 = load double, ptr %11, align 8, !tbaa !56
  %1586 = fcmp olt double %1585, %1582
  br i1 %1586, label %1587, label %1591

1587:                                             ; preds = %1584
  %1588 = fdiv double %1585, %1582
  %1589 = fmul double %1588, %1588
  %1590 = call double @llvm.fmuladd.f64(double %1581, double %1589, double 1.000000e+00)
  store double %1582, ptr %11, align 8, !tbaa !56
  br label %1594

1591:                                             ; preds = %1584
  %1592 = fdiv double %1582, %1585
  %1593 = call double @llvm.fmuladd.f64(double %1592, double %1592, double %1581)
  br label %1594

1594:                                             ; preds = %1587, %1591, %._crit_edge2498
  %.promoted2500 = phi double [ %1590, %1587 ], [ %1593, %1591 ], [ %1581, %._crit_edge2498 ]
  %1595 = load i64, ptr %9, align 8, !tbaa !5
  %.not18092501 = icmp slt i64 %1595, 2
  br i1 %.not18092501, label %._crit_edge2506, label %.lr.ph2505

.lr.ph2505:                                       ; preds = %1594
  %.promoted2499 = load double, ptr %11, align 8, !tbaa !56
  %1596 = add i64 %.01631, 1
  %1597 = add nsw i64 %1595, -2
  %invariant.gep3695 = getelementptr i8, ptr %4, i64 16
  br label %1598

1598:                                             ; preds = %.lr.ph2505, %1627
  %.1516482503 = phi i64 [ %.01631, %.lr.ph2505 ], [ %1630, %1627 ]
  %.702502 = phi i64 [ 0, %.lr.ph2505 ], [ %1631, %1627 ]
  %1599 = phi double [ %.promoted2499, %.lr.ph2505 ], [ %1629, %1627 ]
  %1600 = phi double [ %.promoted2500, %.lr.ph2505 ], [ %1628, %1627 ]
  %1601 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %.1516482503
  %1602 = load double, ptr %1601, align 8, !tbaa !9
  %1603 = fcmp une double %1602, 0.000000e+00
  br i1 %1603, label %1604, label %1613

1604:                                             ; preds = %1598
  %1605 = fcmp olt double %1599, %1602
  br i1 %1605, label %1606, label %1610

1606:                                             ; preds = %1604
  %1607 = fdiv double %1599, %1602
  %1608 = fmul double %1607, %1607
  %1609 = call double @llvm.fmuladd.f64(double %1600, double %1608, double 1.000000e+00)
  store double %1602, ptr %11, align 8, !tbaa !56
  br label %1613

1610:                                             ; preds = %1604
  %1611 = fdiv double %1602, %1599
  %1612 = call double @llvm.fmuladd.f64(double %1611, double %1611, double %1600)
  br label %1613

1613:                                             ; preds = %1606, %1610, %1598
  %1614 = phi double [ %1609, %1606 ], [ %1612, %1610 ], [ %1600, %1598 ]
  %1615 = phi double [ %1602, %1606 ], [ %1599, %1610 ], [ %1599, %1598 ]
  %gep3696 = getelementptr %struct.doublecomplex, ptr %invariant.gep3695, i64 %.1516482503
  %1616 = load double, ptr %gep3696, align 8, !tbaa !9
  %1617 = fcmp une double %1616, 0.000000e+00
  br i1 %1617, label %1618, label %1627

1618:                                             ; preds = %1613
  %1619 = fcmp olt double %1615, %1616
  br i1 %1619, label %1620, label %1624

1620:                                             ; preds = %1618
  %1621 = fdiv double %1615, %1616
  %1622 = fmul double %1621, %1621
  %1623 = call double @llvm.fmuladd.f64(double %1614, double %1622, double 1.000000e+00)
  store double %1616, ptr %11, align 8, !tbaa !56
  br label %1627

1624:                                             ; preds = %1618
  %1625 = fdiv double %1616, %1615
  %1626 = call double @llvm.fmuladd.f64(double %1625, double %1625, double %1614)
  br label %1627

1627:                                             ; preds = %1620, %1624, %1613
  %1628 = phi double [ %1623, %1620 ], [ %1626, %1624 ], [ %1614, %1613 ]
  %1629 = phi double [ %1616, %1620 ], [ %1615, %1624 ], [ %1615, %1613 ]
  %1630 = add i64 %1596, %.1516482503
  %1631 = add nuw i64 %.702502, 1
  %exitcond3193.not = icmp eq i64 %.702502, %1597
  br i1 %exitcond3193.not, label %._crit_edge2506, label %1598, !llvm.loop !122

._crit_edge2506:                                  ; preds = %1627, %1594
  %1632 = phi double [ %.promoted2500, %1594 ], [ %1628, %1627 ]
  %.151648.lcssa = phi i64 [ %.01631, %1594 ], [ %1630, %1627 ]
  %1633 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %.151648.lcssa
  %1634 = load double, ptr %1633, align 8, !tbaa !9
  %1635 = fcmp une double %1634, 0.000000e+00
  br i1 %1635, label %1636, label %.loopexit

1636:                                             ; preds = %._crit_edge2506
  %1637 = load double, ptr %11, align 8, !tbaa !56
  %1638 = fcmp olt double %1637, %1634
  br i1 %1638, label %1639, label %1643

1639:                                             ; preds = %1636
  %1640 = fdiv double %1637, %1634
  %1641 = fmul double %1640, %1640
  %1642 = call double @llvm.fmuladd.f64(double %1632, double %1641, double 1.000000e+00)
  store double %1634, ptr %11, align 8, !tbaa !56
  br label %.loopexit

1643:                                             ; preds = %1636
  %1644 = fdiv double %1634, %1637
  %1645 = call double @llvm.fmuladd.f64(double %1644, double %1644, double %1632)
  br label %.loopexit

.loopexit:                                        ; preds = %1275, %1194, %1411, %1463, %1243, %._crit_edge2518.thread, %1162, %._crit_edge2518, %._crit_edge2537, %._crit_edge2506, %1643, %1639, %._crit_edge2476, %1557, %1553, %._crit_edge2430, %1129, %1125, %._crit_edge2410, %1351, %1347
  %1646 = phi double [ %.promoted2445, %1162 ], [ %1380, %._crit_edge2518 ], [ %1432, %._crit_edge2537 ], [ %1632, %._crit_edge2506 ], [ %1645, %1643 ], [ %1642, %1639 ], [ %1546, %._crit_edge2476 ], [ %1559, %1557 ], [ %1556, %1553 ], [ %1118, %._crit_edge2430 ], [ %1131, %1129 ], [ %1128, %1125 ], [ %1340, %._crit_edge2410 ], [ %1353, %1351 ], [ %1350, %1347 ], [ %1371, %._crit_edge2518.thread ], [ %.promoted2379, %1243 ], [ %1464, %1463 ], [ %1412, %1411 ], [ %1195, %1194 ], [ %1276, %1275 ]
  %1647 = load double, ptr %11, align 8, !tbaa !56
  %1648 = call double @sqrt(double noundef %1646) #7
  %1649 = fmul double %1647, %1648
  br label %.loopexit1984

.loopexit1984:                                    ; preds = %._crit_edge2025, %._crit_edge2076, %._crit_edge2146, %._crit_edge2270, %._crit_edge2346, %._crit_edge2007, %._crit_edge2067, %._crit_edge2128, %32, %._crit_edge2261, %._crit_edge2328, %241, %._crit_edge2318, %._crit_edge2215, %._crit_edge2118, %1048, %.loopexit, %.preheader1967, %thread-pre-split1966.thread, %._crit_edge2907, %._crit_edge2949, %._crit_edge3284, %._crit_edge2870, %._crit_edge2619, %._crit_edge2690, %6
  %.01632 = phi double [ 0.000000e+00, %6 ], [ %125, %._crit_edge2118 ], [ %348, %._crit_edge2318 ], [ %482, %._crit_edge2215 ], [ %542, %._crit_edge2907 ], [ %595, %._crit_edge2949 ], [ %640, %.preheader1967 ], [ %686, %thread-pre-split1966.thread ], [ %764, %._crit_edge2619 ], [ %846, %._crit_edge2690 ], [ %949, %._crit_edge3284 ], [ %1045, %._crit_edge2870 ], [ %1649, %.loopexit ], [ undef, %1048 ], [ %257, %._crit_edge2328 ], [ %254, %241 ], [ %405, %._crit_edge2261 ], [ %41, %._crit_edge2128 ], [ %38, %32 ], [ %176, %._crit_edge2067 ], [ %.16.lcssa, %._crit_edge2007 ], [ %.23.lcssa, %._crit_edge2346 ], [ %.34.lcssa, %._crit_edge2270 ], [ %.3.lcssa, %._crit_edge2146 ], [ %.13.lcssa, %._crit_edge2076 ], [ %.19.lcssa, %._crit_edge2025 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #7
  ret double %.01632
}

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

declare i64 @lsame_(ptr noundef, ptr noundef) local_unnamed_addr #2

declare double @z_abs(ptr noundef) local_unnamed_addr #2

declare i64 @f2c_idamax(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @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) #3

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

; 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 i64 @llvm.smax.i64(i64, i64) #5

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #6

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { 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 #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #7 = { 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 = !{!"long", !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 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = distinct !{!14, !13}
!15 = distinct !{!15, !13}
!16 = distinct !{!16, !13}
!17 = distinct !{!17, !13}
!18 = distinct !{!18, !13}
!19 = distinct !{!19, !13}
!20 = distinct !{!20, !13}
!21 = distinct !{!21, !13}
!22 = distinct !{!22, !13}
!23 = distinct !{!23, !13}
!24 = distinct !{!24, !13}
!25 = distinct !{!25, !13}
!26 = distinct !{!26, !13}
!27 = distinct !{!27, !13}
!28 = distinct !{!28, !13}
!29 = distinct !{!29, !13}
!30 = distinct !{!30, !13}
!31 = distinct !{!31, !13}
!32 = distinct !{!32, !13}
!33 = distinct !{!33, !13}
!34 = distinct !{!34, !13}
!35 = distinct !{!35, !13}
!36 = distinct !{!36, !13}
!37 = distinct !{!37, !13}
!38 = distinct !{!38, !13}
!39 = distinct !{!39, !13}
!40 = distinct !{!40, !13}
!41 = distinct !{!41, !13}
!42 = distinct !{!42, !13}
!43 = distinct !{!43, !13}
!44 = distinct !{!44, !13}
!45 = distinct !{!45, !13}
!46 = distinct !{!46, !13}
!47 = distinct !{!47, !13}
!48 = distinct !{!48, !13}
!49 = distinct !{!49, !13}
!50 = distinct !{!50, !13}
!51 = distinct !{!51, !13}
!52 = distinct !{!52, !13}
!53 = distinct !{!53, !13}
!54 = distinct !{!54, !13}
!55 = !{!7, !7, i64 0}
!56 = !{!11, !11, i64 0}
!57 = distinct !{!57, !13}
!58 = distinct !{!58, !13}
!59 = distinct !{!59, !13}
!60 = distinct !{!60, !13}
!61 = distinct !{!61, !13}
!62 = distinct !{!62, !13}
!63 = distinct !{!63, !13}
!64 = distinct !{!64, !13}
!65 = distinct !{!65, !13}
!66 = distinct !{!66, !13}
!67 = distinct !{!67, !13}
!68 = distinct !{!68, !13}
!69 = distinct !{!69, !13}
!70 = distinct !{!70, !13}
!71 = distinct !{!71, !13}
!72 = distinct !{!72, !13}
!73 = distinct !{!73, !13}
!74 = distinct !{!74, !13}
!75 = distinct !{!75, !13}
!76 = distinct !{!76, !13}
!77 = distinct !{!77, !13}
!78 = distinct !{!78, !13}
!79 = distinct !{!79, !13}
!80 = distinct !{!80, !13}
!81 = distinct !{!81, !13}
!82 = distinct !{!82, !13}
!83 = distinct !{!83, !13}
!84 = distinct !{!84, !13}
!85 = distinct !{!85, !13}
!86 = distinct !{!86, !13}
!87 = distinct !{!87, !13}
!88 = distinct !{!88, !13}
!89 = distinct !{!89, !13}
!90 = distinct !{!90, !13}
!91 = distinct !{!91, !13}
!92 = distinct !{!92, !13}
!93 = distinct !{!93, !13}
!94 = distinct !{!94, !13}
!95 = distinct !{!95, !13}
!96 = distinct !{!96, !13}
!97 = distinct !{!97, !13}
!98 = distinct !{!98, !13}
!99 = distinct !{!99, !13}
!100 = distinct !{!100, !13}
!101 = distinct !{!101, !13}
!102 = distinct !{!102, !13}
!103 = distinct !{!103, !13}
!104 = distinct !{!104, !13}
!105 = distinct !{!105, !13}
!106 = distinct !{!106, !13}
!107 = distinct !{!107, !13}
!108 = distinct !{!108, !13}
!109 = distinct !{!109, !13}
!110 = distinct !{!110, !13}
!111 = distinct !{!111, !13}
!112 = distinct !{!112, !13}
!113 = distinct !{!113, !13}
!114 = distinct !{!114, !13}
!115 = distinct !{!115, !13}
!116 = distinct !{!116, !13}
!117 = distinct !{!117, !13}
!118 = distinct !{!118, !13}
!119 = distinct !{!119, !13}
!120 = distinct !{!120, !13}
!121 = distinct !{!121, !13}
!122 = distinct !{!122, !13}


; Effective O3 passes: ADCEPass,BDCEPass,CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopIdiomRecognizePass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass