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

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

%struct.doublecomplex = type { double, double }

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b2 = external hidden global %struct.doublecomplex, align 8
@c__1 = external hidden global i32, align 4
@c_b1 = external hidden global %struct.doublecomplex, align 8

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

152:                                              ; preds = %17
  store i32 1, ptr %96, align 4, !tbaa !9
  store i32 1, ptr %71, align 4, !tbaa !9
  store i32 0, ptr %87, align 4, !tbaa !9
  br label %166

153:                                              ; preds = %17
  %154 = load ptr, ptr %19, align 8, !tbaa !5
  %155 = call i32 @lsame_(ptr noundef %154, ptr noundef @.str.1)
  %156 = icmp ne i32 %155, 0
  br i1 %156, label %157, label %158

157:                                              ; preds = %153
  store i32 2, ptr %96, align 4, !tbaa !9
  store i32 0, ptr %71, align 4, !tbaa !9
  store i32 0, ptr %87, align 4, !tbaa !9
  br label %165

158:                                              ; preds = %153
  %159 = load ptr, ptr %19, align 8, !tbaa !5
  %160 = call i32 @lsame_(ptr noundef %159, ptr noundef @.str.2)
  %161 = icmp ne i32 %160, 0
  br i1 %161, label %162, label %163

162:                                              ; preds = %158
  store i32 3, ptr %96, align 4, !tbaa !9
  store i32 1, ptr %71, align 4, !tbaa !9
  store i32 1, ptr %87, align 4, !tbaa !9
  br label %164

163:                                              ; preds = %158
  store i32 -1, ptr %96, align 4, !tbaa !9
  br label %164

164:                                              ; preds = %163, %162
  br label %165

165:                                              ; preds = %164, %157
  br label %166

166:                                              ; preds = %165, %152
  %167 = load ptr, ptr %18, align 8, !tbaa !5
  %168 = call i32 @lsame_(ptr noundef %167, ptr noundef @.str.3)
  %169 = icmp ne i32 %168, 0
  br i1 %169, label %170, label %171

170:                                              ; preds = %166
  store i32 1, ptr %72, align 4, !tbaa !9
  store i32 0, ptr %75, align 4, !tbaa !9
  store i32 1, ptr %78, align 4, !tbaa !9
  br label %184

171:                                              ; preds = %166
  %172 = load ptr, ptr %18, align 8, !tbaa !5
  %173 = call i32 @lsame_(ptr noundef %172, ptr noundef @.str.4)
  %174 = icmp ne i32 %173, 0
  br i1 %174, label %175, label %176

175:                                              ; preds = %171
  store i32 2, ptr %72, align 4, !tbaa !9
  store i32 1, ptr %75, align 4, !tbaa !9
  store i32 0, ptr %78, align 4, !tbaa !9
  br label %183

176:                                              ; preds = %171
  %177 = load ptr, ptr %18, align 8, !tbaa !5
  %178 = call i32 @lsame_(ptr noundef %177, ptr noundef @.str.2)
  %179 = icmp ne i32 %178, 0
  br i1 %179, label %180, label %181

180:                                              ; preds = %176
  store i32 3, ptr %72, align 4, !tbaa !9
  store i32 1, ptr %75, align 4, !tbaa !9
  store i32 1, ptr %78, align 4, !tbaa !9
  br label %182

181:                                              ; preds = %176
  store i32 -1, ptr %72, align 4, !tbaa !9
  br label %182

182:                                              ; preds = %181, %180
  br label %183

183:                                              ; preds = %182, %175
  br label %184

184:                                              ; preds = %183, %170
  %185 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 0, ptr %185, align 4, !tbaa !9
  %186 = load i32, ptr %72, align 4, !tbaa !9
  %187 = icmp slt i32 %186, 0
  br i1 %187, label %188, label %190

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

190:                                              ; preds = %184
  %191 = load i32, ptr %96, align 4, !tbaa !9
  %192 = icmp slt i32 %191, 0
  br i1 %192, label %193, label %195

193:                                              ; preds = %190
  %194 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -2, ptr %194, align 4, !tbaa !9
  br label %234

195:                                              ; preds = %190
  %196 = load ptr, ptr %21, align 8, !tbaa !5
  %197 = load i32, ptr %196, align 4, !tbaa !9
  %198 = icmp slt i32 %197, 0
  br i1 %198, label %199, label %201

199:                                              ; preds = %195
  %200 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -4, ptr %200, align 4, !tbaa !9
  br label %233

201:                                              ; preds = %195
  %202 = load ptr, ptr %23, align 8, !tbaa !5
  %203 = load i32, ptr %202, align 4, !tbaa !9
  %204 = load ptr, ptr %21, align 8, !tbaa !5
  %205 = load i32, ptr %204, align 4, !tbaa !9
  %206 = icmp sge i32 1, %205
  br i1 %206, label %207, label %208

207:                                              ; preds = %201
  br label %211

208:                                              ; preds = %201
  %209 = load ptr, ptr %21, align 8, !tbaa !5
  %210 = load i32, ptr %209, align 4, !tbaa !9
  br label %211

211:                                              ; preds = %208, %207
  %212 = phi i32 [ 1, %207 ], [ %210, %208 ]
  %213 = icmp slt i32 %203, %212
  br i1 %213, label %214, label %216

214:                                              ; preds = %211
  %215 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -6, ptr %215, align 4, !tbaa !9
  br label %232

216:                                              ; preds = %211
  %217 = load ptr, ptr %25, align 8, !tbaa !5
  %218 = load i32, ptr %217, align 4, !tbaa !9
  %219 = load ptr, ptr %21, align 8, !tbaa !5
  %220 = load i32, ptr %219, align 4, !tbaa !9
  %221 = icmp sge i32 1, %220
  br i1 %221, label %222, label %223

222:                                              ; preds = %216
  br label %226

223:                                              ; preds = %216
  %224 = load ptr, ptr %21, align 8, !tbaa !5
  %225 = load i32, ptr %224, align 4, !tbaa !9
  br label %226

226:                                              ; preds = %223, %222
  %227 = phi i32 [ 1, %222 ], [ %225, %223 ]
  %228 = icmp slt i32 %218, %227
  br i1 %228, label %229, label %231

229:                                              ; preds = %226
  %230 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -8, ptr %230, align 4, !tbaa !9
  br label %231

231:                                              ; preds = %229, %226
  br label %232

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

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

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

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

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

244:                                              ; preds = %235
  %245 = load i32, ptr %71, align 4, !tbaa !9
  %246 = icmp ne i32 %245, 0
  br i1 %246, label %269, label %247

247:                                              ; preds = %244
  store i32 0, ptr %88, align 4, !tbaa !9
  %248 = load ptr, ptr %21, align 8, !tbaa !5
  %249 = load i32, ptr %248, align 4, !tbaa !9
  store i32 %249, ptr %43, align 4, !tbaa !9
  store i32 1, ptr %69, align 4, !tbaa !9
  br label %250

250:                                              ; preds = %265, %247
  %251 = load i32, ptr %69, align 4, !tbaa !9
  %252 = load i32, ptr %43, align 4, !tbaa !9
  %253 = icmp sle i32 %251, %252
  br i1 %253, label %254, label %268

254:                                              ; preds = %250
  %255 = load ptr, ptr %20, align 8, !tbaa !5
  %256 = load i32, ptr %69, align 4, !tbaa !9
  %257 = sext i32 %256 to i64
  %258 = getelementptr inbounds i32, ptr %255, i64 %257
  %259 = load i32, ptr %258, align 4, !tbaa !9
  %260 = icmp ne i32 %259, 0
  br i1 %260, label %261, label %264

261:                                              ; preds = %254
  %262 = load i32, ptr %88, align 4, !tbaa !9
  %263 = add nsw i32 %262, 1
  store i32 %263, ptr %88, align 4, !tbaa !9
  br label %264

264:                                              ; preds = %261, %254
  br label %265

265:                                              ; preds = %264
  %266 = load i32, ptr %69, align 4, !tbaa !9
  %267 = add nsw i32 %266, 1
  store i32 %267, ptr %69, align 4, !tbaa !9
  br label %250, !llvm.loop !11

268:                                              ; preds = %250
  br label %272

269:                                              ; preds = %244
  %270 = load ptr, ptr %21, align 8, !tbaa !5
  %271 = load i32, ptr %270, align 4, !tbaa !9
  store i32 %271, ptr %88, align 4, !tbaa !9
  br label %272

272:                                              ; preds = %269, %268
  store i32 0, ptr %81, align 4, !tbaa !9
  %273 = load ptr, ptr %21, align 8, !tbaa !5
  %274 = load i32, ptr %273, align 4, !tbaa !9
  store i32 %274, ptr %43, align 4, !tbaa !9
  store i32 1, ptr %69, align 4, !tbaa !9
  br label %275

275:                                              ; preds = %294, %272
  %276 = load i32, ptr %69, align 4, !tbaa !9
  %277 = load i32, ptr %43, align 4, !tbaa !9
  %278 = icmp sle i32 %276, %277
  br i1 %278, label %279, label %297

279:                                              ; preds = %275
  %280 = load ptr, ptr %24, align 8, !tbaa !5
  %281 = load i32, ptr %69, align 4, !tbaa !9
  %282 = load i32, ptr %69, align 4, !tbaa !9
  %283 = load i32, ptr %35, align 4, !tbaa !9
  %284 = mul nsw i32 %282, %283
  %285 = add nsw i32 %281, %284
  %286 = sext i32 %285 to i64
  %287 = getelementptr inbounds %struct.doublecomplex, ptr %280, i64 %286
  %288 = call { double, double } @Cd(ptr noundef %287)
  %289 = extractvalue { double, double } %288, 0
  %290 = extractvalue { double, double } %288, 1
  %291 = fcmp une double %290, 0.000000e+00
  br i1 %291, label %292, label %293

292:                                              ; preds = %279
  store i32 1, ptr %81, align 4, !tbaa !9
  br label %293

293:                                              ; preds = %292, %279
  br label %294

294:                                              ; preds = %293
  %295 = load i32, ptr %69, align 4, !tbaa !9
  %296 = add nsw i32 %295, 1
  store i32 %296, ptr %69, align 4, !tbaa !9
  br label %275, !llvm.loop !13

297:                                              ; preds = %275
  %298 = load i32, ptr %81, align 4, !tbaa !9
  %299 = icmp ne i32 %298, 0
  br i1 %299, label %300, label %302

300:                                              ; preds = %297
  %301 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -7, ptr %301, align 4, !tbaa !9
  br label %342

302:                                              ; preds = %297
  %303 = load i32, ptr %75, align 4, !tbaa !9
  %304 = icmp ne i32 %303, 0
  br i1 %304, label %305, label %311

305:                                              ; preds = %302
  %306 = load ptr, ptr %27, align 8, !tbaa !5
  %307 = load i32, ptr %306, align 4, !tbaa !9
  %308 = load ptr, ptr %21, align 8, !tbaa !5
  %309 = load i32, ptr %308, align 4, !tbaa !9
  %310 = icmp slt i32 %307, %309
  br i1 %310, label %315, label %311

311:                                              ; preds = %305, %302
  %312 = load ptr, ptr %27, align 8, !tbaa !5
  %313 = load i32, ptr %312, align 4, !tbaa !9
  %314 = icmp slt i32 %313, 1
  br i1 %314, label %315, label %317

315:                                              ; preds = %311, %305
  %316 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -10, ptr %316, align 4, !tbaa !9
  br label %341

317:                                              ; preds = %311
  %318 = load i32, ptr %78, align 4, !tbaa !9
  %319 = icmp ne i32 %318, 0
  br i1 %319, label %320, label %326

320:                                              ; preds = %317
  %321 = load ptr, ptr %29, align 8, !tbaa !5
  %322 = load i32, ptr %321, align 4, !tbaa !9
  %323 = load ptr, ptr %21, align 8, !tbaa !5
  %324 = load i32, ptr %323, align 4, !tbaa !9
  %325 = icmp slt i32 %322, %324
  br i1 %325, label %330, label %326

326:                                              ; preds = %320, %317
  %327 = load ptr, ptr %29, align 8, !tbaa !5
  %328 = load i32, ptr %327, align 4, !tbaa !9
  %329 = icmp slt i32 %328, 1
  br i1 %329, label %330, label %332

330:                                              ; preds = %326, %320
  %331 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -12, ptr %331, align 4, !tbaa !9
  br label %340

332:                                              ; preds = %326
  %333 = load ptr, ptr %30, align 8, !tbaa !5
  %334 = load i32, ptr %333, align 4, !tbaa !9
  %335 = load i32, ptr %88, align 4, !tbaa !9
  %336 = icmp slt i32 %334, %335
  br i1 %336, label %337, label %339

337:                                              ; preds = %332
  %338 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -13, ptr %338, align 4, !tbaa !9
  br label %339

339:                                              ; preds = %337, %332
  br label %340

340:                                              ; preds = %339, %330
  br label %341

341:                                              ; preds = %340, %315
  br label %342

342:                                              ; preds = %341, %300
  %343 = load ptr, ptr %34, align 8, !tbaa !5
  %344 = load i32, ptr %343, align 4, !tbaa !9
  %345 = icmp ne i32 %344, 0
  br i1 %345, label %346, label %351

346:                                              ; preds = %342
  %347 = load ptr, ptr %34, align 8, !tbaa !5
  %348 = load i32, ptr %347, align 4, !tbaa !9
  %349 = sub nsw i32 0, %348
  store i32 %349, ptr %43, align 4, !tbaa !9
  %350 = call i32 @xerbla_(ptr noundef @.str.5, ptr noundef %43, i32 noundef 6)
  store i32 1, ptr %102, align 4
  br label %3928

351:                                              ; preds = %342
  %352 = load i32, ptr %88, align 4, !tbaa !9
  %353 = load ptr, ptr %31, align 8, !tbaa !5
  store i32 %352, ptr %353, align 4, !tbaa !9
  %354 = load ptr, ptr %21, align 8, !tbaa !5
  %355 = load i32, ptr %354, align 4, !tbaa !9
  %356 = icmp eq i32 %355, 0
  br i1 %356, label %357, label %358

357:                                              ; preds = %351
  store i32 1, ptr %102, align 4
  br label %3928

358:                                              ; preds = %351
  %359 = call double @dlamch_(ptr noundef @.str.6)
  store double %359, ptr %93, align 8, !tbaa !14
  %360 = load double, ptr %93, align 8, !tbaa !14
  %361 = fdiv double 1.000000e+00, %360
  store double %361, ptr %97, align 8, !tbaa !14
  call void @dlabad_(ptr noundef %93, ptr noundef %97)
  %362 = call double @dlamch_(ptr noundef @.str.7)
  %363 = call double @dlamch_(ptr noundef @.str.8)
  %364 = fmul double %362, %363
  store double %364, ptr %100, align 8, !tbaa !14
  %365 = load double, ptr %93, align 8, !tbaa !14
  %366 = load ptr, ptr %21, align 8, !tbaa !5
  %367 = load i32, ptr %366, align 4, !tbaa !9
  %368 = sitofp i32 %367 to double
  %369 = fmul double %365, %368
  %370 = load double, ptr %100, align 8, !tbaa !14
  %371 = fdiv double %369, %370
  store double %371, ptr %74, align 8, !tbaa !14
  %372 = load double, ptr %74, align 8, !tbaa !14
  %373 = fdiv double 1.000000e+00, %372
  store double %373, ptr %97, align 8, !tbaa !14
  %374 = load double, ptr %93, align 8, !tbaa !14
  %375 = load ptr, ptr %21, align 8, !tbaa !5
  %376 = load i32, ptr %375, align 4, !tbaa !9
  %377 = sitofp i32 %376 to double
  %378 = fmul double %374, %377
  %379 = fdiv double 1.000000e+00, %378
  store double %379, ptr %94, align 8, !tbaa !14
  %380 = load i32, ptr %37, align 4, !tbaa !9
  %381 = add nsw i32 %380, 1
  store i32 %381, ptr %43, align 4, !tbaa !9
  %382 = load ptr, ptr %22, align 8, !tbaa !5
  %383 = load i32, ptr %43, align 4, !tbaa !9
  %384 = sext i32 %383 to i64
  %385 = getelementptr inbounds %struct.doublecomplex, ptr %382, i64 %384
  %386 = getelementptr inbounds %struct.doublecomplex, ptr %385, i32 0, i32 0
  %387 = load double, ptr %386, align 8, !tbaa !16
  store double %387, ptr %48, align 8, !tbaa !14
  %388 = load double, ptr %48, align 8, !tbaa !14
  %389 = fcmp oge double %388, 0.000000e+00
  br i1 %389, label %390, label %392

390:                                              ; preds = %358
  %391 = load double, ptr %48, align 8, !tbaa !14
  br label %395

392:                                              ; preds = %358
  %393 = load double, ptr %48, align 8, !tbaa !14
  %394 = fneg double %393
  br label %395

395:                                              ; preds = %392, %390
  %396 = phi double [ %391, %390 ], [ %394, %392 ]
  %397 = load ptr, ptr %22, align 8, !tbaa !5
  %398 = load i32, ptr %37, align 4, !tbaa !9
  %399 = add nsw i32 %398, 1
  %400 = sext i32 %399 to i64
  %401 = getelementptr inbounds %struct.doublecomplex, ptr %397, i64 %400
  %402 = call { double, double } @Cd(ptr noundef %401)
  %403 = extractvalue { double, double } %402, 0
  %404 = extractvalue { double, double } %402, 1
  store double %404, ptr %49, align 8, !tbaa !14
  %405 = load double, ptr %49, align 8, !tbaa !14
  %406 = fcmp oge double %405, 0.000000e+00
  br i1 %406, label %407, label %409

407:                                              ; preds = %395
  %408 = load double, ptr %49, align 8, !tbaa !14
  br label %412

409:                                              ; preds = %395
  %410 = load double, ptr %49, align 8, !tbaa !14
  %411 = fneg double %410
  br label %412

412:                                              ; preds = %409, %407
  %413 = phi double [ %408, %407 ], [ %411, %409 ]
  %414 = fadd double %396, %413
  store double %414, ptr %76, align 8, !tbaa !14
  %415 = load i32, ptr %35, align 4, !tbaa !9
  %416 = add nsw i32 %415, 1
  store i32 %416, ptr %43, align 4, !tbaa !9
  %417 = load ptr, ptr %24, align 8, !tbaa !5
  %418 = load i32, ptr %43, align 4, !tbaa !9
  %419 = sext i32 %418 to i64
  %420 = getelementptr inbounds %struct.doublecomplex, ptr %417, i64 %419
  %421 = getelementptr inbounds %struct.doublecomplex, ptr %420, i32 0, i32 0
  %422 = load double, ptr %421, align 8, !tbaa !16
  store double %422, ptr %48, align 8, !tbaa !14
  %423 = load double, ptr %48, align 8, !tbaa !14
  %424 = fcmp oge double %423, 0.000000e+00
  br i1 %424, label %425, label %427

425:                                              ; preds = %412
  %426 = load double, ptr %48, align 8, !tbaa !14
  br label %430

427:                                              ; preds = %412
  %428 = load double, ptr %48, align 8, !tbaa !14
  %429 = fneg double %428
  br label %430

430:                                              ; preds = %427, %425
  %431 = phi double [ %426, %425 ], [ %429, %427 ]
  %432 = load ptr, ptr %24, align 8, !tbaa !5
  %433 = load i32, ptr %35, align 4, !tbaa !9
  %434 = add nsw i32 %433, 1
  %435 = sext i32 %434 to i64
  %436 = getelementptr inbounds %struct.doublecomplex, ptr %432, i64 %435
  %437 = call { double, double } @Cd(ptr noundef %436)
  %438 = extractvalue { double, double } %437, 0
  %439 = extractvalue { double, double } %437, 1
  store double %439, ptr %49, align 8, !tbaa !14
  %440 = load double, ptr %49, align 8, !tbaa !14
  %441 = fcmp oge double %440, 0.000000e+00
  br i1 %441, label %442, label %444

442:                                              ; preds = %430
  %443 = load double, ptr %49, align 8, !tbaa !14
  br label %447

444:                                              ; preds = %430
  %445 = load double, ptr %49, align 8, !tbaa !14
  %446 = fneg double %445
  br label %447

447:                                              ; preds = %444, %442
  %448 = phi double [ %443, %442 ], [ %446, %444 ]
  %449 = fadd double %431, %448
  store double %449, ptr %77, align 8, !tbaa !14
  %450 = load ptr, ptr %33, align 8, !tbaa !5
  %451 = getelementptr inbounds double, ptr %450, i64 1
  store double 0.000000e+00, ptr %451, align 8, !tbaa !14
  %452 = load ptr, ptr %33, align 8, !tbaa !5
  %453 = load ptr, ptr %21, align 8, !tbaa !5
  %454 = load i32, ptr %453, align 4, !tbaa !9
  %455 = add nsw i32 %454, 1
  %456 = sext i32 %455 to i64
  %457 = getelementptr inbounds double, ptr %452, i64 %456
  store double 0.000000e+00, ptr %457, align 8, !tbaa !14
  %458 = load ptr, ptr %21, align 8, !tbaa !5
  %459 = load i32, ptr %458, align 4, !tbaa !9
  store i32 %459, ptr %43, align 4, !tbaa !9
  store i32 2, ptr %69, align 4, !tbaa !9
  br label %460

460:                                              ; preds = %701, %447
  %461 = load i32, ptr %69, align 4, !tbaa !9
  %462 = load i32, ptr %43, align 4, !tbaa !9
  %463 = icmp sle i32 %461, %462
  br i1 %463, label %464, label %704

464:                                              ; preds = %460
  %465 = load ptr, ptr %33, align 8, !tbaa !5
  %466 = load i32, ptr %69, align 4, !tbaa !9
  %467 = sext i32 %466 to i64
  %468 = getelementptr inbounds double, ptr %465, i64 %467
  store double 0.000000e+00, ptr %468, align 8, !tbaa !14
  %469 = load ptr, ptr %33, align 8, !tbaa !5
  %470 = load ptr, ptr %21, align 8, !tbaa !5
  %471 = load i32, ptr %470, align 4, !tbaa !9
  %472 = load i32, ptr %69, align 4, !tbaa !9
  %473 = add nsw i32 %471, %472
  %474 = sext i32 %473 to i64
  %475 = getelementptr inbounds double, ptr %469, i64 %474
  store double 0.000000e+00, ptr %475, align 8, !tbaa !14
  %476 = load i32, ptr %69, align 4, !tbaa !9
  %477 = sub nsw i32 %476, 1
  store i32 %477, ptr %44, align 4, !tbaa !9
  store i32 1, ptr %68, align 4, !tbaa !9
  br label %478

478:                                              ; preds = %580, %464
  %479 = load i32, ptr %68, align 4, !tbaa !9
  %480 = load i32, ptr %44, align 4, !tbaa !9
  %481 = icmp sle i32 %479, %480
  br i1 %481, label %482, label %583

482:                                              ; preds = %478
  %483 = load i32, ptr %68, align 4, !tbaa !9
  %484 = load i32, ptr %69, align 4, !tbaa !9
  %485 = load i32, ptr %37, align 4, !tbaa !9
  %486 = mul nsw i32 %484, %485
  %487 = add nsw i32 %483, %486
  store i32 %487, ptr %45, align 4, !tbaa !9
  %488 = load ptr, ptr %22, align 8, !tbaa !5
  %489 = load i32, ptr %45, align 4, !tbaa !9
  %490 = sext i32 %489 to i64
  %491 = getelementptr inbounds %struct.doublecomplex, ptr %488, i64 %490
  %492 = getelementptr inbounds %struct.doublecomplex, ptr %491, i32 0, i32 0
  %493 = load double, ptr %492, align 8, !tbaa !16
  store double %493, ptr %48, align 8, !tbaa !14
  %494 = load double, ptr %48, align 8, !tbaa !14
  %495 = fcmp oge double %494, 0.000000e+00
  br i1 %495, label %496, label %498

496:                                              ; preds = %482
  %497 = load double, ptr %48, align 8, !tbaa !14
  br label %501

498:                                              ; preds = %482
  %499 = load double, ptr %48, align 8, !tbaa !14
  %500 = fneg double %499
  br label %501

501:                                              ; preds = %498, %496
  %502 = phi double [ %497, %496 ], [ %500, %498 ]
  %503 = load ptr, ptr %22, align 8, !tbaa !5
  %504 = load i32, ptr %68, align 4, !tbaa !9
  %505 = load i32, ptr %69, align 4, !tbaa !9
  %506 = load i32, ptr %37, align 4, !tbaa !9
  %507 = mul nsw i32 %505, %506
  %508 = add nsw i32 %504, %507
  %509 = sext i32 %508 to i64
  %510 = getelementptr inbounds %struct.doublecomplex, ptr %503, i64 %509
  %511 = call { double, double } @Cd(ptr noundef %510)
  %512 = extractvalue { double, double } %511, 0
  %513 = extractvalue { double, double } %511, 1
  store double %513, ptr %49, align 8, !tbaa !14
  %514 = load double, ptr %49, align 8, !tbaa !14
  %515 = fcmp oge double %514, 0.000000e+00
  br i1 %515, label %516, label %518

516:                                              ; preds = %501
  %517 = load double, ptr %49, align 8, !tbaa !14
  br label %521

518:                                              ; preds = %501
  %519 = load double, ptr %49, align 8, !tbaa !14
  %520 = fneg double %519
  br label %521

521:                                              ; preds = %518, %516
  %522 = phi double [ %517, %516 ], [ %520, %518 ]
  %523 = fadd double %502, %522
  %524 = load ptr, ptr %33, align 8, !tbaa !5
  %525 = load i32, ptr %69, align 4, !tbaa !9
  %526 = sext i32 %525 to i64
  %527 = getelementptr inbounds double, ptr %524, i64 %526
  %528 = load double, ptr %527, align 8, !tbaa !14
  %529 = fadd double %528, %523
  store double %529, ptr %527, align 8, !tbaa !14
  %530 = load i32, ptr %68, align 4, !tbaa !9
  %531 = load i32, ptr %69, align 4, !tbaa !9
  %532 = load i32, ptr %35, align 4, !tbaa !9
  %533 = mul nsw i32 %531, %532
  %534 = add nsw i32 %530, %533
  store i32 %534, ptr %45, align 4, !tbaa !9
  %535 = load ptr, ptr %24, align 8, !tbaa !5
  %536 = load i32, ptr %45, align 4, !tbaa !9
  %537 = sext i32 %536 to i64
  %538 = getelementptr inbounds %struct.doublecomplex, ptr %535, i64 %537
  %539 = getelementptr inbounds %struct.doublecomplex, ptr %538, i32 0, i32 0
  %540 = load double, ptr %539, align 8, !tbaa !16
  store double %540, ptr %48, align 8, !tbaa !14
  %541 = load double, ptr %48, align 8, !tbaa !14
  %542 = fcmp oge double %541, 0.000000e+00
  br i1 %542, label %543, label %545

543:                                              ; preds = %521
  %544 = load double, ptr %48, align 8, !tbaa !14
  br label %548

545:                                              ; preds = %521
  %546 = load double, ptr %48, align 8, !tbaa !14
  %547 = fneg double %546
  br label %548

548:                                              ; preds = %545, %543
  %549 = phi double [ %544, %543 ], [ %547, %545 ]
  %550 = load ptr, ptr %24, align 8, !tbaa !5
  %551 = load i32, ptr %68, align 4, !tbaa !9
  %552 = load i32, ptr %69, align 4, !tbaa !9
  %553 = load i32, ptr %35, align 4, !tbaa !9
  %554 = mul nsw i32 %552, %553
  %555 = add nsw i32 %551, %554
  %556 = sext i32 %555 to i64
  %557 = getelementptr inbounds %struct.doublecomplex, ptr %550, i64 %556
  %558 = call { double, double } @Cd(ptr noundef %557)
  %559 = extractvalue { double, double } %558, 0
  %560 = extractvalue { double, double } %558, 1
  store double %560, ptr %49, align 8, !tbaa !14
  %561 = load double, ptr %49, align 8, !tbaa !14
  %562 = fcmp oge double %561, 0.000000e+00
  br i1 %562, label %563, label %565

563:                                              ; preds = %548
  %564 = load double, ptr %49, align 8, !tbaa !14
  br label %568

565:                                              ; preds = %548
  %566 = load double, ptr %49, align 8, !tbaa !14
  %567 = fneg double %566
  br label %568

568:                                              ; preds = %565, %563
  %569 = phi double [ %564, %563 ], [ %567, %565 ]
  %570 = fadd double %549, %569
  %571 = load ptr, ptr %33, align 8, !tbaa !5
  %572 = load ptr, ptr %21, align 8, !tbaa !5
  %573 = load i32, ptr %572, align 4, !tbaa !9
  %574 = load i32, ptr %69, align 4, !tbaa !9
  %575 = add nsw i32 %573, %574
  %576 = sext i32 %575 to i64
  %577 = getelementptr inbounds double, ptr %571, i64 %576
  %578 = load double, ptr %577, align 8, !tbaa !14
  %579 = fadd double %578, %570
  store double %579, ptr %577, align 8, !tbaa !14
  br label %580

580:                                              ; preds = %568
  %581 = load i32, ptr %68, align 4, !tbaa !9
  %582 = add nsw i32 %581, 1
  store i32 %582, ptr %68, align 4, !tbaa !9
  br label %478, !llvm.loop !18

583:                                              ; preds = %478
  %584 = load i32, ptr %69, align 4, !tbaa !9
  %585 = load i32, ptr %69, align 4, !tbaa !9
  %586 = load i32, ptr %37, align 4, !tbaa !9
  %587 = mul nsw i32 %585, %586
  %588 = add nsw i32 %584, %587
  store i32 %588, ptr %44, align 4, !tbaa !9
  %589 = load double, ptr %76, align 8, !tbaa !14
  store double %589, ptr %50, align 8, !tbaa !14
  %590 = load ptr, ptr %33, align 8, !tbaa !5
  %591 = load i32, ptr %69, align 4, !tbaa !9
  %592 = sext i32 %591 to i64
  %593 = getelementptr inbounds double, ptr %590, i64 %592
  %594 = load double, ptr %593, align 8, !tbaa !14
  %595 = load ptr, ptr %22, align 8, !tbaa !5
  %596 = load i32, ptr %44, align 4, !tbaa !9
  %597 = sext i32 %596 to i64
  %598 = getelementptr inbounds %struct.doublecomplex, ptr %595, i64 %597
  %599 = getelementptr inbounds %struct.doublecomplex, ptr %598, i32 0, i32 0
  %600 = load double, ptr %599, align 8, !tbaa !16
  store double %600, ptr %48, align 8, !tbaa !14
  %601 = load double, ptr %48, align 8, !tbaa !14
  %602 = fcmp oge double %601, 0.000000e+00
  br i1 %602, label %603, label %605

603:                                              ; preds = %583
  %604 = load double, ptr %48, align 8, !tbaa !14
  br label %608

605:                                              ; preds = %583
  %606 = load double, ptr %48, align 8, !tbaa !14
  %607 = fneg double %606
  br label %608

608:                                              ; preds = %605, %603
  %609 = phi double [ %604, %603 ], [ %607, %605 ]
  %610 = load ptr, ptr %22, align 8, !tbaa !5
  %611 = load i32, ptr %69, align 4, !tbaa !9
  %612 = load i32, ptr %69, align 4, !tbaa !9
  %613 = load i32, ptr %37, align 4, !tbaa !9
  %614 = mul nsw i32 %612, %613
  %615 = add nsw i32 %611, %614
  %616 = sext i32 %615 to i64
  %617 = getelementptr inbounds %struct.doublecomplex, ptr %610, i64 %616
  %618 = call { double, double } @Cd(ptr noundef %617)
  %619 = extractvalue { double, double } %618, 0
  %620 = extractvalue { double, double } %618, 1
  store double %620, ptr %49, align 8, !tbaa !14
  %621 = load double, ptr %49, align 8, !tbaa !14
  %622 = fcmp oge double %621, 0.000000e+00
  br i1 %622, label %623, label %625

623:                                              ; preds = %608
  %624 = load double, ptr %49, align 8, !tbaa !14
  br label %628

625:                                              ; preds = %608
  %626 = load double, ptr %49, align 8, !tbaa !14
  %627 = fneg double %626
  br label %628

628:                                              ; preds = %625, %623
  %629 = phi double [ %624, %623 ], [ %627, %625 ]
  %630 = fadd double %609, %629
  %631 = fadd double %594, %630
  store double %631, ptr %51, align 8, !tbaa !14
  %632 = load double, ptr %50, align 8, !tbaa !14
  %633 = load double, ptr %51, align 8, !tbaa !14
  %634 = fcmp oge double %632, %633
  br i1 %634, label %635, label %637

635:                                              ; preds = %628
  %636 = load double, ptr %50, align 8, !tbaa !14
  br label %639

637:                                              ; preds = %628
  %638 = load double, ptr %51, align 8, !tbaa !14
  br label %639

639:                                              ; preds = %637, %635
  %640 = phi double [ %636, %635 ], [ %638, %637 ]
  store double %640, ptr %76, align 8, !tbaa !14
  %641 = load i32, ptr %69, align 4, !tbaa !9
  %642 = load i32, ptr %69, align 4, !tbaa !9
  %643 = load i32, ptr %35, align 4, !tbaa !9
  %644 = mul nsw i32 %642, %643
  %645 = add nsw i32 %641, %644
  store i32 %645, ptr %44, align 4, !tbaa !9
  %646 = load double, ptr %77, align 8, !tbaa !14
  store double %646, ptr %50, align 8, !tbaa !14
  %647 = load ptr, ptr %33, align 8, !tbaa !5
  %648 = load ptr, ptr %21, align 8, !tbaa !5
  %649 = load i32, ptr %648, align 4, !tbaa !9
  %650 = load i32, ptr %69, align 4, !tbaa !9
  %651 = add nsw i32 %649, %650
  %652 = sext i32 %651 to i64
  %653 = getelementptr inbounds double, ptr %647, i64 %652
  %654 = load double, ptr %653, align 8, !tbaa !14
  %655 = load ptr, ptr %24, align 8, !tbaa !5
  %656 = load i32, ptr %44, align 4, !tbaa !9
  %657 = sext i32 %656 to i64
  %658 = getelementptr inbounds %struct.doublecomplex, ptr %655, i64 %657
  %659 = getelementptr inbounds %struct.doublecomplex, ptr %658, i32 0, i32 0
  %660 = load double, ptr %659, align 8, !tbaa !16
  store double %660, ptr %48, align 8, !tbaa !14
  %661 = load double, ptr %48, align 8, !tbaa !14
  %662 = fcmp oge double %661, 0.000000e+00
  br i1 %662, label %663, label %665

663:                                              ; preds = %639
  %664 = load double, ptr %48, align 8, !tbaa !14
  br label %668

665:                                              ; preds = %639
  %666 = load double, ptr %48, align 8, !tbaa !14
  %667 = fneg double %666
  br label %668

668:                                              ; preds = %665, %663
  %669 = phi double [ %664, %663 ], [ %667, %665 ]
  %670 = load ptr, ptr %24, align 8, !tbaa !5
  %671 = load i32, ptr %69, align 4, !tbaa !9
  %672 = load i32, ptr %69, align 4, !tbaa !9
  %673 = load i32, ptr %35, align 4, !tbaa !9
  %674 = mul nsw i32 %672, %673
  %675 = add nsw i32 %671, %674
  %676 = sext i32 %675 to i64
  %677 = getelementptr inbounds %struct.doublecomplex, ptr %670, i64 %676
  %678 = call { double, double } @Cd(ptr noundef %677)
  %679 = extractvalue { double, double } %678, 0
  %680 = extractvalue { double, double } %678, 1
  store double %680, ptr %49, align 8, !tbaa !14
  %681 = load double, ptr %49, align 8, !tbaa !14
  %682 = fcmp oge double %681, 0.000000e+00
  br i1 %682, label %683, label %685

683:                                              ; preds = %668
  %684 = load double, ptr %49, align 8, !tbaa !14
  br label %688

685:                                              ; preds = %668
  %686 = load double, ptr %49, align 8, !tbaa !14
  %687 = fneg double %686
  br label %688

688:                                              ; preds = %685, %683
  %689 = phi double [ %684, %683 ], [ %687, %685 ]
  %690 = fadd double %669, %689
  %691 = fadd double %654, %690
  store double %691, ptr %51, align 8, !tbaa !14
  %692 = load double, ptr %50, align 8, !tbaa !14
  %693 = load double, ptr %51, align 8, !tbaa !14
  %694 = fcmp oge double %692, %693
  br i1 %694, label %695, label %697

695:                                              ; preds = %688
  %696 = load double, ptr %50, align 8, !tbaa !14
  br label %699

697:                                              ; preds = %688
  %698 = load double, ptr %51, align 8, !tbaa !14
  br label %699

699:                                              ; preds = %697, %695
  %700 = phi double [ %696, %695 ], [ %698, %697 ]
  store double %700, ptr %77, align 8, !tbaa !14
  br label %701

701:                                              ; preds = %699
  %702 = load i32, ptr %69, align 4, !tbaa !9
  %703 = add nsw i32 %702, 1
  store i32 %703, ptr %69, align 4, !tbaa !9
  br label %460, !llvm.loop !19

704:                                              ; preds = %460
  %705 = load double, ptr %76, align 8, !tbaa !14
  %706 = load double, ptr %93, align 8, !tbaa !14
  %707 = fcmp oge double %705, %706
  br i1 %707, label %708, label %710

708:                                              ; preds = %704
  %709 = load double, ptr %76, align 8, !tbaa !14
  br label %712

710:                                              ; preds = %704
  %711 = load double, ptr %93, align 8, !tbaa !14
  br label %712

712:                                              ; preds = %710, %708
  %713 = phi double [ %709, %708 ], [ %711, %710 ]
  %714 = fdiv double 1.000000e+00, %713
  store double %714, ptr %89, align 8, !tbaa !14
  %715 = load double, ptr %77, align 8, !tbaa !14
  %716 = load double, ptr %93, align 8, !tbaa !14
  %717 = fcmp oge double %715, %716
  br i1 %717, label %718, label %720

718:                                              ; preds = %712
  %719 = load double, ptr %77, align 8, !tbaa !14
  br label %722

720:                                              ; preds = %712
  %721 = load double, ptr %93, align 8, !tbaa !14
  br label %722

722:                                              ; preds = %720, %718
  %723 = phi double [ %719, %718 ], [ %721, %720 ]
  %724 = fdiv double 1.000000e+00, %723
  store double %724, ptr %90, align 8, !tbaa !14
  %725 = load i32, ptr %75, align 4, !tbaa !9
  %726 = icmp ne i32 %725, 0
  br i1 %726, label %727, label %2263

727:                                              ; preds = %722
  store i32 0, ptr %59, align 4, !tbaa !9
  %728 = load ptr, ptr %21, align 8, !tbaa !5
  %729 = load i32, ptr %728, align 4, !tbaa !9
  store i32 %729, ptr %43, align 4, !tbaa !9
  store i32 1, ptr %83, align 4, !tbaa !9
  br label %730

730:                                              ; preds = %2259, %727
  %731 = load i32, ptr %83, align 4, !tbaa !9
  %732 = load i32, ptr %43, align 4, !tbaa !9
  %733 = icmp sle i32 %731, %732
  br i1 %733, label %734, label %2262

734:                                              ; preds = %730
  %735 = load i32, ptr %71, align 4, !tbaa !9
  %736 = icmp ne i32 %735, 0
  br i1 %736, label %737, label %738

737:                                              ; preds = %734
  store i32 1, ptr %95, align 4, !tbaa !9
  br label %744

738:                                              ; preds = %734
  %739 = load ptr, ptr %20, align 8, !tbaa !5
  %740 = load i32, ptr %83, align 4, !tbaa !9
  %741 = sext i32 %740 to i64
  %742 = getelementptr inbounds i32, ptr %739, i64 %741
  %743 = load i32, ptr %742, align 4, !tbaa !9
  store i32 %743, ptr %95, align 4, !tbaa !9
  br label %744

744:                                              ; preds = %738, %737
  %745 = load i32, ptr %95, align 4, !tbaa !9
  %746 = icmp ne i32 %745, 0
  br i1 %746, label %747, label %2257

747:                                              ; preds = %744
  %748 = load i32, ptr %59, align 4, !tbaa !9
  %749 = add nsw i32 %748, 1
  store i32 %749, ptr %59, align 4, !tbaa !9
  %750 = load i32, ptr %83, align 4, !tbaa !9
  %751 = load i32, ptr %83, align 4, !tbaa !9
  %752 = load i32, ptr %37, align 4, !tbaa !9
  %753 = mul nsw i32 %751, %752
  %754 = add nsw i32 %750, %753
  store i32 %754, ptr %44, align 4, !tbaa !9
  %755 = load i32, ptr %83, align 4, !tbaa !9
  %756 = load i32, ptr %83, align 4, !tbaa !9
  %757 = load i32, ptr %35, align 4, !tbaa !9
  %758 = mul nsw i32 %756, %757
  %759 = add nsw i32 %755, %758
  store i32 %759, ptr %45, align 4, !tbaa !9
  %760 = load ptr, ptr %22, align 8, !tbaa !5
  %761 = load i32, ptr %44, align 4, !tbaa !9
  %762 = sext i32 %761 to i64
  %763 = getelementptr inbounds %struct.doublecomplex, ptr %760, i64 %762
  %764 = getelementptr inbounds %struct.doublecomplex, ptr %763, i32 0, i32 0
  %765 = load double, ptr %764, align 8, !tbaa !16
  store double %765, ptr %49, align 8, !tbaa !14
  %766 = load double, ptr %49, align 8, !tbaa !14
  %767 = fcmp oge double %766, 0.000000e+00
  br i1 %767, label %768, label %770

768:                                              ; preds = %747
  %769 = load double, ptr %49, align 8, !tbaa !14
  br label %773

770:                                              ; preds = %747
  %771 = load double, ptr %49, align 8, !tbaa !14
  %772 = fneg double %771
  br label %773

773:                                              ; preds = %770, %768
  %774 = phi double [ %769, %768 ], [ %772, %770 ]
  %775 = load ptr, ptr %22, align 8, !tbaa !5
  %776 = load i32, ptr %83, align 4, !tbaa !9
  %777 = load i32, ptr %83, align 4, !tbaa !9
  %778 = load i32, ptr %37, align 4, !tbaa !9
  %779 = mul nsw i32 %777, %778
  %780 = add nsw i32 %776, %779
  %781 = sext i32 %780 to i64
  %782 = getelementptr inbounds %struct.doublecomplex, ptr %775, i64 %781
  %783 = call { double, double } @Cd(ptr noundef %782)
  %784 = extractvalue { double, double } %783, 0
  %785 = extractvalue { double, double } %783, 1
  store double %785, ptr %50, align 8, !tbaa !14
  %786 = load double, ptr %50, align 8, !tbaa !14
  %787 = fcmp oge double %786, 0.000000e+00
  br i1 %787, label %788, label %790

788:                                              ; preds = %773
  %789 = load double, ptr %50, align 8, !tbaa !14
  br label %793

790:                                              ; preds = %773
  %791 = load double, ptr %50, align 8, !tbaa !14
  %792 = fneg double %791
  br label %793

793:                                              ; preds = %790, %788
  %794 = phi double [ %789, %788 ], [ %792, %790 ]
  %795 = fadd double %774, %794
  %796 = load double, ptr %93, align 8, !tbaa !14
  %797 = fcmp ole double %795, %796
  br i1 %797, label %798, label %858

798:                                              ; preds = %793
  %799 = load ptr, ptr %24, align 8, !tbaa !5
  %800 = load i32, ptr %45, align 4, !tbaa !9
  %801 = sext i32 %800 to i64
  %802 = getelementptr inbounds %struct.doublecomplex, ptr %799, i64 %801
  %803 = getelementptr inbounds %struct.doublecomplex, ptr %802, i32 0, i32 0
  %804 = load double, ptr %803, align 8, !tbaa !16
  store double %804, ptr %48, align 8, !tbaa !14
  %805 = load double, ptr %48, align 8, !tbaa !14
  %806 = fcmp oge double %805, 0.000000e+00
  br i1 %806, label %807, label %809

807:                                              ; preds = %798
  %808 = load double, ptr %48, align 8, !tbaa !14
  br label %812

809:                                              ; preds = %798
  %810 = load double, ptr %48, align 8, !tbaa !14
  %811 = fneg double %810
  br label %812

812:                                              ; preds = %809, %807
  %813 = phi double [ %808, %807 ], [ %811, %809 ]
  %814 = load double, ptr %93, align 8, !tbaa !14
  %815 = fcmp ole double %813, %814
  br i1 %815, label %816, label %858

816:                                              ; preds = %812
  %817 = load ptr, ptr %21, align 8, !tbaa !5
  %818 = load i32, ptr %817, align 4, !tbaa !9
  store i32 %818, ptr %44, align 4, !tbaa !9
  store i32 1, ptr %91, align 4, !tbaa !9
  br label %819

819:                                              ; preds = %839, %816
  %820 = load i32, ptr %91, align 4, !tbaa !9
  %821 = load i32, ptr %44, align 4, !tbaa !9
  %822 = icmp sle i32 %820, %821
  br i1 %822, label %823, label %842

823:                                              ; preds = %819
  %824 = load i32, ptr %91, align 4, !tbaa !9
  %825 = load i32, ptr %59, align 4, !tbaa !9
  %826 = load i32, ptr %39, align 4, !tbaa !9
  %827 = mul nsw i32 %825, %826
  %828 = add nsw i32 %824, %827
  store i32 %828, ptr %45, align 4, !tbaa !9
  %829 = load ptr, ptr %26, align 8, !tbaa !5
  %830 = load i32, ptr %45, align 4, !tbaa !9
  %831 = sext i32 %830 to i64
  %832 = getelementptr inbounds %struct.doublecomplex, ptr %829, i64 %831
  %833 = getelementptr inbounds %struct.doublecomplex, ptr %832, i32 0, i32 0
  store double 0.000000e+00, ptr %833, align 8, !tbaa !16
  %834 = load ptr, ptr %26, align 8, !tbaa !5
  %835 = load i32, ptr %45, align 4, !tbaa !9
  %836 = sext i32 %835 to i64
  %837 = getelementptr inbounds %struct.doublecomplex, ptr %834, i64 %836
  %838 = getelementptr inbounds %struct.doublecomplex, ptr %837, i32 0, i32 1
  store double 0.000000e+00, ptr %838, align 8, !tbaa !20
  br label %839

839:                                              ; preds = %823
  %840 = load i32, ptr %91, align 4, !tbaa !9
  %841 = add nsw i32 %840, 1
  store i32 %841, ptr %91, align 4, !tbaa !9
  br label %819, !llvm.loop !21

842:                                              ; preds = %819
  %843 = load i32, ptr %59, align 4, !tbaa !9
  %844 = load i32, ptr %59, align 4, !tbaa !9
  %845 = load i32, ptr %39, align 4, !tbaa !9
  %846 = mul nsw i32 %844, %845
  %847 = add nsw i32 %843, %846
  store i32 %847, ptr %44, align 4, !tbaa !9
  %848 = load ptr, ptr %26, align 8, !tbaa !5
  %849 = load i32, ptr %44, align 4, !tbaa !9
  %850 = sext i32 %849 to i64
  %851 = getelementptr inbounds %struct.doublecomplex, ptr %848, i64 %850
  %852 = getelementptr inbounds %struct.doublecomplex, ptr %851, i32 0, i32 0
  store double 1.000000e+00, ptr %852, align 8, !tbaa !16
  %853 = load ptr, ptr %26, align 8, !tbaa !5
  %854 = load i32, ptr %44, align 4, !tbaa !9
  %855 = sext i32 %854 to i64
  %856 = getelementptr inbounds %struct.doublecomplex, ptr %853, i64 %855
  %857 = getelementptr inbounds %struct.doublecomplex, ptr %856, i32 0, i32 1
  store double 0.000000e+00, ptr %857, align 8, !tbaa !20
  br label %2258

858:                                              ; preds = %812, %793
  %859 = load i32, ptr %83, align 4, !tbaa !9
  %860 = load i32, ptr %83, align 4, !tbaa !9
  %861 = load i32, ptr %37, align 4, !tbaa !9
  %862 = mul nsw i32 %860, %861
  %863 = add nsw i32 %859, %862
  store i32 %863, ptr %44, align 4, !tbaa !9
  %864 = load i32, ptr %83, align 4, !tbaa !9
  %865 = load i32, ptr %83, align 4, !tbaa !9
  %866 = load i32, ptr %35, align 4, !tbaa !9
  %867 = mul nsw i32 %865, %866
  %868 = add nsw i32 %864, %867
  store i32 %868, ptr %45, align 4, !tbaa !9
  %869 = load ptr, ptr %22, align 8, !tbaa !5
  %870 = load i32, ptr %44, align 4, !tbaa !9
  %871 = sext i32 %870 to i64
  %872 = getelementptr inbounds %struct.doublecomplex, ptr %869, i64 %871
  %873 = getelementptr inbounds %struct.doublecomplex, ptr %872, i32 0, i32 0
  %874 = load double, ptr %873, align 8, !tbaa !16
  store double %874, ptr %49, align 8, !tbaa !14
  %875 = load double, ptr %49, align 8, !tbaa !14
  %876 = fcmp oge double %875, 0.000000e+00
  br i1 %876, label %877, label %879

877:                                              ; preds = %858
  %878 = load double, ptr %49, align 8, !tbaa !14
  br label %882

879:                                              ; preds = %858
  %880 = load double, ptr %49, align 8, !tbaa !14
  %881 = fneg double %880
  br label %882

882:                                              ; preds = %879, %877
  %883 = phi double [ %878, %877 ], [ %881, %879 ]
  %884 = load ptr, ptr %22, align 8, !tbaa !5
  %885 = load i32, ptr %83, align 4, !tbaa !9
  %886 = load i32, ptr %83, align 4, !tbaa !9
  %887 = load i32, ptr %37, align 4, !tbaa !9
  %888 = mul nsw i32 %886, %887
  %889 = add nsw i32 %885, %888
  %890 = sext i32 %889 to i64
  %891 = getelementptr inbounds %struct.doublecomplex, ptr %884, i64 %890
  %892 = call { double, double } @Cd(ptr noundef %891)
  %893 = extractvalue { double, double } %892, 0
  %894 = extractvalue { double, double } %892, 1
  store double %894, ptr %50, align 8, !tbaa !14
  %895 = load double, ptr %50, align 8, !tbaa !14
  %896 = fcmp oge double %895, 0.000000e+00
  br i1 %896, label %897, label %899

897:                                              ; preds = %882
  %898 = load double, ptr %50, align 8, !tbaa !14
  br label %902

899:                                              ; preds = %882
  %900 = load double, ptr %50, align 8, !tbaa !14
  %901 = fneg double %900
  br label %902

902:                                              ; preds = %899, %897
  %903 = phi double [ %898, %897 ], [ %901, %899 ]
  %904 = fadd double %883, %903
  %905 = load double, ptr %89, align 8, !tbaa !14
  %906 = fmul double %904, %905
  store double %906, ptr %51, align 8, !tbaa !14
  %907 = load ptr, ptr %24, align 8, !tbaa !5
  %908 = load i32, ptr %45, align 4, !tbaa !9
  %909 = sext i32 %908 to i64
  %910 = getelementptr inbounds %struct.doublecomplex, ptr %907, i64 %909
  %911 = getelementptr inbounds %struct.doublecomplex, ptr %910, i32 0, i32 0
  %912 = load double, ptr %911, align 8, !tbaa !16
  store double %912, ptr %48, align 8, !tbaa !14
  %913 = load double, ptr %48, align 8, !tbaa !14
  %914 = fcmp oge double %913, 0.000000e+00
  br i1 %914, label %915, label %917

915:                                              ; preds = %902
  %916 = load double, ptr %48, align 8, !tbaa !14
  br label %920

917:                                              ; preds = %902
  %918 = load double, ptr %48, align 8, !tbaa !14
  %919 = fneg double %918
  br label %920

920:                                              ; preds = %917, %915
  %921 = phi double [ %916, %915 ], [ %919, %917 ]
  %922 = load double, ptr %90, align 8, !tbaa !14
  %923 = fmul double %921, %922
  store double %923, ptr %52, align 8, !tbaa !14
  %924 = load double, ptr %51, align 8, !tbaa !14
  %925 = load double, ptr %52, align 8, !tbaa !14
  %926 = fcmp oge double %924, %925
  br i1 %926, label %927, label %929

927:                                              ; preds = %920
  %928 = load double, ptr %51, align 8, !tbaa !14
  br label %931

929:                                              ; preds = %920
  %930 = load double, ptr %52, align 8, !tbaa !14
  br label %931

931:                                              ; preds = %929, %927
  %932 = phi double [ %928, %927 ], [ %930, %929 ]
  store double %932, ptr %51, align 8, !tbaa !14
  %933 = load double, ptr %51, align 8, !tbaa !14
  %934 = load double, ptr %93, align 8, !tbaa !14
  %935 = fcmp oge double %933, %934
  br i1 %935, label %936, label %938

936:                                              ; preds = %931
  %937 = load double, ptr %51, align 8, !tbaa !14
  br label %940

938:                                              ; preds = %931
  %939 = load double, ptr %93, align 8, !tbaa !14
  br label %940

940:                                              ; preds = %938, %936
  %941 = phi double [ %937, %936 ], [ %939, %938 ]
  %942 = fdiv double 1.000000e+00, %941
  store double %942, ptr %63, align 8, !tbaa !14
  %943 = load i32, ptr %83, align 4, !tbaa !9
  %944 = load i32, ptr %83, align 4, !tbaa !9
  %945 = load i32, ptr %37, align 4, !tbaa !9
  %946 = mul nsw i32 %944, %945
  %947 = add nsw i32 %943, %946
  store i32 %947, ptr %44, align 4, !tbaa !9
  %948 = load double, ptr %63, align 8, !tbaa !14
  %949 = load ptr, ptr %22, align 8, !tbaa !5
  %950 = load i32, ptr %44, align 4, !tbaa !9
  %951 = sext i32 %950 to i64
  %952 = getelementptr inbounds %struct.doublecomplex, ptr %949, i64 %951
  %953 = getelementptr inbounds %struct.doublecomplex, ptr %952, i32 0, i32 0
  %954 = load double, ptr %953, align 8, !tbaa !16
  %955 = fmul double %948, %954
  %956 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %955, ptr %956, align 8, !tbaa !16
  %957 = load double, ptr %63, align 8, !tbaa !14
  %958 = load ptr, ptr %22, align 8, !tbaa !5
  %959 = load i32, ptr %44, align 4, !tbaa !9
  %960 = sext i32 %959 to i64
  %961 = getelementptr inbounds %struct.doublecomplex, ptr %958, i64 %960
  %962 = getelementptr inbounds %struct.doublecomplex, ptr %961, i32 0, i32 1
  %963 = load double, ptr %962, align 8, !tbaa !20
  %964 = fmul double %957, %963
  %965 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double %964, ptr %965, align 8, !tbaa !20
  %966 = load double, ptr %89, align 8, !tbaa !14
  %967 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %968 = load double, ptr %967, align 8, !tbaa !16
  %969 = fmul double %966, %968
  %970 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  store double %969, ptr %970, align 8, !tbaa !16
  %971 = load double, ptr %89, align 8, !tbaa !14
  %972 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %973 = load double, ptr %972, align 8, !tbaa !20
  %974 = fmul double %971, %973
  %975 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  store double %974, ptr %975, align 8, !tbaa !20
  %976 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %977 = load double, ptr %976, align 8, !tbaa !16
  %978 = getelementptr inbounds %struct.doublecomplex, ptr %92, i32 0, i32 0
  store double %977, ptr %978, align 8, !tbaa !16
  %979 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %980 = load double, ptr %979, align 8, !tbaa !20
  %981 = getelementptr inbounds %struct.doublecomplex, ptr %92, i32 0, i32 1
  store double %980, ptr %981, align 8, !tbaa !20
  %982 = load i32, ptr %83, align 4, !tbaa !9
  %983 = load i32, ptr %83, align 4, !tbaa !9
  %984 = load i32, ptr %35, align 4, !tbaa !9
  %985 = mul nsw i32 %983, %984
  %986 = add nsw i32 %982, %985
  store i32 %986, ptr %44, align 4, !tbaa !9
  %987 = load double, ptr %63, align 8, !tbaa !14
  %988 = load ptr, ptr %24, align 8, !tbaa !5
  %989 = load i32, ptr %44, align 4, !tbaa !9
  %990 = sext i32 %989 to i64
  %991 = getelementptr inbounds %struct.doublecomplex, ptr %988, i64 %990
  %992 = getelementptr inbounds %struct.doublecomplex, ptr %991, i32 0, i32 0
  %993 = load double, ptr %992, align 8, !tbaa !16
  %994 = fmul double %987, %993
  %995 = load double, ptr %90, align 8, !tbaa !14
  %996 = fmul double %994, %995
  store double %996, ptr %73, align 8, !tbaa !14
  %997 = load double, ptr %73, align 8, !tbaa !14
  %998 = load double, ptr %89, align 8, !tbaa !14
  %999 = fmul double %997, %998
  store double %999, ptr %85, align 8, !tbaa !14
  %1000 = load double, ptr %90, align 8, !tbaa !14
  %1001 = getelementptr inbounds %struct.doublecomplex, ptr %92, i32 0, i32 0
  %1002 = load double, ptr %1001, align 8, !tbaa !16
  %1003 = fmul double %1000, %1002
  %1004 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  store double %1003, ptr %1004, align 8, !tbaa !16
  %1005 = load double, ptr %90, align 8, !tbaa !14
  %1006 = getelementptr inbounds %struct.doublecomplex, ptr %92, i32 0, i32 1
  %1007 = load double, ptr %1006, align 8, !tbaa !20
  %1008 = fmul double %1005, %1007
  %1009 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  store double %1008, ptr %1009, align 8, !tbaa !20
  %1010 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %1011 = load double, ptr %1010, align 8, !tbaa !16
  %1012 = getelementptr inbounds %struct.doublecomplex, ptr %86, i32 0, i32 0
  store double %1011, ptr %1012, align 8, !tbaa !16
  %1013 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %1014 = load double, ptr %1013, align 8, !tbaa !20
  %1015 = getelementptr inbounds %struct.doublecomplex, ptr %86, i32 0, i32 1
  store double %1014, ptr %1015, align 8, !tbaa !20
  %1016 = load double, ptr %73, align 8, !tbaa !14
  %1017 = fcmp oge double %1016, 0.000000e+00
  br i1 %1017, label %1018, label %1020

1018:                                             ; preds = %940
  %1019 = load double, ptr %73, align 8, !tbaa !14
  br label %1023

1020:                                             ; preds = %940
  %1021 = load double, ptr %73, align 8, !tbaa !14
  %1022 = fneg double %1021
  br label %1023

1023:                                             ; preds = %1020, %1018
  %1024 = phi double [ %1019, %1018 ], [ %1022, %1020 ]
  %1025 = load double, ptr %93, align 8, !tbaa !14
  %1026 = fcmp oge double %1024, %1025
  br i1 %1026, label %1027, label %1039

1027:                                             ; preds = %1023
  %1028 = load double, ptr %85, align 8, !tbaa !14
  %1029 = fcmp oge double %1028, 0.000000e+00
  br i1 %1029, label %1030, label %1032

1030:                                             ; preds = %1027
  %1031 = load double, ptr %85, align 8, !tbaa !14
  br label %1035

1032:                                             ; preds = %1027
  %1033 = load double, ptr %85, align 8, !tbaa !14
  %1034 = fneg double %1033
  br label %1035

1035:                                             ; preds = %1032, %1030
  %1036 = phi double [ %1031, %1030 ], [ %1034, %1032 ]
  %1037 = load double, ptr %74, align 8, !tbaa !14
  %1038 = fcmp olt double %1036, %1037
  br label %1039

1039:                                             ; preds = %1035, %1023
  %1040 = phi i1 [ false, %1023 ], [ %1038, %1035 ]
  %1041 = zext i1 %1040 to i32
  store i32 %1041, ptr %98, align 4, !tbaa !9
  %1042 = getelementptr inbounds %struct.doublecomplex, ptr %92, i32 0, i32 0
  %1043 = load double, ptr %1042, align 8, !tbaa !16
  store double %1043, ptr %48, align 8, !tbaa !14
  %1044 = load double, ptr %48, align 8, !tbaa !14
  %1045 = fcmp oge double %1044, 0.000000e+00
  br i1 %1045, label %1046, label %1048

1046:                                             ; preds = %1039
  %1047 = load double, ptr %48, align 8, !tbaa !14
  br label %1051

1048:                                             ; preds = %1039
  %1049 = load double, ptr %48, align 8, !tbaa !14
  %1050 = fneg double %1049
  br label %1051

1051:                                             ; preds = %1048, %1046
  %1052 = phi double [ %1047, %1046 ], [ %1050, %1048 ]
  %1053 = call { double, double } @Cd(ptr noundef %92)
  %1054 = extractvalue { double, double } %1053, 0
  %1055 = extractvalue { double, double } %1053, 1
  store double %1055, ptr %49, align 8, !tbaa !14
  %1056 = load double, ptr %49, align 8, !tbaa !14
  %1057 = fcmp oge double %1056, 0.000000e+00
  br i1 %1057, label %1058, label %1060

1058:                                             ; preds = %1051
  %1059 = load double, ptr %49, align 8, !tbaa !14
  br label %1063

1060:                                             ; preds = %1051
  %1061 = load double, ptr %49, align 8, !tbaa !14
  %1062 = fneg double %1061
  br label %1063

1063:                                             ; preds = %1060, %1058
  %1064 = phi double [ %1059, %1058 ], [ %1062, %1060 ]
  %1065 = fadd double %1052, %1064
  %1066 = load double, ptr %93, align 8, !tbaa !14
  %1067 = fcmp oge double %1065, %1066
  br i1 %1067, label %1068, label %1095

1068:                                             ; preds = %1063
  %1069 = getelementptr inbounds %struct.doublecomplex, ptr %86, i32 0, i32 0
  %1070 = load double, ptr %1069, align 8, !tbaa !16
  store double %1070, ptr %50, align 8, !tbaa !14
  %1071 = load double, ptr %50, align 8, !tbaa !14
  %1072 = fcmp oge double %1071, 0.000000e+00
  br i1 %1072, label %1073, label %1075

1073:                                             ; preds = %1068
  %1074 = load double, ptr %50, align 8, !tbaa !14
  br label %1078

1075:                                             ; preds = %1068
  %1076 = load double, ptr %50, align 8, !tbaa !14
  %1077 = fneg double %1076
  br label %1078

1078:                                             ; preds = %1075, %1073
  %1079 = phi double [ %1074, %1073 ], [ %1077, %1075 ]
  %1080 = call { double, double } @Cd(ptr noundef %86)
  %1081 = extractvalue { double, double } %1080, 0
  %1082 = extractvalue { double, double } %1080, 1
  store double %1082, ptr %51, align 8, !tbaa !14
  %1083 = load double, ptr %51, align 8, !tbaa !14
  %1084 = fcmp oge double %1083, 0.000000e+00
  br i1 %1084, label %1085, label %1087

1085:                                             ; preds = %1078
  %1086 = load double, ptr %51, align 8, !tbaa !14
  br label %1090

1087:                                             ; preds = %1078
  %1088 = load double, ptr %51, align 8, !tbaa !14
  %1089 = fneg double %1088
  br label %1090

1090:                                             ; preds = %1087, %1085
  %1091 = phi double [ %1086, %1085 ], [ %1089, %1087 ]
  %1092 = fadd double %1079, %1091
  %1093 = load double, ptr %74, align 8, !tbaa !14
  %1094 = fcmp olt double %1092, %1093
  br label %1095

1095:                                             ; preds = %1090, %1063
  %1096 = phi i1 [ false, %1063 ], [ %1094, %1090 ]
  %1097 = zext i1 %1096 to i32
  store i32 %1097, ptr %99, align 4, !tbaa !9
  store double 1.000000e+00, ptr %70, align 8, !tbaa !14
  %1098 = load i32, ptr %98, align 4, !tbaa !9
  %1099 = icmp ne i32 %1098, 0
  br i1 %1099, label %1100, label %1122

1100:                                             ; preds = %1095
  %1101 = load double, ptr %74, align 8, !tbaa !14
  %1102 = load double, ptr %73, align 8, !tbaa !14
  %1103 = fcmp oge double %1102, 0.000000e+00
  br i1 %1103, label %1104, label %1106

1104:                                             ; preds = %1100
  %1105 = load double, ptr %73, align 8, !tbaa !14
  br label %1109

1106:                                             ; preds = %1100
  %1107 = load double, ptr %73, align 8, !tbaa !14
  %1108 = fneg double %1107
  br label %1109

1109:                                             ; preds = %1106, %1104
  %1110 = phi double [ %1105, %1104 ], [ %1108, %1106 ]
  %1111 = fdiv double %1101, %1110
  %1112 = load double, ptr %76, align 8, !tbaa !14
  %1113 = load double, ptr %97, align 8, !tbaa !14
  %1114 = fcmp ole double %1112, %1113
  br i1 %1114, label %1115, label %1117

1115:                                             ; preds = %1109
  %1116 = load double, ptr %76, align 8, !tbaa !14
  br label %1119

1117:                                             ; preds = %1109
  %1118 = load double, ptr %97, align 8, !tbaa !14
  br label %1119

1119:                                             ; preds = %1117, %1115
  %1120 = phi double [ %1116, %1115 ], [ %1118, %1117 ]
  %1121 = fmul double %1111, %1120
  store double %1121, ptr %70, align 8, !tbaa !14
  br label %1122

1122:                                             ; preds = %1119, %1095
  %1123 = load i32, ptr %99, align 4, !tbaa !9
  %1124 = icmp ne i32 %1123, 0
  br i1 %1124, label %1125, label %1172

1125:                                             ; preds = %1122
  %1126 = load double, ptr %70, align 8, !tbaa !14
  store double %1126, ptr %50, align 8, !tbaa !14
  %1127 = load double, ptr %74, align 8, !tbaa !14
  %1128 = getelementptr inbounds %struct.doublecomplex, ptr %92, i32 0, i32 0
  %1129 = load double, ptr %1128, align 8, !tbaa !16
  store double %1129, ptr %48, align 8, !tbaa !14
  %1130 = load double, ptr %48, align 8, !tbaa !14
  %1131 = fcmp oge double %1130, 0.000000e+00
  br i1 %1131, label %1132, label %1134

1132:                                             ; preds = %1125
  %1133 = load double, ptr %48, align 8, !tbaa !14
  br label %1137

1134:                                             ; preds = %1125
  %1135 = load double, ptr %48, align 8, !tbaa !14
  %1136 = fneg double %1135
  br label %1137

1137:                                             ; preds = %1134, %1132
  %1138 = phi double [ %1133, %1132 ], [ %1136, %1134 ]
  %1139 = call { double, double } @Cd(ptr noundef %92)
  %1140 = extractvalue { double, double } %1139, 0
  %1141 = extractvalue { double, double } %1139, 1
  store double %1141, ptr %49, align 8, !tbaa !14
  %1142 = load double, ptr %49, align 8, !tbaa !14
  %1143 = fcmp oge double %1142, 0.000000e+00
  br i1 %1143, label %1144, label %1146

1144:                                             ; preds = %1137
  %1145 = load double, ptr %49, align 8, !tbaa !14
  br label %1149

1146:                                             ; preds = %1137
  %1147 = load double, ptr %49, align 8, !tbaa !14
  %1148 = fneg double %1147
  br label %1149

1149:                                             ; preds = %1146, %1144
  %1150 = phi double [ %1145, %1144 ], [ %1148, %1146 ]
  %1151 = fadd double %1138, %1150
  %1152 = fdiv double %1127, %1151
  %1153 = load double, ptr %77, align 8, !tbaa !14
  %1154 = load double, ptr %97, align 8, !tbaa !14
  %1155 = fcmp ole double %1153, %1154
  br i1 %1155, label %1156, label %1158

1156:                                             ; preds = %1149
  %1157 = load double, ptr %77, align 8, !tbaa !14
  br label %1160

1158:                                             ; preds = %1149
  %1159 = load double, ptr %97, align 8, !tbaa !14
  br label %1160

1160:                                             ; preds = %1158, %1156
  %1161 = phi double [ %1157, %1156 ], [ %1159, %1158 ]
  %1162 = fmul double %1152, %1161
  store double %1162, ptr %51, align 8, !tbaa !14
  %1163 = load double, ptr %50, align 8, !tbaa !14
  %1164 = load double, ptr %51, align 8, !tbaa !14
  %1165 = fcmp oge double %1163, %1164
  br i1 %1165, label %1166, label %1168

1166:                                             ; preds = %1160
  %1167 = load double, ptr %50, align 8, !tbaa !14
  br label %1170

1168:                                             ; preds = %1160
  %1169 = load double, ptr %51, align 8, !tbaa !14
  br label %1170

1170:                                             ; preds = %1168, %1166
  %1171 = phi double [ %1167, %1166 ], [ %1169, %1168 ]
  store double %1171, ptr %70, align 8, !tbaa !14
  br label %1172

1172:                                             ; preds = %1170, %1122
  %1173 = load i32, ptr %98, align 4, !tbaa !9
  %1174 = icmp ne i32 %1173, 0
  br i1 %1174, label %1178, label %1175

1175:                                             ; preds = %1172
  %1176 = load i32, ptr %99, align 4, !tbaa !9
  %1177 = icmp ne i32 %1176, 0
  br i1 %1177, label %1178, label %1303

1178:                                             ; preds = %1175, %1172
  store double 1.000000e+00, ptr %52, align 8, !tbaa !14
  %1179 = load double, ptr %85, align 8, !tbaa !14
  %1180 = fcmp oge double %1179, 0.000000e+00
  br i1 %1180, label %1181, label %1183

1181:                                             ; preds = %1178
  %1182 = load double, ptr %85, align 8, !tbaa !14
  br label %1186

1183:                                             ; preds = %1178
  %1184 = load double, ptr %85, align 8, !tbaa !14
  %1185 = fneg double %1184
  br label %1186

1186:                                             ; preds = %1183, %1181
  %1187 = phi double [ %1182, %1181 ], [ %1185, %1183 ]
  store double %1187, ptr %53, align 8, !tbaa !14
  %1188 = load double, ptr %52, align 8, !tbaa !14
  %1189 = load double, ptr %53, align 8, !tbaa !14
  %1190 = fcmp oge double %1188, %1189
  br i1 %1190, label %1191, label %1193

1191:                                             ; preds = %1186
  %1192 = load double, ptr %52, align 8, !tbaa !14
  br label %1195

1193:                                             ; preds = %1186
  %1194 = load double, ptr %53, align 8, !tbaa !14
  br label %1195

1195:                                             ; preds = %1193, %1191
  %1196 = phi double [ %1192, %1191 ], [ %1194, %1193 ]
  store double %1196, ptr %52, align 8, !tbaa !14
  %1197 = getelementptr inbounds %struct.doublecomplex, ptr %86, i32 0, i32 0
  %1198 = load double, ptr %1197, align 8, !tbaa !16
  store double %1198, ptr %48, align 8, !tbaa !14
  %1199 = load double, ptr %48, align 8, !tbaa !14
  %1200 = fcmp oge double %1199, 0.000000e+00
  br i1 %1200, label %1201, label %1203

1201:                                             ; preds = %1195
  %1202 = load double, ptr %48, align 8, !tbaa !14
  br label %1206

1203:                                             ; preds = %1195
  %1204 = load double, ptr %48, align 8, !tbaa !14
  %1205 = fneg double %1204
  br label %1206

1206:                                             ; preds = %1203, %1201
  %1207 = phi double [ %1202, %1201 ], [ %1205, %1203 ]
  %1208 = call { double, double } @Cd(ptr noundef %86)
  %1209 = extractvalue { double, double } %1208, 0
  %1210 = extractvalue { double, double } %1208, 1
  store double %1210, ptr %49, align 8, !tbaa !14
  %1211 = load double, ptr %49, align 8, !tbaa !14
  %1212 = fcmp oge double %1211, 0.000000e+00
  br i1 %1212, label %1213, label %1215

1213:                                             ; preds = %1206
  %1214 = load double, ptr %49, align 8, !tbaa !14
  br label %1218

1215:                                             ; preds = %1206
  %1216 = load double, ptr %49, align 8, !tbaa !14
  %1217 = fneg double %1216
  br label %1218

1218:                                             ; preds = %1215, %1213
  %1219 = phi double [ %1214, %1213 ], [ %1217, %1215 ]
  %1220 = fadd double %1207, %1219
  store double %1220, ptr %53, align 8, !tbaa !14
  %1221 = load double, ptr %70, align 8, !tbaa !14
  store double %1221, ptr %50, align 8, !tbaa !14
  %1222 = load double, ptr %93, align 8, !tbaa !14
  %1223 = load double, ptr %52, align 8, !tbaa !14
  %1224 = load double, ptr %53, align 8, !tbaa !14
  %1225 = fcmp oge double %1223, %1224
  br i1 %1225, label %1226, label %1228

1226:                                             ; preds = %1218
  %1227 = load double, ptr %52, align 8, !tbaa !14
  br label %1230

1228:                                             ; preds = %1218
  %1229 = load double, ptr %53, align 8, !tbaa !14
  br label %1230

1230:                                             ; preds = %1228, %1226
  %1231 = phi double [ %1227, %1226 ], [ %1229, %1228 ]
  %1232 = fmul double %1222, %1231
  %1233 = fdiv double 1.000000e+00, %1232
  store double %1233, ptr %51, align 8, !tbaa !14
  %1234 = load double, ptr %50, align 8, !tbaa !14
  %1235 = load double, ptr %51, align 8, !tbaa !14
  %1236 = fcmp ole double %1234, %1235
  br i1 %1236, label %1237, label %1239

1237:                                             ; preds = %1230
  %1238 = load double, ptr %50, align 8, !tbaa !14
  br label %1241

1239:                                             ; preds = %1230
  %1240 = load double, ptr %51, align 8, !tbaa !14
  br label %1241

1241:                                             ; preds = %1239, %1237
  %1242 = phi double [ %1238, %1237 ], [ %1240, %1239 ]
  store double %1242, ptr %70, align 8, !tbaa !14
  %1243 = load i32, ptr %98, align 4, !tbaa !9
  %1244 = icmp ne i32 %1243, 0
  br i1 %1244, label %1245, label %1251

1245:                                             ; preds = %1241
  %1246 = load double, ptr %89, align 8, !tbaa !14
  %1247 = load double, ptr %70, align 8, !tbaa !14
  %1248 = load double, ptr %73, align 8, !tbaa !14
  %1249 = fmul double %1247, %1248
  %1250 = fmul double %1246, %1249
  store double %1250, ptr %85, align 8, !tbaa !14
  br label %1255

1251:                                             ; preds = %1241
  %1252 = load double, ptr %70, align 8, !tbaa !14
  %1253 = load double, ptr %85, align 8, !tbaa !14
  %1254 = fmul double %1252, %1253
  store double %1254, ptr %85, align 8, !tbaa !14
  br label %1255

1255:                                             ; preds = %1251, %1245
  %1256 = load i32, ptr %99, align 4, !tbaa !9
  %1257 = icmp ne i32 %1256, 0
  br i1 %1257, label %1258, label %1285

1258:                                             ; preds = %1255
  %1259 = load double, ptr %70, align 8, !tbaa !14
  %1260 = getelementptr inbounds %struct.doublecomplex, ptr %92, i32 0, i32 0
  %1261 = load double, ptr %1260, align 8, !tbaa !16
  %1262 = fmul double %1259, %1261
  %1263 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %1262, ptr %1263, align 8, !tbaa !16
  %1264 = load double, ptr %70, align 8, !tbaa !14
  %1265 = getelementptr inbounds %struct.doublecomplex, ptr %92, i32 0, i32 1
  %1266 = load double, ptr %1265, align 8, !tbaa !20
  %1267 = fmul double %1264, %1266
  %1268 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double %1267, ptr %1268, align 8, !tbaa !20
  %1269 = load double, ptr %90, align 8, !tbaa !14
  %1270 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %1271 = load double, ptr %1270, align 8, !tbaa !16
  %1272 = fmul double %1269, %1271
  %1273 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  store double %1272, ptr %1273, align 8, !tbaa !16
  %1274 = load double, ptr %90, align 8, !tbaa !14
  %1275 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %1276 = load double, ptr %1275, align 8, !tbaa !20
  %1277 = fmul double %1274, %1276
  %1278 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  store double %1277, ptr %1278, align 8, !tbaa !20
  %1279 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %1280 = load double, ptr %1279, align 8, !tbaa !16
  %1281 = getelementptr inbounds %struct.doublecomplex, ptr %86, i32 0, i32 0
  store double %1280, ptr %1281, align 8, !tbaa !16
  %1282 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %1283 = load double, ptr %1282, align 8, !tbaa !20
  %1284 = getelementptr inbounds %struct.doublecomplex, ptr %86, i32 0, i32 1
  store double %1283, ptr %1284, align 8, !tbaa !20
  br label %1302

1285:                                             ; preds = %1255
  %1286 = load double, ptr %70, align 8, !tbaa !14
  %1287 = getelementptr inbounds %struct.doublecomplex, ptr %86, i32 0, i32 0
  %1288 = load double, ptr %1287, align 8, !tbaa !16
  %1289 = fmul double %1286, %1288
  %1290 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  store double %1289, ptr %1290, align 8, !tbaa !16
  %1291 = load double, ptr %70, align 8, !tbaa !14
  %1292 = getelementptr inbounds %struct.doublecomplex, ptr %86, i32 0, i32 1
  %1293 = load double, ptr %1292, align 8, !tbaa !20
  %1294 = fmul double %1291, %1293
  %1295 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  store double %1294, ptr %1295, align 8, !tbaa !20
  %1296 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %1297 = load double, ptr %1296, align 8, !tbaa !16
  %1298 = getelementptr inbounds %struct.doublecomplex, ptr %86, i32 0, i32 0
  store double %1297, ptr %1298, align 8, !tbaa !16
  %1299 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %1300 = load double, ptr %1299, align 8, !tbaa !20
  %1301 = getelementptr inbounds %struct.doublecomplex, ptr %86, i32 0, i32 1
  store double %1300, ptr %1301, align 8, !tbaa !20
  br label %1302

1302:                                             ; preds = %1285, %1258
  br label %1303

1303:                                             ; preds = %1302, %1175
  %1304 = load double, ptr %85, align 8, !tbaa !14
  %1305 = fcmp oge double %1304, 0.000000e+00
  br i1 %1305, label %1306, label %1308

1306:                                             ; preds = %1303
  %1307 = load double, ptr %85, align 8, !tbaa !14
  br label %1311

1308:                                             ; preds = %1303
  %1309 = load double, ptr %85, align 8, !tbaa !14
  %1310 = fneg double %1309
  br label %1311

1311:                                             ; preds = %1308, %1306
  %1312 = phi double [ %1307, %1306 ], [ %1310, %1308 ]
  store double %1312, ptr %82, align 8, !tbaa !14
  %1313 = getelementptr inbounds %struct.doublecomplex, ptr %86, i32 0, i32 0
  %1314 = load double, ptr %1313, align 8, !tbaa !16
  store double %1314, ptr %48, align 8, !tbaa !14
  %1315 = load double, ptr %48, align 8, !tbaa !14
  %1316 = fcmp oge double %1315, 0.000000e+00
  br i1 %1316, label %1317, label %1319

1317:                                             ; preds = %1311
  %1318 = load double, ptr %48, align 8, !tbaa !14
  br label %1322

1319:                                             ; preds = %1311
  %1320 = load double, ptr %48, align 8, !tbaa !14
  %1321 = fneg double %1320
  br label %1322

1322:                                             ; preds = %1319, %1317
  %1323 = phi double [ %1318, %1317 ], [ %1321, %1319 ]
  %1324 = call { double, double } @Cd(ptr noundef %86)
  %1325 = extractvalue { double, double } %1324, 0
  %1326 = extractvalue { double, double } %1324, 1
  store double %1326, ptr %49, align 8, !tbaa !14
  %1327 = load double, ptr %49, align 8, !tbaa !14
  %1328 = fcmp oge double %1327, 0.000000e+00
  br i1 %1328, label %1329, label %1331

1329:                                             ; preds = %1322
  %1330 = load double, ptr %49, align 8, !tbaa !14
  br label %1334

1331:                                             ; preds = %1322
  %1332 = load double, ptr %49, align 8, !tbaa !14
  %1333 = fneg double %1332
  br label %1334

1334:                                             ; preds = %1331, %1329
  %1335 = phi double [ %1330, %1329 ], [ %1333, %1331 ]
  %1336 = fadd double %1323, %1335
  store double %1336, ptr %84, align 8, !tbaa !14
  store double 1.000000e+00, ptr %66, align 8, !tbaa !14
  %1337 = load ptr, ptr %21, align 8, !tbaa !5
  %1338 = load i32, ptr %1337, align 4, !tbaa !9
  store i32 %1338, ptr %44, align 4, !tbaa !9
  store i32 1, ptr %91, align 4, !tbaa !9
  br label %1339

1339:                                             ; preds = %1355, %1334
  %1340 = load i32, ptr %91, align 4, !tbaa !9
  %1341 = load i32, ptr %44, align 4, !tbaa !9
  %1342 = icmp sle i32 %1340, %1341
  br i1 %1342, label %1343, label %1358

1343:                                             ; preds = %1339
  %1344 = load i32, ptr %91, align 4, !tbaa !9
  store i32 %1344, ptr %45, align 4, !tbaa !9
  %1345 = load ptr, ptr %32, align 8, !tbaa !5
  %1346 = load i32, ptr %45, align 4, !tbaa !9
  %1347 = sext i32 %1346 to i64
  %1348 = getelementptr inbounds %struct.doublecomplex, ptr %1345, i64 %1347
  %1349 = getelementptr inbounds %struct.doublecomplex, ptr %1348, i32 0, i32 0
  store double 0.000000e+00, ptr %1349, align 8, !tbaa !16
  %1350 = load ptr, ptr %32, align 8, !tbaa !5
  %1351 = load i32, ptr %45, align 4, !tbaa !9
  %1352 = sext i32 %1351 to i64
  %1353 = getelementptr inbounds %struct.doublecomplex, ptr %1350, i64 %1352
  %1354 = getelementptr inbounds %struct.doublecomplex, ptr %1353, i32 0, i32 1
  store double 0.000000e+00, ptr %1354, align 8, !tbaa !20
  br label %1355

1355:                                             ; preds = %1343
  %1356 = load i32, ptr %91, align 4, !tbaa !9
  %1357 = add nsw i32 %1356, 1
  store i32 %1357, ptr %91, align 4, !tbaa !9
  br label %1339, !llvm.loop !22

1358:                                             ; preds = %1339
  %1359 = load i32, ptr %83, align 4, !tbaa !9
  store i32 %1359, ptr %44, align 4, !tbaa !9
  %1360 = load ptr, ptr %32, align 8, !tbaa !5
  %1361 = load i32, ptr %44, align 4, !tbaa !9
  %1362 = sext i32 %1361 to i64
  %1363 = getelementptr inbounds %struct.doublecomplex, ptr %1360, i64 %1362
  %1364 = getelementptr inbounds %struct.doublecomplex, ptr %1363, i32 0, i32 0
  store double 1.000000e+00, ptr %1364, align 8, !tbaa !16
  %1365 = load ptr, ptr %32, align 8, !tbaa !5
  %1366 = load i32, ptr %44, align 4, !tbaa !9
  %1367 = sext i32 %1366 to i64
  %1368 = getelementptr inbounds %struct.doublecomplex, ptr %1365, i64 %1367
  %1369 = getelementptr inbounds %struct.doublecomplex, ptr %1368, i32 0, i32 1
  store double 0.000000e+00, ptr %1369, align 8, !tbaa !20
  %1370 = load double, ptr %100, align 8, !tbaa !14
  %1371 = load double, ptr %82, align 8, !tbaa !14
  %1372 = fmul double %1370, %1371
  %1373 = load double, ptr %76, align 8, !tbaa !14
  %1374 = fmul double %1372, %1373
  store double %1374, ptr %48, align 8, !tbaa !14
  %1375 = load double, ptr %100, align 8, !tbaa !14
  %1376 = load double, ptr %84, align 8, !tbaa !14
  %1377 = fmul double %1375, %1376
  %1378 = load double, ptr %77, align 8, !tbaa !14
  %1379 = fmul double %1377, %1378
  store double %1379, ptr %49, align 8, !tbaa !14
  %1380 = load double, ptr %48, align 8, !tbaa !14
  %1381 = load double, ptr %49, align 8, !tbaa !14
  %1382 = fcmp oge double %1380, %1381
  br i1 %1382, label %1383, label %1385

1383:                                             ; preds = %1358
  %1384 = load double, ptr %48, align 8, !tbaa !14
  br label %1387

1385:                                             ; preds = %1358
  %1386 = load double, ptr %49, align 8, !tbaa !14
  br label %1387

1387:                                             ; preds = %1385, %1383
  %1388 = phi double [ %1384, %1383 ], [ %1386, %1385 ]
  store double %1388, ptr %48, align 8, !tbaa !14
  %1389 = load double, ptr %48, align 8, !tbaa !14
  %1390 = load double, ptr %93, align 8, !tbaa !14
  %1391 = fcmp oge double %1389, %1390
  br i1 %1391, label %1392, label %1394

1392:                                             ; preds = %1387
  %1393 = load double, ptr %48, align 8, !tbaa !14
  br label %1396

1394:                                             ; preds = %1387
  %1395 = load double, ptr %93, align 8, !tbaa !14
  br label %1396

1396:                                             ; preds = %1394, %1392
  %1397 = phi double [ %1393, %1392 ], [ %1395, %1394 ]
  store double %1397, ptr %61, align 8, !tbaa !14
  %1398 = load ptr, ptr %21, align 8, !tbaa !5
  %1399 = load i32, ptr %1398, align 4, !tbaa !9
  store i32 %1399, ptr %44, align 4, !tbaa !9
  %1400 = load i32, ptr %83, align 4, !tbaa !9
  %1401 = add nsw i32 %1400, 1
  store i32 %1401, ptr %69, align 4, !tbaa !9
  br label %1402

1402:                                             ; preds = %2063, %1396
  %1403 = load i32, ptr %69, align 4, !tbaa !9
  %1404 = load i32, ptr %44, align 4, !tbaa !9
  %1405 = icmp sle i32 %1403, %1404
  br i1 %1405, label %1406, label %2066

1406:                                             ; preds = %1402
  %1407 = load double, ptr %66, align 8, !tbaa !14
  %1408 = fdiv double 1.000000e+00, %1407
  store double %1408, ptr %63, align 8, !tbaa !14
  %1409 = load double, ptr %82, align 8, !tbaa !14
  %1410 = load ptr, ptr %33, align 8, !tbaa !5
  %1411 = load i32, ptr %69, align 4, !tbaa !9
  %1412 = sext i32 %1411 to i64
  %1413 = getelementptr inbounds double, ptr %1410, i64 %1412
  %1414 = load double, ptr %1413, align 8, !tbaa !14
  %1415 = load double, ptr %84, align 8, !tbaa !14
  %1416 = load ptr, ptr %33, align 8, !tbaa !5
  %1417 = load ptr, ptr %21, align 8, !tbaa !5
  %1418 = load i32, ptr %1417, align 4, !tbaa !9
  %1419 = load i32, ptr %69, align 4, !tbaa !9
  %1420 = add nsw i32 %1418, %1419
  %1421 = sext i32 %1420 to i64
  %1422 = getelementptr inbounds double, ptr %1416, i64 %1421
  %1423 = load double, ptr %1422, align 8, !tbaa !14
  %1424 = fmul double %1415, %1423
  %1425 = call double @llvm.fmuladd.f64(double %1409, double %1414, double %1424)
  %1426 = load double, ptr %94, align 8, !tbaa !14
  %1427 = load double, ptr %63, align 8, !tbaa !14
  %1428 = fmul double %1426, %1427
  %1429 = fcmp ogt double %1425, %1428
  br i1 %1429, label %1430, label %1477

1430:                                             ; preds = %1406
  %1431 = load i32, ptr %69, align 4, !tbaa !9
  %1432 = sub nsw i32 %1431, 1
  store i32 %1432, ptr %45, align 4, !tbaa !9
  %1433 = load i32, ptr %83, align 4, !tbaa !9
  store i32 %1433, ptr %91, align 4, !tbaa !9
  br label %1434

1434:                                             ; preds = %1473, %1430
  %1435 = load i32, ptr %91, align 4, !tbaa !9
  %1436 = load i32, ptr %45, align 4, !tbaa !9
  %1437 = icmp sle i32 %1435, %1436
  br i1 %1437, label %1438, label %1476

1438:                                             ; preds = %1434
  %1439 = load i32, ptr %91, align 4, !tbaa !9
  store i32 %1439, ptr %46, align 4, !tbaa !9
  %1440 = load i32, ptr %91, align 4, !tbaa !9
  store i32 %1440, ptr %47, align 4, !tbaa !9
  %1441 = load double, ptr %63, align 8, !tbaa !14
  %1442 = load ptr, ptr %32, align 8, !tbaa !5
  %1443 = load i32, ptr %47, align 4, !tbaa !9
  %1444 = sext i32 %1443 to i64
  %1445 = getelementptr inbounds %struct.doublecomplex, ptr %1442, i64 %1444
  %1446 = getelementptr inbounds %struct.doublecomplex, ptr %1445, i32 0, i32 0
  %1447 = load double, ptr %1446, align 8, !tbaa !16
  %1448 = fmul double %1441, %1447
  %1449 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  store double %1448, ptr %1449, align 8, !tbaa !16
  %1450 = load double, ptr %63, align 8, !tbaa !14
  %1451 = load ptr, ptr %32, align 8, !tbaa !5
  %1452 = load i32, ptr %47, align 4, !tbaa !9
  %1453 = sext i32 %1452 to i64
  %1454 = getelementptr inbounds %struct.doublecomplex, ptr %1451, i64 %1453
  %1455 = getelementptr inbounds %struct.doublecomplex, ptr %1454, i32 0, i32 1
  %1456 = load double, ptr %1455, align 8, !tbaa !20
  %1457 = fmul double %1450, %1456
  %1458 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  store double %1457, ptr %1458, align 8, !tbaa !20
  %1459 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %1460 = load double, ptr %1459, align 8, !tbaa !16
  %1461 = load ptr, ptr %32, align 8, !tbaa !5
  %1462 = load i32, ptr %46, align 4, !tbaa !9
  %1463 = sext i32 %1462 to i64
  %1464 = getelementptr inbounds %struct.doublecomplex, ptr %1461, i64 %1463
  %1465 = getelementptr inbounds %struct.doublecomplex, ptr %1464, i32 0, i32 0
  store double %1460, ptr %1465, align 8, !tbaa !16
  %1466 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %1467 = load double, ptr %1466, align 8, !tbaa !20
  %1468 = load ptr, ptr %32, align 8, !tbaa !5
  %1469 = load i32, ptr %46, align 4, !tbaa !9
  %1470 = sext i32 %1469 to i64
  %1471 = getelementptr inbounds %struct.doublecomplex, ptr %1468, i64 %1470
  %1472 = getelementptr inbounds %struct.doublecomplex, ptr %1471, i32 0, i32 1
  store double %1467, ptr %1472, align 8, !tbaa !20
  br label %1473

1473:                                             ; preds = %1438
  %1474 = load i32, ptr %91, align 4, !tbaa !9
  %1475 = add nsw i32 %1474, 1
  store i32 %1475, ptr %91, align 4, !tbaa !9
  br label %1434, !llvm.loop !23

1476:                                             ; preds = %1434
  store double 1.000000e+00, ptr %66, align 8, !tbaa !14
  br label %1477

1477:                                             ; preds = %1476, %1406
  %1478 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 0
  store double 0.000000e+00, ptr %1478, align 8, !tbaa !16
  %1479 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 1
  store double 0.000000e+00, ptr %1479, align 8, !tbaa !20
  %1480 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 0
  store double 0.000000e+00, ptr %1480, align 8, !tbaa !16
  %1481 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 1
  store double 0.000000e+00, ptr %1481, align 8, !tbaa !20
  %1482 = load i32, ptr %69, align 4, !tbaa !9
  %1483 = sub nsw i32 %1482, 1
  store i32 %1483, ptr %45, align 4, !tbaa !9
  %1484 = load i32, ptr %83, align 4, !tbaa !9
  store i32 %1484, ptr %91, align 4, !tbaa !9
  br label %1485

1485:                                             ; preds = %1636, %1477
  %1486 = load i32, ptr %91, align 4, !tbaa !9
  %1487 = load i32, ptr %45, align 4, !tbaa !9
  %1488 = icmp sle i32 %1486, %1487
  br i1 %1488, label %1489, label %1639

1489:                                             ; preds = %1485
  %1490 = load ptr, ptr %22, align 8, !tbaa !5
  %1491 = load i32, ptr %91, align 4, !tbaa !9
  %1492 = load i32, ptr %69, align 4, !tbaa !9
  %1493 = load i32, ptr %37, align 4, !tbaa !9
  %1494 = mul nsw i32 %1492, %1493
  %1495 = add nsw i32 %1491, %1494
  %1496 = sext i32 %1495 to i64
  %1497 = getelementptr inbounds %struct.doublecomplex, ptr %1490, i64 %1496
  %1498 = call { double, double } @Cd(ptr noundef %1497)
  %1499 = extractvalue { double, double } %1498, 0
  %1500 = extractvalue { double, double } %1498, 1
  %1501 = fneg double %1500
  %1502 = call ptr @_pCd(ptr noundef %56)
  %1503 = getelementptr inbounds { double, double }, ptr %1502, i32 0, i32 0
  %1504 = getelementptr inbounds { double, double }, ptr %1502, i32 0, i32 1
  store double %1499, ptr %1503, align 8
  store double %1501, ptr %1504, align 8
  %1505 = load i32, ptr %91, align 4, !tbaa !9
  store i32 %1505, ptr %46, align 4, !tbaa !9
  %1506 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %1507 = load double, ptr %1506, align 8, !tbaa !16
  %1508 = load ptr, ptr %32, align 8, !tbaa !5
  %1509 = load i32, ptr %46, align 4, !tbaa !9
  %1510 = sext i32 %1509 to i64
  %1511 = getelementptr inbounds %struct.doublecomplex, ptr %1508, i64 %1510
  %1512 = getelementptr inbounds %struct.doublecomplex, ptr %1511, i32 0, i32 0
  %1513 = load double, ptr %1512, align 8, !tbaa !16
  %1514 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %1515 = load double, ptr %1514, align 8, !tbaa !20
  %1516 = load ptr, ptr %32, align 8, !tbaa !5
  %1517 = load i32, ptr %46, align 4, !tbaa !9
  %1518 = sext i32 %1517 to i64
  %1519 = getelementptr inbounds %struct.doublecomplex, ptr %1516, i64 %1518
  %1520 = getelementptr inbounds %struct.doublecomplex, ptr %1519, i32 0, i32 1
  %1521 = load double, ptr %1520, align 8, !tbaa !20
  %1522 = fmul double %1515, %1521
  %1523 = fneg double %1522
  %1524 = call double @llvm.fmuladd.f64(double %1507, double %1513, double %1523)
  %1525 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %1524, ptr %1525, align 8, !tbaa !16
  %1526 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %1527 = load double, ptr %1526, align 8, !tbaa !16
  %1528 = load ptr, ptr %32, align 8, !tbaa !5
  %1529 = load i32, ptr %46, align 4, !tbaa !9
  %1530 = sext i32 %1529 to i64
  %1531 = getelementptr inbounds %struct.doublecomplex, ptr %1528, i64 %1530
  %1532 = getelementptr inbounds %struct.doublecomplex, ptr %1531, i32 0, i32 1
  %1533 = load double, ptr %1532, align 8, !tbaa !20
  %1534 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %1535 = load double, ptr %1534, align 8, !tbaa !20
  %1536 = load ptr, ptr %32, align 8, !tbaa !5
  %1537 = load i32, ptr %46, align 4, !tbaa !9
  %1538 = sext i32 %1537 to i64
  %1539 = getelementptr inbounds %struct.doublecomplex, ptr %1536, i64 %1538
  %1540 = getelementptr inbounds %struct.doublecomplex, ptr %1539, i32 0, i32 0
  %1541 = load double, ptr %1540, align 8, !tbaa !16
  %1542 = fmul double %1535, %1541
  %1543 = call double @llvm.fmuladd.f64(double %1527, double %1533, double %1542)
  %1544 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double %1543, ptr %1544, align 8, !tbaa !20
  %1545 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 0
  %1546 = load double, ptr %1545, align 8, !tbaa !16
  %1547 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %1548 = load double, ptr %1547, align 8, !tbaa !16
  %1549 = fadd double %1546, %1548
  %1550 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  store double %1549, ptr %1550, align 8, !tbaa !16
  %1551 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 1
  %1552 = load double, ptr %1551, align 8, !tbaa !20
  %1553 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %1554 = load double, ptr %1553, align 8, !tbaa !20
  %1555 = fadd double %1552, %1554
  %1556 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  store double %1555, ptr %1556, align 8, !tbaa !20
  %1557 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %1558 = load double, ptr %1557, align 8, !tbaa !16
  %1559 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 0
  store double %1558, ptr %1559, align 8, !tbaa !16
  %1560 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %1561 = load double, ptr %1560, align 8, !tbaa !20
  %1562 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 1
  store double %1561, ptr %1562, align 8, !tbaa !20
  %1563 = load ptr, ptr %24, align 8, !tbaa !5
  %1564 = load i32, ptr %91, align 4, !tbaa !9
  %1565 = load i32, ptr %69, align 4, !tbaa !9
  %1566 = load i32, ptr %35, align 4, !tbaa !9
  %1567 = mul nsw i32 %1565, %1566
  %1568 = add nsw i32 %1564, %1567
  %1569 = sext i32 %1568 to i64
  %1570 = getelementptr inbounds %struct.doublecomplex, ptr %1563, i64 %1569
  %1571 = call { double, double } @Cd(ptr noundef %1570)
  %1572 = extractvalue { double, double } %1571, 0
  %1573 = extractvalue { double, double } %1571, 1
  %1574 = fneg double %1573
  %1575 = call ptr @_pCd(ptr noundef %56)
  %1576 = getelementptr inbounds { double, double }, ptr %1575, i32 0, i32 0
  %1577 = getelementptr inbounds { double, double }, ptr %1575, i32 0, i32 1
  store double %1572, ptr %1576, align 8
  store double %1574, ptr %1577, align 8
  %1578 = load i32, ptr %91, align 4, !tbaa !9
  store i32 %1578, ptr %46, align 4, !tbaa !9
  %1579 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %1580 = load double, ptr %1579, align 8, !tbaa !16
  %1581 = load ptr, ptr %32, align 8, !tbaa !5
  %1582 = load i32, ptr %46, align 4, !tbaa !9
  %1583 = sext i32 %1582 to i64
  %1584 = getelementptr inbounds %struct.doublecomplex, ptr %1581, i64 %1583
  %1585 = getelementptr inbounds %struct.doublecomplex, ptr %1584, i32 0, i32 0
  %1586 = load double, ptr %1585, align 8, !tbaa !16
  %1587 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %1588 = load double, ptr %1587, align 8, !tbaa !20
  %1589 = load ptr, ptr %32, align 8, !tbaa !5
  %1590 = load i32, ptr %46, align 4, !tbaa !9
  %1591 = sext i32 %1590 to i64
  %1592 = getelementptr inbounds %struct.doublecomplex, ptr %1589, i64 %1591
  %1593 = getelementptr inbounds %struct.doublecomplex, ptr %1592, i32 0, i32 1
  %1594 = load double, ptr %1593, align 8, !tbaa !20
  %1595 = fmul double %1588, %1594
  %1596 = fneg double %1595
  %1597 = call double @llvm.fmuladd.f64(double %1580, double %1586, double %1596)
  %1598 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %1597, ptr %1598, align 8, !tbaa !16
  %1599 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %1600 = load double, ptr %1599, align 8, !tbaa !16
  %1601 = load ptr, ptr %32, align 8, !tbaa !5
  %1602 = load i32, ptr %46, align 4, !tbaa !9
  %1603 = sext i32 %1602 to i64
  %1604 = getelementptr inbounds %struct.doublecomplex, ptr %1601, i64 %1603
  %1605 = getelementptr inbounds %struct.doublecomplex, ptr %1604, i32 0, i32 1
  %1606 = load double, ptr %1605, align 8, !tbaa !20
  %1607 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %1608 = load double, ptr %1607, align 8, !tbaa !20
  %1609 = load ptr, ptr %32, align 8, !tbaa !5
  %1610 = load i32, ptr %46, align 4, !tbaa !9
  %1611 = sext i32 %1610 to i64
  %1612 = getelementptr inbounds %struct.doublecomplex, ptr %1609, i64 %1611
  %1613 = getelementptr inbounds %struct.doublecomplex, ptr %1612, i32 0, i32 0
  %1614 = load double, ptr %1613, align 8, !tbaa !16
  %1615 = fmul double %1608, %1614
  %1616 = call double @llvm.fmuladd.f64(double %1600, double %1606, double %1615)
  %1617 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double %1616, ptr %1617, align 8, !tbaa !20
  %1618 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 0
  %1619 = load double, ptr %1618, align 8, !tbaa !16
  %1620 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %1621 = load double, ptr %1620, align 8, !tbaa !16
  %1622 = fadd double %1619, %1621
  %1623 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  store double %1622, ptr %1623, align 8, !tbaa !16
  %1624 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 1
  %1625 = load double, ptr %1624, align 8, !tbaa !20
  %1626 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %1627 = load double, ptr %1626, align 8, !tbaa !20
  %1628 = fadd double %1625, %1627
  %1629 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  store double %1628, ptr %1629, align 8, !tbaa !20
  %1630 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %1631 = load double, ptr %1630, align 8, !tbaa !16
  %1632 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 0
  store double %1631, ptr %1632, align 8, !tbaa !16
  %1633 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %1634 = load double, ptr %1633, align 8, !tbaa !20
  %1635 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 1
  store double %1634, ptr %1635, align 8, !tbaa !20
  br label %1636

1636:                                             ; preds = %1489
  %1637 = load i32, ptr %91, align 4, !tbaa !9
  %1638 = add nsw i32 %1637, 1
  store i32 %1638, ptr %91, align 4, !tbaa !9
  br label %1485, !llvm.loop !24

1639:                                             ; preds = %1485
  %1640 = load double, ptr %85, align 8, !tbaa !14
  %1641 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 0
  %1642 = load double, ptr %1641, align 8, !tbaa !16
  %1643 = fmul double %1640, %1642
  %1644 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %1643, ptr %1644, align 8, !tbaa !16
  %1645 = load double, ptr %85, align 8, !tbaa !14
  %1646 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 1
  %1647 = load double, ptr %1646, align 8, !tbaa !20
  %1648 = fmul double %1645, %1647
  %1649 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double %1648, ptr %1649, align 8, !tbaa !20
  %1650 = call { double, double } @Cd(ptr noundef %86)
  %1651 = extractvalue { double, double } %1650, 0
  %1652 = extractvalue { double, double } %1650, 1
  %1653 = fneg double %1652
  %1654 = call ptr @_pCd(ptr noundef %57)
  %1655 = getelementptr inbounds { double, double }, ptr %1654, i32 0, i32 0
  %1656 = getelementptr inbounds { double, double }, ptr %1654, i32 0, i32 1
  store double %1651, ptr %1655, align 8
  store double %1653, ptr %1656, align 8
  %1657 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  %1658 = load double, ptr %1657, align 8, !tbaa !16
  %1659 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 0
  %1660 = load double, ptr %1659, align 8, !tbaa !16
  %1661 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  %1662 = load double, ptr %1661, align 8, !tbaa !20
  %1663 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 1
  %1664 = load double, ptr %1663, align 8, !tbaa !20
  %1665 = fmul double %1662, %1664
  %1666 = fneg double %1665
  %1667 = call double @llvm.fmuladd.f64(double %1658, double %1660, double %1666)
  %1668 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  store double %1667, ptr %1668, align 8, !tbaa !16
  %1669 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  %1670 = load double, ptr %1669, align 8, !tbaa !16
  %1671 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 1
  %1672 = load double, ptr %1671, align 8, !tbaa !20
  %1673 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  %1674 = load double, ptr %1673, align 8, !tbaa !20
  %1675 = getelementptr inbounds %struct.doublecomplex, ptr %65, i32 0, i32 0
  %1676 = load double, ptr %1675, align 8, !tbaa !16
  %1677 = fmul double %1674, %1676
  %1678 = call double @llvm.fmuladd.f64(double %1670, double %1672, double %1677)
  %1679 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  store double %1678, ptr %1679, align 8, !tbaa !20
  %1680 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %1681 = load double, ptr %1680, align 8, !tbaa !16
  %1682 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %1683 = load double, ptr %1682, align 8, !tbaa !16
  %1684 = fsub double %1681, %1683
  %1685 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  store double %1684, ptr %1685, align 8, !tbaa !16
  %1686 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %1687 = load double, ptr %1686, align 8, !tbaa !20
  %1688 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %1689 = load double, ptr %1688, align 8, !tbaa !20
  %1690 = fsub double %1687, %1689
  %1691 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  store double %1690, ptr %1691, align 8, !tbaa !20
  %1692 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %1693 = load double, ptr %1692, align 8, !tbaa !16
  %1694 = getelementptr inbounds %struct.doublecomplex, ptr %101, i32 0, i32 0
  store double %1693, ptr %1694, align 8, !tbaa !16
  %1695 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %1696 = load double, ptr %1695, align 8, !tbaa !20
  %1697 = getelementptr inbounds %struct.doublecomplex, ptr %101, i32 0, i32 1
  store double %1696, ptr %1697, align 8, !tbaa !20
  %1698 = load i32, ptr %69, align 4, !tbaa !9
  %1699 = load i32, ptr %69, align 4, !tbaa !9
  %1700 = load i32, ptr %37, align 4, !tbaa !9
  %1701 = mul nsw i32 %1699, %1700
  %1702 = add nsw i32 %1698, %1701
  store i32 %1702, ptr %45, align 4, !tbaa !9
  %1703 = load double, ptr %85, align 8, !tbaa !14
  %1704 = load ptr, ptr %22, align 8, !tbaa !5
  %1705 = load i32, ptr %45, align 4, !tbaa !9
  %1706 = sext i32 %1705 to i64
  %1707 = getelementptr inbounds %struct.doublecomplex, ptr %1704, i64 %1706
  %1708 = getelementptr inbounds %struct.doublecomplex, ptr %1707, i32 0, i32 0
  %1709 = load double, ptr %1708, align 8, !tbaa !16
  %1710 = fmul double %1703, %1709
  %1711 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  store double %1710, ptr %1711, align 8, !tbaa !16
  %1712 = load double, ptr %85, align 8, !tbaa !14
  %1713 = load ptr, ptr %22, align 8, !tbaa !5
  %1714 = load i32, ptr %45, align 4, !tbaa !9
  %1715 = sext i32 %1714 to i64
  %1716 = getelementptr inbounds %struct.doublecomplex, ptr %1713, i64 %1715
  %1717 = getelementptr inbounds %struct.doublecomplex, ptr %1716, i32 0, i32 1
  %1718 = load double, ptr %1717, align 8, !tbaa !20
  %1719 = fmul double %1712, %1718
  %1720 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  store double %1719, ptr %1720, align 8, !tbaa !20
  %1721 = load i32, ptr %69, align 4, !tbaa !9
  %1722 = load i32, ptr %69, align 4, !tbaa !9
  %1723 = load i32, ptr %35, align 4, !tbaa !9
  %1724 = mul nsw i32 %1722, %1723
  %1725 = add nsw i32 %1721, %1724
  store i32 %1725, ptr %46, align 4, !tbaa !9
  %1726 = getelementptr inbounds %struct.doublecomplex, ptr %86, i32 0, i32 0
  %1727 = load double, ptr %1726, align 8, !tbaa !16
  %1728 = load ptr, ptr %24, align 8, !tbaa !5
  %1729 = load i32, ptr %46, align 4, !tbaa !9
  %1730 = sext i32 %1729 to i64
  %1731 = getelementptr inbounds %struct.doublecomplex, ptr %1728, i64 %1730
  %1732 = getelementptr inbounds %struct.doublecomplex, ptr %1731, i32 0, i32 0
  %1733 = load double, ptr %1732, align 8, !tbaa !16
  %1734 = getelementptr inbounds %struct.doublecomplex, ptr %86, i32 0, i32 1
  %1735 = load double, ptr %1734, align 8, !tbaa !20
  %1736 = load ptr, ptr %24, align 8, !tbaa !5
  %1737 = load i32, ptr %46, align 4, !tbaa !9
  %1738 = sext i32 %1737 to i64
  %1739 = getelementptr inbounds %struct.doublecomplex, ptr %1736, i64 %1738
  %1740 = getelementptr inbounds %struct.doublecomplex, ptr %1739, i32 0, i32 1
  %1741 = load double, ptr %1740, align 8, !tbaa !20
  %1742 = fmul double %1735, %1741
  %1743 = fneg double %1742
  %1744 = call double @llvm.fmuladd.f64(double %1727, double %1733, double %1743)
  %1745 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  store double %1744, ptr %1745, align 8, !tbaa !16
  %1746 = getelementptr inbounds %struct.doublecomplex, ptr %86, i32 0, i32 0
  %1747 = load double, ptr %1746, align 8, !tbaa !16
  %1748 = load ptr, ptr %24, align 8, !tbaa !5
  %1749 = load i32, ptr %46, align 4, !tbaa !9
  %1750 = sext i32 %1749 to i64
  %1751 = getelementptr inbounds %struct.doublecomplex, ptr %1748, i64 %1750
  %1752 = getelementptr inbounds %struct.doublecomplex, ptr %1751, i32 0, i32 1
  %1753 = load double, ptr %1752, align 8, !tbaa !20
  %1754 = getelementptr inbounds %struct.doublecomplex, ptr %86, i32 0, i32 1
  %1755 = load double, ptr %1754, align 8, !tbaa !20
  %1756 = load ptr, ptr %24, align 8, !tbaa !5
  %1757 = load i32, ptr %46, align 4, !tbaa !9
  %1758 = sext i32 %1757 to i64
  %1759 = getelementptr inbounds %struct.doublecomplex, ptr %1756, i64 %1758
  %1760 = getelementptr inbounds %struct.doublecomplex, ptr %1759, i32 0, i32 0
  %1761 = load double, ptr %1760, align 8, !tbaa !16
  %1762 = fmul double %1755, %1761
  %1763 = call double @llvm.fmuladd.f64(double %1747, double %1753, double %1762)
  %1764 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  store double %1763, ptr %1764, align 8, !tbaa !20
  %1765 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %1766 = load double, ptr %1765, align 8, !tbaa !16
  %1767 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  %1768 = load double, ptr %1767, align 8, !tbaa !16
  %1769 = fsub double %1766, %1768
  %1770 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %1769, ptr %1770, align 8, !tbaa !16
  %1771 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %1772 = load double, ptr %1771, align 8, !tbaa !20
  %1773 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  %1774 = load double, ptr %1773, align 8, !tbaa !20
  %1775 = fsub double %1772, %1774
  %1776 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double %1775, ptr %1776, align 8, !tbaa !20
  %1777 = call { double, double } @Cd(ptr noundef %55)
  %1778 = extractvalue { double, double } %1777, 0
  %1779 = extractvalue { double, double } %1777, 1
  %1780 = fneg double %1779
  %1781 = call ptr @_pCd(ptr noundef %54)
  %1782 = getelementptr inbounds { double, double }, ptr %1781, i32 0, i32 0
  %1783 = getelementptr inbounds { double, double }, ptr %1781, i32 0, i32 1
  store double %1778, ptr %1782, align 8
  store double %1780, ptr %1783, align 8
  %1784 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %1785 = load double, ptr %1784, align 8, !tbaa !16
  %1786 = getelementptr inbounds %struct.doublecomplex, ptr %67, i32 0, i32 0
  store double %1785, ptr %1786, align 8, !tbaa !16
  %1787 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %1788 = load double, ptr %1787, align 8, !tbaa !20
  %1789 = getelementptr inbounds %struct.doublecomplex, ptr %67, i32 0, i32 1
  store double %1788, ptr %1789, align 8, !tbaa !20
  %1790 = getelementptr inbounds %struct.doublecomplex, ptr %67, i32 0, i32 0
  %1791 = load double, ptr %1790, align 8, !tbaa !16
  store double %1791, ptr %48, align 8, !tbaa !14
  %1792 = load double, ptr %48, align 8, !tbaa !14
  %1793 = fcmp oge double %1792, 0.000000e+00
  br i1 %1793, label %1794, label %1796

1794:                                             ; preds = %1639
  %1795 = load double, ptr %48, align 8, !tbaa !14
  br label %1799

1796:                                             ; preds = %1639
  %1797 = load double, ptr %48, align 8, !tbaa !14
  %1798 = fneg double %1797
  br label %1799

1799:                                             ; preds = %1796, %1794
  %1800 = phi double [ %1795, %1794 ], [ %1798, %1796 ]
  %1801 = call { double, double } @Cd(ptr noundef %67)
  %1802 = extractvalue { double, double } %1801, 0
  %1803 = extractvalue { double, double } %1801, 1
  store double %1803, ptr %49, align 8, !tbaa !14
  %1804 = load double, ptr %49, align 8, !tbaa !14
  %1805 = fcmp oge double %1804, 0.000000e+00
  br i1 %1805, label %1806, label %1808

1806:                                             ; preds = %1799
  %1807 = load double, ptr %49, align 8, !tbaa !14
  br label %1811

1808:                                             ; preds = %1799
  %1809 = load double, ptr %49, align 8, !tbaa !14
  %1810 = fneg double %1809
  br label %1811

1811:                                             ; preds = %1808, %1806
  %1812 = phi double [ %1807, %1806 ], [ %1810, %1808 ]
  %1813 = fadd double %1800, %1812
  %1814 = load double, ptr %61, align 8, !tbaa !14
  %1815 = fcmp ole double %1813, %1814
  br i1 %1815, label %1816, label %1826

1816:                                             ; preds = %1811
  %1817 = load double, ptr %61, align 8, !tbaa !14
  %1818 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  store double %1817, ptr %1818, align 8, !tbaa !16
  %1819 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  store double 0.000000e+00, ptr %1819, align 8, !tbaa !20
  %1820 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %1821 = load double, ptr %1820, align 8, !tbaa !16
  %1822 = getelementptr inbounds %struct.doublecomplex, ptr %67, i32 0, i32 0
  store double %1821, ptr %1822, align 8, !tbaa !16
  %1823 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %1824 = load double, ptr %1823, align 8, !tbaa !20
  %1825 = getelementptr inbounds %struct.doublecomplex, ptr %67, i32 0, i32 1
  store double %1824, ptr %1825, align 8, !tbaa !20
  br label %1826

1826:                                             ; preds = %1816, %1811
  %1827 = getelementptr inbounds %struct.doublecomplex, ptr %67, i32 0, i32 0
  %1828 = load double, ptr %1827, align 8, !tbaa !16
  store double %1828, ptr %48, align 8, !tbaa !14
  %1829 = load double, ptr %48, align 8, !tbaa !14
  %1830 = fcmp oge double %1829, 0.000000e+00
  br i1 %1830, label %1831, label %1833

1831:                                             ; preds = %1826
  %1832 = load double, ptr %48, align 8, !tbaa !14
  br label %1836

1833:                                             ; preds = %1826
  %1834 = load double, ptr %48, align 8, !tbaa !14
  %1835 = fneg double %1834
  br label %1836

1836:                                             ; preds = %1833, %1831
  %1837 = phi double [ %1832, %1831 ], [ %1835, %1833 ]
  %1838 = call { double, double } @Cd(ptr noundef %67)
  %1839 = extractvalue { double, double } %1838, 0
  %1840 = extractvalue { double, double } %1838, 1
  store double %1840, ptr %49, align 8, !tbaa !14
  %1841 = load double, ptr %49, align 8, !tbaa !14
  %1842 = fcmp oge double %1841, 0.000000e+00
  br i1 %1842, label %1843, label %1845

1843:                                             ; preds = %1836
  %1844 = load double, ptr %49, align 8, !tbaa !14
  br label %1848

1845:                                             ; preds = %1836
  %1846 = load double, ptr %49, align 8, !tbaa !14
  %1847 = fneg double %1846
  br label %1848

1848:                                             ; preds = %1845, %1843
  %1849 = phi double [ %1844, %1843 ], [ %1847, %1845 ]
  %1850 = fadd double %1837, %1849
  %1851 = fcmp olt double %1850, 1.000000e+00
  br i1 %1851, label %1852, label %1996

1852:                                             ; preds = %1848
  %1853 = getelementptr inbounds %struct.doublecomplex, ptr %101, i32 0, i32 0
  %1854 = load double, ptr %1853, align 8, !tbaa !16
  store double %1854, ptr %48, align 8, !tbaa !14
  %1855 = load double, ptr %48, align 8, !tbaa !14
  %1856 = fcmp oge double %1855, 0.000000e+00
  br i1 %1856, label %1857, label %1859

1857:                                             ; preds = %1852
  %1858 = load double, ptr %48, align 8, !tbaa !14
  br label %1862

1859:                                             ; preds = %1852
  %1860 = load double, ptr %48, align 8, !tbaa !14
  %1861 = fneg double %1860
  br label %1862

1862:                                             ; preds = %1859, %1857
  %1863 = phi double [ %1858, %1857 ], [ %1861, %1859 ]
  %1864 = call { double, double } @Cd(ptr noundef %101)
  %1865 = extractvalue { double, double } %1864, 0
  %1866 = extractvalue { double, double } %1864, 1
  store double %1866, ptr %49, align 8, !tbaa !14
  %1867 = load double, ptr %49, align 8, !tbaa !14
  %1868 = fcmp oge double %1867, 0.000000e+00
  br i1 %1868, label %1869, label %1871

1869:                                             ; preds = %1862
  %1870 = load double, ptr %49, align 8, !tbaa !14
  br label %1874

1871:                                             ; preds = %1862
  %1872 = load double, ptr %49, align 8, !tbaa !14
  %1873 = fneg double %1872
  br label %1874

1874:                                             ; preds = %1871, %1869
  %1875 = phi double [ %1870, %1869 ], [ %1873, %1871 ]
  %1876 = fadd double %1863, %1875
  %1877 = load double, ptr %94, align 8, !tbaa !14
  %1878 = getelementptr inbounds %struct.doublecomplex, ptr %67, i32 0, i32 0
  %1879 = load double, ptr %1878, align 8, !tbaa !16
  store double %1879, ptr %50, align 8, !tbaa !14
  %1880 = load double, ptr %50, align 8, !tbaa !14
  %1881 = fcmp oge double %1880, 0.000000e+00
  br i1 %1881, label %1882, label %1884

1882:                                             ; preds = %1874
  %1883 = load double, ptr %50, align 8, !tbaa !14
  br label %1887

1884:                                             ; preds = %1874
  %1885 = load double, ptr %50, align 8, !tbaa !14
  %1886 = fneg double %1885
  br label %1887

1887:                                             ; preds = %1884, %1882
  %1888 = phi double [ %1883, %1882 ], [ %1886, %1884 ]
  %1889 = call { double, double } @Cd(ptr noundef %67)
  %1890 = extractvalue { double, double } %1889, 0
  %1891 = extractvalue { double, double } %1889, 1
  store double %1891, ptr %51, align 8, !tbaa !14
  %1892 = load double, ptr %51, align 8, !tbaa !14
  %1893 = fcmp oge double %1892, 0.000000e+00
  br i1 %1893, label %1894, label %1896

1894:                                             ; preds = %1887
  %1895 = load double, ptr %51, align 8, !tbaa !14
  br label %1899

1896:                                             ; preds = %1887
  %1897 = load double, ptr %51, align 8, !tbaa !14
  %1898 = fneg double %1897
  br label %1899

1899:                                             ; preds = %1896, %1894
  %1900 = phi double [ %1895, %1894 ], [ %1898, %1896 ]
  %1901 = fadd double %1888, %1900
  %1902 = fmul double %1877, %1901
  %1903 = fcmp oge double %1876, %1902
  br i1 %1903, label %1904, label %1995

1904:                                             ; preds = %1899
  %1905 = getelementptr inbounds %struct.doublecomplex, ptr %101, i32 0, i32 0
  %1906 = load double, ptr %1905, align 8, !tbaa !16
  store double %1906, ptr %48, align 8, !tbaa !14
  %1907 = load double, ptr %48, align 8, !tbaa !14
  %1908 = fcmp oge double %1907, 0.000000e+00
  br i1 %1908, label %1909, label %1911

1909:                                             ; preds = %1904
  %1910 = load double, ptr %48, align 8, !tbaa !14
  br label %1914

1911:                                             ; preds = %1904
  %1912 = load double, ptr %48, align 8, !tbaa !14
  %1913 = fneg double %1912
  br label %1914

1914:                                             ; preds = %1911, %1909
  %1915 = phi double [ %1910, %1909 ], [ %1913, %1911 ]
  %1916 = call { double, double } @Cd(ptr noundef %101)
  %1917 = extractvalue { double, double } %1916, 0
  %1918 = extractvalue { double, double } %1916, 1
  store double %1918, ptr %49, align 8, !tbaa !14
  %1919 = load double, ptr %49, align 8, !tbaa !14
  %1920 = fcmp oge double %1919, 0.000000e+00
  br i1 %1920, label %1921, label %1923

1921:                                             ; preds = %1914
  %1922 = load double, ptr %49, align 8, !tbaa !14
  br label %1926

1923:                                             ; preds = %1914
  %1924 = load double, ptr %49, align 8, !tbaa !14
  %1925 = fneg double %1924
  br label %1926

1926:                                             ; preds = %1923, %1921
  %1927 = phi double [ %1922, %1921 ], [ %1925, %1923 ]
  %1928 = fadd double %1915, %1927
  %1929 = fdiv double 1.000000e+00, %1928
  store double %1929, ptr %63, align 8, !tbaa !14
  %1930 = load i32, ptr %69, align 4, !tbaa !9
  %1931 = sub nsw i32 %1930, 1
  store i32 %1931, ptr %45, align 4, !tbaa !9
  %1932 = load i32, ptr %83, align 4, !tbaa !9
  store i32 %1932, ptr %91, align 4, !tbaa !9
  br label %1933

1933:                                             ; preds = %1972, %1926
  %1934 = load i32, ptr %91, align 4, !tbaa !9
  %1935 = load i32, ptr %45, align 4, !tbaa !9
  %1936 = icmp sle i32 %1934, %1935
  br i1 %1936, label %1937, label %1975

1937:                                             ; preds = %1933
  %1938 = load i32, ptr %91, align 4, !tbaa !9
  store i32 %1938, ptr %46, align 4, !tbaa !9
  %1939 = load i32, ptr %91, align 4, !tbaa !9
  store i32 %1939, ptr %47, align 4, !tbaa !9
  %1940 = load double, ptr %63, align 8, !tbaa !14
  %1941 = load ptr, ptr %32, align 8, !tbaa !5
  %1942 = load i32, ptr %47, align 4, !tbaa !9
  %1943 = sext i32 %1942 to i64
  %1944 = getelementptr inbounds %struct.doublecomplex, ptr %1941, i64 %1943
  %1945 = getelementptr inbounds %struct.doublecomplex, ptr %1944, i32 0, i32 0
  %1946 = load double, ptr %1945, align 8, !tbaa !16
  %1947 = fmul double %1940, %1946
  %1948 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  store double %1947, ptr %1948, align 8, !tbaa !16
  %1949 = load double, ptr %63, align 8, !tbaa !14
  %1950 = load ptr, ptr %32, align 8, !tbaa !5
  %1951 = load i32, ptr %47, align 4, !tbaa !9
  %1952 = sext i32 %1951 to i64
  %1953 = getelementptr inbounds %struct.doublecomplex, ptr %1950, i64 %1952
  %1954 = getelementptr inbounds %struct.doublecomplex, ptr %1953, i32 0, i32 1
  %1955 = load double, ptr %1954, align 8, !tbaa !20
  %1956 = fmul double %1949, %1955
  %1957 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  store double %1956, ptr %1957, align 8, !tbaa !20
  %1958 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %1959 = load double, ptr %1958, align 8, !tbaa !16
  %1960 = load ptr, ptr %32, align 8, !tbaa !5
  %1961 = load i32, ptr %46, align 4, !tbaa !9
  %1962 = sext i32 %1961 to i64
  %1963 = getelementptr inbounds %struct.doublecomplex, ptr %1960, i64 %1962
  %1964 = getelementptr inbounds %struct.doublecomplex, ptr %1963, i32 0, i32 0
  store double %1959, ptr %1964, align 8, !tbaa !16
  %1965 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %1966 = load double, ptr %1965, align 8, !tbaa !20
  %1967 = load ptr, ptr %32, align 8, !tbaa !5
  %1968 = load i32, ptr %46, align 4, !tbaa !9
  %1969 = sext i32 %1968 to i64
  %1970 = getelementptr inbounds %struct.doublecomplex, ptr %1967, i64 %1969
  %1971 = getelementptr inbounds %struct.doublecomplex, ptr %1970, i32 0, i32 1
  store double %1966, ptr %1971, align 8, !tbaa !20
  br label %1972

1972:                                             ; preds = %1937
  %1973 = load i32, ptr %91, align 4, !tbaa !9
  %1974 = add nsw i32 %1973, 1
  store i32 %1974, ptr %91, align 4, !tbaa !9
  br label %1933, !llvm.loop !25

1975:                                             ; preds = %1933
  %1976 = load double, ptr %63, align 8, !tbaa !14
  %1977 = load double, ptr %66, align 8, !tbaa !14
  %1978 = fmul double %1976, %1977
  store double %1978, ptr %66, align 8, !tbaa !14
  %1979 = load double, ptr %63, align 8, !tbaa !14
  %1980 = getelementptr inbounds %struct.doublecomplex, ptr %101, i32 0, i32 0
  %1981 = load double, ptr %1980, align 8, !tbaa !16
  %1982 = fmul double %1979, %1981
  %1983 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  store double %1982, ptr %1983, align 8, !tbaa !16
  %1984 = load double, ptr %63, align 8, !tbaa !14
  %1985 = getelementptr inbounds %struct.doublecomplex, ptr %101, i32 0, i32 1
  %1986 = load double, ptr %1985, align 8, !tbaa !20
  %1987 = fmul double %1984, %1986
  %1988 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  store double %1987, ptr %1988, align 8, !tbaa !20
  %1989 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %1990 = load double, ptr %1989, align 8, !tbaa !16
  %1991 = getelementptr inbounds %struct.doublecomplex, ptr %101, i32 0, i32 0
  store double %1990, ptr %1991, align 8, !tbaa !16
  %1992 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %1993 = load double, ptr %1992, align 8, !tbaa !20
  %1994 = getelementptr inbounds %struct.doublecomplex, ptr %101, i32 0, i32 1
  store double %1993, ptr %1994, align 8, !tbaa !20
  br label %1995

1995:                                             ; preds = %1975, %1899
  br label %1996

1996:                                             ; preds = %1995, %1848
  %1997 = load i32, ptr %69, align 4, !tbaa !9
  store i32 %1997, ptr %45, align 4, !tbaa !9
  %1998 = getelementptr inbounds %struct.doublecomplex, ptr %101, i32 0, i32 0
  %1999 = load double, ptr %1998, align 8, !tbaa !16
  %2000 = fneg double %1999
  %2001 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %2000, ptr %2001, align 8, !tbaa !16
  %2002 = getelementptr inbounds %struct.doublecomplex, ptr %101, i32 0, i32 1
  %2003 = load double, ptr %2002, align 8, !tbaa !20
  %2004 = fneg double %2003
  %2005 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double %2004, ptr %2005, align 8, !tbaa !20
  call void @zladiv_(ptr noundef %54, ptr noundef %55, ptr noundef %67)
  %2006 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %2007 = load double, ptr %2006, align 8, !tbaa !16
  %2008 = load ptr, ptr %32, align 8, !tbaa !5
  %2009 = load i32, ptr %45, align 4, !tbaa !9
  %2010 = sext i32 %2009 to i64
  %2011 = getelementptr inbounds %struct.doublecomplex, ptr %2008, i64 %2010
  %2012 = getelementptr inbounds %struct.doublecomplex, ptr %2011, i32 0, i32 0
  store double %2007, ptr %2012, align 8, !tbaa !16
  %2013 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %2014 = load double, ptr %2013, align 8, !tbaa !20
  %2015 = load ptr, ptr %32, align 8, !tbaa !5
  %2016 = load i32, ptr %45, align 4, !tbaa !9
  %2017 = sext i32 %2016 to i64
  %2018 = getelementptr inbounds %struct.doublecomplex, ptr %2015, i64 %2017
  %2019 = getelementptr inbounds %struct.doublecomplex, ptr %2018, i32 0, i32 1
  store double %2014, ptr %2019, align 8, !tbaa !20
  %2020 = load i32, ptr %69, align 4, !tbaa !9
  store i32 %2020, ptr %45, align 4, !tbaa !9
  %2021 = load double, ptr %66, align 8, !tbaa !14
  store double %2021, ptr %50, align 8, !tbaa !14
  %2022 = load ptr, ptr %32, align 8, !tbaa !5
  %2023 = load i32, ptr %45, align 4, !tbaa !9
  %2024 = sext i32 %2023 to i64
  %2025 = getelementptr inbounds %struct.doublecomplex, ptr %2022, i64 %2024
  %2026 = getelementptr inbounds %struct.doublecomplex, ptr %2025, i32 0, i32 0
  %2027 = load double, ptr %2026, align 8, !tbaa !16
  store double %2027, ptr %48, align 8, !tbaa !14
  %2028 = load double, ptr %48, align 8, !tbaa !14
  %2029 = fcmp oge double %2028, 0.000000e+00
  br i1 %2029, label %2030, label %2032

2030:                                             ; preds = %1996
  %2031 = load double, ptr %48, align 8, !tbaa !14
  br label %2035

2032:                                             ; preds = %1996
  %2033 = load double, ptr %48, align 8, !tbaa !14
  %2034 = fneg double %2033
  br label %2035

2035:                                             ; preds = %2032, %2030
  %2036 = phi double [ %2031, %2030 ], [ %2034, %2032 ]
  %2037 = load ptr, ptr %32, align 8, !tbaa !5
  %2038 = load i32, ptr %69, align 4, !tbaa !9
  %2039 = sext i32 %2038 to i64
  %2040 = getelementptr inbounds %struct.doublecomplex, ptr %2037, i64 %2039
  %2041 = call { double, double } @Cd(ptr noundef %2040)
  %2042 = extractvalue { double, double } %2041, 0
  %2043 = extractvalue { double, double } %2041, 1
  store double %2043, ptr %49, align 8, !tbaa !14
  %2044 = load double, ptr %49, align 8, !tbaa !14
  %2045 = fcmp oge double %2044, 0.000000e+00
  br i1 %2045, label %2046, label %2048

2046:                                             ; preds = %2035
  %2047 = load double, ptr %49, align 8, !tbaa !14
  br label %2051

2048:                                             ; preds = %2035
  %2049 = load double, ptr %49, align 8, !tbaa !14
  %2050 = fneg double %2049
  br label %2051

2051:                                             ; preds = %2048, %2046
  %2052 = phi double [ %2047, %2046 ], [ %2050, %2048 ]
  %2053 = fadd double %2036, %2052
  store double %2053, ptr %51, align 8, !tbaa !14
  %2054 = load double, ptr %50, align 8, !tbaa !14
  %2055 = load double, ptr %51, align 8, !tbaa !14
  %2056 = fcmp oge double %2054, %2055
  br i1 %2056, label %2057, label %2059

2057:                                             ; preds = %2051
  %2058 = load double, ptr %50, align 8, !tbaa !14
  br label %2061

2059:                                             ; preds = %2051
  %2060 = load double, ptr %51, align 8, !tbaa !14
  br label %2061

2061:                                             ; preds = %2059, %2057
  %2062 = phi double [ %2058, %2057 ], [ %2060, %2059 ]
  store double %2062, ptr %66, align 8, !tbaa !14
  br label %2063

2063:                                             ; preds = %2061
  %2064 = load i32, ptr %69, align 4, !tbaa !9
  %2065 = add nsw i32 %2064, 1
  store i32 %2065, ptr %69, align 4, !tbaa !9
  br label %1402, !llvm.loop !26

2066:                                             ; preds = %1402
  %2067 = load i32, ptr %87, align 4, !tbaa !9
  %2068 = icmp ne i32 %2067, 0
  br i1 %2068, label %2069, label %2094

2069:                                             ; preds = %2066
  %2070 = load ptr, ptr %21, align 8, !tbaa !5
  %2071 = load i32, ptr %2070, align 4, !tbaa !9
  %2072 = add nsw i32 %2071, 1
  %2073 = load i32, ptr %83, align 4, !tbaa !9
  %2074 = sub nsw i32 %2072, %2073
  store i32 %2074, ptr %44, align 4, !tbaa !9
  %2075 = load ptr, ptr %21, align 8, !tbaa !5
  %2076 = load ptr, ptr %26, align 8, !tbaa !5
  %2077 = load i32, ptr %83, align 4, !tbaa !9
  %2078 = load i32, ptr %39, align 4, !tbaa !9
  %2079 = mul nsw i32 %2077, %2078
  %2080 = add nsw i32 %2079, 1
  %2081 = sext i32 %2080 to i64
  %2082 = getelementptr inbounds %struct.doublecomplex, ptr %2076, i64 %2081
  %2083 = load ptr, ptr %27, align 8, !tbaa !5
  %2084 = load ptr, ptr %32, align 8, !tbaa !5
  %2085 = load i32, ptr %83, align 4, !tbaa !9
  %2086 = sext i32 %2085 to i64
  %2087 = getelementptr inbounds %struct.doublecomplex, ptr %2084, i64 %2086
  %2088 = load ptr, ptr %32, align 8, !tbaa !5
  %2089 = load ptr, ptr %21, align 8, !tbaa !5
  %2090 = load i32, ptr %2089, align 4, !tbaa !9
  %2091 = add nsw i32 %2090, 1
  %2092 = sext i32 %2091 to i64
  %2093 = getelementptr inbounds %struct.doublecomplex, ptr %2088, i64 %2092
  call void @zgemv_(ptr noundef @.str.9, ptr noundef %2075, ptr noundef %44, ptr noundef @c_b2, ptr noundef %2082, ptr noundef %2083, ptr noundef %2087, ptr noundef @c__1, ptr noundef @c_b1, ptr noundef %2093, ptr noundef @c__1)
  store i32 2, ptr %62, align 4, !tbaa !9
  store i32 1, ptr %58, align 4, !tbaa !9
  br label %2096

2094:                                             ; preds = %2066
  store i32 1, ptr %62, align 4, !tbaa !9
  %2095 = load i32, ptr %83, align 4, !tbaa !9
  store i32 %2095, ptr %58, align 4, !tbaa !9
  br label %2096

2096:                                             ; preds = %2094, %2069
  store double 0.000000e+00, ptr %66, align 8, !tbaa !14
  %2097 = load ptr, ptr %21, align 8, !tbaa !5
  %2098 = load i32, ptr %2097, align 4, !tbaa !9
  store i32 %2098, ptr %44, align 4, !tbaa !9
  %2099 = load i32, ptr %58, align 4, !tbaa !9
  store i32 %2099, ptr %91, align 4, !tbaa !9
  br label %2100

2100:                                             ; preds = %2160, %2096
  %2101 = load i32, ptr %91, align 4, !tbaa !9
  %2102 = load i32, ptr %44, align 4, !tbaa !9
  %2103 = icmp sle i32 %2101, %2102
  br i1 %2103, label %2104, label %2163

2104:                                             ; preds = %2100
  %2105 = load i32, ptr %62, align 4, !tbaa !9
  %2106 = sub nsw i32 %2105, 1
  %2107 = load ptr, ptr %21, align 8, !tbaa !5
  %2108 = load i32, ptr %2107, align 4, !tbaa !9
  %2109 = mul nsw i32 %2106, %2108
  %2110 = load i32, ptr %91, align 4, !tbaa !9
  %2111 = add nsw i32 %2109, %2110
  store i32 %2111, ptr %45, align 4, !tbaa !9
  %2112 = load double, ptr %66, align 8, !tbaa !14
  store double %2112, ptr %50, align 8, !tbaa !14
  %2113 = load ptr, ptr %32, align 8, !tbaa !5
  %2114 = load i32, ptr %45, align 4, !tbaa !9
  %2115 = sext i32 %2114 to i64
  %2116 = getelementptr inbounds %struct.doublecomplex, ptr %2113, i64 %2115
  %2117 = getelementptr inbounds %struct.doublecomplex, ptr %2116, i32 0, i32 0
  %2118 = load double, ptr %2117, align 8, !tbaa !16
  store double %2118, ptr %48, align 8, !tbaa !14
  %2119 = load double, ptr %48, align 8, !tbaa !14
  %2120 = fcmp oge double %2119, 0.000000e+00
  br i1 %2120, label %2121, label %2123

2121:                                             ; preds = %2104
  %2122 = load double, ptr %48, align 8, !tbaa !14
  br label %2126

2123:                                             ; preds = %2104
  %2124 = load double, ptr %48, align 8, !tbaa !14
  %2125 = fneg double %2124
  br label %2126

2126:                                             ; preds = %2123, %2121
  %2127 = phi double [ %2122, %2121 ], [ %2125, %2123 ]
  %2128 = load ptr, ptr %32, align 8, !tbaa !5
  %2129 = load i32, ptr %62, align 4, !tbaa !9
  %2130 = sub nsw i32 %2129, 1
  %2131 = load ptr, ptr %21, align 8, !tbaa !5
  %2132 = load i32, ptr %2131, align 4, !tbaa !9
  %2133 = mul nsw i32 %2130, %2132
  %2134 = load i32, ptr %91, align 4, !tbaa !9
  %2135 = add nsw i32 %2133, %2134
  %2136 = sext i32 %2135 to i64
  %2137 = getelementptr inbounds %struct.doublecomplex, ptr %2128, i64 %2136
  %2138 = call { double, double } @Cd(ptr noundef %2137)
  %2139 = extractvalue { double, double } %2138, 0
  %2140 = extractvalue { double, double } %2138, 1
  store double %2140, ptr %49, align 8, !tbaa !14
  %2141 = load double, ptr %49, align 8, !tbaa !14
  %2142 = fcmp oge double %2141, 0.000000e+00
  br i1 %2142, label %2143, label %2145

2143:                                             ; preds = %2126
  %2144 = load double, ptr %49, align 8, !tbaa !14
  br label %2148

2145:                                             ; preds = %2126
  %2146 = load double, ptr %49, align 8, !tbaa !14
  %2147 = fneg double %2146
  br label %2148

2148:                                             ; preds = %2145, %2143
  %2149 = phi double [ %2144, %2143 ], [ %2147, %2145 ]
  %2150 = fadd double %2127, %2149
  store double %2150, ptr %51, align 8, !tbaa !14
  %2151 = load double, ptr %50, align 8, !tbaa !14
  %2152 = load double, ptr %51, align 8, !tbaa !14
  %2153 = fcmp oge double %2151, %2152
  br i1 %2153, label %2154, label %2156

2154:                                             ; preds = %2148
  %2155 = load double, ptr %50, align 8, !tbaa !14
  br label %2158

2156:                                             ; preds = %2148
  %2157 = load double, ptr %51, align 8, !tbaa !14
  br label %2158

2158:                                             ; preds = %2156, %2154
  %2159 = phi double [ %2155, %2154 ], [ %2157, %2156 ]
  store double %2159, ptr %66, align 8, !tbaa !14
  br label %2160

2160:                                             ; preds = %2158
  %2161 = load i32, ptr %91, align 4, !tbaa !9
  %2162 = add nsw i32 %2161, 1
  store i32 %2162, ptr %91, align 4, !tbaa !9
  br label %2100, !llvm.loop !27

2163:                                             ; preds = %2100
  %2164 = load double, ptr %66, align 8, !tbaa !14
  %2165 = load double, ptr %93, align 8, !tbaa !14
  %2166 = fcmp ogt double %2164, %2165
  br i1 %2166, label %2167, label %2226

2167:                                             ; preds = %2163
  %2168 = load double, ptr %66, align 8, !tbaa !14
  %2169 = fdiv double 1.000000e+00, %2168
  store double %2169, ptr %63, align 8, !tbaa !14
  %2170 = load ptr, ptr %21, align 8, !tbaa !5
  %2171 = load i32, ptr %2170, align 4, !tbaa !9
  store i32 %2171, ptr %44, align 4, !tbaa !9
  %2172 = load i32, ptr %58, align 4, !tbaa !9
  store i32 %2172, ptr %91, align 4, !tbaa !9
  br label %2173

2173:                                             ; preds = %2222, %2167
  %2174 = load i32, ptr %91, align 4, !tbaa !9
  %2175 = load i32, ptr %44, align 4, !tbaa !9
  %2176 = icmp sle i32 %2174, %2175
  br i1 %2176, label %2177, label %2225

2177:                                             ; preds = %2173
  %2178 = load i32, ptr %91, align 4, !tbaa !9
  %2179 = load i32, ptr %59, align 4, !tbaa !9
  %2180 = load i32, ptr %39, align 4, !tbaa !9
  %2181 = mul nsw i32 %2179, %2180
  %2182 = add nsw i32 %2178, %2181
  store i32 %2182, ptr %45, align 4, !tbaa !9
  %2183 = load i32, ptr %62, align 4, !tbaa !9
  %2184 = sub nsw i32 %2183, 1
  %2185 = load ptr, ptr %21, align 8, !tbaa !5
  %2186 = load i32, ptr %2185, align 4, !tbaa !9
  %2187 = mul nsw i32 %2184, %2186
  %2188 = load i32, ptr %91, align 4, !tbaa !9
  %2189 = add nsw i32 %2187, %2188
  store i32 %2189, ptr %46, align 4, !tbaa !9
  %2190 = load double, ptr %63, align 8, !tbaa !14
  %2191 = load ptr, ptr %32, align 8, !tbaa !5
  %2192 = load i32, ptr %46, align 4, !tbaa !9
  %2193 = sext i32 %2192 to i64
  %2194 = getelementptr inbounds %struct.doublecomplex, ptr %2191, i64 %2193
  %2195 = getelementptr inbounds %struct.doublecomplex, ptr %2194, i32 0, i32 0
  %2196 = load double, ptr %2195, align 8, !tbaa !16
  %2197 = fmul double %2190, %2196
  %2198 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  store double %2197, ptr %2198, align 8, !tbaa !16
  %2199 = load double, ptr %63, align 8, !tbaa !14
  %2200 = load ptr, ptr %32, align 8, !tbaa !5
  %2201 = load i32, ptr %46, align 4, !tbaa !9
  %2202 = sext i32 %2201 to i64
  %2203 = getelementptr inbounds %struct.doublecomplex, ptr %2200, i64 %2202
  %2204 = getelementptr inbounds %struct.doublecomplex, ptr %2203, i32 0, i32 1
  %2205 = load double, ptr %2204, align 8, !tbaa !20
  %2206 = fmul double %2199, %2205
  %2207 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  store double %2206, ptr %2207, align 8, !tbaa !20
  %2208 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %2209 = load double, ptr %2208, align 8, !tbaa !16
  %2210 = load ptr, ptr %26, align 8, !tbaa !5
  %2211 = load i32, ptr %45, align 4, !tbaa !9
  %2212 = sext i32 %2211 to i64
  %2213 = getelementptr inbounds %struct.doublecomplex, ptr %2210, i64 %2212
  %2214 = getelementptr inbounds %struct.doublecomplex, ptr %2213, i32 0, i32 0
  store double %2209, ptr %2214, align 8, !tbaa !16
  %2215 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %2216 = load double, ptr %2215, align 8, !tbaa !20
  %2217 = load ptr, ptr %26, align 8, !tbaa !5
  %2218 = load i32, ptr %45, align 4, !tbaa !9
  %2219 = sext i32 %2218 to i64
  %2220 = getelementptr inbounds %struct.doublecomplex, ptr %2217, i64 %2219
  %2221 = getelementptr inbounds %struct.doublecomplex, ptr %2220, i32 0, i32 1
  store double %2216, ptr %2221, align 8, !tbaa !20
  br label %2222

2222:                                             ; preds = %2177
  %2223 = load i32, ptr %91, align 4, !tbaa !9
  %2224 = add nsw i32 %2223, 1
  store i32 %2224, ptr %91, align 4, !tbaa !9
  br label %2173, !llvm.loop !28

2225:                                             ; preds = %2173
  br label %2230

2226:                                             ; preds = %2163
  %2227 = load ptr, ptr %21, align 8, !tbaa !5
  %2228 = load i32, ptr %2227, align 4, !tbaa !9
  %2229 = add nsw i32 %2228, 1
  store i32 %2229, ptr %58, align 4, !tbaa !9
  br label %2230

2230:                                             ; preds = %2226, %2225
  %2231 = load i32, ptr %58, align 4, !tbaa !9
  %2232 = sub nsw i32 %2231, 1
  store i32 %2232, ptr %44, align 4, !tbaa !9
  store i32 1, ptr %91, align 4, !tbaa !9
  br label %2233

2233:                                             ; preds = %2253, %2230
  %2234 = load i32, ptr %91, align 4, !tbaa !9
  %2235 = load i32, ptr %44, align 4, !tbaa !9
  %2236 = icmp sle i32 %2234, %2235
  br i1 %2236, label %2237, label %2256

2237:                                             ; preds = %2233
  %2238 = load i32, ptr %91, align 4, !tbaa !9
  %2239 = load i32, ptr %59, align 4, !tbaa !9
  %2240 = load i32, ptr %39, align 4, !tbaa !9
  %2241 = mul nsw i32 %2239, %2240
  %2242 = add nsw i32 %2238, %2241
  store i32 %2242, ptr %45, align 4, !tbaa !9
  %2243 = load ptr, ptr %26, align 8, !tbaa !5
  %2244 = load i32, ptr %45, align 4, !tbaa !9
  %2245 = sext i32 %2244 to i64
  %2246 = getelementptr inbounds %struct.doublecomplex, ptr %2243, i64 %2245
  %2247 = getelementptr inbounds %struct.doublecomplex, ptr %2246, i32 0, i32 0
  store double 0.000000e+00, ptr %2247, align 8, !tbaa !16
  %2248 = load ptr, ptr %26, align 8, !tbaa !5
  %2249 = load i32, ptr %45, align 4, !tbaa !9
  %2250 = sext i32 %2249 to i64
  %2251 = getelementptr inbounds %struct.doublecomplex, ptr %2248, i64 %2250
  %2252 = getelementptr inbounds %struct.doublecomplex, ptr %2251, i32 0, i32 1
  store double 0.000000e+00, ptr %2252, align 8, !tbaa !20
  br label %2253

2253:                                             ; preds = %2237
  %2254 = load i32, ptr %91, align 4, !tbaa !9
  %2255 = add nsw i32 %2254, 1
  store i32 %2255, ptr %91, align 4, !tbaa !9
  br label %2233, !llvm.loop !29

2256:                                             ; preds = %2233
  br label %2257

2257:                                             ; preds = %2256, %744
  br label %2258

2258:                                             ; preds = %2257, %842
  br label %2259

2259:                                             ; preds = %2258
  %2260 = load i32, ptr %83, align 4, !tbaa !9
  %2261 = add nsw i32 %2260, 1
  store i32 %2261, ptr %83, align 4, !tbaa !9
  br label %730, !llvm.loop !30

2262:                                             ; preds = %730
  br label %2263

2263:                                             ; preds = %2262, %722
  %2264 = load i32, ptr %78, align 4, !tbaa !9
  %2265 = icmp ne i32 %2264, 0
  br i1 %2265, label %2266, label %3927

2266:                                             ; preds = %2263
  %2267 = load i32, ptr %88, align 4, !tbaa !9
  %2268 = add nsw i32 %2267, 1
  store i32 %2268, ptr %59, align 4, !tbaa !9
  %2269 = load ptr, ptr %21, align 8, !tbaa !5
  %2270 = load i32, ptr %2269, align 4, !tbaa !9
  store i32 %2270, ptr %83, align 4, !tbaa !9
  br label %2271

2271:                                             ; preds = %3923, %2266
  %2272 = load i32, ptr %83, align 4, !tbaa !9
  %2273 = icmp sge i32 %2272, 1
  br i1 %2273, label %2274, label %3926

2274:                                             ; preds = %2271
  %2275 = load i32, ptr %71, align 4, !tbaa !9
  %2276 = icmp ne i32 %2275, 0
  br i1 %2276, label %2277, label %2278

2277:                                             ; preds = %2274
  store i32 1, ptr %95, align 4, !tbaa !9
  br label %2284

2278:                                             ; preds = %2274
  %2279 = load ptr, ptr %20, align 8, !tbaa !5
  %2280 = load i32, ptr %83, align 4, !tbaa !9
  %2281 = sext i32 %2280 to i64
  %2282 = getelementptr inbounds i32, ptr %2279, i64 %2281
  %2283 = load i32, ptr %2282, align 4, !tbaa !9
  store i32 %2283, ptr %95, align 4, !tbaa !9
  br label %2284

2284:                                             ; preds = %2278, %2277
  %2285 = load i32, ptr %95, align 4, !tbaa !9
  %2286 = icmp ne i32 %2285, 0
  br i1 %2286, label %2287, label %3921

2287:                                             ; preds = %2284
  %2288 = load i32, ptr %59, align 4, !tbaa !9
  %2289 = add nsw i32 %2288, -1
  store i32 %2289, ptr %59, align 4, !tbaa !9
  %2290 = load i32, ptr %83, align 4, !tbaa !9
  %2291 = load i32, ptr %83, align 4, !tbaa !9
  %2292 = load i32, ptr %37, align 4, !tbaa !9
  %2293 = mul nsw i32 %2291, %2292
  %2294 = add nsw i32 %2290, %2293
  store i32 %2294, ptr %43, align 4, !tbaa !9
  %2295 = load i32, ptr %83, align 4, !tbaa !9
  %2296 = load i32, ptr %83, align 4, !tbaa !9
  %2297 = load i32, ptr %35, align 4, !tbaa !9
  %2298 = mul nsw i32 %2296, %2297
  %2299 = add nsw i32 %2295, %2298
  store i32 %2299, ptr %44, align 4, !tbaa !9
  %2300 = load ptr, ptr %22, align 8, !tbaa !5
  %2301 = load i32, ptr %43, align 4, !tbaa !9
  %2302 = sext i32 %2301 to i64
  %2303 = getelementptr inbounds %struct.doublecomplex, ptr %2300, i64 %2302
  %2304 = getelementptr inbounds %struct.doublecomplex, ptr %2303, i32 0, i32 0
  %2305 = load double, ptr %2304, align 8, !tbaa !16
  store double %2305, ptr %49, align 8, !tbaa !14
  %2306 = load double, ptr %49, align 8, !tbaa !14
  %2307 = fcmp oge double %2306, 0.000000e+00
  br i1 %2307, label %2308, label %2310

2308:                                             ; preds = %2287
  %2309 = load double, ptr %49, align 8, !tbaa !14
  br label %2313

2310:                                             ; preds = %2287
  %2311 = load double, ptr %49, align 8, !tbaa !14
  %2312 = fneg double %2311
  br label %2313

2313:                                             ; preds = %2310, %2308
  %2314 = phi double [ %2309, %2308 ], [ %2312, %2310 ]
  %2315 = load ptr, ptr %22, align 8, !tbaa !5
  %2316 = load i32, ptr %83, align 4, !tbaa !9
  %2317 = load i32, ptr %83, align 4, !tbaa !9
  %2318 = load i32, ptr %37, align 4, !tbaa !9
  %2319 = mul nsw i32 %2317, %2318
  %2320 = add nsw i32 %2316, %2319
  %2321 = sext i32 %2320 to i64
  %2322 = getelementptr inbounds %struct.doublecomplex, ptr %2315, i64 %2321
  %2323 = call { double, double } @Cd(ptr noundef %2322)
  %2324 = extractvalue { double, double } %2323, 0
  %2325 = extractvalue { double, double } %2323, 1
  store double %2325, ptr %50, align 8, !tbaa !14
  %2326 = load double, ptr %50, align 8, !tbaa !14
  %2327 = fcmp oge double %2326, 0.000000e+00
  br i1 %2327, label %2328, label %2330

2328:                                             ; preds = %2313
  %2329 = load double, ptr %50, align 8, !tbaa !14
  br label %2333

2330:                                             ; preds = %2313
  %2331 = load double, ptr %50, align 8, !tbaa !14
  %2332 = fneg double %2331
  br label %2333

2333:                                             ; preds = %2330, %2328
  %2334 = phi double [ %2329, %2328 ], [ %2332, %2330 ]
  %2335 = fadd double %2314, %2334
  %2336 = load double, ptr %93, align 8, !tbaa !14
  %2337 = fcmp ole double %2335, %2336
  br i1 %2337, label %2338, label %2398

2338:                                             ; preds = %2333
  %2339 = load ptr, ptr %24, align 8, !tbaa !5
  %2340 = load i32, ptr %44, align 4, !tbaa !9
  %2341 = sext i32 %2340 to i64
  %2342 = getelementptr inbounds %struct.doublecomplex, ptr %2339, i64 %2341
  %2343 = getelementptr inbounds %struct.doublecomplex, ptr %2342, i32 0, i32 0
  %2344 = load double, ptr %2343, align 8, !tbaa !16
  store double %2344, ptr %48, align 8, !tbaa !14
  %2345 = load double, ptr %48, align 8, !tbaa !14
  %2346 = fcmp oge double %2345, 0.000000e+00
  br i1 %2346, label %2347, label %2349

2347:                                             ; preds = %2338
  %2348 = load double, ptr %48, align 8, !tbaa !14
  br label %2352

2349:                                             ; preds = %2338
  %2350 = load double, ptr %48, align 8, !tbaa !14
  %2351 = fneg double %2350
  br label %2352

2352:                                             ; preds = %2349, %2347
  %2353 = phi double [ %2348, %2347 ], [ %2351, %2349 ]
  %2354 = load double, ptr %93, align 8, !tbaa !14
  %2355 = fcmp ole double %2353, %2354
  br i1 %2355, label %2356, label %2398

2356:                                             ; preds = %2352
  %2357 = load ptr, ptr %21, align 8, !tbaa !5
  %2358 = load i32, ptr %2357, align 4, !tbaa !9
  store i32 %2358, ptr %43, align 4, !tbaa !9
  store i32 1, ptr %91, align 4, !tbaa !9
  br label %2359

2359:                                             ; preds = %2379, %2356
  %2360 = load i32, ptr %91, align 4, !tbaa !9
  %2361 = load i32, ptr %43, align 4, !tbaa !9
  %2362 = icmp sle i32 %2360, %2361
  br i1 %2362, label %2363, label %2382

2363:                                             ; preds = %2359
  %2364 = load i32, ptr %91, align 4, !tbaa !9
  %2365 = load i32, ptr %59, align 4, !tbaa !9
  %2366 = load i32, ptr %41, align 4, !tbaa !9
  %2367 = mul nsw i32 %2365, %2366
  %2368 = add nsw i32 %2364, %2367
  store i32 %2368, ptr %44, align 4, !tbaa !9
  %2369 = load ptr, ptr %28, align 8, !tbaa !5
  %2370 = load i32, ptr %44, align 4, !tbaa !9
  %2371 = sext i32 %2370 to i64
  %2372 = getelementptr inbounds %struct.doublecomplex, ptr %2369, i64 %2371
  %2373 = getelementptr inbounds %struct.doublecomplex, ptr %2372, i32 0, i32 0
  store double 0.000000e+00, ptr %2373, align 8, !tbaa !16
  %2374 = load ptr, ptr %28, align 8, !tbaa !5
  %2375 = load i32, ptr %44, align 4, !tbaa !9
  %2376 = sext i32 %2375 to i64
  %2377 = getelementptr inbounds %struct.doublecomplex, ptr %2374, i64 %2376
  %2378 = getelementptr inbounds %struct.doublecomplex, ptr %2377, i32 0, i32 1
  store double 0.000000e+00, ptr %2378, align 8, !tbaa !20
  br label %2379

2379:                                             ; preds = %2363
  %2380 = load i32, ptr %91, align 4, !tbaa !9
  %2381 = add nsw i32 %2380, 1
  store i32 %2381, ptr %91, align 4, !tbaa !9
  br label %2359, !llvm.loop !31

2382:                                             ; preds = %2359
  %2383 = load i32, ptr %59, align 4, !tbaa !9
  %2384 = load i32, ptr %59, align 4, !tbaa !9
  %2385 = load i32, ptr %41, align 4, !tbaa !9
  %2386 = mul nsw i32 %2384, %2385
  %2387 = add nsw i32 %2383, %2386
  store i32 %2387, ptr %43, align 4, !tbaa !9
  %2388 = load ptr, ptr %28, align 8, !tbaa !5
  %2389 = load i32, ptr %43, align 4, !tbaa !9
  %2390 = sext i32 %2389 to i64
  %2391 = getelementptr inbounds %struct.doublecomplex, ptr %2388, i64 %2390
  %2392 = getelementptr inbounds %struct.doublecomplex, ptr %2391, i32 0, i32 0
  store double 1.000000e+00, ptr %2392, align 8, !tbaa !16
  %2393 = load ptr, ptr %28, align 8, !tbaa !5
  %2394 = load i32, ptr %43, align 4, !tbaa !9
  %2395 = sext i32 %2394 to i64
  %2396 = getelementptr inbounds %struct.doublecomplex, ptr %2393, i64 %2395
  %2397 = getelementptr inbounds %struct.doublecomplex, ptr %2396, i32 0, i32 1
  store double 0.000000e+00, ptr %2397, align 8, !tbaa !20
  br label %3922

2398:                                             ; preds = %2352, %2333
  %2399 = load i32, ptr %83, align 4, !tbaa !9
  %2400 = load i32, ptr %83, align 4, !tbaa !9
  %2401 = load i32, ptr %37, align 4, !tbaa !9
  %2402 = mul nsw i32 %2400, %2401
  %2403 = add nsw i32 %2399, %2402
  store i32 %2403, ptr %43, align 4, !tbaa !9
  %2404 = load i32, ptr %83, align 4, !tbaa !9
  %2405 = load i32, ptr %83, align 4, !tbaa !9
  %2406 = load i32, ptr %35, align 4, !tbaa !9
  %2407 = mul nsw i32 %2405, %2406
  %2408 = add nsw i32 %2404, %2407
  store i32 %2408, ptr %44, align 4, !tbaa !9
  %2409 = load ptr, ptr %22, align 8, !tbaa !5
  %2410 = load i32, ptr %43, align 4, !tbaa !9
  %2411 = sext i32 %2410 to i64
  %2412 = getelementptr inbounds %struct.doublecomplex, ptr %2409, i64 %2411
  %2413 = getelementptr inbounds %struct.doublecomplex, ptr %2412, i32 0, i32 0
  %2414 = load double, ptr %2413, align 8, !tbaa !16
  store double %2414, ptr %49, align 8, !tbaa !14
  %2415 = load double, ptr %49, align 8, !tbaa !14
  %2416 = fcmp oge double %2415, 0.000000e+00
  br i1 %2416, label %2417, label %2419

2417:                                             ; preds = %2398
  %2418 = load double, ptr %49, align 8, !tbaa !14
  br label %2422

2419:                                             ; preds = %2398
  %2420 = load double, ptr %49, align 8, !tbaa !14
  %2421 = fneg double %2420
  br label %2422

2422:                                             ; preds = %2419, %2417
  %2423 = phi double [ %2418, %2417 ], [ %2421, %2419 ]
  %2424 = load ptr, ptr %22, align 8, !tbaa !5
  %2425 = load i32, ptr %83, align 4, !tbaa !9
  %2426 = load i32, ptr %83, align 4, !tbaa !9
  %2427 = load i32, ptr %37, align 4, !tbaa !9
  %2428 = mul nsw i32 %2426, %2427
  %2429 = add nsw i32 %2425, %2428
  %2430 = sext i32 %2429 to i64
  %2431 = getelementptr inbounds %struct.doublecomplex, ptr %2424, i64 %2430
  %2432 = call { double, double } @Cd(ptr noundef %2431)
  %2433 = extractvalue { double, double } %2432, 0
  %2434 = extractvalue { double, double } %2432, 1
  store double %2434, ptr %50, align 8, !tbaa !14
  %2435 = load double, ptr %50, align 8, !tbaa !14
  %2436 = fcmp oge double %2435, 0.000000e+00
  br i1 %2436, label %2437, label %2439

2437:                                             ; preds = %2422
  %2438 = load double, ptr %50, align 8, !tbaa !14
  br label %2442

2439:                                             ; preds = %2422
  %2440 = load double, ptr %50, align 8, !tbaa !14
  %2441 = fneg double %2440
  br label %2442

2442:                                             ; preds = %2439, %2437
  %2443 = phi double [ %2438, %2437 ], [ %2441, %2439 ]
  %2444 = fadd double %2423, %2443
  %2445 = load double, ptr %89, align 8, !tbaa !14
  %2446 = fmul double %2444, %2445
  store double %2446, ptr %51, align 8, !tbaa !14
  %2447 = load ptr, ptr %24, align 8, !tbaa !5
  %2448 = load i32, ptr %44, align 4, !tbaa !9
  %2449 = sext i32 %2448 to i64
  %2450 = getelementptr inbounds %struct.doublecomplex, ptr %2447, i64 %2449
  %2451 = getelementptr inbounds %struct.doublecomplex, ptr %2450, i32 0, i32 0
  %2452 = load double, ptr %2451, align 8, !tbaa !16
  store double %2452, ptr %48, align 8, !tbaa !14
  %2453 = load double, ptr %48, align 8, !tbaa !14
  %2454 = fcmp oge double %2453, 0.000000e+00
  br i1 %2454, label %2455, label %2457

2455:                                             ; preds = %2442
  %2456 = load double, ptr %48, align 8, !tbaa !14
  br label %2460

2457:                                             ; preds = %2442
  %2458 = load double, ptr %48, align 8, !tbaa !14
  %2459 = fneg double %2458
  br label %2460

2460:                                             ; preds = %2457, %2455
  %2461 = phi double [ %2456, %2455 ], [ %2459, %2457 ]
  %2462 = load double, ptr %90, align 8, !tbaa !14
  %2463 = fmul double %2461, %2462
  store double %2463, ptr %52, align 8, !tbaa !14
  %2464 = load double, ptr %51, align 8, !tbaa !14
  %2465 = load double, ptr %52, align 8, !tbaa !14
  %2466 = fcmp oge double %2464, %2465
  br i1 %2466, label %2467, label %2469

2467:                                             ; preds = %2460
  %2468 = load double, ptr %51, align 8, !tbaa !14
  br label %2471

2469:                                             ; preds = %2460
  %2470 = load double, ptr %52, align 8, !tbaa !14
  br label %2471

2471:                                             ; preds = %2469, %2467
  %2472 = phi double [ %2468, %2467 ], [ %2470, %2469 ]
  store double %2472, ptr %51, align 8, !tbaa !14
  %2473 = load double, ptr %51, align 8, !tbaa !14
  %2474 = load double, ptr %93, align 8, !tbaa !14
  %2475 = fcmp oge double %2473, %2474
  br i1 %2475, label %2476, label %2478

2476:                                             ; preds = %2471
  %2477 = load double, ptr %51, align 8, !tbaa !14
  br label %2480

2478:                                             ; preds = %2471
  %2479 = load double, ptr %93, align 8, !tbaa !14
  br label %2480

2480:                                             ; preds = %2478, %2476
  %2481 = phi double [ %2477, %2476 ], [ %2479, %2478 ]
  %2482 = fdiv double 1.000000e+00, %2481
  store double %2482, ptr %63, align 8, !tbaa !14
  %2483 = load i32, ptr %83, align 4, !tbaa !9
  %2484 = load i32, ptr %83, align 4, !tbaa !9
  %2485 = load i32, ptr %37, align 4, !tbaa !9
  %2486 = mul nsw i32 %2484, %2485
  %2487 = add nsw i32 %2483, %2486
  store i32 %2487, ptr %43, align 4, !tbaa !9
  %2488 = load double, ptr %63, align 8, !tbaa !14
  %2489 = load ptr, ptr %22, align 8, !tbaa !5
  %2490 = load i32, ptr %43, align 4, !tbaa !9
  %2491 = sext i32 %2490 to i64
  %2492 = getelementptr inbounds %struct.doublecomplex, ptr %2489, i64 %2491
  %2493 = getelementptr inbounds %struct.doublecomplex, ptr %2492, i32 0, i32 0
  %2494 = load double, ptr %2493, align 8, !tbaa !16
  %2495 = fmul double %2488, %2494
  %2496 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %2495, ptr %2496, align 8, !tbaa !16
  %2497 = load double, ptr %63, align 8, !tbaa !14
  %2498 = load ptr, ptr %22, align 8, !tbaa !5
  %2499 = load i32, ptr %43, align 4, !tbaa !9
  %2500 = sext i32 %2499 to i64
  %2501 = getelementptr inbounds %struct.doublecomplex, ptr %2498, i64 %2500
  %2502 = getelementptr inbounds %struct.doublecomplex, ptr %2501, i32 0, i32 1
  %2503 = load double, ptr %2502, align 8, !tbaa !20
  %2504 = fmul double %2497, %2503
  %2505 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double %2504, ptr %2505, align 8, !tbaa !20
  %2506 = load double, ptr %89, align 8, !tbaa !14
  %2507 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %2508 = load double, ptr %2507, align 8, !tbaa !16
  %2509 = fmul double %2506, %2508
  %2510 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  store double %2509, ptr %2510, align 8, !tbaa !16
  %2511 = load double, ptr %89, align 8, !tbaa !14
  %2512 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %2513 = load double, ptr %2512, align 8, !tbaa !20
  %2514 = fmul double %2511, %2513
  %2515 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  store double %2514, ptr %2515, align 8, !tbaa !20
  %2516 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %2517 = load double, ptr %2516, align 8, !tbaa !16
  %2518 = getelementptr inbounds %struct.doublecomplex, ptr %92, i32 0, i32 0
  store double %2517, ptr %2518, align 8, !tbaa !16
  %2519 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %2520 = load double, ptr %2519, align 8, !tbaa !20
  %2521 = getelementptr inbounds %struct.doublecomplex, ptr %92, i32 0, i32 1
  store double %2520, ptr %2521, align 8, !tbaa !20
  %2522 = load i32, ptr %83, align 4, !tbaa !9
  %2523 = load i32, ptr %83, align 4, !tbaa !9
  %2524 = load i32, ptr %35, align 4, !tbaa !9
  %2525 = mul nsw i32 %2523, %2524
  %2526 = add nsw i32 %2522, %2525
  store i32 %2526, ptr %43, align 4, !tbaa !9
  %2527 = load double, ptr %63, align 8, !tbaa !14
  %2528 = load ptr, ptr %24, align 8, !tbaa !5
  %2529 = load i32, ptr %43, align 4, !tbaa !9
  %2530 = sext i32 %2529 to i64
  %2531 = getelementptr inbounds %struct.doublecomplex, ptr %2528, i64 %2530
  %2532 = getelementptr inbounds %struct.doublecomplex, ptr %2531, i32 0, i32 0
  %2533 = load double, ptr %2532, align 8, !tbaa !16
  %2534 = fmul double %2527, %2533
  %2535 = load double, ptr %90, align 8, !tbaa !14
  %2536 = fmul double %2534, %2535
  store double %2536, ptr %73, align 8, !tbaa !14
  %2537 = load double, ptr %73, align 8, !tbaa !14
  %2538 = load double, ptr %89, align 8, !tbaa !14
  %2539 = fmul double %2537, %2538
  store double %2539, ptr %85, align 8, !tbaa !14
  %2540 = load double, ptr %90, align 8, !tbaa !14
  %2541 = getelementptr inbounds %struct.doublecomplex, ptr %92, i32 0, i32 0
  %2542 = load double, ptr %2541, align 8, !tbaa !16
  %2543 = fmul double %2540, %2542
  %2544 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  store double %2543, ptr %2544, align 8, !tbaa !16
  %2545 = load double, ptr %90, align 8, !tbaa !14
  %2546 = getelementptr inbounds %struct.doublecomplex, ptr %92, i32 0, i32 1
  %2547 = load double, ptr %2546, align 8, !tbaa !20
  %2548 = fmul double %2545, %2547
  %2549 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  store double %2548, ptr %2549, align 8, !tbaa !20
  %2550 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %2551 = load double, ptr %2550, align 8, !tbaa !16
  %2552 = getelementptr inbounds %struct.doublecomplex, ptr %86, i32 0, i32 0
  store double %2551, ptr %2552, align 8, !tbaa !16
  %2553 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %2554 = load double, ptr %2553, align 8, !tbaa !20
  %2555 = getelementptr inbounds %struct.doublecomplex, ptr %86, i32 0, i32 1
  store double %2554, ptr %2555, align 8, !tbaa !20
  %2556 = load double, ptr %73, align 8, !tbaa !14
  %2557 = fcmp oge double %2556, 0.000000e+00
  br i1 %2557, label %2558, label %2560

2558:                                             ; preds = %2480
  %2559 = load double, ptr %73, align 8, !tbaa !14
  br label %2563

2560:                                             ; preds = %2480
  %2561 = load double, ptr %73, align 8, !tbaa !14
  %2562 = fneg double %2561
  br label %2563

2563:                                             ; preds = %2560, %2558
  %2564 = phi double [ %2559, %2558 ], [ %2562, %2560 ]
  %2565 = load double, ptr %93, align 8, !tbaa !14
  %2566 = fcmp oge double %2564, %2565
  br i1 %2566, label %2567, label %2579

2567:                                             ; preds = %2563
  %2568 = load double, ptr %85, align 8, !tbaa !14
  %2569 = fcmp oge double %2568, 0.000000e+00
  br i1 %2569, label %2570, label %2572

2570:                                             ; preds = %2567
  %2571 = load double, ptr %85, align 8, !tbaa !14
  br label %2575

2572:                                             ; preds = %2567
  %2573 = load double, ptr %85, align 8, !tbaa !14
  %2574 = fneg double %2573
  br label %2575

2575:                                             ; preds = %2572, %2570
  %2576 = phi double [ %2571, %2570 ], [ %2574, %2572 ]
  %2577 = load double, ptr %74, align 8, !tbaa !14
  %2578 = fcmp olt double %2576, %2577
  br label %2579

2579:                                             ; preds = %2575, %2563
  %2580 = phi i1 [ false, %2563 ], [ %2578, %2575 ]
  %2581 = zext i1 %2580 to i32
  store i32 %2581, ptr %98, align 4, !tbaa !9
  %2582 = getelementptr inbounds %struct.doublecomplex, ptr %92, i32 0, i32 0
  %2583 = load double, ptr %2582, align 8, !tbaa !16
  store double %2583, ptr %48, align 8, !tbaa !14
  %2584 = load double, ptr %48, align 8, !tbaa !14
  %2585 = fcmp oge double %2584, 0.000000e+00
  br i1 %2585, label %2586, label %2588

2586:                                             ; preds = %2579
  %2587 = load double, ptr %48, align 8, !tbaa !14
  br label %2591

2588:                                             ; preds = %2579
  %2589 = load double, ptr %48, align 8, !tbaa !14
  %2590 = fneg double %2589
  br label %2591

2591:                                             ; preds = %2588, %2586
  %2592 = phi double [ %2587, %2586 ], [ %2590, %2588 ]
  %2593 = call { double, double } @Cd(ptr noundef %92)
  %2594 = extractvalue { double, double } %2593, 0
  %2595 = extractvalue { double, double } %2593, 1
  store double %2595, ptr %49, align 8, !tbaa !14
  %2596 = load double, ptr %49, align 8, !tbaa !14
  %2597 = fcmp oge double %2596, 0.000000e+00
  br i1 %2597, label %2598, label %2600

2598:                                             ; preds = %2591
  %2599 = load double, ptr %49, align 8, !tbaa !14
  br label %2603

2600:                                             ; preds = %2591
  %2601 = load double, ptr %49, align 8, !tbaa !14
  %2602 = fneg double %2601
  br label %2603

2603:                                             ; preds = %2600, %2598
  %2604 = phi double [ %2599, %2598 ], [ %2602, %2600 ]
  %2605 = fadd double %2592, %2604
  %2606 = load double, ptr %93, align 8, !tbaa !14
  %2607 = fcmp oge double %2605, %2606
  br i1 %2607, label %2608, label %2635

2608:                                             ; preds = %2603
  %2609 = getelementptr inbounds %struct.doublecomplex, ptr %86, i32 0, i32 0
  %2610 = load double, ptr %2609, align 8, !tbaa !16
  store double %2610, ptr %50, align 8, !tbaa !14
  %2611 = load double, ptr %50, align 8, !tbaa !14
  %2612 = fcmp oge double %2611, 0.000000e+00
  br i1 %2612, label %2613, label %2615

2613:                                             ; preds = %2608
  %2614 = load double, ptr %50, align 8, !tbaa !14
  br label %2618

2615:                                             ; preds = %2608
  %2616 = load double, ptr %50, align 8, !tbaa !14
  %2617 = fneg double %2616
  br label %2618

2618:                                             ; preds = %2615, %2613
  %2619 = phi double [ %2614, %2613 ], [ %2617, %2615 ]
  %2620 = call { double, double } @Cd(ptr noundef %86)
  %2621 = extractvalue { double, double } %2620, 0
  %2622 = extractvalue { double, double } %2620, 1
  store double %2622, ptr %51, align 8, !tbaa !14
  %2623 = load double, ptr %51, align 8, !tbaa !14
  %2624 = fcmp oge double %2623, 0.000000e+00
  br i1 %2624, label %2625, label %2627

2625:                                             ; preds = %2618
  %2626 = load double, ptr %51, align 8, !tbaa !14
  br label %2630

2627:                                             ; preds = %2618
  %2628 = load double, ptr %51, align 8, !tbaa !14
  %2629 = fneg double %2628
  br label %2630

2630:                                             ; preds = %2627, %2625
  %2631 = phi double [ %2626, %2625 ], [ %2629, %2627 ]
  %2632 = fadd double %2619, %2631
  %2633 = load double, ptr %74, align 8, !tbaa !14
  %2634 = fcmp olt double %2632, %2633
  br label %2635

2635:                                             ; preds = %2630, %2603
  %2636 = phi i1 [ false, %2603 ], [ %2634, %2630 ]
  %2637 = zext i1 %2636 to i32
  store i32 %2637, ptr %99, align 4, !tbaa !9
  store double 1.000000e+00, ptr %70, align 8, !tbaa !14
  %2638 = load i32, ptr %98, align 4, !tbaa !9
  %2639 = icmp ne i32 %2638, 0
  br i1 %2639, label %2640, label %2662

2640:                                             ; preds = %2635
  %2641 = load double, ptr %74, align 8, !tbaa !14
  %2642 = load double, ptr %73, align 8, !tbaa !14
  %2643 = fcmp oge double %2642, 0.000000e+00
  br i1 %2643, label %2644, label %2646

2644:                                             ; preds = %2640
  %2645 = load double, ptr %73, align 8, !tbaa !14
  br label %2649

2646:                                             ; preds = %2640
  %2647 = load double, ptr %73, align 8, !tbaa !14
  %2648 = fneg double %2647
  br label %2649

2649:                                             ; preds = %2646, %2644
  %2650 = phi double [ %2645, %2644 ], [ %2648, %2646 ]
  %2651 = fdiv double %2641, %2650
  %2652 = load double, ptr %76, align 8, !tbaa !14
  %2653 = load double, ptr %97, align 8, !tbaa !14
  %2654 = fcmp ole double %2652, %2653
  br i1 %2654, label %2655, label %2657

2655:                                             ; preds = %2649
  %2656 = load double, ptr %76, align 8, !tbaa !14
  br label %2659

2657:                                             ; preds = %2649
  %2658 = load double, ptr %97, align 8, !tbaa !14
  br label %2659

2659:                                             ; preds = %2657, %2655
  %2660 = phi double [ %2656, %2655 ], [ %2658, %2657 ]
  %2661 = fmul double %2651, %2660
  store double %2661, ptr %70, align 8, !tbaa !14
  br label %2662

2662:                                             ; preds = %2659, %2635
  %2663 = load i32, ptr %99, align 4, !tbaa !9
  %2664 = icmp ne i32 %2663, 0
  br i1 %2664, label %2665, label %2712

2665:                                             ; preds = %2662
  %2666 = load double, ptr %70, align 8, !tbaa !14
  store double %2666, ptr %50, align 8, !tbaa !14
  %2667 = load double, ptr %74, align 8, !tbaa !14
  %2668 = getelementptr inbounds %struct.doublecomplex, ptr %92, i32 0, i32 0
  %2669 = load double, ptr %2668, align 8, !tbaa !16
  store double %2669, ptr %48, align 8, !tbaa !14
  %2670 = load double, ptr %48, align 8, !tbaa !14
  %2671 = fcmp oge double %2670, 0.000000e+00
  br i1 %2671, label %2672, label %2674

2672:                                             ; preds = %2665
  %2673 = load double, ptr %48, align 8, !tbaa !14
  br label %2677

2674:                                             ; preds = %2665
  %2675 = load double, ptr %48, align 8, !tbaa !14
  %2676 = fneg double %2675
  br label %2677

2677:                                             ; preds = %2674, %2672
  %2678 = phi double [ %2673, %2672 ], [ %2676, %2674 ]
  %2679 = call { double, double } @Cd(ptr noundef %92)
  %2680 = extractvalue { double, double } %2679, 0
  %2681 = extractvalue { double, double } %2679, 1
  store double %2681, ptr %49, align 8, !tbaa !14
  %2682 = load double, ptr %49, align 8, !tbaa !14
  %2683 = fcmp oge double %2682, 0.000000e+00
  br i1 %2683, label %2684, label %2686

2684:                                             ; preds = %2677
  %2685 = load double, ptr %49, align 8, !tbaa !14
  br label %2689

2686:                                             ; preds = %2677
  %2687 = load double, ptr %49, align 8, !tbaa !14
  %2688 = fneg double %2687
  br label %2689

2689:                                             ; preds = %2686, %2684
  %2690 = phi double [ %2685, %2684 ], [ %2688, %2686 ]
  %2691 = fadd double %2678, %2690
  %2692 = fdiv double %2667, %2691
  %2693 = load double, ptr %77, align 8, !tbaa !14
  %2694 = load double, ptr %97, align 8, !tbaa !14
  %2695 = fcmp ole double %2693, %2694
  br i1 %2695, label %2696, label %2698

2696:                                             ; preds = %2689
  %2697 = load double, ptr %77, align 8, !tbaa !14
  br label %2700

2698:                                             ; preds = %2689
  %2699 = load double, ptr %97, align 8, !tbaa !14
  br label %2700

2700:                                             ; preds = %2698, %2696
  %2701 = phi double [ %2697, %2696 ], [ %2699, %2698 ]
  %2702 = fmul double %2692, %2701
  store double %2702, ptr %51, align 8, !tbaa !14
  %2703 = load double, ptr %50, align 8, !tbaa !14
  %2704 = load double, ptr %51, align 8, !tbaa !14
  %2705 = fcmp oge double %2703, %2704
  br i1 %2705, label %2706, label %2708

2706:                                             ; preds = %2700
  %2707 = load double, ptr %50, align 8, !tbaa !14
  br label %2710

2708:                                             ; preds = %2700
  %2709 = load double, ptr %51, align 8, !tbaa !14
  br label %2710

2710:                                             ; preds = %2708, %2706
  %2711 = phi double [ %2707, %2706 ], [ %2709, %2708 ]
  store double %2711, ptr %70, align 8, !tbaa !14
  br label %2712

2712:                                             ; preds = %2710, %2662
  %2713 = load i32, ptr %98, align 4, !tbaa !9
  %2714 = icmp ne i32 %2713, 0
  br i1 %2714, label %2718, label %2715

2715:                                             ; preds = %2712
  %2716 = load i32, ptr %99, align 4, !tbaa !9
  %2717 = icmp ne i32 %2716, 0
  br i1 %2717, label %2718, label %2843

2718:                                             ; preds = %2715, %2712
  store double 1.000000e+00, ptr %52, align 8, !tbaa !14
  %2719 = load double, ptr %85, align 8, !tbaa !14
  %2720 = fcmp oge double %2719, 0.000000e+00
  br i1 %2720, label %2721, label %2723

2721:                                             ; preds = %2718
  %2722 = load double, ptr %85, align 8, !tbaa !14
  br label %2726

2723:                                             ; preds = %2718
  %2724 = load double, ptr %85, align 8, !tbaa !14
  %2725 = fneg double %2724
  br label %2726

2726:                                             ; preds = %2723, %2721
  %2727 = phi double [ %2722, %2721 ], [ %2725, %2723 ]
  store double %2727, ptr %53, align 8, !tbaa !14
  %2728 = load double, ptr %52, align 8, !tbaa !14
  %2729 = load double, ptr %53, align 8, !tbaa !14
  %2730 = fcmp oge double %2728, %2729
  br i1 %2730, label %2731, label %2733

2731:                                             ; preds = %2726
  %2732 = load double, ptr %52, align 8, !tbaa !14
  br label %2735

2733:                                             ; preds = %2726
  %2734 = load double, ptr %53, align 8, !tbaa !14
  br label %2735

2735:                                             ; preds = %2733, %2731
  %2736 = phi double [ %2732, %2731 ], [ %2734, %2733 ]
  store double %2736, ptr %52, align 8, !tbaa !14
  %2737 = getelementptr inbounds %struct.doublecomplex, ptr %86, i32 0, i32 0
  %2738 = load double, ptr %2737, align 8, !tbaa !16
  store double %2738, ptr %48, align 8, !tbaa !14
  %2739 = load double, ptr %48, align 8, !tbaa !14
  %2740 = fcmp oge double %2739, 0.000000e+00
  br i1 %2740, label %2741, label %2743

2741:                                             ; preds = %2735
  %2742 = load double, ptr %48, align 8, !tbaa !14
  br label %2746

2743:                                             ; preds = %2735
  %2744 = load double, ptr %48, align 8, !tbaa !14
  %2745 = fneg double %2744
  br label %2746

2746:                                             ; preds = %2743, %2741
  %2747 = phi double [ %2742, %2741 ], [ %2745, %2743 ]
  %2748 = call { double, double } @Cd(ptr noundef %86)
  %2749 = extractvalue { double, double } %2748, 0
  %2750 = extractvalue { double, double } %2748, 1
  store double %2750, ptr %49, align 8, !tbaa !14
  %2751 = load double, ptr %49, align 8, !tbaa !14
  %2752 = fcmp oge double %2751, 0.000000e+00
  br i1 %2752, label %2753, label %2755

2753:                                             ; preds = %2746
  %2754 = load double, ptr %49, align 8, !tbaa !14
  br label %2758

2755:                                             ; preds = %2746
  %2756 = load double, ptr %49, align 8, !tbaa !14
  %2757 = fneg double %2756
  br label %2758

2758:                                             ; preds = %2755, %2753
  %2759 = phi double [ %2754, %2753 ], [ %2757, %2755 ]
  %2760 = fadd double %2747, %2759
  store double %2760, ptr %53, align 8, !tbaa !14
  %2761 = load double, ptr %70, align 8, !tbaa !14
  store double %2761, ptr %50, align 8, !tbaa !14
  %2762 = load double, ptr %93, align 8, !tbaa !14
  %2763 = load double, ptr %52, align 8, !tbaa !14
  %2764 = load double, ptr %53, align 8, !tbaa !14
  %2765 = fcmp oge double %2763, %2764
  br i1 %2765, label %2766, label %2768

2766:                                             ; preds = %2758
  %2767 = load double, ptr %52, align 8, !tbaa !14
  br label %2770

2768:                                             ; preds = %2758
  %2769 = load double, ptr %53, align 8, !tbaa !14
  br label %2770

2770:                                             ; preds = %2768, %2766
  %2771 = phi double [ %2767, %2766 ], [ %2769, %2768 ]
  %2772 = fmul double %2762, %2771
  %2773 = fdiv double 1.000000e+00, %2772
  store double %2773, ptr %51, align 8, !tbaa !14
  %2774 = load double, ptr %50, align 8, !tbaa !14
  %2775 = load double, ptr %51, align 8, !tbaa !14
  %2776 = fcmp ole double %2774, %2775
  br i1 %2776, label %2777, label %2779

2777:                                             ; preds = %2770
  %2778 = load double, ptr %50, align 8, !tbaa !14
  br label %2781

2779:                                             ; preds = %2770
  %2780 = load double, ptr %51, align 8, !tbaa !14
  br label %2781

2781:                                             ; preds = %2779, %2777
  %2782 = phi double [ %2778, %2777 ], [ %2780, %2779 ]
  store double %2782, ptr %70, align 8, !tbaa !14
  %2783 = load i32, ptr %98, align 4, !tbaa !9
  %2784 = icmp ne i32 %2783, 0
  br i1 %2784, label %2785, label %2791

2785:                                             ; preds = %2781
  %2786 = load double, ptr %89, align 8, !tbaa !14
  %2787 = load double, ptr %70, align 8, !tbaa !14
  %2788 = load double, ptr %73, align 8, !tbaa !14
  %2789 = fmul double %2787, %2788
  %2790 = fmul double %2786, %2789
  store double %2790, ptr %85, align 8, !tbaa !14
  br label %2795

2791:                                             ; preds = %2781
  %2792 = load double, ptr %70, align 8, !tbaa !14
  %2793 = load double, ptr %85, align 8, !tbaa !14
  %2794 = fmul double %2792, %2793
  store double %2794, ptr %85, align 8, !tbaa !14
  br label %2795

2795:                                             ; preds = %2791, %2785
  %2796 = load i32, ptr %99, align 4, !tbaa !9
  %2797 = icmp ne i32 %2796, 0
  br i1 %2797, label %2798, label %2825

2798:                                             ; preds = %2795
  %2799 = load double, ptr %70, align 8, !tbaa !14
  %2800 = getelementptr inbounds %struct.doublecomplex, ptr %92, i32 0, i32 0
  %2801 = load double, ptr %2800, align 8, !tbaa !16
  %2802 = fmul double %2799, %2801
  %2803 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %2802, ptr %2803, align 8, !tbaa !16
  %2804 = load double, ptr %70, align 8, !tbaa !14
  %2805 = getelementptr inbounds %struct.doublecomplex, ptr %92, i32 0, i32 1
  %2806 = load double, ptr %2805, align 8, !tbaa !20
  %2807 = fmul double %2804, %2806
  %2808 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double %2807, ptr %2808, align 8, !tbaa !20
  %2809 = load double, ptr %90, align 8, !tbaa !14
  %2810 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %2811 = load double, ptr %2810, align 8, !tbaa !16
  %2812 = fmul double %2809, %2811
  %2813 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  store double %2812, ptr %2813, align 8, !tbaa !16
  %2814 = load double, ptr %90, align 8, !tbaa !14
  %2815 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %2816 = load double, ptr %2815, align 8, !tbaa !20
  %2817 = fmul double %2814, %2816
  %2818 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  store double %2817, ptr %2818, align 8, !tbaa !20
  %2819 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %2820 = load double, ptr %2819, align 8, !tbaa !16
  %2821 = getelementptr inbounds %struct.doublecomplex, ptr %86, i32 0, i32 0
  store double %2820, ptr %2821, align 8, !tbaa !16
  %2822 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %2823 = load double, ptr %2822, align 8, !tbaa !20
  %2824 = getelementptr inbounds %struct.doublecomplex, ptr %86, i32 0, i32 1
  store double %2823, ptr %2824, align 8, !tbaa !20
  br label %2842

2825:                                             ; preds = %2795
  %2826 = load double, ptr %70, align 8, !tbaa !14
  %2827 = getelementptr inbounds %struct.doublecomplex, ptr %86, i32 0, i32 0
  %2828 = load double, ptr %2827, align 8, !tbaa !16
  %2829 = fmul double %2826, %2828
  %2830 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  store double %2829, ptr %2830, align 8, !tbaa !16
  %2831 = load double, ptr %70, align 8, !tbaa !14
  %2832 = getelementptr inbounds %struct.doublecomplex, ptr %86, i32 0, i32 1
  %2833 = load double, ptr %2832, align 8, !tbaa !20
  %2834 = fmul double %2831, %2833
  %2835 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  store double %2834, ptr %2835, align 8, !tbaa !20
  %2836 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %2837 = load double, ptr %2836, align 8, !tbaa !16
  %2838 = getelementptr inbounds %struct.doublecomplex, ptr %86, i32 0, i32 0
  store double %2837, ptr %2838, align 8, !tbaa !16
  %2839 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %2840 = load double, ptr %2839, align 8, !tbaa !20
  %2841 = getelementptr inbounds %struct.doublecomplex, ptr %86, i32 0, i32 1
  store double %2840, ptr %2841, align 8, !tbaa !20
  br label %2842

2842:                                             ; preds = %2825, %2798
  br label %2843

2843:                                             ; preds = %2842, %2715
  %2844 = load double, ptr %85, align 8, !tbaa !14
  %2845 = fcmp oge double %2844, 0.000000e+00
  br i1 %2845, label %2846, label %2848

2846:                                             ; preds = %2843
  %2847 = load double, ptr %85, align 8, !tbaa !14
  br label %2851

2848:                                             ; preds = %2843
  %2849 = load double, ptr %85, align 8, !tbaa !14
  %2850 = fneg double %2849
  br label %2851

2851:                                             ; preds = %2848, %2846
  %2852 = phi double [ %2847, %2846 ], [ %2850, %2848 ]
  store double %2852, ptr %82, align 8, !tbaa !14
  %2853 = getelementptr inbounds %struct.doublecomplex, ptr %86, i32 0, i32 0
  %2854 = load double, ptr %2853, align 8, !tbaa !16
  store double %2854, ptr %48, align 8, !tbaa !14
  %2855 = load double, ptr %48, align 8, !tbaa !14
  %2856 = fcmp oge double %2855, 0.000000e+00
  br i1 %2856, label %2857, label %2859

2857:                                             ; preds = %2851
  %2858 = load double, ptr %48, align 8, !tbaa !14
  br label %2862

2859:                                             ; preds = %2851
  %2860 = load double, ptr %48, align 8, !tbaa !14
  %2861 = fneg double %2860
  br label %2862

2862:                                             ; preds = %2859, %2857
  %2863 = phi double [ %2858, %2857 ], [ %2861, %2859 ]
  %2864 = call { double, double } @Cd(ptr noundef %86)
  %2865 = extractvalue { double, double } %2864, 0
  %2866 = extractvalue { double, double } %2864, 1
  store double %2866, ptr %49, align 8, !tbaa !14
  %2867 = load double, ptr %49, align 8, !tbaa !14
  %2868 = fcmp oge double %2867, 0.000000e+00
  br i1 %2868, label %2869, label %2871

2869:                                             ; preds = %2862
  %2870 = load double, ptr %49, align 8, !tbaa !14
  br label %2874

2871:                                             ; preds = %2862
  %2872 = load double, ptr %49, align 8, !tbaa !14
  %2873 = fneg double %2872
  br label %2874

2874:                                             ; preds = %2871, %2869
  %2875 = phi double [ %2870, %2869 ], [ %2873, %2871 ]
  %2876 = fadd double %2863, %2875
  store double %2876, ptr %84, align 8, !tbaa !14
  store double 1.000000e+00, ptr %66, align 8, !tbaa !14
  %2877 = load ptr, ptr %21, align 8, !tbaa !5
  %2878 = load i32, ptr %2877, align 4, !tbaa !9
  store i32 %2878, ptr %43, align 4, !tbaa !9
  store i32 1, ptr %91, align 4, !tbaa !9
  br label %2879

2879:                                             ; preds = %2895, %2874
  %2880 = load i32, ptr %91, align 4, !tbaa !9
  %2881 = load i32, ptr %43, align 4, !tbaa !9
  %2882 = icmp sle i32 %2880, %2881
  br i1 %2882, label %2883, label %2898

2883:                                             ; preds = %2879
  %2884 = load i32, ptr %91, align 4, !tbaa !9
  store i32 %2884, ptr %44, align 4, !tbaa !9
  %2885 = load ptr, ptr %32, align 8, !tbaa !5
  %2886 = load i32, ptr %44, align 4, !tbaa !9
  %2887 = sext i32 %2886 to i64
  %2888 = getelementptr inbounds %struct.doublecomplex, ptr %2885, i64 %2887
  %2889 = getelementptr inbounds %struct.doublecomplex, ptr %2888, i32 0, i32 0
  store double 0.000000e+00, ptr %2889, align 8, !tbaa !16
  %2890 = load ptr, ptr %32, align 8, !tbaa !5
  %2891 = load i32, ptr %44, align 4, !tbaa !9
  %2892 = sext i32 %2891 to i64
  %2893 = getelementptr inbounds %struct.doublecomplex, ptr %2890, i64 %2892
  %2894 = getelementptr inbounds %struct.doublecomplex, ptr %2893, i32 0, i32 1
  store double 0.000000e+00, ptr %2894, align 8, !tbaa !20
  br label %2895

2895:                                             ; preds = %2883
  %2896 = load i32, ptr %91, align 4, !tbaa !9
  %2897 = add nsw i32 %2896, 1
  store i32 %2897, ptr %91, align 4, !tbaa !9
  br label %2879, !llvm.loop !32

2898:                                             ; preds = %2879
  %2899 = load i32, ptr %83, align 4, !tbaa !9
  store i32 %2899, ptr %43, align 4, !tbaa !9
  %2900 = load ptr, ptr %32, align 8, !tbaa !5
  %2901 = load i32, ptr %43, align 4, !tbaa !9
  %2902 = sext i32 %2901 to i64
  %2903 = getelementptr inbounds %struct.doublecomplex, ptr %2900, i64 %2902
  %2904 = getelementptr inbounds %struct.doublecomplex, ptr %2903, i32 0, i32 0
  store double 1.000000e+00, ptr %2904, align 8, !tbaa !16
  %2905 = load ptr, ptr %32, align 8, !tbaa !5
  %2906 = load i32, ptr %43, align 4, !tbaa !9
  %2907 = sext i32 %2906 to i64
  %2908 = getelementptr inbounds %struct.doublecomplex, ptr %2905, i64 %2907
  %2909 = getelementptr inbounds %struct.doublecomplex, ptr %2908, i32 0, i32 1
  store double 0.000000e+00, ptr %2909, align 8, !tbaa !20
  %2910 = load double, ptr %100, align 8, !tbaa !14
  %2911 = load double, ptr %82, align 8, !tbaa !14
  %2912 = fmul double %2910, %2911
  %2913 = load double, ptr %76, align 8, !tbaa !14
  %2914 = fmul double %2912, %2913
  store double %2914, ptr %48, align 8, !tbaa !14
  %2915 = load double, ptr %100, align 8, !tbaa !14
  %2916 = load double, ptr %84, align 8, !tbaa !14
  %2917 = fmul double %2915, %2916
  %2918 = load double, ptr %77, align 8, !tbaa !14
  %2919 = fmul double %2917, %2918
  store double %2919, ptr %49, align 8, !tbaa !14
  %2920 = load double, ptr %48, align 8, !tbaa !14
  %2921 = load double, ptr %49, align 8, !tbaa !14
  %2922 = fcmp oge double %2920, %2921
  br i1 %2922, label %2923, label %2925

2923:                                             ; preds = %2898
  %2924 = load double, ptr %48, align 8, !tbaa !14
  br label %2927

2925:                                             ; preds = %2898
  %2926 = load double, ptr %49, align 8, !tbaa !14
  br label %2927

2927:                                             ; preds = %2925, %2923
  %2928 = phi double [ %2924, %2923 ], [ %2926, %2925 ]
  store double %2928, ptr %48, align 8, !tbaa !14
  %2929 = load double, ptr %48, align 8, !tbaa !14
  %2930 = load double, ptr %93, align 8, !tbaa !14
  %2931 = fcmp oge double %2929, %2930
  br i1 %2931, label %2932, label %2934

2932:                                             ; preds = %2927
  %2933 = load double, ptr %48, align 8, !tbaa !14
  br label %2936

2934:                                             ; preds = %2927
  %2935 = load double, ptr %93, align 8, !tbaa !14
  br label %2936

2936:                                             ; preds = %2934, %2932
  %2937 = phi double [ %2933, %2932 ], [ %2935, %2934 ]
  store double %2937, ptr %61, align 8, !tbaa !14
  %2938 = load i32, ptr %83, align 4, !tbaa !9
  %2939 = sub nsw i32 %2938, 1
  store i32 %2939, ptr %43, align 4, !tbaa !9
  store i32 1, ptr %91, align 4, !tbaa !9
  br label %2940

2940:                                             ; preds = %3039, %2936
  %2941 = load i32, ptr %91, align 4, !tbaa !9
  %2942 = load i32, ptr %43, align 4, !tbaa !9
  %2943 = icmp sle i32 %2941, %2942
  br i1 %2943, label %2944, label %3042

2944:                                             ; preds = %2940
  %2945 = load i32, ptr %91, align 4, !tbaa !9
  store i32 %2945, ptr %44, align 4, !tbaa !9
  %2946 = load i32, ptr %91, align 4, !tbaa !9
  %2947 = load i32, ptr %83, align 4, !tbaa !9
  %2948 = load i32, ptr %37, align 4, !tbaa !9
  %2949 = mul nsw i32 %2947, %2948
  %2950 = add nsw i32 %2946, %2949
  store i32 %2950, ptr %45, align 4, !tbaa !9
  %2951 = load double, ptr %85, align 8, !tbaa !14
  %2952 = load ptr, ptr %22, align 8, !tbaa !5
  %2953 = load i32, ptr %45, align 4, !tbaa !9
  %2954 = sext i32 %2953 to i64
  %2955 = getelementptr inbounds %struct.doublecomplex, ptr %2952, i64 %2954
  %2956 = getelementptr inbounds %struct.doublecomplex, ptr %2955, i32 0, i32 0
  %2957 = load double, ptr %2956, align 8, !tbaa !16
  %2958 = fmul double %2951, %2957
  %2959 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %2958, ptr %2959, align 8, !tbaa !16
  %2960 = load double, ptr %85, align 8, !tbaa !14
  %2961 = load ptr, ptr %22, align 8, !tbaa !5
  %2962 = load i32, ptr %45, align 4, !tbaa !9
  %2963 = sext i32 %2962 to i64
  %2964 = getelementptr inbounds %struct.doublecomplex, ptr %2961, i64 %2963
  %2965 = getelementptr inbounds %struct.doublecomplex, ptr %2964, i32 0, i32 1
  %2966 = load double, ptr %2965, align 8, !tbaa !20
  %2967 = fmul double %2960, %2966
  %2968 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double %2967, ptr %2968, align 8, !tbaa !20
  %2969 = load i32, ptr %91, align 4, !tbaa !9
  %2970 = load i32, ptr %83, align 4, !tbaa !9
  %2971 = load i32, ptr %35, align 4, !tbaa !9
  %2972 = mul nsw i32 %2970, %2971
  %2973 = add nsw i32 %2969, %2972
  store i32 %2973, ptr %46, align 4, !tbaa !9
  %2974 = getelementptr inbounds %struct.doublecomplex, ptr %86, i32 0, i32 0
  %2975 = load double, ptr %2974, align 8, !tbaa !16
  %2976 = load ptr, ptr %24, align 8, !tbaa !5
  %2977 = load i32, ptr %46, align 4, !tbaa !9
  %2978 = sext i32 %2977 to i64
  %2979 = getelementptr inbounds %struct.doublecomplex, ptr %2976, i64 %2978
  %2980 = getelementptr inbounds %struct.doublecomplex, ptr %2979, i32 0, i32 0
  %2981 = load double, ptr %2980, align 8, !tbaa !16
  %2982 = getelementptr inbounds %struct.doublecomplex, ptr %86, i32 0, i32 1
  %2983 = load double, ptr %2982, align 8, !tbaa !20
  %2984 = load ptr, ptr %24, align 8, !tbaa !5
  %2985 = load i32, ptr %46, align 4, !tbaa !9
  %2986 = sext i32 %2985 to i64
  %2987 = getelementptr inbounds %struct.doublecomplex, ptr %2984, i64 %2986
  %2988 = getelementptr inbounds %struct.doublecomplex, ptr %2987, i32 0, i32 1
  %2989 = load double, ptr %2988, align 8, !tbaa !20
  %2990 = fmul double %2983, %2989
  %2991 = fneg double %2990
  %2992 = call double @llvm.fmuladd.f64(double %2975, double %2981, double %2991)
  %2993 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  store double %2992, ptr %2993, align 8, !tbaa !16
  %2994 = getelementptr inbounds %struct.doublecomplex, ptr %86, i32 0, i32 0
  %2995 = load double, ptr %2994, align 8, !tbaa !16
  %2996 = load ptr, ptr %24, align 8, !tbaa !5
  %2997 = load i32, ptr %46, align 4, !tbaa !9
  %2998 = sext i32 %2997 to i64
  %2999 = getelementptr inbounds %struct.doublecomplex, ptr %2996, i64 %2998
  %3000 = getelementptr inbounds %struct.doublecomplex, ptr %2999, i32 0, i32 1
  %3001 = load double, ptr %3000, align 8, !tbaa !20
  %3002 = getelementptr inbounds %struct.doublecomplex, ptr %86, i32 0, i32 1
  %3003 = load double, ptr %3002, align 8, !tbaa !20
  %3004 = load ptr, ptr %24, align 8, !tbaa !5
  %3005 = load i32, ptr %46, align 4, !tbaa !9
  %3006 = sext i32 %3005 to i64
  %3007 = getelementptr inbounds %struct.doublecomplex, ptr %3004, i64 %3006
  %3008 = getelementptr inbounds %struct.doublecomplex, ptr %3007, i32 0, i32 0
  %3009 = load double, ptr %3008, align 8, !tbaa !16
  %3010 = fmul double %3003, %3009
  %3011 = call double @llvm.fmuladd.f64(double %2995, double %3001, double %3010)
  %3012 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  store double %3011, ptr %3012, align 8, !tbaa !20
  %3013 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %3014 = load double, ptr %3013, align 8, !tbaa !16
  %3015 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %3016 = load double, ptr %3015, align 8, !tbaa !16
  %3017 = fsub double %3014, %3016
  %3018 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  store double %3017, ptr %3018, align 8, !tbaa !16
  %3019 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %3020 = load double, ptr %3019, align 8, !tbaa !20
  %3021 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %3022 = load double, ptr %3021, align 8, !tbaa !20
  %3023 = fsub double %3020, %3022
  %3024 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  store double %3023, ptr %3024, align 8, !tbaa !20
  %3025 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %3026 = load double, ptr %3025, align 8, !tbaa !16
  %3027 = load ptr, ptr %32, align 8, !tbaa !5
  %3028 = load i32, ptr %44, align 4, !tbaa !9
  %3029 = sext i32 %3028 to i64
  %3030 = getelementptr inbounds %struct.doublecomplex, ptr %3027, i64 %3029
  %3031 = getelementptr inbounds %struct.doublecomplex, ptr %3030, i32 0, i32 0
  store double %3026, ptr %3031, align 8, !tbaa !16
  %3032 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %3033 = load double, ptr %3032, align 8, !tbaa !20
  %3034 = load ptr, ptr %32, align 8, !tbaa !5
  %3035 = load i32, ptr %44, align 4, !tbaa !9
  %3036 = sext i32 %3035 to i64
  %3037 = getelementptr inbounds %struct.doublecomplex, ptr %3034, i64 %3036
  %3038 = getelementptr inbounds %struct.doublecomplex, ptr %3037, i32 0, i32 1
  store double %3033, ptr %3038, align 8, !tbaa !20
  br label %3039

3039:                                             ; preds = %2944
  %3040 = load i32, ptr %91, align 4, !tbaa !9
  %3041 = add nsw i32 %3040, 1
  store i32 %3041, ptr %91, align 4, !tbaa !9
  br label %2940, !llvm.loop !33

3042:                                             ; preds = %2940
  %3043 = load i32, ptr %83, align 4, !tbaa !9
  store i32 %3043, ptr %43, align 4, !tbaa !9
  %3044 = load ptr, ptr %32, align 8, !tbaa !5
  %3045 = load i32, ptr %43, align 4, !tbaa !9
  %3046 = sext i32 %3045 to i64
  %3047 = getelementptr inbounds %struct.doublecomplex, ptr %3044, i64 %3046
  %3048 = getelementptr inbounds %struct.doublecomplex, ptr %3047, i32 0, i32 0
  store double 1.000000e+00, ptr %3048, align 8, !tbaa !16
  %3049 = load ptr, ptr %32, align 8, !tbaa !5
  %3050 = load i32, ptr %43, align 4, !tbaa !9
  %3051 = sext i32 %3050 to i64
  %3052 = getelementptr inbounds %struct.doublecomplex, ptr %3049, i64 %3051
  %3053 = getelementptr inbounds %struct.doublecomplex, ptr %3052, i32 0, i32 1
  store double 0.000000e+00, ptr %3053, align 8, !tbaa !20
  %3054 = load i32, ptr %83, align 4, !tbaa !9
  %3055 = sub nsw i32 %3054, 1
  store i32 %3055, ptr %69, align 4, !tbaa !9
  br label %3056

3056:                                             ; preds = %3740, %3042
  %3057 = load i32, ptr %69, align 4, !tbaa !9
  %3058 = icmp sge i32 %3057, 1
  br i1 %3058, label %3059, label %3743

3059:                                             ; preds = %3056
  %3060 = load i32, ptr %69, align 4, !tbaa !9
  %3061 = load i32, ptr %69, align 4, !tbaa !9
  %3062 = load i32, ptr %37, align 4, !tbaa !9
  %3063 = mul nsw i32 %3061, %3062
  %3064 = add nsw i32 %3060, %3063
  store i32 %3064, ptr %43, align 4, !tbaa !9
  %3065 = load double, ptr %85, align 8, !tbaa !14
  %3066 = load ptr, ptr %22, align 8, !tbaa !5
  %3067 = load i32, ptr %43, align 4, !tbaa !9
  %3068 = sext i32 %3067 to i64
  %3069 = getelementptr inbounds %struct.doublecomplex, ptr %3066, i64 %3068
  %3070 = getelementptr inbounds %struct.doublecomplex, ptr %3069, i32 0, i32 0
  %3071 = load double, ptr %3070, align 8, !tbaa !16
  %3072 = fmul double %3065, %3071
  %3073 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %3072, ptr %3073, align 8, !tbaa !16
  %3074 = load double, ptr %85, align 8, !tbaa !14
  %3075 = load ptr, ptr %22, align 8, !tbaa !5
  %3076 = load i32, ptr %43, align 4, !tbaa !9
  %3077 = sext i32 %3076 to i64
  %3078 = getelementptr inbounds %struct.doublecomplex, ptr %3075, i64 %3077
  %3079 = getelementptr inbounds %struct.doublecomplex, ptr %3078, i32 0, i32 1
  %3080 = load double, ptr %3079, align 8, !tbaa !20
  %3081 = fmul double %3074, %3080
  %3082 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double %3081, ptr %3082, align 8, !tbaa !20
  %3083 = load i32, ptr %69, align 4, !tbaa !9
  %3084 = load i32, ptr %69, align 4, !tbaa !9
  %3085 = load i32, ptr %35, align 4, !tbaa !9
  %3086 = mul nsw i32 %3084, %3085
  %3087 = add nsw i32 %3083, %3086
  store i32 %3087, ptr %44, align 4, !tbaa !9
  %3088 = getelementptr inbounds %struct.doublecomplex, ptr %86, i32 0, i32 0
  %3089 = load double, ptr %3088, align 8, !tbaa !16
  %3090 = load ptr, ptr %24, align 8, !tbaa !5
  %3091 = load i32, ptr %44, align 4, !tbaa !9
  %3092 = sext i32 %3091 to i64
  %3093 = getelementptr inbounds %struct.doublecomplex, ptr %3090, i64 %3092
  %3094 = getelementptr inbounds %struct.doublecomplex, ptr %3093, i32 0, i32 0
  %3095 = load double, ptr %3094, align 8, !tbaa !16
  %3096 = getelementptr inbounds %struct.doublecomplex, ptr %86, i32 0, i32 1
  %3097 = load double, ptr %3096, align 8, !tbaa !20
  %3098 = load ptr, ptr %24, align 8, !tbaa !5
  %3099 = load i32, ptr %44, align 4, !tbaa !9
  %3100 = sext i32 %3099 to i64
  %3101 = getelementptr inbounds %struct.doublecomplex, ptr %3098, i64 %3100
  %3102 = getelementptr inbounds %struct.doublecomplex, ptr %3101, i32 0, i32 1
  %3103 = load double, ptr %3102, align 8, !tbaa !20
  %3104 = fmul double %3097, %3103
  %3105 = fneg double %3104
  %3106 = call double @llvm.fmuladd.f64(double %3089, double %3095, double %3105)
  %3107 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  store double %3106, ptr %3107, align 8, !tbaa !16
  %3108 = getelementptr inbounds %struct.doublecomplex, ptr %86, i32 0, i32 0
  %3109 = load double, ptr %3108, align 8, !tbaa !16
  %3110 = load ptr, ptr %24, align 8, !tbaa !5
  %3111 = load i32, ptr %44, align 4, !tbaa !9
  %3112 = sext i32 %3111 to i64
  %3113 = getelementptr inbounds %struct.doublecomplex, ptr %3110, i64 %3112
  %3114 = getelementptr inbounds %struct.doublecomplex, ptr %3113, i32 0, i32 1
  %3115 = load double, ptr %3114, align 8, !tbaa !20
  %3116 = getelementptr inbounds %struct.doublecomplex, ptr %86, i32 0, i32 1
  %3117 = load double, ptr %3116, align 8, !tbaa !20
  %3118 = load ptr, ptr %24, align 8, !tbaa !5
  %3119 = load i32, ptr %44, align 4, !tbaa !9
  %3120 = sext i32 %3119 to i64
  %3121 = getelementptr inbounds %struct.doublecomplex, ptr %3118, i64 %3120
  %3122 = getelementptr inbounds %struct.doublecomplex, ptr %3121, i32 0, i32 0
  %3123 = load double, ptr %3122, align 8, !tbaa !16
  %3124 = fmul double %3117, %3123
  %3125 = call double @llvm.fmuladd.f64(double %3109, double %3115, double %3124)
  %3126 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  store double %3125, ptr %3126, align 8, !tbaa !20
  %3127 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %3128 = load double, ptr %3127, align 8, !tbaa !16
  %3129 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %3130 = load double, ptr %3129, align 8, !tbaa !16
  %3131 = fsub double %3128, %3130
  %3132 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  store double %3131, ptr %3132, align 8, !tbaa !16
  %3133 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %3134 = load double, ptr %3133, align 8, !tbaa !20
  %3135 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %3136 = load double, ptr %3135, align 8, !tbaa !20
  %3137 = fsub double %3134, %3136
  %3138 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  store double %3137, ptr %3138, align 8, !tbaa !20
  %3139 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %3140 = load double, ptr %3139, align 8, !tbaa !16
  %3141 = getelementptr inbounds %struct.doublecomplex, ptr %67, i32 0, i32 0
  store double %3140, ptr %3141, align 8, !tbaa !16
  %3142 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %3143 = load double, ptr %3142, align 8, !tbaa !20
  %3144 = getelementptr inbounds %struct.doublecomplex, ptr %67, i32 0, i32 1
  store double %3143, ptr %3144, align 8, !tbaa !20
  %3145 = getelementptr inbounds %struct.doublecomplex, ptr %67, i32 0, i32 0
  %3146 = load double, ptr %3145, align 8, !tbaa !16
  store double %3146, ptr %48, align 8, !tbaa !14
  %3147 = load double, ptr %48, align 8, !tbaa !14
  %3148 = fcmp oge double %3147, 0.000000e+00
  br i1 %3148, label %3149, label %3151

3149:                                             ; preds = %3059
  %3150 = load double, ptr %48, align 8, !tbaa !14
  br label %3154

3151:                                             ; preds = %3059
  %3152 = load double, ptr %48, align 8, !tbaa !14
  %3153 = fneg double %3152
  br label %3154

3154:                                             ; preds = %3151, %3149
  %3155 = phi double [ %3150, %3149 ], [ %3153, %3151 ]
  %3156 = call { double, double } @Cd(ptr noundef %67)
  %3157 = extractvalue { double, double } %3156, 0
  %3158 = extractvalue { double, double } %3156, 1
  store double %3158, ptr %49, align 8, !tbaa !14
  %3159 = load double, ptr %49, align 8, !tbaa !14
  %3160 = fcmp oge double %3159, 0.000000e+00
  br i1 %3160, label %3161, label %3163

3161:                                             ; preds = %3154
  %3162 = load double, ptr %49, align 8, !tbaa !14
  br label %3166

3163:                                             ; preds = %3154
  %3164 = load double, ptr %49, align 8, !tbaa !14
  %3165 = fneg double %3164
  br label %3166

3166:                                             ; preds = %3163, %3161
  %3167 = phi double [ %3162, %3161 ], [ %3165, %3163 ]
  %3168 = fadd double %3155, %3167
  %3169 = load double, ptr %61, align 8, !tbaa !14
  %3170 = fcmp ole double %3168, %3169
  br i1 %3170, label %3171, label %3181

3171:                                             ; preds = %3166
  %3172 = load double, ptr %61, align 8, !tbaa !14
  %3173 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  store double %3172, ptr %3173, align 8, !tbaa !16
  %3174 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  store double 0.000000e+00, ptr %3174, align 8, !tbaa !20
  %3175 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %3176 = load double, ptr %3175, align 8, !tbaa !16
  %3177 = getelementptr inbounds %struct.doublecomplex, ptr %67, i32 0, i32 0
  store double %3176, ptr %3177, align 8, !tbaa !16
  %3178 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %3179 = load double, ptr %3178, align 8, !tbaa !20
  %3180 = getelementptr inbounds %struct.doublecomplex, ptr %67, i32 0, i32 1
  store double %3179, ptr %3180, align 8, !tbaa !20
  br label %3181

3181:                                             ; preds = %3171, %3166
  %3182 = getelementptr inbounds %struct.doublecomplex, ptr %67, i32 0, i32 0
  %3183 = load double, ptr %3182, align 8, !tbaa !16
  store double %3183, ptr %48, align 8, !tbaa !14
  %3184 = load double, ptr %48, align 8, !tbaa !14
  %3185 = fcmp oge double %3184, 0.000000e+00
  br i1 %3185, label %3186, label %3188

3186:                                             ; preds = %3181
  %3187 = load double, ptr %48, align 8, !tbaa !14
  br label %3191

3188:                                             ; preds = %3181
  %3189 = load double, ptr %48, align 8, !tbaa !14
  %3190 = fneg double %3189
  br label %3191

3191:                                             ; preds = %3188, %3186
  %3192 = phi double [ %3187, %3186 ], [ %3190, %3188 ]
  %3193 = call { double, double } @Cd(ptr noundef %67)
  %3194 = extractvalue { double, double } %3193, 0
  %3195 = extractvalue { double, double } %3193, 1
  store double %3195, ptr %49, align 8, !tbaa !14
  %3196 = load double, ptr %49, align 8, !tbaa !14
  %3197 = fcmp oge double %3196, 0.000000e+00
  br i1 %3197, label %3198, label %3200

3198:                                             ; preds = %3191
  %3199 = load double, ptr %49, align 8, !tbaa !14
  br label %3203

3200:                                             ; preds = %3191
  %3201 = load double, ptr %49, align 8, !tbaa !14
  %3202 = fneg double %3201
  br label %3203

3203:                                             ; preds = %3200, %3198
  %3204 = phi double [ %3199, %3198 ], [ %3202, %3200 ]
  %3205 = fadd double %3192, %3204
  %3206 = fcmp olt double %3205, 1.000000e+00
  br i1 %3206, label %3207, label %3348

3207:                                             ; preds = %3203
  %3208 = load i32, ptr %69, align 4, !tbaa !9
  store i32 %3208, ptr %43, align 4, !tbaa !9
  %3209 = load ptr, ptr %32, align 8, !tbaa !5
  %3210 = load i32, ptr %43, align 4, !tbaa !9
  %3211 = sext i32 %3210 to i64
  %3212 = getelementptr inbounds %struct.doublecomplex, ptr %3209, i64 %3211
  %3213 = getelementptr inbounds %struct.doublecomplex, ptr %3212, i32 0, i32 0
  %3214 = load double, ptr %3213, align 8, !tbaa !16
  store double %3214, ptr %48, align 8, !tbaa !14
  %3215 = load double, ptr %48, align 8, !tbaa !14
  %3216 = fcmp oge double %3215, 0.000000e+00
  br i1 %3216, label %3217, label %3219

3217:                                             ; preds = %3207
  %3218 = load double, ptr %48, align 8, !tbaa !14
  br label %3222

3219:                                             ; preds = %3207
  %3220 = load double, ptr %48, align 8, !tbaa !14
  %3221 = fneg double %3220
  br label %3222

3222:                                             ; preds = %3219, %3217
  %3223 = phi double [ %3218, %3217 ], [ %3221, %3219 ]
  %3224 = load ptr, ptr %32, align 8, !tbaa !5
  %3225 = load i32, ptr %69, align 4, !tbaa !9
  %3226 = sext i32 %3225 to i64
  %3227 = getelementptr inbounds %struct.doublecomplex, ptr %3224, i64 %3226
  %3228 = call { double, double } @Cd(ptr noundef %3227)
  %3229 = extractvalue { double, double } %3228, 0
  %3230 = extractvalue { double, double } %3228, 1
  store double %3230, ptr %49, align 8, !tbaa !14
  %3231 = load double, ptr %49, align 8, !tbaa !14
  %3232 = fcmp oge double %3231, 0.000000e+00
  br i1 %3232, label %3233, label %3235

3233:                                             ; preds = %3222
  %3234 = load double, ptr %49, align 8, !tbaa !14
  br label %3238

3235:                                             ; preds = %3222
  %3236 = load double, ptr %49, align 8, !tbaa !14
  %3237 = fneg double %3236
  br label %3238

3238:                                             ; preds = %3235, %3233
  %3239 = phi double [ %3234, %3233 ], [ %3237, %3235 ]
  %3240 = fadd double %3223, %3239
  %3241 = load double, ptr %94, align 8, !tbaa !14
  %3242 = getelementptr inbounds %struct.doublecomplex, ptr %67, i32 0, i32 0
  %3243 = load double, ptr %3242, align 8, !tbaa !16
  store double %3243, ptr %50, align 8, !tbaa !14
  %3244 = load double, ptr %50, align 8, !tbaa !14
  %3245 = fcmp oge double %3244, 0.000000e+00
  br i1 %3245, label %3246, label %3248

3246:                                             ; preds = %3238
  %3247 = load double, ptr %50, align 8, !tbaa !14
  br label %3251

3248:                                             ; preds = %3238
  %3249 = load double, ptr %50, align 8, !tbaa !14
  %3250 = fneg double %3249
  br label %3251

3251:                                             ; preds = %3248, %3246
  %3252 = phi double [ %3247, %3246 ], [ %3250, %3248 ]
  %3253 = call { double, double } @Cd(ptr noundef %67)
  %3254 = extractvalue { double, double } %3253, 0
  %3255 = extractvalue { double, double } %3253, 1
  store double %3255, ptr %51, align 8, !tbaa !14
  %3256 = load double, ptr %51, align 8, !tbaa !14
  %3257 = fcmp oge double %3256, 0.000000e+00
  br i1 %3257, label %3258, label %3260

3258:                                             ; preds = %3251
  %3259 = load double, ptr %51, align 8, !tbaa !14
  br label %3263

3260:                                             ; preds = %3251
  %3261 = load double, ptr %51, align 8, !tbaa !14
  %3262 = fneg double %3261
  br label %3263

3263:                                             ; preds = %3260, %3258
  %3264 = phi double [ %3259, %3258 ], [ %3262, %3260 ]
  %3265 = fadd double %3252, %3264
  %3266 = fmul double %3241, %3265
  %3267 = fcmp oge double %3240, %3266
  br i1 %3267, label %3268, label %3347

3268:                                             ; preds = %3263
  %3269 = load i32, ptr %69, align 4, !tbaa !9
  store i32 %3269, ptr %43, align 4, !tbaa !9
  %3270 = load ptr, ptr %32, align 8, !tbaa !5
  %3271 = load i32, ptr %43, align 4, !tbaa !9
  %3272 = sext i32 %3271 to i64
  %3273 = getelementptr inbounds %struct.doublecomplex, ptr %3270, i64 %3272
  %3274 = getelementptr inbounds %struct.doublecomplex, ptr %3273, i32 0, i32 0
  %3275 = load double, ptr %3274, align 8, !tbaa !16
  store double %3275, ptr %48, align 8, !tbaa !14
  %3276 = load double, ptr %48, align 8, !tbaa !14
  %3277 = fcmp oge double %3276, 0.000000e+00
  br i1 %3277, label %3278, label %3280

3278:                                             ; preds = %3268
  %3279 = load double, ptr %48, align 8, !tbaa !14
  br label %3283

3280:                                             ; preds = %3268
  %3281 = load double, ptr %48, align 8, !tbaa !14
  %3282 = fneg double %3281
  br label %3283

3283:                                             ; preds = %3280, %3278
  %3284 = phi double [ %3279, %3278 ], [ %3282, %3280 ]
  %3285 = load ptr, ptr %32, align 8, !tbaa !5
  %3286 = load i32, ptr %69, align 4, !tbaa !9
  %3287 = sext i32 %3286 to i64
  %3288 = getelementptr inbounds %struct.doublecomplex, ptr %3285, i64 %3287
  %3289 = call { double, double } @Cd(ptr noundef %3288)
  %3290 = extractvalue { double, double } %3289, 0
  %3291 = extractvalue { double, double } %3289, 1
  store double %3291, ptr %49, align 8, !tbaa !14
  %3292 = load double, ptr %49, align 8, !tbaa !14
  %3293 = fcmp oge double %3292, 0.000000e+00
  br i1 %3293, label %3294, label %3296

3294:                                             ; preds = %3283
  %3295 = load double, ptr %49, align 8, !tbaa !14
  br label %3299

3296:                                             ; preds = %3283
  %3297 = load double, ptr %49, align 8, !tbaa !14
  %3298 = fneg double %3297
  br label %3299

3299:                                             ; preds = %3296, %3294
  %3300 = phi double [ %3295, %3294 ], [ %3298, %3296 ]
  %3301 = fadd double %3284, %3300
  %3302 = fdiv double 1.000000e+00, %3301
  store double %3302, ptr %63, align 8, !tbaa !14
  %3303 = load i32, ptr %83, align 4, !tbaa !9
  store i32 %3303, ptr %43, align 4, !tbaa !9
  store i32 1, ptr %91, align 4, !tbaa !9
  br label %3304

3304:                                             ; preds = %3343, %3299
  %3305 = load i32, ptr %91, align 4, !tbaa !9
  %3306 = load i32, ptr %43, align 4, !tbaa !9
  %3307 = icmp sle i32 %3305, %3306
  br i1 %3307, label %3308, label %3346

3308:                                             ; preds = %3304
  %3309 = load i32, ptr %91, align 4, !tbaa !9
  store i32 %3309, ptr %44, align 4, !tbaa !9
  %3310 = load i32, ptr %91, align 4, !tbaa !9
  store i32 %3310, ptr %45, align 4, !tbaa !9
  %3311 = load double, ptr %63, align 8, !tbaa !14
  %3312 = load ptr, ptr %32, align 8, !tbaa !5
  %3313 = load i32, ptr %45, align 4, !tbaa !9
  %3314 = sext i32 %3313 to i64
  %3315 = getelementptr inbounds %struct.doublecomplex, ptr %3312, i64 %3314
  %3316 = getelementptr inbounds %struct.doublecomplex, ptr %3315, i32 0, i32 0
  %3317 = load double, ptr %3316, align 8, !tbaa !16
  %3318 = fmul double %3311, %3317
  %3319 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  store double %3318, ptr %3319, align 8, !tbaa !16
  %3320 = load double, ptr %63, align 8, !tbaa !14
  %3321 = load ptr, ptr %32, align 8, !tbaa !5
  %3322 = load i32, ptr %45, align 4, !tbaa !9
  %3323 = sext i32 %3322 to i64
  %3324 = getelementptr inbounds %struct.doublecomplex, ptr %3321, i64 %3323
  %3325 = getelementptr inbounds %struct.doublecomplex, ptr %3324, i32 0, i32 1
  %3326 = load double, ptr %3325, align 8, !tbaa !20
  %3327 = fmul double %3320, %3326
  %3328 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  store double %3327, ptr %3328, align 8, !tbaa !20
  %3329 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %3330 = load double, ptr %3329, align 8, !tbaa !16
  %3331 = load ptr, ptr %32, align 8, !tbaa !5
  %3332 = load i32, ptr %44, align 4, !tbaa !9
  %3333 = sext i32 %3332 to i64
  %3334 = getelementptr inbounds %struct.doublecomplex, ptr %3331, i64 %3333
  %3335 = getelementptr inbounds %struct.doublecomplex, ptr %3334, i32 0, i32 0
  store double %3330, ptr %3335, align 8, !tbaa !16
  %3336 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %3337 = load double, ptr %3336, align 8, !tbaa !20
  %3338 = load ptr, ptr %32, align 8, !tbaa !5
  %3339 = load i32, ptr %44, align 4, !tbaa !9
  %3340 = sext i32 %3339 to i64
  %3341 = getelementptr inbounds %struct.doublecomplex, ptr %3338, i64 %3340
  %3342 = getelementptr inbounds %struct.doublecomplex, ptr %3341, i32 0, i32 1
  store double %3337, ptr %3342, align 8, !tbaa !20
  br label %3343

3343:                                             ; preds = %3308
  %3344 = load i32, ptr %91, align 4, !tbaa !9
  %3345 = add nsw i32 %3344, 1
  store i32 %3345, ptr %91, align 4, !tbaa !9
  br label %3304, !llvm.loop !34

3346:                                             ; preds = %3304
  br label %3347

3347:                                             ; preds = %3346, %3263
  br label %3348

3348:                                             ; preds = %3347, %3203
  %3349 = load i32, ptr %69, align 4, !tbaa !9
  store i32 %3349, ptr %43, align 4, !tbaa !9
  %3350 = load i32, ptr %69, align 4, !tbaa !9
  store i32 %3350, ptr %44, align 4, !tbaa !9
  %3351 = load ptr, ptr %32, align 8, !tbaa !5
  %3352 = load i32, ptr %44, align 4, !tbaa !9
  %3353 = sext i32 %3352 to i64
  %3354 = getelementptr inbounds %struct.doublecomplex, ptr %3351, i64 %3353
  %3355 = getelementptr inbounds %struct.doublecomplex, ptr %3354, i32 0, i32 0
  %3356 = load double, ptr %3355, align 8, !tbaa !16
  %3357 = fneg double %3356
  %3358 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %3357, ptr %3358, align 8, !tbaa !16
  %3359 = load ptr, ptr %32, align 8, !tbaa !5
  %3360 = load i32, ptr %44, align 4, !tbaa !9
  %3361 = sext i32 %3360 to i64
  %3362 = getelementptr inbounds %struct.doublecomplex, ptr %3359, i64 %3361
  %3363 = getelementptr inbounds %struct.doublecomplex, ptr %3362, i32 0, i32 1
  %3364 = load double, ptr %3363, align 8, !tbaa !20
  %3365 = fneg double %3364
  %3366 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double %3365, ptr %3366, align 8, !tbaa !20
  call void @zladiv_(ptr noundef %54, ptr noundef %55, ptr noundef %67)
  %3367 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %3368 = load double, ptr %3367, align 8, !tbaa !16
  %3369 = load ptr, ptr %32, align 8, !tbaa !5
  %3370 = load i32, ptr %43, align 4, !tbaa !9
  %3371 = sext i32 %3370 to i64
  %3372 = getelementptr inbounds %struct.doublecomplex, ptr %3369, i64 %3371
  %3373 = getelementptr inbounds %struct.doublecomplex, ptr %3372, i32 0, i32 0
  store double %3368, ptr %3373, align 8, !tbaa !16
  %3374 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %3375 = load double, ptr %3374, align 8, !tbaa !20
  %3376 = load ptr, ptr %32, align 8, !tbaa !5
  %3377 = load i32, ptr %43, align 4, !tbaa !9
  %3378 = sext i32 %3377 to i64
  %3379 = getelementptr inbounds %struct.doublecomplex, ptr %3376, i64 %3378
  %3380 = getelementptr inbounds %struct.doublecomplex, ptr %3379, i32 0, i32 1
  store double %3375, ptr %3380, align 8, !tbaa !20
  %3381 = load i32, ptr %69, align 4, !tbaa !9
  %3382 = icmp sgt i32 %3381, 1
  br i1 %3382, label %3383, label %3739

3383:                                             ; preds = %3348
  %3384 = load i32, ptr %69, align 4, !tbaa !9
  store i32 %3384, ptr %43, align 4, !tbaa !9
  %3385 = load ptr, ptr %32, align 8, !tbaa !5
  %3386 = load i32, ptr %43, align 4, !tbaa !9
  %3387 = sext i32 %3386 to i64
  %3388 = getelementptr inbounds %struct.doublecomplex, ptr %3385, i64 %3387
  %3389 = getelementptr inbounds %struct.doublecomplex, ptr %3388, i32 0, i32 0
  %3390 = load double, ptr %3389, align 8, !tbaa !16
  store double %3390, ptr %48, align 8, !tbaa !14
  %3391 = load double, ptr %48, align 8, !tbaa !14
  %3392 = fcmp oge double %3391, 0.000000e+00
  br i1 %3392, label %3393, label %3395

3393:                                             ; preds = %3383
  %3394 = load double, ptr %48, align 8, !tbaa !14
  br label %3398

3395:                                             ; preds = %3383
  %3396 = load double, ptr %48, align 8, !tbaa !14
  %3397 = fneg double %3396
  br label %3398

3398:                                             ; preds = %3395, %3393
  %3399 = phi double [ %3394, %3393 ], [ %3397, %3395 ]
  %3400 = load ptr, ptr %32, align 8, !tbaa !5
  %3401 = load i32, ptr %69, align 4, !tbaa !9
  %3402 = sext i32 %3401 to i64
  %3403 = getelementptr inbounds %struct.doublecomplex, ptr %3400, i64 %3402
  %3404 = call { double, double } @Cd(ptr noundef %3403)
  %3405 = extractvalue { double, double } %3404, 0
  %3406 = extractvalue { double, double } %3404, 1
  store double %3406, ptr %49, align 8, !tbaa !14
  %3407 = load double, ptr %49, align 8, !tbaa !14
  %3408 = fcmp oge double %3407, 0.000000e+00
  br i1 %3408, label %3409, label %3411

3409:                                             ; preds = %3398
  %3410 = load double, ptr %49, align 8, !tbaa !14
  br label %3414

3411:                                             ; preds = %3398
  %3412 = load double, ptr %49, align 8, !tbaa !14
  %3413 = fneg double %3412
  br label %3414

3414:                                             ; preds = %3411, %3409
  %3415 = phi double [ %3410, %3409 ], [ %3413, %3411 ]
  %3416 = fadd double %3399, %3415
  %3417 = fcmp ogt double %3416, 1.000000e+00
  br i1 %3417, label %3418, label %3520

3418:                                             ; preds = %3414
  %3419 = load i32, ptr %69, align 4, !tbaa !9
  store i32 %3419, ptr %43, align 4, !tbaa !9
  %3420 = load ptr, ptr %32, align 8, !tbaa !5
  %3421 = load i32, ptr %43, align 4, !tbaa !9
  %3422 = sext i32 %3421 to i64
  %3423 = getelementptr inbounds %struct.doublecomplex, ptr %3420, i64 %3422
  %3424 = getelementptr inbounds %struct.doublecomplex, ptr %3423, i32 0, i32 0
  %3425 = load double, ptr %3424, align 8, !tbaa !16
  store double %3425, ptr %48, align 8, !tbaa !14
  %3426 = load double, ptr %48, align 8, !tbaa !14
  %3427 = fcmp oge double %3426, 0.000000e+00
  br i1 %3427, label %3428, label %3430

3428:                                             ; preds = %3418
  %3429 = load double, ptr %48, align 8, !tbaa !14
  br label %3433

3430:                                             ; preds = %3418
  %3431 = load double, ptr %48, align 8, !tbaa !14
  %3432 = fneg double %3431
  br label %3433

3433:                                             ; preds = %3430, %3428
  %3434 = phi double [ %3429, %3428 ], [ %3432, %3430 ]
  %3435 = load ptr, ptr %32, align 8, !tbaa !5
  %3436 = load i32, ptr %69, align 4, !tbaa !9
  %3437 = sext i32 %3436 to i64
  %3438 = getelementptr inbounds %struct.doublecomplex, ptr %3435, i64 %3437
  %3439 = call { double, double } @Cd(ptr noundef %3438)
  %3440 = extractvalue { double, double } %3439, 0
  %3441 = extractvalue { double, double } %3439, 1
  store double %3441, ptr %49, align 8, !tbaa !14
  %3442 = load double, ptr %49, align 8, !tbaa !14
  %3443 = fcmp oge double %3442, 0.000000e+00
  br i1 %3443, label %3444, label %3446

3444:                                             ; preds = %3433
  %3445 = load double, ptr %49, align 8, !tbaa !14
  br label %3449

3446:                                             ; preds = %3433
  %3447 = load double, ptr %49, align 8, !tbaa !14
  %3448 = fneg double %3447
  br label %3449

3449:                                             ; preds = %3446, %3444
  %3450 = phi double [ %3445, %3444 ], [ %3448, %3446 ]
  %3451 = fadd double %3434, %3450
  %3452 = fdiv double 1.000000e+00, %3451
  store double %3452, ptr %63, align 8, !tbaa !14
  %3453 = load double, ptr %82, align 8, !tbaa !14
  %3454 = load ptr, ptr %33, align 8, !tbaa !5
  %3455 = load i32, ptr %69, align 4, !tbaa !9
  %3456 = sext i32 %3455 to i64
  %3457 = getelementptr inbounds double, ptr %3454, i64 %3456
  %3458 = load double, ptr %3457, align 8, !tbaa !14
  %3459 = load double, ptr %84, align 8, !tbaa !14
  %3460 = load ptr, ptr %33, align 8, !tbaa !5
  %3461 = load ptr, ptr %21, align 8, !tbaa !5
  %3462 = load i32, ptr %3461, align 4, !tbaa !9
  %3463 = load i32, ptr %69, align 4, !tbaa !9
  %3464 = add nsw i32 %3462, %3463
  %3465 = sext i32 %3464 to i64
  %3466 = getelementptr inbounds double, ptr %3460, i64 %3465
  %3467 = load double, ptr %3466, align 8, !tbaa !14
  %3468 = fmul double %3459, %3467
  %3469 = call double @llvm.fmuladd.f64(double %3453, double %3458, double %3468)
  %3470 = load double, ptr %94, align 8, !tbaa !14
  %3471 = load double, ptr %63, align 8, !tbaa !14
  %3472 = fmul double %3470, %3471
  %3473 = fcmp oge double %3469, %3472
  br i1 %3473, label %3474, label %3519

3474:                                             ; preds = %3449
  %3475 = load i32, ptr %83, align 4, !tbaa !9
  store i32 %3475, ptr %43, align 4, !tbaa !9
  store i32 1, ptr %91, align 4, !tbaa !9
  br label %3476

3476:                                             ; preds = %3515, %3474
  %3477 = load i32, ptr %91, align 4, !tbaa !9
  %3478 = load i32, ptr %43, align 4, !tbaa !9
  %3479 = icmp sle i32 %3477, %3478
  br i1 %3479, label %3480, label %3518

3480:                                             ; preds = %3476
  %3481 = load i32, ptr %91, align 4, !tbaa !9
  store i32 %3481, ptr %44, align 4, !tbaa !9
  %3482 = load i32, ptr %91, align 4, !tbaa !9
  store i32 %3482, ptr %45, align 4, !tbaa !9
  %3483 = load double, ptr %63, align 8, !tbaa !14
  %3484 = load ptr, ptr %32, align 8, !tbaa !5
  %3485 = load i32, ptr %45, align 4, !tbaa !9
  %3486 = sext i32 %3485 to i64
  %3487 = getelementptr inbounds %struct.doublecomplex, ptr %3484, i64 %3486
  %3488 = getelementptr inbounds %struct.doublecomplex, ptr %3487, i32 0, i32 0
  %3489 = load double, ptr %3488, align 8, !tbaa !16
  %3490 = fmul double %3483, %3489
  %3491 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  store double %3490, ptr %3491, align 8, !tbaa !16
  %3492 = load double, ptr %63, align 8, !tbaa !14
  %3493 = load ptr, ptr %32, align 8, !tbaa !5
  %3494 = load i32, ptr %45, align 4, !tbaa !9
  %3495 = sext i32 %3494 to i64
  %3496 = getelementptr inbounds %struct.doublecomplex, ptr %3493, i64 %3495
  %3497 = getelementptr inbounds %struct.doublecomplex, ptr %3496, i32 0, i32 1
  %3498 = load double, ptr %3497, align 8, !tbaa !20
  %3499 = fmul double %3492, %3498
  %3500 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  store double %3499, ptr %3500, align 8, !tbaa !20
  %3501 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %3502 = load double, ptr %3501, align 8, !tbaa !16
  %3503 = load ptr, ptr %32, align 8, !tbaa !5
  %3504 = load i32, ptr %44, align 4, !tbaa !9
  %3505 = sext i32 %3504 to i64
  %3506 = getelementptr inbounds %struct.doublecomplex, ptr %3503, i64 %3505
  %3507 = getelementptr inbounds %struct.doublecomplex, ptr %3506, i32 0, i32 0
  store double %3502, ptr %3507, align 8, !tbaa !16
  %3508 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %3509 = load double, ptr %3508, align 8, !tbaa !20
  %3510 = load ptr, ptr %32, align 8, !tbaa !5
  %3511 = load i32, ptr %44, align 4, !tbaa !9
  %3512 = sext i32 %3511 to i64
  %3513 = getelementptr inbounds %struct.doublecomplex, ptr %3510, i64 %3512
  %3514 = getelementptr inbounds %struct.doublecomplex, ptr %3513, i32 0, i32 1
  store double %3509, ptr %3514, align 8, !tbaa !20
  br label %3515

3515:                                             ; preds = %3480
  %3516 = load i32, ptr %91, align 4, !tbaa !9
  %3517 = add nsw i32 %3516, 1
  store i32 %3517, ptr %91, align 4, !tbaa !9
  br label %3476, !llvm.loop !35

3518:                                             ; preds = %3476
  br label %3519

3519:                                             ; preds = %3518, %3449
  br label %3520

3520:                                             ; preds = %3519, %3414
  %3521 = load i32, ptr %69, align 4, !tbaa !9
  store i32 %3521, ptr %43, align 4, !tbaa !9
  %3522 = load double, ptr %85, align 8, !tbaa !14
  %3523 = load ptr, ptr %32, align 8, !tbaa !5
  %3524 = load i32, ptr %43, align 4, !tbaa !9
  %3525 = sext i32 %3524 to i64
  %3526 = getelementptr inbounds %struct.doublecomplex, ptr %3523, i64 %3525
  %3527 = getelementptr inbounds %struct.doublecomplex, ptr %3526, i32 0, i32 0
  %3528 = load double, ptr %3527, align 8, !tbaa !16
  %3529 = fmul double %3522, %3528
  %3530 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  store double %3529, ptr %3530, align 8, !tbaa !16
  %3531 = load double, ptr %85, align 8, !tbaa !14
  %3532 = load ptr, ptr %32, align 8, !tbaa !5
  %3533 = load i32, ptr %43, align 4, !tbaa !9
  %3534 = sext i32 %3533 to i64
  %3535 = getelementptr inbounds %struct.doublecomplex, ptr %3532, i64 %3534
  %3536 = getelementptr inbounds %struct.doublecomplex, ptr %3535, i32 0, i32 1
  %3537 = load double, ptr %3536, align 8, !tbaa !20
  %3538 = fmul double %3531, %3537
  %3539 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  store double %3538, ptr %3539, align 8, !tbaa !20
  %3540 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %3541 = load double, ptr %3540, align 8, !tbaa !16
  %3542 = getelementptr inbounds %struct.doublecomplex, ptr %79, i32 0, i32 0
  store double %3541, ptr %3542, align 8, !tbaa !16
  %3543 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %3544 = load double, ptr %3543, align 8, !tbaa !20
  %3545 = getelementptr inbounds %struct.doublecomplex, ptr %79, i32 0, i32 1
  store double %3544, ptr %3545, align 8, !tbaa !20
  %3546 = load i32, ptr %69, align 4, !tbaa !9
  store i32 %3546, ptr %43, align 4, !tbaa !9
  %3547 = getelementptr inbounds %struct.doublecomplex, ptr %86, i32 0, i32 0
  %3548 = load double, ptr %3547, align 8, !tbaa !16
  %3549 = load ptr, ptr %32, align 8, !tbaa !5
  %3550 = load i32, ptr %43, align 4, !tbaa !9
  %3551 = sext i32 %3550 to i64
  %3552 = getelementptr inbounds %struct.doublecomplex, ptr %3549, i64 %3551
  %3553 = getelementptr inbounds %struct.doublecomplex, ptr %3552, i32 0, i32 0
  %3554 = load double, ptr %3553, align 8, !tbaa !16
  %3555 = getelementptr inbounds %struct.doublecomplex, ptr %86, i32 0, i32 1
  %3556 = load double, ptr %3555, align 8, !tbaa !20
  %3557 = load ptr, ptr %32, align 8, !tbaa !5
  %3558 = load i32, ptr %43, align 4, !tbaa !9
  %3559 = sext i32 %3558 to i64
  %3560 = getelementptr inbounds %struct.doublecomplex, ptr %3557, i64 %3559
  %3561 = getelementptr inbounds %struct.doublecomplex, ptr %3560, i32 0, i32 1
  %3562 = load double, ptr %3561, align 8, !tbaa !20
  %3563 = fmul double %3556, %3562
  %3564 = fneg double %3563
  %3565 = call double @llvm.fmuladd.f64(double %3548, double %3554, double %3564)
  %3566 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  store double %3565, ptr %3566, align 8, !tbaa !16
  %3567 = getelementptr inbounds %struct.doublecomplex, ptr %86, i32 0, i32 0
  %3568 = load double, ptr %3567, align 8, !tbaa !16
  %3569 = load ptr, ptr %32, align 8, !tbaa !5
  %3570 = load i32, ptr %43, align 4, !tbaa !9
  %3571 = sext i32 %3570 to i64
  %3572 = getelementptr inbounds %struct.doublecomplex, ptr %3569, i64 %3571
  %3573 = getelementptr inbounds %struct.doublecomplex, ptr %3572, i32 0, i32 1
  %3574 = load double, ptr %3573, align 8, !tbaa !20
  %3575 = getelementptr inbounds %struct.doublecomplex, ptr %86, i32 0, i32 1
  %3576 = load double, ptr %3575, align 8, !tbaa !20
  %3577 = load ptr, ptr %32, align 8, !tbaa !5
  %3578 = load i32, ptr %43, align 4, !tbaa !9
  %3579 = sext i32 %3578 to i64
  %3580 = getelementptr inbounds %struct.doublecomplex, ptr %3577, i64 %3579
  %3581 = getelementptr inbounds %struct.doublecomplex, ptr %3580, i32 0, i32 0
  %3582 = load double, ptr %3581, align 8, !tbaa !16
  %3583 = fmul double %3576, %3582
  %3584 = call double @llvm.fmuladd.f64(double %3568, double %3574, double %3583)
  %3585 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  store double %3584, ptr %3585, align 8, !tbaa !20
  %3586 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %3587 = load double, ptr %3586, align 8, !tbaa !16
  %3588 = getelementptr inbounds %struct.doublecomplex, ptr %80, i32 0, i32 0
  store double %3587, ptr %3588, align 8, !tbaa !16
  %3589 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %3590 = load double, ptr %3589, align 8, !tbaa !20
  %3591 = getelementptr inbounds %struct.doublecomplex, ptr %80, i32 0, i32 1
  store double %3590, ptr %3591, align 8, !tbaa !20
  %3592 = load i32, ptr %69, align 4, !tbaa !9
  %3593 = sub nsw i32 %3592, 1
  store i32 %3593, ptr %43, align 4, !tbaa !9
  store i32 1, ptr %91, align 4, !tbaa !9
  br label %3594

3594:                                             ; preds = %3735, %3520
  %3595 = load i32, ptr %91, align 4, !tbaa !9
  %3596 = load i32, ptr %43, align 4, !tbaa !9
  %3597 = icmp sle i32 %3595, %3596
  br i1 %3597, label %3598, label %3738

3598:                                             ; preds = %3594
  %3599 = load i32, ptr %91, align 4, !tbaa !9
  store i32 %3599, ptr %44, align 4, !tbaa !9
  %3600 = load i32, ptr %91, align 4, !tbaa !9
  store i32 %3600, ptr %45, align 4, !tbaa !9
  %3601 = load i32, ptr %91, align 4, !tbaa !9
  %3602 = load i32, ptr %69, align 4, !tbaa !9
  %3603 = load i32, ptr %37, align 4, !tbaa !9
  %3604 = mul nsw i32 %3602, %3603
  %3605 = add nsw i32 %3601, %3604
  store i32 %3605, ptr %46, align 4, !tbaa !9
  %3606 = getelementptr inbounds %struct.doublecomplex, ptr %79, i32 0, i32 0
  %3607 = load double, ptr %3606, align 8, !tbaa !16
  %3608 = load ptr, ptr %22, align 8, !tbaa !5
  %3609 = load i32, ptr %46, align 4, !tbaa !9
  %3610 = sext i32 %3609 to i64
  %3611 = getelementptr inbounds %struct.doublecomplex, ptr %3608, i64 %3610
  %3612 = getelementptr inbounds %struct.doublecomplex, ptr %3611, i32 0, i32 0
  %3613 = load double, ptr %3612, align 8, !tbaa !16
  %3614 = getelementptr inbounds %struct.doublecomplex, ptr %79, i32 0, i32 1
  %3615 = load double, ptr %3614, align 8, !tbaa !20
  %3616 = load ptr, ptr %22, align 8, !tbaa !5
  %3617 = load i32, ptr %46, align 4, !tbaa !9
  %3618 = sext i32 %3617 to i64
  %3619 = getelementptr inbounds %struct.doublecomplex, ptr %3616, i64 %3618
  %3620 = getelementptr inbounds %struct.doublecomplex, ptr %3619, i32 0, i32 1
  %3621 = load double, ptr %3620, align 8, !tbaa !20
  %3622 = fmul double %3615, %3621
  %3623 = fneg double %3622
  %3624 = call double @llvm.fmuladd.f64(double %3607, double %3613, double %3623)
  %3625 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  store double %3624, ptr %3625, align 8, !tbaa !16
  %3626 = getelementptr inbounds %struct.doublecomplex, ptr %79, i32 0, i32 0
  %3627 = load double, ptr %3626, align 8, !tbaa !16
  %3628 = load ptr, ptr %22, align 8, !tbaa !5
  %3629 = load i32, ptr %46, align 4, !tbaa !9
  %3630 = sext i32 %3629 to i64
  %3631 = getelementptr inbounds %struct.doublecomplex, ptr %3628, i64 %3630
  %3632 = getelementptr inbounds %struct.doublecomplex, ptr %3631, i32 0, i32 1
  %3633 = load double, ptr %3632, align 8, !tbaa !20
  %3634 = getelementptr inbounds %struct.doublecomplex, ptr %79, i32 0, i32 1
  %3635 = load double, ptr %3634, align 8, !tbaa !20
  %3636 = load ptr, ptr %22, align 8, !tbaa !5
  %3637 = load i32, ptr %46, align 4, !tbaa !9
  %3638 = sext i32 %3637 to i64
  %3639 = getelementptr inbounds %struct.doublecomplex, ptr %3636, i64 %3638
  %3640 = getelementptr inbounds %struct.doublecomplex, ptr %3639, i32 0, i32 0
  %3641 = load double, ptr %3640, align 8, !tbaa !16
  %3642 = fmul double %3635, %3641
  %3643 = call double @llvm.fmuladd.f64(double %3627, double %3633, double %3642)
  %3644 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  store double %3643, ptr %3644, align 8, !tbaa !20
  %3645 = load ptr, ptr %32, align 8, !tbaa !5
  %3646 = load i32, ptr %45, align 4, !tbaa !9
  %3647 = sext i32 %3646 to i64
  %3648 = getelementptr inbounds %struct.doublecomplex, ptr %3645, i64 %3647
  %3649 = getelementptr inbounds %struct.doublecomplex, ptr %3648, i32 0, i32 0
  %3650 = load double, ptr %3649, align 8, !tbaa !16
  %3651 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 0
  %3652 = load double, ptr %3651, align 8, !tbaa !16
  %3653 = fadd double %3650, %3652
  %3654 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  store double %3653, ptr %3654, align 8, !tbaa !16
  %3655 = load ptr, ptr %32, align 8, !tbaa !5
  %3656 = load i32, ptr %45, align 4, !tbaa !9
  %3657 = sext i32 %3656 to i64
  %3658 = getelementptr inbounds %struct.doublecomplex, ptr %3655, i64 %3657
  %3659 = getelementptr inbounds %struct.doublecomplex, ptr %3658, i32 0, i32 1
  %3660 = load double, ptr %3659, align 8, !tbaa !20
  %3661 = getelementptr inbounds %struct.doublecomplex, ptr %56, i32 0, i32 1
  %3662 = load double, ptr %3661, align 8, !tbaa !20
  %3663 = fadd double %3660, %3662
  %3664 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  store double %3663, ptr %3664, align 8, !tbaa !20
  %3665 = load i32, ptr %91, align 4, !tbaa !9
  %3666 = load i32, ptr %69, align 4, !tbaa !9
  %3667 = load i32, ptr %35, align 4, !tbaa !9
  %3668 = mul nsw i32 %3666, %3667
  %3669 = add nsw i32 %3665, %3668
  store i32 %3669, ptr %47, align 4, !tbaa !9
  %3670 = getelementptr inbounds %struct.doublecomplex, ptr %80, i32 0, i32 0
  %3671 = load double, ptr %3670, align 8, !tbaa !16
  %3672 = load ptr, ptr %24, align 8, !tbaa !5
  %3673 = load i32, ptr %47, align 4, !tbaa !9
  %3674 = sext i32 %3673 to i64
  %3675 = getelementptr inbounds %struct.doublecomplex, ptr %3672, i64 %3674
  %3676 = getelementptr inbounds %struct.doublecomplex, ptr %3675, i32 0, i32 0
  %3677 = load double, ptr %3676, align 8, !tbaa !16
  %3678 = getelementptr inbounds %struct.doublecomplex, ptr %80, i32 0, i32 1
  %3679 = load double, ptr %3678, align 8, !tbaa !20
  %3680 = load ptr, ptr %24, align 8, !tbaa !5
  %3681 = load i32, ptr %47, align 4, !tbaa !9
  %3682 = sext i32 %3681 to i64
  %3683 = getelementptr inbounds %struct.doublecomplex, ptr %3680, i64 %3682
  %3684 = getelementptr inbounds %struct.doublecomplex, ptr %3683, i32 0, i32 1
  %3685 = load double, ptr %3684, align 8, !tbaa !20
  %3686 = fmul double %3679, %3685
  %3687 = fneg double %3686
  %3688 = call double @llvm.fmuladd.f64(double %3671, double %3677, double %3687)
  %3689 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  store double %3688, ptr %3689, align 8, !tbaa !16
  %3690 = getelementptr inbounds %struct.doublecomplex, ptr %80, i32 0, i32 0
  %3691 = load double, ptr %3690, align 8, !tbaa !16
  %3692 = load ptr, ptr %24, align 8, !tbaa !5
  %3693 = load i32, ptr %47, align 4, !tbaa !9
  %3694 = sext i32 %3693 to i64
  %3695 = getelementptr inbounds %struct.doublecomplex, ptr %3692, i64 %3694
  %3696 = getelementptr inbounds %struct.doublecomplex, ptr %3695, i32 0, i32 1
  %3697 = load double, ptr %3696, align 8, !tbaa !20
  %3698 = getelementptr inbounds %struct.doublecomplex, ptr %80, i32 0, i32 1
  %3699 = load double, ptr %3698, align 8, !tbaa !20
  %3700 = load ptr, ptr %24, align 8, !tbaa !5
  %3701 = load i32, ptr %47, align 4, !tbaa !9
  %3702 = sext i32 %3701 to i64
  %3703 = getelementptr inbounds %struct.doublecomplex, ptr %3700, i64 %3702
  %3704 = getelementptr inbounds %struct.doublecomplex, ptr %3703, i32 0, i32 0
  %3705 = load double, ptr %3704, align 8, !tbaa !16
  %3706 = fmul double %3699, %3705
  %3707 = call double @llvm.fmuladd.f64(double %3691, double %3697, double %3706)
  %3708 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  store double %3707, ptr %3708, align 8, !tbaa !20
  %3709 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 0
  %3710 = load double, ptr %3709, align 8, !tbaa !16
  %3711 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  %3712 = load double, ptr %3711, align 8, !tbaa !16
  %3713 = fsub double %3710, %3712
  %3714 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  store double %3713, ptr %3714, align 8, !tbaa !16
  %3715 = getelementptr inbounds %struct.doublecomplex, ptr %55, i32 0, i32 1
  %3716 = load double, ptr %3715, align 8, !tbaa !20
  %3717 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  %3718 = load double, ptr %3717, align 8, !tbaa !20
  %3719 = fsub double %3716, %3718
  %3720 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  store double %3719, ptr %3720, align 8, !tbaa !20
  %3721 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %3722 = load double, ptr %3721, align 8, !tbaa !16
  %3723 = load ptr, ptr %32, align 8, !tbaa !5
  %3724 = load i32, ptr %44, align 4, !tbaa !9
  %3725 = sext i32 %3724 to i64
  %3726 = getelementptr inbounds %struct.doublecomplex, ptr %3723, i64 %3725
  %3727 = getelementptr inbounds %struct.doublecomplex, ptr %3726, i32 0, i32 0
  store double %3722, ptr %3727, align 8, !tbaa !16
  %3728 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %3729 = load double, ptr %3728, align 8, !tbaa !20
  %3730 = load ptr, ptr %32, align 8, !tbaa !5
  %3731 = load i32, ptr %44, align 4, !tbaa !9
  %3732 = sext i32 %3731 to i64
  %3733 = getelementptr inbounds %struct.doublecomplex, ptr %3730, i64 %3732
  %3734 = getelementptr inbounds %struct.doublecomplex, ptr %3733, i32 0, i32 1
  store double %3729, ptr %3734, align 8, !tbaa !20
  br label %3735

3735:                                             ; preds = %3598
  %3736 = load i32, ptr %91, align 4, !tbaa !9
  %3737 = add nsw i32 %3736, 1
  store i32 %3737, ptr %91, align 4, !tbaa !9
  br label %3594, !llvm.loop !36

3738:                                             ; preds = %3594
  br label %3739

3739:                                             ; preds = %3738, %3348
  br label %3740

3740:                                             ; preds = %3739
  %3741 = load i32, ptr %69, align 4, !tbaa !9
  %3742 = add nsw i32 %3741, -1
  store i32 %3742, ptr %69, align 4, !tbaa !9
  br label %3056, !llvm.loop !37

3743:                                             ; preds = %3056
  %3744 = load i32, ptr %87, align 4, !tbaa !9
  %3745 = icmp ne i32 %3744, 0
  br i1 %3745, label %3746, label %3763

3746:                                             ; preds = %3743
  %3747 = load ptr, ptr %21, align 8, !tbaa !5
  %3748 = load ptr, ptr %28, align 8, !tbaa !5
  %3749 = load i32, ptr %42, align 4, !tbaa !9
  %3750 = sext i32 %3749 to i64
  %3751 = getelementptr inbounds %struct.doublecomplex, ptr %3748, i64 %3750
  %3752 = load ptr, ptr %29, align 8, !tbaa !5
  %3753 = load ptr, ptr %32, align 8, !tbaa !5
  %3754 = getelementptr inbounds %struct.doublecomplex, ptr %3753, i64 1
  %3755 = load ptr, ptr %32, align 8, !tbaa !5
  %3756 = load ptr, ptr %21, align 8, !tbaa !5
  %3757 = load i32, ptr %3756, align 4, !tbaa !9
  %3758 = add nsw i32 %3757, 1
  %3759 = sext i32 %3758 to i64
  %3760 = getelementptr inbounds %struct.doublecomplex, ptr %3755, i64 %3759
  call void @zgemv_(ptr noundef @.str.9, ptr noundef %3747, ptr noundef %83, ptr noundef @c_b2, ptr noundef %3751, ptr noundef %3752, ptr noundef %3754, ptr noundef @c__1, ptr noundef @c_b1, ptr noundef %3760, ptr noundef @c__1)
  store i32 2, ptr %62, align 4, !tbaa !9
  %3761 = load ptr, ptr %21, align 8, !tbaa !5
  %3762 = load i32, ptr %3761, align 4, !tbaa !9
  store i32 %3762, ptr %60, align 4, !tbaa !9
  br label %3765

3763:                                             ; preds = %3743
  store i32 1, ptr %62, align 4, !tbaa !9
  %3764 = load i32, ptr %83, align 4, !tbaa !9
  store i32 %3764, ptr %60, align 4, !tbaa !9
  br label %3765

3765:                                             ; preds = %3763, %3746
  store double 0.000000e+00, ptr %66, align 8, !tbaa !14
  %3766 = load i32, ptr %60, align 4, !tbaa !9
  store i32 %3766, ptr %43, align 4, !tbaa !9
  store i32 1, ptr %91, align 4, !tbaa !9
  br label %3767

3767:                                             ; preds = %3827, %3765
  %3768 = load i32, ptr %91, align 4, !tbaa !9
  %3769 = load i32, ptr %43, align 4, !tbaa !9
  %3770 = icmp sle i32 %3768, %3769
  br i1 %3770, label %3771, label %3830

3771:                                             ; preds = %3767
  %3772 = load i32, ptr %62, align 4, !tbaa !9
  %3773 = sub nsw i32 %3772, 1
  %3774 = load ptr, ptr %21, align 8, !tbaa !5
  %3775 = load i32, ptr %3774, align 4, !tbaa !9
  %3776 = mul nsw i32 %3773, %3775
  %3777 = load i32, ptr %91, align 4, !tbaa !9
  %3778 = add nsw i32 %3776, %3777
  store i32 %3778, ptr %44, align 4, !tbaa !9
  %3779 = load double, ptr %66, align 8, !tbaa !14
  store double %3779, ptr %50, align 8, !tbaa !14
  %3780 = load ptr, ptr %32, align 8, !tbaa !5
  %3781 = load i32, ptr %44, align 4, !tbaa !9
  %3782 = sext i32 %3781 to i64
  %3783 = getelementptr inbounds %struct.doublecomplex, ptr %3780, i64 %3782
  %3784 = getelementptr inbounds %struct.doublecomplex, ptr %3783, i32 0, i32 0
  %3785 = load double, ptr %3784, align 8, !tbaa !16
  store double %3785, ptr %48, align 8, !tbaa !14
  %3786 = load double, ptr %48, align 8, !tbaa !14
  %3787 = fcmp oge double %3786, 0.000000e+00
  br i1 %3787, label %3788, label %3790

3788:                                             ; preds = %3771
  %3789 = load double, ptr %48, align 8, !tbaa !14
  br label %3793

3790:                                             ; preds = %3771
  %3791 = load double, ptr %48, align 8, !tbaa !14
  %3792 = fneg double %3791
  br label %3793

3793:                                             ; preds = %3790, %3788
  %3794 = phi double [ %3789, %3788 ], [ %3792, %3790 ]
  %3795 = load ptr, ptr %32, align 8, !tbaa !5
  %3796 = load i32, ptr %62, align 4, !tbaa !9
  %3797 = sub nsw i32 %3796, 1
  %3798 = load ptr, ptr %21, align 8, !tbaa !5
  %3799 = load i32, ptr %3798, align 4, !tbaa !9
  %3800 = mul nsw i32 %3797, %3799
  %3801 = load i32, ptr %91, align 4, !tbaa !9
  %3802 = add nsw i32 %3800, %3801
  %3803 = sext i32 %3802 to i64
  %3804 = getelementptr inbounds %struct.doublecomplex, ptr %3795, i64 %3803
  %3805 = call { double, double } @Cd(ptr noundef %3804)
  %3806 = extractvalue { double, double } %3805, 0
  %3807 = extractvalue { double, double } %3805, 1
  store double %3807, ptr %49, align 8, !tbaa !14
  %3808 = load double, ptr %49, align 8, !tbaa !14
  %3809 = fcmp oge double %3808, 0.000000e+00
  br i1 %3809, label %3810, label %3812

3810:                                             ; preds = %3793
  %3811 = load double, ptr %49, align 8, !tbaa !14
  br label %3815

3812:                                             ; preds = %3793
  %3813 = load double, ptr %49, align 8, !tbaa !14
  %3814 = fneg double %3813
  br label %3815

3815:                                             ; preds = %3812, %3810
  %3816 = phi double [ %3811, %3810 ], [ %3814, %3812 ]
  %3817 = fadd double %3794, %3816
  store double %3817, ptr %51, align 8, !tbaa !14
  %3818 = load double, ptr %50, align 8, !tbaa !14
  %3819 = load double, ptr %51, align 8, !tbaa !14
  %3820 = fcmp oge double %3818, %3819
  br i1 %3820, label %3821, label %3823

3821:                                             ; preds = %3815
  %3822 = load double, ptr %50, align 8, !tbaa !14
  br label %3825

3823:                                             ; preds = %3815
  %3824 = load double, ptr %51, align 8, !tbaa !14
  br label %3825

3825:                                             ; preds = %3823, %3821
  %3826 = phi double [ %3822, %3821 ], [ %3824, %3823 ]
  store double %3826, ptr %66, align 8, !tbaa !14
  br label %3827

3827:                                             ; preds = %3825
  %3828 = load i32, ptr %91, align 4, !tbaa !9
  %3829 = add nsw i32 %3828, 1
  store i32 %3829, ptr %91, align 4, !tbaa !9
  br label %3767, !llvm.loop !38

3830:                                             ; preds = %3767
  %3831 = load double, ptr %66, align 8, !tbaa !14
  %3832 = load double, ptr %93, align 8, !tbaa !14
  %3833 = fcmp ogt double %3831, %3832
  br i1 %3833, label %3834, label %3891

3834:                                             ; preds = %3830
  %3835 = load double, ptr %66, align 8, !tbaa !14
  %3836 = fdiv double 1.000000e+00, %3835
  store double %3836, ptr %63, align 8, !tbaa !14
  %3837 = load i32, ptr %60, align 4, !tbaa !9
  store i32 %3837, ptr %43, align 4, !tbaa !9
  store i32 1, ptr %91, align 4, !tbaa !9
  br label %3838

3838:                                             ; preds = %3887, %3834
  %3839 = load i32, ptr %91, align 4, !tbaa !9
  %3840 = load i32, ptr %43, align 4, !tbaa !9
  %3841 = icmp sle i32 %3839, %3840
  br i1 %3841, label %3842, label %3890

3842:                                             ; preds = %3838
  %3843 = load i32, ptr %91, align 4, !tbaa !9
  %3844 = load i32, ptr %59, align 4, !tbaa !9
  %3845 = load i32, ptr %41, align 4, !tbaa !9
  %3846 = mul nsw i32 %3844, %3845
  %3847 = add nsw i32 %3843, %3846
  store i32 %3847, ptr %44, align 4, !tbaa !9
  %3848 = load i32, ptr %62, align 4, !tbaa !9
  %3849 = sub nsw i32 %3848, 1
  %3850 = load ptr, ptr %21, align 8, !tbaa !5
  %3851 = load i32, ptr %3850, align 4, !tbaa !9
  %3852 = mul nsw i32 %3849, %3851
  %3853 = load i32, ptr %91, align 4, !tbaa !9
  %3854 = add nsw i32 %3852, %3853
  store i32 %3854, ptr %45, align 4, !tbaa !9
  %3855 = load double, ptr %63, align 8, !tbaa !14
  %3856 = load ptr, ptr %32, align 8, !tbaa !5
  %3857 = load i32, ptr %45, align 4, !tbaa !9
  %3858 = sext i32 %3857 to i64
  %3859 = getelementptr inbounds %struct.doublecomplex, ptr %3856, i64 %3858
  %3860 = getelementptr inbounds %struct.doublecomplex, ptr %3859, i32 0, i32 0
  %3861 = load double, ptr %3860, align 8, !tbaa !16
  %3862 = fmul double %3855, %3861
  %3863 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  store double %3862, ptr %3863, align 8, !tbaa !16
  %3864 = load double, ptr %63, align 8, !tbaa !14
  %3865 = load ptr, ptr %32, align 8, !tbaa !5
  %3866 = load i32, ptr %45, align 4, !tbaa !9
  %3867 = sext i32 %3866 to i64
  %3868 = getelementptr inbounds %struct.doublecomplex, ptr %3865, i64 %3867
  %3869 = getelementptr inbounds %struct.doublecomplex, ptr %3868, i32 0, i32 1
  %3870 = load double, ptr %3869, align 8, !tbaa !20
  %3871 = fmul double %3864, %3870
  %3872 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  store double %3871, ptr %3872, align 8, !tbaa !20
  %3873 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 0
  %3874 = load double, ptr %3873, align 8, !tbaa !16
  %3875 = load ptr, ptr %28, align 8, !tbaa !5
  %3876 = load i32, ptr %44, align 4, !tbaa !9
  %3877 = sext i32 %3876 to i64
  %3878 = getelementptr inbounds %struct.doublecomplex, ptr %3875, i64 %3877
  %3879 = getelementptr inbounds %struct.doublecomplex, ptr %3878, i32 0, i32 0
  store double %3874, ptr %3879, align 8, !tbaa !16
  %3880 = getelementptr inbounds %struct.doublecomplex, ptr %54, i32 0, i32 1
  %3881 = load double, ptr %3880, align 8, !tbaa !20
  %3882 = load ptr, ptr %28, align 8, !tbaa !5
  %3883 = load i32, ptr %44, align 4, !tbaa !9
  %3884 = sext i32 %3883 to i64
  %3885 = getelementptr inbounds %struct.doublecomplex, ptr %3882, i64 %3884
  %3886 = getelementptr inbounds %struct.doublecomplex, ptr %3885, i32 0, i32 1
  store double %3881, ptr %3886, align 8, !tbaa !20
  br label %3887

3887:                                             ; preds = %3842
  %3888 = load i32, ptr %91, align 4, !tbaa !9
  %3889 = add nsw i32 %3888, 1
  store i32 %3889, ptr %91, align 4, !tbaa !9
  br label %3838, !llvm.loop !39

3890:                                             ; preds = %3838
  br label %3892

3891:                                             ; preds = %3830
  store i32 0, ptr %60, align 4, !tbaa !9
  br label %3892

3892:                                             ; preds = %3891, %3890
  %3893 = load ptr, ptr %21, align 8, !tbaa !5
  %3894 = load i32, ptr %3893, align 4, !tbaa !9
  store i32 %3894, ptr %43, align 4, !tbaa !9
  %3895 = load i32, ptr %60, align 4, !tbaa !9
  %3896 = add nsw i32 %3895, 1
  store i32 %3896, ptr %91, align 4, !tbaa !9
  br label %3897

3897:                                             ; preds = %3917, %3892
  %3898 = load i32, ptr %91, align 4, !tbaa !9
  %3899 = load i32, ptr %43, align 4, !tbaa !9
  %3900 = icmp sle i32 %3898, %3899
  br i1 %3900, label %3901, label %3920

3901:                                             ; preds = %3897
  %3902 = load i32, ptr %91, align 4, !tbaa !9
  %3903 = load i32, ptr %59, align 4, !tbaa !9
  %3904 = load i32, ptr %41, align 4, !tbaa !9
  %3905 = mul nsw i32 %3903, %3904
  %3906 = add nsw i32 %3902, %3905
  store i32 %3906, ptr %44, align 4, !tbaa !9
  %3907 = load ptr, ptr %28, align 8, !tbaa !5
  %3908 = load i32, ptr %44, align 4, !tbaa !9
  %3909 = sext i32 %3908 to i64
  %3910 = getelementptr inbounds %struct.doublecomplex, ptr %3907, i64 %3909
  %3911 = getelementptr inbounds %struct.doublecomplex, ptr %3910, i32 0, i32 0
  store double 0.000000e+00, ptr %3911, align 8, !tbaa !16
  %3912 = load ptr, ptr %28, align 8, !tbaa !5
  %3913 = load i32, ptr %44, align 4, !tbaa !9
  %3914 = sext i32 %3913 to i64
  %3915 = getelementptr inbounds %struct.doublecomplex, ptr %3912, i64 %3914
  %3916 = getelementptr inbounds %struct.doublecomplex, ptr %3915, i32 0, i32 1
  store double 0.000000e+00, ptr %3916, align 8, !tbaa !20
  br label %3917

3917:                                             ; preds = %3901
  %3918 = load i32, ptr %91, align 4, !tbaa !9
  %3919 = add nsw i32 %3918, 1
  store i32 %3919, ptr %91, align 4, !tbaa !9
  br label %3897, !llvm.loop !40

3920:                                             ; preds = %3897
  br label %3921

3921:                                             ; preds = %3920, %2284
  br label %3922

3922:                                             ; preds = %3921, %2382
  br label %3923

3923:                                             ; preds = %3922
  %3924 = load i32, ptr %83, align 4, !tbaa !9
  %3925 = add nsw i32 %3924, -1
  store i32 %3925, ptr %83, align 4, !tbaa !9
  br label %2271, !llvm.loop !41

3926:                                             ; preds = %2271
  br label %3927

3927:                                             ; preds = %3926, %2263
  store i32 1, ptr %102, align 4
  br label %3928

3928:                                             ; preds = %3927, %357, %346, %239
  call void @llvm.lifetime.end.p0(i64 16, ptr %101) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %99) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %92) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %86) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %80) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %79) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %67) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %65) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %64) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %57) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %56) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %55) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #5
  ret void
}

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

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

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

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = !{!15, !15, i64 0}
!15 = !{!"double", !7, i64 0}
!16 = !{!17, !15, i64 0}
!17 = !{!"", !15, i64 0, !15, i64 8}
!18 = distinct !{!18, !12}
!19 = distinct !{!19, !12}
!20 = !{!17, !15, i64 8}
!21 = distinct !{!21, !12}
!22 = distinct !{!22, !12}
!23 = distinct !{!23, !12}
!24 = distinct !{!24, !12}
!25 = distinct !{!25, !12}
!26 = distinct !{!26, !12}
!27 = distinct !{!27, !12}
!28 = distinct !{!28, !12}
!29 = distinct !{!29, !12}
!30 = distinct !{!30, !12}
!31 = distinct !{!31, !12}
!32 = distinct !{!32, !12}
!33 = distinct !{!33, !12}
!34 = distinct !{!34, !12}
!35 = distinct !{!35, !12}
!36 = distinct !{!36, !12}
!37 = distinct !{!37, !12}
!38 = distinct !{!38, !12}
!39 = distinct !{!39, !12}
!40 = distinct !{!40, !12}
!41 = distinct !{!41, !12}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.doublecomplex = type { double, double }

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b2 = external hidden global %struct.doublecomplex, align 8
@c__1 = external hidden global i32, align 4
@c_b1 = external hidden global %struct.doublecomplex, align 8

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

49:                                               ; preds = %17
  %50 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #7
  %.not1100 = icmp eq i32 %50, 0
  br i1 %.not1100, label %51, label %53

51:                                               ; preds = %49
  %52 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.2) #7
  %.not1101 = icmp eq i32 %52, 0
  br label %53

53:                                               ; preds = %51, %49, %17
  %.not1106 = phi i1 [ false, %17 ], [ true, %49 ], [ false, %51 ]
  %.not1124 = phi i1 [ true, %17 ], [ true, %49 ], [ false, %51 ]
  %54 = phi i1 [ false, %17 ], [ false, %49 ], [ %.not1101, %51 ]
  %55 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.3) #7
  %.not1102.not = icmp eq i32 %55, 0
  br i1 %.not1102.not, label %56, label %.thread

56:                                               ; preds = %53
  %57 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.4) #7
  %.not1103 = icmp eq i32 %57, 0
  br i1 %.not1103, label %58, label %.thread

.thread:                                          ; preds = %53, %56
  store i32 0, ptr %16, align 4, !tbaa !5
  br label %60

58:                                               ; preds = %56
  %59 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #7
  %.not1104 = icmp eq i32 %59, 0
  store i32 0, ptr %16, align 4, !tbaa !5
  br i1 %.not1104, label %.thread1159, label %60

60:                                               ; preds = %.thread, %58
  %.not11121156 = phi i1 [ %.not1102.not, %.thread ], [ false, %58 ]
  br i1 %54, label %.thread1159, label %61

61:                                               ; preds = %60
  %62 = load i32, ptr %3, align 4, !tbaa !5
  %63 = icmp slt i32 %62, 0
  br i1 %63, label %.thread1159, label %64

64:                                               ; preds = %61
  %65 = load i32, ptr %5, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %62, i32 1)
  %66 = icmp slt i32 %65, %spec.select
  br i1 %66, label %.thread1159, label %67

67:                                               ; preds = %64
  %68 = load i32, ptr %7, align 4, !tbaa !5
  %69 = icmp slt i32 %68, %spec.select
  br i1 %69, label %.thread1159, label %70

.thread1159:                                      ; preds = %67, %64, %61, %60, %58
  %.sink = phi i32 [ -1, %58 ], [ -2, %60 ], [ -4, %61 ], [ -6, %64 ], [ -8, %67 ]
  %.neg = phi i32 [ 1, %58 ], [ 2, %60 ], [ 4, %61 ], [ 6, %64 ], [ 8, %67 ]
  store i32 %.sink, ptr %16, align 4, !tbaa !5
  br label %.loopexit1192.sink.split

70:                                               ; preds = %67
  br i1 %.not1106, label %71, label %.loopexit1197

71:                                               ; preds = %70
  %.not11071198 = icmp eq i32 %62, 0
  br i1 %.not11071198, label %.loopexit1197.thread, label %.lr.ph.preheader

.loopexit1197.thread:                             ; preds = %71
  store i32 %62, ptr %18, align 4, !tbaa !5
  br label %._crit_edge.thread

.lr.ph.preheader:                                 ; preds = %71
  %72 = add nuw i32 %62, 1
  %wide.trip.count = zext i32 %72 to i64
  %73 = zext nneg i32 %62 to i64
  %min.iters.check = icmp ult i32 %62, 8
  br i1 %min.iters.check, label %.lr.ph.preheader1973, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph.preheader
  %n.vec = and i64 %73, 2147483640
  %ind.end = or disjoint i64 %n.vec, 1
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %vec.phi = phi <4 x i32> [ zeroinitializer, %vector.ph ], [ %80, %vector.body ]
  %vec.phi1625 = phi <4 x i32> [ zeroinitializer, %vector.ph ], [ %81, %vector.body ]
  %74 = getelementptr i32, ptr %2, i64 %index
  %75 = getelementptr inbounds i8, ptr %74, i64 16
  %wide.load = load <4 x i32>, ptr %74, align 4, !tbaa !5
  %wide.load1626 = load <4 x i32>, ptr %75, align 4, !tbaa !5
  %76 = icmp ne <4 x i32> %wide.load, zeroinitializer
  %77 = icmp ne <4 x i32> %wide.load1626, zeroinitializer
  %78 = zext <4 x i1> %76 to <4 x i32>
  %79 = zext <4 x i1> %77 to <4 x i32>
  %80 = add <4 x i32> %vec.phi, %78
  %81 = add <4 x i32> %vec.phi1625, %79
  %index.next = add nuw i64 %index, 8
  %82 = icmp eq i64 %index.next, %n.vec
  br i1 %82, label %middle.block, label %vector.body, !llvm.loop !9

middle.block:                                     ; preds = %vector.body
  %bin.rdx = add <4 x i32> %81, %80
  %83 = tail call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %bin.rdx)
  %cmp.n = icmp eq i64 %n.vec, %73
  br i1 %cmp.n, label %.loopexit1197, label %.lr.ph.preheader1973

.lr.ph.preheader1973:                             ; preds = %middle.block, %.lr.ph.preheader
  %indvars.iv.ph = phi i64 [ 1, %.lr.ph.preheader ], [ %ind.end, %middle.block ]
  %.010481200.ph = phi i32 [ 0, %.lr.ph.preheader ], [ %83, %middle.block ]
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader1973, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ %indvars.iv.ph, %.lr.ph.preheader1973 ]
  %.010481200 = phi i32 [ %spec.select1150, %.lr.ph ], [ %.010481200.ph, %.lr.ph.preheader1973 ]
  %84 = getelementptr inbounds i32, ptr %31, i64 %indvars.iv
  %85 = load i32, ptr %84, align 4, !tbaa !5
  %.not1108 = icmp ne i32 %85, 0
  %86 = zext i1 %.not1108 to i32
  %spec.select1150 = add nuw nsw i32 %.010481200, %86
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %.loopexit1197, label %.lr.ph, !llvm.loop !13

.loopexit1197:                                    ; preds = %.lr.ph, %middle.block, %70
  %.21050 = phi i32 [ %62, %70 ], [ %83, %middle.block ], [ %spec.select1150, %.lr.ph ]
  store i32 %62, ptr %18, align 4, !tbaa !5
  %.not11091201 = icmp eq i32 %62, 0
  br i1 %.not11091201, label %._crit_edge.thread, label %.lr.ph1204.preheader

.lr.ph1204.preheader:                             ; preds = %.loopexit1197
  %87 = add nuw i32 %62, 1
  %wide.trip.count1404 = zext i32 %87 to i64
  br label %.lr.ph1204

.lr.ph1204:                                       ; preds = %.lr.ph1204.preheader, %.lr.ph1204
  %indvars.iv1401 = phi i64 [ 1, %.lr.ph1204.preheader ], [ %indvars.iv.next1402, %.lr.ph1204 ]
  %.010561203 = phi i32 [ 0, %.lr.ph1204.preheader ], [ %.11057, %.lr.ph1204 ]
  %88 = trunc nuw nsw i64 %indvars.iv1401 to i32
  %89 = mul i32 %37, %88
  %90 = sext i32 %89 to i64
  %91 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %90
  %92 = tail call { double, double } @Cd(ptr noundef %91)
  %93 = extractvalue { double, double } %92, 1
  %94 = fcmp une double %93, 0.000000e+00
  %.11057 = select i1 %94, i32 1, i32 %.010561203
  %indvars.iv.next1402 = add nuw nsw i64 %indvars.iv1401, 1
  %exitcond1405.not = icmp eq i64 %indvars.iv.next1402, %wide.trip.count1404
  br i1 %exitcond1405.not, label %._crit_edge, label %.lr.ph1204, !llvm.loop !14

._crit_edge:                                      ; preds = %.lr.ph1204
  %.not1110 = icmp eq i32 %.11057, 0
  br i1 %.not1110, label %._crit_edge.thread, label %.thread1171.sink.split

._crit_edge.thread:                               ; preds = %.loopexit1197.thread, %.loopexit1197, %._crit_edge
  %.2105015141518 = phi i32 [ %.21050, %._crit_edge ], [ 0, %.loopexit1197.thread ], [ %.21050, %.loopexit1197 ]
  %.pr1164 = load i32, ptr %9, align 4, !tbaa !5
  br i1 %.not1102.not, label %95, label %thread-pre-split1163

95:                                               ; preds = %._crit_edge.thread
  %96 = load i32, ptr %3, align 4, !tbaa !5
  %97 = icmp slt i32 %.pr1164, %96
  %98 = icmp slt i32 %.pr1164, 1
  %or.cond = or i1 %97, %98
  br i1 %or.cond, label %.thread1171.sink.split, label %99

thread-pre-split1163:                             ; preds = %._crit_edge.thread
  %.old = icmp slt i32 %.pr1164, 1
  br i1 %.old, label %.thread1171.sink.split, label %99

99:                                               ; preds = %95, %thread-pre-split1163
  %.pr1166 = load i32, ptr %11, align 4, !tbaa !5
  br i1 %.not11121156, label %thread-pre-split1165, label %100

100:                                              ; preds = %99
  %101 = load i32, ptr %3, align 4, !tbaa !5
  %102 = icmp slt i32 %.pr1166, %101
  %103 = icmp slt i32 %.pr1166, 1
  %or.cond1910 = or i1 %102, %103
  br i1 %or.cond1910, label %.thread1171.sink.split, label %104

thread-pre-split1165:                             ; preds = %99
  %.old1909 = icmp slt i32 %.pr1166, 1
  br i1 %.old1909, label %.thread1171.sink.split, label %104

104:                                              ; preds = %100, %thread-pre-split1165
  %105 = load i32, ptr %12, align 4, !tbaa !5
  %106 = icmp slt i32 %105, %.2105015141518
  br i1 %106, label %.thread1171.sink.split, label %107

107:                                              ; preds = %104
  %.pr1168 = load i32, ptr %16, align 4, !tbaa !5
  %.not1113 = icmp eq i32 %.pr1168, 0
  br i1 %.not1113, label %110, label %.thread1171

.thread1171.sink.split:                           ; preds = %104, %100, %thread-pre-split1165, %95, %thread-pre-split1163, %._crit_edge
  %.sink1594 = phi i32 [ -7, %._crit_edge ], [ -10, %thread-pre-split1163 ], [ -10, %95 ], [ -12, %thread-pre-split1165 ], [ -12, %100 ], [ -13, %104 ]
  store i32 %.sink1594, ptr %16, align 4, !tbaa !5
  br label %.thread1171

.thread1171:                                      ; preds = %.thread1171.sink.split, %107
  %108 = phi i32 [ %.pr1168, %107 ], [ %.sink1594, %.thread1171.sink.split ]
  %109 = sub nsw i32 0, %108
  br label %.loopexit1192.sink.split

110:                                              ; preds = %107
  store i32 %.2105015141518, ptr %13, align 4, !tbaa !5
  %111 = load i32, ptr %3, align 4, !tbaa !5
  %112 = icmp eq i32 %111, 0
  br i1 %112, label %.loopexit1192, label %113

113:                                              ; preds = %110
  %114 = tail call double @dlamch_(ptr noundef nonnull @.str.6) #7
  store double %114, ptr %28, align 8, !tbaa !15
  %115 = fdiv double 1.000000e+00, %114
  store double %115, ptr %29, align 8, !tbaa !15
  call void @dlabad_(ptr noundef nonnull %28, ptr noundef nonnull %29) #7
  %116 = call double @dlamch_(ptr noundef nonnull @.str.7) #7
  %117 = call double @dlamch_(ptr noundef nonnull @.str.8) #7
  %118 = fmul double %116, %117
  %119 = load double, ptr %28, align 8, !tbaa !15
  %120 = load i32, ptr %3, align 4, !tbaa !5
  %121 = sitofp i32 %120 to double
  %122 = fmul double %119, %121
  %123 = fdiv double %122, %118
  %124 = fdiv double 1.000000e+00, %123
  store double %124, ptr %29, align 8, !tbaa !15
  %125 = fdiv double 1.000000e+00, %122
  store i32 %33, ptr %18, align 4, !tbaa !5
  %126 = load double, ptr %4, align 8, !tbaa !17
  %127 = call { double, double } @Cd(ptr noundef nonnull %4)
  %128 = extractvalue { double, double } %127, 1
  store i32 %37, ptr %18, align 4, !tbaa !5
  %129 = load double, ptr %6, align 8, !tbaa !17
  %130 = call { double, double } @Cd(ptr noundef nonnull %6)
  %131 = extractvalue { double, double } %130, 1
  %132 = insertelement <2 x double> poison, double %126, i64 0
  %133 = insertelement <2 x double> %132, double %129, i64 1
  %134 = fcmp oge <2 x double> %133, zeroinitializer
  %135 = fneg <2 x double> %133
  %136 = select <2 x i1> %134, <2 x double> %133, <2 x double> %135
  %137 = insertelement <2 x double> poison, double %128, i64 0
  %138 = insertelement <2 x double> %137, double %131, i64 1
  %139 = fcmp oge <2 x double> %138, zeroinitializer
  %140 = fneg <2 x double> %138
  %141 = select <2 x i1> %139, <2 x double> %138, <2 x double> %140
  %142 = fadd <2 x double> %136, %141
  store double 0.000000e+00, ptr %15, align 8, !tbaa !15
  %143 = load i32, ptr %3, align 4, !tbaa !5
  %144 = sext i32 %143 to i64
  %145 = getelementptr double, ptr %47, i64 %144
  %146 = getelementptr i8, ptr %145, i64 8
  store double 0.000000e+00, ptr %146, align 8, !tbaa !15
  store i32 %143, ptr %18, align 4, !tbaa !5
  %.not11161211 = icmp slt i32 %143, 2
  br i1 %.not11161211, label %._crit_edge1217, label %.lr.ph1216.preheader

.lr.ph1216.preheader:                             ; preds = %113
  %147 = sext i32 %32 to i64
  %148 = sext i32 %36 to i64
  br label %.lr.ph1209

.lr.ph1209:                                       ; preds = %._crit_edge1210, %.lr.ph1216.preheader
  %indvars.iv1409 = phi i64 [ 2, %.lr.ph1216.preheader ], [ %indvars.iv.next1410, %._crit_edge1210 ]
  %149 = phi <2 x double> [ %142, %.lr.ph1216.preheader ], [ %224, %._crit_edge1210 ]
  %150 = getelementptr inbounds double, ptr %47, i64 %indvars.iv1409
  store double 0.000000e+00, ptr %150, align 8, !tbaa !15
  %151 = load i32, ptr %3, align 4, !tbaa !5
  %152 = sext i32 %151 to i64
  %153 = getelementptr double, ptr %47, i64 %indvars.iv1409
  %154 = getelementptr double, ptr %153, i64 %152
  store double 0.000000e+00, ptr %154, align 8, !tbaa !15
  %155 = trunc i64 %indvars.iv1409 to i32
  %156 = add i32 %155, -1
  store i32 %156, ptr %19, align 4, !tbaa !5
  %157 = mul nsw i64 %indvars.iv1409, %147
  %158 = mul nsw i64 %indvars.iv1409, %148
  %invariant.gep1572 = getelementptr %struct.doublecomplex, ptr %35, i64 %157
  %invariant.gep1574 = getelementptr %struct.doublecomplex, ptr %39, i64 %158
  %159 = getelementptr double, ptr %47, i64 %indvars.iv1409
  br label %160

160:                                              ; preds = %.lr.ph1209, %160
  %indvars.iv1406 = phi i64 [ 1, %.lr.ph1209 ], [ %indvars.iv.next1407, %160 ]
  %gep1573 = getelementptr %struct.doublecomplex, ptr %invariant.gep1572, i64 %indvars.iv1406
  %161 = load double, ptr %gep1573, align 8, !tbaa !17
  %162 = fcmp oge double %161, 0.000000e+00
  %163 = fneg double %161
  %164 = select i1 %162, double %161, double %163
  %165 = call { double, double } @Cd(ptr noundef nonnull %gep1573)
  %166 = extractvalue { double, double } %165, 1
  %167 = fcmp oge double %166, 0.000000e+00
  %168 = fneg double %166
  %169 = select i1 %167, double %166, double %168
  %170 = fadd double %164, %169
  %171 = load double, ptr %150, align 8, !tbaa !15
  %172 = fadd double %171, %170
  store double %172, ptr %150, align 8, !tbaa !15
  %gep1575 = getelementptr %struct.doublecomplex, ptr %invariant.gep1574, i64 %indvars.iv1406
  %173 = load double, ptr %gep1575, align 8, !tbaa !17
  %174 = fcmp oge double %173, 0.000000e+00
  %175 = fneg double %173
  %176 = select i1 %174, double %173, double %175
  %177 = call { double, double } @Cd(ptr noundef nonnull %gep1575)
  %178 = extractvalue { double, double } %177, 1
  %179 = fcmp oge double %178, 0.000000e+00
  %180 = fneg double %178
  %181 = select i1 %179, double %178, double %180
  %182 = fadd double %176, %181
  %183 = load i32, ptr %3, align 4, !tbaa !5
  %184 = sext i32 %183 to i64
  %185 = getelementptr double, ptr %159, i64 %184
  %186 = load double, ptr %185, align 8, !tbaa !15
  %187 = fadd double %186, %182
  store double %187, ptr %185, align 8, !tbaa !15
  %indvars.iv.next1407 = add nuw nsw i64 %indvars.iv1406, 1
  %188 = load i32, ptr %19, align 4, !tbaa !5
  %189 = sext i32 %188 to i64
  %.not1145.not = icmp slt i64 %indvars.iv1406, %189
  br i1 %.not1145.not, label %160, label %._crit_edge1210, !llvm.loop !19

._crit_edge1210:                                  ; preds = %160
  %190 = trunc nuw nsw i64 %indvars.iv1409 to i32
  %191 = mul i32 %33, %190
  %192 = load double, ptr %150, align 8, !tbaa !15
  %193 = sext i32 %191 to i64
  %194 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %193
  %195 = load double, ptr %194, align 8, !tbaa !17
  %196 = call { double, double } @Cd(ptr noundef nonnull %194)
  %197 = extractvalue { double, double } %196, 1
  %198 = mul i32 %37, %190
  store i32 %198, ptr %19, align 4, !tbaa !5
  %199 = load i32, ptr %3, align 4, !tbaa !5
  %200 = sext i32 %199 to i64
  %201 = getelementptr double, ptr %47, i64 %indvars.iv1409
  %202 = getelementptr double, ptr %201, i64 %200
  %203 = load double, ptr %202, align 8, !tbaa !15
  %204 = sext i32 %198 to i64
  %205 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %204
  %206 = load double, ptr %205, align 8, !tbaa !17
  %207 = call { double, double } @Cd(ptr noundef nonnull %205)
  %208 = extractvalue { double, double } %207, 1
  %209 = insertelement <2 x double> poison, double %195, i64 0
  %210 = insertelement <2 x double> %209, double %206, i64 1
  %211 = fcmp oge <2 x double> %210, zeroinitializer
  %212 = fneg <2 x double> %210
  %213 = select <2 x i1> %211, <2 x double> %210, <2 x double> %212
  %214 = insertelement <2 x double> poison, double %197, i64 0
  %215 = insertelement <2 x double> %214, double %208, i64 1
  %216 = fcmp oge <2 x double> %215, zeroinitializer
  %217 = fneg <2 x double> %215
  %218 = select <2 x i1> %216, <2 x double> %215, <2 x double> %217
  %219 = fadd <2 x double> %213, %218
  %220 = insertelement <2 x double> poison, double %192, i64 0
  %221 = insertelement <2 x double> %220, double %203, i64 1
  %222 = fadd <2 x double> %221, %219
  %223 = fcmp oge <2 x double> %149, %222
  %224 = select <2 x i1> %223, <2 x double> %149, <2 x double> %222
  %indvars.iv.next1410 = add nuw nsw i64 %indvars.iv1409, 1
  %225 = load i32, ptr %18, align 4, !tbaa !5
  %226 = sext i32 %225 to i64
  %.not1116.not = icmp slt i64 %indvars.iv1409, %226
  br i1 %.not1116.not, label %.lr.ph1209, label %._crit_edge1217, !llvm.loop !20

._crit_edge1217:                                  ; preds = %._crit_edge1210, %113
  %227 = phi <2 x double> [ %142, %113 ], [ %224, %._crit_edge1210 ]
  %228 = load double, ptr %28, align 8
  %229 = insertelement <2 x double> poison, double %228, i64 0
  %230 = shufflevector <2 x double> %229, <2 x double> poison, <2 x i32> zeroinitializer
  %231 = fcmp oge <2 x double> %227, %230
  %232 = select <2 x i1> %231, <2 x double> %227, <2 x double> %230
  %233 = fdiv <2 x double> <double 1.000000e+00, double 1.000000e+00>, %232
  br i1 %.not1102.not, label %234, label %.loopexit1196

234:                                              ; preds = %._crit_edge1217
  %235 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %235, ptr %18, align 4, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %42, i64 16
  store i32 1, ptr %25, align 4, !tbaa !5
  %.not11181282 = icmp slt i32 %235, 1
  br i1 %.not11181282, label %.loopexit1196, label %.lr.ph1286

.lr.ph1286:                                       ; preds = %234
  %236 = add i32 %40, 1
  %237 = getelementptr inbounds i8, ptr %20, i64 8
  %238 = getelementptr inbounds i8, ptr %26, i64 8
  %239 = getelementptr inbounds i8, ptr %22, i64 8
  %240 = getelementptr inbounds i8, ptr %23, i64 8
  %241 = getelementptr inbounds i8, ptr %30, i64 8
  %242 = getelementptr inbounds i8, ptr %24, i64 8
  %243 = shl nsw i64 %41, 4
  %scevgep = getelementptr i8, ptr %8, i64 %243
  %244 = sext i32 %32 to i64
  %245 = sext i32 %36 to i64
  %246 = shl nsw i64 %41, 4
  %scevgep1627 = getelementptr i8, ptr %8, i64 %246
  %247 = or disjoint i64 %246, 8
  %scevgep1629 = getelementptr i8, ptr %8, i64 %247
  %scevgep1631 = getelementptr i8, ptr %14, i64 -16
  %scevgep1633 = getelementptr i8, ptr %14, i64 -8
  %scevgep1635 = getelementptr i8, ptr %8, i64 %247
  %248 = getelementptr i8, ptr %8, i64 %246
  %scevgep1637 = getelementptr i8, ptr %248, i64 16
  %scevgep1639 = getelementptr i8, ptr %14, i64 -8
  %249 = extractelement <2 x double> %227, i64 0
  %250 = extractelement <2 x double> %227, i64 1
  %251 = extractelement <2 x double> %233, i64 0
  %252 = extractelement <2 x double> %233, i64 1
  %253 = insertelement <2 x double> poison, double %118, i64 0
  %254 = shufflevector <2 x double> %253, <2 x double> poison, <2 x i32> zeroinitializer
  %255 = shufflevector <2 x double> %233, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %256 = shufflevector <2 x double> %233, <2 x double> poison, <2 x i32> zeroinitializer
  br label %257

257:                                              ; preds = %.lr.ph1286, %.loopexit1194
  %.010831284 = phi i32 [ 0, %.lr.ph1286 ], [ %.11084, %.loopexit1194 ]
  %storemerge1283 = phi i32 [ 1, %.lr.ph1286 ], [ %777, %.loopexit1194 ]
  br i1 %.not1106, label %258, label %.thread1174

258:                                              ; preds = %257
  %259 = sext i32 %storemerge1283 to i64
  %260 = getelementptr inbounds i32, ptr %31, i64 %259
  %261 = load i32, ptr %260, align 4, !tbaa !5
  %.not1134 = icmp eq i32 %261, 0
  br i1 %.not1134, label %.loopexit1194, label %.thread1174

.thread1174:                                      ; preds = %257, %258
  %262 = add nsw i32 %.010831284, 1
  %263 = mul i32 %storemerge1283, %33
  store i32 %263, ptr %19, align 4, !tbaa !5
  %264 = sext i32 %263 to i64
  %265 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %264
  %266 = load double, ptr %265, align 8, !tbaa !17
  %267 = call { double, double } @Cd(ptr noundef nonnull %265)
  %268 = extractvalue { double, double } %267, 1
  %269 = insertelement <2 x double> poison, double %266, i64 0
  %270 = insertelement <2 x double> %269, double %268, i64 1
  %271 = fcmp oge <2 x double> %270, zeroinitializer
  %272 = fneg <2 x double> %270
  %273 = select <2 x i1> %271, <2 x double> %270, <2 x double> %272
  %shift = shufflevector <2 x double> %273, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %274 = fadd <2 x double> %273, %shift
  %275 = extractelement <2 x double> %274, i64 0
  %276 = load double, ptr %28, align 8, !tbaa !15
  %277 = fcmp ugt double %275, %276
  br i1 %277, label %298, label %278

278:                                              ; preds = %.thread1174
  %279 = mul i32 %storemerge1283, %37
  %280 = sext i32 %279 to i64
  %281 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %280
  %282 = load double, ptr %281, align 8, !tbaa !17
  %283 = fcmp oge double %282, 0.000000e+00
  %284 = fneg double %282
  %285 = select i1 %283, double %282, double %284
  %286 = fcmp ugt double %285, %276
  br i1 %286, label %298, label %287

287:                                              ; preds = %278
  %288 = load i32, ptr %3, align 4, !tbaa !5
  %.not11441220 = icmp slt i32 %288, 1
  br i1 %.not11441220, label %._crit_edge1224, label %.lr.ph1223

.lr.ph1223:                                       ; preds = %287
  %289 = mul nsw i32 %262, %40
  %290 = add i32 %289, 1
  %291 = sext i32 %290 to i64
  %292 = shl nsw i64 %291, 4
  %scevgep1412 = getelementptr i8, ptr %scevgep, i64 %292
  %293 = zext nneg i32 %288 to i64
  %294 = shl nuw nsw i64 %293, 4
  call void @llvm.memset.p0.i64(ptr align 8 %scevgep1412, i8 0, i64 %294, i1 false), !tbaa !15
  br label %._crit_edge1224

._crit_edge1224:                                  ; preds = %.lr.ph1223, %287
  %295 = mul i32 %262, %236
  store i32 %295, ptr %19, align 4, !tbaa !5
  %296 = sext i32 %295 to i64
  %297 = getelementptr inbounds %struct.doublecomplex, ptr %42, i64 %296
  store <2 x double> <double 1.000000e+00, double 0.000000e+00>, ptr %297, align 8, !tbaa !15
  br label %.loopexit1194

298:                                              ; preds = %278, %.thread1174
  %299 = load i32, ptr %25, align 4, !tbaa !5
  %300 = mul i32 %299, %33
  store i32 %300, ptr %19, align 4, !tbaa !5
  %301 = mul i32 %299, %37
  %302 = sext i32 %300 to i64
  %303 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %302
  %304 = load double, ptr %303, align 8, !tbaa !17
  %305 = call { double, double } @Cd(ptr noundef nonnull %303)
  %306 = extractvalue { double, double } %305, 1
  %307 = insertelement <2 x double> poison, double %304, i64 0
  %308 = insertelement <2 x double> %307, double %306, i64 1
  %309 = fcmp oge <2 x double> %308, zeroinitializer
  %310 = fneg <2 x double> %308
  %311 = select <2 x i1> %309, <2 x double> %308, <2 x double> %310
  %shift1911 = shufflevector <2 x double> %311, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %312 = fadd <2 x double> %311, %shift1911
  %313 = fmul <2 x double> %233, %312
  %314 = extractelement <2 x double> %313, i64 0
  %315 = sext i32 %301 to i64
  %316 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %315
  %317 = load double, ptr %316, align 8, !tbaa !17
  %318 = fcmp oge double %317, 0.000000e+00
  %319 = fneg double %317
  %320 = select i1 %318, double %317, double %319
  %321 = fmul double %252, %320
  %322 = fcmp oge double %314, %321
  %323 = select i1 %322, double %314, double %321
  %324 = load double, ptr %28, align 8
  %325 = fcmp oge double %323, %324
  %326 = select i1 %325, double %323, double %324
  %327 = fdiv double 1.000000e+00, %326
  %328 = load i32, ptr %25, align 4, !tbaa !5
  %329 = mul i32 %328, %33
  %330 = sext i32 %329 to i64
  %331 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %330
  %332 = load <2 x double>, ptr %331, align 8, !tbaa !15
  %333 = insertelement <2 x double> poison, double %327, i64 0
  %334 = shufflevector <2 x double> %333, <2 x double> poison, <2 x i32> zeroinitializer
  %335 = fmul <2 x double> %332, %334
  store <2 x double> %335, ptr %21, align 16, !tbaa !15
  %336 = fmul <2 x double> %256, %335
  store <2 x double> %336, ptr %27, align 16, !tbaa !15
  %337 = mul i32 %328, %37
  store i32 %337, ptr %19, align 4, !tbaa !5
  %338 = sext i32 %337 to i64
  %339 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %338
  %340 = load double, ptr %339, align 8, !tbaa !17
  %341 = fmul double %327, %340
  %342 = fmul double %252, %341
  %343 = fmul double %251, %342
  %344 = fmul <2 x double> %255, %336
  store <2 x double> %344, ptr %20, align 16, !tbaa !15
  store <2 x double> %344, ptr %26, align 16, !tbaa !15
  %345 = fcmp oge double %342, 0.000000e+00
  %346 = fneg double %342
  %347 = select i1 %345, double %342, double %346
  %348 = fcmp ult double %347, %324
  br i1 %348, label %354, label %349

349:                                              ; preds = %298
  %350 = fcmp oge double %343, 0.000000e+00
  %351 = fneg double %343
  %352 = select i1 %350, double %343, double %351
  %353 = fcmp olt double %352, %123
  br label %354

354:                                              ; preds = %349, %298
  %355 = phi i1 [ false, %298 ], [ %353, %349 ]
  %356 = call { double, double } @Cd(ptr noundef nonnull %27)
  %357 = extractvalue { double, double } %356, 1
  %358 = insertelement <2 x double> %336, double %357, i64 1
  %359 = fcmp oge <2 x double> %358, zeroinitializer
  %360 = fneg <2 x double> %358
  %361 = select <2 x i1> %359, <2 x double> %358, <2 x double> %360
  %shift1912 = shufflevector <2 x double> %361, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %362 = fadd <2 x double> %361, %shift1912
  %363 = extractelement <2 x double> %362, i64 0
  %364 = load double, ptr %28, align 8, !tbaa !15
  %365 = fcmp ult double %363, %364
  br i1 %365, label %.thread1538, label %366

366:                                              ; preds = %354
  %367 = load <2 x double>, ptr %26, align 16
  %368 = call { double, double } @Cd(ptr noundef nonnull %26)
  %369 = extractvalue { double, double } %368, 1
  %370 = insertelement <2 x double> %367, double %369, i64 1
  %371 = fcmp oge <2 x double> %370, zeroinitializer
  %372 = fneg <2 x double> %370
  %373 = select <2 x i1> %371, <2 x double> %370, <2 x double> %372
  %shift1913 = shufflevector <2 x double> %373, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %374 = fadd <2 x double> %373, %shift1913
  %375 = extractelement <2 x double> %374, i64 0
  %376 = fcmp olt double %375, %123
  br i1 %355, label %382, label %.thread1519

.thread1538:                                      ; preds = %354
  br i1 %355, label %.thread1539, label %._crit_edge1501

.thread1539:                                      ; preds = %.thread1538
  %377 = fdiv double %123, %347
  %378 = load double, ptr %29, align 8
  %379 = fcmp ole double %249, %378
  %380 = select i1 %379, double %249, double %378
  %381 = fmul double %377, %380
  br label %404

382:                                              ; preds = %366
  %383 = fdiv double %123, %347
  %384 = load double, ptr %29, align 8
  %385 = fcmp ole double %249, %384
  %386 = select i1 %385, double %249, double %384
  %387 = fmul double %383, %386
  br i1 %376, label %.thread1177, label %404

.thread1519:                                      ; preds = %366
  br i1 %376, label %.thread1177, label %._crit_edge1501

.thread1177:                                      ; preds = %.thread1519, %382
  %.010641521 = phi double [ 1.000000e+00, %.thread1519 ], [ %387, %382 ]
  %388 = load <2 x double>, ptr %27, align 16
  %389 = call { double, double } @Cd(ptr noundef nonnull %27)
  %390 = extractvalue { double, double } %389, 1
  %391 = insertelement <2 x double> %388, double %390, i64 1
  %392 = fcmp oge <2 x double> %391, zeroinitializer
  %393 = fneg <2 x double> %391
  %394 = select <2 x i1> %392, <2 x double> %391, <2 x double> %393
  %shift1914 = shufflevector <2 x double> %394, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %395 = fadd <2 x double> %394, %shift1914
  %396 = extractelement <2 x double> %395, i64 0
  %397 = fdiv double %123, %396
  %398 = load double, ptr %29, align 8
  %399 = fcmp ole double %250, %398
  %400 = select i1 %399, double %250, double %398
  %401 = fmul double %400, %397
  %402 = fcmp oge double %.010641521, %401
  %403 = select i1 %402, double %.010641521, double %401
  br label %404

._crit_edge1501:                                  ; preds = %.thread1538, %.thread1519
  %.pre = load double, ptr %26, align 16, !tbaa !17
  br label %443

404:                                              ; preds = %382, %.thread1539, %.thread1177
  %405 = phi i1 [ true, %.thread1177 ], [ false, %382 ], [ false, %.thread1539 ]
  %.110651180 = phi double [ %403, %.thread1177 ], [ %387, %382 ], [ %381, %.thread1539 ]
  %406 = fcmp oge double %343, 0.000000e+00
  %407 = fneg double %343
  %408 = select i1 %406, double %343, double %407
  %409 = fcmp ole double %408, 1.000000e+00
  %410 = select i1 %409, double 1.000000e+00, double %408
  %411 = load <2 x double>, ptr %26, align 16
  %412 = call { double, double } @Cd(ptr noundef nonnull %26)
  %413 = extractvalue { double, double } %412, 1
  %414 = insertelement <2 x double> %411, double %413, i64 1
  %415 = fcmp oge <2 x double> %414, zeroinitializer
  %416 = fneg <2 x double> %414
  %417 = select <2 x i1> %415, <2 x double> %414, <2 x double> %416
  %shift1915 = shufflevector <2 x double> %417, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %418 = fadd <2 x double> %417, %shift1915
  %419 = extractelement <2 x double> %418, i64 0
  %420 = load double, ptr %28, align 8, !tbaa !15
  %421 = fcmp oge double %410, %419
  %422 = select i1 %421, double %410, double %419
  %423 = fmul double %420, %422
  %424 = fdiv double 1.000000e+00, %423
  %425 = fcmp ole double %.110651180, %424
  %426 = select i1 %425, double %.110651180, double %424
  %427 = fmul double %342, %426
  %428 = fmul double %251, %427
  %429 = fmul double %343, %426
  %.01052 = select i1 %355, double %428, double %429
  br i1 %405, label %430, label %437

430:                                              ; preds = %404
  %431 = load <2 x double>, ptr %27, align 16, !tbaa !15
  %432 = insertelement <2 x double> poison, double %426, i64 0
  %433 = shufflevector <2 x double> %432, <2 x double> poison, <2 x i32> zeroinitializer
  %434 = fmul <2 x double> %433, %431
  store <2 x double> %434, ptr %21, align 16, !tbaa !15
  %435 = fmul <2 x double> %255, %434
  store <2 x double> %435, ptr %20, align 16, !tbaa !15
  store <2 x double> %435, ptr %26, align 16, !tbaa !15
  %436 = extractelement <2 x double> %435, i64 0
  br label %443

437:                                              ; preds = %404
  %438 = load <2 x double>, ptr %26, align 16, !tbaa !15
  %439 = insertelement <2 x double> poison, double %426, i64 0
  %440 = shufflevector <2 x double> %439, <2 x double> poison, <2 x i32> zeroinitializer
  %441 = fmul <2 x double> %440, %438
  store <2 x double> %441, ptr %20, align 16, !tbaa !15
  store <2 x double> %441, ptr %26, align 16, !tbaa !15
  %442 = extractelement <2 x double> %441, i64 0
  br label %443

443:                                              ; preds = %._crit_edge1501, %430, %437
  %444 = phi double [ %436, %430 ], [ %442, %437 ], [ %.pre, %._crit_edge1501 ]
  %.11053 = phi double [ %.01052, %430 ], [ %.01052, %437 ], [ %343, %._crit_edge1501 ]
  %445 = fcmp oge double %.11053, 0.000000e+00
  %446 = fneg double %.11053
  %447 = select i1 %445, double %.11053, double %446
  %448 = fcmp oge double %444, 0.000000e+00
  %449 = fneg double %444
  %450 = select i1 %448, double %444, double %449
  %451 = call { double, double } @Cd(ptr noundef nonnull %26)
  %452 = extractvalue { double, double } %451, 1
  %453 = fcmp oge double %452, 0.000000e+00
  %454 = fneg double %452
  %455 = select i1 %453, double %452, double %454
  %456 = fadd double %450, %455
  %457 = load i32, ptr %3, align 4, !tbaa !5
  %.not11351225 = icmp slt i32 %457, 1
  br i1 %.not11351225, label %._crit_edge1229, label %.lr.ph1228.preheader

.lr.ph1228.preheader:                             ; preds = %443
  %458 = zext nneg i32 %457 to i64
  %459 = shl nuw nsw i64 %458, 4
  call void @llvm.memset.p0.i64(ptr align 8 %14, i8 0, i64 %459, i1 false), !tbaa !15
  br label %._crit_edge1229

._crit_edge1229:                                  ; preds = %.lr.ph1228.preheader, %443
  %460 = load i32, ptr %25, align 4, !tbaa !5
  %461 = sext i32 %460 to i64
  %462 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %461
  store <2 x double> <double 1.000000e+00, double 0.000000e+00>, ptr %462, align 8, !tbaa !15
  %463 = insertelement <2 x double> poison, double %447, i64 0
  %464 = insertelement <2 x double> %463, double %456, i64 1
  %465 = fmul <2 x double> %254, %464
  %466 = fmul <2 x double> %227, %465
  %467 = extractelement <2 x double> %466, i64 0
  %468 = extractelement <2 x double> %466, i64 1
  %469 = fcmp oge double %467, %468
  %470 = select i1 %469, double %467, double %468
  %471 = load double, ptr %28, align 8
  %472 = fcmp oge double %470, %471
  %473 = select i1 %472, double %470, double %471
  store i32 %457, ptr %19, align 4, !tbaa !5
  %.not1136.not1256 = icmp slt i32 %460, %457
  br i1 %.not1136.not1256, label %.lr.ph1261.preheader, label %._crit_edge1262

.lr.ph1261.preheader:                             ; preds = %._crit_edge1229
  %474 = insertelement <2 x double> poison, double %.11053, i64 0
  %475 = shufflevector <2 x double> %474, <2 x double> poison, <2 x i32> zeroinitializer
  br label %.lr.ph1261

.lr.ph1261:                                       ; preds = %.lr.ph1261.preheader, %665
  %indvars.iv1435 = phi i64 [ %indvars.iv.next1436, %665 ], [ %461, %.lr.ph1261.preheader ]
  %indvars.iv1422.in = phi i32 [ %indvars.iv1422, %665 ], [ %460, %.lr.ph1261.preheader ]
  %.010741257 = phi double [ %684, %665 ], [ 1.000000e+00, %.lr.ph1261.preheader ]
  %indvars.iv1422 = add i32 %indvars.iv1422.in, 1
  %indvars.iv.next1436 = add nsw i64 %indvars.iv1435, 1
  %476 = fdiv double 1.000000e+00, %.010741257
  %477 = getelementptr double, ptr %15, i64 %indvars.iv1435
  %478 = load double, ptr %477, align 8, !tbaa !15
  %479 = load i32, ptr %3, align 4, !tbaa !5
  %480 = sext i32 %479 to i64
  %481 = getelementptr double, ptr %15, i64 %indvars.iv1435
  %482 = getelementptr double, ptr %481, i64 %480
  %483 = load double, ptr %482, align 8, !tbaa !15
  %484 = fmul double %456, %483
  %485 = call double @llvm.fmuladd.f64(double %447, double %478, double %484)
  %486 = fmul double %125, %476
  %487 = fcmp ogt double %485, %486
  %.pre1502 = load i32, ptr %25, align 4, !tbaa !5
  %488 = sext i32 %.pre1502 to i64
  br i1 %487, label %489, label %.loopexit1193

489:                                              ; preds = %.lr.ph1261
  %.not11411230 = icmp slt i64 %indvars.iv1435, %488
  br i1 %.not11411230, label %.loopexit1193, label %.lr.ph1233.preheader

.lr.ph1233.preheader:                             ; preds = %489
  %490 = sub i32 %indvars.iv1422.in, %.pre1502
  %491 = zext i32 %490 to i64
  %492 = add nuw nsw i64 %491, 1
  %min.iters.check1680 = icmp eq i32 %indvars.iv1422.in, %.pre1502
  br i1 %min.iters.check1680, label %.lr.ph1233.preheader1962, label %vector.ph1681

vector.ph1681:                                    ; preds = %.lr.ph1233.preheader
  %n.vec1683 = and i64 %492, 8589934590
  %ind.end1684 = add nsw i64 %n.vec1683, %488
  %broadcast.splatinsert1692 = insertelement <2 x double> poison, double %476, i64 0
  %broadcast.splat1693 = shufflevector <2 x double> %broadcast.splatinsert1692, <2 x double> poison, <2 x i32> zeroinitializer
  %invariant.gep2023 = getelementptr %struct.doublecomplex, ptr %46, i64 %488
  br label %vector.body1686

vector.body1686:                                  ; preds = %vector.body1686, %vector.ph1681
  %index1687 = phi i64 [ 0, %vector.ph1681 ], [ %index.next1695, %vector.body1686 ]
  %gep2024 = getelementptr %struct.doublecomplex, ptr %invariant.gep2023, i64 %index1687
  %wide.vec1689 = load <4 x double>, ptr %gep2024, align 8, !tbaa !15
  %strided.vec1690 = shufflevector <4 x double> %wide.vec1689, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec1691 = shufflevector <4 x double> %wide.vec1689, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %493 = fmul <2 x double> %broadcast.splat1693, %strided.vec1690
  %494 = fmul <2 x double> %broadcast.splat1693, %strided.vec1691
  %interleaved.vec1694 = shufflevector <2 x double> %493, <2 x double> %494, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec1694, ptr %gep2024, align 8, !tbaa !15
  %index.next1695 = add nuw i64 %index1687, 2
  %495 = icmp eq i64 %index.next1695, %n.vec1683
  br i1 %495, label %middle.block1678, label %vector.body1686, !llvm.loop !21

middle.block1678:                                 ; preds = %vector.body1686
  %cmp.n1696 = icmp eq i64 %492, %n.vec1683
  %496 = shufflevector <2 x double> %493, <2 x double> %494, <2 x i32> <i32 1, i32 3>
  br i1 %cmp.n1696, label %..loopexit1193_crit_edge, label %.lr.ph1233.preheader1962

.lr.ph1233.preheader1962:                         ; preds = %middle.block1678, %.lr.ph1233.preheader
  %indvars.iv1419.ph = phi i64 [ %488, %.lr.ph1233.preheader ], [ %ind.end1684, %middle.block1678 ]
  %497 = insertelement <2 x double> poison, double %476, i64 0
  %498 = shufflevector <2 x double> %497, <2 x double> poison, <2 x i32> zeroinitializer
  br label %.lr.ph1233

.lr.ph1233:                                       ; preds = %.lr.ph1233.preheader1962, %.lr.ph1233
  %indvars.iv1419 = phi i64 [ %indvars.iv.next1420, %.lr.ph1233 ], [ %indvars.iv1419.ph, %.lr.ph1233.preheader1962 ]
  %499 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %indvars.iv1419
  %500 = load <2 x double>, ptr %499, align 8, !tbaa !15
  %501 = fmul <2 x double> %498, %500
  store <2 x double> %501, ptr %499, align 8, !tbaa !15
  %indvars.iv.next1420 = add nsw i64 %indvars.iv1419, 1
  %lftr.wideiv = trunc i64 %indvars.iv.next1420 to i32
  %exitcond1424.not = icmp eq i32 %indvars.iv1422, %lftr.wideiv
  br i1 %exitcond1424.not, label %..loopexit1193_crit_edge, label %.lr.ph1233, !llvm.loop !22

..loopexit1193_crit_edge:                         ; preds = %.lr.ph1233, %middle.block1678
  %502 = phi <2 x double> [ %496, %middle.block1678 ], [ %501, %.lr.ph1233 ]
  store <2 x double> %502, ptr %20, align 16, !tbaa !15
  br label %.loopexit1193

.loopexit1193:                                    ; preds = %.lr.ph1261, %489, %..loopexit1193_crit_edge
  %.11075 = phi double [ 1.000000e+00, %489 ], [ 1.000000e+00, %..loopexit1193_crit_edge ], [ %.010741257, %.lr.ph1261 ]
  %.not11421235 = icmp slt i64 %indvars.iv1435, %488
  br i1 %.not11421235, label %._crit_edge1243, label %.lr.ph1242

.lr.ph1242:                                       ; preds = %.loopexit1193
  %503 = mul nsw i64 %indvars.iv.next1436, %244
  %504 = mul nsw i64 %indvars.iv.next1436, %245
  %invariant.gep1576 = getelementptr %struct.doublecomplex, ptr %35, i64 %503
  %invariant.gep1578 = getelementptr %struct.doublecomplex, ptr %39, i64 %504
  br label %505

505:                                              ; preds = %.lr.ph1242, %505
  %indvars.iv1425 = phi i64 [ %488, %.lr.ph1242 ], [ %indvars.iv.next1426, %505 ]
  %506 = phi <2 x double> [ zeroinitializer, %.lr.ph1242 ], [ %525, %505 ]
  %507 = phi <2 x double> [ zeroinitializer, %.lr.ph1242 ], [ %542, %505 ]
  %gep1577 = getelementptr %struct.doublecomplex, ptr %invariant.gep1576, i64 %indvars.iv1425
  %508 = call { double, double } @Cd(ptr noundef nonnull %gep1577)
  %509 = extractvalue { double, double } %508, 0
  %510 = extractvalue { double, double } %508, 1
  %511 = fneg double %510
  %512 = call ptr @_pCd(ptr noundef nonnull %22)
  %513 = getelementptr inbounds i8, ptr %512, i64 8
  store double %509, ptr %512, align 8
  store double %511, ptr %513, align 8
  %514 = load <2 x double>, ptr %22, align 16
  %515 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %indvars.iv1425
  %516 = load double, ptr %239, align 8, !tbaa !23
  %517 = fneg double %516
  %518 = load <2 x double>, ptr %515, align 8, !tbaa !15
  %519 = insertelement <2 x double> poison, double %516, i64 0
  %520 = insertelement <2 x double> %519, double %517, i64 1
  %521 = fmul <2 x double> %518, %520
  %522 = shufflevector <2 x double> %521, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %523 = shufflevector <2 x double> %514, <2 x double> poison, <2 x i32> zeroinitializer
  %524 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %523, <2 x double> %518, <2 x double> %522)
  store <2 x double> %524, ptr %21, align 16, !tbaa !15
  %525 = fadd <2 x double> %506, %524
  store <2 x double> %525, ptr %20, align 16, !tbaa !15
  %gep1579 = getelementptr %struct.doublecomplex, ptr %invariant.gep1578, i64 %indvars.iv1425
  %526 = call { double, double } @Cd(ptr noundef nonnull %gep1579)
  %527 = extractvalue { double, double } %526, 0
  %528 = extractvalue { double, double } %526, 1
  %529 = fneg double %528
  %530 = call ptr @_pCd(ptr noundef nonnull %22)
  %531 = getelementptr inbounds i8, ptr %530, i64 8
  store double %527, ptr %530, align 8
  store double %529, ptr %531, align 8
  %532 = load <2 x double>, ptr %22, align 16
  %533 = load double, ptr %239, align 8, !tbaa !23
  %534 = fneg double %533
  %535 = load <2 x double>, ptr %515, align 8, !tbaa !15
  %536 = insertelement <2 x double> poison, double %533, i64 0
  %537 = insertelement <2 x double> %536, double %534, i64 1
  %538 = fmul <2 x double> %535, %537
  %539 = shufflevector <2 x double> %538, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %540 = shufflevector <2 x double> %532, <2 x double> poison, <2 x i32> zeroinitializer
  %541 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %540, <2 x double> %535, <2 x double> %539)
  store <2 x double> %541, ptr %21, align 16, !tbaa !15
  %542 = fadd <2 x double> %507, %541
  store <2 x double> %542, ptr %20, align 16, !tbaa !15
  %indvars.iv.next1426 = add nsw i64 %indvars.iv1425, 1
  %lftr.wideiv1428 = trunc i64 %indvars.iv.next1426 to i32
  %exitcond1429.not = icmp eq i32 %indvars.iv1422, %lftr.wideiv1428
  br i1 %exitcond1429.not, label %._crit_edge1243, label %505, !llvm.loop !24

._crit_edge1243:                                  ; preds = %505, %.loopexit1193
  %543 = phi <2 x double> [ zeroinitializer, %.loopexit1193 ], [ %525, %505 ]
  %544 = phi <2 x double> [ zeroinitializer, %.loopexit1193 ], [ %542, %505 ]
  %545 = fmul <2 x double> %475, %543
  store <2 x double> %545, ptr %21, align 16, !tbaa !15
  %546 = call { double, double } @Cd(ptr noundef nonnull %26)
  %547 = extractvalue { double, double } %546, 0
  %548 = extractvalue { double, double } %546, 1
  %549 = fneg double %548
  %550 = call ptr @_pCd(ptr noundef nonnull %23)
  %551 = getelementptr inbounds i8, ptr %550, i64 8
  store double %547, ptr %550, align 8
  store double %549, ptr %551, align 8
  %552 = load <2 x double>, ptr %23, align 16
  %553 = load double, ptr %240, align 8, !tbaa !23
  %554 = fneg double %553
  %555 = insertelement <2 x double> poison, double %553, i64 0
  %556 = insertelement <2 x double> %555, double %554, i64 1
  %557 = fmul <2 x double> %544, %556
  %558 = shufflevector <2 x double> %557, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %559 = shufflevector <2 x double> %552, <2 x double> poison, <2 x i32> zeroinitializer
  %560 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %559, <2 x double> %544, <2 x double> %558)
  %561 = load <2 x double>, ptr %21, align 16, !tbaa !15
  %562 = fsub <2 x double> %561, %560
  store <2 x double> %562, ptr %20, align 16, !tbaa !15
  store <2 x double> %562, ptr %30, align 16, !tbaa !15
  %563 = trunc nsw i64 %indvars.iv.next1436 to i32
  %564 = mul i32 %33, %563
  %565 = sext i32 %564 to i64
  %566 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %565
  %567 = mul i32 %37, %563
  %568 = load <2 x double>, ptr %26, align 16
  %569 = sext i32 %567 to i64
  %570 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %569
  %571 = load double, ptr %238, align 8, !tbaa !23
  %572 = fneg double %571
  %573 = load <2 x double>, ptr %566, align 8, !tbaa !15
  %574 = fmul <2 x double> %475, %573
  store <2 x double> %574, ptr %22, align 16, !tbaa !15
  %575 = load <2 x double>, ptr %570, align 8, !tbaa !15
  %576 = insertelement <2 x double> poison, double %571, i64 0
  %577 = insertelement <2 x double> %576, double %572, i64 1
  %578 = fmul <2 x double> %575, %577
  %579 = shufflevector <2 x double> %578, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %580 = shufflevector <2 x double> %568, <2 x double> poison, <2 x i32> zeroinitializer
  %581 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %580, <2 x double> %575, <2 x double> %579)
  store <2 x double> %581, ptr %23, align 16, !tbaa !15
  %582 = fsub <2 x double> %574, %581
  store <2 x double> %582, ptr %21, align 16, !tbaa !15
  %583 = call { double, double } @Cd(ptr noundef nonnull %21)
  %584 = extractvalue { double, double } %583, 0
  %585 = extractvalue { double, double } %583, 1
  %586 = fneg double %585
  %587 = call ptr @_pCd(ptr noundef nonnull %20)
  %588 = getelementptr inbounds i8, ptr %587, i64 8
  store double %584, ptr %587, align 8
  store double %586, ptr %588, align 8
  %589 = load <2 x double>, ptr %20, align 16, !tbaa !15
  store <2 x double> %589, ptr %24, align 16, !tbaa !15
  %590 = extractelement <2 x double> %589, i64 0
  %591 = fcmp oge double %590, 0.000000e+00
  %592 = fneg double %590
  %593 = select i1 %591, double %590, double %592
  %594 = call { double, double } @Cd(ptr noundef nonnull %24)
  %595 = extractvalue { double, double } %594, 1
  %596 = fcmp oge double %595, 0.000000e+00
  %597 = fneg double %595
  %598 = select i1 %596, double %595, double %597
  %599 = fadd double %593, %598
  %600 = fcmp ugt double %599, %473
  br i1 %600, label %._crit_edge1243._crit_edge, label %601

._crit_edge1243._crit_edge:                       ; preds = %._crit_edge1243
  %.pre1503 = load double, ptr %24, align 16, !tbaa !17
  br label %602

601:                                              ; preds = %._crit_edge1243
  store double %473, ptr %20, align 16, !tbaa !17
  store double 0.000000e+00, ptr %237, align 8, !tbaa !23
  store double %473, ptr %24, align 16, !tbaa !17
  store double 0.000000e+00, ptr %242, align 8, !tbaa !23
  br label %602

602:                                              ; preds = %._crit_edge1243._crit_edge, %601
  %603 = phi double [ %.pre1503, %._crit_edge1243._crit_edge ], [ %473, %601 ]
  %604 = call { double, double } @Cd(ptr noundef nonnull %24)
  %605 = extractvalue { double, double } %604, 1
  %606 = insertelement <2 x double> poison, double %603, i64 0
  %607 = insertelement <2 x double> %606, double %605, i64 1
  %608 = fcmp oge <2 x double> %607, zeroinitializer
  %609 = fneg <2 x double> %607
  %610 = select <2 x i1> %608, <2 x double> %607, <2 x double> %609
  %shift1916 = shufflevector <2 x double> %610, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %611 = fadd <2 x double> %610, %shift1916
  %612 = extractelement <2 x double> %611, i64 0
  %613 = fcmp olt double %612, 1.000000e+00
  %.pre1505 = load double, ptr %30, align 16, !tbaa !17
  br i1 %613, label %614, label %665

614:                                              ; preds = %602
  %615 = call { double, double } @Cd(ptr noundef nonnull %30)
  %616 = extractvalue { double, double } %615, 1
  %617 = insertelement <2 x double> poison, double %.pre1505, i64 0
  %618 = insertelement <2 x double> %617, double %616, i64 1
  %619 = fcmp oge <2 x double> %618, zeroinitializer
  %620 = fneg <2 x double> %618
  %621 = select <2 x i1> %619, <2 x double> %618, <2 x double> %620
  %622 = load <2 x double>, ptr %24, align 16
  %623 = call { double, double } @Cd(ptr noundef nonnull %24)
  %624 = extractvalue { double, double } %623, 1
  %625 = insertelement <2 x double> %622, double %624, i64 1
  %626 = fcmp oge <2 x double> %625, zeroinitializer
  %627 = fneg <2 x double> %625
  %628 = select <2 x i1> %626, <2 x double> %625, <2 x double> %627
  %629 = shufflevector <2 x double> %621, <2 x double> %628, <2 x i32> <i32 0, i32 2>
  %630 = shufflevector <2 x double> %621, <2 x double> %628, <2 x i32> <i32 1, i32 3>
  %631 = fadd <2 x double> %629, %630
  %632 = extractelement <2 x double> %631, i64 1
  %633 = fmul double %125, %632
  %634 = extractelement <2 x double> %631, i64 0
  %635 = fcmp ult double %634, %633
  %.pre1504 = load double, ptr %30, align 16, !tbaa !17
  br i1 %635, label %665, label %636

636:                                              ; preds = %614
  %637 = fcmp oge double %.pre1504, 0.000000e+00
  %638 = fneg double %.pre1504
  %639 = select i1 %637, double %.pre1504, double %638
  %640 = call { double, double } @Cd(ptr noundef nonnull %30)
  %641 = extractvalue { double, double } %640, 1
  %642 = fcmp oge double %641, 0.000000e+00
  %643 = fneg double %641
  %644 = select i1 %642, double %641, double %643
  %645 = fadd double %639, %644
  %646 = fdiv double 1.000000e+00, %645
  %647 = load i32, ptr %25, align 4, !tbaa !5
  %648 = sext i32 %647 to i64
  %.not11431248 = icmp slt i64 %indvars.iv1435, %648
  br i1 %.not11431248, label %._crit_edge1252, label %.lr.ph1251.preheader

.lr.ph1251.preheader:                             ; preds = %636
  %649 = sub i32 %indvars.iv1422.in, %647
  %650 = zext i32 %649 to i64
  %651 = add nuw nsw i64 %650, 1
  %min.iters.check1661 = icmp eq i32 %indvars.iv1422.in, %647
  br i1 %min.iters.check1661, label %.lr.ph1251.preheader1961, label %vector.ph1662

vector.ph1662:                                    ; preds = %.lr.ph1251.preheader
  %n.vec1664 = and i64 %651, 8589934590
  %ind.end1665 = add nsw i64 %n.vec1664, %648
  %broadcast.splatinsert1673 = insertelement <2 x double> poison, double %646, i64 0
  %invariant.gep2025 = getelementptr %struct.doublecomplex, ptr %46, i64 %648
  %652 = shufflevector <2 x double> %broadcast.splatinsert1673, <2 x double> poison, <4 x i32> zeroinitializer
  br label %vector.body1667

vector.body1667:                                  ; preds = %vector.body1667, %vector.ph1662
  %index1668 = phi i64 [ 0, %vector.ph1662 ], [ %index.next1676, %vector.body1667 ]
  %gep2026 = getelementptr %struct.doublecomplex, ptr %invariant.gep2025, i64 %index1668
  %wide.vec1670 = load <4 x double>, ptr %gep2026, align 8, !tbaa !15
  %interleaved.vec1675 = fmul <4 x double> %652, %wide.vec1670
  store <4 x double> %interleaved.vec1675, ptr %gep2026, align 8, !tbaa !15
  %index.next1676 = add nuw i64 %index1668, 2
  %653 = icmp eq i64 %index.next1676, %n.vec1664
  br i1 %653, label %middle.block1659, label %vector.body1667, !llvm.loop !25

middle.block1659:                                 ; preds = %vector.body1667
  %cmp.n1677 = icmp eq i64 %651, %n.vec1664
  br i1 %cmp.n1677, label %._crit_edge1252, label %.lr.ph1251.preheader1961

.lr.ph1251.preheader1961:                         ; preds = %middle.block1659, %.lr.ph1251.preheader
  %indvars.iv1430.ph = phi i64 [ %648, %.lr.ph1251.preheader ], [ %ind.end1665, %middle.block1659 ]
  %654 = insertelement <2 x double> poison, double %646, i64 0
  %655 = shufflevector <2 x double> %654, <2 x double> poison, <2 x i32> zeroinitializer
  br label %.lr.ph1251

.lr.ph1251:                                       ; preds = %.lr.ph1251.preheader1961, %.lr.ph1251
  %indvars.iv1430 = phi i64 [ %indvars.iv.next1431, %.lr.ph1251 ], [ %indvars.iv1430.ph, %.lr.ph1251.preheader1961 ]
  %656 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %indvars.iv1430
  %657 = load <2 x double>, ptr %656, align 8, !tbaa !15
  %658 = fmul <2 x double> %655, %657
  store <2 x double> %658, ptr %656, align 8, !tbaa !15
  %indvars.iv.next1431 = add nsw i64 %indvars.iv1430, 1
  %lftr.wideiv1433 = trunc i64 %indvars.iv.next1431 to i32
  %exitcond1434.not = icmp eq i32 %indvars.iv1422, %lftr.wideiv1433
  br i1 %exitcond1434.not, label %._crit_edge1252, label %.lr.ph1251, !llvm.loop !26

._crit_edge1252:                                  ; preds = %.lr.ph1251, %middle.block1659, %636
  %659 = fmul double %.11075, %646
  %660 = load <2 x double>, ptr %30, align 16, !tbaa !15
  %661 = insertelement <2 x double> poison, double %646, i64 0
  %662 = shufflevector <2 x double> %661, <2 x double> poison, <2 x i32> zeroinitializer
  %663 = fmul <2 x double> %662, %660
  store <2 x double> %663, ptr %20, align 16, !tbaa !15
  store <2 x double> %663, ptr %30, align 16, !tbaa !15
  %664 = extractelement <2 x double> %663, i64 0
  br label %665

665:                                              ; preds = %614, %._crit_edge1252, %602
  %666 = phi double [ %664, %._crit_edge1252 ], [ %.pre1504, %614 ], [ %.pre1505, %602 ]
  %.21076 = phi double [ %659, %._crit_edge1252 ], [ %.11075, %614 ], [ %.11075, %602 ]
  %667 = load double, ptr %241, align 8, !tbaa !23
  %668 = insertelement <2 x double> poison, double %666, i64 0
  %669 = insertelement <2 x double> %668, double %667, i64 1
  %670 = fneg <2 x double> %669
  store <2 x double> %670, ptr %21, align 16, !tbaa !15
  call void @zladiv_(ptr noundef nonnull %20, ptr noundef nonnull %21, ptr noundef nonnull %24) #7
  %671 = getelementptr %struct.doublecomplex, ptr %14, i64 %indvars.iv1435
  %672 = load <2 x double>, ptr %20, align 16, !tbaa !15
  store <2 x double> %672, ptr %671, align 8, !tbaa !15
  %673 = extractelement <2 x double> %672, i64 0
  %674 = fcmp oge double %673, 0.000000e+00
  %675 = fneg double %673
  %676 = select i1 %674, double %673, double %675
  %677 = call { double, double } @Cd(ptr noundef nonnull %671)
  %678 = extractvalue { double, double } %677, 1
  %679 = fcmp oge double %678, 0.000000e+00
  %680 = fneg double %678
  %681 = select i1 %679, double %678, double %680
  %682 = fadd double %676, %681
  %683 = fcmp oge double %.21076, %682
  %684 = select i1 %683, double %.21076, double %682
  %685 = load i32, ptr %19, align 4, !tbaa !5
  %686 = sext i32 %685 to i64
  %.not1136.not = icmp slt i64 %indvars.iv.next1436, %686
  br i1 %.not1136.not, label %.lr.ph1261, label %._crit_edge1262, !llvm.loop !27

._crit_edge1262:                                  ; preds = %665, %._crit_edge1229
  br i1 %.not1124, label %697, label %687

687:                                              ; preds = %._crit_edge1262
  %688 = load i32, ptr %3, align 4, !tbaa !5
  %689 = add nsw i32 %688, 1
  %690 = load i32, ptr %25, align 4, !tbaa !5
  %691 = sub i32 %689, %690
  store i32 %691, ptr %19, align 4, !tbaa !5
  %692 = mul nsw i32 %690, %40
  %693 = sext i32 %692 to i64
  %gep = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %693
  %694 = sext i32 %690 to i64
  %695 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %694
  %696 = sext i32 %688 to i64
  %gep1281 = getelementptr %struct.doublecomplex, ptr %14, i64 %696
  call void @zgemv_(ptr noundef nonnull @.str.9, ptr noundef nonnull %3, ptr noundef nonnull %19, ptr noundef nonnull @c_b2, ptr noundef %gep, ptr noundef nonnull %9, ptr noundef nonnull %695, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b1, ptr noundef %gep1281, ptr noundef nonnull @c__1) #7
  br label %699

697:                                              ; preds = %._crit_edge1262
  %698 = load i32, ptr %25, align 4, !tbaa !5
  br label %699

699:                                              ; preds = %697, %687
  %.01087 = phi i32 [ 1, %687 ], [ %698, %697 ]
  %.01079 = phi i32 [ 1, %687 ], [ 0, %697 ]
  %700 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %700, ptr %19, align 4, !tbaa !5
  %.not11381263 = icmp sgt i32 %.01087, %700
  br i1 %.not11381263, label %._crit_edge1268, label %.lr.ph1267

.lr.ph1267:                                       ; preds = %699, %.lr.ph1267
  %.51265 = phi i32 [ %718, %.lr.ph1267 ], [ %.01087, %699 ]
  %.310771264 = phi double [ %717, %.lr.ph1267 ], [ 0.000000e+00, %699 ]
  %701 = load i32, ptr %3, align 4, !tbaa !5
  %702 = mul nuw nsw i32 %701, %.01079
  %703 = add nsw i32 %702, %.51265
  %704 = sext i32 %703 to i64
  %705 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %704
  %706 = load double, ptr %705, align 8, !tbaa !17
  %707 = call { double, double } @Cd(ptr noundef nonnull %705)
  %708 = extractvalue { double, double } %707, 1
  %709 = insertelement <2 x double> poison, double %706, i64 0
  %710 = insertelement <2 x double> %709, double %708, i64 1
  %711 = fcmp oge <2 x double> %710, zeroinitializer
  %712 = fneg <2 x double> %710
  %713 = select <2 x i1> %711, <2 x double> %710, <2 x double> %712
  %shift1917 = shufflevector <2 x double> %713, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %714 = fadd <2 x double> %713, %shift1917
  %715 = extractelement <2 x double> %714, i64 0
  %716 = fcmp oge double %.310771264, %715
  %717 = select i1 %716, double %.310771264, double %715
  %718 = add nsw i32 %.51265, 1
  %719 = load i32, ptr %19, align 4, !tbaa !5
  %.not1138.not = icmp slt i32 %.51265, %719
  br i1 %.not1138.not, label %.lr.ph1267, label %._crit_edge1268, !llvm.loop !28

._crit_edge1268:                                  ; preds = %.lr.ph1267, %699
  %.31077.lcssa = phi double [ 0.000000e+00, %699 ], [ %717, %.lr.ph1267 ]
  %720 = load double, ptr %28, align 8, !tbaa !15
  %721 = fcmp ogt double %.31077.lcssa, %720
  br i1 %721, label %722, label %765

722:                                              ; preds = %._crit_edge1268
  %723 = fdiv double 1.000000e+00, %.31077.lcssa
  %724 = load i32, ptr %3, align 4, !tbaa !5
  %.not11391270 = icmp sgt i32 %.01087, %724
  br i1 %.not11391270, label %.loopexit1195, label %.lr.ph1273

.lr.ph1273:                                       ; preds = %722
  %725 = mul nsw i32 %262, %40
  %726 = mul nuw nsw i32 %724, %.01079
  %727 = sext i32 %.01087 to i64
  %728 = sext i32 %725 to i64
  %729 = sext i32 %726 to i64
  %730 = add i32 %724, 1
  %invariant.gep1580 = getelementptr %struct.doublecomplex, ptr %46, i64 %729
  %invariant.gep1582 = getelementptr %struct.doublecomplex, ptr %42, i64 %728
  %731 = sub i32 %724, %.01087
  %732 = zext i32 %731 to i64
  %733 = add nuw nsw i64 %732, 1
  %min.iters.check1647 = icmp ult i32 %731, 7
  br i1 %min.iters.check1647, label %scalar.ph1646.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph1273
  %734 = add nsw i64 %727, %728
  %735 = shl nsw i64 %734, 4
  %scevgep1628 = getelementptr i8, ptr %scevgep1627, i64 %735
  %736 = sub i32 %724, %.01087
  %737 = zext i32 %736 to i64
  %738 = shl nuw nsw i64 %737, 4
  %739 = add nsw i64 %735, %738
  %scevgep1630 = getelementptr i8, ptr %scevgep1629, i64 %739
  %740 = add nsw i64 %727, %729
  %741 = shl nsw i64 %740, 4
  %scevgep1632 = getelementptr i8, ptr %scevgep1631, i64 %741
  %742 = add nsw i64 %741, %738
  %scevgep1634 = getelementptr i8, ptr %scevgep1633, i64 %742
  %scevgep1636 = getelementptr i8, ptr %scevgep1635, i64 %735
  %scevgep1638 = getelementptr i8, ptr %scevgep1637, i64 %739
  %scevgep1640 = getelementptr i8, ptr %scevgep1639, i64 %741
  %scevgep1641 = getelementptr i8, ptr %14, i64 %742
  %bound0 = icmp ult ptr %scevgep1628, %scevgep1634
  %bound1 = icmp ult ptr %scevgep1632, %scevgep1630
  %found.conflict = and i1 %bound0, %bound1
  %bound01642 = icmp ult ptr %scevgep1636, %scevgep1641
  %bound11643 = icmp ult ptr %scevgep1640, %scevgep1638
  %found.conflict1644 = and i1 %bound01642, %bound11643
  %conflict.rdx = or i1 %found.conflict, %found.conflict1644
  br i1 %conflict.rdx, label %scalar.ph1646.preheader, label %vector.ph1648

vector.ph1648:                                    ; preds = %vector.memcheck
  %n.vec1650 = and i64 %733, 8589934590
  %ind.end1651 = add nsw i64 %n.vec1650, %727
  %broadcast.splatinsert = insertelement <2 x double> poison, double %723, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1653

vector.body1653:                                  ; preds = %vector.body1653, %vector.ph1648
  %index1654 = phi i64 [ 0, %vector.ph1648 ], [ %index.next1657, %vector.body1653 ]
  %offset.idx1655 = add i64 %index1654, %727
  %743 = getelementptr %struct.doublecomplex, ptr %invariant.gep1580, i64 %offset.idx1655
  %wide.vec = load <4 x double>, ptr %743, align 8, !tbaa !15
  %strided.vec = shufflevector <4 x double> %wide.vec, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec1656 = shufflevector <4 x double> %wide.vec, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %744 = fmul <2 x double> %broadcast.splat, %strided.vec
  %745 = fmul <2 x double> %broadcast.splat, %strided.vec1656
  %746 = getelementptr %struct.doublecomplex, ptr %invariant.gep1582, i64 %offset.idx1655
  %interleaved.vec = shufflevector <2 x double> %744, <2 x double> %745, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec, ptr %746, align 8, !tbaa !15
  %index.next1657 = add nuw i64 %index1654, 2
  %747 = icmp eq i64 %index.next1657, %n.vec1650
  br i1 %747, label %middle.block1645, label %vector.body1653, !llvm.loop !29

middle.block1645:                                 ; preds = %vector.body1653
  %cmp.n1658 = icmp eq i64 %733, %n.vec1650
  %748 = shufflevector <2 x double> %744, <2 x double> %745, <2 x i32> <i32 1, i32 3>
  br i1 %cmp.n1658, label %..loopexit1195_crit_edge, label %scalar.ph1646.preheader

scalar.ph1646.preheader:                          ; preds = %middle.block1645, %vector.memcheck, %.lr.ph1273
  %indvars.iv1438.ph = phi i64 [ %727, %vector.memcheck ], [ %727, %.lr.ph1273 ], [ %ind.end1651, %middle.block1645 ]
  %749 = trunc i64 %indvars.iv1438.ph to i32
  %750 = add i32 %724, %749
  %751 = and i32 %750, 1
  %lcmp.mod.not.not = icmp eq i32 %751, 0
  br i1 %lcmp.mod.not.not, label %scalar.ph1646.prol, label %scalar.ph1646.prol.loopexit

scalar.ph1646.prol:                               ; preds = %scalar.ph1646.preheader
  %gep1581.prol = getelementptr %struct.doublecomplex, ptr %invariant.gep1580, i64 %indvars.iv1438.ph
  %752 = load <2 x double>, ptr %gep1581.prol, align 8, !tbaa !15
  %753 = insertelement <2 x double> poison, double %723, i64 0
  %754 = shufflevector <2 x double> %753, <2 x double> poison, <2 x i32> zeroinitializer
  %755 = fmul <2 x double> %754, %752
  %gep1583.prol = getelementptr %struct.doublecomplex, ptr %invariant.gep1582, i64 %indvars.iv1438.ph
  store <2 x double> %755, ptr %gep1583.prol, align 8, !tbaa !15
  %indvars.iv.next1439.prol = add nsw i64 %indvars.iv1438.ph, 1
  br label %scalar.ph1646.prol.loopexit

scalar.ph1646.prol.loopexit:                      ; preds = %scalar.ph1646.prol, %scalar.ph1646.preheader
  %.lcssa1971.unr = phi <2 x double> [ poison, %scalar.ph1646.preheader ], [ %755, %scalar.ph1646.prol ]
  %indvars.iv1438.unr = phi i64 [ %indvars.iv1438.ph, %scalar.ph1646.preheader ], [ %indvars.iv.next1439.prol, %scalar.ph1646.prol ]
  %756 = icmp eq i32 %724, %749
  br i1 %756, label %..loopexit1195_crit_edge, label %scalar.ph1646.preheader.new

scalar.ph1646.preheader.new:                      ; preds = %scalar.ph1646.prol.loopexit
  %757 = insertelement <2 x double> poison, double %723, i64 0
  %758 = shufflevector <2 x double> %757, <2 x double> poison, <2 x i32> zeroinitializer
  %759 = insertelement <2 x double> poison, double %723, i64 0
  %760 = shufflevector <2 x double> %759, <2 x double> poison, <2 x i32> zeroinitializer
  br label %scalar.ph1646

scalar.ph1646:                                    ; preds = %scalar.ph1646, %scalar.ph1646.preheader.new
  %indvars.iv1438 = phi i64 [ %indvars.iv1438.unr, %scalar.ph1646.preheader.new ], [ %indvars.iv.next1439.1, %scalar.ph1646 ]
  %gep1581 = getelementptr %struct.doublecomplex, ptr %invariant.gep1580, i64 %indvars.iv1438
  %761 = load <2 x double>, ptr %gep1581, align 8, !tbaa !15
  %762 = fmul <2 x double> %758, %761
  %gep1583 = getelementptr %struct.doublecomplex, ptr %invariant.gep1582, i64 %indvars.iv1438
  store <2 x double> %762, ptr %gep1583, align 8, !tbaa !15
  %indvars.iv.next1439 = add nsw i64 %indvars.iv1438, 1
  %gep1581.1 = getelementptr %struct.doublecomplex, ptr %invariant.gep1580, i64 %indvars.iv.next1439
  %763 = load <2 x double>, ptr %gep1581.1, align 8, !tbaa !15
  %764 = fmul <2 x double> %760, %763
  %gep1583.1 = getelementptr %struct.doublecomplex, ptr %invariant.gep1582, i64 %indvars.iv.next1439
  store <2 x double> %764, ptr %gep1583.1, align 8, !tbaa !15
  %indvars.iv.next1439.1 = add nsw i64 %indvars.iv1438, 2
  %lftr.wideiv1441.1 = trunc i64 %indvars.iv.next1439.1 to i32
  %exitcond1442.not.1 = icmp eq i32 %730, %lftr.wideiv1441.1
  br i1 %exitcond1442.not.1, label %..loopexit1195_crit_edge, label %scalar.ph1646, !llvm.loop !30

765:                                              ; preds = %._crit_edge1268
  %766 = load i32, ptr %3, align 4, !tbaa !5
  %767 = add nsw i32 %766, 1
  br label %.loopexit1195

..loopexit1195_crit_edge:                         ; preds = %scalar.ph1646.prol.loopexit, %scalar.ph1646, %middle.block1645
  %768 = phi <2 x double> [ %748, %middle.block1645 ], [ %.lcssa1971.unr, %scalar.ph1646.prol.loopexit ], [ %764, %scalar.ph1646 ]
  store <2 x double> %768, ptr %20, align 16, !tbaa !15
  br label %.loopexit1195

.loopexit1195:                                    ; preds = %722, %..loopexit1195_crit_edge, %765
  %.11088 = phi i32 [ %767, %765 ], [ %.01087, %..loopexit1195_crit_edge ], [ %.01087, %722 ]
  %769 = add i32 %.11088, -1
  store i32 %769, ptr %19, align 4, !tbaa !5
  %.not1140.not1276 = icmp sgt i32 %.11088, 1
  br i1 %.not1140.not1276, label %.lr.ph1279, label %.loopexit1194

.lr.ph1279:                                       ; preds = %.loopexit1195
  %770 = mul nsw i32 %262, %40
  %771 = add i32 %770, 1
  %772 = sext i32 %771 to i64
  %773 = shl nsw i64 %772, 4
  %scevgep1444 = getelementptr i8, ptr %scevgep, i64 %773
  %774 = zext nneg i32 %769 to i64
  %775 = shl nuw nsw i64 %774, 4
  call void @llvm.memset.p0.i64(ptr align 8 %scevgep1444, i8 0, i64 %775, i1 false), !tbaa !15
  br label %.loopexit1194

.loopexit1194:                                    ; preds = %.lr.ph1279, %.loopexit1195, %._crit_edge1224, %258
  %.11084 = phi i32 [ %262, %._crit_edge1224 ], [ %.010831284, %258 ], [ %262, %.loopexit1195 ], [ %262, %.lr.ph1279 ]
  %776 = load i32, ptr %25, align 4, !tbaa !5
  %777 = add nsw i32 %776, 1
  store i32 %777, ptr %25, align 4, !tbaa !5
  %778 = load i32, ptr %18, align 4, !tbaa !5
  %.not1118.not = icmp slt i32 %776, %778
  br i1 %.not1118.not, label %257, label %.loopexit1196, !llvm.loop !31

.loopexit1196:                                    ; preds = %.loopexit1194, %234, %._crit_edge1217
  br i1 %.not11121156, label %.loopexit1192, label %779

779:                                              ; preds = %.loopexit1196
  %780 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %780, ptr %25, align 4, !tbaa !5
  %781 = icmp sgt i32 %780, 0
  br i1 %781, label %.lr.ph1363, label %.loopexit1192

.lr.ph1363:                                       ; preds = %779
  %782 = add nsw i32 %.2105015141518, 1
  %783 = add i32 %43, 1
  %784 = getelementptr inbounds i8, ptr %20, i64 8
  %785 = getelementptr inbounds i8, ptr %26, i64 8
  %786 = getelementptr inbounds i8, ptr %24, i64 8
  %787 = shl nsw i64 %44, 4
  %scevgep1448 = getelementptr i8, ptr %10, i64 %787
  %788 = sext i32 %32 to i64
  %789 = sext i32 %36 to i64
  %790 = add i32 %32, 1
  %791 = add i32 %36, 1
  %792 = shl nsw i64 %44, 4
  %793 = getelementptr i8, ptr %10, i64 %792
  %scevgep1698 = getelementptr i8, ptr %793, i64 16
  %794 = getelementptr i8, ptr %10, i64 %792
  %scevgep1700 = getelementptr i8, ptr %794, i64 -8
  %scevgep1703 = getelementptr i8, ptr %14, i64 -24
  %795 = getelementptr i8, ptr %10, i64 %792
  %scevgep1705 = getelementptr i8, ptr %795, i64 24
  %scevgep1707 = getelementptr i8, ptr %10, i64 %792
  %scevgep1709 = getelementptr i8, ptr %14, i64 8
  %scevgep1711 = getelementptr i8, ptr %14, i64 -16
  %796 = shl nsw i64 %34, 4
  %797 = shl nsw i64 %788, 4
  %798 = mul nsw i64 %788, -16
  %799 = shl nsw i64 %788, 4
  %800 = sub nuw nsw i64 -16, %799
  %801 = shl nsw i64 %38, 4
  %802 = shl nsw i64 %789, 4
  %803 = mul nsw i64 %789, -16
  %804 = shl nsw i64 %789, 4
  %805 = sub nuw nsw i64 -16, %804
  %scevgep1745 = getelementptr i8, ptr %14, i64 8
  %scevgep1842 = getelementptr i8, ptr %14, i64 -24
  %806 = shl nsw i64 %34, 4
  %807 = getelementptr i8, ptr %4, i64 %806
  %scevgep1844 = getelementptr i8, ptr %807, i64 16
  %808 = getelementptr i8, ptr %4, i64 %806
  %scevgep1846 = getelementptr i8, ptr %808, i64 -8
  %809 = shl nsw i64 %38, 4
  %810 = getelementptr i8, ptr %6, i64 %809
  %scevgep1848 = getelementptr i8, ptr %810, i64 16
  %811 = getelementptr i8, ptr %6, i64 %809
  %scevgep1850 = getelementptr i8, ptr %811, i64 -8
  %scevgep1852 = getelementptr i8, ptr %14, i64 8
  %scevgep1853 = getelementptr i8, ptr %14, i64 -16
  %812 = getelementptr i8, ptr %4, i64 %806
  %scevgep1855 = getelementptr i8, ptr %812, i64 24
  %scevgep1857 = getelementptr i8, ptr %4, i64 %806
  %813 = getelementptr i8, ptr %6, i64 %809
  %scevgep1859 = getelementptr i8, ptr %813, i64 24
  %scevgep1861 = getelementptr i8, ptr %6, i64 %809
  %814 = insertelement <2 x double> poison, double %118, i64 0
  %815 = shufflevector <2 x double> %814, <2 x double> poison, <2 x i32> zeroinitializer
  %816 = extractelement <2 x double> %227, i64 0
  %817 = extractelement <2 x double> %227, i64 1
  %818 = shufflevector <2 x double> %233, <2 x double> poison, <2 x i32> zeroinitializer
  %819 = extractelement <2 x double> %233, i64 0
  %820 = extractelement <2 x double> %233, i64 1
  %821 = shufflevector <2 x double> %233, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %invariant.gep2031 = getelementptr i8, ptr %14, i64 -24
  %822 = getelementptr i8, ptr %4, i64 %796
  %823 = getelementptr i8, ptr %822, i64 16
  %824 = getelementptr i8, ptr %4, i64 %796
  %825 = getelementptr i8, ptr %824, i64 -8
  %826 = getelementptr i8, ptr %6, i64 %801
  %827 = getelementptr i8, ptr %826, i64 16
  %828 = getelementptr i8, ptr %6, i64 %801
  %829 = getelementptr i8, ptr %828, i64 -8
  %invariant.gep2033 = getelementptr i8, ptr %14, i64 -16
  %830 = getelementptr i8, ptr %4, i64 %796
  %831 = getelementptr i8, ptr %830, i64 24
  %832 = getelementptr i8, ptr %4, i64 %796
  %833 = getelementptr i8, ptr %6, i64 %801
  %834 = getelementptr i8, ptr %833, i64 24
  %835 = getelementptr i8, ptr %6, i64 %801
  br label %836

836:                                              ; preds = %.lr.ph1363, %.loopexit1190
  %.210851361 = phi i32 [ %782, %.lr.ph1363 ], [ %.31086, %.loopexit1190 ]
  %storemerge11201360 = phi i32 [ %780, %.lr.ph1363 ], [ %1434, %.loopexit1190 ]
  br i1 %.not1106, label %837, label %.thread1181

837:                                              ; preds = %836
  %838 = zext nneg i32 %storemerge11201360 to i64
  %839 = getelementptr inbounds i32, ptr %31, i64 %838
  %840 = load i32, ptr %839, align 4, !tbaa !5
  %.not1121 = icmp eq i32 %840, 0
  br i1 %.not1121, label %.loopexit1190, label %.thread1181

.thread1181:                                      ; preds = %836, %837
  %841 = add i32 %.210851361, -1
  %842 = mul i32 %storemerge11201360, %33
  store i32 %842, ptr %18, align 4, !tbaa !5
  %843 = mul i32 %storemerge11201360, %37
  store i32 %843, ptr %19, align 4, !tbaa !5
  %844 = sext i32 %842 to i64
  %845 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %844
  %846 = load double, ptr %845, align 8, !tbaa !17
  %847 = call { double, double } @Cd(ptr noundef nonnull %845)
  %848 = extractvalue { double, double } %847, 1
  %849 = insertelement <2 x double> poison, double %846, i64 0
  %850 = insertelement <2 x double> %849, double %848, i64 1
  %851 = fcmp oge <2 x double> %850, zeroinitializer
  %852 = fneg <2 x double> %850
  %853 = select <2 x i1> %851, <2 x double> %850, <2 x double> %852
  %shift1918 = shufflevector <2 x double> %853, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %854 = fadd <2 x double> %853, %shift1918
  %855 = extractelement <2 x double> %854, i64 0
  %856 = load double, ptr %28, align 8, !tbaa !15
  %857 = fcmp ugt double %855, %856
  br i1 %857, label %880, label %858

858:                                              ; preds = %.thread1181
  %859 = load i32, ptr %19, align 4, !tbaa !5
  %860 = sext i32 %859 to i64
  %861 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %860
  %862 = load double, ptr %861, align 8, !tbaa !17
  %863 = fcmp oge double %862, 0.000000e+00
  %864 = fneg double %862
  %865 = select i1 %863, double %862, double %864
  %866 = fcmp ugt double %865, %856
  br i1 %866, label %880, label %867

867:                                              ; preds = %858
  %868 = load i32, ptr %3, align 4, !tbaa !5
  %.not11331287 = icmp slt i32 %868, 1
  br i1 %.not11331287, label %876, label %.lr.ph1290

.lr.ph1290:                                       ; preds = %867
  %869 = mul i32 %841, %43
  %870 = add i32 %869, 1
  %871 = sext i32 %870 to i64
  %872 = shl nsw i64 %871, 4
  %scevgep1449 = getelementptr i8, ptr %scevgep1448, i64 %872
  %873 = zext nneg i32 %868 to i64
  %874 = shl nuw nsw i64 %873, 4
  call void @llvm.memset.p0.i64(ptr align 8 %scevgep1449, i8 0, i64 %874, i1 false), !tbaa !15
  %875 = add i32 %869, %868
  store i32 %875, ptr %19, align 4, !tbaa !5
  br label %876

876:                                              ; preds = %.lr.ph1290, %867
  %877 = mul i32 %841, %783
  store i32 %877, ptr %18, align 4, !tbaa !5
  %878 = sext i32 %877 to i64
  %879 = getelementptr inbounds %struct.doublecomplex, ptr %45, i64 %878
  store <2 x double> <double 1.000000e+00, double 0.000000e+00>, ptr %879, align 8, !tbaa !15
  br label %.loopexit1190

880:                                              ; preds = %858, %.thread1181
  %881 = load i32, ptr %25, align 4, !tbaa !5
  %882 = mul i32 %881, %33
  store i32 %882, ptr %18, align 4, !tbaa !5
  %883 = mul i32 %881, %37
  store i32 %883, ptr %19, align 4, !tbaa !5
  %884 = sext i32 %882 to i64
  %885 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %884
  %886 = load double, ptr %885, align 8, !tbaa !17
  %887 = call { double, double } @Cd(ptr noundef nonnull %885)
  %888 = extractvalue { double, double } %887, 1
  %889 = insertelement <2 x double> poison, double %886, i64 0
  %890 = insertelement <2 x double> %889, double %888, i64 1
  %891 = fcmp oge <2 x double> %890, zeroinitializer
  %892 = fneg <2 x double> %890
  %893 = select <2 x i1> %891, <2 x double> %890, <2 x double> %892
  %shift1919 = shufflevector <2 x double> %893, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %894 = fadd <2 x double> %893, %shift1919
  %895 = load i32, ptr %19, align 4, !tbaa !5
  %896 = sext i32 %895 to i64
  %897 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %896
  %898 = load double, ptr %897, align 8, !tbaa !17
  %899 = fcmp oge double %898, 0.000000e+00
  %900 = fneg double %898
  %901 = select i1 %899, double %898, double %900
  %902 = insertelement <2 x double> %894, double %901, i64 1
  %903 = fmul <2 x double> %233, %902
  %904 = extractelement <2 x double> %903, i64 0
  %905 = extractelement <2 x double> %903, i64 1
  %906 = fcmp oge double %904, %905
  %907 = select i1 %906, double %904, double %905
  %908 = load double, ptr %28, align 8
  %909 = fcmp oge double %907, %908
  %910 = select i1 %909, double %907, double %908
  %911 = fdiv double 1.000000e+00, %910
  %912 = load i32, ptr %25, align 4, !tbaa !5
  %913 = mul i32 %912, %33
  %914 = sext i32 %913 to i64
  %915 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %914
  %916 = load <2 x double>, ptr %915, align 8, !tbaa !15
  %917 = insertelement <2 x double> poison, double %911, i64 0
  %918 = shufflevector <2 x double> %917, <2 x double> poison, <2 x i32> zeroinitializer
  %919 = fmul <2 x double> %916, %918
  store <2 x double> %919, ptr %21, align 16, !tbaa !15
  %920 = fmul <2 x double> %818, %919
  store <2 x double> %920, ptr %27, align 16, !tbaa !15
  %921 = mul i32 %912, %37
  store i32 %921, ptr %18, align 4, !tbaa !5
  %922 = sext i32 %921 to i64
  %923 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %922
  %924 = load double, ptr %923, align 8, !tbaa !17
  %925 = fmul double %911, %924
  %926 = fmul double %820, %925
  %927 = fmul double %819, %926
  %928 = fmul <2 x double> %821, %920
  store <2 x double> %928, ptr %20, align 16, !tbaa !15
  store <2 x double> %928, ptr %26, align 16, !tbaa !15
  %929 = fcmp oge double %926, 0.000000e+00
  %930 = fneg double %926
  %931 = select i1 %929, double %926, double %930
  %932 = fcmp ult double %931, %908
  br i1 %932, label %938, label %933

933:                                              ; preds = %880
  %934 = fcmp oge double %927, 0.000000e+00
  %935 = fneg double %927
  %936 = select i1 %934, double %927, double %935
  %937 = fcmp olt double %936, %123
  br label %938

938:                                              ; preds = %933, %880
  %939 = phi i1 [ false, %880 ], [ %937, %933 ]
  %940 = call { double, double } @Cd(ptr noundef nonnull %27)
  %941 = extractvalue { double, double } %940, 1
  %942 = insertelement <2 x double> %920, double %941, i64 1
  %943 = fcmp oge <2 x double> %942, zeroinitializer
  %944 = fneg <2 x double> %942
  %945 = select <2 x i1> %943, <2 x double> %942, <2 x double> %944
  %shift1920 = shufflevector <2 x double> %945, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %946 = fadd <2 x double> %945, %shift1920
  %947 = extractelement <2 x double> %946, i64 0
  %948 = load double, ptr %28, align 8, !tbaa !15
  %949 = fcmp ult double %947, %948
  br i1 %949, label %.thread1540, label %950

950:                                              ; preds = %938
  %951 = load <2 x double>, ptr %26, align 16
  %952 = call { double, double } @Cd(ptr noundef nonnull %26)
  %953 = extractvalue { double, double } %952, 1
  %954 = insertelement <2 x double> %951, double %953, i64 1
  %955 = fcmp oge <2 x double> %954, zeroinitializer
  %956 = fneg <2 x double> %954
  %957 = select <2 x i1> %955, <2 x double> %954, <2 x double> %956
  %shift1921 = shufflevector <2 x double> %957, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %958 = fadd <2 x double> %957, %shift1921
  %959 = extractelement <2 x double> %958, i64 0
  %960 = fcmp olt double %959, %123
  br i1 %939, label %966, label %.thread1525

.thread1540:                                      ; preds = %938
  br i1 %939, label %.thread1541, label %._crit_edge1506

.thread1541:                                      ; preds = %.thread1540
  %961 = fdiv double %123, %931
  %962 = load double, ptr %29, align 8
  %963 = fcmp ole double %816, %962
  %964 = select i1 %963, double %816, double %962
  %965 = fmul double %961, %964
  br label %988

966:                                              ; preds = %950
  %967 = fdiv double %123, %931
  %968 = load double, ptr %29, align 8
  %969 = fcmp ole double %816, %968
  %970 = select i1 %969, double %816, double %968
  %971 = fmul double %967, %970
  br i1 %960, label %.thread1184, label %988

.thread1525:                                      ; preds = %950
  br i1 %960, label %.thread1184, label %._crit_edge1506

.thread1184:                                      ; preds = %.thread1525, %966
  %.210661527 = phi double [ 1.000000e+00, %.thread1525 ], [ %971, %966 ]
  %972 = load <2 x double>, ptr %27, align 16
  %973 = call { double, double } @Cd(ptr noundef nonnull %27)
  %974 = extractvalue { double, double } %973, 1
  %975 = insertelement <2 x double> %972, double %974, i64 1
  %976 = fcmp oge <2 x double> %975, zeroinitializer
  %977 = fneg <2 x double> %975
  %978 = select <2 x i1> %976, <2 x double> %975, <2 x double> %977
  %shift1922 = shufflevector <2 x double> %978, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %979 = fadd <2 x double> %978, %shift1922
  %980 = extractelement <2 x double> %979, i64 0
  %981 = fdiv double %123, %980
  %982 = load double, ptr %29, align 8
  %983 = fcmp ole double %817, %982
  %984 = select i1 %983, double %817, double %982
  %985 = fmul double %984, %981
  %986 = fcmp oge double %.210661527, %985
  %987 = select i1 %986, double %.210661527, double %985
  br label %988

._crit_edge1506:                                  ; preds = %.thread1540, %.thread1525
  %.pre1507 = load double, ptr %26, align 16, !tbaa !17
  br label %1027

988:                                              ; preds = %966, %.thread1541, %.thread1184
  %989 = phi i1 [ true, %.thread1184 ], [ false, %966 ], [ false, %.thread1541 ]
  %.310671187 = phi double [ %987, %.thread1184 ], [ %971, %966 ], [ %965, %.thread1541 ]
  %990 = fcmp oge double %927, 0.000000e+00
  %991 = fneg double %927
  %992 = select i1 %990, double %927, double %991
  %993 = fcmp ole double %992, 1.000000e+00
  %994 = select i1 %993, double 1.000000e+00, double %992
  %995 = load <2 x double>, ptr %26, align 16
  %996 = call { double, double } @Cd(ptr noundef nonnull %26)
  %997 = extractvalue { double, double } %996, 1
  %998 = insertelement <2 x double> %995, double %997, i64 1
  %999 = fcmp oge <2 x double> %998, zeroinitializer
  %1000 = fneg <2 x double> %998
  %1001 = select <2 x i1> %999, <2 x double> %998, <2 x double> %1000
  %shift1923 = shufflevector <2 x double> %1001, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %1002 = fadd <2 x double> %1001, %shift1923
  %1003 = extractelement <2 x double> %1002, i64 0
  %1004 = load double, ptr %28, align 8, !tbaa !15
  %1005 = fcmp oge double %994, %1003
  %1006 = select i1 %1005, double %994, double %1003
  %1007 = fmul double %1004, %1006
  %1008 = fdiv double 1.000000e+00, %1007
  %1009 = fcmp ole double %.310671187, %1008
  %1010 = select i1 %1009, double %.310671187, double %1008
  %1011 = fmul double %926, %1010
  %1012 = fmul double %819, %1011
  %1013 = fmul double %927, %1010
  %.21054 = select i1 %939, double %1012, double %1013
  br i1 %989, label %1014, label %1021

1014:                                             ; preds = %988
  %1015 = load <2 x double>, ptr %27, align 16, !tbaa !15
  %1016 = insertelement <2 x double> poison, double %1010, i64 0
  %1017 = shufflevector <2 x double> %1016, <2 x double> poison, <2 x i32> zeroinitializer
  %1018 = fmul <2 x double> %1017, %1015
  store <2 x double> %1018, ptr %21, align 16, !tbaa !15
  %1019 = fmul <2 x double> %821, %1018
  store <2 x double> %1019, ptr %20, align 16, !tbaa !15
  store <2 x double> %1019, ptr %26, align 16, !tbaa !15
  %1020 = extractelement <2 x double> %1019, i64 0
  br label %1027

1021:                                             ; preds = %988
  %1022 = load <2 x double>, ptr %26, align 16, !tbaa !15
  %1023 = insertelement <2 x double> poison, double %1010, i64 0
  %1024 = shufflevector <2 x double> %1023, <2 x double> poison, <2 x i32> zeroinitializer
  %1025 = fmul <2 x double> %1024, %1022
  store <2 x double> %1025, ptr %20, align 16, !tbaa !15
  store <2 x double> %1025, ptr %26, align 16, !tbaa !15
  %1026 = extractelement <2 x double> %1025, i64 0
  br label %1027

1027:                                             ; preds = %._crit_edge1506, %1014, %1021
  %1028 = phi double [ %1020, %1014 ], [ %1026, %1021 ], [ %.pre1507, %._crit_edge1506 ]
  %.31055 = phi double [ %.21054, %1014 ], [ %.21054, %1021 ], [ %927, %._crit_edge1506 ]
  %1029 = fcmp oge double %.31055, 0.000000e+00
  %1030 = fneg double %.31055
  %1031 = select i1 %1029, double %.31055, double %1030
  %1032 = fcmp oge double %1028, 0.000000e+00
  %1033 = fneg double %1028
  %1034 = select i1 %1032, double %1028, double %1033
  %1035 = call { double, double } @Cd(ptr noundef nonnull %26)
  %1036 = extractvalue { double, double } %1035, 1
  %1037 = fcmp oge double %1036, 0.000000e+00
  %1038 = fneg double %1036
  %1039 = select i1 %1037, double %1036, double %1038
  %1040 = fadd double %1034, %1039
  %1041 = load i32, ptr %3, align 4, !tbaa !5
  %.not11221293 = icmp slt i32 %1041, 1
  br i1 %.not11221293, label %1044, label %.lr.ph1296.preheader

.lr.ph1296.preheader:                             ; preds = %1027
  %1042 = zext nneg i32 %1041 to i64
  %1043 = shl nuw nsw i64 %1042, 4
  call void @llvm.memset.p0.i64(ptr align 8 %14, i8 0, i64 %1043, i1 false), !tbaa !15
  store i32 %1041, ptr %19, align 4, !tbaa !5
  br label %1044

1044:                                             ; preds = %.lr.ph1296.preheader, %1027
  %1045 = load i32, ptr %25, align 4, !tbaa !5
  %1046 = sext i32 %1045 to i64
  %1047 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %1046
  store <2 x double> <double 1.000000e+00, double 0.000000e+00>, ptr %1047, align 8, !tbaa !15
  %1048 = insertelement <2 x double> poison, double %1031, i64 0
  %1049 = insertelement <2 x double> %1048, double %1040, i64 1
  %1050 = fmul <2 x double> %815, %1049
  %1051 = fmul <2 x double> %227, %1050
  %1052 = extractelement <2 x double> %1051, i64 0
  %1053 = extractelement <2 x double> %1051, i64 1
  %1054 = fcmp oge double %1052, %1053
  %1055 = select i1 %1054, double %1052, double %1053
  %1056 = load double, ptr %28, align 8
  %1057 = fcmp oge double %1055, %1056
  %1058 = select i1 %1057, double %1055, double %1056
  %1059 = add i32 %1045, -1
  %.not1123.not1298 = icmp sgt i32 %1045, 1
  br i1 %.not1123.not1298, label %.lr.ph1301, label %.thread1531

.thread1531:                                      ; preds = %1044
  store i32 %1045, ptr %18, align 4, !tbaa !5
  store <2 x double> <double 1.000000e+00, double 0.000000e+00>, ptr %1047, align 8, !tbaa !15
  br label %._crit_edge1338

.lr.ph1301:                                       ; preds = %1044
  %1060 = mul nsw i32 %1045, %32
  %1061 = mul nsw i32 %1045, %36
  %1062 = load double, ptr %26, align 16, !tbaa !17
  %1063 = load double, ptr %785, align 8, !tbaa !23
  %1064 = fneg double %1063
  %1065 = sext i32 %1060 to i64
  %1066 = sext i32 %1061 to i64
  %wide.trip.count1463 = zext nneg i32 %1045 to i64
  %invariant.gep1584 = getelementptr %struct.doublecomplex, ptr %35, i64 %1065
  %invariant.gep1586 = getelementptr %struct.doublecomplex, ptr %39, i64 %1066
  %1067 = add nsw i64 %wide.trip.count1463, -1
  %min.iters.check1880 = icmp ult i32 %1045, 5
  br i1 %min.iters.check1880, label %scalar.ph1879.preheader, label %vector.memcheck1841

vector.memcheck1841:                              ; preds = %.lr.ph1301
  %1068 = shl nuw nsw i64 %wide.trip.count1463, 4
  %scevgep1843 = getelementptr i8, ptr %scevgep1842, i64 %1068
  %1069 = shl nsw i64 %1065, 4
  %scevgep1845 = getelementptr i8, ptr %scevgep1844, i64 %1069
  %1070 = add nsw i64 %1069, %1068
  %scevgep1847 = getelementptr i8, ptr %scevgep1846, i64 %1070
  %1071 = shl nsw i64 %1066, 4
  %scevgep1849 = getelementptr i8, ptr %scevgep1848, i64 %1071
  %1072 = add nsw i64 %1071, %1068
  %scevgep1851 = getelementptr i8, ptr %scevgep1850, i64 %1072
  %scevgep1854 = getelementptr i8, ptr %scevgep1853, i64 %1068
  %scevgep1856 = getelementptr i8, ptr %scevgep1855, i64 %1069
  %scevgep1858 = getelementptr i8, ptr %scevgep1857, i64 %1070
  %scevgep1860 = getelementptr i8, ptr %scevgep1859, i64 %1071
  %scevgep1862 = getelementptr i8, ptr %scevgep1861, i64 %1072
  %bound01863 = icmp ugt ptr %scevgep1847, %14
  %bound11864 = icmp ult ptr %scevgep1845, %scevgep1843
  %found.conflict1865 = and i1 %bound01863, %bound11864
  %bound01866 = icmp ugt ptr %scevgep1851, %14
  %bound11867 = icmp ult ptr %scevgep1849, %scevgep1843
  %found.conflict1868 = and i1 %bound01866, %bound11867
  %conflict.rdx1869 = or i1 %found.conflict1865, %found.conflict1868
  %bound01870 = icmp ult ptr %scevgep1852, %scevgep1858
  %bound11871 = icmp ult ptr %scevgep1856, %scevgep1854
  %found.conflict1872 = and i1 %bound01870, %bound11871
  %conflict.rdx1873 = or i1 %conflict.rdx1869, %found.conflict1872
  %bound01874 = icmp ult ptr %scevgep1852, %scevgep1862
  %bound11875 = icmp ult ptr %scevgep1860, %scevgep1854
  %found.conflict1876 = and i1 %bound01874, %bound11875
  %conflict.rdx1877 = or i1 %conflict.rdx1873, %found.conflict1876
  br i1 %conflict.rdx1877, label %scalar.ph1879.preheader, label %vector.ph1881

vector.ph1881:                                    ; preds = %vector.memcheck1841
  %n.vec1883 = and i64 %1067, -2
  %ind.end1884 = or i64 %1067, 1
  %broadcast.splatinsert1892 = insertelement <2 x double> poison, double %.31055, i64 0
  %broadcast.splat1893 = shufflevector <2 x double> %broadcast.splatinsert1892, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert1897 = insertelement <2 x double> poison, double %1064, i64 0
  %broadcast.splat1898 = shufflevector <2 x double> %broadcast.splatinsert1897, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert1899 = insertelement <2 x double> poison, double %1062, i64 0
  %broadcast.splat1900 = shufflevector <2 x double> %broadcast.splatinsert1899, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert1901 = insertelement <2 x double> poison, double %1063, i64 0
  %broadcast.splat1902 = shufflevector <2 x double> %broadcast.splatinsert1901, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1886

vector.body1886:                                  ; preds = %vector.body1886, %vector.ph1881
  %index1887 = phi i64 [ 0, %vector.ph1881 ], [ %index.next1904, %vector.body1886 ]
  %offset.idx1888 = or disjoint i64 %index1887, 1
  %1073 = getelementptr %struct.doublecomplex, ptr %invariant.gep1584, i64 %offset.idx1888
  %wide.vec1889 = load <4 x double>, ptr %1073, align 8, !tbaa !15
  %strided.vec1890 = shufflevector <4 x double> %wide.vec1889, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec1891 = shufflevector <4 x double> %wide.vec1889, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %1074 = fmul <2 x double> %broadcast.splat1893, %strided.vec1890
  %1075 = fmul <2 x double> %broadcast.splat1893, %strided.vec1891
  %1076 = getelementptr %struct.doublecomplex, ptr %invariant.gep1586, i64 %offset.idx1888
  %wide.vec1894 = load <4 x double>, ptr %1076, align 8, !tbaa !15
  %strided.vec1895 = shufflevector <4 x double> %wide.vec1894, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec1896 = shufflevector <4 x double> %wide.vec1894, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %1077 = fmul <2 x double> %strided.vec1896, %broadcast.splat1898
  %1078 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat1900, <2 x double> %strided.vec1895, <2 x double> %1077)
  %1079 = fmul <2 x double> %strided.vec1895, %broadcast.splat1902
  %1080 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat1900, <2 x double> %strided.vec1896, <2 x double> %1079)
  %1081 = fsub <2 x double> %1074, %1078
  %1082 = fsub <2 x double> %1075, %1080
  %1083 = getelementptr %struct.doublecomplex, ptr %14, i64 %index1887
  %interleaved.vec1903 = shufflevector <2 x double> %1081, <2 x double> %1082, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec1903, ptr %1083, align 8, !tbaa !15
  %index.next1904 = add nuw i64 %index1887, 2
  %1084 = icmp eq i64 %index.next1904, %n.vec1883
  br i1 %1084, label %middle.block1878, label %vector.body1886, !llvm.loop !32

middle.block1878:                                 ; preds = %vector.body1886
  %cmp.n1905 = icmp eq i64 %1067, %n.vec1883
  %1085 = shufflevector <2 x double> %1074, <2 x double> %1075, <2 x i32> <i32 1, i32 3>
  %1086 = shufflevector <2 x double> %1078, <2 x double> %1080, <2 x i32> <i32 1, i32 3>
  %1087 = shufflevector <2 x double> %1081, <2 x double> %1082, <2 x i32> <i32 1, i32 3>
  br i1 %cmp.n1905, label %.loopexit1908, label %scalar.ph1879.preheader

scalar.ph1879.preheader:                          ; preds = %middle.block1878, %vector.memcheck1841, %.lr.ph1301
  %indvars.iv1460.ph = phi i64 [ 1, %vector.memcheck1841 ], [ 1, %.lr.ph1301 ], [ %ind.end1884, %middle.block1878 ]
  %1088 = insertelement <2 x double> poison, double %.31055, i64 0
  %1089 = shufflevector <2 x double> %1088, <2 x double> poison, <2 x i32> zeroinitializer
  %1090 = insertelement <2 x double> poison, double %1063, i64 0
  %1091 = insertelement <2 x double> %1090, double %1064, i64 1
  %1092 = insertelement <2 x double> poison, double %1062, i64 0
  %1093 = shufflevector <2 x double> %1092, <2 x double> poison, <2 x i32> zeroinitializer
  br label %scalar.ph1879

scalar.ph1879:                                    ; preds = %scalar.ph1879.preheader, %scalar.ph1879
  %indvars.iv1460 = phi i64 [ %indvars.iv.next1461, %scalar.ph1879 ], [ %indvars.iv1460.ph, %scalar.ph1879.preheader ]
  %gep1585 = getelementptr %struct.doublecomplex, ptr %invariant.gep1584, i64 %indvars.iv1460
  %1094 = load <2 x double>, ptr %gep1585, align 8, !tbaa !15
  %1095 = fmul <2 x double> %1089, %1094
  %gep1587 = getelementptr %struct.doublecomplex, ptr %invariant.gep1586, i64 %indvars.iv1460
  %1096 = load <2 x double>, ptr %gep1587, align 8, !tbaa !15
  %1097 = fmul <2 x double> %1096, %1091
  %1098 = shufflevector <2 x double> %1097, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1099 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1093, <2 x double> %1096, <2 x double> %1098)
  %1100 = fsub <2 x double> %1095, %1099
  %1101 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %indvars.iv1460
  store <2 x double> %1100, ptr %1101, align 8, !tbaa !15
  %indvars.iv.next1461 = add nuw nsw i64 %indvars.iv1460, 1
  %exitcond1464.not = icmp eq i64 %indvars.iv.next1461, %wide.trip.count1463
  br i1 %exitcond1464.not, label %.loopexit1908, label %scalar.ph1879, !llvm.loop !33

.loopexit1908:                                    ; preds = %scalar.ph1879, %middle.block1878
  %indvars.iv1460.lcssa = phi i64 [ %n.vec1883, %middle.block1878 ], [ %indvars.iv1460, %scalar.ph1879 ]
  %1102 = phi <2 x double> [ %1085, %middle.block1878 ], [ %1095, %scalar.ph1879 ]
  %1103 = phi <2 x double> [ %1086, %middle.block1878 ], [ %1099, %scalar.ph1879 ]
  %1104 = phi <2 x double> [ %1087, %middle.block1878 ], [ %1100, %scalar.ph1879 ]
  %1105 = trunc nuw nsw i64 %indvars.iv1460.lcssa to i32
  store i32 %1105, ptr %19, align 4, !tbaa !5
  store <2 x double> %1102, ptr %21, align 16, !tbaa !15
  store <2 x double> %1103, ptr %22, align 16, !tbaa !15
  store <2 x double> %1104, ptr %20, align 16, !tbaa !15
  store i32 %1045, ptr %18, align 4, !tbaa !5
  store <2 x double> <double 1.000000e+00, double 0.000000e+00>, ptr %1047, align 8, !tbaa !15
  br i1 %.not1123.not1298, label %.lr.ph1337.preheader, label %._crit_edge1338

.lr.ph1337.preheader:                             ; preds = %.loopexit1908
  %1106 = zext i32 %1059 to i64
  %1107 = shl nuw nsw i64 %1106, 4
  %1108 = add nsw i64 %1046, -1
  %1109 = mul i64 %797, %1108
  %1110 = mul i64 %802, %1108
  %1111 = insertelement <2 x double> poison, double %.31055, i64 0
  %1112 = shufflevector <2 x double> %1111, <2 x double> poison, <2 x i32> zeroinitializer
  %gep2032 = getelementptr i8, ptr %invariant.gep2031, i64 %1107
  %1113 = getelementptr i8, ptr %823, i64 %1109
  %1114 = getelementptr i8, ptr %825, i64 %1109
  %1115 = getelementptr i8, ptr %1114, i64 %1107
  %1116 = getelementptr i8, ptr %827, i64 %1110
  %1117 = getelementptr i8, ptr %829, i64 %1110
  %1118 = getelementptr i8, ptr %1117, i64 %1107
  %gep2034 = getelementptr i8, ptr %invariant.gep2033, i64 %1107
  %1119 = getelementptr i8, ptr %831, i64 %1109
  %1120 = getelementptr i8, ptr %832, i64 %1109
  %1121 = getelementptr i8, ptr %1120, i64 %1107
  %1122 = getelementptr i8, ptr %834, i64 %1110
  %1123 = getelementptr i8, ptr %835, i64 %1110
  %1124 = getelementptr i8, ptr %1123, i64 %1107
  br label %.lr.ph1337

.lr.ph1337:                                       ; preds = %.loopexit, %.lr.ph1337.preheader
  %indvar = phi i64 [ %indvar.next, %.loopexit ], [ 0, %.lr.ph1337.preheader ]
  %indvars.iv1484 = phi i64 [ %indvars.iv.next1485, %.loopexit ], [ %1046, %.lr.ph1337.preheader ]
  %indvars.iv1482 = phi i64 [ %indvars.iv.next1483, %.loopexit ], [ %1106, %.lr.ph1337.preheader ]
  %1125 = xor i64 %indvar, -1
  %1126 = add i64 %1125, %1106
  %1127 = mul nsw i64 %indvar, -16
  %scevgep1740 = getelementptr i8, ptr %gep2032, i64 %1127
  %1128 = mul i64 %798, %indvar
  %scevgep1741 = getelementptr i8, ptr %1113, i64 %1128
  %1129 = mul i64 %800, %indvar
  %scevgep1742 = getelementptr i8, ptr %1115, i64 %1129
  %1130 = mul i64 %803, %indvar
  %scevgep1743 = getelementptr i8, ptr %1116, i64 %1130
  %1131 = mul i64 %805, %indvar
  %scevgep1744 = getelementptr i8, ptr %1118, i64 %1131
  %scevgep1746 = getelementptr i8, ptr %gep2034, i64 %1127
  %scevgep1747 = getelementptr i8, ptr %1119, i64 %1128
  %scevgep1748 = getelementptr i8, ptr %1121, i64 %1129
  %scevgep1749 = getelementptr i8, ptr %1122, i64 %1130
  %scevgep1750 = getelementptr i8, ptr %1124, i64 %1131
  %indvars.iv.next1485 = add nsw i64 %indvars.iv1484, -1
  %indvars1487 = trunc i64 %indvars.iv.next1485 to i32
  %1132 = mul nsw i64 %indvars.iv.next1485, %788
  %1133 = mul i32 %790, %indvars1487
  store i32 %1133, ptr %18, align 4, !tbaa !5
  %1134 = sext i32 %1133 to i64
  %1135 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %1134
  %1136 = load <2 x double>, ptr %1135, align 8, !tbaa !15
  %1137 = fmul <2 x double> %1112, %1136
  store <2 x double> %1137, ptr %21, align 16, !tbaa !15
  %1138 = mul nsw i64 %indvars.iv.next1485, %789
  %1139 = mul i32 %791, %indvars1487
  store i32 %1139, ptr %19, align 4, !tbaa !5
  %1140 = load <2 x double>, ptr %26, align 16
  %1141 = sext i32 %1139 to i64
  %1142 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %1141
  %1143 = load double, ptr %785, align 8, !tbaa !23
  %1144 = fneg double %1143
  %1145 = load <2 x double>, ptr %1142, align 8, !tbaa !15
  %1146 = insertelement <2 x double> poison, double %1143, i64 0
  %1147 = insertelement <2 x double> %1146, double %1144, i64 1
  %1148 = fmul <2 x double> %1145, %1147
  %1149 = shufflevector <2 x double> %1148, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1150 = shufflevector <2 x double> %1140, <2 x double> poison, <2 x i32> zeroinitializer
  %1151 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1150, <2 x double> %1145, <2 x double> %1149)
  store <2 x double> %1151, ptr %22, align 16, !tbaa !15
  %1152 = fsub <2 x double> %1137, %1151
  store <2 x double> %1152, ptr %20, align 16, !tbaa !15
  store <2 x double> %1152, ptr %24, align 16, !tbaa !15
  %1153 = extractelement <2 x double> %1152, i64 0
  %1154 = fcmp oge double %1153, 0.000000e+00
  %1155 = fneg double %1153
  %1156 = select i1 %1154, double %1153, double %1155
  %1157 = call { double, double } @Cd(ptr noundef nonnull %24)
  %1158 = extractvalue { double, double } %1157, 1
  %1159 = fcmp oge double %1158, 0.000000e+00
  %1160 = fneg double %1158
  %1161 = select i1 %1159, double %1158, double %1160
  %1162 = fadd double %1156, %1161
  %1163 = fcmp ugt double %1162, %1058
  br i1 %1163, label %.lr.ph1337._crit_edge, label %1164

.lr.ph1337._crit_edge:                            ; preds = %.lr.ph1337
  %.pre1508 = load double, ptr %24, align 16, !tbaa !17
  br label %1165

1164:                                             ; preds = %.lr.ph1337
  store double %1058, ptr %20, align 16, !tbaa !17
  store double 0.000000e+00, ptr %784, align 8, !tbaa !23
  store double %1058, ptr %24, align 16, !tbaa !17
  store double 0.000000e+00, ptr %786, align 8, !tbaa !23
  br label %1165

1165:                                             ; preds = %.lr.ph1337._crit_edge, %1164
  %1166 = phi double [ %.pre1508, %.lr.ph1337._crit_edge ], [ %1058, %1164 ]
  %1167 = call { double, double } @Cd(ptr noundef nonnull %24)
  %1168 = extractvalue { double, double } %1167, 1
  %1169 = insertelement <2 x double> poison, double %1166, i64 0
  %1170 = insertelement <2 x double> %1169, double %1168, i64 1
  %1171 = fcmp oge <2 x double> %1170, zeroinitializer
  %1172 = fneg <2 x double> %1170
  %1173 = select <2 x i1> %1171, <2 x double> %1170, <2 x double> %1172
  %shift1924 = shufflevector <2 x double> %1173, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %1174 = fadd <2 x double> %1173, %shift1924
  %1175 = extractelement <2 x double> %1174, i64 0
  %1176 = fcmp olt double %1175, 1.000000e+00
  br i1 %1176, label %1177, label %.loopexit1189

1177:                                             ; preds = %1165
  store i32 %indvars1487, ptr %18, align 4, !tbaa !5
  %1178 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %indvars.iv.next1485
  %1179 = load double, ptr %1178, align 8, !tbaa !17
  %1180 = call { double, double } @Cd(ptr noundef nonnull %1178)
  %1181 = extractvalue { double, double } %1180, 1
  %1182 = insertelement <2 x double> poison, double %1179, i64 0
  %1183 = insertelement <2 x double> %1182, double %1181, i64 1
  %1184 = fcmp oge <2 x double> %1183, zeroinitializer
  %1185 = fneg <2 x double> %1183
  %1186 = select <2 x i1> %1184, <2 x double> %1183, <2 x double> %1185
  %1187 = load <2 x double>, ptr %24, align 16
  %1188 = call { double, double } @Cd(ptr noundef nonnull %24)
  %1189 = extractvalue { double, double } %1188, 1
  %1190 = insertelement <2 x double> %1187, double %1189, i64 1
  %1191 = fcmp oge <2 x double> %1190, zeroinitializer
  %1192 = fneg <2 x double> %1190
  %1193 = select <2 x i1> %1191, <2 x double> %1190, <2 x double> %1192
  %1194 = shufflevector <2 x double> %1186, <2 x double> %1193, <2 x i32> <i32 0, i32 2>
  %1195 = shufflevector <2 x double> %1186, <2 x double> %1193, <2 x i32> <i32 1, i32 3>
  %1196 = fadd <2 x double> %1194, %1195
  %1197 = extractelement <2 x double> %1196, i64 1
  %1198 = fmul double %125, %1197
  %1199 = extractelement <2 x double> %1196, i64 0
  %1200 = fcmp ult double %1199, %1198
  br i1 %1200, label %.loopexit1189, label %1201

1201:                                             ; preds = %1177
  store i32 %indvars1487, ptr %18, align 4, !tbaa !5
  %1202 = load double, ptr %1178, align 8, !tbaa !17
  %1203 = fcmp oge double %1202, 0.000000e+00
  %1204 = fneg double %1202
  %1205 = select i1 %1203, double %1202, double %1204
  %1206 = call { double, double } @Cd(ptr noundef nonnull %1178)
  %1207 = extractvalue { double, double } %1206, 1
  %1208 = fcmp oge double %1207, 0.000000e+00
  %1209 = fneg double %1207
  %1210 = select i1 %1208, double %1207, double %1209
  %1211 = fadd double %1205, %1210
  %1212 = fdiv double 1.000000e+00, %1211
  %1213 = load i32, ptr %25, align 4, !tbaa !5
  %.not11291309 = icmp slt i32 %1213, 1
  br i1 %.not11291309, label %.loopexit1189, label %.lr.ph1312.preheader

.lr.ph1312.preheader:                             ; preds = %1201
  %1214 = add nuw i32 %1213, 1
  %wide.trip.count1468 = zext i32 %1214 to i64
  %1215 = zext nneg i32 %1213 to i64
  %min.iters.check1824 = icmp eq i32 %1213, 1
  br i1 %min.iters.check1824, label %.lr.ph1312.preheader1929, label %vector.ph1825

vector.ph1825:                                    ; preds = %.lr.ph1312.preheader
  %n.vec1827 = and i64 %1215, 2147483646
  %ind.end1828 = or i64 %1215, 1
  %broadcast.splatinsert1836 = insertelement <2 x double> poison, double %1212, i64 0
  %broadcast.splat1837 = shufflevector <2 x double> %broadcast.splatinsert1836, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1830

vector.body1830:                                  ; preds = %vector.body1830, %vector.ph1825
  %index1831 = phi i64 [ 0, %vector.ph1825 ], [ %index.next1839, %vector.body1830 ]
  %1216 = getelementptr %struct.doublecomplex, ptr %14, i64 %index1831
  %wide.vec1833 = load <4 x double>, ptr %1216, align 8, !tbaa !15
  %strided.vec1834 = shufflevector <4 x double> %wide.vec1833, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec1835 = shufflevector <4 x double> %wide.vec1833, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %1217 = fmul <2 x double> %broadcast.splat1837, %strided.vec1834
  %1218 = fmul <2 x double> %broadcast.splat1837, %strided.vec1835
  %1219 = getelementptr %struct.doublecomplex, ptr %14, i64 %index1831
  %interleaved.vec1838 = shufflevector <2 x double> %1217, <2 x double> %1218, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec1838, ptr %1219, align 8, !tbaa !15
  %index.next1839 = add nuw i64 %index1831, 2
  %1220 = icmp eq i64 %index.next1839, %n.vec1827
  br i1 %1220, label %middle.block1822, label %vector.body1830, !llvm.loop !34

middle.block1822:                                 ; preds = %vector.body1830
  %cmp.n1840 = icmp eq i64 %n.vec1827, %1215
  %1221 = shufflevector <2 x double> %1217, <2 x double> %1218, <2 x i32> <i32 1, i32 3>
  br i1 %cmp.n1840, label %..loopexit1189_crit_edge, label %.lr.ph1312.preheader1929

.lr.ph1312.preheader1929:                         ; preds = %middle.block1822, %.lr.ph1312.preheader
  %indvars.iv1465.ph = phi i64 [ 1, %.lr.ph1312.preheader ], [ %ind.end1828, %middle.block1822 ]
  %1222 = insertelement <2 x double> poison, double %1212, i64 0
  %1223 = shufflevector <2 x double> %1222, <2 x double> poison, <2 x i32> zeroinitializer
  br label %.lr.ph1312

.lr.ph1312:                                       ; preds = %.lr.ph1312.preheader1929, %.lr.ph1312
  %indvars.iv1465 = phi i64 [ %indvars.iv.next1466, %.lr.ph1312 ], [ %indvars.iv1465.ph, %.lr.ph1312.preheader1929 ]
  %1224 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %indvars.iv1465
  %1225 = load <2 x double>, ptr %1224, align 8, !tbaa !15
  %1226 = fmul <2 x double> %1223, %1225
  store <2 x double> %1226, ptr %1224, align 8, !tbaa !15
  %indvars.iv.next1466 = add nuw nsw i64 %indvars.iv1465, 1
  %exitcond1469.not = icmp eq i64 %indvars.iv.next1466, %wide.trip.count1468
  br i1 %exitcond1469.not, label %..loopexit1189_crit_edge, label %.lr.ph1312, !llvm.loop !35

..loopexit1189_crit_edge:                         ; preds = %.lr.ph1312, %middle.block1822
  %1227 = phi <2 x double> [ %1221, %middle.block1822 ], [ %1226, %.lr.ph1312 ]
  store <2 x double> %1227, ptr %20, align 16, !tbaa !15
  br label %.loopexit1189

.loopexit1189:                                    ; preds = %1201, %..loopexit1189_crit_edge, %1177, %1165
  store i32 %indvars1487, ptr %18, align 4, !tbaa !5
  store i32 %indvars1487, ptr %19, align 4, !tbaa !5
  %1228 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %indvars.iv.next1485
  %1229 = load <2 x double>, ptr %1228, align 8, !tbaa !15
  %1230 = fneg <2 x double> %1229
  store <2 x double> %1230, ptr %21, align 16, !tbaa !15
  call void @zladiv_(ptr noundef nonnull %20, ptr noundef nonnull %21, ptr noundef nonnull %24) #7
  %1231 = load i32, ptr %18, align 4, !tbaa !5
  %1232 = sext i32 %1231 to i64
  %1233 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %1232
  %1234 = load <2 x double>, ptr %20, align 16, !tbaa !15
  store <2 x double> %1234, ptr %1233, align 8, !tbaa !15
  %.not1130 = icmp eq i64 %indvars.iv1484, 2
  br i1 %.not1130, label %._crit_edge1338, label %1235

1235:                                             ; preds = %.loopexit1189
  store i32 %indvars1487, ptr %18, align 4, !tbaa !5
  %1236 = load double, ptr %1228, align 8, !tbaa !17
  %1237 = call { double, double } @Cd(ptr noundef nonnull %1228)
  %1238 = extractvalue { double, double } %1237, 1
  %1239 = insertelement <2 x double> poison, double %1236, i64 0
  %1240 = insertelement <2 x double> %1239, double %1238, i64 1
  %1241 = fcmp oge <2 x double> %1240, zeroinitializer
  %1242 = fneg <2 x double> %1240
  %1243 = select <2 x i1> %1241, <2 x double> %1240, <2 x double> %1242
  %shift1925 = shufflevector <2 x double> %1243, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %1244 = fadd <2 x double> %1243, %shift1925
  %1245 = extractelement <2 x double> %1244, i64 0
  %1246 = fcmp ogt double %1245, 1.000000e+00
  br i1 %1246, label %1247, label %.loopexit1188

1247:                                             ; preds = %1235
  store i32 %indvars1487, ptr %18, align 4, !tbaa !5
  %1248 = load double, ptr %1228, align 8, !tbaa !17
  %1249 = call { double, double } @Cd(ptr noundef nonnull %1228)
  %1250 = extractvalue { double, double } %1249, 1
  %1251 = insertelement <2 x double> poison, double %1248, i64 0
  %1252 = insertelement <2 x double> %1251, double %1250, i64 1
  %1253 = fcmp oge <2 x double> %1252, zeroinitializer
  %1254 = fneg <2 x double> %1252
  %1255 = select <2 x i1> %1253, <2 x double> %1252, <2 x double> %1254
  %shift1926 = shufflevector <2 x double> %1255, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %1256 = fadd <2 x double> %1255, %shift1926
  %1257 = extractelement <2 x double> %1256, i64 0
  %1258 = fdiv double 1.000000e+00, %1257
  %1259 = getelementptr inbounds double, ptr %47, i64 %indvars.iv.next1485
  %1260 = load double, ptr %1259, align 8, !tbaa !15
  %1261 = load i32, ptr %3, align 4, !tbaa !5
  %1262 = sext i32 %1261 to i64
  %1263 = getelementptr double, ptr %47, i64 %indvars.iv.next1485
  %1264 = getelementptr double, ptr %1263, i64 %1262
  %1265 = load double, ptr %1264, align 8, !tbaa !15
  %1266 = fmul double %1040, %1265
  %1267 = call double @llvm.fmuladd.f64(double %1031, double %1260, double %1266)
  %1268 = fmul double %125, %1258
  %1269 = fcmp ult double %1267, %1268
  br i1 %1269, label %.loopexit1188, label %1270

1270:                                             ; preds = %1247
  %1271 = load i32, ptr %25, align 4, !tbaa !5
  %.not11311315 = icmp slt i32 %1271, 1
  br i1 %.not11311315, label %.loopexit1188, label %.lr.ph1318.preheader

.lr.ph1318.preheader:                             ; preds = %1270
  %1272 = add nuw i32 %1271, 1
  %wide.trip.count1473 = zext i32 %1272 to i64
  %1273 = zext nneg i32 %1271 to i64
  %min.iters.check1803 = icmp eq i32 %1271, 1
  br i1 %min.iters.check1803, label %.lr.ph1318.preheader1928, label %vector.ph1804

vector.ph1804:                                    ; preds = %.lr.ph1318.preheader
  %n.vec1806 = and i64 %1273, 2147483646
  %ind.end1807 = or i64 %1273, 1
  %broadcast.splatinsert1815 = insertelement <2 x double> poison, double %1258, i64 0
  %1274 = shufflevector <2 x double> %broadcast.splatinsert1815, <2 x double> poison, <4 x i32> zeroinitializer
  br label %vector.body1809

vector.body1809:                                  ; preds = %vector.body1809, %vector.ph1804
  %index1810 = phi i64 [ 0, %vector.ph1804 ], [ %index.next1818, %vector.body1809 ]
  %1275 = getelementptr %struct.doublecomplex, ptr %14, i64 %index1810
  %wide.vec1812 = load <4 x double>, ptr %1275, align 8, !tbaa !15
  %1276 = getelementptr %struct.doublecomplex, ptr %14, i64 %index1810
  %interleaved.vec1817 = fmul <4 x double> %1274, %wide.vec1812
  store <4 x double> %interleaved.vec1817, ptr %1276, align 8, !tbaa !15
  %index.next1818 = add nuw i64 %index1810, 2
  %1277 = icmp eq i64 %index.next1818, %n.vec1806
  br i1 %1277, label %middle.block1801, label %vector.body1809, !llvm.loop !36

middle.block1801:                                 ; preds = %vector.body1809
  %cmp.n1819 = icmp eq i64 %n.vec1806, %1273
  br i1 %cmp.n1819, label %..loopexit1188_crit_edge, label %.lr.ph1318.preheader1928

.lr.ph1318.preheader1928:                         ; preds = %middle.block1801, %.lr.ph1318.preheader
  %indvars.iv1470.ph = phi i64 [ 1, %.lr.ph1318.preheader ], [ %ind.end1807, %middle.block1801 ]
  %1278 = insertelement <2 x double> poison, double %1258, i64 0
  %1279 = shufflevector <2 x double> %1278, <2 x double> poison, <2 x i32> zeroinitializer
  br label %.lr.ph1318

.lr.ph1318:                                       ; preds = %.lr.ph1318.preheader1928, %.lr.ph1318
  %indvars.iv1470 = phi i64 [ %indvars.iv.next1471, %.lr.ph1318 ], [ %indvars.iv1470.ph, %.lr.ph1318.preheader1928 ]
  %1280 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %indvars.iv1470
  %1281 = load <2 x double>, ptr %1280, align 8, !tbaa !15
  %1282 = fmul <2 x double> %1279, %1281
  store <2 x double> %1282, ptr %1280, align 8, !tbaa !15
  %indvars.iv.next1471 = add nuw nsw i64 %indvars.iv1470, 1
  %exitcond1474.not = icmp eq i64 %indvars.iv.next1471, %wide.trip.count1473
  br i1 %exitcond1474.not, label %..loopexit1188_crit_edge, label %.lr.ph1318, !llvm.loop !37

..loopexit1188_crit_edge:                         ; preds = %.lr.ph1318, %middle.block1801
  %indvars.iv1470.lcssa = phi i64 [ %n.vec1806, %middle.block1801 ], [ %indvars.iv1470, %.lr.ph1318 ]
  %1283 = trunc nuw nsw i64 %indvars.iv1470.lcssa to i32
  store i32 %1283, ptr %19, align 4, !tbaa !5
  br label %.loopexit1188

.loopexit1188:                                    ; preds = %1270, %..loopexit1188_crit_edge, %1247, %1235
  %1284 = load <2 x double>, ptr %26, align 16
  %1285 = load double, ptr %785, align 8, !tbaa !23
  %1286 = fneg double %1285
  %1287 = load <2 x double>, ptr %1228, align 8, !tbaa !15
  %1288 = extractelement <2 x double> %1287, i64 0
  %1289 = fmul double %.31055, %1288
  %1290 = extractelement <2 x double> %1287, i64 1
  %1291 = fmul double %.31055, %1290
  %1292 = insertelement <2 x double> poison, double %1285, i64 0
  %1293 = insertelement <2 x double> %1292, double %1286, i64 1
  %1294 = fmul <2 x double> %1287, %1293
  %1295 = shufflevector <2 x double> %1294, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1296 = shufflevector <2 x double> %1284, <2 x double> poison, <2 x i32> zeroinitializer
  %1297 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1296, <2 x double> %1287, <2 x double> %1295)
  store <2 x double> %1297, ptr %20, align 16, !tbaa !15
  %1298 = trunc i64 %indvars.iv1484 to i32
  %1299 = add i32 %1298, -2
  store i32 %1299, ptr %18, align 4, !tbaa !5
  %.not11321321 = icmp slt i64 %indvars.iv1484, 3
  br i1 %.not11321321, label %._crit_edge1338, label %.lr.ph1324

.lr.ph1324:                                       ; preds = %.loopexit1188
  %1300 = fneg double %1291
  %1301 = extractelement <2 x double> %1297, i64 1
  %1302 = fneg double %1301
  %invariant.gep1588 = getelementptr %struct.doublecomplex, ptr %35, i64 %1132
  %invariant.gep1590 = getelementptr %struct.doublecomplex, ptr %39, i64 %1138
  %min.iters.check1768 = icmp ult i64 %1126, 2
  br i1 %min.iters.check1768, label %scalar.ph1767.preheader, label %vector.memcheck1739

vector.memcheck1739:                              ; preds = %.lr.ph1324
  %bound01751 = icmp ugt ptr %scevgep1742, %14
  %bound11752 = icmp ult ptr %scevgep1741, %scevgep1740
  %found.conflict1753 = and i1 %bound01751, %bound11752
  %bound01754 = icmp ugt ptr %scevgep1744, %14
  %bound11755 = icmp ult ptr %scevgep1743, %scevgep1740
  %found.conflict1756 = and i1 %bound01754, %bound11755
  %conflict.rdx1757 = or i1 %found.conflict1753, %found.conflict1756
  %bound01758 = icmp ult ptr %scevgep1745, %scevgep1748
  %bound11759 = icmp ult ptr %scevgep1747, %scevgep1746
  %found.conflict1760 = and i1 %bound01758, %bound11759
  %conflict.rdx1761 = or i1 %conflict.rdx1757, %found.conflict1760
  %bound01762 = icmp ult ptr %scevgep1745, %scevgep1750
  %bound11763 = icmp ult ptr %scevgep1749, %scevgep1746
  %found.conflict1764 = and i1 %bound01762, %bound11763
  %conflict.rdx1765 = or i1 %conflict.rdx1761, %found.conflict1764
  br i1 %conflict.rdx1765, label %scalar.ph1767.preheader, label %vector.ph1769

vector.ph1769:                                    ; preds = %vector.memcheck1739
  %n.vec1771 = and i64 %1126, -2
  %ind.end1772 = or i64 %1126, 1
  %broadcast.splatinsert1780 = insertelement <2 x double> poison, double %1300, i64 0
  %broadcast.splat1781 = shufflevector <2 x double> %broadcast.splatinsert1780, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert1782 = insertelement <2 x double> poison, double %1289, i64 0
  %broadcast.splat1783 = shufflevector <2 x double> %broadcast.splatinsert1782, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert1784 = insertelement <2 x double> poison, double %1291, i64 0
  %broadcast.splat1785 = shufflevector <2 x double> %broadcast.splatinsert1784, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert1792 = insertelement <2 x double> poison, double %1302, i64 0
  %broadcast.splat1793 = shufflevector <2 x double> %broadcast.splatinsert1792, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splat1795 = shufflevector <2 x double> %1297, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splat1797 = shufflevector <2 x double> %1297, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  br label %vector.body1774

vector.body1774:                                  ; preds = %vector.body1774, %vector.ph1769
  %index1775 = phi i64 [ 0, %vector.ph1769 ], [ %index.next1799, %vector.body1774 ]
  %offset.idx1776 = or disjoint i64 %index1775, 1
  %1303 = getelementptr %struct.doublecomplex, ptr %invariant.gep1588, i64 %offset.idx1776
  %wide.vec1777 = load <4 x double>, ptr %1303, align 8, !tbaa !15
  %strided.vec1778 = shufflevector <4 x double> %wide.vec1777, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec1779 = shufflevector <4 x double> %wide.vec1777, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %1304 = fmul <2 x double> %strided.vec1779, %broadcast.splat1781
  %1305 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat1783, <2 x double> %strided.vec1778, <2 x double> %1304)
  %1306 = fmul <2 x double> %broadcast.splat1785, %strided.vec1778
  %1307 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat1783, <2 x double> %strided.vec1779, <2 x double> %1306)
  %1308 = getelementptr %struct.doublecomplex, ptr %14, i64 %index1775
  %wide.vec1786 = load <4 x double>, ptr %1308, align 8, !tbaa !15
  %strided.vec1787 = shufflevector <4 x double> %wide.vec1786, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec1788 = shufflevector <4 x double> %wide.vec1786, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %1309 = fadd <2 x double> %1305, %strided.vec1787
  %1310 = fadd <2 x double> %1307, %strided.vec1788
  %1311 = getelementptr %struct.doublecomplex, ptr %invariant.gep1590, i64 %offset.idx1776
  %wide.vec1789 = load <4 x double>, ptr %1311, align 8, !tbaa !15
  %strided.vec1790 = shufflevector <4 x double> %wide.vec1789, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec1791 = shufflevector <4 x double> %wide.vec1789, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %1312 = fmul <2 x double> %strided.vec1791, %broadcast.splat1793
  %1313 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat1795, <2 x double> %strided.vec1790, <2 x double> %1312)
  %1314 = fmul <2 x double> %broadcast.splat1797, %strided.vec1790
  %1315 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat1795, <2 x double> %strided.vec1791, <2 x double> %1314)
  %1316 = fsub <2 x double> %1309, %1313
  %1317 = fsub <2 x double> %1310, %1315
  %1318 = getelementptr %struct.doublecomplex, ptr %14, i64 %index1775
  %interleaved.vec1798 = shufflevector <2 x double> %1316, <2 x double> %1317, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec1798, ptr %1318, align 8, !tbaa !15
  %index.next1799 = add nuw i64 %index1775, 2
  %1319 = icmp eq i64 %index.next1799, %n.vec1771
  br i1 %1319, label %middle.block1766, label %vector.body1774, !llvm.loop !38

middle.block1766:                                 ; preds = %vector.body1774
  %cmp.n1800 = icmp eq i64 %1126, %n.vec1771
  %1320 = shufflevector <2 x double> %1305, <2 x double> %1307, <2 x i32> <i32 1, i32 3>
  %1321 = shufflevector <2 x double> %1309, <2 x double> %1310, <2 x i32> <i32 1, i32 3>
  %1322 = shufflevector <2 x double> %1313, <2 x double> %1315, <2 x i32> <i32 1, i32 3>
  %1323 = shufflevector <2 x double> %1316, <2 x double> %1317, <2 x i32> <i32 1, i32 3>
  br i1 %cmp.n1800, label %.loopexit, label %scalar.ph1767.preheader

scalar.ph1767.preheader:                          ; preds = %middle.block1766, %vector.memcheck1739, %.lr.ph1324
  %indvars.iv1475.ph = phi i64 [ 1, %vector.memcheck1739 ], [ 1, %.lr.ph1324 ], [ %ind.end1772, %middle.block1766 ]
  %1324 = insertelement <2 x double> poison, double %1291, i64 0
  %1325 = insertelement <2 x double> %1324, double %1300, i64 1
  %1326 = insertelement <2 x double> poison, double %1289, i64 0
  %1327 = shufflevector <2 x double> %1326, <2 x double> poison, <2 x i32> zeroinitializer
  %1328 = shufflevector <2 x double> %1297, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %1329 = insertelement <2 x double> %1328, double %1302, i64 1
  %1330 = shufflevector <2 x double> %1297, <2 x double> poison, <2 x i32> zeroinitializer
  br label %scalar.ph1767

scalar.ph1767:                                    ; preds = %scalar.ph1767.preheader, %scalar.ph1767
  %indvars.iv1475 = phi i64 [ %indvars.iv.next1476, %scalar.ph1767 ], [ %indvars.iv1475.ph, %scalar.ph1767.preheader ]
  %gep1589 = getelementptr %struct.doublecomplex, ptr %invariant.gep1588, i64 %indvars.iv1475
  %1331 = load <2 x double>, ptr %gep1589, align 8, !tbaa !15
  %1332 = fmul <2 x double> %1331, %1325
  %1333 = shufflevector <2 x double> %1332, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1334 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1327, <2 x double> %1331, <2 x double> %1333)
  %1335 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %indvars.iv1475
  %1336 = load <2 x double>, ptr %1335, align 8, !tbaa !15
  %1337 = fadd <2 x double> %1334, %1336
  %gep1591 = getelementptr %struct.doublecomplex, ptr %invariant.gep1590, i64 %indvars.iv1475
  %1338 = load <2 x double>, ptr %gep1591, align 8, !tbaa !15
  %1339 = fmul <2 x double> %1338, %1329
  %1340 = shufflevector <2 x double> %1339, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1341 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1330, <2 x double> %1338, <2 x double> %1340)
  %1342 = fsub <2 x double> %1337, %1341
  store <2 x double> %1342, ptr %1335, align 8, !tbaa !15
  %indvars.iv.next1476 = add nuw nsw i64 %indvars.iv1475, 1
  %exitcond1481.not = icmp eq i64 %indvars.iv.next1476, %indvars.iv1482
  br i1 %exitcond1481.not, label %.loopexit, label %scalar.ph1767, !llvm.loop !39

.loopexit:                                        ; preds = %scalar.ph1767, %middle.block1766
  %indvars.iv1475.lcssa = phi i64 [ %n.vec1771, %middle.block1766 ], [ %indvars.iv1475, %scalar.ph1767 ]
  %1343 = phi <2 x double> [ %1320, %middle.block1766 ], [ %1334, %scalar.ph1767 ]
  %1344 = phi <2 x double> [ %1321, %middle.block1766 ], [ %1337, %scalar.ph1767 ]
  %1345 = phi <2 x double> [ %1322, %middle.block1766 ], [ %1341, %scalar.ph1767 ]
  %1346 = phi <2 x double> [ %1323, %middle.block1766 ], [ %1342, %scalar.ph1767 ]
  %1347 = trunc nuw nsw i64 %indvars.iv1475.lcssa to i32
  store i32 %1347, ptr %19, align 4, !tbaa !5
  store <2 x double> %1343, ptr %22, align 16, !tbaa !15
  store <2 x double> %1344, ptr %21, align 16, !tbaa !15
  store <2 x double> %1345, ptr %23, align 16, !tbaa !15
  store <2 x double> %1346, ptr %20, align 16, !tbaa !15
  %indvars.iv.next1483 = add nsw i64 %indvars.iv1482, -1
  %indvar.next = add i64 %indvar, 1
  br label %.lr.ph1337, !llvm.loop !40

._crit_edge1338:                                  ; preds = %.loopexit1189, %.loopexit1188, %.thread1531, %.loopexit1908
  br i1 %.not1124, label %1351, label %1348

1348:                                             ; preds = %._crit_edge1338
  %1349 = load i32, ptr %3, align 4, !tbaa !5
  %1350 = sext i32 %1349 to i64
  %gep1359 = getelementptr %struct.doublecomplex, ptr %14, i64 %1350
  call void @zgemv_(ptr noundef nonnull @.str.9, ptr noundef nonnull %3, ptr noundef nonnull %25, ptr noundef nonnull @c_b2, ptr noundef %10, ptr noundef nonnull %11, ptr noundef nonnull %14, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b1, ptr noundef %gep1359, ptr noundef nonnull @c__1) #7
  br label %1351

1351:                                             ; preds = %._crit_edge1338, %1348
  %.01081.in = phi ptr [ %3, %1348 ], [ %25, %._crit_edge1338 ]
  %.11080 = phi i32 [ 1, %1348 ], [ 0, %._crit_edge1338 ]
  %.01081 = load i32, ptr %.01081.in, align 4, !tbaa !5
  store i32 %.01081, ptr %18, align 4, !tbaa !5
  %.not11261339 = icmp slt i32 %.01081, 1
  br i1 %.not11261339, label %._crit_edge1344.thread, label %.lr.ph1343

.lr.ph1343:                                       ; preds = %1351, %.lr.ph1343
  %.141341 = phi i32 [ %1369, %.lr.ph1343 ], [ 1, %1351 ]
  %.410781340 = phi double [ %1368, %.lr.ph1343 ], [ 0.000000e+00, %1351 ]
  %1352 = load i32, ptr %3, align 4, !tbaa !5
  %1353 = mul nuw nsw i32 %1352, %.11080
  %1354 = add nsw i32 %1353, %.141341
  store i32 %1354, ptr %19, align 4, !tbaa !5
  %1355 = sext i32 %1354 to i64
  %1356 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %1355
  %1357 = load double, ptr %1356, align 8, !tbaa !17
  %1358 = call { double, double } @Cd(ptr noundef nonnull %1356)
  %1359 = extractvalue { double, double } %1358, 1
  %1360 = insertelement <2 x double> poison, double %1357, i64 0
  %1361 = insertelement <2 x double> %1360, double %1359, i64 1
  %1362 = fcmp oge <2 x double> %1361, zeroinitializer
  %1363 = fneg <2 x double> %1361
  %1364 = select <2 x i1> %1362, <2 x double> %1361, <2 x double> %1363
  %shift1927 = shufflevector <2 x double> %1364, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %1365 = fadd <2 x double> %1364, %shift1927
  %1366 = extractelement <2 x double> %1365, i64 0
  %1367 = fcmp oge double %.410781340, %1366
  %1368 = select i1 %1367, double %.410781340, double %1366
  %1369 = add nuw nsw i32 %.141341, 1
  %1370 = load i32, ptr %18, align 4, !tbaa !5
  %.not1126.not = icmp slt i32 %.141341, %1370
  br i1 %.not1126.not, label %.lr.ph1343, label %._crit_edge1344, !llvm.loop !41

._crit_edge1344:                                  ; preds = %.lr.ph1343
  %1371 = load double, ptr %28, align 8, !tbaa !15
  %1372 = fcmp ogt double %1368, %1371
  br i1 %1372, label %1375, label %._crit_edge1344..loopexit1191_crit_edge

._crit_edge1344.thread:                           ; preds = %1351
  %1373 = load double, ptr %28, align 8, !tbaa !15
  %1374 = fcmp olt double %1373, 0.000000e+00
  br i1 %1374, label %.thread1535, label %._crit_edge1344..loopexit1191_crit_edge

.thread1535:                                      ; preds = %._crit_edge1344.thread
  %.pre15101537 = load i32, ptr %3, align 4, !tbaa !5
  br label %.loopexit1191

._crit_edge1344..loopexit1191_crit_edge:          ; preds = %._crit_edge1344.thread, %._crit_edge1344
  %.pre1509 = load i32, ptr %3, align 4, !tbaa !5
  br label %.loopexit1191

1375:                                             ; preds = %._crit_edge1344
  %1376 = fdiv double 1.000000e+00, %1368
  %.pre1510 = load i32, ptr %3, align 4, !tbaa !5
  br i1 %.not11261339, label %.loopexit1191, label %.lr.ph1349

.lr.ph1349:                                       ; preds = %1375
  %1377 = mul nsw i32 %841, %43
  %1378 = mul nuw nsw i32 %.pre1510, %.11080
  %1379 = sext i32 %1377 to i64
  %1380 = sext i32 %1378 to i64
  %1381 = add nuw i32 %.01081, 1
  %wide.trip.count1492 = zext i32 %1381 to i64
  %invariant.gep1592 = getelementptr %struct.doublecomplex, ptr %46, i64 %1380
  %1382 = zext nneg i32 %.01081 to i64
  %min.iters.check1722 = icmp ult i32 %.01081, 6
  br i1 %min.iters.check1722, label %scalar.ph1721.preheader, label %vector.memcheck1697

vector.memcheck1697:                              ; preds = %.lr.ph1349
  %1383 = shl nsw i64 %1379, 4
  %scevgep1699 = getelementptr i8, ptr %scevgep1698, i64 %1383
  %1384 = shl nuw nsw i64 %wide.trip.count1492, 4
  %1385 = add nsw i64 %1383, %1384
  %scevgep1701 = getelementptr i8, ptr %scevgep1700, i64 %1385
  %1386 = shl nsw i64 %1380, 4
  %scevgep1702 = getelementptr i8, ptr %14, i64 %1386
  %1387 = add nsw i64 %1386, %1384
  %scevgep1704 = getelementptr i8, ptr %scevgep1703, i64 %1387
  %scevgep1706 = getelementptr i8, ptr %scevgep1705, i64 %1383
  %scevgep1708 = getelementptr i8, ptr %scevgep1707, i64 %1385
  %scevgep1710 = getelementptr i8, ptr %scevgep1709, i64 %1386
  %scevgep1712 = getelementptr i8, ptr %scevgep1711, i64 %1387
  %bound01713 = icmp ult ptr %scevgep1699, %scevgep1704
  %bound11714 = icmp ult ptr %scevgep1702, %scevgep1701
  %found.conflict1715 = and i1 %bound01713, %bound11714
  %bound01716 = icmp ult ptr %scevgep1706, %scevgep1712
  %bound11717 = icmp ult ptr %scevgep1710, %scevgep1708
  %found.conflict1718 = and i1 %bound01716, %bound11717
  %conflict.rdx1719 = or i1 %found.conflict1715, %found.conflict1718
  br i1 %conflict.rdx1719, label %scalar.ph1721.preheader, label %vector.ph1723

vector.ph1723:                                    ; preds = %vector.memcheck1697
  %n.vec1725 = and i64 %1382, 2147483646
  %ind.end1726 = or i64 %1382, 1
  %broadcast.splatinsert1734 = insertelement <2 x double> poison, double %1376, i64 0
  %broadcast.splat1735 = shufflevector <2 x double> %broadcast.splatinsert1734, <2 x double> poison, <2 x i32> zeroinitializer
  %invariant.gep2027 = getelementptr %struct.doublecomplex, ptr %45, i64 %1379
  br label %vector.body1728

vector.body1728:                                  ; preds = %vector.body1728, %vector.ph1723
  %index1729 = phi i64 [ 0, %vector.ph1723 ], [ %index.next1737, %vector.body1728 ]
  %offset.idx1730 = or disjoint i64 %index1729, 1
  %1388 = getelementptr %struct.doublecomplex, ptr %invariant.gep1592, i64 %offset.idx1730
  %wide.vec1731 = load <4 x double>, ptr %1388, align 8, !tbaa !15
  %strided.vec1732 = shufflevector <4 x double> %wide.vec1731, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec1733 = shufflevector <4 x double> %wide.vec1731, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %1389 = fmul <2 x double> %broadcast.splat1735, %strided.vec1732
  %1390 = fmul <2 x double> %broadcast.splat1735, %strided.vec1733
  %gep2028 = getelementptr %struct.doublecomplex, ptr %invariant.gep2027, i64 %offset.idx1730
  %interleaved.vec1736 = shufflevector <2 x double> %1389, <2 x double> %1390, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec1736, ptr %gep2028, align 8, !tbaa !15
  %index.next1737 = add nuw i64 %index1729, 2
  %1391 = icmp eq i64 %index.next1737, %n.vec1725
  br i1 %1391, label %middle.block1720, label %vector.body1728, !llvm.loop !42

middle.block1720:                                 ; preds = %vector.body1728
  %1392 = add i64 %index1729, 2
  %1393 = add nsw i64 %1392, %1379
  %cmp.n1738 = icmp eq i64 %n.vec1725, %1382
  %1394 = shufflevector <2 x double> %1389, <2 x double> %1390, <2 x i32> <i32 1, i32 3>
  br i1 %cmp.n1738, label %..loopexit1191_crit_edge, label %scalar.ph1721.preheader

scalar.ph1721.preheader:                          ; preds = %middle.block1720, %vector.memcheck1697, %.lr.ph1349
  %indvars.iv1489.ph = phi i64 [ 1, %vector.memcheck1697 ], [ 1, %.lr.ph1349 ], [ %ind.end1726, %middle.block1720 ]
  %1395 = zext nneg i32 %.01081 to i64
  %1396 = and i32 %.01081, 1
  %lcmp.mod1977.not = icmp eq i32 %1396, 0
  br i1 %lcmp.mod1977.not, label %scalar.ph1721.prol.loopexit, label %scalar.ph1721.prol

scalar.ph1721.prol:                               ; preds = %scalar.ph1721.preheader
  %1397 = add nsw i64 %indvars.iv1489.ph, %1379
  %gep1593.prol = getelementptr %struct.doublecomplex, ptr %invariant.gep1592, i64 %indvars.iv1489.ph
  %1398 = load <2 x double>, ptr %gep1593.prol, align 8, !tbaa !15
  %1399 = insertelement <2 x double> poison, double %1376, i64 0
  %1400 = shufflevector <2 x double> %1399, <2 x double> poison, <2 x i32> zeroinitializer
  %1401 = fmul <2 x double> %1400, %1398
  %1402 = getelementptr inbounds %struct.doublecomplex, ptr %45, i64 %1397
  store <2 x double> %1401, ptr %1402, align 8, !tbaa !15
  %indvars.iv.next1490.prol = add nuw nsw i64 %indvars.iv1489.ph, 1
  br label %scalar.ph1721.prol.loopexit

scalar.ph1721.prol.loopexit:                      ; preds = %scalar.ph1721.prol, %scalar.ph1721.preheader
  %.lcssa1960.unr = phi i64 [ poison, %scalar.ph1721.preheader ], [ %1397, %scalar.ph1721.prol ]
  %.lcssa1959.unr = phi <2 x double> [ poison, %scalar.ph1721.preheader ], [ %1401, %scalar.ph1721.prol ]
  %indvars.iv1489.unr = phi i64 [ %indvars.iv1489.ph, %scalar.ph1721.preheader ], [ %indvars.iv.next1490.prol, %scalar.ph1721.prol ]
  %1403 = icmp eq i64 %indvars.iv1489.ph, %1395
  br i1 %1403, label %..loopexit1191_crit_edge, label %scalar.ph1721.preheader.new

scalar.ph1721.preheader.new:                      ; preds = %scalar.ph1721.prol.loopexit
  %1404 = insertelement <2 x double> poison, double %1376, i64 0
  %1405 = shufflevector <2 x double> %1404, <2 x double> poison, <2 x i32> zeroinitializer
  %invariant.gep2029 = getelementptr %struct.doublecomplex, ptr %45, i64 %1379
  %1406 = insertelement <2 x double> poison, double %1376, i64 0
  %1407 = shufflevector <2 x double> %1406, <2 x double> poison, <2 x i32> zeroinitializer
  br label %scalar.ph1721

scalar.ph1721:                                    ; preds = %scalar.ph1721, %scalar.ph1721.preheader.new
  %indvars.iv1489 = phi i64 [ %indvars.iv1489.unr, %scalar.ph1721.preheader.new ], [ %indvars.iv.next1490.1, %scalar.ph1721 ]
  %gep1593 = getelementptr %struct.doublecomplex, ptr %invariant.gep1592, i64 %indvars.iv1489
  %1408 = load <2 x double>, ptr %gep1593, align 8, !tbaa !15
  %1409 = fmul <2 x double> %1405, %1408
  %gep2030 = getelementptr %struct.doublecomplex, ptr %invariant.gep2029, i64 %indvars.iv1489
  store <2 x double> %1409, ptr %gep2030, align 8, !tbaa !15
  %indvars.iv.next1490 = add nuw nsw i64 %indvars.iv1489, 1
  %1410 = add nsw i64 %indvars.iv.next1490, %1379
  %gep1593.1 = getelementptr %struct.doublecomplex, ptr %invariant.gep1592, i64 %indvars.iv.next1490
  %1411 = load <2 x double>, ptr %gep1593.1, align 8, !tbaa !15
  %1412 = fmul <2 x double> %1407, %1411
  %1413 = getelementptr inbounds %struct.doublecomplex, ptr %45, i64 %1410
  store <2 x double> %1412, ptr %1413, align 8, !tbaa !15
  %indvars.iv.next1490.1 = add nuw nsw i64 %indvars.iv1489, 2
  %exitcond1493.not.1 = icmp eq i64 %indvars.iv.next1490.1, %wide.trip.count1492
  br i1 %exitcond1493.not.1, label %..loopexit1191_crit_edge, label %scalar.ph1721, !llvm.loop !43

..loopexit1191_crit_edge:                         ; preds = %scalar.ph1721.prol.loopexit, %scalar.ph1721, %middle.block1720
  %.lcssa1613 = phi i64 [ %1393, %middle.block1720 ], [ %.lcssa1960.unr, %scalar.ph1721.prol.loopexit ], [ %1410, %scalar.ph1721 ]
  %1414 = phi <2 x double> [ %1394, %middle.block1720 ], [ %.lcssa1959.unr, %scalar.ph1721.prol.loopexit ], [ %1412, %scalar.ph1721 ]
  %1415 = trunc nsw i64 %.lcssa1613 to i32
  store i32 %1415, ptr %19, align 4, !tbaa !5
  store <2 x double> %1414, ptr %20, align 16, !tbaa !15
  br label %.loopexit1191

.loopexit1191:                                    ; preds = %.thread1535, %._crit_edge1344..loopexit1191_crit_edge, %1375, %..loopexit1191_crit_edge
  %1416 = phi i32 [ %.pre1509, %._crit_edge1344..loopexit1191_crit_edge ], [ %.pre1510, %..loopexit1191_crit_edge ], [ %.pre1510, %1375 ], [ %.pre15101537, %.thread1535 ]
  %.11082 = phi i32 [ 0, %._crit_edge1344..loopexit1191_crit_edge ], [ %.01081, %..loopexit1191_crit_edge ], [ %.01081, %1375 ], [ %.01081, %.thread1535 ]
  store i32 %1416, ptr %18, align 4, !tbaa !5
  %.not1128.not1353 = icmp slt i32 %.11082, %1416
  br i1 %.not1128.not1353, label %.lr.ph1356, label %.loopexit1190

.lr.ph1356:                                       ; preds = %.loopexit1191
  %1417 = mul nsw i32 %841, %43
  %1418 = add nsw i32 %.11082, 1
  %1419 = add i32 %1418, %1417
  %1420 = sext i32 %1419 to i64
  %1421 = shl nsw i64 %1420, 4
  %scevgep1495 = getelementptr i8, ptr %scevgep1448, i64 %1421
  %1422 = xor i32 %.11082, -1
  %1423 = add i32 %1416, %1422
  %1424 = zext i32 %1423 to i64
  %1425 = shl nuw nsw i64 %1424, 4
  %1426 = add nuw nsw i64 %1425, 16
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %scevgep1495, i8 0, i64 %1426, i1 false), !tbaa !15
  %1427 = sext i32 %.11082 to i64
  %wide.trip.count1499 = sext i32 %1416 to i64
  %1428 = sub nsw i64 %wide.trip.count1499, %1427
  %xtraiter1978 = and i64 %1428, 7
  %lcmp.mod1979.not = icmp eq i64 %xtraiter1978, 0
  br i1 %lcmp.mod1979.not, label %.prol.loopexit, label %.prol.preheader

.prol.preheader:                                  ; preds = %.lr.ph1356, %.prol.preheader
  %indvars.iv1496.prol = phi i64 [ %indvars.iv.next1497.prol, %.prol.preheader ], [ %1427, %.lr.ph1356 ]
  %prol.iter = phi i64 [ %prol.iter.next, %.prol.preheader ], [ 0, %.lr.ph1356 ]
  %indvars.iv.next1497.prol = add nsw i64 %indvars.iv1496.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter1978
  br i1 %prol.iter.cmp.not, label %.prol.loopexit, label %.prol.preheader, !llvm.loop !44

.prol.loopexit:                                   ; preds = %.prol.preheader, %.lr.ph1356
  %indvars.iv.next1497.lcssa.unr = phi i64 [ poison, %.lr.ph1356 ], [ %indvars.iv.next1497.prol, %.prol.preheader ]
  %indvars.iv1496.unr = phi i64 [ %1427, %.lr.ph1356 ], [ %indvars.iv.next1497.prol, %.prol.preheader ]
  %1429 = sub nsw i64 %1427, %wide.trip.count1499
  %1430 = icmp ugt i64 %1429, -8
  br i1 %1430, label %..loopexit1190_crit_edge, label %.lr.ph1356.new

.lr.ph1356.new:                                   ; preds = %.prol.loopexit, %.lr.ph1356.new
  %indvars.iv1496 = phi i64 [ %indvars.iv.next1497.7, %.lr.ph1356.new ], [ %indvars.iv1496.unr, %.prol.loopexit ]
  %indvars.iv.next1497.7 = add nsw i64 %indvars.iv1496, 8
  %exitcond1500.not.7 = icmp eq i64 %indvars.iv.next1497.7, %wide.trip.count1499
  br i1 %exitcond1500.not.7, label %..loopexit1190_crit_edge, label %.lr.ph1356.new, !llvm.loop !46

..loopexit1190_crit_edge:                         ; preds = %.lr.ph1356.new, %.prol.loopexit
  %indvars.iv.next1497.lcssa = phi i64 [ %indvars.iv.next1497.lcssa.unr, %.prol.loopexit ], [ %indvars.iv.next1497.7, %.lr.ph1356.new ]
  %1431 = trunc i64 %indvars.iv.next1497.lcssa to i32
  %1432 = add i32 %1417, %1431
  store i32 %1432, ptr %19, align 4, !tbaa !5
  br label %.loopexit1190

.loopexit1190:                                    ; preds = %.loopexit1191, %..loopexit1190_crit_edge, %876, %837
  %.31086 = phi i32 [ %841, %876 ], [ %.210851361, %837 ], [ %841, %..loopexit1190_crit_edge ], [ %841, %.loopexit1191 ]
  %1433 = load i32, ptr %25, align 4, !tbaa !5
  %1434 = add nsw i32 %1433, -1
  store i32 %1434, ptr %25, align 4, !tbaa !5
  %1435 = icmp sgt i32 %1433, 1
  br i1 %1435, label %836, label %.loopexit1192, !llvm.loop !47

.loopexit1192.sink.split:                         ; preds = %.thread1159, %.thread1171
  %storemerge = phi i32 [ %109, %.thread1171 ], [ %.neg, %.thread1159 ]
  store i32 %storemerge, ptr %18, align 4, !tbaa !5
  %1436 = call i32 @xerbla_(ptr noundef nonnull @.str.5, ptr noundef nonnull %18, i32 noundef 6) #7
  br label %.loopexit1192

.loopexit1192:                                    ; preds = %.loopexit1190, %.loopexit1192.sink.split, %779, %.loopexit1196, %110
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %30) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #7
  ret void
}

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

declare i32 @lsame_(ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @xerbla_(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #6

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.vector.reduce.add.v4i32(<4 x i32>) #5

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x double> @llvm.fmuladd.v2f64(<2 x double>, <2 x double>, <2 x double>) #5

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { inlinehint nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = distinct !{!9, !10, !11, !12}
!10 = !{!"llvm.loop.mustprogress"}
!11 = !{!"llvm.loop.isvectorized", i32 1}
!12 = !{!"llvm.loop.unroll.runtime.disable"}
!13 = distinct !{!13, !10, !12, !11}
!14 = distinct !{!14, !10}
!15 = !{!16, !16, i64 0}
!16 = !{!"double", !7, i64 0}
!17 = !{!18, !16, i64 0}
!18 = !{!"", !16, i64 0, !16, i64 8}
!19 = distinct !{!19, !10}
!20 = distinct !{!20, !10}
!21 = distinct !{!21, !10, !11, !12}
!22 = distinct !{!22, !10, !12, !11}
!23 = !{!18, !16, i64 8}
!24 = distinct !{!24, !10}
!25 = distinct !{!25, !10, !11, !12}
!26 = distinct !{!26, !10, !12, !11}
!27 = distinct !{!27, !10}
!28 = distinct !{!28, !10}
!29 = distinct !{!29, !10, !11, !12}
!30 = distinct !{!30, !10, !11}
!31 = distinct !{!31, !10}
!32 = distinct !{!32, !10, !11, !12}
!33 = distinct !{!33, !10, !11}
!34 = distinct !{!34, !10, !11, !12}
!35 = distinct !{!35, !10, !12, !11}
!36 = distinct !{!36, !10, !11, !12}
!37 = distinct !{!37, !10, !12, !11}
!38 = distinct !{!38, !10, !11, !12}
!39 = distinct !{!39, !10, !11}
!40 = distinct !{!40, !10}
!41 = distinct !{!41, !10}
!42 = distinct !{!42, !10, !11, !12}
!43 = distinct !{!43, !10, !11}
!44 = distinct !{!44, !45}
!45 = !{!"llvm.loop.unroll.disable"}
!46 = distinct !{!46, !10}
!47 = distinct !{!47, !10}


; Effective O3 passes: BDCEPass,CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopIdiomRecognizePass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass,VectorCombinePass